PT09IHJlbGVhc2UgMC4xMC4yNSA9PT0KCjIwMDktMTAtMDUgIEphbiBTY2htaWR0IDxqYW4uc2NobWlkdEBzdW4uY29tPgoKCSogY29uZmlndXJlLmFjOgoJICByZWxlYXNpbmcgMC4xMC4yNSwgIkZlZWwgdGhlIGJ1cm4iCgoyMDA5LTEwLTAxIDE2OjI0OjUyICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2V1LnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICAwLjEwLjI0LjQgcHJlLXJlbGVhc2UKCjIwMDktMDktMzAgMTU6NTI6MzMgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICBsaWJnc3RjaGVjazogRG9uJ3QgdXNlIGNoYXJhY3RlciBjbGFzc2VzIGluIHNlZCBleHByZXNzaW9ucwoJICBBcHBhcmVudGx5IHRoZSBzZWQgdGhhdCBzaGlwcyBvbiBTb2xhcmlzIDEwIGRvZXNuJ3Qgc3VwcG9ydCBjaGFyYWN0ZXIKCSAgY2xhc3NlcyBsaWtlIFs6YWxudW06XSwgc28gZG9uJ3QgdXNlIHRoZW0uIFdlIGRvbid0IG5lZWQgdGhlbSBmb3IgdGhlCgkgIHN5bWJvbCBuYW1lcyB0aGF0IGFyZSBiZWluZyBleHRyYWN0ZWQgYW55d2F5LgoJICBBbHNvLCB1c2UgJChTRUQpIGluc3RlYWQgb2YgJ3NlZCcKCSAgRml4ZXM6ICM1OTY4NzcKCjIwMDktMDktMTcgMDE6MjA6MDMgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbmZpZ3VyZS5hYzoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2V1LnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICAwLjEwLjI0LjMgcHJlLXJlbGVhc2UKCjIwMDktMDktMTUgMDk6NDE6MjggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkgIHV0aWxzOiBGaXggR01QIHNjYWxpbmcgdW5pdCB0ZXN0CgkgIEdNUCBvbmx5IHVzZXMgInVuc2lnbmVkIGxvbmcgaW50Iiwgd2hpY2ggaXMgMzIgYml0CgkgIG9uIDMyIGJpdCBhcmNoaXRlY3R1cmVzIGFuZCBjYW4ndCBob2xkIGEgZ3VpbnQ2NC4KCSAgVGhpcyByZXN1bHRlZCBpbiBmYWxzZSB1bml0IHRlc3QgZmFpbHVyZXMgb24gMzIgYml0IGFyY2hpdGVjdHVyZXMuCgkgIEZpeGVzIGJ1ZyAjNTk1MTMzLgoKMjAwOS0wOS0xNCAxMjo0NzoyNiAtMDcwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICBGaXggb3V0LW9mLXRyZWUgYnVpbGQKCjIwMDktMDktMTQgMTQ6MDc6NTUgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIGRvY3M6IEdTVF9NRVNTQUdFX1NUUkVBTV9TVEFUVVMgaXMgaW1wbGVtZW50ZWQgbm93YWRheXMuCgkgIERvY3Mgd2VyZSBzdGlsbCBtZW50aW9uIGl0IGFzICJub3QgeWV0IGltcGxlbWVudGVkIi4KCjIwMDktMDktMTIgMTM6NTI6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L25ldC9NYWtlZmlsZS5hbToKCSAgaW50cm9zcGVjdGlvbjogQnVpbGQgcGtnY29uZmlnIGJlZm9yZSBhbGwgbGlicmFyaWVzIGFuZCBzZXQgUEtHX0NPTkZJR19QQVRICgkgIFRoaXMgd2F5IGctaXItc2Nhbm5lciBjYW4gZmluZCB0aGUgZ3N0cmVhbWVyLTAuMTAgcGtnLWNvbmZpZyBmaWxlLgoKMjAwOS0wOS0xMiAxMzo1MToyOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvTWFrZWZpbGUuYW06CgkqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIGludHJvc3BlY3Rpb246IERvbid0IHR5cGVkZWYgR3N0VGFnTGlzdCB0byBHc3RTdHJ1Y3R1cmUgZm9yIGdvYmplY3QtaW50cm9zcGVjdGlvbgoKMjAwOS0wOS0xMSAyMzoyMTozMCArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL0xJTkdVQVM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9ldS5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgMC4xMC4yNC4yIHByZS1yZWxlYXNlCgoyMDA5LTA5LTExIDIyOjQyOjUxICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICBEb24ndCB1c2UgQysrIHN0eWxlIGNvbW1lbnRzCgoyMDA5LTA5LTExIDIyOjIyOjM0ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICBtZXNzYWdlOiBEaXNhYmxlIHJlc3RyaWN0aW9uIHRoYXQgc3RydWN0dXJlIGNoYW5nZXMgYXJlIHNpbmsgcGFkcwoJICBUaGUgc3RydWN0dXJlX2NoYW5nZSBtZXNzYWdlIHdhcyBvcmlnaW5hbGx5IGVtaXR0ZWQgb24gc291cmNlIHBhZHMgYW5kCgkgIHRoZW4gcmVjZW50bHkgY2hhbmdlZCB0byBiZSBzaW5rIHBhZHMuIFRoaXMgY2F1c2VzIGEgZmFpbHVyZSBpbiB0aGUKCSAgZ3N0LXB5dGhvbiB0ZXN0c3VpdGUuIERpc2FibGUgdGhlIHJlc3RyaWN0aW9uIHNvIHRoYXQgdGhlIHB1Ymxpc2hlZAoJICBiZWhhdmlvdXIgaXMgc3RpbGwgYWxsb3dlZC4KCjIwMDktMDktMTEgMTg6MjQ6MTggKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RwbHVnaW4uYzoKCSAgY2hlY2s6IEZpeCB2ZXJzaW9uIGNoZWNrIHRlc3RzCgkgIEFjY29tb2RhdGUgdGhlIHNsaWdodGx5IGNoYW5nZWQgc2VtYW50aWNzIGluIHRoZSBwbHVnaW4gdmVyc2lvbiBjaGVjawoJICB3aGVyZSBhIENWUyB2ZXJzaW9uIGp1c3QgYmVmb3JlIGEgcmVsZWFzZSBpcyBhY2NlcHRhYmxlLgoKMjAwOS0wOS0xMSAyMToyMDo1NyArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIGJpbmFyeXJlZ2lzdHJ5OiBkb24ndCBjcmFzaCBpbiBjbGVhbmluZyB1cCBvbiBlcnJvci4KCSAgRG9uJ3QgZGVyZWZlcmVuY2UgTlVMTCBwb2ludGVycy4KCjIwMDktMDctMjAgMTI6NTQ6MDAgLTA3MDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSogZ3N0L2dzdGluZm8uaDoKCSAgZGVidWc6IHVzZSBkdW1teSBjb2RlIHRvIGF2b2lkIHNwdXJpb3VzIHNlbWljb2xvbnMKCSAgRml4ZXMgYnVnICM1ODkxNzMuCgoyMDA5LTA5LTEwIDExOjUzOjA5ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5oOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA5LTEwIDExOjQxOjU2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzoKCSAgcGx1Z2luZmVhdHVyZTogaW1wcm92ZSB2ZXJzaW9uIGNoZWNrCgkgIEFsc28gcGFyc2UgdGhlIG5hbm8gb2YgdGhlIHZlcnNpb24gYW5kIGFzc3VtZSB0aGF0IFguWS5aLTEuMSA+PSBYLlkuWgoJICBXaXRoIHRoaXMgY2hhbmdlIHdlIGNhbiBhbHNvIGNoZWNrIGRldmVsb3BtZW50IHZlcnNpb25zIGFnYWluc3QgdGhlIHZlcnNpb24gb2YKCSAgdGhlIHVwY29tbWluZyByZWxlYXNlLgoKMjAwOS0wOS0xMCAxMDowNTozOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICB0YWdsaXN0OiBBZGQgRklYTUUgZm9yIDAuMTEgdG8gbm90IHR5cGVkZWYgR3N0VGFnTGlzdCB0byBiZSBhIEdzdFN0cnVjdHVyZQoJICBTZWUgYnVnICM1MTg5MzQuCgoyMDA5LTA5LTA5IDE2OjI5OjEwIC0wNzAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIEZpeCB0eXBvIGluIGlubGluZSBkb2N1bWVudGF0aW9uCgoyMDA5LTA5LTA5IDE3OjU3OjU0ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbW1vbjoKCSAgVXBkYXRlIGNvbW1vbgoKMjAwOS0wOS0wOSAxODozODoyOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IEFkZCBhIGNvbW1lbnQgdG8gdGhlIHNjYWxpbmcgZnVuY3Rpb25zIHRvIGV4cGxhaW4gd2h5IHRoZSByb3VuZGluZyBpcyBjb3JyZWN0CgoyMDA5LTA5LTA5IDE2OjQ1OjE3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkgIGdob3N0cGFkOiBkb24ndCB1bnJlZiBOVUxMIGNhcHMKCSAgQ2FwcyBjYW4gYmUgTlVMTCBzbyBkb24ndCBjYWxsIHVucmVmIG9uIGl0IHVuY29uZGl0aW9uYWxseSwgaW5zdGVhZCB1c2UgYW4KCSAgZXhpc3RpbmcgZXhpdCBwYWQgZm9yIHRoZSBmdW5jdGlvbi4KCjIwMDktMDktMDkgMTQ6NTM6MTYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IFVzZSBnY2MncyBfX3VpbnQxMjhfdCBmb3IgNjRiaXQgdW5zaWduZWQgaW50ZWdlciBzY2FsaW5nCgkgIFRoaXMgaXMgYXZhaWxhYmxlIGluIG5ld2VyIGdjYyByZWxlYXNlcyBhbmQgaXQgc2hvdWxkIG9ubHkgZXhpc3QKCSAgb24gcGxhdGZvcm1zIHRoYXQgcHJvdmlkZSBzb21lIG5hdGl2ZSAxMjhiaXQgaW50ZWdlciBhcml0aG1ldGljCgkgIGluc3RydWN0aW9ucy4KCSAgVGhlIHg4Ni02NCBhc3NlbWJseSBmb3IgdGhpcyBpcyBzdGlsbCBrZXB0IGZvciBub24tZ2NjIGNvbXBpbGVycwoJICB0aGF0IGRvbid0IHByb3ZpZGUgX191aW50MTI4X3QgbWFnaWMuCgoyMDA5LTA5LTA5IDA5OjM4OjU0ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBkb2NzL3JhbmRvbS9lbnNvbmljL2RyYWZ0LWJ1ZmZlcnBvb2xzLnR4dDoKCSAgZGVzaWduOiBhZGQgaWRlYXMgZm9yIGJ1ZmZlciBtYW5hZ2VtZW50CgkgIFJpZ2h0IG5vdyB3ZSdyZSBvcGVyYXRpbmcgc3Vib3B0aW1hbCB3aGVuIHRhbGtpbmcgdG8ga2VybmVsIGludGVyZmFjZXMuIFdyaXRlCgkgIGRvZXNuIHNvbWUgaWRlYXMuCgoyMDA5LTA5LTA3IDE4OjI3OjA4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBmaXggd2hpdGVzcGFjZQoKMjAwOS0wOS0wMyAxOTowNjoyOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJICBhZGFwdGVyOiBmaXggd2hpdGVzcGFjZQoKMjAwOS0wOS0wNyAxNjoxNDo1NyArMDIwMCAgQmVuamFtaW4gT3R0ZSA8b3R0ZUBnbm9tZS5vcmc+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgZG9jczogRml4IHR5cG8gaW4gZ3N0X3ZhbHVlX3VuaW9uKCkKCjIwMDktMDktMDYgMTk6NDM6NDcgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiaXRyZWFkZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiaXRyZWFkZXIuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmM6CgkgIGJpdHJlYWRlciwgYnl0ZXJlYWRlcjogYWRkIHNvbWUgRklYTUUgMC4xMSBjb21tZW50cyBhbmQgZml4IGluZGVudGluZwoKMjAwOS0wOS0wNCAxNzoxNTozNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXItZG9jcy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg6CgkgIGJ5dGVyZWFkZXI6IGFkZCB1bmNoZWNrZWQgYW5kIGlubGluZSB2ZXJzaW9ucyBvZiB0aGUgZmxvYXQgZ2V0dGVycy9wZWVrZXJzCgkgIEFQSTogZ3N0X2J5dGVfcmVhZGVyX2dldF9mbG9hdCpfdW5jaGVja2VkKCkKCjIwMDktMDktMDQgMTY6NTI6MDYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oOgoJICBieXRlcmVhZGVyOiBhZGQgaW5saW5lIHZlcnNpb25zIG9mIHRoZSBtb3N0IGNvbW1vbiBnZXR0ZXJzIGFuZCBzZXR0ZXJzCgoyMDA5LTA5LTAyIDExOjIwOjA0ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkqIGxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci1kb2NzLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuaDoKCSogdGVzdHMvY2hlY2svbGlicy9ieXRlcmVhZGVyLmM6CgkgIGJ5dGVyZWFkZXI6IGFkZCBpbmxpbmVkIF91bmNoZWNrZWQoKSB2YXJpYW50cyBmb3Igc29tZSBmdW5jdGlvbnMKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfc2tpcF91bmNoZWNrZWQoKQoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9wZWVrXypfdW5jaGVja2VkKCkKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfZ2V0XypfdW5jaGVja2VkKCkKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfe3BlZWssZ2V0LGR1cH1fZGF0YV91bmNoZWNrZWQoKQoKMjAwOS0wOS0wNSAxMjozMDowNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvZGF0YXByb3RvY29sL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9uZXQvTWFrZWZpbGUuYW06CgkgIGludHJvc3BlY3Rpb246IFN0cmlwIEdzdCBwcmVmaXggZnJvbSBhbGwgdHlwZXMvZnVuY3Rpb25zCgoyMDA5LTA5LTA1IDEyOjIyOjM3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9NYWtlZmlsZS5hbToKCSAgaW50cm9zcGVjdGlvbjogRml4IGZvciBvdXQtb2YtdHJlZSBidWlsZHMKCjIwMDktMDktMDUgMTI6MDQ6NTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvbmV0L01ha2VmaWxlLmFtOgoJICBpbnRyb3NwZWN0aW9uOiBGaXggb3V0LW9mLXRyZWUgYnVpbGQKCjIwMDktMDktMDUgMTE6NTE6NTUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvbmV0L01ha2VmaWxlLmFtOgoJICBpbnRyb3NwZWN0aW9uOiBGaXggYnVpbGQgaWYgZ2lyLXJlcG9zaXRvcnkgaXMgbm90IGluc3RhbGxlZAoKMjAwOS0wOS0wNSAwOTozNjoyMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9uZXQvTWFrZWZpbGUuYW06CgkgIG5ldDogQWRkIGdvYmplY3QtaW50cm9zcGVjdGlvbiBzdXBwb3J0CgoyMDA5LTA5LTA1IDA5OjM0OjMwICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSAgZGF0YXByb3RvY29sOiBBZGQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN1cHBvcnQKCSAgQmVjYXVzZSBvZiBhIGJ1ZyBpbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gdGhpcyBpcyBkaXNhYmxlZCBmb3Igbm93LgoKMjAwOS0wOS0wNSAwOToyODo0OCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJICBjb250cm9sbGVyOiBBZGQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN1cHBvcnQKCjIwMDktMDktMDUgMDk6Mjc6MDQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkgIGNoZWNrOiBBZGQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN1cHBvcnQKCjIwMDktMDktMDUgMDk6MjM6MTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogLmdpdGlnbm9yZToKCSogZ3N0Ly5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkgIGdzdGJhc2U6IEFkZCBnb2JqZWN0LWludHJvc3BlY3Rpb24gc3VwcG9ydAoKMjAwOS0wOS0wNCAyMDo1Njo0MyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkqIGdzdC8uZ2l0aWdub3JlOgoJKiBnc3QvTWFrZWZpbGUuYW06CgkqIGdzdC9nc3QuYzoKCSAgZ3N0OiBBZGQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHN1cHBvcnQKCSAgUGFydGlhbGx5IGZpeGVzIGJ1ZyAjNTUwNjE2LgoKMjAwOS0wOS0wNSAxMDoxOToyMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIDk0Zjk1ZTMgdG8gMTlmYTRmMwoKMjAwOS0wOS0wNCAxOTozNzoxNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzoKCSAgZG9jczogZml4IGRvY3MgZm9yIGdzdF9ieXRlX3JlYWRlcl97Z2V0fHBlZWt9X2Zsb2F0KigpCgoyMDA5LTA5LTA0IDExOjM1OjU5ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkgIGV2ZW50OiB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA5LTA0IDA5OjUxOjI2ICswMjAwICBBdXJlbGllbiBHcmltYXVkIDxnc3RlbHp6QHlhaG9vLmZyPgoKCSogZ3N0L2dzdGJpbi5jOgoJICBiaW46IE9ubHkgdW5yZWYgRU9TIG1lc3NhZ2UgYWZ0ZXIgaXQgaXMgbm90IHVzZWQgYW55bW9yZQoJICBGaXhlcyBidWcgIzU5NDEwNy4KCjIwMDktMDktMDIgMTg6NTQ6MDYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkqIGdzdC9nc3RwYWQuYzoKCSAgc3RhdGVzOiBwb3N0IHN0cnVjdHVyZSBjaGFuZ2Ugb24gc2lua3BhZHMKCSAgUG9zdCB0aGUgc3RydWN0dXJlIGNoYW5nZSBtZXNzYWdlcyBvbiB0aGUgc2lua3BhZHMgb2YgdGhlIGVsZW1lbnRzLiBUaGlzIGFsbG93cwoJICB1cyB0byBjYXRjaCB1bmxpbmtlZCBwYWRzIGVhcmxpZXIgd2l0aG91dCBlbmRpbmcgdXAgd2l0aCBpbmNvbnNpc3RlbnQgZWxlbWVudAoJICBkZWdyZWVzLgoKMjAwOS0wOS0wMiAxODoxMzoyMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBhdm9pZCBmYWxzZSAnbG9vcCBkZXRlY3RlZCcgd2FybmluZ3MKCSAgV2hlbiB3ZSBkZXRlY3QgYSBwYWQgdW5saW5rIGluIHByb2dyZXNzLCB3ZSB3aWxsIG5vdCBiZSB1cGRhdGluZyB0aGUgZGVncmVlIG9mCgkgIHRoZSBwYXJlbnQgZWxlbWVudC4gVGhpcyBjYW4gY2F1c2UgZmFsc2UgbG9vcCBkZXRlY3RlZCB3YXJuaW5ncyBiZWNhdXNlIHRoZQoJICBkZWdyZWUgY291bnRlciBpcyBpbnZhbGlkLiBIYW5kbGUgdGhpcyBjYXNlIGJ5IG1hcmtpbmcgdGhlIGl0ZXJhdG9yIGFzICdkaXJ0eScKCSAgd2hlbiB3ZSBkZXRlY3QgYSBwYWQgdW5saW5rIGFuZCBhdm9pZCBlbWl0aW5nIHRoZSB3YXJuaW5nIGluIHRoaXMgY2FzZS4gV2UgaGF2ZQoJICB0byBjb250aW51ZSBvdXIgc3RhdGUgY2hhbmdlIGFzIGdvb2QgYXMgd2UgY2FuLCB3ZSB3aWxsIGV2ZW50dWFsbHkgcmVzeW5jIHdoZW4KCSAgdGhlIHBhZCB1bmxpbmsgY29tcGxldGVkLgoKMjAwOS0wOS0wMSAxNjo0OTo1NiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgYmFzZXNyYzogd2hpdGVzcGFjZSBmaXhlcwoKMjAwOS0wOS0wMSAxNjo0OToyMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSAgYnVmZmVyOiB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA5LTAxIDEyOjA3OjMxICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgZGlzdDogRG9uJ3QgbGlzdCB0aGUgc3RyZWFtcyBzdWJkaXIgdHdpY2UgaW4gZXhhbXBsZXMgTWFrZWZpbGUKCSAgTGlzdGluZyB0aGUgJ3N0cmVhbXMnIHN1YmRpciB0d2ljZSBpbiBESVNUX1NVQkRJUlMgYnJlYWtzIGRpc3RjaGVjay4KCjIwMDktMDktMDEgMTI6MDU6NTEgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgZ3N0YmluOiBEb24ndCBwcm9wYWdhdGUgYSBOVUxMIGNhY2hlZCBpbmRleCB0byBhZGRlZCBlbGVtZW50cwoJICBXaGVuIGFuIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIGJpbiwgb25seSBzZXQgdGhlIGluZGV4IGlmIHdlIGhhdmUgYQoJICBjYWNoZWQgaW5kZXgsIHJhdGhlciB0aGFuIHNldHRpbmcgYSBOVUxMIGluZGV4IG9uIGVsZW1lbnRzIHRoYXQgbWlnaHQKCSAgaGF2ZSBhIGRlZmF1bHQgaW5kZXggb2JqZWN0IG9mIHRoZWlyIG93bi4KCjIwMDktMDctMTkgMjE6MjM6MTggKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkgIGRvY3M6IEFkZCBhIG5vdGUgYWJvdXQgcmVnZW5lcmF0aW5nIHRoZSBjaGFuZ2Vsb2cgaW4gdGhlIHJlbGVhc2Ugc2NyaXB0CgoyMDA5LTA5LTAxIDEwOjAzOjM1ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGVsZW1lbnQ6IGRvbid0IHRha2Ugb2JqZWN0IGxvY2sgZm9yIGdfY3JpdGljYWwoKSBhbmQgZmxlc2ggb3V0IHdhcm5pbmcgbWVzc2FnZSBzb21lIG1vcmUKCjIwMDktMDktMDEgMTA6MjE6MzEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIGl0ZXJhdG9yOiBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgc2luZ2xlIGl0ZXJhdG9yCgoyMDA5LTA5LTAxIDEwOjIwOjU5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RpdGVyYXRvci5jOgoJICBpdGVyYXRvcjogT25seSB2aXNpdCB0aGUgZWxlbWVudCBhIHNpbmdsZSB0aW1lIGluIHRoZSBzaW5nbGUgaXRlcmF0b3IKCjIwMDktMDktMDEgMDc6Mjc6MjUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIGl0ZXJhdG9yOiBGaXggc2luZ2xlIGl0ZXJhdG9yIGZvciBOVUxMIG9iamVjdHMgYW5kIG5vbi1HVHlwZUluc3RhbmNlIG9iamVjdHMKCSAgRml4ZXMgYnVnICM1OTM3MTkuCgoyMDA5LTA5LTAxIDAwOjAwOjU3ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBkZWJ1ZzogbW9yZSBkZXRhaWwgaW4gd3Jvbmctc3RhdGUtb24tZGlzcG9zZSBlcnJvci4KCSAgQWxzbyB0ZWxsIGluIHdoaWNoIHN0YXRlIHRoZSBlbGVtZW50IGFjdHVhbHkgaXMgYW5kIGlmIGl0IGlzIGV2ZW50dWFseQoJICBzdGF0ZS1sb2NrZWQuCgoyMDA5LTA4LTMxIDIwOjM4OjA3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIGl0ZXJhdG9yOiBmaXggZG9jcyBmb3IgX25ld19zaW5nbGUoKS4KCjIwMDktMDgtMzEgMTY6NTY6MjIgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkqIGdzdC9nc3RpdGVyYXRvci5jOgoJKiBnc3QvZ3N0aXRlcmF0b3IuaDoKCSAgZG9jczogaXQncyBpdHMKCSAgVGhlIHBhbmRhIHNheXMgbm8hCgoyMDA5LTA4LTI5IDIwOjQ0OjM2ICswMjAwICBNYXJrIE5hdXdlbGFlcnRzIDxtYXJrLm5hdXdlbGFlcnRzQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICByZWdpc3RyeTogZmlsbCBpbiBlbGVtZW50ZmFjdG9yeSB3aGVuIHJlZ2lzdGVyaW5nIGVsZW1lbnQKCSAgZWxlbWVudGZhY3RvcnkgZmllbGQgaXMgZmlsbGVkIGluIGJ5IGdzdF9lbGVtZW50X2Jhc2VfY2xhc3NfaW5pdCwKCSAgYnV0IGl0IG5lZWRzIHNvbWUgaW5mbyBzZXQgb24gdGhlIGVsZW1lbnQncyB0eXBlLCBzbyBoYXZlIGl0CgkgIGF2YWlsYWJsZSBwcmlvciB0byBjbGFzcyBzdHJ1Y3R1cmUgY3JlYXRpb24gc3Bpbm5pbmcgdXAuCgkgIFRoaXMgYWZmZWN0cyBlbGVtZW50cyB0aGF0IGhhdmUgYSB3ZWxsLWtub3duL3B1YmxpYyB0eXBlIChlLmcuIHBpcGVsaW5lKQoJICBhbmQgY2FuIGJlIGNyZWF0ZWQgYnkgb3RoZXIgbWVhbnMgdGhhbiBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UKCSAgKHdoaWNoIHdpbGwgYWxzbyBmaWxsIGluIHRoZSBlbGVtZW50J3MgZmFjdG9yeSkuCgoyMDA5LTA4LTMxIDExOjQ1OjE3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIHV0aWxzOiB1c2UgMTI4Yml0cyBkaXZpc2lvbiBvbiB4ODZfNjQKCjIwMDktMDgtMjkgMDQ6NDQ6NTEgKzA0MDAgINCg0YPRgdC70LDQvSDQmNC20LHRg9C70LDRgtC+0LIgPGxybjE5ODZAZ21haWwuY29tPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIHN5c3RlbWNsb2NrOiBmaXggY29tcGlsYXRpb24gb2Ygd2luMzIgY29kZQoJICBGaXhlcyAjNTkzNDYwLgoKMjAwOS0wOC0yOCAxODozNzo0NCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBjYWNoZSBpbmRleAoJICBDYWNoZSB0aGUgbGFzdCBpbmRleCB0aGF0IHdhcyBzZXQgd2l0aCBfc2V0X2luZGV4KCkgYW5kIHJldHVybiB0aGlzIGluIHRoZQoJICBfZ2V0X2luZGV4KCkgY2FsbC4KCSAgU2V0IHRoZSBjYWNoZWQgaW5kZXggb24gbmV3bHkgYWRkZWQgZWxlbWVudHMuCgkgIEZpeGVzICM1NjY4ODEKCjIwMDktMDgtMjggMTg6MzU6NTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBlbGVtZW50OiBiZXR0ZXIgdHlwZSBjaGVja3MKCSAgQWRkIEdTVF9DTE9DSyB0eXBlY2hlY2sgZm9yIF9zZXRfY2xvY2soKS4KCSAgQWxsb3cgc2V0dGluZyBOVUxMIGluZGV4ZXMgb24gZWxlbWVudCAoY2xlYXIgdGhlIGN1cnJlbnQgaW5kZXgpCgkgIFNvbWUgd2hpdGVzcGFjZSBmaXhlcy4KCjIwMDktMDgtMjggMTg6MTQ6MjMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBlbGVtZW50OyB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA4LTI4IDE4OjA2OjQ1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGRlZnM6IGFkZCBnc3RfaXRlcmF0b3JfbmV3X3NpbmdsZSB0byBkZWZzCgoyMDA5LTA4LTI4IDE4OjAzOjQ0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IHdoaXRlc3BhY2UgZml4ZXMKCjIwMDktMDgtMjggMTc6NTk6MTUgKzAyMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgQ2hlY2sgc3VnZ2VzdGVkIGNhcHMgZm9yIHByb3h5IGFsbG9jCgkgIEJlY2F1c2Ugd2UgYXJlIHRyeWluZyB0byByZXNvbHZlIGEgc3VnZ2VzdGlvbiBoZXJlIHdlIGRvbid0IG5lZWQKCSAgdG8gY2hlY2sgb24gY2FwcyBmb3IgcHJveHlfYWxsb2MgYnV0IHdlIG5lZWQgdG8gY2hlY2sgb24gdGhlCgkgIHN1Z2dlc3RlZCBjYXBzIGluc3RlYWQuCgoyMDA5LTA4LTI4IDE3OjQ5OjExICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmg6CgkgIHF1ZXVlOiB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA4LTI4IDE3OjAyOjMwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIHN5c3RlbWNsb2NrOiB1c2UgcHJlZm9ybWFuY2UgY291bnRlcnMgb24gd2luZG93cwoJICBCYXNlZCBvbiBjbG9jayBpbXBsZW1lbnRhdGlvbiBieSBIw6V2YXJkIEdyYWZmIDxoYXZhcmQuZ3JhZmZAdGFuZGJlcmcuY29tPgoJICBUcnkgdG8gZ2V0IHRoZSB0aW1lIG9uIHdpbmRvd3MgdXNpbmcgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXJzLiBUaGVzZSBoYXZlIGEgbXVjaAoJICBoaWdoZXIgcmVzb2x1dGlvbiBhbmQgYWNjdXJhY3kgdGhhbiB0aGUgcmVndWxhciBnZXRjdXJyZW50dGltZSgpLiBCZSBjYXJlZnVsIHRvCgkgIGZhbGwgYmFjayB0byByZWd1bGFyIGdldGN1cnJlbnR0aW1lKCkgb3IgcG9zaXggY2xvY2tzIHdoZW4gcGVyZm9ybWFuY2UgY291bnRlcnMKCSAgYXJlIG5vdCBhdmFpbGFibGUuCgoyMDA5LTA4LTI4IDE2OjA3OjE2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmg6CgkgIHN5c3RlbWNsb2NrOiBmaXggaW5kZW50YXRpb24KCjIwMDktMDgtMjggMTU6MzI6MjYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IHVzZSBzaGlmdCBpbnN0ZWFkIG9mIGRpdmlzaW9uCgkgIFdlIGNhbiB1c2UgYSBzaGlmdCBmb3Igc2NhbGluZyB0aGUgZGVub21pbmF0b3IgaW5zdGVhZCBvZiBhIGRpdmlkZSBzaW5jZSB0aGUKCSAgZGVub20gaXMgYWx3YXlzIHBvc2l0aXZlLiBUaGlzIGF2b2lkcyBoYXZpbmcgdGhlIGNvbXBpbGVyIGdlbmVyYXRlIGNvZGUgZm9yIHRoZQoJICBkaWZmZXJlbnQgcm91bmRpbmcgcnVsZXMgd2hlbiBzY2FsaW5nIG5lZ2F0aXZlIHZhbHVlcy4KCjIwMDktMDgtMjggMTM6NDU6MzggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IG1ha2UgaW5saW5pbmcgZXhwbGljaXQKCjIwMDktMDgtMjggMTI6NDM6NDMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IG9wdGltaXplIGZvciB4ODZfNjQgd2l0aCBzb21lIGlubGluZSBhc20KCSAgNjRiaXQgeDg2IGhhcyBuYXRpdmUgNjR4NjQtPjEyOCBiaXQgbXVsdGlwbHkgdGhhdCB3ZSBjYW4gdXNlIHdpdGggc29tZSBpbmxpbmUKCSAgYXNzZW1ibGVyIHRvIHNwZWVkIHVwIGxhcmdlIG11bHRpcGxpY2F0aW9ucy4KCSAgVXNlIGJzciB0byBmaW5kIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBtb3JlIGVmZmljaWVudGx5LgoKMjAwOS0wOC0yOCAxMjozMzozNyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R1dGlscy5jOgoJICB1dGlsczogZmFjdG9yIG91dCB0aGUgbGVhZGluZyB6ZXJvIGNvdW50IGNvZGUKCjIwMDktMDgtMjggMTI6MzA6NDEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdXRpbHM6IHBhc3MgY29ycmVjdGlvbiBmYWN0b3IgYXJvdW5kCgkgIFBhc3MgdGhlIGNvcnJlY3Rpb24gZmFjdG9yIGFyb3VuZCB0byBnZXQgcmlkIG9mIHRoZSBlbnVtLCBzb21lIGNvZGUKCSAgYW5kIHNvbWUgYnJhbmNoZXMuCgoyMDA5LTA4LTI4IDEyOjIxOjI4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIHV0aWxzOiB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA5LTA4LTI4IDEyOjE5OjM0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIHV0aWxzOiBtb3ZlIGNvbW1vbiBjb3JyZWN0aW9uIGNvZGUgaW4gYSBtYWNybwoKMjAwOS0wOC0yNCAxODowMTowNyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgYmFzZXNpbms6IHdoaXRlc3BhY2UgZml4ZXMKCjIwMDktMDgtMjYgMTY6NTE6MzIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIGl0ZXJhdG9yOiBBbGxvdyB0byB1c2UgTlVMTCBhcyBvYmplY3QgZm9yIHRoZSBzaW5nbGUgaXRlcmF0b3IKCjIwMDktMDgtMjYgMTY6Mzk6MTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkqIGdzdC9nc3RpdGVyYXRvci5oOgoJICBpdGVyYXRvcjogQVBJOiBBZGQgZ3N0X2l0ZXJhdG9yX25ld19zaW5nbGUoKQoJICBUaGlzIGFsbG93cyAiaXRlcmF0aW9uIiBvdmVyIGEgc2luZ2xlIG9iamVjdCBvZiBzb21lIHR5cGUsCgkgIHdoaWNoIGhhcHBlbnMgb2Z0ZW4gZm9yIHRoZSBHc3RQYWRJdGVySW50TGlua3NGdW5jdGlvbiBmb3IgZXhhbXBsZS4KCjIwMDktMDgtMjQgMTc6NTc6MTYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgYmFzZXNyYzogcmV0dXJuIHJlc3VsdCBvZiBfc2V0X2NhcHMoKQoKMjAwOS0wOC0yNCAxNzo1NjozMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbms6IHdoaXRlc3BhY2UgZml4ZXMKCjIwMDktMDgtMjIgMTQ6MjI6MzEgLTA3MDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSogZ3N0L2dzdG9iamVjdC5oOgoJKiBnc3QvZ3N0dHJhY2UuaDoKCSogZ3N0L2dzdHhtbC5oOgoJICBJdCdzIF9fR05VQ19fLCBub3QgX0dOVUNfCgkgIFRoaXMgYXBwZWFycyB0byBiZSBhbiA4IHllYXIgb2xkIGJ1Zy4KCjIwMDktMDgtMjEgMDk6NTk6NTggKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9wd2cvYnVpbGRpbmctYm9pbGVyLnhtbDoKCSAgZG9jczogYWRkIGxpbmsgdG8gY2dpdCB0YXJiYWxsIGRvd25sb2FkIG9mIGdzdC10ZW1wbGF0ZSBpbiBQV0cKCSAgU28gcGVvcGxlIHdobyBjYW4ndCB1c2UgZ2l0IGZvciBzb21lIHJlYXNvbiBzdGlsbCBjYW4gZ2V0IGhvbGQKCSAgb2YgdGhlIGNvZGUuIFNlZSAjNTkxMDY5LgoKMjAwOS0wOC0yMCAxMTo1NDo0MCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICBwbHVnaW5mZWF0dXJlOiBhZGQgZ3VhcmQgdG8gZ3N0X3BsdWdpbl9mZWF0dXJlX3R5cGVfbmFtZV9maWx0ZXIKCSAgU28gd2UgZG9uJ3QganVzdCBjcmFzaCBpZiB0aGVyZSdzIGEgcmVmY291bnRpbmcgYnVnIHNvbWV3aGVyZSBlbHNlLgoKMjAwOS0wOC0xOSAxNjoyNDozOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1pbnRlZ3JhdGlvbi54bWw6CgkgIGRvY3M6IERvbid0IHRhbGsgYWJvdXQgdGhlIGRlcHJlY2F0ZWQgbGliZ25vbWUgYW5kIEdOT01FLVZGUwoJICBJbnN0ZWFkIHRhbGsgYWJvdXQgR0lPIGFuZCBjaGFuZ2UgdGhlIG9wdGlvbiBwYXJzaW5nIGV4YW1wbGUgdG8KCSAgbm90IGluaXRpYWxpemUgbGliZ25vbWUgYnV0IG9ubHkgR1RLLgoJICBGaXhlcyBidWcgIzU5MjIzMy4KCjIwMDktMDgtMTkgMTU6MjU6NDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL2V4YW1wbGVzL3N0cmVhbXMvTWFrZWZpbGUuYW06CgkgIGV4YW1wbGVzOiBMaW5rIHJ0cG9vbC10ZXN0IHRvIGxpYnB0aHJlYWQgZm9yIHVzaW5nIHRoZSBQT1NJWCB0aHJlYWRzCgkgIEFsc28gdGhlIG90aGVyIHN0cmVhbXMgZXhhbXBsZSBjYW4gcnVuIHdpdGhvdXQgcHRocmVhZHMgdGhlcmVmb3JlCgkgIGVuYWJsZSBpdCBldmVuIGlmIHB0aHJlYWRzIGFyZSBub3QgYXZhaWxhYmxlLgoJICBGaXhlcyBidWcgIzU5MjMxNC4KCjIwMDktMDgtMTggMTQ6NDU6MjMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSogdG9vbHMvZ3N0LXhtbGluc3BlY3QuYzoKCSAgdG9vbHM6IFVzZSBpdGVyYXRlX2ludGVybmFsX2xpbmtzIGluc3RlYWQgb2YgZGVwcmVjYXRlZCBnZXRfaW50ZXJuYWxfbGlua3MKCjIwMDktMDgtMTggMTQ6NDU6MDIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5oOgoJICBtdWx0aXF1ZXVlOiBVc2UgaXRlcmF0ZV9pbnRlcm5hbF9saW5rcyBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWQgZ2V0X2ludGVybmFsX2xpbmtzCgoyMDA5LTA4LTE4IDE0OjA1OjQwICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJICBnc3RwYWQ6IEFkZCBzb21lIERJU0FCTEVfREVQUkVDQVRFRCBtYXJrZXJzIGluIHRoZSBoZWFkZXIgdG9vCgkgIFRoZSBpbnRlcm5hbCBsaW5rcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIHNpbmNlIHNvbWUgdGltZSBhbmQKCSAgdGhlcmUgYWxyZWFkeSB3ZXJlIEdTVF9SRU1PVkVfREVQUkVDQVRFRCBtYXJrZXJzIGluIHRoZSBzb3VyY2UgZmlsZSwKCSAgbm93IGFkZCB0aGVtIHRvIHRoZSBoZWFkZXIgdG9vLgoJICBGaXhlcyBidWcgIzU5MjIwOS4KCjIwMDktMDgtMTggMTE6Mzg6MzggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9kZXNpZ24vcGFydC1zdGF0ZXMudHh0OgoJICBkb2NzOiBVcGRhdGUgdGhlIGRlc2lnbiBkb2NzIGZvciBiaW4gc3RhdGUgY2hhbmdlcyBhY2NvcmRpbmcgdG8gbGFzdCBjb21taXQKCjIwMDktMDgtMTggMTE6MzY6MzYgKzAyMDAgIEFudG9pbmUgVHJlbWJsYXkgPGhleGEwMEBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0YmluLmM6CgkgIGdzdGJpbjogRG9uJ3QgdHJ5IHRvIGNoYW5nZSBjaGlsZHJlbidzIHN0YXRlIGlmIHRoZXkncmUgYWxyZWFkeSBpbiB0aGUgc3RhdGUgd2Ugd2FudAoJICBGaXhlcyBidWcgIzM2ODUzNi4KCjIwMDktMDgtMTggMTE6MzM6MTcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkgIGdob3N0cGFkOiBBbHdheXMgZ2V0IHRoZSBwcm94eXBhZCdzIGdob3N0cGFkIHZpYSB0aGUgZ2hvc3RwYWQgaW4gdGhlIHNyYyBjYXBzIGNoYW5nZSBub3RpZnkgaGFuZGxlcgoJICBCZWZvcmUgdGhlIHNpZ25hbCBoYW5kbGVyIHdvdWxkIGdldCB0aGUgZ2hvc3RwYWQgcGFzc2VkIGFzIHNlY29uZAoJICBhcmd1bWVudCBidXQgaXQgY291bGQndmUgYWxyZWFkeSBiZWVuIHVucmVmZmVkIGFuZCBkZXN0cm95ZWQuCgkgIFRoaXMgd291bGQgdGhlbiBsZWFkIHRvIGNyYXNoZXMgYW5kIGFsbCB0aGF0LgoJICBOb3cgd2UgZ2V0IHRoZSBnaG9zdHBhZCBmcm9tIHRoZSBwcm94eSBwYWQsIHdoaWNoIHdlIGdldCBmcm9tIHRoZQoJICB0YXJnZXQgcGFkIGFzIGl0J3MgcGVlci4KCSAgRml4ZXMgYnVnICM1OTEzMTguCgoyMDA5LTA4LTE4IDA4OjQ1OjA4ICswMjAwICBMYXVyZW50IEdsYXlhbCA8c3BnbGVnbGVAeWFob28uZnI+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSAgZmlsZXNpbms6IEFkZCBwcm9wZXJ0eSB0byBhbGxvdyB0byBhcHBlbmQgdG8gYW4gYWxyZWFkeSBleGlzdGluZyBmaWxlCgkgIEZpeGVzIGJ1ZyAjNTkxNDQxLgoKMjAwOS0wOC0xNCAxMTo1MzoxNCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkgIGNvbmZpZ3VyZTogUmVtb3ZlIGR1cGxpY2F0ZWQgY2hlY2sgZm9yIGNsb2NrX2dldHRpbWUKCjIwMDktMDgtMTQgMTE6MTI6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHV0aWxzOiBBZGQgc3BlY2lhbCByYW5kb20gdW5pdCB0ZXN0IGZvciA2NCBzY2FsaW5nIGZ1bmN0aW9ucwoJICBUaGlzIHRlc3RzIDEwMDAwMCByYW5kb20gbXVsdGlwbGljYXRpb25zL2RpdmlzaW9ucyBvZiBhbGwgc2NhbGluZwoJICBmdW5jdGlvbiB2YXJpYW50cyBhbmQgY29tcGFyZXMgdGhlIHJlc3VsdCB3aXRoIHRoZSByZXN1bHQgdGhhdCBpcwoJICBnZW5lcmF0ZWQgYnkgR01QIG9uIHRoZSBzYW1lIGlucHV0LgoJICBGb3IgdGhpcyBjaGVjayBmb3IgR1NMIGFuZCBHTVAgZHVyaW5nIGNvbmZpZ3VyZSBidXQgb25seSB1c2UKCSAgaXQgZm9yIHRoaXMgc2luZ2xlIHVuaXQgdGVzdC4KCSAgVGVzdGluZyBmdW5jdGlvbnMgd2VyZSBwcm92aWRlZCBieSBLaXBwIENhbm5vbiA8a2Nhbm5vbkBsaWdvLmNhbHRlY2guZWR1PgoKMjAwOS0wOC0xMyAxNjozMTowMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgZ3N0dXRpbHM6IEFkZCBuZXcgc2NhbGluZyBmdW5jdGlvbnMgdG8gdGhlIGRvY3MKCjIwMDktMDgtMTMgMTY6MjA6NDYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHV0aWxzOiBBZGQgKHZlcnkpIG1pbmltYWwgdW5pdCB0ZXN0IGZvciB0aGUgbmV3IHJvdW5kaW5nIHNjYWxpbmcgZnVuY3Rpb25zCgoyMDA5LTA4LTEzIDE2OjEwOjMxICswMjAwICBLaXBwIENhbm5vbiA8a2Nhbm5vbkBsaWdvLmNhbHRlY2guZWR1PgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIGdzdC9nc3R1dGlscy5oOgoJICBnc3R1dGlsczogQVBJOiBBZGQgcm91bmRpbmcgdG8gbmVhcmVzdCBhbmQgbmV4dCBpbnRlZ2VyIHZlcnNpb25zIG9mIHRoZSA2NCBiaXQgaW50ZWdlciBzY2FsaW5nIGZ1bmN0aW9ucwoJICBUaGUgbmV3IGZ1bmN0aW9ucyBhcmUKCSAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludF9yb3VuZCgpCgkgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnRfY2VpbCgpCgkgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCgpCgkgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9jZWlsKCkKCSAgRml4ZXMgYnVnICM1OTA5MTkuCgoyMDA5LTA4LTEyIDExOjEwOjA1ICswMjAwICBLaXBwIENhbm5vbiA8a2Nhbm5vbkBsaWdvLmNhbHRlY2guZWR1PgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHV0aWxzOiBSZXZlcnQgcGFydHMgb2YgbGFzdCBjaGFuZ2UgdG8gb3B0aW1pemUgdGhlIHNjYWxpbmcgZnVuY3Rpb25zIGFnYWluCgkgIFBhcnRpYWxseSBmaXhlcyBidWcgIzU5MDkxOS4KCjIwMDktMDgtMTEgMDk6MTY6MzggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHV0aWxzOiBGaXggdmlvbGF0aW9ucyBvZiBzdHJpY3QtYWxpYXNpbmcgcnVsZXMgaW4gZ3N0X3V0aWxfdWludDY0X3NjYWxlKCkKCjIwMDktMDgtMTEgMDk6MTA6NDcgKzAyMDAgIEtpcHAgQ2Fubm9uIDxrY2Fubm9uQGxpZ28uY2FsdGVjaC5lZHU+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgZ3N0dXRpbHM6IFJlZmFjdG9yIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSgpCgkgIFRoaXMgd2lsbCBsYXRlciBtYWtlIGl0IHBvc3NpYmxlIHRvIHByb3ZpZGUgcm91bmRpbmcgdmVyc2lvbnMKCSAgb2YgaXQgd2l0aG91dCBtdWNoIGNvZGUgZHVwbGljYXRpb24uCgkgIFBhcnRpYWxseSBmaXhlcyBidWcgIzU5MDkxOS4KCjIwMDktMDgtMTEgMTU6MjA6MTggKzAyMDAgIEpvbmFzIEhvbG1iZXJnIDxqb25hcy5ob2xtYmVyZyBhdCBheGlzLmNvbT4KCgkqIGdzdC9nc3RidWZmZXJsaXN0LmM6CgkgIGJ1ZmZlcmxpc3Q6IHVwZGF0ZSBkb2Mgc3RyaW5nCgoyMDA5LTA4LTExIDEzOjIxOjM1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzZWdtZW50LmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6CgkgIGdzdHNlZ21lbnQ6IEFjdHVhbGx5IHN0YXJ0PT1zdG9wPT1zZWdtZW50X3N0YXJ0IGlzIGluc2lkZSB0aGUgc2VnbWVudAoJICBTdGlsbCB0aGUgb2xkIGNvZGUgd2FzIHdyb25nIGFzIGl0IGNsYWltZWQgdGhhdCBzdGFydD09c3RvcDxzZWdtZW50X3N0YXJ0CgkgIHdvdWxkIGJlIGluc2lkZSB0aGUgc2VnbWVudCBhbmQgcmV0dXJuZWQgaW5zYW5lIGNsaXBwaW5nIGRpZmZlcmVuY2VzLgoKMjAwOS0wOC0xMSAxMzowMzowMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOgoJICBnc3RzZWdtZW50OiBGaXggdW5pdCB0ZXN0IGFuZCBhZGQgYW4gYWRkaXRpb25hbCB0ZXN0CgkgIFRoZSBwcmV2aW91cyB0ZXN0IGFzc3VtZWQgdGhhdCBzdGFydD1zdG9wPXNlZ21lbnRfc3RhcnQgd2lsbAoJICBiZSBpbnNpZGUgdGhlIHNlZ21lbnQgYnV0IHRoaXMgaXMgd3JvbmcuCgoyMDA5LTA4LTExIDEyOjU5OjEzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzZWdtZW50LmM6CgkgIGdzdHNlZ21lbnQ6IENsaXBwaW5nIHNob3VsZCBkZXRlY3Qgc3RhcnQ9c3RvcDxzZWdtZW50X3N0YXJ0IGFzIG91dHNpZGUgdGhlIHNlZ21lbnQKCSAgQmVmb3JlIGl0IHJldHVybmVkIHRoYXQgW3N0YXJ0LHN0b3BdIGlzIGluc2lkZSB0aGUgc2VnbWVudCBhbmQgdGhhdCB0aGUKCSAgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlZ21lbnRfc3RhcnQgYW5kIHN0YXJ0IG5lZWRzIHRvIGJlIGNsaXBwZWQuIElmIHRoZQoJICBjbGlwcGluZyBpcyBkb25lIG9uIGEgYnVmZmVyIChsaWtlIGluIGJhc2VhdWRpb3NpbmspIHRoaXMgd2lsbCByZXN1bHQKCSAgaW4gdGhlIGRhdGEgcG9pbnRlciBiZWluZyBhdCBhIGludmFsaWQgbWVtb3J5IHBvc2l0aW9uLgoJICBGaXhlcyBidWcgIzU4OTg0OS4KCjIwMDktMDgtMTEgMDU6NDc6MjEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1cy5jOgoJICBnc3RidXM6IFVucmVmIHBpcGVsaW5lIGFmdGVyIHVzYWdlIGluIHRlc3RfY3VzdG9tX21haW5fY29udGV4dCB1bml0IHRlc3QKCSAgVGhpcyBtYWtlcyB0aGUgY29yZSB1bml0IHRlc3RzIHZhbGdyaW5kIGNsZWFuIGFnYWluLgoKMjAwOS0wOC0xMSAwMjo1NDo1NSArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGRvY3MvcmFuZG9tL21vdmluZy1wbHVnaW5zOgoJICBkb2NzOiBhZGQgRWR3YXJkJ3MgZ2l0IHBsdWdpbiBtb3ZpbmcgaG93dG8gdG8gbW92aW5nLXBsdWdpbnMgZG9jdW1lbnQKCjIwMDktMDgtMTAgMTQ6MzA6MzQgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOgoJICBjaGVja3M6IGRvbid0IGZvcmdldCB0byBpbmNsdWRlIGNvbmZpZy5oIGluIHRoZSBHc3RPYmplY3QgdW5pdCB0ZXN0CgoyMDA5LTA4LTEwIDEzOjA1OjU3ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbmZpZ3VyZS5hYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOgoJICBjaGVja3M6IHRyeSB0byBmaXggR3N0T2JqZWN0IHVuaXQgdGVzdCBvbiBPU1gKCSAgU2VlbXMgbGlrZSB3ZSBnZXQgU0lHQlVTIGluc3RlYWQgb2YgU0lHU0VHViBoZXJlIHdoZW4gR0xpYiBjcmFzaGVzCgkgIHdoZXJlIGl0IHNob3VsZG4ndCBjcmFzaCAoYW5kIHdlIGV2ZW4gaGF2ZSBhIHVuaXQgdGVzdCBmb3IgdGhhdCEpLgoKMjAwOS0wOC0xMCAxMjowMTo0OCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6CgkgIGNoZWNrczogc2V0IHBpcGVsaW5lcyB0byBOVUxMIHN0YXRlIGluIHBhcnNlLWxhdW5jaCB1bml0IHRlc3QKCSAgRml4ZXMgdGltZW91dHMgaW4gZ3N0X3Rhc2tfY2xlYW51cF9hbGwoKS4KCjIwMDktMDgtMTAgMTE6NDI6MjUgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1cy5jOgoJICBjaGVja3M6IHNldCBwaXBlbGluZSBiYWNrIHRvIE5VTEwgc3RhdGUgaW4gR3N0QnVzIHVuaXQgdGVzdAoJICBGaXhlcyB0aW1lb3V0IGluIGdzdF90YXNrX2NsZWFudXBfYWxsKCkuCgoyMDA5LTA4LTEwIDExOjQzOjUyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGNoZWNrOiBhZGQgc29tZSBsb2dnaW5nIGJlZm9yZSBjYWxsaW5nIGdzdF90YXNrX2NsZWFudXBfYWxsKCkKCjIwMDktMDgtMDggMjI6Mjc6MDYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgY2hlY2s6IENhbGwgZ3N0X3Rhc2tfY2xlYW51cF9hbGwoKSBpbiBHU1RfRU5EX1RFU1QKCSAgVGhpcyBmaXhlcyBtYW55IHVuaXQgdGVzdHMgdW5kZXIgdmFsZ3JpbmQgdGhhdCBzaG93cwoJICBsZWFraW5nIEdzdFRhc2tzIHRoYXQgYXJlIG5vdCByZWFsbHkgbGVha2VkIGJ1dCBqdXN0CgkgIG5vdCB1bnJlZmZlZCBieSB0aGUgdGFzayB0aHJlYWQgYmVmb3JlIHRoZSB1bml0IHRlc3QKCSAgc3RvcHBlZC4KCSAgRml4ZXMgYnVnICM1OTEwNDUuCgoyMDA5LTA4LTA4IDE0OjQ3OjU3ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogUmVtb3ZlIGRlYWQgYXNzaWdubWVudHMKCjIwMDktMDgtMDggMTQ6NDc6NDAgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3R0YXNrLmM6CgkgIGdzdDogUmVtb3ZlIGRlYWQgYXNzaWdubWVudHMKCjIwMDktMDgtMDcgMDI6MzY6MjkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzLy5naXRpZ25vcmU6CgkgIGdpdGlnbm9yZTogaWdub3JlIG5ldyBxdWV1ZS1lcnJvciB0ZXN0CgoyMDA5LTA4LTA2IDIwOjQwOjA3ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICBjaGVjazogYWRkIGludGVybmFsLWNoZWNrLmggdG8gQlVJTFRfU09VUkNFUyBpbiBhdHRlbXB0IHRvIGZpeCB0aGUgYnVpbGQKCSAgRm9yIHNvbWUgcGVvcGxlIHRoZSBidWlsZCBvZiBsaWJnc3RjaGVjayB3YXMgYnJva2VuIGJlY2F1c2UgdGhlIG1ha2UKCSAgdGFyZ2V0IHRoYXQgY3JlYXRlcyB0aGUgaW50ZXJuYWwtY2hlY2suaCBmaWxlIHdhc24ndCBleGVjdXRlZCBmb3IKCSAgc29tZSByZWFzb24uIFRoaXMgc2hvdWxkIGhvcGVmdWxseSBmaXggdGhpcy4KCjIwMDktMDgtMDYgMTg6Mzg6MTYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogYXV0b2dlbi5zaDoKCSAgYXV0b2dlbi5zaDogb2xkZXIgYWNsb2NhbHMgZG9uJ3QgbGlrZSAtSS4gc28gdXNlIC1JIC4gaW5zdGVhZAoKMjAwOS0wOC0wNiAxODo0NzozMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXIuYzoKCSAgZ3N0YnVmZmVyOiBhZGQgYWRkaXRpb25hbCBjaGVja2luZyBmb3Igd3JpdGFiaWxpdHkKCSAgQ2hlY2sgZm9yIG1ldGFkYXRhIHdyaXRhYmlsaXR5IHdoZW4gc2V0dGluZyBjYXBzIG9uIGJ1ZmZlciBvciB3aGVuIGNvcHlpbmcKCSAgbWV0YWRhdGEgZmxhZ3MuIE9ubHkgZW5hYmxlIHRoZXNlIGV4dHJhIGFzc2VydGlvbnMgaW4gZ2l0IHZlcnNpb25zLgoJICBUaGlzIHNob3VsZCBoZWxwIHVzIGZpbmQgYmFkIGVsZW1lbnRzLgoKMjAwOS0wOC0wNCAxMDoyMjoyNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkgIGNoZWNrOiBkaXNhYmxlIHVuaXQgdGVzdCBzdXBwb3J0IG9uIHdpbjMyIGZvciBub3cKCSAgVW50aWwgd2UgbWFrZSB0aGUgaW50ZXJuYWwgbGliY2hlY2sgd29yayBvbiB3aW5kb3dzLgoKMjAwOS0wNy0xOSAxNzowNDo1OCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiAuZ2l0aWdub3JlOgoJKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbToKCSAgY2hlY2s6IGZpeCBzeW1ib2wgZXhwb3J0aW5nCgoyMDA5LTA3LTE3IDAwOjQ2OjMyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIE1ha2VmaWxlLmFtOgoJKiBjaGVjay1jaGVja3MubTQ6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX3BhY2suYzoKCSAgY2hlY2s6IGZpeCBpc3N1ZXMgd2l0aCAnbWFrZSBkaXN0Y2hlY2snCgkgIFNlZW1zIHRvIHdvcmsgbm93LCBhdCBsZWFzdCBvbiAqbml4LiBPbmUgb2YgdGhlIGNvbmZpZ3VyZSBjaGVja3MKCSAgY2F1c2VkIHRoZXNlIHdlaXJkIGlzc3VlcyAtIGJ1dCB3aGljaCBvbmU/CgoyMDA5LTA4LTA2IDE3OjI3OjEyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIE1ha2VmaWxlLmFtOgoJKiBhdXRvZ2VuLnNoOgoJKiBjaGVjay1jaGVja3MubTQ6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSogbGlicy9nc3QvY2hlY2svLmdpdGlnbm9yZToKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL01ha2VmaWxlLmFtOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLnBjLmluOgoJICBjaGVjazogdXNlIHByaXZhdGUgY29weSBvZiBjaGVjayBmb3IgbGliZ3N0Y2hlY2sKCSAgU2VlICM1NzcyNzUuIFNlZW1zIHRvIHdvcmsgZmluZSwgYnV0IGRvZXNuJ3QgZGlzdGNoZWNrIHlldC4KCjIwMDktMDctMTYgMTg6Mzk6MTYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrLmguaW46CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX2Vycm9yLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX2Vycm9yLmg6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX2ltcGwuaDoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svY2hlY2tfbGlzdC5jOgoJKiBsaWJzL2dzdC9jaGVjay9saWJjaGVjay9jaGVja19saXN0Lmg6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX2xvZy5jOgoJKiBsaWJzL2dzdC9jaGVjay9saWJjaGVjay9jaGVja19sb2cuaDoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svY2hlY2tfbXNnLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX21zZy5oOgoJKiBsaWJzL2dzdC9jaGVjay9saWJjaGVjay9jaGVja19wYWNrLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX3BhY2suaDoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svY2hlY2tfcHJpbnQuYzoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svY2hlY2tfcHJpbnQuaDoKCSogbGlicy9nc3QvY2hlY2svbGliY2hlY2svY2hlY2tfcnVuLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2xpYmNoZWNrL2NoZWNrX3N0ci5jOgoJKiBsaWJzL2dzdC9jaGVjay9saWJjaGVjay9jaGVja19zdHIuaDoKCSAgY2hlY2s6IGFkZCBpbnRlcm5hbCBjb3B5IG9mIGNoZWNrLTAuOS42CgkgIE5vdCBob29rZWQgdXAgeWV0LiBTZWUgIzU3NzI3NS4KCjIwMDktMDgtMDYgMTQ6MTE6NDYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGNhcHMuYzoKCSAgZG9jczogZml4IFNpbmNlOiB0YWcgZm9yIG5ldyBnc3RfY2Fwc19jYW5faW50ZXJzZWN0KCkgZnVuY3Rpb24KCjIwMDktMDctMjIgMTE6MjQ6NTkgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3R1dGlscy5jOgoJICB1dGlsczogdXNlIG5ldyBfY2Fwc19jYW5faW50ZXJzZWN0KCkKCjIwMDktMDctMjIgMTE6MjQ6MDggKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgcGFkOiB1c2UgbmV3IF9jYXBzX2Nhbl9pbnRlcnNlY3QoKQoKMjAwOS0wNy0yMiAwOTo1NDo1NSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIGJhc2V0cmFuc2Zvcm06IHVzZSBuZXcgX2NhcHNfY2FuX2ludGVyc2VjdCgpCgoyMDA5LTA3LTIyIDA5OjM4OjEwICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJKiBnc3QvZ3N0Y2Fwcy5oOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgY2FwczogYWRkIGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QoKQoJICBPZnRlbiB3ZSBkb24ndCBuZWVkIHRoZSByZXN1bHQgb2YgdGhlIGludGVyc2VjdGlvbi4gQWRkIGEgdmFyaWFudCB0aGF0IG9ubHkKCSAgdHJpZXMgdG8gaW50ZXJzZWN0LiBJdCBjYW4gYnJlYWsgb3V0IGVhcmxpZXIgYW5kIGRvZXMgbGVzcyBHVmFsdWUgY29weWluZy4KCSAgQVBJOiBnc3RfY2Fwc19jYW5faW50ZXJzZWN0KCkKCjIwMDktMDctMjIgMDk6MjQ6NTUgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBiYXNldHJhbnNmb3JtOiBvbmx5IGNoZWNrIGNhcHNfaXNfZml4ZWQoKSBpZiB0aGV5IGNoYW5nZWQKCSAgVGhlIHByZXZpb3VzIGNvZGUgY291bGQgY2FsbCBnc3RfY2Fwc19pc19maXhlZCgpIGZvciB0aGUgc2FtZSBjYXBzIG1hbnkgdGltZXMuCgoyMDA5LTA3LTIxIDEzOjMxOjEzICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBjYXBzOiBzcGxpdCBjYWxsYmFjayBmb3Igc3RydWN0dXJlIGludGVyc2VjdCBpbnRvIHR3byBmdW5jdGlvbnMKCSAgV2UgY2FsbCB0aGlzIHNlcGFyYXRlbHkuIHRoZXJlIGlzIG5vIG11Y2ggYmVuZWZpdCBpbiByZXVzaW5nIHRoZSBjYWxsYmFjay4KCSAgU3BsaXR0aW5nIGlzIGxldCB1cyByZW1vdmUgYSBicmFuY2ggYWxzby4KCjIwMDktMDctMjEgMTM6Mjc6MDkgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RjYXBzLmM6CgkgIGxvZ2dpbmc6IGxvZyBpZiB3ZSBjb3B5IGNhcHMgdG8gYmUgYWJsZSB0byB0cmFjayBpdAoKMjAwOS0wNy0yMSAxMTozMjowMSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGNhcHMuYzoKCSAgY2FwczogYWRkIGNvbW1lbnRzIGFib3V0IGdfcHRyX2FycmF5IHNpemUgYmVoYXZpb3VyCgkgIEp1c3QgZXhwbGFpbiB0aGUgYmVoYXZpb3VyIHRvIGF2b2lkIHRoYXQgc29tZW9uZSBlbHNlIGlzIHdhc3RpbmcgdGltZSB0cnlpbmcgdG8KCSAgaW1wcm92ZSB0aGlzIHRvby4KCjIwMDktMDctMjEgMTE6MTQ6MjAgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvYXVkaW8tZXhhbXBsZS5jOgoJICBleGFtcGxlOiB1bnJlZiB0aGUgY2xvY2sgaWQKCjIwMDktMDctMjEgMTA6NTY6NTMgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgcGFkOiB1c2UgY29ycmVjdCB2YXJpYWJsZSBpbiB0ZXN0CgoyMDA5LTA3LTI4IDE2OjEzOjM3ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgcmVnaXN0cnk6IGFkZCBmaWxlbmFtZSB0byBkZWJ1ZyBtZXNzYWdlLCBsaWtlIGVsc2V3aGVyZQoKMjAwOS0wNy0yMSAxMDozODoxNSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGJpbi5jOgoJICBiaW46IGZpeCBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCB2YXIgd2hlbiBkaXNhYmxpbmcgZGVidWcgbG9nZ2luZwoKMjAwOS0wOC0wNiAxMzoyOToyOSArMDIwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bWFyay5uYXV3ZWxhZXJ0c0Bjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgIHF1ZXVlOiBwb3N0IGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXVzaW5nIHRhc2sKCSAgSWYgZG93bnN0cmVhbSByZXR1cm5zIGVycm9yIGFuZCB1cHN0cmVhbSBoYXMgYWxyZWFkeSBkZWxpdmVyZWQKCSAgZXZlcnl0aGluZyAoaW5jbHVkaW5nIEVPUykgYW5kIHdpbGwgbm8gbG9uZ2VyIGJlIGFyb3VuZCB0byBmaW5kCgkgIG91dCB0aGF0IHdlIHBhdXNlZCAoYW5kIHdoeSksIHBvc3QgZXJyb3IgbWVzc2FnZS4gIEZpeGVzICM1ODk5OTEuCgoyMDA5LTA3LTI4IDEyOjAzOjM2ICswMjAwICBNYXJrIE5hdXdlbGFlcnRzIDxtYXJrLm5hdXdlbGFlcnRzQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcXVldWUtZXJyb3IuYzoKCSAgcXVldWU6IGFkZCB1bml0IHRlc3QKCSAgTWFrZSBhIGRvd25zdHJlYW0gZWxlbWVudCByZXR1cm4gYW4gZXJyb3IgYWZ0ZXIgdXBzdHJlYW0gaGFzIGFscmVhZHkKCSAgcHV0IGFsbCBkYXRhIGludG8gcXVldWUgKGluY2x1ZGluZyBFT1MpLiAgQXMgc3VjaCwgdXBzdHJlYW0KCSAgd2lsbCBub3QgYmUgYXJvdW5kIHRvIHBpY2sgdXAgdGhlIGVycm9yLCBzbyBpdCBpcyB1cCB0byBxdWV1ZSB0bwoJICBhY3QgYXBwcm9wcmlhdGVseS4gIFNlZSAjNTg5OTkxLgoJICBOb3RlIHRoZXJlIG1heSBiZSBkb3duc3RyZWFtIGZhdGFsIGVycm9ycyAoZS5nLiBuZWdvdGlhdGlvbikgdGhhdCBkbwoJICBub3Qgd2FycmFudCBhbiBlcnJvciBtZXNzYWdlIGFscmVhZHkgaGF2aW5nIGJlZW4gcG9zdGVkLgoKMjAwOS0wOC0wNSAxODowMjozMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBiYXNldHJhbnNmb3JtOiBjbGFyaWZ5IF9jYXBzX2lzX2VxdWFsKCkKCjIwMDktMDgtMDUgMTc6NTg6MjAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgYmFzZXRyYW5zZm9ybTogcmVmYWN0b3IgbWV0YWRhdGEgbW9kaWZpY2F0aW9ucwoJICBDaGVjayB3aGVuIHdlIG5lZWQgdG8gdG91Y2ggdGhlIG1ldGFkYXRhIG9mIHRoZSBvdXRwdXQgYnVmZmVyIGFmdGVyIHNlbGVjdGluZwoJICB0aGUgb3V0cHV0IGJ1ZmZlciBzbyB0aGF0IHdlIGhhdmUgZXZlcnl0aGluZyBpbiBvbmUgcGxhY2UuCgkgIEFsc28gdGFrZSBmbGFncyBhbmQgdGltZXN0YW1wIG1vZGlmaWNhdGlvbnMgaW50byBhY2NvdW50LgoKMjAwOS0wOC0wNSAxNzo1NToxNCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICBjYXBzZmlsdGVyOiBvbmx5IHNldCBjYXBzIHdoZW4gZGlmZmVyZW50CgkgIFdoZW4gd2UgaGF2ZSBhbiBpbnB1dCBidWZmZXIgd2l0aCBjYXBzIGFuZCB3aGVuIHRob3NlIGNhcHMgYXJlIGRpZmZlcmVudCBmcm9tCgkgIHRoZSBjYXBzIHdlIHdhbnQsIG9ubHkgdGhlbiBtYWtlIGEgd3JpdGFibGUgY29weSBvZiB0aGUgaW5wdXQgYnVmZmVyIGFzIHRoZQoJICBvdXRwdXQgYnVmZmVyIGFuZCBzZXQgdGhlIGNhcHMgb24gdGhhdCBvdXRwdXQgYnVmZmVyLiBUaGlzIGF2b2lkcyBzb21lIGNhc2VzCgkgIHdoZXJlIHdlIHRvb2sgYSBzdWJidWZmZXIgZm9yIHNldHRpbmcgY2FwcyB0aGF0IHdlcmUgdGhlIHNhbWUuCgoyMDA5LTA4LTA1IDE1OjI4OjU5ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIGJhc2V0cmFuc2Zvcm06IGVuYWJsZSBvcHRpbWlzYXRpb24KCSAgV2hlbiB3ZSBoYXZlIHRoZSBzYW1lIGlucHV0IGFzIG91dHB1dCBjYXBzLCByZXVzZSB0aGUgaW5wdXQgY2FwcyBvYmplY3QuIEFmdGVyCgkgIHRoZSBjYXBzIHJlZmNvdW50aW5nIGhhcyBiZWVuIHNvcnRlZCBvdXQgbm93LCB3ZSBjYW4gZmluYWxseSBlbmFibGUgdGhpcwoJICBvcHRpbWlzYXRpb24uCgoyMDA5LTA4LTA1IDEzOjQ4OjQwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOgoJICB0ZXN0czogZG9uJ3Qgc2V0IGNhcHMgb24gdW53cml0YWJsZSBidWZmZXJzCgkgIFRha2UgdGhlIHJlZiBhZnRlciBzZXR0aW5nIHRoZSBjYXBzIG9uIGEgYnVmZmVyIGJlY2F1c2UgZWxzZSB0aGUgYnVmZmVyIGlzCgkgIHRlY2hpbmljYWxseSBub3Qgd3JpdGFibGUuCgoyMDA5LTA4LTA1IDEzOjQ3OjMzICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBxdWV1ZTogZ2V0IGNhcHMgYWZ0ZXIgbWFraW5nIHdyaXRhYmxlCgkgIEdldCB0aGUgY2FwcyBvZiB0aGUgYnVmZmVyIGFmdGVyIHdlIG1hZGUgdGhlIGJ1ZmZlciB3cml0YWJsZS4gVGhpcyBkaWQgbm90CgkgIGNhdXNlIGFueSBwcm9ibGVtcyBidXQgaXQncyBuaWNlciB0aGlzIHdheS4KCjIwMDktMDgtMDUgMTM6NDY6NDIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgY2Fwc2ZpbHRlcjogZml4IHJlZmNvdW50aW5nIHByb2JsZW0KCSAgTWFrZSBzdXJlIHRoZSBtZXRhZGF0YSBpcyB3cml0YWJsZSBiZWZvcmUgc2V0dGluZyB0aGUgY2FwcyBvbiBhIGJ1ZmZlci4KCjIwMDktMDgtMDUgMTM6NDQ6NTEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgYmFzZXRyYW5zZm9ybTogZml4IHJlZmNvdW50aW5nIHByb2JsZW0KCSAgQWRkIHNvbWUgbW9yZSBkZWJ1ZyBpbmZvLgoJICBNYWtlIHN1cmUgdGhhdCB0aGUgb3V0cHV0IGJ1ZmZlciBoYXMgd3JpdGFibGUgbWV0YWRhdGEgYmVmb3JlIHdlIGF0dGVtcHQgdG8gc2V0CgkgIGNhcHMgb24gaXQuCgkgIGZpeGVzICM1ODM5OTkKCjIwMDktMDgtMDUgMTM6NDQ6MTMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBjYXBzOiBhZGQgc29tZSBtb3JlIGRlYnVnZ2luZyBpbiBfcmVwbGFjZQoKMjAwOS0wOC0wNSAxMzo0MzoxMCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgcGFkOiBBZGQgc29tZSBtb3JlIGRlYnVnZ2luZwoKMjAwOS0wOC0wNSAxMzo0MTozMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICBnaG9zdHBhZDogc21hbGwgaW1wcm92ZW1lbnRzCgkgIFVucmVmIHRoZSB0YXJnZXQgcGFkIGFmdGVyIHdlIHVzZWQgaXQgZm9yIGRlYnVnZ2luZy4KCSAgQWRkIHNvbWUgbW9yZSBkZWJ1Zy4KCSAgT25seSByZXBsYWNlIGNhcHMgd2hlbiB0aGV5IGNoYW5nZWQuCgoyMDA5LTA3LTI5IDEzOjQ2OjM1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogY2xlYW51cHMgaW4gcG9zaXRpb24gcXVlcmllcwoJICBVc2UgZXhpc3RpbmcgYm9vbGVhbiBmbGFnIHRvIHBhc3MgcG9zaXRpb24gcXVlcmllcyB1cHN0cmVhbS4gQWxzbyBhZGQgdXBzdHJlYW0KCSAgcXVlcmllcyBmb3IgdGhlIGxhc3QgcG9zaXRpb24gcXVlcmllcy4KCjIwMDktMDgtMDUgMTM6MjU6MzMgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJICBjb25maWd1cmUuYWM6IGZpeCBsaWJ4bWwyIGNoZWNrLCB3aGljaCBpcyBvbmx5IG5lZWRlZCBmb3IgeG1sIGxvYWQvc2F2ZSBub3cKCSAgU2luY2UgdGhlIHJlZ2lzdHJ5IGRvZXNuJ3QgdXNlIGxpYnhtbDIgYW55IGxvbmdlciwgaXQncyBubyBsb25nZXIgbmVjZXNzYXJ5CgkgIHRvIGRpc2FibGUgYm90aCB4bWwgbG9hZC9zYXZlICphbmQqIHRoZSByZWdpc3RyeSB0byBnZXQgcmlkIG9mIHRoZSBsaWJ4bWwyCgkgIGRlcGVuZGVuY3ksIGRpc2FibGluZyBqdXN0IHhtbCBsb2FkaW5nL3NhdmluZyBpcyBlbm91Z2guIEZpeGVzICM1OTA4NDEuCgoyMDA5LTA4LTAyIDE0OjMzOjU5ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgZ3N0LXVuaW5zdGFsbGVkOiByZW5hbWUgdW5pbnN0YWxsZWQgcmVnaXN0cnkgZmlsZSB0byByZWdpc3RyeS5kYXQKCSAgV2UncmUgbm90IHVzaW5nIHRoZSB4bWwgcmVnaXN0cnkgYW55IGxvbmdlciBhZnRlciBhbGwuCgoyMDA5LTA4LTAyIDE0OjI4OjM4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgZ3N0LXVuaW5zdGFsbGVkOiByZWZpbmUgc2VhcmNoIHBhdGhzIGZvciB1bmluc3RhbGxlZCBwbHVnaW4gbW9kdWxlcwoJICBVc2UgbW9yZSByZWZpbmVkIHNlYXJjaCBwYXRocyBmb3Igb3VyIHBsdWdpbiBtb2R1bGVzLiBOb3Qgb25seSBkb2VzCgkgIHRoaXMgbWFrZSB0aGluZ3MgbXVjaCBmYXN0ZXIgaW4gYW4gdW5pbnN0YWxsZWQgc2V0dXAsIGl0IGFsc28gbWFrZXMKCSAgc3VyZSB3ZSdyZSBub3QgYWNjaWRlbnRhbGx5IHVzaW5nIG91dC1vZi1kYXRlIHBsdWdpbnMgYnVpbHQgYWdlcwoJICBhZ28gYXMgcGFydCBvZiBhIChmYWlsZWQpICdtYWtlIGRpc3RjaGVjaycgd2hlbiB3ZSBmb3JnZXQgdG8gY2xlYW4KCSAgdXAgdGhlIGRpc3RjaGVjayBidWlsZCBkaXJlY3RvcnkuCgoyMDA5LTA3LTI5IDIzOjQyOjM5ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJICBkb2NzOiBkaXN0IEdTdHJlYW1lci0xLjAgYnVmZmVyIGRlc2lnbiBkcmFmdAoKMjAwOS0wOC0wNiAwNjo1MDo0MSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICB0YWdsaXN0OiBBZGQgbmV3IEFMQlVNX0FSVElTVCB0YWcgdG8gdGhlIGRvY3MKCjIwMDktMDgtMDQgMTQ6MTM6MzQgKzAyMDAgIEpvaG4gTWlsbGlraW4gPGptaWxsaWtpbkBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICB0YWdsaXN0OiBBZGQgc3VwcG9ydCBmb3IgQUxCVU1fQVJUSVNUIHRhZwoJICBUaGUgImFsYnVtIGFydGlzdCIgdGFnIGlzIHVzZWQgd2hlbiB0aGUgYXJ0aXN0IG9mIGFuIGVudGlyZQoJICBhbGJ1bSBkaWZmZXJzIGZyb20gdGhlIGFydGlzdCBvZiBhbiBpbmRpdmlkdWFsIHRyYWNrOyBmb3IgZXhhbXBsZSwKCSAgd2hlbiBhICJndWVzdCBhcnRpc3QiIGFwcGVhcnMgb24gYW4gYWxidW0sIG9yIG9uIGNvbXBpbGF0aW9ucy4KCSAgRml4ZXMgYnVnICM1OTA0MzAuCgoyMDA5LTA3LTI5IDEzOjMzOjExICswMjAwICBTdGlhbiBTZWxuZXMgPHN0aWFuLnNlbG5lc0BnbWFpbC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBRdWVyeSB1cHN0cmVhbSBmb3IgdGhlIHBvc2l0aW9uIGlmIGNvbnZlcnNpb24gaW4gUEFVU0VEIGZhaWxlZAoJICBGaXhlcyBidWcgIzU5MDA0NS4KCjIwMDktMDctMjggMjA6NDI6MjAgKzAyMDAgIEtpcHAgQ2Fubm9uIDxrY2Fubm9uQGxpZ28uY2FsdGVjaC5lZHU+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgYmFzZXRyYW5zZm9ybTogSW1wcm92ZSBkZWJ1ZyBvdXRwdXQgaW4gZ3N0X2Jhc2VfdHJhbnNmb3JtX2FjY2VwdGNhcHMoKQoJICBGaXhlcyBidWcgIzU4OTUyNC4KCjIwMDktMDctMjIgMDk6MDE6NTYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIGJhc2V0cmFuc2Zvcm06IERvbid0IHVuc2V0IEdBUCBmbGFnIGlmIHdvcmtpbmcgaW4gcGFzc3Rocm91Z2ggbW9kZQoJICBGaXhlcyBidWcgIzU4OTMxNC4KCjIwMDktMDgtMDYgMDE6NDM6NTcgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBkZXZlbG9wbWVudCAtPiAwLjEwLjI0LjEKCj09PSByZWxlYXNlIDAuMTAuMjQgPT09CgoyMDA5LTA4LTA1IDAwOjUxOjE2ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmhpZXJhcmNoeToKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiBnc3RyZWFtZXIuZG9hcDoKCSAgUmVsZWFzZSAwLjEwLjI0CgoyMDA5LTA4LTA0IDIzOjA1OjI3ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoKMjAwOS0wOC0wMyAxNTozMToyMiArMDIwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bWFyay5uYXV3ZWxhZXJ0c0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzoKCSAgYnl0ZXJlYWRlcjogYXZvaWQgd3JhcC1hcm91bmQgaW4gYnVmZmVyIHNpemUgY2hlY2tzLiAgRml4ZXMgIzU5MDYyMi4KCjIwMDktMDctMzAgMTQ6NDE6MzAgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgMC4xMC4yNC41IHByZS1yZWxlYXNlCgoyMDA5LTA3LTI4IDIxOjE1OjUyICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJICBjb2xsZWN0cGFkczogR2V0IHRoZSBmbHVzaGluZyBzdGF0ZSB3aXRoIHRoZSBvYmplY3QgbG9jayB0YWtlbi4KCSAgRml4ZXMgIzU5MDA1NgoKMjAwOS0wNy0yOCAyMToxNDoxMSArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSAgY29sbGVjdHBhZHM6IE1ha2Ugc3VyZSB0aGUgQ29sbGVjdERhdGEgbGlzdCBpcyB1cC10by1kYXRlIHdoZW4gcmVhZGluZy9zZXR0aW5nIGl0CgkgIFdpdGhvdXQgdGhpcywgd2Ugcmlza2VkOgoJICAqIENoZWNraW5nIHRoZSBmbHVzaGluZyBzdGF0ZSBvbiBhbiB1bmV4aXN0aW5nIGxpc3QKCSAgKiBOb3Qgc2V0dGluZyB0aGUgZmx1c2hpbmcgc3RhdGUgb24gcGFkcyB0aGF0IGhhZCBqdXN0IGJlZW4gYWRkZWQKCSAgUGFydGlhbGx5IGZpeGVzICM1OTAwNTYKCjIwMDktMDctMjggMjE6MTI6MjUgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgIGNvbGxlY3RwYWRzOiBTcGxpdCBvdXQgX2NoZWNrX3BhZHMgaW50byBhIHZlcnNpb24gd2l0aG91dCBsb2NrIHRha2luZy4KCSAgVGhpcyBpcyBzbyB3ZSBjYW4gdXNlIF9jaGVja19wYWRzIGluIHBsYWNlcyB3aGVyZSB3ZSd2ZSBhbHJlYWR5IHRha2VuCgkgIHRoZSBsb2NrIGluIHF1ZXN0aW9uLgoJICBQYXJ0aWFsbHkgZml4ZXMgIzU5MDA1NgoKMjAwOS0wNy0yOCAxNToyMzoxNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBsaWJzL2dzdC9jaGVjay9nc3Rjb25zaXN0ZW5jeWNoZWNrZXIuYzoKCSogbGlicy9nc3QvY2hlY2svZ3N0Y29uc2lzdGVuY3ljaGVja2VyLmg6CgkgIGNoZWNrOiBtYWtlIG5ldyBHc3RTdHJlYW1Db25zaXN0ZW5jeSBzdHJ1Y3R1cmUgcHJpdmF0ZQoJICBUaGVyZSdzIG5vIG5lZWQgdG8gaGF2ZSBHc3RTdHJlYW1Db25zaXN0ZW5jeSBpbiBhIHB1YmxpYyBoZWFkZXIgZm9yCgkgIHRoZSB0aW1lIGJlaW5nLCBzbyBtYWtlIGl0IHByaXZhdGUuIFdoaWxlIHdlJ3JlIGF0IGl0LCBhZGQgYSBndGstZG9jCgkgIGJsdXJiIGZvciBpdCB0aG91Z2guIFJlLWZpeGVzICM1ODg3NDQuCgoyMDA5LTA3LTI0IDEzOjUwOjE5ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2lkLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vamEucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcGwucG86CgkqIHBvL3B0X0JSLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIDAuMTAuMjMuNCBwcmUtcmVsZWFzZQoKMjAwOS0wNy0yNCAwOTo1MDoxOSArMDEwMCAgUm9iaW4gU3RvY2tlciA8cm9iaW5Abmlib3Iub3JnPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIGJhc2VzcmM6IGRvbid0IGhhbmRsZSBTRUVLSU5HIHF1ZXJpZXMgZm9yIGZvcm1hdHMgdGhhdCBkb24ndCBtYXRjaCB0aGUgb25lIHRoZSBzb3VyY2Ugb3BlcmF0ZXMgaW4KCSAgUmV0dXJuIEZBTFNFIGluIGJhc2VzcmMncyBkZWZhdWx0IHF1ZXJ5IGhhbmRsZXIgd2hlbiB3ZSBnZXQgYSBTRUVLSU5HIHF1ZXJ5IGZvcgoJICBhIGZvcm1hdCB0aGF0J3Mgbm90IHRoZSBvbmUgdGhlIHNvdXJjZSBvcGVyYXRlcyBpbi4gUHJldmlvdXNseSAoaWUuIGJlZm9yZSwgaW4KCSAgdGhlIGdpdCB2ZXJzaW9uKSB3ZSB3b3VsZCByZXR1cm4gVFJVRSBpbiB0aGF0IGNhc2UgYW5kIHNlZWthYmxlPUZBTFNFLCB3aGljaAoJICBpcyBtb3JlIGNvcnJlY3QsIGJ1dCBjYXVzZXMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMuIChCZWZvcmUgdGhhdAoJICB3ZSB3b3VsZCBjaGFuZ2UgdGhlIGZvcm1hdCBvZiB0aGUgcXVlcnkgd2hlbiBhbnN3ZXJpbmcsIHdoaWNoIHdhcyBjb21wbGV0ZWx5CgkgIGJyb2tlbiBzaW5jZSBjYWxsZXJzIGRvbid0IGV4cGVjdCB0aGF0IG9yIGNoZWNrIGZvciBpdCkuIFNpbmNlIHRoZSBTRUVLSU5HCgkgIHF1ZXJ5IGlzIGEgZmFpcmx5IHJlY2VudCBhZGRpdGlvbiwgbm90IGFsbCBkZW11eGVycywgcGFyc2VycyBhbmQgZGVjb2RlcnMKCSAgaW1wbGVtZW50IGl0IHlldCwgaW4gd2hpY2ggY2FzZSBhbnkgU0VFS0lORyBxdWVyeSBieSBhbiBhcHBsaWNhdGlvbiB3aWxsCgkgIGp1c3QgYmUgcGFzc2VkIHVwc3RyZWFtIHdoZXJlIGl0IHdpbGwgdGhlbiBiZSBoYW5kbGVkIGJ5IGJhc2VzcmMuIE5vdywgaWYKCSAgZS5nLiB0b3RlbSBkb2VzIGEgU0VFS0lORyBxdWVyeSBmb3IgVElNRSBmb3JtYXQgYW5kIHdlIGhhdmUgYSBkZW11eGVyIHRoYXQKCSAgZG9lc24ndCBpbXBsZW1lbnQgdGhlIHF1ZXJ5LCBiYXNlc3JjIHdvdWxkIGFuc3dlciBpdCB3aXRoIHNlZWthYmxlPUZBTFNFIGluCgkgIG1vc3QgY2FzZXMsIGFuZCB0b3RlbSBjYW4gb25seSB0YWtlIHRoYXQgYXMgYXV0aG9yaXRhdGl2ZSBhbnN3ZXIsIG5vdCBrbm93aW5nCgkgIHRoYXQgdGhlIGRlbXV4ZXIgZG9lc24ndCBpbXBsZW1lbnQgdGhlIFNFRUtJTkcgcXVlcnkuIFRvIGF2b2lkIHRoaXMsIHdlIG1ha2UKCSAgYmFzZXNyYyByZXR1cm4gRkFMU0UgdG8gU0VFS0lORyBxdWVyaWVzIGluIHVuaGFuZGxlZCBmb3JtYXRzLiBUaGF0IHdheQoJICBhcHBsaWNhdGlvbnMgbGlrZSB0b3RlbSBjYW4gZmFsbCBiYWNrIG9uIGFzc3VtaW5nIHNlZWthYmlsaXR5IGRlcGVuZGluZyBvbgoJICB3aGV0aGVyIGEgZHVyYXRpb24gaXMgYXZhaWxhYmxlLCBvciBzb21lc3VjaC4gRG93bnN0cmVhbSBlbGVtZW50cyBkb2luZwoJICBzdWNoIHF1ZXJpZXMgYXJlIGxpa2VseSB0byBlcXVhdGUgYW4gdW5oYW5kbGVkIHF1ZXJ5IHdpdGggYSBub24tc2Vla2FibGUKCSAgcmVzcG9uc2UgYXMgd2VsbCwgc28gdGhpcyBzaG91bGQgYmUgYW4gYWNjZXB0YWJsZSBmaXggZm9yIHRoZSB0aW1lIGJlaW5nLgoJICBTZWUgIzU4NDgzOCwgIzU4ODk0NCwgIzU4OTQyMyBhbmQgIzU4OTQyNC4KCjIwMDktMDctMjQgMDA6NDE6NTUgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gZmVkYWFlZSB0byA5NGY5NWUzCgoyMDA5LTA3LTIwIDE2OjExOjAyICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgZ3N0cmVnaXN0cnliaW5hcnk6IGFkZCArMSBhZnRlciBlcnJvciBjaGVja2luZwoJICBUaGUgY3VycmVudCBjb2RlIG1hZGUgdGhlIGVycm9yIGNoZWNraW5nIHBvaW50bGVzcyBieSBjaGFuZ2luZyAtMSB0byAwIGluIGVycm9yCgkgIGNhc2VzLiBBbHNvIGRvbid0IGxlYWsgYSBwYWQgdGVtcGxhdGUgb24gZXJyb3IuCgoyMDA5LTA3LTIwIDE1OjUxOjIwICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkqIHdpbjMyL2NvbW1vbi9nc3RlbnVtdHlwZXMuYzoKCSogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5oOgoJKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICAwLjEwLjIzLjMgcHJlLXJlbGVhc2UKCjIwMDktMDctMjAgMTg6MDM6MjEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFzay5jOgoJICB0ZXN0czogbWFrZSBzdXJlIHRoZSB0YXNrcyBhcmUgam9pbmVkCgkgIENhbGwgX2NsZWFuX2FsbCgpIG9uIHRoZSB0YXNrIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGpvaW5lZCBhbmQgc3RvcHBlZC4KCSAgU2VlICM1ODkxMjcKCjIwMDktMDctMjAgMTU6NDQ6MzYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJICB0YXNrOiBmaXggdGFza3Bvb2wgbGVhawoJICBHc3RUYWtzIGRvZXMgbm90IGFsd2F5cyB1bnJlZiB0aGUgdGFza3Bvb2wgaXQgd2FzIGNyZWF0ZWQgZnJvbSBiZWNhdXNlIGl0CgkgIGRlcGVuZHMgb24gd2hlbiB0aGUgcG9vbCBwcm92aWRlZCBhbiBJRCBmb3Igam9pbmluZyB0aGUgdGFzay4KCSAgUmV3b3JrIHNvbWUgY29kZSBzbyB0aGF0IHdlIGFsd2F5cyB1bnJlZiB0aGUgcG9vbCBhbmQgb3B0aW9uYWxseSBqb2luIHdoZW4gdGhlCgkgIHBvb2wgcHJvdmlkZWQgYW4gaWQuCgkgIEZpeGVzICM1ODkxMjcKCjIwMDktMDctMjAgMTM6MjY6NTEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgYmFzZXNyYzogbWFrZSB0YWcgcXVldWluZyB0aHJlYWRzYWZlCgkgIFNlZSAjNTg4NzQ1CgoyMDA5LTA3LTEzIDA5OjIyOjA2ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNvbnNpc3RlbmN5Y2hlY2tlci5jOgoJKiBsaWJzL2dzdC9jaGVjay9nc3Rjb25zaXN0ZW5jeWNoZWNrZXIuaDoKCSAgZ3N0Y2hlY2s6IEFkZCBhIHN0cmVhbSBjb25zaXN0ZW5jeSBjaGVja2luZyBoZWxwZXIgcm91dGluZS4gRml4ZXMgIzU4ODc0NAoKMjAwOS0wNy0yMCAxMTowNDowNSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIGJpbmFyeXJlZ2lzdHJ5OiBkb24ndCB1bnJlZiBOVUxMIGlmIHdlIGhhdmUgYW4gZWFybHkgcmVhZCBlcnJvcgoKMjAwOS0wNy0xMiAxMDowNDowMSArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICBiYXNlc3JjOiBTZXJpYWxpemUgdGFncyBpbnRvIHRoZSBkYXRhZmxvdy4gRml4ZXMgIzU4ODc0NQoKMjAwOS0wNy0xNiAxNDoxNzowMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmM6CgkgIGRvY3M6IGZpeCBBUEkgZG9jcyBmb3IgZ3N0X3thZGFwdGVyfGJ5dGVfcmVhZGVyfV9tYXNrZWRfc2Nhbl91aW50MzIKCSAgQ2xhcmlmeSBieXRlIHJlYWRlciBkb2NzIGEgYml0OiBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKCSAgcG9zaXRpb24gb2YgdGhlIHJlYWRlciwgbm90IHRvIHRoZSBzdGFydCBvZiB0aGUgZGF0YS4gQWxzbywgdGhlCgkgIGV4YW1wbGVzIGluIGJvdGggdGhlIGFkYXB0ZXIgZG9jcyBhbmQgdGhlIGJ5dGUgcmVhZGVyIGRvY3MgaGF2ZQoJICB0aGUgbWFzayBhbmQgcGF0dGVybiBhcmd1bWVudHMgc3dhcHBlZCAoc2VlICM1ODc1NjEpLiBTcG90dGVkCgkgIGJ5IENhcmwtQW50b24gSW5nbWFyc3Nvbi4KCjIwMDktMDctMTYgMTM6NTk6MDcgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkgIHRhZ3M6IG9ubHkgZW1pdCBhIGdfd2FybmluZygpIGZvciBlbXB0eSB0YWcgc3RyaW5ncyBmb3IgZ2l0IHZlcnNpb25zCgkgIEZvciBub3csIGRvbid0IHNob3cgYSBnX3dhcm5pbmcoKSBmb3IgZW1wdHkgdGFnIHN0cmluZ3MgYW5kIE5VTEwKCSAgdGFncyB3aXRoIG5vbi1naXQgdmVyc2lvbnM7IHdlIHNob3VsZCB3YWl0IGZvciB0aGUgZml4ZXMgaW4gb3VyCgkgIHBsdWdpbiBtb2R1bGVzIHRvIG1ha2UgaXQgaW50byBhIHJlbGVhc2UgYmVmb3JlIHdlIGVuYWJsZSB0aGlzCgkgIHVuY29uZGl0aW9uYWxseS4KCjIwMDktMDctMTQgMTg6NTk6MTMgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgMC4xMC4yMy4yIHByZS1yZWxlYXNlCgoyMDA5LTA3LTE0IDEyOjE1OjA1ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgdmFsdWU6IGFkZCBleHBsYW5hdGlvbiBmb3Igc2hvcnRjdXQKCjIwMDktMDctMTAgMjA6MDQ6NDggKzAxMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBiYXNldHJhbnNmb3JtOiB0YWtlIHNpemUgb25jZQoKMjAwOS0wNy0xMCAxOToxNzowNCArMDEwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIHZhbHVlOiBmaXggY2FuX2ludGVyc2VjdCB0byBiZWhhdmUgbGlrZSBpbnRlcnNlY3QKCSAgQWRkIGEgcXVpY2sgcmV0dXJuIGlmIHR3byB0eXBlcyBhcmUgdGhlIHNhbWUuIENoYW5nZSB0aGUgY2hlY2sgZm9yIHRoZQoJICBpbnRlcnNlY3Rpb24gZnVuY3Rpb24gdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGluIGludGVyc2VjdCgpLiBUaGUKCSAgbGF0ZXIgdHJpZXMgYm90aCBkaXJlY3Rpb25zLgoKMjAwOS0wNy0xNCAwMDowNDoyMiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0aW5mby5jOgoJICBnc3RpbmZvOiBtYWludGFpbiBBQkkgY29tcGF0aWJpbGl0eSBldmVuIGlmIGRlYnVnZ2luZyBpcyBkaXNhYmxlZAoKMjAwOS0wNy0wMiAxMjo0MDowNSArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSAgc3RydWN0dXJlOiBDaGFuZ2UgTlVMTCBhbmQgZW1wdHkgc3RyaW5nIGhhbmRsaW5nCgkgIERvbid0IGZvcmJpZCB0aGUgZW1wdHkgc3RyaW5nICIiIGluIGdlbmVyaWMgc3RydWN0dXJlcywgb25seSBpbiB0YWdsaXN0cy4KCSAgUHJvcGVybHkgYWxsb3cgdGhlIE5VTEwgc3RyaW5nIGJ5IGFkZGluZyBzcGVjaWFsIGNhc2VzIGZvciBzZXJpYWxpc2luZwoJICBhbmQgZGVzZXJpYWxpc2luZyBpdC4gcHJvcDE9KHN0cmluZylOVUxMIGlzIHRoZSBOVUxMIHN0cmluZywKCSAgcHJvcDE9KHN0cmluZykiTlVMTCIgaXMgdGhlIGFjdHVhbCBzdHJpbmcgd2l0aCB0aGUgdmFsdWUgIk5VTEwiCgoyMDA5LTA3LTEzIDEyOjIzOjAyIC0wNDAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIDU4NDViNjMgdG8gZmVkYWFlZQoKMjAwOS0wNy0xMyAxMjowMDo0NyArMDIwMCAgQW5kb25pIE1vcmFsZXMgPHlsYXR1eWEgYXQgZ21haWwuY29tPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJICBmaWxlc2luazogRml4IHNlZ2ZhdWx0IHdpdGggTVNWQwoJICBEb24ndCB1c2UgZGVwcmVjYXRlZCBmaWxlbm8gb24gTVNWQyBidXQgcmVwbGFjZSB3aXRoIF9maWxlbm8KCSAgRml4ZXMgIzU4NzA1MgoKMjAwOS0wNy0xMyAwOTozMjo1NyArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJICBkb2NzL2Rlc2lnbjogVXBkYXRlIE1ha2VmaWxlLmFtIGZvciBjaGFuZ2VkIGZyYW1lc3RlcCBkb2N1bWVudCBuYW1lLgoKMjAwOS0wNy0xMCAxOToyNzoyMSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICB0b29sczogdGhlIHBsdWdpbiBmZWF0dXJlcyBsaXN0ZWQgYnkgZ3N0LWluc3BlY3QgYXJlIHR5cGVmaW5kZXJzLCBub3QgdHlwZXMKCjIwMDktMDctMTAgMTg6NDY6MzkgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1idWZmZXIyLnR4dDoKCSAgZG9jczogYWRkIGRyYWZ0IGZvciBhcmJpdHJhcnkgYnVmZmVyIG1ldGFkYXRhIGlkZWEKCjIwMDktMDctMTAgMTg6MzU6MjEgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1mcmFtZXN0ZXAudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LWZyYW1lc3RlcC50eHQ6CgkgIGRvY3M6IG1vcmUgZnJhbWVzdGVwIGRvY3Mgb3V0IG9mIGRyYWZ0CgoyMDA5LTA3LTEwIDE4OjMzOjU4ICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9kZXNpZ24vZHJhZnQtZnJhbWVzdGVwLnR4dDoKCSAgZG9jczogdXBkYXRlIGZyYW1lc3RlcCBkb2N1bWVudAoJICBSZW1vdmUgZXhwZXJpbWVudGFsIHN0YXR1cyBmcm9tIHRoZSBmcmFtZXN0ZXAgZHJhZnQuCgoyMDA5LTA3LTA4IDE1OjE1OjA0ICswMjAwICBQaGlsaXAgSsOkZ2Vuc3RlZHQgPHBoaWxpcGpAb3BlcmEuY29tPgoKCSogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICB0b29sczogRml4IGNvbXBpbGF0aW9uIGlmIG9wdGlvbiBwYXJzaW5nIGlzIGRpc2FibGVkCgkgIEZpeGVzIGJ1ZyAjNTg3OTc2LgoKMjAwOS0wNy0wOCAxNToxMDoyNiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgcmVnaXN0cnk6IFVzZSBnX2J1aWxkX2ZpbGVuYW1lKCkgaW5zdGVhZCBvZiBnX3N0cmpvaW4oKSB3aXRoIC8KCSAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgdGhlIGdlbmVyYXRlZCBmaWxlbmFtZXMgdXNlIHRoZSBwbGF0Zm9ybQoJICBzcGVjaWZpYyBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluc3RlYWQgb2YgLy4KCSAgRml4ZXMgYnVnICM1ODc5NzMuCgoyMDA5LTA3LTA3IDIwOjEzOjQ4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RpbmZvLmg6CgkgIGRvY3M6IGFkZCAnU2luY2UnIHRhZyBmb3IgbmV3IEdTVF9ERUJVR19DQVRFR09SWV9HRVQgbWFjcm8KCjIwMDktMDctMDcgMDA6MjM6NDEgKzAxMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSAgY29sbGVjdHBhZHM6IG1ha2UgaXQgdGhlIGJlc3Qgb2Ygd2ltcyBhbmQgZWR3YXJkcyBwYXRjaC4KCSAgQ2hlY2sgdGhlIHJpZ2h0IGZsdXNoaW5nIGZsYWcsIGJ1dCBzdGlsbCBhZGQgaXQgdG8gdGhlIHBhZC1saXN0LgoKMjAwOS0wNi0zMCAxMToyNjozNCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGluZm8uYzoKCSogZ3N0L2dzdGluZm8uaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGluZm86IGFsbG93IGdldHRpbmcgb3RoZXIgbG9nIGNhdGVnb3JpZXMuIEZpeGVzICM1ODc0MTcKCSAgQWRkIGEgbmV3IG1hY3JvIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgdG8gZ2V0IGEgbG9nIGNhdGVnb3J5IGJ5IG5hbWUuIFRoaXMKCSAgYWxsb3dzIHBsdWdpbnMgdG8gdXNlIGUuZy4gY29yZSBjYXRlZ29yaWVzIGxpa2UgUEVSRk9STUFOQ0Ugb3IgQ0xPQ0suCgkgIEFQSTogR1NUX0RFQlVHX0NBVEVHT1JZX0dFVAoKMjAwOS0wNy0wNiAxOTo1MTo1NyArMDEwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIGJhc2V0cmFuc2Zvcm06IG1ha2UgY29tbWVudCBhIEZJWE1FIGNvbW1lbnQKCjIwMDktMDctMDYgMTk6NTA6NTIgKzAxMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkgIGxvZ2dpbmc6IGxvZyBvYmplY3QgdHlwZSBpbiBtZXNzYWdlCgoyMDA5LTA3LTA2IDE5OjQ4OjU4ICswMTAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGxvZ2dpbmc6IHVzZSBwZXJmIGNhdGVnb3J5IGZvciBkcm9wcGVkIGJ1ZmZlcnMKCjIwMDktMDYtMjkgMTE6MjY6NTcgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgIGNvbGxlY3RwYWRzOiBEb24ndCBmb3J3YXJkIEZMVVNIX1NUT1AgaWYgc29tZSBpbnB1dCBzdHJlYW1zIGFyZSBzdGlsbCBmbHVzaGluZy4KCSAgVGhpcyBndWFyYW50ZWVzIHRoYXQgb25seSBvbmUgRkxVU0hfU1RPUCBldmVudCAodGhlIGxhc3Qgb25lKSB3aWxsIGJlIHNlbnQKCSAgZG93bnN0cmVhbSB3aGVuIGEgZmx1c2hpbmcgc2VlayBpcyBiZWluZyBkb25lIHRocm91Z2ggY29sbGVjdHBhZHMuCgoyMDA5LTA2LTI0IDExOjExOjM1ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJICBjb2xsZWN0cGFkczogVXBkYXRlIHRoZSBjb29raWUgd2hlbiBzZXR0aW5nIG91cnNlbHZlcyBhcyBmbHVzaGluZy4KCSAgVGhpcyBmb3JjZXMgdGhlIHBhZCBzdGF0dXMgdG8gYmUgcmUtZXZhbHVhdGVkIG9uIHRoZSBuZXh0IF9jaGVja19wYWRzKCkuCgoyMDA5LTA2LTA5IDE0OjU0OjI3ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXJsaXN0LmM6CgkqIGdzdC9nc3RidXMuaDoKCSogZ3N0L2dzdGNoaWxkcHJveHkuaDoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkqIGdzdC9nc3RnaG9zdHBhZC5oOgoJKiBnc3QvZ3N0bWVzc2FnZS5oOgoJKiBnc3QvZ3N0cXVlcnkuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RkYXRhcXVldWUuaDoKCSAgZG9jczogZml4IGd0ay1kb2MgLyo8IHByaXZhdGUgPiovIG1hcmtlcgoKMjAwOS0wNi0wOSAxNDo0ODo1NiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICB0eXBlZmluZGVsZW1lbnQ6IGxvZyBwcm9iYWJpbGl0eSBpbiBkZWJ1ZyBtZXNzYWdlCgoyMDA5LTA2LTMwIDE4OjIyOjI1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgbWVzc2FnZTogZml4IHBhcnNpbmcgb2YgdGhlIHN0ZXAgZG9uZSBtZXNzYWdlCgkgIFBhcnNlIHRoZSBkdXJhdGlvbiBmaWVsZCB0b28uCgoyMDA5LTA2LTI5IDExOjI0OjI1ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIGJpbmFyeXJlZ2lzdHJ5OiBVc2UgbG9jYWwgdmFsdWVzIGluIHdoaWxlL2ZvciBsb29wcywgdXNlIGJyYW5jaCBwcmVkaWN0aW9uIG1hY3JvcwoKMjAwOS0wNi0yOSAxMToyMzozMSArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGdzdC9nc3RjYXBzLmM6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIFNwcmVhZCBicmFuY2ggcHJlZGljdGlvbiBtYWNyb3MuCgkgIFRoZXNlIGFyZSBiYXNlZCBvbiBwcm9maWxpbmcgc2V2ZXJhbCBwbGF5YmFjayBzY2VuYXJpb3MgdXNpbmcgcGxheWJpbjIuCgoyMDA5LTA2LTI5IDExOjIwOjEyICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIFVzZSBsb2NhbCB2YXJpYWJsZXMgaW4gZm9yL3doaWxlIGxvb3BzLgoJICBUaGlzIG1ha2VzIHRoZSBnZW5lcmF0ZWQgY29kZSBmYXN0ZXIgc2luY2U6CgkgICogSXQgd29uJ3QgaGF2ZSB0byByZWFkIGFuIHVuZGlyZWN0IHZhbHVlICh3aGljaCB3aWxsIG1vc3QgbGlrZWx5IGJlCgkgIG91dHNpZGUgb2YgdGhlIEwxL0wyIGNhY2hlKQoJICAqIFdlIGtub3cgdGhhdCB2YWx1ZSBuZXZlciBjaGFuZ2VzICh0aGUgY29tcGlsZXIgaGFzIG5vIGNsdWUgdGhhdCBpdCBkb2Vzbid0KS4KCjIwMDktMDYtMDkgMTk6MDg6MjYgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6CgkgIGxpYnMvY29udHJvbGxlcjogU2V0IGRlZmF1bHQgZ3N0IGRlYnVnZ2luZyBjYXRlZ29yeS4KCjIwMDktMDYtMjkgMTE6NTc6MTMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9iZW5jaG1hcmtzL21hc3MtZWxlbWVudHMuc2NtOgoJICB0ZXN0czogZml4IGV4YW1wbGUKCjIwMDktMDYtMjkgMTE6NTY6MTAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYnVmZmVybGlzdDogdXNlIGZhc3RlciBnc3RfYnVmZmVyX2xpc3RfZ2V0KCkKCSAgVXNlIHRoZSBmYXN0ZXIgZ3N0X2J1ZmZlcl9saXN0X2dldCgpIHRvIGdldCB0aGUgZmlyc3QgYnVmZmVyIG9mIGEgbGlzdC4KCjIwMDktMDYtMjkgMTE6NTU6MTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YnVmZmVybGlzdC5jOgoJICBidWZmZXJsaXN0OiBmaXggZXhhbXBsZQoJICBUaGUgX2RvIGZ1bmN0aW9uIG5vdyB0YWtlcyB1c2VyX2RhdGEgaW4gYWxsIGNhc2VzLgoKMjAwOS0wNi0yOSAxMTo0NjowMCArMDIwMCAgT2dueWFuIFRvbmNoZXYgPG9nbnlhbkBheGlzLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbms6IHRha2UgdGltZXN0YW1wIGxhdGVyCgkgIE1ha2Ugc3VyZSB3ZSBkb24ndCBhY2NpZGVudGFsbHkgY2FzdCBhIGJ1ZmZlcmxpc3Qgb2YgYSBidWZmZXIgYW5kIHRyeSB0byB0YWtlCgkgIHRoZSB0aW1lc3RhbXAgb2YgaXQuCgkgIFJlZml4ZXMgIzU4NTk2MAoKMjAwOS0wNi0yOSAxMTowNzowMCArMDIwMCAgSm9uYXMgSG9sbWJlcmcgPGpvbmFzLmhvbG1iZXJnIGF0IGF4aXMuY29tPgoKCSogZ3N0L2dzdGJ1ZmZlcmxpc3QuYzoKCSAgZG9jczogZml4IHNvbWUgdHlwb3MKCjIwMDktMDYtMjkgMTE6MjQ6MDQgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0aW5mby5jOgoJKiBnc3QvZ3N0bWluaW9iamVjdC5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGxvZ2dpbmc6IGFkZCBhIHBlcmZvcm1hY2UgbG9nIGNhdGVnb3J5CgkgIFRoaXMgY2F0ZWdvcnkgY2FuIGJlIHVzZWQgdG8gbG9nIHNsb3cgY29kZSBwYXRoIGFuZCBoZWxwIGF1ZGl0aW5nIHRoZQoJICBwZXJmb3JtYW5jZS4gQWRkIEZJWE1FLTAuMTEgdG8gc29tZSBxdWVzdGlvbmFibGUgY2F0ZWdvcmllcy4KCjIwMDktMDYtMjcgMTY6MzQ6MzYgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgc3RydWN0dXJlOiBmaXggaW50LT5naW50IHRvIGJlIGluIHN5bmMgd2l0aCB0aGUgKi5oICBhbmQgdXNhZ2UKCjIwMDktMDYtMjYgMTM6MzM6NTAgKzAxMDAgIEphbiBTY2htaWR0IDxqYW4uc2NobWlkdEBzdW4uY29tPgoKCSogYXV0b2dlbi5zaDoKCSAgYXV0b2dlbi5zaDogVXNlIHByaW50ZiBpbnN0ZWFkIG9mICdlY2hvIC1uJy4gQ2hlY2sgZm9yIGF1dG9tYWtlLTEuMVswMV0KCSAgQ2hlY2sgZm9yIG1vcmUgYXV0b21ha2UgY29tbWFuZCB2YXJpYW50cy4gVXNlIHByaW50ZiBpbnN0ZWFkIG9mICdlY2hvIC1uJwoJICBmb3IgcG9ydGFiaWxpdHkKCjIwMDktMDYtMjYgMTM6NDE6MTEgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gZjgxMDAzMCB0byA1ODQ1YjYzCgoyMDA5LTA2LTI2IDEyOjUwOjUzICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICByZXF1ZXN0LXBhZDogdGVsbCBhYm91dCByZWYgY291bnRzIGluIHJlbGVhc2VfcmVxdWVzdF9wYWQgZG9jcy4KCSAgSXQgaXMgbm90IHRvbyBvYnZpb3VzIHRoYXQgZ2V0dGluZyBhbmQgcmVsZWFzaW5nIHJlcXVlc3QgcGFkcyBpcyBub3QgZW50aWVybHkKCSAgc3ltZXRyaWNhbCByZWdhcmRpbmcgdG8gdGhlIHBhZCByZWZjb3VudC4gQWRkIGEgbm90ZSBhYm91dCB0aGF0IHRvIHRoZSBkb2NzLgoJICBUaGlzIG1pZ2h0IGRlc2VydmUgYSBGSVhNRS0wLjExIHRvby4KCjIwMDktMDYtMjUgMTE6MjU6NDYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogZG9uJ3QgZG8gdGhpbmdzIHdpdGggc2lkZSBlZmZlY3RzIHdpdGhpbiBhIGdfYXNzZXJ0KCkKCSAgTWFrZSB0aGUgYnVmZmVybGlzdCBzdHVmZiB3b3JrIHByb3Blcmx5IHdoZW4gdGhpbmdzIGFyZSBjb21waWxlZAoJICB3aXRoIC1ER19ESVNBQkxFX0FTU0VSVC4KCjIwMDktMDYtMjQgMTg6MzE6MDggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBjYXBzOiBhdm9pZCBkb2luZyBsb2dpYyBpbiBnX2Fzc2VydAoJICBNYWtlIHN1cmUgd2Ugc3RpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIHdoZW4gZ2xpYiBpcyBjb21waWxlZCB3aXRob3V0CgkgIGFzc2VydGlvbnMuCgoyMDA5LTA2LTIyIDA1OjAwOjU0ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzoKCSAgbXVsdGlxdWV1ZTogRmlyZSB0aGUgb3ZlcnJ1biBzaWduYWwgb24gRU9TCgkgIEZpeGVzIHN0YXJ0dXAgb2Ygc29tZSBzaG9ydCBNUEVHIGZpbGVzIHdpdGggZGVjb2RlYmluMi9wbGF5YmluMgoJICB3aGVyZSBhbGwgdGhlIGRhdGEgZml0cyBpbiB0aGUgbXVsdGlxdWV1ZSBhbmQgRU9TIGFycml2ZXMgYmVmb3JlCgkgIHRoZSBncm91cCBpcyBleHBvc2VkLgoKMjAwOS0wNi0yNCAxNToxMzozNyArMDEwMCAgSmFuIFNjaG1pZHQgPGphbi5zY2htaWR0QHN1bi5jb20+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIGYzYmI1MWIgdG8gZjgxMDAzMAoKMjAwOS0wMy0yOCAxMzo1OTowOCArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgR3N0U3RydWN0dXJlOiBVc2UgZGlyZWN0IHZhbHVlcyBmb3IgcmVwZXRpdGl2ZSBjb25kaXRpb25hbHMgKGZvci93aGlsZSkuCgoyMDA5LTA2LTI0IDEwOjQ1OjUyICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSogZ3N0L2dzdHF1ZXJ5LmM6CgkgIG1pbmlvYmplY3RzOiBEb24ndCBjaGFpbiB1cCB0byBlbXB0eSBmaW5hbGl6ZSBtZXRob2QuCgkgIElmIGV2ZXIgd2UgZG8gYW55dGhpbmcgaW4gbWluaV9vYmplY3RfZmluYWxpemUsIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIDQKCSAgY29yZSBtaW5pb2JqZWN0IGZpbmFsaXplIG1ldGhvZHMgY2hhaW4gYmFjayB1cCBhZ2Fpbi4KCjIwMDktMDMtMjcgMjA6MTc6MTUgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBnc3RjYXBzOiBVc2UgZGlyZWN0IHZhbHVlcyBmb3IgcmVwZXRpdGl2ZSBjb25kaXRpb25hbHMgKGZvci93aGlsZSkuCgoyMDA5LTA2LTI0IDA5OjI4OjAxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIE1ha2VmaWxlLmFtOgoJKiBnc3QvZ3N0LmM6CgkgIG1ha2UgY2hlY2s6IGFkZCBjaGVjayBmb3IgZW51bSB0eXBlIGNsYXNzIHVucmVmcyBpbiBnc3RfZGVpbml0KCkgdG9vCgkgIEp1c3QgYmVjYXVzZSB3ZSBjYW4gcmVhbGx5LgoKMjAwOS0wNi0yMyAxMzo0NDo1MCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0cmFjZS5jOgoJKiBnc3QvZ3N0dHJhY2UuaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHRyYWNlOiB1c2UgcHJvcGVyIGxvY2tpbmcgaW4gR3N0VHJhY2UKCSAgUHJvdGVjdCB0aGUgYWxsb2NhdGVkIGxpc3Qgb2Ygb2JqZWN0cyB3aXRoIGEgbG9jayBzbyB0aGF0IHRyYWNlIGFjdHVhbGx5IHdvcmtzCgkgIHJlbGlhYmx5LgoJICBTaG9ydGN1dCB0aGUgYWxsb2MgdHJhY2Ugc29vbmVyIHdoZW4gZGlzYWJsZWQuCgoyMDA5LTA2LTIzIDEzOjM0OjM1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdG9iamVjdC5jOgoJICBvYmplY3Q6IGFsc28gYWRkIHBvaW50ZXJzIHRvIGRlYnVnCgkgIEFkZCB0aGUgb2JqZWN0IHBvaW50ZXJzIGluIHRoZSBkZWJ1ZyBpbmZvIGZvciBfcmVwbGFjZS4KCjIwMDktMDYtMjMgMTI6NTY6NTkgKzAyMDAgIENoYWQgSGFubmEgPGNoYW5uYUBsaWdvLmNhbHRlY2guZWR1PgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6CgkgIGNhcHNmaWx0ZXI6IEFkZCBHQVAgZmxhZyBzdXBwb3J0CgkgIGNhcHNmaWx0ZXIgZG9lc24ndCBhY3R1YWxseSB0b3VjaCB0aGUgZGF0YSBzbyB3ZSBkb24ndCB3YW50IHRoZSBHQVAgZmxhZyB0bwoJICBiZSB1bnNldCBieSBiYXNldHJhbnNmb3JtLgoJICBGaXhlcyBidWcgIzU4NjU2Ni4KCjIwMDktMDYtMjMgMTA6MDU6MDMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgIGRlZnM6IGFkZCBuZXcgYnl0ZSByZWFkZXIgbWV0aG9kcwoKMjAwOS0wNS0yMiAxNDo0NzozMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg6CgkqIHRlc3RzL2NoZWNrL2xpYnMvYnl0ZXJlYWRlci5jOgoJICBieXRlcmVhZGVyOiBhZGQgYSBidW5jaCBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igc3RyaW5ncyBhbmQgYSBkYXRhIGR1cCBmdW5jdGlvbgoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9kdXBfZGF0YQoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9kdXBfc3RyaW5nCgkgIEFQSTogZ3N0X2J5dGVfcmVhZGVyX2R1cF9zdHJpbmdfdXRmOAoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9kdXBfc3RyaW5nX3V0ZjE2CgkgIEFQSTogZ3N0X2J5dGVfcmVhZGVyX2R1cF9zdHJpbmdfdXRmMzIKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfc2tpcF9zdHJpbmcKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfc2tpcF9zdHJpbmdfdXRmOAoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9za2lwX3N0cmluZ191dGYxNgoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9za2lwX3N0cmluZ191dGYzMgoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9wZWVrX3N0cmluZwoJICBBUEk6IGdzdF9ieXRlX3JlYWRlcl9wZWVrX3N0cmluZ191dGY4CgkgIEFQSTogZ3N0X2J5dGVfcmVhZGVyX2dldF9zdHJpbmcKCSAgQVBJOiBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3N0cmluZ191dGY4CgkgIEFuZCBzb21lIGJhc2ljIHVuaXQgdGVzdHMuIEZpeGVzICM1ODY1NjguCgoyMDA5LTA2LTIyIDE4OjE3OjI4ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICB0YWdsaXN0OiBmaXggdHlwbyBpbiB0YWcgZGVzY3JpcHRpb24KCjIwMDktMDYtMjEgMDA6MjY6MzMgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlcmxpc3QuYzoKCSAgdGVzdHM6IGZpeCBjcmFzaCBhbmQgbGVhayBpbiBidWZmZXJsaXN0cyB1bml0IHRlc3QKCSAgRG9uJ3QgYWNjZXNzIGFscmVhZHktZnJlZWQgaXRlcmF0b3IsIG1ha2VzIGNoZWNrLXZhbGdyaW5kIHdvcmsgYW5kIGZpeGVzCgkgIGNyYXNoIG9uIFBQQzsgdW5yZWYgYnVmZmVyIHdlJ3JlIGdvaW5nIHRvIHN0ZWFsIHRvIG1ha2UgdmFsZ3JpbmQgaGFwcHkuCgoyMDA5LTA2LTIxIDAwOjA5OjUzICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBnc3QvZ3N0LmM6CgkgIGluaXQ6IEZpeCBpbmRlbnQsIGFuZCByZWYgdGhlIGdzdF9idWZmZXJfbGlzdF9pdGVtX2dldF90eXBlKCkgY2xhc3MKCSAgRml4IHRoZSBjaGVjayB0ZXN0cyBieSByZWZmaW5nIHRoZSBHc3RCdWZmZXJMaXN0IGNsYXNzLiBSdW4gZ3N0LWluZGVudAoJICB0byBtYWtlIGdpdCBoYXBweSBhYm91dCBzb21lIGV4aXN0aW5nIHN0dWZmCgoyMDA5LTA2LTE5IDIxOjAzOjQ2ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIGdzdC1pbnNwZWN0OiBmaXggYnJva2VuIGZsYWdzIHRvIGZsYWcgc3RyaW5nIHNlcmlhbGlzYXRpb24KCSAgZS5nLiBjZHBhcm5vaWFzcmMgd291bGQgc2hvdyBmcmFnbWVudHxmdWxsIGZvciBhIGZsYWdzIHZhbHVlIG9mIDIuCgoyMDA5LTA2LTE5IDE5OjM1OjA0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgdGVlOiBhZGQgYnVmZmVyLWxpc3Qgc3VwcG9ydAoKMjAwOS0wNi0xOSAxOToyNDo1NiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXJsaXN0Lmg6CgkgIGJ1ZmZlcmxpc3Q6IHJlbW92ZSBvbGQgZW51bSBmcm9tIGRvY3MKCjIwMDktMDYtMTkgMTQ6NDU6NDIgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGluZm8uaDoKCSAgZ3N0aW5mbzogZGVmaW5lIF9fZ3N0X2RlYnVnX21pbiB0byBMT0dfTEVWRUxfTk9ORSBpZiBkZWJ1Z2dpbmcgaXMgZGlzYWJsZWQKCSAgSnVzdCBpbiBjYXNlIHNvbWVvbmUgd2hvIGNsZWFybHkgY2FuJ3QgYmUgZGV0ZXJyZWQgYnkgYW55IG51bWJlciBvZiBsZWFkaW5nCgkgIHVuZGVyc2NvcmVzIHVzZXMgdGhpcyB2ZXJ5IHByaXZhdGUgYnV0IHN0aWxsIHNvbWV3aGF0IGRvY3VtZW50ZWQgc3ltYm9sCgkgIGRpcmVjdGx5IGluIHRoZWlyIGNvZGUgKCpjb3VnaCogcXRkZW11eCAqY291Z2gqKS4KCjIwMDktMDYtMTkgMTU6Mjk6MTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0YnVmZmVybGlzdC5jOgoJKiBnc3QvZ3N0YnVmZmVybGlzdC5oOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVybGlzdC5jOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgYnVmZmVybGlzdDogVmFyaW91cyBjbGVhbnVwcwoJICBBZGQgbmV3IG1ldGhvZCB0byBpdGVyYXRlIGEgYnVmZmVybGlzdCB3aXRob3V0IGhhdmluZyB0byBhbGxvY2F0ZSBhbiBpdGVyYXRvci4KCSAgQWRkIGNvbnZlbmllbmNlIG1ldGhvZCBmb3IgZ2V0dGluZyBhbiBpdGVtIGZyb20gdGhlIGxpc3QgYmFzZWQgb24gdGhlIGdyb3VwIGFuZAoJICBpbmRleC4KCSAgUmVtb3ZlIHJlZHVuZGFudCBfZG9fZGF0YSBjYWxsYmFjayBhbmQgbWV0aG9kLgoJICBVcGRhdGUgdW5pdC10ZXN0cyBhbmQgYWRkIHNvbWUgbW9yZSBmb3IgdGhlIG5ldyBtZXRob2RzLgoKMjAwOS0wNi0xOSAxNDoxMDozMCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIGRvY3M6IG1ha2UgZ3RrLWRvYyBoYXBweQoKMjAwOS0wNi0xOSAxMzo1MTo1OSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgcG86IHVwZGF0ZSAucG8gZmlsZXMgYWZ0ZXIgc3RyaW5nIGNoYW5nZXMKCjIwMDktMDYtMTkgMTM6NDg6NDggKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzoKCSAgZmRzaW5rOiBjbGVhbiB1cCBzb21lIG1vcmUgZXJyb3IgYW5kIGRlYnVnIG1lc3NhZ2VzCgoyMDA5LTA2LTE5IDEzOjQyOjQ1ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0YXNrcG9vbC5jOgoJICB0YXNrcG9vbDogZml4IHVudXNlZCB2YXJpYWJsZSB3YXJuaW5nIGluIGNhc2UgZGVidWdnaW5nIGlzIGRpc2FibGVkCgoyMDA5LTA2LTE5IDEzOjQwOjEzICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RpbmZvLmM6CgkgIGdzdGluZm86IGZpeCBleHBvcnQgb2YgR1NUX0NBVF9CVUZGRVJfTElTVCB3aGVuIC0tZ3N0LWRpc2FibGUtZGVidWcgaXMgdXNlZAoJICBNb3ZlIGFsbCB0aGUgY2F0ZWdvcmllcyB0byBleHBvcnQgdG8gb25lIHNpbmdsZSBwbGFjZSwgc28gd2UgZG9uJ3QKCSAgYWNjaWRlbnRhbGx5IHVwZGF0ZSBvciBhZGQgdmFycyBpbiBvbmUgcGxhY2UgYnV0IG5vdCB0aGUgb3RoZXIuCgoyMDA5LTA2LTE4IDE2OjUwOjQyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJICBjb2xsZWN0cGFkczogdXNlIHRoZSByaWdodCBmbHVzaGluZyBmbGFnLgoJICBXZSBuZWVkIHRvIHVzZSB0aGUgcGFkIHByaXZhdGUgZmxhZyBiZWNhdXNlIHRoZSBvdGhlciBwYWQgZmxhZyBpcyBwcm90ZWN0ZWQgd2l0aAoJICB0aGUgcGFkIGxvY2sgaW5zdGVhZC4KCjIwMDktMDYtMTggMTY6NDE6NDYgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgIGNvbGxlY3RwYWRzOiBQcm9wZXJseSBoYW5kbGUgZmx1c2hpbmcgcGFkcy4KCSAgSWYgYSBwYWQgaXMgZmx1c2hpbmcsIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBlaXRoZXIgZW9zIG9yCgkgIGNvbnRhaW5pbmcgZGF0YS4KCjIwMDktMDYtMTggMTE6Mjc6MjEgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzoKCSAgZmRzaW5rOiBmaXggZXJyb3IgbWVzc2FnZQoJICBVc2VycyBzaG91bGQgbmV2ZXIgc2VlIHRoZSB0ZXJtICdmaWxlIGRlc2NyaXB0b3InLCBtdWNoIGxlc3MgYSBmaWxlCgkgIGRlc2NyaXB0b3IgbnVtYmVyLCBpbiBhbiBlcnJvciBtZXNzYWdlLiBQdXQgdGhhdCBpbnRvIHRoZSBkZWJ1ZwoJICBzdHJpbmcgaW5zdGVhZCBhbmQgdXNlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UuCgoyMDA5LTA2LTE4IDExOjQ5OjMzICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuaDoKCSAgZmRzaW5rOiBhZGQgdGhlIG5ldyBmaWVsZCBpbiB0aGUgaGVhZGVyCgoyMDA5LTA2LTE4IDEwOjU1OjM5ICswMjAwICBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4gYXQgZ2FpZ25hcmQubmV0PgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzoKCSAgZmRzaW5rOiBtYWtlIGZkc2luayBzZWVrYWJsZQoJICBJbXBsZW1lbnQgdGhlIHNhbWUgbG9naWMgYXMgZmlsZXNpbmsgdG8gaW1wbGVtZW50IHNlZWtpbmcuCgkgIEZpeGVzICM1Nzg5MDgKCjIwMDktMDYtMTcgMTY6NDU6MTcgKzAyMDAgIEpvc2VwIFRvcnJhIDxuNzcwZ2FsYXh5QGdtYWlsLmNvbT4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGdzdGVsZW1lbnQ6IG1vdmVkIHRoZSBjbG9jayB1bnJlZiB0byB0aGUgcmlnaHQgcGxhY2UKCjIwMDktMDYtMTcgMTY6MTc6MjcgKzAyMDAgIEpvc2VwIFRvcnJhIDxuNzcwZ2FsYXh5QGdtYWlsLmNvbT4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGdzdGVsZW1lbnQ6IHVucmVmIHRoZSBjbG9jayB3aGVuIHRoZSBlbGVtZW50IGNoYW5nZXMgdG8gbnVsbCBzdGF0ZQoKMjAwOS0wNi0xNyAwMDoyOTo0MCArMDQwMCAg0KDRg9GB0LvQsNC9INCY0LbQsdGD0LvQsNGC0L7QsiA8bHJuMTk4NkBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0LmM6CgkgIFJlcGxhY2VkIGRlcHJlY2F0ZWQgd2luMzItY29tcGF0aWJpbGl0eSBmdW5jdGlvbiB3aXRoIHVuZGVwcmVjYXRlZCBvbmUuCgkgIEZpeGVzICM1NjA0NDIuCgoyMDA5LTA2LTE2IDE4OjMyOjEyICswMjAwICBKb3NlcCBUb3JyYSA8bjc3MGdhbGF4eUBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0YmluLmM6CgkgIGdzdGJpbjogc3dhcCB0aGUgbGluZXMgb2YgbXkgcHJldmlvdXMgY29tbWl0CgkgIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gbXkgcHJldmlvdXMgY29tbWl0IHRoYXQgcmVsZWFzZWQgdGhlCgkgIGNsb2NrIHByb3ZpZGVyIGFuZCBhZnRlciB1c2VkIGl0IHRvIGNyZWF0ZSB0aGUgY2xvY2sgbG9zdCBtZXNzYWdlLgoKMjAwOS0wNi0xNiAxNzo1MToxMiArMDIwMCAgSm9zZXAgVG9ycmEgPG43NzBnYWxheHlAZ21haWwuY29tPgoKCSogZ3N0L2dzdGJpbi5jOgoJICBnc3RiaW46IHJlbW92ZSBjbG9jayByZWZlcmVuY2VzIHdoZW4gY2xvY2sgbG9zdCBoYXBwZW5zCgkgIFJlbW92ZSByZWZlcmVuY2UgdG8gY2xvY2sgYW5kIGNsb2NrIHByb3ZpZGVyIHN0b3JlZCBpbiB0aGUgYmluCgkgIHdoZW4gdGhlIGNsb2NrcHJvdmlkZXIgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIGJpbi4KCjIwMDktMDYtMTYgMTM6MzQ6MzggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIGJhc2VzaW5rOiBhZGQgU2luY2UgdGFnIGZvciBuZXcgbWV0aG9kCgoyMDA5LTA2LTE2IDEzOjMyOjM3ICswMjAwICBCcmFua28gU3ViYXNpYyA8YnJhbmtvLnN1YmFzaWMgYXQgYXhpcy5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgYmFzZXNpbms6IGFkZCBzdXBwb3J0IGZvciBidWZmZXIgbGlzdAoJICBGaXhlcyAjNTg1OTYwCgoyMDA5LTA2LTE2IDExOjM0OjU0ICswMjAwICBCcmFua28gU3ViYXNpYyA8YnJhbmtvLnN1YmFzaWMgYXQgYXhpcy5jb20+CgoJKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgZ2hvc3RwYWQ6IEFkZCBzdXBwb3J0IGZvciBHc3RCdWZmZXJMaXN0cwoJICBGaXhlcyAjNTg1ODM0CgoyMDA5LTA2LTE2IDExOjIxOjQyICswMjAwICBDaHJpc3RvcGhlciBIYWxzZSBSb2dlcnMgPGNoYWxzZXJvZ2VycyBhdCBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0aXRlcmF0b3IuYzoKCSAgaXRlcmF0b3I6IEV4cGxpY2l0bHkgbWVudGlvbiByZWZjb3VudGluZyBpbiBkb2NzCgkgIEZpeGVzICM1ODU5MzgKCjIwMDktMDYtMTYgMDg6NDM6NTMgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHhtbDogZml4IChkZSlzZXJpYWxpc2F0aW9uIG9mIHByb3BlcnRpZXMgb2YgdHlwZSBHc3RTdHJ1Y3R1cmUKCSAgc291cGh0dHBzcmMgaGFzIGEgcHJvcGVydHkgb2YgdHlwZSBHc3RTdHJ1Y3R1cmUsIHdoaWNoIGNhdXNlcyBhbgoJICBhc3NlcnRpb24gd2hlbiBzZXJpYWxpc2luZyBpdCB0byB4bWwuIEZpeGVzICM1ODUxMzcuCgoyMDA5LTA2LTE1IDIwOjExOjA1ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgcXVldWU6IGZpeCBjb21waWxlciB3YXJuaW5nCgkgIFRoZSBjb21waWxlciBzdWdnZXN0cyB0byBhZGQgc29tZSAoKSB0byBpbmRpY2F0ZSBpZiB0aGUgJiYgb3IgdGhlIHx8IHRha2VzCgkgIHByaW9yaXR5LCBzbyByZWZsb3cgY29kZSBhIGJpdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCB5ZXQgYW5vdGhlciBsYXllcgoJICBvZiAoKS4gSG9wZWZ1bGx5IHRoaXMgd2FzIHRoZSBpbnRlbmRlZCBtZWFuaW5nIG9mIHRoZSBjb2RlLgoKMjAwOS0wNi0xMSAxNTowMDo1MiArMDIwMCAgQXJub3V0IFZhbmRlY2FwcGVsbGUgPGFybm91dEBtaW5kLmJlPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBkb24ndCBsb2NrIHdoZW4gbWluLXRocmVzaG9sZCBhbmQgbWF4LXNpemUgY29uZmxpY3QuCgkgIFdoZW4gbWluLXRocmVzaG9sZCBpcyBzZXQgb24gYSBxdWV1ZSwgaXQgaXMgcG9zc2libGUgdGhhdCBvbmUgb2YKCSAgdGhlIG1pbmltYSByZW1haW5zIHVuc2F0aXNmaWVkIHdoaWxlIG9uZSBvZiB0aGUgbWF4aW1hIGlzIGFscmVhZHkKCSAgcmVhY2hlZC4gVGhlcmVmb3JlLCBhbHdheXMgY29uc2lkZXIgdGhlIHF1ZXVlIG5vbi1lbXB0eSBpZiBpdCBpcyBmdWxsLgoJICBGaXhlcyAjNTg1NDMzLgoKMjAwOS0wNi0xNSAxODo0NDo0NSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBuZXh0IHN0YXRlIGNvcnJlY3RseQoJICBXaGVuIHRoZSBjb250aW51ZSBmdW5jdGlvbiBpcyBzY2hlZHVsZWQsIG1ha2Ugc3VyZSB3ZSBzZXQgdGhlIG5leHQgc3RhdGUgaW5zdGVhZAoJICBvZiB0aGUgcGVuZGluZyBzdGF0ZS4KCSAgQWRkIHNvbWUgbW9yZSBkZWJ1ZyBpbmZvLgoJICBmaXhlcyAjNTg1NTY5CgoyMDA5LTA2LTE1IDE4OjQ0OjE0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJICBjb2xsZWN0cGFkczogZml4IC5oIGluZGVudGF0aW9uCgoyMDA5LTA2LTE1IDE4OjQzOjUyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIGJhc2VzcmM6IGFkZCBzb21lIG1vcmUgZGVidWcKCjIwMDktMDYtMTUgMTg6NDI6NTkgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJKiBnc3QvZ3N0cGFkLmM6CgkgIGRlYnVnOiBhZGQgc29tZSBtb3JlIGRlYnVnIHRvIGVsZW1lbnQgYW5kIHBhZHMKCjIwMDktMDYtMTQgMTY6NTY6MzIgKzA0MDAgINCg0YPRgdC70LDQvSDQmNC20LHRg9C70LDRgtC+0LIgPGxybjE5ODZAZ21haWwuY29tPgoKCSogZ3N0L2dzdHNlZ21lbnQuYzoKCSAgc2VnbWVudDogZml4IGluY2x1ZGUgb3JkZXIgdG8gZ2V0IGNvbmZpZy5oIGJlZm9yZSBfbWluZ3cuaAoJICBjb25maWcuaCBtdXN0IGFsd2F5cyBiZSBpbmNsdWRlZCBiZWZvcmUgYW55IG90aGVyIGluY2x1ZGVzLCBlaXRoZXIKCSAgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB2aWEgZ3N0X3ByaXZhdGUuaC4gRml4ZXMgIzU4NTczMy4KCjIwMDktMDYtMTQgMTY6MTc6NTAgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ2xpc3QuaDoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZy5jOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgdGFnbGlzdDogYWRkIGZ1bmN0aW9ucyB0byBjcmVhdGUgYSBuZXcgdGFnbGlzdCB3aXRoIHRhZ3MgaW4gb25lIGdvCgkgIEFkZCBmdW5jdGlvbnMgdG8gY3JlYXRlIGEgbmV3IHRhZyBsaXN0IGFuZCBzZXQgdGFncyBpbiBvbmUgZ28sIHdoaWNoCgkgIGlzIG5pY2UgZm9yIHVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIGZ1bmN0aW9ucyB0aGF0IHRha2Ugb3duZXJzaGlwIG9mCgkgIHRoZSB0YWdsaXN0LCBzdWNoIGFzIGdzdF9ldmVudF9uZXdfdGFnKCkgb3IgZ3N0X2VsZW1lbnRfZm91bmRfdGFncygpLgoJICBBUEk6IGFkZCBnc3RfdGFnX2xpc3RfbmV3X2Z1bGwoKQoJICBBUEk6IGFkZCBnc3RfdGFnX2xpc3RfbmV3X2Z1bGxfdmFsaXN0KCkKCjIwMDktMDYtMTMgMTQ6NTU6NDMgKzAyMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hcyAoYXQpIGFwZXN0YWFydCAoZG90KSBvcmc+CgoJKiBzY3JpcHRzL2dpdC12ZXJzaW9uLnNoOgoJICBnaXQtdmVyc2lvbi5zaDogbWFrZSBleGVjdXRhYmxlCgoyMDA5LTA2LTEzIDE0OjUzOjI0ICswMjAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXMgKGF0KSBhcGVzdGFhcnQgKGRvdCkgb3JnPgoKCSogc2NyaXB0cy9jdnMtdXBkYXRlLnNoOgoJKiBzY3JpcHRzL2dpdC11cGRhdGUuc2g6CgkqIHNjcmlwdHMvZ2l0LXZlcnNpb24uc2g6CgkgIFVwZGF0ZSBzY3JpcHRzL2N2cy11cGRhdGUuc2ggdG8gZ2l0LXVwZGF0ZS5zaDsgYWRkIGdpdC12ZXJzaW9uLnNoCgkgIGFkZCBzY3JpcHQgdG8gZ2V0IGdpdCB2ZXJzaW9ucwoJICBmaXJzdCB1cGRhdGUgYWxsLCB0aGVuIGJ1aWxkCgkgIGFkZCBnbm9ubGluIHRvbwoJICBzcGVjaWZ5IHdoZXJlIHRvIHB1bGwgZnJvbQoJICBhbHNvIHVwZGF0ZSBzdWJtb2R1bGUKCSAgcmVuYW1lIGFuZCBjaGFuZ2UgY3ZzLXVwZGF0ZSBzY3JpcHQgdG8gZ2l0LXVwZGF0ZQoKMjAwOS0wNi0xMiAxODozNjoxNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg6CgkqIHRlc3RzL2NoZWNrL2xpYnMvYnl0ZXJlYWRlci5jOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgIGJ5dGVyZWFkZXI6IGFkZCBnc3RfYnl0ZV9yZWFkZXJfbWFza2VkX3NjYW5fdWludDMyKCkKCSAgQWRkIGEgcGF0dGVybiBzY2FuIGZ1bmN0aW9uIHNpbWlsYXIgdG8gdGhlIG9uZSByZWNlbnRseSBhZGRlZCB0bwoJICBHc3RBZGFwdGVyLCBhbmQgYSB1bml0IHRlc3QgKGJhc2VkIG9uIHRoZSBhZGFwdGVyIG9uZSkuCgkgIEZpeGVzICM1ODU1OTIuCgkgIEFQSTogYWRkIGdzdF9ieXRlX3JlYWRlcl9tYXNrZWRfc2Nhbl91aW50MzIoKQoKMjAwOS0wNC0xNyAxNzo1OTozOCArMDMwMCAgUmVuw6kgU3RhZGxlciA8cmVuZS5zdGFkbGVyQG5va2lhLmNvbT4KCgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0aW5mby5jOgoJICBGaXggcmVtYWluaW5nIC0tZGlzYWJsZS1nc3QtZGVidWcgQUJJIGJyZWFrYWdlLgoJICBGaXhlcyAjNTc5MTc3LgoKMjAwOS0wNi0xMiAxNzo1MToyMiArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgZmlsZXNyYy9zaW5rOiB0dXJuIHRoZSBidXMgbWVzc2FnZXMgaW50byBnX3dhcm5pbmcKCSAgSXRzIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCgoyMDA5LTA2LTEyIDE1OjQ4OjM1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgbWVzc2FnZTogZml4IGRvY3MKCjIwMDktMDYtMTIgMTM6MTg6MjEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1mcmFtZXN0ZXAudHh0OgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJKiBnc3QvZ3N0bWVzc2FnZS5oOgoJKiBnc3QvZ3N0cXVhcmsuYzoKCSogZ3N0L2dzdHF1YXJrLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogdGVzdHMvZXhhbXBsZXMvc3RlcHBpbmcvZnJhbWVzdGVwMS5jOgoJICBzdGVwcGluZzogbW9yZSBzdGVwcGluZyBpbXByb3ZlbWVudHMKCSAgVXBkYXRlIGRlc2lnbiBkb2Mgd2l0aCBzdGVwLXN0YXJ0IGRvY3MuCgkgIEFkZCBlb3MgZmllbGQgdG8gc3RlcCBkb25lIG1lc3NhZ2UKCSAgd2hlbiBzdGVwcGluZyBpbiByZXZlcnNlLCB1cGRhdGUgdGhlIHNlZ21lbnQgdGltZSBmaWVsZC4KCSAgRmx1c2ggb3V0IHRoZSBjdXJyZW50IHN0ZXAgd2hlbiB3ZSBhcmUgZmx1c2hpbmcuCgoyMDA5LTA2LTEwIDE1OjUxOjQwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogcG9zdCBzdGVwLXN0YXJ0CgkgIHdoZW4gd2UgY2xpcCwgYWxzbyBzdG9wIHRoZSBzdGVwcGluZy4KCSAgRG9uJ3QgZG8gUW9TIHdoZW4gc3RlcHBpbmcKCSAgUG9zdCBzdGVwLXN0YXJ0IHdoZW4gcXVldWVpbmcgYW5kIGFjdGl2YXRpbmcgdGhlIHN0ZXAuCgoyMDA5LTA2LTEwIDE1OjQ4OjM1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogZ3N0L2dzdHF1YXJrLmM6CgkqIGdzdC9nc3RxdWFyay5oOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgbWVzc2FnZTogYWRkIHN0ZXAtc3RhcnQgbWVzc2FnZQoKMjAwOS0wNi0xMSAxNDoxODowMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgZ3N0dmFsdWU6IG1vcmUgZWZmaWNpZW50IHZhbHVlIHRhYmxlIGxvb2t1cCBmb3IgZnVuZGFtZW50YWwgdHlwZXMKCSAgU21hbGwgbWljcm8tb3B0aW1pc2F0aW9uOiBsb29rIHVwIHZhbHVlIHRhYmxlIGZvciBmdW5kYW1lbnRhbCB0eXBlcwoJICB2aWEgYW4gYXJyYXkgZGVkaWNhdGVkIHRvIGZ1bmRhbWVudGFsIHR5cGVzIGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaAoJICBhIGhhc2ggdGFibGUgbG9va3VwLiBTaW5jZSB0aGVyZSBjYW4gYmUgb25seSAyNTUgZnVuZGFtZW50YWwgdHlwZXMsCgkgIHRoZSB0YWJsZSBzaXplL2VmZmljaWVuY3kgdHJhZGUtb2ZmIHNob3VsZCBiZSBhY2NlcHRhYmxlLCBlc3AuIHNpbmNlCgkgIHRoZSBtb3N0IGNvbW1vbmx5LXVzZWQgdHlwZXMgYXJlIGFsbCBmdW5kYW1lbnRhbCB0eXBlcy4gVGhlIHNpemUgb2YKCSAgdGhlIHRhYmxlIGNvdWxkIHByb2JhYmx5IGJlIG1pbmltaXNlZCBmdXJ0aGVyIGlmIG5lZWRlZCBieSBhbGxvY2F0aW5nCgkgIHRoZSB0YWJsZSBkeW5hbWljYWxseSBhbmQgb25seSBleHBhbmRpbmcgaXQgb24gZGVtYW5kLgoKMjAwOS0wNi0xMSAxMzoxNjoxNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgZ3N0dmFsdWU6IGRvbid0IHB1dCBHVHlwZXMgaW50byBpbnQgdmFyaWFibGVzCgkgIEdUeXBlcyBhcmUgbm90IGludHMgYW5kIGFzIHN1Y2ggYXJlIG5vdCBndWFyYW50ZWVkIHRvIGZpdCBpbnRvIGFuIGludAoJICAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGZ1bmRhbWVudGFsIHR5cGVzKSwgc28gd2UgcmVhbGx5IHNob3VsZG4ndCBwdXQKCSAgdGhlbSBpbnRvIGludCB2YXJpYWJsZXMuIEV2ZW4gaWYgYSByYXRoZXIgdW5saWtlbHkgb2JzY3VyZSBjb3JuZXIgY2FzZSwKCSAgdGhpcyBoYXMgYWN0dWFsbHkgYmVlbiBhIHByb2JsZW0gYXQgc29tZSBwb2ludCBpbiB0aGUgcGFzdCwgc2VlIGNvbW1pdAoJICA5OWYxNjY1NWY0Y2ZiYzhlMDZiNTk3MjQxN2JhMTEyNzkwODNhNjRlLgoKMjAwOS0wNi0xMSAxNzowMzowNCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgZmlsZXNyYy9zaW5rOiBpbXByb3ZlIHdhcm5pbmcgbWVzc2FnZSBhIGJpdCAod3Jvbmcgc3RhdGUpCgkgIFVuaWZ5IGFuZCB0dXJuIHRob3NlIGludG8gZWxlbWVudCB3YXJuaW5ncy4KCjIwMDktMDYtMTEgMTQ6MDA6MDkgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICBlbGVtZW50ZmFjdG9yeTogRml4IGEgY29tcGlsZXIgd2FybmluZwoJICBVc2UgKGdwb2ludGVyKSBpbnN0ZWFkIG9mIChncG9pbnRlciAqKSB0byBmaXggYSBzdHJpY3QtYWxpYXNpbmcgYnVpbGQgd2FybmluZy4KCjIwMDktMDYtMTEgMTM6MTY6MjkgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbW1vbjoKCSogZG9jcy9mYXEvTWFrZWZpbGUuYW06CgkqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkqIGRvY3MvbWFudWFsL01ha2VmaWxlLmFtOgoJKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CgkqIGRvY3MvcHdnL01ha2VmaWxlLmFtOgoJICBkb2NzOiBCdW1wIGNvbW1vbiwgZml4IHRoZSB1cGxvYWQgbG9naWMgaW5jbHVzaW9uCgkgIFVwZGF0ZSB0aGUgY29tbW9uIHN1Ym1vZHVsZSwgYW5kIGZpeCB0aGUgZG9jcyB1cGxvYWQgcnVsZXMgdG8gaW5jbHVkZQoJICB0aGUgcmlnaHQgbWFrZWZpbGUgc25pcHBldCBmcm9tIGNvbW1vbi4KCjIwMDktMDYtMDkgMTE6MTM6MDQgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICBtdWx0aXF1ZXVlOiBVc2UgdGhlIHNsaWNlIGFsbG9jYXRvciBmb3IgTXVsdGlRdWV1ZUl0ZW1zCgoyMDA5LTA2LTEwIDIwOjI5OjQxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuaDoKCSAgTWFrZSBzdXJlIGNvbmZpZy5oIGlzIG9ubHkgaW5jbHVkZWQgb25jZQoJICBGaXhlcyBidWlsZCBwcm9ibGVtIG9uIHdpbjMyICgjNTg1MDc1KS4KCjIwMDktMDYtMTAgMTg6MDU6NDcgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RwbHVnaW4uYzoKCSAgcGx1Z2luOiBhZGQgc2luY2U6IHRhZ3MgZm9yIHRoZSBhcGkgZG9jcy4KCSAgVGhlIHByZXZpb3VzIHJlbGF0ZWQgY29tbWl0IGFkZGVkIG5ldyBBUEkuCgkgIEFQSTogYWRkIGdzdF9wbHVnaW5fZ2V0X2NhY2hlX2RhdGEsIGdzdF9wbHVnaW5fc2V0X2NhY2hlX2RhdGEKCjIwMDktMDYtMTAgMTI6MDI6MjMgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RwbHVnaW4uYzoKCSAgcGx1Z2luOiBmaXggbGVha3MgaW50cm9kdWNlZCBieSBmaXggZm9yICM1ODQzODkKCjIwMDktMDYtMDggMjM6NDM6MTYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHN0cnVjdHVyZTogYWRkIGdzdF9zdHJ1Y3R1cmVfKl9nZXQqKCkgdmFyYXJnIGZ1bmN0aW9ucwoJICBBZGQgYSBidW5jaCBvZiB2YXJhcmcgZ2V0dGVyIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBjb21wbGVtZW50CgkgIHRoZSB2YXJhcmcgc2V0dGVyIGZ1bmN0aW9ucywgYW5kIGEgYmFzaWMgdW5pdCB0ZXN0LiBGaXhlcyAjNTM0MjA4LgoJICBBUEk6IGdzdF9zdHJ1Y3R1cmVfZ2V0KCkKCSAgQVBJOiBnc3Rfc3RydWN0dXJlX2lkX2dldCgpCgkgIEFQSTogZ3N0X3N0cnVjdHVyZV9nZXRfdmFsaXN0KCkKCSAgQVBJOiBnc3Rfc3RydWN0dXJlX2lkX2dldF92YWxpc3QoKQoKMjAwOS0wNi0wOSAwMDoxNjowNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICBkb2NzOiBhIGZldyBzbWFsbCBBUEkgZG9jIGZpeGVzIGFuZCBhZGRpdGlvbnMKCjIwMDktMDYtMDggMTk6MzM6NTUgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGluZm8uYzoKCSAgbG9nZ2luZzogd2hlbiBsb2dnaW5nIHRhZ2xpc3RzLCBzaG9ydGVuIGxvbmcgYnVmZmVyIGR1bXBzCgkgIERvbid0IGR1bXAgaHVuZHJlZHMgb2Yga0Igb2YgaGV4ZGF0YSBpbnRvIGRlYnVnIGxvZ3Mgd2hlbiBjb252ZXJ0aW5nCgkgIHRhZ2xpc3RzIGNvbnRhaW5pbmcgaHVnZSBpbWFnZXMgaW50byBhIHN0cmluZy4gSW5zdGVhZCwgc2hvcnRlbiB0aGUKCSAgYnVmZmVyIGRhdGEgc28gdGhhdCB0aGUgc3RyaW5nIGlzIHN0aWxsIHJlYWRhYmxlIGFuZCBkZWJ1ZyBsb2dzCgkgIHN0YXkgbWFuYWdhYmxlLiBDYW4gYmUgdHVybmVkIG9mZiB3aXRoIEdTVF9ERUJVR19PUFRJT05TPWZ1bGwtdGFncy4KCSAgU2VlICM1ODQ5ODguCgoyMDA5LTA2LTA5IDEzOjA3OjM0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkgIG11bHRpcXVldWU6IGNoZWNrIGJ5dGUgcmFuZ2UgZXZlbiB3aGVuIHdlIGhhdmUgdGltZXN0YW1wcwoJICBBcyBmb3VuZCBieSB0aGF5dGFuIG9uIElSQy4KCSAgQWxzbyBjaGVjayB0aGUgYnl0ZSBsaW1pdCwgZXZlbiBpZiB3ZSBoYXZlIHRpbWVzdGFtcHMgYmVjYXVzZSB0aGVyZSBtaWdodCBqdXN0CgkgIG5vdCBiZSBhIHRpbWUgbGltaXQuCgoyMDA5LTA2LTA5IDEyOjA2OjM1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogdXBkYXRlIHNlZ21lbnQgc3RhcnQvc3RvcCBmb3IgY2xpcHBpbmcKCSAgV2hlbiB3ZSBzdGFydCBzdGVwcGluZywgc3RvcmUgdGhlIHN0YXJ0L3N0b3AgdmFsdWVzIG9mIHRoZSBzZWdtZW50IGJlZm9yZSB3ZQoJICBpbnN0YWxsIG5ldyBzdGFydC9zdG9wIHZhbHVlcyBmb3IgY2xpcHBpbmcgaW4gbm9uLWZsdXNoaW5nIHN0ZXBzLgoJICBmb3Igbm9uLWZsdXNoaW5nIHN0ZXBzLCB1cGRhdGUgdGhlIGVsZW1lbnQgc3RhcnQgdGltZS4gRm9yIGZsdXNoaW5nIHN0ZXBzLCBpdAoJICBkb2VzIG5vdCBjaGFuZ2UgYmVjYXVzZSBydW5uaW5nX3RpbWUgZG9lcyBub3QgYWR2YW5jZQoJICBNYWtlIHN1cmUgd2UgYWx3YXlzIHBlcmZvcm0gdGhlIHN0b3Bfc3RlcHBpbmcgb3BlcmF0aW9ucyBldmVuIHdoZW4gd2UgZHJvcAoJICBmcmFtZXMuCgoyMDA5LTA2LTA5IDEwOjI1OjM0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogZG8gcHJvcGVyIGNsaXBwaW5nIGluIHN0ZXBwaW5nCgkgIFVwZGF0ZSB0aGUgc3RvcCBwb3NpdGlvbiBvZiB0aGUgc2VnbWVudCBzbyB0aGF0IHdlIGNsaXAgY29ycmVjdGx5LgoJICBBZnRlciBjbGlwcGluZyBpbiBub24tZmx1c2hpbmcgbW9kZSwgcmVyZW5kZXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgYnVmZmVyLgoKMjAwOS0wNi0wOSAxMDoyMzoyMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzZWdtZW50LmM6CgkgIHNlZ21lbnQ6IG1ha2UgY29udmVyc2lvbiBtb3JlIHByZWNpc2UKCSAgTWFrZSBzdXJlIHRoZSBjb252ZXJzaW9uIGZyb20gYW5kIHRoZSBjb252ZXJzaW9uIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0cy4KCjIwMDktMDYtMDggMTU6Mzk6NTkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIHV0aWxzOiBnc3RfdXRpbF91aW50NjRfc2NhbGUqKCkgbWljcm8tb3B0aW1pc2F0aW9ucwoJICBTcHJpbmtsZSBHX0xJS0VMWS9HX1VOTElLRUxZOyBhZGQgaW5saW5lZCBfc2NhbGVfaW50X3VuY2hlY2tlZCgpCgkgIHNvIHdlIGRvbid0IGRvIHNvbWUgY2hlY2tzIHR3aWNlIHdoZW4gY2FsbGluZyBpdCBmcm9tIF9zY2FsZSgpLgoKMjAwOS0wNi0wNyAyMjo0OTowMSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXJpLmM6CgkqIGdzdC9nc3R2YWx1ZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogdGVzdHMvY2hlY2svbGlicy90cmFuc2Zvcm0xLmM6CgkgIFJlbW92ZSBkb3VibGUgc2VtaWNvbG9ucyBhdCBlbmQgb2YgbGluZQoKMjAwOS0wNi0wOCAxNzozOTo0NyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL2RyYWZ0LWZyYW1lc3RlcC50eHQ6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgc3RlcHBpbmc6IGRvIGZsdXNoaW5nIHN0ZXBzIGNvcnJlY3RseQoJICBOb3RlIGluIHRoZSBkb2NzIHRoYXQgYSBmbHVzaGluZyBzdGVwIGluIFBMQVlJTkcgYnJpbmdzIHRoZSBwaXBlbGluZSB0byB0aGUgbG9zdAoJICBzdGF0ZSBhbmQgc2tpcHMgdGhlIGRhdGEgYmVmb3JlIHByZXJvbGxpbmcgYWdhaW4uCgkgIEltcGxlbWVudCB0aGUgZmx1c2hpbmcgc3RlcCBjb3JyZWN0bHkgYnkgaW52YWxpZGF0aW5nIHRoZSBjdXJyZW50IHN0ZXAKCSAgb3BlcmF0aW9uLCB3aGljaCB3b3VsZCBhY3RpdmF0ZSB0aGUgbmV3IHN0ZXAgb3BlcmF0aW9uLgoKMjAwOS0wNi0wOCAxNjoxNjoyNyArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogQ2hhbmdlIGF3a3dhcmQgd29yZGluZyBpbiBhIHRyYW5zbGF0ZWFibGUgbWVzc2FnZS4KCjIwMDktMDYtMDggMTY6Mjc6MzYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBhZGQgbm9uLWZsdXNoaW5nIHN0ZXBzCgkgIEFkZCBzdXBwb3J0IGZvciBub24tZmx1c2hpbmcgc3RlcHMgYW5kIHdpdGggZGlmZmVyZW50IHJhdGVzLgoJICBDbGVhciBzdGVwIGluZm8gd2hlbiBmbHVzaGluZwoKMjAwOS0wNi0wNyAyMzo0Njo1NCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdF9wcml2YXRlLmg6CgkqIGdzdC9nc3RwbHVnaW4uYzoKCSogZ3N0L2dzdHBsdWdpbi5oOgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICByZWdpc3RyeTogYWxsb3cgcGx1Z2lucyB0byBjYWNoZSBleHRyYSBkYXRhIGluIHJlZ2lzdHJ5LiBGaXhlcyAjNTcwMjMzCgkgIEFkZCBhIEdzdFN0cnVjdHVyZSB0byBHc3RQbHVnaW4uIFBsdWdpbnMgY2FuIHJldGlldmUgaXQgaW4gcGx1Z2luX2luaXQgYW5kCgkgIGFjY2VzcyB0aGUgY2FjaGVkIGluZm8gb3IgYnVpbGQgdGhlIGNhY2hlIGFuZCBzdG9yZSBpdCB0aGVyZS4KCjIwMDktMDYtMDcgMjI6MDk6MTQgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0cGx1Z2luLmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICByZWdpc3RyeTogZG9uJ3QgcmVjcmVhdGUgZmVhdHVyZXMgb24gZmlyc3QgdXNlLiBGaXhlcyAjNTg0Mzg5CgkgIFRoZSBmaXJzdCB0aW1lIG9uZSBjYWxscyBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoKSwgZ3N0IHJlY3JlYXRlcyB0aGUgcGx1Z2luCgkgIGZlYXR1cmUgYW5kIHRoZSBlbGVtZW50IGZhY3RvcnkuIEFzIGEgc2lkZSBlZmZlY3Qgd2UgcmVmIHRoZSBjbGFzcyB0byBmaWxsCgkgIGluIGRldGFpbCB3ZSBhbHJlYWR5IGhhdmUgZmlsbGVkIGZyb20gdGhlIHJlZ2lzdHJ5IGNhY2hlLiBUaGlzIHBhdGNoIGNoYW5nZXMKCSAgdGhlIGJlaGF2aW91ciB0byBqdXN0IHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cmllcy4gVGhlIGZhY3RvcnkgaXMgbm93IGF0dGFjaGVkCgkgIHRvIHRoZSB0eXBlIGFuZCBzZXQgaW4gZ3N0X2VsZW1lbnRfYmFzZV9jbGFzc19pbml0KCkuCgoyMDA5LTA2LTA3IDIyOjIwOjU0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgdGVzdHM6IGNvbmRpdGlvbmFsbHkgY29tcGlsZSB0aGUgc3RyZWFtcyBleGFtcGxlCgkgIERldGVjdCBwdGhyZWFkcy5oIGluIGNvbmZpZ3VyZS5hYwoJICBPbmx5IGNvbXBpbGUgdGhlIHN0cmVhbXMgZXhhbXBsZSB3aGVuIHB0aHJlYWRzLmggaXMgcHJlc2VudC4KCSAgRml4ZXMgIzU4NTAzOQoKMjAwOS0wNi0wNyAxNzozMjozNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R2YWx1ZS5jOgoJICBnc3R2YWx1ZTogcmVtb3ZlIHR5cGUgY2hlY2tzIGFuZCByZWR1bmRhbnQgY29kZQoKMjAwOS0wNi0wNyAxNTo0Mzo1NyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R2YWx1ZS5jOgoJICB2YWx1ZTogZml4IGZyYWN0aW9uIHJhbmdlIGxjb3B5IGZ1bmN0aW9uCgkgIFRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgYnJva2VuIGZvciAzLjUgeWVhcnMuIEx1Y2tpbHkgbm9ib2R5IGV2ZXIgdHJpZWQgdG8KCSAgbWFrZSBhIGZyYWN0aW9uIHJhbmdlIG9iamVjdCBwcm9wZXJ0eS4uLgoKMjAwOS0wNi0wNyAxNTozNToxMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R2YWx1ZS5jOgoJICBnc3R2YWx1ZTogcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzCgkgIEFkZCBhIEdUeXBlLT5Hc3RWYWx1ZVRhYmxlIGhhc2h0YWJsZSBtYXBwaW5nLgoJICBBdm9pZCBfZ2V0X3R5cGUoKSBtdWx0aXBsZSB0aW1lcyB3aGVuIHdlIGNhbi4KCSAgVXNlIEdTbGljZSBmb3IgZnJhY3Rpb24gcmFuZ2UgZHluYW1pYyBtZW1vcnkKCSAgQWRkIEdfTElLRUxZIHdoZW4gd2UgY2FuCgkgIEltcHJvdmUgbG9va3VwIG9mIHRoZSB2YWx1ZSB0YWJsZSB1c2luZyB0aGUgaGFzaHRhYmxlCgoyMDA5LTA2LTA3IDE0OjMwOjI4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBzdHJ1Y3R1cmU6IG5vIG5lZWQgdG8gY2xlYXIgb24gaW5pdAoJICBXZSBkb24ndCBuZWVkIHRvIGNsZWFyIHRoZSBmaWVsZCBvbiBpbml0IGJlY2F1c2Ugd2Ugd2lsbCBkbyB0aGF0IGFnYWluIGJlZm9yZSB3ZQoJICBhcmUgZ29pbmcgdG8gdXNlIHRoZSBmaWVsZCBsYXRlci4KCjIwMDktMDYtMDUgMjA6NTc6MDUgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIGdzdHN0cnVjdHVyZTogRml4IHNvbWUgbWVtb3J5IGxlYWtzLiBTcHJpbmtsZSBHX0xJS0VMWS9VTkxJS0VMWQoJICBGaXggc29tZSBtZW1vcnkgbGVha3Mgc2hvd24gYnkgdGhlIG5ldyBzZXJpYWxpc2F0aW9uL2Rlc2VyaWFsaXNhdGlvbiB1bml0CgkgIHRlc3QuIFNwbGl0IHRoZSBnc3Rfc3RyaW5nX3dyYXAgZnVuY3Rpb24gaW4gZ3N0dmFsdWUuYyBpbnRvIGNvbXBvbmVudHMgYW5kCgkgIHVzZSB0aGVtIHRvIG1ha2UgZ3N0X3N0cmluZ190YWtlX2FuZF93cmFwLCB3aGljaCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlCgkgIHN0cmluZywgYXZvaWRpbmcgYSBzdHJkdXAuCgkgIEFkZCBzb21lIEdfTElLRUxZL1VOTElLRUxZLCBhbmQgY2xlYW4gdXAgc29tZSBsZWFrcyBpbiBlcnJvciBwYXRocy4KCjIwMDktMDYtMDUgMTE6Mzc6MjQgKzAyMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hcmsubmF1d2VsYWVydHNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIGJhc2VzcmM6IHJlcGx5IHRvIFFVRVJZX1NFRUtJTkcgd2l0aCBvcmlnaW5hbCBmb3JtYXQuICBGaXhlcyAjNTg0ODM4LgoKMjAwOS0wNi0wNCAxOTo0NDozOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOgoJKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmg6CgkqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIGNvbmZpZ3VyZTogcmVtb3ZlIEFDX0NfSU5MSU5FIGFuZCB1cGRhdGUgd2luMzIgZmlsZXMgdG8gZ2l0CgkgIFJlbW92ZSBBQ19DX0lOTElORSBjaGVjaywgc28gd2UgZG9uJ3QgZW5kIHVwIHdpdGggYW4gI3VuZGVmIGlubGluZSBpbgoJICBjb25maWcuaCwgd2hpY2ggY2F1c2VzIHByb2JsZW1zIHdpdGggc29tZSB2ZXJzaW9ucyBvZiBNU0NWIGFwcGFyZW50bHkuCgkgIEdMaWIgZGVmaW5lcyBpbmxpbmUgZm9yIHVzIGluIGEgc3VpdGFibGUgd2F5IGFscmVhZHkgYW55d2F5LgoJICBGaXhlcyAjNTg0ODM1LgoJICBXaGlsZSB3ZSdyZSBhdCBpdCwgYWxzbyB1cGRhdGUgdGhlIG90aGVyIHdpbjMyIGZpbGVzIHRvIGdpdCAoYnVtcAoJICB2ZXJzaW9uLCBhZGQgbmV3IGRlZmluZXMgYW5kIGVudW1zKS4KCjIwMDktMDYtMDQgMTg6MjY6MDQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgZ2hvc3RwYWQ6IGF2b2lkIGV4Y2Vzc2l2ZSBub3RpZnkgZm9yIGNhcHMKCSAgQXZvaWQgYW4gb2JqZWN0IHByb3BlcnR5IG5vdGlmeSBpZiB0aGUgY2FwcyBvbiB0aGUgb3RoZXIgcGFkIHdlcmUgYWxyZWFkeQoJICBzZXQgKGFuZCB0aHVzIG5vdGlmaWVkKS4KCjIwMDktMDYtMDQgMTc6Mjc6MDMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBmaXggY2xpcHBlZCBzdGFydC9zdG9wIGFmdGVyIHN0ZXAKCSAgVXNlIHRoZSBzZWdtZW50IGhlbHBlcnMgdG8gZ2V0IGEgbW9yZSBhY2N1cmF0ZSBjbGlwcGVkIHN0YXJ0L3N0b3AgcG9zaXRpb24gYWZ0ZXIKCSAgYSBzdGVwcGluZyBvcGVyYXRpb24gZW5kZWQuCgoyMDA5LTA2LTA0IDEyOjM0OjQ3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogdXNlIG1vcmUgY29ycmVjdCBzZWdtZW50IG1ldGhvZHMKCSAgVXNlIHRoZSBtb3JlIGNvcnJlY3QgbmV3IHNlZ21lbnQgbWV0aG9kcyBmb3IgdXBkYXRpbmcgdGhlIHNlZ21lbnQgYmVmb3JlIGFuZAoJICBhZnRlciBhIHN0ZXAuCgoyMDA5LTA2LTA0IDEyOjQ4OjUxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHNlZ21lbnQuYzoKCSogZ3N0L2dzdHNlZ21lbnQuaDoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHNlZ21lbnQuYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHNlZ21lbnQ6IGFkZCBnc3Rfc2VnbWVudF9zZXRfcnVubmluZ190aW1lCgkgIEFkZGVkIG5ldyBtZXRob2QgZm9yIGNsb3NpbmcgdGhlIHNlZ21lbnQgdG8gYSBzcGVjaWZpYyBydW5uaW5nIHRpbWUuCgkgIEFQSTogR3N0U2VnbWVudDo6Z3N0X3NlZ21lbnRfc2V0X3J1bm5pbmdfdGltZSgpCgoyMDA5LTA2LTA0IDAwOjM3OjI4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICBwbzogdXBkYXRlIC5wbyBmaWxlcyBmb3Igc3RyaW5nIGNoYW5nZXMKCSAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgcGVvcGxlIHdobyBnZXQgdGhlbXNlbHZlcyBhIGZyZXNoIGNoZWNrb3V0CgkgIGRvbid0IGltbWVkaWF0ZWx5IGhhdmUgY2hhbmdlZCAqcG8gZmlsZXMgYWZ0ZXIgcnVubmluZyBtYWtlLCB3aGljaAoJICB3b3VsZCBjYXVzZSBhIGJpdCBvZiBoYXNzbGUgbmV4dCB0aW1lIHRoZSBmaWxlcyBhcmUgdXBkYXRlZC4gQmV0dGVyCgkgIHRvIGtlZXAgdGhlbSB1cC10by1kYXRlIHdoZW4gc3RyaW5ncyBjaGFuZ2UuCgoyMDA5LTA2LTA0IDAwOjU0OjI0ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlcnJvci5jOgoJICBlcnJvcnM6IHJld29yZCBzdGF0ZSBjaGFuZ2UgZmFpbGVkIGVycm9yIG1lc3NhZ2UgYW5kIHJlbW92ZSBidWd6aWxsYSBsaW5rCgkgIFJld29yZCB0aGlzIG1lc3NhZ2UgYSBiaXQgdG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQgaXQgbWVhbnMsIG5hbWVseSB0aGF0CgkgIHRoZSBzdGF0ZSBjaGFuZ2UgbWF5IGhhdmUgZmFpbGVkIGZvciBnb29kIHJlYXNvbnMsIGJ1dCB0aGF0IHRoZSBlbGVtZW50CgkgIGp1c3QgZmFpbGVkIHRvIHBvc3QgYSBwcm9wZXIgZXJyb3Igb24gdGhlIGJ1cy4gVGhpcyBpcyBub3QgYW4gaW50ZXJuYWwKCSAgR1N0cmVhbWVyIGJ1ZywgYW5kIHdlIHJlYWxseSBkb24ndCBuZWVkIHBlb3BsZSB0byBmbG9vZCBidWd6aWxsYSB3aXRoCgkgIGJ1ZyByZXBvcnRzIGlmIG9uZSBzdWNoIHBsdWdpbiBidWcgZXZlciBtYWtlcyBpdCBpbnRvIHRoZSB3aWxkLgoKMjAwOS0wNi0wNCAwMDoyOTozMSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIGdzdC1sYXVuY2g6IHJlZmVyIHRvIGVsZW1lbnQsIHBhZCwgb3Igb2JqZWN0IGluIHNvbWUgbWVzc2FnZSBzdHJpbmdzCgkgIFJldmlzaXQgdGhlc2Ugc3RyaW5ncyBub3cgdGhhdCB0aGUgY2hhbmdlIHJlZ2FyZGluZyB0aGUgbWVzc2FnZSBzb3VyY2UKCSAgb2JqZWN0IGluIGdzdF9lbGVtZW50X2ZvdW5kX3RhZ3NfZm9yX3BhZCgpIGdvdCByZXZlcnRlZC4gVHJ5IHRvIHJlZmVyCgkgIGV4cGxpY2l0bHkgdG8gd2hhdCBraW5kIG9mIGVsZW1lbnQgaXQgaXMgKGVsZW1lbnQsIHBhZCwgZXRjLikgaW4gc29tZQoJICBjYXNlcywgd2hpY2ggaXMgbmljZXIgdGhhbiBoYXZpbmcgdG8gZGVkdWNlIHRoaXMgaW5mbyAoYW5kIHdlIGNhbgoJICByZS11c2UgdGhlIGFscmVhZHkgZXhpc3RpbmcgdHJhbnNsYXRlZCBzdHJpbmdzIGZvciB0aGUgbW9zdCBjb21tb24KCSAgY2FzZSkuIEl0IGFsc28gbWFrZXMgZm9yIGJldHRlciBleGFtcGxlIGNvZGUsIHNpbmNlIGl0J3MgY2xlYXIgbm93CgkgIHRoYXQgdGhlIG1lc3NhZ2Ugc291cmNlIG9iamVjdCBkb2Vzbid0IGhhdmUgdG8gYmUgYW4gZWxlbWVudC4KCjIwMDktMDYtMDMgMjE6MTA6MzkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgQVBJOiBhZGQgR1NUX01FU1NBR0VfU1JDX05BTUUgbWFjcm8KCSAgQWRkIEdTVF9NRVNTQUdFX1NSQ19OQU1FIG1hY3JvIHRoYXQgYWx3YXlzIHJldHVybnMgYSBub24tTlVMTCBzdHJpbmcuCgkgIFVzZWZ1bCBmb3IgZGVidWdnaW5nIGFuZCBsb2dnaW5nIHB1cnBvc2VzLgoKMjAwOS0wNi0wMyAxOTowNjozMCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3RzZWdtZW50LmM6CgkqIGdzdC9nc3RzZWdtZW50Lmg6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBzZWdtZW50OiBhZGQgbWV0aG9kIGZvciBjb252ZXJ0aW5nIHRvIHBvc2l0aW9uCgkgIEFkZCBnc3Rfc2VnbWVudF90b19wb3NpdGlvbigpIHRoYXQgY29udmVydHMgYSBydW5uaW5nX3RpbWUgdG8gYSBwb3NpdGlvbiBpbiB0aGUKCSAgc2VnbWVudC4gQSBmYXVsdHkgdmFyaWFudCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSB1c2VkIGluIGlucHV0c2VsZWN0b3IKCSAgYnV0IHdlJ2xsIG5lZWQgaXQgZm9yIGZyYW1lIHN0ZXBwaW5nIHRvby4KCSAgQVBJOiBHc3RTZWdtZW50Ojpnc3Rfc2VnbWVudF90b19wb3NpdGlvbigpCgoyMDA5LTA2LTAzIDE1OjM5OjEzICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazsgaGFuZGxlIEVPUyBjb3JyZWN0bHkuCgkgIEhhbmRsZSBFT1MgYW5kIGJ1ZmZlcnMgd2l0aG91dCBhIHRpbWVzdGFtcCBncmFjZWZ1bGx5LgoJICBSZW1vdmUgYSB3YXJuaW5nIHRoYXQgaXMgbm90IHNvIG11Y2ggYSB3YXJuaW5nIG5vdyBhbnltb3JlLgoKMjAwOS0wNi0wMyAwOTo0NToyNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBhdXRvZ2VuLnNoOgoJKiBjb21tb246CgkqIGNvbmZpZ3VyZS5hYzoKCSAgUmV2ZXJ0ICJnbyBiYWNrIHRvIGFsbG93aW5nIGdldHRleHQgMC4xMS41LCBidXQgZG9uJ3QgbWl4IHdpdGggbGlidG9vbCAyLjIiCgkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzFjMDlkNzM4Y2U3ZjQ3YmZmOWQyOTI5OTZlOTQ4OWMyNzVlNTVhMS4KCSAgUmV2ZXJ0aW5nIHRoaXMsIHNpbmNlIGl0IGJyZWFrcyBhdXRvZ2VuLnNoIGZvciBtZSBvbiBkZWJpYW4gc2lkLgoJICBGYWlsdXJlIGlzOiAibGlidG9vbCAyLjIgcmVxdWlyZXMgYXV0b3BvaW50IDAuMTcgb3IgaGlnaGVyIiBldmVuIHRob3VnaAoJICAwLjE3IHdhcyBmb3VuZC4KCjIwMDktMDYtMDMgMDk6NDE6MjEgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogYXV0b2dlbi5zaDoKCSAgUmV2ZXJ0ICJvbmx5IHVwZGF0ZSBzdWJtb2R1bGUgd2hlbiBpdCBpcyBub3Qgb24gYSBzcGVjaWZpYyBicmFuY2giCgkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgOTNiODMzMzNhYWQ1MTljNTU1NTE1NjU3NmYwYmFhM2JlN2IyNjNmMy4KCSAgUmV2ZXJ0aW5nIHNpbmNlIHRoaXMgZmFpbHMgb24gYSBmcmVzaCBjaGVja291dC4gQWxzbywgd2Ugc2hvdWxkbid0CgkgIGRlcGVuZCBvbiBwb3NzaWJseSB0cmFuc2xhdGVkIHN0cmluZ3MuCgoyMDA5LTA2LTAzIDAxOjU2OjEwICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC1jb21wb25lbnRzLnhtbDoKCSAgZG9jczogZml4IHVwIHJlZmVyZW5jZSB0byBnc3QtbGF1bmNoLTAuOAoJICBBbHNvIG1lbnRpb24gZGVjb2RlYmluMiwgdXJpZGVjb2RlYmluLCBhbmQgcGxheWJpbjIKCjIwMDktMDYtMDMgMTA6Mzk6NTMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBmb3JnZXQgcHJldmlvdXMgdGltZXMgd2hlbiBzdGVwcGluZwoJICBXaGVuIHdlIHN0YXJ0IGEgZmx1c2hpbmcgc3RlcCBvcGVyYXRpb24sIGZvcmdldCBhYm91dCB0aGUgcHJldmlvdXMgc3RyZWFtIHRpbWUKCSAgc28gdGhhdCB0aGUgcG9zaXRpb24gcmVwb3J0aW5nIHdvcmtzIGNvcnJlY3RseS4KCjIwMDktMDYtMDMgMDE6MjU6MjYgKzAyMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogYXV0b2dlbi5zaDoKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkgIGdvIGJhY2sgdG8gYWxsb3dpbmcgZ2V0dGV4dCAwLjExLjUsIGJ1dCBkb24ndCBtaXggd2l0aCBsaWJ0b29sIDIuMgoKMjAwOS0wNi0wMyAwMTowMTo1NyArMDIwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzIChhdCkgYXBlc3RhYXJ0IChkb3QpIG9yZz4KCgkqIGF1dG9nZW4uc2g6CgkgIG9ubHkgdXBkYXRlIHN1Ym1vZHVsZSB3aGVuIGl0IGlzIG5vdCBvbiBhIHNwZWNpZmljIGJyYW5jaAoKMjAwOS0wNi0wMiAxMzo0NTo1MiAtMDcwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIHRvb2xzOiBTZXQgcGlwZWxpbmUgdG8gUEFVU0VEIGJlZm9yZSB3YWl0aW5nIGZvciBtYWluIGxvb3AgaWRsZQoJICBXaGVuIGl0IGlzIHNodXR0aW5nIGRvd24gYSBwaXBlbGluZSBhZnRlciBjdHJsLWMsIHNldCBwaXBlbGluZSB0bwoJICBwYXVzZWQgYmVmb3JlIHdhaXRpbmcgZm9yIHRoZSBtYWluIGxvb3AgdG8gY29tcGxldGUgYWxsIHBlbmRpbmcKCSAgdHJhbnNhY3Rpb25zLiAgRml4ZXMgIzU4NDY1Ny4KCSAgSWYgc29tZSBwYXJ0IG9mIHRoZSBwaXBlbGluZSBpcyBnZW5lcmF0aW5nIHNpZ25hbHMgb3IgaWRsZSBmdW5jdGlvbnMKCSAgYXQgYSBmYXN0IHJhdGUsIHdhaXRpbmcgZm9yIGEgbWFpbiBsb29wIGl0ZXJhdGlvbiBtYXkgbmV2ZXIgcmV0dXJuLgoKMjAwOS0wNi0wMiAxODozNjoxMCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdF9wcml2YXRlLmg6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogZ3N0L2dzdHZhbHVlLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgc3RydWN0dXJlOiBmaXggc2VyaWFsaXNhdGlvbiBvZiBuZXN0ZWQgc3RydWN0dXJlcy4KCSAgVXNlIHN0cmluZ193YXJwL3Vud3JhcCB0byBlc2NhcGUgZGVsaW1pdGVycywgb3RoZXJ3aXNlIGRlc2VyaWFsaXNhdGlvbiBmYWlscy4KCSAgQWxzbyBtb3ZlIEdTVF9BU0NJSV9JU19TVFJJTkcgdG8gcHJpdmF0ZSBoZWFkZXIgdG8gYXZvaWQga2VlcGluZyBpdCBpbiBzeW5jLgoJICBBbHNvIHVzZSAnXDAnIHdoZW4gdGVybWluYXRpbmcgYSBzdHJpbmcgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KCjIwMDktMDYtMDIgMTU6Mzc6MjIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBmaXggcmVncmVzc2lvbiBpbiB1bml0IHRlc3RzCgkgIFN0b3JlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGJ1ZmZlciBhZnRlciBwcmVyb2xsaW5nLiBXaGlsZSB3ZSBhcmUgcHJlcm9sbGVkIHdlCgkgIHdhbnQgdG8gcmVwb3J0IHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VnbWVudCBzdGFydCB2YWx1ZS4KCjIwMDktMDYtMDEgMjA6MjY6NTMgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGluZm8uYzoKCSAgaW5mbzogd2lkZW4gbG9nIGxldmVsIHN0cmluZ3MgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBNRU1EVU1QCgoyMDA5LTA2LTAxIDE5OjM3OjE0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogcG9zdCBhIHdhcm5pbmcgb24gZXhjZXNzaXZlIGZyYW1lZHJvcHMKCSAgV2hlbiB3ZSBnbyBpbnRvIGVtZXJnZW5jeSByZW5kZXJpbmcsIHBvc3QgYSB3YXJuaW5nIGluZm9ybWluZyB0aGUgdXNlciBhYm91dAoJICB0aGlzIGZhY3QuCgoyMDA5LTA1LTMxIDE5OjEwOjAyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogbW9yZSBzdGVwcGluZyBpbiByZXZlcnNlCgkgIEZpeCBzdGVwcGluZyBhbmQgcG9zaXRpb24gcmVwb3J0aW5nIGluIHJldmVyc2UgcGxheWJhY2suCgoyMDA5LTA1LTI5IDE2OjA2OjUyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogdXNlIHN0YXJ0X3RpbWUgYXMgdGhlIHN0ZXAgc3RhcnQKCSAgVXNlIHRoZSBzdGFydF90aW1lIG9mIHRoZSBlbGVtZW50IGFzIHRoZSBwb2ludCBmcm9tIHdoZXJlIHRoZSBzdGVwIG9wZXJhdGlvbgoJICBzdGFydHMuIFRoaXMgZml4ZXMgc3RlcHBpbmcgaW4gYWxsIHBhdXNlZCBzdGF0ZXMuCgoyMDA5LTA1LTE5IDE5OjQ1OjA2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogY2F0Y2ggc3RlcCBjYXNlcyBpbiBfd2FpdF9wcmVyb2xsKCkKCSAgV2hlbiBhIHN1YmNsYXNzIGlzIGJsb2NraW5nIGluIF93YWl0X3ByZXJvbGwoKSBpbiB0aGUgX3JlbmRlciBtZXRob2QsIG1ha2Ugc3VyZQoJICB3ZSBjYW4gdW5sb2NrIHRoZSBzdWJjbGFzcyBhbmQgZGV0ZWN0IHRoaXMgcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlbmRlciBtZXRob2QuCgoyMDA5LTA1LTE5IDEwOjUwOjU3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogbW9yZSBzdGVwcGluZyBpbiByZXZlcnNlIGZpeGVzCgoyMDA5LTA1LTE4IDE4OjQxOjQ1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBiYXNlc2luazogc21hbGwgY2xlYW51cHMKCjIwMDktMDUtMTggMTU6NDg6MjAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1mcmFtZXN0ZXAudHh0OgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJKiBnc3QvZ3N0bWVzc2FnZS5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIHRlc3RzL2V4YW1wbGVzL3N0ZXBwaW5nL2ZyYW1lc3RlcDEuYzoKCSAgZnJhbWVzdGVwOiBpbXBsZW1lbnQgYmFja3dhcmRzIGZyYW1lc3RlcAoJICBVcGRhdGUgZnJhbWVzdGVwIGRvY3VtZW50LCB3ZSB3YW50IHRvIHBhc3MgdGhlIGZsdXNoIGZsYWcgaW4gdGhlIHN0ZXAtZG9uZQoJICBtZXNzYWdlLgoJICBBZGQgZmx1c2ggZmxhZyB0byB0aGUgZ3N0bWVzc2FnZS4KCSAgVXBkYXRlIGV4YW1wbGVzIHRvIHVzZSB0aGUgbmV3IHN0ZXAtZG9uZSBtZXNzYWdlIGFwaS4KCSAgSW1wbGVtZW50IGZyYW1lc3RlcCB3aXRoIHBsYXliYWNrIHJhdGVzIDwgMC4wIHRvby4KCjIwMDktMDUtMTUgMTU6MjU6MDYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBhZGQgZnJhbWVzdGVwcGluZyBpbiB0aW1lCgoyMDA5LTA1LTE1IDE1OjI0OjMwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvZXhhbXBsZXMvc3RlcHBpbmcvZnJhbWVzdGVwMS5jOgoJICBleGFtcGxlczogc3RlcCBpbiB0aW1lIGFzIHdlbGwKCjIwMDktMDUtMTUgMTI6MDI6MDIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9leGFtcGxlcy9zdGVwcGluZy9mcmFtZXN0ZXAxLmM6CgkgIGV4YW1wbGU6IHByaW50IHN0ZXBfZG9uZSBtZXNzYWdlIGFuZCBzeW5jCgkgIER1bXAgdGhlIHN0ZXBfZG9uZSBtZXNzYWdlIGNvbnRlbnRzLgoJICBTeW5jIGFnYWluc3QgdGhlIGNsb2NrIHdoZW4gZ29pbmcgdG8gUExBWUlORy4KCjIwMDktMDUtMTUgMTI6MDU6NDQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBrZWVwIHRyYWNrIG9mIHN0ZXBwZWQgdGltZQoJICBQYXNzIHJ1bm5pbmdfdGltZSBhcm91bmQgc28gdGhhdCB0aGUgc3RlcHBpbmcgY29kZSBjYW4gY2FsY3VsYXRlIHRoZSBlbGFwc2VkCgkgIHRpbWUgY29ycmVjdGx5LgoKMjAwOS0wNS0xNCAxOToyOTowOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbms6IG1vdmUgc3R1ZmYgYXJvdW5kLCBtb3JlIHN0ZXBwaW5nCgkgIE1ha2Ugc3RhcnQgYW5kIHN0b3Bfc3RlcHBpbmcgbWV0aG9kcyBhbmQgbW92ZSB0aGVpciBpbnZvY2F0aW9uIGluIHRoZSByaWdodAoJICBwbGFjZXMuCgkgIFBlcmZvcm0gdGhlIGF0dWFsIHN0ZXBwaW5nIG9wZXJhdGlvbiB3aGVyZSB3ZSBoYXZlIGZ1bGwgY29udGV4dCBhYm91dCB0aGUKCSAgdGltZXN0YW1wcy4KCjIwMDktMDUtMTEgMTg6NTY6MDMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkqIHRlc3RzL2V4YW1wbGVzL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9leGFtcGxlcy9zdGVwcGluZy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9leGFtcGxlcy9zdGVwcGluZy9NYWtlZmlsZS5hbToKCSogdGVzdHMvZXhhbXBsZXMvc3RlcHBpbmcvZnJhbWVzdGVwMS5jOgoJICBBZGQgZnJhbWUgc3RlcHBpbmcgaW4gUEFVU0VEIGV4YW1wbGUKCjIwMDktMDUtMTEgMTg6NTY6NTYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGJhc2VzaW5rOiBmaXJzdCBzdGFiIGF0IGZyYW1lIHN0ZXBwaW5nIGluIFBBVVNFRAoJICBVbmxvY2sgdGhlIHByZXJvbGxlZCBmcmFtZSBhbmQgcmVjaGVjayBpZiB3ZSBuZWVkIHRvIHN0ZXAuCgkgIEtlZXAgYSBzaW1wbGUgY291bnRlciBmb3IgdGhlIGZyYW1lcyB3ZSdyZSBhYm91dCB0byBza2lwIHdoaWxlIHN0ZXBwaW5nIGFuZAoJICBwcmVyb2xsL3Bvc3Qgc3RlcF9kb25lIHdoZW4gc3RlcHBpbmcgZmluaXNoZWQuCgoyMDA5LTA2LTAxIDEyOjE5OjUyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9kZXNpZ24vZHJhZnQtZnJhbWVzdGVwLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGV2ZW50LmM6CgkqIGdzdC9nc3RldmVudC5oOgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJKiBnc3QvZ3N0bWVzc2FnZS5oOgoJKiBnc3QvZ3N0cXVhcmsuYzoKCSogZ3N0L2dzdHF1YXJrLmg6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBhZGQgbmV3IEFQSSBmb3IgZnJhbWVzdGVwcGluZwoJICBBZGQgbmV3IFNURVAgZXZlbnQgYW5kIG1ldGhvZHMgZm9yIGNyZWF0aW5nL3BhcnNpbmcgdGhlIGV2ZW50CgkgIFVwZGF0ZSBkZXNpZ24gZG9jcy4KCSAgQWRkIG5ldyBTVEVQX0RPTkUgbWVzc2FnZSBhbmQgbWV0aG9kIHRvIGNyZWF0ZS9wYXJzZS4KCSAgQVBJOiBHc3RFdmVudDo6Z3N0X2V2ZW50X25ld19zdGVwKCkKCSAgQVBJOiBHc3RFdmVudDo6Z3N0X2V2ZW50X3BhcnNlX3N0ZXAoKQoJICBBUEk6IEdzdE1lc3NhZ2U6OmdzdF9tZXNzYWdlX25ld19zdGVwX2RvbmUoKQoJICBBUEk6IEdzdE1lc3NhZ2U6OmdzdF9tZXNzYWdlX3BhcnNlX3N0ZXBfZG9uZSgpCgoyMDA5LTA2LTAxIDEwOjA1OjMyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgc3RydWN0dXJlczogZG9uJ3QgbGVhayBpbnZhbGlkIG9yIGVtcHR5IHN0cmluZ3Mgd2hlbiB3ZSB3YXJuCgkgIEZpeGVzIG1pbm9yIG1lbW9yeSBsZWFrIGluIHVuaXQgdGVzdHMgY2F1c2VkIGJ5IHRoZSByZWNlbnQgY2hhbmdlcy4KCSAgU2luY2Ugd2UncmUgZXhwZWN0ZWQgdG8gdGFrZSBvd25lcnNoaXAgb2YgdGhlIEdWYWx1ZSBpbiB0aGUgc3RydWN0dXJlCgkgIGZpZWxkIHN0cnVjdCBoZXJlLCB3ZSBuZWVkIHRvIHVuc2V0IGl0IGlmIHdlIGRvbid0IHVzZSBpdC4KCjIwMDktMDYtMDEgMTE6MDg6MzEgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOgoJICBjb250cm9sbGVyOiBhZGQgdGVzdCBmb3IgY3ViaWMgaW50LiBhbmQgdG9vIGZldyBjb250cm9sIHBvaW50cwoJICBBZGRlZCBhbm90aGVyIHRlc3RzIHRvIGNoZWNrIHNvbWUgd29ycmllcyBpbiBCdWcgIzU4MjU2NC4KCjIwMDktMDUtMjggMTI6MzE6MDggKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBmYWtlc3JjOiBhZGQgYSBGSVhNRSBjb21tZW50IGZvciBibG9ja3NpemUgdnMuIHNpemUtbWF4IHByb3BlcnR5IGlzc3VlCgoyMDA5LTA1LTMxIDIxOjI3OjQwICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5oOgoJICBpZGVudGl0eTogaGFjayBhcm91bmQgZ19vYmplY3Rfbm90aWZ5KCkgYnVnIGJ5IHByb3RlY3RpbmcgaXQgd2l0aCBhIGxvY2sKCSAgT3V0LW9mLWJhbmQgZXZlbnRzIG1pZ2h0IGxlYWQgdG8gdXMgY2FsbGluZyBnX29iamVjdF9ub3RpZnkoKSBmcm9tIGEKCSAgbm9uLXN0cmVhbWluZyB0aHJlYWQsIHdoaWNoIGNhbiBjYXVzZSBjcmFzaGVzIGlmIGdfb2JqZWN0X25vdGlmeSgpIGlzCgkgIGJlaW5nIGNhbGxlZCBmcm9tIHRoZSBzdHJlYW1pbmcgdGhyZWFkIGF0IHRoZSBzYW1lIHRpbWUuIFNlZSAjNTU0NDYwLgoKMjAwOS0wNS0zMSAyMjozNzo1OSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogdGVzdHMvYmVuY2htYXJrcy9jb250cm9sbGVyLmM6CgkgIGNvbnRyb2xsZXI6IHVzZSByZWFsIHdvcmxkIG51bWJlciBpbiBiZW5jaG1hcmsKCjIwMDktMDUtMzEgMjI6Mzc6MDMgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RyZWdpc3RyeS5jOgoJICByZWdpc3RyeTogZml4IGNvbW1lbnQgZm9ybWF0dGluZwoKMjAwOS0wNS0zMCAyMDozNjoyNSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuaDoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6CgkgIGZha2VzaW5rOiBoYWNrIGFyb3VuZCBjcmFzaGVyIGJ1ZyBpbiBnX29iamVjdF9ub3RpZnkoKSBmb3Igb3V0LW9mLWJhbmQgZXZlbnRzCgkgIEdPYmplY3QgbWF5IGNyYXNoIGlmIHR3byB0aHJlYWRzIGRvIGNvbmN1cnJlbnQgZ19vYmplY3Rfbm90aWZ5KCkgb24gdGhlIHNhbWUKCSAgb2JqZWN0LiBUaGlzIG1heSBoYXBwZW4gaWYgZmFrZXNpbmsgcmVjZWl2ZXMgYW4gb3V0LW9mLWJhbmQgZXZlbnQgc3VjaCBhcwoJICBGTFVTSF9TVEFSVCB3aGlsZSBwcm9jZXNzaW5nIGEgYnVmZmVyIG9yIHNlcmlhbGlzZWQgZXZlbnQgaW4gdGhlIHN0cmVhbWluZwoJICB0aHJlYWQuIFNpbmNlIHRoaXMgbWF5IGhhcHBlbiB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzIGR1cmluZyBhIGNvbW1vbgoJICBvcGVyYXRpb24gbGlrZSBhIHNlZWssIGFuZCB0aGVyZSBzZWVtcyB0byBiZSBsaXR0bGUgY2hhbmNlIG9mIGEgdGltZWx5IGZpeAoJICBpbiBHT2JqZWN0IChzZWUgIzE2NjAyMCksIHdlIHNob3VsZCBoYWNrIGFyb3VuZCB0aGlzIGlzc3VlIGJ5IHByb3RlY3RpbmcgYWxsCgkgIG9mIGZha2VzaW5rJ3MgZGlyZWN0IGdfb2JqZWN0X25vdGlmeSgpIGNhbGxzIHdpdGggYSBsb2NrLgoJICBBbHNvIGFkZCB1bml0IHRlc3QgZm9yIHRoZSBhYm92ZS4KCSAgRml4ZXMgIzU1NDQ2MC4KCjIwMDktMDUtMzEgMTY6MTc6NDUgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgdGFnbGlzdHM6IG1ha2UgX2dldF97c3RyaW5nfHBvaW50ZXJ9IHJldHVybiBGQUxTRSBmb3IgTlVMTCB2YWx1ZXMKCSAgTWFrZSBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZygpIHJldHVybiBGQUxTRSBmb3IgTlVMTCBzdHJpbmdzIGFuZAoJICBlbXB0eSBzdHJpbmdzLCBhbmQgZ3N0X3RhZ19saXN0X2dldF9wb2ludGVyKCkgcmV0dXJuIEZBTFNFIGZvcgoJICBOVUxMIHBvaW50ZXJzLCBsaWtlIHdlIGRvIHdpdGggZGF0ZXMgYW5kIGJ1ZmZlcnMuCgkgIEZpeGVzICM1NjAzNDUuCgoyMDA5LTA1LTMwIDIwOjUwOjQwICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkgIHRhZ2xpc3RzOiB3YXJuIGlmIHNvbWVvbmUgdHJpZXMgdG8gYWRkIGVtcHR5IG9yIE5VTEwgc3RyaW5nIHRhZ3MgdG8gYSB0YWdsaXN0CgkgIEFsc28gd2FybiBpZiBhbiBlbGVtZW50IG9yIGFwcGxpY2F0aW9uIHRyaWVzIHRvIGFkZCBhIGZpZWxkIHdpdGggYW4KCSAgZW1wdHkgc3RyaW5nIHRvIGEgc3RydWN0dXJlIChOVUxMIHN0cmluZ3MgYXJlIHN0aWxsIG5lZWRlZCBhbmQKCSAgYWxsb3dlZCB0aG91Z2gpIGFuZCBkbyBhbGwgdGhvc2UgY2hlY2tzIGluIHRoZSByaWdodCBmdW5jdGlvbi4KCSAgRml4ZXMgIzU1OTY0My4KCjIwMDktMDUtMjkgMTg6MjI6NDIgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGV2ZW50LmM6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkqIGdzdC9nc3RxdWVyeS5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHN0cnVjdHVyZTogYWRkIGdzdF9zdHJ1Y3R1cmVfaWRfbmV3KCkgY29udmVuaWVuY2UgZnVuY3Rpb24KCSAgQWRkIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGdzdF9zdHJ1Y3R1cmVfaWRfZW1wdHlfbmV3KCkgcGx1cwoJICBnc3Rfc3RydWN0dXJlX2lkX3NldCgpIGFuZCB1c2UgaXQgaW4gYSBmZXcgcGxhY2VzLgoJICBBUEk6IGdzdF9zdHJ1Y3R1cmVfaWRfbmV3KCkKCjIwMDktMDUtMjkgMTg6MDA6MDYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGV2ZW50LmM6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkqIGdzdC9nc3RxdWFyay5jOgoJKiBnc3QvZ3N0cXVhcmsuaDoKCSogZ3N0L2dzdHF1ZXJ5LmM6CgkqIGdzdC9nc3R0YWdsaXN0LmM6CgkgIG1pY3JvLW9wdGltaXNhdGlvbjogdXNlIEdTVF9RVUFSSyBpbiBtb3JlIHBsYWNlcwoJICBVc2UgZ3N0X3N0cnVjdHVyZV9pZF9lbXB0eV9uZXcoKSBpbiBjb21iaW5hdGlvbiB3aXRoIEdTVF9RVUFSSwoJICByYXRoZXIgdGhhbiBnc3Rfc3RydWN0dXJlX2lkX25ldygpIHdoZW4gY3JlYXRpbmcgbWVzc2FnZSwgZXZlbnQsCgkgIHF1ZXJ5IGFuZCB0YWdsaXN0IHN0cnVjdHVyZXMuIE1vc3RseSBqdXN0IGJlY2F1c2Ugd2UgY2FuLgoKMjAwOS0wNS0yOSAxNjowNDoyOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGVsZW1lbnQ6IHJlc2V0IHN0YXJ0X3RpbWUgaW4gbG9zdCBzdGF0ZQoKMjAwOS0wNS0yOSAxMzowMzoxNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJICBkb2NzOiB1cGRhdGUgZWxlbWVudCBhbiBwaXBlbGluZSBkb2NzCgoyMDA5LTA1LTI5IDEyOjQ4OjI4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgZG9jczogcmVtb3ZlIGEgVE9ETyBpdGVtIHRoYXQgaXMgZml4ZWQgbm93CgoyMDA5LTA1LTI5IDEyOjIxOjM2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBpcGVsaW5lLmM6CgkqIGdzdC9nc3RwaXBlbGluZS5oOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgcGlwZWxpbmU6IGRlcHJlY2F0ZSBvbGQgbWV0aG9kcywgZml4IHRlc3QKCSAgRGVwcmVjYXRlIHRoZSBvbGQgX3NldF9zdHJlYW1fdGltZSBhbmQgX2dldF9sYXN0X3N0cmVhbV90aW1lIG1ldGhvZHMgYmVjYXVzZQoJICB0aGV5IGFyZSBub3cgZXF1aXZhbGVudCB0byB0aGUgYmV0dGVyIG5hbWVkIF9zZXQvX2dldF9zdGFydF90aW1lLgoKMjAwOS0wNS0yOCAxNjozMDo1MiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSAgcGlwZWxpbmU6IHVzZSBTVEFSVF9USU1FIHRvIGtlZXAgdHJhY2sgb2YgdGltZQoJICBVc2UgdGhlIGVsZW1lbnQgU1RBUlRfVElNRSB0byBrZWVwIHRyYWNrIG9mIHRoZSBydW5uaW5nIHRpbWUgd2hlbiB0aGUgcGlwZWxpbmUKCSAgcGF1c2VkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgdG8gcmVzdG9yZSB0aGUgYmFzZV90aW1lLgoJICBUYWtlIHRoZSBzdGFydF90aW1lIGJlZm9yZSBzZXR0aW5nIHRoZSBjaGlsZHJlbiB0byBQQVVTRUQgc28gdGhhdCB3ZSBjYW4KCSAgZGlzdHJpYnV0ZSB0aGUgc3RhcnRfdGltZSB0byB0aGUgY2hpbGRyZW4uCgoyMDA5LTA1LTI4IDE1OjQwOjAxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGJpbi5jOgoJICBiaW46IHNldCB0aGUgYmFzZV90aW1lIGFuZCBzdGFydF90aW1lIGJldHRlcgoJICBTaW1wbHkgc2V0IHRoZSBzdGFydF90aW1lIGFuZCBiYXNlX3RpbWUgb24gdGhlIGVsZW1lbnQgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZQoJICBzZXR0ZXJzLgoKMjAwOS0wNS0yNyAxMTozNTo1OCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBtYWtlIHRoZSBiaW4gc2V0IHRoZSBzdGFydF90aW1lIG9uIGVsZW1lbnRzCgkgIFNldCB0aGUgc3RhcnRfdGltZSBvZiB0aGUgYmluIG9uIHRoZSBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHRoZQoJICBwaXBlbGluZSBhbmQgd2hlbiBhIHN0YXRlIGNoYW5nZSBoYXBwZW5zLgoKMjAwOS0wNS0yNiAxMTo1MzowNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBlbGVtZW50OiBhZGQgc3RhcnRfdGltZSBmaWVsZCBhbiBtZXRob2RzCgkgIEFkZCBhIHN0YXJ0X3RpbWUgZmllbGQgYW5kIHNvbWUgbWV0aG9kcy4gVGhlIHN0YXJ0X3RpbWUgd2lsbCBjb250YWluIHRoZQoJICBydW5uaW5nX3RpbWUgb2Ygd2hlbiB0aGUgZWxlbWVudCBsYXN0IHdlbnQgdG8gcGF1c2VkLiBUaGlzIHRpbWUgY2FuIGJlIHVzZXIgdG8KCSAgcmVwb3J0IHRoZSBwb3NpdGlvbiBpbiBQQVVTRUQgYnV0IGFsc28gdG8gZG8gbW9yZSBjb3JyZWN0IGNsaXBwaW5nIGFuZAoJICBzdGVwcGluZyBsYXRlci4KCjIwMDktMDUtMjggMjI6MDI6MjEgKzAyMDAgIEFybm91dCBWYW5kZWNhcHBlbGxlIDxhcm5vdXRAbWluZC5iZT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiB0ZXN0cy9jaGVjay9saWJzL2FkYXB0ZXIuYzoKCSAgYWRhcHRlcjogZml4IF9tYXNrZWRfc2Nhbl91aW50MzIoKSBhdCBib3VuZGFyaWVzCgkgIGdzdF9hZGFwdGVyX21hc2tlZF9zY2FuX3VpbnQzMiBjb3VsZCByZXR1cm4gdmFsdWVzIHNtYWxsZXIgdGhhbiBvZmZzZXQKCSAgaWYgdGhlIGZpcnN0IGJ5dGUocykgb2YgdGhlIG1hc2sgYXJlIDAgYW5kIHRoZSBwYXR0ZXJuIG1hdGNoZXMgdGhlCgkgIGJlZ2lubmluZyBvZiB0aGUgYWRhcHRlci4KCSAgQWRkZWQgZXhhbXBsZXMgdG8gZG9jdW1lbnRhdGlvbiBvZiBnc3RfYWRhcHRlcl9tYXNrZWRfc2Nhbl91aW50MzIoKS4KCSAgQWxzbyBhZGRlZCBzb21lIG1vcmUgbWFza2VkIGJvdW5kYXJ5IHRlc3RzLgoJICBGaXhlcyAjNTg0MTE4CgoyMDA5LTA1LTI4IDE2OjM2OjMyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cGFkLmg6CgkgIHBhZDogYWRkIHBhZCBwcml2YXRlIHN0cnVjdHVyZQoJICBBZGQgcGFkIHByaXZhdGUgc3RydWN0dXJlIGFuZCBtb3ZlIHRoZSBuZXcgY2hhaW5saXN0ZnVuYyBpbnRvIHRoZSBwcml2YXRlCgkgIHN0cnVjdC4gVGhpcyBhdm9pZHMgQUJJIGJyZWFrYWdlIGFuZCBhbGxvd3MgdXMgdG8gZXhwYW5kIGluIHRoZSBmdXR1cmUuCgoyMDA5LTA1LTI3IDE2OjM0OjE5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgQWRkIG1pc3Npbmcgc3ltYm9sIHRvIHRoZSB3aW4zMiBleHBvcnRzCgkgIFRoaXMgd2FzIGFjY2lkZW50aWFsbHkgcmVtb3ZlZCBieSBteSBsYXN0IGNvbW1pdC4KCjIwMDktMDUtMjcgMTY6MTc6MzEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YnVmZmVyLmM6CgkgIGJ1ZmZlcjogYXZvaWQgbWVtb3J5IGxlYWtzCgkgIEF2b2lkIGxlYWtpbmcgdGhlIGNhcHMgb2YgdGhlIGRlc3QgYnVmZmVyIGFuZCBhdm9pZCBkb2luZyBuZWVkbGVzcyBjYXBzCgkgIHJlZnMuCgkgIFdoZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGJ1ZmZlcnMgYXJlIHRoZSBzYW1lLCByZXR1cm4gaW1tZWRpYXRseS4KCjIwMDktMDUtMjcgMTQ6MzI6NTEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFQSTogQWRkIGdzdF9tZXNzYWdlX3tuZXcscGFyc2V9X3RhZ19mdWxsKCkgdG8gZ2V0L3NldCB0aGUgc291cmNlIHBhZAoJICBGaXhlcyBidWcgIzU4MjU4OC4KCjIwMDktMDUtMjcgMTQ6MDY6MTMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIFJldmVydCAiZWxlbWVudDogU2V0IHRoZSBvcmlnaW5hdGluZyBwYWQgYXMgbWVzc2FnZSBzb3VyY2UgaW4gZ3N0X2VsZW1lbnRfZm91bmRfdGFnc19mb3JfcGFkICgpIgoJICBUaGlzIHJldmVydHMgY29tbWl0IGJlYmZkZTc1MDI3ZTk3NWI3ZTdjNzRjNjM1OGM1YmU4M2VhNGFjOWYuCgkgIFRoaXMgY2hhbmdlIHNob3VsZG4ndCBiZSBkb25lIGluIGEgc3RhYmxlIHJlbGVhc2Ugc2VyaWVzIGFzCgkgIGFwcGxpY2F0aW9ucyBhcmUgYWN0dWFsbHkgZXhwZWN0aW5nIHRoZSBzZW5kZXIgdG8gYmUgYW4KCSAgR3N0RWxlbWVudC4gT25lIGV4YW1wbGUgaXMgdG90ZW0uCgoyMDA5LTA1LTI2IDExOjM1OjQ5ICswMTAwICBKYW4gU2NobWlkdCA8amFuLnNjaG1pZHRAc3VuLmNvbT4KCgkqIGNvbW1vbjoKCSAgVXBkYXRlIGNvbW1vbgoKMjAwOS0wNS0yNiAxMDo0MToyOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBNYWtlZmlsZS5hbToKCSAgRml4ICdtYWtlIGRpc3RjaGVjaycKCSAgVGhlIGNoZWNrLWVudW0tZ2V0dHlwZXMgcnVsZSBkaWRuJ3Qgd29yayBmb3IgJ21ha2UgZGlzdGNoZWNrJyBzaW5jZQoJICBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIHNvdXJjZSBmaWxlcyBmcm9tIHRoZQoJICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHdoaWNoIGlzbid0IHRydWUgZHVyaW5nIGRpc3RjaGVja2luZy4KCjIwMDktMDUtMjYgMTA6Mzg6NTYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9tYW51YWxzLm1hazoKCSAgbWFudWFscy5tYWs6IGF0dGVtcHQgdG8gbWFrZSAnbWFrZSBkaXN0Y2hlY2snIHdvcmsgd2l0aCAtak4KCSAgQXR0ZW1wdCB0byBmaXggdGhlICdjYW5ub3QgY3JlYXRlIHJlZ3VsYXIgZmlsZSBidWlsZC9pbWFnZS5lbnRpdGl0ZXM6CgkgIGZpbGUgZXhpc3RzJyBlcnJvciBJIGdvdC4KCjIwMDktMDUtMjUgMjM6NTg6MzcgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBkb2NzOiBmaXggY2RwYXJhbm9pYSBleGFtcGxlIHBpcGVsaW5lIGluIGdzdC1sYXVuY2ggbWFuIHBhZ2UKCjIwMDktMDUtMjUgMTg6NDQ6MTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBlbGVtZW50OiBmaXggdHlwbyBpbiBjb21tZW50cwoKMjAwOS0wNS0yNSAxNzo0MzozMiArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy9NYWtlZmlsZS5hbToKCSAgZGlzdDogRml4IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gZGlzdDogdGVzdHJ0cG9vbC5oLCBub3QgcnRwb29sLXRlc3QuaAoKMjAwOS0wNS0yNSAxNzowMzowNSArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogY29tbW9uOgoJICBVcGRhdGUgY29tbW9uCgoyMDA5LTA1LTI1IDE2OjU0OjI1ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGNsb2NrLmM6CgkgIGNsb2NrOiByZW1vdmUgYXNzZXJ0aW9uCgkgIFJlbW92ZSBhbiBhc3NlcnRpb24sIHRoaXMgaXMgbm90IHJlYWxseSBhbiBlcnJvciBpbiBhbGwgY2FzZXMuCgkgIEZpeGVzICM1ODIwMTAKCjIwMDktMDUtMjUgMTY6MjE6NTUgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgY2xvY2s6IGVuYWJsZSBtb25vdG9uaWMgY2xvY2sgd2hlbiB3ZSBjYW4KCSAgRW5hYmxlIHRoZSBtb25vdG9uaWMgY2xvY2sgYnkgZGVmYXVsdCB3aGVuIHdlIGNhbi4KCSAgRml4ZXMgIzU4MzU1NAoKMjAwOS0wNS0yNSAxNDo1MjoxMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL2RyYWZ0LWtsYXNzLnR4dDoKCSAgZG9jczogYWRkIEltYWdlIHRvIGRyYWZ0IGtsYXNzIGRvY3VtZW50YXRpb24KCjIwMDktMDUtMjUgMTM6MDM6NDIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIHBhZDoga2VlcCB0YXNrIHJlZiBiZWZvcmUgcmVsZWFzaW5nIHRoZSBsb2NrCgkgIEtlZXAgYSByZWYgdG8gdGhlIHRhc2sgb24gdGhlIHBhZCBzbyB0aGF0IGEgY29uY3VycmVudCBzdG9wIGNhbiBzdG9wIGFuZCBqb2luCgkgIHRoZSB0YXNrLgoKMjAwOS0wNS0yNSAxMTo1Njo0NyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0YXNrLmM6CgkgIGdzdHRhc2s6IGF2b2lkIGpvaW4gdG8gcmV0dXJuIGVhcmx5CgkgIFVuc2V0IHRoZSBydW5uaW5nIGZsYWcgYWZ0ZXIgd2UgcmVsZWFzZWQgdGhlIGxvY2sgZm9yIHBvc3RpbmcgdGhlIHN0cmVhbS1zdGF0dXMKCSAgbWVzc2FnZS4gSWYgd2Ugc2V0IHRoZSBydW5uaW5nIGZsYWcgdG8gRkFMU0UgdG9vIGVhcmx5LCB0aGUgam9pbiBtZXRob2Qgd2lsbAoJICBqdXN0IGNvbnRpbnVlIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gYmUgcG9zdGVkLCBsZWFkaW5nIHRvIHBvdGVudGlhbAoJICBjcmFzaGVzLgoKMjAwOS0wNS0yNCAyMzoxNDoyNiArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHByZXNldC5jOgoJICBwcmVzZXQ6IGZpeCB1cGRhdGUgcnVsZQoJICBPbmx5IHVwZGF0ZSB0aGUgcHJlc2V0IGZyb20gc3lzdGVtLCBpZiB3ZSBoYWQgYSBwcmVzZXQgYmVmb3JlIGFuZCBzeXN0ZW0KCSAgdmVyc2lvbiBpcyBuZXdlci4KCjIwMDktMDUtMjIgMjM6NDc6MzAgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHRlc3RzL2JlbmNobWFya3MvLmdpdGlnbm9yZToKCSogdGVzdHMvYmVuY2htYXJrcy9NYWtlZmlsZS5hbToKCSogdGVzdHMvYmVuY2htYXJrcy9jb250cm9sbGVyLmM6CgkgIGNvbnRyb2xsZXI6IGFkZCBhIGJlbmNobWFyayB0byB2ZXJpZnkgdGhlIHN3aXRjaCB0byBnc2VxdWVuY2UKCjIwMDktMDUtMjIgMjM6NTA6NTggKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvYXVkaW8tZXhhbXBsZS5jOgoJICBjb250cm9sbGVyOiBhZGQgbW9yZSBlcnJvciBoYW5kbGluZyB0byBleGFtcGxlCgoyMDA5LTA1LTIyIDIzOjE0OjQxICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgcmVnaXN0cnk6IGRvbid0IGZyZWUgbm9kZS1kYXRlIGFuZCBkZXJlZiBhZ2Fpbi4gRml4ZXMgIzU4MDU3OQoJICBXaGVuIHdyaXRpbmcgYSBjYWNoZSBjaHVuayBmYWlscywgd2Ugd2VyZSBmcmVlaW5nIHRoZSBub2RlIGFuZCBqdW1wIHRvIGEgZmluYWwKCSAgY2xlYW51cCB3aGljaCBkZXJlZmVyZW5jZWQgYSBudWxsIHBvaW50ZXIuIExldmUgZnJlZWluZyB0aGUgbm9kZSB0byB0aGUgY2xlYW51cAoJICBjb2RlIGluIGZhaWxfZnJlZV9saXN0LiAoc29ycnkgZm9yIGNvbW1pdHRpbmcgd3JvbmcgZml4IGJlZm9yZSkuCgoyMDA5LTA1LTIyIDIzOjEwOjAwICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgcmVnaXN0cnk6IGRvbid0IGZyZWUgbm9kZS1kYXRlIGFuZCBkZXJlZiBhZ2Fpbi4gRml4ZXMgIzU4MDU3OQoJICBXaGVuIHdyaXRpbmcgYSBjYWNoZSBjaHVuayBmYWlscywgd2Ugd2VyZSBmcmVlaW5nIHRoZSBub2RlIGFuZCBqdW1wIHRvIGEgZmluYWwKCSAgY2xlYW51cCB3aGljaCBkZXJlZmVyZW5jZWQgYSBudWxsIHBvaW50ZXIuIExldmUgZnJlZWluZyB0aGUgbm9kZSB0byB0aGUgY2xlYW51cAoJICBjb2RlIGluIGZhaWxfZnJlZV9saXN0LgoKMjAwOS0wNS0yMiAxNDoxNzo1NiArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgY29udHJvbGxlcjogYWRkIEdfTElLRUxZIGFuZCBqb2luIHR3byBpZiBmb3Igc2FtZSBjb25kaXRpb24KCSAgQSBHX0xJS0VMWSBmb3IgdGhlIHNlcXVlbmNlIT1OVUxMIGNoZWNrcy4gSm9pbiB0d28gaWZzIHRvIGFuIGlmLWVsc2UuIEFkZAoJICBpbmRlbnQgZ3VpZGVzIHRvIGtlZXAgaW5kZW50IGZvcm0gYnJlYWtpbmcgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uCgoyMDA5LTA1LTIyIDEyOjU3OjEwICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOgoJICBnc3R0eXBlZmluZGhlbHBlcjogRml4IGluZGVudGF0aW9uCgoyMDA5LTA1LTIyIDEyOjI0OjIyICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cXVlcnkuYzoKCSogZ3N0L2dzdHRhc2suYzoKCSAgZG9jczogZml4IGd0ay1kb2Mgd2FybmluZ3MKCSAgTW92ZSBNVCBzYWZldHkgdG8gbWFpbiBkZXNjcmlwdGlvbiAoaXQgZG9lcyBub3QgYmVsb25nIHRvIFJldHVybjogb3IgU2luY2U6CgkgIHN0YXRlbWVudCkuIEFkZCBhIGZldyBtaXNzaW5nIHJldHVybiBkb2NzLiBEb3duZ3JhZGUgYSBub3JtYWwgY29tbWVudCBmcm9tYSBkb2MKCSAgY29tbWVudC4gRml4IGEgZG9jIGhlYWRlciB0byBvbmx5IGNvbnRhaW4gc3ltYm9sIG5hbWUuCgoyMDA5LTA1LTIyIDEwOjE5OjM2ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIGQzYThmYWIgdG8gODg4ZTBhMgoKMjAwOS0wNS0yMiAwOTo1MTo0NCArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy9NYWtlZmlsZS5hbToKCSAgZGlzdDogQWRkIHJ0cG9vbC10ZXN0LmggdG8gdGhlIHNvdXJjZXMgbGlzdCBzbyBpdCBnZXRzIGRpc3RlZC4KCSAgRml4ZXMgdGhlIGRpc3RjaGVjawoKMjAwOS0wNS0yMiAwOTo0NDoyNSArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogdGVzdHMvYmVuY2htYXJrcy8uZ2l0aWdub3JlOgoJICBnaXRpZ25vcmVzOiBJZ25vcmUgdGhlIGNsb2Nrc3RyZXNzIGJlbmNobWFyayBiaW5hcnkKCjIwMDktMDUtMjIgMDk6NDE6MzYgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICBjb250cm9sbGVyOiBTaWxlbmNlIGEgd2FybmluZyBmcm9tIHRoZSBHU2VxdWVuY2UgYmVpbmcgTlVMTC4KCSAgRml4IGEgd2FybmluZyB0aGF0IG9jY3VycyB3aGVuIHRoZSBzZWxmLT5wcml2LT52YWx1ZXMgaXMgTlVMTCBhbmQKCSAgdGhlIGNvZGUgdHJpZXMgdG8gcmV0cmlldmUgYW4gaXRlcmF0b3IgZnJvbSBpdC4gVGhlIHdhcm5pbmcgd2FzIHNob3dpbmcKCSAgdXAgaW4gdGhlIGNoZWNrcyBmb3IgdGhlIHZvbHVtZSBlbGVtZW50LgoKMjAwOS0wNS0yMiAwOTozMzowMiArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0dGFzay5jOgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSAgZG9jczogRml4IHVwIHNvbWUgZG9jdW1lbnRhdGlvbiB3YXJuaW5ncy4KCSAgU2luY2U6IHRhZ3Mgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbGFzdCB0aGluZyBpbiBhIGRvYyBibG9jaywgYXBwYXJlbnRseS4KCSAgQWRkIHNvbWUgUmV0dXJuczogZGVzY3JpcHRpb25zIHRvIHNvbWUgcmVjZW50IGZ1bmN0aW9ucy4KCjIwMDktMDUtMjEgMTc6MzI6MDAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnQuaDoKCSogZ3N0L2dzdGV2ZW50LmM6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJICBkb2NzOiB1cGRhdGUgZG9jcyBmb3Igc3RyZWFtX3RpbWUtPnJ1bm5pbmdfdGltZQoJICBDaGFuZ2Ugc29tZSBpbnN0YW5jZXMgd2hlcmUgd2Ugd3JvbmdseSByZWZlciB0byBzdHJlYW0gdGltZSB3aGVyZSBpdCBzaG91bGQgaGF2ZQoJICBiZWVuIHJ1bm5pbmcgdGltZS4KCjIwMDktMDUtMjEgMTA6NTc6NDcgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBnc3QtbGF1bmNoOiBkb24ndCB1c2UgR19HVUlOVDMyX0ZPUk1BVCBpbiB0cmFuc2xhdGFibGUgc3RyaW5nCgkgIHhnZXR0ZXh0IGRvZXNuJ3QgaGFuZGxlIHRoaXMgdmVyeSB3ZWxsLiBGaXhlcyAjNTgzNDE5LgoKMjAwOS0wNS0yMCAxNzowNzozNyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBhdXRvZ2VuLnNoOgoJICBhdXRvZ2VuLnNoOiBjYW4gcmVtb3ZlIHRoZSAtV25vLXBvcnRhYmlsaXR5IGZyb20gaGVyZSBub3cKCSAgc2luY2Ugd2UgYWRkZWQgaXQgdG8gY29uZmlndXJlLmFjLgoKMjAwOS0wNS0yMCAyMjoxODoxNiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBhZGFwdGVyOiBpbXByb3ZlIHRoZSBmbHVzaCBmdW5jdGlvbgoJICBSZW1vdmUgYSBjb21wYXJlIGFuZCBicmFuY2ggZnJvbSBmbHVzaC4KCjIwMDktMDUtMjAgMTc6MjQ6MTkgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgY29udHJvbGxlcjogZml4IGFzc2VydGlvbiB3aGVuIGZyZWVpbmcgdGhlIGNvbnRyb2wgc291cmNlCgoyMDA5LTA1LTIwIDEyOjQ4OjQxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IHBvdGVudGlhbGx5IHNhdmUgYSBtZW1jcHkgaW4gX3Rha2UKCSAgRGlyZWN0bHkgdXNlIHRoZSBhc3NlbWJsZWRfZGF0YSBpbiBfdGFrZSgpIGZ1bmN0aW9ucyB3aGVuIHdlIGNhbiBpbnN0ZWFkIG9mCgkgIGNvcHlpbmcgaXQgb3V0LgoKMjAwOS0wNS0yMCAxMTozNjoxMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBhZGFwdGVyOiBtaWNybyBvcHRpbWlzYXRpb25zCgoyMDA5LTA1LTIwIDExOjEyOjQzICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IGF2b2lkIGNvbXBhcmlzaW9ucyBpbiBmYXN0IHBhdGgKCSAgU21hbGwgdHdlYWtzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHVzZWxlc3MgY29tcGFyZXMgaW4gbG9vcHMuCgoyMDA5LTA1LTIwIDEwOjI4OjA4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svbGlicy9hZGFwdGVyLmM6CgkgIHRlc3RzOiBvbmUgbW9yZSBhZGFwdGVyIHRlc3QKCjIwMDktMDUtMjAgMTA6Mjc6NDMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgYWRhcHRlcjogYXZvaWQgYnJhbmNoIGluIGNvcHkgY29kZQoKMjAwOS0wNS0yMCAxMDo1NjoxMSArMDMwMCAgSGFubmVzIEJpc3RyeSA8YmlzdHJ5QGluZm9ybWF0aWsudW5pLWhhbWJ1cmcuZGU+CgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RwYWQuYzoKCSAgbG9hZHNhdmU6IGZpeCByZXF1ZXN0cGFkIGhhbmRsaW5nIGFuZCBzZXJpYWxpc2F0aW9uIG9yZGVyLgoJICBTdXBwb3J0IHJlcXVlc3QgcGFkcyB3aGVuIGxvYWRpbmcuIFJldmVyc2UgcGFkIHNlcmlhbGlzYXRpb24gb3JkZXIgdG8KCSAgcHJlc2VydmUgaXQgd2hlbiByZWNyZWF0aW5nIHRoZSBwaXBlbGluZS4KCjIwMDktMDUtMjAgMDA6NDU6MjcgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgIGRlZnM6IGFkZCBuZXcgc3ltYm9sCgoyMDA5LTA1LTIwIDAwOjQ0OjExICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgZG9jczogYWRkIG5ldyBzeW1ib2wgdG8gZG9jcwoKMjAwOS0wNS0yMCAwMDozNzo1MyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSogdGVzdHMvY2hlY2svbGlicy9hZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IGFkZCBfbWFza2VkX3NjYW5fdWludDMyCgkgIEFkZCBhIHJlYXNvbmFibHkgb3B0aW1pemVkIG5ldyBnc3RfYWRhcHRlcl9tYXNrZWRfc2Nhbl91aW50MzIoKSBmdW5jdGlvbgoJICB0byBzY2FuIHRoZSBhZGFwdGVyIGZvciBhIHBhdHRlcm4gYWZ0ZXIgYXBwbHlpbmcgYSBtYXNrLgoJICBBZGQgc29tZSB1bml0IHRlc3RzLgoJICBBUEk6IEdzdEFkYXB0ZXI6OmdzdF9hZGFwdGVyX21hc2tlZF9zY2FuX3VpbnQzMigpCgkgIEZpeGVzICM1ODMxODcKCjIwMDktMDUtMTkgMjI6MTM6MDQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgYWRhcHRlcjogbW9yZSBvcHRpbWlzYXRpb25zCgkgIFJlbW92ZSBkdXBsaWNhdGUgY29weSBjb2RlIChfcGVla19pbnRvIGFuZCBfY29weSkgYW5kIG1ha2UgYSB1bmlmaWVkCgkgIG9wdGltaXplZCBjb3B5IGZ1bmN0aW9uLgoKMjAwOS0wNS0xOSAxNzoxMjo0MSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkgIGNvbmZpZ3VyZTogcGFzcyAtV25vLXBvcnRhYmlsaXR5IHRvIGF1dG9tYWtlIHRvIHN1cHByZXNzIHdhcm5pbmdzCgkgIEdOVSBtYWtlIGlzIHJlcXVpcmVkLCBubyBwb2ludCBwcmV0ZW5kaW5nIG90aGVyd2lzZS4KCjIwMDktMDUtMTggMDE6MDA6MzYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGZvcm1hdC5oOgoJICBkb2NzOiBtZW50aW9uIHRoYXQgR1NUX0ZPUk1BVF97UEVSQ0VOVHxCVUZGRVJTfSBhcmUgbm90IGltcGxlbWVudGVkCgoyMDA5LTA1LTE3IDEwOjQ2OjM5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RjbG9jay5jOgoJKiBnc3QvZ3N0Y2xvY2suaDoKCSAgZ3N0Y2xvY2s6IEZpeCBBQkkgYnJlYWthZ2Ugb24gMzIgYml0IGFyY2hpdGVjdHVyZXMKCSAgVGhlIHBhZGRpbmcgb2YgR3N0Q2xvY2sgaXMgYSBHc3RDbG9ja1RpbWUgYW5kIG5vdCBhCgkgIGdwb2ludGVyLCBzbyBhZGRpbmcgYSBwb2ludGVyIHJlcXVpcmVzIHRoZSBwYWRkaW5nCgkgIHNpemUgdG8gYmUgY2hhbmdlZCBkZXBlbmRpbmcgb24gdGhlIHBvaW50ZXIgc2l6ZS4KCSAgVXNlIGFuIHVuaW9uIGluc3RlYWQuCgkgIEZpeGVzIGJ1ZyAjNTgyODc4LgoKMjAwOS0wNS0xNSAxNToyNDo0MCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAZW1iZWRkZWQudWZjZy5lZHUuYnI+CgoJKiBnc3QvZ3N0dmFsdWUuaDoKCSAgW2dzdHZhbHVlXSBhZGRzIHNhZmV0eSBwYXJlbnRoZXNpcyB0byBtYWNyb3MgbWlzc2luZyB0aGVtLgoKMjAwOS0wNS0xNSAxNDo0Mjo0OCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAZW1iZWRkZWQudWZjZy5lZHUuYnI+CgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSAgW2dzdHV0aWxzXSBBZGRzIG1vcmUgc2FmZXR5IHRvIEdTVF9XUklURV8qIGFuZCBHU1RfUkVBRF8gbWFjcm9zLgoJICBBZGRzIHNhZmV0eSAoICkgdG8gcGFyYW1ldGVycyBpbiBfR1NUX1BVVCBhbmQgX0dTVF9HRVQgbWFjcm9zLgoJICBGaXhlcyAjNTgyNzA4LgoKMjAwOS0wMy0xOSAxMTozNzoxMiArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3RjbG9jay5jOgoJKiBnc3QvZ3N0Y2xvY2suaDoKCSAgY2xvY2s6IHVzZSBzZXFsb2NrcyB0byBwYXJhbGxlbGxpemUgcmVhZGVycwoKMjAwOS0wNC0xNiAxNTo1MzoyOSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2JlbmNobWFya3MvTWFrZWZpbGUuYW06CgkqIHRlc3RzL2JlbmNobWFya3MvZ3N0Y2xvY2tzdHJlc3MuYzoKCSAgc3RyZXNzOiBhZGQgYSBjbG9jayBzdHJlc3N0ZXN0CgkgIEFkZCBhIHN0cmVzc3Rlc3QgZm9yIGdzdF9jbG9ja19nZXRfdGltZSgpLgoKMjAwOS0wNS0xNSAxMTowMDo1MyArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJKiBnc3QvTWFrZWZpbGUuYW06CgkgIE1ha2VmaWxlLmFtOiB1cGRhdGUgZm9yIGFkZGVkL21vdmVkL3JlbW92ZWQgZmlsZXMgdGhhdCB3ZXJlbid0IGRpc3QtZWQuCgoyMDA5LTA1LTEyIDExOjI5OjIxICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICBkb2NzOiBSZWxlYXNlIHNjcmlwdCBtb2RpZmljYXRpb25zCgoyMDA5LTA1LTE0IDIyOjExOjU3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2Vwcml2YXRlLmg6CgkgIGNvbnRyb2xsZXI6IFVzZSBvcmRlcmVkIEdTZXF1ZW5jZSBpbnN0ZWFkIG9mIEdMaXN0CgkgIFRoaXMgbWFrZXMgbG9va3VwcyBhbmQgaW5zZXJ0aW9ucyBPKGxvZyBuKSBpbnN0ZWFkIG9mCgkgIGFsd2F5cyBPKG4pIGZvciBpbnNlcnRpb25zIGFuZCBPKG4pIGluIHdvcnN0IGNhc2UgZm9yCgkgIGxvb2t1cHMuCgkgIEZpeGVzIGJ1ZyAjNTgyNTY0LgoKMjAwOS0wNS0xNCAxMjozMDoyMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL2RyYWZ0LWdob3N0cGFkcy50eHQ6CgkqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1taXNzaW5nLXBsdWdpbnMudHh0OgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1zdHJlYW0tc3RhdHVzLnR4dDoKCSogZG9jcy9kZXNpZ24vcGFydC1sYXRlbmN5LnR4dDoKCSogZG9jcy9kZXNpZ24vcGFydC1taXNzaW5nLXBsdWdpbnMudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0cmVhbS1zdGF0dXMudHh0OgoJICBkb2NzOiByZW5hbWUgYW5kIGRlbGV0ZSBzb21lIGRlc2lnbiBkb2NzCgoyMDA5LTA1LTE0IDEyOjMwOjA0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIHRvb2xzL2dzdC1sYXVuY2guYzoKCSAgZ3N0LWxhdW5jaDogUHJpbnQgdGhlIHBhdGggc3RyaW5nIGZvciBtZXNzYWdlIHNvdXJjZXMKCSAgVGhpcyByZWR1Y2VzIGNvbmZ1c2lvbiBpZiB0aGUgbWVzc2FnZSBzb3VyY2UgaXMgYSBwYWQKCSAgYW5kIG9ubHkgInNyYyIgaXMgcHJpbnRlZCBhcyBzb3VyY2UuCgoyMDA5LTA1LTE0IDEyOjI1OjIwICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R1dGlscy5jOgoJICBlbGVtZW50OiBTZXQgdGhlIG9yaWdpbmF0aW5nIHBhZCBhcyBtZXNzYWdlIHNvdXJjZSBpbiBnc3RfZWxlbWVudF9mb3VuZF90YWdzX2Zvcl9wYWQgKCkKCSAgRml4ZXMgYnVnICM1ODI1ODguCgoyMDA5LTA1LTE0IDExOjM2OjI4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnQuaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGVsZW1lbnQ6IGFkZCBnc3RfZWxlbWVudF9sb3N0X3N0YXRlX2Z1bGwoKQoJICBBZGQgYSBnc3RfZWxlbWVudF9sb3N0X3N0YXRlX2Z1bGwoKSB3aXRoIGFuIGV4dHJhIGFyZ3VtZW50IHRvIGNvbnRyb2wKCSAgZGlzdHJpYnV0aW9uIG9mIGEgbmV3IGJhc2VfdGltZS4gV2Ugd2lsbCBuZWVkIHRoaXMgZm9yIGZsdXNoaW5nIHN0ZXAKCSAgb3BlcmF0aW9ucy4KCSAgQVBJOiBHc3RFbGVtZW50Ojpnc3RfZWxlbWVudF9sb3N0X3N0YXRlX2Z1bGwoKQoKMjAwOS0wNS0xMyAyMzo1MjowMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBhZGFwdGVyOiBkb24ndCB1c2UgcmVhbGxvYywgaXQgZG9lcyBhIG1lbWNweQoJICBEb24ndCB1c2UgcmVhbGxvYyB0byBncm93IHRoZSBzY3JhdGNoIGFyZWEgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSBtZW1jcHkgdGhlCgkgIG9sZCB1c2VsZXNzIGRhdGEgaW50byB0aGUgbmV3IGFyZWEgYmVmb3JlIHdlIHdyaXRlIG91ciBuZXcgc3R1ZmYgaW4gaXQuCgoyMDA5LTA1LTEzIDIzOjM4OjA4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9kZXNpZ24vcGFydC10cmlja21vZGVzLnR4dDoKCSAgZG9jczogdXBkYXRlIHRyaWNrbW9kZSBkb2N1bWVudAoKMjAwOS0wNS0xMyAyMjo1MToxOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBhZGFwdGVyOiB1c2UgZ19yZWFsbG9jIGZvciByZXNpemluZyB0aGUgYnVmZmVyCgkgIFVzZSBnX3JlYWxsb2MgZm9yIHJlc2l6aW5nIHRoZSBpbnRlcm5hbCBidWZmZXIgaW5zdGVhZCBvZiBhCgkgIGxlc3MgZmFuY3kgX2ZyZWUvX21hbGxvYyBwYWlyLgoKMjAwOS0wNS0xMyAyMTozNToyMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgYWRhcHRlcjogbW92ZSBuZXcgbWVtYmVyIHRvIHByaXZhdGUgc3RydWN0CgkgIE1vdmUgdGhlIG5ldyBtZW1iZXJzIHRvIGEgcHJpdmF0ZSBzdHJ1Y3QgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGVub3VnaCBwYWRkaW5nCgkgIGFueW1vcmUgb24gMzItYml0cyBwbGF0Zm9ybXMuCgoyMDA5LTA1LTEzIDE4OjUwOjIzICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IHVwZGF0ZSBzb21lIGRvY3MKCjIwMDktMDUtMTMgMTc6MDk6MzIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9jaGVjay9saWJzL2FkYXB0ZXIuYzoKCSAgdGVzdHM6IGFkZCBhbm90aGVyIHRlc3QgZm9yIGFkYXB0ZXIgdGltZXN0YW1wcwoKMjAwOS0wNS0xMyAxNjo0ODozOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2NoZWNrL2xpYnMvYWRhcHRlci5jOgoJICB0ZXN0czogYWRkIG5ldyB0aW1lc3RhbXAgdW5pdCB0ZXN0CgoyMDA5LTA1LTEzIDE2OjI2OjAwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBkZWZzOiBhZGQgbmV3IHN5bWJvbAoKMjAwOS0wNS0xMyAxNjowOToyMCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgYWRhcHRlcjogYWRkIG1ldGhvZCB0byBrZWVwIHRyYWNrIG9mIHRpbWVzdGFtcHMKCSAgS2VlcCB0cmFjayBvZiB0aGUgdGltZXN0YW1wIGFuZCBvZmZzZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGhlYWQgb2YgdGhlCgkgIGFkYXB0ZXIuCgkgIEFQSTogR3N0QWRhcHRlcjo6Z3N0X2FkYXB0ZXJfcHJldl90aW1lc3RhbXAoKQoKMjAwOS0wNS0xMyAxNjoyMDoyNiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgYWRhcHRlcjogc21hbGwgY2xlYW51cHMKCjIwMDktMDUtMTMgMTE6MDM6MjcgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIGRlYnVndXRpbHM6IHNob3cgbW9yZSBwYWQtZGV0YWlscwoJICBTaG93IHBhZCBhY3RpdmF0aW9uIG1vZGUgYW5kIHBhZC1mbGFncyBpbnNpZGUgdGhlIHBhZC4gV3JpdGUgZG93biBzb21lIGlkZWFzCgkgIGFib3V0IGhvdyB3ZSBjb3VsZCBpbXByb3ZlIHRoZSBjYXBzIGxheW91dC4KCjIwMDktMDUtMTMgMDA6Mjk6NTcgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIGRlYnVndXRpbHM6IGxheW91dCBpbXByb3ZlbWVudAoJICBkb3QgZG9lcyBub3QgdGFrZSB0aGUgaGVhZC90YWlsIGxhYmVscyBpbnRvIGFjY291bnQuIEZvciB1bmZpeGVkIGNhcHMgdGhleSBnZXQKCSAgcXVpdGUgbGFyZ2UuIERvdWJsZSB0aGUgcGFkZGluZyB0byBtYWtlIGl0IHNvcnQgb2YgcmVhZGFibGUgaW4gbW9yZSBjYXNlcy4gQWxzbwoJICBtYWtlIG5vcm1hbCBmb250IGJpZ2dlciBhbmQgY2Fwcy1sYWJlbCBmb250IHNtYWxsZXIgdG8gaW5jcmVhc2Ugb3VyIGx1Y2suCgoyMDA5LTA1LTEyIDIxOjAwOjE1ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIE1ha2VmaWxlLmFtOgoJICBjaGVja3M6IGNoZWNrIGZvciBlbnVtIHR5cGVzIG5vdCBjbGFzc19yZWYnZWQgaW4gZ3N0X2luaXQoKSBpbiAnbWFrZSBjaGVjaycKCjIwMDktMDUtMTIgMjA6NTg6MzIgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdC5jOgoJICBJbml0aWFsaXNlIHNvbWUgbW9yZSB0eXBlcyBpbiBnc3RfaW5pdCgpLCBlc3AuIHRoZSBuZXcgZW51bSB0eXBlcwoJICBQb3NzaWJseSBmaXhlcyBHT2JqZWN0IGNsYXNzIGNyZWF0aW9uL3VucmVmIHJhY2UgY29uZGl0aW9ucyB3aGVuCgkgIGNyZWF0aW5nIHRoZSBsYXN0LW1lc3NhZ2Ugc3RyaW5nIGluIGZha2VzaW5rIGZvciBldmVudHMgd2l0aAoJICBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSBmaWVsZHMgd2l0aCB0aGVzZSBlbnVtIHR5cGVzLgoKMjAwOS0wNS0xMiAyMDo1NjowNiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgc3lzdGVtY2xvY2s6IHJlbW92ZSBkdXBsaWNhdGUgX2dldF90eXBlKCkgZnVuY3Rpb24gZm9yIEdzdENsb2NrVHlwZQoJICBSZW1vdmUgdGhlIHN0YXRpYyBnc3RfY2xvY2tfdHlwZV9nZXRfdHlwZSgpIGZ1bmN0aW9uIGluIHRoZQoJICBzeXN0ZW1jbG9jayBjb2RlIGluIGZhdm91ciBvZiB0aGUgcHVibGljIG9uZSBpbiBnc3RlbnVtdHlwZXMuYy4KCjIwMDktMDQtMjIgMTA6NTM6MzcgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICBnaG9zdHBhZDogcmVtb3ZlIGRlcHJlY2F0ZWQgQVBJCgkgIF9pbnRlcm5hbF9saW5rX2Z1bmN0aW9uKCkgaXMgZGVwcmVjYXRlZCBhbmQgX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3NfZnVuY3Rpb24oKQoJICBpcyBhbHJlYWR5IHByb3ZpZGVkLgoKMjAwOS0wNC0yMSAxMTozMzo0MyArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgcGFyc2UtbGF1bmNoOiBhbGxvdyBzcGVjaWZ5aW5nIEdzdEVsZW1lbnQgcHJvcGVydGllcyB2aWEgZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uCgkgIElmIGRlc2VyaWFsaXppbmcgYSBwcm9wZXJ0eSBmYWlscywgY2hlY2sgaWYgdGhlIHZhbHVlIHR5cGUgaXMgYSBzdHJpbmcgYW5kIGlmIHNvCgkgIGF0dGVtcHQgdG8gY3JlYXRlIGEgYmluIGZyb20gdGhlIHN0cmluZyB2YWx1ZS4gVGhpcyBhbGxvd3MgdG8gZS5nLiBzcGVjaWZ5CgkgIGF1ZGlvLXNpbmsvdmlkZW8tc2luayBmb3IgcGxheWJpbiBvbiBnc3QtbGF1bmNoIGNvbW1hbmRsaW5lLgoKMjAwOS0wNS0xMiAxNzoyOToxNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVybGlzdC50eHQ6CgkgIGRvY3M6IGFkZCBzb21lIGRvY3MgYWJvdXQgYnVmZmVyIGxpc3RzCgoyMDA5LTA1LTEyIDE2OjE4OjQ4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGJ1ZmZlcmxpc3QuYzoKCSogZ3N0L2dzdGJ1ZmZlcmxpc3QuaDoKCSAgYnVmZmVybGlzdDogbWFrZSBvYmplY3RzIG9wYXF1ZQoKMjAwOS0wNS0xMiAxNTozMzoyNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXJsaXN0LmM6CgkgIGJ1ZmZlcmxpc3Q6IGZpeCBhIGNvbW1lbnQKCjIwMDktMDUtMTIgMTM6MTA6NTUgKzAyMDAgIEpvbmFzIEhvbG1iZXJnIDxqb25hcy5ob2xtYmVyZyBhdCBheGlzLmNvbT4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBidWZmZXJsaXN0OiBob29rIHVwIHRoZSBwYWQgZnVuY3Rpb25zCgkgIFJldXNlIGJ1ZmZlciBjb2RlIGZvciBidWZmZXJsaXN0cy4gTm90IHN1cmUgaWYgdGhpcyBtZWFzdXJhYmx5IGltcGFjdHMgcGVyZm9ybWFuY2UKCSAgZm9yIHRoZSBzaW1wbGUgYnVmZmVyIGNhc2UsIGlmIGl0IGRvZXMgYWZ0ZXIgZG9pbmcgc29tZSBiZW5jaG1hcmtzLCB3ZSBjYW4KCSAgZGVjb3VwbGUgaXQgbGF0ZXIuCgkgIEZpeGVzICM1NzIyODUKCjIwMDktMDUtMTIgMTI6MDg6NTYgKzAyMDAgIEpvbmFzIEhvbG1iZXJnIDxqb25hcy5ob2xtYmVyZyBhdCBheGlzLmNvbT4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9NYWtlZmlsZS5hbToKCSogZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0Lmg6CgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0aW5mby5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0Ly5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RidWZmZXJsaXN0LmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBidWZmZXJsaXN0OiBhZGQgZG9jcy9idWlsZC9kZWJ1Zy91bml0dGVzdAoJICBTZWUgIzU3MjI4NQoKMjAwOS0wNS0xMiAxMTo1MTozNyArMDIwMCAgSm9uYXMgSG9sbWJlcmcgPGpvbmFzLmhvbG1iZXJnIGF0IGF4aXMuY29tPgoKCSogZ3N0L2dzdGJ1ZmZlcmxpc3QuYzoKCSogZ3N0L2dzdGJ1ZmZlcmxpc3QuaDoKCSAgYnVmZmVybGlzdDogYWRkIGJ1ZmZlcmxpc3QgY29kZQoJICBCdWZmZXIgbGlzdHMgYXJlIGEgbWVhbnMgdG8gbWFuYWdlIGRpc2pvaW50IGJ1ZmZlcnMgYXMgb25lIGJ1ZmZlci4gSXQncyBhbHNvCgkgIHBvc3NpYmxlIHRvIHB1dCBtYW55IG9mIHRob3NlIGJ1ZmZlcnMgaW50byBhIGxpc3QuCgkgIFRoZSBpZGVhIGlzIHRoYXQgd2hlbiBzdXBwb3J0IGlzIGFkZGVkIHRvIHZhcmlvdXMgZWxlbWVudHMsIHdlIHdpbGwgYmUgYWJsZSB0bwoJICBtb3JlIGVmZmljaWVudGx5IHNsaWNlIGFuZCBkaWNlIGJ1ZmZlcnMsIHJlZHVjZSB0aGUgYW1vdW50IG9mIG1lbWNweSBhbmQgYWxzbwoJICByZWR1Y2UgZGF0YSBwYXNzaW5nIG92ZXJoZWFkLgoJICBUaGUgaW1wbGVtZW50YXRpb24gaXMga2VwdCBzaW1wbGUgb24gcHVycG9zZSwgcmV1c2luZyBhbGwgb2YgdGhlIG1lbW9yeQoJICBtYW5hZ2VtZW50IGZlYXR1cmVzIHdlIGhhdmUgZm9yIG1pbmlvYmplY3RzIGFuZCBidWZmZXJzLgoJICBBY2Nlc3MgdG8gdGhlIGJ1ZmZlcmxpc3Qgb2JqZWN0IGlzIGRvbmUgd2l0aCBhbiBpdGVyYXRvciwgd2hpY2ggYWxsb3dzIGZvcgoJICBlZmZpY2llbnQgaXRlcmF0aW9uIGFuZCBtb2RpZmljYXRpb24gb2YgdGhlIGxpc3QuCgkgIFNlZSAjNTcyMjg1CgoyMDA5LTA1LTExIDA3OjQ5OjM0ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJICBnc3RidWZmZXI6IGNvcHkgbmV3IGJ1ZmZlciBmbGFncyB3aGVuIGNvcHlpbmcgbWV0YWRhdGEuCgoyMDA5LTA0LTI3IDEwOjEzOjAxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkqIHRlc3RzL2NoZWNrL2xpYnMvYWRhcHRlci5jOgoJICBhZGFwdGVyOiBvcHRpbWl6ZSB0YWtpbmcgdGhlIGhlYWRidWZmZXIKCSAgV2hlbiBhIGFyZSByZXF1ZXN0ZWQgdG8gdGFrZSBhIGJ1ZmZlciBmcm9tIHRoZSBhZGFwdGVyIHRoYXQgaXMgZXhhY3RseSB0aGUKCSAgaGVhZGJ1ZmZlciwgZG9uJ3QgbWFrZSBhIHN1YmJ1ZmZlciBvZiBpdCBidXQgcmV0dXJuIHRoYXQgaGVhZCBidWZmZXIuCgkgIEFkZCBhIHVuaXQtdGVzdCBmb3IgdGhpcyBuZXcgb3B0aW1pc2F0aW9uLgoKMjAwOS0wNS0wNSAxNzo0MToyNCArMDIwMCAgQXJub3V0IFZhbmRlY2FwcGVsbGUgPGFybm91dEBtaW5kLmJlPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgdHlwZWZpbmQ6IGRvbid0IGxlYWsgdGhlIGZvcmNlLWNhcHMgcHJvcGVydHkKCSAgRml4ZXMgIzU4MTMyMQoKMjAwOS0wNC0yOCAxOToyMDozMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGVsZW1lbnQ6IGZpeCBwb3N0aW5nIG9mIGFzeW5jLXN0YXJ0IG1lc3NhZ2VzCgkgIFdoZW4gYW4gZWxlbWVudCBsb3N0IGl0cyBzdGF0ZSBidXQgd2FzIGJ1c3kgZG9pbmcgYSBzdGF0ZSBjaGFuZ2UsIHN0aWxsIHBvc3QgdGhlCgkgIGFzeW5jLXN0YXJ0IG1lc3NhZ2Ugd2l0aCB0aGUgYmFzZV90aW1lIHJlc2V0IGZsYWcgb3IgZWxzZSB3ZSBtaWdodCBlbmQgdXAgd2l0aAoJICBhbiBvbGQgYmFzZV90aW1lLgoJICB0aGlzIGNhbiBoYXBwZW4gd2hlbiBhIHNpbmsgaXMgZ29pbiBhc3luYyB0byBwYXVzZWQgYW5kIHRoZW4gYSBmbHVzaGluZyBzZWVrIGlzCgkgIHBlcmZvcm1lZC4gVGhpcyB3b3VsZCBjYXVzZSB0aGUgYmFzZV90aW1lIHRvIHJlbWFpbiB1bm1vZGlmaWVkIGJlY2F1c2UgdGhlCgkgIGFzeW5jLXN0YXJ0IG1lc3NhZ2Ugd2FzIG5vdCBzZW50LgoKMjAwOS0wNS0xMCAxNzoyODozNiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBmdW5jdGlvbnMgdG8gdGhlIHdpbjMyIGV4cG9ydHMKCjIwMDktMDUtMTAgMTE6MTc6MjcgKzAyMDAgIE1hcmMtQW5kcmUgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QGdtYWlsLmNvbT4KCgkqIGF1dG9nZW4uc2g6CgkgIFJ1biBsaWJ0b29saXplIGJlZm9yZSBhY2xvY2FsCgkgIFRoaXMgdW5icmVha3MgdGhlIGJ1aWxkIGluIHNvbWUgY2FzZXMuIEZpeGVzIGJ1ZyAjNTgyMDIxCgoyMDA5LTA1LTA3IDE2OjM3OjM3ICswMjAwICBKb3PDqSBBbGJ1cnF1ZXJxdWUgPGphYWxidXJxdUBzdm4uZ25vbWUub3JnPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHBsdWdpbi5jOgoJKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIEFQSTogQWRkIGdzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljX2Z1bGwoKQoJICBUaGlzIGlzIG1haW5seSB1c2VmdWwgZm9yIGJpbmRpbmdzIHRoYXQgbmVlZCB0byBwcm92aWRlCgkgIHNvbWUgYWRkaXRpb25hbCB1c2VyIGRhdGEgdG8gdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4KCSAgRml4ZXMgYnVnICM1NDU3ODcuCgoyMDA5LTA1LTA3IDE2OjAxOjU3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJICBmaWxlc3JjOiBJbXByb3ZlIGRlYnVnZ2luZyBhIGJpdCBvbiBpbnZhbGlkIFVSSXMKCjIwMDktMDUtMDcgMTA6MzY6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgZG9jczogQWRkIG5ldyBmdW5jdGlvbnMgdG8gdGhlIGRvY3MKCjIwMDktMDUtMDcgMDk6MzE6MDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ2xpc3QuaDoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dGFnc2V0dGVyLmg6CgkgIHRhZ3M6IEFQSTogQWRkIGZ1bmN0aW9ucyB0byBhZGQgc2luZ2xlIHRhZ3MgdG8gR3N0VGFnTGlzdCBvciBHc3RUYWdTZXR0ZXIKCSAgVGhlIG5ldyBmdW5jdGlvbnMgYXJlIGdzdF90YWdfc2V0dGVyX2FkZF90YWdfdmFsdWUoKQoJICBhbmQgZ3N0X3RhZ19saXN0X2FkZF92YWx1ZSgpKS4gVGhpcyBmaXhlcyBidWcgIzU4MTE5OC4KCjIwMDktMDUtMDcgMDk6Mjg6MTUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHVyaS5jOgoJICBHc3RVUklIYW5kbGVyOiBVc2UgZ2V0X3R5cGVfZnVsbCgpIHZtZXRob2QgaWYgc3BlY2lmaWVkIGluc3RlYWQgb2YgZ2V0X3R5cGUoKQoJICBUaGlzIGZpeGVzIGJ1ZyAjNTgxMjgxIGFuZCBtYWtlcyBpdCBlYXNpZXIgZm9yIGJpbmRpbmdzIHRvCgkgIGltcGxlbWVudCBHc3RVUklIYW5kbGVycy4gZ2V0X3Byb3RvY29sc19mdWxsKCkgd2FzIGFscmVhZHkgdXNlZAoJICBsaWtlIHRoaXMuCgoyMDA5LTA1LTEyIDAxOjQ4OjM2ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICBwbzogdXBkYXRlIC5wbyBmaWxlcyBmb3IgbmV3IHN0cmluZ3MgZnJvbSBjb250YWluZXItZm9ybWF0IHRhZwoKMjAwOS0wNS0xMiAwMTozMDoxMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICBkb2NzOiBzbWFsbCB1cGRhdGUgdG8gcmVsZWFzZSBkb2NzCgoyMDA5LTA1LTEyIDAxOjEzOjAyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbW1vbjoKCSogY29uZmlndXJlLmFjOgoJICBjb25maWd1cmU6IHJlbmFtZSBDVlMgLT4gZ2l0IGluIGEgY291cGxlIG9mIHBsYWNlcwoKMjAwOS0wNS0xMiAwMDo0Nzo0NiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBjb25maWd1cmUuYWM6CgkgIGNvbmZpZ3VyZTogYnVtcCB0aGUgR0xpYiByZXF1aXJlbWVudCB0byBHTGliID49IDIuMTYKCSAgYXMgcGVyIHRoZSBOZXcgUmVnaW1lIChzZWUgd2lraSkuCgoyMDA5LTA1LTEyIDAwOjA5OjU4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbmZpZ3VyZS5hYzoKCSogZ3N0L01ha2VmaWxlLmFtOgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSAgeG1scmVnaXN0cnk6IHJlbW92ZSB0aGUgb2xkIHhtbCByZWdpc3RyeQoJICBObyBwb2ludCBpbiBrZWVwaW5nIGl0IGFyb3VuZCByZWFsbHkuIEZpeGVzICM1Nzc5MjYuCgoyMDA5LTA1LTA3IDE2OjA4OjQzICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YWdsaXN0LmM6CgkqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIHRhZ3M6IGFkZCBhIHRhZyBmb3IgdGhlIGNvbnRhaW5lciBmb3JtYXQKCSAgQVBJOiBhZGQgR1NUX1RBR19DT05UQUlORVJfRk9STUFUCgoyMDA5LTA1LTA4IDE2OjI4OjAzICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBmaXggZGVidWcgbWVzc2FnZQoJICBNYWtlIHRoZSBkZWJ1ZyBtZXNzYWdlIHNob3cgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyAodGhlIG1lc3NhZ2UKCSAgcmVwbGFjZWQgaGVyZSBpcyBub3QgbmVjZXNzYXJpbHkgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb25lIHRoYXQKCSAgcmVwbGFjZXMgaXQpLgoKMjAwOS0wNS0xMiAwMDozNDo0NCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0YXNrLmM6CgkgIEdzdFRhc2s6IGZpeCBjb21waWxhdGlvbgoKMjAwOS0wNC0yNCAxOTozMjozMyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2V4YW1wbGVzL3N0cmVhbXMvcnRwb29sLXRlc3QuYzoKCSAgdGVzdHM6IHNldCB0aGUgbGF0ZW5jeS10aW1lIHRvIHNvbWV0aGluZyBsb3cKCjIwMDktMDQtMjQgMTM6NTU6MTMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL3J0cG9vbC10ZXN0LmM6CgkqIHRlc3RzL2V4YW1wbGVzL3N0cmVhbXMvdGVzdHJ0cG9vbC5jOgoJICB0ZXN0czogaW1wcm92ZSB0aGUgZXhhbXBsZQoKMjAwOS0wNC0yNCAxMjozNTowOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrcG9vbC5jOgoJKiBnc3QvZ3N0dGFza3Bvb2wuaDoKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL3Rlc3RydHBvb2wuYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIFRhc2tQb29sOiByZW1vdmUgX3NldF9mdW5jKCkKCSAgUmVtb3ZlIHRoZSBzdGF0aWMgZnVuY3Rpb24gc2V0IG9uIHRoZSBUYXNrUG9vbCBiZWZvcmUgX3ByZXBhcmUoKSBpcyBjYWxsZWQgYW5kCgkgIGFsbG93IGZvciBhc3NpZ25pbmcgYSBmdW5jdGlvbiB0byBhIFRhc2sgd2hlbiB3ZSBfcHVzaCgpLgoJICBVcGRhdGUgdGhlIGV4YW1wbGVzCgoyMDA5LTA0LTIzIDE5OjQyOjQ3ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy9NYWtlZmlsZS5hbToKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy9ydHBvb2wtdGVzdC5jOgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL3Rlc3RydHBvb2wuYzoKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy90ZXN0cnRwb29sLmg6CgkgIHRlc3RzOiBhZGQgZXhhbXBsZSBvZiBjdXN0b20gdGFza3Bvb2xzCgkgIEFkZCBhbiBleGFtcGxlIHRvIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgYSBjdXN0b20gdGFza3Bvb2wgYW5kIGhvdyB0byBjb25maWd1cmUKCSAgaXQgb24gdGhlIHRhc2suIEN1cnJlbnRseSB0aGUgdGFza3Bvb2wgZG9lcyBub3QgZG8gbXVjaCB5ZXQgYnV0IGl0J2xsIGNyZWF0ZQoJICBzb21lIGN1c3RvbSB0aHJlYWRzIGxhdGVyIG9uLgoKMjAwOS0wNC0yMyAxOTo0MTozNiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0YXNrcG9vbC5oOgoJICB0YXNrcG9vbDogZml4IGEgY29tbWVudAoKMjAwOS0wNC0yMyAxOTo0MTowMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2V4YW1wbGVzL3N0cmVhbXMvc3RyZWFtLXN0YXR1cy5jOgoJICB0ZXN0czogY2xlYW51cCBzb21lIGNvZGUKCjIwMDktMDQtMjMgMTc6NDg6MDggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzoKCSAgUGFkOiBwb3N0IFNUUkVBTV9TVEFUVVNfVFlQRV9DUkVBVEUKCSAgUG9zdCBhIHN0cmVhbS1zdGF0dXMgbWVzc2FnZSBpbmRpY2F0aW5nIHRoYXQgYSBuZXcgdGFzayB3YXMgY3JlYXRlZCBzbyB0aGF0IHRoZQoJICBhcHBsaWNhdGlvbiBoYXMgYSBjaGFuY2UgdG8gY2hhbmdlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB0YXNrLgoJICBGaXggdW5pdCB0ZXN0IHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBuZXcgcmVmIG9mIHRoZSBtZXNzYWdlLgoKMjAwOS0wNC0yMyAxNzoyNDo1OCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBkZWZzOiBhZGQgbmV3IHRhc2sgbWV0aG9kcwoKMjAwOS0wNC0yMyAxNzoxOToxMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrLmg6CgkgIEdzdFRhc2s6IGFkZCBtZXRob2RzIGZvciBjb25maWd1cmluZyB0aGUgcG9vbAoJICBBZGQgZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yIGNvbmZpZ3VyaW5nIHRoZSBHc3RUYXNrUG9vbCB0byB1c2UgZm9yIGEgR3N0VGFzay4KCjIwMDktMDQtMjMgMTc6MDU6MjEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJICBUYXNrOiByZW1lbWJlciBwb29sCgkgIFJlbWVtYmVyIHRoZSBwb29sIHdlIGN1cnJlbnRseSBoYXZlIG91ciB0YXNrIHJ1bm5pbmcgc28gdGhhdCB3ZSBjYW4gdXNlIGl0IHRvCgkgIGpvaW4gdGhlIHRhc2sgbGF0ZXIgb24uCgkgIEZpeCBhIGxlYWsgb2YgdGhlIHRhc2twb29sLgoKMjAwOS0wNC0yMyAxNjo1MzozNCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBkZWZzOiB1cGRhdGUgLmRlZnMgZmlsZSB3aXRoIHRhc2twb29sIG1ldGhvZHMKCjIwMDktMDQtMjMgMTY6NTM6MTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJICB0YXNrOiBmaXggZGVhZGxvY2sgZHVlIHRvIHR5cG8KCjIwMDktMDUtMTIgMDA6MjU6MTEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJKiBnc3QvZ3N0dGFzay5oOgoJICBHc3RUYXNrOiB1c2UgR3N0VGFza1Bvb2wgZm9yIG1hbmFnaW5nIHRocmVhZHMKCSAgVXNlIHRoZSBuZXcgR3N0VGFza1Bvb2wgdG8gaGFuZGxlIHN0cmVhbWluZyB0aHJlYWRzLgoKMjAwOS0wNC0yMyAxNjowMDo1NiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YXNrcG9vbC5jOgoJKiBnc3QvZ3N0dGFza3Bvb2wuaDoKCSAgdGFza3Bvb2w6IGZpeCBkb2NzLCBtYWtlIHB1c2gvam9pbiBnZW5lcmljCgkgIEZpeCBzb21lIG1vcmUgZG9jcy4KCSAgTWFrZSBfcHVzaCgpIHJldHVybiBhIGdlbmVyaWMgaWQgKHRoaXMgY2FuIGJlIHNvbWV0aGluZyBlbHNlIHRoYW4gYSBHVGhyZWFkIGluCgkgIHNvbWUgY2FzZXMpIGFuZCBtYWtlIF9qb2luKCkgdXNlIHRoYXQgZ2VuZXJpYyBpZC4KCjIwMDktMDQtMjMgMTU6NDQ6MTMgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvTWFrZWZpbGUuYW06CgkqIGdzdC9nc3QuaDoKCSogZ3N0L2dzdHRhc2twb29sLmM6CgkqIGdzdC9nc3R0YXNrcG9vbC5oOgoJICB0YXNrcG9vbDogYWRkIG5ldyBvYmplY3QgdG8gbWFuYWdlIHRocmVhZHMKCSAgQWRkIGEgbmV3IG9iamVjdCBHc3RUYXNrUG9vbCB0byBtYW5hZ2UgdGhlIHN0cmVhbWluZyB0aHJlYWRzLgoJICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB1c2UgY3VzdG9tIGNvbmZpZ3VyZWQgdGhyZWFkcy4KCjIwMDktMDQtMjIgMTI6MDQ6MzYgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL3N0cmVhbS1zdGF0dXMuYzoKCSAgZXhhbXBsZXM6IHNldCBidXMgaGFuZGxlciBiZWZvcmUgc3RhdGUgY2hhbmdlCgkgIFdlIG5lZWQgdG8gc2V0IHRoZSBidXMgaGFuZGxlciBiZWZvcmUgc3RhcnRpbmcgdGhlIHBpcGVsaW5lIG9yIHdlIG1pZ2h0IGp1c3QKCSAgbWlzcyB0aGUgbWVzc2FnZSB3ZSBhcmUgbG9va2luZyBmb3IuCgoyMDA5LTA0LTIyIDEwOjE2OjI2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSogdGVzdHMvZXhhbXBsZXMvc3RyZWFtcy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9leGFtcGxlcy9zdHJlYW1zL3N0cmVhbS1zdGF0dXMuYzoKCSAgdGVzdHM6IGFkZCBleGFtcGxlIGFwcCBmb3Igc3RyZWFtLXN0YXR1cwoJICBBZGQgYW4gZXhhbXBsZSBhcHBsaWNhdGlvbiB0aGF0IGFkanVzdHMgdGhlIHRocmVhZCBwcmlvcml0eSBvZiBhIHRhc2sgdXNpbmcgdGhlCgkgIHN0cmVhbS1zdGF0dXMgbWVzc2FnZXMuCgoyMDA5LTA0LTIxIDE5OjE1OjQ4ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHRhc2suYzoKCSogZ3N0L2dzdHRhc2suaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIFRhc2s6IGFkZCBtZXRob2QgdG8gc2V0IHRoZSBwcmlvcml0eQoJICBBZGQgYSBtZXRob2QgdG8gY29uZmlndXJlIGEgcHJpb3JpdHkgZm9yIHRoZSB0aHJlYWRzIHVzZWQgYnkgR3N0VGFzay4KCjIwMDktMDQtMjEgMTY6MzA6MzQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWVzc2FnZS5jOgoJICB0ZXN0czogYWRkIGEgdW5pdC10ZXN0IGZvciB0aGUgc3RyZWFtLXN0YXR1cwoJICBBZGQgYSB1bml0IHRlc3QgZm9yIHRoZSBTVFJFQU1fU1RBVFVTIG1lc3NhZ2VzLgoKMjAwOS0wNS0xMiAwMDowNToxMiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHRhc2suYzoKCSogZ3N0L2dzdHRhc2suaDoKCSAgR3N0VGFzazogaW1wcm92ZSBkb2N1bWVudGF0aW9uCgkgIEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBjYWxsYmFja3MuCgoyMDA5LTA0LTIxIDE1OjI1OjEyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvY2xlYW51cC5jOgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOgoJICB0ZXN0czogZml4IHVuaXQtdGVzdHMgZm9yIG5ldyBzdHJlYW0tc3RhdHVzCgkgIEZpeCB0aGUgdW5pdC10ZXN0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgZmFpbCBvbiB0aGUgbmV3IHN0cmVhbS1zdGF0dXMgbWVzc2FnZXMKCSAgdGhhdCBhcmUgZW1pdGVkIG5vdy4KCjIwMDktMDQtMjEgMTQ6NDY6MjkgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIEdzdFBhZDogaW5zdGFsbCB0aHJlYWQgY2FsbGJhY2tzIG9mIHRoZSB0YXNrCgkgIEluc3RhbGwgdGhyZWFkIHN0YXR1cyBjYWxsYmFja3Mgb24gdGhlIHRhc2sgb2JqZWN0IG9mIGEgcGFkIGFuZCBwb3N0CgkgIFNUUkVBTV9TVEFUVVMgbWVzc2FnZXMuCgoyMDA5LTA0LTIyIDEwOjE0OjQ2ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgbWVzc2FnZTogY2xhcmlmeSBzb21lIGRvY3MKCjIwMDktMDQtMjEgMTQ6NDI6MDUgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJICBUYXNrOiBjYWxsIGxlYXZlX3RocmVhZCBiZWZvcmUgc2lnbmFsaW5nCgkgIENhbGwgdGhlIGxlYXZlX3RocmVhZCBjYWxsYmFjayBiZWZvcmUgd2Ugc2lnbmFsIHRoZSB0aHJlYWQgcGVyZm9ybWluZyB0aGUgX2pvaW4KCSAgc28gdGhhdCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHRoZSBsaXN0ZW5lciBzdGlsbCBoYXMgdmFsaWQgaW5mbyBpbiB0aGUgY2FsbGJhY2suCgoyMDA5LTA0LTIxIDEzOjQyOjAxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEdzdE1lc3NhZ2U6IEFkZCBTVFJFQU1fU1RBVFVTIG1lc3NhZ2UgbWV0aG9kcwoJICBBZGQgbWV0aG9kcyB0byBoYW5kbGUgdGhlIHN0cmVhbV9zdGF0dXMgbWVzc2FnZSB0eXBlcy4KCjIwMDktMDQtMjEgMTM6MDU6MTcgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cXVhcmsuYzoKCSogZ3N0L2dzdHF1YXJrLmg6CgkgIHF1YXJrOiBhZGQgIm9iamVjdCIgcXVhcmsKCSAgQWRkIHRoZSBvYmplY3QgcXVhcmsgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBTVFJFQU1fU1RBVFVTIG1lc3NhZ2VzLgoKMjAwOS0wNS0xMSAyMzo0NDo0MiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3R0YXNrLmg6CgkgIFRhc2s6IHJlbW92ZSBjcmVhdGUvam9pbiBtZXRob2RzCgkgIFByZXBhcmUgZm9yIHVzaW5nIHRoZSBHc3RUYXNrUG9vbCBvYmplY3QuIFdlIGRvbid0IG5lZWQgdGhlIGNyZWF0ZSBhbmQgam9pbgoJICBjYWxsYmFja3MgYW55bW9yZSwgdGhleSB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIHBvb2wuCgoyMDA5LTA0LTIwIDE3OjA3OjUwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHRhc2suYzoKCSAgR3N0VGFzazogYWRkIHByaXZhdGUgZGF0YSwgZml4IHBhcmVudF9jbGFzcwoJICBVc2UgdGhlIHBhcmVudCBjbGFzcyB0aGF0IHRoZSBnbGliIG1hY3JvIGdhdmUgdXMKCSAgQWN0dWFsbHkgYWRkIHRoZSBwcml2YXRlIGRhdGEgdG8gdGhlIHRhc2suCgoyMDA5LTA0LTIwIDE3OjE5OjIxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHRhc2suYzoKCSAgR3N0VGFzazogaG9vayB1cCBlbnRlci9sZWF2ZS9ub3RpZnkgY2FsbGJhY2tzCgkgIEhvb3AgdXAgdGhlIG5vdGlmeS9lbnRlci9sZWF2ZSBjYWxsYmFja3MuCgoyMDA5LTA1LTExIDIzOjIzOjIwICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGRlZnM6IGFkZCBuZXcgc3ltYm9sIHRvIGRlZnMgZmlsZQoKMjAwOS0wNS0xMSAyMzoxOTo1MyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrLmg6CgkgIEdzdFRhc2s6IGFsbG93IHNldHRpbmcgY2FsbGJhY2tzCgkgIEFsbG93IHNldHRpbmcgdGhyZWFkIGNhbGxiYWNrcyB0aGF0IHdpbGwgYWxsb3cgdXMgdG8gY29udHJvbCB0aGUgdGhyZWFkcyB1c2VkIGJ5CgkgIHRoZSB0YXNrLgoKMjAwOS0wNC0yMyAxOTo0MDoxMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICBiYXNlc3JjOiBkb24ndCBpZ25vcmUgcGFkX3N0YXJ0IHJldHVybiB2YWx1ZQoKMjAwOS0wNC0yMSAxMzozNDoxOCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL2RyYWZ0LXN0cmVhbS1zdGF0dXMudHh0OgoJICBkZXNpZ246IG1vcmUgU1RSRUFNX1NUQVRVUyB1cGRhdGVzCgkgIFBhc3MgdGhlIHRocmVhZCBvYmplY3QgaW4gYSBHVmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBmaWd1cmUKCSAgb3V0IHRoZSB0eXBlIG9mIHRoZSBvYmplY3QgaW5zdGVhZCBvZiB1cyBoYXZpbmcgdG8gZXhwbGljaXRseSBjb2RlIGl0IGluIGEKCSAgbWVzc2FnZSBmaWVsZC4KCjIwMDktMDQtMjEgMDk6NDU6MDggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1zdHJlYW0tc3RhdHVzLnR4dDoKCSAgZGVzaWduOiB1cGRhdGUgc3RyZWFtLXN0YXR1cyBkb2N1bWVudCBzb21lIG1vcmUKCjIwMDktMDQtMjAgMTU6NTU6MDkgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9kcmFmdC1zdHJlYW0tc3RhdHVzLnR4dDoKCSAgZGVzaWduOiBhZGQgZmlyc3QgdmVyc2lvbiBvZiBzdHJlYW0tc3RhdHVzCgkgIEFkZCB0aGUgZmlyc3QgdmVyc2lvbiBvZiB0aGUgU1RSRUFNX1NUQVRVUyBtZXNzYWdlIGRlc2lnbiBkb2NzLgoJICBUaGlzIG1lc3NhZ2Ugd2lsbCBiZSB1c2VkIHRvIGdpdmUgYXBwbGljYXRpb25zIG1vcmUgY29udHJvbCBvdmVyIHRoZQoJICBzdHJlYW1pbmcgdGhyZWFkcy4KCjIwMDktMDQtMjEgMTc6NTM6MDcgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFzay5jOgoJICBHc3RUYXNrOiBhZGQgc29tZSBtb3JlIGRvY3MKCjIwMDktMDQtMjEgMTc6MTQ6MzQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIEdzdFBhZDogdXNlIG5ldyB0YXNrIGZ1bmN0aW9uCgkgIFVzZSB0aGUgbmV3IHRhc2tfc2V0X3N0YXRlIGZ1bmN0aW9uIGFuZCBhY3R1YWxseSByZXR1cm4gaXRzIHJlc3VsdCB0bwoJICB0aGUgY2FsbGVyLgoKMjAwOS0wNS0xMSAyMjo1OTozNSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrLmg6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBHc3RUYXNrOiB1bmlmeSB0YXNrIHN0YXRlIGZ1bmN0aW9ucwoJICBBZGQgbmV3IGdzdF90YXNrX3NldF9zdGF0ZSgpIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgaW5zdGVhZCBvZgoJICBkdXBsaWNhdGluZyB0aGUgY29kZSBpbiBlYWNoIGZ1bmN0aW9uLgoJICBBUEk6IEdzdFRhc2s6OmdzdF90YXNrX3NldF9zdGF0ZSgpCgoyMDA5LTA0LTIxIDEzOjM3OjIyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgTWVzc2FnZTogc21hbGwgaW5kZW50YXRpb24gY2hhbmdlLgoKMjAwOS0wNS0wMiAxNDo0MzoxMSArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0b2JqZWN0LmM6CgkqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkqIGdzdC9nc3RyZWdpc3RyeS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgQXZvaWQgdW5uZWVkZWQgdHlwZSBjaGVja3MKCjIwMDktMDUtMDIgMTQ6Mzk6NDggKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgcmVnaXN0cnk6IGF2b2lkIGNhbGxpbmcgX2dldF9uYW1lKCkgdG9vIG11Y2gKCSAgQXZvaWQgY2FsbGluZyBnc3RfcGx1Z2luX2dldF9uYW1lKCkgdG9vIG1hbnkgdGltZXMgYnV0IGluc3RlYWQgY2FjaGUKCSAgdGhlIHZhbHVlLgoKMjAwOS0wNS0wMiAxNDozNjo1MCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIFVzZSBuZXcgX3JlZl9zaW5rIHdoZW4gd2UgY2FuCgoyMDA5LTA1LTAyIDE0OjMzOjAxICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0b2JqZWN0Lmg6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBnc3RvYmplY3Q6IGFkZCBnc3Rfb2JqZWN0X3JlZl9zaW5rCgkgIEFkZCB0aGUgZ3N0X29iamVjdF9yZWZfc2luaygpIG1ldGhvZCB0byBtYXRjaCB0aGUgZ2xpYiBvbmUuCgkgIEFQSTogR3N0T2JqZWN0Ojpnc3Rfb2JqZWN0X3JlZl9zaW5rKCkKCjIwMDktMDUtMDIgMTM6MDY6MTAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0b2JqZWN0LmM6CgkgIGdzdG9iamVjdDogYXZvaWQgdHlwZSBjaGVja3MKCjIwMDktMDUtMDIgMTM6MDI6MTAgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YnVmZmVyLmM6CgkgIGdzdGJ1ZmZlcjogYXZvaWQgdHlwZWNoZWNrcyBpbiBmaW5hbGl6ZQoJICBBdm9pZCB1c2VsZXNzIHR5cGVjaGVja2luZyBpbiB0aGUgZmluYWxpemUgb2YgYnVmZmVycyBhbmQgc3ViYnVmZmVycy4KCjIwMDktMDUtMDIgMTI6NTk6NTQgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkgIGZha2VzaW5rOiBhdm9pZCB0eXBlY2hlY2sKCjIwMDktMDQtMjAgMTQ6MDE6MDEgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIC1sYXVuY2g6IGNvbm5lY3QgdG8gZGVlcC1ub3RpZnkgd2l0aCByaWdodCBuYW1lCgkgIENvbm5lY3QgdG8gdGhlIHJpZ2h0IHNpZ25hbCBuYW1lIHdpdGggLSBpbnN0ZWFkIG9mIF8uCgoyMDA5LTA0LTI0IDIyOjA2OjE5ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb25maWd1cmUuYWM6CgkqIGdzdC9nc3RpbmZvLmM6CgkgIGluZm86IFN1cHBvcnQgbmV3IHByaW50ZiBleHRlbnNpb25zIGluIGdsaWJjIDIuMTAKCSAgVGhlIHByaW50ZiBleHRlbnNpb24gbWVjaGFuaXNtIGNoYW5nZWQgaW4gZ2xpYmMgMi4xMCwgYW5kIHRoZSBvbGRlcgoJICByZWdpc3Rlcl9wcmludGZfZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gRGV0ZWN0IGFuZCB1c2UgdGhlIG5ldwoJICBtZWNoYW5pc20gd2hlcmUgYXZhaWxhYmxlLgoKMjAwOS0wNC0yMCAxMjoyNTo1NyArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZG9jcy9yYW5kb20vcmVsZWFzZToKCSAgZG9jczogRml4IGEgdHlwbyBpbiB0aGUgcmVsZWFzZSBzY3JpcHQKCjIwMDktMDUtMTEgMjE6MTE6NDkgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgQmFjayB0byBkZXZlbG9wbWVudCAtPiAwLjEwLjIzLjEKCj09PSByZWxlYXNlIDAuMTAuMjMgPT09CgoyMDA5LTA1LTEwIDIyOjQxOjA0ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogZ3N0cmVhbWVyLmRvYXA6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2dzdHZlcnNpb24uaDoKCSAgUmVsZWFzZSAwLjEwLjIzCgoyMDA5LTA1LTEwIDIyOjM4OjQ1ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoKMjAwOS0wNS0wNiAxNjoxMDoxMSArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogY29uZmlndXJlLmFjOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICAwLjEwLjIyLjQgcHJlLXJlbGVhc2UKCjIwMDktMDQtMjQgMTk6MzY6MjIgKzAyMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YmluLmM6CgkgIEdzdEJpbjogc2V0IFBFTkRJTkdfU1RBVEUgY29ycmVjdGx5CgkgIFNldCB0aGUgcGVuZGluZyBzdGF0ZSBjb3JyZWN0bHkgd2hlbiB3ZSBhcmUgZ29pbmcgdG8gcGVyZm9ybSBhbiBhc3luYwoJICBzdGF0ZV9jb250aW51ZSBvbiB0aGUgYmluLgoJICBGaXhlcyAjNTgwMTIxCgoyMDA5LTA0LTIxIDIwOjUwOjU1ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIDAuMTAuMjIuMyBwcmUtcmVsZWFzZQoKMjAwOS0wNC0yMSAyMjoxMjowNCArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogY29tbW9uOgoJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKCSAgRnJvbSBiMzk0MWVhIHRvIDZhYjExZDEKCjIwMDktMDQtMTcgMTU6NDY6NTIgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogY29uZmlndXJlLmFjOgoJICB3aW4zMjogZGVmaW5lIF9fTVNWQ1JUX1ZFUlNJT05fXyB3aGVuIGNvbXBpbGluZyB3aXRoIE1pbmdXLCBmb3IgX19zdGF0NjQKCSAgTmVlZCB0byBkZWZpbmUgdGhpcyB3aGVuIHVzaW5nIE1pbmdXLCBzbyB0aGF0IHRoZSBpbmNsdWRlcyBwcm92aWRlCgkgIF9fc3RhdDY0IGFuZCBmcmllbmRzLiBXZSBuZWVkIGF0IGxlYXN0IFdpbmRvd3MgWFAgU1AyIGZvciB0aGlzLgoJICBGaXhlcyAjNTY4NjMyLgoKMjAwOS0wNC0xNiAyMjoyNjowMCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGluZm8uYzoKCSogZ3N0L2dzdGluZm8uaDoKCSAgZ3N0ZGVidWc6IGNvbXBldGUgc3R1YnMuIEZpeGVzICM1NzkxNzcuCgkgIEF2b2lkIGRlZmluZXMgd2hlbiBpbmNsdWRpbmcgZ3N0aW5mby5oIG91cnNlbGYgYW5kIGNvbXBsZXRlIHN0dWJzLiBTeW5jIHN0dWIKCSAgcmV0dXJucyB3aXRoIHRoZSBkZWZpbmVzLgoKMjAwOS0wNC0xNyAxMTo0NDoxMSArMDEwMCAgWWFha292IFNlbGtvd2l0eiA8eXNlbGtvd2l0ekB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjb25maWd1cmUuYWM6CgkgIGNvbmZpZ3VyZS5hYzogZm9yaygpIGR1cmluZyByZWdpc3RyeSBzY2FubmluZyBpcyB1bnNhZmUgb24gQ3lnd2luCgkgIEZpeGVzICM1NTU5NzguCgoyMDA5LTA0LTE3IDExOjM5OjU5ICswMTAwICBZYWFrb3YgU2Vsa293aXR6IDx5c2Vsa293aXR6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGdzdC9nc3QuYzoKCSAgZ3N0X2luaXQ6IHJlbG9jYXRhYmlsaXR5IGlzIHVubmVjZXNzYXJ5IG9uIEN5Z3dpbgoJICBTZWUgIzU1NTk3OC4KCjIwMDktMDQtMTcgMTA6MTE6MjEgKzAxMDAgIEJyaWFuIENhbWVyb24gPGJyaWFuLmNhbWVyb25Ac3VuLmNvbT4KCgkqIGdzdC9nc3RpbmZvLmg6CgkgIGdzdGluZm86IGRvbid0IGFzc3VtZSBHX0hBVkVfSVNPX1ZBUkFSR1MgaW1wbGllcyBJU08gQzk5CgkgIE1ha2VzIGhlYWRlcnMgQysrIGNsZWFuLCBlc3AuIHdpdGggdGhlIFN1biBjb21waWxlcnMuCgkgIEZpeGVzICM1Njc2OTIuCgoyMDA5LTA0LTE3IDA5OjE3OjQwICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwbHVnaW4uYzoKCSAgR3N0UGx1Z2luOiBmaXggY29tcGlsYXRpb24gaWYgYm90aCBIQVZFX1dJTjMyIGFuZCBIQVZFX1NJR0FDVElPTiBhcmUgZGVmaW5lZAoJICBNb3ZlIF9nc3RfcGx1Z2luX2ZhdWx0X2hhbmRsZXJfaXNfc2V0dXAgaW50byB0aGUgaWZkZWYgYmxvY2sgd2hlcmUgaXQncwoJICB1c2VkLiBGaXhlcyAjNTc4MjAxLgoKMjAwOS0wNC0xNiAxMjowMTo1MCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRvb2xzL2dzdC1sYXVuY2guYzoKCSAgLWxhdW5jaDogZGlzYWJsZSBDTE9DS19MT1NUIG1lc3NhZ2UgaGFuZGxpbmcKCSAgRGlzYWJsZSB0aGUgaGFuZGxpbmcgb2YgdGhlIENMT0NLX0xPU1QgbWVzc2FnZXMgdW50aWwgd2UgZml4ZWQgYW5kIHJlbGVhc2VkIHRoZQoJICBlbGVtZW50cyAocnRzcHNyYykgdGhhdCBicmVhayB3aGVuIHdlIHF1aWNrbHkgUEFVU0UvUExBWSB0aGUgcGlwZWxpbmUuCgkgIEZpeGVzICM1NzkxMjcKCjIwMDktMDQtMTUgMjI6MjQ6NDUgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgcmVsZWFzZTogQnVtcCB2ZXJzaW9uIHRvIDAuMTAuMjIuMiBmb3IgcHJlLXJlbGVhc2UKCjIwMDktMDQtMTYgMDA6MDg6MjAgKzAxMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOgoJKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICB3aW4zMjogVXBkYXRlIHdpbjMyIGJ1aWxkIGZpbGVzCgoyMDA5LTA0LTE1IDIzOjI3OjMxICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaWQucG86CgkqIHBvL2l0LnBvOgoJKiBwby9qYS5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgcG86IFVwZGF0ZSB0cmFuc2xhdGlvbnMgZnJvbSBUUAoKMjAwOS0wNC0xNSAyMjoxNzoxMCArMDEwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogQ2hhbmdlTG9nOgoJICBDaGFuZ2VMb2c6IHJlZ2VuZXJhdGUgY2hhbmdlbG9nIHdpdGggdGhlIGdlbi1jaGFuZ2Vsb2cgc2NyaXB0CgoyMDA5LTA0LTE1IDIzOjI2OjEzICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgZG9jczogcmVtb3ZlIGVycmFudCBndGstZG9jIGNvbW1lbnQgbWFya2VyIHRyaWdnZXJpbmcgYSB3YXJuaW5nCgoyMDA5LTA0LTE2IDAwOjAyOjA3ICswMTAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0cGFyYW1zcGVjcy5jOgoJKiBnc3QvZ3N0cGFyYW1zcGVjcy5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgcGFyYW1zcGVjczogcmV2ZXJ0IGdzdF9wYXJhbV9zcGVjX2lzX211dGFibGUoKSBmb3IgcmVsZWFzZQoJICBSZXZlcnQgdGhlIGdzdF9wYXJhbV9zcGVjX2lzX211dGFibGUgQVBJIGZvciB0aGlzIHJlbGVhc2Ugc28gd2UgY2FuCgkgIGRpc2N1c3MgaXQgYSBiaXQgZnVydGhlciBmaXJzdC4KCjIwMDktMDQtMTUgMjM6MzM6MjAgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBsb2dnaW5nOiBmaXggdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcgd2hlbiBkaXNhYmxpbmcgZGVidWcgbG9ncy4KCSAgVGhlIHZhciB3YXMgTlVMTCBhbnl3YXksIGJhY2F1c2Ugb2YgdGhlIGlmZGVmcyB0aGVyZSwgdGhlIG1lc3NhZ2UgbWFrZXMgbm8KCSAgc2Vuc2UgaW5jbHVkaW5nIGl0LgoKMjAwOS0wNC0xNSAyMzoxMjoxMSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogY29uZmlndXJlLmFjOgoJKiBnc3QvZ3N0aW5mby5jOgoJKiBnc3QvZ3N0aW5mby5oOgoJICBnc3RkZWJ1Zzogc2hvdyBlbmFibGVkL2Rpc2FibGVkIGluIGNvbmZpZ3VyZSBhbmQgZml4IGJ1aWxkIGZvciBkaXNhYmxlZAoJICBXaGVuIGl0cyBkaXNhYmxlZCwgd2UgcG9pc29uIHNvbWUgc3ltYm9scyB0byBmb3JjZSBhIGJ1aWxkIGVycm9yIGlmIHRoZXkgYXJlCgkgIHVzZWQuIER1bm5vIGhvdyB1c2VmdWwgdGhpcyBhY3VhbGx5IGlzLCBidXQgd2UgbmVlZCB0byBkaXNhYmxlIHRoZSBwb2lzb25pbmcKCSAgd2hlbiB3ZSBpbmNsdWRlIHRoaXMgb3Vyc2VsZi4gQWxzbyBkb24ndCBkZWZpbmUgc29tZSBvZiB0aGUgZHVtbWllcywgYXMgdGhleQoJICBhcmUgZ2V0dGluZyByZXBsYWNlZCB3aXRoIGRlZmluZXMgYW5kIHRoYXQgY3JlYXRlcyBjb2RlIHRoYXQgZG9lcyBub3QgY29tcGlsZS4KCjIwMDktMDQtMTUgMTk6NTg6MzQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L01ha2VmaWxlLmFtOgoJICBVc2UgZ19vbmNlX2luaXRfKigpIGluc3RlYWQgb2YgR09uY2UgZm9yIHRoZSBlbnVtIHR5cGVzCgoyMDA5LTA0LTE1IDEzOjA1OjE2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJICBzdGF0aWNwYWR0ZW1wbGF0ZTogVXBkYXRlIGRvY3Mgb2YgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMgKCkKCSAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMgKCkgYWN0dWFsbHkgcmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUKCSAgY2FwcyBhbmQgaXQncyBjbGVhbmVyIHRvIHVucmVmIHRoZW0gYWZ0ZXIgdXNhZ2UuIFRoZSBjb3JlIHdpbGwsIGhvd2V2ZXIsCgkgIGFsd2F5cyBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBjYXBzIHNvIHRoaXMgZGlkbid0IHJlc3VsdCBpbiBhIG1lbW9yeQoJICBsZWFrLgoKMjAwOS0wNC0xNCAyMjozMjoyMSArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGNsb2NrLmg6CgkqIGdzdC9nc3RwYXJhbXNwZWNzLmM6CgkgIGRvY3M6IHVzZSByZWFsIDxub3RlPiB0YWdzIGFzIHRoZXkgbG9vayBuaWNlIGluIG5ldyBndGstZG9jCgoyMDA5LTA0LTE0IDEyOjIwOjM3IC0wNzAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkqIGdzdC9nc3RwYXJhbXNwZWNzLmM6CgkgIEZpeCBsb2NraW5nIGluIGdzdF9wYXJhbV9zcGVjX2lzX211dGFibGUKCjIwMDktMDQtMTQgMjI6MDc6MzggKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzoKCSAgY29udHJvbGxlcjogZmFjdG9yIG91dCBkdXBsaWNhdGVkIGNvZGUgYW5kIGFkZCBhIGRlc2NyaXB0aW9uIGZvciBpdC4KCSAgQWxzbyBmaXggdHlwbyBpbiB0aGUgdGVzdHMgd2hpbGUgcmV2aWV3aW5nIHRoZW0uCgoyMDA5LTA0LTE0IDE5OjEyOjUyICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmg6CgkgIGRvY3M6IGFkZCBzaW1wbGUgZG9jIGJsdXJiCgoyMDA5LTA0LTE0IDE5OjExOjQ0ICswMjAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBhcmFtc3BlY3MuYzoKCSAgcGFyYW1zcGVjczogYWRkIG5vdGUgYWJvdXQgcmFjeW5lc3MKCSAgQWRkIGEgbm90ZSBhYm91dCBwb3RlbnRpYWwgcmFjeW5lc3MgaW4gX2lzX211dGFibGUoKS4KCjIwMDktMDQtMTQgMTA6MzI6MDcgKzAyMDAgIExSTiA8bHJuMTk4NiBhdCBnbWFpbC5jb20+CgoJKiBnc3QvZ3N0aW5mby5jOgoJICBpbmZvOiB1c2UgbXV0ZXggdG8gZG8gY29uc29sZSBjb2xvcnMgb24gd2luZG93cwoJICBVc2UgYSBzdGF0aWMgbXV0ZXggdG8ga2VlcCB0aGUgY29uc29sZSBjb2xvcnMgYW5kIGNvbnRleHQgdG9nZXRoZXIgd2hlbgoJICBkZWJ1Z2dpbmcgd2l0aCBjb2xvcnMgb24gV2luZG93cy4KCSAgRml4ZXMgIzUxNzIzMS4KCjIwMDktMDQtMTMgMTQ6Mjc6NDkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBhcmFtc3BlY3MuYzoKCSogZ3N0L2dzdHBhcmFtc3BlY3MuaDoKCSAgZG9jczogYWRkIFNpbmNlOiB0YWdzIHRvIGd0ay1kb2MgY2h1bmtzIGZvciBuZXcgcGFyYW0gc3BlYyBBUEkKCSAgQW5kLCBmb3Igb3VyIHJlbGVhc2UgbWFuYWdlciwgdGhlIGluLWNvbW1pdC1tZXNzYWdlIGtleXdvcmRzCgkgIGZvciB0aGUgcHJldmlvdXMgY29tbWl0OgoJICBBUEk6IEdTVF9QQVJBTV9NVVRBQkxFX1JFQURZCgkgIEFQSTogR1NUX1BBUkFNX01VVEFCTEVfUEFVU0VECgkgIEFQSTogR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORwoJICBBUEk6IGdzdF9wYXJhbV9zcGVjX2lzX211dGFibGUKCjIwMDktMDItMjAgMTE6MDk6MTkgLTA4MDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdHBhcmFtc3BlY3MuYzoKCSogZ3N0L2dzdHBhcmFtc3BlY3MuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkgIEFkZCBwYXJhbSBzcGVjIGZsYWdzIGZvciB3aGVuIGEgcHJvcGVydHkgY2FuIGJlIGNoYW5nZWQKCSAgQWRkcyBHU1RfUEFSQU1fTVVUQUJMRSogZmxhZ3MgdG8gaW5kaWNhdGUgaW4gd2hpY2ggc3RhdGVzIGEKCSAgcHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgYW5kIHRha2UgZWZmZWN0LiAgRml4ZXMgIzU3MTU1OQoKMjAwOS0wNC0xMCAxNDoxNTozNiArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHRvb2xzL2dzdC1sYXVuY2guYzoKCSAgLWxhdW5jaDogaGFuZGxlIGNsb2NrLWxvc3QgbWVzc2FnZXMKCSAgV2hlbiB3ZSByZWNlaXZlIGEgY2xvY2stbG9zdCBtZXNzYWdlLCB3ZSBuZWVkIHRvIHNlbGVjdCBhIG5ldyBjbG9jayBpbiB0aGUKCSAgcGlwZWxpbmUgYnkgc2V0dGluZyB0aGUgcGlwZWxpbmUgdG8gUEFVU0VEIGFuZCBiYWNrIHRvIFBMQVlJTkcuCgoyMDA5LTA0LTA5IDE4OjI3OjIxICswMjAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXIgYXQgdGVzdGVyLmNhPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgdGVlOiBhZGQgcHJvcGVydHkgdG8gY29udHJvbCB0aGUgYWxsb2MgcGFkCgkgIEFkZCBhIHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlIHBhZCB1c2VkIGZvciBwcm94eWluZyB0aGUgYnVmZmVyX2FsbG9jIGZ1bmN0aW9uIG9uCgkgIHRoZSBzaW5rcGFkLgoJICBGaXhlcyAjNTc3ODkxLgoKMjAwOS0wNC0wOSAxMTo1MTo0MyArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgYmluOiBhbHdheXMgbWFyayBwZW5kaW5nX2FzeW5jX2RvbmUKCSAgV2hlbiB3ZSBnZXQgYW4gQVNZTkNfRE9ORSBtZXNzYWdlIHdoZW4gYSBzdGF0ZSBjaGFuZ2Ugd2FzIGJ1c3ksIHNldCB0aGUKCSAgcGVuZGluZ19hc3luY19kb25lIGZsYWcgc28gdGhhdCBhZnRlciB0aGUgc3RhdGUgY2hhbmdlIGNvbXBsZXRlcywgdGhlIGJpbiBjYW4KCSAgY2hlY2sgaWYgYWxsIGFzeW5jIGVsZW1lbnRzIGFyZSBmaW5pc2hlZC4gRG9uJ3Qgb25seSBkbyB0aGlzIGZvciB0aGUgYmluIGl0c2VsZgoJICBidXQgZm9yIGFsbCBlbGVtZW50cy4KCSAgVGhpcyBmaXhlcyBzb21lIGJpbnMgaW4gYmlucyB0aGF0IHNpbXVsYXRlIGFzeW5jIHN0YXRlIGNoYW5nZXMgYnkgcG9zdGluZyBBU1lOQwoJICBtZXNzYWdlcyAoc3VjaCBhcyBzZHBwYXJzZSBpbiB1cmlkZWNvZGViaW4vcGxheWJpbjIpLgoKMjAwOS0wNC0wOSAxMTo0Mjo0OCArMDIwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RpbmZvLmM6CgkgIGluZm86IGZpeCBjb21waWxhdGlvbiwgJTA4eCBuZWVkcyBhbiB1bnNpZ25lZCBpbnQKCSAgJTA4eCBuZWVkcyBhbiB1bnNpZ25lZCBpbnQsIHNvIGdpdmUgaXQgdGhhdC4KCjIwMDktMDQtMDYgMDE6Mjc6MjYgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGluZm8uYzoKCSogZ3N0L2dzdGluZm8uaDoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGluZm8uYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFQSTogYWRkIEZJWE1FIGFuZCBEVU1QTUVNIGxvZyBsZXZlbHMgYW5kIGNvbnZlbmllbmNlIG1hY3JvcwoJICBUd28gbmV3IGxvZyBsZXZlbHMgdG8gZHVtcCBGSVhNRXMgaW50byB0aGUgbG9nIGFuZCB0byBsb2cgZGF0YQoJICBpbiBmb3JtIG9mIGEgaGV4IGR1bXAgKCM1NzgxMTQpLgoJICBBUEk6IEdTVF9DQVRfRklYTUVfT0JKRUNUCgkgIEFQSTogR1NUX0NBVF9NRU1EVU1QX09CSkVDVAoJICBBUEk6IEdTVF9DQVRfRklYTUUKCSAgQVBJOiBHU1RfQ0FUX01FTURVTVAKCSAgQVBJOiBHU1RfRklYTUVfT0JKRUNUCgkgIEFQSTogR1NUX01FTURVTVBfT0JKRUNUCgkgIEFQSTogR1NUX0ZJWE1FCgkgIEFQSTogR1NUX01FTURVTVAKCjIwMDktMDQtMDggMTg6MTM6NDIgKzAzMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RiaW4uYzoKCSogZ3N0L2dzdGNsb2NrLmM6CgkgIGRvY3M6IHhyZWYgbW9yZQoKMjAwOS0wNC0wOCAxNzo0OToxOCArMDMwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6CgkgIHRlc3RzOiByZW1vdmUgdGhlIGhhY2tzIHRvIHdvcmthcm91bmQgdGhlIHBhZC1sZWFrCgoyMDA5LTA0LTA4IDE1OjI0OjU4ICswMzAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzoKCSAgcGFkdGVtcGxhdGU6IGVuYWJsZSBjb2RlIHRvIGZpeCB0aGUgbGVhaywgbm93IHRoYXQgdGhlIGRlcHMgaGF2ZSBiZWVuIHJlbGVhc2VkCgkgIEdvb2QgYW5kIGZmbXBlZyBhcmUgYWN0dWFsbHkgbXVsdGlwbGUgcmVsZWFzZXMgYmV5b25kLCBzbyB0aGF0IHRoaXMgaXMgbm93IHNhZmUKCSAgdG8gZG8uCgoyMDA5LTA0LTA0IDIxOjE4OjIzICswMzAwICBGZWxpcGUgQ29udHJlcmFzIDxmZWxpcGUuY29udHJlcmFzQGdtYWlsLmNvbT4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gZDBlYTg5ZSB0byBiMzk0MWVhCgoyMDA5LTA0LTA0IDE0OjUzOjIxICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogY29tbW9uOgoJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKCSAgRnJvbSBmOGIzZDkxIHRvIGQwZWE4OWUKCjIwMDktMDQtMDQgMTQ6NDI6MDQgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICBnc3QtaW5zcGVjdDogcmVtb3ZlIGRlYWQgYXNzaWdubWVudAoJICBmaXJzdF9mbGFnIHdpbGwgYmUgZWl0aGVyOgoJICAqIHJld3JpdHRlbiB3aXRob3V0IGJlaW5nIHJlYWQgaWYgd2UgbG9vcCBhZ2FpbiAobGluZSAyODQpCgkgICogbm90IHJlYWQgYWdhaW4gaWYgd2UgZG9uJ3QgbG9vcAoKMjAwOS0wNC0wNCAxNDozOTo1MSArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGJhc2VzaW5rOiBSZW1vdmUgZGVhZCBhc3NpZ25tZW50cy4KCSAgc3N0YXJ0L3NzdG9wL3JzdGFydC9yc3RvcCBhcmUgYWxsIGVpdGhlcjoKCSAgKiBhc3NpZ25lZCB2YWx1ZXMgbGF0ZXIgb24gYmVmb3JlIGJlaW5nIHVzZWQgaW4gJ2RvX3RpbWVzOicgKEVPUyBhbmQgYnVmZmVycykKCSAgKiBub3QgdXNlZCAobm9uLUVPUyBldmVudHMpCgoyMDA5LTA0LTA0IDE0OjM4OjUyICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIGJhc2VzcmM6IHJlbW92ZSBkZWFkIGFzc2lnbm1lbnQuCgkgIFRoZSB2YXJpYWJsZSB3aWxsIG5vdCBiZSByZWFkIGJlZm9yZSBpdCdzIGFzc2lnbmVkIGEgdmFsdWUgbGluZSA5NDIvOTQ1CgoyMDA5LTA0LTA0IDE0OjM3OjEzICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgZ3N0dGFnbGlzdDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSAgV2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIHZhcmlhYmxlIGlmIGl0J3MgdGhlIHJldHVybiBvZiBhIGZ1bmN0aW9uIGNhbGwKCSAgYW5kIHdlIG9ubHkgY2hlY2sgaXQgb25jZS4KCjIwMDktMDQtMDQgMTQ6MzU6MzQgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIGdzdHN0cnVjdHVyZTogT25seSB1c2UgbWV0aG9kcyB1c2VkIGluIGdfKiBjaGVja3MgaWYgZ2xpYiBjaGVja3MgYXJlIGRpc2FibGVkCgoyMDA5LTA0LTA0IDEwOjU5OjM5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGRhdGFxdWV1ZS5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgZ3N0OiBVc2UgZ19vbmNlX2luaXQqIG9yIEdfREVGSU5FX1RZUEUKCjIwMDktMDQtMDQgMTA6MjA6MzYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGJpbi5jOgoJKiBnc3QvZ3N0YnVmZmVyLmM6CgkqIGdzdC9nc3RjaGlsZHByb3h5LmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGluZGV4LmM6CgkqIGdzdC9nc3RpbmRleGZhY3RvcnkuYzoKCSogZ3N0L2dzdGludGVyZmFjZS5jOgoJKiBnc3QvZ3N0bWVzc2FnZS5jOgoJKiBnc3QvZ3N0b2JqZWN0LmM6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0cHJlc2V0LmM6CgkqIGdzdC9nc3RxdWVyeS5jOgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dGFzay5jOgoJKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6CgkqIGdzdC9nc3R1cmkuYzoKCSogZ3N0L2dzdHhtbC5jOgoJICBnc3Q6IFVzZSBHX0RFRklORV9UWVBFIGFuZCBmcmllbmRzIG9yIGF0IGxlYXN0IGdfb25jZV9pbml0XyogaW4gdGhlIF9nZXRfdHlwZSgpIGZ1bmN0aW9ucwoKMjAwOS0wNC0wNCAxMDoxODo0MiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0YnVzLmM6CgkqIGdzdC9nc3RjbG9jay5jOgoJICBnc3Q6IFVzZSBHX0RFRklORV9UWVBFIGFuZCBkb24ndCBjYWxsIGdfdGhyZWFkX2luaXQoKSBmcm9tIGNsYXNzX2luaXQKCSAgY2xhc3NfaW5pdCBpcyB0b28gbGF0ZSBmb3IgY2FsbGluZyBnX3RocmVhZF9pbml0KCkgYXMgZ190aHJlYWRfaW5pdCgpCgkgIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgYW55IEdPYmplY3QgZnVuY3Rpb24uCgoyMDA5LTA0LTAzIDEzOjQ2OjE4ICswMjAwICBNYXJrIE5hdXdlbGFlcnRzIDxtYXJrLm5hdXdlbGFlcnRzQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzZWdtZW50LmM6CgkgIFVzZSBnX3NsaWNlX2NvcHkgaW5zdGVhZCBvZiBnX3NsaWNlX2R1cC4KCSAgQSAoYnVnZ3kpIGdsaWIgZ19zbGljZV9kdXAgbWFjcm8gbWF5IGNhdXNlIGNvbXBpbGVyIHdhcm5pbmdzIG9uIGUuZy4geDg2XzY0LgoKMjAwOS0wNC0wMyAxMjoyMTo1NSArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICBjb250cm9sbGVyOiByZW1vdmUgZGVhZCBhc3NpZ25tZW50LgoJICBUaGUgdmFsdWUgb2YgcHJvcCBpcyBiZWluZyBvdmVyd3JpdHRlbiBqdXN0IGFmdGVyIHdpdGhvdXQgYmVpbmcgcmVhZC4KCjIwMDktMDQtMDMgMTI6MjA6MzYgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIGdzdHN0cnVjdHVyZTogUmVtb3ZlIGRlYWQgYXNzaWdubWVudC4KCSAgJ3R5cGUnIGlzIG5ldmVyIHVzZWQgdW50aWwgbGluZSAxODQ3IHdoZXJlIGl0J3Mgb3ZlcndyaXR0ZW4uCgoyMDA5LTA0LTAzIDEyOjE5OjQwICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIGFkYXB0ZXI6IHJlbW92ZSBkZWFkIGFzc2lnbm1lbnQuCgkgIFRoZSB2YWx1ZSBzZXQgdG8gdG9fY29weSBhdCB0aGF0IGxpbmUgaXMgbmV2ZXIgdXNlZCwgYW5kIGlzIG92ZXJ3cml0dGVuCgkgIGZ1cnRoZXIgZG93biBiZWZvcmUgYmVpbmcgcmVhZC4KCjIwMDktMDQtMDMgMTI6MTc6MzMgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0YmluLmM6CgkgIGdzdGJpbjogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSAgVGhlIHJldHVybiB2YWx1ZSBvZiBnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUgaXNuJ3QgdXNlZCBhZnRlciB0aGF0IGNhbGwuCgoyMDA5LTA0LTAzIDEyOjE1OjM4ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIHBpcGVsaW5lOiByZW1vdmUgcmVkdW5kYW50IGFzc2lnbm1lbnQuCgkgIElmIHRoYXQgYmxvY2sgaXMgZW50ZXJlZCwgdGhlbiBzdGFydF90aW1lIGJlY29tZXMgR1NUX0NMT0NLX1RJTUVfTk9ORS4KCSAgU2luY2Ugc3RhcnRfdGltZSBpcyBpbnZhbGlkLCB0aGUgY29kZSB3aWxsIGVudGVyIHRoZSBibG9jayBhdCBsaW5lIDQzNCBhbmQKCSAgbmV3X2Jhc2VfdGltZSB3aWxsIGJlIHNldCB0aGVyZS4KCjIwMDktMDQtMDMgMTI6MTM6MzggKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgZ3N0cmVnaXN0cnliaW5hcnk6IHJlbW92ZSB2YXJpYWJsZSBvbmx5IHVzZWQgZm9yIGEgY2hlY2suCgkgIHRoYXQgdmFyaWFibGUgaXNuJ3QgdXNlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbiB0aGF0IGJsb2NrLgoKMjAwOS0wNC0wMyAxMjoxMzowMCArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbmsgOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJICBzeW5jIGlzIG5ldmVyIHVzZWQgYW55d2hlcmUgaW4gdGhhdCBjb2RlLgoKMjAwOS0wNC0wMyAxMjoxMjowOCArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBiYXNldHJhbnNmb3JtOiBtb3ZlIHVudXNlZCB2YXJpYWJsZSBpbiB0aGUgI2lmIDAgYmxvY2suCgkgIFRoYXQgdmFyaWFibGUgaXMgb25seSB1c2VkIGJ5IHRoZSBjb2RlIHdoaWNoIGhhcyBiZWVuIGlmIDAnZAoKMjAwOS0wNC0wMyAxMTo1Njo0OCArMDIwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGdzdC9nc3R1cmkuYzoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIFJlbW92ZSB1bnVzZWQgaW5jcmVtZW50cyBhcyBkZXRlY3QgYnkgTExWTSdzIENMYW5nIHN0YXRpYyBhbmFseXplci4KCjIwMDktMDQtMDMgMTE6NTI6NDkgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0YnVzLmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0aW5kZXhmYWN0b3J5LmM6CgkqIGdzdC9nc3RpbnRlcmZhY2UuYzoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogZ3N0L2dzdHRhc2suYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBkZXRlY3RlZCBieSBMTFZNJ3MgQ2xhbmcgc3RhdGljIGFuYWx5emVyLgoKMjAwOS0wNC0wMyAxMToxOTo0MiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBkb2NzOiBpbXByb3ZlIEFQSSByZWZlcmVuY2UgZm9yIGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoKQoKMjAwOS0wNC0wMiAxMzozMjo1OCArMDIwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzIChhdCkgYXBlc3RhYXJ0IChkb3QpIG9yZz4KCgkqIGdzdC9nc3RiaW4uaDoKCSAgZG9jczogZXhwbGFpbiByZWYgb3duZXJzaGlwIGZvciBoYW5kbGVfbWVzc2FnZSBpbXBsZW1lbnRhdGlvbnMKCjIwMDktMDQtMDIgMTA6NDM6MTYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgZ3N0Y2hlY2s6IENhbGwgZ3N0X2NoZWNrX2luaXQoKSBiZWZvcmUgY3JlYXRpbmcgdGhlIHN1aXRlCgkgIFRoaXMgYWxsb3dzIHVzaW5nIHRoZSBHU3RyZWFtZXIgb3IgR09iamVjdCBBUEkgaW4gdGhlIHN1aXRlCgkgIGNyZWF0aW9uIGZ1bmN0aW9uLgoKMjAwOS0wMy0zMSAxODoxNDowOCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAZW1iZWRkZWQudWZjZy5lZHUuYnI+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIGdzdC1sYXVuY2g6IEZpeGVzIGVycm9yIHdoZW4gRElTQUJMRV9GQVVMVF9IQU5ETEVSIGlzIGRlZmluZWQKCSAgV2hlbiBkZWZpbmVkLCB0aGlzIG1hY3JvIHByZXZlbnRlZCB0aGUgZGVjbGFyYXRpb24gb2YgJ3dhaXRpbmdfZW9zJywgY2F1c2luZyBhbiBlcnJvci4KCjIwMDktMDMtMjYgMTc6MjU6MDggKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgY2Fwc2ZpbHRlci4gQWx3YXlzIGNhbGxzIF9zdWdnZXN0LCBldmVuIHdpdGggTlVMTCBjYXBzLiBGaXhlcyAjNTc0ODA1CgoyMDA5LTAzLTMwIDE1OjQ1OjAyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3F1ZXVlLmM6CgkgIHRlc3RzOiBEb24ndCBkZWZpbmUgZ2xvYmFsIGJ1ZmZlcnMgdmFyaWFibGUsIGl0J3MgYWxyZWFkeSBkZWZpbmVkIGJ5IGxpYmdzdGNoZWNrCgoyMDA5LTAzLTMwIDEwOjMzOjUxICswMjAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkqIGRvY3MvZ3N0L2J1aWxkaW5nLnhtbDoKCSAgZG9jczogU29tZSBncmFtbWFyIGFuZCB0eXBvIGNvcnJlY3Rpb25zLgoKMjAwOS0wMy0yOSAxMzo0MToyMiArMDIwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFuYS5hbWFudGVzPgoKCSogZG9jcy9nc3QvYnVpbGRpbmcueG1sOgoJICBGaXggdHlwby4KCjIwMDktMDMtMjcgMTc6MzA6MjMgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBiaW5hcnlyZWdpc3RyeTogaW5pdCB2YXJpYWJsZSwgdGhhdCBpcyByZWZlcmVuY2VkIGluIGVycm9yIGNhc2UgYmVsb3cgdGhlIGZhaWw6IGxhYmVsCgoyMDA5LTAzLTI3IDE2OjE1OjU1ICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIGNsb2NrOiB3YWtldXAgdGhlIGFzeW5jIHRocmVhZCBhIGJpdCBtb3JlCgkgIEFsc28gd2FrZSB1cCB0aGUgYXN5bmMgdGhyZWFkIHdoZW4gaXQgaXMgZG9pbmcgYW4gYXN5bmMgd2FpdCBmb3IgYW4gZW50cnkuCgoyMDA5LTAzLTI3IDE2OjE1OjEwICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgZWxlbWVudDogRml4IGEgbGl0dGxlIGRlYnVnIG1lc3NhZ2UKCjIwMDktMDMtMjYgMTM6MDc6NTYgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBiaW5hcnlyZWdpc3RyeTogY2hlY2sgZm9yIG5vdCByZWFkaW5nIGJleW9uZCB0aGUgZGF0YSBhcmVhLiBGaXhlcyAjNTc2ODQyCgkgIENoZWNrIGFsbCByZWFkcyBhZ2FpbnN0IHRoZSBlbmQgb2YgdGhlIGRhdGEgcmVnaW9uLiBSb2xsIGJhY2sgcmVnaXN0cmF0aW9uIG9mCgkgIHBhcnRpYWwgcmVhZHMuCgoyMDA5LTAzLTI1IDExOjAzOjIyICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9nc3QvYnVpbGRpbmcueG1sOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICBkb2NzOiBhZGQgYSBwYWdlIGFib3V0IGJ1aWxkaW5nIGdzdHJlYW1lciBhbmQgYXBwcwoKMjAwOS0wMy0yNiAxMzowODowMSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAZW1iZWRkZWQudWZjZy5lZHUuYnI+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIEFkZHMgZmxhZyBmb3IgZW9zIG9uIHNodXRkb3duIGluIGdzdC1sYXVuY2guIEZpeGVzICM1NzU4MTQuCgoyMDA5LTAzLTI2IDIyOjA1OjMxICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGNsb2NrLmM6CgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICBjbG9jazogbWFrZSBVTlNDSEVEVUxFRCBjaGVja3MgdGhyZWFkc2FmZQoJICBNb3ZlIHRoZSBjaGVja3MgZm9yIHVzaW5nIGFuIHVuc2NoZWR1bGVkIGVudHJ5IGZyb20gdGhlIHVuc2FmZSBHc3RDbG9jayB0byB0aGUKCSAgU3lzdGVtQ2xvY2sgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIHBlcmZvcm0gdGhlIGNvcnJlY3QgbG9ja2luZy4KCSAgZml4IGEgbGVhayBhbmQgcG90ZW50aWFsIGRlYWRsb2NrIHRoZW4gdGhlIGFzeW5jIHRocmVhZCBmYWlscyB0byBzdGFydC4KCSAgU3ByaW5rbGUgc29tZSBHX0xJS0VMWSBhcm91bmQgYmVjYXVzZSB3ZSBjYW4uCgoyMDA5LTAzLTI2IDIxOjQwOjIwICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIGNsb2NrOiByZW1vdmUgcGVuZGluZyBhc3luYyB3YWtldXAgc29vbmVyCgkgIFJlbW92ZSBhIHBlbmRpbmcgYXN5bmMgd2FrZXVwIGJlZm9yZSB3ZSBjaGVjayBpZiB0aGUgbmV4dCBlbnRyeSBpcyBVTlNDSEVEVUxFRAoJICBiZWNhdXNlIHdlIG1pZ2h0IGxlYXZlIHRoZSBjb250cm9sIHNvY2tldCBidXN5LgoKMjAwOS0wMy0yNiAxOTozMzo0MSArMDEwMCAgUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CgoJKiBnc3QvZ3N0cG9sbC5jOgoJICBnc3Rwb2xsOiBDb3JyZWN0ZWQgYSBkb2N1bWVudGF0aW9uIHR5cG8uCgoyMDA5LTAzLTI2IDE5OjEzOjU1ICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIGNsb2NrOiBhZGQgc29tZSBtb3JlIGNvbW1lbnRzLgoKMjAwOS0wMy0yNiAxODo0NjozNSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICBjbG9jazogcmV3b3JrIHRoZSB3YWtldXAgb2YgZW50cmllcy4KCSAgS2VlcCBhIGNvdW50ZXIgZm9yIHRoZSBhbW91bnQgb2Ygb3V0c3RhbmRpbmcgd2FrZXVwcyB0aGF0IHdlIHByb2R1Y2UgYW5kIG9ubHkKCSAgcGVyZm9ybSBhIHdyaXRlL3JlYWQgdG8gdGhlIGNvbnRyb2wgc29ja2V0IHdoZW4gMSBvciAwIHJlc3BlY3RpdmVseS4KCSAgZG9uJ3QgcG9sbCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBlbnRyaWVzIHRvIGJlIHVuYmxvY2tlZCBhbmQgY2xlYXIgdGhlaXIgd2FrZXVwCgkgIGNvdW50cywganVzdCBhY3Qgb24gdGhlIHNpZ25hbCB3aGVuIHRoZSB3YWtldXAgY291bnQgaXMgMC4KCSAgdW5zY2hlZHVsZWQgZW50cmllcyB3aWxsIGNsZWFyIHRoZWlyIHdha2V1cCBjb3VudCB0aGVtc2VsdmVzLgoJICBLZWVwIHRyYWNrIG9mIHdoZW4gd2Ugd2FrZXVwIHRoZSBhc3luYyB0aHJlYWQgYmVjYXVzZSB0aGUgbGlzdCBvZiBlbnRyaWVzIGhhcwoJICBjaGFuZ2VkLgoJICBkb24ndCB0cnkgdG8gc2VlIGlmIHRoZSBsaXN0IGNoYW5nZWQgYmVjYXVzZSB3ZSBjYW4ndCByZWFsbHkga25vdyB3aGVuIG9uZSBlbnRyeQoJICBpcyBhZGRlZCBtdWx0aXBsZSB0aW1lcy4KCSAgT25seSB3YWtlIHVwIHRoZSBhc3luYyB0aHJlYWQgd2hlbiB3ZSBhZGQgYW4gYXN5bmMgZW50cnkgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QKCSAgYW5kIHRoZSBvbGQgZW50cnkgd2FzIEJVU1kuCgoyMDA5LTAzLTI1IDE3OjMxOjE2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBnc3QvZ3N0cG9sbC5jOgoJICBnc3Rwb2xsOiBGaXggdXAgZG9jdW1lbnRhdGlvbiBzdHJpbmdzLgoJICBOb3RlIHRoZSBjaGFuZ2VkIGJlaGF2aW91ciBvZiBnc3RfcG9sbF93YWl0IGZvciB0aW1lciBHc3RQb2xsJ3MsIGFuZAoJICBmaXggYSBjb3VwbGUgb2Ygc3BlbGxpbmcgZXJyb3JzLgoKMjAwOS0wMy0yNiAxNTo1NTowMiArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgY2xvY2s6IGZpeCAyIHdha2V1cCByYWNlcy4KCSAgd2hlbiBhbiBlbnRyeSBiZWluZyB3YWl0ZWQgb24gaW4gdGhlIGFzeW5jIHRocmVhZCBpcyB1bnNjaGVkdWxlZCwgY2xlYXIgdGhlCgkgIHdha2V1cCBxdWV1ZSBzbyB3ZSBjYW4gY29udGludWUgd2FpdGluZyBvbiBvdGhlciBlbnRyaWVzLgoJICBXaGVuIGFuIGVudHJ5IGJlaW5nIHdhaXRlZCBvbiBpbiB0aGUgYXN5bmMgdGhyZWFkIGlzIHVubG9ja2VkIGJlY2F1c2UgYW4gZWFybGllcgoJICBlbnRyeSB3YXMgYWRkZWQgdG8gdGhlIGxpc3QsIHNldCB0aGUgZW50cnkgdG8gT0sgYWdhaW4uIFRoaXMgbWFrZXMgc3VyZSB0aGF0CgkgIG9ubHkgdGhlIGVudHJpZXMgYmVpbmcgd2FpdGVkIG9uIGhhdmUgdGhlIEJVU1kgZmxhZyBzZXQgYW5kIHdha2UgdXAgdGhlIHRpbWVyCgkgIHBvbGwgd2hlbiB0aGV5IGFyZSB1bnNjaGVkdWxlZC4KCjIwMDktMDMtMjYgMTQ6NDQ6MDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIHJlZ2lzdHJ5OiBpZ25vcmUgLmdpdCBkaXJlY3Rvcnkgd2hlbiByZWN1cnNpdmVseSBzY2FubmluZyBwbHVnaW4gcGF0aHMgZm9yIHBsdWdpbnMKCSAgU2F2ZXMgc29tZSBjeWNsZXMvcGFuZGFzIGZvciB0aG9zZSBvZiB1cyB3aG8gcnVuIHVuaW5zdGFsbGVkIHNldHVwcy4KCjIwMDktMDMtMjYgMTQ6MTY6NTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOgoJICByZWdpc3RyeTogZG8gZnN5bmMoKSBiZWZvcmUgY2xvc2UoKSBhbmQgcmVuYW1lKCkKCSAgVGhpcyBoZWxwcyBwcmV2ZW50IGZpbGVzeXN0ZW0vZGF0YSBpbmNvbnNpc3RlbmNpZXMgaW4gY2VydGFpbgoJICBjaXJjdW1zdGFuY2VzIG9uIGNlcnRhaW4gZmlsZXN5c3RlbXMgKGxpa2UgZXh0NCwgeGZzLCB1YmlmcykuCgkgIEFsc28gc2VlIGJ1ZyAjNTYyOTc2LgoKMjAwOS0wMy0yNiAwMTowOTowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5oOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBUEk6IGFkZCBnc3RfdGFnX2xpc3RfZ2V0X2J1ZmZlcntfaW5kZXh9CgkgIENvbnZlbmllbmNlIEFQSSwgbW9zdGx5IGZvciBpbWFnZSB0YWdzLCBzbyBwZW9wbGUgZG9uJ3QgaGF2ZSB0bwoJICBmaWd1cmUgb3V0IHRoZSB3aG9sZSBHVmFsdWUvR3N0VmFsdWUgdGhpbmcganVzdCBmb3IgdGhpcy4KCjIwMDktMDMtMjUgMjM6MDM6MzggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICBzeXN0ZW1jbG9jazogQ2xlYW4gdXAgdGhlIHRlc3RzIGEgYml0LgoJICBBZGQgc29tZSBjbGVhbnVwcyB0byB0aGUgc3lzdGVtIGNsb2NrIHRlc3RzLCB0byBmcmVlIGFsbCB0aGUgbWVtb3J5IGFuZAoJICB1bnNjaGVkdWxlL3VucmVmIGFsbCBjbG9jayBJRHMgd2UgYWxsb2NhdGUuCgkgIFVzZSBhIG11dGV4IGluIG9uZSB0ZXN0IHRvIGF2b2lkIHBvdGVudGlhbCB0aHJlYWRpbmcgcHJvYmxlbXMgb24gbXVsdGljb3JlCgkgIG1hY2hpbmVzLgoKMjAwOS0wMy0yNSAyMTozNzozOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIHN5c3RlbWNsb2NrOiBBZGQgYSB0ZXN0IGZvciBzeW5jL2FzeW5jIGNsb2NraWQgaW50ZXJhY3Rpb25zCgkgIFRoaXMgdGVzdCByYW5kb21seSBoYW5ncyBpZiB0aGVyZSBhcmUgcHJvYmxlbXMgd2l0aCB0aGUgcmVsaWFiaWxpdHkgb2YKCSAgdW5zY2hlZHVsaW5nIHN5bmMgYW5kIGFzeW5jIGNsb2NrSUQncyBvbiB0aGUgc3lzdGVtIGNsb2NrLgoKMjAwOS0wMy0yNiAxMToxNzowMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0c2VnbWVudC5jOgoJICBzZWdtZW50OiBVc2UgZ19zbGljZV9kdXAoKSBub3cKCjIwMDktMDMtMjYgMTE6MDg6MjcgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dsaWItY29tcGF0Lmg6CgkqIGdzdC9nc3R1dGlscy5oOgoJICBSZW1vdmUgc29tZSBjb21wYXRpYmlsaXR5IHN0dWZmIGZvciBHTGliIDwgMi4xNAoKMjAwOS0wMy0yNSAwMDo1MDowNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICBBUEk6IGFkZCBHU1RfVEFHX1NVQlRJVExFX0NPREVDCgkgIFllcywgJ2NvZGVjJyBpc24ndCBleGFjdGx5IHRoZSBiZXN0IHdvcmQsIGJ1dCBsZXQncyBiZSBjb25zaXN0ZW50IHdpdGggQVVESU9fQ09ERUMKCSAgYW5kIFZJREVPX0NPREVDICh3aGljaCBtYXkgYmUgJ3JhdycgZm9ybWF0cyBhcyB3ZWxsIGFmdGVyIGFsbCkuIFByZXJlcXVpc2l0ZSBmb3IKCSAgYnVnICAjNTc2NTUyLgoKMjAwOS0wMy0yNCAyMTozOToyMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB0b29scy9nc3QtbGF1bmNoLjEuaW46CgkgIGRvY3M6IGdzdC1sYXVuY2ggbWFuIHBhZ2UgZml4CgkgIFRoZSBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIC0tZ3N0LWRlYnVnLWRpc2FibGUsIG5vdCAtLWdzdC1kaXNhYmxlLWRlYnVnLgoJICBGaXhlcyAjNTc2NTU2LiBTcG90dGVkIGJ5IEJvZ2RhbiBIYXJqb2MuCgoyMDA5LTAzLTI0IDE5OjMzOjU2ICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIGdzdHV0aWxzOiBpbXByb3ZlIHByb3BlcnR5IHNldCBhbmQgY29udmVydCBjb2RlCgkgIFVzZSBzdHJpbmcgZGVzZXJpYWxpc2F0aW9uIGluc3RlYWQgb2YgY3VzdG9tIHBhcnNpbmcgY29kZSB0byBhbGxvdyBmb3IgYWxsCgkgIHN1cHBvcnRlZCB3YXlzIG9mIHNwZWNpZnlpbmcgcHJvcGVydHkgdmFsdWVzLgoJICBmaXhlcyAjNTc2NTgyLgoKMjAwOS0wMy0yMyAxNToxODoyMSArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSogZ3N0L2dzdGluZm8uYzoKCSAgYnVpbGQ6IGRlZmluZSBzdHVicyB3aGVuIGRpc2FibGluZyBnc3QtZGVidWcgc3Vic3lzdGVtLiBGaXhlcyAjNTc1OTIyCgkgIFJ1bm5pbmcgY29uZmlndXJlIHdpdGggZS5nLiAtLWRpc2FibGUtZHN0LWRlYnVnIHdhcyBjb21waWxpbmcgb3V0IHRoZSBkZWJ1ZwoJICBzeXN0ZW0gKEFCSSBicmVhaykuIE5vdyBzdHVicyBhcmUgYWRkZWQgYW5kIG9ubHkgaWYgb25lIGRvZXMgZS5nLgoJICBtYWtlIENGTEFHUz0iLURHU1RfUkVNT1ZFX0RJU0FCTEVEIiB0aGUgc3ltYm9scyBhcmUgb21taXR0ZWQuCgoyMDA5LTAzLTIzIDEyOjM0OjM0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbms6IGZpeCBvbmNlLXBlci1zZWNvbmQgJ2VtZXJnZW5jeSByZW5kZXJpbmcnIGZvciBjYXNlIHdoZXJlIGFsbCBidWZmZXJzIGJ1dCB0aGUgdmVyeSBmaXJzdCBhcmUgbGF0ZQoJICBEdWUgdG8gYSB0eXBvIGJhc2VzaW5rIGRpZG4ndCBkbyBhbnkgZW1lcmdlbmN5IHJlbmRlcmluZyBvZiBsYXRlIGJ1ZmZlcnMKCSAgaWYgdGhlIG9ubHkgYnVmZmVyIGV2ZXIgcmVuZGVyZWQgd2FzIHRoZSBmaXJzdCBvbmUgd2l0aCB0aW1lc3RhbXAgMC4gVGhpcwoJICBtZWFucyB0aGF0IGluIGNhc2VzIHdoZXJlIHRoZSBkZWNvZGVyIGlzIHZlcnkgdmVyeSBzbG93LCB3ZSdkIG5ldmVyIHNlZQoJICBhbnkgYnVmZmVycyBidXQgdGhlIHZlcnkgZmlyc3Qgb25lIHJlbmRlcmVkLiBGaXhlcyAjNTc2MzgxLgoKMjAwOS0wMy0yMSAwMjozNDowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZG9jcy9yYW5kb20vcmVsZWFzZToKCSAgZG9jczogdHdlYWsgdGhlIHJlbGVhc2UgcHJvY2VkdXJlIHNjcmlwdAoKMjAwOS0wMy0yMCAxNDoxMjo1NSArMDEwMCAgTFJOIDxscm4xOTg2IGF0IGdtYWlsIGRvdCBjb20+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgd2luMzI6IGZpeCBzZWVraW5nIGluIGZpbGVzID40R0IKCSAgVXNlIDY0LWJpdCBmdW5jdGlvbnMgb24gd2luZG93cyB0byBpbXBsZW1lbnQgc2Vla2luZyBpbiBmaWxlcyBiaWdnZXIKCSAgdGhhbiA0R0IuCgkgIEZpeGVzICM1NzU5ODgKCjIwMDktMDMtMjAgMTE6MjY6MzAgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICBjb250cm9sbGVyOiBGaXggZ2VuZXJhdGlvbiBvZiBjb250cm9sLWNoYW5nZSBhcnJheXMuCgkgIFdoZW4gZ2VuZXJhdGluZyBhcnJheXMgb2YgY29udHJvbCBjaGFuZ2VzIHRpbWVzdGFtcCB2YXJpYWJsZSB3YXMgdXNlZCBpbnN0ZWFkCgkgIHRoZSBsb2NhbCB0cyB2YXJpYWJsZSB0aGF0IHdlIGluY3JlbWVudCB3aGVuIHN0ZXBwaW5nIHRocm91Z2ggdGhlIGFycmF5LgoJICBQb2ludGVkIG91dCBieSBNYXJ0aW4gUG9rb3JueS4KCjIwMDktMDMtMjAgMDA6NDI6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGluZm8uYzoKCSAgZGVidWdnaW5nOiBtYWtlIEdTVF9QVFJfRk9STUFUIHdvcmsgZm9yIHF1ZXJpZXMgYXMgd2VsbAoKMjAwOS0wMy0yMCAwMDozOTo0MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0cXVlcnkuaDoKCSAgQVBJOiBhZGQgR1NUX1FVRVJZX0NBU1QKCSAgYmVjYXVzZSB3ZSBjYW4sIGFuZCBmb3IgY29uc2lzdGVuY3kuCgoyMDA5LTAzLTE5IDIxOjI3OjQ4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGdzdGNoZWNrOiBmaXggZm9yIGNoZWNrIHZlcnNpb25zID4gMC45LjYKCSAgQSBuZXcgYXJndW1lbnQgYWxsb3dlZF9leGl0X3ZhbHVlIHdhcyBhZGRlZCBpbiBTVk4gcmVjZW50bHkgKCM1NzQyMTMpLgoKMjAwOS0wMy0xOSAxNzoxOTo0OSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgZ3N0cGFkOiBmaXggZ3N0X3BhZF9jYW5fbGluawoJICBXZSB3ZXJlIGNvbnZlcnRpbmcgdGhlIEdzdFBhZExpbmtSZXR1cm4gdG8gYSBnYm9vbGVhbiwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudAoJICB0byBkby4KCjIwMDktMDMtMTkgMTA6NDQ6MTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJICBnc3QtdW5pbnN0YWxsZWQ6IGFkZCBnc3QtcnRzcC1zZXJ2ZXIgYml0cyBhbmQgYnJlYWsgdXAgb3Zlcmx5IGxvbmcgbGluZXMKCSAgQWRkIHNvbWUgb2YgdGhlIGJpdHMgbmVlZGVkIGZvciBhbiB1bmluc3RhbGxlZCBnc3QtcnRzcC1zZXJ2ZXIgKHNvIGdkYiB3b3JrcwoJICBvbiB0aGUgZXhhbXBsZXMgZXRjLikuIFB5dGhvbiBiaXRzIGFyZSBzdGlsbCBtaXNzaW5nLCBhbmQgd2UgbWlnaHQgbmVlZCBhbgoJICAtdW5pbnN0YWxsZWQucGMgZmlsZSBhcyB3ZWxsIGluIHRoZSBmdXR1cmUuIEJyZWFrIHVwIHZlcnkgbG9uZyBsaW5lcyB0byBtYWtlCgkgIHRoZW0gZWFzaWVyIHRvIHJlYWQgYW5kIG1haW50YWluLiBBbHNvIHJlbW92ZSBnc3QtcGx1Z2lucyBwYXRocyBmcm9tIHRoZQoJICBvbGQgZGF5cy4KCjIwMDktMDMtMTkgMTE6NDY6MTEgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL3JhbmRvbS93dGF5L3J3bG9ja3M6CgkgIGRvY3M6IGludGVyZXN0aW5nIGlkZWEgZm9yIGZhc3QgcncgbG9ja3MKCSAgLS0KCjIwMDktMDMtMTkgMTE6MTE6NDMgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgZGVmczogYWRkIG5ldyBzeW1ib2wgdG8gd2luZG93cyAuZGVmIGZpbGUKCSAgQWRkIHRoZSBuZXcgd2luZG93cyBjbWQuZXhlIGNvbG9yaW5nIG1ldGhvZCB0byB0aGUgLmRlZiBmaWxlLgoKMjAwOS0wMy0xOCAxNjozODo1MSArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgZG9jczogbW9yZSBpbmZvIGFib3V0IHdoZW4gc3RhdGUgY2hhbmdlcyBjYW4gYmUgYXN5bmMgYW5kIHdoZW4gbm90LgoKMjAwOS0wMy0xOCAxOTowNzowMCArMDEwMCAgRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1IGF0IGdtYWlsLmNvbT4KCgkqIGdzdC9nc3RpbmZvLmg6CgkgIGluZm86IG1vcmUgaW5kZW50YXRpb24gZml4ZXMKCSAgRml4ZXMgIzUxNzIzMS4KCjIwMDktMDMtMTggMTk6MDY6MjMgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0aW5mby5oOgoJICBpbmZvOiBpbmRlbnRhdGlvbiBmaXgKCjIwMDktMDMtMTggMTg6NTc6MTYgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0aW5mby5jOgoJICBpbmZvOiBzaW1wbHkgc29tZSBtb3JlCgoyMDA5LTAzLTE4IDE4OjQ1OjQxICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGluZm8uYzoKCSAgaW5mbzogcmVmYWN0b3IgZGVidWcgY29sb3JzIGZvciB3aW4zMiBhbmQgb3RoZXIKCSAgUmVmYWN0b3IgdGhlIGRlYnVnIGxpbmUgY29kZSB0byB1c2UgYXMgbXVjaCBjb2RlIGFzIHBvc3NpYmxlIGZvciB0aGUgd2luMzIgYW5kCgkgIG90aGVyIGNvbG9yIGNvZGluZ3MuCgkgIFVwZGF0ZSBkb2NzIHdpdGggbmV3IHN5bWJvbC4KCjIwMDktMDMtMTggMTc6MzA6MTIgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3RpbmZvLmM6CgkqIGdzdC9nc3RpbmZvLmg6CgkgIHdpbmRvd3M6IGluaXRpYWwgY29tbWl0IGZvciB0ZXJtaW5hbCBjb2xvcnMKCjIwMDktMDMtMTggMTc6MDE6MTYgKzAxMDAgIFplZXNoYW4gQWxpIChLaGF0dGFrKSA8emVlc2hhbmFrIGF0IGdub21lIGRvdCBvcmc+CgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwYWQuaDoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIGdzdC9nc3R1dGlscy5oOgoJICBnc3RwYWQ6IGZpeCBnc3RfcGFkX2Nhbl9saW5rKCkKCSAgTW92ZSB0aGUgZ3N0X3BhZF9jYW5fbGluaygpIGltcGxlbWVudGF0aW9uIGZyb20gZ3N0dXRpbHMgdG8gZ3N0cGFkIGFuZCB1c2UKCSAgZ3N0X3BhZF9saW5rX3ByZXBhcmUoKSB0byBtYWtlIGl0IHdvcmsgY29ycmVjdGx5IGFuZCBhbHNvIGNoZWNrIHRoZSBjYXBzLgoJICBNYWtlIHRoZSBicm9rZW4gaW1wbGVtZW50YXRpb24gaW4gZ3N0dXRpbHMgc3RhdGljLgoJICBTbWFsbCBjbGVhbnVwcyBpbiB0aGUgX2dldF9maXhlZF9jYXBzKCkgZnVuY3Rpb24uCgkgIEZpeGVzICM1NzU2ODIuCgoyMDA5LTAzLTE3IDIwOjQxOjQ0ICswMDAwICBEYXZpZCBBZGFtIDx6YW5jaGV5QHVjYy5ndS51d2EuZWR1LmF1PgoKCSogZ3N0L2dzdC5jOgoJICBjb25maWcuaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBmaXJzdCwgZWl0aGVyIGRpcmVjdGx5IG9yIHZpYSBnc3RfcHJpdmF0ZS5oCgkgIEZpeGVzIGJ1aWxkIHdpdGggLVdlcnJvciBjYXVzZWQgYnkgJ19GSUxFX09GRlNFVF9CSVRTIHJlZGVmaW5lZCcgd2FybmluZyBvbgoJICBPcGVuU29sYXJpcyB3aGVyZSBfRklMRV9PRkZTRVRfQklUUyBtYXkgYmUgZGVmaW5lZCBib3RoIGluIG91ciBjb25maWcuaAoJICBhbmQgdmlhIHN0ZGlvLmggKCM1NzU2OTUpLgoKMjAwOS0wMy0xNyAxOTowMjoyNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2ZhcS9kZXZlbG9waW5nLnhtbDoKCSAgZmFxOiByZW1vdmUgb3V0ZGF0ZWQgYml0cyBmcm9tIGluZGVudGluZyBzZWN0aW9uCgoyMDA5LTAzLTE3IDEyOjA1OjMzICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0YmluLmM6CgkgIGJpbjogZm9yd2FyZCBzZWdtZW50LXN0YXJ0IGxpa2Ugc2VnbWVudC1kb25lIGlmIHBhcmVudCBpcyBhbHNvIGEgYmluLCBmaXhlcyAjNTc1NTk4LgoJICBCaW4gY29sbGVjdHMgc2VnbWVudC1zdGFydCBtZXNzYWdlcyBhbmQgc2VnZW50LWRvbmUgbWVzc2FnZXMuIGl0IHBvc3RzIGEKCSAgc2VnbWVudC1kb25lIG1lc3NhZ2UgdG8gaXRzIHBhcmVudCwgb25jZSBpdCBoYXMgcmVjZWl2ZWQgYSBzZWdtZW50LWRvbmUgZm9yCgkgIGVhY2ggc2VnbWVudC1zdGFydC4gSW1obyBpdCBzaG91bGQgYWxzbyBzZW5kIGEgc2VnbWVudC1zdGFydCBpZiBpdCByZWNlaXZlcyB0aGUKCSAgZmlyc3Qgc2VnbWVudCBzdGFydCBhbmQgaWYgcGFyZW50IGlzICE9TlVMTC4gVGhpcyBpcyBuZWVkZWQgZm9yIGJpbnMgaW4gYmlucywKCSAgc28gdGhhdCBhbHNvIGhpZ2hlciBvcmRlciBiaW5zIGNhbiBncm91cCBzZWdtZW50LXN0YXJ0cyBhbmQgc2VnbWVudC1kb25lcy4KCSAgUmlnaHQgbm93IGhpZ2hlciBvcmRlciBiaW5zIHdpbGwgcG9zdCBhIHNlZ21lbnQtZG9uZSBmb3IgZWFjaCBzZWdtZW50LWRvbmUKCSAgcmVjZWl2ZWQuCgoyMDA5LTAzLTE2IDIwOjEyOjQ1ICswMTAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogZG9jcy9mYXEvZ2l0LnhtbDoKCSAgZmFxOiBmaXggdHlwbyBpbiBnaXQgY29tbWFuZAoKMjAwOS0wMy0xNSAyMzo0MDozNiArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIHN5c3RlbWNsb2NrOiB0aGVzZSB3YXJuaW5ncyBhcmUgc2VyaW91cywgZ2l2ZSBtb3JlIGRldGFpbCBpbiB0aGUgbWVzc2FnZQoKMjAwOS0wMy0xNSAyMzozNzoyOSArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJICBjb2xsZWN0cGFkczogYWRkIGRlYnVnIGxvZ2dpbmcgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdHJhY2UgaXQKCjIwMDktMDMtMTMgMTA6NTY6NTQgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSAgRml4IGluZGVudGF0aW9uIG9mIC5oIGZpbGVzCgkgIC0tCgoyMDA5LTAzLTEyIDEyOjIwOjI1ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICB0YWdsaXN0czogYXBwbHkgZml4IGZvciByZXBsYWNlIGFsbCBhbHNvIHRvIGdzdF90YWdfbGlzdF9hZGRfdmFsaXN0X3ZhbHVlcy4gRml4ZXMgIzU3NDI0MQoKMjAwOS0wMy0xMiAxMDo0ODoyMSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkqIGdzdC9nc3RtZXNzYWdlLmg6CgkqIGdzdC9nc3RwYWQuaDoKCSogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIGRvY3M6IEltcHJvdmUgc29tZSBkb2NzCgkgIFJlbmFtZSBzb21lIGZ1bmN0aW9uIHZhcmlhYmxlcyBhbmQgYWRkIHNvbWUgUmV0dXJuOiB0byBtYWtlIHRoZSBkb2NzIG1vcmUgaGFwcHkuCgoyMDA5LTAzLTEyIDAwOjQxOjI0ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0aXRlcmF0b3IuYzoKCSAgZG9jczogZml4IGxpbmtpbmcgdG8gY29uc3RhbnQgYW5kIGZ1bmN0aW9ucwoKMjAwOS0wMy0xMSAxNToyMDozNiArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgZHVtcDJkb3Q6IGVsbGlwc2l6ZSBjYXBzIGZpZWxkcywgYmV0dGVyIHBsYWNlbWVudCBvZiB1bm5lZ290aWF0ZWQgY2FwcwoJICBMb25nIGNhcHMgZmllbGRzIGxpa2UgZW51bXMgYXJlIGVsbGlwc2lzZWQuIElmIGNhcHMgYXJlIG5vdCBuZWdvdGlhdGVkLCB1c2UKCSAgaGVhZC0gYW5kIHRhaWxsYWJlbCB0byBwbGFjZSB0aGVtIGNsb3NlciB0byB0aGUgcGFkcy4gVXNlIHNtYXJ0ZXIgd2F5IHRvIGluZGVudC4KCjIwMDktMDMtMTEgMTA6Mjc6MTYgKzAyMDAgIExhc3psbyBQYW5keSA8bGFzemxvazJAZ21haWwuY29tPgoKCSogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgZHVtcDJkb3Q6IG1ha2UgY2FwcyBpbiBET1QgZGVidWcgZ3JhcGhzIG1vcmUgcmVhZGFibGUuIEZpeGVzIDU3NDQ4NAoJICBVc2UgYSBtb25vc3BhY2UgZm9udCBmb3IgZWRnZSBsYWJlbHMgYW5kIGluZGVudC4KCjIwMDktMDMtMTEgMTQ6MTE6MzAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6CgkgIHBhZHRlbXBsYXRlOiBBbGxvdyAldSBhcyBjb252ZXJzaW9uIG1vZGlmaWVyIGFkZGl0aW9uYWwgdG8gJWQgYW5kICVzCgoyMDA5LTAzLTExIDExOjIzOjA1ICswMTAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIGdzdGJhc2VzcmM6IHVuc2lnbmVkIGxvbmcgaXMgIiVsdSIsIG5vdCAiJXVsIi4gRml4ZXMgYnVpbGQgb24gbWFjb3N4CgoyMDA5LTAzLTEwIDIxOjA4OjM0ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICBsb2dnaW5nOiBzb21lIGFkZGl0aW9uYWwgbG9nZ2luZyBmb3IgdHJhY2luZyBjYXBzIG5lZ290aWF0aW9uLgoJICBEZW1vdGUgb25lIGxvZyB0aGF0IGNhbiBjb21lIHF1aXRlIG9mdGVuLiBSZW1vdmUgb25lIGZpeG1lIHRoYXQgaXMgZG9uZS4gQXBwbHkKCSAgZ3N0LWluZGVudCBjaGFuZ2VzLgoKMjAwOS0wMy0xMCAyMTowMzo0NCArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdG9iamVjdC5jOgoJICBjb21tZW50OiBhZGQgYSBmaXhtZS0wLjExCgoyMDA5LTAzLTEwIDIxOjAxOjIxICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDoKCSAgZm9ybWF0dGluZzogdGFicyB0byBzcGFjZXMKCjIwMDktMDMtMDkgMjM6MTE6MjQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gNzAzMjE2MyB0byBmOGIzZDkxCgoyMDA5LTAzLTA5IDIwOjA3OjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBnc3RyZWFtZXIuc3BlYzogZml4IHN0cmF5IEBHTElCMl9SRVFAIHRoYXQgZGlkbid0IGdldCBleHBhbmRlZCBwcm9wZXJseQoKMjAwOS0wMy0wOSAxNjowOTozOCArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvbWFudWFsL2Jhc2ljcy1idXMueG1sOgoJICBkb2NzOiByZXdvcmQgc3R1ZmYgYWJvdXQgY3VzdG9tIG1haW5sb29wcwoJICBGaXhlcyAjNTc0MjI5LgoKMjAwOS0wMy0wOSAxNjowMToyMCArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgZHVtcDJkb3Q6IGRvbid0IHVzZSBHU1RfVElNRV9GT1JNQVQgd2hlbiBidWlsZGluZyBmaWxlbmFtZXMuIGZpeGVzICM1NzQ2MjMKCjIwMDktMDMtMDkgMTE6Mzk6MzQgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwYWQuaDoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOgoJICBwYWQ6IGNhbGwgbmV3IGNhbGxiYWNrcyBzZXQgaW4gdGhlIGJsb2NrIGNhbGxiYWNrCgkgIEtlZXAgdHJhY2sgb2Ygd2hlbiBhIG5ldyBjYWxsYmFjayBpcyBpbnN0YWxsZWQgaW4gdGhlIGNhbGxiYWNrIGFuZCBjYWxsIHRoZSBuZXcKCSAgY2FsbGJhY2sgaW4gdGhhdCBjYXNlLgoJICBBZGQgdW5pdCB0ZXN0IGZvciBjaGVja2luZyBwYWQgYmxvY2tpbmcuCgkgIEZpeGVzICM1NzM4MjMuCgoyMDA5LTAzLTA4IDE3OjIyOjQzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOgoJKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmg6CgkqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIHdpbjMyOiB1cGRhdGUgZW51bXR5cGVzIGFuZCBjb25maWcuaAoKMjAwOS0wMy0wOCAxNzoxNTozMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICBkb2NzOiBpbXByb3ZlIGRvY3MgZm9yIGdzdF90YWdfbGlzdF9nZXRfZGF0ZSooKQoJICBNZW50aW9uIHRoYXQgdGhlIGRhdGUgdmFsdWUgbmVlZHMgdG8gYmUgZnJlZWQgYW5kIGhvdyB0byBmcmVlIGl0LgoKMjAwOS0wMy0wOCAxMjowMjoxNSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIGZmYTczOGQgdG8gNzAzMjE2MwoKMjAwOS0wMy0wOCAxMToxNzo1MCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIDNmMTNlNGUgdG8gZmZhNzM4ZAoKMjAwOS0wMy0wOCAwMDoyNzoyNiArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgZHVtcDJkb3Q6IGltcHJvdmUgY2FwcyBsb2dnaW5nCgkgIEZhY3RvciBvdXQgY29kZSB0byBkZXNjcmliZSBjYXBzLiBJbXByb3ZlIGZvcm1hdGluZyAobm8gXG4gaW4gY2FwcyBmaWVsZHMpLgoJICBDaGVjayBwZWVyIGNhcHMgdG9vIGFuZCBzaG93IGJvdGggaWYgdGhleSBkaWZmZXIuCgoyMDA5LTAzLTA3IDExOjQzOjMxICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gM2M3NDU2YiB0byAzZjEzZTRlCgoyMDA5LTAzLTA3IDEwOjQzOjMyICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gNTdjODNmMiB0byAzYzc0NTZiCgoyMDA5LTAzLTA2IDIyOjEwOjEwICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgIGNvbGxlY3RwYWRzOiByZXZlcnQgYWNjaWRlbnRpYWwgY29tbWl0IGZyb20gdGhlIHF1ZXVlIChtZSBzaG91bGQgc3RhcnQgdXNpbmcgYnJhbmNoZXMpCgoyMDA5LTAzLTA2IDIxOjU5OjIwICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIGFwaWRvY3M6IG1hcmt1cCBleGFtcGxlIGFzIGhpZ2hsaWdodGFibGUgZXhhbXBsZSBhbmQgY29weSBzYW1lIGZvciBzdHJ1Y3R1cmUKCSAgc3RydWN0dXJlcyBjYW4gYmUgcHJpbnRlZCBsaWtlIHdlIGNhbiBkbyBmb3IgY2Fwcy4gTWFyayB0aGUgZXhhbXBsZSBzbyB0aGF0CgkgIGd0ay1kb2MgY2FuIHByZXR0eSBwcmludCBhbmQgeHJlZiBpdC4KCjIwMDktMDMtMDQgMjE6MjE6NTYgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSAgY29sbGVjdHBhZHM6IHJlbGlhYmx5IGdvIHRvIGVvcy4gRml4ZXMgIzU3NDE2MAoJICBVcGRhdGUgY29sbGVjdHBhZHMgc3RhdHVzIHdoZW4gcmVtb3ZpbmcgcGFkcy4KCjIwMDktMDMtMDYgMTI6MDg6NDIgKzAxMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRlY2luYUBjb2xsYWJvcmEuY28udWs+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkgIGlkZW50aXR5OiBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgd2hlbiBzZW5kaW5nIG91dCB0aGUgbmV3c2VnbWVudCBldmVudCBpbiBzaW5nbGUtc2VnbWVudCBtb2RlLgoJICBUaGlzIG1ha2VzIGlkZW50aXR5IHNpbmdsZS1zZWdtZW50PXRydWUgISBvZ2dtdXggd29yayBhZ2FpbiBhZnRlciBhIGNoYW5nZSBpbgoJICBvZ2dtdXggKGNvbW1pdCBiMGUzZDQ0OSBpbiAtYmFzZSkuCgoyMDA5LTAzLTA1IDE3OjQyOjIyICswMTAwICBBbmR5IFdpbmdvIDx3aW5nb0BvYmxvbmcubmV0PgoKCSAgYmFzZXNpbms6IHByb3BhZ2F0ZSBVUFNUUkVBTSBldmVudHMgaW4gcHVsbCBtb2RlIHRvbwoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2Vfc2lua19zZW5kX2V2ZW50KTogUHJvcGFnYXRlCgkgIHVwc3RyZWFtIGV2ZW50cyBpbiBwdWxsIG1vZGUgdG9vLgoKMjAwOS0wMy0wNSAxMToyOTo0OCArMDEwMCAgQW50b2luZSBUcmVtYmxheSA8aGV4YTAwQGdtYWlsLmNvbT4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgR3N0UGFkOiByZWxheCBmYWlsdXJlIHRvIGRlYWN0aXZhdGUgdW5saW5rZWQgcGFkcwoJICBXaGVuIGRlL2FjdGl2YXRpbmcgYSBwYWQgaW4gcHVsbCBtb2RlIHRoZSBwYWQgbmVlZHMgdG8gZGUvYWN0aXZhdGUgdGhlCgkgIHBlZXIgcGFkIGl0IGlzIGNvbm5lY3RlZCB0bywgZmFpbHVyZSB0byBiZSBhYmxlIHRvIGRvIHRoaXMgaW4gYWN0aXZhdGlvbiBtb2RlCgkgIGlzIGFuIGVycm9yLgoJICBIb3dldmVyIGlmIHRoZXJlIGlzIG5vIHBlZXJwYWQsIHdlIGNhbiBzdGlsbCBkZWFjdGl2YXRlIHRoZSBwYWQgY29ycmVjdGx5IGFuZAoJICBhc3N1bWUgdGhlIGFwcGxpY2F0aW9uIHdpbGwgZGVhY3RpdmF0ZSB0aGUgdW5saW5rZWQgcGVlciBwYWQgZXZlbnR1YWxseS4KCSAgRml4ZXMgIzU3NDE2My4KCjIwMDktMDMtMDUgMTE6MDI6NTkgKzAxMDAgIExSTiA8bHJuMTk4NiBhdCBnbWFpbCBkb3QgY29tPgoKCSogZ3N0L2dzdHBvbGwuYzoKCSAgR3N0UG9sbDogc2V0IHRoZSByZXR1cm4gdmFsdWUgb24gd2luZG93cwoJICBNYWtlIHN1cmUgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbnMgX3JlYWQvX3dyaXRlX2NvbnRyb2woKQoJICByZXR1cm4gdGhlIGFjdHVhbCByZXN1bHQgaW5zdGVhZCBvZiBhbHdheXMgRkFMU0Ugb24gd2luZG93cy4KCSAgRml4ZXMgIzU3NDIxMS4KCjIwMDktMDMtMDQgMTA6NDY6MTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9wd2cvYWR2YW5jZWQtbmVnb3RpYXRpb24ueG1sOgoJKiBkb2NzL3B3Zy9idWlsZGluZy1ib2lsZXIueG1sOgoJICBwd2c6IHVwZGF0ZSBmb3IgQ1ZTLXRvLWdpdCBtaWdyYXRpb24KCSAgRml4ZXMgIzU3Mzk0Ni4KCjIwMDktMDMtMDQgMDk6MjA6NDMgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgR3N0QWRhcHRlcjogRGlzY2FyZCBlbXB0eSBidWZmZXJzIGluIF9wdXNoKCkuIEZpeGVzICM1NzQwMjQKCjIwMDktMDMtMDMgMjA6MDE6NDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogLmdpdGlnbm9yZToKCSAgVXBkYXRlIC5naXRpZ25vcmUKCjIwMDktMDMtMDMgMTk6NTg6NTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJICBnc3QtdW5pbnN0YWxsZWQ6IGFkZCBiaXRzIGZvciB1bmluc3RhbGxlZCBjaGVja291dHMgb2YgZ3N0LW9wZW5tYXggYW5kIHRvdGVtCgoyMDA5LTAzLTAyIDE2OjE3OjQ1ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIGdzdC9nc3R1dGlscy5oOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXRpbHMuYzoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFQSTogQWRkIGdzdF91dGlsX2FycmF5X2JpbmFyeV9zZWFyY2goKSBmb3IgYmluYXJ5IHNlYXJjaHMgb24gYSBzb3J0ZWQgYXJyYXkKCSAgVGhpcyB3aWxsIGJlIG1vc3RseSB1c2VmdWwgaW4gYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBzb21lIGtpbmQgb2YgaW50ZXJuYWwKCSAgc2Vlay9pbmRleCB0YWJsZS4gQ3VycmVudGx5IGFsbW9zdCBhbGwgb2YgdGhlbSAob3IgZXZlbiBhbGwgb2YgdGhlbSkKCSAgYXJlIHVzaW5nIGEgbGluZWFyIHNlYXJjaCBhbHRob3VnaCB0aGUgdXNlZCBhcnJheSBpcyBhbHJlYWR5IHNvcnRlZCwKCSAgd2FzdGluZyBzb21lIENQVSB0aW1lIHdpdGhvdXQgZ29vZCByZWFzb24uCgkgIEZpeGVzIGJ1ZyAjNTczNjIzLgoKMjAwOS0wMi0yOCAxMToxNToyOSAtMDgwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkqIGdzdC9nc3R1dGlscy5oOgoJICBCdW1wIGdsaWIgcmVxdWlyZW1lbnQgdG8gMi4xNAoJICBBbHNvIHJlbW92ZSBjb2RlIGNvbmRpdGlvbmFsIG9uIDwgMi4xNC4KCjIwMDktMDItMjggMTM6MzQ6MDggLTA1MDAgIE9saXZpZXIgQ3LDqnRlIDxvbGl2aWVyLmNyZXRlQGNvbGxhYm9yYS5jby51az4KCgkqIHdpbjMyL01BTklGRVNUOgoJICBSZW1vdmUgd2luMzIvY29tbW9uL2NvbmZpZy5oLmluIGZyb20gTUFOSUZFU1QsIGl0IG5vIGxvbmdlciBleGlzdHMKCjIwMDktMDItMjcgMTM6MzU6MzUgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgY2Fwc2ZpbHRlcjogUHJvcGVybHkgcmVzZXQgdGhlIGNhcHNmaWx0ZXIgd2hlbiBzZXR0aW5nIGNhcHMgQU5ZLgoKMjAwOS0wMi0yNyAxMjozNDoyOSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGRvY3MvZGVzaWduL2RyYWZ0LWZyYW1lc3RlcC50eHQ6CgkgIGRlc2lnbjogdXBkYXRlIHRoZSBmcmFtZXN0ZXAgZHJhZnQKCSAgVXBkYXRlIHRoZSBkb2NzIGEgbGl0dGxlLgoJICBBZGQgcHJvcGVydHkgdG8gYWxsb3cgaW5jcmVtZW50YWwgc3RlcHBpbmcgc28gdGhhdCB3ZSBjYW4gcmVkdWNlIGV4Y2Vzc2l2ZQoJICBxdWV1ZWluZy4KCjIwMDktMDItMjYgMTU6NDA6MjYgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgYmFzZXNpbms6IG1vdmUgbGVmdCBvdmVyIGhhbmRsaW5nIG9mIHRoZSBlcnJvciBjYXNlIHRvIHRoZSBhY3RpdmF0ZV9mYWlsZWQgbGFiZWwuCgkgIElmIHdhcyBsZWZ0IGFzIGRlYWQgY29kZS4KCjIwMDktMDItMjUgMTk6NTk6NTcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbW1vbjoKCSogY29uZmlndXJlLmFjOgoJICBidWlsZDogVXBkYXRlIHNoYXZlIGluaXQgc3RhdGVtZW50IGZvciBjaGFuZ2VzIGluIGNvbW1vbi4gQnVtcCBjb21tb24uCgoyMDA5LTAyLTI1IDEwOjUxOjU3ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgYmluYXJ5IHJlZ2lzdHJ5OiBEb24ndCBhdHRlbXB0IHRvIHBhcnNlIGVtcHR5IGNhcHMKCjIwMDktMDItMjUgMTQ6MTk6MDggKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIHJlZ2lzdHJ5OiBTZXQgdHlwZWZpbmQgZmFjdG9yeSBjYXBzIHRvIE5VTEwgaW5zdGVhZCBvZiBlbXB0eSBjYXBzIGlmIHRoZXkgb3JpZ2luYWxseSB3ZXJlIE5VTEwKCjIwMDktMDItMjUgMTE6MzE6MzggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbW1vbjoKCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCgkgIEZyb20gOWNmOGM5YiB0byBhNmNlNWM2CgoyMDA5LTAyLTI0IDE1OjEwOjE1ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICByZWdpc3RyeWJpbmFyeTogQ2hlY2sgaWYgdHlwZWZpbmQgZmFjdG9yeSBjYXBzIGFyZSBOVUxMIGJlZm9yZSBjb3B5aW5nIHRoZW0KCjIwMDktMDItMjQgMTE6NDA6MTQgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBSZW1vdmUgdW5kZWNsYXJlZCBzeW1ib2xzIGZyb20gZG9jcwoJICBSZW1vdmUgc29tZSB1bmRlY2xhcmVkIHN5bWJvbHMgZnJvbSB0aGUgZG9jcy4KCjIwMDktMDItMjMgMTM6MDE6MTEgLTA4MDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSogTWFrZWZpbGUuYW06CgkqIGNvbmZpZ3VyZS5hYzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBDaGFuZ2UgaG93IHdpbjMyL2NvbW1vbi9jb25maWcuaCBpcyB1cGRhdGVkCgkgIEdlbmVyYXRlIHdpbjMyL2NvbW1vbi9jb25maWcuaC1uZXcgZGlyZWN0bHkgZnJvbSBjb25maWcuaC5pbiwKCSAgdXNpbmcgc2hlbGwgdmFyaWFibGVzIGluIGNvbmZpZ3VyZSBhbmQgc29tZSBoYXJkLWNvZGVkIGluZm9ybWF0aW9uLgoJICBDaGFuZ2UgdG9wLWxldmVsIG1ha2VmaWxlIHNvIHRoYXQgJ21ha2Ugd2luMzItdXBkYXRlJyBjb3BpZXMgdGhlCgkgIGdlbmVyYXRlZCBmaWxlIHRvIHdpbjMyL2NvbW1vbi9jb25maWcuaCwgd2hpY2ggd2Uga2VlcCBpbiBzb3VyY2UKCSAgY29udHJvbC4gIEl0J3Mga2VwdCBpbiBzb3VyY2UgY29udHJvbCBzbyB0aGF0IHRoZSBnaXQgdHJlZSBpcwoJICBidWlsZGFibGUgZnJvbSBWUy4KCjIwMDktMDItMjMgMTA6NTI6MTQgLTA4MDAgIERhdmlkIEZseW5uIDxkYXZpZGZAcmQuYmJjLmNvLnVrPgoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYXNlLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNvbnRyb2xsZXItdW5pbnN0YWxsZWQucGMuaW46CgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLW5ldC11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci11bmluc3RhbGxlZC5wYy5pbjoKCSAgQWRkIHNyY2RpciB0byBpbmNsdWRlcyBmb3Igb3V0LW9mLXNvdXJjZSBidWlsZHMKCSAgV2hlbiB5b3UgdXNlIGdzdHJlYW1lciB1bmluc3RhbGxlZCBhbmQgYnVpbGQgb3V0c2lkZQoJICB0aGUgc291cmNlIHRyZWUsIHRoZSBpbmNsdWRlcyBuZWVkIHRvIGJlIHNwZWNpZmllZCBmb3IKCSAgYm90aCB0aGUgc291cmNlIHRyZWUgYW5kIHRoZSBidWlsZCB0cmVlLgoJICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCjIwMDktMDItMjMgMTc6MzY6MjMgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgRXJyb3Igb3V0IG1vcmUgc3BlY2lmaWNhbGx5IG9uIGVtcHR5IGNhcHMKCSAgV2hlbiB3ZSBnZXQgZW1wdHkgY2FwcyBmcm9tIHRoZSBnZXRjYXBzIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IG5lZ290aWF0ZQoJICBmdW5jdGlvbiwgcG9zdCBhIG1vcmUgZGVzY3JpcHRpdmUgZXJyb3IuCgoyMDA5LTAyLTIzIDE1OjI0OjAwICswMTAwICBBbmR5IFdpbmdvIDx3aW5nb0BvYmxvbmcubmV0PgoKCSAgZml4IHVyaSBoYW5kbGVyIGl0ZXJhdGlvbiBpbiBnc3QtaW5zcGVjdAoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmMgKHByaW50X2FsbF91cmlfaGFuZGxlcnMpOiBXaG9vcHMsIGZpeCBpdGVyYXRpb24uCgkgIEknbSBzdHVwaWQuCgoyMDA5LTAyLTIzIDEyOjMzOjEzICswMTAwICBMUk4gPGxybjE5ODYgYXQgZ21haWwgZG90IGNvbT4KCgkqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0LmM6CgkqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzoKCSAgRml4IHNpZ25lZCB3aGVuIGNvbXBpbGluZyB3aXRoIE1TeXMvTWluR1cKCSAgZml4IHNpZ25lZCBpc3N1ZXMgd2hlbiBjb21waWxpbmcgd2l0aCBNU3lzL01pbkdXLgoJICBGaXhlcyAjNTcyNTkxLgoKMjAwOS0wMi0yMyAxMDo1MzoxNyArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgRG9uJ3QgZm9yd2FyZCBMQVRFTkNZIGV2ZW50IHdoZW4gbm90IHJlYWR5CgkgIFdoZW4gd2UgYXJlIG5vdCByZWFkeSB0byBoYW5kbGUgYSBsYXRlbmN5IHF1ZXJ5ICh3ZSBhcmUgbm90IHlldCBwcmVyb2xsZWQpIHdlCgkgIGFsc28gZG9uJ3QgdHJ5IHRvIGZvcndhcmQgdGhlIGxhdGVuY3kgZXZlbnQgYmVjYXVzZSB0aGF0IG1pZ2h0IGNhdXNlIHVuZXhwZWN0ZWQKCSAgZXJyb3JzIHdoZW4gdXBzdHJlYW0gaXMgbm90IHlldCBsaW5rZWQuCgoyMDA5LTAyLTIyIDIyOjA5OjM5ICswMTAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogdGVzdHMvY2hlY2svY29yZToKCSAgUmVtb3ZlIGNvcmUgZmlsZSBmcm9tIHByZXZpb3VzIGNvbW1pdAoKMjAwOS0wMi0yMiAyMDowMTowNSArMDEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwYWQuaDoKCSogdGVzdHMvY2hlY2svY29yZToKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgR3N0UGFkOiBBZGQgZ3N0X3BhZF9zZXRfYmxvY2tlZF9hc3luY19mdWxsCgkgIFRoaXMgYWxsb3dzIGNvbm5lY3RpbmcgYSBHRGVzdHJveU5vdGlmeSBmb3Igd2hlbiB0aGUgY2FsbGJhY2sgaXMgcmVtb3ZlZC9yZXBsYWNlZC4KCSAgUGFydGlhbGx5IGZpeGVzICM1MTQ3MTcKCjIwMDktMDItMjIgMTk6MDU6MjAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHV0aWxzLmg6CgkgIEluY2x1ZGUgZmxvYXRpbmcgcG9pbnQgd3JpdGUvcmVhZCBmdW5jdGlvbnMgaW4gdGhlIGRvY3MgYnkgd29ya2luZyBhcm91bmQgYSBndGstZG9jIGJ1ZwoKMjAwOS0wMi0yMiAxODo1MzoxMCArMDEwMCAgQWxpIFNhYmlsIDxhbGkuc2FiaWxAZ21haWwuY29tPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBVc2UgdGhlIGNvcnJlY3QgdW5yZWYgZnVuY3Rpb24KCjIwMDktMDItMjIgMTg6NTE6MDggKzAxMDAgIEFsaSBTYWJpbCA8YWxpLnNhYmlsQGdtYWlsLmNvbT4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkqIGdzdC9nc3RtZXNzYWdlLmg6CgkqIGdzdC9nc3RxdWVyeS5oOgoJICBDb252ZXJ0IHVucmVmL2NvcHkgZnVuY3Rpb25zIG9mIEdzdE1pbmlPYmplY3Qgc3ViY2xhc3NlcyB0byBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucwoJICB1bnJlZiBhbmQgY29weSBmdW5jdGlvbnMgYXJlIHNvbWV0aW1lcyB1c2VkIGFzIGZ1bmN0aW9uCgkgIHBvaW50ZXJzIGZvciBleGFtcGxlIGluIHRoZSBjYXNlIG9mIGdfaGFzaF90YWJsZV9uZXdfZnVsbAoJICBhcyBhIEdEZXN0cm95Tm90aWZ5IGZ1bmN0aW9uLgoJICBDdXJyZW50bHkgR3N0QnVmZmVyLCBHc3RFdmVudCwgR3N0TWVzc2FnZSBhbmQgR3N0UXVlcnkKCSAgZGVmaW5lIHRoZWlyIHJlc3BlY3RpdmUgdW5yZWYgYW5kIGNvcHkgZnVuY3Rpb25zIGFzCgkgIG1hY3JvcywgbWFraW5nIHVzZSBvZiBnc3RfbWluaV9vYmplY3RfdW5yZWYvY29weS4KCSAgVGhpcyBhcHByb2FjaCB3b3JrcyB2ZXJ5IHdlbGwgZm9yIG1vc3QgY2FzZXMsIGV4Y2VwdAoJICBmb3Igc29tZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBiaW5kaW5ncyAoY3VycmVudGx5IFZhbGEpLAoJICB3aGVyZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc2VtYW50aWNzIGFyZSBkZWZpbmVkCgkgIGRlY2xhcmF0aXZlbHkuCgkgIFRoZSBwb3NzaWJsZSBzb2x1dGlvbnMgd291bGQgYmUgdG8gZWl0aGVyIGNvbnZlcnQgYWxsCgkgIHRoZSBtYWNyb3MgaW50byBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uLCBvciBjaGFuZ2UgdGhlCgkgIHNpZ25hdHVyZSBvZiBnc3RfbWluaV9vYmplY3RfdW5yZWYgdG8gdGFrZSBhIHZvaWQqCgkgIGluc3RlYWQgb2YgYSBHc3RNaW5pT2JqZWN0Ki4KCSAgRml4ZXMgYnVnICM1NzI0ODAuCgoyMDA5LTAyLTIyIDE1OjIyOjE2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKCSAgVXNlIHNoYXZlIChodHRwOi8vZ2l0Lmxlc3BpYXUubmFtZS9jZ2l0L3NoYXZlLykgdG8gc2ltcGxpZnkgYnVpbGQgb3V0cHV0CgoyMDA5LTAyLTIyIDE1OjQ0OjM1ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIDVkN2M5Y2MgdG8gOWNmOGM5YgoKMjAwOS0wMi0yMSAxMToxMzozMCAtMDgwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJKiBjb21tb246CgkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQoJICBGcm9tIDgwYzYyN2QgdG8gNWQ3YzljYwoKMjAwOS0wMi0xOSAxODowNTowNyArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSAgR3N0QnVmZmVyRmxhZ3M6IEFkZCAiU2luY2U6IDAuMTAuMjMiIGZvciB0aGUgbmV3bHkgYWRkZWQgZmxhZ3MKCjIwMDktMDItMTkgMTY6MDQ6NDMgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIEdzdEJ1ZmZlckZsYWdzOiBBZGQgMyBuZXcgbWVkaWEtc3BlY2lmaWMgYnVmZmVyIGZsYWdzLgoJICBQYXJ0aWFsbHkgZml4ZXMgIzE2MzU3NwoKMjAwOS0wMi0xOSAxMjo1NzoxNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIHRvb2xzOiBwcmludCBub3JtYWwgb3V0cHV0IHRvIHN0ZG91dCwgYW5kIG9ubHkgZXJyb3JzIGFuZCB3YXJuaW5ncyB0byBzdGRlcnIgaW4gZ3N0LWxhdW5jaAoJICBMZXQncyBub3QgcHJpbnQgZXZlcnl0aGluZyB0byBzdGRlcnIuIFN1cHByZXNzIHNvbWUgbW9yZSAnbm9ybWFsJyBtZXNzYWdlcyB3aGVuIC0tcXVpZXQgd2FzIHBhc3NlZC4KCjIwMDktMDItMTkgMTI6NDU6NTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICB0b29sczogdXNlIGdfcHJpbnQqKCkgaW5zdGVhZCBvZiAqcHJpbnRmKCkgaW4gZ3N0LWxhdW5jaAoJICBXZSBzaG91bGQgdXNlIEdMaWIncyBnX3ByaW50KigpIGZ1bmN0aW9ucyBmb3IgcHJpbnRpbmcgc3R1ZmYgaW4gZ3N0LWxhdW5jaCwgbm90IHByaW50ZiBhbmQgZnJpZW5kcywgc2luY2Ugd2UncmUgcHJpbnRpbmcKCSAgdHJhbnNsYXRlZCBzdHJpbmdzLCB3aGljaCB3ZSBnZXQgaW4gVVRGLTggZW5jb2RpbmcsIGFuZCBHTGliJ3MgcHJpbnQgZnVuY3Rpb25zIGV4cGVjdCBVVEYtOCBlbmNvZGVkIHN0cmluZ3Mgd2hlcmVhcyBwcmludGYKCSAgZXQgYWwuIGV4cGVjdCBzdHJpbmdzIGluIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIFVURi04LgoJICBBbHNvIGFkZCBhIFBSSU5UIGNvbnZlbmllbmNlIG1hY3JvIHNvIHdlIGRvbid0IGhhdmUgdG8gbGl0dGVyIHRoZSBjb2RlIHdpdGggaWYgKCFxdWlldCkgc3RhdGVtZW50cy4KCjIwMDktMDItMTkgMTE6MTg6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOgoJKiBkb2NzL3B3Zy9pbnRyby1iYXNpY3MueG1sOgoJKiBkb2NzL3JhbmRvbS9taW1ldHlwZXM6CgkgIGRvY3M6IGZpeCBjb25zdGFudHMgZm9yIEdfTElUVExFX0VORElBTiBhbmQgR19CSUdfRU5ESUFOCgkgIFdlIGdvdCB0aGUgY29uc3RhbnRzIGZvciBHX0xJVFRMRV9FTkRJQU4gYW5kIEdfQklHX0VORElBTiB0aGUgd3Jvbmcgd2F5IGFyb3VuZCBpbiBzb21lIGRvY3MgKGZpeGVzOiAjNTcyMzkyKS4gQWxzbyBtZW50aW9uCgkgIEdfQllURV9PUkRFUiBpbiB0aGUgYXVkaW8gdHlwZXMgc2VjdGlvbi4KCjIwMDktMDItMTkgMTA6MjU6MzQgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBzeW1ib2xzIHRvIGRlZiBmaWxlcwoJICBBZGQgdGhlIG5ldyByZXF1ZXN0X21lc3NhZ2Ugc3ltYm9scyB0byB0aGUgd2luZG93cyBkZWYgZmlsZS4KCjIwMDktMDItMTggMTU6MzE6NTUgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LW1lc3NhZ2VzLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG1lc3NhZ2UuYzoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBBZGQgbWVzc2FnZSB0byByZXF1ZXN0IGEgc3RhdGUgY2hhbmdlCgkgIEFkZCBhIEdTVF9NRVNTQUdFX1JFUVVFU1RfU1RBVEUgdGhhdCBjYW4gYmUgcG9zdGVkIGJ5IGVsZW1lbnQgd2hlbiB0aGV5IHdvdWxkCgkgIGxpa2UgdG8gaGF2ZSB0aGUgYXBwbGljYXRpb24gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGUgcGlwZWxpbmUuIHRoZSBwcmltYXJ5IHVzZQoJICBjYXNlIGlzIHRvIHBhdXNlIHRoZSBwaXBlbGluZSB3aGVuIGFuIGF1ZGlvIG1peGVyIGlzIG1peGluZyBhIGhpZ2hlciBwcmlvcml0eQoJICBzdHJlYW0gYnV0IGl0IGNhbiBhbHNvIGJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgoJICBBZGQgc29tZSBkb2NzIGFuZCBhIHVuaXQgdGVzdC4KCSAgSW1wbGVtZW50IHRoZSBSRVFVRVNUX1NUQVRFIG1lc3NhZ2UgaW4gZ3N0LWxhdW5jaC4KCSAgQVBJOiBnc3RfbWVzc2FnZV9uZXdfcmVxdWVzdF9zdGF0ZSgpCgkgIEFQSTogZ3N0X21lc3NhZ2VfcGFyc2VfcmVxdWVzdF9zdGF0ZSgpCgkgIEFQSTogR1NUX01FU1NBR0VfUkVRVUVTVF9TVEFURQoKMjAwOS0wMi0xNiAxMjo1ODozNCArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgQ2xlYXIgdGFyZ2V0IHdoZW4gdGhlIHRhcmdldCBwYWQgZGlzYXBwZWFycwoJICBXaGVuIHRoZSB0YXJnZXQgcGFkIGRpc2FwcGVhcnMgKGJlY2F1c2UgaXQgd2FzIGV4cGxpY2l0bHkgdW5saW5rZWQgb3IgdGhlCgkgIGVsZW1lbnQgd2FzIHJlbW92ZWQvdW5yZWZmZWQpIG1ha2Ugc3VyZSB3ZSByZWNlaXZlIGEgbm90aWZ5IHdpdGggdGhlIHVubGluawoJICBmdW5jdGlvbiBvbiB0aGUgcHJveHkgcGFkIGFuZCBjbGVhciB0aGUgdGFyZ2V0LiBXZSB1c2UgYSBzaW1wbGUgZmxhZyB0byBub3QgZG8KCSAgdGhpcyBhbmQgY2F1c2UgZGVhZGxvY2tzIHdoZW4gdGhlIHRhcmdldCB3YXMgY2hhbmdlZCBleHBsaWNpdGx5IHVzaW5nIHRoZQoJICBnaG9zdHBhZCBmdW5jdGlvbnMuCgkgIFVwZGF0ZSB0aGUgdW5pdCB0ZXN0IGJlY2F1c2Ugd2Ugbm93IHVucmVmIHRoZSB0YXJnZXQgc29vbmVyIChhbmQgY29ycmVjdGx5KS4KCjIwMDktMDItMTUgMTY6Mzc6MTcgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICBkb2NzOiBmb3JtYXQgYW5kIGluZGVudCBleGFtcGxlcy4KCjIwMDktMDItMDkgMjI6NDk6MDUgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHRvb2xzL2dzdC1sYXVuY2guMS5pbjoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBnc3QtbGF1bmNoOiBhZGQgLXEvLS1xdWlldCBvcHRpb24gdG8gc3VwcmVzcyBhbnkgbm9uIGVycm9yIG91dHB1dC4KCSAgSGF2aW5nIG5vIG91dHB1dCBpcyBuaWNlIGZvciBzY3JpcHRpbmcuIEFsc28gdXBkYXRlIHRoZSBtYW5wYWdlLgoKMjAwOS0wMi0xNCAxMzozNTo0OCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2ZhcS9jdnMueG1sOgoJKiBkb2NzL2ZhcS9kZXZlbG9waW5nLnhtbDoKCSogZG9jcy9mYXEvZmFxLnhtbDoKCSogZG9jcy9mYXEvZ2V0dGluZy54bWw6CgkqIGRvY3MvZmFxL2dpdC54bWw6CgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSogZG9jcy9mYXEvc3RhcnQueG1sOgoJKiBkb2NzL2ZhcS90cm91Ymxlc2hvb3RpbmcueG1sOgoJKiBkb2NzL2ZhcS91c2luZy54bWw6CgkgIEZBUTogdXBkYXRlIGZvciBnaXQgYW5kIG1pc2NlbGxhbmVvdXMgc21hbGwgZml4ZXMgYW5kIGFkZGl0aW9ucwoJICBSZXBsYWNlIGFsbCBtZW50aW9ucyBvZiBDVlMgd2l0aCBnaXQuIEFkZCBsaW5rIHRvIGdzdC11bmluc3RhbGxlZCBzY3JpcHQgaW4gY2dpdCBhbmQgdG8gU3VibWl0dGluZ1BhdGNoZXMgcGFnZSBpbiB3aWtpLiBGaXggc29tZSB0eXBvcy4gVXBkYXRlIGluZGVudGluZyBydWxlcyB0byB3aGF0IHdlIGFjdHVhbGx5IHVzZSAoIzU3MTY0NikuCgoyMDA5LTAyLTEzIDE2OjE3OjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmUucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RhLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2VzLnBvOgoJKiBwby9maS5wbzoKCSogcG8vZnIucG86CgkqIHBvL2h1LnBvOgoJKiBwby9pZC5wbzoKCSogcG8vaXQucG86CgkqIHBvL2phLnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9wdF9CUi5wbzoKCSogcG8vcnUucG86CgkqIHBvL3J3LnBvOgoJKiBwby9zay5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICBwbzogdXBkYXRlICoucG8gZmlsZXMgZm9yIG5ld2x5LWFkZGVkIHRyYW5zbGF0YWJsZSBzdHJpbmdzCgkgIFRoZSBvbmx5IHBlb3BsZSB3aG8gc2hvdWxkIGdldCBjb25mbGljdHMgbm93IGFyZSBwZW9wbGUgd2hvIGhhdmUgY2xvbmVkIGFuZCBidWlsdCBnc3RyZWFtZXIgYmV0d2VlbiB0aGUgdGltZSB0aG9zZSBzdHJpbmdzCgkgIHdlcmUgYWRkZWQgYW5kIHRoaXMgY29tbWl0LgoKMjAwOS0wMi0xMiAxMDozODowNSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICB0YWdsaXN0OiBBUEk6IEFkZCBIT01FUEFHRSB0YWcKCSAgVGhpcyB0YWcgd2lsbCBsaXN0IGEgaG9tZXBhZ2UgZm9yIHRoZSBtZWRpYSwKCSAgaS5lLiB0aGUgYXJ0aXN0J3Mgb3IgbW92aWUncyBob21lcGFnZS4KCSAgVGhpcyBpcyBkaWZmZXJlbnQgdG8gR1NUX1RBR19MT0NBVElPTiBhcyB0aGUgbGF0dGVyCgkgIGxpc3RzIHRoZSBvcmlnaW5hbCBsb2NhdGlvbiBvZiB0aGUgbWVkaWEuCgkgIEZpeGVzIGJ1ZyAjNTcxMjI3LgoKMjAwOS0wMi0wOSAxMjowMDo0MyArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGNvbW1vbjoKCSAgQnVtcCByZXZpc2lvbiB0byB1c2UgZm9yIGNvbW1vbiBzdWJtb2R1bGUuCgoyMDA5LTAyLTA4IDEwOjI4OjE2ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdHZlcnNpb24uaC5pbjoKCSAgUmVwbGFjZSBzb21lIG1lbnRpb25zIG9mIENWUyBieSBHSVQKCjIwMDktMDItMDYgMTA6NTE6MjggKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBiaW5hcnkgcmVnaXN0cnk6IFJld3JpdGUgc2FuaXR5IGNoZWNrIHRvIGFjdHVhbHkgY2F0Y2ggc29tZXRoaW5nLgoJICBUaGUgcHJldmlvdXMgY29tbWl0IHdhcyBib2d1cywgYXMgd2FzIHRoZSBjaGVjayBiZWZvcmUuIFdlIGp1c3QgcG9pbnQgbSB0byB0aGUgZmlsZSBkYXRhLAoJICBzbyBuZWl0aGVyIGl0IG5vciBpdHMgbWVtYmVycyB3aWxsIGJlIE5VTEwuIEJldHRlciBjaGVjayBpZiB3ZSBoYXZlIGVub3VnaCBkYXRhLgoKMjAwOS0wMi0wNSAyMzoxMTowNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBwby9NYWtldmFyczoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2lkLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vamEucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcGwucG86CgkqIHBvL3B0X0JSLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIHBvOiBhdm9pZCBjb25mbGljdHMgb2YgbG9jYWwgKi5wbyBmaWxlcyB3aXRoIGZpbGVzIGluIGdpdAoJICBNYWtlIGl0IHNvIHRoYXQgZmlsZW5hbWVzIGFuZCBsaW5lIG51bWJlcnMgYXJlIG9ubHkgc3RvcmVkIGluIHRoZSAqLnBvdCBmaWxlICh3aGljaCBpcyBub3QgaW4gZ2l0KSwgYnV0IG5vdCBpbiB0aGUKCSAgaW5kaXZpZHVhbCAqLnBvIGZpbGVzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGhhcmRseSB1c2VmdWwgZm9yIHRyYW5zbGF0b3JzIGluIG91ciBjYXNlLCBhbmQgaXQgc2hvdWxkIGF2b2lkIHRoZSBjb25zdGFudAoJICBjb25mbGljdHMgb2YgbG9jYWwgKi5wbyBmaWxlcyB3aXRoIHRoZSBvbmVzIGluIGdpdCB3aGljaCBhcmUgY2F1c2VkIGJ5IHRoZSBzb3VyY2UgZmlsZXMgY2hhbmdpbmcgYW5kIHRoZSBsaW5lIG51bWJlcnMKCSAgYmVpbmcgdXBkYXRlZC4KCSAgVGhpcyBjb21taXQgaXMgbGlrZWx5IHRvIGNhdXNlIG9uZSBsYXN0IG1lcmdlIGNvbmZsaWN0IGZvciB5b3UsIHdoaWNoIHlvdSBjYW4gd29yayBhcm91bmQgd2l0aCAiZ2l0IGNoZWNrb3V0IHBvLyoucG8iCgkgIGJlZm9yZSBtZXJnaW5nIG9yIHB1bGxpbmcuIEFmdGVyIHRoYXQgdGhlcmUgc2hvdWxkIChob3BlZnVsbHkpIG5vdCBiZSBhbnkgbW9yZSBsb2NhbCBtb2RpZmljYXRpb25zIG9mIHRoZXNlIGZpbGVzLgoKMjAwOS0wMi0wNSAxNToyMjo0NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgd2luMzI6IGFkZCBuZXcgR3N0UG9sbCBBUEkgdG8gbGliZ3N0cmVhbWVyLmRlZgoKMjAwOS0wMi0wNSAxNzoyMzo0NCArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGNsb2NrLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkgIGNsZWFudXA6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGluIF9jbGFzc19pbml0KCkgYW5kIHJlaW5kZW50LgoKMjAwOS0wMi0wNSAxNzowNTo1NiArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdGJ1cy5jOgoJICBidXM6IHJlbW92ZSB1bnVzZWQgc2V0L2dldCBwcm9wZXJ0eSBmdW5jdGlvbnMKCjIwMDktMDItMDUgMTU6NTY6MTkgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBiaW5hcnkgcmVnaXN0cnk6IGNvbXBhcmluZyBhcnJheXMgYWdhaW5zdCBOVUxMIGlzIHVzZWxlc3MKCjIwMDktMDItMDUgMTM6NTk6NDggKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgcXVldWU6IHJlbW92ZSB1bnVzZWQgY29kZQoJICBTa2lwIGxvb3BpbmcgdGhydSBhIGR1bW15IGltcGxlbWVudGF0aW9uLgoKMjAwOS0wMi0wNSAxMzo1NzowNSArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIHRlc3RzOiBHc3RDbG9ja1RpbWUgaXMgYWx3YXlzID49IDAKCjIwMDktMDItMDUgMTM6NDI6MzAgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkgIGNvbnRyb2xsZXI6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCjIwMDktMDItMDQgMTc6MjA6MjEgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICBjbGVhbnVwOiBFaXRoZXIgY2hlY2sgYWx3YXlzIGZvciBpbnRlcm5hbCBiZWluZyBOVUxMIG9yIGRvbid0LgoJICBJTUhPIHRoZSBnaG9zdHBhZCBpcyBib3JrZWQgaWYgaW50ZXJuYWwgaXMgTlVMTC4gU28gdGhlIGNoZWNrIGNhbiBnbyBhbmQgaXQgaXMKCSAgdXNlZCBsYXRlciB1bmNoZWNrZWQgYW55d2F5LgoKMjAwOS0wMi0wNCAxNjoyNjoyMyArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgY3Jhc2g6IERvbid0IGNyYXNoIG9uIG5vbiBleGlzdGVudCB0YWdzLgoKMjAwOS0wMi0wNCAxNjoxNzozNCArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIGxlYWs6IERvbid0IGxlYWsgdHlwZSBuYW1lIGluIGZhaWx1cmUgY2FzZXMuCgoyMDA5LTAyLTA0IDE2OjA3OjMwICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOgoJICBjaGVjazogRG9uJ3QgYXNzdW1lIGdzdF9wYWRfZ2V0X3BlZXIgcmV0dXJucyBub24gTlVMTCB2YWx1ZS4KCjIwMDktMDItMDQgMTU6NDE6MjQgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3R1dGlscy5jOgoJICBsZWFrOiBkb24ndCByZXR1cm4gd2l0aG91dCBjYWxsaW5nIHZhX2VuZAoKMjAwOS0wMi0wMyAxODowNDo0NiArMDEwMCAgSm9uYXMgSG9sbWJlcmcgPGpvbmFzLmhvbG1iZXJnQGF4aXMuY29tPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGNsb2NrLmM6CgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suaDoKCSAgSW1wbGVtZW50IHRoZSBzeXN0ZW1jbG9jayB3aXRoIGdzdHBvbGwKCSAgQWRkIGEgcHJvcGVydHkgdG8gc2VsZWN0IHRoZSBjbG9jayB0eXBlLCBjdXJyZW50bHkgUkVBTFRJTUUgYW5kIE1PTk9UT05JQyB3aGVuCgkgIHBvc2l4IHRpbWVycyBhcmUgYXZhaWxhYmxlLgoJICBJbXBsZW1lbnQgdGhlIHN5c3RlbWNsb2NrIHdpdGggR3N0UG9sbCBpbnN0ZWFkIG9mIEdDb25kLiBUaGlzIGFsbG93cyB1cyB0bwoJICBzY2hlZHVsZSB0aW1lb3V0cyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzc2lvbiBvbiBuZXdlciBrZXJuZWxzIGFuZCB3aXRoIHBwb2xsCgkgIHN1cHBvcnQuIEl0J3MgYWxzbyByZXNpbGllbnQgdG8gY2hhbmdlcyB0byB0aGUgc3lzdGVtY2xvY2sgYmVjYXVzZSBvZiBOVFAgb3IKCSAgc2ltaWxhci4KCjIwMDktMDItMDMgMTc6NDk6MDIgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0cG9sbC5jOgoJKiBnc3QvZ3N0cG9sbC5oOgoJICBHc3RQb2xsOiBhZGQgbWV0aG9kcyB0byB1c2UgZ3N0cG9sbCBmb3IgdGltZW91dHMKCSAgQWRkIGEgc3BlY2lhbCB0aW1lciBtb2RlIGluIEdzdFBvbGwgdGhhdCBtYWtlcyBpdCBvbmx5IHVzZSB0aGUgY29udHJvbCBzb2NrZXQKCSAgd2l0aCBhIHRpbWVvdXQgdG8gc2NoZWR1bGUgdGltZW91dHMuIEFsc28gYWRkIGEgcGFpciBvZiBtZXRob2RzIHRvIHdha2V1cCB0aGUKCSAgdGltZW91dCB0aHJlYWQuCgkgIEFQSTogR3N0UG9sbDo6Z3N0X3BvbGxfbmV3X3RpbWVyKCkKCSAgQVBJOiBHc3RQb2xsOjpnc3RfcG9sbF93cml0ZV9jb250cm9sKCkKCSAgQVBJOiBHc3RQb2xsOjpnc3RfcG9sbF9yZWFkX2NvbnRyb2woKQoKMjAwOS0wMi0wMyAxNToyNzozNCArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgR3N0QmFzZVNpbms6IHVzZSBuZXcgdmFyaWFibGUgdG8gc2NoZWR1bGUgcHJlcm9sbAoJICBVc2UgYSBzZXBhcmF0ZSB2YXJpYWJsZSB0byBrZWVwIHRyYWNrIGlmIHdlIG5lZWQgdG8gY2FsbCB0aGUgcHJlcm9sbCBtZXRob2QKCSAgaW5zdGVhZCBvZiBhYnVzaW5nIHRoZSBjb21taXRlZCB2YXJpYWJsZS4KCjIwMDktMDItMDMgMTI6NTI6NDkgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6CgkgIEdzdEJhc2VTaW5rOiBhdm9pZCBjYWxsaW5nIHByZXJvbGwgbXVsdGlwbGUgdGltZXMKCSAgRml4IGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgIzU2NzcyNSBpbiBjb21taXQKCSAgMWM3YWI0ZWQ0ZjE5YjYzYmEwNDZhNmYyZmU3ZDA5YTZjMTczNTdjNS4gV2Ugc2hvdWxkIG9ubHkgY2FsbCB0aGUgcHJlcm9sbAoJICBmdW5jdGlvbiBvbmNlIG5hbWVseSB3aGVuIHdlIGRpZCBub3QgeWV0IGNvbW1pdCB0aGUgc3RhdGUgY2hhbmdlLgoJICBBZGQgYSB1bml0IHRlc3QgdG8gY2hlY2sgdGhhdCB3ZSBjYWxsIHRoZSBwcmVyb2xsIGZ1bmN0aW9uIHdoZW4gaW50ZXJydXB0aW5nIHRoZQoJICBjbG9ja193YWl0IChzZWUgIzU2NzcyNSkuCgkgIEFkZCBhIHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IHdlIG9ubHkgY2FsbCB0aGUgcHJlcm9sbCBmdW5jdGlvbiBvbmNlLgoKMjAwOS0wMS0yOSAxMzozMDo0NSArMDEwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBGb3JjZSByZWNvbmZpZ3VyZSBvZiBiYXNldHJhbnNmb3JtIHRvIHJlY2hlY2sgYWxsb2MgcmVxdWVzdAoJICBXaGlsZSByZWNvbmZpZ3VyaW5nIGEgYmFzZXRyYW5zZm9ybSBlbGVtZW50IHdlIG5lZWQgYWxzbyB0byByZWNoZWNrCgkgIHRoZSBhbGxvYyByZXF1ZXN0LiBCZWNhdXNlIGl0J3MgcG9zc2libGUgdGhhdCBkdWUgdG8gY2FwcyBjaGFuZ2VzCgkgIHRoZSBwcm94eV9hbGxvYyBzdGF0ZSBpcyBub3QgY29ycmVjdCBhbnltb3JlLgoJICAoUmUtY29tbWl0IGFmdGVyIGRpc2N1c2lvbiB3aXRoIFdpbSBvbiBJUkMpCgoyMDA5LTAyLTAyIDE0OjE5OjU3ICswMTAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBnc3RyZWdpc3RyeWJpbmFyeTogTWFrZSBpdCBjb21waWxlIHdpdGggR1NUX0RJU0FCTEVfR1NUX0RFQlVHLgoKMjAwOS0wMS0zMSAyMTozNDoyOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZG9jcy8uZ2l0aWdub3JlOgoJKiBkb2NzL2xpYnMvdG1wbC8uZ2l0aWdub3JlOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC8uZ2l0aWdub3JlOgoJICByZXBvOiBSZWFycmFuZ2UgZ2l0aWdub3JlcyBpbiBkb2NzIHN1YmRpcgoJICB0bXBsIGRpcmVjdG9yaWVzIGFyZSByZW1vdmVkIGJ5IG1ha2UgY2xlYW4sIHdoaWNoIGRlbGV0ZXMgdGhlCgkgIC5naXRpZ25vcmUuIFVzZSBhIC5naXRpZ25vcmUgaGlnaGVyIHVwIHRvIGlnbm9yZSB0aGUgdG1wbCBkaXJzIGluc3RlYWQuCgoyMDA5LTAxLTMxIDIxOjMyOjM2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc3RyZXNzLmM6CgkgIGNoZWNrOiBGaXggY29tbWVudCBhYm91dCB0aGUgdGltZW91dCBmb3IgZ2VuZXJpYyBzdHJlc3MgdGVzdC4KCSAgU2V0dGluZyB0aGUgdGltZW91dCB0byAwIG1ha2VzIGl0IGluZmluaXRlLCBzbyBmaXggdGhlIGNvbW1lbnQKCSAgYWJvdmUgYWNjb3JkaW5nbHkuCgoyMDA5LTAxLTMxIDIxOjMxOjQ4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZWUuYzoKCSAgY2hlY2s6IEluY3JlYXNlIHRpbWVvdXQgZm9yIHRoZSB0ZWUgdGVzdAoJICBUaGUgdGVlIHN0cmVzcyB0ZXN0IGtlZXBzIHRpbWluZyBvdXQgZm9yIG1lIG9uIG9uZSBvZiB0aGUgc2xvd2VyCgkgIG1hY2hpbmVzLCBzbyBpbmNyZWFzZSB0aGUgdGltZW91dCB0byAzIG1pbnMuCgoyMDA5LTAxLTMwIDE0OjU2OjA4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIFVwZGF0ZSB0aGUgd2luMzIgY29uZmlnLmguaW4gdGVtcGxhdGUgZnJvbSB0aGUgbWFpbiBjb25maWcuaC5pbgoKMjAwOS0wMS0zMCAyMjoxODoxNyArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLWRvY3Muc2dtbDoKCSAgQWRkIHJlbGVhc2VpbmZvIHdpdGggb25saW5lIHVybC4KCjIwMDktMDEtMzAgMTg6MTc6MDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdGludGVyZmFjZS5oOgoJKiBnc3QvZ3N0dXJpLmg6CgkgIFJlbW92ZSBicm9rZW4gY2xhc3MgdG8gaW50ZXJmYWNlIGNhc3QgbWFjcm9zIGZyb20gR3N0VXJpSGFuZGxlciBhbmQgR3N0SW1wbGVtZW50c0ludGVyZmFjZSBoZWFkZXJzCgkgIFJlbW92ZSBjbGFzcy10by1pbnRlcmZhY2Utc3RydWN0IGNhc3QgbWFjcm9zIHdoaWNoIGRvbid0IHdvcmssCgkgIGRvbid0IG1ha2Ugc2Vuc2UsIGFuZCBpbiBzb21lIGNhc2VzIHdvdWxkbid0IGV2ZW4gY29tcGlsZSBpZgoJICB1c2VkLiBSZW1vdmFsIHNob3VsZCBiZSBvayBzZWVpbmcgdGhhdCBjb2RlIHdoaWNoIHVzZXMgYW55IG9mCgkgIHRoZXNlIGlzIGJyb2tlbiBhbmQgYm91bmQgdG8gY3Jhc2guIEZpeGVzICM1NjU2MDcuCgkgIEFQSTogcmVtb3ZlIEdTVF9JTVBMRU1FTlRTX0lOVEVSRkFDRV9DTEFTUwoJICBBUEk6IHJlbW92ZSBHU1RfSVNfSU1QTEVNRU5UU19JTlRFUkZBQ0VfQ0xBU1MKCSAgQVBJOiByZW1vdmUgR1NUX1VSSV9IQU5ETEVSX0NMQVNTCgoyMDA5LTAxLTMwIDE2OjI4OjE0ICswMDAwICBKYW4gU2NobWlkdCA8amFuLnNjaG1pZHRAc3VuLmNvbT4KCgkqIGRvY3MvZ3N0L3RtcGwvLmdpdGlnbm9yZToKCSAgUmVtb3ZlIGdpdGlnbm9yZSBpbiBkb2NzL2dzdC90bXBsLgoJICBUaGlzIGdpdGlnbm9yZSBmaWxlIHNlZW1zIHRvIGdldCBkZWxldGVkIGJ5IHRoZSBidWlsZCwgYW5kIGRvZXNuJ3QKCSAgc2VlbSB0byBiZSBkb2luZyBhbnl0aGluZyB1c2VmdWwgYW55d2F5LgoKMjAwOS0wMS0zMCAxNjoyMTo1NSArMDAwMCAgSmFuIFNjaG1pZHQgPGphbi5zY2htaWR0QHN1bi5jb20+CgoJKiBjb21tb246CgkgIEJ1bXAgY29tbW9uCgoyMDA5LTAxLTMwIDE0OjU5OjA3ICswMDAwICBKYW4gU2NobWlkdCAtIFN1biBNaWNyb3N5c3RlbXMgLSBEdWJsaW4gSXJlbGFuZCA8anMyMTI0MTlAZmxhaWwuKG5vbmUpPgoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkgIEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIHdpdGggRm9ydGUuCgoyMDA5LTAxLTMwIDEwOjQzOjU1ICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIFJldmVydCAiQ2hlY2sgc3VnZ2VzdGVkIGNhcHMgZm9yIHByb3h5IGFsbG9jIgoJICBUaGlzIHJldmVydHMgY29tbWl0IDUwYWZkNDU5NTc5MTkxNzcyZjQyZDFhNDRmMzk1OWU1MzBjNWMyNjkuCgkgIEl0IGJyZWFrcyB0aGUgaW50ZXJhY3RpdmUgdGVzdC1zY2FsZSB1bml0IHRlc3QuCgoyMDA5LTAxLTMwIDEwOjQyOjUwICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIFJldmVydCAiRm9yY2UgcmVjb25maWd1cmUgb2YgYmFzZXRyYW5zZm9ybSB0byByZWNoZWNrIGFsbG9jIHJlcXVlc3QiCgkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgM2E0NjAyZDc3MTlkZTNjM2VmN2FlY2U2OGI1Zjk0ODlkMDc4MDE2Mi4KCSAgSXQgYnJlYWtzIHRoZSBpbnRlcmFjdGl2ZSB0ZXN0LXNjYWxlIHVuaXQgdGVzdC4KCjIwMDktMDEtMzAgMTA6Mjk6NTYgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIEFsbG9jYXRlIGV2ZXJ5dGhpbmcgdGhhdCBpcyB3cml0dGVuIHRvIHRoZSByZWdpc3RyeSB3aXRoIGdfbWFsbG9jMCgpCgkgIEFsbG9jYXRlIGV2ZXJ5IHN0cnVjdHVyZSB0aGF0IGlzIGRpcmVjdGx5IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeQoJICByZWdpc3RyeSB3aXRoIGdfbWFsbG9jMCgpLiBPdGhlcndpc2Ugc29tZSBwYXJ0cyBvZiBpdCB3aWxsIGJlCgkgIHVuaW5pdGlhbGl6ZWQgKHN0cnVjdCBwYWRkaW5nIGJlY2F1c2Ugb2YgYWxpZ25tZW50LCBldGMpIGFuZAoJICB2YWxncmluZCB3aWxsIGNvbXBsYWluIGFib3V0IGl0LgoKMjAwOS0wMS0zMCAwODozMDoyOCArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGF1dG9nZW4uc2g6CgkqIGNvbW1vbjoKCSAgVXNlIGEgc3ltYm9saWMgbGluayBmb3IgdGhlIHByZS1jb21taXQgY2xpZW50LXNpZGUgaG9vawoKMjAwOS0wMS0yOSAxNTo0OToyNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIE1ha2Ugc3VyZSB0byB0YWtlIGEgY29weSBvZiB0aGUgc3RyaW5ncyB3ZSdyZSBnb2luZyB0byBmcmVlIGxhdGVyLgoKMjAwOS0wMS0yNiAxNzoxNToxNSArMDIwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBBZGQgbG9nZ2luZyBpbiBmYWlsdXJlIGNhc2UuIEFkZCBtb3JlIGRldGFpbHMgdG8gYSB0b2RvIGNvbW1lbnQuCgoyMDA5LTAxLTI2IDE3OjE0OjA3ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiB0ZXN0cy9iZW5jaG1hcmtzL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9iZW5jaG1hcmtzL2luaXQuYzoKCSAgQWRkIGEgdHJpdmlhbCBzb3VyY2UgZm9yIHRyYWNraW5nIGdzdF9pbml0IHRpbWUgYWNjcm9zcyB2ZXJzaW9ucy4KCjIwMDktMDEtMjYgMTc6MTM6MDkgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICBBZGQgdG9kbyBjb21tZW50cy4KCjIwMDktMDEtMjkgMTM6Mzk6MjkgKzAxMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgQ2hlY2sgc3VnZ2VzdGVkIGNhcHMgZm9yIHByb3h5IGFsbG9jCgkgIEJlY2F1c2Ugd2UgYXJlIHRyeWluZyB0byByZXNvbHZlIGEgc3VnZ2VzdGlvbiBoZXJlIHdlIGRvbid0IG5lZWQKCSAgdG8gY2hlY2sgb24gY2FwcyBmb3IgcHJveHlfYWxsb2MgYnV0IHdlIG5lZWQgdG8gY2hlY2sgb24gdGhlIHN1Z2dlc3RlZAoJICBjYXBzIGluc3RlYWQuCgoyMDA5LTAxLTI5IDEzOjMwOjQ1ICswMTAwICBUaGlqcyBWZXJtZWlyIDx0aGlqc3Zlcm1laXJAZ21haWwuY29tPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIEZvcmNlIHJlY29uZmlndXJlIG9mIGJhc2V0cmFuc2Zvcm0gdG8gcmVjaGVjayBhbGxvYyByZXF1ZXN0CgkgIFdoaWxlIHJlY29uZmlndXJpbmcgYSBiYXNldHJhbnNmb3JtIGVsZW1lbnQgd2UgbmVlZCBhbHNvIHRvIHJlY2hlY2sKCSAgdGhlIGFsbG9jIHJlcXVlc3QuIEJlY2F1c2UgaXQncyBwb3NzaWJsZSB0aGF0IGR1ZSB0byBjYXBzIGNoYW5nZXMKCSAgdGhlIHByb3h5X2FsbG9jIHN0YXRlIGlzIG5vdCBjb3JyZWN0IGFueW1vcmUuCgoyMDA5LTAxLTI3IDIzOjE0OjQ5ICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSAgSW1wcm92ZSB0aGUgZG9jcyBmb3IgZ3N0X2Nsb2NrX2lkX3dhaXRfYXN5bmMoKS4KCSAgSXRzIG1lbnRpb25lZCBpbiB0aGUgc2VjdGlvbiBkb2NzLCBidXQgbGV0cyByZXBlYXQgYXQgdGhlIGZ1bmN0aW9uIGRvY3MgdGhhdCB0aGUgY2FsbGJhY2sgY2FuIGJlIGludm9rZWQgZnJvbSBhbnkgdGhyZWFkLgoKMjAwOS0wMS0yNyAxNzo1MzowMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltLm11bGxlckBjb2xsYWJvcmEuY28udWs+CgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICBkb2NzOiBkb24ndCB1c2UgRVJST1JfQ0ZMQUdTIHdoZW4gYnVpbGRpbmcgJGRvY21vZHVsZS1zY2FuLmMKCSAgV2UgZG9uJ3Qgd2FudCB0byB1c2UgLVdhbGwgLVdlcnJvciBhbmQgZnJpZW5kcyB3aGVuIGJ1aWxkaW5nIHRoZSBndGstZG9jLWdlbmVyYXRlZAoJICAkZG9jbW9kdWxlLXNjYW4uYywgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IGZpeCBzdHVmZiBpZiBhIGNlcnRhaW4gZ3RrLWRvYy9jb21waWxlcgoJICBjb21iaW5hdGlvbiBicmVha3MgdGhlIGJ1aWxkLiBGaXhlcyBidWlsZCBvbiB1YnVudHUgaW50cmVwaWQuCgoyMDA5LTAxLTI3IDE3OjUyOjE0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0ubXVsbGVyQGNvbGxhYm9yYS5jby51az4KCgkqIC5naXRpZ25vcmU6CgkgIE1ha2UgZ2l0IGlnbm9yZSBiYWNrdXAgZmlsZXMuCgoyMDA5LTAxLTI2IDIxOjI5OjAyICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOgoJICBEb24ndCBjaGVjayB0aW1lc3RhbXAgaGVyZSwgaXRzIGRvbmUgaW4gdGhlIGNhbGxlZCBmdW5jdGlvbiBhbnl3YXkuCgoyMDA5LTAxLTI2IDEyOjUyOjEyICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZ3N0L2dzdHBvbGwuYzoKCSAgQXZvaWQgdW5uZWVkZWQgcmVhZHMgZnJvbSB0aGUgY29udHJvbCBzb2NrZXQKCSAgQWRkIGEgbmV3IHZhcmlhYmxlIHRoYXQga2VlcHMgdHJhY2sgb2YgdGhlIHN0YXR1cyBvZiB0aGUgY29udHJvbCBzb2NrZXQuIFRoaXMKCSAgYWxsb3dzIHVzIHRvIGF2b2lkIGRvaW5nIGEgcmVhZCgpIG9uIHRoZSBjb250cm9sIHNvY2tldCB3aGVuIHdlIGRpZCBub3Qgd3JpdGUKCSAgYW55dGhpbmcgdG8gaXQuCgkgIEZpeGVzICM1Njg0MzguCgoyMDA5LTAxLTI1IDIyOjE3OjMxICswMjAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgQWRkIG1vcmUgZGVidWcgbG9nZ2luZyBmb3IgZmFpbHVyZSBjYXNlcy4KCjIwMDktMDEtMjUgMjI6MTE6MzIgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGdzdC9nc3RwbHVnaW4uaDoKCSAgRG9jdW1lbnQgdGhhdCBHU1RfUExVR0lOX0RFRklORSBtYWNyb3MgdXNlIFBBQ0tBR0UgZGVmaW5lLiBGaXhlcyAjNTU5NzIyLgoJICBQQUNLQUdFIGlzIGRlZmluZWQgYnkgYXV0b2Zvby4gSWYgcGVvcGxlIHVzZSBzb21ldGhpbmcgZGlmZmVyZW50LCB0aGV5IG1pZ2h0IHdhbnQgdG8gZGVmaW5lIGl0IHRoZW1zZWxmLgoKMjAwOS0wMS0yNSAxNzo1ODo1MiArMDEwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBGaXggdHlwbwoKMjAwOS0wMS0yNCAyMTo1MDowOCArMDEwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgIE9ubHkgZnJlZSBsaXN0IG9mIGJ1ZmZlcnMgb25jZQoKMjAwOS0wMS0yNCAxNDozNzoxNCArMDEwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkqIGRvY3MvUkVBRE1FOgoJICBGaXggdHlwbwoKMjAwOS0wMS0yMyAyMzowODowMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogcG8vLmdpdGlnbm9yZToKCSAgSWdub3JlIGFub3RoZXIgZmlsZQoKMjAwOS0wMS0yMyAyMTo0NDoxMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBhZGQgZ3N0X3R5cGVfZmluZF9oZWxwZXJfZm9yX2V4dGVuc2lvbiB0byB0aGUgd2luMzIgZGVmcyBmaWxlCgoyMDA5LTAxLTIzIDE2OjA5OjM1ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIFVwZGF0ZSB3aW4zMiBjb25maWcuaCBmb3IgMC4xMC4yMi4xIGRldiBjeWNsZS4uLgoKMjAwOS0wMS0yMyAxNjowODowOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgoKCSogLmdpdGlnbm9yZToKCSogZG9jcy9nc3QvLmdpdGlnbm9yZToKCSogZG9jcy9saWJzLy5naXRpZ25vcmU6CgkqIGRvY3MvbGlicy90bXBsLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2Jhc2UvLmdpdGlnbm9yZToKCSogbGlicy9nc3QvY2hlY2svLmdpdGlnbm9yZToKCSogbGlicy9nc3QvY29udHJvbGxlci8uZ2l0aWdub3JlOgoJKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvLmdpdGlnbm9yZToKCSogbGlicy9nc3QvbmV0Ly5naXRpZ25vcmU6CgkqIHBsdWdpbnMvaW5kZXhlcnMvLmdpdGlnbm9yZToKCSogdGVzdHMvY2hlY2svbGlicy8uZ2l0aWdub3JlOgoJICBVcGRhdGUgYSBidW5jaCBvZiBnaXRpZ25vcmVzIHRvIGNsZWFuIHVwIG15IGdpdCBzdGF0dXMgb3V0cHV0CgoyMDA5LTAxLTIzIDA5OjU0OjUzICswMTAwICBCcmlhbiBDYW1lcm9uIDxicmlhbi5jYW1lcm9uQHN1bi5jb20+CgoJKiBjb25maWd1cmUuYWM6CgkqIGdzdC9NYWtlZmlsZS5hbToKCSAgRml4IGxpbmtpbmcgZmFpbHVyZXMgb24gU29sYXJpcy4gRml4ZXMgYnVnICM1Njg0ODEuCgkgIExpbmsgbGliZ3N0cmVhbWVyIHdpdGggJChMSUJNKSBhcyBpdCB1c2VzIG1hdGggZnVuY3Rpb25zLgoJICBBZGQgYSBjb25maWd1cmUgY2hlY2sgZm9yIHNvY2tldCBhbmQgbnNsIGxpYnJhcnkgYW5kIGFkZAoJICB0aGVtIHRvIExJQlMgaWYgdGhleSdyZSBmb3VuZC4gVGhpcyBpcyBuZWVkZWQgb24gU29sYXJpcwoJICBmb3Igc29ja2V0KCkgYW5kIGdldGhvc3RieW5hbWUoKS4KCjIwMDktMDEtMjIgMTg6MDI6MTkgKzAyMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCgkqIGNvbW1vbjoKCSAgVXBkYXRlIGNvbW1vbiBzbmFwc2hvdC4KCjIwMDktMDEtMjIgMTM6NTg6NTcgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJICBJbXByb3ZlIGRlYnVnIG91dHB1dCBieSBsb2dnaW5nIHRoZSBvZmZzZXRzLiBGaXhlcyBidWcgIzU2ODY3OC4KCSAgSW4gY3JlYXRlKCkgYWxzbyBsb2cgdGhlIG9mZnNldHMgYW5kIG5vdCBvbmx5IHRoZQoJICBidWZmZXIgc2l6ZS4KCjIwMDktMDEtMjIgMTM6NTE6MDIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkqIGNvbW1vbjoKCSAgRml4IHByZS1jb21taXQgaG9vawoKMjAwOS0wMS0yMiAxMjo1Mjo1MCArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkgIE1lcmdlIGJyYW5jaCAnbWFzdGVyJyBvZiBzc2g6Ly9naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC9nc3RyZWFtZXIvZ3N0cmVhbWVyCgoyMDA5LTAxLTIyIDExOjU0OjQxICswMTAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAY29sbGFib3JhLmNvLnVrPgoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIERvYyBmb3IgbmV3IHR5cGVmaW5kIG1ldGhvZC4KCjIwMDktMDEtMjIgMTA6NDU6NTkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgQmFjayB0byBkZXZlbG9wbWVudCAtPiAwLjEwLjIyLjEKCjIwMDktMDEtMjIgMTA6MTY6MDMgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJICBNZXJnZSBicmFuY2ggJ21hc3Rlcicgb2Ygc3NoOi8vZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQvZ3N0cmVhbWVyL2dzdHJlYW1lcgoKMjAwOS0wMS0yMiAwNTozNTowMiArMDEwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkqIGF1dG9nZW4uc2g6CgkqIGNvbW1vbjoKCSAgSW5zdGFsbCBhbmQgdXNlIHByZS1jb21taXQgaW5kZW50YXRpb24gaG9vayBmcm9tIGNvbW1vbgoKMjAwOS0wMS0yMSAxMjo1MDoyOSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIElmIG5vIHR5cGUgd2FzIGZvdW5kIHVzaW5nIHRoZSB0eXBlZmluZCBmdW5jdGlvbnMsIHRyeSBkb2luZyBhbiB1cHN0cmVhbQoJICBVUkkgcXVlcnkgdG8gZ3Vlc3MgdGhlIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLiBTZWUgIzU2NjY2MS4KCjIwMDktMDEtMjEgMTI6NDg6MTggKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSAgQWRkIG5ldyB0eXBlZmluZyBoZWxwZXIgZnVuY3Rpb24gdG8gZ3Vlc3MgdGhlIGNhcHMgYmFzZWQgb24gdGhlIGZpbGUKCSAgZXh0ZW5zaW9uLiBTZWUgIzU2NjY2MS4KCSAgQVBJOiBnc3RfdHlwZV9maW5kX2hlbHBlcl9mb3JfZXh0ZW5zaW9uKCkKCjIwMDktMDEtMjEgMTI6NDU6NDUgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZ3N0dHlwZWZpbmQuYzoKCSogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOgoJICBBbGxvdyBhZGRpbmcgYSB0eXBlZmluZGVyIHdpdGhvdXQgYSB0eXBlZmluZCBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkCgkgIHRvIG1hcCB0aGUgY2FwcyB0byB0aGUgZXh0ZW5zaW9uLiBTZWUgIzU2NjY2MS4KCjIwMDktMDEtMjEgMTI6NDM6NTUgKzAxMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0Bjb2xsYWJvcmEuY28udWs+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIFVwZGF0ZSB0aGUgbGFzdF9idWZmZXIgZXhhY3RseSB3aXRoIHRoZSBidWZmZXIgdGhhdCBjYXVzZWQgdGhlCgkgIHByZXJvbGwgYW5kIGFsc28gY2FsbCB0aGUgcHJlcm9sbCBtZXRob2Qgd2l0aCB0aGF0IHByZXJvbGwgYnVmZmVyLgoJICBGaXhlcyAjNTY3NzI1LgoKMjAwOS0wMS0yMSAxMjoyMTo0OSArMDEwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgZG8gbm90IGNhbGwgdGhlIHVubGluayBmdW5jdGlvbiBvbiB0aGUgdGFyZ2V0IHBhZCB3aGVuIHRoZSBnaG9zdHBhZAoJICBpcyB1bmxpbmtlZC4KCSAgQWRkIHNvbWUgdW5pdCB0ZXN0cyBmb3IgdGhpcyBiZWhhdmlvdXIuCgkgIEZpeGVzICM1NjY5MzYuCgoyMDA5LTAxLTIxIDA0OjI5OjI1ICswMTAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSogYXV0b2dlbi5zaDoKCSAgYXV0b2dlbi5zaCA6IFVzZSBnaXQgc3VibW9kdWxlCgo9PT0gcmVsZWFzZSAwLjEwLjIyID09PQoKMjAwOS0wMS0xOSAyMjo1ODo1OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLnNpZ25hbHM6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogZ3N0cmVhbWVyLmRvYXA6CgkqIHBvL0xJTkdVQVM6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgUmVsZWFzZSAwLjEwLjIyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZWxlYXNlIDAuMTAuMjIKCjIwMDktMDEtMTkgMjE6MjA6NDAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2lkLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vamEucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcGwucG86CgkqIHBvL3B0X0JSLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDktMDEtMTcgMjE6MDQ6NDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0YnVzLmM6IEZpeCBvcmRlciBvZiBtZW1iZXJzIGluIEdzdEJ1c1NvdXJjZSBzdHJ1Y3R1cmUgLSB0aGUgZmlyc3QgbWVtYmVyIG11c3QgYmUgdGhlIHBhcmVudCBzdHJ1Y3R1cmUgaWUuIEdTb3UuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19zZXRfbWFpbl9jb250ZXh0KSwgKGdzdF9idXNfY3JlYXRlX3dhdGNoKToKCSAgRml4IG9yZGVyIG9mIG1lbWJlcnMgaW4gR3N0QnVzU291cmNlIHN0cnVjdHVyZSAtIHRoZSBmaXJzdCBtZW1iZXIKCSAgbXVzdCBiZSB0aGUgcGFyZW50IHN0cnVjdHVyZSBpZS4gR1NvdXJjZS4gU2hvdWxkIG1ha2UgYnVzIHNvdXJjZXMKCSAgYXR0YWNoZWQgdG8gbm9uLWRlZmF1bHQgbWFpbiBjb250ZXh0cyB3b3JrIGluIGFsbCBjYXNlcyBub3cgKGllLgoJICBwcmltYXJpbHkgaW4gY2FzZXMgd2hlcmUgdGhlIGNhbGxiYWNrIGhhcyBhIG5vbi1OVUxMIHVzZXIgZGF0YQoJICBhcmd1bWVudCkuIEZpeGVzICM1NjIxNzAuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1cy5jOiAodGVzdF9jdXN0b21fbWFpbl9jb250ZXh0KToKCSAgQWRkIHVuaXQgdGVzdCBmb3IgdGhlIGFib3ZlLCBiYXNlZCBvbiBjb2RlIGJ5CgkgIEp1c3RpbiBLYXJuZWdlcyA8anVzdGluIGF0IGFmZmluaXggY29tPi4KCjIwMDktMDEtMTUgMTA6MDQ6MzcgKzAwMDAgIEpvbmFzIEhvbG1iZXJnIDxqb25hcy5ob2xtYmVyZ0BheGlzLmNvbT4KCgkgIGdzdC9nc3RwYWQuaDogQSBzbWFsbCBkb2N1bWVudGF0aW9uIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBKb25hcyBIb2xtYmVyZyA8am9uYXMgZG90IGhvbG1iZXJnIGF0IGF4aXMgZG90IGNvbT4KCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIEEgc21hbGwgZG9jdW1lbnRhdGlvbiBmaXguCgoyMDA5LTAxLTExIDA5OjQ2OjUyICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0dXRpbHMuaDogSW5pdGlhbGl6ZSBnX29uY2VfaW5pdCogZGF0YSB3aXRoIDAuIEZpeGVzIGJ1ZyAjNTY3MjI1LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgSW5pdGlhbGl6ZSBnX29uY2VfaW5pdCogZGF0YSB3aXRoIDAuIEZpeGVzIGJ1ZyAjNTY3MjI1LgoKMjAwOS0wMS0wOSAyMzozNzoxOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IHByZS1yZWxlYXNlIDAuMTAuMjEuMwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIHByZS1yZWxlYXNlIDAuMTAuMjEuMwoKMjAwOS0wMS0wOSAxNTo0MzoxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuKjogRml4IGRvY3VtZW50YXRpb24gZm9yIHRoZSB3YWl0X2Nsb2NrIG1ldGhvZCwgcmVuYW1lIGJhc2VzaW5rIC0+IHNpbmsgZm9yIGNvbnNpc3RlbmN5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfYmFzZV9zaW5rX3dhaXRfY2xvY2spOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgRml4IGRvY3VtZW50YXRpb24gZm9yIHRoZSB3YWl0X2Nsb2NrIG1ldGhvZCwgcmVuYW1lIGJhc2VzaW5rIC0+IHNpbmsKCSAgZm9yIGNvbnNpc3RlbmN5LgoKMjAwOS0wMS0wOCAxMzo0MToxOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdC5jOiBDcmVhdGUgYSByZWdpc3RyeSBpZiB0aGVyZSBpcyBub25lIGFsc28gd2hlbiB0aGUgb3B0aW9uIGZvciBnc3QtZGlzYWJsZS1yZWdpc3RyeS11cGRhdGUgaGFzIGJlZW4gc2VsZWN0ZWQuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgQ3JlYXRlIGEgcmVnaXN0cnkgaWYgdGhlcmUgaXMgbm9uZSBhbHNvIHdoZW4gdGhlIG9wdGlvbiBmb3IKCSAgZ3N0LWRpc2FibGUtcmVnaXN0cnktdXBkYXRlIGhhcyBiZWVuIHNlbGVjdGVkLiBGaXhlcyAjNTY3MDAyCgoyMDA5LTAxLTA2IDE4OjEwOjIyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBSZWYgbmV3IGVudW0gdHlwZSBpbiBnc3RfaW5pdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgUmVmIG5ldyBlbnVtIHR5cGUgaW4gZ3N0X2luaXQuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCByZWNlbnRseS1hZGRlZCBBUEkuCgoyMDA5LTAxLTA2IDE3OjU4OjU5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQWRkIEFQSSBmb3IgbWFraW5nIGEgR1N0cmVhbWVyIHBsdWdpbiAnZGVwZW5kZW50JyBvbiBleHRlcm5hbCBmaWxlcywgZGlyZWN0b3JpZXMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzbyB0aGF0IEdTLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6OgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOiAoR3N0UGx1Z2luRGVwKSwgKF9Hc3RQbHVnaW5Qcml2YXRlKToKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2luaXQpLCAoZ3N0X3BsdWdpbl9maW5hbGl6ZSksCgkgIChnc3RfcGx1Z2luX2NsYXNzX2luaXQpLCAoZ3N0X3BsdWdpbl9saXN0X2ZyZWUpLAoJICAoZ3N0X3BsdWdpbl9leHRfZGVwX2dldF9lbnZfdmFyc19oYXNoKSwKCSAgKF9wcml2X3BsdWdpbl9kZXBzX2Vudl92YXJzX2NoYW5nZWQpLAoJICAoZ3N0X3BsdWdpbl9leHRfZGVwX2V4dHJhY3RfZW52X3ZhcnNfcGF0aHMpLAoJICAoZ3N0X3BsdWdpbl9leHRfZGVwX2dldF9oYXNoX2Zyb21fc3RhdF9lbnRyeSksCgkgIChnc3RfcGx1Z2luX2V4dF9kZXBfZGlyZW50cnlfbWF0Y2hlcyksCgkgIChnc3RfcGx1Z2luX2V4dF9kZXBfc2Nhbl9kaXJfYW5kX21hdGNoX25hbWVzKSwKCSAgKGdzdF9wbHVnaW5fZXh0X2RlcF9zY2FuX3BhdGhfd2l0aF9maWxlbmFtZXMpLAoJICAoZ3N0X3BsdWdpbl9leHRfZGVwX2dldF9zdGF0X2hhc2gpLAoJICAoX3ByaXZfcGx1Z2luX2RlcHNfZmlsZXNfY2hhbmdlZCksIChnc3RfcGx1Z2luX2V4dF9kZXBfZnJlZSksCgkgIChnc3RfcGx1Z2luX2V4dF9kZXBfc3Rydl9lcXVhbCksIChnc3RfcGx1Z2luX2V4dF9kZXBfZXF1YWxzKSwKCSAgKGdzdF9wbHVnaW5fYWRkX2RlcGVuZGVuY3kpLCAoZ3N0X3BsdWdpbl9hZGRfZGVwZW5kZW5jeV9zaW1wbGUpOgoJICAqIGdzdC9nc3RwbHVnaW4uaDogKEdzdFBsdWdpblByaXZhdGUpLCAoR3N0UGx1Z2luRmxhZ3MpLAoJICAoR1NUX1BMVUdJTl9ERVBFTkRFTkNZX0ZMQUdfTk9ORSksCgkgIChHU1RfUExVR0lOX0RFUEVOREVOQ1lfRkxBR19SRUNVUlNFKSwKCSAgKEdTVF9QTFVHSU5fREVQRU5ERU5DWV9GTEFHX1BBVEhTX0FSRV9ERUZBVUxUX09OTFkpLAoJICAoR1NUX1BMVUdJTl9ERVBFTkRFTkNZX0ZMQUdfRklMRV9OQU1FX0lTX1NVRkZJWCksCgkgIChHc3RQbHVnaW5EZXBlbmRlbmN5RmxhZ3MpLCAoR3N0UGx1Z2luRmlsdGVyKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX2ZlYXR1cmUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3BsdWdpbl9kZXApLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGx1Z2luX2RlcF9zdHJ2KSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW5fZGVwKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW4pOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5oOiAoR1NUX01BR0lDX0JJTkFSWV9WRVJTSU9OX1NUUiksCgkgIChHc3RCaW5hcnlQbHVnaW5FbGVtZW50KSwgKF9Hc3RCaW5hcnlEZXApLCAoR3N0QmluYXJ5RGVwKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGdzdF9yZWdpc3RyeV94bWxfc2F2ZV9wbHVnaW4pOgoJICBBZGQgQVBJIGZvciBtYWtpbmcgYSBHU3RyZWFtZXIgcGx1Z2luICdkZXBlbmRlbnQnIG9uIGV4dGVybmFsIGZpbGVzLAoJICBkaXJlY3RvcmllcyBvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHNvIHRoYXQgR1N0cmVhbWVyIGtub3dzIHdoZW4KCSAgaXQgbmVlZHMgdG8gcmUtbG9hZCBHU3RyZWFtZXIgcGx1Z2lucyB0aGF0IHdyYXAgb3RoZXIgcGx1Z2luIHN5c3RlbXMuCgkgIEZpeGVzIGJ1ZyAjMzUwNDc3LgoJICBBUEk6IGFkZCBnc3RfcGx1Z2luX2FkZF9kZXBlbmRlbmN5KCkKCSAgQVBJOiBhZGQgZ3N0X3BsdWdpbl9hZGRfZGVwZW5kZW5jeV9zaW1wbGUoKQoKMjAwOS0wMS0wNiAxMzowMDoxMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogQWRkIGxpYmdzdGFwcC0wLjEwIGZyb20gLWJhc2UgdG8gc2VhcmNoIHBhdGggYW5kIHJlbW92ZSB0aGUgb2xkIGxpYiBmcm9tIC1iYWQgZnJvbSB0aGUgc2Vhci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIEFkZCBsaWJnc3RhcHAtMC4xMCBmcm9tIC1iYXNlIHRvIHNlYXJjaCBwYXRoIGFuZCByZW1vdmUgdGhlIG9sZAoJICBsaWIgZnJvbSAtYmFkIGZyb20gdGhlIHNlYXJjaCBwYXRoLgoKMjAwOS0wMS0wNSAxNTo0Mjo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogUmVsZWFzZSB0aGUgb2JqZWN0IGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhlIHF1ZXJ5IGNvbnZlcnQgcGFkIGZ1bmN0aW9ucyB0byBhdm9pZCBkZWFkbG9ja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX2xhc3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb25fcGF1c2VkKSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgUmVsZWFzZSB0aGUgb2JqZWN0IGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhlIHF1ZXJ5IGNvbnZlcnQgcGFkIGZ1bmN0aW9ucwoJICB0byBhdm9pZCBkZWFkbG9ja3MuCgoyMDA5LTAxLTA1IDE1OjQxOjAwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1cy5jOiBUaGUgbG9jayBvcmRlciBzaG91bGQgYmUgbWFpbmNvbnRleHQgPiBPQkpFQ1RfTE9DSyBzbyB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIG9iamVjdCBsb2NrIHdoZW4gd2FraW5nIHVwLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfd2FrZXVwX21haW5fY29udGV4dCk6CgkgIFRoZSBsb2NrIG9yZGVyIHNob3VsZCBiZSBtYWluY29udGV4dCA+IE9CSkVDVF9MT0NLIHNvIHdlIG5lZWQgdG8gcmVsZWFzZQoJICB0aGUgb2JqZWN0IGxvY2sgd2hlbiB3YWtpbmcgdXAgdGhlIG1haW5sb29wIHRvIGF2b2lkIGRlYWRsb2Nrcy4KCjIwMDktMDEtMDUgMTA6MTQ6MjggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFVzZSBhbiBpdGVyYXRvciB0byBzZXQgdGhlIGNsb2NrIGFuZCB0aGUgaW5kZXggc28gdGhhdCB3ZSBjYW4gcmVsZWFzZSB0aGUgb2JqZWN0IGxvY2sgYXBwcm9wcmlhdGVseS4gRmkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9zZXRfaW5kZXhfZnVuYyksIChnc3RfYmluX3NldF9jbG9ja19mdW5jKSwKCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpOgoJICBVc2UgYW4gaXRlcmF0b3IgdG8gc2V0IHRoZSBjbG9jayBhbmQgdGhlIGluZGV4IHNvIHRoYXQgd2UgY2FuIHJlbGVhc2UKCSAgdGhlIG9iamVjdCBsb2NrIGFwcHJvcHJpYXRlbHkuIEZpeGVzICM1NjYzOTMuCgoyMDA5LTAxLTAzIDE4OjM5OjM4ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBVc2UgdGhlIG5hbWUgb2YgdGhlIHBhZHMgaW5zdGVhZCBvZiBhIHBvaW50ZXIsIGhlbHBzIGluIGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19hdmFpbGFibGUpOgoJICBVc2UgdGhlIG5hbWUgb2YgdGhlIHBhZHMgaW5zdGVhZCBvZiBhIHBvaW50ZXIsIGhlbHBzIGluIGRlYnVnZ2luZy4KCjIwMDktMDEtMDMgMTg6MTY6NTQgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0aW5kZXguYzogQWRkIGEgZGVidWdnaW5nIGNhdGVnb3J5IGZvciBHc3RJbmRleCwgZmlyc3QgbGl0dGxlIHN0ZXAgaW4gbWFraW5nIGluZGV4aW5nIHRvcC1ub3RjaC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfZ2V0X3R5cGUpOgoJICBBZGQgYSBkZWJ1Z2dpbmcgY2F0ZWdvcnkgZm9yIEdzdEluZGV4LCBmaXJzdCBsaXR0bGUgc3RlcCBpbiBtYWtpbmcKCSAgaW5kZXhpbmcgdG9wLW5vdGNoLgoKMjAwOS0wMS0wMyAxODoxMDowOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC86IEFzc2lnbiBkZWJ1ZyBzdGF0ZW1lbnRzIHRvIHJlbGV2YW50IGNhdGVnb3JpZXMgaW5zdGVhZCBvZiB0aGUgJ2RlZmF1bHQnIGNhdGVnb3J5IHNvIHRoZXkgZG9uJ3QgZ2V0IGxvc3QgaW4gZGVidS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsKSwKCSAgKGdzdF9lbGVtZW50X3BhZHNfYWN0aXZhdGUpOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfZGlzcGF0Y2hfcHJvcGVydGllc19jaGFuZ2VkKToKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9wYWRfcHJveHlfZ2V0Y2FwcyksIChnc3RfcGFkX3Byb3h5X3NldGNhcHMpLAoJICAoZ3N0X3BhZF9hZGRfZGF0YV9wcm9iZV9mdWxsKSwgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlX2Z1bGwpLAoJICAoZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlX2Z1bGwpLCAoZ3N0X3BhZF9yZW1vdmVfZGF0YV9wcm9iZSksCgkgIChnc3RfcGFkX3JlbW92ZV9ldmVudF9wcm9iZSksIChnc3RfcGFkX3JlbW92ZV9idWZmZXJfcHJvYmUpOgoJICBBc3NpZ24gZGVidWcgc3RhdGVtZW50cyB0byByZWxldmFudCBjYXRlZ29yaWVzIGluc3RlYWQgb2YgdGhlICdkZWZhdWx0JwoJICBjYXRlZ29yeSBzbyB0aGV5IGRvbid0IGdldCBsb3N0IGluIGRlYnVnZ2luZy4KCjIwMDktMDEtMDEgMjE6Mjc6MDYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6IEFkZCBzb21lIGlkZWFzLCBob3cgdG8gbWFrZSB0aGUgZ3JhcGggc21hbGxlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgQWRkIHNvbWUgaWRlYXMsIGhvdyB0byBtYWtlIHRoZSBncmFwaCBzbWFsbGVyLgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBBZGQgYSBjb21tZW50IGZyb20gYSBkZWJ1ZyBzZXNzaW9uLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBMb2cgbW9yZSBjb250ZXh0LgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgSW5kZXQuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6CgkgIEZpeCB0eXBvIGluIGRvY3MuCgoyMDA4LTEyLTI3IDE3OjQxOjExICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1cy5jOiBNYWtlIEdzdEJ1c1NvdXJjZSB3b3JrIHdpdGggbm9uLWRlZmF1bHQgbWFpbiBjb250ZXh0cyAoIzU2MjE3MCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfZGlzcG9zZSksIChnc3RfYnVzX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfYnVzX3dha2V1cF9tYWluX2NvbnRleHQpLCAoZ3N0X2J1c19zZXRfbWFpbl9jb250ZXh0KSwKCSAgKGdzdF9idXNfcG9zdCksIChnc3RfYnVzX3NvdXJjZV9wcmVwYXJlKSwgKGdzdF9idXNfc291cmNlX2ZpbmFsaXplKSwKCSAgKGdzdF9idXNfY3JlYXRlX3dhdGNoKToKCSAgTWFrZSBHc3RCdXNTb3VyY2Ugd29yayB3aXRoIG5vbi1kZWZhdWx0IG1haW4gY29udGV4dHMgKCM1NjIxNzApLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzogKG1lc3NhZ2VfZnVuY19lb3MpLCAobWVzc2FnZV9mdW5jX2FwcCksCgkgICh0ZXN0X3dhdGNoKSwgKHRlc3Rfd2F0Y2hfd2l0aF9jdXN0b21fY29udGV4dCksIChnc3RfYnVzX3N1aXRlKToKCSAgQWRkIHRlc3QgY2FzZSBmb3IgR3N0QnVzU291cmNlIHdpdGggYSBub24tZGVmYXVsdCBtYWluIGNvbnRleHQuCgkgICogdGVzdHMvY2hlY2svbGlicy8uY3ZzaWdub3JlOgoJICBJZ25vcmUgbW9yZS4KCjIwMDgtMTItMjcgMTY6MjM6MTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogV3JhcCBtdWx0aS1saW5lIG1hY3JvcyBpbiBHX1NUTVRfe1NUQVJUfEVORH0uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAodW5wYWNrX2VsZW1lbnQpLCAodW5wYWNrX2NvbnN0X3N0cmluZyksCgkgICh1bnBhY2tfc3RyaW5nKTo6CgkgIFdyYXAgbXVsdGktbGluZSBtYWNyb3MgaW4gR19TVE1UX3tTVEFSVHxFTkR9LgoKMjAwOC0xMi0yMCAxNzozMzo0NCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgQVBJOiBBZGQgVVJJIHF1ZXJ5IHR5cGUuIFRoaXMgaXMgdXNlZnVsIHRvIHF1ZXJ5IHRoZSBVUkkgb2YgYSBzaW5rL3NvdXJjZSBlbGVtZW50IGFuZCBjYW4gYmUgdXNlZCBieSBkZW11eGVycyB0aGF0IG5lLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHF1YXJrLmM6CgkgICogZ3N0L2dzdHF1YXJrLmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3VyaSksIChnc3RfcXVlcnlfc2V0X3VyaSksCgkgIChnc3RfcXVlcnlfcGFyc2VfdXJpKToKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgQVBJOiBBZGQgVVJJIHF1ZXJ5IHR5cGUuIFRoaXMgaXMgdXNlZnVsIHRvIHF1ZXJ5IHRoZSBVUkkKCSAgb2YgYSBzaW5rL3NvdXJjZSBlbGVtZW50IGFuZCBjYW4gYmUgdXNlZCBieSBkZW11eGVycyB0aGF0CgkgIG5lZWQgdG8gZ2V0IGRhdGEgZnJvbSBvdGhlciBmaWxlcy4KCSAgVGhpcyBxdWVyeSBzaG91bGQgZ28gdXBzdHJlYW0gYnkgZGVmYXVsdC4KCSAgRml4ZXMgYnVnICM1NjI5NDkuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKGdzdF9mZF9zaW5rX3F1ZXJ5KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19xdWVyeSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19xdWVyeSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmlsZV9zcmNfcXVlcnkpOgoJICBJbXBsZW1lbnQgVVJJIHF1ZXJ5LgoKMjAwOC0xMi0xOSAxNToxMTowNiArMDAwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CgoJICBEb24ndCBmb3J3YXJkIGdzdF9wYWRfc2V0X2NhcHMoKSBvbiBhIHNvdXJjZSBnaG9zdHBhZCB0byBpdHMgdGFyZ2V0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgRG9uJ3QgZm9yd2FyZCBnc3RfcGFkX3NldF9jYXBzKCkgb24gYSBzb3VyY2UgZ2hvc3RwYWQgdG8gaXRzIHRhcmdldC4KCSAgVGhhdCB3b3VsZCBjYXVzZSB0aGUgZ2hvc3RwYWQgdG8gZW1pdCBub3RpZnk6OmNhcHMgdHdvIHRpbWVzIChmaXN0CgkgIGZyb20gZ3N0X3BhZF9zZXRfY2FwcygpIGFuZCBhZnRlciBmcm9tIG9uX3NyY190YXJnZXRfbm90aWZ5KCkpLgoKMjAwOC0xMi0xOSAxMToyNDozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiBBZGQgc29tZSBtb3JlIHVuaXQtdGVzdHMgZm9yIHRoZSBnaG9zdHBhZCBub3RpZnkgc2lnbmFsLCBvbmUgb2Ygd2hpY2ggY3VycmVudGx5IGZhaWxzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKGdob3N0X25vdGlmeV9jYXBzKSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgQWRkIHNvbWUgbW9yZSB1bml0LXRlc3RzIGZvciB0aGUgZ2hvc3RwYWQgbm90aWZ5IHNpZ25hbCwgb25lIG9mIHdoaWNoCgkgIGN1cnJlbnRseSBmYWlscy4KCjIwMDgtMTItMTkgMDk6NDQ6NDkgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBBZGQgZ3N0X3RhZ19zZXR0ZXJfcmVzZXRfdGFncyB0byB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIGdzdF90YWdfc2V0dGVyX3Jlc2V0X3RhZ3MgdG8gdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scy4KCjIwMDgtMTItMTcgMTY6MTY6NDUgKzAwMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgoKCSAgSW4gYSBzb3VyY2UgZ2hvc3RwYWQsIHdoZW4gY2FwcyBhcmUgY2hhbmdlZCBpbiB0aGUgdGFyZ2V0IHBhZCwgdGhlIGNoYW5nZSBuZWVkcyB0byBiZSByZWZsZWN0ZWQgaW4gdGhlIGdob3N0cGFkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgSW4gYSBzb3VyY2UgZ2hvc3RwYWQsIHdoZW4gY2FwcyBhcmUgY2hhbmdlZCBpbiB0aGUgdGFyZ2V0IHBhZCwgdGhlCgkgIGNoYW5nZSBuZWVkcyB0byBiZSByZWZsZWN0ZWQgaW4gdGhlIGdob3N0cGFkLgoJICBGaXhlcyAjNTY0ODYzLgoKMjAwOC0xMi0xNyAwOTozNzo0NyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEFkZCBGSVhNRSBmb3IgMC4xMSB0byBzZXQgdGhlIHBhZCBhcyBtZXNzYWdlIHNvdXJjZSBhbmQgbm90IHRoZSBlbGVtZW50LiBPdGhlcndpc2UgaXQncyBpbXBvc3NpYmxlIHRvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfZm91bmRfdGFnc19mb3JfcGFkKToKCSAgQWRkIEZJWE1FIGZvciAwLjExIHRvIHNldCB0aGUgcGFkIGFzIG1lc3NhZ2Ugc291cmNlIGFuZCBub3QKCSAgdGhlIGVsZW1lbnQuIE90aGVyd2lzZSBpdCdzIGltcG9zc2libGUgdG8gZGV0ZWN0IGZvciB3aGljaAoJICBwYWQgdGhlIHRhZ3Mgd2VyZSBmb3VuZCB3aXRob3V0IGFkZGluZyBhbiBldmVudCBwcm9iZQoJICBvciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgcGFkLgoKMjAwOC0xMi0xNiAyMTozMzo1NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZmFxL2dlbmVyYWwueG1sOiBVcGRhdGUgdGhlIGZhcS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9mYXEvZ2VuZXJhbC54bWw6CgkgIFVwZGF0ZSB0aGUgZmFxLgoKMjAwOC0xMi0xNiAxNTo1MTo1MiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgUmVuYW1lIGFwaSBhZGRlZCBpbiBwcmV2aW91cyBjb21taXQgYW5kIGFkZCBzaW5jZSB0YWcgdG8gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnc2V0dGVyLmM6CgkgICogZ3N0L2dzdHRhZ3NldHRlci5oOgoJICBSZW5hbWUgYXBpIGFkZGVkIGluIHByZXZpb3VzIGNvbW1pdCBhbmQgYWRkIHNpbmNlIHRhZyB0byBkb2NzLgoJICBBUEk6IGdzdF90YWdfc2V0dGVyX3Jlc2V0X3RhZ3MoKQoKMjAwOC0xMi0xNiAxNDowNTo0MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQWRkIGZ1bmN0aW9uIHRvIHJlc2V0IHRhZ3NldHRlciBmb3IgZWxlbWVudCByZXVzZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnc2V0dGVyLmM6CgkgICogZ3N0L2dzdHRhZ3NldHRlci5oOgoJICBBZGQgZnVuY3Rpb24gdG8gcmVzZXQgdGFnc2V0dGVyIGZvciBlbGVtZW50IHJldXNlLgoJICBBUEk6IGdzdF90YWdfc2V0dGVyX2ZsdXNoKCkKCjIwMDgtMTItMTYgMDk6Mzc6NTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0LmM6IEF2b2lkIGNvcHkgb2YgZW1wdHkgdGFnbGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgQXZvaWQgY29weSBvZiBlbXB0eSB0YWdsaXN0LgoKMjAwOC0xMi0xNiAwOToyMzoyMSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgTW9yZSBjb21wbGV0ZSB1bml0IHRlc3RzLiBGaXggaGFuZGxpbmcgb2YgZW1wdHkgdGFnbGlzdHMgKHRoZXkgd2VyZSBub3QgbWVyZ2VkIGJlZm9yZSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZy5jOgoJICBNb3JlIGNvbXBsZXRlIHVuaXQgdGVzdHMuIEZpeCBoYW5kbGluZyBvZiBlbXB0eSB0YWdsaXN0cyAodGhleSB3ZXJlCgkgIG5vdCBtZXJnZWQgYmVmb3JlKS4KCjIwMDgtMTItMTYgMDc6MDc6MzYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC86IFVwZGF0ZSBHc3RUYWdTZXR0ZXIgYW5kIEdzdFRhZ01lcmdlTW9kZSBkb2N1bWVudGF0aW9uLiBNZW50aW9uIHRoYXQgdGFncyBjYW4gY29tZSBmcm9tIGV2ZW50cyBhbmQgZnJvbSBhcHBsaWNhdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzoKCSAgVXBkYXRlIEdzdFRhZ1NldHRlciBhbmQgR3N0VGFnTWVyZ2VNb2RlIGRvY3VtZW50YXRpb24uIE1lbnRpb24KCSAgdGhhdCB0YWdzIGNhbiBjb21lIGZyb20gZXZlbnRzIGFuZCBmcm9tIGFwcGxpY2F0aW9uLiBGaXggZXhhbXBsZS4KCjIwMDgtMTItMTUgMTU6Mjc6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OiBSZW1vdmUgdGhlIHNlcW51bSBlbnRyeSB0aGF0IHdlIGltcGxlbWVudGVkIGluIDAuMTAgYWxyZWFkeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgUmVtb3ZlIHRoZSBzZXFudW0gZW50cnkgdGhhdCB3ZSBpbXBsZW1lbnRlZCBpbiAwLjEwIGFscmVhZHkuCgkgIEFkZCBlbnRyeSBhYm91dCByZW1vdmluZyB0aGUgZm9ybWF0IHJldHVybiB2YWx1ZSBmb3IgcXVlcmllcy4KCjIwMDgtMTItMTUgMTI6NDc6NTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEV4cG9zZSB0aGUgcmVuZGVyLWRlbGF5IGFzIGEgcHJvcGVydHkgc28gdGhpbmdzIGxpa2UgYXBwc2luayBjYW4gdXNlIGl0IHRvIHR3ZWFrIHRoZSBzeW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NpbmtfaW5pdCksIChnc3RfYmFzZV9zaW5rX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wcm9wZXJ0eSk6CgkgIEV4cG9zZSB0aGUgcmVuZGVyLWRlbGF5IGFzIGEgcHJvcGVydHkgc28gdGhpbmdzIGxpa2UgYXBwc2luayBjYW4gdXNlIGl0CgkgIHRvIHR3ZWFrIHRoZSBzeW5jaHJvbmlzYXRpb24uCgoyMDA4LTEyLTEwIDE1OjE5OjQ1ICswMDAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6IEFsbG93IGNoZWNrIHRlc3RzIHRvIHVzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOiBBbGxvdyBjaGVjayB0ZXN0cyB0byB1c2UKCSAgTUFJTl9TVEFSVF9USFJFQURTKCkvTUFJTl9TVE9QX1RIUkVBRFMoKSBtdWx0aXBsZSB0aW1lcy4gQWxzbyBhbGxvd3MKCSAgQ0tfRk9SSz1ubyB0byBiZSB1c2VkIHdpdGggbXVsdGlwbGUgY2hlY2sgdGVzdCB0aGF0IHVzZSB0aHJlYWRzLgoKMjAwOC0xMi0wOSAxNjoyMzo1OCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEZpeCBhIGNhcHMgbWVtb3J5IGxlYWsgaW50cm9kdWNlZCBieSB0aGUgbGFzdCBjaGFuZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfZ2V0X2NvbXBhdGlibGVfcGFkKToKCSAgRml4IGEgY2FwcyBtZW1vcnkgbGVhayBpbnRyb2R1Y2VkIGJ5IHRoZSBsYXN0IGNoYW5nZS4KCjIwMDgtMTItMDkgMTU6NDU6MzYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3R1dGlscy5jOiBDaGVjayBpZiB0aGUgY2FwcyBvZiB0aGUgcGFkcyBhcmUgY29tcGF0aWJsZSBiZWZvcmUgcmV0dXJuaW5nIGEgcGFkIGFuZCBjbGFpbWluZyBpdCBpcyBjb21wYXRpYmxlLiBUaC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2dldF9jb21wYXRpYmxlX3BhZCk6CgkgIENoZWNrIGlmIHRoZSBjYXBzIG9mIHRoZSBwYWRzIGFyZSBjb21wYXRpYmxlIGJlZm9yZSByZXR1cm5pbmcKCSAgYSBwYWQgYW5kIGNsYWltaW5nIGl0IGlzIGNvbXBhdGlibGUuIFRoaXMsIGFtb25nIG90aGVyIHRoaW5ncywKCSAgZml4ZXMgYSBidWcgd2l0aCBnc3QtbGF1bmNoIHdoZXJlIGFuIGluY29tcGF0aWJsZSBwYWQgaXMgY2hvc2VuCgkgIGFuZCBsaW5raW5nIGZhaWxzLiBGaXhlcyBidWcgIzU0NDAwMy4KCjIwMDgtMTItMDkgMTQ6NDY6MjQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IFJldmVydCBhY2NpZGVudGlhbGx5IGNvbW1pdGVkIHBhdGNoIGZvciBidWcgIzQwNDYzMSB3aGljaCB0cmllcyB0byBwcmludCBhIGJhY2t0cmFjZSBpZiBhIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX2luaXQpOgoJICBSZXZlcnQgYWNjaWRlbnRpYWxseSBjb21taXRlZCBwYXRjaCBmb3IgYnVnICM0MDQ2MzEgd2hpY2gKCSAgdHJpZXMgdG8gcHJpbnQgYSBiYWNrdHJhY2UgaWYgYSB0ZXN0Y2FzZSBpcyB0ZXJtaW5hdGVkIGJ5CgkgIGEgc2lnbmFsLiBUaGlzIGNvZGUgd2FzIG5ldmVyIGFjdGl2YXRlZCBhcyB0aGUgY29ycmVzcG9uZGluZwoJICBjb25maWd1cmUuYWMgY2hhbmdlIHdhc24ndCBjb21taXR0ZWQuCgoyMDA4LTEyLTA5IDEwOjU4OjAxICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzogVGhpcyB0ZXN0IHNob3VsZCByZXR1cm4gVFJVRSBub3cgYXMgc3luY2luZyBhbiB1bmNvbnRyb2xsZWQgb2JqZWN0IHdpbGwgc3VjY2VlZCBub3cgKHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIFRoaXMgdGVzdCBzaG91bGQgcmV0dXJuIFRSVUUgbm93IGFzIHN5bmNpbmcgYW4gdW5jb250cm9sbGVkCgkgIG9iamVjdCB3aWxsIHN1Y2NlZWQgbm93ICh0aGVyZSdzIG5vdGhpbmcgdG8gc3luYykuCgoyMDA4LTEyLTA5IDA5OjU2OjI1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogQWdncmVnYXRlIHJldHVybiB2YWx1ZSBmb3IgZ3N0X2NvbnRyb2xsZXJfc3luY192YWx1ZXMoKS4gTW9yZSBpbmZvIGluIGxvZ2dpbmcuIEEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIEFnZ3JlZ2F0ZSByZXR1cm4gdmFsdWUgZm9yIGdzdF9jb250cm9sbGVyX3N5bmNfdmFsdWVzKCkuIE1vcmUgaW5mbyBpbgoJICBsb2dnaW5nLiBBbHdheXMgc2V0IHZhbHVlcyBvbiBmaXJzdCBzeW5jLWNhbGwuCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sc291cmNlLmM6CgkgIE1pY3Jvb3B0aW1pemF0aW9ucy4KCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOgoJICBGaXggcmV0dXJuIGNvZGUgYW5kIGNvbW1lbnQuCgoyMDA4LTEyLTA5IDA5OjAwOjU3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy9nc3QtbGF1bmNoLjEuaW46IEZpeCBkZXNjcmlwdGlvbiBvZiBob3cgdG8gc3BlY2lmeSBhIHR5cGUgaW4gY2Fwcy4gRml4ZXMgIzU1Mzg3My4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBGaXggZGVzY3JpcHRpb24gb2YgaG93IHRvIHNwZWNpZnkgYSB0eXBlIGluIGNhcHMuIEZpeGVzICM1NTM4NzMuCgkgIEFsc28gcmFuZ2VzIGFuZCBsaXN0IGNvbnRhaW4gdmFsdWVzIGFuZCBub3QgcHJvcGVydHktYXNzaWdubWVudHMuCgoyMDA4LTEyLTA4IDIyOjI4OjA1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzogQ2hlY2sgZm9yIGNoYW5nZWQgcGFkcy1saXN0IGJlZm9yZSBjaGVja2luZyB0aGUgbGFzdCByZXR1cm5lZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9oYW5kbGVfYnVmZmVyKToKCSAgQ2hlY2sgZm9yIGNoYW5nZWQgcGFkcy1saXN0IGJlZm9yZSBjaGVja2luZyB0aGUgbGFzdCByZXR1cm5lZAoJICBHc3RGbG93UmV0dXJuIGJlY2F1c2UgdGhlIHBhZCBjb3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBhbmQgd2UKCSAgbmVlZCB0byBpZ25vcmUgdGhlIHZhbHVlIGluIHRoYXQgY2FzZS4KCjIwMDgtMTItMDggMTg6MzU6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uKjogQWRkIHZtZXRob2QgdGhhdCBpcyBjYWxsZWQgYmVmb3JlIHdlIHN0YXJ0IHRoZSB0cmFuc2Zvcm0gYW5kIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRyYW5nZSksIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBBZGQgdm1ldGhvZCB0aGF0IGlzIGNhbGxlZCBiZWZvcmUgd2Ugc3RhcnQgdGhlIHRyYW5zZm9ybSBhbmQgd2hpY2ggY2FuCgkgIGJlIHVzZWQgdG8gY29uZmlndXJlIHRoZSB0cmFuc2Zvcm0sIHN1Y2ggYXMgZHluYW1pYyBwcm9wZXJ0aWVzLgoKMjAwOC0xMi0wNSAyMDozMjowMyArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0LmM6IFNlYXJjaCBmb3IgcGx1Z2lucyBvbiB3aW4zMiBiYXNlZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhlIGdzdHJlYW1lciBETEwuICBGaXhlcyAjNTQ4Nzg2CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgU2VhcmNoIGZvciBwbHVnaW5zIG9uIHdpbjMyIGJhc2VkIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGUKCSAgZ3N0cmVhbWVyIERMTC4gIEZpeGVzICM1NDg3ODYKCjIwMDgtMTItMDQgMjA6MTA6NDIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogQXBwYXJlbnRseSBBQ19DT05GSUdfTUFDUk9fRElSIGJyZWFrcyB3aGVuIHVzaW5nIG1vcmUgdGhhbiBvbmUgbWFjcm8gZGlyZWN0b3J5LCByZXZlcnRpbmcgbGFzdCBjaGFuZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQXBwYXJlbnRseSBBQ19DT05GSUdfTUFDUk9fRElSIGJyZWFrcyB3aGVuIHVzaW5nIG1vcmUKCSAgdGhhbiBvbmUgbWFjcm8gZGlyZWN0b3J5LCByZXZlcnRpbmcgbGFzdCBjaGFuZ2UuCgoyMDA4LTEyLTA0IDE5OjQ1OjA1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBjb25maWd1cmUuYWM6IFNldCBBQ19DT05GSUdfTUFDUk9fRElSIHRvIGNvbW1vbi9tNCB0byBwb2ludCBhdXRvY29uZiB0byBvdXIgTTQgbWFjcm9zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFNldCBBQ19DT05GSUdfTUFDUk9fRElSIHRvIGNvbW1vbi9tNCB0byBwb2ludCBhdXRvY29uZiB0bwoJICBvdXIgTTQgbWFjcm9zLgoKMjAwOC0xMS0yOSAxMzoyOToxNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgUmVxdWlyZSBnZXR0ZXh0IDAuMTcgYmVjYXVzZSBvbGRlciB2ZXJzaW9ucyBkb24ndCBtaXggd2l0aCBsaWJ0b29sIDIuMi4gQXQgYnVpbGQgdGltZSBhbiBvbGRlciBnZXR0ZXh0IHZlcnNpb24gd2lsbCBzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogQ3lnd2luIFBvcnRzIG1haW50YWluZXIKCSAgPHlzZWxrb3dpdHogYXQgdXNlcnMgZG90IHNvdXJjZWZvcmdlIGRvdCBuZXQ+CgkgICogYXV0b2dlbi5zaDoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFJlcXVpcmUgZ2V0dGV4dCAwLjE3IGJlY2F1c2Ugb2xkZXIgdmVyc2lvbnMgZG9uJ3QgbWl4IHdpdGggbGlidG9vbAoJICAyLjIuIEF0IGJ1aWxkIHRpbWUgYW4gb2xkZXIgZ2V0dGV4dCB2ZXJzaW9uIHdpbGwgc3RpbGwgd29yay4KCSAgRml4ZXMgYnVnICM1NTYwOTEuCgoyMDA4LTExLTI3IDExOjEyOjMwICswMDAwICDsnbTrrLjtmJUgPGl3aW5nc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cG9sbC5jOiBBZGRzIHN1cHBvcnQgZm9yIEZEX0NPTk5FQ1QgZXZlbnQgKHdpbjMyKS4gU2VlICM1NjIyNTguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTog7J2066y47ZiVIDxpd2luZ3MgYXQgZ21haWwgZG90IGNvbT4KCSAgKiBnc3QvZ3N0cG9sbC5jOiAoZ3N0X3BvbGxfZmRfY3RsX3dyaXRlKSwgKGdzdF9wb2xsX2ZkX2hhc19lcnJvcik6CgkgIEFkZHMgc3VwcG9ydCBmb3IgRkRfQ09OTkVDVCBldmVudCAod2luMzIpLiBTZWUgIzU2MjI1OC4KCjIwMDgtMTEtMjQgMjA6MDI6NTUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogVHVybiBjb21tZW50IGludG8gZ3RrLWRvYyBjb21tZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIFR1cm4gY29tbWVudCBpbnRvIGd0ay1kb2MgY29tbWVudC4KCjIwMDgtMTEtMjQgMTU6Mjc6NTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogUmV2ZXJ0IHF1aWNrIGFjY2VwY2FwcyBhdHRlbXB0LCBpdCdzIG5vdCBmdWxseSBlcXVpdmFsZW50IHRvIHRoZSBvbGQgYmVoYXZpb3VyIGFuZCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYWNjZXB0Y2Fwcyk6CgkgIFJldmVydCBxdWljayBhY2NlcGNhcHMgYXR0ZW1wdCwgaXQncyBub3QgZnVsbHkgZXF1aXZhbGVudCB0byB0aGUgb2xkCgkgIGJlaGF2aW91ciBhbmQgdGh1cyBjYXVzZXMgcmVncmVzc2lvbnMuCgoyMDA4LTExLTI0IDExOjU2OjQ0ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IEZpeCBtZW1vcnkgbGVhay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfdXJpX3NldF91cmkpOgoJICBGaXggbWVtb3J5IGxlYWsuCgoyMDA4LTExLTI0IDA5OjU5OjA3ICswMDAwICBTaW1vbiBIb2xtIFRow7hnZXJzZW4gPG9kaWVAY3MuYWF1LmRrPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmM6IFJlZHVjZSB0aGUgbnVtYmVyIG9mIHN0YXQoKSBjYWxscyBmb3IgZXZlcnkgZmlsZSBmcm9tIHRocmVlIHRpbWVzIHRvIG9uZSB0aW1lLiBGaXhlcyBidWcgIzU2MDM2MC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTaW1vbiBIb2xtIFRow7hnZXJzZW4gPG9kaWUgYXQgY3MgZG90IGFhdSBkb3QgZGs+CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfc2Nhbl9wYXRoX2xldmVsKToKCSAgUmVkdWNlIHRoZSBudW1iZXIgb2Ygc3RhdCgpIGNhbGxzIGZvciBldmVyeSBmaWxlIGZyb20gdGhyZWUgdGltZXMKCSAgdG8gb25lIHRpbWUuIEZpeGVzIGJ1ZyAjNTYwMzYwLgoKMjAwOC0xMS0yMiAxNTowOToyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBSZW5hbWUgYSB2YXJpYWJsZSB0byBtYWtlIHRoZSBjb2RlIGNsZWFyZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2FjY2VwdGNhcHMpOgoJICBSZW5hbWUgYSB2YXJpYWJsZSB0byBtYWtlIHRoZSBjb2RlIGNsZWFyZXIuCgoyMDA4LTExLTIxIDIwOjU3OjE2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IERvbid0IHdhcm5pbmcgb24gb2Zmc2V0PT0tMS4gVGFrZW4gZnJvbSBfY2hlY2tfaW1wZXJmZWN0X29mZnNldCgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkgIERvbid0IHdhcm5pbmcgb24gb2Zmc2V0PT0tMS4gVGFrZW4gZnJvbSBfY2hlY2tfaW1wZXJmZWN0X29mZnNldCgpLgoKMjAwOC0xMS0yMSAxODoyNjoxNCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IENoZWNrIGZvciBsb2NhbGhvc3QgaW4gVVJJIHdhcyBiYWNrd2FyZHMsIGZpeCBpdC4gRml4ZXMgdW5pdCB0ZXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgQ2hlY2sgZm9yIGxvY2FsaG9zdCBpbiBVUkkgd2FzIGJhY2t3YXJkcywgZml4IGl0LiBGaXhlcyB1bml0IHRlc3QuCgoyMDA4LTExLTIxIDE3OjE0OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEFkZCBiZWdpbm5pbmdzIG9mIGEgbW9yZSBvcHRpbWl6ZWQgYWNjZXB0Y2FwcyBmdW5jdGlvbiB0aGFuIHRoZSBkZWZhdWx0IGNvcmUgb25lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRjYXBzKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9maW5kX3RyYW5zZm9ybSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYWNjZXB0Y2FwcyksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0cmFuZ2UpOgoJICBBZGQgYmVnaW5uaW5ncyBvZiBhIG1vcmUgb3B0aW1pemVkIGFjY2VwdGNhcHMgZnVuY3Rpb24gdGhhbiB0aGUgZGVmYXVsdAoJICBjb3JlIG9uZS4KCjIwMDgtMTEtMjEgMTY6NDg6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IEF2b2lkIGdldHRpbmcgdGhlIGFjY2VwdGNhcHMgZnVuY3Rpb24gdG9vIGVhcmx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FjY2VwdF9jYXBzKToKCSAgQXZvaWQgZ2V0dGluZyB0aGUgYWNjZXB0Y2FwcyBmdW5jdGlvbiB0b28gZWFybHkuCgoyMDA4LTExLTIxIDA4OjA5OjAwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBNYWtlIGdzdC1sYXVuY2ggaGFuZGxlIExBVEVOQ1kgbWVzc2FnZXMgYW5kIG1ha2UgaXQgcmVjYWxjdWxhdGUgdGhlIGxhdGVuY3kuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApOgoJICBNYWtlIGdzdC1sYXVuY2ggaGFuZGxlIExBVEVOQ1kgbWVzc2FnZXMgYW5kIG1ha2UgaXQgcmVjYWxjdWxhdGUgdGhlCgkgIGxhdGVuY3kuCgoyMDA4LTExLTIwIDIxOjA1OjE0ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogVXNlIGdfZmlsZW5hbWVfZnJvbV91cmkoKSBmb3IgVVJJIHBhcnNpbmcgaW4gZmlsZXNyYyByYXRoZXIgdGhhbiByb2xsaW5nIG91dCBvd24gc2xpZ2guLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkgIFVzZSBnX2ZpbGVuYW1lX2Zyb21fdXJpKCkgZm9yIFVSSSBwYXJzaW5nIGluIGZpbGVzcmMgcmF0aGVyIHRoYW4gcm9sbGluZwoJICBvdXQgb3duIHNsaWdodGx5IGluY29ycmVjdCB2ZXJzaW9uLiBGaXhlcyB1c2Ugb2Ygc29tZSBwYXRocyBvbgoJICB3aW4zMi4KCjIwMDgtMTEtMjAgMjA6NDQ6NTYgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBJbiB3aW4zMiBjb2RlcGF0aCwgaWYgd2UgZmFpbCB0byB3cml0ZSB0aGUgcmVnaXN0cnksIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciBpdCBhbmQgdHJ5IGFnYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgSW4gd2luMzIgY29kZXBhdGgsIGlmIHdlIGZhaWwgdG8gd3JpdGUgdGhlIHJlZ2lzdHJ5LCBjcmVhdGUgdGhlCgkgIGRpcmVjdG9yeSBmb3IgaXQgYW5kIHRyeSBhZ2FpbiwgbWF0Y2hpbmcgdGhlIGJlaGF2aW91ciBpbiBub24td2luMzIKCSAgY29kZXBhdGhzLgoKMjAwOC0xMS0yMCAxNDoyMzowNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogQ2hhbmdpbmcgdGhlIHJlbmRlciBkZWxheSBjaGFuZ2VzIHRoZSBsYXRlbmN5IGFuZCBzbyB3ZSBtdXN0IHBvc3QgYSBsYXRlbmN5IG1lc3NhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfc2V0X3JlbmRlcl9kZWxheSk6CgkgIENoYW5naW5nIHRoZSByZW5kZXIgZGVsYXkgY2hhbmdlcyB0aGUgbGF0ZW5jeSBhbmQgc28gd2UgbXVzdCBwb3N0IGEKCSAgbGF0ZW5jeSBtZXNzYWdlLgoKMjAwOC0xMS0yMCAxMDozNTo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RxdWVyeS4qOiBBZGQgR3N0UXVlcnlUeXBlIGZvciBjdXN0b20gcXVlcmllcyBpbnN0ZWFkIG9mIGhhdmluZyB0byB1c2UgdGhlIG5vdC1zby12ZXJ5LWNvbnZlbmllbnQgcmVnaXN0cmF0aW9uIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cXVlcnkuYzoKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgQWRkIEdzdFF1ZXJ5VHlwZSBmb3IgY3VzdG9tIHF1ZXJpZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gdXNlIHRoZQoJICBub3Qtc28tdmVyeS1jb252ZW5pZW50IHJlZ2lzdHJhdGlvbiBpbmZyYXN0cnVjdHVyZSB0byByZWdpc3RlciBuZXcKCSAgdHlwZXMuCgoyMDA4LTExLTE5IDEyOjIwOjAzICswMDAwICBBbmRyZXcgRmVyZW4gPGFjZmVyZW5AeWFob28uY29tPgoKCSAgZ3N0L2dzdG9iamVjdC5jOiBVbnJlZiB0aGUgR0VudW1DbGFzcyBhZnRlciB1c2FnZSBhZ2Fpbi4gRml4ZXMgYnVnICM1NjE1MDEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogQW5kcmV3IEZlcmVuIDxhY2ZlcmVuIGF0IHlhaG9vIGRvdCBjb20+CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9kZWZhdWx0X2RlZXBfbm90aWZ5KToKCSAgVW5yZWYgdGhlIEdFbnVtQ2xhc3MgYWZ0ZXIgdXNhZ2UgYWdhaW4uIEZpeGVzIGJ1ZyAjNTYxNTAxLgoKMjAwOC0xMS0xOSAxMjowNjo0MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uKjogQWRkIGRvLWxhdGVuY3kgc2lnbmFsIHdpdGggdGhlIG9sZCBkZWZhdWx0IGZhbGxiYWNrIGltcGxlbWVudGF0aW9uLiBUaGlzIGFsbG93cyBmb3IgY3VzdG9tIGxhdGVuY3kgY2FsYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChfZ3N0X2Jvb2xlYW5fYWNjdW11bGF0b3IpLCAoZ3N0X2Jpbl9jbGFzc19pbml0KSwKCSAgKGdzdF9iaW5fcmVjYWxjdWxhdGVfbGF0ZW5jeSksIChnc3RfYmluX2RvX2xhdGVuY3lfZnVuYyksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgIEFkZCBkby1sYXRlbmN5IHNpZ25hbCB3aXRoIHRoZSBvbGQgZGVmYXVsdCBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbi4gVGhpcwoJICBhbGxvd3MgZm9yIGN1c3RvbSBsYXRlbmN5IGNhbGN1bGF0aW9ucyBmb3Igd2hlbiB0aGUgZGVmYXVsdCBpcyBub3QKCSAgc3VmZmljaWVudC4KCSAgQVBJOiBHc3RCaW46OmRvLWxhdGVuY3kgc2lnbmFsLgoKMjAwOC0xMS0xOCAxMzozNjoyOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBBZGQgbmV3IHN5bWJvbHMgdG8gLmRlZiBmaWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBzeW1ib2xzIHRvIC5kZWYgZmlsZS4KCjIwMDgtMTEtMTggMDk6NTg6MzMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgbWV0aG9kIHRvIHJlY2FsY3VsYXRlIGFuZCByZWRpc3RyaWJ1dGUgdGhlIGxhdGVuY3kgb24gYSBiaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9yZWNhbGN1bGF0ZV9sYXRlbmN5KSwKCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpOgoJICAqIGdzdC9nc3RiaW4uaDoKCSAgQWRkIG1ldGhvZCB0byByZWNhbGN1bGF0ZSBhbmQgcmVkaXN0cmlidXRlIHRoZSBsYXRlbmN5IG9uIGEgYmluLgoJICBBUEk6IGdzdF9iaW5fcmVjYWxjdWxhdGVfbGF0ZW5jeSgpLgoKMjAwOC0xMS0xOCAwOTo1Mjo0MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuaDogRG9jdW1lbnQgdGhlIGZyZWVfZnVuYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICBEb2N1bWVudCB0aGUgZnJlZV9mdW5jLgoKMjAwOC0xMS0xNyAyMTo0MzowNiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IFVzZSBnc3RfZ3VpbnQ2NF90b19nZG91YmxlIGluc3RlYWQgb2YgZ3N0X3V0aWxfZ3VpbnQ2NF90b19nZG91YmxlIGFzIGl0IGlzIG1hcHBlZCB0byBhIGNhc3Qgb24gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0bGZvY29udHJvbHNvdXJjZS5jOgoJICBVc2UgZ3N0X2d1aW50NjRfdG9fZ2RvdWJsZSBpbnN0ZWFkIG9mIGdzdF91dGlsX2d1aW50NjRfdG9fZ2RvdWJsZQoJICBhcyBpdCBpcyBtYXBwZWQgdG8gYSBjYXN0IG9uIG5vbi13aW4zMiBwbGF0Zm9ybXMuCgoyMDA4LTExLTE3IDIxOjQxOjM1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyLzogS2VlcCBsYXN0LXZhbHVlIGFuZCBvbmx5IGNhbGwgc2V0X3Byb3BlcnR5IGlmIHZhbHVlIGhhcyBjaGFuZ2VkLiBUaGlzIHN1cHJlc3NlcyBhbGwgdGhlIGdfb2JqZWMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVycHJpdmF0ZS5oOgoJICBLZWVwIGxhc3QtdmFsdWUgYW5kIG9ubHkgY2FsbCBzZXRfcHJvcGVydHkgaWYgdmFsdWUgaGFzIGNoYW5nZWQuIFRoaXMKCSAgc3VwcmVzc2VzIGFsbCB0aGUgZ19vYmplY3Rfbm90aWZpZXMgd2Ugd291bGQgdHJpZ2dlciBvdGhlcndpc2UuIEl0CgkgIGFsc28gYWxsb3dzIHRoZSB1c2VyIHRvIGNoYWdlIHRoZSB2YWx1ZSB3aGlsZSB0aGVyZSBpcyBubyBjb250cm9sbGVyCgkgIGNoYW5nZS4KCjIwMDgtMTEtMTcgMjE6MjU6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBEb24ndCBjcmFzaCBpZiBlaXRoZXIgb2YgdGhlIHN0cmluZyBHVmFsdWVzIGlzIGVtcHR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzoKCSAgRG9uJ3QgY3Jhc2ggaWYgZWl0aGVyIG9mIHRoZSBzdHJpbmcgR1ZhbHVlcyBpcyBlbXB0eS4KCjIwMDgtMTEtMTcgMTU6NDg6MTQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRvb2xzL2dzdC1pbnNwZWN0LmMgKHByaW50X2FsbF91cmlfaGFuZGxlcnMpOiBOZXcgZnVuY3Rpb24sIHByaW50cyBhIHN1bW1hcnkgb2Ygd2hhdCBVUkkgc2NoZW1lcyBhcmUgc3VwcG9ydGVkIGJ5IHdoYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwOC0xMS0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jIChwcmludF9hbGxfdXJpX2hhbmRsZXJzKTogTmV3IGZ1bmN0aW9uLAoJICBwcmludHMgYSBzdW1tYXJ5IG9mIHdoYXQgVVJJIHNjaGVtZXMgYXJlIHN1cHBvcnRlZCBieSB3aGF0CgkgIGVsZW1lbnRzLgoJICAobWFpbik6IFBsdW1iIGluIHN1cHBvcnQgZm9yIC0tdXJpLWhhbmRsZXJzIG9yIC11LCBhbmQgZml4IHRoZQoJICBhcmdjIGNoZWNrIGZvciAtYSBhbmQgLXUuCgoyMDA4LTExLTE3IDA0OjQ5OjA2ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0dXRpbHMuaDogQWRkIEdfR05VQ19QVVJFIHRvIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSogYW5kIHRoZSBkb3VibGU8LT51aW50NjQgY29udmVyc2lvbiBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBZGQgR19HTlVDX1BVUkUgdG8gZ3N0X3V0aWxfdWludDY0X3NjYWxlKiBhbmQgdGhlIGRvdWJsZTwtPnVpbnQ2NAoJICBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KCjIwMDgtMTEtMTMgMTg6MDk6NDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmM6IEF2b2lkIGNvc3RseSB0eXBlY2hlY2tpbmcgZm9yIHRyaXZpYWxseSBjb3JyZWN0IHBvaW50ZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX2ZpbmFsaXplKToKCSAgQXZvaWQgY29zdGx5IHR5cGVjaGVja2luZyBmb3IgdHJpdmlhbGx5IGNvcnJlY3QgcG9pbnRlcnMuCgkgICogZ3N0L2dzdHBvbGwuYzogKGdzdF9wb2xsX3dhaXQpOgoJICBBZGQgc29tZSBHX0xJS0VMWSBoZXJlIGFuZCB0aGVyZS4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzogKGdzdF9hZGFwdGVyX3B1c2gpOgoJICBBZGQgc29tZSBkZWJ1ZyBpbmZvLgoKMjAwOC0xMS0xMyAxODowNTo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvcmFuZG9tL3d0YXkvcG9sbC10aW1lb3V0OiBTbWFsbCB0d2Vha3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL3d0YXkvcG9sbC10aW1lb3V0OgoJICBTbWFsbCB0d2Vha3MuCgoyMDA4LTExLTEzIDE4OjAzOjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvb2xkL3Rlc3RzdWl0ZS86IFJlbW92ZSByZWZlcmVuY2VzIHRvIGRlcHJlY2F0ZWQgQVBJIGdfbWVtX2NodW5rKi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9jYXBzL2ludGVyc2VjdGlvbi5jOiAobWFpbik6CgkgICogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9wbHVnaW4vbG9hZGluZy5jOiAobWFpbik6CgkgIFJlbW92ZSByZWZlcmVuY2VzIHRvIGRlcHJlY2F0ZWQgQVBJIGdfbWVtX2NodW5rKi4KCSAgRml4ZXMgIzU2MDQ0Mi4KCjIwMDgtMTEtMTIgMTY6NTU6MDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBBZGQgLS1wbHVnaW4gb3B0aW9uLiBGaXhlcyAjNTYwMzAxLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAobWFpbik6CgkgIEFkZCAtLXBsdWdpbiBvcHRpb24uIEZpeGVzICM1NjAzMDEuCgoyMDA4LTExLTEyIDEyOjQ1OjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9yYW5kb20vd3RheS9wb2xsLXRpbWVvdXQ6IFF1aWNrIGJyYWluZHVtcCBmb3IgYSBwb3NzaWJsZSAobm90IHRvdGFsbHkgdmVyaWZpZWQpIGF0b21pYyBjYXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS93dGF5L3BvbGwtdGltZW91dDoKCSAgUXVpY2sgYnJhaW5kdW1wIGZvciBhIHBvc3NpYmxlIChub3QgdG90YWxseSB2ZXJpZmllZCkgYXRvbWljIGNhc2UuCgoyMDA4LTExLTEyIDEwOjM5OjI1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuKjogRG9uJ3Qgd3JpdGUgYW5kIGNoZWNrIGEgQ1JDIGZvciB0aGUgYmluYXJ5IHJlZ2lzdHJ5IGZpbGUuIEl0J3MgZ3VhcmFudGVlZCB0aGF0IHRoZSByZWdpc3RyeSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlX2NodW5rKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfaW5pdGlhbGl6ZV9tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlX2NhY2hlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfY2hlY2tfbWFnaWMpOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5oOgoJICBEb24ndCB3cml0ZSBhbmQgY2hlY2sgYSBDUkMgZm9yIHRoZSBiaW5hcnkgcmVnaXN0cnkgZmlsZS4gSXQncwoJICBndWFyYW50ZWVkIHRoYXQgdGhlIHJlZ2lzdHJ5IGlzIGNvbXBsZXRlbHkgd3JpdHRlbiAoaXQncyBmaXJzdCB3cml0dGVuCgkgIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gbW92ZWQpIGFuZCBpZiB0aGUgcmVnaXN0cnkgd2FzIGNvcnJ1cHRlZAoJICBieSBzb21lIGhhcmR3YXJlIGZhaWx1cmUgd2Ugd291bGQgaGF2ZSBiaWdnZXIgcHJvYmxlbXMuCgkgIEJ1bXAgYmluYXJ5IHJlZ2lzdHJ5IHZlcnNpb24gdG8gMC4xMC4yMS4xIGZvciB0aGlzIGFzIGl0J3MgYW4KCSAgaW5jb21wYXRpYmxlIGNoYW5nZSBhbmQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlZ2lzdHJ5IGdldHMgcmVidWlsZAoJICBhZnRlciB0aGUgdXBkYXRlLgoJICBUaGlzIHNhdmVzIHNvbWUgbWlsbGlzZWNvbmRzIGZvciByZWFkaW5nL3dyaXRpbmcgdGhlIHJlZ2lzdHJ5LgoJICBGaXhlcyBidWcgIzU2MDM5OS4KCjIwMDgtMTEtMTEgMTQ6NTA6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL3JhbmRvbS93dGF5L3BvbGwtdGltZW91dDogU29tZSBwc2V1ZG8gY29kZSBmb3IgaG93IHdlIGNvdWxkIGltcGxlbWVudCBjbG9jayB0aW1lb3V0cyB3aXRoIEdzdFBvbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL3d0YXkvcG9sbC10aW1lb3V0OgoJICBTb21lIHBzZXVkbyBjb2RlIGZvciBob3cgd2UgY291bGQgaW1wbGVtZW50IGNsb2NrIHRpbWVvdXRzIHdpdGggR3N0UG9sbC4KCjIwMDgtMTEtMTAgMTM6NTY6NTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiBVcGRhdGUgQXV0aG9yIHN0cmluZyB0byBtYXRjaCBvdGhlcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgVXBkYXRlIEF1dGhvciBzdHJpbmcgdG8gbWF0Y2ggb3RoZXJzLgoKMjAwOC0xMS0wNiAxNTozNzoxNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBSZW9yZ2FuaXplIHNvbWUgbW9yZSwgYmUgbW9yZSBjb25zZXJ2YXRpdmUgd2l0aCB0aGUgR1NUX1RZUEVfQVJSQVkgbm90IGJlaW5nIGZpeGVkIGFuZCBpbmxpbmUgdGhlIHRyaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF90eXBlX2lzX2ZpeGVkKSwgKGdzdF92YWx1ZV9pc19maXhlZCk6CgkgIFJlb3JnYW5pemUgc29tZSBtb3JlLCBiZSBtb3JlIGNvbnNlcnZhdGl2ZSB3aXRoIHRoZSBHU1RfVFlQRV9BUlJBWSBub3QKCSAgYmVpbmcgZml4ZWQgYW5kIGlubGluZSB0aGUgdHJpdmlhbCBjaGVjay4KCjIwMDgtMTEtMDYgMTU6MDk6MzQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBDYWxsZ3JpbmQgbWljcm8gb3B0aW1pc2F0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2NvcHkpLCAoX2dzdF9jYXBzX2ZyZWUpLAoJICAoZ3N0X2NhcHNfbWVyZ2Vfc3RydWN0dXJlKSwgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUpLAoJICAoZ3N0X2NhcHNfY29weV9udGgpLCAoZ3N0X2NhcHNfc2V0X3NpbXBsZSksCgkgIChnc3RfY2Fwc19zZXRfc2ltcGxlX3ZhbGlzdCksIChnc3RfY2Fwc19pc19maXhlZCksCgkgIChnc3RfY2Fwc19pc19lcXVhbF9maXhlZCksIChnc3RfY2Fwc19pbnRlcnNlY3QpLAoJICAoZ3N0X2NhcHNfc3VidHJhY3QpLCAoZ3N0X2NhcHNfbm9ybWFsaXplKSwgKGdzdF9jYXBzX2RvX3NpbXBsaWZ5KSwKCSAgKGdzdF9jYXBzX3RvX3N0cmluZyk6CgkgIENhbGxncmluZCBtaWNybyBvcHRpbWlzYXRpb25zLgoJICBBdm9pZCBhcnJheSBib3VuZHMgY2hlY2tzIGFuZCBmb3JjZSBpbmxpbmUgb2YgdHJpdmlhbCBmdW5jdGlvbi4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X3NldF9uYW1lX2RlZmF1bHQpOgoJICAtMSBpcyBlcXVpdmFsZW50IHRvIGxldHRpbmcgZ2xpYiB0byB0aGUgc3RybGVuIGJ1dCB0aGVuIHRoZXJlIGlzIG1vcmUKCSAgcm9vbSBmb3Igb3B0aW1pc2F0aW9ucyBhbmQgaXQncyBub3Qgb3VyIGZhdWx0LgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfaWRfZW1wdHlfbmV3X3dpdGhfc2l6ZSk6CgkgIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGFycmF5LCB3ZSdyZSBjb29sLgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3R5cGVfaXNfZml4ZWQpLCAoZ3N0X3ZhbHVlX2lzX2ZpeGVkKToKCSAgVGhlIG1vc3QgY29tbW9uIF9pc19maXhlZCgpIGNoZWNrIGlzIGRvbmUgb24gZnVuZGFtZW50YWwgZ2xpYiBiYXNlCgkgIHR5cGVzIHNvIHdlIGNoZWNrIHRoaXMgZmlyc3QgaW5zdGVhZCBvZiBkb2luZyBhIGh1Z2UgYW1vdW50IG9mCgkgIHVzZWxlc3MgR1NUX1RZUEVfQVJSQVkgY2FsbHMuCgoyMDA4LTExLTA2IDEyOjAzOjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50Lmg6IEFkZCBhIFNLSVAgc2VlayBmbGFnIGZvciB1c2Ugd2l0aCBhZHZhbmNlZCB0cmlja21vZGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgQWRkIGEgU0tJUCBzZWVrIGZsYWcgZm9yIHVzZSB3aXRoIGFkdmFuY2VkIHRyaWNrbW9kZXMuCgkgIEFQSTogR3N0U2Vla0ZsYWdzOjpHU1RfU0VFS19GTEFHX1NLSVAKCjIwMDgtMTEtMDUgMTY6NTc6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IE5vIG5lZWQgdG8gbWVtc2V0LCB3ZSBjYW4gY2xlYXIgdGhlIHZhbHVlIG91cnNlbHZlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9pZF9lbXB0eV9uZXdfd2l0aF9zaXplKToKCSAgTm8gbmVlZCB0byBtZW1zZXQsIHdlIGNhbiBjbGVhciB0aGUgdmFsdWUgb3Vyc2VsdmVzLgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3R5cGVfaXNfZml4ZWQpLAoJICAoZ3N0X3ZhbHVlX2dldF9jb21wYXJlX2Z1bmMpOgoJICBTb21lIG9wdGltaXNhdGlvbnMgZnJvbSBhIGZldyBjYWxsZ3JpbmQgc2Vzc2lvbnM6CgkgIFdoZW4gY2hlY2tpbmcgaWYgYSB0eXBlIGlzIGZpeGVkLCBjaGVjayBmb3IgdHJpdmlhbCBmdW5kYW1lbnRhbCB0eXBlcwoJICBmaXJzdCBiZWZvcmUgY2hlY2tpbmcgdHlwZXMgZm9yIHdoaWNoIHdlIG5lZWQgdG8gZ2V0IHRoZSB0eXBlIGZvbGxvd2VkCgkgIGJ5IHRoZSBoZWF2eSBkdXR5IHR5cGUgY2hlY2tzLCB0aGlzIHJlZHVjZXMgdGhlIGFtb3VudCBvZgoJICBnX3R5cGVfZnVuZGFtZW50YWwoKSBjYWxscyBhIGxvdC4KCSAgV2hlbiBnZXR0aW5nIHRoZSBjb21wYXJlIGZ1bmN0aW9uLCBmaXJzdCBjaGVjayBmb3Igb3VyIHJlZ2lzdGVyZWQgdHlwZXMuCgkgIElmIHRoYXQgZmFpbHMsIGRvIHRoZSBoZWF2eSBkdXR5IGdfdHlwZV9pc19hKCkgY2hlY2tzLCByZWR1Y2VzIHRoZQoJICBhbW91bnQgb2YgZ190eXBlX2lzX2EoKSBjb25zaWRlcmFibHkuCgoyMDA4LTExLTA1IDExOjE3OjI0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogTXVtYmxlIHNvbWV0aGluZyBhYm91dCByZW1vdmluZyBHc3RYTUwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIE11bWJsZSBzb21ldGhpbmcgYWJvdXQgcmVtb3ZpbmcgR3N0WE1MLgoKMjAwOC0xMS0wNCAxODoxMDowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogR2V0IHRoZSBzZXFudW0gYmVmb3JlIHdlIGRpc3Bvc2UgdGhlIG1lc3NhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIEdldCB0aGUgc2VxbnVtIGJlZm9yZSB3ZSBkaXNwb3NlIHRoZSBtZXNzYWdlLgoKMjAwOC0xMS0wNCAxNjoxMDowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFJlZmVyIHRvIHRoZSBmcmFtZXN0ZXBwaW5nIGRvY3VtZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICBSZWZlciB0byB0aGUgZnJhbWVzdGVwcGluZyBkb2N1bWVudC4KCjIwMDgtMTEtMDQgMTU6NTY6NTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBDb3B5IHNlcW51bXMgZnJvbSBldmVudHMgdG8gbWVzc2FnZXMgc28gdGhhdCB0aGV5IGNhbiBhbGwgYmUgcmVsYXRlZCBiYWNrIHRvIGVhY2hvdGhlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2hhbmRsZV9hc3luY19zdGFydCksCgkgIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpLCAoZ3N0X2Jpbl9xdWVyeSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19yZW5kZXJfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3BlcmZvcm1fc2VlayksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCksIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKToKCSAgQ29weSBzZXFudW1zIGZyb20gZXZlbnRzIHRvIG1lc3NhZ2VzIHNvIHRoYXQgdGhleSBjYW4gYWxsIGJlIHJlbGF0ZWQKCSAgYmFjayB0byBlYWNob3RoZXIuCgoyMDA4LTExLTA0IDE1OjUyOjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBQcmludCB0aGUgbWVzc2FnZSBzZXFudW1zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgUHJpbnQgdGhlIG1lc3NhZ2Ugc2VxbnVtcy4KCjIwMDgtMTEtMDQgMTM6NTY6MzcgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jIChnc3RfdXRpbF9zZXFudW1fbmV4dCk6IFJlZmFjdG9yIGZvciBjbGFyaXR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwOC0xMS0wNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0dXRpbHMuYyAoZ3N0X3V0aWxfc2VxbnVtX25leHQpOiBSZWZhY3RvciBmb3IgY2xhcml0eS4KCSAgQWxzbyBhZGQgQVBJOiB0byBwcmV2aW91cyBjaGFuZ2Vsb2cgZW50cnkuCgoyMDA4LTExLTA0IDEyOjIyOjUzICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBBZGQgc2VxdWVuY2UgbnVtYmVycyB0byBldmVudHMgYW5kIG1lc3NhZ2VzLiBTZWUgIzU1OTI1MC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDgtMTEtMDQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgIEFkZCBzZXF1ZW5jZSBudW1iZXJzIHRvIGV2ZW50cyBhbmQgbWVzc2FnZXMuIFNlZSAjNTU5MjUwLgoJICAqIGdzdC9nc3R1dGlscy5jIChnc3RfdXRpbF9zZXFudW1fbmV4dCwgZ3N0X3V0aWxfc2VxbnVtX2NvbXBhcmUpOgoJICBOZXcgZnVuY3Rpb25zLgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RldmVudC5jIChfZ3N0X2V2ZW50X2NvcHksIGdzdF9ldmVudF9uZXcpOiBJbml0aWFsaXplIG5ldwoJICBldmVudHMgd2l0aCBhIG5ldyBzZXF1ZW5jZSBudW1iZXIsIGFuZCBjb3B5IGl0IHdoZW4gY29weWluZy4KCSAgKGdzdF9ldmVudF9nZXRfc2VxbnVtLCBnc3RfZXZlbnRfc2V0X3NlcW51bSk6IEFjY2Vzc29ycyBmb3IgYW4KCSAgZXZlbnQncyBzZXF1ZW5jZSBudW1iZXIuCgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jIChfZ3N0X21lc3NhZ2VfY29weSwgZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSk6CgkgIChnc3RfZXZlbnRfZ2V0X3NlcW51bSwgZ3N0X2V2ZW50X3NldF9zZXFudW0pOiBBcyB3aXRoIGV2ZW50cywgc28KCSAgd2l0aCBtZXNzYWdlcy4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgbmV3IGZ1bmN0aW9ucyB0byB0aGUgZG9jcy4KCjIwMDgtMTEtMDQgMTE6NTU6MDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL21hbnVhbC86IFNvbWUgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFudWFsIGZpeGVzIHRoYW5rcyB0bwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1wb3NpdGlvbi54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWJpbnMueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1idXMueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1wYWRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9pbnRyby1nc3RyZWFtZXIueG1sOgoJICAqIGRvY3MvbWFudWFsL2ludHJvLXByZWZhY2UueG1sOgoJICBTb21lIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IE1hbnVhbCBmaXhlcyB0aGFua3MgdG8KCSAgQW5kcmV3IEZlcmVuLiBGaXhlcyAjNTU4NDU5LgoKMjAwOC0xMS0wMyAxMjoyOToxMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IERvbid0IGJvdGhlciB3aXRoIHRoZSBHVGltZXIgaWYgd2UgZG9uJ3Qgb3V0cHV0IHRoZSByZXN1bHRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgRG9uJ3QgYm90aGVyIHdpdGggdGhlIEdUaW1lciBpZiB3ZSBkb24ndCBvdXRwdXQgdGhlIHJlc3VsdHMuCgoyMDA4LTExLTAzIDEwOjU5OjQ5ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGxpYnMvZ3N0L25ldC9NYWtlZmlsZS5hbTogQWRkIFdJTjMyX0xJQlMgdG8gbGliZ3N0bmV0IExJQkFERC4gRml4ZXMgIzU1NzMwMC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBEYXZpZCBTY2hsZWVmICA8ZHNAc2NobGVlZi5vcmc+CgkgICogbGlicy9nc3QvbmV0L01ha2VmaWxlLmFtOgoJICBBZGQgV0lOMzJfTElCUyB0byBsaWJnc3RuZXQgTElCQURELiBGaXhlcyAjNTU3MzAwLgoKMjAwOC0xMC0zMSAxNTo1NDo0NCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IE9oIG15LCBzdHVkaXAsIHN0dXBpZCBtZS4gUmVtb3ZlIGRvdWJsZSBzdGF0KCkgY2FsbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIE9oIG15LCBzdHVkaXAsIHN0dXBpZCBtZS4gUmVtb3ZlIGRvdWJsZSBzdGF0KCkgY2FsbC4KCjIwMDgtMTAtMzEgMTQ6MjQ6NDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RwcmVzZXQuYzogVXNlIGdfdW5saW5rIGluc3RlYWQgb2YgdW5saW5rLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cHJlc2V0LmM6CgkgIFVzZSBnX3VubGluayBpbnN0ZWFkIG9mIHVubGluay4KCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIFVzZSBnbGliIHR5cGUuCgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIEFkZCBhIEZJWE1FOi4KCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICAqIGdzdC9nc3R0eXBlZmluZC5jOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBGb3JtYXR0aW5nICYgd2hpdGVzcGFjZXMuCgoyMDA4LTEwLTMxIDA4OjUzOjI3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IERvYyB0eXBvLiBVc2UgcmV0dXJuIHZhbHVlIG9mIHBhcmVudF9jbGFzcy0+ZXZlbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSAgRG9jIHR5cG8uIFVzZSByZXR1cm4gdmFsdWUgb2YgcGFyZW50X2NsYXNzLT5ldmVudC4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICBDaGFpbiB1cCBhdCB0aGUgZW5kIGZvciBjb25zaXN0ZW5jeS4KCjIwMDgtMTAtMzAgMTU6Mjk6NTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvOiBDaGFuZ2UgdG8geGluY2x1ZGUgYmFzZWQgYnVpbGQgLSBpdHMgZmFzdGVyIGFuZCBlYXNpZXIgdG8gbWFpbnRhaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvTWFrZWZpbGUuYW06CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3J1bm5pbmcueG1sOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgIENoYW5nZSB0byB4aW5jbHVkZSBiYXNlZCBidWlsZCAtIGl0cyBmYXN0ZXIgYW5kIGVhc2llciB0byBtYWludGFpbi4KCjIwMDgtMTAtMzAgMTQ6MTU6MTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC86IFVzZSBnX3VubGluaygpIGFzIG5vbmUgb2YgdGhlc2UgYXJlIGRpcmVjdG9yaWVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSAgVXNlIGdfdW5saW5rKCkgYXMgbm9uZSBvZiB0aGVzZSBhcmUgZGlyZWN0b3JpZXMuCgoyMDA4LTEwLTI5IDE3OjA0OjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmM6IFNvbWUgbW9yZSBjb21tZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfcHJvdmlkZV9jbG9ja19mdW5jKToKCSAgU29tZSBtb3JlIGNvbW1lbnRzLgoKMjAwOC0xMC0yNyAxNTowMjo0OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBJZiB3ZSBoYXZlIGEgZml4YXRlIGZ1bmN0aW9uLCBjYWxsIGl0IGV2ZW4gaWYgd2UgYWxyZWFkeSBoYXZlIGZpeGVkIGNhcHMgYmVjYXVzZSB0aC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9maW5kX3RyYW5zZm9ybSksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0cmFuZ2UpOgoJICBJZiB3ZSBoYXZlIGEgZml4YXRlIGZ1bmN0aW9uLCBjYWxsIGl0IGV2ZW4gaWYgd2UgYWxyZWFkeSBoYXZlIGZpeGVkIGNhcHMKCSAgYmVjYXVzZSB0aGUgc3ViY2xhc3MgbWlnaHQgYWRkIHNvbWUgY2Fwcy4gTWFrZXMgYXVkaW9jb252ZXJ0IGFkZCBhCgkgIGRlZmF1bHQgY2hhbm5lbCBsYXlvdXQuCgoyMDA4LTEwLTI0IDA5OjQxOjE5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IENsZWFyIHRoZSBvdXRwdXQgYnVmZmVyIHZhcmlhYmxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldHJhbmdlKToKCSAgQ2xlYXIgdGhlIG91dHB1dCBidWZmZXIgdmFyaWFibGUuCgkgIENsZWFudXBzIHRvIHRoZSBlcnJvciBwYXRoIGluIHRoZSBnZXRyYW5nZSBmdW5jdGlvbi4KCSAgRml4ZXMgIzU1NzY0OS4KCjIwMDgtMTAtMjMgMTI6NTI6NTggKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBVc2UgZ3N0X2J1ZmZlcl90cnlfbmV3X2FuZF9hbGxvYygpIGFuZCBoYW5kbGUgZXJyb3JzIGluc3RlYWQgb2YgdXNpbmcgZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKCkgdy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NyZWF0ZSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY3JlYXRlX3JlYWQpOgoJICBVc2UgZ3N0X2J1ZmZlcl90cnlfbmV3X2FuZF9hbGxvYygpIGFuZCBoYW5kbGUgZXJyb3JzIGluc3RlYWQgb2YKCSAgdXNpbmcgZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKCkgd2hpY2ggYWJvcnRzIGlmIHRoZSBidWZmZXIgY291bGRuJ3QKCSAgYmUgYWxsb2NhdGVkLgoKMjAwOC0xMC0yMyAwOTo0OTowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IFNldCB0aGUgbGFzdF9zdG9wIHRvIGEgbW9yZSBtZWFuaW5nZnVsIHBvc2l0aW9uIHdoZW4gY29uZmlndXJpbmcgdGhlIHNlZ21lbnQuIGllLiB0aGUgc3RhcnQvc3RvcCBvZi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc2V0X25ld3NlZ21lbnRfZnVsbCk6CgkgIFNldCB0aGUgbGFzdF9zdG9wIHRvIGEgbW9yZSBtZWFuaW5nZnVsIHBvc2l0aW9uIHdoZW4gY29uZmlndXJpbmcgdGhlCgkgIHNlZ21lbnQuIGllLiB0aGUgc3RhcnQvc3RvcCBvZiB0aGUgc2VnbWVudCBvciBjbGlwcGVkIGFnYWluc3QgdGhlCgkgIHVwZGF0ZWQgc2VnbWVudCBib3VuZGFyaWVzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCBzb21lIHVuaXQgdGVzdHMgZm9yIHRoZSBsYXN0X3N0b3AuCgoyMDA4LTEwLTIzIDA3OjExOjU0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzogVXNlIEdTVF8oUkVBRHxXUklURSlfKEZMT0FUfERPVUJMRSlfKExFfEJFKSBpbnN0ZWFkIG9mIG91ciBvd24gY29waWVzIG9mIHRoZW0uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5jOgoJICBVc2UgR1NUXyhSRUFEfFdSSVRFKV8oRkxPQVR8RE9VQkxFKV8oTEV8QkUpIGluc3RlYWQgb2Ygb3VyIG93bgoJICBjb3BpZXMgb2YgdGhlbS4KCjIwMDgtMTAtMjMgMDc6MDk6MjEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIEFQSTogTW92ZSBmbG9hdCBlbmRpYW5uZXNzIGNvbnZlcnNpb24gbWFjcm9zIGZyb20gbGliZ3N0ZmxvYXRjYXN0IHRvIGNvcmUgYXMgaXQncyB1c2VmdWwgaW4gZ2VuZXJhbCwgZXZlbiBpbiBjb3JlLiBGaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBUEk6IE1vdmUgZmxvYXQgZW5kaWFubmVzcyBjb252ZXJzaW9uIG1hY3JvcyBmcm9tIGxpYmdzdGZsb2F0Y2FzdAoJICB0byBjb3JlIGFzIGl0J3MgdXNlZnVsIGluIGdlbmVyYWwsIGV2ZW4gaW4gY29yZS4gRml4ZXMgYnVnICM1NTUxOTYuCgkgIFRoaXMgYWRkcyBHRE9VQkxFX0ZST01fQkUsIEdET1VCTEVfRlJPTV9MRSwgR0RPVUJMRV9UT19CRSwKCSAgR0RPVUJMRV9UT19MRSwgR0RPVUJMRV9TV0FQX0xFX0JFLCBHRkxPQVRfRlJPTV9CRSwgR0ZMT0FUX0ZST01fTEUsCgkgIEdGTE9BVF9UT19CRSwgR0ZMT0FUX1RPX0xFLCBHRkxPQVRfU1dBUF9MRV9CRS4KCSAgQWxzbyBhZGQgR1NUX1JFQURfIGFuZCBHU1RfV1JJVEVfIG1hY3JvcyBmb3IgZmxvYXRzIGFuZCBkb3VibGVzOgoJICBHU1RfUkVBRF9GTE9BVF9MRSwgR1NUX1JFQURfRkxPQVRfQkUsIEdTVF9SRUFEX0RPVUJMRV9MRSwKCSAgR1NUX1JFQURfRE9VQkxFX0JFLCBHU1RfV1JJVEVfRkxPQVRfTEUsIEdTVF9XUklURV9GTE9BVF9CRSwKCSAgR1NUX1dSSVRFX0RPVUJMRV9MRSwgR1NUX1dSSVRFX0RPVUJMRV9CRS4KCjIwMDgtMTAtMjIgMTQ6NDc6MDQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIEFQSTogQWRkIGdzdF9ieXRlX3JlYWRlcl9nZXRfZGF0YSBhbmQgZ3N0X2J5dGVfcmVhZGVyX3BlZWtfZGF0YSB0byBnZXQgYSBwb2ludGVyIHRvIHRoZSBkYXRhIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5jOiAoZ3N0X2J5dGVfcmVhZGVyX2dldF9kYXRhKSwKCSAgKGdzdF9ieXRlX3JlYWRlcl9wZWVrX2RhdGEpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgQVBJOiBBZGQgZ3N0X2J5dGVfcmVhZGVyX2dldF9kYXRhIGFuZCBnc3RfYnl0ZV9yZWFkZXJfcGVla19kYXRhCgkgIHRvIGdldCBhIHBvaW50ZXIgdG8gdGhlIGRhdGEgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIGhhdmUKCSAgYSBndWFyYW50ZWVkIHNpemUuCgoyMDA4LTEwLTIyIDE0OjI1OjE2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogRml4IGEgYnVnIGluIHRoZSBvdXRwdXQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc3VtbWFyeSB3aGVuIC0tZ3N0LWRpc2FibGUtcmVnaXN0cnkgaXMgc3VwcGxpZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBGaXggYSBidWcgaW4gdGhlIG91dHB1dCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdCBzdW1tYXJ5CgkgIHdoZW4gLS1nc3QtZGlzYWJsZS1yZWdpc3RyeSBpcyBzdXBwbGllZAoKMjAwOC0xMC0yMiAxMzo0NzoyMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBsaWJzL2dzdC9iYXNlLzogRml4IHRoZSBuYW1lcyBvZiAyIGZ1bmN0aW9ucyBpbiB0aGUgZG9jcyBzdHJpbmdzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJpdHJlYWRlci5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5jOgoJICBGaXggdGhlIG5hbWVzIG9mIDIgZnVuY3Rpb25zIGluIHRoZSBkb2NzIHN0cmluZ3MuCgoyMDA4LTEwLTIxIDE2OjMwOjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IFByb3RlY3Qgc2lua19hbGxvYyBjYXBzIHdpdGggdGhlIHNpbmtwYWQgbG9jayB0byBhdm9pZCBuYXN0eSBjYXBzIHJlZmNvdW50IHByb2JsZW1zLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZmZlciksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9zdWdnZXN0KToKCSAgUHJvdGVjdCBzaW5rX2FsbG9jIGNhcHMgd2l0aCB0aGUgc2lua3BhZCBsb2NrIHRvIGF2b2lkIG5hc3R5IGNhcHMKCSAgcmVmY291bnQgcHJvYmxlbXMgYXMgc2VlbiBpbiBiYW5zaGVlIGFuZCBtYXliZSBhbHNvIGluIGZhcnNpZ2h0Mi4KCSAgUmVtb3ZlIGF0b21pYyBpbnQgbm93IHRoYXQgd2UgbmVlZCB0byB0YWtlIHRoZSBsb2NrIGFueXdheXMuCgoyMDA4LTEwLTIwIDE1OjE4OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJbXBsZW1lbnQgbW9yZSBzZWVraW5nIGluIHB1bGwgbW9kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19kZWZhdWx0X2RvX3NlZWspLAoJICAoZ3N0X2Jhc2Vfc2lua19kZWZhdWx0X3ByZXBhcmVfc2Vla19zZWdtZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfcGVyZm9ybV9zZWVrKSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX2xhc3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb25fcGF1c2VkKSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBJbXBsZW1lbnQgbW9yZSBzZWVraW5nIGluIHB1bGwgbW9kZS4KCSAgVXNlIHBhZCBjb252ZXJ0IGZ1bmN0aW9ucyB0byBjb252ZXJ0IHBvc2l0aW9uIHRvIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LgoJICBGaXggcG9zaXRpb24vZHVyYXRpb24gcmVwb3J0aW5nIGluIHB1bGwgbW9kZS4KCSAgSW1wbGVtZW50IHBvc2l0aW9uIGFuZCBkdXJhdGlvbiByZXBvcnRpbmcgaW4gb3RoZXIgZm9ybWF0cyB0aGFuIHRpbWUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBBZGQgbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2Ygd2hlbiB0aGUgc2VnbWVudCBpcyBwbGF5aW5nLgoKMjAwOC0xMC0yMCAxMzozMjowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogV2hlbiB3ZSB1c2UgZ3N0X3BhZF9hbGxvY19idWZmZXIoKSB3aXRob3V0IHdhbnRpbmcgdG8gc2V0IHRoZSBjYXBzIHdlIGFsc28gZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpOgoJICBXaGVuIHdlIHVzZSBnc3RfcGFkX2FsbG9jX2J1ZmZlcigpIHdpdGhvdXQgd2FudGluZyB0byBzZXQgdGhlIGNhcHMgd2UKCSAgYWxzbyBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjYXBzIGFyZSBjb21wYXRpYmxlIGJlY2F1c2UgdGhlIGNhbGxlcgoJICBwcmVzdW1hYmx5IGlzIGdvaW5nIHRvIHBlcmZvcm0gaXRzIG93biBjdXN0b20gY2hlY2tzLiBGaXhlcyBzb21lIGNhc2VzCgkgIHdoZXJlIGJhc2V0cmFuc2Zvcm0gZWxlbWVudHMgd291bGQgZXJyb3Igb3V0IHdoZW4gaXQgd2FzIG5vdCBuZWVkZWQuCgoyMDA4LTEwLTIwIDEzOjI5OjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFVwZGF0ZSBjb21tZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspOgoJICBVcGRhdGUgY29tbWVudC4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9yZWNvbmZpZ3VyZSk6CgkgIEFkZCBzb21lIGRlYnVnIGluZm8uCgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBBZGQgbmV3IG1ldGhvZC4KCjIwMDgtMTAtMTkgMTk6NTc6MjUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZG9fc2Vlayk7CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZG9fc2Vlayk7CgkgIFJlbW92ZSBkdXBsaWNhdGVkIGFzc2lnbm1lbnQgYW5kIGxvZyBhIG1lc3NhZ2UgaW4gZmFpbHVyZSBjYXNlLgoKMjAwOC0xMC0xOSAxMDoxMzozOSArMDAwMCAgRGlnIEdlIDxkaWcuZ2UuY25AZ21haWwuY29tPgoKCSAgdGVzdHMvZXhhbXBsZXMvaGVsbG93b3JsZC9oZWxsb3dvcmxkLmM6IEZpeCBjb3B5J24ncGFzdGUgYnVnIGluIGhlbGxvIHdvcmxkIGV4YW1wbGUgKCM1NTY5MDApLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IERpZyBHZSA8ZGlnLmdlLmNuIGF0IGdtYWlsIGNvbT4KCSAgKiB0ZXN0cy9leGFtcGxlcy9oZWxsb3dvcmxkL2hlbGxvd29ybGQuYzogKG1haW4pOgoJICBGaXggY29weSduJ3Bhc3RlIGJ1ZyBpbiBoZWxsbyB3b3JsZCBleGFtcGxlICgjNTU2OTAwKS4KCjIwMDgtMTAtMTcgMTM6Mjc6NTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFF1ZXJ5IHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hlbiBhY3RpdmF0aW5nIHRoZSBwYWQgaW4gcHVsbCBtb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3BhZF9hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBRdWVyeSB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdoZW4gYWN0aXZhdGluZyB0aGUgcGFkIGluIHB1bGwgbW9kZS4KCSAgSW1wbGVtZW50IGR1cmF0aW9uIHF1ZXJ5IGluIHB1bGwgbW9kZSBieSB1c2luZyB0aGUgaW5zdGFsbGVkIHBhZCBjb252ZXJ0CgkgIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBieXRlcyB0byB0aGUgcmVxdWVzdGVkIGZvcm1hdC4KCjIwMDgtMTAtMTYgMTQ6MDk6MTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgbWV0aG9kIHRvIGNvbW1pdCB0aGUgc3RhdGUgaW4gc3ViY2xhc3Nlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2RvX3ByZXJvbGwpLAoJICAoZ3N0X2Jhc2Vfc2lua19mbHVzaF9zdGFydCksIChnc3RfYmFzZV9zaW5rX2ZsdXNoX3N0b3ApLAoJICAoZ3N0X2Jhc2Vfc2lua19ldmVudCksIChnc3RfYmFzZV9zaW5rX3BlcmZvcm1fc2VlayksCgkgIChnc3RfYmFzZV9zaW5rX2xvb3ApLCAoZ3N0X2Jhc2Vfc2lua19wYWRfYWN0aXZhdGVfcHVsbCksCgkgIChnc3RfYmFzZV9zaW5rX3NlbmRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgQWRkIG1ldGhvZCB0byBjb21taXQgdGhlIHN0YXRlIGluIHN1YmNsYXNzZXMuCgkgIFJlZmFjdG9yIHRoZSBmbHVzaF9zdGFydCBhbmQgZmx1c2hfc3RvcCBjb2RlIGJlY2F1c2Ugd2UgbmVlZCBpdCBmb3IKCSAgZmx1c2hpbmcgd2hpbGUgc2Vla2luZyB0b28uCgkgIEltcGxlbWVudCB0aGUgYmVnaW5uaW5ncyBvZiBzZWVraW5nIGluIHB1bGwgbW9kZS4KCSAgVXNlIHRoZSBzZWdtZW50IGxhc3Rfc3RvcCBmaWVsZCBmb3IgdGhlIHB1bGxpbmcgb2Zmc2V0LgoJICBGaXggdGhlIHBhdXNlIG1ldGhvZCBpbiBwdWxsIG1vZGUuCgkgIENvbmZpZ3VyZSB0aGUgc2VnbWVudCB0byBCWVRFUyBmb3IgcHVsbCBtb2RlLgoJICBBUEk6IEdzdEJhc2VTaW5rOjpnc3RfYmFzZV9zaW5rX2RvX3ByZXJvbGwoKQoKMjAwOC0xMC0xNiAxMzo1Njo1MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBVcGRhdGUgc29tZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KToKCSAgVXBkYXRlIHNvbWUgZG9jcy4KCjIwMDgtMTAtMTQgMTc6MTA6NDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cXVhcmsuYzogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1YXJrLmM6IChfcHJpdl9nc3RfcXVhcmtzX2luaXRpYWxpemUpOgoJICBGaXggcHJpbnRmIGZvcm1hdCB3YXJuaW5nLgoKMjAwOC0xMC0xNCAxMjozNDo1NiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzogRml4IGZsb3cgYWdncmVnYXRpb24gb2YgdGVlLiBFcnJvciBvdXQgaW1tZWRpYXRlbHkgZm9yIGFsbCBmbG93IHJldHVybnMgZXhjZXB0IE9LIGFuZCBOT1RfLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2hhbmRsZV9idWZmZXIpOgoJICBGaXggZmxvdyBhZ2dyZWdhdGlvbiBvZiB0ZWUuIEVycm9yIG91dCBpbW1lZGlhdGVseSBmb3IgYWxsIGZsb3cgcmV0dXJucwoJICBleGNlcHQgT0sgYW5kIE5PVF9MSU5LRUQsIHJldHVybiBOT1RfTElOS0VEIGlmIGFsbCBwYWRzIGFyZSBub3QgbGlua2VkCgkgIGFuZCByZXR1cm4gT0sgaWYgYXQgbGVhc3Qgb25lIHBhZCBpcyBsaW5rZWQuCgkgIEJlZm9yZSB3ZSBlcnJvcmVkIG91dCBvbiAiZmF0YWwiIGZsb3cgcmV0dXJucyAoaS5lLiBub3QgZm9yIFdST05HX1NUQVRFKQoJICBhbmQgb3RoZXJ3aXNlIHJldHVybmVkIHRoZSBmbG93IHJldHVybiBvZiB0aGUgbGFzdCBwYWQsIHdoaWNoIGlzIHdyb25nLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiAoX2Zha2VfY2hhaW4pLCAoX2Zha2VfY2hhaW5fZXJyb3IpLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAodGVlX3N1aXRlKToKCSAgQWRkIHVuaXQgdGVzdHMgZm9yIHRoZSBmbG93IGFnZ3JlZ2F0aW9uLgoKMjAwOC0xMC0xMyAxNzoxOToyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFJlbW92ZSBpdGVtIGZyb20gdGhlIHRvZG8gbGlzdCBiZWNhdXNlIGl0IHdhcyBmaXhlZCB3aXRoIHRoZSBsYXRlbmN5IHN0YXRlIGNoYW5nZSByZXdyaXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgUmVtb3ZlIGl0ZW0gZnJvbSB0aGUgdG9kbyBsaXN0IGJlY2F1c2UgaXQgd2FzIGZpeGVkIHdpdGggdGhlIGxhdGVuY3kKCSAgc3RhdGUgY2hhbmdlIHJld3JpdGVzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc2Vla2luZy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWdtZW50cy50eHQ6CgkgIFVwZGF0ZSBzb21lIGRvY3MuCgkgICogZ3N0L2dzdGV2ZW50LmM6IChnc3RfZXZlbnRfbmV3X25ld19zZWdtZW50X2Z1bGwpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX25ld19zZWdtZW50X2Z1bGwpLCAoZ3N0X2V2ZW50X25ld19idWZmZXJfc2l6ZSksCgkgIChnc3RfZXZlbnRfcGFyc2VfYnVmZmVyX3NpemUpLCAoZ3N0X2V2ZW50X25ld19xb3MpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX3FvcyksIChnc3RfZXZlbnRfbmV3X3NlZWspLAoJICAoZ3N0X2V2ZW50X3BhcnNlX3NlZWspLCAoZ3N0X2V2ZW50X25ld19sYXRlbmN5KSwKCSAgKGdzdF9ldmVudF9wYXJzZV9sYXRlbmN5KToKCSAgVXNlIHF1YXJrcyB0byBjb25zdHJ1Y3QgYW5kIHBhcnNlIGV2ZW50cy4KCSAgKiBnc3QvZ3N0cXVhcmsuYzogKF9wcml2X2dzdF9xdWFya3NfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHF1YXJrLmg6CgkgIEFkZCBzb21lIG1vcmUgcXVhcmtzIHRvIHRoZSB0YWJsZS4KCSAgRW1pdCBhIHdhcm5pbmcgd2hlbiB0aGUgcXVhcmsgdGFibGVzIGFyZSBub3QgaW4gc3luYy4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCBhbiBhc3NlcnQuCgoyMDA4LTEwLTEzIDE2OjQ3OjUxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwbHVnaW5zLzogRG9uJ3QgaW5zdGFsbCBzdGF0aWMgbGlicyBmb3IgcGx1Z2lucy4gRml4ZXMgIzU1MDg1MSBmb3IgY29yZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJICBEb24ndCBpbnN0YWxsIHN0YXRpYyBsaWJzIGZvciBwbHVnaW5zLiBGaXhlcyAjNTUwODUxIGZvciBjb3JlLgoKMjAwOC0xMC0xMyAxMDo1MDoxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidXMuYzogRml4IGRlYWRsb2NrLCBnX3NvdXJjZV9nZXRfaWQoKSBjYW5ub3QgYmUgY2FsbGVkIGluIGZpbmFsaXplLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3NvdXJjZV9maW5hbGl6ZSksCgkgIChnc3RfYnVzX2FkZF93YXRjaF9mdWxsX3VubG9ja2VkKSwgKGdzdF9idXNfYWRkX3dhdGNoX2Z1bGwpLAoJICAoZ3N0X2J1c19lbmFibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKSwKCSAgKGdzdF9idXNfZGlzYWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24pLAoJICAoZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoX2Z1bGwpLCAoZ3N0X2J1c19yZW1vdmVfc2lnbmFsX3dhdGNoKToKCSAgRml4IGRlYWRsb2NrLCBnX3NvdXJjZV9nZXRfaWQoKSBjYW5ub3QgYmUgY2FsbGVkIGluIGZpbmFsaXplLgoJICBLZWVwIHRyYWNrIG9mIHRoZSB3YXRjaCBzb3VyY2UgYnkga2VlcGluZyBhIHBvaW50ZXIgdG8gdGhlIHNvdXJjZSBvYmplY3QKCSAgaW5zdGVhZC4KCSAgVXNlIHRoZSBidXMgbG9jayB0byBwcm90ZWN0IGFjY2VzcyB0byB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudAoJICB3YXRjaCBzb3VyY2UuCgoyMDA4LTEwLTEzIDA5OjIyOjIyICswMDAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXJAdGVzdGVyLmNhPgoKCSAgZ3N0L2dzdGJ1cy5jOiBPbmx5IGFsbG93IG9uZSBidXMgd2F0Y2ggdG8gYmUgc2V0IGF0IGEgdGltZS4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgZGlzcGF0Y2hlciBwb3BzIHRoZSBtZXNzYWdlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBCYXNlIG9uIFBhdGNoIGJ5OiBPbGl2aWVyIENyZXRlIDx0ZXN0ZXIgYXQgdGVzdGVyIGRvdCBjYT4KCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3NvdXJjZV9maW5hbGl6ZSksCgkgIChnc3RfYnVzX2FkZF93YXRjaF9mdWxsKSwgKGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9mdWxsKToKCSAgT25seSBhbGxvdyBvbmUgYnVzIHdhdGNoIHRvIGJlIHNldCBhdCBhIHRpbWUuIFRoaXMgaXMgbmVjZXNzYXJ5CgkgIGJlY2F1c2UgdGhlIGRpc3BhdGNoZXIgcG9wcyB0aGUgbWVzc2FnZSBmcm9tIHRoZSBidXMgYW5kIHRoZSBzZWNvbmQKCSAgd2F0Y2hlciB3aWxsIHRoZW4gZ2V0IE5VTEwgb3IgdGhlIG5leHQgbWVzc2FnZSAoYW5kIHRoZSBmaXJzdCB3b24ndAoJICBnZXQgdGhpcyBuZXh0IG1lc3NhZ2UgdGhlbiwgZXRjKS4gSWYgbW9yZSB0aGFuIG9uZSAid2F0Y2hlciIgaXMKCSAgcmVxdWlyZWQgc2lnbmFsIHdhdGNoZXMgc2hvdWxkIGJlIHVzZWQuIEZpeGVzIGJ1ZyAjNTI2MDQ0LgoKMjAwOC0xMC0xMiAyMjoxNjowMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IENoYW5nZSB0aGUgcHJpbnRpbmcgb2YgdGhlICdidWZmZXJpbmcuLi4nIG91dHB1dCB0byBhdm9pZCBwdXR0aW5nIGEgXHIgaW4gYSB0cmFuc2xhdGVhYmxlIHN0cmluZyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBDaGFuZ2UgdGhlIHByaW50aW5nIG9mIHRoZSAnYnVmZmVyaW5nLi4uJyBvdXRwdXQgdG8gYXZvaWQgcHV0dGluZwoJICBhIFxyIGluIGEgdHJhbnNsYXRlYWJsZSBzdHJpbmcgKGZsYWdnZWQgYnkgdGhlIFRQKS4KCjIwMDgtMTAtMTAgMTU6Mzg6MDYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3R4bWwuYzogQ2xhcmlmeSB0aGF0IHRoZSBzYXZlX3RoeXNlbGYoKSBhbmQgcmVzdG9yZV90aHlzZWxmKCkgdmlydHVhbCBmdW5jdGlvbnMgb2YgR3N0T2JqZWN0IG5lZWQgdG8gYmUgb3ZlcnJpZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0eG1sLmM6CgkgIENsYXJpZnkgdGhhdCB0aGUgc2F2ZV90aHlzZWxmKCkgYW5kIHJlc3RvcmVfdGh5c2VsZigpIHZpcnR1YWwKCSAgZnVuY3Rpb25zIG9mIEdzdE9iamVjdCBuZWVkIHRvIGJlIG92ZXJyaWRlbiwgbm90CgkgIGdzdF9vYmplY3RfKHNhdmV8cmVzdG9yZSlfdGh5c2VsZigpIHdoaWNoIGlzIGltcG9zc2libGUuCgkgIEZpeGVzIGJ1ZyAjNTU1NzAwLgoKMjAwOC0xMC0xMCAxNToyNzozNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogUmV2ZXJ0IGEgcGF0Y2ggZnJvbSAyMSBtb250aHMgYWdvIHRoYXQgYnJva2UgY2FwcyBuZWdvdGlhdGlvbiBpbiBwdWxsIG1vZGUuIEJhc2ljYWxseSwgaGF2aW5nIGEgYnVmZmVyIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF9yYW5nZSksIChnc3RfcGFkX3B1bGxfcmFuZ2UpOgoJICBSZXZlcnQgYSBwYXRjaCBmcm9tIDIxIG1vbnRocyBhZ28gdGhhdCBicm9rZSBjYXBzIG5lZ290aWF0aW9uIGluIHB1bGwKCSAgbW9kZS4gQmFzaWNhbGx5LCBoYXZpbmcgYSBidWZmZXIgcGFzcyBvdmVyIGEgcGFkIHdpbGwgdHJpZ2dlciB0aGUKCSAgc2V0Y2FwcyBmdW5jdGlvbiB3aGVuIGNhcHMgY2hhbmdlLCBqdXN0IGxpa2UgaW4gcHVzaCBtb2RlLgoKMjAwOC0xMC0xMCAxNToxMjoxMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OiBVcGRhdGUgdGhlIGRvY3Mgc29tZSBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW5lZ290aWF0aW9uLnR4dDoKCSAgVXBkYXRlIHRoZSBkb2NzIHNvbWUgbW9yZS4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChoZWxwZXJfZmluZF9wZWVrKToKCSAgSWYgd2UgcHVsbCBhIGJ1ZmZlciB3aXRoIG5vbi10cml2aWFsIGNhcHMsIHN1Z2dlc3QgdGhvc2UgY2FwcyB3aXRoIHRoZQoJICBtYXggcHJvYmFiaWxpdHkuCgoyMDA4LTEwLTEwIDE0OjMxOjAzICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogQWRkIGFub3RoZXIgbGltaXRhdGlvbiBvZiBwYWQtYmxvY2tpbmcgd2l0aCBzZWdtZW50IHNlZWtzIG5vdCBwdXNoaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIEFkZCBhbm90aGVyIGxpbWl0YXRpb24gb2YgcGFkLWJsb2NraW5nIHdpdGggc2VnbWVudCBzZWVrcyBub3QgcHVzaGluZwoJICBFT1MgZXZlbnRzLgoKMjAwOC0xMC0xMCAxMzoyNDoxMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB3aW4zMi9jb21tb24vOiBBZGQgbmV3IHN5bWJvbHMgdG8gdGhlIHdpbjMyIGRlZnMgZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IHN5bWJvbHMgdG8gdGhlIHdpbjMyIGRlZnMgZmlsZXMKCjIwMDgtMTAtMTAgMTA6Mzg6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFRoZSBtZXNzYWdlIHNyYyBjYW4gYmUgTlVMTCwgZG9uJ3QgdHJ5IHRvIHByaW50IHRoZSBvYmplY3QgbmFtZXMgaW4gdGhhdCBjYXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKHVwZGF0ZV9kZWdyZWUpLAoJICAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgVGhlIG1lc3NhZ2Ugc3JjIGNhbiBiZSBOVUxMLCBkb24ndCB0cnkgdG8gcHJpbnQgdGhlIG9iamVjdCBuYW1lcyBpbiB0aGF0CgkgIGNhc2UuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19wYWRfYWN0aXZhdGUpOgoJICBBZGQgc29tZSBtb3JlIGRlYnVnIGluZm8uCgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzogKHJ1bl9waXBlbGluZSksCgkgIChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCBzb21lIGRlYnVnLgoJICBGaXggdGhlIHRlc3QsIHB1bGwgYmFzZWQgc2lua3MgZ28gQVNZTkMgdG8gUEFVU0VELCBqdXN0IGxpa2Ugb3RoZXIKCSAgc2NoZWR1bGluZyBtb2Rlcy4KCjIwMDgtMTAtMTAgMTA6MDE6MzYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LW5lZ290aWF0aW9uLnR4dDogU21hbGwgZG9jIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1uZWdvdGlhdGlvbi50eHQ6CgkgIFNtYWxsIGRvYyB1cGRhdGUuCgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19wYWRfZ2V0Y2FwcyksIChnc3RfYmFzZV9zaW5rX3BhZF9zZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3NpbmtfaW5pdCksIChnc3RfYmFzZV9zaW5rX3NldF9ibG9ja3NpemUpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfYmxvY2tzaXplKSwgKGdzdF9iYXNlX3Npbmtfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3NpbmtfbmVlZHNfcHJlcm9sbCksCgkgIChnc3RfYmFzZV9zaW5rX2xvb3ApLCAoZ3N0X2Jhc2Vfc2lua19wYWRfYWN0aXZhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19uZWdvdGlhdGVfcHVsbCksIChnc3RfYmFzZV9zaW5rX3BhZF9hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIEFkZCBibG9ja3NpemUgcHJvcGVydHkgYW5kIG1ldGhvZHMgdG8gY29udHJvbCB0aGUgYW1vdW50IG9mIGRhdGEKCSAgdG8gcHVsbC4KCSAgTmVnb3RpYXRlIGZpcnN0IGJlZm9yZSBhY3RpdmF0aW5nIHVwc3RyZWFtIGluIHB1bGwgbW9kZSBzbyB0aGF0IHRoZXkgY2FuCgkgIG5lZ290aWF0ZSB0aGVtc2VsdmVzLgoJICBXaGVuIHdlIG9wZXJhdGUgaW4gcHVsbCBtb2RlLCB3ZSBvbmx5IGFjY2VwdCB0aGUgY2FwcyB0aGF0IHdlCgkgIG5lZ290aWF0ZWQuCgkgIE1ha2UgdGhlIHNpbmsgZ28gQVNZTkMgdG8gUEFVU0VELCBsaWtlIGFsbCBvdGhlciBzaW5rcy4KCSAgQVBJOiBHc3RCYXNlU2luazo6Z3N0X2Jhc2Vfc2lua19zZXRfYmxvY2tzaXplKCkKCSAgQVBJOiBHc3RCYXNlU2luazo6Z3N0X2Jhc2Vfc2lua19nZXRfYmxvY2tzaXplKCkKCSAgQVBJOiBHc3RCYXNlU2luazo6YmxvY2tzaXplCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfd2FpdF9wbGF5aW5nKSwKCSAgKGdzdF9iYXNlX3NyY19zZXRfbGl2ZSksIChnc3RfYmFzZV9zcmNfaXNfbGl2ZSksCgkgIChnc3RfYmFzZV9zcmNfc2V0X2Zvcm1hdCksIChnc3RfYmFzZV9zcmNfcXVlcnlfbGF0ZW5jeSksCgkgIChnc3RfYmFzZV9zcmNfc2V0X2Jsb2Nrc2l6ZSksIChnc3RfYmFzZV9zcmNfZ2V0X2Jsb2Nrc2l6ZSksCgkgIChnc3RfYmFzZV9zcmNfc2V0X2RvX3RpbWVzdGFtcCksIChnc3RfYmFzZV9zcmNfZ2V0X2RvX3RpbWVzdGFtcCksCgkgIChnc3RfYmFzZV9zcmNfc2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3NyY19nZXRfcHJvcGVydHkpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBBZGQgdHlwZWNoZWNraW5nIGluIHB1YmxpYyBBUEkgZnVuY3Rpb25zLgoJICBBZGQgbWV0aG9kcyB0byBjb250cm9sIHRoZSBibG9ja3NpemUgaW4gc3ViY2xhc3Nlcy4KCSAgQVBJOiBHc3RCYXNlU3JjOjpnc3RfYmFzZV9zcmNfc2V0X2Jsb2Nrc2l6ZSgpCgkgIEFQSTogR3N0QmFzZVNyYzo6Z3N0X2Jhc2Vfc3JjX2dldF9ibG9ja3NpemUoKQoKMjAwOC0xMC0xMCAwOToxMToxMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiBXZSBub3cgc2VlIDMgZXZlbnRzIGdvIHRocm91Z2ggb3VyIHBhZCwgc2luY2UgYmFzZXNpbmsgbm93IHNlbmRzIHVwc3RyZWFtIGxhdGVuY3kgZXZlbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXRpbHMuYzogKHByb2JlX2RvX25vdGhpbmcpLCAoZGF0YV9wcm9iZSksCgkgIChidWZmZXJfcHJvYmUpLCAoZXZlbnRfcHJvYmUpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICBXZSBub3cgc2VlIDMgZXZlbnRzIGdvIHRocm91Z2ggb3VyIHBhZCwgc2luY2UgYmFzZXNpbmsgbm93IHNlbmRzCgkgIHVwc3RyZWFtIGxhdGVuY3kgZXZlbnRzLgoKMjAwOC0xMC0wOCAxNToyMToxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwaXBlbGluZS5jOiBSZWxlYXNlIHRoZSBvYmplY3QgbG9jayBiZWZvcmUgdHJ5aW5nIHRvIGZsdXNoIHRoZSBidXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSk6CgkgIFJlbGVhc2UgdGhlIG9iamVjdCBsb2NrIGJlZm9yZSB0cnlpbmcgdG8gZmx1c2ggdGhlIGJ1cy4KCjIwMDgtMTAtMDggMTQ6MjE6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEZvcndhcmQgTEFURU5DWSBldmVudHMgdXBzdHJlYW1zIHNvIHRoYXQgZWxlbWVudHMga25vdyBhYm91dCB0aGUgdG90YWwgcGlwZWxpbmUgbGF0ZW5jeS4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19zZW5kX2V2ZW50KToKCSAgRm9yd2FyZCBMQVRFTkNZIGV2ZW50cyB1cHN0cmVhbXMgc28gdGhhdCBlbGVtZW50cyBrbm93IGFib3V0IHRoZSB0b3RhbAoJICBwaXBlbGluZSBsYXRlbmN5LiBGaXhlcyAjNTU1MzA3LgoKMjAwOC0xMC0wOCAxMToyMDoxNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IEFsbG93IHRocm91Z2ggcXVlcmllcyB3aGVuIHdlIGRvbid0IGtub3cgaG93IGFzIG90aGVyd2lzZSBpdCdzIG5vdCBwb3NzaWJsZSB0byBxdWVyeSB0aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBBbGxvdyB0aHJvdWdoIHF1ZXJpZXMgd2hlbiB3ZSBkb24ndCBrbm93IGhvdwoJICB0byBhZGp1c3QgdGhlbSAobm90IFRJTUUgb3IgQllURVMpLCBhcyBvdGhlcndpc2UgaXQncwoJICBub3QgcG9zc2libGUgdG8gcXVlcnkgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gb3JkZXIKCSAgdG8gc2VlayBpbiBvdGhlciBmb3JtYXRzIGF0IGFsbC4KCjIwMDgtMTAtMDggMTE6MTI6MTUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgY2hhbmdlbG9nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjaGFuZ2Vsb2cKCjIwMDgtMTAtMDggMTE6MTE6MjUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IFBsYWNhdGUgZG9jIHBlbmRhbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwOC0xMC0wOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBQbGFjYXRlIGRvYyBwZW5kYW50cy4KCjIwMDgtMTAtMDggMTA6Mzk6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuKjogVW5icmVhayAtZ29vZCBidWlsZCwgcHJpdmF0ZSBpcyBhIHJlc2VydmVkIGMrKyBrZXl3b3JkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuaDoKCSAgVW5icmVhayAtZ29vZCBidWlsZCwgcHJpdmF0ZSBpcyBhIHJlc2VydmVkIGMrKyBrZXl3b3JkLgoKMjAwOC0xMC0wOCAxMDoxOToxMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLio6IEZpeCB1bmludGVuZGVkIEFQSSByZW1vdmFsOiByZS1hZGQgR1NUX0dIT1NUX1BBRF9DQVNUIHRvIHRoZSBoZWFkZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA4LTEwLTA4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5oIChHU1RfR0hPU1RfUEFEX0NBU1QpOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChHU1RfR0hPU1RfUEFEX0NBU1QpOiBGaXggdW5pbnRlbmRlZCBBUEkKCSAgcmVtb3ZhbDogcmUtYWRkIEdTVF9HSE9TVF9QQURfQ0FTVCB0byB0aGUgaGVhZGVyLgoKMjAwOC0xMC0wOCAxMDoxMjo0NSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmggKEdzdFByb3h5UGFkLCBHc3RQcm94eVBhZENsYXNzLCBHc3RHaG9zdFBhZCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDgtMTAtMDggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGdob3N0cGFkLmggKEdzdFByb3h5UGFkLCBHc3RQcm94eVBhZENsYXNzLCBHc3RHaG9zdFBhZCkKCSAgKEdzdEdob3N0UGFkQ2xhc3MpOiBQdWJsaWNhbGx5IGV4cG9zZSB0aGVzZSBzdHJ1Y3R1cmVzIHNvIGFzIHRvCgkgIGFsbG93IGVhc3kgc3ViY2xhc3NpbmcgZnJvbSBDLiBIaWRlIHRoZSBtZW1iZXIgZGF0YSBiZWhpbmQgYQoJICBwcml2YXRlIG9wYXF1ZSBkYXRhIHBvaW50ZXIuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IEFkYXB0IHRvIHN0b3JlIGluc3RhbmNlIGRhdGEgaW4gdGhlIHR5cGUKCSAgaW5zdGFuY2UncyBwcml2YXRlIGRhdGEgcmVnaW9uLCBub3QgaW4gdGhlIHB1YmxpYyBzdHJ1Y3QuCgoyMDA4LTEwLTA4IDEwOjA3OjE1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogSWYgd2UgY2FuJ3QgZ2V0IGEgY2FjaGUgZmlsZSBkb24ndCB0cnkgdG8gc2F2ZSBzb21ldGhpbmcgdG8gaXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZV9jYWNoZSk6CgkgIElmIHdlIGNhbid0IGdldCBhIGNhY2hlIGZpbGUgZG9uJ3QgdHJ5IHRvIHNhdmUgc29tZXRoaW5nIHRvIGl0LgoJICBEZXJlZmVyZW5jaW5nIE5VTEwgcG9pbnRlcnMgdXN1YWxseSBpc24ndCBhIGdvb2QgaWRlYS4KCjIwMDgtMTAtMDggMDg6NTQ6NTUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfZ2hvc3RfcGFkX2NvbnN0cnVjdCk6IElmIHdlIGdvdCBhIHRlbXBsYXRlIHZpYSBnX29iamVjdF9nZXQoKSwgYmUgc3VyZSB0byB1bnJlZiBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDgtMTAtMDggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGdob3N0cGFkLmMgKGdzdF9naG9zdF9wYWRfY29uc3RydWN0KTogSWYgd2UgZ290IGEKCSAgdGVtcGxhdGUgdmlhIGdfb2JqZWN0X2dldCgpLCBiZSBzdXJlIHRvIHVucmVmIGl0LgoJICAqIGdzdC9nc3RidWZmZXIuaCAoR1NUX0JVRkZFUl9GUkVFX0ZVTkMpOiBGaXggaW5jb3JyZWN0IGRvYy4KCjIwMDgtMTAtMDcgMTU6MTI6MjEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgdGVzdHMvY2hlY2svOiBBZGQgU3BhcmMgQUJJIGNoZWNrcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YWJpLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L3N0cnVjdF9zcGFyYy5oOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvbGlic2FiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvc3RydWN0X3NwYXJjLmg6CgkgIEFkZCBTcGFyYyBBQkkgY2hlY2tzCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIENhc3Qgc2lnbmVkIGludGVnZXIgdG8gdW5zaWduZWQgdG8gYXZvaWQgYSBjb21waWxlciB3YXJuaW5nLgoKMjAwOC0xMC0wNyAxMjoyNjo0MCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmM6IFVzZSBuZXcgR1NUX1JFQURfVUlOVDI0XyhMRXxCRSkgbWFjcm9zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzogKGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDI0X2xlKSwKCSAgKGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDI0X2JlKSwgKGdzdF9ieXRlX3JlYWRlcl9nZXRfaW50MjRfbGUpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX2dldF9pbnQyNF9iZSksIChnc3RfYnl0ZV9yZWFkZXJfcGVla191aW50MjRfbGUpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX3BlZWtfdWludDI0X2JlKSwgKGdzdF9ieXRlX3JlYWRlcl9wZWVrX2ludDI0X2xlKSwKCSAgKGdzdF9ieXRlX3JlYWRlcl9wZWVrX2ludDI0X2JlKToKCSAgVXNlIG5ldyBHU1RfUkVBRF9VSU5UMjRfKExFfEJFKSBtYWNyb3MuCgoyMDA4LTEwLTA3IDEyOjAwOjQ5ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBBbHdheXMgdXNlIHRoZSB1bmFsaWduZWQgdmFyaWFudHMgb2YgR1NUX1JFQURfVUlOVCogYW5kIEdTVF9XUklURV9VSU5UKiBhcyBpdCdzIHRvbyBlYXN5IHRvIGJyZWFrIHRoZSBJU08gQyBzdHJpY3QgYWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQWx3YXlzIHVzZSB0aGUgdW5hbGlnbmVkIHZhcmlhbnRzIG9mIEdTVF9SRUFEX1VJTlQqIGFuZCBHU1RfV1JJVEVfVUlOVCoKCSAgYXMgaXQncyB0b28gZWFzeSB0byBicmVhayB0aGUgSVNPIEMgc3RyaWN0IGFsaWFzaW5nIHJ1bGVzIHdpdGggc2ltcGxlCgkgIGNhc3RzIHRvIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgYW5kIHRoaXMgd291bGQgaW50cm9kdWNlIGhhcmQgdG8gZGVidWcKCSAgYnVncy4gRml4ZXMgYnVnICM1NDU3MTQuCgkgIEFQSTogQWRkIEdTVF9SRUFEX1VJTlQyNF8oTEV8QkUpIGFuZCBHU1RfV1JJVEVfVUlOVDI0XyhMRXxCRSkuCgoyMDA4LTEwLTA3IDA2OjU2OjExICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogQWRkICdTaW5jZScgYml0cyB0byBndGstZG9jIGNodW5rcyBmb3IgbmV3IEFQSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOiAoR1NUX0JVRkZFUl9GUkVFX0ZVTkMpOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X2dob3N0X3BhZF9jb25zdHJ1Y3QpOgoJICBBZGQgJ1NpbmNlJyBiaXRzIHRvIGd0ay1kb2MgY2h1bmtzIGZvciBuZXcgQVBJLgoKMjAwOC0xMC0wNiAyMTo1Mjo1NyArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IEZpeCBkb2N1bWVudGF0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEZpeCBkb2N1bWVudGF0aW9uCgoyMDA4LTEwLTA2IDE4OjAzOjU4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIGNoYW5nZWxvZywgZG9oCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjaGFuZ2Vsb2csIGRvaAoKMjAwOC0xMC0wNiAxODowMTo0MiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGJ1ZmZlci5oIChHU1RfQlVGRkVSX0ZSRUVfRlVOQyk6IE5ldyBBUEksIGEgZnJlZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWxsb2NfZGF0YSB0byBmcmVlIGl0LiBCLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA4LTEwLTA2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RidWZmZXIuaCAoR1NUX0JVRkZFUl9GUkVFX0ZVTkMpOiBOZXcgQVBJLCBhIGZyZWUgZnVuY3Rpb24KCSAgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFsbG9jX2RhdGEgdG8gZnJlZSBpdC4gQmFzaWNhbGx5IGEgd2F5CgkgIHRvIGF2b2lkIHN1YmNsYXNzaW5nIHdoZW4gYWxsIHlvdSBuZWVkIGlzIGEgZGlmZmVyZW50IGZyZWUKCSAgZnVuY3Rpb24sIGkuZS4gZnJlZSgpIGluc3RlYWQgb2YgZ19mcmVlKCkuCgkgICogZ3N0L2dzdGJ1ZmZlci5jIChnc3RfYnVmZmVyX2ZpbmFsaXplKTogRnJlZSBtYWxsb2NfZGF0YSB2aWEKCSAgY2FsbGluZyB0aGUgZnJlZSBmdW5jdGlvbi4KCSAgKGdzdF9idWZmZXJfaW5pdCk6IEluaXRpYWxpemUgdGhlIGZyZWUgZnVuY3Rpb24gdG8gZ19mcmVlLgoKMjAwOC0xMC0wNiAxNzo1NzoyNSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLio6IE5ldyBmdW5jdGlvbiwgZmluaXNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGdob3N0IHBhZC4gVXNlZnVsIGZvciBsYW5ndWFnZSBiaW5kaW5ncyBhbmQgc3ViY2xhc3NlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA4LTEwLTA2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5oOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfZ2hvc3RfcGFkX2NvbnN0cnVjdCk6IE5ldyBmdW5jdGlvbiwKCSAgZmluaXNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGdob3N0IHBhZC4gVXNlZnVsIGZvciBsYW5ndWFnZQoJICBiaW5kaW5ncyBhbmQgc3ViY2xhc3NlcnMgb2YgR3N0R2hvc3RQYWQuIEZpeGVzICM1MzkxMDguCgkgIChnc3RfZ2hvc3RfcGFkX25ld19mdWxsKTogVXNlIHRoZSBuZXcgY29uc3RydWN0b3IuCgoyMDA4LTEwLTA2IDE2OjE1OjAyICswMDAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXJAdGVzdGVyLmNhPgoKCSAgZ3N0L2dzdGJpbi5jOiBLZWVwIHRyYWNrIG9mIHBhZHMgdGhhdCBhcmUgYmVpbmcgbGlua2VkL3VubGlua2VkIGFuZCByZXN5bmMgdGhlIHN0YXRlIGNoYW5nZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBCYXNlIG9uIFBhdGNoIGJ5OiBPbGl2aWVyIENyZXRlIDx0ZXN0ZXIgYXQgdGVzdGVyIGRvdCBjYT4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2luaXQpLCAoZ3N0X2Jpbl9hZGRfZnVuYyksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKHVwZGF0ZV9kZWdyZWUpLAoJICAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25ldyksIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBLZWVwIHRyYWNrIG9mIHBhZHMgdGhhdCBhcmUgYmVpbmcgbGlua2VkL3VubGlua2VkIGFuZCByZXN5bmMgdGhlIHN0YXRlCgkgIGNoYW5nZXMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9nZXRfZGlyZWN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uKSwgKGdzdF9wYWRfc2V0X2dldHJhbmdlX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X2NoZWNrZ2V0cmFuZ2VfZnVuY3Rpb24pLCAoZ3N0X3BhZF91bmxpbmspLAoJICAoZ3N0X3BhZF9saW5rX3ByZXBhcmUpLCAoZ3N0X3BhZF9saW5rKSwKCSAgKGdzdF9wYWRfZXZlbnRfZGVmYXVsdF9kaXNwYXRjaCksIChnc3RfcGFkX2NoYWluKSwgKGdzdF9wYWRfcHVzaCksCgkgIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpLCAoZ3N0X3BhZF9nZXRfcmFuZ2UpLAoJICAoZ3N0X3BhZF9wdWxsX3JhbmdlKToKCSAgU29tZSBjb2RlIGNsZWFudXBzLCB1c2UgbWFjcm9zIHRvIGNoZWNrIHBhZCBkaXJlY3Rpb24uCgkgIERvbid0IG5lZWQgdG8gdGFrZSB0aGUgbG9jayBvbiB0aGUgcGFkIGRpcmVjdGlvbi4KCSAgUG9zdCBzdHJ1Y3R1cmUgY2hhbmdlIHdoZW4gcGFkcyBhcmUgbGlua2VkL3VubGlua2VkLgoJICBDaGFuZ2Ugc29tZSBjaGVja3MgaW50byBfcmV0dXJuX2lmX2ZhaWwoKS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgICh0ZXN0X2xpbmtfc3RydWN0dXJlX2NoYW5nZV9zdGF0ZV9jaGFuZ2VkX3N5bmNfY2IpLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2Jpbl9zdWl0ZSk6CgkgIEFkZCB0ZXN0Y2FzZSBmb3IgcGFkIGxpbmsvdW5saW5rZSByZXN5bmMgZHVyaW5nIGEgc3RhdGUgY2hhbmdlLgoJICBGaXhlcyAjNTEwMzU0LgoKMjAwOC0xMC0wNiAxNTozMTo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEltcGxlbWVudCBTVFJVQ1RVUkVfQ0hBTkdFRCBtZXNzYWdlcy4gVGhlc2UgbWVzc2FnZXMgd2lsbCBiZSB1c2VkIHRvIHNpZ25hbCB0aGUgcGFyZW50IGJpbiBvZiBsaW5rL3VubGluayBvcGVyYXRpb25zIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfc3RydWN0dXJlX2NoYW5nZSksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9zdHJ1Y3R1cmVfY2hhbmdlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBJbXBsZW1lbnQgU1RSVUNUVVJFX0NIQU5HRUQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIHdpbGwgYmUgdXNlZCB0bwoJICBzaWduYWwgdGhlIHBhcmVudCBiaW4gb2YgbGluay91bmxpbmsgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlcXVpcmUgYQoJICByZXN5bmMgd2hlbiBkb2luZyBhIHN0YXRlIGNoYW5nZS4gU2VlICMjNTEwMzU0LgoJICBBUEk6IGdzdF9tZXNzYWdlX25ld19zdHJ1Y3R1cmVfY2hhbmdlKCkKCSAgQVBJOiBnc3RfbWVzc2FnZV9wYXJzZV9zdHJ1Y3R1cmVfY2hhbmdlKCkKCjIwMDgtMTAtMDYgMTU6MjE6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cXVhcmsuKjogQWRkIHNvbWUgbW9yZSBxdWFya3MgZm9yIG5ldyBtZXNzYWdlLiBTZWUgIzUxMDM1NC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1YXJrLmM6CgkgICogZ3N0L2dzdHF1YXJrLmg6CgkgIEFkZCBzb21lIG1vcmUgcXVhcmtzIGZvciBuZXcgbWVzc2FnZS4gU2VlICM1MTAzNTQuCgoyMDA4LTEwLTA2IDEyOjU3OjM5ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiBhZGQgQVBJIHRhZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IGFkZCBBUEkgdGFnCgoyMDA4LTEwLTA2IDEyOjQxOjUzICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBBZGQgYml0IHJlYWRlciBhbmQgYnl0ZSByZWFkZXIgY2xhc3NlcywgaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gYW5kIGFuIGV4dGVuc2l2ZSB1bml0IHRlc3Qgc3VpdGUuIEZpeGVzIGJ1ZyAjNTUzNTU0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJpdHJlYWRlci5jOiAoZ3N0X2JpdF9yZWFkZXJfbmV3KSwKCSAgKGdzdF9iaXRfcmVhZGVyX25ld19mcm9tX2J1ZmZlciksIChnc3RfYml0X3JlYWRlcl9mcmVlKSwKCSAgKGdzdF9iaXRfcmVhZGVyX2luaXQpLCAoZ3N0X2JpdF9yZWFkZXJfaW5pdF9mcm9tX2J1ZmZlciksCgkgIChnc3RfYml0X3JlYWRlcl9zZXRfcG9zKSwgKGdzdF9iaXRfcmVhZGVyX2dldF9wb3MpLAoJICAoZ3N0X2JpdF9yZWFkZXJfZ2V0X3JlbWFpbmluZyksIChnc3RfYml0X3JlYWRlcl9za2lwKSwKCSAgKGdzdF9iaXRfcmVhZGVyX3NraXBfdG9fYnl0ZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiaXRyZWFkZXIuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJ5dGVyZWFkZXIuYzogKEdET1VCTEVfU1dBUF9MRV9CRSksCgkgIChHRkxPQVRfU1dBUF9MRV9CRSksIChnc3RfYnl0ZV9yZWFkZXJfbmV3KSwKCSAgKGdzdF9ieXRlX3JlYWRlcl9uZXdfZnJvbV9idWZmZXIpLCAoZ3N0X2J5dGVfcmVhZGVyX2ZyZWUpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX2luaXQpLCAoZ3N0X2J5dGVfcmVhZGVyX2luaXRfZnJvbV9idWZmZXIpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX3NldF9wb3MpLCAoZ3N0X2J5dGVfcmVhZGVyX2dldF9wb3MpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcpLCAoZ3N0X2J5dGVfcmVhZGVyX3NraXApLAoJICAoZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OCksIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X2ludDgpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX3BlZWtfdWludDgpLCAoZ3N0X2J5dGVfcmVhZGVyX3BlZWtfaW50OCksCgkgIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQyNF9sZSksIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQyNF9iZSksCgkgIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X2ludDI0X2xlKSwgKGdzdF9ieXRlX3JlYWRlcl9nZXRfaW50MjRfYmUpLAoJICAoZ3N0X2J5dGVfcmVhZGVyX3BlZWtfdWludDI0X2xlKSwgKGdzdF9ieXRlX3JlYWRlcl9wZWVrX3VpbnQyNF9iZSksCgkgIChnc3RfYnl0ZV9yZWFkZXJfcGVla19pbnQyNF9sZSksIChnc3RfYnl0ZV9yZWFkZXJfcGVla19pbnQyNF9iZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy9iaXRyZWFkZXIuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9iaXRfcmVhZGVyX3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2J5dGVyZWFkZXIuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9ieXRlX3JlYWRlcl9zdWl0ZSk6CgkgIEFkZCBiaXQgcmVhZGVyIGFuZCBieXRlIHJlYWRlciBjbGFzc2VzLCBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbgoJICBhbmQgYW4gZXh0ZW5zaXZlIHVuaXQgdGVzdCBzdWl0ZS4gRml4ZXMgYnVnICM1NTM1NTQuCgoyMDA4LTEwLTA2IDA4OjU4OjI1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJbXByb3ZlIHBvc2l0aW9uIHJlcG9ydGluZyB3aGlsZSBmbHVzaGluZyBhbmQgb3RoZXIgaW50ZXJtZWRpYXRlIHN0YXRlIGNoYW5nZXMuIEZpeGVzICM1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBJbXByb3ZlIHBvc2l0aW9uIHJlcG9ydGluZyB3aGlsZSBmbHVzaGluZyBhbmQgb3RoZXIgaW50ZXJtZWRpYXRlIHN0YXRlCgkgIGNoYW5nZXMuIEZpeGVzICM1NTM4NzQuCgoyMDA4LTEwLTA2IDA4OjQ1OjQyICswMDAwICBBbnRvaW5lIFRyZW1ibGF5IDxoZXhhMDBAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBGaXggc21hbGwgcmVmb3VudCBsZWFrIGluIGNhcHMgY29tcGF0aWJpbGl0eSBjaGVjay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBBbnRvaW5lIFRyZW1ibGF5IDxoZXhhMDAgYXQgZ21haWwgZG90IGNvbT4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2xpbmtfY2hlY2tfY29tcGF0aWJsZV91bmxvY2tlZCk6CgkgIE9yaWdpbmFsIHBhdGNoIGJ5IDogU2ltb24gRGVzY2FyaWVzCgkgIEZpeCBzbWFsbCByZWZvdW50IGxlYWsgaW4gY2FwcyBjb21wYXRpYmlsaXR5IGNoZWNrLgoJICBGaXhlcyAjNTUxNjc2LgoKMjAwOC0xMC0wNiAwNzozMDo1NyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtcmVxdWVzdC54bWw6IEZpeCAwLjggYXBpIHVzYWdlIGluIGV4YW1wbGUuIEZpeGVzICM1NTQ1NjEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtcmVxdWVzdC54bWw6CgkgIEZpeCAwLjggYXBpIHVzYWdlIGluIGV4YW1wbGUuIEZpeGVzICM1NTQ1NjEKCSAgKiBkb2NzL3B3Zy9hcHBlbmRpeC1wb3J0aW5nLnhtbDoKCSAgQ2hhbmdlIDAuOSB0byAwLjEwIGhlcmUuCgoyMDA4LTEwLTA2IDA3OjEzOjAyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL21hbnVhbC9iYXNpY3MtZGF0YS54bWw6IENoYW5nZSAiZXZlbnQtZXZlbnQgaW50ZXJhY3Rpb24iIHRvICJlbGVtZW50LWVsZW1lbnQgaW50ZXJhY3Rpb24iLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtZGF0YS54bWw6CgkgIENoYW5nZSAiZXZlbnQtZXZlbnQgaW50ZXJhY3Rpb24iIHRvICJlbGVtZW50LWVsZW1lbnQgaW50ZXJhY3Rpb24iLgoJICBGaXhlcyAjNTUyNDQ4LiBBbHNvIGZpeCBzYW1wbGUgY29kZSBmb3Igc2Vla2luZyBhbmQgZG8gbW9yZSAwLjgtPjAuMTAKCSAgdXBkYXRlcy4KCjIwMDgtMTAtMDUgMTA6MDE6NTAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBCYWNrIHRvIGRldmVsb3BtZW50IC0+IDAuMTAuMjEuMQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJhY2sgdG8gZGV2ZWxvcG1lbnQgLT4gMC4xMC4yMS4xCgo9PT0gcmVsZWFzZSAwLjEwLjIxID09PQoKMjAwOC0xMC0wMiAyMzo1OTo1MyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogZ3N0cmVhbWVyLmRvYXA6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgUmVsZWFzZSAwLjEwLjIxCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZWxlYXNlIDAuMTAuMjEKCjIwMDgtMTAtMDIgMjI6NDI6MTggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2lkLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9wbC5wbzoKCSogcG8vcHRfQlIucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoKMjAwOC0wOS0yOCAyMjo0OTo1NiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IDAuMTAuMjAuNCBwcmUtcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIDAuMTAuMjAuNCBwcmUtcmVsZWFzZQoKMjAwOC0wOS0yOCAyMToxOToxNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBGaXggYXNzZXJ0aW9uIGluIGJhc2V0cmFuc2Zvcm0gd2hlbiB0aGUgc3ViY2xhc3MgY2hvb3NlcyBub3QgdG8gYWxsb2NhdGUgYSBidWZmZXIgaW4gcHJlcGFyZV9idWZmZXIoKSwgYW5kIG1ha2UgY2Fwc2YuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jYXBzZmlsdGVyLmM6CgkgIEZpeCBhc3NlcnRpb24gaW4gYmFzZXRyYW5zZm9ybSB3aGVuIHRoZSBzdWJjbGFzcyBjaG9vc2VzIG5vdCB0bwoJICBhbGxvY2F0ZSBhIGJ1ZmZlciBpbiBwcmVwYXJlX2J1ZmZlcigpLCBhbmQgbWFrZSBjYXBzZmlsdGVyIGVycm9yIG91dAoJICBjbGVhbmx5IGlmIHJlcXVlc3RlZCB0byBhcHBseSBjYXBzIHRoYXQgZG9uJ3QgY29tcGxldGVseSBzcGVjaWZ5IHRoZQoJICBidWZmZXIuIEZpeGVzICM1NTE1MDkKCjIwMDgtMDktMjQgMTU6MDM6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogVGFrZSBuZXcgY2FwcyByZWYgYmVjYXVzZSBvdXIgb2xkIG9uZSBtaWdodCBoYXZlIGJlZW4gZ29uZSB3aGVuIHRoZSBzdWJjbGFzcyBwZXJmb3IuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKToKCSAgVGFrZSBuZXcgY2FwcyByZWYgYmVjYXVzZSBvdXIgb2xkIG9uZSBtaWdodCBoYXZlIGJlZW4gZ29uZSB3aGVuIHRoZQoJICBzdWJjbGFzcyBwZXJmb3JtcyBhIGdzdF9wYWRfc2V0X2NhcHMoKSBvbiB0aGUgc3JjcGFkLiBTZWUgIzU0ODc2NC4KCjIwMDgtMDktMTYgMTU6MzU6MDQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBBbHNvIGNvbW1pdCBDaGFuZ2VMb2cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEFsc28gY29tbWl0IENoYW5nZUxvZwoKMjAwOC0wOS0xNiAxNToyNDowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBHYWguIENvbW1pdCBwcmUtcmVsZWFzZSBpbmZvIHRoYXQgc2hvdWxkIGhhdmUgZ29uZSBpbiBsYXN0IHdlZWsgYWxyZWFkeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEdhaC4gQ29tbWl0IHByZS1yZWxlYXNlIGluZm8gdGhhdCBzaG91bGQgaGF2ZSBnb25lIGluIGxhc3Qgd2VlayBhbHJlYWR5LgoJICAyMDA4LTA5LTEwICBKYW4gU2NobWlkdCAgPGphbi5zY2htaWR0QHN1bi5jb20+CgkgICogY29uZmlndXJlLmFjOgoJICAwLjEwLjIwLjIgcHJlLXJlbGVhc2UKCSAgKiBwby9MSU5HVUFTOgoJICAqIHBvL2lkLnBvOgoJICAqIHBvL3B0X0JSLnBvOgoJICBOZXcgdHJhbnNsYXRpb25zLgoKMjAwOC0wOS0xNSAxNToxODowNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgY29uZmlndXJlLmFjOiBEbyBub3QgcHJvYmUgYXZhaWxhYmlsaXR5IG9mIGNoZWNrIHVuaXQgdGVzdCBsaWJyYXJ5IHdoZW4gY3Jvc3MgY29tcGlsaW5nLCBhcyB0ZXN0IHdvdWxkIG5vdCB3b3JrIGFueXdhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgRG8gbm90IHByb2JlIGF2YWlsYWJpbGl0eSBvZiBjaGVjayB1bml0IHRlc3QgbGlicmFyeSB3aGVuIGNyb3NzCgkgIGNvbXBpbGluZywgYXMgdGVzdCB3b3VsZCBub3Qgd29yayBhbnl3YXkuIEFsc28gY2xlYW51cCB2ZXJib3NlIG91dHB1dAoJICBvZiB0aGUgY2hlY2sgdGVzdC4gRml4ZXMgIzU1MTk1Mi4KCjIwMDgtMDktMTQgMjI6MDE6MzAgKzAwMDAgIEFudG9pbmUgVHJlbWJsYXkgPGhleGEwMEBnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBBdm9pZCBsZWFraW5nIHRoZSBwYXJlbnQgcmVmIHdoZW4gd2UgZmFpbCBjaGFuZ2luZyB0aGUgc3RhdGUgb2YgdGhlIGVsZW1lbnQgdXNpbmcgZ3N0X2VsZW1lbnRfc3luY18uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBBbnRvaW5lIFRyZW1ibGF5IDxoZXhhMDAgYXQgZ21haWwgZG90IGNvbT4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCk6CgkgIEF2b2lkIGxlYWtpbmcgdGhlIHBhcmVudCByZWYgd2hlbiB3ZSBmYWlsIGNoYW5naW5nIHRoZSBzdGF0ZSBvZiB0aGUKCSAgZWxlbWVudCB1c2luZyBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KCkuIEZpeGVzICM1NTE5NzguCgoyMDA4LTA5LTExIDE2OjU2OjQ4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvaW50cm8tbW90aXZhdGlvbi54bWw6IFJlbW92ZSBzb21lIGJpdHMgdGhhdCBubyBsb25nZXIgYXBwbHksIHVwZGF0ZSBvdGhlcnMgKCM1NTE2NDIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9pbnRyby1tb3RpdmF0aW9uLnhtbDo6CgkgIFJlbW92ZSBzb21lIGJpdHMgdGhhdCBubyBsb25nZXIgYXBwbHksIHVwZGF0ZSBvdGhlcnMgKCM1NTE2NDIpLgoKMjAwOC0wOS0wOSAxODo0NzoyNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjogQWRkIEdTVF9EQVRBRElSLCBoYXJkLWNvZGUgY3B1IHRvIHg4Ni4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBBZGQgR1NUX0RBVEFESVIsIGhhcmQtY29kZSBjcHUgdG8geDg2LgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBTcGFjZXMgdG8gdGFicy4KCjIwMDgtMDktMDMgMDU6NTI6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC5oOiBGaXggU2luY2U6IG1hcmtlcnMgZm9yIG5ldyBnZW8gdGFncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgRml4IFNpbmNlOiBtYXJrZXJzIGZvciBuZXcgZ2VvIHRhZ3MuCgoyMDA4LTA5LTAyIDIwOjAwOjI4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC5oOiBGaXggYWN0dWFsIHRhZyBuYW1lIGRlZmluZSBhZnRlciByZW5hbWluZyBmcm9tIGFsdGl0dWRlIHRvIGVsZXZhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgRml4IGFjdHVhbCB0YWcgbmFtZSBkZWZpbmUgYWZ0ZXIgcmVuYW1pbmcgZnJvbSBhbHRpdHVkZSB0byBlbGV2YXRpb24uCgoyMDA4LTA5LTAxIDE0OjA1OjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBBZGQgZmFsbGJhY2sgd2hlbiBjYWxsaW5nIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9uIG9uIGFuIGVsZW1lbnQgdGhhdCBpbXBsZW1lbnRzIHRoZSBuZXcgaW50ZXJuYWxfbGluayBoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGFkZF91bnJlZl9wYWRfdG9fbGlzdCksCgkgIChnc3RfcGFkX2dldF9pbnRlcm5hbF9saW5rc19kZWZhdWx0KToKCSAgQWRkIGZhbGxiYWNrIHdoZW4gY2FsbGluZyB0aGUgZGVwcmVjYXRlZCBmdW5jdGlvbiBvbiBhbiBlbGVtZW50IHRoYXQKCSAgaW1wbGVtZW50cyB0aGUgbmV3IGludGVybmFsX2xpbmsgaGFuZGxlci4KCjIwMDgtMDktMDEgMTM6MzU6MzIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZCBuZXcgdGFncyBmb3IgZ2VvIGxvY2F0aW9uIGFuZCBjbGFyaWZ5IHB1cnBvc2Ugb2YgZXhpc3RpbmcgbG9jYXRpb24gdGFnLiBGaXhlcyAjNDgxMTY5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICBBZGQgbmV3IHRhZ3MgZm9yIGdlbyBsb2NhdGlvbiBhbmQgY2xhcmlmeSBwdXJwb3NlIG9mIGV4aXN0aW5nIGxvY2F0aW9uCgkgIHRhZy4gRml4ZXMgIzQ4MTE2OQoKMjAwOC0wOS0wMSAxMToyNzo0NSArMDAwMCAgT2xpdmllciBDcmV0ZSA8dGVzdGVyQHRlc3Rlci5jYT4KCgkgIGdzdC9nc3RwYWQuYzogVXNlIHRocmVhZC1zYWZlIGludGVybmFsIGxpbmtzIGl0ZXJhdG9yLiBGaXhlcyAjNTQ5NTA0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE9saXZpZXIgQ3JldGUgPHRlc3RlciBhdCB0ZXN0ZXIgZG90IGNhPgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rc19kZWZhdWx0KSwKCSAgKGdzdF9wYWRfZXZlbnRfZGVmYXVsdF9kaXNwYXRjaCksIChnc3RfcGFkX2Rpc3BhdGNoZXIpOgoJICBVc2UgdGhyZWFkLXNhZmUgaW50ZXJuYWwgbGlua3MgaXRlcmF0b3IuIEZpeGVzICM1NDk1MDQuCgoyMDA4LTA5LTAxIDEwOjQyOjA0ICswMDAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXJAdGVzdGVyLmNhPgoKCSAgQWRkIHRocmVhZHNhZmUgcmVwbGFjZW1lbnQgZnVuY3Rpb25zIGZvciBnZXR0aW5nIGludGVybmFsIGxpbmtzIG9mIGFuIGVsZW1lbnQuIERlcHJlY2F0ZSB0aGUgb2xkIGludGVybmFsIGxpbmtzIGZ1bmN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBCYXNlZCBvbiBwYXRjaCBieTogT2xpdmllciBDcmV0ZSA8dGVzdGVyIGF0IHRlc3RlciBkb3QgY2E+CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2luaXQpLAoJICAoZ3N0X3BhZF9zZXRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rc19mdW5jdGlvbiksCgkgIChpbnRfbGlua19pdGVyX2RhdGFfZnJlZSksIChpdGVyYXRlX3BhZCksCgkgIChnc3RfcGFkX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3NfZGVmYXVsdCksCgkgIChnc3RfcGFkX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3MpLCAoZ3N0X3BhZF9nZXRfaW50ZXJuYWxfbGlua3MpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgQWRkIHRocmVhZHNhZmUgcmVwbGFjZW1lbnQgZnVuY3Rpb25zIGZvciBnZXR0aW5nIGludGVybmFsIGxpbmtzIG9mIGFuCgkgIGVsZW1lbnQuIERlcHJlY2F0ZSB0aGUgb2xkIGludGVybmFsIGxpbmtzIGZ1bmN0aW9ucy4KCSAgQVBJOkdzdFBhZDo6Z3N0X3BhZF9zZXRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rc19mdW5jdGlvbigpCgkgIEFQSTpHc3RQYWQ6OkdzdFBhZEl0ZXJJbnRMaW5rRnVuY3Rpb24KCSAgQVBJOkdzdFBhZDo6Z3N0X3BhZF9pdGVyYXRlX2ludGVybmFsX2xpbmtzKCkKCSAgQVBJOkdzdFBhZDo6Z3N0X3BhZF9pdGVyYXRlX2ludGVybmFsX2xpbmtzX2RlZmF1bHQoKQoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9kb19pdGVyYXRlX2ludGVybmFsX2xpbmtzKSwKCSAgKGdzdF9wcm94eV9wYWRfaW5pdCk6CgkgIEltcGxlbWVudCB0aHJlYWRzYWZlIGludGVybmFsIGxpbmtzLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAodGVlX3N1aXRlKToKCSAgVW5pdCB0ZXN0IGZvciBpbnRlcm5hbCBsaW5rcyBvbiB0ZWUuIFNlZSAjNTQ5NTA0LgoKMjAwOC0wOC0zMCAxMjo1Nzo0NyArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOiBsaWJzL3RyYW5zZm9ybTEgdGVzdCByZXF1aXJlcyBsaWJzL3Rlc3RfdHJhbnNmb3JtLmMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGxpYnMvdHJhbnNmb3JtMSB0ZXN0IHJlcXVpcmVzIGxpYnMvdGVzdF90cmFuc2Zvcm0uYwoKMjAwOC0wOC0zMCAxMjowNzo0MSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogRGllIGV2aWwgZGVhZGxvY2ssIGRpZSAhCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZ2V0X2ludGVybmFsX2xpbmtzX2RlZmF1bHQpOgoJICBEaWUgZXZpbCBkZWFkbG9jaywgZGllICEKCjIwMDgtMDgtMzAgMTE6NTU6NTkgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBGaXggYWxsIGxlYWtzIGR1ZSB0byB0aGUgYnVnIGluIGdzdF9wYWRfdGVtcGxhdGVfbmV3KCkgYnkgd2hpY2ggaXQgZG9lcyBub3Qgc3RlYWwgdGhlIHJlZmNvdW50IG9mIHRoZSBnaXZlbiBjYXBzIGFzIHMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9nZXRfY29tcGF0aWJsZV9wYWQpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzogKG5hbWVfaXNfdmFsaWQpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggYWxsIGxlYWtzIGR1ZSB0byB0aGUgYnVnIGluIGdzdF9wYWRfdGVtcGxhdGVfbmV3KCkgYnkgd2hpY2ggaXQgZG9lcwoJICBub3Qgc3RlYWwgdGhlIHJlZmNvdW50IG9mIHRoZSBnaXZlbiBjYXBzIGFzIHN0YXRlZC4KCSAgUkVWRVJUIFRISVMgQ09NTUlUIE9OQ0UgRklYRUQgIQoJICBSRVZFUlQgVEhJUyBDT01NSVQgT05DRSBGSVhFRCAhCgkgIFJFVkVSVCBUSElTIENPTU1JVCBPTkNFIEZJWEVEICEKCSAgUkVWRVJUIFRISVMgQ09NTUlUIE9OQ0UgRklYRUQgIQoJICBSRVZFUlQgVEhJUyBDT01NSVQgT05DRSBGSVhFRCAhCgkgIFJFVkVSVCBUSElTIENPTU1JVCBPTkNFIEZJWEVEICEKCjIwMDgtMDgtMjkgMTc6NTg6MjUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0aXRlcmF0b3IuKjogQWZ0ZXIgMyB5ZWFycyBpdCdzIGFib3V0IHRpbWUgdG8gcmV2aXNlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBpdGVyYXRvciBvYmplY3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuaDoKCSAgQWZ0ZXIgMyB5ZWFycyBpdCdzIGFib3V0IHRpbWUgdG8gcmV2aXNlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZQoJICBpdGVyYXRvciBvYmplY3RzLgoKMjAwOC0wOC0yOSAxNjoxMDo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogTWFrZSB0aGUgaW50ZXJuYWwgbGlua3MgZnVuY3Rpb24gbGVzcyB0aHJlYWQtdW5zYWZlIGFuZCBhZGQgc29tZSBjb21tZW50cywgZHVubm8gd2h5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF9pbnRlcm5hbF9saW5rc19kZWZhdWx0KToKCSAgTWFrZSB0aGUgaW50ZXJuYWwgbGlua3MgZnVuY3Rpb24gbGVzcyB0aHJlYWQtdW5zYWZlIGFuZCBhZGQgc29tZQoJICBjb21tZW50cywgZHVubm8gd2h5LgoKMjAwOC0wOC0yOSAxNDoxMjowMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RfcHJpdmF0ZS5oOiBJbmNsdWRlIGdzdGluZm8uaCBldmVuIGlmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRyBpcyBkZWZpbmVkLiBGaXhlcyBidWlsZCB3aXRoIC0tZGlzYWJsZS1nc3QtZGVidWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICBJbmNsdWRlIGdzdGluZm8uaCBldmVuIGlmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRyBpcyBkZWZpbmVkLiBGaXhlcwoJICBidWlsZCB3aXRoIC0tZGlzYWJsZS1nc3QtZGVidWcuCgoyMDA4LTA4LTI5IDAwOjM0OjU4ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOiBSZXZlcnQgbGFzdCBjaGFuZ2UsIHNpbmNlIGl0IGJyZWFrcyBhIGZldyBwbHVnaW5zLCBmZm1wZWcsIGFsYXcsIGFuZCBtdWxhdy4gIENvZGUgaXMgY29ycmVjdCwgYi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzogUmV2ZXJ0IGxhc3QgY2hhbmdlLCBzaW5jZSBpdCBicmVha3MKCSAgYSBmZXcgcGx1Z2lucywgZmZtcGVnLCBhbGF3LCBhbmQgbXVsYXcuICBDb2RlIGlzIGNvcnJlY3QsCgkgIGJ1dCBzaG91bGRuJ3QgYmUgZW5hYmxlZCB1bnRpbCB3ZSd2ZSByZWxlYXNlZCBmaXhlZCB2ZXJzaW9ucwoJICBvZiAtZ29vZCBhbmQgLWZmbXBlZy4KCjIwMDgtMDgtMjggMjA6MTI6NTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RvYmplY3QuYzogUHV0IHRoZSBnc3Rfb2JqZWN0X2dldF9uYW1lKCkgYmFjayBpbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG9iamVjdC5jOgoJICBQdXQgdGhlIGdzdF9vYmplY3RfZ2V0X25hbWUoKSBiYWNrIGluLgoKMjAwOC0wOC0yOCAxMjozMjoxOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBhZHRlbXBsYXRlLmM6IFRoZSBvbGQgYmVoYXZpb3VyIHdhcyB0aGF0IGdzdF9wYWRfdGVtcGxhdGVfbmV3KCkgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjYXBzLiBBcyB3ZSBub3cgY2FsbCBnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJICBUaGUgb2xkIGJlaGF2aW91ciB3YXMgdGhhdCBnc3RfcGFkX3RlbXBsYXRlX25ldygpIHRha2VzIG93bmVyc2hpcCBvZgoJICB0aGUgY2Fwcy4gQXMgd2Ugbm93IGNhbGwgZ19vYmplY3RfbmV3KCkgd2hpY2ggY2FsbHMgZ19vYmplY3Rfc2V0KCkgYW5kCgkgIHdoaWNoIGNvcGllcyB0aGUgY2Fwcywgd2UgaGF2ZSB0byB1bnJlZiB0aGVtIHRvIG5vdCBsZWFrIHRoZW0uIEZpeGVzCgkgIG1ha2UgdmFsZ3JpZCBmb3IgbWUuCgoyMDA4LTA4LTI4IDEwOjQ1OjA0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dXJpLmM6IERvbid0IHNlZ2ZhdWx0IG9uIGlucHV0IGxpa2UgInRlbDorMS0xMjMtNTU1LTEyMzQiLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXJpLmM6CgkgIERvbid0IHNlZ2ZhdWx0IG9uIGlucHV0IGxpa2UgInRlbDorMS0xMjMtNTU1LTEyMzQiLgoKMjAwOC0wOC0yNyAwNzoxODozNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdG9iamVjdC5jOiBEdWUgdG8gcG9wdWxhciByZXF1ZXN0IGFsc28gaW5jbHVkZSBPYmplY3RUeXBlIGluIGdzdF9vYmplY3RfZ2V0X3BhdGhfc3RyaW5nKCkuIE1ha2VzIGdzdC1sYXVuY2ggLXYgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuYzoKCSAgRHVlIHRvIHBvcHVsYXIgcmVxdWVzdCBhbHNvIGluY2x1ZGUgT2JqZWN0VHlwZSBpbgoJICBnc3Rfb2JqZWN0X2dldF9wYXRoX3N0cmluZygpLiBNYWtlcyBnc3QtbGF1bmNoIC12IGJpdCBtb3JlIHVzZWZ1bC4KCjIwMDgtMDgtMjcgMDM6MDQ6MjMgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IFJlbW92ZSBjaGVjayBpbiBnc3RfcGFkX3F1ZXJ5X2NvbnZlcnQoKSB0aGF0IHNyY192YWwgbXVzdCBiZSBwb3NpdGl2ZSwgYmVjYXVzZSB0aGF0J3Mgbm90IGEgcmVxdWlyZW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiBSZW1vdmUgY2hlY2sgaW4gZ3N0X3BhZF9xdWVyeV9jb252ZXJ0KCkgdGhhdAoJICBzcmNfdmFsIG11c3QgYmUgcG9zaXRpdmUsIGJlY2F1c2UgdGhhdCdzIG5vdCBhIHJlcXVpcmVtZW50LgoJICBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGNvbnZlcnRpbmcgbmVnYXRpdmUgZ3JhbnVsZXBvcwoJICB2YWx1ZXMgZm9yIERpcmFjLgoJICAqIGdzdC9nc3RxdWVyeS5jOiBTYW1lLCBnc3RfcXVlcnlfbmV3X2NvbnZlcnQoKS4KCjIwMDgtMDgtMjcgMDI6NTk6NTkgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IFJlbW92ZSBjaGVjayBpbiBnc3RfcGFkX3F1ZXJ5X2NvbnZlcnQoKSB0aGF0IHNyY192YWwgbXVzdCBiZSBwb3NpdGl2ZSwgYmVjYXVzZSB0aGF0J3Mgbm90IGEgcmVxdWlyZW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiBSZW1vdmUgY2hlY2sgaW4gZ3N0X3BhZF9xdWVyeV9jb252ZXJ0KCkgdGhhdAoJICBzcmNfdmFsIG11c3QgYmUgcG9zaXRpdmUsIGJlY2F1c2UgdGhhdCdzIG5vdCBhIHJlcXVpcmVtZW50LgoJICBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGNvbnZlcnRpbmcgbmVnYXRpdmUgZ3JhbnVsZXBvcwoJICB2YWx1ZXMgZm9yIERpcmFjLgoKMjAwOC0wOC0yNSAxMTowNjozNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjbG9jay5jOiBBZGQgc29tZSBtb3JlIGRlYnVnZ2luZyB0byB0aGUgY2xvY2sgc2xhdmluZyBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19hZGRfb2JzZXJ2YXRpb24pOgoJICBBZGQgc29tZSBtb3JlIGRlYnVnZ2luZyB0byB0aGUgY2xvY2sgc2xhdmluZyBjb2RlLgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgQWRkIG5ldyBiYXNldHJhbnNmb3JtIG1ldGhvZC4KCjIwMDgtMDgtMjUgMTE6MDA6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFRha2UgdGhlIChyZWN1cnNpdmUpIHN0YXRlIGxvY2sgYmV0d2VlbiBnZXR0aW5nIHRoZSBsb2NrZWQgc3RhdGUgb2YgYW4gZWxlbWVudCBhbmQgY2hhbmdpbmcgdGhlIGVsZW1lbnQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9lbGVtZW50X3NldF9zdGF0ZSk6CgkgIFRha2UgdGhlIChyZWN1cnNpdmUpIHN0YXRlIGxvY2sgYmV0d2VlbiBnZXR0aW5nIHRoZSBsb2NrZWQgc3RhdGUgb2YgYW4KCSAgZWxlbWVudCBhbmQgY2hhbmdpbmcgdGhlIGVsZW1lbnQgc3RhdGUuIFRoaXMgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0bwoJICBsb2NrIGFuIGVsZW1lbnQncyBzdGF0ZSBhbmQgdGhlbiBjaGFuZ2UgaXRzIHN0YXRlIHdpdGhvdXQgcmFjZXMuCgoyMDA4LTA4LTI1IDEwOjUyOjQ3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBXaGVuIGFuIGVsZW1lbnQgaXMgaW4gdGhlIGxvY2tlZCBzdGF0ZSB3ZSBzdGlsbCB3YW50IHRvIHVwZGF0ZSB0aGUgYmFzZV90aW1lIG9mIHRoZSBlbGVtZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2VsZW1lbnRfc2V0X3N0YXRlKToKCSAgV2hlbiBhbiBlbGVtZW50IGlzIGluIHRoZSBsb2NrZWQgc3RhdGUgd2Ugc3RpbGwgd2FudCB0byB1cGRhdGUgdGhlCgkgIGJhc2VfdGltZSBvZiB0aGUgZWxlbWVudC4KCjIwMDgtMDgtMjEgMTE6MTc6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogVXNlIHRoZSByZXN1bHQgZnJvbSBnc3RfcGFkX3NldF9jYXBzKCkgaW5zdGVhZCBvZiBhc3N1bWluZyB0aGUgZWxlbWVudCBhbHdheXMgYWNjZXB0ZWQgdGguLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZGVmYXVsdF9uZWdvdGlhdGUpOgoJICBVc2UgdGhlIHJlc3VsdCBmcm9tIGdzdF9wYWRfc2V0X2NhcHMoKSBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoZSBlbGVtZW50CgkgIGFsd2F5cyBhY2NlcHRlZCB0aGUgY2FwcyBjb21wdXRlZCBieSB0aGUgZGVmYXVsdCBuZWdvdGlhdGUgZnVuY3Rpb24uCgoyMDA4LTA4LTIwIDEwOjUyOjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgSW1wbGVtZW50IG1ldGhvZCBmb3IgcmVjb25maWd1cmluZyBiYXNldHJhbnNmb3JtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldHJhbmdlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFpbiksIChnc3RfYmFzZV90cmFuc2Zvcm1fc3VnZ2VzdCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcmVjb25maWd1cmUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBJbXBsZW1lbnQgbWV0aG9kIGZvciByZWNvbmZpZ3VyaW5nIGJhc2V0cmFuc2Zvcm0uCgkgIEFQSTogR3N0QmFzZVRyYW5zZm9ybTo6Z3N0X2Jhc2VfdHJhbnNmb3JtX3JlY29uZmlndXJlKCkKCjIwMDgtMDgtMjAgMDc6MjI6MTEgKzAwMDAgIE11cnJheSBDdW1taW5nIDxtdXJyYXljQG11cnJheWMuY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IE1lbnRpb24gdGhhdCB0aGlzIGlzIGp1c3QgbGlrZSBnc3RfYnVmZmVyX21lcmdlKCkgYnV0IHdpdGggZXh0cmEgdW5yZWZmaW5nIGZvciBDIGNvZGVycy4gQWR2aXNlIGxhbmd1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogTXVycmF5IEN1bW1pbmcgPG11cnJheWNAbXVycmF5Yy5jb20+CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIE1lbnRpb24gdGhhdCB0aGlzIGlzIGp1c3QgbGlrZSBnc3RfYnVmZmVyX21lcmdlKCkgYnV0IHdpdGggZXh0cmEKCSAgdW5yZWZmaW5nIGZvciBDIGNvZGVycy4gQWR2aXNlIGxhbmd1YWdlIGJpbmRpbmdzIG5vdCB0byB3cmFwIGl0LgoJICBGaXhlcyBCdWcgIzUzMzg1Ni4KCSAgQWxzbyBmaXggZmlsZSBjb21tZW50LgoKMjAwOC0wOC0yMCAwNzowMzo0MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy86IENhbGwgc3VwZXI6OmV2ZW50KCkgd2hlbiBub3QgaGFuZGxpbmcgaXQuIEZpeGVzICM1NDQ4NTUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGNvbGxhYm9yYS5jby51az4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkgIENhbGwgc3VwZXI6OmV2ZW50KCkgd2hlbiBub3QgaGFuZGxpbmcgaXQuIEZpeGVzICM1NDQ4NTUuCgoyMDA4LTA4LTE5IDE3OjIzOjE4ICswMDAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyb0BubnZhLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiBVc2UgNjQgYml0IHZhcmlhbnRzIG9mIHN0YXQgZnVuY3Rpb25zIG9uIHdpbjMyLCB0byBlbmFibGUgc3VwcG9ydCBvZiBsYXJnZSBmaWxlcyB0aGVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyb0BubnZhLm9yZz4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgVXNlIDY0IGJpdCB2YXJpYW50cyBvZiBzdGF0IGZ1bmN0aW9ucyBvbiB3aW4zMiwgdG8gZW5hYmxlIHN1cHBvcnQKCSAgb2YgbGFyZ2UgZmlsZXMgdGhlcmUuCgkgIEZpeGVzICM1NDcyNzcuCgoyMDA4LTA4LTE5IDE2OjQ3OjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJbXByb3ZlIHBvc2l0aW9uIHJlcG9ydGluZyBpbiB0aGUgZmx1c2hpbmcgc3RhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcmVuZGVyX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQpLAoJICAoZ3N0X2Jhc2Vfc2lua19uZWdvdGlhdGVfcHVsbCksIChnc3RfYmFzZV9zaW5rX3BhZF9hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgSW1wcm92ZSBwb3NpdGlvbiByZXBvcnRpbmcgaW4gdGhlIGZsdXNoaW5nIHN0YXRlLgoJICBBbHNvIHJlcG9ydCB0aGUgcG9zaXRpb24gd2hlbiB3ZSBhcmUgbm90IHlldCBwcmVyb2xsZWQgYnV0IHdlCgkgIGhhdmUgYSBuZXdzZWdtZW50IGV2ZW50LiBGaXhlcyAjNTQzNDQ0LgoJICBJbXByb3ZlIHRoZSBwdWxsLWJhc2VkIG5lZ290aWF0aW9uIGNvZGUuCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZXNpbmsuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGZha2VzaW5rX3N1aXRlKToKCSAgQWRkIHRlc3RjYXNlIGZvciBwb3NpdGlvbiByZXBvcnRpbmcgd2hpbGUgZmx1c2hpbmcgaW4gUEFVU0VEIGFuZAoJICBQTEFZSU5HLgoJICAqIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVXBkYXRlIHVuaXQtdGVzdCwgd2UgY2FuIG5vdyBxdWVyeSB0aGUgcG9zaXRpb24gYXMgc29vbiBhcyB3ZSByZWNlaXZlIGEKCSAgTkVXU0VHTUVOVCBldmVudC4KCjIwMDgtMDgtMTkgMDg6NTI6MDUgKzAwMDAgIEphc29uIFpoYW8gPGUzNDIzY0Btb3Rvcm9sYS5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFdoZW4gdGhlIHN1YmNsYXNzIGV2ZW50IGhhbmRsZXIgcmVsZWFzZXMgdGhlIFBSRVJPTExfTE9DSywgd2UgY291bGQgYmUgaW4gdGhlIGZsdXNoaW5nIHMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBKYXNvbiBaaGFvIDxlMzQyM2MgYXQgbW90b3JvbGEgZG90IGNvbT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3JlbmRlcl9vYmplY3QpOgoJICBXaGVuIHRoZSBzdWJjbGFzcyBldmVudCBoYW5kbGVyIHJlbGVhc2VzIHRoZSBQUkVST0xMX0xPQ0ssIHdlIGNvdWxkIGJlCgkgIGluIHRoZSBmbHVzaGluZyBzdGF0ZSBhbmQgd2UgaGF2ZSB0byBpZ25vcmUgdGhlIGV2ZW50LiBGaXhlcyAjNTQ4Mzk0LgoKMjAwOC0wOC0xOCAxMToyODowMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guMS5pbjogRG9jdW1lbnQgR1NUX1JFR0lTVFJZX1VQREFURSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBEb2N1bWVudCBHU1RfUkVHSVNUUllfVVBEQVRFIGVudmlyb25tZW50IHZhcmlhYmxlLgoKMjAwOC0wOC0xOCAwOTo1OToxOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBJZiB0aGUgZWxlbWVudCBpcyBjb25maWd1cmVkIGluIHBhc3N0aHJvdWdoIG1vZGUgYnV0IHRoZSBwcmVwYXJlX291dHB1dF9idWZmZXIgZ2F2ZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpOgoJICBJZiB0aGUgZWxlbWVudCBpcyBjb25maWd1cmVkIGluIHBhc3N0aHJvdWdoIG1vZGUgYnV0IHRoZQoJICBwcmVwYXJlX291dHB1dF9idWZmZXIgZ2F2ZSB1cyBhIG5ldyBvdXRwdXQgYnVmZmVyLCBkaXNjYXJkIHRoYXQgYnVmZmVyCgkgIGFuZCByZXVzZSB0aGUgaW5wdXQgYnVmZmVyLgoKMjAwOC0wOC0xNSAxNzowMTowNyArMDAwMCAgT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzIDxvbGUuYW5kcmUucmF2bmFzQHRhbmRiZXJnLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLio6IFByb3RlY3QgcGFkX2FsbG9jIHdpdGggYSBuZXcgbG9jayBzbyB0aGF0IHdlIGNhbiBiZSBzdXJlIHRoYXQgbm90aGluZyBpcyBwZXJmb3JtaW5nIGEgcGFkXy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyAgPG9sZS5hbmRyZS5yYXZuYXMgYXQgdGFuZGJlcmcgY29tPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2ZpbmFsaXplKSwgKGdzdF90ZWVfaW5pdCksCgkgIChnc3RfdGVlX3JlcXVlc3RfbmV3X3BhZCksIChnc3RfdGVlX3JlbGVhc2VfcGFkKSwKCSAgKGdzdF90ZWVfZmluZF9idWZmZXJfYWxsb2MpLCAoZ3N0X3RlZV9idWZmZXJfYWxsb2MpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmg6CgkgIFByb3RlY3QgcGFkX2FsbG9jIHdpdGggYSBuZXcgbG9jayBzbyB0aGF0IHdlIGNhbiBiZSBzdXJlIHRoYXQgbm90aGluZyBpcwoJICBwZXJmb3JtaW5nIGEgcGFkX2FsbG9jIHdoZW4gcmVtb3ZpbmcgdGhlIHBhZC4gRml4ZXMgIzU0NzgzNS4KCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZWUuYzogKGJ1ZmZlcl9hbGxvY19oYXJuZXNzX3NldHVwKSwKCSAgKGJ1ZmZlcl9hbGxvY19oYXJuZXNzX3RlYXJkb3duKSwgKGFwcF90aHJlYWRfZnVuYyksCgkgIChmaW5hbF9zaW5rcGFkX2J1ZmZlcmFsbG9jKSwgKEdTVF9TVEFSVF9URVNUKSwgKHRlZV9zdWl0ZSk6CgkgIEFkZGVkIHRlc3RjYXNlIGZvciBzaHV0ZG93biByYWNlLgoKMjAwOC0wOC0xNCAyMDowNTozMyArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuaDogQWRkIGRvYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIEFkZCBkb2MKCjIwMDgtMDgtMTQgMTY6Mzc6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogR28gb3ZlciB0aGUgYnVmZmVyX2FsbG9jIGZ1bmN0aW9uIGFnYWluIGFuZCBtYWtlIHN1cmUgd2UgYWx3YXlzIGVuZCB1cCBhbGxvY2F0aW5nIGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpOgoJICBHbyBvdmVyIHRoZSBidWZmZXJfYWxsb2MgZnVuY3Rpb24gYWdhaW4gYW5kIG1ha2Ugc3VyZSB3ZSBhbHdheXMgZW5kIHVwCgkgIGFsbG9jYXRpbmcgYSBidWZmZXIuCgkgIEFkZCBzb21lIG1vcmUgZG9jcy4KCSAgQXZvaWQgZG9pbmcgcGFkIGFsbG9jIHdoZW4gd2UgaGF2ZSBhIHBlbmRpbmcgc3VnZ2VzdGlvbiBiZWNhdXNlIHdlCgkgIGNhbm5vdCB5ZXQgZGVhbCB3aXRoIGNoYW5naW5nIGNhcHMgaW4gdGhhdCBjYXNlLiBGaXhlcyAjNTQ3NzI4CgoyMDA4LTA4LTE0IDE0OjI2OjIwICswMDAwICBMdWMgUGlvbmNob24gPGx1Yy5waW9uY2hvbkBub2tpYS5jb20+CgoJICBkb2NzL21hbnVhbC86IEFkZCBvbmUgbW9yZSBpbWFnZSBzaG93aW5nIGRpZmZlcmVudCB0aW1lcyB0b2dldGhlciB3aXRoIGEgZGVzY3JpYmluZyBwYXJhZ3JhcGguIEZpeGVzICM1NDc3MjkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogTHVjIFBpb25jaG9uIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWNsb2Nrcy54bWw6CgkgICogZG9jcy9tYW51YWwvY2xvY2tzLnBuZzoKCSAgKiBkb2NzL21hbnVhbC9kaWFncmFtcy1jbG9ja3Muc3ZnOgoJICBBZGQgb25lIG1vcmUgaW1hZ2Ugc2hvd2luZyBkaWZmZXJlbnQgdGltZXMgdG9nZXRoZXIgd2l0aCBhIGRlc2NyaWJpbmcKCSAgcGFyYWdyYXBoLiBGaXhlcyAjNTQ3NzI5LgoKMjAwOC0wOC0xNCAxNDowNDo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjogQWRkIG5ldyBtZXRob2QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgQWRkIG5ldyBtZXRob2QuCgoyMDA4LTA4LTE0IDEzOjU3OjU4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IERvbid0IG92ZXJ3cml0ZSB0aGUgb3V0c2l6ZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBleHBlY3RlZCBzaXplIG9mIGEgbmV3IGJ1ZmZlciBiZWNhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyksIChnc3RfYmFzZV90cmFuc2Zvcm1fc3VnZ2VzdCk6CgkgIERvbid0IG92ZXJ3cml0ZSB0aGUgb3V0c2l6ZSB3aGVuIGNhbGN1bGF0aW5nIHRoZSBleHBlY3RlZCBzaXplIG9mIGEgbmV3CgkgIGJ1ZmZlciBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgaXQgaW4gY2FzZSB3ZSBjYW5ub3QgcHJvY2VzcyB0aGUgbmV3CgkgIGJ1ZmZlci4KCSAgV2hlbiBjb252ZXJ0aW5nIHRoZSBzaXplIG9mIHRoZSBuZXcgYnVmZmVyIHRvIGFuIHVwc3RyZWFtIHNpemUsIGFjdHVhbGx5CgkgIHVzZSB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiB0aGUgYnVmZmVyLCBub3Qgc29tZSBvdGhlciByYW5kb20gdmFsdWUuCgkgIFVzZSBhbiBhdG9taWMgaW50IHRvIHNpZ25hbCB0aGF0IGEgbmV3IHVwc3RyZWFtIGNhcHMgc3VnZ2VzdGlvbiBpcwoJICBhdmFpbGFibGUuCgkgIFdoZW4gd2UgY2FuIGNvbnZlcnQgdGhlIGN1cnJlbnQgYnVmZmVyIHRvIGEgbmV3IGZvcm1hdCwgY2hlY2sgaWYgdGhlCgkgIGJ1ZmZlciBzaXplIGlzIG9mIHRoZSBleHBlY3RlZCBzaXplIGFuZCBhbGxvY2F0ZSBhIG5ldyBidWZmZXIgb2YgdGhlCgkgIGV4cGVjdGVkIHNpemUgd2hlbiB0aGlzIGlzIG5vdCB0aGUgY2FzZS4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL3RyYW5zZm9ybTEuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgcmVtb3ZlIGlmZGVmZmVkIGNvZGUgZnJvbSB0aGUgdW5pdCB0ZXN0LgoKMjAwOC0wOC0xMiAxODo0ODo0MiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcGtnY29uZmlnLzogUmVtb3ZlIC1sZ3N0Y29udHJvbC0wLjEwIHdoaWNoIG5ldmVyIHdvcmtlZCBhbnl3YXkgYXMgdGhlIGxpYiBpcyBjYWxsZWQgZ3N0Y29udHJvbGxlci0wLjEwLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwa2djb25maWcvZ3N0cmVhbWVyLXVuaW5zdGFsbGVkLnBjLmluOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXIucGMuaW46CgkgIFJlbW92ZSAtbGdzdGNvbnRyb2wtMC4xMCB3aGljaCBuZXZlciB3b3JrZWQgYW55d2F5IGFzIHRoZSBsaWIgaXMKCSAgY2FsbGVkIGdzdGNvbnRyb2xsZXItMC4xMC4KCjIwMDgtMDgtMTIgMDY6Mjc6MzUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC86IFJlbW92ZSBkb3VibGUgaW50ZXJmYWNlIGZyb20gZG9jLXN0cmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNoaWxkcHJveHkuaDoKCSAgKiBnc3QvZ3N0cHJlc2V0Lmg6CgkgIFJlbW92ZSBkb3VibGUgaW50ZXJmYWNlIGZyb20gZG9jLXN0cmluZy4KCjIwMDgtMDgtMTIgMDY6MTY6MDIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvOiBGaXggaGVhZGluZ3MgaW4gZG9jcyBhbmQgZ3RrLWRvYyB3YXJuaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIEZpeCBoZWFkaW5ncyBpbiBkb2NzIGFuZCBndGstZG9jIHdhcm5pbmdzLgoKMjAwOC0wOC0xMSAxOTowNDowNCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IERvbid0IHVzZSBnX21rc3RtcCgpIG9uIHdpbjMyLCBpdCdzIHVuc2FmZSBpZiBnbGliIGlzIHVzaW5nIGEgZGlmZmVyZW50IGxpYmMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICBEb24ndCB1c2UgZ19ta3N0bXAoKSBvbiB3aW4zMiwgaXQncyB1bnNhZmUgaWYgZ2xpYiBpcyB1c2luZyBhIGRpZmZlcmVudAoJICBsaWJjLgoJICBGaXhlcyAjNTQ0Nzc2LgoKMjAwOC0wOC0xMSAxNToxNDoyOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBGaXggYSAibWF5IGJlIHVzZWQgdW5pdGlhbGl6ZWQiIHdhcm5pbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIEZpeCBhICJtYXkgYmUgdXNlZCB1bml0aWFsaXplZCIgd2FybmluZy4KCjIwMDgtMDgtMTEgMDg6MDY6MjAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIERvY3VtZW50IHByZXNldC1pZmFjZSB2bWV0aG9kcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0cHJlc2V0Lmg6CgkgIERvY3VtZW50IHByZXNldC1pZmFjZSB2bWV0aG9kcy4KCjIwMDgtMDgtMTEgMDc6MDc6NDUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvbWFudWFsL2FkdmFuY2VkLWludGVyZmFjZXMueG1sOiBUdXJuIHRob3VnaHRzIGFib3V0IEhBTCBpbnRvIGEgbm90ZS10YWcuIFJlbW92ZSBtZW50aW9uaW5nIHRoYXQgaXMgb25seSB1c2VkIHRvIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1pbnRlcmZhY2VzLnhtbDoKCSAgVHVybiB0aG91Z2h0cyBhYm91dCBIQUwgaW50byBhIG5vdGUtdGFnLiBSZW1vdmUgbWVudGlvbmluZyB0aGF0IGlzCgkgIG9ubHkgdXNlZCB0byBkaXNjb3ZlciBkZXZpY2VzLgoKMjAwOC0wOC0wNyAxNTo0OTowMCArMDAwMCAgRnJlZGVyaWMgQ3JvemF0IDxmY3JvemF0QG1hbmRyaXZhLm9yZz4KCgkgIGdzdC9nc3QuYzogTWFrZSBzdXJlIGdldHRleHQgcmV0dXJucyB0cmFuc2xhdGlvbnMgaW4gVVRGLTggZW5jb2RpbmcgcmF0aGVyIHRoYW4gaW4gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nICgjNTQ2OC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEZyZWRlcmljIENyb3phdCA8ZmNyb3phdEBtYW5kcml2YS5vcmc+CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wcmUpOgoJICBNYWtlIHN1cmUgZ2V0dGV4dCByZXR1cm5zIHRyYW5zbGF0aW9ucyBpbiBVVEYtOCBlbmNvZGluZyByYXRoZXIKCSAgdGhhbiBpbiB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgKCM1NDY4MjIpLgoKMjAwOC0wOC0wNyAxMjoyODoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEZpeCBzdWJzZXQgdGVzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX3N0cnVjdHVyZV9pc19zdWJzZXRfZmllbGQpOgoJICBGaXggc3Vic2V0IHRlc3QuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgSW1wcm92ZSB1bml0IHRlc3Qgc3Vic2V0IHRlc3RzIGFuZCBhZGQgYSB0ZXN0Y2FzZSBmb3IgdGhlIHN1YnNldCBmYWlsdXJlCgkgIGNhc2VzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgSW1wcm92ZSBzdWJ0cmFjdGlvbiB1bml0IHRlc3QuCgoyMDA4LTA4LTA3IDA3OjAxOjE1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiBVbmxvY2ssIGluc3RlYWQgb2YgbG9ja2luZyBhZ2Fpbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgVW5sb2NrLCBpbnN0ZWFkIG9mIGxvY2tpbmcgYWdhaW4uCgoyMDA4LTA4LTA1IDE2OjUwOjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5oOiBDbGFyaWZ5IHRoZSBkb2NzIGEgYml0IG1vcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgQ2xhcmlmeSB0aGUgZG9jcyBhIGJpdCBtb3JlLgoKMjAwOC0wOC0wNSAxNTo0MjowMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvZXhhbXBsZXMvbWV0YWRhdGEvcmVhZC1tZXRhZGF0YS5jOiBEb24ndCBsZWFrIG9sZCB0YWdsaXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9leGFtcGxlcy9tZXRhZGF0YS9yZWFkLW1ldGFkYXRhLmM6CgkgIERvbid0IGxlYWsgb2xkIHRhZ2xpc3QuCgoyMDA4LTA4LTA1IDE1OjAzOjI3ICswMDAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXJAdGVzdGVyLmNhPgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS5jOiBBdm9pZCBvdmVyZmxvd3MgaW4gZml4YXRpb24gY29kZSB3aGVuIGRlYWxpbmcgd2l0aCBNQVhJTlQgdmFsdWVzLCB3aGljaCB2NGwyc3JjIHNlZW1zIHRvIGRvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE9saXZpZXIgQ3JldGUgPHRlc3RlciBhdCB0ZXN0ZXIgZG90IGNhPgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgKGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24pOgoJICBBdm9pZCBvdmVyZmxvd3MgaW4gZml4YXRpb24gY29kZSB3aGVuIGRlYWxpbmcgd2l0aCBNQVhJTlQgdmFsdWVzLCB3aGljaAoJICB2NGwyc3JjIHNlZW1zIHRvIGRvLgoJICBGaXhlcyAjNTQ2MzI4LgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSBhIHVuaXQgdGVzdCB0byBjaGVjayB0aGUgZml4LgoKMjAwOC0wOC0wNSAxMToxMjoyOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiBVc2UgbmV3IGNhcHMgc3VnZ2VzdGlvbiBmZWF0dXJlIG9mIGJhc2V0cmFuc2Zvcm0gdG8gcmVxdWVzdCBhIGNhcHMgbmVnb3RpYXRpb24gdXBzdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGNvcHlfZnVuYyksCgkgIChnc3RfY2Fwc2ZpbHRlcl9zZXRfcHJvcGVydHkpOgoJICBVc2UgbmV3IGNhcHMgc3VnZ2VzdGlvbiBmZWF0dXJlIG9mIGJhc2V0cmFuc2Zvcm0gdG8gcmVxdWVzdCBhIGNhcHMKCSAgbmVnb3RpYXRpb24gdXBzdHJlYW0uCgoyMDA4LTA4LTA1IDExOjExOjAwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBmdW5jdGlvbjoKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBmdW5jdGlvbjoKCSAgQVBJOiBHc3RCYXNlVHJhbnNmb3JtOjpnc3RfYmFzZV90cmFuc2Zvcm1fc3VnZ2VzdCgpCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fZmluYWxpemUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2Nhbl90cmFuc2Zvcm0pLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2ZpbmRfdHJhbnNmb3JtKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0cmFuZ2UpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYWluKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9hY3RpdmF0ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Bhc3N0aHJvdWdoKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9pc19wYXNzdGhyb3VnaCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9pc19pbl9wbGFjZSksIChnc3RfYmFzZV90cmFuc2Zvcm1fdXBkYXRlX3FvcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Fvc19lbmFibGVkKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9pc19xb3NfZW5hYmxlZCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2dhcF9hd2FyZSksIChnc3RfYmFzZV90cmFuc2Zvcm1fc3VnZ2VzdCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcmVjb25maWd1cmUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBSZXdyaXRlIG9mIGJhc2V0cmFuc2Zvcm0gdG8gcGVyZm9ybSBuZWdvdGlhdGlvbiBvdXRzaWRlIG9mIHRoZQoJICBidWZmZXJfYWxsb2MgZnVuY3Rpb25zLiAgRml4ZXMgIzU0NTg1My4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL3RyYW5zZm9ybTEuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGJ1ZmZlcl9hbGxvY19jdDIpOgoJICBVcGRhdGUgdW5pdCB0ZXN0LgoKMjAwOC0wOC0wNSAwNTo0NDowMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHByZXNldC5jOiBPbmx5IHJ1biBwcmVzZXQgdGVzdHMgd2hlbiAkSE9NRSBpcyB3cml0YWJsZS4gUHJlbGltaW5hcnkgZml4IGZvciAjNTQ1NDMzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cHJlc2V0LmM6CgkgIE9ubHkgcnVuIHByZXNldCB0ZXN0cyB3aGVuICRIT01FIGlzIHdyaXRhYmxlLiBQcmVsaW1pbmFyeSBmaXggZm9yCgkgICM1NDU0MzMuCgoyMDA4LTA4LTA0IDE1OjQ5OjEzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBGaXggcmFjZSBmb3IgYmlucyB0aGF0IHNpbXVsYXRlIEFTWU5DIHN0YXRlIGNoYW5nZXMgYnkgaW5zZXJ0aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwgKGJpbl9oYW5kbGVfYXN5bmNfZG9uZSksCgkgIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBGaXggcmFjZSBmb3IgYmlucyB0aGF0IHNpbXVsYXRlIEFTWU5DIHN0YXRlIGNoYW5nZXMgYnkgaW5zZXJ0aW5nCgkgIEFTWU5DX1NUQVJUIGFuZCBBU1lOQ19ET05FIG1lc3NhZ2VzIGluIHRoZWlyIGJ1cy4gV2UgbmVlZCB0byBjaGVjayBmb3IKCSAgcGVuZGluZyBBU1lOQyBtZXNzYWdlcyBldmVuIHdoZW4gdGhlIGJpbiBkb2VzIG5vdCBoYXZlIEFTWU5DIGNoaWxkcmVuLgoJICBXZSBub3RlIGRldGVjdCB0aGlzIGJlaGF2aW91ciBiZWNhdXNlIHdlIHdpbGwgcmVjZWl2ZSBhbiBBU1lOQyBtZXNzYWdlCgkgIHRoYXQgaXMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgYmluIGl0c2VsZi4KCSAgRml4ZXMgcmFjZXMgd2l0aCBkZWNvZGViaW4yIHN0YXRlIGNoYW5nZXMuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBBZGQgc29tZSBtb3JlIGRlYnVnLgoKMjAwOC0wOC0wNCAxMzowMTozNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0LmM6IEZpeCB0eXBvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSk6CgkgIEZpeCB0eXBvLgoKMjAwOC0wOC0wNCAxMjo0NjoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHRhZ2xpc3QuYzogQXJnaC4gYWN0dWFsbHkgc2F2ZSB0aGUgdGV4dCBiZWZvcmUgY29tbWl0dGluZy4gTm93IGFkZHMgZ3N0X3RhZ19tZXJnZV9zdHJpbmdzX3dpdGhfY29tbWEoKSB0byBnc3RfLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgIEFyZ2guIGFjdHVhbGx5IHNhdmUgdGhlIHRleHQgYmVmb3JlIGNvbW1pdHRpbmcuIE5vdyBhZGRzCgkgIGdzdF90YWdfbWVyZ2Vfc3RyaW5nc193aXRoX2NvbW1hKCkgdG8gZ3N0X3RhZ19yZWdpc3RlcigpLgoKMjAwOC0wOC0wNCAxMjozMDoyNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHRhZ2xpc3QuKjogRG8gYXMgdGltIHBvaW50ZWQgb3V0IGFuZCBhY3R1YWxseSByZWdpc3RlciB0aGUgbmV3IHRhZy4gQWxzbyBpbXByb3ZlIHRlIGRvY3MgYW5kIHVzZSBnc3RfdGFnX21lcmdlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgRG8gYXMgdGltIHBvaW50ZWQgb3V0IGFuZCBhY3R1YWxseSByZWdpc3RlciB0aGUgbmV3IHRhZy4gQWxzbyBpbXByb3ZlCgkgIHRlIGRvY3MgYW5kIHVzZSBnc3RfdGFnX21lcmdlX3N0cmluZ3Nfd2l0aF9jb21tYSgpIG1ldGhvZCB0byBhbGxvdwoJICByZXRyaXZpbmcgYWxsIGtleXdvcmRzIG1lcmdlZCBpbiBvbmUgbGlzdC4KCjIwMDgtMDgtMDEgMTE6NTc6NDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIFJldmVydCAnYWNjaWRlbnRpYWwnIGNoYW5nZSBvZiB0aGUgY29uZmlndXJlIG9wdGlvbiByZW1vdmFsLiBXZSBzdGlsbCBuZWVkIHRvIGdlbmVyYXRlIHRoZSB0eXBlcyBmaWxlIGluIGNvbmZpZ3VyZSAtLS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJICBSZXZlcnQgJ2FjY2lkZW50aWFsJyBjaGFuZ2Ugb2YgdGhlIGNvbmZpZ3VyZSBvcHRpb24gcmVtb3ZhbC4gV2Ugc3RpbGwKCSAgbmVlZCB0byBnZW5lcmF0ZSB0aGUgdHlwZXMgZmlsZSBpbiBjb25maWd1cmUgLS1kaXNhYmxlLWxvYWQtc2F2ZS4KCjIwMDgtMDgtMDEgMTE6MzQ6MDYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZCBuZXcgdGFnbGlzdCBpdGVtIEdTVF9UQUdfS0VZV09SRFMsIG5lZWRlZCBmb3IgIzUyMDY5NCAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgQWRkIG5ldyB0YWdsaXN0IGl0ZW0gR1NUX1RBR19LRVlXT1JEUywgbmVlZGVkIGZvciAjNTIwNjk0IC4KCjIwMDgtMDgtMDEgMTA6MDI6NDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cGFkdGVtcGxhdGUuYzogQWRkICJuYW1lLXRlbXBsYXRlIiwgImRpcmVjdGlvbiIsICJwcmVzZW5jZSIgYW5kICJjYXBzIiBwcm9wZXJ0aWVzLCBzbyB0aGF0IGdzdF9wYWRfdGVtcGxhdGVfbmUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6CgkgIChnc3RfcGFkX3RlbXBsYXRlX2NsYXNzX2luaXQpLCAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0KSwKCSAgKGdzdF9wYWRfdGVtcGxhdGVfbmV3KSwgKGdzdF9wYWRfdGVtcGxhdGVfcGFkX2NyZWF0ZWQpLAoJICAoZ3N0X3BhZF90ZW1wbGF0ZV9zZXRfcHJvcGVydHkpLCAoZ3N0X3BhZF90ZW1wbGF0ZV9nZXRfcHJvcGVydHkpOgoJICBBZGQgIm5hbWUtdGVtcGxhdGUiLCAiZGlyZWN0aW9uIiwgInByZXNlbmNlIiBhbmQgImNhcHMiIHByb3BlcnRpZXMsCgkgIHNvIHRoYXQgZ3N0X3BhZF90ZW1wbGF0ZV9uZXcoKSBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIGFyb3VuZAoJICBnX29iamVjdF9uZXcoKSwgd2hpY2ggaXMgYmV0dGVyIGZvciBiaW5kaW5ncy4gKEZpeGVzOiAjNTM5NzcyKQoKMjAwOC0wNy0zMSAxNzoxNjo1MCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHVyaS5jOiBCZSBtb3JlIGxpYmVyYWwgaW4gd2hhdCBVUklzIHdlIGFjY2VwdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHVyaS5jOgoJICBCZSBtb3JlIGxpYmVyYWwgaW4gd2hhdCBVUklzIHdlIGFjY2VwdC4KCSAgRG8gbm90IHVuZXNjYXBlIGJpdHMgb2YgdGhlIFVSSSBmb3Igbm8gYXBwYXJlbnQgcmVhc29uIGJlZm9yZSBwYXNzaW5nIHRvCgkgIHRoZSBlbGVtZW50LiBGaXhlcyAjNTQ1MzUyLgoKMjAwOC0wNy0zMSAxNToyNDoyMSArMDAwMCAgUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgoKCSAgZ3N0L2dzdC5jOiBJbmNsdWRlIGdzdGNvbmZpZy5oIGFzIG1hY3JvcyBmcm9tIGl0IGFyZSB1c2VkLiBGaXhlcyBidWcgIzU0NTYwNy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+CgkgICogZ3N0L2dzdC5jOgoJICBJbmNsdWRlIGdzdGNvbmZpZy5oIGFzIG1hY3JvcyBmcm9tIGl0IGFyZSB1c2VkLiBGaXhlcyBidWcgIzU0NTYwNy4KCjIwMDgtMDctMzEgMTU6MjA6MzIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIFJlbW92ZSBHU1RfRElTQUJMRV8oRU5VTVRZUEVTfElOREVYfFVSSSkgZXZlcnl3aGVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlcy5pbjoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5jOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX3NldF9pbmRleF9mdW5jKToKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF9pbmRleCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3JlYWRfY2FjaGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAobG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV94bWxfcmVhZF9jYWNoZSksIChnc3RfcmVnaXN0cnlfeG1sX3NhdmVfZmVhdHVyZSk6CgkgICogcGx1Z2lucy9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9nc3QtaW5kZW50OgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9pbmRleF9pbmZvKSwgKHByaW50X2VsZW1lbnRfbGlzdCksCgkgIChwcmludF9wbHVnaW5fZmVhdHVyZXMpLCAocHJpbnRfZWxlbWVudF9mZWF0dXJlcyk6CgkgICogdG9vbHMvZ3N0LXhtbGluc3BlY3QuYzogKHByaW50X2V2ZW50X21hc2tzKSwKCSAgKHByaW50X2VsZW1lbnRfaW5mbyk6CgkgICogd2luMzIvY29tbW9uL2dzdGNvbmZpZy5oOgoJICBSZW1vdmUgR1NUX0RJU0FCTEVfKEVOVU1UWVBFU3xJTkRFWHxVUkkpIGV2ZXJ5d2hlcmUuCgkgIERpc2FibGluZyB0aGUgaW5kZXhlcnMgYW5kIFVSSSBoYW5kbGVyIGNvZGUgd2lsbCBvbmx5IHJlZHVjZSB0aGUKCSAgcmVxdWlyZWQgYW1vdW50IG9mIG1lbW9yeSBieSBhIHZlcnkgc21hbGwgYW1vdW50IGJ1dCBvbiB0aGUgb3RoZXIgaGFuZAoJICByZXF1aXJlcyBtdWNoIG1vcmUgbWFpbnRhaW5jZSB3b3JrLiBBcGFydCBmcm9tIHRoYXQgbWFueSBwbGFjZXMgb2YKCSAgY29kZSBhcmUgYnJva2VuIHdoZW4gZGlzYWJsaW5nIHRoZW0uCgkgIERpc2FibGluZyB0aGUgZW51bSB0eXBlcyBkb2Vzbid0IHJlZHVjZSB0aGUgcmVxdWlyZWQgYW1vdW50IG9mIG1lbW9yeQoJICBieSBtb3JlIHRoYW4gYSBmZXcgYnl0ZXMgYW5kIG1ha2VzIGl0IGhhcmQgdG8gZml4IGJ1Z3MgbGlrZSAjNTM5NzcyLAoJICBpLmUuIHVzZSB0aGUgZW51bXMgYXMgR09iamVjdCBwcm9wZXJ0aWVzLgoKMjAwOC0wNy0zMSAxMzowNjo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IEFkZCBzb21lIHRob3VnaHRzIGFuZCBwcm9ibGVtcyB3aXRoIHVwc3RyZWFtIHJlbmVnb3RpYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIEFkZCBzb21lIHRob3VnaHRzIGFuZCBwcm9ibGVtcyB3aXRoIHVwc3RyZWFtIHJlbmVnb3RpYXRpb24uCgoyMDA4LTA3LTMxIDEyOjUwOjUyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBSZW1vdmUgc2lsbHkgcmVkdW5kYW50IGRlYnVnLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FjY2VwdGNhcHNfZGVmYXVsdCksCgkgIChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpLCAoZ3N0X3BhZF9hbGxvY19idWZmZXJfZnVsbCk6CgkgIFJlbW92ZSBzaWxseSByZWR1bmRhbnQgZGVidWcuCgkgIEFkZCBzb21lIG1vcmUgZGVidWcgaW5mby4KCSAgQ2xhcmlmeSB0aGUgZG9jcyByZWdhcmRpbmcgbmV3IGNhcHMgcmVjZWl2ZWQgZnJvbSBwYWRfYWxsb2MuCgoyMDA4LTA3LTMxIDA5OjU1OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IE1ha2Ugc2V0dGluZyB0aGUgY2FwcyBtb3JlIHRocmVhZHNhZmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9jYXBzZmlsdGVyX2dldF9wcm9wZXJ0eSksIChnc3RfY2Fwc2ZpbHRlcl90cmFuc2Zvcm1fY2Fwcyk6CgkgIE1ha2Ugc2V0dGluZyB0aGUgY2FwcyBtb3JlIHRocmVhZHNhZmUuCgoyMDA4LTA3LTMxIDA4OjM5OjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXRyYW5zZm9ybS50eHQ6IFVwZGF0ZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtdHJhbnNmb3JtLnR4dDoKCSAgVXBkYXRlIGRvY3MuCgoyMDA4LTA3LTMxIDA4OjM3OjA0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBBZGQgYW5kIHVzZSBhIGN1c3RvbSBhY2NlcHRjYXBzIGZ1bmN0aW9uIGluc3RlYWQgb2YgZmFsbGluZyBiYWNrIHRvIHRoZSBwb3RlbnRpYWxseSBsZXNzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9pbml0KSwKCSAgKGdzdF9xdWV1ZV9hY2NlcHRjYXBzKToKCSAgQWRkIGFuZCB1c2UgYSBjdXN0b20gYWNjZXB0Y2FwcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byB0aGUKCSAgcG90ZW50aWFsbHkgbGVzcyBvcHRpbWl6ZWQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KCjIwMDgtMDctMjkgMTU6MzI6MTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IE9ubHkgc2FuaXR5LWNoZWNrIHRoZSBidWZmZXIgc2l6ZSBpZiByZXF1ZXN0ZWRfY2FwcyA9PSBidWZmZXJfY2FwcyAoaWUuIGRvbid0IHRha2UgcGFkIGNhcHMgaW50byBhY2NvdW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hbGxvY19idWZmZXJfZnVsbCk6CgkgIE9ubHkgc2FuaXR5LWNoZWNrIHRoZSBidWZmZXIgc2l6ZSBpZiByZXF1ZXN0ZWRfY2FwcyA9PSBidWZmZXJfY2FwcwoJICAoaWUuIGRvbid0IHRha2UgcGFkIGNhcHMgaW50byBhY2NvdW50LCB0aGV5J3JlIG5vdCByZWxldmFudCBoZXJlKQoKMjAwOC0wNy0yOSAxNDozMjo1MSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuKjogUmV2ZXJ0aW5nIGFzIG5vdCBldmVyeXRoaW5nIGlzIGNsZWFyIHlldC4gTmVlZHMgc29tZSBnZW5lcmFsIGRlc2lnbiB3b3JrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmg6CgkgIFJldmVydGluZyBhcyBub3QgZXZlcnl0aGluZyBpcyBjbGVhciB5ZXQuIE5lZWRzIHNvbWUgZ2VuZXJhbCBkZXNpZ24KCSAgd29yay4KCjIwMDgtMDctMjkgMTM6MzY6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIENoYW5nZUxvZzogQ2hhbmdlTG9nIHN1cmdlcnkgZm9yIHRlZSBjb21taXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIENoYW5nZUxvZzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnkgZm9yIHRlZSBjb21taXQuCgoyMDA4LTA3LTI5IDEzOjMwOjAyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBDbGVhbnVwIHNlY3Rpb24tZmlsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgQ2xlYW51cCBzZWN0aW9uLWZpbGUuCgoyMDA4LTA3LTI5IDExOjU3OjExICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS4qOiBSZWxheSB0YWcgZXZlbnRzIGluIHRlZS4gRml4ZXMgcGFydHMgb2YgIzQ3NDAxNi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5oOgoJICBSZWxheSB0YWcgZXZlbnRzIGluIHRlZS4gRml4ZXMgcGFydHMgb2YgIzQ3NDAxNi4KCjIwMDgtMDctMjkgMDA6NDU6MjkgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIEJ1aWxkIHRoZSBuZXQgbGlicmFyeSBpZiB3ZSBoYXZlIHdpbnNvY2syLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogbGlicy9nc3QvTWFrZWZpbGUuYW06CgkgIEJ1aWxkIHRoZSBuZXQgbGlicmFyeSBpZiB3ZSBoYXZlIHdpbnNvY2syLgoKMjAwOC0wNy0yNiAxMjowMDozNiArMDAwMCAgTHVjIFBpb25jaG9uIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoKCSAgZG9jcy9tYW51YWwvOiBSZXBsYWNlIG9uZSBkaWFncmFtIHdpdGggdHdvIHNlcGFyYXRlIG9uZXMgYW5kIHVwZGF0ZXMgb3RoZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcGF0Y2ggYnk6IEx1YyBQaW9uY2hvbiA8bHVjLnBpb25jaG9uQG5va2lhLmNvbT4KCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC10aHJlYWRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9kaWFncmFtcy1waXBlbGluZXMuc3ZnOgoJICAqIGRvY3MvbWFudWFsL2hlbGxvLXdvcmxkLnBuZzoKCSAgKiBkb2NzL21hbnVhbC9saW5rZWQtZWxlbWVudHMucG5nOgoJICAqIGRvY3MvbWFudWFsL21pbWUtd29ybGQucG5nOgoJICAqIGRvY3MvbWFudWFsL3F1ZXVlLnBuZzoKCSAgKiBkb2NzL21hbnVhbC90aHJlYWQtYnVmZmVyaW5nLnBuZzoKCSAgKiBkb2NzL21hbnVhbC90aHJlYWQtc3luY2hyb25pemluZy5wbmc6CgkgIFJlcGxhY2Ugb25lIGRpYWdyYW0gd2l0aCB0d28gc2VwYXJhdGUgb25lcyBhbmQgdXBkYXRlcyBvdGhlcnMuCgkgIEZpeGVzICM1NDI0MDEuCgoyMDA4LTA3LTI1IDEwOjI0OjQzICswMDAwICBUaGlqcyBWZXJtZWlyIDx0aGlqc3Zlcm1laXJAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuaDogRml4IGxpbmsgaW4gZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgRml4IGxpbmsgaW4gZG9jdW1lbnRhdGlvbi4KCjIwMDgtMDctMjQgMTc6Mzg6NDMgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBnc3QvZ3N0bWVzc2FnZS5jOiBGaXggY29uZnVzaW5nIGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgIEZpeCBjb25mdXNpbmcgZG9jdW1lbnRhdGlvbi4KCjIwMDgtMDctMjQgMTU6MTM6MjQgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDogcmV2ZXJ0IHRoZSBjaGFuZ2VzIHRvIHRoZSBoZWFkZXIgZmlsZSBmb3IgdGhlIEFCSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIHJldmVydCB0aGUgY2hhbmdlcyB0byB0aGUgaGVhZGVyIGZpbGUgZm9yIHRoZSBBQkkuCgoyMDA4LTA3LTI0IDE0OjQ3OjU4ICswMDAwICBUaGlqcyBWZXJtZWlyIDx0aGlqc3Zlcm1laXJAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLio6IERvbid0IGNhY2hlIHRoZSBzZWVrYWJsZSBzdGF0dXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBEb24ndCBjYWNoZSB0aGUgc2Vla2FibGUgc3RhdHVzLgoJICBGaXhlcyBidWcgIzU0NDE3NAoKMjAwOC0wNy0yNCAxMjozNjoyMCArMDAwMCAgUmVuZSBTdGFkbGVyIDxtYWlsQHJlbmVzdGFkbGVyLmRlPgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtYXV0b3BsdWdnaW5nLnhtbDogQWRkIGZha2VzaW5rIHRvIGV4YW1wbGUgY29kZSB0byBjbG9zZSB0aGUgcGlwZWxpbmUgZ3JhcGguICBUaGlzIHByZXZlbnRzIHRoZSBwLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWF1dG9wbHVnZ2luZy54bWw6IEFkZCBmYWtlc2luayB0byBleGFtcGxlCgkgIGNvZGUgdG8gY2xvc2UgdGhlIHBpcGVsaW5lIGdyYXBoLiAgVGhpcyBwcmV2ZW50cyB0aGUgcHJvZ3JhbSBmcm9tCgkgIHByaW50aW5nIGludGVybmFsIGRhdGEgZmxvdyBlcnJvcnMuCgoyMDA4LTA3LTIzIDE1OjQ0OjA0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBkb2NzL21hbnVhbC9iYXNpY3MtYnVzLnhtbDogQ29ycmVjdCB0eXBvLiBGaXhlcyBidWcgIzU0NDMyMC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWJ1cy54bWw6CgkgIENvcnJlY3QgdHlwby4gRml4ZXMgYnVnICM1NDQzMjAuCgoyMDA4LTA3LTIyIDE4OjEyOjU0ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBjb25maWd1cmUuYWM6IFJlbW92ZSBBQ19JU0NfUE9TSVggbWFjcm87IGl0J3MgYnJva2VuIG9uIHNvbWUgcGxhdGZvcm1zIGFuZCBub3QgbmVlZGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFJlbW92ZSBBQ19JU0NfUE9TSVggbWFjcm87IGl0J3MgYnJva2VuIG9uIHNvbWUgcGxhdGZvcm1zIGFuZCBub3QgbmVlZGVkLgoJICBBZGQgY2hlY2sgKHRha2VuIGZyb20gLWJhc2UpIGZvciB3aW5zb2NrLCBhZGRzIFdJTjMyX0xJQlMKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgIEFkZCBXSU4zMl9MSUJTIHRvIExJQkFERCBmb3IgbGliZ3N0cmVhbWVyLiBOZWVkZWQgbm93IHRoYXQgZ3N0cG9sbCB1c2VzCgkgIHdpbnNvY2suCgkgIERlZmluZSBHU1RfRVhQT1JUUyB3aGVuIGJ1aWxkaW5nIGxpYmdzdHJlYW1lciAob25seSB1c2VkIG9uIHdpbjMyKQoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgIFVzZSBHU1RfRVhQT1JUIGluc3RlYWQgb2YgbG9jYWxseS1kZWZpbmVkIChhbmQgaW5jb3JyZWN0IElNUE9SVF9TWU1CT0wpCgkgIGZvciBzeW1ib2xzIHRoYXQgd2UgbmVlZCB0byBleHBvcnQgaW4gYm90aCB0aGVzZSBmaWxlcy4KCSAgKiBnc3QvZ3N0cG9sbC5jOgoJICBJbmNsdWRlIGdzdF9wcml2YXRlLmggaGlnaGVyIHVwIHRvIGF2b2lkIHNvbWUgY29tcGlsZSBwcm9ibGVtcyBvbiB3aW4zMi4KCjIwMDgtMDctMjIgMDk6MjQ6MzcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBGaXggdHlwb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBGaXggdHlwb3MuCgoyMDA4LTA3LTIyIDAwOjI5OjU1ICswMDAwICBUaGlqcyBWZXJtZWlyIDx0aGlqc3Zlcm1laXJAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGNhcHMuYzogUHJldmlvdXMgY29tbWl0IHdhcyB3cm9uZyBOVUxMIGNhcHMgZG9lcyBub3QgZXhpc3QgYW5kIGluZGljYXRlIGFuIGVycm9yLCBzbyBhbHNvIGFkZCBhIEZJWE1FIHRvIGdzdF9jLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6CgkgIFByZXZpb3VzIGNvbW1pdCB3YXMgd3JvbmcgTlVMTCBjYXBzIGRvZXMgbm90IGV4aXN0CgkgIGFuZCBpbmRpY2F0ZSBhbiBlcnJvciwgc28gYWxzbyBhZGQgYSBGSVhNRSB0bwoJICBnc3RfY2Fwc19pc19lcXVhbCB3aGVyZSBOVUxMIGNhcHMgYXJlIGFjY2VwdGVkLgoKMjAwOC0wNy0yMSAyMzowMjo0MCArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEFsbG93IHBhc3Npbmcgb2YgTlVMTCB0byBnc3RfY2Fwc191bmlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOgoJICBBbGxvdyBwYXNzaW5nIG9mIE5VTEwgdG8gZ3N0X2NhcHNfdW5pb24KCjIwMDgtMDctMjEgMjE6MzI6MDYgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogQWRkIGluIGRvYyB0aGF0IGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCBjYW4gYWNjZXB0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICBBZGQgaW4gZG9jIHRoYXQgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0IGNhbiBhY2NlcHQKCSAgTlVMTCB0byBjbGVhciB0YXJnZXQKCjIwMDgtMDctMTUgMjI6NTM6MDAgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC86IEdzdFJlZ2lzdHJ5UG9vbCBkb2Vzbid0IGV4aXN0OyBkb24ndCByZWZlciB0byBpdCBpbiBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIEdzdFJlZ2lzdHJ5UG9vbCBkb2Vzbid0IGV4aXN0OyBkb24ndCByZWZlciB0byBpdCBpbiBkb2NzLgoJICBEb24ndCByZWZlciB0byBmdW5jdGlvbnMgdGhhdCBkb24ndCBleGlzdCBpbiBkb2NzLCBpdCdzCgkgIHVuaGVscGZ1bC4KCjIwMDgtMDctMTIgMTc6NTE6MTYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3QuYzogRml4IHNjYW5uaW5nIG9mIHBhdGhzIGdpdmVuIHZpYSAtLWdzdC1wbHVnaW4tcGF0aC4gRml4ZXMgYnVnICM1NDIxNzUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgRml4IHNjYW5uaW5nIG9mIHBhdGhzIGdpdmVuIHZpYSAtLWdzdC1wbHVnaW4tcGF0aC4gRml4ZXMgYnVnICM1NDIxNzUuCgoyMDA4LTA3LTEyIDE3OjQzOjE1ICswMDAwICB0bWF0dGggPGxlLmJ1c2luZXNzbWFuQGdtYWlsLmNvbT4KCgkgIGRvY3MvcHdnL2J1aWxkaW5nLXRlc3RhcHAueG1sOiBEb24ndCB1c2UgYW4gdW5kZWNsYXJlZCB2YXJpYWJsZSBpbiB0aGUgZXhhbXBsZSBwcm9ncmFtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IHRtYXR0aCA8bGUgZG90IGJ1c2luZXNzbWFuIGF0IGdtYWlsIGRvdCBjb20+CgkgICogZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6CgkgIERvbid0IHVzZSBhbiB1bmRlY2xhcmVkIHZhcmlhYmxlIGluIHRoZSBleGFtcGxlIHByb2dyYW0uCgkgIEZpeGVzIGJ1ZyAjNTQyNTczLgoKMjAwOC0wNy0xMiAwOTo1OTozMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGRlYnVndXRpbHMuYzogU3F1ZWV6ZSBnaG9zdC1wYWQgbGlua3MgYW5kIHJlbW92ZSA8PiBmcm9tIGNsYXNzbmFtZSBsYWJlbHMgdG8gc2F2ZSBtb3JlIGhvcml6b250YWwgc3BhY2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIFNxdWVlemUgZ2hvc3QtcGFkIGxpbmtzIGFuZCByZW1vdmUgPD4gZnJvbSBjbGFzc25hbWUgbGFiZWxzIHRvIHNhdmUKCSAgbW9yZSBob3Jpem9udGFsIHNwYWNlLgoKMjAwOC0wNy0xMSAxOTozMDo0OCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGRlYnVndXRpbHMuYzogR2l2ZSByZXF1ZXN0IGFuZCBzb21ldGltZXMgcGFkcyBhIGRpZmZlcmVudCBzaHBlIHN0eWxlLiBDb25kZW5zZSB0aGUgZ3JhcGhzIGEgbGl0dGxlIG1vcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIEdpdmUgcmVxdWVzdCBhbmQgc29tZXRpbWVzIHBhZHMgYSBkaWZmZXJlbnQgc2hwZSBzdHlsZS4gQ29uZGVuc2UgdGhlCgkgIGdyYXBocyBhIGxpdHRsZSBtb3JlLgoKMjAwOC0wNy0xMCAwMDozMDowMiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgY29uZmlndXJlLmFjOiBEb24ndCByZXF1aXJlIGZsZXggYW5kIGJpc29uIGlmIHRoZSBwYXJzZXIgaXMgZGlzYWJsZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgRG9uJ3QgcmVxdWlyZSBmbGV4IGFuZCBiaXNvbiBpZiB0aGUgcGFyc2VyIGlzIGRpc2FibGVkLgoKMjAwOC0wNy0wOCAxMToyMDoyMiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZS5jOiBEb24ndCB1c2UgZGVjbGFyYXRpb25zIGFmdGVyIHN0YXRlbWVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgKF9saXN0X2ZpbmRfc29ydGVkX2N1c3RvbSk6CgkgIERvbid0IHVzZSBkZWNsYXJhdGlvbnMgYWZ0ZXIgc3RhdGVtZW50cy4KCjIwMDgtMDctMDggMDk6MDQ6MjUgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RjaGlsZHByb3h5LmM6IEFkZCBGSVhNRXMgZm9yIDAuMTEgdG8gdXNlIEdTVF9UWVBFX09CSkVDVCBpbiB0aGUgc2lnbmF0dXJlIG9mIHRoZSB0aGUgY2hpbGQtYWRkZWQgLyAtcmVtb3ZlZCBzaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOiAoZ3N0X2NoaWxkX3Byb3h5X2Jhc2VfaW5pdCk6CgkgIEFkZCBGSVhNRXMgZm9yIDAuMTEgdG8gdXNlIEdTVF9UWVBFX09CSkVDVCBpbiB0aGUgc2lnbmF0dXJlCgkgIG9mIHRoZSB0aGUgY2hpbGQtYWRkZWQgLyAtcmVtb3ZlZCBzaWduYWxzIGFzIEdzdENoaWxkUHJveHkKCSAgb25seSBzdXBwb3J0cyBHc3RPYmplY3RzLgoKMjAwOC0wNy0wNyAxMTowMToyNiArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6IEZpeCBtZW1sZWFrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIEZpeCBtZW1sZWFrCgoyMDA4LTA3LTA2IDEyOjQ5OjQzICswMDAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyb0BubnZhLm9yZz4KCgkgIGdzdC9nc3Rwb2xsLmM6IEZpeCAiaWdub3JlZCByZXR1cm4gdmFsdWUiIGNvbXBpbGVyIHdhcm5pbmcgd2l0aCBuZXdlciBnbGliYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRybyBhdCBubnZhIGRvdCBvcmc+CgkgICogZ3N0L2dzdHBvbGwuYzoKCSAgRml4ICJpZ25vcmVkIHJldHVybiB2YWx1ZSIgY29tcGlsZXIgd2FybmluZyB3aXRoIG5ld2VyIGdsaWJjLgoKMjAwOC0wNy0wNSAxNjoyODoyOCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdGNoaWxkcHJveHkuYzogRml4IGNvcHkmcGFzdGUgZXJyb3IgaW4gZ3N0X2NoaWxkX3Byb3h5X3JlbW92ZWQoKSBkb2N1bWVudGF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOgoJICBGaXggY29weSZwYXN0ZSBlcnJvciBpbiBnc3RfY2hpbGRfcHJveHlfcmVtb3ZlZCgpIGRvY3VtZW50YXRpb24uCgoyMDA4LTA3LTAyIDE0OjQzOjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5jOiBQcmludCBlcnJvciBkZWJ1ZyBtZXNzYWdlIGlmIHBsdWdpbiBkZXNjcmlwdGlvbiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2V0IGFyZSBOVUxMLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChDSEVDS19QTFVHSU5fREVTQ19GSUVMRCksIChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgIFByaW50IGVycm9yIGRlYnVnIG1lc3NhZ2UgaWYgcGx1Z2luIGRlc2NyaXB0aW9uIGZpZWxkcyB0aGF0IHNob3VsZAoJICBiZSBzZXQgYXJlIE5VTEwuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfY29uc3Rfc3RyaW5nKToKCSAgRG9uJ3QgY3Jhc2ggaWYgdGhlIHN0cmluZyB0byBzZXJpYWxpc2UgaXMgTlVMTCAoaXQgcmVhbGx5IHNob3VsZAoJICBub3QgYmUsIGJ1dCBhcHBhcmVudGx5IHRoaXMgdXNlZCB0byB3b3JrIHdpdGggdGhlIHhtbCByZWdpc3RyeSAuLi4pLgoKMjAwOC0wNy0wMiAxMjoyMzoxMiArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIHRvb2xzL2dzdC1wbG90LXRpbWVsaW5lLnB5OiBGaXggcGFyc2luZyBvZiBsb2cgbWVzc2FnZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LXBsb3QtdGltZWxpbmUucHk6CgkgIEZpeCBwYXJzaW5nIG9mIGxvZyBtZXNzYWdlcwoKMjAwOC0wNy0wMSAwOToyNzo0NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjogU29ydCBhbHBoYWJldGljYWxseSBzbyBtYWtlIGNoZWNrLWV4cG9ydHMgZG9lc24ndCBiYXJmLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6OgoJICBTb3J0IGFscGhhYmV0aWNhbGx5IHNvIG1ha2UgY2hlY2stZXhwb3J0cyBkb2Vzbid0IGJhcmYuCgoyMDA4LTA3LTAxIDA1OjUzOjMyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0ZXZlbnQuYzogVXNlIGdzdF9mb3JtYXRfZ2V0X25hbWUoKSB0byBpbXByb3ZlIGRlYnVnIG91dHB1dC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgIFVzZSBnc3RfZm9ybWF0X2dldF9uYW1lKCkgdG8gaW1wcm92ZSBkZWJ1ZyBvdXRwdXQuCgkgICogZ3N0L2dzdHByZXNldC5jOgoJICBSZW1vdmUgI2lmZGVmJ2VkIGNvZGUuIEFkZCBUT0RPIGNvbW1lbnQuCgkgICogZ3N0L2dzdHNlZ21lbnQuYzoKCSAgQWRkIGRlYnVnIG91dHB1dCB0byBlYXNlIHNwb3R0aW5nIGZvcm1hdCAhPSBzZWdtZW50LmZvcm1hdCBhc3NlcnRpb25zLgoKMjAwOC0wNi0zMCAwOTo0Mjo0MyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdGVzdHMvY2hlY2svbGlicy9nZHAuYzogQWxzbyBlbmFibGUgdGhlIEdEUCB1bml0IHRlc3QgYWdhaW4gb24gUFBDIG5vdyB0aGF0IHRoZSBidWcgaXMgZml4ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvZ2RwLmM6IChnc3RfZHBfc3VpdGUpOgoJICBBbHNvIGVuYWJsZSB0aGUgR0RQIHVuaXQgdGVzdCBhZ2FpbiBvbiBQUEMgbm93IHRoYXQgdGhlIGJ1ZwoJICBpcyBmaXhlZC4KCjIwMDgtMDYtMzAgMDk6Mzg6NDUgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzogRG9uJ3Qgd3JpdGUgdG8gdGhlIHNhbWUgcmVnaW9uIG9mIG1lbW9yeSBhcyBhIHVpbnQ2NCBhbmQgdWludDE2IGFzIHRoaXMgYnJlYWtzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkgIERvbid0IHdyaXRlIHRvIHRoZSBzYW1lIHJlZ2lvbiBvZiBtZW1vcnkgYXMgYSB1aW50NjQgYW5kIHVpbnQxNgoJICBhcyB0aGlzIGJyZWFrcyBzdHJpY3QgYWxpYXNpbmcgcnVsZXMgYW5kIGFwcGFyYW50bHkgYnJlYWtzIG9uIFBQQwoJICBhbmQgczM5MC4gVGhhbmtzIHRvIFNqb2VyZCBTaW1vbnMgZm9yIGFuYWx5c2luZy4gRml4ZXMgYnVnICMzNDgxMTQuCgoyMDA4LTA2LTI5IDE2OjExOjI0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6IE9wdGltaXplIGxpc3QgaGFuZGxpbmcuIFVzZSBvd24gZmluZCBmdW5jdGlvbi4gRXhwbG9pdCB0aGF0IGZhY3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZS5jOgoJICBPcHRpbWl6ZSBsaXN0IGhhbmRsaW5nLiBVc2Ugb3duIGZpbmQgZnVuY3Rpb24uIEV4cGxvaXQgdGhhdCBmYWN0IHRoYXQKCSAgdGhlIGxpc3QgaXMgc29ydGVkLiBBbHNvIHBhc3MgYmFjayB0aGUgbm9kZSBiZWZvcmUsIHNvIHRoYXQgd2UgY2FuCgkgIGluc2VydCBxdWlja2x5LiBIYXZlIGEgZmFzdCBwYXRoIGZvciBhcHBlbmQuCgoyMDA4LTA2LTI5IDE1OjAwOjI2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi86IEZpeCB0d28gdHlwb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWZyYW1lc3RlcC50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1uZWdvdGlhdGlvbi50eHQ6CgkgIEZpeCB0d28gdHlwb3MuCgoyMDA4LTA2LTI3IDA5OjAyOjUxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjb25maWd1cmUuYWM6CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgU2hvdyBjb25maWd1cmF0aW9uIHN1bWFyeSBhZnRlciBjb25maWd1cmUgcnVuLiBCYXNlZCBvbiBwYXRjaCBieQoJICBMdWMgUGlvbmNob24gPGx1Yy5waW9uY2hvbkBub2tpYS5jb20+LiBGaXhlczogIzU0MDEzNAoKMjAwOC0wNi0yNyAwNzowMzowNSArMDAwMCAgTHVjIFBpb25jaG9uIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoKCSAgZG9jcy9tYW51YWwvOiBBZGQgc2NhbGUgZmFjdG9yIGZvciBwZGYgb3V0cHV0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcGF0Y2ggYnk6IEx1YyBQaW9uY2hvbiAgPGx1Yy5waW9uY2hvbkBub2tpYS5jb20+CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtYXV0b3BsdWdnaW5nLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC10aHJlYWRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYmlucy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWVsZW1lbnRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLXBhZHMueG1sOgoJICBBZGQgc2NhbGUgZmFjdG9yIGZvciBwZGYgb3V0cHV0LgoJICAqIGRvY3MvbWFudWFsL2ludHJvLWJhc2ljcy54bWw6CgkgIFN3aXRjaGVkIHNlY3Rpb25zICJwYWRzIiBhbmQgImJpbnMiIGFuZCBhZGRlZCBhIHBpcGVsaW5lIGRpYWdyYW0uCgkgICogZG9jcy9tYW51YWwvaW50cm8tZ3N0cmVhbWVyLnhtbDoKCSAgQWRkZWQgbW9yZSBpbmZvIG9uIGdzdHJlYW1lci4KCSAgKiBkb2NzL21hbnVhbC9pbnRyby1tb3RpdmF0aW9uLnhtbDoKCSAgQ29tbWVudGVkIG91dCB0aGUgd2hvbGUgc2VjdGlvbiAiY3VycmVudCBwcm9ibGVtIiwgd2hpY2ggc291bmRzCgkgIGhpc3RvcmljYWwgYW5kIHNvbWVob3cgb3NvbGV0ZTsgaXQgY291bGQgYmUgdHVybmVkIGluIGEgcG9zaXRpdmUKCSAgd2F5IGFuZCByZXVzZWQgdG8gaW1wcm92ZSB0aGUgZGVzaWduIHByaW5jaXBsZXMuCgkgICogZG9jcy9tYW51YWwvaW50cm8tcHJlZmFjZS54bWw6CgkgIC0gVXBkYXRlIFVSTHMgdG8gbGlicmFyeS5nbm9tZS5vcmcuCgkgIC0gRG8gbm90IG1lbnRpb24gR1RLKyBpbiBwcmVsaW1pbmFyeSByZWFkaW5nIChpcnJlbGV2YW50KS4KCSAgLSBNZW50aW9uIFBsdWdpbiBXcml0ZXIncyBNYW51YWwgYW5kIGZ1cnRoZXIgcmVhZGluZyBvbmx5IGluIHRoZQoJICBwcmV2aW91cyBzZWN0aW9uLgoJICAtIEFkZGVkIGEgbGlzdCBvZiBtb3N0IHJlbGV2YW50IEdPYmplY3QvZ2xpYiB0b3BpY3MuCgkgICogZG9jcy9tYW51YWwvTWFrZWZpbGUuYW06CgkgICogZG9jcy9tYW51YWwvYmluLWVsZW1lbnQtZ2hvc3QuZmlnOgoJICAqIGRvY3MvbWFudWFsL2Jpbi1lbGVtZW50LWdob3N0LnBuZzoKCSAgKiBkb2NzL21hbnVhbC9iaW4tZWxlbWVudC1ub2dob3N0LmZpZzoKCSAgKiBkb2NzL21hbnVhbC9iaW4tZWxlbWVudC1ub2dob3N0LnBuZzoKCSAgKiBkb2NzL21hbnVhbC9iaW4tZWxlbWVudC5maWc6CgkgICogZG9jcy9tYW51YWwvYmluLWVsZW1lbnQucG5nOgoJICAqIGRvY3MvbWFudWFsL2ZpbHRlci1lbGVtZW50LW11bHRpLmZpZzoKCSAgKiBkb2NzL21hbnVhbC9maWx0ZXItZWxlbWVudC1tdWx0aS5wbmc6CgkgICogZG9jcy9tYW51YWwvZmlsdGVyLWVsZW1lbnQuZmlnOgoJICAqIGRvY3MvbWFudWFsL2ZpbHRlci1lbGVtZW50LnBuZzoKCSAgKiBkb2NzL21hbnVhbC9nc3RyZWFtZXItb3ZlcnZpZXcucG5nOgoJICAqIGRvY3MvbWFudWFsL2hlbGxvLXdvcmxkLmZpZzoKCSAgKiBkb2NzL21hbnVhbC9oZWxsby13b3JsZC5wbmc6CgkgICogZG9jcy9tYW51YWwvbGlua2VkLWVsZW1lbnRzLmZpZzoKCSAgKiBkb2NzL21hbnVhbC9saW5rZWQtZWxlbWVudHMucG5nOgoJICAqIGRvY3MvbWFudWFsL21pbWUtd29ybGQuZmlnOgoJICAqIGRvY3MvbWFudWFsL21pbWUtd29ybGQucG5nOgoJICAqIGRvY3MvbWFudWFsL3F1ZXVlLmZpZzoKCSAgKiBkb2NzL21hbnVhbC9xdWV1ZS5wbmc6CgkgICogZG9jcy9tYW51YWwvc2ltcGxlLXBsYXllci5wbmc6CgkgICogZG9jcy9tYW51YWwvc2luay1lbGVtZW50LmZpZzoKCSAgKiBkb2NzL21hbnVhbC9zaW5rLWVsZW1lbnQucG5nOgoJICAqIGRvY3MvbWFudWFsL3NyYy1lbGVtZW50LmZpZzoKCSAgKiBkb2NzL21hbnVhbC9zcmMtZWxlbWVudC5wbmc6CgkgICogZG9jcy9tYW51YWwvZGlhZ3JhbXMtZ2VuZXJhbC5zdmc6CgkgICogZG9jcy9tYW51YWwvZGlhZ3JhbXMtcGlwZWxpbmVzLnN2ZzoKCSAgUmVtb3ZlZCAuZmlnLCBhZGRlZCAucG5nIGNvdW50ZXJwYXJ0LgoJICBGaXhlczogIzUzOTEzNwoKMjAwOC0wNi0yNiAyMDoyNzowMCArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS4qOiByZXZlcnQgZXh0cmEtc2l6ZS1idWZmZXJzIHN0dWZmLCBjYXVzZWQgc29tZSByYWNlIGNvbmRpdGlvbnMgYW5kIGV4dHJhLXNpemUtYnVmZmVycy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuaDoKCSAgcmV2ZXJ0IGV4dHJhLXNpemUtYnVmZmVycyBzdHVmZiwgY2F1c2VkIHNvbWUgcmFjZSBjb25kaXRpb25zCgkgIGFuZCBleHRyYS1zaXplLWJ1ZmZlcnMgaXMgbm90IHVzZWQgYW55bW9yZS4gRG9jcyBuZWVkcyBzb21lIHVwZGF0ZXMKCjIwMDgtMDYtMjYgMTI6NTI6NDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9jb21tb24vOiBVcGRhdGUgd2luMzIgZmlsZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmM6CgkgICogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5oOgoJICAqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIFVwZGF0ZSB3aW4zMiBmaWxlcy4KCjIwMDgtMDYtMjYgMTI6MjQ6MDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZGVidWd1dGlscy5oOiBBZGQgbWlzc2luZyBTaW5jZScgbWFya2VycyB0byBndGstZG9jIGJsdXJicy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGRlYnVndXRpbHMuaDogKEdzdERlYnVnR3JhcGhEZXRhaWxzKSwKCSAgKEdTVF9ERUJVR19CSU5fVE9fRE9UX0ZJTEUpOgoJICBBZGQgbWlzc2luZyBTaW5jZScgbWFya2VycyB0byBndGstZG9jIGJsdXJicy4KCjIwMDgtMDYtMjYgMTE6NTk6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9saWJzL3RyYW5zZm9ybTEuYzogQWRkIHNvbWUgbW9yZSB0ZXN0cyB3aXRoIHN3aXRjaGluZyBjYXBzIGluIGJ1ZmZlcl9hbGxvYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svbGlicy90cmFuc2Zvcm0xLmM6IChidWZmZXJfYWxsb2NfcHQxKSwKCSAgKHNldF9jYXBzX3B0MSksIChHU1RfU1RBUlRfVEVTVCksIChzZXRfY2Fwc19wdDIpLCAodHJhbnNmb3JtX2lwXzEpLAoJICAoc2V0X2NhcHNfMSksIChzZXRfY2Fwc19jdDEpLCAodHJhbnNmb3JtX2N0MSksCgkgICh0cmFuc2Zvcm1fY2Fwc19jdDEpLCAodHJhbnNmb3JtX3NpemVfY3QxKSwgKGJ1ZmZlcl9hbGxvY19jdDEpLAoJICAoc2V0X2NhcHNfY3QyKSwgKHRyYW5zZm9ybV9jdDIpLCAodHJhbnNmb3JtX2NhcHNfY3QyKSwKCSAgKHRyYW5zZm9ybV9zaXplX2N0MiksIChidWZmZXJfYWxsb2NfY3QyKToKCSAgQWRkIHNvbWUgbW9yZSB0ZXN0cyB3aXRoIHN3aXRjaGluZyBjYXBzIGluIGJ1ZmZlcl9hbGxvYy4KCjIwMDgtMDYtMjUgMTc6Mjc6MzAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9saWJzLzogTW9yZSB0ZXN0cywgcHJlcGFyZSBmb3IgdGVzdHMgd2l0aCBzd2l0Y2hpbmcgY2FwcyBpbiBidWZmZXJfYWxsb2MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvdGVzdF90cmFuc2Zvcm0uYzogKGdzdF90ZXN0X3RyYW5zX2Jhc2VfaW5pdCksCgkgIChnc3RfdGVzdF90cmFuc19jbGFzc19pbml0KSwgKHJlc3VsdF9zaW5rX2NoYWluKSwKCSAgKHJlc3VsdF9idWZmZXJfYWxsb2MpLCAoZ3N0X3Rlc3RfdHJhbnNfbmV3KSwgKGdzdF90ZXN0X3RyYW5zX2ZyZWUpLAoJICAoZ3N0X3Rlc3RfdHJhbnNfcHVzaCksIChnc3RfdGVzdF90cmFuc19wb3ApOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvdHJhbnNmb3JtMS5jOiAoYnVmZmVyX2FsbG9jX3B0MSksCgkgIChzZXRfY2Fwc19wdDEpLCAoR1NUX1NUQVJUX1RFU1QpLCAoc2V0X2NhcHNfcHQyKSwgKHRyYW5zZm9ybV9pcF8xKSwKCSAgKHNldF9jYXBzXzEpLCAoc2V0X2NhcHNfY3QxKSwgKHRyYW5zZm9ybV9jdDEpLAoJICAodHJhbnNmb3JtX2NhcHNfY3QxKSwgKHRyYW5zZm9ybV9zaXplX2N0MSksIChidWZmZXJfYWxsb2NfY3QxKSwKCSAgKHNldF9jYXBzX2N0MiksICh0cmFuc2Zvcm1fY3QyKSwgKHRyYW5zZm9ybV9jYXBzX2N0MiksCgkgICh0cmFuc2Zvcm1fc2l6ZV9jdDIpLCAoYnVmZmVyX2FsbG9jX2N0MiksCgkgIChnc3RfYmFzZXRyYW5zZm9ybV9zdWl0ZSk6CgkgIE1vcmUgdGVzdHMsIHByZXBhcmUgZm9yIHRlc3RzIHdpdGggc3dpdGNoaW5nIGNhcHMgaW4gYnVmZmVyX2FsbG9jLgoKMjAwOC0wNi0yNSAxNTozOTowMiArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS4qOiBGaXggZGVhZC1sb2NrIGluIHVuZGVycnVuX2NiCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5oOgoJICBGaXggZGVhZC1sb2NrIGluIHVuZGVycnVuX2NiCgoyMDA4LTA2LTI1IDE0OjQ5OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1zdGF0ZXMudHh0OiBGaXggZGV2aWNlIG9wZW4vY2xvc2UgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zdGF0ZXMudHh0OgoJICBGaXggZGV2aWNlIG9wZW4vY2xvc2UgZG9jcy4KCjIwMDgtMDYtMjUgMTQ6NDc6MTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIENoYW5nZUxvZzogTWVudGlvbiBidWdudW1iZXIgZm9yIGxhc3QgY29tbWl0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBDaGFuZ2VMb2c6CgkgIE1lbnRpb24gYnVnbnVtYmVyIGZvciBsYXN0IGNvbW1pdC4KCjIwMDgtMDYtMjUgMTQ6NDQ6NTIgKzAwMDAgIEx1YyBQaW9uY2hvbiA8bHVjLnBpb25jaG9uQG5va2lhLmNvbT4KCgkgIGRvY3MvbWFudWFsL21hbnVhbC54bWw6IC0gUmVvcmdhbmlzZWQgdGhlIHByZXZpb3VzICJpbnRyb2R1Y3Rpb24iIGJ1bmRsZSBpbnRvIEZvcmV3b3JkLAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcGF0Y2ggYnk6IEx1YyBQaW9uY2hvbiAgPGx1Yy5waW9uY2hvbkBub2tpYS5jb20+CgkgICogZG9jcy9tYW51YWwvbWFudWFsLnhtbDoKCSAgLSBSZW9yZ2FuaXNlZCB0aGUgcHJldmlvdXMgImludHJvZHVjdGlvbiIgYnVuZGxlIGludG8gRm9yZXdvcmQsCgkgIEludHJvZHVjdGlvbiwgYW5kIEFib3V0IEdTdHJlYW1lci4gVGhlIHR3byBmaXJzdCBhcmUgPHByZWZhY2U+CgkgIGRvY2Jvb2sgZWxlbWVudHMuIFRoZSBsYXRlciBpcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgYm9vay4KCSAgLSBhZGRlZCBpbnRyby1nc3RyZWFtZXIueG1sIChjb250ZW50IHBhcnRpYWxseSBmcm9tCgkgIGludHJvLXByZWZhY2UueG1sKQoJICAtIG1vdmVkIGFwcGVuZGl4LXdpbjMyLnhtbCBpbnRvIGFwcGVuZGl4LWludGVncmF0aW9uLnhtbAoJICAqIGRvY3MvbWFudWFsL2ludHJvLXByZWZhY2UueG1sOiBnc3RyZWFtZXIgc2VjdGlvbiBtb3ZlZC4uLgoJICAqIGRvY3MvbWFudWFsL2ludHJvLWdzdHJlYW1lci54bWw6IC4uLmhlcmUuIG5ldyBmaWxlLgoJICAqIGRvY3MvbWFudWFsL2FwcGVuZGl4LXdpbjMyLnhtbDogcmVtb3ZlZCBmaWxlLiBDb250ZW50IG1vdmVkLi4uCgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtaW50ZWdyYXRpb24ueG1sOiAuLi5oZXJlLgoJICAqIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC1jb21wb25lbnRzLnhtbDogc2VjdGlvbiBhYm91dCBHc3RFZGl0b3IgbW92ZWQuLi4KCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1jaGVja2xpc3QueG1sOiAuLi5oZXJlLgoKMjAwOC0wNi0yNSAxNDozMjo1MyArMDAwMCAgTHVjIFBpb25jaG9uIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoKCSAgZG9jcy9tYW51YWwvOiAtIEV4cGxpY2l0ZWx5IGluY2x1ZGUgZ2xpYi5oLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcGF0Y2ggYnk6IEx1YyBQaW9uY2hvbiAgPGx1Yy5waW9uY2hvbkBub2tpYS5jb20+CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWhlbGxvd29ybGQueG1sOgoJICAqIGRvY3MvbWFudWFsL2hlbGxvLXdvcmxkLmZpZzoKCSAgLSBFeHBsaWNpdGVseSBpbmNsdWRlIGdsaWIuaC4KCSAgLSBEbyBub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMuCgkgIC0gVXNlIGdfcHJpbnRlcnIoKSBpbnN0ZWFkIG9mIGdfcHJpbnQoKS4KCSAgLSBNaW5vciBmb3JtYXRpbmcvcmVuYW1pbmcgdG8gaW5jcmVhc2UgcmVhZGliaWxpdHkuCgkgIC0gUmVuYW1lZCBuZXdfcGFkKCkgdG8gb25fcGFkX2FkZGVkKCkKCSAgLSBJbXByb3ZlZCBleHBsZW5hdG9yeSBjb21tZW50cy4KCSAgLSByZW5hbWVkIG9nZyBwYXJzZXIgdG8gb2dnIGRlbXV4ZXIKCSAgLSBVc2UgImF1dG9hdWRpb3NpbmsiIGluc3RlYWQgb2YgImFsc2FzaW5rIi4KCSAgRml4ZXM6ICM1Mzg2MTkKCjIwMDgtMDYtMjUgMTQ6Mjc6MzcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIENoYW5nZUxvZzogUmVtb3ZlIGN2cyBjb25mbGljdCBtYXJrZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIENoYW5nZUxvZzoKCSAgUmVtb3ZlIGN2cyBjb25mbGljdCBtYXJrZXIuCgoyMDA4LTA2LTI1IDE0OjI1OjQ5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL1JFQURNRTogRG9jdW1lbnQgdGhhdCBmb3IgcGxnaW4tZG9jcyB3ZSBleHRyYXh0IGhlIHNob3J0LWRlc2MgZnJvbSB0aGUgZWxlbWVudCBkZXRhaWxzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgRG9jdW1lbnQgdGhhdCBmb3IgcGxnaW4tZG9jcyB3ZSBleHRyYXh0IGhlIHNob3J0LWRlc2MgZnJvbSB0aGUgZWxlbWVudAoJICBkZXRhaWxzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3RhdGVzLnR4dDoKCSAgVGVsbCB0aGF0IGRldmljZXMgc2hvdWxkIGJlIGNsb3NlZCBpbiBQQVVTRUQgLT4gUkVBRFkuCgkgICogZG9jcy9tYW51YWwvUkVBRE1FOgoJICBEb2N1bWVudCBob3cgdGVzdHMgaW4gdGhlIG1hbnVhbCBhcmUgaGFuZGxlZC4KCSAgKiBkb2NzL21hbnVhbHMubWFrOgoJICBUeXBvIGluIGNvbW1lbnQuCgoyMDA4LTA2LTI1IDExOjUwOjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBPbmx5IGNhcmUgYWJvdXQgbGF0ZW5jeSBtaW4gYW5kIG1heCB3aGVuIHRoZSBzaW5rIGlzIGFjdHVhbGx5IGEgbGl2ZSBzaW5rLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fcXVlcnlfbGF0ZW5jeV9mb2xkKToKCSAgT25seSBjYXJlIGFib3V0IGxhdGVuY3kgbWluIGFuZCBtYXggd2hlbiB0aGUgc2luayBpcyBhY3R1YWxseSBhIGxpdmUKCSAgc2luay4KCjIwMDgtMDYtMjUgMTA6NTM6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDogRml4IHR5cG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICBGaXggdHlwby4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtdHJhbnNmb3JtLnR4dDoKCSAgQWRkIG5vdGVzIGFib3V0IHdoeSB0cmFuc2Zvcm0gbmVlZHMgdG8ga25vdyBpbnB1dC9vdXRwdXQgc2l6ZXMuCgkgIEFkZCBzb21lIGlzc3VlcyB0aGF0IG5lZWQgdG8gYmUgc29sdmVkLgoJICBBZGQgc29tZSBtb3JlIHVzZSBjYXNlcy4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL3Rlc3RfdHJhbnNmb3JtLmM6IChnc3RfdGVzdF90cmFuc19iYXNlX2luaXQpLAoJICAoZ3N0X3Rlc3RfdHJhbnNfY2xhc3NfaW5pdCksIChyZXN1bHRfc2lua19jaGFpbiksCgkgIChyZXN1bHRfYnVmZmVyX2FsbG9jKSwgKGdzdF90ZXN0X3RyYW5zX25ldyksIChnc3RfdGVzdF90cmFuc19mcmVlKSwKCSAgKGdzdF90ZXN0X3RyYW5zX3B1c2gpLCAoZ3N0X3Rlc3RfdHJhbnNfcG9wKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3RyYW5zZm9ybTEuYzogKGJ1ZmZlcl9hbGxvY19wdDEpLAoJICAoc2V0X2NhcHNfcHQxKSwgKEdTVF9TVEFSVF9URVNUKSwgKHNldF9jYXBzX3B0MiksICh0cmFuc2Zvcm1faXBfMSksCgkgIChzZXRfY2Fwc18xKSwgKHNldF9jYXBzX2N0MSksICh0cmFuc2Zvcm1fY3QxKSwKCSAgKHRyYW5zZm9ybV9jYXBzX2N0MSksICh0cmFuc2Zvcm1fc2l6ZV9jdDEpLCAoYnVmZmVyX2FsbG9jX2N0MSksCgkgIChnc3RfYmFzZXRyYW5zZm9ybV9zdWl0ZSk6CgkgIEFkZCBzdXBvcnQgZm9yIGRpZmZlcmVudCBwYWQgdGVtcGxhdGVzIGFuZCBidWZmZXItYWxsb2MuCgkgIEFkZCBtb3JlIGNoZWNrcyBmb3IgY2FwcyBhbmQgYnVmZmVyLWFsbG9jLgoJICBBZGQgY2hlY2tzIGZvciBwcm94eSBidWZmZXIgYWxsb2MuCgkgIEFkZCB1bml0IHRlc3QgZm9yIGNvcHkgdHJhbnNmb3JtLgoKMjAwOC0wNi0yNCAxOTo1Njo1MSArMDAwMCAgTHVjIFBpb25jaG9uIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoKCSAgZG9jcy9tYW51YWwvOiBUeXBvIGFuZCBmb3JtYXR0aW5nIGZpeGVzICgjNTM4NTk0KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBMdWMgUGlvbmNob24gIDxsdWMucGlvbmNob25Abm9raWEuY29tPgoJICAqIGRvY3MvbWFudWFsL2FwcGVuZGl4LWludGVncmF0aW9uLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1saWNlbnNpbmcueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1lbGVtZW50cy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWhlbGxvd29ybGQueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1wYWRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9oaWdobGV2ZWwtY29tcG9uZW50cy54bWw6CgkgICogZG9jcy9tYW51YWwvaGlnaGxldmVsLXhtbC54bWw6CgkgICogZG9jcy9tYW51YWwvaW50cm8tYmFzaWNzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9pbnRyby1wcmVmYWNlLnhtbDoKCSAgVHlwbyBhbmQgZm9ybWF0dGluZyBmaXhlcyAoIzUzODU5NCkuCgoyMDA4LTA2LTI0IDA3OjQ5OjM2ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogRml4IHNvbWUgbWVtb3J5IGxlYWtzIGFuZCB1c2VzIG9mIG9iamVjdCBpbnN0YW5jZXMgdGhhdCB3ZSBkb24ndCBhY3R1YWxseSBvd24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggc29tZSBtZW1vcnkgbGVha3MgYW5kIHVzZXMgb2Ygb2JqZWN0IGluc3RhbmNlcyB0aGF0IHdlIGRvbid0CgkgIGFjdHVhbGx5IG93bi4KCjIwMDgtMDYtMjIgMTk6MTk6MzUgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogQWRkIGZ1bmN0aW9uYWxpdHkgdG8gZXh0cmEtc2l6ZS1idWZmZXJzIHByb3BlcnR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzoKCSAgQWRkIGZ1bmN0aW9uYWxpdHkgdG8gZXh0cmEtc2l6ZS1idWZmZXJzIHByb3BlcnR5LgoKMjAwOC0wNi0yMiAxNDozNToxMyArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBEb24ndCB1cGRhdGUgdGhlIGN1cl90aW1lIG9uIEdTVF9DTE9DS19USU1FX05PTkUgKCM1Mzc4MDQpIGFuZCBkb24ndCBhY3RpdmF0ZSB0aGUgcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzoKCSAgRG9uJ3QgdXBkYXRlIHRoZSBjdXJfdGltZSBvbiBHU1RfQ0xPQ0tfVElNRV9OT05FICgjNTM3ODA0KSBhbmQgZG9uJ3QKCSAgYWN0aXZhdGUgdGhlIHBhZHMgaWYgdGhleSBhcmUgYWRkZWQgaW4gU1RBVEVfTlVMTC4KCjIwMDgtMDYtMjEgMjE6MjA6MTMgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBZGQgbmV3IEFQSSB0byBkb2MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBBUEkgdG8gZG9jCgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOgoJICBBUEk6IGdzdF9jaGVja190ZWFyZG93bl9wYWRfYnlfbmFtZQoKMjAwOC0wNi0yMSAxOTo0ODo1MyArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLio6IEFsc28gc2V0dXAgcmVxdWVzdCBwYWRzIGFuZCBhbGxvdyBzZXR1cCBwYWRzIGJ5IG5hbWUgKCM1Mzc4MTIpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgQWxzbyBzZXR1cCByZXF1ZXN0IHBhZHMgYW5kIGFsbG93IHNldHVwIHBhZHMgYnkgbmFtZSAoIzUzNzgxMikKCSAgQVBJOiBnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZF9ieV9uYW1lCgkgIEFQSTogZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkX2J5X25hbWUKCjIwMDgtMDYtMjAgMjE6MDg6NDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdGVzdHMvY2hlY2svOiBVc2UgSEFWRV9WQUxHUklORF9IIHNvbWUgbW9yZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOgoJICAqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9wYXJzZS1sYXVuY2guYzoKCSAgVXNlIEhBVkVfVkFMR1JJTkRfSCBzb21lIG1vcmUuCgoyMDA4LTA2LTIwIDE2OjI5OjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHNjcmlwdHMvY3ZzLXVwZGF0ZS5zaDogUGFzcyBhcmd1bWVudHMgdG8gbWFrZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogc2NyaXB0cy9jdnMtdXBkYXRlLnNoOgoJICBQYXNzIGFyZ3VtZW50cyB0byBtYWtlLgoJICBSdW4gYXV0b3JlZ2VuLnNoIGlmIE1ha2VmaWxlIGlzIG5vdCB0aGVyZS4KCjIwMDgtMDYtMjAgMTU6NTQ6NDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgRG9uJ3QgYXNzdW1lIHRoYXQgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+IGV4aXN0cyBqdXN0IGJlY2F1c2UgdGhlIGJpbmFyeSBpcyB0aGVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIERvbid0IGFzc3VtZSB0aGF0IDx2YWxncmluZC92YWxncmluZC5oPiBleGlzdHMganVzdCBiZWNhdXNlCgkgIHRoZSBiaW5hcnkgaXMgdGhlcmUuCgoyMDA4LTA2LTIwIDEyOjA2OjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svOiBBZGQgc29tZSB0ZXN0IGJhc2V0cmFuc2Zvcm0gZWxlbWVudCBhbmQgdGhlIGJlZ2lubmluZ3Mgb2YgdmFyaW91cyB1bml0IHRlc3RzIGZvciBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy90ZXN0X3RyYW5zZm9ybS5jOiAoZ3N0X3Rlc3RfdHJhbnNfYmFzZV9pbml0KSwKCSAgKGdzdF90ZXN0X3RyYW5zX2NsYXNzX2luaXQpLCAoZ3N0X3Rlc3RfdHJhbnNfaW5pdCksCgkgIChnc3RfdGVzdF90cmFuc19zZXRfZGF0YSksIChyZXN1bHRfc2lua19jaGFpbiksCgkgIChnc3RfdGVzdF90cmFuc19uZXcpLCAoZ3N0X3Rlc3RfdHJhbnNfZnJlZSksIChnc3RfdGVzdF90cmFuc19wdXNoKSwKCSAgKGdzdF90ZXN0X3RyYW5zX3BvcCk6CgkgICogdGVzdHMvY2hlY2svbGlicy90cmFuc2Zvcm0xLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgICh0cmFuc2Zvcm1faXBfMSksIChzZXRfY2Fwc18xKSwgKGdzdF9iYXNldHJhbnNmb3JtX3N1aXRlKToKCSAgQWRkIHNvbWUgdGVzdCBiYXNldHJhbnNmb3JtIGVsZW1lbnQgYW5kIHRoZSBiZWdpbm5pbmdzIG9mIHZhcmlvdXMKCSAgdW5pdCB0ZXN0cyBmb3IgaXQuCgoyMDA4LTA2LTIwIDExOjI0OjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiBJbmNyZWFzZSBjb2RlIHJlYWRhYmlsaXR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChoZWxwZXJfZmluZF9wZWVrKToKCSAgSW5jcmVhc2UgY29kZSByZWFkYWJpbGl0eS4KCSAgRG9uJ3QgdHJ5IHRvIGNvbXBhcmUgYnVmZmVyIG9mZnNldHMgd2hlbiB0aGVyIGFyZSBpbnZhbGlkLgoKMjAwOC0wNi0yMCAxMTowNzowNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOiBEaXN0IHNvbWUgbW9yZSBkZXNpZ24gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vTWFrZWZpbGUuYW06CgkgIERpc3Qgc29tZSBtb3JlIGRlc2lnbiBkb2NzLgoJICAqIGRvY3MvcmFuZG9tL21vdmluZy1wbHVnaW5zOgoJICBTbWFsbCBhZGRpdGlvbjogZ29vZCBwbHVnaW5zIG11c3RuJ3QgaGF2ZSBmdW5jdGlvbmFsIGNvZGUKCSAgd2l0aGluIGFzc2VydGlvbiBtYWNyb3MuCgoyMDA4LTA2LTIwIDEwOjMyOjM0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vZHJhZnQtZnJhbWVzdGVwLnR4dDogU29tZSBpZGVhcyBhYm91dCBhIGZyYW1lc3RlcCBBUEkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtZnJhbWVzdGVwLnR4dDoKCSAgU29tZSBpZGVhcyBhYm91dCBhIGZyYW1lc3RlcCBBUEkKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtdHJhbnNmb3JtLnR4dDoKCSAgU3RhcnQgZGVzaWduIGFuZCB1c2UgY2FzZXMgZm9yIGJhc2V0cmFuc2Zvcm0gaW4gb3JkZXIgdG8gZ2V0IGl0CgkgIGZpeGVkIHNvb24uCgoyMDA4LTA2LTIwIDEwOjIwOjA4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1cy5jOiBNYWtlIGl0IGtub3duIHRoYXQgZ3N0X2J1c19wb2xsKCkgaXMgcHVyZSBldmlsIChmaXhlcyAjNTM4ODEwKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICBNYWtlIGl0IGtub3duIHRoYXQgZ3N0X2J1c19wb2xsKCkgaXMgcHVyZSBldmlsIChmaXhlcyAjNTM4ODEwKS4KCjIwMDgtMDYtMjAgMTA6MTQ6NTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBSZW1vdmUgc2hvcnRfZGVzY3JpcHRpb24uIEFkZCBiYXNpYyBkb2NzIGZvciBnc3R0eXBlZmluZGVsZW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIFJlbW92ZSBzaG9ydF9kZXNjcmlwdGlvbi4gQWRkIGJhc2ljIGRvY3MgZm9yIGdzdHR5cGVmaW5kZWxlbWVudC4KCSAgU2ltcGxpZnkgbWFya3VwIGZvciBmYWtlc3JjL2Zkc3JjLgoKMjAwOC0wNi0yMCAxMDowNzoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogQWRkZWQgU2luY2UgZG9jLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpOgoJICBBZGRlZCBTaW5jZSBkb2MuCgoyMDA4LTA2LTIwIDEwOjAyOjE0ICswMDAwICBqb2VsIGxhcnNzb24gPHRpbGxqb2VsQGdtYWlsLmNvbT4KCgkgIEFkZCB0aW1lb3V0IHByb3BlcnR5IGxpa2UgdWRwc3JjLiBGaXhlcyAjNTM4NjI4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IGpvZWwgbGFyc3NvbiA8dGlsbGpvZWwgYXQgZ21haWwgZG90IGNvbT4KCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMuYXJnczoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19pbml0KSwgKGdzdF9mZF9zcmNfdXBkYXRlX2ZkKSwKCSAgKGdzdF9mZF9zcmNfc2V0X3Byb3BlcnR5KSwgKGdzdF9mZF9zcmNfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mZF9zcmNfY3JlYXRlKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkgIEFkZCB0aW1lb3V0IHByb3BlcnR5IGxpa2UgdWRwc3JjLiBGaXhlcyAjNTM4NjI4LgoJICBBZGQgc29tZSBtb3JlIGRvY3MgYW5kIGV4YW1wbGUgcGlwZWxpbmVzLgoKMjAwOC0wNi0yMCAwODo1NDo0NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBtZXRob2QgdG8gYWxsb3cgc2lua3MgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGRlbGF5IGJldHdlZW4gdGhlIHN5bmMgdGltZXMgYW5kIHRoZSBhY3R1YWwgcmVuZGVyaW5nIG9mIHRoZSBkYXRhLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXJ5X2xhdGVuY3kpLCAoZ3N0X2Jhc2Vfc2lua19zZXRfcmVuZGVyX2RlbGF5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3JlbmRlcl9kZWxheSksIChnc3RfYmFzZV9zaW5rX3dhaXRfZW9zKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgQWRkIG1ldGhvZCB0byBhbGxvdyBzaW5rcyB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgZGVsYXkgYmV0d2VlbiB0aGUgc3luYwoJICB0aW1lcyBhbmQgdGhlIGFjdHVhbCByZW5kZXJpbmcgb2YgdGhlIGRhdGEuCgkgIEFQSTogZ3N0X2Jhc2Vfc2lua19zZXRfcmVuZGVyX2RlbGF5KCkKCSAgQVBJOiBnc3RfYmFzZV9zaW5rX2dldF9yZW5kZXJfZGVsYXkoKQoKMjAwOC0wNi0yMCAwODo0NTowMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IEJ1bXAgdmVyc2lvbiBudW1iZXIgYmFjayB0byBkZXYgLT4gMC4xMC4yMC4xCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQnVtcCB2ZXJzaW9uIG51bWJlciBiYWNrIHRvIGRldiAtPiAwLjEwLjIwLjEKCjIwMDgtMDYtMjAgMDg6Mzk6NTQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIEFQSTogQWRkIEdTVF9UQUdfQVRUQUNITUVOVCBmb3IgZ2VuZXJpYyBmaWxlIGF0dGFjaG1lbnRzIHRvIHN0cmVhbXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzogKF9nc3RfdGFnX2luaXRpYWxpemUpOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIEFQSTogQWRkIEdTVF9UQUdfQVRUQUNITUVOVCBmb3IgZ2VuZXJpYyBmaWxlIGF0dGFjaG1lbnRzIHRvIHN0cmVhbXMuCgkgIEZpeGVzIGJ1ZyAjNTM4NTY4LgoKMjAwOC0wNi0yMCAwODozNjo0NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IFJldmVydCBvbmUgY2hhbmdlLCB0aGF0IG1ha2UgcmV0IHZhbHVlIHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICBSZXZlcnQgb25lIGNoYW5nZSwgdGhhdCBtYWtlIHJldCB2YWx1ZSBwb3NzaWJsZSB1bmluaXRpYWxpemVkLgoKMjAwOC0wNi0yMCAwODozMjozNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IFVzZSBmcmVlemUvdGhhdyBub3RpZnkgdG8gc3luYyBub3RpZnkgZW1pc3Npb24gYSBiaXQgKGl0cyBhbHNvIG1vcmUgZWZmaWNpZW50KS4gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICBVc2UgZnJlZXplL3RoYXcgbm90aWZ5IHRvIHN5bmMgbm90aWZ5IGVtaXNzaW9uIGEgYml0IChpdHMgYWxzbyBtb3JlCgkgIGVmZmljaWVudCkuIE1vdmUgZGVidWcgb3V0cHV0IHRvIExPRyAoaXMgY2FsbGVkIGEgbG90IGluIGEgbG9vcCkuCgkgIEFsd2F5cyB1bnNldCBnX3ZhbHVlcyBpZiB0aGUgaGF2ZSBiZWVuIGluaXRpYWxpemVkLgoKMjAwOC0wNi0yMCAwODoyODo0NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogSWYgd2UgaGF2ZSBub3Qgc2VlbiBhIGJ1ZmZlciBiZWZvcmUgRU9TLCB1c2UgdGhlIHNlZ21lbnQgdmFsdWVzIHRvIHJlcG9ydCB0aGUgY3VycmVudCBwby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF9zeW5jX3RpbWVzKSwKCSAgKGdzdF9iYXNlX3Npbmtfd2FpdF9lb3MpLCAoZ3N0X2Jhc2Vfc2lua19ldmVudCk6CgkgIElmIHdlIGhhdmUgbm90IHNlZW4gYSBidWZmZXIgYmVmb3JlIEVPUywgdXNlIHRoZSBzZWdtZW50IHZhbHVlcyB0bwoJICByZXBvcnQgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW5zdGVhZCBvZiBpbnZhbGlkIHBvc2l0aW9ucy4KCjIwMDgtMDYtMjAgMDg6MjE6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIElnbm9yZSBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3BsdWdpbnMvdG1wbC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2NoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICBJZ25vcmUgbW9yZS4KCjIwMDgtMDYtMjAgMDg6MTc6MDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIFJld3JpdGUgaGFuZGxpbmcgb2YgZGVmYXVsdCB2YWx1ZXMuIEZpeCBvdmVyZmxvdyB3aXRoIHVuc2lnbmVkIHR5cGVzIGluIGxpbmVhciBpbnRlcnBvbGF0aW9uLiBSZW1vdmUgbm93IG9ic29sZXRlIF9maS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6CgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6CgkgIFJld3JpdGUgaGFuZGxpbmcgb2YgZGVmYXVsdCB2YWx1ZXMuIEZpeCBvdmVyZmxvdyB3aXRoIHVuc2lnbmVkIHR5cGVzCgkgIGluIGxpbmVhciBpbnRlcnBvbGF0aW9uLiBSZW1vdmUgbm93IG9ic29sZXRlIF9maXJzdF92YWx1ZSgpIGZ1bmN0aW9uLgoJICBBZGQgbW9yZSB0ZXN0cy4gRml4ZXMgIzUzODIwMS4KCjIwMDgtMDYtMjAgMDg6MTQ6MjMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogQWRkIGRlYnVnIGluZm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NsYXNzX2luaXQpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpOgoJICBBZGQgZGVidWcgaW5mby4KCSAgV2hlbiBhIGJ1ZmZlciBpcyB3cml0YWJsZSwgaXRzIG1ldGFkYXRhIGlzIGFsc28gd3JpdGFibGUgc28gd2UgZG9uJ3QKCSAgbmVlZCB0byBzdWJidWZmZXIgKHdoaWNoIHRoZW4gbWFrZXMgdGhlIGJ1ZmZlciBub3Qtd3JpdGFibGUgYW55bW9yZSkuCgo9PT0gcmVsZWFzZSAwLjEwLjIwID09PQoKMjAwOC0wNi0xOCAxMDo1ODozNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5oaWVyYXJjaHk6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogZ3N0cmVhbWVyLmRvYXA6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgUmVsZWFzZSAwLjEwLjIwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZWxlYXNlIDAuMTAuMjAKCjIwMDgtMDYtMTggMTA6NTY6MTggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDgtMDYtMTEgMjE6MTQ6MTcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiAwLjEwLjE5LjMgcHJlLXJlbGVhc2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAwLjEwLjE5LjMgcHJlLXJlbGVhc2UKCjIwMDgtMDYtMTEgMjA6MDc6MzEgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgUmVuYW1lIERBVEFESVIgdG8gR1NUX0RBVEFESVIgdG8gYXZvaWQgYnVpbGQgcHJvYmxlbXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3RwcmVzZXQuYzoKCSAgUmVuYW1lIERBVEFESVIgdG8gR1NUX0RBVEFESVIgdG8gYXZvaWQgYnVpbGQgcHJvYmxlbXMKCSAgb24gd2luMzIuIFBhdGNoIEJ5OiBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCSAgRml4ZXM6ICM1MzY4NTcKCjIwMDgtMDYtMDUgMTA6MTM6NDUgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogRXhwbGljaXRlbHkgbGluayB3aXRoIC1sZGwgaWYgZGxhZGRyKCkgaXMgZm91bmQgdGhlcmUuIEJlZm9yZSBpdCB3YXMgaW1wbGljaXRlbHkgbGlua2VkIGJ5IHRoZSBnbW9kdWxlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEV4cGxpY2l0ZWx5IGxpbmsgd2l0aCAtbGRsIGlmIGRsYWRkcigpIGlzIGZvdW5kIHRoZXJlLiBCZWZvcmUgaXQgd2FzCgkgIGltcGxpY2l0ZWx5IGxpbmtlZCBieSB0aGUgZ21vZHVsZSBwa2djb25maWcgZmlsZSBidXQgaW4gZ2xpYiAyLjE3LjAKCSAgLWxkbCBoYXMgbW92ZWQgZnJvbSBMaWJzIHRvIExpYnMucHJpdmF0ZS4gRml4ZXMgYnVnICM1MzY3NDQuCgoyMDA4LTA2LTA1IDA5OjQyOjMxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgUHV0IHByZS1yZWxlYXNlIGNoYW5lZ2xvZyBlbnRyeSB3aGVyZSBpdCBhY3R1YWxseSBoYXBwZW5lZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUHV0IHByZS1yZWxlYXNlIGNoYW5lZ2xvZyBlbnRyeSB3aGVyZSBpdCBhY3R1YWxseSBoYXBwZW5lZAoKMjAwOC0wNi0wNSAwOTo0MToyNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IDAuMTAuMTkuMiBwcmUtcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIDAuMTAuMTkuMiBwcmUtcmVsZWFzZQoKMjAwOC0wNi0wNSAwODo1NTo0MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RlcnJvci5jOiBGaXggdHlwbyAoc3BvdHRlZCBieSBGYWJyaWNpbyBHb2RveSwgIzUzNjcyMykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlcnJvci5jOiAoX2dzdF9zdHJlYW1fZXJyb3JzX2luaXQpOgoJICBGaXggdHlwbyAoc3BvdHRlZCBieSBGYWJyaWNpbyBHb2RveSwgIzUzNjcyMykuCgoyMDA4LTA2LTA0IDExOjQ3OjE2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBBZGQgc29tZSBkZWJ1Zy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19zZXRfYXN5bmNfZW5hYmxlZCksCgkgIChnc3RfYmFzZV9zaW5rX3NldF90c19vZmZzZXQpLCAoZ3N0X2Jhc2Vfc2lua19wZXJmb3JtX3Fvcyk6CgkgIEFkZCBzb21lIGRlYnVnLgoJICBNYWtlIHN1cmUgd2UgZG9uJ3QgZ2VuZXJhdGUgaW52YWxpZCBRb1MgbWVzc2FnZXMuCgoyMDA4LTA2LTA0IDExOjMxOjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50LmM6IEFkZCBzb21lIGFzc2VydCBhbmQgZG9jcyBmb3IgaW52YWxpZCBpbnB1dCB0byB0aGUgcW9zIGZ1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfcW9zKToKCSAgQWRkIHNvbWUgYXNzZXJ0IGFuZCBkb2NzIGZvciBpbnZhbGlkIGlucHV0IHRvIHRoZSBxb3MgZnVuY3Rpb24uCgoyMDA4LTA1LTMwIDE1OjQ4OjUyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBUaGUgcmVwb3J0ZWQgcG9zaXRpb24gbXVzdCBhbHdheXMgYmUgc21hbGxlciB0aGFuIHRoZSBsYXN0IHNlZW4gdGltZXN0YW1wcyAob3IgdGltZXN0YW1wLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBUaGUgcmVwb3J0ZWQgcG9zaXRpb24gbXVzdCBhbHdheXMgYmUgc21hbGxlciB0aGFuIHRoZSBsYXN0IHNlZW4KCSAgdGltZXN0YW1wcyAob3IgdGltZXN0YW1wICsgZHVyYXRpb24gZm9yIHJldmVyc2UpLgoKMjAwOC0wNS0zMCAwNzozNjoxNyArMDAwMCAgUm9iIEJyYWRmb3JkIDxyb2JAcm9ic3Rlci5vcmcudWs+CgoJICBnc3QvZ3N0cmVnaXN0cnkuYzogRG9uJ3QgcmVjdXJzZSBpbnRvIC5kZWJ1ZyBkaXJlY3RvcmllcyBhcyBzb21lIGRpc3Ryb3MgaW5zdGFsbCB0aGUgZGVidWdnaW5nIHN5bWJvbHMgbmV4dCB0byB0aGUgcGwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBSb2IgQnJhZGZvcmQgPHJvYiBhdCByb2JzdGVyIGRvdCBvcmcgZG90IHVrPgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCk6CgkgIERvbid0IHJlY3Vyc2UgaW50byAuZGVidWcgZGlyZWN0b3JpZXMgYXMgc29tZSBkaXN0cm9zIGluc3RhbGwKCSAgdGhlIGRlYnVnZ2luZyBzeW1ib2xzIG5leHQgdG8gdGhlIHBsdWdpbnMgaW4gLmRlYnVnIGRpcmVjdG9yaWVzCgkgIGFuZCBkbG9wZW4oKSBjcmFzaGVzIG9uIHRoZW0gc29tZXRpbWVzLiBGaXhlcyBidWcgIzUwODA3MC4KCSAgQWRkIEZJWE1FIGZvciAwLjExIHRvIG5vdCByZWN1cnNlIGludG8gZGlyZWN0b3JpZXMgYXQgYWxsIGJlY2F1c2UKCSAgaXQncyB2ZXJ5IGluY29uc2lzdGVudCB0byB0aGUgYmVoYXZpb3VyIG9mIG90aGVyIFBBVEggZW52aXJvbm1lbnQKCSAgdmFyaWFibGVzLgoKMjAwOC0wNS0yOSAxNjozNDoyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRml4IHBvc2l0aW9uIHF1ZXJ5IHJhbmdlIGNoZWNrcyBpbiByZXZlcnNlIHBsYXliYWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF9zeW5jX3RpbWVzKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX2xhc3QpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBGaXggcG9zaXRpb24gcXVlcnkgcmFuZ2UgY2hlY2tzIGluIHJldmVyc2UgcGxheWJhY2suCgoyMDA4LTA1LTI5IDA3OjE5OjQ3ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0ZWxlbWVudC4qOiBEZXByZWNhdGVkIGdzdF9lbGVtZW50X2dldF9wYWQoKSBhcyBpdCBjYW4ndCBiZSB1c2VkIHNhbmVseS4gSXQncyBub3QgY2xlYXIgb2YgdGhlIHJlZmVyZW5jZSB0byB0aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBEZXByZWNhdGVkIGdzdF9lbGVtZW50X2dldF9wYWQoKSBhcyBpdCBjYW4ndCBiZSB1c2VkIHNhbmVseS4gSXQncyBub3QKCSAgY2xlYXIgb2YgdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVzdWx0aW5nIHBhZCBtdXN0IGJlIHJlbGVhc2VkIGxhdGVyCgkgIG9yIG5vdCwgcmVzdWx0aW5nIGluIHBvc3NpYmxlIGxlYWtzLiBGaXhlcyBidWcgIzUzMzg2NS4KCjIwMDgtMDUtMjggMTY6NDY6MDcgKzAwMDAgIEpvc8OpIEFsYnVycXVlcnF1ZSA8amFhbGJ1cnF1QHN2bi5nbm9tZS5vcmc+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogU21hbGwgZG9jIGZpeC4gRml4ZXMgIzUzNTI4NS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBKb3PDqSBBbGJ1cnF1ZXJxdWUgPGphYWxidXJxdSBhdCBzdm4gZG90IGdub21lIGRvdCBvcmc+CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgIFNtYWxsIGRvYyBmaXguIEZpeGVzICM1MzUyODUuCgoyMDA4LTA1LTI4IDEzOjQ4OjE3ICswMDAwICBCamFybmUgUm9zZW5ncmVuIDxiamFybmVAYXhpcy5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogTWFrZSBzZW5kaW5nIGFuIEVPUyBldmVudCB0byB0aGUgYmFzZXNyYyBub24tYmxvY2tpbmcgZXZlbiBpZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBibG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBCamFybmUgUm9zZW5ncmVuIDxiamFybmUgYXQgYXhpcyBkb3QgY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSksIChnc3RfYmFzZV9zcmNfcGFkX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCksIChnc3RfYmFzZV9zcmNfc2V0X2ZsdXNoaW5nKSwKCSAgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBNYWtlIHNlbmRpbmcgYW4gRU9TIGV2ZW50IHRvIHRoZSBiYXNlc3JjIG5vbi1ibG9ja2luZyBldmVuIGlmIHRoZQoJICBpbXBsZW1lbnRhdGlvbiBkb2VzIGJsb2NraW5nIHdhaXRzIGluIHRoZSBjcmVhdGUgZnVuY3Rpb24uIFRoaXMgaXMgZG9uZQoJICBieSB1bmxvY2tpbmcgdGhlIGNyZWF0ZSBmdW5jdGlvbiB3aGVuIEVPUyBpcyBzZW50LgoJICBGaXhlcyAjNTM1MjE4LgoKMjAwOC0wNS0yOCAxMDo0NDoxNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogSWYgcG9zc2libGUgcHJpbnQgdGhlIGVsZW1lbnQgdHlwZSBvZiBHVmFsdWVBcnJheSBwcm9wZXJ0aWVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBJZiBwb3NzaWJsZSBwcmludCB0aGUgZWxlbWVudCB0eXBlIG9mIEdWYWx1ZUFycmF5IHByb3BlcnRpZXMuCgoyMDA4LTA1LTI4IDA3OjQ3OjIyICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0aXRlcmF0b3IuYzogUmVtb3ZlIGFuIHVudXNlZCBmaWVsZCBmcm9tIHRoZSBwcml2YXRlIEdzdExpc3RJdGVyYXRvciBzdHJ1Y3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpdGVyYXRvci5jOgoJICBSZW1vdmUgYW4gdW51c2VkIGZpZWxkIGZyb20gdGhlIHByaXZhdGUgR3N0TGlzdEl0ZXJhdG9yIHN0cnVjdC4KCjIwMDgtMDUtMjcgMjA6MTk6MTcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiBBZGQgcGFyYW1ldGVyIGd1YXJkcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIEFkZCBwYXJhbWV0ZXIgZ3VhcmRzLgoKMjAwOC0wNS0yNyAxOTo0Nzo0OSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6IFJldmVydCB0ZXN0IGNoYW5nZSBhbmQgYWRkIGNvbW1lbnQgd2h5IGl0IHNob3VsZCBub3Qgd29yay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIFJldmVydCB0ZXN0IGNoYW5nZSBhbmQgYWRkIGNvbW1lbnQgd2h5IGl0IHNob3VsZCBub3Qgd29yay4KCjIwMDgtMDUtMjcgMTg6MzE6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiBFeHRlbmRpbmcgdGhlIHRlc3QgYSBsaXR0bGUgdG8gdmVyaWZ5IHRoYXQgd2UgYWxzbyBnZXQgdGhlIE5VTEwgc3RhdGUtIGNoYW5nZSBtZXNzYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgRXh0ZW5kaW5nIHRoZSB0ZXN0IGEgbGl0dGxlIHRvIHZlcmlmeSB0aGF0IHdlIGFsc28gZ2V0IHRoZSBOVUxMIHN0YXRlLQoJICBjaGFuZ2UgbWVzc2FnZS4KCjIwMDgtMDUtMjcgMTY6Mzc6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IEFkZCBTaW5jZTogbWFya2VycyB0byBkb2NzIGJsdXJicy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHByZXNldC5jOiAoZ3N0X3ByZXNldF9kZWZhdWx0X2dldF9tZXRhKSwKCSAgKGdzdF9wcmVzZXRfZ2V0X3ByZXNldF9uYW1lcyksIChnc3RfcHJlc2V0X2dldF9wcm9wZXJ0eV9uYW1lcyksCgkgIChnc3RfcHJlc2V0X2xvYWRfcHJlc2V0KSwgKGdzdF9wcmVzZXRfc2F2ZV9wcmVzZXQpLAoJICAoZ3N0X3ByZXNldF9yZW5hbWVfcHJlc2V0KSwgKGdzdF9wcmVzZXRfZGVsZXRlX3ByZXNldCksCgkgIChnc3RfcHJlc2V0X3NldF9tZXRhKToKCSAgQWRkIFNpbmNlOiBtYXJrZXJzIHRvIGRvY3MgYmx1cmJzLgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgcmVjZW50bHktYWRkZWQgQVBJLgoKMjAwOC0wNS0yNyAxNToxMTozNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoKCSAgY29uZmlndXJlLmFjOiBBZGQgREFUQURJUiBmb3Igc3RvcmluZyBwcmVzZXRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFN0ZWZhbiBLb3N0ICA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgkgICogY29uZmlndXJlLmFjOgoJICBBZGQgREFUQURJUiBmb3Igc3RvcmluZyBwcmVzZXRzLgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXMuaW46CgkgIEFkZCBHc3RQcmVzZXQgdG8gZG9jcy4KCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3RwcmVzZXQuYzogKHByZXNldF9nZXRfcGF0aHMpLCAocHJlc2V0X3NraXBfcHJvcGVydHkpLAoJICAocHJlc2V0X29wZW5fYW5kX3BhcnNlX2hlYWRlciksIChwcmVzZXRfcGFyc2VfdmVyc2lvbiksCgkgIChwcmVzZXRfbWVyZ2UpLCAocHJlc2V0X2dldF9rZXlmaWxlKSwKCSAgKGdzdF9wcmVzZXRfZGVmYXVsdF9nZXRfcHJlc2V0X25hbWVzKSwKCSAgKGdzdF9wcmVzZXRfZGVmYXVsdF9nZXRfcHJvcGVydHlfbmFtZXMpLAoJICAoZ3N0X3ByZXNldF9kZWZhdWx0X2xvYWRfcHJlc2V0KSwKCSAgKGdzdF9wcmVzZXRfZGVmYXVsdF9zYXZlX3ByZXNldHNfZmlsZSksCgkgIChnc3RfcHJlc2V0X2RlZmF1bHRfc2F2ZV9wcmVzZXQpLAoJICAoZ3N0X3ByZXNldF9kZWZhdWx0X3JlbmFtZV9wcmVzZXQpLAoJICAoZ3N0X3ByZXNldF9kZWZhdWx0X2RlbGV0ZV9wcmVzZXQpLCAoZ3N0X3ByZXNldF9kZWZhdWx0X3NldF9tZXRhKSwKCSAgKGdzdF9wcmVzZXRfZGVmYXVsdF9nZXRfbWV0YSksIChnc3RfcHJlc2V0X2RlZmF1bHRfcmFuZG9taXplKSwKCSAgKGdzdF9wcmVzZXRfZGVmYXVsdF9yZXNldCksIChnc3RfcHJlc2V0X2dldF9wcmVzZXRfbmFtZXMpLAoJICAoZ3N0X3ByZXNldF9nZXRfcHJvcGVydHlfbmFtZXMpLCAoZ3N0X3ByZXNldF9sb2FkX3ByZXNldCksCgkgIChnc3RfcHJlc2V0X3NhdmVfcHJlc2V0KSwgKGdzdF9wcmVzZXRfcmVuYW1lX3ByZXNldCksCgkgIChnc3RfcHJlc2V0X2RlbGV0ZV9wcmVzZXQpLCAoZ3N0X3ByZXNldF9zZXRfbWV0YSksCgkgIChnc3RfcHJlc2V0X2dldF9tZXRhKSwgKGdzdF9wcmVzZXRfY2xhc3NfaW5pdCksCgkgIChnc3RfcHJlc2V0X2Jhc2VfaW5pdCksIChnc3RfcHJlc2V0X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cHJlc2V0Lmg6CgkgIEFkZCBHc3RQcmVzZXQgdG8gY29yZS4gRml4ZXMgIzM5Njc3OQoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwcmVzZXQuYzogKGdzdF9wcmVzZXRfdGVzdF9nZXRfcHJvcGVydHkpLAoJICAoZ3N0X3ByZXNldF90ZXN0X3NldF9wcm9wZXJ0eSksIChnc3RfcHJlc2V0X3Rlc3RfY2xhc3NfaW5pdCksCgkgIChnc3RfcHJlc2V0X3Rlc3RfYmFzZV9pbml0KSwgKGdzdF9wcmVzZXRfdGVzdF9nZXRfdHlwZSksCgkgIChnc3RfcHJlc2V0X3Rlc3RfcGx1Z2luX2luaXQpLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAocmVtb3ZlX3ByZXNldF9maWxlKSwgKHRlc3Rfc2V0dXApLCAodGVzdF90ZWFyZG93biksCgkgIChnc3RfcHJlc2V0X3N1aXRlKToKCSAgQWRkIEdzdFByZXNldCB1bml0IHRlc3RzLgoKMjAwOC0wNS0yNyAxMDo1OTozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogVGhlIGRlZmF1bHQgZXZlbnQgZnVuY3Rpb24gb24gYSBzaW5rcGFkIHNob3VsZCByZXR1cm4gVFJVRSB3aGVuIHRoZXJlIGFyZSBubyBpbnRlcm5hbCBsaW5rcyBidXQgc2hvdWxkIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2V2ZW50X2RlZmF1bHRfZGlzcGF0Y2gpOgoJICBUaGUgZGVmYXVsdCBldmVudCBmdW5jdGlvbiBvbiBhIHNpbmtwYWQgc2hvdWxkIHJldHVybiBUUlVFIHdoZW4KCSAgdGhlcmUgYXJlIG5vIGludGVybmFsIGxpbmtzIGJ1dCBzaG91bGQgY29sbGVjdCB0aGUgcmV0dXJuIHZhbHVlcyBmcm9tCgkgIHRoZSBpbnRlcm5hbCBsaW5rcyBvdGhlcndpc2UuCgoyMDA4LTA1LTI3IDEwOjU3OjExICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogVXNlIGZhc3RlciBhbmQgc2FmZXIgX3BhZF9wdXNoX2V2ZW50KCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfc3JjX2V2ZW50KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYW5kbGVfZXZlbnQpOgoJICBVc2UgZmFzdGVyIGFuZCBzYWZlciBfcGFkX3B1c2hfZXZlbnQoKS4KCjIwMDgtMDUtMjcgMTA6NTA6NDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBUEk6IGFkZCBnc3RfYmluX2ZpbmRfdW5saW5rZWRfcGFkKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGVsZW1lbnRfZmluZF91bmxpbmtlZF9wYWQpLAoJICAoZ3N0X2Jpbl9maW5kX3VubGlua2VkX3BhZCksIChnc3RfYmluX2ZpbmRfdW5jb25uZWN0ZWRfcGFkKSwKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQVBJOiBhZGQgZ3N0X2Jpbl9maW5kX3VubGlua2VkX3BhZCgpCgkgIEFQSTogZGVwcmVjYXRlIGdzdF9iaW5fZmluZF91bmNvbm5lY3RlZF9wYWQoKSAoIzQwMTQ1NikKCjIwMDgtMDUtMjYgMTA6MDc6MDkgKzAwMDAgIFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgoKCSAgZ3N0LzogRml4ZWQgYSBidW5jaCBvZiB0eXBvcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmM6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgICogZ3N0L2dzdHRhc2suYzoKCSAgKiBnc3QvZ3N0dGFzay5oOgoJICBGaXhlZCBhIGJ1bmNoIG9mIHR5cG9zLgoKMjAwOC0wNS0yNSAxNjozNDozMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86ICd1bmNvbm5lY3RlZCBwYWQnIC0+ICd1bmxpbmtlZCBwYWQnIGZvciBjb25zaXN0ZW5jeSAoIzQwMTQ1NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X3VubGluayksIChlbGVtZW50X2ZpbmRfdW5saW5rZWRfcGFkKSwKCSAgKGdzdF9iaW5fZmluZF91bmNvbm5lY3RlZF9wYWQpLCAoZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uKSwKCSAgKGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbl9mdWxsKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgJ3VuY29ubmVjdGVkIHBhZCcgLT4gJ3VubGlua2VkIHBhZCcgZm9yIGNvbnNpc3RlbmN5ICgjNDAxNDU2KS4KCjIwMDgtMDUtMjUgMTY6MTM6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3B3Zy9hZHZhbmNlZC10YWdnaW5nLnhtbDogU21hbGwgZG9jcyB1cGRhdGUsIGNhbid0IGJlIGJvdGhlcmVkIHRvIHJld3JpdGUgdGhlIG5vbnNlbnNpY2FsIGV4YW1wbGVzIHJpZ2h0IG5vdy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtdGFnZ2luZy54bWw6CgkgIFNtYWxsIGRvY3MgdXBkYXRlLCBjYW4ndCBiZSBib3RoZXJlZCB0byByZXdyaXRlIHRoZSBub25zZW5zaWNhbAoJICBleGFtcGxlcyByaWdodCBub3cuCgoyMDA4LTA1LTI1IDE0OjQ0OjQ0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGV2ZW50Lmg6IENsYXJpZnkgZG9jcyBmb3IgR1NUX1NFRUtfVFlQRV9DVVIgKCM1MzQ1MDUpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgQ2xhcmlmeSBkb2NzIGZvciBHU1RfU0VFS19UWVBFX0NVUiAoIzUzNDUwNSkuCgoyMDA4LTA1LTI1IDE0OjEzOjIyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L3BhcnNlL2dyYW1tYXIueTogUmVtb3ZlIHVubmVlZGVkIGNhc3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCgoyMDA4LTA1LTI1IDEzOjU2OjM4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgR2V0IGFsbCBtaXNzaW5nIGVsZW1lbnRzIGZyb20gYSBwYXJzZSBsYXVuY2ggc3RyaW5nIGlmIHBvc3NpYmxlIChpZS4gaWYgdGhlIEZBVEFMX0VSUk9SUyBmbGFnIGhhcyBiZWVuIHNwZWNpZmllZCkuIEZpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOgoJICBHZXQgYWxsIG1pc3NpbmcgZWxlbWVudHMgZnJvbSBhIHBhcnNlIGxhdW5jaCBzdHJpbmcgaWYgcG9zc2libGUKCSAgKGllLiBpZiB0aGUgRkFUQUxfRVJST1JTIGZsYWcgaGFzIGJlZW4gc3BlY2lmaWVkKS4gRml4ZXMgIzUyODE3OC4KCjIwMDgtMDUtMjQgMTY6Mzg6MTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IEFkZCBzb21lIHVuaXQgdGVzdHMgZm9yIHRoZSBuZXcgZ3N0X3BhcnNlX2xhdW5jaCpfZnVsbCgpIEFQSS4gKEV4cG9zZXMgYSBwcmV2aW91c2x5LWV4aXN0aW5nIG1lbW9yeSBsZWEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOgoJICBBZGQgc29tZSB1bml0IHRlc3RzIGZvciB0aGUgbmV3IGdzdF9wYXJzZV9sYXVuY2gqX2Z1bGwoKSBBUEkuCgkgIChFeHBvc2VzIGEgcHJldmlvdXNseS1leGlzdGluZyBtZW1vcnkgbGVhayBpbiB0aGUgZXJyb3IgY29kZQoJICBwYXRoLCBzbyBhZGRpbmcgdG8gVkFMR1JJTkRfVE9fRklYIGZvciBub3cpLgoKMjAwOC0wNS0yNCAxNTozMzo1MyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFQSTogZ3N0X3BhcnNlX2xhdW5jaF9mdWxsKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpOgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOiAoX0dzdFBhcnNlQ29udGV4dCk6CgkgICogZ3N0L2dzdHBhcnNlLmM6IChnc3RfcGFyc2VfZXJyb3JfcXVhcmspLCAoZ3N0X3BhcnNlX2NvbnRleHRfbmV3KSwKCSAgKGdzdF9wYXJzZV9jb250ZXh0X2ZyZWUpLCAoZ3N0X3BhcnNlX2NvbnRleHRfZ2V0X21pc3NpbmdfZWxlbWVudHMpLAoJICAoZ3N0X3BhcnNlX2xhdW5jaHYpLCAoZ3N0X3BhcnNlX2xhdW5jaHZfZnVsbCksIChnc3RfcGFyc2VfbGF1bmNoKSwKCSAgKGdzdF9wYXJzZV9sYXVuY2hfZnVsbCk6CgkgICogZ3N0L2dzdHBhcnNlLmg6IChHU1RfUEFSU0VfRkxBR19OT05FKSwgKEdTVF9QQVJTRV9GTEFHX0ZBVEFMX0VSUk9SUyksCgkgIChHc3RQYXJzZUZsYWdzKSwgKEdzdFBhcnNlQ29udGV4dCk6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24pLAoJICAoZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uX2Z1bGwpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogZ3N0L3BhcnNlL3R5cGVzLmg6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgZ3N0X3BhcnNlXypfZnVsbCBBUEkgKCM1MjgxNzgpOgoJICBBUEk6IGdzdF9wYXJzZV9sYXVuY2hfZnVsbCgpCgkgIEFQSTogZ3N0X3BhcnNlX2xhdW5jaHZfZnVsbCgpCgkgIEFQSTogZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uX2Z1bGwoKQoJICBBUEk6IGdzdF9wYXJzZV9jb250ZXh0X25ldygpCgkgIEFQSTogZ3N0X3BhcnNlX2NvbnRleHRfZnJlZSgpCgkgIEFQSTogZ3N0X3BhcnNlX2NvbnRleHRfZ2V0X21pc3NpbmdfZWxlbWVudHMoKQoKMjAwOC0wNS0yMyAwNjo1MDoxMCArMDAwMCAgU3VyZXNoIEt1bWFyIFAgPHN1cmVzaGt1bWFyLnBwQGdtYWlsLmNvbT4KCgkgIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogQWxzbyBzdXBwb3J0IGZmbXBlZyBpbiBnc3QtdW5pbnN0YWxsZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogU3VyZXNoIEt1bWFyIFAgPHN1cmVzaGt1bWFyLnBwQGdtYWlsLmNvbT4KCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIEFsc28gc3VwcG9ydCBmZm1wZWcgaW4gZ3N0LXVuaW5zdGFsbGVkLgoKMjAwOC0wNS0yMiAyMDoyOToyMCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgY29uZmlndXJlLmFjOiBBZnRlciBkaXNjdXNzaW9uIG9uIElSQyB1c2UgdGhlIGJpbmFyeSByZWdpc3RyeSBhcyBkZWZhdWx0IGJ1dCBhbGxvdyB0byBkaXNhYmxlIGl0IHdpdGggLS1kaXNhYmxlLWJpbmFyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQWZ0ZXIgZGlzY3Vzc2lvbiBvbiBJUkMgdXNlIHRoZSBiaW5hcnkgcmVnaXN0cnkgYXMgZGVmYXVsdAoJICBidXQgYWxsb3cgdG8gZGlzYWJsZSBpdCB3aXRoIC0tZGlzYWJsZS1iaW5hcnktcmVnaXN0cnkuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCB0aGUgdHdvIG5ldyBzeW1ib2xzIGZvciB0aGUgYmluYXJ5IHJlZ2lzdHJ5LgoKMjAwOC0wNS0yMiAxNTozODo1NCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86IE1vcmUgZ3VhcmRzIGFnYWluc3QgYmFkIGlucHV0OyB0eXBvIGZpeDsgc29tZSBtaW5vciBjbGVhbi11cHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoX2dzdF9wYXJzZV9lc2NhcGUpLCAoZ3N0X3BhcnNlX2xhdW5jaHYpOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uKToKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OiAoZ3JhcGgpOgoJICBNb3JlIGd1YXJkcyBhZ2FpbnN0IGJhZCBpbnB1dDsgdHlwbyBmaXg7IHNvbWUgbWlub3IgY2xlYW4tdXBzLgoKMjAwOC0wNS0yMiAwODozMzoyNyArMDAwMCAgU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJZiBub3RoaW5nIGVsc2UgY2FuIGJlIHVzZWQsIHVzZSB0aGUgbGFzdCBidWZmZXIncyBzdGFydCB0aW1lIGFzIHRoZSBzZWdtZW50J3MgbGFzdCBzdG9wLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU2pvZXJkIFNpbW9ucyA8c2pvZXJkIGF0IGx1b24gZG90IG5ldD4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF9zeW5jX3RpbWVzKToKCSAgSWYgbm90aGluZyBlbHNlIGNhbiBiZSB1c2VkLCB1c2UgdGhlIGxhc3QgYnVmZmVyJ3Mgc3RhcnQgdGltZSBhcwoJICB0aGUgc2VnbWVudCdzIGxhc3Qgc3RvcC4gRml4ZXMgYnVnICM1MzQyNTguCgoyMDA4LTA1LTIxIDE4OjMzOjA4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBNb3ZlIHNpemUgc2FuaXR5IGNoZWNrIHRvIHRoZSByaWdodCBwbGFjZTogZG93bnN0cmVhbSBtYXkgcmV0dXJuIGEgYnVmZmVyIHdpdGggYSBzbWFsbGVyIHNpemUgaWYgdGhlIGJ1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWxsb2NfYnVmZmVyX2Z1bGwpOgoJICBNb3ZlIHNpemUgc2FuaXR5IGNoZWNrIHRvIHRoZSByaWdodCBwbGFjZTogZG93bnN0cmVhbSBtYXkgcmV0dXJuCgkgIGEgYnVmZmVyIHdpdGggYSBzbWFsbGVyIHNpemUgaWYgdGhlIGJ1ZmZlciBjYXBzIGFyZSBkaWZmZXJlbnQgdGhhbgoJICB0aGUgcmVxdWVzdGVkIG9uZXMsIGFzIG1heSBoYXBwZW4gd2hlbiBkb2luZyByZXZlcnNlIG5lZ290aWF0aW9uLgoKMjAwOC0wNS0yMSAxNjowNjo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBTbWFsbCBjbGVhbnVwcy4gQWRkIG5vdGUgYWRib3V0IGdfZm9wZW4oKSBvbiB3aW5kb3dzIGFuZCB3aHkgd2UgZG9uJ3QgdXNlIGl0IHlldC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19zZXRfbG9jYXRpb24pLAoJICAoZ3N0X2ZpbGVfc2lua19yZW5kZXIpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX3NldF9sb2NhdGlvbiksCgkgIChnc3RfZmlsZV9zcmNfc3RhcnQpOgoJICBTbWFsbCBjbGVhbnVwcy4gQWRkIG5vdGUgYWRib3V0IGdfZm9wZW4oKSBvbiB3aW5kb3dzIGFuZCB3aHkgd2UgZG9uJ3QKCSAgdXNlIGl0IHlldC4KCjIwMDgtMDUtMjEgMTU6NTc6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBEb24ndCB1c2UgZ3N0X2VsZW1lbnRfZ2V0X3BhZCgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2xvYWRfYW5kX2xpbmspOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfbGlua19wYWRzKSwKCSAgKGdzdF9lbGVtZW50X3VubGlua19wYWRzKToKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQpLAoJICAoZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQpLCAoZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkKSwKCSAgKGdzdF9jaGVja190ZWFyZG93bl9zaW5rX3BhZCksCgkgIChnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcl9saXN0KToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlc2luay5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2ZpbGVzaW5rLmM6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL211bHRpcXVldWUuYzogKHNldHVwX211bHRpcXVldWUpLAoJICAobXFfc2lua3BhZF90b19zcmNwYWQpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHF1ZXJ5LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svbGlicy9iYXNlc3JjLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOiAocnVuX2RlbGF5ZWRfdGVzdCksCgkgIChnc3RfcGFyc2VfdGVzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIERvbid0IHVzZSBnc3RfZWxlbWVudF9nZXRfcGFkKCkuCgoyMDA4LTA1LTIxIDE1OjU0OjI4ICswMDAwICBGZWxpcGUgQ29udHJlcmFzIDxmZWxpcGUuY29udHJlcmFzQG5va2lhLmNvbT4KCgkgIGRvY3MvTWFrZWZpbGUuYW06IEZpeCBpbnN0YWxsaW5nIHBsdWdpbiBkb2N1bWVudGF0aW9uIHdoZW4gZ3RrLWRvYyBpcyBkaXNhYmxlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9NYWtlZmlsZS5hbToKCSAgRml4IGluc3RhbGxpbmcgcGx1Z2luIGRvY3VtZW50YXRpb24gd2hlbiBndGstZG9jIGlzIGRpc2FibGVkLgoKMjAwOC0wNS0yMSAxNTo1MToyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvbWFudWFsLzogQXZvaWQgdXNpbmcgYSBiYWQgZnVuY3Rpb24gaW4gdGhlIGV4YW1wbGUgY29kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtYXV0b3BsdWdnaW5nLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLXBhZHMueG1sOgoJICAqIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC1jb21wb25lbnRzLnhtbDoKCSAgQXZvaWQgdXNpbmcgYSBiYWQgZnVuY3Rpb24gaW4gdGhlIGV4YW1wbGUgY29kZS4KCjIwMDgtMDUtMjEgMTU6NDk6MjEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2xvY2suYzogRml4IGRlYnVnIG9mIHRoZSBuZXcgY2xvY2sgcmF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfc2V0X2NhbGlicmF0aW9uKToKCSAgRml4IGRlYnVnIG9mIHRoZSBuZXcgY2xvY2sgcmF0ZS4KCjIwMDgtMDUtMjEgMTE6MTA6MzIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjogQWRkIGdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jaygpIHRvIHRoZSBleHBvcnRlZCBzeW1ib2xzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgIEFkZCBnc3RfYmFzZV9zaW5rX3dhaXRfY2xvY2soKSB0byB0aGUgZXhwb3J0ZWQgc3ltYm9scy4KCjIwMDgtMDUtMjAgMDg6Mjg6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbS5tdWxsZXJAY29sbGFib3JhLmNvLnVrPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IFVucmVmIGV2ZW50cyB0aGF0IHRoZSBHc3RCYXNlVHJhbnNmb3JtOjpldmVudCB2ZnVuYyBkaWRuJ3Qgd2FudCB0byBoYXZlIGZvcndhcmRlZCBiLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogVGltLVBoaWxpcHAgTcO8bGxlciAgPHRpbS5tdWxsZXIgYXQgY29sbGFib3JhIGNvIHVrPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfZXZlbnQpOgoJICBVbnJlZiBldmVudHMgdGhhdCB0aGUgR3N0QmFzZVRyYW5zZm9ybTo6ZXZlbnQgdmZ1bmMgZGlkbid0IHdhbnQgdG8KCSAgaGF2ZSBmb3J3YXJkZWQgYnkgdGhlIGJhc2UgY2xhc3MuIENsb3NlcyBhIGxlYWsgaW4gaWRlbnRpdHkuCgkgIEZpeGVzIGJ1ZyAjNDQ2NzYzLgoKMjAwOC0wNS0xOSAxNjozNjo1MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEV4cG9zZSBhIG1ldGhvZCB0aGF0IHdhcyBwcmV2aW91c2x5IHVzZWQgaW50ZXJuYWxseSB0byBzeW5jaHJvbml6ZSBhZ2FpbnN0IHRoZSBjbG9jayBiZWNhdXNlIGl0IGNhbiBiZSB1c2VmdWwgZm9yIHN1Yi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jayk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBFeHBvc2UgYSBtZXRob2QgdGhhdCB3YXMgcHJldmlvdXNseSB1c2VkIGludGVybmFsbHkgdG8gc3luY2hyb25pemUKCSAgYWdhaW5zdCB0aGUgY2xvY2sgYmVjYXVzZSBpdCBjYW4gYmUgdXNlZnVsIGZvciBzdWJjbGFzc2VzIHRvby4KCSAgR3N0QmFzZVNpbms6OmdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jaygpCgoyMDA4LTA1LTE5IDExOjU5OjM0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBBZGQgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnZXQgc21hbGxlciBidWZmZXJzIHRoYW4gcmVxdWVzdGVkIChhbmQgZmFsbGJhY2sgdG8gbm9ybWFsIGJ1ZmZlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYnVmZmVyX2FsbG9jX3VuY2hlY2tlZCk6CgkgIEFkZCBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGdldCBzbWFsbGVyIGJ1ZmZlcnMKCSAgdGhhbiByZXF1ZXN0ZWQgKGFuZCBmYWxsYmFjayB0byBub3JtYWwgYnVmZmVyIGFsbG9jIGlmIHdlIGRvKS4KCjIwMDgtMDUtMTkgMTE6MTE6NDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJlZmFjdG9yIGFkanVzdGluZyB0aGUgcnVubmluZ190aW1lIHdpdGggbGF0ZW5jeSBhbmQgb2Zmc2V0IGludG8gYSBzZXBhcmF0ZSBtZXRob2QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfYWRqdXN0X3RpbWUpLAoJICAoZ3N0X2Jhc2Vfc2lua193YWl0X2Nsb2NrKSwgKGdzdF9iYXNlX3Npbmtfd2FpdF9lb3MpLAoJICAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwgKGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQpOgoJICBSZWZhY3RvciBhZGp1c3RpbmcgdGhlIHJ1bm5pbmdfdGltZSB3aXRoIGxhdGVuY3kgYW5kIG9mZnNldCBpbnRvIGEKCSAgc2VwYXJhdGUgbWV0aG9kLgoJICBXaGVuIGRvaW5nIGNsaXBwaW5nLCB3ZSBzdGlsbCB3YW50IHRvIHVzZSB0aGUgc3ViY2xhc3MgZ2V0X3RpbWVzIG1ldGhvZCwKCSAganVzdCBpbiBjYXNlIHRoZSBEVVJBVElPTiBvciBUSU1FU1RBTVAgYXJlIG5vdCBzZXQuCgoyMDA4LTA1LTE5IDEwOjQ2OjQ0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X3R5cGVfZmluZF9zdWdnZXN0X3NpbXBsZSgpLCAjNTMzNzQwLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R0eXBlZmluZC5jOiAoZ3N0X3R5cGVfZmluZF9zdWdnZXN0X3NpbXBsZSk6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmg6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFQSTogYWRkIGdzdF90eXBlX2ZpbmRfc3VnZ2VzdF9zaW1wbGUoKSwgIzUzMzc0MC4KCjIwMDgtMDUtMTkgMTA6Mjk6NTcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogVXNlIHJpZ2h0IGVycm9yIGNvZGUgd2hlbiB0eXBlZmluZGluZyBmYWlscywgc28gd2UgY2FuIHVzZSB0aGUgZGVmYXVsdCAodHJhbnNsYXRlZCkgZXJyb3IuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfc3RhcnQpOgoJICBVc2UgcmlnaHQgZXJyb3IgY29kZSB3aGVuIHR5cGVmaW5kaW5nIGZhaWxzLCBzbyB3ZSBjYW4gdXNlCgkgIHRoZSBkZWZhdWx0ICh0cmFuc2xhdGVkKSBlcnJvciBtZXNzYWdlcy4KCjIwMDgtMDUtMTkgMTA6MDM6MDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogV2hlbiB0aGUgc3ViY2xhc3MgZGlkIG5vdCBzZXQgY2FwcyBvbiBvdXRnb2luZyBidWZmZXJzLCBjb25maWd1cmUgdGhlIGNhcHMgd2UgbmVnb3RpYXRlZCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZ2V0X3JhbmdlKSwKCSAgKGdzdF9iYXNlX3NyY19zdGFydCk6CgkgIFdoZW4gdGhlIHN1YmNsYXNzIGRpZCBub3Qgc2V0IGNhcHMgb24gb3V0Z29pbmcgYnVmZmVycywgY29uZmlndXJlIHRoZQoJICBjYXBzIHdlIG5lZ290aWF0ZWQgb24gdGhlIHNvdXJjZSBwYWQuCgkgIFdoZW4gdGhlIHR5cGVmaW5kIGhlbHBlciBkb2VzIG5vdCBmaW5kIGNhcHMsIGVycm9yIG91dCBwcm9wZXJseSBpbnN0ZWFkCgkgIG9mIGRvaW5nIHRoaW5ncyB3aXRoIE5VTEwgY2Fwcy4KCjIwMDgtMDUtMTggMTg6NTM6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dHlwZWZpbmQuaDogVGFicyB0byBzcGFjZXMsIG9oIHllcyEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmg6CgkgIFRhYnMgdG8gc3BhY2VzLCBvaCB5ZXMhCgoyMDA4LTA1LTE4IDEyOjEzOjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSogQ2hhbmdlTG9nOgoJICBDaGFuZ2VMb2cgc3VyZ2VyeQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnkKCjIwMDgtMDUtMTggMTE6NTI6MzkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0Y2Fwcy5jOiBBZGQgRGF2aWQncyBhbmQgQmVuamFtaW4ncyB0ZXN0cyBmb3IgYXJyYXkgc3VidHJhY3Rpb24gdG8gdGhlIHVuaXQgdGVzdCBzdWl0ZSwgd2hpY2ggc3VnZ2UuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKHRlc3RfaW50ZXJzZWN0MiksIChnc3RfY2Fwc19zdWl0ZSk6CgkgIEFkZCBEYXZpZCdzIGFuZCBCZW5qYW1pbidzIHRlc3RzIGZvciBhcnJheSBzdWJ0cmFjdGlvbiB0byB0aGUKCSAgdW5pdCB0ZXN0IHN1aXRlLCB3aGljaCBzdWdnZXN0cyB0aGF0ICMxNDc5MzEgaXMgZml4ZWQgdGhlc2UgZGF5cy4KCjIwMDgtMDUtMTggMTE6MzU6NDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZXZlbnQuYzogRG9jdW1lbnQgdGhhdCBnc3RfZXZlbnRfbmV3X3RhZygpIGFuZCBnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24oKSB0YWtlIG93bmVyc2hpcCBvZiB0aGUgdGFnbGlzdC9zdHJ1Y3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgIERvY3VtZW50IHRoYXQgZ3N0X2V2ZW50X25ld190YWcoKSBhbmQgZ3N0X2V2ZW50X25ld19uYXZpZ2F0aW9uKCkKCSAgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHRhZ2xpc3Qvc3RydWN0dXJlIHBhc3NlZCB0byB0aGVtLiAoIzUzMzYzNSkuCgoyMDA4LTA1LTE3IDE3OjIwOjUxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvTWFrZWZpbGUuYW06IERvbid0IGRlc2NlbmQgaW50byB0aGUgcGx1Z2lucyBkaXIgaWYgcGx1Z2luIGRvY3MgYnVpbGRpbmcgaXMgZGlzYWJsZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvTWFrZWZpbGUuYW06CgkgIERvbid0IGRlc2NlbmQgaW50byB0aGUgcGx1Z2lucyBkaXIgaWYgcGx1Z2luIGRvY3MgYnVpbGRpbmcKCSAgaXMgZGlzYWJsZWQuCgkgICogZG9jcy9SRUFETUU6CgkgIEFkZCBhIG5vdGUgYWJvdXQgdGhlIG5ldyB0eXBlOkdUeXBlTmFtZSBzeW50YXggZm9yIHRoZSBwbHVnaW4KCSAgZG9jdW1lbnRhdGlvbiAudHlwZXMgZmlsZS4KCjIwMDgtMDUtMTcgMTM6NTQ6NTIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RtZXNzYWdlLio6IE1hcmsgdGhlIGRlYnVnIHN0cmluZyBwYXJhbWV0ZXJzIGFzIGNvbnN0LiBGaXhlcyBidWcgIzUzMzQ5MC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX25ld19lcnJvciksCgkgIChnc3RfbWVzc2FnZV9uZXdfd2FybmluZyksIChnc3RfbWVzc2FnZV9uZXdfaW5mbyk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgTWFyayB0aGUgZGVidWcgc3RyaW5nIHBhcmFtZXRlcnMgYXMgY29uc3QuIEZpeGVzIGJ1ZyAjNTMzNDkwLgoKMjAwOC0wNS0xNiAyMTowOTo0NSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiBTb3J0IGJ1ZmZlciBjYWNoZSBsaXN0IGJ5IGVuZCBvZmZzZXRzLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB3ZSBkb24ndCBzdG9wIHRvIHNlYXJjLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzogKGhlbHBlcl9maW5kX3BlZWspOgoJICBTb3J0IGJ1ZmZlciBjYWNoZSBsaXN0IGJ5IGVuZCBvZmZzZXRzLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB3ZSBkb24ndAoJICBzdG9wIHRvIHNlYXJjaCBmb3IgYSBjYWNoZWQgYnVmZmVyIHRoYXQgY29udGFpbnMgdGhlIHJlcXVlc3RlZCBkYXRhCgkgIHRvbyBlYXJseS4KCSAgQWxzbyByZWFkIGEgbWluaW11bSBvZiA0ayBieXRlcyBpbnN0ZWFkIG9mIDUxMiBieXRlcyBhcyB0aGlzIGlzIGEgYml0CgkgIG1vcmUgZWZmaWNpZW50LiBGaXhlcyBidWcgIzQ1OTg2Mi4KCjIwMDgtMDUtMTQgMTg6MTc6MzQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmM6IEV4cGxhaW4gd2h5IHdlIGNvcHkgdGhlIGxpc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIEV4cGxhaW4gd2h5IHdlIGNvcHkgdGhlIGxpc3QuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIEltcHJvdmUgZG9jcy4KCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgQWRkIG9uZSBkZWJ1Zy1sb2cgc3RhdGVtZW50IHRvIGhlbHAgdHJhY2luZyBwcm9iZWxtcyB3aXRoIGxpbmtpbmcgcGFkcy4KCjIwMDgtMDUtMTQgMTg6MDk6MDEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RpbmZvLmM6IEFkZCBhIHRlc3QgZm9yIHJlbW92aW5nIHRoZSBkZWZhdWx0IGxvZyBoYW5kbGVyLiBTZWVtcyB0byBmYWlsIHVuZGVyIHdpbmRvd3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RpbmZvLmM6CgkgIEFkZCBhIHRlc3QgZm9yIHJlbW92aW5nIHRoZSBkZWZhdWx0IGxvZyBoYW5kbGVyLiBTZWVtcyB0byBmYWlsIHVuZGVyCgkgIHdpbmRvd3MuCgoyMDA4LTA1LTE0IDEzOjUyOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBSZWxlYXNlIHBhZCBsb2NrIGJlZm9yZSBjYWxsaW5nIG91dCB0byBhdm9pZCBhIHBvc3NpYmxlIGRlYWRsb2NrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3BlZXJfYWNjZXB0X2NhcHMpOgoJICBSZWxlYXNlIHBhZCBsb2NrIGJlZm9yZSBjYWxsaW5nIG91dCB0byBhdm9pZCBhIHBvc3NpYmxlIGRlYWRsb2NrLgoKMjAwOC0wNS0xNCAxMDoyMjoxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9wYXJzZS9ncmFtbWFyLnk6IFJlbW92ZSB1bm5lZWRlZCB2YWx1ZSB1bnNldC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgUmVtb3ZlIHVubmVlZGVkIHZhbHVlIHVuc2V0LgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgQWRkIHVuaXQgdGVzdCBmb3IgZGUvc2VyaWFsaXphdGlvbiBvZiBjYXBzLgoKMjAwOC0wNS0xMyAxMjo1NDowMCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy86IFVzZSBjdXN0b20gbWFyc2hhbGVycyB0aGF0IHRha2UgR3N0TWluaU9iamVjdCBhcyBmaXJzdCBwYXJhbWV0ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSAgKG1hcnNoYWxfVk9JRF9fTUlOSU9CSkVDVF9PQkpFQ1QpLCAoZ3N0X2Zha2Vfc2lua19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzogKG1hcnNoYWxfVk9JRF9fTUlOSU9CSkVDVF9PQkpFQ1QpLAoJICAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICBVc2UgY3VzdG9tIG1hcnNoYWxlcnMgdGhhdCB0YWtlIEdzdE1pbmlPYmplY3QgYXMgZmlyc3QgcGFyYW1ldGVyLgoJICBVc2luZyBPQkpFQ1QgYXMgcGFyYW1ldGVyIHdoaWxlIGEgR3N0TWluaU9iamVjdCBpcyBnaXZlbiB3aWxsIGxlYWQKCSAgdG8gYXNzZXJ0aW9ucyBpZiBidWlsdCB3aXRoIEdfRU5BQkxFX0RFQlVHLiBGaXhlcyBidWcgIzUyNTUzMi4KCjIwMDgtMDUtMTMgMTI6Mzg6MzEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IENsZWFuIHVwIG9uIEZMVVNIX1NUT1AgYW5kIG5vdCBGTFVTSF9TVEFSVC4gRm9yd2FyZCBib3RoIGV2ZW50cyBpbW1lZGlhdGVseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYW5kbGVfZXZlbnQpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X3NlbmRfY2FjaGVkX2V2ZW50cyksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhbmdlX3N0YXRlKToKCSAgQ2xlYW4gdXAgb24gRkxVU0hfU1RPUCBhbmQgbm90IEZMVVNIX1NUQVJULiBGb3J3YXJkIGJvdGggZXZlbnRzCgkgIGltbWVkaWF0ZWx5LgoKMjAwOC0wNS0xMyAxMTo0NToyNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogRm9yd2FyZCBGTFVTSF9TVEFSVCBldmVudHMgaW1tZWRpYXRlbHkgYW5kIGNsZWFuIHVwIGluc3RlYWQgb2YgY2FjaGluZyB0aGVtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9oYW5kbGVfc3JjX3F1ZXJ5KSwgKHN0b3BfdHlwZWZpbmRpbmcpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfc2VuZF9jYWNoZWRfZXZlbnRzKSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICBGb3J3YXJkIEZMVVNIX1NUQVJUIGV2ZW50cyBpbW1lZGlhdGVseSBhbmQgY2xlYW4gdXAgaW5zdGVhZCBvZgoJICBjYWNoaW5nIHRoZW0uCgoyMDA4LTA1LTEzIDA3OjExOjA1ICswMDAwICBTam9lcmQgU2ltb25zIDxzam9lcmRAbHVvbi5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogQ2hlY2sgdGhlIGNhcHMgb2YgdGhlIGJ1ZmZlciByZXR1cm5lZCBieSBnc3RfcGFkX2FsbG9jX2J1ZmZlcigpIGFuZCBmYWxsIGJhY2sgdG8gZGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTam9lcmQgU2ltb25zIDxzam9lcmQgYXQgbHVvbiBkb3QgbmV0PgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIENoZWNrIHRoZSBjYXBzIG9mIHRoZSBidWZmZXIgcmV0dXJuZWQgYnkgZ3N0X3BhZF9hbGxvY19idWZmZXIoKSBhbmQKCSAgZmFsbCBiYWNrIHRvIGRlZmF1bHQgbmVnb3RpYXRpb24gaW4gdGhlIGNoYWluIGZ1bmN0aW9uIGlmIHRoZSBjYXBzCgkgIGFyZSBkaWZmZXJlbnQgZnJvbSB3aGF0IHdhcyByZXF1ZXN0ZWQuIEZpeGVzIGJ1ZyAjNTI2NzY4LgoKMjAwOC0wNS0wOSAyMDo0ODoyNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIE5vLCBsZXQncyBub3QgdXNlIGdfc2xpY2Vfe2R1cHxjb3B5fSBoZXJlLCBzaW5jZSB0aGV5IG9ubHkgZXhpc3Qgc2luY2UgR0xpYiAyLjE0IGFuZCB3ZSBzdGlsbCBkZXBlbmQgb25seSBvbiA+PSAyLjEyLi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6CgkgIE5vLCBsZXQncyBub3QgdXNlIGdfc2xpY2Vfe2R1cHxjb3B5fSBoZXJlLCBzaW5jZSB0aGV5IG9ubHkgZXhpc3QKCSAgc2luY2UgR0xpYiAyLjE0IGFuZCB3ZSBzdGlsbCBkZXBlbmQgb25seSBvbiA+PSAyLjEyLiBBbHNvIGFkZAoJICB1bml0IHRlc3QgZm9yIGdzdF9zZWdtZW50X2NvcHkoKS4KCjIwMDgtMDUtMDkgMTg6MjU6NDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuaDogVHJ5IHRvIGZpeCAnZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0IGFsaWFzaW5nIHJ1bGVzJyB3YXJuaW5ncyB3aXRoIEMrKyBjb20uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmg6IChHU1RfQk9JTEVSUExBVEVfRlVMTCk6CgkgIFRyeSB0byBmaXggJ2RlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdAoJICBhbGlhc2luZyBydWxlcycgd2FybmluZ3Mgd2l0aCBDKysgY29tcGlsZXJzIGFuZCBHTGliID49IDIuMTQuMDogR0xpYgoJICBjaGFuZ2VkIHRoZSBkZWZhdWx0IEdUeXBlIHR5cGVkZWYgZnJvbSBndWxvbmcgdG8gZ3NpemUgYXQgc29tZSBwb2ludCwKCSAgYnV0IGtlcHQgR1R5cGUgdHlwZWRlZidlZCB0byBndWxvbmcgZm9yIEMrKyBmb3IgQUJJIHJlYXNvbnM7IHRoZQoJICBnX29uY2VfKiBmdW5jdGlvbnMgYWxsIHRha2UgYSBnc2l6ZSAqIHRob3VnaCwgc28gd29yayBhcm91bmQgdGhlIHR5cGUKCSAgbWlzbWF0Y2ggZm9yIEMrKyBieSBkb2luZyBldmVyeXRoaW5nIGluIGdzaXplIGFuZCBjYXN0aW5nIHRvIEdUeXBlCgkgIGxhdGVyLgoKMjAwOC0wNS0wOSAxNDowMjo1MyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzaWduYWxzIHRvIHB1c2ggb3VyIGNvcmUgcGx1Z2luIGRvY3MgY292ZXJhZ2UgYmFjayB1cCB0byAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkgIEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgc2lnbmFscyB0byBwdXNoIG91ciBjb3JlIHBsdWdpbiBkb2NzCgkgIGNvdmVyYWdlIGJhY2sgdXAgdG8gMTAwJS4KCjIwMDgtMDUtMDggMTQ6MjM6MTYgKzAwMDAgIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlLmFuZHJlLnJhdm5hc0B0YW5kYmVyZy5jb20+CgoJICBnc3QvZ3N0aW5mby5oIChHU1RfRlVOQ1RJT04pOiBSZXZlcnRlZCBHU1RfRlVOQ1RJT04gdG8gdGhlIG9sZCB2ZXJzaW9uIGFzIHdlIGRvbid0IHdhbnQgdGhlIGZ1bGwgc2lnbmF0dXJlIGluIEMrKyBjb2QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uaCAoR1NUX0ZVTkNUSU9OKToKCSAgUmV2ZXJ0ZWQgR1NUX0ZVTkNUSU9OIHRvIHRoZSBvbGQgdmVyc2lvbiBhcyB3ZSBkb24ndCB3YW50IHRoZQoJICBmdWxsIHNpZ25hdHVyZSBpbiBDKysgY29kZS4gQWxzbyBhZGRlZCBzdXBwb3J0IGZvciBNU1ZDLgoKMjAwOC0wNS0wOCAxMTozNzowMyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmg6IEludGVybiB0aGUgdHlwZSBuYW1lIHN0cmluZywgc2ltaWxhciB0byB3aGF0IEdfREVGSU5FX1RZUEUgZG9lcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEludGVybiB0aGUgdHlwZSBuYW1lIHN0cmluZywgc2ltaWxhciB0byB3aGF0IEdfREVGSU5FX1RZUEUgZG9lcy4KCjIwMDgtMDUtMDggMTE6Mjc6NTYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3R1dGlscy5oOiBNYWtlIEdTVF9CT0lMRVJQTEFURSB0aHJlYWQtc2FmZSBpZiBidWlsZGluZyB3aXRoIEdMaWIgMi4xNCBvciBuZXdlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIE1ha2UgR1NUX0JPSUxFUlBMQVRFIHRocmVhZC1zYWZlIGlmIGJ1aWxkaW5nIHdpdGggR0xpYiAyLjE0IG9yIG5ld2VyLgoKMjAwOC0wNS0wOCAwNTo1NTozNCArMDAwMCAgU2pvZXJkIFNpbW9ucyA8c2pvZXJkQGx1b24ubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IERvbid0IHBhc3N0aHJvdWdoIGJ1ZmZlciBhbGxvY2F0aW9uIHRvbyBlYXNpbHkgaWYgdGhlIGNhcHMgY2hhbmdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQmFzZWQgb24gYSBwYXRjaCBieTogU2pvZXJkIFNpbW9ucyA8c2pvZXJkIGF0IGx1b24gZG90IG5ldD4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpOgoJICBEb24ndCBwYXNzdGhyb3VnaCBidWZmZXIgYWxsb2NhdGlvbiB0b28gZWFzaWx5IGlmIHRoZSBjYXBzIGNoYW5nZS4KCSAgVGhpcyBicmVha3Mgd2hlbiB3b3JraW5nIGluIHBhc3N0aHJvdWdoIG1vZGUgYW5kIHVwc3RyZWFtIGNoYW5nZXMKCSAgaXQncyBjYXBzLiBGaXhlcyBidWcgIzUyNjc2OC4KCjIwMDgtMDUtMDcgMTk6MjQ6NDQgKzAwMDAgIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlLmFuZHJlLnJhdm5hc0B0YW5kYmVyZy5jb20+CgoJICBnc3QvZ3N0aW5mby5jIChnc3RfZGVidWdfbG9nX3ZhbGlzdCk6IEltcHJvdmVkIHRoZSBfX0ZJTEVfXyBwYXJ0IG9mIGRlYnVnIG91dHB1dCBmb3IgTVNWQy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uYyAoZ3N0X2RlYnVnX2xvZ192YWxpc3QpOgoJICBJbXByb3ZlZCB0aGUgX19GSUxFX18gcGFydCBvZiBkZWJ1ZyBvdXRwdXQgZm9yIE1TVkMuCgoyMDA4LTA1LTA3IDE5OjE1OjE0ICswMDAwICBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZS5hbmRyZS5yYXZuYXNAdGFuZGJlcmcuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmMgKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KTogRGVjbGFyYXRpb24gYWZ0ZXIgc3RhdGVtZW50IGZpeCBmb3IgY29tcGlsZXJzIGxpa2UgTVNWQy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmMgKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KToKCSAgRGVjbGFyYXRpb24gYWZ0ZXIgc3RhdGVtZW50IGZpeCBmb3IgY29tcGlsZXJzIGxpa2UgTVNWQy4KCjIwMDgtMDUtMDcgMTk6MDk6MDggKzAwMDAgIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlLmFuZHJlLnJhdm5hc0B0YW5kYmVyZy5jb20+CgoJICB3aW4zMi9jb21tb24vY29uZmlnLmguaW46IERvbid0IGRlZmluZSBHU1RfRlVOQ1RJT04sIGlmIEdMaWIgc3VwcG9ydHMgTVNWQyB3ZSdkIG11Y2ggcmF0aGVyIHVzZSB0aGUgcmVhbCB0aGluZyB0aGFuIGguLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBEb24ndCBkZWZpbmUgR1NUX0ZVTkNUSU9OLCBpZiBHTGliIHN1cHBvcnRzIE1TVkMgd2UnZCBtdWNoIHJhdGhlcgoJICB1c2UgdGhlIHJlYWwgdGhpbmcgdGhhbiBoYXZpbmcgIj8/PyIgdW5jb25kaXRpb25hbGx5LgoKMjAwOC0wNS0wNyAxODo1MToyMiArMDAwMCAgT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzIDxvbGUuYW5kcmUucmF2bmFzQHRhbmRiZXJnLmNvbT4KCgkgIGdzdC9nc3RpbmZvLmggKEdTVF9GVU5DVElPTik6IE1hZGUgR1NUX0ZVTkNUSU9OIGFuIGFsaWFzIGZvciBHX1NUUkZVTkMgdG8gYXZvaWQgZHVwbGljYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmggKEdTVF9GVU5DVElPTik6CgkgIE1hZGUgR1NUX0ZVTkNUSU9OIGFuIGFsaWFzIGZvciBHX1NUUkZVTkMgdG8gYXZvaWQgZHVwbGljYXRpb24uCgoyMDA4LTA1LTA3IDA5OjQ3OjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6IFNtYWxsIGNvZGUgY2xlYW51cC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6IChnc3RfYWRhcHRlcl9hdmFpbGFibGVfZmFzdCk6CgkgIFNtYWxsIGNvZGUgY2xlYW51cC4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3F1ZXJ5X2xhdGVuY3kpLAoJICAoZ3N0X2Jhc2Vfc2lua19zZXRfZmx1c2hpbmcpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3BlcmZvcm1fc2Vlayk6CgkgIEZpeCBzb21lIGNvbW1lbnRzLgoKMjAwOC0wNS0wNyAwOTozNDo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy4qOiBBZGRlZCBmb3JtYXQgcHJvcGVydHkgdG8gY29udHJvbCB0aGUgZm9ybWF0IG9mIHRoZSBuZXdzZWdtZW50IGV2ZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmFrZV9zcmNfaW5pdCksIChnc3RfZmFrZV9zcmNfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mYWtlX3NyY19nZXRfcHJvcGVydHkpLCAoZ3N0X2Zha2Vfc3JjX3N0YXJ0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSAgQWRkZWQgZm9ybWF0IHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiB0aGUgbmV3c2VnbWVudCBldmVudHMuCgkgIEFQSTogR3N0RmFrZVNyYzpmb3JtYXQKCjIwMDgtMDUtMDYgMDg6NDU6MDcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBBZGQgZ3N0X3BhZF9oYXNfbmFtZSgpIHRvIHRoZSBleHBvcnRlZCBzeW1ib2xzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIGdzdF9wYWRfaGFzX25hbWUoKSB0byB0aGUgZXhwb3J0ZWQgc3ltYm9scy4KCjIwMDgtMDUtMDYgMDg6NDM6NTcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIERvbid0IGFsbG93IG5lZ2F0aXZlIHNpemVzIHdoZW4gYWxsb2NhdGluZyBuZXcgYnVmZmVycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hbGxvY19idWZmZXJfZnVsbCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKToKCSAgRG9uJ3QgYWxsb3cgbmVnYXRpdmUgc2l6ZXMgd2hlbiBhbGxvY2F0aW5nIG5ldyBidWZmZXJzLgoJICBGaXhlcyBidWcgIzQ2MTI1My4KCjIwMDgtMDUtMDUgMTY6NDc6MjkgKzAwMDAgIFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KCgkgIGdzdC9nc3RidXMuYzogRG9uJ3QgcHJpbnQgYSB3YXJuaW5nIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSB3aGVuIHdlIHRyeSB0byBwb3AgaGVyZS4gVGhhdCBjb3VsZCBoYXBwZW4gaWYgYW5vdGhlciB0aHJlYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNqb2VyZCBTaW1vbnMgPHNqb2VyZCBhdCBsdW9uIG5ldD4KCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3NvdXJjZV9kaXNwYXRjaCk6CgkgIERvbid0IHByaW50IGEgd2FybmluZyBpZiB0aGUgcXVldWUgaXMgZW1wdHkgd2hlbiB3ZSB0cnkgdG8gcG9wCgkgIGhlcmUuIFRoYXQgY291bGQgaGFwcGVuIGlmIGFub3RoZXIgdGhyZWFkIG9yIGNhbGxiYWNrIHNldCB0aGUKCSAgYnVzIHRvIGZsdXNoaW5nIGJldHdlZW4gdGhlIHNvdXJjZSdzIGNoZWNrL3ByZXBhcmUgYW5kIHRoZQoJICBkaXNwYXRjaCBiZWluZyBjYWxsZWQgKCM1MzE1MzgpLgoKMjAwOC0wNS0wNSAxNjoyNToyMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBTbWFsbCBkb2NzIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkgIFNtYWxsIGRvY3MgZml4LgoKMjAwOC0wNS0wNSAxNTo1MDozNiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHZhbHVlLmM6IEFkZCB1bml0IHRlc3QgZm9yIGRlc2VyaWFsaXppbmcgdWludDY0cyBhbmQgY2hlY2sgc29tZSByZWFsbHkgbGFyZ2UgbnVtYmVycyBpbiB0aGUgaW50NjQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgQWRkIHVuaXQgdGVzdCBmb3IgZGVzZXJpYWxpemluZyB1aW50NjRzIGFuZCBjaGVjayBzb21lIHJlYWxseSBsYXJnZQoJICBudW1iZXJzIGluIHRoZSBpbnQ2NCB0ZXN0LgoKMjAwOC0wNS0wNCAxOTowNzoyMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogVXNlICIlcyIgYXMgZm9ybWF0IHN0cmluZyBpbnN0ZWFkIG9mIHByaW50aW5nIHN0cmluZ3MgZGlyZWN0bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChuX3ByaW50KSwgKHByaW50X2hpZXJhcmNoeSksCgkgIChwcmludF9pbnRlcmZhY2VzKSwgKHByaW50X2VsZW1lbnRfcHJvcGVydGllc19pbmZvKSwKCSAgKHByaW50X3NpZ25hbF9pbmZvKToKCSAgVXNlICIlcyIgYXMgZm9ybWF0IHN0cmluZyBpbnN0ZWFkIG9mIHByaW50aW5nIHN0cmluZ3MgZGlyZWN0bHkuCgoyMDA4LTA1LTA0IDE0OjI1OjA3ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0Y2xvY2suYzogTWFrZSBzb21lIGNoZWNrcyBhY3R1YWxseSB1c2VmdWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX3NldF9jYWxpYnJhdGlvbik6CgkgIE1ha2Ugc29tZSBjaGVja3MgYWN0dWFsbHkgdXNlZnVsLgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX3BsdWdpbik6CgkgIFJlbW92ZSBzb21lIHVudXNlZCBjb2RlLiBVbnNpZ25lZCBpbnRlZ2VycyB0ZW5kIHRvIGJlID49IDAuCgoyMDA4LTA1LTAzIDE5OjIzOjQzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogRml4ICdTaW5jZTonIHZlcnNpb24gaW4gZ3N0X3ZhbHVlX2R1cF9taW5pX29iamVjdCgpIGRvY3MgYmx1cmI6IHRoaXMgZnVuY3Rpb24gd2FzIG5vdCBpbiB0aGUgdW5zLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfdmFsdWVfZ2V0X21pbmlfb2JqZWN0KToKCSAgRml4ICdTaW5jZTonIHZlcnNpb24gaW4gZ3N0X3ZhbHVlX2R1cF9taW5pX29iamVjdCgpIGRvY3MgYmx1cmI6IHRoaXMKCSAgZnVuY3Rpb24gd2FzIG5vdCBpbiB0aGUgdW5zY2hlZHVsZWQgMC4xMC4xOSByZWxlYXNlLgoKMjAwOC0wNS0wMyAxOToxMzo0NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeS5jOiBPbmx5IHByaW50IG9uZSBsb2cgbWVzc2FnZSBwZXIgbm9uLXBsdWdpbiBmaWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOgoJICBPbmx5IHByaW50IG9uZSBsb2cgbWVzc2FnZSBwZXIgbm9uLXBsdWdpbiBmaWxlLgoKMjAwOC0wNS0wMyAxOTowODo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmM6IEZpeCBhbGlnbm1lbnQgb2YgZGVidWcgbG9nIGNvbHVtbnMgb24gNjQtYml0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5jOiAoZ3N0X2RlYnVnX2xvZ19kZWZhdWx0KToKCSAgRml4IGFsaWdubWVudCBvZiBkZWJ1ZyBsb2cgY29sdW1ucyBvbiA2NC1iaXQuCgoyMDA4LTA1LTAzIDE2OjUyOjE2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9saWJzLzogSWdub3JlIHByaXZhdGUgY29udHJvbGxlciBoZWFkZXJzIGZvciBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgSWdub3JlIHByaXZhdGUgY29udHJvbGxlciBoZWFkZXJzIGZvciBkb2NzLgoKMjAwOC0wNS0wMyAxNToyNToyNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IE1vdmUgc29tZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBpbnRvIHByaXZhdGUgaGVhZGVycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVycHJpdmF0ZS5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZS5jOgoJICAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2Vfc2V0X2ludGVycG9sYXRpb25fbW9kZSk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZXByaXZhdGUuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2xpYi5jOgoJICBNb3ZlIHNvbWUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgaW50byBwcml2YXRlIGhlYWRlcnMuCgoyMDA4LTA1LTAyIDEwOjEyOjMzICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0ZGVidWd1dGlscy5jOiBSZW1vdmUgc29tZSBjb2RlIHRoYXQgaXMgdW51c2VkIGFmdGVyIFN0ZWZhbidzIHJlZmFjdG9yaW5nIGFuZCB1c2VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG5vdywuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGRlYnVndXRpbHMuYzogKGRlYnVnX2R1bXBfZWxlbWVudF9wYWQpOgoJICBSZW1vdmUgc29tZSBjb2RlIHRoYXQgaXMgdW51c2VkIGFmdGVyIFN0ZWZhbidzIHJlZmFjdG9yaW5nIGFuZCB1c2VzCgkgIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG5vdywgcmVzdWx0aW5nIGluIGEgY29tcGlsZXIgd2FybmluZy4KCjIwMDgtMDUtMDEgMTM6MDM6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnkuYzogUnVuIGdfc3RyX2hhc19zdWZmaXgoKSBvbmx5IG9uIHRoZSBmaWxlIG5hbWUsIG5vdCB0aGUgZW50aXJlIGZpbGUgcGF0aC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfc2Nhbl9wYXRoX2xldmVsKToKCSAgUnVuIGdfc3RyX2hhc19zdWZmaXgoKSBvbmx5IG9uIHRoZSBmaWxlIG5hbWUsIG5vdCB0aGUKCSAgZW50aXJlIGZpbGUgcGF0aC4KCjIwMDgtMDQtMzAgMTQ6MjA6NDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IFNpbmNlIHdlJ3JlIG5vdCBjYWxsZWQgb25seSBmcm9tIHRoZSBjaGFpbiBmdW5jdGlvbiBhbnkgbG9uZ2VyLCB3ZSBjYW4ndCBhc3N1bWUgdGhhdCB0aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2xlYWtfZG93bnN0cmVhbSk6CgkgIFNpbmNlIHdlJ3JlIG5vdCBjYWxsZWQgb25seSBmcm9tIHRoZSBjaGFpbiBmdW5jdGlvbiBhbnkgbG9uZ2VyLAoJICB3ZSBjYW4ndCBhc3N1bWUgdGhhdCB0aGVyZSdzIGFsd2F5cyBkYXRhIGluIHRoZSBxdWV1ZSwgc28gbW92ZQoJICB0aGUgaXNfZnVsbCBjaGVjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb29wIChvdGhlcndpc2Ugd2UnZAoJICBoaXQgdGhlIGFzc2VydCB3aGVuIGNoYW5naW5nIHRoZSBsaW1pdCBwcm9wZXJ0aWVzIHdoaWxlIHRoZQoJICBxdWV1ZSBpcyBlbXB0eSBvciBub3QgcnVubmluZyB5ZXQpLgoJICBBbHNvLCBvbmx5IHNldCBhIGRpc2NvbnQgaWYgaXRlbXMgd2VyZSBhY3R1YWxseSByZW1vdmVkIGZyb20KCSAgdGhlIHF1ZXVlLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3F1ZXVlLmM6ICh0ZXN0X2xlYWt5X2Rvd25zdHJlYW0pOgoJICBUZXN0IGNhc2UgZm9yIHRoZSBhYm92ZS4KCjIwMDgtMDQtMzAgMDk6MzU6NDMgKzAwMDAgIEpvbmFzIEhvbG1iZXJnIDxqb25hcy5ob2xtYmVyZ0BheGlzLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogV2hlbiBjaGFuZ2luZyB0aHIgbWF4IGNhcGFjaXR5IG9mIGEgbGVha3kgcXVldWUsIGltbWVkaWF0bHkgZHJvcCBidWZmZXJzIGluc3RlYWQgb2Ygd2FpdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEpvbmFzIEhvbG1iZXJnIDxqb25hcyBkb3QgaG9sbWJlcmcgYXQgYXhpcyBkb3QgY29tPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9sZWFrX2Rvd25zdHJlYW0pLAoJICAoZ3N0X3F1ZXVlX2NoYWluKSwgKHF1ZXVlX2NhcGFjaXR5X2NoYW5nZSksCgkgIChnc3RfcXVldWVfc2V0X3Byb3BlcnR5KToKCSAgV2hlbiBjaGFuZ2luZyB0aHIgbWF4IGNhcGFjaXR5IG9mIGEgbGVha3kgcXVldWUsIGltbWVkaWF0bHkgZHJvcCBidWZmZXJzCgkgIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYSBwdXNoIG9uIHRoZSBzaW5rcGFkLiBGaXhlcyAjNTMwNjM3LgoKMjAwOC0wNC0zMCAwNzo1NjozOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGRlYnVndXRpbHMuYzogUmVmYWN0b3IgY29kZSBhbmQgZml4IGhhbmRsaW5nIG9mIGdob3N0cGFkcyBhbmQgdGhlaXIgcHJveHlwYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICBSZWZhY3RvciBjb2RlIGFuZCBmaXggaGFuZGxpbmcgb2YgZ2hvc3RwYWRzIGFuZCB0aGVpciBwcm94eXBhZHMuCgoyMDA4LTA0LTI5IDExOjIzOjUxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWRkIG1ldGhvZCB0byBjb252ZW5pZW50bHkgY2hlY2sgdGhlIG5hbWUgb2YgYSBjdXN0b20gZXZlbnQgd2l0aCBnc3RfZXZlbnRfaGFzX25hbWUoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9oYXNfbmFtZSk6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCBtZXRob2QgdG8gY29udmVuaWVudGx5IGNoZWNrIHRoZSBuYW1lIG9mIGEgY3VzdG9tIGV2ZW50IHdpdGgKCSAgZ3N0X2V2ZW50X2hhc19uYW1lKCkuCgkgIFJlZm9ybWF0IHRoZSBldmVudCBkb2NzIHNvIHRoYXQgcmVsYXRlZCBtZXRob2RzIGFyZSBwdXQgdG9nZXRoZXIgaW5zdGVhZAoJICBvZiB0aGUgZGVmYXVsdCBhbHBoYWJldGljYWwgc29ydC4KCSAgVXBkYXRlIHVuaXQgdGVzdCB3aXRoIG5ldyBtZXRob2QuCgkgIEFQSTogR3N0RXZlbnQ6OmdzdF9ldmVudF9oYXNfbmFtZSgpCgoyMDA4LTA0LTI4IDE4OjQ0OjQ4ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbTogRG9uJ3QgYWRkIGFuIGV4cGxpY2l0IGxpbmsgdG8gbGliZ3N0cmVhbWVyLTAuMTAubGE7IGl0J3MgYWxyZWFkeSBpbmNsdWRlZCBpbiBHU1RfT0JKX0xJQlMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICBEb24ndCBhZGQgYW4gZXhwbGljaXQgbGluayB0byBsaWJnc3RyZWFtZXItMC4xMC5sYTsgaXQncyBhbHJlYWR5CgkgIGluY2x1ZGVkIGluIEdTVF9PQkpfTElCUy4KCjIwMDgtMDQtMjggMDk6MjE6MzMgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3QuYzogUmVnaXN0ZXIgR3N0Q2xvY2sgdHlwZSBmcm9tIGEgdHlwZS1zYWZlIGNvbnRleHQuIEZpeGVzIGJ1ZyAjNTMwMzE3LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIFJlZ2lzdGVyIEdzdENsb2NrIHR5cGUgZnJvbSBhIHR5cGUtc2FmZSBjb250ZXh0LiBGaXhlcyBidWcgIzUzMDMxNy4KCjIwMDgtMDQtMjYgMDA6MTM6MDMgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZC5oZXJ2ZXlAY29sbGFib3JhLmNvLnVrPgoKCSAgdG9vbHMvZ3N0LXJ1bi5jOiBJbmNsdWRlIDx1bmlzdGQuaD4gY29uZGl0aW9uYWxseSBvbiBIQVZFX1VOSVNURF9IIGFzIGVsc2V3aGVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5IEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZC5oZXJ2ZXlAY29sbGFib3JhLmNvLnVrPgoJICAqIHRvb2xzL2dzdC1ydW4uYzoKCSAgSW5jbHVkZSA8dW5pc3RkLmg+IGNvbmRpdGlvbmFsbHkgb24gSEFWRV9VTklTVERfSCBhcyBlbHNld2hlcmUuCgoyMDA4LTA0LTI1IDE3OjU0OjI4ICswMDAwICBBbnRvaW5lIFRyZW1ibGF5IDxoZXhhMDBAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBVc2UgdGhlIEdMaWIgc3R1ZmYgdG8gY3JlYXRlIGEgcHJpdmF0ZSBzdHJ1Y3R1cmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2luaXQpLAoJICAoZ3N0X2Jpbl9kaXNwb3NlKToKCSAgVXNlIHRoZSBHTGliIHN0dWZmIHRvIGNyZWF0ZSBhIHByaXZhdGUgc3RydWN0dXJlLgoJICBBZGQgc29tZSBsb2NraW5nIGFyb3VuZCBzb21lIGRpc3Bvc2UgbWV0aG9kcyB0byBtYWtlIHRoZW0gYSBsaXR0bGUKCSAgc2FmZXIsIHNlZSAjNTI5NzIzLiBQYXRjaCBieTogQW50b2luZSBUcmVtYmxheSA8aGV4YTAwIGF0IGdtYWlsIGRvdCBjb20+CgoyMDA4LTA0LTI1IDEzOjIyOjMyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlLzogRml4IGRvYyB0eXBvcyBhbmQgdW5pZnkgY2FwcyBhIGJpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgRml4IGRvYyB0eXBvcyBhbmQgdW5pZnkgY2FwcyBhIGJpdC4KCjIwMDgtMDQtMjUgMTM6MDk6NDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guMS5pbjogRm9yZ290IHRvIGFsc28gYWRkIHRoZSBlbnZ2YXIgZG9jcyBoZXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLjEuaW46CgkgIEZvcmdvdCB0byBhbHNvIGFkZCB0aGUgZW52dmFyIGRvY3MgaGVyZS4KCjIwMDgtMDQtMjUgMTA6MDE6NDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBSZWYgc29tZSBtb3JlIGNsYXNzZXMgaW4gZ3N0X2luaXQoKSB0byB3b3JrIGFyb3VuZCB0aHJlYWQtc2FmZXR5IGlzc3VlcyBpbiBwcmUtMi4xNiBHTGlicywgYW5kIGFkZCBiYXNpYyB1bml0IHRlc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCksIChnc3RfZGVpbml0KToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzogKEdTVF9TVEFSVF9URVNUKSwgKHBpcGVsaW5lX3RocmVhZCksCgkgICh0ZXN0X2NvbmN1cnJlbnRfY3JlYXRlKSwgKGdzdF9waXBlbGluZV9zdWl0ZSk6CgkgIFJlZiBzb21lIG1vcmUgY2xhc3NlcyBpbiBnc3RfaW5pdCgpIHRvIHdvcmsgYXJvdW5kIHRocmVhZC1zYWZldHkKCSAgaXNzdWVzIGluIHByZS0yLjE2IEdMaWJzLCBhbmQgYWRkIGJhc2ljIHVuaXQgdGVzdC4KCjIwMDgtMDQtMjUgMDc6MjI6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJlYXJyYW5nZSB0aGUgbGF0ZW5jeSBxdWVyeSBjb2RlLiBXZSBhbHdheXMgd2FudCB0byBkbyB0aGUgdXBzdHJlYW0gcXVlcnksIGV2ZW4gaWYgd2UgYXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19xdWVyeV9sYXRlbmN5KSwKCSAgKGdzdF9iYXNlX3Npbmtfc2VuZF9ldmVudCk6CgkgIFJlYXJyYW5nZSB0aGUgbGF0ZW5jeSBxdWVyeSBjb2RlLiBXZSBhbHdheXMgd2FudCB0byBkbyB0aGUgdXBzdHJlYW0KCSAgcXVlcnksIGV2ZW4gaWYgd2UgYXJlIG5vdCBsaXZlIHNvIHRoYXQgdGhlIHVwc3RyZWFtIGVsZW1lbnRzIGNhbiBnZXQgdGhlCgkgIGxhdGVuY3kgcmVzdWx0cyB0b28uIElmIHdlIGZhaWwgZG9pbmcgdGhlIHF1ZXJ5IGFuZCB3ZSBhcmUgbGl2ZSwgd2UKCSAgcmV0dXJuIFRSVUUgYWZ0ZXJ3YXJkcy4KCjIwMDgtMDQtMjQgMTU6MTQ6NTQgKzAwMDAgIEphc29uIFpoYW8gPGUzNDIzY0Btb3Rvcm9sYS5jb20+CgoJICBFbmFibGUvZGlzYWJsZSBzY2FuX2FuZF91cGRhdGVfcmVnaXN0cnkoKSBiYXNlZCBvbiBjb21tYW5kbGluZSBzd2l0Y2ggb3IgZW52aXJvbm1lbnQgdmFyaWFibGUuIEZpeGVzICM1MjA0NjguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogSmFzb24gWmhhbyA8ZTM0MjNjQG1vdG9yb2xhLmNvbT4KCSAgKiBkb2NzL2dzdC9ydW5uaW5nLnhtbDoKCSAgKiBnc3QvZ3N0LmM6CgkgIEVuYWJsZS9kaXNhYmxlIHNjYW5fYW5kX3VwZGF0ZV9yZWdpc3RyeSgpIGJhc2VkIG9uIGNvbW1hbmRsaW5lIHN3aXRjaAoJICBvciBlbnZpcm9ubWVudCB2YXJpYWJsZS4gRml4ZXMgIzUyMDQ2OC4KCSAgKiBDaGFuZ2VMb2c6CgkgIEZpeCB0eXBvIGluIG15IHByZXZpb3VzIGNvbW1pdC4KCjIwMDgtMDQtMjQgMDg6Mjc6NTkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBBZGQgYSB3YXJuaW5nIG9mIHdlIGhpdCB1bmhhbmRsZWQgZmFjdG9yaWVzIHdoZW4gc2F2aW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgQWRkIGEgd2FybmluZyBvZiB3ZSBoaXQgdW5oYW5kbGVkIGZhY3RvcmllcyB3aGVuIHNhdmluZy4KCSAgTW9yZSBkZWJ1ZyBsb2dnaW5nIGRldGFpbCwgYnV0IG1vdmUgdG8gTE9HIGNhdGVnb3J5LgoKMjAwOC0wNC0yNCAwNjo0Njo1NCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmM6IFRlbGwgdGhlICp0cnV0aCogd2hlbiBpbXByb3ZpbmcgdGhlIGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOgoJICBUZWxsIHRoZSAqdHJ1dGgqIHdoZW4gaW1wcm92aW5nIHRoZSBkb2N1bWVudGF0aW9uLgoKMjAwOC0wNC0yMyAxNDo1NDoyMCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IFVucmVmIHRoZSBmYWN0b3J5IGFmdGVyIGl0IHdhcyB1c2VkIHRoZSBsYXN0IHRpbWUsIG5vdCBiZWZvcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKToKCSAgVW5yZWYgdGhlIGZhY3RvcnkgYWZ0ZXIgaXQgd2FzIHVzZWQgdGhlIGxhc3QgdGltZSwgbm90IGJlZm9yZS4KCSAgKiBnc3QvZ3N0aW5kZXhmYWN0b3J5LmM6IChnc3RfaW5kZXhfZmFjdG9yeV9tYWtlKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcgYSBiaXQgYW5kIGRvbid0IGxlYWsgYSByZWYgdG8gdGhlIGluZGV4IGZhY3Rvcnkgd2l0aAoJICBlYWNoIGNhbGwuCgoyMDA4LTA0LTIzIDEzOjU1OjAxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnkuYzogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24uCgoyMDA4LTA0LTIzIDEwOjE0OjM4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0c2VnbWVudC5jOiBUaGUgZ2xpYiBtYWNybyBzZWVtcyB0byBiZSBib3JrZWQuIFVzZSBnX3NsaWNlX2NvcHkgZGlyZWN0bHkgYW5kIGNhc3QgaW4gdGhlIGhvcGUgdGhhdCB0aGlzIGZpeGVzIHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHNlZ21lbnQuYzoKCSAgVGhlIGdsaWIgbWFjcm8gc2VlbXMgdG8gYmUgYm9ya2VkLiBVc2UgZ19zbGljZV9jb3B5IGRpcmVjdGx5IGFuZCBjYXN0CgkgIGluIHRoZSBob3BlIHRoYXQgdGhpcyBmaXhlcyB0aGUgd2FybmluZyBvbiA2NGJpdC4KCjIwMDgtMDQtMjMgMDc6MDg6NTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IERvY3VtZW50IHRoZSBuZXcgZnVuY3Rpb24uIFVzZSBnX3NsaWNlX2R1cCgpIChubyBuZWVkIGZvciBnc3Rfc2VnbWVudF9pbml0KCkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOgoJICBEb2N1bWVudCB0aGUgbmV3IGZ1bmN0aW9uLiBVc2UgZ19zbGljZV9kdXAoKSAobm8gbmVlZCBmb3IKCSAgZ3N0X3NlZ21lbnRfaW5pdCgpKS4KCjIwMDgtMDQtMjMgMDY6NTc6MzAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IE1vdmUgR1BhcmFtU2VwYyBtYWNyb3MgdG8gc3RhbmRhcnQgc2VjdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgTW92ZSBHUGFyYW1TZXBjIG1hY3JvcyB0byBzdGFuZGFydCBzZWN0aW9uLgoJICAqIGdzdC9nc3RiaW4uYzoKCSAgRG4ndCBkb2N1bWVudCBfZ2V0X3R5cGUgLSBpdHMgaW4gcHJpdmF0ZSBzZWN0aW9uIGluIGRvY3MgYW55d2F5IGFuZAoJICB0aGlzIGRvYy1ibG9iIHdhcyBpbmNvbXBsZXRlLgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBGaXggd3Jvbmcgc3ltYm9sIG5hbWVzIGluIGRvY3MuCgkgICogZ3N0L2dzdG1hY3Jvcy5oOgoJICBBZGQgb25jZSBkb2Mgc2VudGVuY2UuCgkgICogdGVzdHMvY2hlY2svZ3N0Ly5jdnNpZ25vcmU6CgkgIElnbm9yZSBtb3JlLgoKMjAwOC0wNC0yMSAxMDoyNTowMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9nc3QvTWFrZWZpbGUuYW06IEFuZCByZW1vdmUgdGhvc2UgbGlicyBoZXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSAgQW5kIHJlbW92ZSB0aG9zZSBsaWJzIGhlcmUuCgoyMDA4LTA0LTIxIDA5OjI5OjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9saWJzL01ha2VmaWxlLmFtOiBGaXggZG9jcyBidWlsZCBhZ2FpbiBieSBhZGRpbmcgbGliZ3N0bmV0LTAuMTAuc28gdG8gU0NBTk9CSl9ERVBTLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkgIEZpeCBkb2NzIGJ1aWxkIGFnYWluIGJ5IGFkZGluZyBsaWJnc3RuZXQtMC4xMC5zbyB0byBTQ0FOT0JKX0RFUFMuCgoyMDA4LTA0LTIxIDA4OjM0OjA5ICswMDAwICBPbGl2aWVyIENyZXRlIDx0ZXN0ZXJAdGVzdGVyLmNhPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBBZGQgdGhlIG1pbi10aHJlc2hvbGQgdG8gdGhlIG1pbiBsYXRlbmN5IGlmIHBvc3NpYmxlLiBGaXhlcyAjNTI5MTQ4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE9saXZpZXIgQ3JldGUgPHRlc3RlciBhdCB0ZXN0ZXIgZG90IGNhPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc3JjX3F1ZXJ5KToKCSAgQWRkIHRoZSBtaW4tdGhyZXNob2xkIHRvIHRoZSBtaW4gbGF0ZW5jeSBpZiBwb3NzaWJsZS4gRml4ZXMgIzUyOTE0OC4KCjIwMDgtMDQtMjEgMDc6NDU6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlcy5pbjogU3R1cGlkIGVkaXRvciwgSSByZW1vdmVkIHRoYXQgbGluZSBhcyBpdCBzaG91bGQgZ28gaW4geWV0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXMuaW46CgkgIFN0dXBpZCBlZGl0b3IsIEkgcmVtb3ZlZCB0aGF0IGxpbmUgYXMgaXQgc2hvdWxkIGdvIGluIHlldC4KCjIwMDgtMDQtMjEgMDc6NDI6MTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvOiBSZW1vdmUgbGlicmFyeSB0eXBlcyBmcm8gY29yZSBkb2NzIGFuZCBoYXZlIHRoZW0gaW4gbGlicyBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXMuaW46CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLnR5cGVzOgoJICBSZW1vdmUgbGlicmFyeSB0eXBlcyBmcm8gY29yZSBkb2NzIGFuZCBoYXZlIHRoZW0gaW4gbGlicyBkb2NzLgoJICBSZWZvcm1hdCBhbmQgY2xlYW51cC4gQWRkIGNvbW1lbnQgZm9yIG1pbmlvYmplY3QgdHlwZXMuCgoyMDA4LTA0LTIwIDE2OjMyOjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHVyaS5jOiBGaXggbGVhazogZ19zdHJkb3duIG9wZXJhdGVzIG9uIHRoZSBzdHJpbmcgaW4gcGxhY2UsIHdoaWxlIGdfYXNjaWlfc3RyZG93bigpIHJldHVybnMgYSBuZXdseS1hbGxvY2F0ZWQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfZ2V0X3Byb3RvY29sKToKCSAgRml4IGxlYWs6IGdfc3RyZG93biBvcGVyYXRlcyBvbiB0aGUgc3RyaW5nIGluIHBsYWNlLCB3aGlsZQoJICBnX2FzY2lpX3N0cmRvd24oKSByZXR1cm5zIGEgbmV3bHktYWxsb2NhdGVkIHN0cmluZy4KCjIwMDgtMDQtMjAgMDk6NTU6MjUgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHRvb2xzL2dzdC1pbnNwZWN0LmM6IFByaW50IHRoZSBVUkkgcHJvdG9jb2xzIGFuZCB0aGUgVVJJIHR5cGUgc3VwcG9ydGVkIGJ5IHRoZSBlbGVtZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfdXJpX2hhbmRsZXJfaW5mbyksCgkgIChwcmludF9lbGVtZW50X2luZm8pOgoJICBQcmludCB0aGUgVVJJIHByb3RvY29scyBhbmQgdGhlIFVSSSB0eXBlIHN1cHBvcnRlZCBieSB0aGUgZWxlbWVudC4KCjIwMDgtMDQtMTkgMTY6MDU6NTggKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3R0YWdsaXN0LmM6IFVzZSBnX3ZhbHVlX3Rha2Vfc3RyaW5nKCkgaW5zdGVhZCBvZiB0aGUgZGVwcmVjYXRlZCBnX3ZhbHVlX3NldF9zdHJpbmdfdGFrZV9vd25lcnNoaXAoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzogKGdzdF90YWdfbWVyZ2Vfc3RyaW5nc193aXRoX2NvbW1hKToKCSAgVXNlIGdfdmFsdWVfdGFrZV9zdHJpbmcoKSBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkCgkgIGdfdmFsdWVfc2V0X3N0cmluZ190YWtlX293bmVyc2hpcCgpLgoKMjAwOC0wNC0xOSAxNTo0MjoxOSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IFJldHVybiB0aGUgb2xkIENSQyBpbnN0ZWFkIG9mIDAgaWYgd2UgZ2l2ZSBhIE5VTEwgYnVmZmVyIG9yIGEgYnVmZmVyIHdpdGggYSBsZW5ndGggb2YgMC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChfZ3N0X2NyYzMyKToKCSAgUmV0dXJuIHRoZSBvbGQgQ1JDIGluc3RlYWQgb2YgMCBpZiB3ZSBnaXZlIGEgTlVMTCBidWZmZXIKCSAgb3IgYSBidWZmZXIgd2l0aCBhIGxlbmd0aCBvZiAwLgoKMjAwOC0wNC0xOSAxNTozNjoyMCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHVyaS5jOiBBIHZhbGlkIFVSSSBzY2hlbWUgY2FuIGFsc28gaW5jbHVkZSAnKycsICctJyBhbmQgJy4nIGFkZGl0aW9uYWwgdG8gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYXMgcGVyIFJGQyAzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfcHJvdG9jb2xfY2hlY2tfaW50ZXJuYWwpLAoJICAoZ3N0X3VyaV9nZXRfcHJvdG9jb2wpLCAoZ3N0X3VyaV9oYXNfcHJvdG9jb2wpLAoJICAoZ3N0X3VyaV9jb25zdHJ1Y3QpLCAoZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkpOgoJICBBIHZhbGlkIFVSSSBzY2hlbWUgY2FuIGFsc28gaW5jbHVkZSAnKycsICctJyBhbmQgJy4nIGFkZGl0aW9uYWwKCSAgdG8gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYXMgcGVyIFJGQyAzOTg2IFNlY3Rpb24gMy4xLgoJICBIYW5kbGUgVVJJIHNjaGVtZXMgY2FzZSBpbnNlbnNpdGl2ZSBpbiBhbGwgcGxhY2VzIGFuZCBjb252ZXJ0CgkgIHRvIGxvd2VyLWNhc2Ugd2hlbiBjb25zdHJ1Y3RpbmcgYW4gVVJJIG9yIHNldHRpbmcgYW4gVVJJIHdpdGgKCSAgdGhlIEdzdFVSSUhhbmRsZXIgaW50ZXJmYWNlLiBGaXhlcyBidWcgIzUyODg2OC4KCSAgQWxsIGVsZW1lbnRzIGNhbiBzdGlsbCBhc3N1bWUgKGFzIGJlZm9yZSkgdGhhdCB0aGV5IHdpbGwKCSAgZ2V0IHBhc3NlZCBVUklzIHdpdGggYSBsb3dlci1jYXNlIFVSSSBzY2hlbWUgYnkgdGhlIEdzdFVSSUhhbmRsZXIKCSAgaW50ZXJmYWNlLgoKMjAwOC0wNC0xNyAxMDowOTozOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86IERvbid0IHVzZSBnX2F0b21pY19zZXRfaW50IHdoZXJlIGl0J3Mgbm90IG5lZWRlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9zdGF0aWNfY2Fwc19nZXQpOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2VudHJ5X25ldyk6CgkgIERvbid0IHVzZSBnX2F0b21pY19zZXRfaW50IHdoZXJlIGl0J3Mgbm90IG5lZWRlZC4KCjIwMDgtMDQtMTcgMDg6NDU6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBGaXggMiBjYXBzIGxlYWtzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9jYXBzKToKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBGaXggMiBjYXBzIGxlYWtzLgoKMjAwOC0wNC0xNyAwODozNDoxNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IFVzZSBnX2F0b21pY19pbnRfc2V0KCkgaGVyZSB0b28gaW5zdGVhZCBvZiBhc3NpZ25tZW50ICsgZ19hdG9taWNfaW50X2dldCgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9hdG9taWNfaW50X3NldCk6CgkgIFVzZSBnX2F0b21pY19pbnRfc2V0KCkgaGVyZSB0b28gaW5zdGVhZCBvZiBhc3NpZ25tZW50ICsKCSAgZ19hdG9taWNfaW50X2dldCgpLgoKMjAwOC0wNC0xNyAwNzoxNDo0NiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLio6IEFQSTogRGVwcmVjYXRlIGdzdF9hdG9taWNfaW50X3NldCgpLCBnX2F0b21pY19pbnRfc2V0KCkgc2hvdWxkIGJlIHVzZWQgbm93IHRoYXQgd2UgZGVwZW5kIG9uIG5ldyBlbm91Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBUEk6IERlcHJlY2F0ZSBnc3RfYXRvbWljX2ludF9zZXQoKSwgZ19hdG9taWNfaW50X3NldCgpIHNob3VsZCBiZSB1c2VkCgkgIG5vdyB0aGF0IHdlIGRlcGVuZCBvbiBuZXcgZW5vdWdoIEdMaWIuCgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9zdGF0aWNfY2Fwc19nZXQpOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2VudHJ5X25ldyk6CgkgICogZ3N0L2dzdGluZm8uYzogKF9nc3RfZGVidWdfaW5pdCksIChnc3RfZGVidWdfc2V0X2NvbG9yZWQpLAoJICAoZ3N0X2RlYnVnX3NldF9kZWZhdWx0X3RocmVzaG9sZCksIChfZ3N0X2RlYnVnX2NhdGVnb3J5X25ldyksCgkgIChnc3RfZGVidWdfY2F0ZWdvcnlfc2V0X3RocmVzaG9sZCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19pbml0KSwKCSAgKGdzdF9iYXNlX3Npbmtfc2V0X3Fvc19lbmFibGVkKToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfc2V0X3Byb3BlcnR5KToKCSAgVXNlIGdfYXRvbWljX2ludF9zZXQoKSBpbnN0ZWFkIG9mIGdzdF9hdG9taWNfaW50X3NldCgpLgoKMjAwOC0wNC0xNiAxODo0ODowMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHF1ZXJ5LmM6IEFsc28gdXNlIEdfR0lOVDY0X0NPTlNUQU5UIGZvciB0aGUgcXVlcmllcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6CgkgIEFsc28gdXNlIEdfR0lOVDY0X0NPTlNUQU5UIGZvciB0aGUgcXVlcmllcy4KCjIwMDgtMDQtMTYgMTg6Mzg6MTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RtZXNzYWdlLmM6IFVzZSBHX0dJTlQ2NF9DT05TVEFOVCBpbiB2YXJhcmdzIGZ1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICBVc2UgR19HSU5UNjRfQ09OU1RBTlQgaW4gdmFyYXJncyBmdW5jdGlvbi4KCjIwMDgtMDQtMTYgMTU6NTE6MTcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBJbml0aWFsaXplIHRoZSByZWdpc3RyeSBtYWdpYyB3aXRoIHplcm9lcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X2luaXRpYWxpemVfbWFnaWMpOgoJICBJbml0aWFsaXplIHRoZSByZWdpc3RyeSBtYWdpYyB3aXRoIHplcm9lcy4KCjIwMDgtMDQtMTYgMTQ6MTg6NTggKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS4qOiBBZGQgY3JjMzIgY2hlY2tzdW0gdG8gdGhlIGJpbmFyeSByZWdpc3RyeSBmaWxlIGFuZCBjaGVjayB0aGlzIGJlZm9yZSBhY2NlcHRpbmcgYSByZWdpc3RyeSBmaWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKF9nc3RfY3JjMzIpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2luaXRpYWxpemVfbWFnaWMpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZV9jYWNoZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2NoZWNrX21hZ2ljKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkgIEFkZCBjcmMzMiBjaGVja3N1bSB0byB0aGUgYmluYXJ5IHJlZ2lzdHJ5IGZpbGUgYW5kIGNoZWNrIHRoaXMgYmVmb3JlCgkgIGFjY2VwdGluZyBhIHJlZ2lzdHJ5IGZpbGUuCgkgIEFsc28gZnJlZSB0aGUgZGF0YSBsaXN0IHdoZW4gd3JpdGluZyB0byB0aGUgcmVnaXN0cnkgZmlsZSBmYWlscy4KCjIwMDgtMDQtMTYgMTM6MTY6NDQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBJZiBhbiBlbGVtZW50IHN1cHBvcnRzIHRoZSBVcmkgaW50ZXJmYWNlLCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byB0aGUgc3VwcG9ydGVkIFVSSSBwcm90by4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW4pOgoJICBJZiBhbiBlbGVtZW50IHN1cHBvcnRzIHRoZSBVcmkgaW50ZXJmYWNlLCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlcgoJICB0byB0aGUgc3VwcG9ydGVkIFVSSSBwcm90b2NvbHMgYnV0IHRoaXMgcG9pbnRlciBjb250YWlucyBub3RoaW5nCgkgIGRvbid0IHRyeSB0byBzYXZlIHRoYXQgYXMgaXQgd2lsbCBjb3JydXB0IHRoZSByZWdpc3RyeS4KCSAgRG9uJ3QgdW5yZWYgdGhlIHBsdWdpbiBpZiB3ZSBhZGRlZCBpdCB0byB0aGUgcmVnaXN0cnkgYWxyZWFkeSBidXQKCSAgZmFpbCB0byBsb2FkIGEgZmVhdHVyZSBhcyBnc3RfcmVnaXN0cnlfYWRkX3BsdWdpbigpIHRha2VzIG93bmVyc2hpcAoJICBvZiB0aGUgcGx1Z2luLgoJICBJbXByb3ZlIGRlYnVnZ2luZyBhIGJpdC4KCjIwMDgtMDQtMTYgMDg6MzA6NTcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0Lmg6IENsYXJpZnkgc29tZSB0YWcgaXRlbSBkb2NzIGFmdGVyIGRpc2N1c3Npb24gb24gaXJjLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICBDbGFyaWZ5IHNvbWUgdGFnIGl0ZW0gZG9jcyBhZnRlciBkaXNjdXNzaW9uIG9uIGlyYy4KCjIwMDgtMDQtMTUgMDY6MjM6MTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6IFJlbW92ZSBjb21tZW50ZWQgb3V0IHBsdWdpbnMgKHRoZXkgaGF2ZSB0aGVpciBvd24gZG9jcykuIFVwZGF0ZSBjb21tZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgUmVtb3ZlIGNvbW1lbnRlZCBvdXQgcGx1Z2lucyAodGhleSBoYXZlIHRoZWlyIG93biBkb2NzKS4gVXBkYXRlCgkgIGNvbW1lbnRzLgoKMjAwOC0wNC0xNSAwNjoxNjozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQWRkIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgYW5kIEdTVF9QQVJBTV9VU0VSX1NISUZULiBNb3ZlIHBhcmFtc3BlYyBkb2NzIHRvIG93biBzZWN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBhcmFtc3BlY3MuYzoKCSAgKiBnc3QvZ3N0cGFyYW1zcGVjcy5oOgoJICBBZGQgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSBhbmQgR1NUX1BBUkFNX1VTRVJfU0hJRlQuIE1vdmUgcGFyYW1zcGVjCgkgIGRvY3MgdG8gb3duIHNlY3Rpb24uCgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIFRoaXMgbm93IG9ubHkgZG9jdW1lbnRzIEdWYWx1ZS4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICBSZW1vdmUgR1NUX1BBUkFNX0NPTlRST0xMQUJMRS4KCjIwMDgtMDQtMTUgMDU6NTQ6MTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvUkVBRE1FOiBDb3JyZWN0IGZpbGUgcGF0aC4gVGVsbCBhYm91dCBob3cgdG8gdXNlIC1vdmVycmlkZXMudHh0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgQ29ycmVjdCBmaWxlIHBhdGguIFRlbGwgYWJvdXQgaG93IHRvIHVzZSAtb3ZlcnJpZGVzLnR4dC4KCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC10YWdyZWFkaW5nLnR4dDoKCSAgU21hbGwgZGVzaWduIHVwZGF0ZS4KCjIwMDgtMDQtMTQgMTI6MTI6MjIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBGaXggYSB0eXBvIGluIGEgZGVidWcgbWVzc2FnZSBhbmQgcmV2ZXJ0IGNoYW5nZSBmcm9tIHllc3RlcmRheSBhcyBnc3RfcmVnaXN0cnlfYWRkX3BsdWdpbigpIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW4pOgoJICBGaXggYSB0eXBvIGluIGEgZGVidWcgbWVzc2FnZSBhbmQgcmV2ZXJ0IGNoYW5nZSBmcm9tIHllc3RlcmRheSBhcwoJICBnc3RfcmVnaXN0cnlfYWRkX3BsdWdpbigpIHdpbGwgb25seSBmYWlsIGlmIHNvbWV0aGluZyBpcyByZWFsbHkgd3JvbmcKCSAgYWxyZWFkeSBhbmQgd2UgY2FuJ3Qgc3Vydml2ZSBpdCBhbnl3YXkuCgoyMDA4LTA0LTE0IDA4OjQ4OjUwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBQcmUtcmVnaXN0ZXIgR3N0R0Vycm9yIEdUeXBlIGZyb20gYSB0aHJlYWQtc2FmZSBjb250ZXh0IChmaXhlcyAjNTI3OTY3KTsgdW5yZWYgZW51bSB0eXBlIGNsYXNzZXMgaW4gZGVpbml0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpLCAoZ3N0X2RlaW5pdCk6CgkgIFByZS1yZWdpc3RlciBHc3RHRXJyb3IgR1R5cGUgZnJvbSBhIHRocmVhZC1zYWZlIGNvbnRleHQKCSAgKGZpeGVzICM1Mjc5NjcpOyB1bnJlZiBlbnVtIHR5cGUgY2xhc3NlcyBpbiBkZWluaXQuCgoyMDA4LTA0LTEzIDE5OjU4OjQzICswMDAwICBSZW5lIFN0YWRsZXIgPG1haWxAcmVuZXN0YWRsZXIuZGU+CgoJICBnc3QvZ3N0dGFnc2V0dGVyLmM6IE1lcmdpbmcgYW4gZW1wdHkgbGlzdCB3aXRoIGFub3RoZXIgbGlzdCBpbiBLRUVQX0FMTCBtb2RlIHNob3VsZCB5aWVsZCBhbiBlbXB0eSBsaXN0IGFzIHJlc3VsdCBhbmQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBSZW5lIFN0YWRsZXIgPG1haWwgYXQgcmVuZXN0YWRsZXIgZGU+CgkgICogZ3N0L2dzdHRhZ3NldHRlci5jOiAoZ3N0X3RhZ19zZXR0ZXJfbWVyZ2VfdGFncyk6CgkgIE1lcmdpbmcgYW4gZW1wdHkgbGlzdCB3aXRoIGFub3RoZXIgbGlzdCBpbiBLRUVQX0FMTCBtb2RlIHNob3VsZAoJICB5aWVsZCBhbiBlbXB0eSBsaXN0IGFzIHJlc3VsdCBhbmQgbm90IHRoZSBzZWNvbmQgbGlzdCAoIzUxMjU3OCkuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZ3NldHRlci5jOgoJICBBZGQgdW5pdCB0ZXN0IGZvciB0YWcgbWVyZ2UgbW9kZXMgYW5kIHRoZSBhZm9yZW1lbnRpb25lZCBidWcuCgoyMDA4LTA0LTEzIDE4OjUwOjA1ICswMDAwICBSZW5lIFN0YWRsZXIgPG1haWxAcmVuZXN0YWRsZXIuZGU+CgoJICBnc3QvZ3N0dGFnbGlzdC5oOiBGaXggZGVzY3JpcHRpb24gdG8gbWF0Y2ggdGhlIG9yZGVyIGluIHRoZSB0YWJsZSAoIzUxMjU3NykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUmVuZSBTdGFkbGVyIDxtYWlsIGF0IHJlbmVzdGFkbGVyIGRlPgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIEZpeCBkZXNjcmlwdGlvbiB0byBtYXRjaCB0aGUgb3JkZXIgaW4gdGhlIHRhYmxlICgjNTEyNTc3KS4KCjIwMDgtMDQtMTMgMTc6NTE6MDIgKzAwMDAgIEt3YW5nIFl1bCBTZW8gPGt3YW5neXVsLnNlby5nbWFpbC5jb20+CgoJICBEZWZpbmUgc29ja2xlbl90IGFzIGludCBpZiBpdCdzIG5vdCBkZWZpbmVkIHlldC4gRml4ZXMgY29tcGlsYXRpb24gd2l0aCBNU1ZDNiBhbmQgb3RoZXIgdmVyc2lvbnMgd2hlcmUgc29ja2xlbl90IGlzIG4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBLd2FuZyBZdWwgU2VvICA8a3dhbmd5dWwuc2VvIGdtYWlsIGNvbT4KCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5oOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIERlZmluZSBzb2NrbGVuX3QgYXMgaW50IGlmIGl0J3Mgbm90IGRlZmluZWQgeWV0LiBGaXhlcyBjb21waWxhdGlvbgoJICB3aXRoIE1TVkM2IGFuZCBvdGhlciB2ZXJzaW9ucyB3aGVyZSBzb2NrbGVuX3QgaXMgbm90IGRlZmluZWQgaW4KCSAgdGhlIHdpbmRvd3MgaGVhZGVycyAoIzUxODAyMikuCgoyMDA4LTA0LTEzIDEzOjU0OjU1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogSWYgZ3N0X3JlZ2lzdHJ5X2FkZF9wbHVnaW4oKSBmYWlscyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBwbHVnaW4gaXMgaW52YWxpZCBzbyBkb24ndCB0cnkgdG8gdXMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGx1Z2luKToKCSAgSWYgZ3N0X3JlZ2lzdHJ5X2FkZF9wbHVnaW4oKSBmYWlscyBvdXIgcmVmZXJlbmNlIHRvIHRoZSBwbHVnaW4gaXMKCSAgaW52YWxpZCBzbyBkb24ndCB0cnkgdG8gdXNlIGl0IGFueW1vcmUgYW5kIGluc3RlYWQgZXJyb3Igb3V0LgoKMjAwOC0wNC0xMiAyMDo1Mjo1OCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IERlLWNydWZ0IGEgYml0LiBJZiBubyBhcmd1bWVudCBpcyBzcGVjaWZpZWQsIHByaW50IGFsbCBlbGVtZW50cyBpbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QteG1saW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9pbmZvKSwgKG1haW4pOgoJICBEZS1jcnVmdCBhIGJpdC4gSWYgbm8gYXJndW1lbnQgaXMgc3BlY2lmaWVkLCBwcmludCBhbGwgZWxlbWVudHMgaW4KCSAgWE1MIHN5bnRheCByYXRoZXIgdGhhbiBhIGZyZWVzdHlsZSBsaXN0IG9mIGVsZW1lbnRzIGxpa2UgZ3N0LWluc3BlY3QuCgkgIEFsc28sIGRvbid0IHByaW50IFhNTCBoZWFkZXIgY2h1bmsgdW5sZXNzIHdlIGFjdHVhbGx5IGhhdmUgc29tZXRoaW5nCgkgIHRvIHByaW50IChpZS4gZG9uJ3QgcHJpbnQgaXQgYmVmb3JlIGFuIGVycm9yIG1lc3NhZ2UpOyBwcmludCBlcnJvcgoJICBtZXNzYWdlIHRvIHN0ZGVyciBub3Qgc3Rkb3V0LiBSZW1vdmUgc3VwcG9ydCBmb3IgcHJpbnRpbmcgcGx1Z2luCgkgIGluZm8gKGl0IHdvdWxkIGp1c3Qgb3V0cHV0IHNvbWV0aGluZyBmcmVlc3R5bGUgYWxvbmcgdGhlIGxpbmVzIG9mCgkgIGdzdC1pbnNwZWN0IHNvIGZhciksIHdoaWNoIGZpeGVzICM1MTQ1MDcuIEFsc28gYWRkIGxpY2Vuc2UgaGVhZGVyLgoKMjAwOC0wNC0xMSAwOToyNzo0NCArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBNYWMgT1MgWCBsb3ZlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA4LTA0LTExICBKdWxpZW4gTW91dHRlICA8anVsaWVuQGZsdWVuZG8uY29tPgoJICBNYWMgT1MgWCBsb3ZlLi4uCgkgICogY29uZmlndXJlLmFjOiBNZXJnZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZWZpbmVzLCBpbnRyb2R1Y2UgYSBuZXcKCSAgZGVmaW5lIG9uIE9TIFggdG8gcmVtZW1iZXIgdGhhdCBmb3JraW5nIHdoZW4gdXBkYXRpbmcgcmVnaXN0cnkgaXMKCSAgdW5zYWZlLgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogVXBkYXRlZCB0byBpbmNsdWRlIGdzdC1saWJzIGluIHRoZSBiYWQKCSAgbW9kdWxlLgoJICAqIGdzdC9nc3QuYzogRG9uJ3QgZm9yayB3aGVuIHVwZGF0aW5nIHJlZ2lzdHJ5IGlmIEdTVF9IQVZFX1VOU0FGRV9GT1JLCgkgIGlzIGRlZmluZWQuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfc2Nhbl9wYXRoX2xldmVsKTogRml4ZWQgYSBib2d1cwoJICBjb25kaXRpb24gdGhhdCBsZWFkcyB0byBhYnNvbHV0ZWx5IG5vIHBsdWdpbnMgYmVpbmcgcmVnaXN0ZXJlZCBvbgoJICBPUyBYLgoKMjAwOC0wNC0xMCAyMDo0Njo1MSArMDAwMCAgSm9zw6kgQWxidXJxdWVycXVlIDxqYWFsYnVycXVAc3ZuLmdub21lLm9yZz4KCgkgIEFkZCBnc3RfcGFkX2FkZF8qX3Byb2JlX2Z1bGwoKSBmdW5jdGlvbnMgd2l0aCBhIG5vdGlmeSBjYWxsYmFjayB0aGF0IGxldHMgdGhlIGNhbGxlciBmcmVlIHRoZSBkYXRhIGl0IHBhc3NlcyB0byB0aGUgcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQmFzZWQgb24gcGF0Y2ggYnk6IEpvc8OpIEFsYnVycXVlcnF1ZSA8amFhbGJ1cnF1IGF0IHN2biBkb3QgZ25vbWUgZG90IG9yZz4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9wYWRfYWRkX2RhdGFfcHJvYmUpLAoJICAoZ3N0X3BhZF9hZGRfZGF0YV9wcm9iZV9mdWxsKSwgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlKSwKCSAgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlX2Z1bGwpLCAoZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlKSwKCSAgKGdzdF9wYWRfYWRkX2J1ZmZlcl9wcm9iZV9mdWxsKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgZ3N0X3BhZF9hZGRfKl9wcm9iZV9mdWxsKCkgZnVuY3Rpb25zIHdpdGggYSBub3RpZnkgY2FsbGJhY2sgdGhhdAoJICBsZXRzIHRoZSBjYWxsZXIgZnJlZSB0aGUgZGF0YSBpdCBwYXNzZXMgdG8gdGhlIHByb2JlIGZ1bmN0aW9ucy4gVGhpcwoJICBpcyB1c2VmdWwgZm9yIGJpbmRpbmdzIHN1Y2ggYXMgZ3N0LXB5dGhvbiBvciBnc3RyZWFtZXJtbSAoIzUyNjgxNCkuCgkgIEFQSTogZ3N0X3BhZF9hZGRfZGF0YV9wcm9iZV9mdWxsCgkgIEFQSTogZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlX2Z1bGwKCSAgQVBJOiBnc3RfcGFkX2FkZF9ldmVudF9wcm9iZV9mdWxsCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkgIEFkZCBtaW5pbWFsIHVuaXQgdGVzdCB0byBtYWtlIHN1cmUgZnJlZWluZyB0aGUgZGF0YSBhY3R1YWxseSB3b3JrcwoJICBhcyBleHBlY3RlZC4KCSAgKiB0ZXN0cy9iZW5jaG1hcmtzLy5jdnNpZ25vcmU6CgkgIFJhbmRvbSBjdnNpZ25vcmUgYWRkZW5kdW0uCgoyMDA4LTA0LTEwIDE5OjEzOjQ2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGRlYnVndXRpbHMuaDogTWVudGlvbiBHc3REZWJ1Z0dyYXBoRGV0YWlscyBlbnVtIHR5cGUgaW4gZG9jIGJsdXJiIHNvIHdlIGdldCBhIGxpbmsgdG8gaXQgaW4gdGhlIGRvY3MgKHNpbmNlIHRoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmg6IChHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMpLAoJICAoR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRSk6CgkgIE1lbnRpb24gR3N0RGVidWdHcmFwaERldGFpbHMgZW51bSB0eXBlIGluIGRvYyBibHVyYiBzbyB3ZSBnZXQgYSBsaW5rCgkgIHRvIGl0IGluIHRoZSBkb2NzIChzaW5jZSB0aGVzZSBhcmUgbWFjcm9zIHRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzCgkgIHdvbid0IGJlIHNob3duIGluIHRoZSBkb2NzIG90aGVyd2lzZSkuCgoyMDA4LTA0LTEwIDE0OjEwOjUxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IERvIG5vdCBhYm9ydCBvbiBvdXQgb2YgbWVtb3J5IGZvciBwYWRfYWxsb2NfYnVmZmVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIERvIG5vdCBhYm9ydCBvbiBvdXQgb2YgbWVtb3J5IGZvciBwYWRfYWxsb2NfYnVmZmVyLgoKMjAwOC0wNC0xMCAxMzo1OToyNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogUmVtb3ZlIGJsYW5rIGxpbmUgYmV0d2VlbiBzeW1ib2wgbmFtZSBhZCBwYXJhbWV0ZXJzIHRvIGZpeCBndGtkb2Mgd2FybmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSAgUmVtb3ZlIGJsYW5rIGxpbmUgYmV0d2VlbiBzeW1ib2wgbmFtZSBhZCBwYXJhbWV0ZXJzIHRvIGZpeCBndGtkb2MKCSAgd2FybmluZy4KCjIwMDgtMDQtMDkgMjI6Mzc6MjIgKzAwMDAgIEpvc8OpIEFsYnVycXVlcnF1ZSA8amFhbGJ1cnF1QHN2bi5nbm9tZS5vcmc+CgoJICBFeHBvc2UgZ3N0X3NlZ21lbnRfY29weSgpIHRvIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgdGhlIGMrKyBiaW5kaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiAgSm9zw6kgQWxidXJxdWVycXVlIDxqYWFsYnVycXUgYXQgc3ZuIGRvdCBnbm9tZSBkb3Qgb3JnPgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHNlZ21lbnQuYzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5oOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBFeHBvc2UgZ3N0X3NlZ21lbnRfY29weSgpIHRvIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgdGhlIGMrKyBiaW5kaW5ncy4KCSAgRml4ZXMgIzUxODkzMi4KCSAgQVBJOiBnc3Rfc2VnbWVudF9jb3B5KCkKCjIwMDgtMDQtMDkgMjE6Mjc6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IEZpeCBjb25zdCBwb3NpdGlvbjsgcmVmIEdUeXBlIGNsYXNzZXMgZm9yIGVudW0gdHlwZXMgdG8gd29yayBhcm91bmQgdGhyZWFkLXNhZmV0eSBpc3N1ZXMgaW4gR0xpYiB2ZXJzaW9ucyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCksIChpbml0X3Bvc3QpOgoJICBGaXggY29uc3QgcG9zaXRpb247IHJlZiBHVHlwZSBjbGFzc2VzIGZvciBlbnVtIHR5cGVzIHRvIHdvcmsKCSAgYXJvdW5kIHRocmVhZC1zYWZldHkgaXNzdWVzIGluIEdMaWIgdmVyc2lvbnMgPCAyLjE2LgoKMjAwOC0wNC0wOSAxODoyNjoxNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDogRml4IHNvbWUgdHlwb3MgYW5kIHNldCB0aGUgZXN0aW1hdGVkIHRvdGFsIGZvciBwdXNoIG1vZGUgdG8gLTEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgRml4IHNvbWUgdHlwb3MgYW5kIHNldCB0aGUgZXN0aW1hdGVkIHRvdGFsIGZvciBwdXNoIG1vZGUgdG8gLTEuCgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X2J1ZmZlcmluZyk6CgkgIFNldCBidWZmZXJpbmctbGVmdCB0byAwIGFzIHdlJ3JlIG5vdCBidWZmZXJpbmcgYnkgZGVmYXVsdC4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KToKCSAgSW1wbGVtZW50IEJVRkZFUklORyBxdWVyeS4KCjIwMDgtMDQtMDkgMTc6MzQ6NTQgKzAwMDAgIE1pbG9zeiBEZXJlenluc2tpIDxpbnRlcm5hbGVycm9yQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RlcnJvci4qOiBBZGQgdHdvIG5ldyBlcnJvciBjb2RlcyBmb3IgZW5jcnlwdGVkIGNvbnRlbnQuIEZpeGVzICM1MjQ2NTkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBCYXNlZCBvbiBwYXRjaCBieTogTWlsb3N6IERlcmV6eW5za2kgPGludGVybmFsZXJyb3IgZ21haWwgY29tPgoJICAqIGdzdC9nc3RlcnJvci5jOiAoX2dzdF9zdHJlYW1fZXJyb3JzX2luaXQpOgoJICAqIGdzdC9nc3RlcnJvci5oOgoJICBBZGQgdHdvIG5ldyBlcnJvciBjb2RlcyBmb3IgZW5jcnlwdGVkIGNvbnRlbnQuIEZpeGVzICM1MjQ2NTkuCgkgIEFQSTogR1NUX1NUUkVBTV9FUlJPUl9ERUNSWVBUCgkgIEFQSTogR1NUX1NUUkVBTV9FUlJPUl9ERUNSWVBUX05PS0VZCgoyMDA4LTA0LTA5IDEzOjE1OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHF1ZXJ5Lmg6IEZpeCB0eXBvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgRml4IHR5cG8uCgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgZnVuY3Rpb25zLgoKMjAwOC0wNC0wOSAwODoxOTozNiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiBGaXggaW1wZXJmZWN0IHRpbWVzdGFtcC9vZmZzZXQgY2hlY2tzIHdoZW4gd2UgZ2V0IGFub3RoZXIgTkVXU0VHTUVOVCBldmVudCBhZnRlciBwcm9jLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9ldmVudCksCgkgIChnc3RfaWRlbnRpdHlfc3RhcnQpOgoJICBGaXggaW1wZXJmZWN0IHRpbWVzdGFtcC9vZmZzZXQgY2hlY2tzIHdoZW4gd2UgZ2V0IGFub3RoZXIgTkVXU0VHTUVOVAoJICBldmVudCBhZnRlciBwcm9jZXNzaW5nIHNvbWUgZGF0YS4gRml4ZXMgYnVnICM1MjYwNDIuCgoyMDA4LTA0LTA4IDIwOjI4OjIxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgUmVuYW1lIF9hdmFpbCAtPiBfcmFuZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKGdzdF9xdWVyeV9wYXJzZV9sYXRlbmN5KSwKCSAgKGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3BlcmNlbnQpLAoJICAoZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19wZXJjZW50KSwKCSAgKGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3JhbmdlKSwgKGdzdF9xdWVyeV9wYXJzZV9idWZmZXJpbmdfcmFuZ2UpOgoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICBSZW5hbWUgX2F2YWlsIC0+IF9yYW5nZQoJICBBUEk6IGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3JhbmdlCgkgIEFQSTogZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19yYW5nZQoKMjAwOC0wNC0wOCAyMDoxNzo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBidXN5IGZpZWxkIGFuZCBxdWFyayBmb3IgdGhlIGJ1ZmZlcmluZyBxdWVyeSBzbyB0aGF0IHRoZSBhcHAgY2FuIG9ubHkgdXNlIHRoZSBxdWVyeSB0byBzZWUgaWYgYnVmZmVyaW5nIGlzIGluIHByby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWJ1ZmZlcmluZy50eHQ6CgkgICogZ3N0L2dzdHF1YXJrLmM6CgkgICogZ3N0L2dzdHF1YXJrLmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfcGFyc2VfbGF0ZW5jeSksCgkgIChnc3RfcXVlcnlfbmV3X2J1ZmZlcmluZyksIChnc3RfcXVlcnlfc2V0X2J1ZmZlcmluZ19wZXJjZW50KSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9idWZmZXJpbmdfcGVyY2VudCk6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIEFkZCBidXN5IGZpZWxkIGFuZCBxdWFyayBmb3IgdGhlIGJ1ZmZlcmluZyBxdWVyeSBzbyB0aGF0IHRoZSBhcHAgY2FuCgkgIG9ubHkgdXNlIHRoZSBxdWVyeSB0byBzZWUgaWYgYnVmZmVyaW5nIGlzIGluIHByb2dyZXNzLgoKMjAwOC0wNC0wOCAxOTo1OTowNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFJlb3JkZXIgdGhlIG1lc3NhZ2UgZG9jcyBhbmQgaGVhZGVycyBmb3IgY2xhcml0eS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2Vfc2V0X2J1ZmZlcmluZ19zdGF0cyksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmdfc3RhdHMpOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X2xhdGVuY3kpLCAoZ3N0X3F1ZXJ5X3NldF9sYXRlbmN5KSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9sYXRlbmN5KSwgKGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nKSwKCSAgKGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3BlcmNlbnQpLAoJICAoZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19wZXJjZW50KSwKCSAgKGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3N0YXRzKSwgKGdzdF9xdWVyeV9wYXJzZV9idWZmZXJpbmdfc3RhdHMpLAoJICAoZ3N0X3F1ZXJ5X3NldF9idWZmZXJpbmdfYXZhaWwpLCAoZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19hdmFpbCk6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIFJlb3JkZXIgdGhlIG1lc3NhZ2UgZG9jcyBhbmQgaGVhZGVycyBmb3IgY2xhcml0eS4KCSAgQWRkIGFkaXRpb25hbCBidWZmZXJpbmcgc3RhdHMgQVBJIGZvciBtZXNzYWdlcy4KCSAgQWRkIGJ1ZmZlcmluZyBxdWVyeS4KCSAgQ29udmVydCBzb21lIGxlZnRvdmVyIHF1ZXJpZXMgdG8gdXNlIEdzdFF1YXJrLgoJICBBUEk6IGdzdF9tZXNzYWdlX3NldF9idWZmZXJpbmdfc3RhdHMKCSAgQVBJOiBnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmdfc3RhdHMKCSAgQVBJOiBHU1RfUVVFUllfQlVGRkVSSU5HCgkgIEFQSTogR3N0QnVmZmVyaW5nTW9kZQoJICBBUEk6IGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nCgkgIEFQSTogZ3N0X3F1ZXJ5X3NldF9idWZmZXJpbmdfcGVyY2VudAoJICBBUEk6IGdzdF9xdWVyeV9wYXJzZV9idWZmZXJpbmdfcGVyY2VudAoJICBBUEk6IGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX3N0YXRzCgkgIEFQSTogZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19zdGF0cwoJICBBUEk6IGdzdF9xdWVyeV9zZXRfYnVmZmVyaW5nX2F2YWlsCgkgIEFQSTogZ3N0X3F1ZXJ5X3BhcnNlX2J1ZmZlcmluZ19hdmFpbAoKMjAwOC0wNC0wOCAxOTo1MjoyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RtZXNzYWdlLmM6IFVzZSBHc3RRdWFyayBmb3IgbWVzc2FnZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfZXJyb3IpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3dhcm5pbmcpLCAoZ3N0X21lc3NhZ2VfbmV3X2luZm8pLAoJICAoZ3N0X21lc3NhZ2VfbmV3X2J1ZmZlcmluZyksIChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCksCgkgIChnc3RfbWVzc2FnZV9uZXdfY2xvY2tfcHJvdmlkZSksIChnc3RfbWVzc2FnZV9uZXdfY2xvY2tfbG9zdCksCgkgIChnc3RfbWVzc2FnZV9uZXdfbmV3X2Nsb2NrKSwgKGdzdF9tZXNzYWdlX25ld19zZWdtZW50X3N0YXJ0KSwKCSAgKGdzdF9tZXNzYWdlX25ld19zZWdtZW50X2RvbmUpLCAoZ3N0X21lc3NhZ2VfbmV3X2R1cmF0aW9uKSwKCSAgKGdzdF9tZXNzYWdlX25ld19hc3luY19zdGFydCksIChnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmcpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9jbG9ja19wcm92aWRlKSwgKGdzdF9tZXNzYWdlX3BhcnNlX2Nsb2NrX2xvc3QpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2VfbmV3X2Nsb2NrKSwgKGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcpLCAoZ3N0X21lc3NhZ2VfcGFyc2VfaW5mbyksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9zZWdtZW50X3N0YXJ0KSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9wYXJzZV9kdXJhdGlvbiksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9hc3luY19zdGFydCk6CgkgIFVzZSBHc3RRdWFyayBmb3IgbWVzc2FnZXMuCgoyMDA4LTA0LTA4IDE5OjM5OjI4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHF1YXJrLio6IEFkZCBzb21lIG1vcmUgcXVhcmtzIG5lZWRlZCBmb3IgbWVzc2FnZXMgYW5kIHF1ZXJpZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RxdWFyay5jOiAoX3ByaXZfZ3N0X3F1YXJrc19pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0cXVhcmsuaDoKCSAgQWRkIHNvbWUgbW9yZSBxdWFya3MgbmVlZGVkIGZvciBtZXNzYWdlcyBhbmQgcXVlcmllcy4KCjIwMDgtMDQtMDggMTk6MTQ6NDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWJ1ZmZlcmluZy50eHQ6IFJlbW92ZSB0aGUgIm5vbmUiIGJ1ZmZlcmluZyBtb2RlLCBTVFJFQU0gaXMgYSBnb29kIGRlZmF1bHQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgUmVtb3ZlIHRoZSAibm9uZSIgYnVmZmVyaW5nIG1vZGUsIFNUUkVBTSBpcyBhIGdvb2QgZGVmYXVsdC4KCSAgTW92ZSBlc3RpbWF0ZWQtdGltZSB0byB0aGUgYXZhaWwgcXVlcnksIHRoYXQncyB3aGVuIGl0IHdpbGwgYmUgbmVlZGVkLgoJICBPdGhlciBzbWFsbCB0eXBvIGZpeGVzIGFuZCB1cGRhdGVzLgoKMjAwOC0wNC0wNyAxMzoyNzozMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmRleC5jOiBEb24ndCBwdXQgZGVzY3JpcHRpb25zIGludG8gdGhlIG5pY2sgZmllbGQgb2YgYSBHRW51bVZhbHVlOiBpdCdzIG5vdCBtZWFudCBmb3IgdGhhdCBhbmQgc29tZSBsYW5ndWFnZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5kZXguYzogKGdzdF9pbmRleF9yZXNvbHZlcl9nZXRfdHlwZSk6CgkgIERvbid0IHB1dCBkZXNjcmlwdGlvbnMgaW50byB0aGUgbmljayBmaWVsZCBvZiBhIEdFbnVtVmFsdWU6IGl0J3Mgbm90CgkgIG1lYW50IGZvciB0aGF0IGFuZCBzb21lIGxhbmd1YWdlIGJpbmRpbmdzIHJlbHkgb24gdGhlIG5pY2sgZmllbGQgdG8KCSAgY29uc3RydWN0IGNvbnN0YW50cyBhbmQgdGhlIGxpa2UuIEZpeGVzICM1MjY3MDUuCgoyMDA4LTA0LTA3IDEwOjQ4OjUxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTWVyZ2Ugb3RoZXIgY2hhbmdlcyBmcm9tIDAuMTAuMTkgcmVsZWFzZSBicmFuY2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE5FV1M6CgkgICogUkVMRUFTRToKCSAgKiBnc3RyZWFtZXIuZG9hcDoKCSAgTWVyZ2Ugb3RoZXIgY2hhbmdlcyBmcm9tIDAuMTAuMTkgcmVsZWFzZSBicmFuY2guCgoyMDA4LTA0LTA2IDA4OjU0OjQ3ICswMDAwICBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAZ21haWwuY29tPgoKCSAgY29uZmlndXJlLmFjOiBBY3R1YWxseSBidWlsZCBkbGxzIHdoZW4gY3Jvc3MtY29tcGlsaW5nIHdpdGggbWluZ3czMi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuIGRvdCBsZXNwaWF1IGF0IGdtYWlsIGRvdCBjb20+CgkgICogY29uZmlndXJlLmFjOgoJICBBY3R1YWxseSBidWlsZCBkbGxzIHdoZW4gY3Jvc3MtY29tcGlsaW5nIHdpdGggbWluZ3czMi4KCSAgRml4ZXMgYnVnICM1MjYyNDcuCgoyMDA4LTA0LTA1IDEwOjU4OjExICswMDAwICBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBvbGwuYzogRml4IGNvbXBpbGF0aW9uIG9mIEdzdFBvbGwgd2l0aCBtaW5ndzMyLiBGaXhlcyBidWcgIzUyNjIzNi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuIGRvdCBsZXNwaWF1IGF0IGdtYWlsIGRvdCBjb20+CgkgICogZ3N0L2dzdHBvbGwuYzoKCSAgRml4IGNvbXBpbGF0aW9uIG9mIEdzdFBvbGwgd2l0aCBtaW5ndzMyLiBGaXhlcyBidWcgIzUyNjIzNi4KCjIwMDgtMDQtMDQgMTM6NDM6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDogRml4IHR5cG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJICBGaXggdHlwby4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWJ1ZmZlcmluZy50eHQ6CgkgIFVwZGF0ZSBkZXNpZ24gZG9jcyB3aXRoIG1vcmUgYnVmZmVyaW5nIGlkZWFzLgoKMjAwOC0wNC0wMyAyMToxNTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGNvbmZpZ3VyZS5hYzogQnVtcCB2ZXJzaW9uIHRvIDAuMTAuMTkuMSBhZnRlciB0aGUgdW5zY2hlZHVsZWQgMC4xMC4xOSByZWxlYXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJ1bXAgdmVyc2lvbiB0byAwLjEwLjE5LjEgYWZ0ZXIgdGhlIHVuc2NoZWR1bGVkIDAuMTAuMTkgcmVsZWFzZS4KCjIwMDgtMDQtMDMgMTY6NDU6MDIgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICB1cGRhdGUgc3BlYyB0byB3b3JrIHdpdGggZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHNwZWMgdG8gd29yayB3aXRoIGRvY3MKCjIwMDgtMDQtMDMgMTQ6NDk6MDYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNvbmZpZ3VyZS5hYzogUmV2ZXJ0IHBhcnQgdGhhdCBiZWxvbmdzIHRvIHRoZSBwcmVzZXQgcGF0Y2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgUmV2ZXJ0IHBhcnQgdGhhdCBiZWxvbmdzIHRvIHRoZSBwcmVzZXQgcGF0Y2guCgoyMDA4LTA0LTAzIDE0OjI2OjU1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjb25maWd1cmUuYWM6IEFkZCBxb3V0ZXMgdG8gdGhlIGRlZmluZS4gRml4ZXMgIyA1MjU5NjEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQWRkIHFvdXRlcyB0byB0aGUgZGVmaW5lLiBGaXhlcyAjIDUyNTk2MS4KCjIwMDgtMDQtMDMgMDc6NTI6MzEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHBsdWdpbnMvaW5kZXhlcnMvOiBVc2UgR1NsaWNlIHdoZW4gcG9zc2libGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0ZmlsZWluZGV4LmM6IChfZmlsZV9pbmRleF9pZF9mcmVlKSwKCSAgKGdzdF9maWxlX2luZGV4X2xvYWQpLCAoZ3N0X2ZpbGVfaW5kZXhfYWRkX2lkKSwKCSAgKGdzdF9maWxlX2luZGV4X2dldF9hc3NvY19lbnRyeSk6CgkgICogcGx1Z2lucy9pbmRleGVycy9nc3RtZW1pbmRleC5jOiAoZ3N0X21lbV9pbmRleF9mcmVlX2Zvcm1hdCksCgkgIChnc3RfbWVtX2luZGV4X2ZyZWVfaWQpLCAoZ3N0X21lbV9pbmRleF9hZGRfaWQpLAoJICAoZ3N0X21lbV9pbmRleF9pbmRleF9mb3JtYXQpOgoJICBVc2UgR1NsaWNlIHdoZW4gcG9zc2libGUuCgoyMDA4LTA0LTAyIDE3OjQ1OjA4ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6IFVzZSBHU2xpY2UgZm9yIGFsbG9jYXRpbmcgdGhlIGNvbnRyb2wgcG9pbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb25jb250cm9sc291cmNlLmM6CgkgIChnc3RfY29udHJvbF9wb2ludF9mcmVlKSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX3NldF9pbnRlcm5hbCk6CgkgIFVzZSBHU2xpY2UgZm9yIGFsbG9jYXRpbmcgdGhlIGNvbnRyb2wgcG9pbnRzLgoKMjAwOC0wNC0wMiAxNzoyMTo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lio6IENsZWFudXAgcHJvcGVydGllcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2dldF9wcm9wZXJ0eSksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfYWN0aXZhdGUpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgIENsZWFudXAgcHJvcGVydGllcy4KCSAgRml4IHBhZCBsZWFrIHdoZW4gcGVlciBxdWVyeSBmYWlscy4KCSAgV2UgY2FuIHN0aWxsIHR5cGVmaW5kIHdoZW4gdGhlIHBlZXIgcmV0dXJucyAtMS4KCSAgQWRkIHByb3BlcnR5IHRvIGZvcmNlIGNhcHMgYW5kIGJ5cGFzcyB0eXBlZmluZGluZy4gVGhpcyB3aWxsIGJlIHVzZWQgaW4KCSAgdXJpZGVjb2RlYmluLgoJICBBUEk6OmZvcmNlLWNhcHMKCjIwMDgtMDQtMDEgMTM6NTU6MjAgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogUmVxdWlyZSBHTGliIDIuMTIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgUmVxdWlyZSBHTGliIDIuMTIuCgkgICogZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaDoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfbmV3X2VtcHR5KSwgKF9nc3RfY2Fwc19mcmVlKToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19lbnRyeV9uZXcpLCAoX2dzdF9jbG9ja19pZF9mcmVlKToKCSAgVW5jb25kaXRpb25hbGx5IHVzZSBHU2xpY2UgZm9yIGFsbG9jYXRpb24uCgkgICogZ3N0L2dzdHBvbGwuYzogKGdzdF9wb2xsX25ldyksIChnc3RfcG9sbF9mcmVlKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfbmV3KSwgKGdzdF9zZWdtZW50X2ZyZWUpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfaWRfZW1wdHlfbmV3X3dpdGhfc2l6ZSksCgkgIChnc3Rfc3RydWN0dXJlX2ZyZWUpOgoJICBVc2UgR1NsaWNlIGZvciBhbGxvY2F0aW9uLgoKMjAwOC0wNC0wMSAxMzo0ODo1OSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L3BhcnNlLzogUmVxdWlyZSBhIG5ldyBlbm91Z2ggZmxleCBhbmQgYmlzb24gYW5kIHJlbW92ZSB0aGUgcGFyc2VyIGhhY2tzIHRvIHVzZSBhIHByZS1yZWdlbmVyYXRlZCB2ZXJzaW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvTWFrZWZpbGUuYW06CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIudGFiLnByZS5jOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnRhYi5wcmUuaDoKCSAgKiBnc3QvcGFyc2UvbGV4Ll9nc3RfcGFyc2VfeXkucHJlLmM6CgkgIFJlcXVpcmUgYSBuZXcgZW5vdWdoIGZsZXggYW5kIGJpc29uIGFuZCByZW1vdmUgdGhlIHBhcnNlciBoYWNrcyB0byB1c2UKCSAgYSBwcmUtcmVnZW5lcmF0ZWQgdmVyc2lvbi4KCjIwMDgtMDQtMDEgMTA6MjU6MzUgKzAwMDAgIEphc29uIFpoYW8gPEUzNDIzQ0Btb3Rvcm9sYS5jb20+CgoJICBjb25maWd1cmUuYWM6IEFkZCBhIGNvbmZpZ3VyZSBzd2l0Y2ggdG8gZGlzYWJsZSBvcHRpb24gcGFyc2luZyBpbiBnc3RfaW5pdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDgtMDQtMDEgIEp1bGllbiBNb3V0dGUgIDxqdWxpZW5AZmx1ZW5kby5jb20+CgkgIHBhdGNoIGJ5OiBKYXNvbiBaaGFvIDxFMzQyM0NAbW90b3JvbGEuY29tPgoJICAqIGNvbmZpZ3VyZS5hYzogQWRkIGEgY29uZmlndXJlIHN3aXRjaCB0byBkaXNhYmxlIG9wdGlvbiBwYXJzaW5nCgkgIGluIGdzdF9pbml0LgoJICBGaXhlcyAjNTIyODgyLgoKMjAwOC0wMy0zMSAxMzo0NzoyMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgTWFjT1MgaGFzIHBsdWdpbnMgdW5kZXIgLnNvIG9yIHVuZGVyIC5keWxpYi4gQWRkIGRldGVjdGlvbiBmb3IgTWFjT1MgYW5kIGhhbmRsZSB0aGlzIGNhc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgTWFjT1MgaGFzIHBsdWdpbnMgdW5kZXIgLnNvIG9yIHVuZGVyIC5keWxpYi4gQWRkIGRldGVjdGlvbiBmb3IgTWFjT1MKCSAgYW5kIGhhbmRsZSB0aGlzIGNhc2UuCgkgICogZ3N0L2dzdC5jOgoJICBBZGQgYSBjb21tZW50IGhlcmUgZGVzY3JpYmluZywgd2h5IHdlIHN0YXQgZWFjaCBwbHVnaW4gYW5kIG5vdCB0cnkgdG8KCSAgYmUgc21hcnQuCgoyMDA4LTAzLTMxIDEwOjIxOjU3ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogQWxzbyB1bnNldCB0aGUgR0FQIGZsYWcgb24gYnVmZmVycyBpZiB3ZSdyZSB3b3JraW5nIGlucGxhY2UgYnV0IHRoZSBlbGVtZW50IGlzIG5vdCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKToKCSAgQWxzbyB1bnNldCB0aGUgR0FQIGZsYWcgb24gYnVmZmVycyBpZiB3ZSdyZSB3b3JraW5nIGlucGxhY2UgYnV0CgkgIHRoZSBlbGVtZW50IGlzIG5vdCBHQVAtYXdhcmUuCgkgIE1hcmsgYSBjb21tZW50IGFzIEZJWE1FIDAuMTEuCgoyMDA4LTAzLTMxIDA4OjMyOjI2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0LmM6IEZpeCB0eXBlIGluIGxvZyBtZXNzYWdlIGFuZCBhZGQgb25lIHRvIGVhc2Ugc2VlaW5nIGhvdyBsb25nIHJlZ2lzdHJ5IGNhY2hlIHZlcmlmaWNhdGlvbiB0YWtlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOgoJICBGaXggdHlwZSBpbiBsb2cgbWVzc2FnZSBhbmQgYWRkIG9uZSB0byBlYXNlIHNlZWluZyBob3cgbG9uZyByZWdpc3RyeQoJICBjYWNoZSB2ZXJpZmljYXRpb24gdGFrZXMuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIE9ubHkgdGVzdCBwbHVnaW4gZmlsZW5hbWVzIGFnYWluc3QgR19NT0RVTEVfU1VGRklYLgoKMjAwOC0wMy0zMSAwNzo0OToyNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGRlYnVndXRpbHMuYzogSW1wcm92ZSBoYW5kbGluZyBnaG9zdC9wcm94eSBwYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICBJbXByb3ZlIGhhbmRsaW5nIGdob3N0L3Byb3h5IHBhZHMuCgoyMDA4LTAzLTI3IDE5OjEzOjQ1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBFeHBvc2UgbWFjcm8gdG8gZG9jcyBhbmQgZml4IGxpbmsgdG8gaXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBhZC5jOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgRXhwb3NlIG1hY3JvIHRvIGRvY3MgYW5kIGZpeCBsaW5rIHRvIGl0LgoKMjAwOC0wMy0yNyAxNToyMzo1NSArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBXaGVuIGNhbGN1bGF0aW5nIEdEUCBib2R5IENSQywgdXNlIHRoZSBjb3JyZWN0IHBvaW50ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgKGdzdF9kcF9wYWNrZXRfZnJvbV9ldmVudF8xXzApOgoJICBXaGVuIGNhbGN1bGF0aW5nIEdEUCBib2R5IENSQywgdXNlIHRoZSBjb3JyZWN0IHBvaW50ZXIuCgkgIEZpeGVzIHBhcnQgb2YgIzUyMjQwMS4KCjIwMDgtMDMtMjQgMTY6NTY6MzYgKzAwMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1d0Bza3luZXQuYmU+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IElkZW50aXR5IGlzIG5vdCBhbHdheXMgYSBwYXNzdGhyb3VnaCBlbGVtZW50LCBpdCBjYW4gbW9kaWZ5IHRoZSBidWZmZXIgdGltZXN0YW1wcyB3aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBNYXJrIE5hdXdlbGFlcnRzIDxtYW5hdXcgYXQgc2t5bmV0IGJlPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9jbGFzc19pbml0KSwKCSAgKGdzdF9pZGVudGl0eV9pbml0KSwgKGdzdF9pZGVudGl0eV9wcmVwYXJlX291dHB1dF9idWZmZXIpOgoJICBJZGVudGl0eSBpcyBub3QgYWx3YXlzIGEgcGFzc3Rocm91Z2ggZWxlbWVudCwgaXQgY2FuIG1vZGlmeSB0aGUgYnVmZmVyCgkgIHRpbWVzdGFtcHMgd2hlbiBpdCBoYXMgYSBkYXRhcmF0ZSBhbmQgb3BlcmF0ZXMgaW4gc2luZ2xlLXNlZ21lbnQgbW9kZS4KCSAgV2UgdGhlcmVmb3JlIG1ha2UgaXQgYW4gaW5fcGxhY2UgZmlsdGVyIHdpdGggYSBjdXN0b20gYnVmZmVyIHByZXBhcmUKCSAgZnVuY3Rpb24gdGhhdCBjb25kaXRpb25hbGx5IG1ha2VzIHRoZSBpbnB1dCBidWZmZXIgbWV0YWRhdGEgd3JpdGFibGUKCSAgd2hlbiBuZWVkZWQuICBGaXhlcyAjNTIzOTg1LgoKMjAwOC0wMy0yNCAxNjo0NDoyNSArMDAwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3QHNreW5ldC5iZT4KCgkgIFNtYWxsIGRvY3VtZW50YXRpb24gZml4ZXMuIEZpeGVzICM1MjM5NzguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3IGF0IHNreW5ldCBiZT4KCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOgoJICBTbWFsbCBkb2N1bWVudGF0aW9uIGZpeGVzLiBGaXhlcyAjNTIzOTc4LgoKMjAwOC0wMy0yNCAxNjozMTozMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBBbHNvIHJldHJ5IG91ciBwb2xsX3dhaXQgd2hlbiB3ZSBnZXQgRUFHQUlOLiBGaXhlcyAjNTI0MDQxLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiAoZ3N0X2ZkX3NpbmtfcmVuZGVyKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NyZWF0ZSk6CgkgIEFsc28gcmV0cnkgb3VyIHBvbGxfd2FpdCB3aGVuIHdlIGdldCBFQUdBSU4uIEZpeGVzICM1MjQwNDEuCgoyMDA4LTAzLTI0IDEwOjM4OjMxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IFdoZW4gdHJ5aW5nIHRvIG1ha2Ugcm9vbSBpbiB0aGUgcXVldWUsIGJ1bXAgdGhlIG1heCBhbGxvd2VkIGJ1ZmZlcnMgYmlnZ2VyIHRoYW4gdGhlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiAoc2luZ2xlX3F1ZXVlX292ZXJydW5fY2IpLAoJICAoc2luZ2xlX3F1ZXVlX3VuZGVycnVuX2NiKToKCSAgV2hlbiB0cnlpbmcgdG8gbWFrZSByb29tIGluIHRoZSBxdWV1ZSwgYnVtcCB0aGUgbWF4IGFsbG93ZWQgYnVmZmVycwoJICBiaWdnZXIgdGhhbiB0aGUgY3VycmVudCBhbW91bnQgb2YgYnVmZmVycyBpbiB0aGUgcXVldWUuIHRoaXMgZml4ZXMgc29tZQoJICBuYXN0eSBkZWFkbG9ja3MgaW4gbXVsdGlxdWV1ZSB3aGVuIGR5bmFtaWNhbGx5IGNoYW5naW5nIHRoZSBsaW1pdHMgb2YKCSAgdGhlIHF1ZXVlLgoKMjAwOC0wMy0yNCAxMDozMzo0MSArMDAwMCAgSm9zw6kgQWxidXJxdWVycXVlIDxqYWFsYnVycXVAc3ZuLmdub21lLm9yZz4KCgkgIGdzdC9nc3RjYXBzLio6IENvbnN0aWZ5IHRoZSBmaWVsZCBnY2hhciAqIHBhcmFtcyBpbiBzZXRfc2ltcGxlIGFuZCBmcmllbmRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6ICBKb3PDqSBBbGJ1cnF1ZXJxdWUgPGphYWxidXJxdSBhdCBzdm4gZG90IGdub21lIGRvdCBvcmc+CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX3NldF9zaW1wbGUpLAoJICAoZ3N0X2NhcHNfc2V0X3NpbXBsZV92YWxpc3QpLCAoZ3N0X2NhcHNfaW50ZXJzZWN0KToKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICBDb25zdGlmeSB0aGUgZmllbGQgZ2NoYXIgKiBwYXJhbXMgaW4gc2V0X3NpbXBsZSBhbmQgZnJpZW5kcy4KCSAgRml4ZXMgIzUyMjMyNi4KCjIwMDgtMDMtMjQgMTA6Mjk6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0dmFsdWUuYzogVHJhbnNmb3JtIGEgR3N0T2JqZWN0IHRvIGEgbW9yZSBtZWFuaW5nZnVsbCBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgb2JqZWN0IHR5cGUgaW4gYWRkaXRpb24gdG8gaXRzIG4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfdHJhbnNmb3JtX29iamVjdF9zdHJpbmcpOgoJICBUcmFuc2Zvcm0gYSBHc3RPYmplY3QgdG8gYSBtb3JlIG1lYW5pbmdmdWxsIHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZQoJICBvYmplY3QgdHlwZSBpbiBhZGRpdGlvbiB0byBpdHMgbmFtZS4KCjIwMDgtMDMtMjMgMTU6MTc6MjQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIENoYW5nZUxvZzogQ2hhbmdlTG9nIHN1cmdlcnkgdG8gYWRkIGJ1Z251bWJlciB0byBjb21taXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIENoYW5nZUxvZzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnkgdG8gYWRkIGJ1Z251bWJlciB0byBjb21taXQuCgoyMDA4LTAzLTIzIDE0OjI0OjQ4ICswMDAwICBSZW5lIFN0YWRsZXIgPG1haWxAcmVuZXN0YWRsZXIuZGU+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogRml4IGNvbmZ1c2luZyBkb2N1bWVudGF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfZ2FwX2F3YXJlKTogRml4IGNvbmZ1c2luZyBkb2N1bWVudGF0aW9uLgoKMjAwOC0wMy0yMyAxMTo0MDo1NCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IFJlbmFtZSBjb25zdGFudCBldmVyeXdoZXJlIGFuZCBkb24ndCBmb3JnZXQgb25lIG9jY3VyZW5jZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlKToKCSAgUmVuYW1lIGNvbnN0YW50IGV2ZXJ5d2hlcmUgYW5kIGRvbid0IGZvcmdldCBvbmUgb2NjdXJlbmNlLgoKMjAwOC0wMy0yMyAxMToyOTo1NCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IEFsaWduIG1lbW9yeSB0byB0aGUgcG9pbnRlciBzaXplIGV2ZW4gaWYgdGhlIGFyY2hpdGVjdHVyZSBhbGxvd3MgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MuIFVuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZSk6CgkgIEFsaWduIG1lbW9yeSB0byB0aGUgcG9pbnRlciBzaXplIGV2ZW4gaWYgdGhlIGFyY2hpdGVjdHVyZSBhbGxvd3MKCSAgdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MuIFVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHVzdWFsbHkgY29tZXMgd2l0aAoJICBwZXJmb3JtYW5jZSBwZW5hbGl0eS4KCjIwMDgtMDMtMjMgMTE6MjM6MzAgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBBbGlnbiBtZW1vcnkgdG8gdGhlIHBvaW50ZXIgc2l6ZSBpbnN0ZWFkIG9mIGFsd2F5cyAzMiBiaXQuIEZpeGVzIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzZXMgby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfd3JpdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9jaGVja19tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGFkX3RlbXBsYXRlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW4pOgoJICBBbGlnbiBtZW1vcnkgdG8gdGhlIHBvaW50ZXIgc2l6ZSBpbnN0ZWFkIG9mIGFsd2F5cyAzMiBiaXQuIEZpeGVzCgkgIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzZXMgb24gaWE2NCBhbmQgZnJpZW5kcy4KCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuaDoKCSAgQnVtcCBiaW5hcnkgcmVnaXN0cnkgZm9ybWF0IHZlcnNpb24gZm9yIHRoaXMgYXMgaXQgY2hhbmdlcyB0aGUKCSAgZm9ybWF0IG9uIHRob3NlIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndCBoYXZlIHVuYWxpZ25lZCBhY2Nlc3MKCSAgYW5kIDY0IGJpdCBwb2ludGVycy4KCjIwMDgtMDMtMjIgMTQ6NTY6MTcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIERlZmluZSBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIGlmIGl0J3MgdW5kZWZpbmVkIChHTGliIDwgMi4xMy4wKSBhbmQgdXNlIGl0IGV2ZXJ5d2hlcmUgZm9yIEdQYXJhbVNwZWNzIHRoYXQgdXNlIHN0YXRpYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC1kcGFyYW1zLnhtbDoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1wcm9wcy54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItc291cmNlLnhtbDoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuaDoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RpbmRleC5jOiAoZ3N0X2luZGV4X2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmM6IChnc3RfZGF0YV9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoX2dzdF9jaGVja19mYXVsdF9oYW5kbGVyX3Jlc3RvcmUpLAoJICAoX2dzdF9jaGVja19mYXVsdF9oYW5kbGVyX3NpZ2hhbmRsZXIpLAoJICAoX2dzdF9jaGVja19mYXVsdF9oYW5kbGVyX3NldHVwKSwgKGdzdF9jaGVja19pbml0KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKF9nc3RfY29udHJvbGxlcl9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGxmb2NvbnRyb2xzb3VyY2UuYzoKCSAgKGdzdF9sZm9fY29udHJvbF9zb3VyY2VfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiAoZ3N0X211bHRpX3F1ZXVlX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0ZmlsZWluZGV4LmM6IChnc3RfZmlsZV9pbmRleF9jbGFzc19pbml0KToKCSAgRGVmaW5lIEdfUEFSQU1fU1RBVElDX1NUUklOR1MgaWYgaXQncyB1bmRlZmluZWQgKEdMaWIgPCAyLjEzLjApIGFuZAoJICB1c2UgaXQgZXZlcnl3aGVyZSBmb3IgR1BhcmFtU3BlY3MgdGhhdCB1c2Ugc3RhdGljIHN0cmluZ3MgKGkuZS4gYWxsKS4KCSAgVGhpcyBnaXZlcyB1cyBsZXNzIG1lbW9yeSB1c2FnZSwgZmV3ZXIgYWxsb2NhdGlvbnMgYW5kIHRodXMgbGVzcwoJICBtZW1vcnkgZGVmcmFnbWVudGF0aW9uLiBGaXhlcyBidWcgIzUyMzgwNi4KCjIwMDgtMDMtMjIgMTQ6NTE6MTcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIEFQSTogQWRkIEdTVF9JU19QQVJBTV9TUEVDX01JTklfT0JKRUNULCBHU1RfUEFSQU1fU1BFQ19NSU5JX09CSkVDVAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X3ZhbHVlX2R1cF9taW5pX29iamVjdCksCgkgIChnc3RfcGFyYW1fc3BlY19taW5pX29iamVjdCk6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuaDoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBUEk6IEFkZCBHU1RfSVNfUEFSQU1fU1BFQ19NSU5JX09CSkVDVCwgR1NUX1BBUkFNX1NQRUNfTUlOSV9PQkpFQ1QKCSAgR1NUX1RZUEVfUEFSQU1fTUlOSV9PQkpFQ1QgYW5kIGdzdF92YWx1ZV9kdXBfbWluaV9vYmplY3QuIEFsc28gbW92ZQoJICBHc3RQYXJhbVNwZWNNaW5pT2JqZWN0IGludG8gYSBwdWJsaWMgaGVhZGVyIGZvciB0aGlzLgoJICBUaGlzIG1ha2UgR3N0TWluaU9iamVjdCBhIGJpdCBtb3JlIGNvbnNpc3RlbnQgd2l0aCBHT2JqZWN0IGFuZCBtYWtlcwoJICBpdCBwb3NzaWJsZSB0byBleHRlbmQgdGhlIHBhcmFtIHNwZWNzLgoJICBnc3RfdmFsdWVfZHVwX21pbmlfb2JqZWN0IGlzIG1haW5seSB1c2VmdWwgZm9yIHNldF9wcm9wZXJ0eSBtZXRob2RzLgoJICBGaXhlcyBidWcgIzUyMzc5OC4KCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBQcmludCBzb21ldGhpbmcgdXNlZnVsIGZvciBHc3RNaW5pT2JqZWN0IHByb3BlcnRpZXMgYW5kIG5vdCBqdXN0CgkgICJ1bmtub3duIHR5cGUiLgoKMjAwOC0wMy0yMSAxNjoxMTo1MSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgQ2FsbCB0aGUgdmVyc2lvbiBHU1RfTUFHSUNfQklOQVJZX1ZFUlNJT05fU1RSIHRvIGJlIG1vcmUgY29uc2lzdGVudCBhbmQgYWRkIGl0IHRvIHRoZSAocHJpdmF0ZSBwYXJ0KSBvZiB0aGUgZG9jcyB0byBmLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X2luaXRpYWxpemVfbWFnaWMpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9jaGVja19tYWdpYyk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkgIENhbGwgdGhlIHZlcnNpb24gR1NUX01BR0lDX0JJTkFSWV9WRVJTSU9OX1NUUiB0byBiZSBtb3JlIGNvbnNpc3RlbnQKCSAgYW5kIGFkZCBpdCB0byB0aGUgKHByaXZhdGUgcGFydCkgb2YgdGhlIGRvY3MgdG8gZml4IHRoZSBidWlsZC4KCjIwMDgtMDMtMjEgMTU6NTI6MTQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS4qOiBEb24ndCB1c2UgR1NUX01BSk9STUlOT1IgZm9yIHRoZSBiaW5hcnkgcmVnaXN0cnkgdmVyc2lvbi4gSW5zdGVhZCBoYXJkY29kZSBhIHZhbHVlIHRoYXQgbXVzdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfaW5pdGlhbGl6ZV9tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2NoZWNrX21hZ2ljKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkgIERvbid0IHVzZSBHU1RfTUFKT1JNSU5PUiBmb3IgdGhlIGJpbmFyeSByZWdpc3RyeSB2ZXJzaW9uLiBJbnN0ZWFkCgkgIGhhcmRjb2RlIGEgdmFsdWUgdGhhdCBtdXN0IGJlIGNoYW5nZWQgd2hlbmV2ZXIgdGhlIGZvcm1hdCBjaGFuZ2VzCgkgIGluIGFuIGluY29tcGF0aWJsZSB3YXkuCgkgIEFsc28gZG9uJ3QgR1NUX0VSUk9SIHdoZW4gdGhlcmUgaXMgYSB2ZXJzaW9uIG1pc21hdGNoLCBqdXN0CgkgIHJlZ2VuZXJhdGUgdGhlIHJlZ2lzdHJ5IHNpbGVudGx5LgoKMjAwOC0wMy0yMSAwMDozNToxMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IEJhY2sgdG8gZGV2ZWxvcG1lbnQgLSAwLjEwLjE4LjEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBCYWNrIHRvIGRldmVsb3BtZW50IC0gMC4xMC4xOC4xCgo9PT0gcmVsZWFzZSAwLjEwLjE4ID09PQoKMjAwOC0wMy0yMSAwMDoyMDo1OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiBnc3RyZWFtZXIuZG9hcDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBSZWxlYXNlIDAuMTAuMTgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlbGVhc2UgMC4xMC4xOAoKMjAwOC0wMy0yMCAyMzoyNjowNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JlLnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kYS5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9lcy5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9odS5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcGwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9ydy5wbzoKCSogcG8vc2sucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoKMjAwOC0wMy0xOCAxMjoxNzo1OCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICAwLjEwLjE3LjQgcHJlLXJlbGVhc2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgMC4xMC4xNy40IHByZS1yZWxlYXNlCgoyMDA4LTAzLTE4IDEwOjU0OjUyICswMDAwICBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZS5hbmRyZS5yYXZuYXNAdGFuZGJlcmcuY29tPgoKCSAgQWRkIG5ldyBmdW5jdGlvbiBnc3RfcG9sbF9mZF9pZ25vcmVkKCkgZm9yIGltcHJvdmVkIFdpbmRvd3MgY29tcGF0aWJpbGl0eS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMKCSAgPG9sZSBkb3QgYW5kcmUgZG90IHJhdm5hcyBhdCB0YW5kYmVyZyBkb3QgY29tPgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBvbGwuYzogKGdzdF9wb2xsX3dpbnNvY2tfZXJyb3JfdG9fZXJybm8pLAoJICAoZ3N0X3BvbGxfdXBkYXRlX3dpbnNvY2tfZXZlbnRfbWFzayksCgkgIChnc3RfcG9sbF9wcmVwYXJlX3dpbnNvY2tfYWN0aXZlX3NldHMpLAoJICAoZ3N0X3BvbGxfY29sbGVjdF93aW5zb2NrX2V2ZW50cyksIChnc3RfcG9sbF9uZXcpLCAoZ3N0X3BvbGxfZnJlZSksCgkgIChnc3RfcG9sbF9hZGRfZmRfdW5sb2NrZWQpLCAoZ3N0X3BvbGxfZmRfY3RsX3dyaXRlKSwKCSAgKGdzdF9wb2xsX2ZkX2N0bF9yZWFkX3VubG9ja2VkKSwgKGdzdF9wb2xsX2ZkX2lnbm9yZWQpLAoJICAoZ3N0X3BvbGxfZmRfaGFzX2Vycm9yKSwgKGdzdF9wb2xsX2ZkX2Nhbl9yZWFkX3VubG9ja2VkKSwKCSAgKGdzdF9wb2xsX2NoZWNrX2N0cmxfY29tbWFuZHMpLCAoZ3N0X3BvbGxfd2FpdCk6CgkgICogZ3N0L2dzdHBvbGwuaDoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBmdW5jdGlvbiBnc3RfcG9sbF9mZF9pZ25vcmVkKCkgZm9yIGltcHJvdmVkIFdpbmRvd3MKCSAgY29tcGF0aWJpbGl0eS4KCSAgVmFyaW91cyBtaW5vciBmaXhlcyBhbmQgY2xlYW51cHMuIFNlZSAjNTIwODA4LgoKMjAwOC0wMy0xNyAxMDoyMTo1OSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmRleC4qOiBEb24ndCBmcmVlIGtleSBzdHJpbmdzIHdoaWNoIHdlIGRvbid0IG93bi4gRml4ZXMgY3Jhc2ggaW4gZ3N0X2luZGV4X2VudHJ5X2ZyZWUoKSAoIzUyMjc0MSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmRleC5jOiAoZ3N0X2luZGV4X2VudHJ5X2ZyZWUpOgoJICAqIGdzdC9nc3RpbmRleC5oOgoJICBEb24ndCBmcmVlIGtleSBzdHJpbmdzIHdoaWNoIHdlIGRvbid0IG93bi4gRml4ZXMgY3Jhc2ggaW4KCSAgZ3N0X2luZGV4X2VudHJ5X2ZyZWUoKSAoIzUyMjc0MSkuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0Ly5jdnNpZ25vcmU6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGluZGV4LmM6ICh0ZXN0X2luZGV4X2VudHJpZXMpLAoJICAoZ3N0X2luZGV4X3N1aXRlKSwgKGdzdF9pbmRleCk6CgkgIEFkZCB1bml0IHRlc3QgZm9yIHRoZSBhYm92ZS4KCjIwMDgtMDMtMTEgMTQ6MDk6NDYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBSZW1vdmUgc3ltYm9scyB0aGF0IHdlcmUgcmVtb3ZlZCByZWNlbnRseS4gRml4ZXMgYnVnICM1MjE3NDAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBSZW1vdmUgc3ltYm9scyB0aGF0IHdlcmUgcmVtb3ZlZCByZWNlbnRseS4gRml4ZXMgYnVnICM1MjE3NDAuCgoyMDA4LTAzLTExIDAwOjI0OjE4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIDAuMTAuMTcuMyBwcmUtcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICAwLjEwLjE3LjMgcHJlLXJlbGVhc2UKCjIwMDgtMDMtMTEgMDA6MjM6MDIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBSZWxlYXNlIDAuMTAuMTcuMwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFJlbGVhc2UgMC4xMC4xNy4zCgoyMDA4LTAzLTA3IDE1OjM5OjQ1ICswMDAwICBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZS5hbmRyZS5yYXZuYXNAdGFuZGJlcmcuY29tPgoKCSAgUmVtb3ZlIEdzdFBvbGxNb2RlIGZyb20gdGhlIEFQSSwgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBsZXQgdGhlIGFwcGxpY2F0aW9uIGNvbnRyb2wgdGhpcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMKCSAgPG9sZSBkb3QgYW5kcmUgZG90IHJhdm5hcyBhdCB0YW5kYmVyZyBkb3QgY29tPgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBvbGwuYzogKGZpbmRfaW5kZXgpLCAoZ3N0X3BvbGxfZnJlZV93aW5zb2NrX2V2ZW50KSwKCSAgKGdzdF9wb2xsX3VwZGF0ZV93aW5zb2NrX2V2ZW50X21hc2spLCAoZ3N0X3BvbGxfbmV3KSwKCSAgKGdzdF9wb2xsX2ZyZWUpLCAoZ3N0X3BvbGxfZmRfaW5pdCksIChnc3RfcG9sbF9hZGRfZmRfdW5sb2NrZWQpLAoJICAoZ3N0X3BvbGxfcmVtb3ZlX2ZkKSwgKGdzdF9wb2xsX2ZkX2N0bF93cml0ZSksCgkgIChnc3RfcG9sbF9mZF9jdGxfcmVhZF91bmxvY2tlZCksIChnc3RfcG9sbF9mZF9oYXNfY2xvc2VkKSwKCSAgKGdzdF9wb2xsX2ZkX2hhc19lcnJvciksIChnc3RfcG9sbF9mZF9jYW5fcmVhZF91bmxvY2tlZCksCgkgIChnc3RfcG9sbF9mZF9jYW5fd3JpdGUpLCAoZ3N0X3BvbGxfd2FpdCksCgkgIChnc3RfcG9sbF9zZXRfY29udHJvbGxhYmxlKSwgKGdzdF9wb2xsX3Jlc3RhcnQpLAoJICAoZ3N0X3BvbGxfc2V0X2ZsdXNoaW5nKToKCSAgKiBnc3QvZ3N0cG9sbC5oOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiAoZ3N0X25ldF9jbGllbnRfY2xvY2tfbmV3KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6IChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfc3RhcnQpLAoJICAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX25ldyk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKGdzdF9mZF9zaW5rX3N0YXJ0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX3N0YXJ0KToKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL2dzdHBvbGxzdHJlc3MuYzogKG1haW4pOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3Rwb2xsLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfcG9sbF9zdWl0ZSk6CgkgIFJlbW92ZSBHc3RQb2xsTW9kZSBmcm9tIHRoZSBBUEksIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gbGV0IHRoZQoJICBhcHBsaWNhdGlvbiBjb250cm9sIHRoaXMuCgkgIEFkZCBzdXBwb3J0IGZvciBXaW4zMi4KCSAgRml4IHRoZSB0ZXN0c3VpdGUuIEZpeGVzICM1MjA2NzEuCgoyMDA4LTAzLTA3IDEzOjE5OjEyICswMDAwICBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZS5hbmRyZS5yYXZuYXNAdGFuZGJlcmcuY29tPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IEluY2x1ZGUgaW8uaCBmb3Igd3JpdGUoKSBhbmQgY2xvc2UoKSB3aGVuIGJ1aWxkaW5nIHdpdGggTVNWQy4gRml4ZXMgYnVnICM1MjA4NzcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzCgkgIDxvbGUgZG90IGFuZHJlIGRvdCByYXZuYXMgYXQgdGFuZGJlcmcgZG90IGNvbT4KCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzoKCSAgSW5jbHVkZSBpby5oIGZvciB3cml0ZSgpIGFuZCBjbG9zZSgpIHdoZW4gYnVpbGRpbmcgd2l0aCBNU1ZDLiBGaXhlcwoJICBidWcgIzUyMDg3Ny4KCjIwMDgtMDMtMDcgMTE6MTI6NTkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIE1vdmUgcmVnaXN0cnkgYmFja2VuZCBBUEkgdG8gcHJpdmF0ZSBoZWFkZXJzIHdoZXJlIHdlIGNhbi4gQWRkIGZpeG1lLTAuMTEgY29tbWVudHMgZm9yIHRoZSBvdGhlcnMuIEFkZCBzdHVicyBmb3IgdGhlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgICogZ3N0L2dzdGNvbmZpZy5oLmluOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5oOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICAqIHdpbjMyL2NvbW1vbi9nc3Rjb25maWcuaDoKCSAgTW92ZSByZWdpc3RyeSBiYWNrZW5kIEFQSSB0byBwcml2YXRlIGhlYWRlcnMgd2hlcmUgd2UgY2FuLiBBZGQKCSAgZml4bWUtMC4xMSBjb21tZW50cyBmb3IgdGhlIG90aGVycy4gQWRkIHN0dWJzIGZvciB0aGUgeG1sIGJhY2tlbmQgd2hlbgoJICB1c2luZyB0aGUgYmluYXJ5IHRvIGVuc3VyZSB0aGV5IGZ1bmN0aW9ucyBleGlzdHMgKHRoZXkgc2hvdWxkIG5vdCBiZQoJICB1c2VkIHRob3VnaCkuIEZpeGVzICM1MjA3NTYuCgoyMDA4LTAzLTA0IDAwOjE0OjUyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIDAuMTAuMTcuMiBwcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICAwLjEwLjE3LjIgcHJlbGVhc2UKCjIwMDgtMDMtMDMgMTg6NDI6MDQgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBTd2l0Y2ggdG8gdXNpbmcgcG9ydGFibCBnc2l6ZS9nc3NpemUgaW5zdGVhZCBvZiBzaXplX3Qvc3NpemVfdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfd3JpdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9yZWFkX2NhY2hlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGdzdF9yZWdpc3RyeV9zYXZlKToKCSAgKiBnc3QvZ3N0dXJpLmM6ICh1bmVzY2FwZV9zdHJpbmcpLCAoZ3N0X3VyaV9oYXNfcHJvdG9jb2wpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3Npbmtfb3Blbl9maWxlKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY19tYXBfcmVnaW9uKSwKCSAgKGdzdF9maWxlX3NyY19tYXBfc21hbGxfcmVnaW9uKSwgKGdzdF9maWxlX3NyY19jcmVhdGVfbW1hcCk6CgkgIFN3aXRjaCB0byB1c2luZyBwb3J0YWJsIGdzaXplL2dzc2l6ZSBpbnN0ZWFkIG9mIHNpemVfdC9zc2l6ZV90CgkgIEZpeGVzICM1MjAxNTIKCjIwMDgtMDMtMDMgMTg6MTQ6MzMgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0bWluaW9iamVjdC5jOiBJbXBvcnQgZ3N0X3ByaXZhdGUuaCBiZWZvcmUgYW55IG90aGVyIGhlYWRlciB0aGF0IG1pZ2h0IGluY2x1ZGUgb3RoZXIgZ2xpYiBoZWFkZXJzLiBUaGlzIGZpeGVzIHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgSW1wb3J0IGdzdF9wcml2YXRlLmggYmVmb3JlIGFueSBvdGhlciBoZWFkZXIgdGhhdCBtaWdodCBpbmNsdWRlIG90aGVyCgkgIGdsaWIgaGVhZGVycy4gVGhpcyBmaXhlcyB0aGUgYnVpbGQgb24gd2luZG93cyB1c2luZyBuYXRpdmUgY29tcGlsZXJzLgoKMjAwOC0wMy0wMyAxNDo0ODo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9nc3Rjb25maWcuaDogQWRkIGhlcmUgdG9vLCBqdXN0IGZvciBjb21wbGV0ZW5lc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9nc3Rjb25maWcuaDoKCSAgQWRkIGhlcmUgdG9vLCBqdXN0IGZvciBjb21wbGV0ZW5lc3MuCgoyMDA4LTAzLTAzIDE0OjQzOjI2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgRml4IGJyb2tlbiB1c2Ugb2YgY29uZmlnLmgtZGVmaW5lZCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlIGluIGEgcHVibGljIGhlYWRlciBmaWxlLiBBZGQgYSBjb3JyZXNwb25kaW5nIGRlZmluZSB0byBnc3RjLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIEZpeCBicm9rZW4gdXNlIG9mIGNvbmZpZy5oLWRlZmluZWQgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSBpbiBhIHB1YmxpYwoJICBoZWFkZXIgZmlsZS4gQWRkIGEgY29ycmVzcG9uZGluZyBkZWZpbmUgdG8gZ3N0Y29uZmlnLmgsIHNpbmNlIHdlIGNhbid0CgkgIHJlYWxseSByZW1vdmUgdGhvc2UgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZyb20gdGhlIGhlYWRlciBmaWxlIG5vdwoJICAob3IgY2FuIHdlPyBhbmQgd2h5IGFyZSB0aGV5IHRoZXJlIGluIHRoZSBmaXJzdCBwbGFjZT8pLgoKMjAwOC0wMy0wMyAxMDowNzoyMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jIChHU1RfU1RBUlRfVEVTVCk6IEFkZCBhIGNoZWNrIGZvciB0aGUgbmV3IHdhcm5pbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA4LTAzLTAzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYyAoR1NUX1NUQVJUX1RFU1QpOiBBZGQgYSBjaGVjayBmb3IKCSAgdGhlIG5ldyB3YXJuaW5nLgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYyAoZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZyk6IFdhcm4gaWYKCSAgc3RydWN0dXJlX2Zyb21fc3RyaW5nIGRpZG4ndCBjb25zdW1lIHRoZSB3aG9sZSBzdHJpbmcsIGJ1dCB0aGUKCSAgY2FsbGVyIGRpZCBub3QgcHJvdmlkZSBhbiBlbmQgcG9pbnRlci4KCjIwMDgtMDMtMDEgMTE6MjE6MzAgKzAwMDAgIEZhYnJpemlvIEdlbm5hcmkgPGZhYnJpemlvLmdlQHRpc2NhbGkuaXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogU3RyaW5ncyBhbGxvY2F0ZWQgYnkgbGlieG1sMiBzaG91bGQgYmUgZnJlZWQgd2l0aCB4bWxGcmVlKCksIG5vdCB3aXRoIGdfZnJlZSgpLiBGaXhlcyBpc3N1ZXMgb24uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBGYWJyaXppbyBHZW5uYXJpIDxmYWJyaXppby5nZSBhdCB0aXNjYWxpIGl0PgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAocmVhZF9zdHJpbmcpLCAobG9hZF9mZWF0dXJlKToKCSAgU3RyaW5ncyBhbGxvY2F0ZWQgYnkgbGlieG1sMiBzaG91bGQgYmUgZnJlZWQgd2l0aCB4bWxGcmVlKCksIG5vdAoJICB3aXRoIGdfZnJlZSgpLiBGaXhlcyBpc3N1ZXMgb24gd2luZG93cyBpbiBjZXJ0YWluIGNvbnRleHRzICgjNTE5Njk4KS4KCjIwMDgtMDItMjkgMTg6Mzg6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aW50ZXJmYWNlLmM6IERvbid0IGNyYXNoIGlmIHRoZSBlbGVtZW50IHN1cHBvcnRzIHRoZSBpbnRlcmZhY2UgcXVlcmllZCwgYnV0IGRvZXMgbm90IGltcGxlbWVudCBHc3RJbXBsZW1lbnRzSW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGludGVyZmFjZS5jOiAoZ3N0X2VsZW1lbnRfaW1wbGVtZW50c19pbnRlcmZhY2UpOgoJICBEb24ndCBjcmFzaCBpZiB0aGUgZWxlbWVudCBzdXBwb3J0cyB0aGUgaW50ZXJmYWNlIHF1ZXJpZWQsIGJ1dCBkb2VzCgkgIG5vdCBpbXBsZW1lbnQgR3N0SW1wbGVtZW50c0ludGVyZmFjZS4gRml4ZXMgIzUxOTU4NC4KCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0aW50ZXJmYWNlLmM6CgkgIEFkZCB1bml0IHRlc3QgZm9yIHRoZSBhYm92ZS4KCjIwMDgtMDItMjkgMTU6Mzk6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNtYWxsIGRvYyB1cGRhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCk6CgkgIFNtYWxsIGRvYyB1cGRhdGUuCgoyMDA4LTAyLTI5IDE1OjIyOjM0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYzogSW1wcm92ZSBzb21lIGNvbW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfc2VlayksCgkgIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSk6CgkgIEltcHJvdmUgc29tZSBjb21tZW50LgoJICBVcGRhdGUgdmFyaWFibGVzIHdoZXJlIGl0IG1ha2VzIG1vcmUgc2Vuc2UuCgoyMDA4LTAyLTI5IDE0OjIzOjE3ICswMDAwICBSZW5lIFN0YWRsZXIgPG1haWxAcmVuZXN0YWRsZXIuZGU+CgoJICBnc3QvZ3N0dXJpLmM6IFVzZSB0aGUgZ2V0X3Byb3RvY29sc19mdWxsIHZmdW5jIGlmIGdldF9wcm90b2NvbHMgaXMgTlVMTC4gIEZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfaGFuZGxlcl9nZXRfcHJvdG9jb2xzKToKCSAgVXNlIHRoZSBnZXRfcHJvdG9jb2xzX2Z1bGwgdmZ1bmMgaWYgZ2V0X3Byb3RvY29scyBpcyBOVUxMLiAgRml4ZXMKCSAgVVJJSGFuZGxlcnMgaW1wbGVtZW50ZWQgdXNpbmcgbGFuZ3VhZ2UgYmluZGluZ3MuCgoyMDA4LTAyLTI5IDEzOjU5OjI0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBBbmQgY29ycmVjdCBldmVuIG1vcmUgdmFsaWQgc3BhcnNlIHdhcm5pbmdzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuaDoKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlc2luay5jOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYzogKHNldHVwX2Zha2VzcmMpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zkc3JjLmM6IChzZXR1cF9mZHNyYyk6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNpbmsuYzogKHNldHVwX2ZpbGVzaW5rKToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9maWxlc3JjLmM6IChzZXR1cF9maWxlc3JjKToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9pZGVudGl0eS5jOiAoc2V0dXBfaWRlbnRpdHkpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOgoJICAqIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3N0YXRlcy5jOiAoc2V0dXApLCAodGVhcmRvd24pOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3QuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YWJpLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzogKHB1bGxfbWVzc2FnZXMpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RjYXBzLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZXZlbnQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0aXRlcmF0b3IuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWVzc2FnZS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RtaW5pb2JqZWN0LmM6IChteV9mb29faW5pdCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOiAodGhyZWFkX25hbWVfb2JqZWN0KSwKCSAgKGdzdF9vYmplY3Rfc3VpdGUpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGx1Z2luLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBvbGwuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cXVlcnkuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFzay5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfaHBwYS5oOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfaTM4Ni5oOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfcHBjMzIuaDoKCSAgKiB0ZXN0cy9jaGVjay9nc3Qvc3RydWN0X3BwYzY0Lmg6CgkgICogdGVzdHMvY2hlY2svZ3N0L3N0cnVjdF94ODZfNjQuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2FkYXB0ZXIuYzogKGNyZWF0ZV9hbmRfZmlsbF9hZGFwdGVyKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2Jhc2VzcmMuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dzdG5ldHRpbWVwcm92aWRlci5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvbGlic2FiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvc3RydWN0X2hwcGEuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9pMzg2Lmg6CgkgICogdGVzdHMvY2hlY2svbGlicy9zdHJ1Y3RfcHBjMzIuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9wcGM2NC5oOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvc3RydWN0X3g4Nl82NC5oOgoJICAqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc3RyZXNzLmM6CgkgIEFuZCBjb3JyZWN0IGV2ZW4gbW9yZSB2YWxpZCBzcGFyc2Ugd2FybmluZ3MuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBnc3RfcG9sbF9mZF9pbml0IHRvIHRoZSBsaXN0IG9mIHN5bWJvbHMuCgoyMDA4LTAyLTI5IDEyOjQxOjMzICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBDb3JyZWN0IGFsbCByZWxldmFudCB3YXJuaW5ncyBmb3VuZCBieSB0aGUgc3BhcnNlIHNlbWFudGljIGNvZGUgYW5hbHl6ZXIuIFRoaXMgaW5jbHVkZSBtYXJraW5nIHNldmVyYWwgc3ltYm9scyBzdGF0aWMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNvbmZpZy5oLmluOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfcmVhZF9idWZmZXIpOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfbG9nX21lc3NhZ2VfZnVuYyksCgkgIChnc3RfY2hlY2tfbG9nX2NyaXRpY2FsX2Z1bmMpLCAoZ3N0X2NoZWNrX2Ryb3BfYnVmZmVycyksCgkgIChnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcl9saXN0KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogKGdzdF9jb250cm9sbGVyX2dldCksCgkgIChnc3RfY29udHJvbGxlcl9nZXRfdHlwZSk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RoZWxwZXIuYzogKGdzdF9vYmplY3RfY29udHJvbF9wcm9wZXJ0aWVzKSwKCSAgKGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xsZXIpLCAoZ3N0X29iamVjdF9nZXRfY29udHJvbF9zb3VyY2UpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX25ldyk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RsZm9jb250cm9sc291cmNlLmM6CgkgIChnc3RfbGZvX2NvbnRyb2xfc291cmNlX25ldyk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICAoZ3N0X2RwX2V2ZW50X2Zyb21fcGFja2V0XzBfMik6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOiAoX2ZpbGVfaW5kZXhfaWRfc2F2ZV94bWwpLAoJICAoZ3N0X2ZpbGVfaW5kZXhfYWRkX2Fzc29jaWF0aW9uKToKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdG1lbWluZGV4LmM6CgkgICogdGVzdHMvYmVuY2htYXJrcy9nc3Rwb2xsc3RyZXNzLmM6IChtZXNzX3NvbWVfbW9yZSk6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvcXVldWUuYzogKHNldHVwX3F1ZXVlKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbGxlY3RwYWRzLmM6IChzZXR1cCksICh0ZWFyZG93biksCgkgIChnc3RfY29sbGVjdF9wYWRzX3N1aXRlKToKCSAgKiB0ZXN0cy9leGFtcGxlcy9hZGFwdGVyL2FkYXB0ZXJfdGVzdC5jOgoJICAqIHRlc3RzL2V4YW1wbGVzL21ldGFkYXRhL3JlYWQtbWV0YWRhdGEuYzogKG1ha2VfcGlwZWxpbmUpOgoJICAqIHRlc3RzL2V4YW1wbGVzL3htbC9jcmVhdGV4bWwuYzoKCSAgKiB0ZXN0cy9leGFtcGxlcy94bWwvcnVueG1sLmM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSAgKiB0b29scy9nc3QtcnVuLmM6CgkgIENvcnJlY3QgYWxsIHJlbGV2YW50IHdhcm5pbmdzIGZvdW5kIGJ5IHRoZSBzcGFyc2Ugc2VtYW50aWMgY29kZQoJICBhbmFseXplci4gVGhpcyBpbmNsdWRlIG1hcmtpbmcgc2V2ZXJhbCBzeW1ib2xzIHN0YXRpYywgdXNpbmcKCSAgTlVMTCBpbnN0ZWFkIG9mIDAgZm9yIHBvaW50ZXJzLCBub3QgdXNpbmcgdmFyaWFibGUgc2l6ZWQgYXJyYXlzCgkgIG9uIHRoZSBzdGFjaywgbW92aW5nIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyB0byB0aGUgYmVnaW5uaW5nIG9mCgkgIGEgYmxvY2sgYW5kIHVzaW5nICJmb28gKHZvaWQpIiBpbnN0ZWFkIG9mICJmb28gKCkiIGZvciBkZWNsYXJhdGlvbnMuCgoyMDA4LTAyLTI5IDEyOjA1OjU1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogRG9uJ3QgcmVzZXQgR3N0UG9sbEZEcywgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGF0IGFsbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKGdzdF9mZF9zaW5rX3VwZGF0ZV9mZCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY191cGRhdGVfZmQpOgoJICBEb24ndCByZXNldCBHc3RQb2xsRkRzLCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYXQgYWxsLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3Rwb2xsLmM6ICh0ZXN0X3BvbGxfd2FpdCksIChHU1RfU1RBUlRfVEVTVCksCgkgIChkZWxheWVkX3Jlc3RhcnQpLCAoZGVsYXllZF9jb250cm9sKToKCSAgVXNlIEdTVF9QT0xMX0ZEX0lOSVQuCgoyMDA4LTAyLTI5IDExOjU3OjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBvbGwuKjogQWRkZWQgU2luY2UgdGFncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBvbGwuYzogKGdzdF9wb2xsX2ZkX2luaXQpOgoJICAqIGdzdC9nc3Rwb2xsLmg6CgkgIEFkZGVkIFNpbmNlIHRhZ3MuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKGdzdF9mZF9zaW5rX3VwZGF0ZV9mZCk6CgkgIFVzZSBzb21lIG1vcmUgaW5pdCBtYWNyb3MuCgoyMDA4LTAyLTI5IDExOjIwOjAxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy86IFVzZSBpbml0IG1hY3JvcyBhbmQgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiAoZ3N0X2ZkX3Npbmtfc3RhcnQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogKGdzdF9mZF9zcmNfdXBkYXRlX2ZkKToKCSAgVXNlIGluaXQgbWFjcm9zIGFuZCBmdW5jdGlvbnMuCgoyMDA4LTAyLTI5IDExOjAwOjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWRkIElOSVQgbWFjcm8gYW5kIF9pbml0IG1ldGhvZCBmb3IgaW5pdGlhbGl6aW5nIHRoZSBHc3RQb2xsRkQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBvbGwuYzogKGdzdF9wb2xsX2ZkX2luaXQpOgoJICAqIGdzdC9nc3Rwb2xsLmg6CgkgIEFkZCBJTklUIG1hY3JvIGFuZCBfaW5pdCBtZXRob2QgZm9yIGluaXRpYWxpemluZyB0aGUgR3N0UG9sbEZELgoKMjAwOC0wMi0yOCAxOTo1ODoyNiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgSW5pdGlhbGl6ZSBzb21lIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGFzIHNwb3R0ZWQgYnkgdmFsZ3JpbmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19zdGFydCksCgkgIChnc3RfZmRfc2lua191cGRhdGVfZmQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogKGdzdF9mZF9zcmNfdXBkYXRlX2ZkKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cG9sbC5jOiAodGVzdF9wb2xsX3dhaXQpLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZGVsYXllZF9yZXN0YXJ0KSwgKGRlbGF5ZWRfY29udHJvbCk6CgkgIEluaXRpYWxpemUgc29tZSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBhcyBzcG90dGVkIGJ5IHZhbGdyaW5kLgoKMjAwOC0wMi0yOCAxNToyNTo1OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2JlbmNobWFya3MvOiBBZGQgcG9sbCBzdHJlc3MgdGVzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvYmVuY2htYXJrcy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL2dzdHBvbGxzdHJlc3MuYzogKG1lc3Nfc29tZV9tb3JlKSwgKHJ1bl90ZXN0KSwKCSAgKG1haW4pOgoJICBBZGQgcG9sbCBzdHJlc3MgdGVzdC4KCjIwMDgtMDItMjggMTA6MTg6MDIgKzAwMDAgIFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy86IFBvcnQgdG8gR3N0UG9sbC4gU2VlICM1MDU0MTcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXQgYXhpcyBkb3QgY29tPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19yZW5kZXIpLAoJICAoZ3N0X2ZkX3Npbmtfc3RhcnQpLCAoZ3N0X2ZkX3Npbmtfc3RvcCksIChnc3RfZmRfc2lua191bmxvY2spLAoJICAoZ3N0X2ZkX3NpbmtfdW5sb2NrX3N0b3ApLCAoZ3N0X2ZkX3NpbmtfdXBkYXRlX2ZkKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogKGdzdF9mZF9zcmNfdXBkYXRlX2ZkKSwKCSAgKGdzdF9mZF9zcmNfc3RhcnQpLCAoZ3N0X2ZkX3NyY19zdG9wKSwgKGdzdF9mZF9zcmNfdW5sb2NrKSwKCSAgKGdzdF9mZF9zcmNfdW5sb2NrX3N0b3ApLCAoZ3N0X2ZkX3NyY19jcmVhdGUpLAoJICAoZ3N0X2ZkX3NyY191cmlfc2V0X3VyaSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5oOgoJICBQb3J0IHRvIEdzdFBvbGwuIFNlZSAjNTA1NDE3LgoKMjAwOC0wMi0yNyAyMToxODozMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjogQWRkIG5ldyBnc3RfcG9sbF8gc3ltYm9scyB0byB3aW4zMiBkZWZzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBnc3RfcG9sbF8gc3ltYm9scyB0byB3aW4zMiBkZWZzLgoKMjAwOC0wMi0yNyAxOTowMToxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFVzZSBhIHByaXZhdGUgc3R1Y3QgdG8gbm90IGJyZWFrIEFCSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX2NsYXNzX2luaXQpLCAoZ3N0X25ldF9jbGllbnRfY2xvY2tfaW5pdCksCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19maW5hbGl6ZSksIChnc3RfbmV0X2NsaWVudF9jbG9ja19kb19zZWxlY3QpLAoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfdGhyZWFkKSwgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3N0YXJ0KSwKCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3N0b3ApLCAoZ3N0X25ldF9jbGllbnRfY2xvY2tfbmV3KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfY2xhc3NfaW5pdCksIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfaW5pdCksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfZmluYWxpemUpLCAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX3RocmVhZCksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfc3RhcnQpLCAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX3N0b3ApLAoJICAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX25ldyk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5oOgoJICBVc2UgYSBwcml2YXRlIHN0dWN0IHRvIG5vdCBicmVhayBBQkkuCgoyMDA4LTAyLTI3IDE4OjI3OjU5ICswMDAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkgIGxpYnMvZ3N0L25ldC86IE1hc3NpdmUgY29kZSByZW1vdmFsIGFuZCBjbGVhbnVwcyBiZWNhdXNlIG9mIEdzdFBvbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXQgYXhpcyBkb3QgY29tPgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiAoZ3N0X25ldF9jbGllbnRfY2xvY2tfaW5pdCksCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19maW5hbGl6ZSksIChnc3RfbmV0X2NsaWVudF9jbG9ja19kb19zZWxlY3QpLAoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfdGhyZWFkKSwgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3N0YXJ0KSwKCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3N0b3ApLCAoZ3N0X25ldF9jbGllbnRfY2xvY2tfbmV3KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6IChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfaW5pdCksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfZmluYWxpemUpLCAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX3RocmVhZCksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfc3RhcnQpLCAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX3N0b3ApLAoJICAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX25ldyk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5oOgoJICBNYXNzaXZlIGNvZGUgcmVtb3ZhbCBhbmQgY2xlYW51cHMgYmVjYXVzZSBvZiBHc3RQb2xsLgoJICBGaXhlcyAjNTA1NDE3LgoKMjAwOC0wMi0yNyAxODowMDowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogQWRkIGNoZWNrcyBmb3IgcG9sbCwgcHBvbGwgYW5kIHBzZWxlY3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQWRkIGNoZWNrcyBmb3IgcG9sbCwgcHBvbGwgYW5kIHBzZWxlY3QuCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgZG9jcyBmb3IgR3N0UG9sbC4KCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3Rwb2xsLmM6IChmaW5kX2luZGV4KSwgKHNlbGVjdGFibGVfZmRzKSwKCSAgKHBvbGxhYmxlX3RpbWVvdXQpLCAoY2hvb3NlX21vZGUpLCAocG9sbGZkX3RvX2ZkX3NldCksCgkgIChmZF9zZXRfdG9fcG9sbGZkKSwgKGdzdF9wb2xsX25ldyksIChnc3RfcG9sbF9mcmVlKSwKCSAgKGdzdF9wb2xsX3NldF9tb2RlKSwgKGdzdF9wb2xsX2dldF9tb2RlKSwKCSAgKGdzdF9wb2xsX2FkZF9mZF91bmxvY2tlZCksIChnc3RfcG9sbF9hZGRfZmQpLAoJICAoZ3N0X3BvbGxfcmVtb3ZlX2ZkKSwgKGdzdF9wb2xsX2ZkX2N0bF93cml0ZSksCgkgIChnc3RfcG9sbF9mZF9jdGxfcmVhZF91bmxvY2tlZCksIChnc3RfcG9sbF9mZF9jdGxfcmVhZCksCgkgIChnc3RfcG9sbF9mZF9oYXNfY2xvc2VkKSwgKGdzdF9wb2xsX2ZkX2hhc19lcnJvciksCgkgIChnc3RfcG9sbF9mZF9jYW5fcmVhZF91bmxvY2tlZCksIChnc3RfcG9sbF9mZF9jYW5fcmVhZCksCgkgIChnc3RfcG9sbF9mZF9jYW5fd3JpdGUpLCAoZ3N0X3BvbGxfd2FpdCksCgkgIChnc3RfcG9sbF9zZXRfY29udHJvbGxhYmxlKSwgKGdzdF9wb2xsX3Jlc3RhcnQpLAoJICAoZ3N0X3BvbGxfc2V0X2ZsdXNoaW5nKToKCSAgKiBnc3QvZ3N0cG9sbC5oOgoJICBBZGQgZ2VuZXJpYyBwb2xsIGFic3RyYWN0aW9uLiBXZSBpZGVhbGx5IGRvbid0IHdhbnQgdG8gaGF2ZSB0aGlzIGluIGNvcmUKCSAgaGVyZSBidXQgaW4gZ2xpYiBpbnRlYWQuLi4KCSAgVGhpcyBjb2RlIHdpbGwgYmUgdXNlZCBpbiB2YXJpb3VzIG5ldHdvcmsgZWxlbWVudHMgYW5kIHVsdGltYXRlbHkgZm9yCgkgIHRoZSBuYW5vc2Vjb25kIHByZWNpc2lvbiBtb25vdG9uaWMgY2xvY2sgKHRoYXQncyB3aHkgaXQncyBoZXJlIGluIGNvcmUpLgoJICBJdCdsbCBhbGxvdyB1cyB0byBpbXBsZW1lbnQgY2FuY2VsYWJsZSBzb2NrZXQgb3BlcmF0aW9ucyBmb3Igd2luZG93cyB0b28uCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBvbGwuYzogKHRlc3RfcG9sbF93YWl0KSwgKEdTVF9TVEFSVF9URVNUKSwKCSAgKGRlbGF5ZWRfc3RvcCksIChkZWxheWVkX3Jlc3RhcnQpLCAoZGVsYXllZF9mbHVzaCksCgkgIChkZWxheWVkX2NvbnRyb2wpLCAoZ3N0X3BvbGxfc3VpdGUpOgoJICBBZGQgR3N0UG9sbCB1bml0IHRlc3QuCgoyMDA4LTAyLTI1IDE1OjM3OjM2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGZpbHRlci5jOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgZ3N0X2ZpbHRlcl9ydW4oKS4gRml4ZXMgIzUxODYyNy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGZpbHRlci5jOgoJICBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgZ3N0X2ZpbHRlcl9ydW4oKS4gRml4ZXMgIzUxODYyNy4KCjIwMDgtMDItMjMgMTY6MDM6MzcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL1JFQURNRTogQWRkIGEgZmV3IGxpbmVzIGFib3V0IHRoZSBuZXcgJ2NoZWNrLWluc3BlY3RlZC12ZXJzaW9ucycgdGFyZ2V0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgQWRkIGEgZmV3IGxpbmVzIGFib3V0IHRoZSBuZXcgJ2NoZWNrLWluc3BlY3RlZC12ZXJzaW9ucycgdGFyZ2V0LgoKMjAwOC0wMi0yMSAxMDozMDo1MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IEFkZCBxb3MgdG8gdGhlIGV2ZW50IHRlc3QuIFJlbmFtZSB0Y2FzZS90c3VpdGU7IGlzIG5vdCBvbmx5IGFib3V0IGN1c3RvbSBldmVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RldmVudC5jOgoJICBBZGQgcW9zIHRvIHRoZSBldmVudCB0ZXN0LiBSZW5hbWUgdGNhc2UvdHN1aXRlOyBpcyBub3Qgb25seSBhYm91dAoJICBjdXN0b20gZXZlbnRzLgoKMjAwOC0wMi0yMSAxMDoyMjozNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBFbnN1cmUgdGhhdCBidWZmZXIgbWV0YWRhdGEgaXMgd3JpdGVhYmxlLCBiZWZvcmUgbW9kaWZ5aW5nLiBTcG90dGVkIGJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgRW5zdXJlIHRoYXQgYnVmZmVyIG1ldGFkYXRhIGlzIHdyaXRlYWJsZSwgYmVmb3JlIG1vZGlmeWluZy4gU3BvdHRlZCBieQoJICBNaWtlLgoKMjAwOC0wMi0yMCAxNTo0NDozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS4qOiBXaGVuIGRyb3BwaW5nIGJ1ZmZlcnMgaW4gbGVha3kgbW9kZXMsIG1hcmsgbmV4dCBidWZmZXJzIHdlIHNlbnQgYXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuaDoKCSAgV2hlbiBkcm9wcGluZyBidWZmZXJzIGluIGxlYWt5IG1vZGVzLCBtYXJrIG5leHQgYnVmZmVycyB3ZSBzZW50IGFzCgkgIERJU0NPTlQuCgoyMDA4LTAyLTIwIDEyOjMxOjUwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IEFsc28sIGlmIG1tYXAoKSBmYWlscyB0aGF0IHdvdWxkIGJlIGEgUkVBRCBlcnJvciwgbm90IE9QRU5fUkVBRC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfbWFwX3JlZ2lvbik6CgkgIEFsc28sIGlmIG1tYXAoKSBmYWlscyB0aGF0IHdvdWxkIGJlIGEgUkVBRCBlcnJvciwgbm90IE9QRU5fUkVBRC4KCjIwMDgtMDItMjAgMTI6MjY6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogUmVtb3ZlIEdzdEJ1ZmZlclN0b3JlLCBubyBpZGVhIHdoeSB3ZSB3ZXJlIHN0aWxsIGJ1aWxkaW5nIGl0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0YnVmZmVyc3RvcmUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGJ1ZmZlcnN0b3JlLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSAgUmVtb3ZlIEdzdEJ1ZmZlclN0b3JlLCBubyBpZGVhIHdoeSB3ZSB3ZXJlIHN0aWxsIGJ1aWxkaW5nIGl0LgoJICBJdCdzIG5vdCB1c2VkIGFueXdoZXJlIGFuZCBzdXBlcnNlZGVkIGJ5IEdzdEFkYXB0ZXIuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfbWFwX3JlZ2lvbiksCgkgIChnc3RfZmlsZV9zcmNfY3JlYXRlX21tYXApOgoJICAqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0ZmlsZWluZGV4LmM6IChnc3RfZmlsZV9pbmRleF9hZGRfYXNzb2NpYXRpb24pOgoJICBQcmludGYgZm9ybWF0IGZpeGVzIGZvciA2NC1iaXQgaW50ZWdlcnMuCgoyMDA4LTAyLTE5IDEzOjAwOjE0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBjb25maWd1cmUuYWM6IERvbid0IHNldCBHU1RfQ0FDSEVfRElSIGFuZCBhbGxvdyB0byBzZXQgaXQgYnkgYSBjb25maWd1cmUgcGFyYW1ldGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIERvbid0IHNldCBHU1RfQ0FDSEVfRElSIGFuZCBhbGxvdyB0byBzZXQgaXQgYnkgYSBjb25maWd1cmUgcGFyYW1ldGVyLgoJICBXZSdyZSBub3QgaW4gMC44IHRpbWVzIGFueW1vcmUuCgoyMDA4LTAyLTE5IDEyOjU2OjI4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLio6IE1ha2UgdGhlIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkZXIgZm9yIGdzdF9jaGVja19lbGVtZW50X3B1c2hfYnVmZmVyX2xpc3QgbWF0Y2ggdGhlIGltcGxlbS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX2Ryb3BfYnVmZmVycyksCgkgIChnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcl9saXN0KToKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOgoJICBNYWtlIHRoZSBkZWNsYXJhdGlvbiBpbiB0aGUgaGVhZGVyIGZvcgoJICBnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcl9saXN0IG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbi4KCSAgRml4IHVwIHNwZWxsaW5nLCBncmFtbWFyIGFuZCB3b3JkaW5nIG9mIHRoZSBkb2N1bWVudGF0aW9uIGluIGEgZmV3CgkgIHBsYWNlcywgYW5kIGFkZCB0aGUgU2luY2Uga2V5d29yZCB0byBuZXcgQVBJIGZ1bmN0aW9ucy4KCSAgVXNlIGdfbGlzdF9kZWxldGVfbGluayBpbnN0ZWFkIG9mIGdfbGlzdF9yZW1vdmUgaW4KCSAgZ3N0X2NoZWNrX2Ryb3BfYnVmZmVycywgc2luY2UgaXQncyBpbW1lYXN1cmFibHkgbW9yZSBlZmZpY2llbnQuCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVc2UgbmV3IGdzdF9jaGVja19kcm9wX2J1ZmZlcnMgZnVuY3Rpb24gd2hlcmUgYXBwcm9wcmlhdGUuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IHN5bWJvbHMgZ3N0X2NvbGxlY3RfcGFkc190YWtlX2J1ZmZlciwKCSAgZ3N0X2NvbGxlY3RfcGFkc19yZWFkX2J1ZmZlciwgZ3N0X2luZGV4X3NldF9yZXNvbHZlcl9mdWxsIHRvIHRoZQoJICBleHBvcnRzCgkgIENoYW5nZWxvZyBzdXJnZXJ5IHRvIGFkZCBBUEkga2V5d29yZCB0byBuZXcgZ3N0X2NoZWNrIEFQSS4KCjIwMDgtMDItMTkgMDg6MDU6MTUgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9wYXJzZS9sZXguX2dzdF9wYXJzZV95eS5wcmUuYzogVXBkYXRlIHByZS1nZW5lcmF0ZWQgZmxleCBmaWxlcyB3aXRoIGZsZXggMi4zLjM0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvbGV4Ll9nc3RfcGFyc2VfeXkucHJlLmM6ICh5eV9nZXRfbmV4dF9idWZmZXIpLAoJICAoX2dzdF9wYXJzZV95eWVuc3VyZV9idWZmZXJfc3RhY2spLCAoX2dzdF9wYXJzZV95eWxleF9pbml0X2V4dHJhKToKCSAgVXBkYXRlIHByZS1nZW5lcmF0ZWQgZmxleCBmaWxlcyB3aXRoIGZsZXggMi4zLjM0LgoKMjAwOC0wMi0xOSAwNTo0OTozMiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogQWRkIEZJWE1FIGZvciAwLjExIHRvIG1ha2UgR3N0TWluaU9iamVjdENsYXNzOjpjb3B5KCkgYSBiaXQgbW9yZSBmcmllbmRseSB0byBzdWJjbGFzc2VzIGFuZCBub3QgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkgIEFkZCBGSVhNRSBmb3IgMC4xMSB0byBtYWtlIEdzdE1pbmlPYmplY3RDbGFzczo6Y29weSgpIGEgYml0IG1vcmUKCSAgZnJpZW5kbHkgdG8gc3ViY2xhc3NlcyBhbmQgbm90IHJlcXVpcmUgdGhlbSB0byBrbm93IGFsbCBpbnRlcm5hbHMKCSAgb2YgdGhlaXIgcGFyZW50IGNsYXNzLgoKMjAwOC0wMi0xNSAxMzoxNToxNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQWRkIHN1Yi1idWZmZXIgZnVuY3Rpb25zIHRvIGNvbGxlY3RwYWRzLiBGaXhlcyAjNTE2MTg3LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkgIEFkZCBzdWItYnVmZmVyIGZ1bmN0aW9ucyB0byBjb2xsZWN0cGFkcy4gRml4ZXMgIzUxNjE4Ny4KCSAgQVBJOiBnc3RfY29sbGVjdF9wYWRzX3Rha2VfYnVmZmVyKCksIGdzdF9jb2xsZWN0X3BhZHNfcmVhZF9idWZmZXIoKQoKMjAwOC0wMi0xNSAxMjozMzowMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBDb3B5IHNlbGVjdGVkIGJ1ZmZlci1mbGFncyB3aGVuIGNyZWF0aW5nIHN1YmJ1ZmZlcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgQ29weSBzZWxlY3RlZCBidWZmZXItZmxhZ3Mgd2hlbiBjcmVhdGluZyBzdWJidWZmZXJzLgoJICBGaXhlcyAjNTE2Mzk1LgoKMjAwOC0wMi0xMiAxMjowNDo0MyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgUHJvcGVybHkgY2hhaW4gdXAgZmluYWxpemUgZnVuY3Rpb25zIHRvIHRoZSBwYXJlbnQgY2xhc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfY2xhc3NfaW5pdCksIChnc3RfYnVmZmVyX2ZpbmFsaXplKToKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9jbGFzc19pbml0KSwgKGdzdF9ldmVudF9maW5hbGl6ZSk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX2NsYXNzX2luaXQpLAoJICAoZ3N0X21lc3NhZ2VfZmluYWxpemUpOgoJICAqIGdzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X2NsYXNzX2luaXQpLCAoZ3N0X3F1ZXJ5X2ZpbmFsaXplKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9tbWFwX2J1ZmZlcl9jbGFzc19pbml0KSwKCSAgKGdzdF9tbWFwX2J1ZmZlcl9maW5hbGl6ZSk6CgkgIFByb3Blcmx5IGNoYWluIHVwIGZpbmFsaXplIGZ1bmN0aW9ucyB0byB0aGUgcGFyZW50IGNsYXNzLgoKMjAwOC0wMi0xMSAxNzo1Mzo1NyArMDAwMCAgU2lhdmFzaCBTYWZpIDxzaWF2YXNoLnNhZmlAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGluZGV4Lio6IEFkZCBuZXcgZnVuY3Rpb24gd2l0aCBvcHRpb24gdG8gZGlzcG9zZSBvZiB1c2VyX2RhdGEgaW4gcmVzb2x2ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU2lhdmFzaCBTYWZpIDxzaWF2YXNoIGRvdCBzYWZpIGF0IGdtYWlsIGRvdCBjb20+CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfZmluYWxpemUpLCAoZ3N0X2luZGV4X3NldF9yZXNvbHZlciksCgkgIChnc3RfaW5kZXhfc2V0X3Jlc29sdmVyX2Z1bGwpOgoJICAqIGdzdC9nc3RpbmRleC5oOgoJICBBZGQgbmV3IGZ1bmN0aW9uIHdpdGggb3B0aW9uIHRvIGRpc3Bvc2Ugb2YgdXNlcl9kYXRhIGluIHJlc29sdmVyLgoJICBBY3R1YWxseSBjYWxsIHRoZSBkaXNwb3NlIGZ1bmN0aW9uIHdoZW4gZmluYWxpemluZyB0aGUgb2JqZWN0IGFuZCBub3QKCSAganVzdCB3aGVuIGNoYW5naW5nIHRoZSByZXNvbHZlci9maWx0ZXIuCgkgIEFQSTogR3N0SW5kZXg6OmdzdF9pbmRleF9zZXRfcmVzb2x2ZXJfZnVsbCgpCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBmdW5jdGlvbiB0byBkb2NzLiBGaXhlcyAjNTE1NDY5LgoKMjAwOC0wMi0xMSAwODo1MzowNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdGluZGV4LmM6IENoYWluIHVwIGZpbmFsaXplIHRvIHRoZSBwYXJlbnQgY2xhc3MuIEZpeGVzIGxlYWtpbmcgdGhlIEdzdE9iamVjdCBuYW1lIGFuZCBvdGhlciB0aGluZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmRleC5jOiAoZ3N0X2luZGV4X2ZpbmFsaXplKToKCSAgQ2hhaW4gdXAgZmluYWxpemUgdG8gdGhlIHBhcmVudCBjbGFzcy4gRml4ZXMgbGVha2luZyB0aGUgR3N0T2JqZWN0CgkgIG5hbWUgYW5kIG90aGVyIHRoaW5ncy4KCjIwMDgtMDItMTAgMTk6NDg6MDQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjb21tb246CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiBGaXggSm9zZXAncyBzdXJuYW1lIGluIHByZXZpb3VzIGNvbW1pdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiBGaXggSm9zZXAncyBzdXJuYW1lIGluIHByZXZpb3VzIGNvbW1pdHMKCjIwMDgtMDItMDggMDA6NTQ6MjggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBNYWtlIERJU0FCTEVfREVQUkVDQVRFRCBkZWZpbmVkICpvbmx5KiBkdXJpbmcgQ1ZTLCBub3QgZHVyaW5nIHByZS1yZWxlYXNlcyBvciByZWxlYXNlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBNYWtlIERJU0FCTEVfREVQUkVDQVRFRCBkZWZpbmVkICpvbmx5KiBkdXJpbmcgQ1ZTLCBub3QgZHVyaW5nCgkgIHByZS1yZWxlYXNlcyBvciByZWxlYXNlcy4KCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIEFkZCBnc3QtcGx1Z2lucy1nbAoJICAqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkgIENoYW5nZSBvbmUgb2YgdGhlIHN0ZXBzIC0gd2Ugb25seSB1cGxvYWQgY29yZSAmIGJhc2UgdG8gR25vbWUgRlRQCgoyMDA4LTAyLTA2IDEyOjIxOjA1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0Y29uZmlnLmguaW46IEFkZCAnaWQnIGZvciBleGFtcGxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgIEFkZCAnaWQnIGZvciBleGFtcGxlLgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOgoJICBMaW5rIHRvIHNpZ25hbHMuIERvYyBhbmQgY29tbWVudCBmaXhlcy4KCjIwMDgtMDItMDUgMjE6MjI6NDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvOiBTb21lIG1pbm9yIGRvY3MgZml4ZXM6IGZpeCB0eXBvLCBtZW50aW9uIHRoYXQgR1NUX0ZMT1dfUkVTRU5EIGlzIHVudXNlZCBhbmQgdW5pbXBsZW1lbnRlZDsgZmluYWxseSwgaXQgaXMgcGx1Z2kuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5oOiAoR1NUX1BBRF9MSU5LX1NVQ0NFU1NGVUwpOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6IChHc3RQbHVnaW5GZWF0dXJlQ2xhc3MpOgoJICBTb21lIG1pbm9yIGRvY3MgZml4ZXM6IGZpeCB0eXBvLCBtZW50aW9uIHRoYXQgR1NUX0ZMT1dfUkVTRU5EIGlzCgkgIHVudXNlZCBhbmQgdW5pbXBsZW1lbnRlZDsgZmluYWxseSwgaXQgaXMgcGx1Z2luIGZlYXR1cmVzLCBub3QKCSAgcGx1Z2lucywgdGhhdCBoYXZlIHJhbmtzLgoKMjAwOC0wMi0wNSAxOTo0MjozMSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDogQ2xhcmlmeSBHc3RSYW5rIHJhbmdlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkgIENsYXJpZnkgR3N0UmFuayByYW5nZSBkb2NzLgoKMjAwOC0wMi0wNSAxODozNzowOCArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0LmM6IEFkZCBhIHNlcGFyYXRlIGdzdF9kZWluaXRpYWxpemVkIHRoYXQgcHJldmVudHMgZ3N0X2luaXQoKSBmcm9tIGJlaW5nIGNhbGxlZCBhZnRlciBnc3RfZGVpbml0KCkuICBGaXhlcyAjNTAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiBBZGQgYSBzZXBhcmF0ZSBnc3RfZGVpbml0aWFsaXplZCB0aGF0IHByZXZlbnRzCgkgIGdzdF9pbml0KCkgZnJvbSBiZWluZyBjYWxsZWQgYWZ0ZXIgZ3N0X2RlaW5pdCgpLiAgRml4ZXMgIzUwOTU1OQoKMjAwOC0wMi0wNSAxNDoxNToxNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZXMgdG8gdGhlIGJlaGF2aW91ciBvZiBHc3RQYWRUZW1wbGF0ZXMsIGV0YyBhbmQgdGhlIHBvc3NpYmxpdHkgdG8gY2FsbCB0aGVtIGluIGNsYXNzX2luaXQgYXMgaXQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZ2V0X3R5cGUpLCAoZ3N0X2Jpbl9iYXNlX2luaXQpLAoJICAoZ3N0X2Jpbl9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfYmFzZV9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUpOgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOiAoZ3N0X3BhZF90ZW1wbGF0ZV9pbml0KToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9nZXRfdHlwZSksCgkgIChnc3RfcGlwZWxpbmVfYmFzZV9pbml0KSwgKGdzdF9waXBlbGluZV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZ2V0X3R5cGUpLAoJICAoZ3N0X2Jhc2Vfc3JjX2Jhc2VfaW5pdCksIChnc3RfYmFzZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl9iYXNlX2luaXQpLAoJICAoZ3N0X2NhcHNmaWx0ZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOiAoZ3N0X2Zha2Vfc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2Zha2Vfc2lua19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzogKGdzdF9mYWtlX3NyY19iYXNlX2luaXQpLAoJICAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2ZkX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY19iYXNlX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2Jhc2VfaW5pdCksCgkgIChnc3RfZmlsZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2Jhc2VfaW5pdCksCgkgIChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2Jhc2VfaW5pdCksCgkgIChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfYmFzZV9pbml0KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfYmFzZV9pbml0KSwKCSAgKGdzdF9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9iYXNlX2luaXQpLAoJICAoZ3N0X3RlZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2Jhc2VfaW5pdCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2xhc3NfaW5pdCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3N1aXRlKToKCSAgUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZXMgdG8gdGhlIGJlaGF2aW91ciBvZiBHc3RQYWRUZW1wbGF0ZXMsIGV0YwoJICBhbmQgdGhlIHBvc3NpYmxpdHkgdG8gY2FsbCB0aGVtIGluIGNsYXNzX2luaXQgYXMgaXQgYnJlYWtzIHRvbwoJICBtYW55IGVsZW1lbnRzLiBSZW9wZW5zIGJ1ZyAjNDkxNTAxLgoJICBTaG91bGQgYmUgYXBwbGllZCBhZ2FpbiBmb3IgMC4xMSwgdGh1cyBhZGRlZCBhIGZldyBGSVhNRSAwLjExIGF0CgkgIHNldmVyYWwgcGxhY2VzLgoKMjAwOC0wMi0wNSAwOToyNDoxOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBEdW1wIG9uZSBncmFwaCBwZXIgcGlwZWxpbmUgc3RhdGUtY2hhbmdlIGFuZCBzdGF0ZSBjaGFuZ2UgbmFtZSAoaWYgR1NUX0RFQlVHX0RVTVBfRE9UX0RJUiBpcyBzZXQpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIER1bXAgb25lIGdyYXBoIHBlciBwaXBlbGluZSBzdGF0ZS1jaGFuZ2UgYW5kIHN0YXRlIGNoYW5nZSBuYW1lCgkgIChpZiBHU1RfREVCVUdfRFVNUF9ET1RfRElSIGlzIHNldCkuCgoyMDA4LTAyLTA0IDE0OjE0OjQyICswMDAwICBUaGlqcyBWZXJtZWlyIDx0aGlqc3Zlcm1laXJAZ21haWwuY29tPgoKCSAgQmUgc3VyZSB0aGF0IHdlIGhhdmUgYSBuZXcgY29weSBvZiB0aGUgY2FwcyBhbmQgbm90IHJlZmZlZCBjYXBzIGZyb20gYSB0ZW1wbGF0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOgoJICBCZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIG5ldyBjb3B5IG9mIHRoZSBjYXBzIGFuZCBub3QKCSAgcmVmZmVkIGNhcHMgZnJvbSBhIHRlbXBsYXRlCgoyMDA4LTAyLTAzIDEyOjA0OjM3ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBEb24ndCB1c2UgYmFzZV9pbml0IHdoZXJlIG5vdCBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gRm9yIGV4YW1wbGUgaXQncyBub3QgbmVjZXNzYXJ5IGFueW1vcmUgZm9yIGFkZGluZyBwYWQgdGVtcGxhdGVzIG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9nZXRfdHlwZSksIChnc3RfYmluX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2dldF90eXBlKSwKCSAgKGdzdF9waXBlbGluZV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF90eXBlKSwKCSAgKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZ2V0X3R5cGUpLAoJICAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF90eXBlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2Jhc2VfaW5pdCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmM6IChnc3RfZGF0YV9xdWV1ZV9nZXRfdHlwZSk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOgoJICAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX2Jhc2VfaW5pdCksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl9iYXNlX2luaXQpLAoJICAoZ3N0X2NhcHNmaWx0ZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOiAoZ3N0X2Zha2Vfc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2Zha2Vfc2lua19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzogKGdzdF9mYWtlX3NyY19iYXNlX2luaXQpLAoJICAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2ZkX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY19iYXNlX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2Jhc2VfaW5pdCksCgkgIChnc3RfZmlsZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2Jhc2VfaW5pdCksCgkgIChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2Jhc2VfaW5pdCksCgkgIChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfYmFzZV9pbml0KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfYmFzZV9pbml0KSwKCSAgKGdzdF9xdWV1ZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9iYXNlX2luaXQpLAoJICAoZ3N0X3RlZV9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2Jhc2VfaW5pdCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2xhc3NfaW5pdCk6CgkgIERvbid0IHVzZSBiYXNlX2luaXQgd2hlcmUgbm90IGFic29sdXRlbHkgbmVjZXNzYXJ5LiBGb3IgZXhhbXBsZSBpdCdzCgkgIG5vdCBuZWNlc3NhcnkgYW55bW9yZSBmb3IgYWRkaW5nIHBhZCB0ZW1wbGF0ZXMgb3Igc2V0dGluZyBlbGVtZW50CgkgIGRldGFpbHMuCgkgIExlYXZlIGVtcHR5IGJhc2VfaW5pdCBmdW5jdGlvbnMgaW4gc2V2ZXJhbCBwbGFjZXMgYXMgR1NUX0JPSUxFUlBMQVRFCgkgIHN0aWxsIGRlZmluZXMgYW5kIHVzZXMgdGhlbS4KCjIwMDgtMDItMDMgMTA6NDg6MDEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC86IE1ha2UgaXQgcG9zc2libGUgKGFuZCByZWNvbW1lbmRlZCkgdG8gc2V0IGVsZW1lbnQgZGV0YWlscyBhbmQgYWRkIHBhZCB0ZW1wbGF0ZXMgaW4gdGhlIGNsYXNzX2luaXQgZnVuY3Rpb25zIGJ5IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfYmFzZV9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUpOgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJICBNYWtlIGl0IHBvc3NpYmxlIChhbmQgcmVjb21tZW5kZWQpIHRvIHNldCBlbGVtZW50IGRldGFpbHMgYW5kIGFkZAoJICBwYWQgdGVtcGxhdGVzIGluIHRoZSBjbGFzc19pbml0IGZ1bmN0aW9ucyBieSBjb3B5aW5nIHRoZSBkZXRhaWxzL3BhZAoJICB0ZW1wbGF0ZXMgaW4gR3N0RWxlbWVudCdzIGJhc2VfaW5pdC4KCSAgQWxzbyBtYWtlIGl0IHBvc3NpYmxlIHRvIHJlcGxhY2UgZXhpc3RpbmcgcGFkIHRlbXBsYXRlcyBieSBhZGRpbmcKCSAgYSBuZXcgb25lIHdpdGggdGhlIHNhbWUgbmFtZS4gVGhpcyB3YXMgZG9uZSBpbiBhIGhhY2tpc2ggZmFzaGlvbgoJICBpbiBzYW1lIGVsZW1lbnRzIGJlZm9yZSBhbHJlYWR5LgoJICBEb24ndCByZWZlcmVuY2UgcGFkIHRlbXBsYXRlcyB0aGF0IGFyZSBhZGRlZCBhIHNlY29uZCB0aW1lLiBBCgkgIG5ldyBwYWQgdGVtcGxhdGUgaGFzIGEgcmVmY291bnQgb2Ygb25lIGFuZCBpcyBub3QgZmxvYXRpbmcgYW55bW9yZQoJICBhbmQgdG8gYmUgb3duZWQgYnkgdGhlIGVsZW1lbnQncyBjbGFzcy4gTWFrZSB0aGlzIG1vcmUgZXhwbGljaXQgYnkKCSAgbWVudGlvbmluZyBpdCBpbiB0aGUgZG9jcyBvZiBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlKCkuCgkgIFRoZXNlIGNoYW5nZXMgYXJlIGJhY2t3YXJkcyBjb21wYXRpYmxlLiBGaXhlcyBidWcgIzQ5MTUwMS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZWxlbWVudC5jOgoJICBBZGQgdW5pdCB0ZXN0IGZvciBzZXR0aW5nIGVsZW1lbnQgZGV0YWlscywgYWRkaW5nIHBhZCB0ZW1wbGF0ZXMgYW5kCgkgIHJlcGxhY2luZyB0aGVtIGluIGEgc3ViY2xhc3MuCgoyMDA4LTAyLTAyIDA2OjQ4OjM3ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBGaXggYSBmZXcgbWVtb3J5IGxlYWtzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfaW50ZXJmYWNlcyksCgkgIChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyksIChwcmludF9wYWRfaW5mbyksCgkgIChwcmludF9zaWduYWxfaW5mbyksIChwcmludF9lbGVtZW50X2luZm8pOgoJICBGaXggYSBmZXcgbWVtb3J5IGxlYWtzLgoKMjAwOC0wMi0wMSAxNzoxNjoyNiArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIEFkZCBtb3JlIGZ1bmN0aW9ucyBmb3IgdW5pdCB0ZXN0aW5nOiBnc3RfY2hlY2tfZHJvcF9idWZmZXJzLCBnc3RfY2hlY2tfY2Fwc19lcXVhbCwgZ3N0X2NoZWNrX2VsZW1lbnRfcHVzaF9idWZmZXJfbGlzdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgQWRkIG1vcmUgZnVuY3Rpb25zIGZvciB1bml0IHRlc3Rpbmc6IGdzdF9jaGVja19kcm9wX2J1ZmZlcnMsCgkgIGdzdF9jaGVja19jYXBzX2VxdWFsLCBnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcl9saXN0LAoJICBnc3RfY2hlY2tfZWxlbWVudF9wdXNoX2J1ZmZlcgoKMjAwOC0wMi0wMSAxNjozNzoyMiArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgR1NUX0NIRUNLX1ZFUlNJT04gdG8gdGhlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDgtMDItMDEgIEp1bGllbiBNb3V0dGUgIDxqdWxpZW5AZmx1ZW5kby5jb20+CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIEdTVF9DSEVDS19WRVJTSU9OIHRvIHRoZQoJICBkb2NzCgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfY2xhc3NfaW5pdCksCgkgIChnc3RfaW5kZXhfZnJlZV93cml0ZXIpLAoJICAoZ3N0X2luZGV4X2ZpbmFsaXplKSwgKGdzdF9pbmRleF9lbnRyeV9mcmVlKSwKCSAgKGdzdF9pbmRleF9hZGRfYXNzb2NpYXRpb24pOiBGaXggbWVtb3J5IGxlYWtzLgoJICAqIGdzdC9nc3R2ZXJzaW9uLmguaW46IEFkZCBHU1RfQ0hFQ0tfVkVSU0lPTiBtYWNyby4KCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdG1lbWluZGV4LmM6IChnc3RfbWVtX2luZGV4X2NsYXNzX2luaXQpLAoJICAoZ3N0X21lbV9pbmRleF9mcmVlX2Zvcm1hdCksIChnc3RfbWVtX2luZGV4X2ZyZWVfaWQpLAoJICAoZ3N0X21lbV9pbmRleF9maW5hbGl6ZSk6IEZpeCBtZW1vcnkgbGVha3MuCgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOiBVcGRhdGVkIHRvIENWUyBIRUFELgoKMjAwOC0wMi0wMSAxMjoyNToxNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9SRUFETUU6IFNvbWUgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyB0aGUgcGx1Z2luIGRvY3Mgd29ya3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvUkVBRE1FOgoJICBTb21lIG1vcmUgZGV0YWlscyBhYm91dCBob3cgdGhlIHBsdWdpbiBkb2NzIHdvcmtzLgoJICAqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy1zZWN0aW9ucy50eHQ6CgkgIFdoaXRlc3BhY2UgY2xlYW51cC4KCjIwMDgtMDItMDEgMTI6MTA6MTcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9wYXJzZS86IEFkZCBkZWxheWVkIHNldC1wcm9wZXJ0eS4gVGhpcyBhbGxvd3MgdG8gc2V0IHByb3BlcnRpZXMgb24gZHluYW1pY2FseSBjcmVhdGVkIG9iamVjdHMgKHBhZHMgaW4gdmlkZW9teGVyKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIudGFiLnByZS5jOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnRhYi5wcmUuaDoKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICAqIGdzdC9wYXJzZS9sZXguX2dzdF9wYXJzZV95eS5wcmUuYzoKCSAgQWRkIGRlbGF5ZWQgc2V0LXByb3BlcnR5LiBUaGlzIGFsbG93cyB0byBzZXQgcHJvcGVydGllcyBvbiBkeW5hbWljYWx5CgkgIGNyZWF0ZWQgb2JqZWN0cyAocGFkcyBpbiB2aWRlb214ZXIpLgoKMjAwOC0wMi0wMSAxMToyNzozMiArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jOiBDaGVjayBpZiBjYXBzIGFyZSBub3QgTlVMTCAoZml4IGJ1ZyAjNTEwMTk0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgQ2hlY2sgaWYgY2FwcyBhcmUgbm90IE5VTEwgKGZpeCBidWcgIzUxMDE5NCkKCjIwMDgtMDItMDEgMTA6Mjc6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEFkZCBmaXhtZSByZWdhcmRpbmcgRU9TIGluIHB1bGwgbW9kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19sb29wKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX3BhdXNlZCk6CgkgIEFkZCBmaXhtZSByZWdhcmRpbmcgRU9TIGluIHB1bGwgbW9kZS4KCSAgRml4IHBvc2l0aW9uIHJlcG9ydGluZyBpbiBQQVVTRUQgZm9yIG5lZ2F0aXZlIHJhdGVzLgoKMjAwOC0wMi0wMSAxMDoyMzo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmM6IFdoZW4gcmVwbGFjaW5nIGEgbWluaW9iamVjdCwgZG8gYSBxdWljayBlcXVhbGl0eSBjaGVjayBmaXJzdCBzbyB0aGF0IHdlIGNhbiBhdm9pZCBhIHJlZi91bnJlZiBwYWlyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X3JlcGxhY2UpOgoJICBXaGVuIHJlcGxhY2luZyBhIG1pbmlvYmplY3QsIGRvIGEgcXVpY2sgZXF1YWxpdHkgY2hlY2sgZmlyc3Qgc28gdGhhdCB3ZQoJICBjYW4gYXZvaWQgYSByZWYvdW5yZWYgcGFpci4KCjIwMDgtMDItMDEgMTA6MTc6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXN5bmNocm9uaXNhdGlvbi50eHQ6IFVwZGF0ZSBzb21lIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3luY2hyb25pc2F0aW9uLnR4dDoKCSAgVXBkYXRlIHNvbWUgZG9jcy4KCSAgKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CgkgICogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLWRvY3Muc2dtbDoKCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICBBZGQgbXVsdGlxdWV1ZSB0byB0aGUgZG9jcy4KCjIwMDgtMDEtMzAgMTQ6Mzg6NDMgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBCYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJhY2sgdG8gQ1ZTCgo9PT0gcmVsZWFzZSAwLjEwLjE3ID09PQoKMjAwOC0wMS0zMCAxNDowNTo0NSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiBnc3RyZWFtZXIuZG9hcDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBSZWxlYXNlIDAuMTAuMTcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlbGVhc2UgMC4xMC4xNwoKMjAwOC0wMS0zMCAxMzoxMzo0OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIGFkZCBDaGFuZ2VMb2cgZW50cnkgZm9yIHByZXZpb3VzIGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIENoYW5nZUxvZyBlbnRyeSBmb3IgcHJldmlvdXMgY29tbWl0CgoyMDA4LTAxLTMwIDEzOjEyOjI0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jOiBDaGVjayBpZiBjYXBzIGFyZSBub3QgTlVMTCAoZml4IGJ1ZyAjNTEwMTk0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgQ2hlY2sgaWYgY2FwcyBhcmUgbm90IE5VTEwgKGZpeCBidWcgIzUxMDE5NCkKCjIwMDgtMDEtMzAgMTI6NTU6NDIgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYzogQ2hlY2sgaWYgY2FwcyBhcmUgbm90IE5VTEwgKGZpeCBidWcgIzUxMDE5NCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIENoZWNrIGlmIGNhcHMgYXJlIG5vdCBOVUxMIChmaXggYnVnICM1MTAxOTQpCgoyMDA4LTAxLTMwIDEyOjQ0OjEzICswMDAwICBDeWd3aW4gUG9ydHMgbWFpbnRhaW5lciA8eXNlbGtvd2l0ekB1c2Vycy5zb3VyY2Vmb3JnZT4KCgkgIGdzdC9nc3R1dGlscy5jOiBGaXggY29tcGlsYXRpb24gb24gc3lzdGVtcyB0aGF0IGhhdmUgcG9zaXggdGltZXJzIGJ1dCBubyBtb25vdG9uaWMgY2xvY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBGaXggY29tcGlsYXRpb24gb24gc3lzdGVtcyB0aGF0IGhhdmUgcG9zaXggdGltZXJzIGJ1dCBubwoJICBtb25vdG9uaWMgY2xvY2suCgkgIEZpeGVzOiAjNTEyNzE1CgkgIFBhdGNoIEJ5OiBDeWd3aW4gUG9ydHMgbWFpbnRhaW5lciA8eXNlbGtvd2l0eiBhdCB1c2VycyBkb3Qgc291cmNlZm9yZ2UKCSAgZG90IG5ldD4KCjIwMDgtMDEtMzAgMTI6Mzk6NTEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogUmV2ZXJ0IHByZXZpb3VzIGNvbW1pdCBpbiBwcmVwYXJhdGlvbiBmb3IgYW4gaW1wcm9tcHR1IDAuMTAuMTcgcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICBSZXZlcnQgcHJldmlvdXMgY29tbWl0IGluIHByZXBhcmF0aW9uIGZvciBhbiBpbXByb21wdHUgMC4xMC4xNyByZWxlYXNlCgoyMDA4LTAxLTI5IDA5OjQzOjExICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBGaXggYSBmZXcgbWVtb3J5IGxlYWtzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfaW50ZXJmYWNlcyksCgkgIChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyksIChwcmludF9wYWRfaW5mbyksCgkgIChwcmludF9zaWduYWxfaW5mbyksIChwcmludF9lbGVtZW50X2luZm8pOgoJICBGaXggYSBmZXcgbWVtb3J5IGxlYWtzLgoKMjAwOC0wMS0yOCAyMzozMDo0NSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IEJhY2sgdG8gQ1ZTCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQmFjayB0byBDVlMKCj09PSByZWxlYXNlIDAuMTAuMTYgPT09CgoyMDA4LTAxLTI4IDIzOjI3OjEzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIENoYW5nZUxvZzoKCSogTkVXUzoKCSogUkVMRUFTRToKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMuYXJnczoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmhpZXJhcmNoeToKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmludGVyZmFjZXM6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogZ3N0cmVhbWVyLmRvYXA6CgkqIHBvL0xJTkdVQVM6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgUmVsZWFzZSAwLjEwLjE2CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZWxlYXNlIDAuMTAuMTYKCjIwMDgtMDEtMjggMjE6MjA6MTYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDgtMDEtMjQgMjM6Mjg6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBjb25maWd1cmUuYWM6IFVzZSBBQ19UUllfQ09NUElMRSBpbnN0ZWFkIG9mIEFDX1RSWV9SVU4gdG8gY2hlY2sgZm9yIF9QT1NJWF9USU1FUiwgX1BPU0lYX01PTk9UT05JQ19DTE9DSywgZXRjLiBNYWtlcyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBVc2UgQUNfVFJZX0NPTVBJTEUgaW5zdGVhZCBvZiBBQ19UUllfUlVOIHRvIGNoZWNrIGZvcgoJICBfUE9TSVhfVElNRVIsIF9QT1NJWF9NT05PVE9OSUNfQ0xPQ0ssIGV0Yy4gTWFrZXMgY29uZmlndXJlCgkgIG5vdCBmYWlsIHdoZW4gdHJ5aW5nIHRvIGNyb3NzY29tcGlsZSBvbiBPcGVuRW1iZWRkZWQgKCM1MTE3NTApLgoKMjAwOC0wMS0yMCAxNzowODo1NCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZG9jcy9tYW51YWxzLm1hazogVXNlICQoTUFLRSkgaW5zdGVhZCBvZiBtYWtlIHRvIGZpeCB0aGUgYnVpbGQgaWYgR05VIG1ha2UgaXMgY2FsbGVkIGRpZmZlcmVudC4gRml4ZXMgYnVnICM1MTA3NDcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFscy5tYWs6CgkgIFVzZSAkKE1BS0UpIGluc3RlYWQgb2YgbWFrZSB0byBmaXggdGhlIGJ1aWxkIGlmIEdOVSBtYWtlIGlzCgkgIGNhbGxlZCBkaWZmZXJlbnQuIEZpeGVzIGJ1ZyAjNTEwNzQ3LgoKMjAwOC0wMS0yMCAxNTowNDozMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RwbHVnaW4uYzogRml4IG9sZC1zdHlsZSBzdGF0aWMgcGx1Z2lucyB2aWEgR1NUX1BMVUdJTl9ERUZJTkVfU1RBVElDIGFnYWluLCB3aGljaCBJIGJyb2tlIHR3byBjb21taXRzIGFnbyB3aGVuIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChfZ3N0X3BsdWdpbl9pbml0aWFsaXplKToKCSAgRml4IG9sZC1zdHlsZSBzdGF0aWMgcGx1Z2lucyB2aWEgR1NUX1BMVUdJTl9ERUZJTkVfU1RBVElDCgkgIGFnYWluLCB3aGljaCBJIGJyb2tlIHR3byBjb21taXRzIGFnbyB3aGVuIGNoYW5naW5nIHRoZSBBUEkKCSAgb2YgZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMoKTogdGhlIGdfbGlzdF9mb3JlYWNoKCkgaW4KCSAgX2dzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljIHN0aWxsIGFzc3VtZWQgdGhlIG9sZCBmdW5jdGlvbgoJICBzaWduYXR1cmUgYW5kIHdvdWxkIHRoZXJlZm9yZSBmYWlsIChyZS1maXhlcyAjNTEwMTg3KS4KCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChfbnVtX3N0YXRpY19wbHVnaW5zKSwgKF9zdGF0aWNfcGx1Z2lucyksCgkgIChfZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMpLCAoZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMpOgoJICBSZXZlcnQgdGhlICh0ZWNobmljYWxseSBjb3JyZWN0KSBjaGFuZ2UgdG8gY2FsbCBnX3RocmVhZF9pbml0KCkgZnJvbQoJICB0aGUgcHJlLW1haW4oKSBjb25zdHJ1Y3Rvci4gVGhpcyB3aWxsIGJyZWFrIHByb2dyYW1zIHdoaWNoIGNhbGwKCSAgZ190aHJlYWRfaW5pdCgpIHdpdGhvdXQgYW4gaWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQoKSkgZ3VhcmQgaW4gdGhlaXIKCSAgbWFpbiBmdW5jdGlvbi4gV2UgY291bGQganVzdCBibGFtZSBpdCBvbiBHTGliIG9yIHRoZSBhcHBsaWNhdGlvbiwgYnV0CgkgIGl0J3MgcHJvYmFibHkgYmVzdCB0byBqdXN0IGF2b2lkIHRoaXMgYWx0b2dldGhlciBhbmQgc2ltcGx5IG5vdCB1c2UKCSAgYW55IEdMaWIgZnVuY3Rpb25zIGhlcmUgYW5kIHVzZSBwbGFpbiBvbGQgbWFsbG9jKCkgd2l0aCBhIHNpbXBsZQoJICBhcnJheSB0byBzdG9yZSB0aGUgcGx1Z2lucyB0byByZWdpc3RlciBsYXRlciB3aGVuIGdzdF9pbml0KCkgaXMKCSAgZmluYWxseSBjYWxsZWQgKHJlLWZpeGVzICM1MTAxODcpLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwbHVnaW4uYzogKEdTVF9HTlVDX0NPTlNUUlVDVE9SX0RFRklORUQpLAoJICAoR1NUX0dOVUNfQ09OU1RSVUNUT1JfREVGSU5FRCksIChwbHVnaW5faW5pdF9jb3VudGVyKSwKCSAgKHBsdWdpbjFfaW5pdCksIChwbHVnaW4yX2luaXQpLCAocGx1Z2luM19pbml0KSwgKEdTVF9TVEFSVF9URVNUKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9wbHVnaW5fc3VpdGUpOgoJICBEdW1iIHVuaXQgdGVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBHU1RfUExVR0lOX0RFRklORV9TVEFUSUMgc3RpbGwKCSAgd29ya3MuCgoyMDA4LTAxLTE3IDIyOjIyOjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5oOiBSZW1vdmUgZGVwcmVjYXRpb24gZ3VhcmRzIGFyb3VuZCBHU1RfUExVR0lOX0RFRklORV9TVEFUSUMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uaDogKEdTVF9QTFVHSU5fREVGSU5FX1NUQVRJQyk6CgkgIFJlbW92ZSBkZXByZWNhdGlvbiBndWFyZHMgYXJvdW5kIEdTVF9QTFVHSU5fREVGSU5FX1NUQVRJQy4KCSAgVGhpcyBtYWtlcyBndGstZG9jIGNvbXBsYWluLCBidXQgcmVzdWx0cyBpbiBzbGlnaHRseSBiZXR0ZXIKCSAgY29tcGlsZXIgZXJyb3JzLiBUaGUgb2xkIF9nc3RfcGx1Z2luX3JlZ2lzdGVyX3N0YXRpYygpIGlzCgkgIHN0aWxsIGd1YXJkZWQsIHNvIHRoZXJlJ2xsIGJlIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCB0aGF0CgkgIGluc3RlYWQuIEZpeGVzICM1MTAxODcgdG9vLgoKMjAwOC0wMS0xNyAyMjoxNzoxNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86IENoYW5nZSBBUEkgb2YgZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMoKSB0byBub3QgdGFrZSBhIEdzdFBsdWdpbkRlc2MsIGJ1dCByYXRoZXIganVzdCB0YWtlIGFsbCB0aGUgYXJndW1lbnRzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpOgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKF9nc3RfcGx1Z2luX3JlZ2lzdGVyX3N0YXRpYyksCgkgIChnc3RfcGx1Z2luX3JlZ2lzdGVyX3N0YXRpYyksIChfZ3N0X3BsdWdpbl9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6IChHc3RQbHVnaW5GaWx0ZXIpOgoJICBDaGFuZ2UgQVBJIG9mIGdzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljKCkgdG8gbm90IHRha2UKCSAgYSBHc3RQbHVnaW5EZXNjLCBidXQgcmF0aGVyIGp1c3QgdGFrZSBhbGwgdGhlIGFyZ3VtZW50cwoJICBpbiBhIEdzdFBsdWdpbkRlc2MgZGlyZWN0bHkuIFRoaXMgaXMgbW9yZSBpbnR1aXRpdmUgYW5kCgkgIGF2b2lkcyBjZXJ0YWluIG1pc3Rha2VzIHdoZW4gcG9ydGluZyBjb2RlIGZyb20KCSAgR1NUX1BMVUdJTl9ERUZJTkVfU1RBVElDIHRvIGdzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljKCkuCgkgIEZpeGVzICM1MTAxODcuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBsdWdpbi5jOgoJICBGaXggdXAgZm9yIGNoYW5nZWQgQVBJLgoKMjAwOC0wMS0xNyAxODo1MDozMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBkb2NzL2ZhcS9sZWdhbC54bWw6IFVwZGF0ZSBGQVEsIFRvdGVtIGFjdHVhbGx5IGhhcyBhbiBleGNlcHRpb24gdGhlc2UgZGF5cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9mYXEvbGVnYWwueG1sOgoJICBVcGRhdGUgRkFRLCBUb3RlbSBhY3R1YWxseSBoYXMgYW4gZXhjZXB0aW9uIHRoZXNlIGRheXMuCgoyMDA4LTAxLTE0IDIyOjIwOjQ0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBBZGQgbmV3IEFQSSBkZWNsYXJhdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgQVBJIGRlY2xhcmF0aW9ucwoKMjAwOC0wMS0xNCAxMzoxODozNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogU3BlbGxpbmcgZml4ZXMgZm9yIHRoZSBBUEkgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgU3BlbGxpbmcgZml4ZXMgZm9yIHRoZSBBUEkgZG9jcy4KCjIwMDgtMDEtMTQgMTE6NDc6MzIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBBZGQgQVBJIGtleXdvcmQgZm9yIGdzdF91dGlsX2dldF90aW1lc3RhbXAsIGFuZCByZW1vdmUgdGhlIHRhZyBmb3IgR1NUX0dFVF9USU1FU1RNQVAgd2hpY2ggZGlkbid0IHN1cnZpdmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBBZGQgQVBJIGtleXdvcmQgZm9yIGdzdF91dGlsX2dldF90aW1lc3RhbXAsIGFuZCByZW1vdmUgdGhlIHRhZyBmb3IgR1NUX0dFVF9USU1FU1RNQVAgd2hpY2ggZGlkbid0IHN1cnZpdmUuCgoyMDA4LTAxLTE0IDExOjQwOjU1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogRml4IGxvbmcgcHJvcGVydHkgZGVzY3JpcHRpb24gZm9yIFFvUy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIEZpeCBsb25nIHByb3BlcnR5IGRlc2NyaXB0aW9uIGZvciBRb1MuCgoyMDA4LTAxLTEyIDIwOjIyOjMwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3QuYzogX2dzdF90cmFjZV9vbiBpcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IGdzdHRyYWNlLmgsIG5vIG5lZWQgdG8gZGVjbGFyZSBpdCBvdXJzZWx2ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgX2dzdF90cmFjZV9vbiBpcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IGdzdHRyYWNlLmgsIG5vIG5lZWQgdG8gZGVjbGFyZQoJICBpdCBvdXJzZWx2ZXMuCgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkICdidWZmZXJzJywgJ2NoZWNrX2NvbmQnIGFuZCAnY2hlY2tfbXV0ZXgnIGZyb20gbGliZ3N0Y2hlY2sKCSAgYW5kIHJlbW92ZSBzdHJhbmdlIHRjYXNlX2FkZF90ZXN0IHdoaWNoIGlzIG91dHB1dHRpbmcgYSB3YXJuaW5nLgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgUHJvcGVybHkgZGVjbGFyZSAnYnVmZmVycycsICdjaGVja19jb25kJywgJ2NoZWNrX211dGV4JyBleHRlcm4KCSAgYW5kIGRlZmluZSB0aGVtIGluIGdzdGNoZWNrLmMgaW5zdGVhZCBvZiBoYXZpbmcgZXZlcnkgLmMgZmlsZSB3aGNpaAoJICBpbmNsdWRlcyBnc3RjaGVjay5oIGJlIGRlZmluaW5nIGl0cyBvd24gY29weSBhbmQgcmVseWluZyBvbiBzeW1ib2wKCSAgaW50ZXJwb3NpbmcgdG8gbWFycnkgdGhlbSBhbGwsIHdoaWNoIGRvZXNuJ3Qgd29yayBvbiBTb2xhcmlzLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIERvbid0IGRlZmluZSAnYnVmZmVycycgbG9jYWxseSwgaXQgY29tZXMgZnJvbSBsaWJnc3RjaGVjay4KCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChzZW5kX2J1ZmZlcik6CgkgIEZpeCB0eXBlIG9mIHZhcmlhYmxlIChHc3RGbG93UmV0dXJuLCBub3QgR3N0U3RhdGVDaGFuZ2VSZXR1cm4pCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBBZGQgYSBidW5jaCBvZiBjYXN0cyB0byBtYWtlIHZhcmlvdXMgY29uc3RhbnRzIGZpdCB0aGUgdHlwZXMKCSAgdGhleSdyZSBiZWluZyBhc3NpZ25lZCB0by4KCjIwMDgtMDEtMTAgMjE6MDY6NTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RjaGlsZHByb3h5LmM6IEltcHJvdmUgZG9jcyBhbmQgYWRkIHNvbWUgaWRlYXMgZm9yIG1ha2luZyB0aGlzIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOgoJICBJbXByb3ZlIGRvY3MgYW5kIGFkZCBzb21lIGlkZWFzIGZvciBtYWtpbmcgdGhpcyBtb3JlIGdlbmVyYWwtcHVycG9zZS4KCjIwMDgtMDEtMTAgMTU6NTU6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0X3ByaXZhdGUuaDogQWRkIEdTVF9DQVRfVFlQRVMsIGZvciBjb25zaXN0ZW5jeSwgYW5kIHNvIHRoYXQgdGhlIG90aGVyIGRlYnVnIGNhdGVnb3JpZXMgZG9uJ3QgbWFrZSBmdW4gb2YgaXQuIFMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6IChHU1RfQ0FUX1RZUEVTKToKCSAgQWRkIEdTVF9DQVRfVFlQRVMsIGZvciBjb25zaXN0ZW5jeSwgYW5kIHNvIHRoYXQgdGhlIG90aGVyCgkgIGRlYnVnIGNhdGVnb3JpZXMgZG9uJ3QgbWFrZSBmdW4gb2YgaXQuIFNwb3R0ZWQgYnkgU2F1ciBvbiBJUkMuCgoyMDA4LTAxLTEwIDEzOjAzOjM1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvcGFyc2UvTWFrZWZpbGUuYW06IE1vdmUgdHlwZXMuaCBmcm9tIEVYVFJBX0RJU1QgdG8gbm9pbnN0X0hFQURFUlMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgTW92ZSB0eXBlcy5oIGZyb20gRVhUUkFfRElTVCB0byBub2luc3RfSEVBREVSUy4KCjIwMDgtMDEtMTAgMTI6MTQ6MDQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGF1dG9nZW4uc2g6IEFkZCAtV25vLXBvcnRhYmlsaXR5IHRvIHRoZSBhdXRvbWFrZSBwYXJhbWV0ZXJzIHRvIHN0b3Agd2FybmluZ3MgYWJvdXQgR05VIG1ha2UgZXh0ZW5zaW9ucyBiZWluZyB1c2VkLiBXZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBhdXRvZ2VuLnNoOgoJICBBZGQgLVduby1wb3J0YWJpbGl0eSB0byB0aGUgYXV0b21ha2UgcGFyYW1ldGVycyB0byBzdG9wIHdhcm5pbmdzCgkgIGFib3V0IEdOVSBtYWtlIGV4dGVuc2lvbnMgYmVpbmcgdXNlZC4gV2UgcmVxdWlyZSBHTlUgbWFrZSBpbiBhbG1vc3QKCSAgZXZlcnkgTWFrZWZpbGUgYW55d2F5LgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgVXNlIEFNX1BST0dfQ0NfQ19PIGFzIGEgY29tcGlsZXIgdGhhdCBhY2NlcHRzIGJvdGggLWMgYW5kIC1vCgkgIGF0IHRoZSBzYW1lIHRpbWUgaXMgcmVxdWlyZWQgZm9yIHBlciB0YXJnZXQgZmxhZ3MuCgoyMDA4LTAxLTA5IDE4OjIzOjM5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMoKSBhbmQgZGVwcmVjYXRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChfZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMpLAoJICAoZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWMpLCAoX2dzdF9wbHVnaW5faW5pdGlhbGl6ZSksCgkgIChnc3RfcGx1Z2luX3JlZ2lzdGVyX2Z1bmMpOgoJICAqIGdzdC9nc3RwbHVnaW4uaDogKEdTVF9QTFVHSU5fREVGSU5FX1NUQVRJQyk6CgkgIEFQSTogYWRkIGdzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljKCkgYW5kIGRlcHJlY2F0ZQoJICBHU1RfUExVR0lOX0RFRklORV9TVEFUSUMsIHNpbmNlIGl0J3Mgbm90IHBvcnRhYmxlCgkgICgjNDk4OTI0KS4KCSAgQWxzbywgaW4gX2dzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljKCksIG1ha2Ugc3VyZSB0byBjYWxsCgkgIGdfdGhyZWFkX2luaXQoKSBiZWZvcmUgY2FsbGluZyBHTGliIGZ1bmN0aW9ucyBzdWNoIGFzCgkgIGdfbGlzdF9hcHBlbmQoKSBpZiB3ZSdyZSBub3QgaW5pdGlhbGlzZWQgeWV0LCBzaW5jZSB0aGF0CgkgIG1heSBsZWFkIHRvIHJhbmRvbSBjcmFzaGVzIHdpdGggb2xkZXIgR1NsaWNlL0dMaWIgdmVyc2lvbnMuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBsdWdpbi5jOgoJICBBZGFwdCB1bml0IHRlc3QgdG8gYWJvdmUgY2hhbmdlcy4KCjIwMDgtMDEtMDkgMTY6MzY6MzQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvOiBZZXQgYW5vdGhlciBncmF0dWl0b3VzIEdTdHJpbmcgbWljcm8tb3B0aW1pc2F0aW9uOiBhZGQgYSAocHJpdmF0ZSkgZnVuY3Rpb24gdGhhdCBzZXJpYWxpc2VzIGEgc3RydWN0dXJlIGFwcGVuZGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6IChTVFJVQ1RVUkVfRVNUSU1BVEVEX1NUUklOR19MRU4pOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc190b19zdHJpbmcpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKEdTVF9BU0NJSV9JU19TVFJJTkcpLAoJICAocHJpdl9nc3Rfc3RydWN0dXJlX2FwcGVuZF90b19nc3RyaW5nKSwgKGdzdF9zdHJ1Y3R1cmVfdG9fc3RyaW5nKToKCSAgWWV0IGFub3RoZXIgZ3JhdHVpdG91cyBHU3RyaW5nIG1pY3JvLW9wdGltaXNhdGlvbjogYWRkIGEgKHByaXZhdGUpCgkgIGZ1bmN0aW9uIHRoYXQgc2VyaWFsaXNlcyBhIHN0cnVjdHVyZSBhcHBlbmRpbmcgdG8gYW4gZXhpc3RpbmcKCSAgR1N0cmluZywgc28gdGhhdCB3aGVuIHdlIHNlcmlhbGlzZSBjYXBzIHdlIGRvbid0IG5lZWQgdG8gYWxsb2MrZnJlZQoJICBhIHRocm93YXdheSBHU3RyaW5nIGZvciBlYWNoIHN0cnVjdHVyZSAoZWFjaCBvZiB3aGljaCBhbHNvIGVudGFpbGluZwoJICBtdWx0aXBsZSByZWFsbG9jcyBvbiB0aGUgd2F5KTsgYWxzbyB1c2UgZ19zdHJpbmdfc2l6ZWRfbmV3KCkgaW4KCSAgdmFyaW91cyBwbGFjZXMgd2l0aCBhbiBhcHByb3hpbWF0ZSBzdHJpbmcgbGVuZ3RoIHRvIGF2b2lkIHJlYWxsb2NzCgkgIHdpdGhpbiBHU3RyaW5nLiBTZWUgIzUwMDE0My4KCjIwMDgtMDEtMDkgMTU6MDU6MjEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IEFsd2F5cyBjaGVjayBVVEYtOCBjb25mb3JtYW5jZSBvZiBzdHJ1Y3R1cmUgc3RyaW5ncyBhbmQgbm90IG9ubHkgaWYgdGhlIGRlYnVnZ2luZyBzeXN0ZW0gaXMgZW5hYmwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9pZF9zZXRfdmFsdWUpOgoJICBBbHdheXMgY2hlY2sgVVRGLTggY29uZm9ybWFuY2Ugb2Ygc3RydWN0dXJlIHN0cmluZ3MgYW5kIG5vdCBvbmx5CgkgIGlmIHRoZSBkZWJ1Z2dpbmcgc3lzdGVtIGlzIGVuYWJsZWQ7IHJlYXNvbmluZzogdGhlIGJlaGF2aW91ciBvZgoJICB0aGUgYWN0dWFsIGNvZGUgc2hvdWxkbid0IHJlYWxseSBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCgkgIGRlYnVnZ2luZyBzeXN0ZW0gaXMgZW5hYmxlZCBvciBub3QgKCM1MDgyOTEpLgoKMjAwOC0wMS0wOSAxMzo0ODowMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgTWFrZWZpbGUuYW06IFJlbW92ZSBvbGQgY292ZXJhZ2UgdGFyZ2V0IGluIGZhdm91ciBvZiAibWFrZSBsY292Ii4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgIFJlbW92ZSBvbGQgY292ZXJhZ2UgdGFyZ2V0IGluIGZhdm91ciBvZiAibWFrZSBsY292Ii4KCjIwMDgtMDEtMDkgMTI6MjU6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogVGhlIHN0YXJ0IHNlZ21lbnQgZm9yIHJldmVyc2UgcGxheWJhY2sgZ29lcyBmcm9tIHN0YXJ0IHRvIGxhc3Rfc3RvcC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19sb29wKToKCSAgVGhlIHN0YXJ0IHNlZ21lbnQgZm9yIHJldmVyc2UgcGxheWJhY2sgZ29lcyBmcm9tIHN0YXJ0IHRvIGxhc3Rfc3RvcC4KCjIwMDgtMDEtMDkgMTI6MjI6MjIgKzAwMDAgIFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgoKCSAgZ3N0L2dzdGNsb2NrLmg6IENhc3QgdGhlIHJlc3VsdHMgZnJvbSB0aGUgdGltZXZhbC9zcGVjX3RvX3RpbWUgbWFjcm9zIHRvIHdoYXQgdGhlIGRvY3Mgc2F5IGl0IGNhc3RzIHRvLCBhIEdzdENsb2NrVGltLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXhpcyBjb20+CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgIENhc3QgdGhlIHJlc3VsdHMgZnJvbSB0aGUgdGltZXZhbC9zcGVjX3RvX3RpbWUgbWFjcm9zIHRvIHdoYXQgdGhlCgkgIGRvY3Mgc2F5IGl0IGNhc3RzIHRvLCBhIEdzdENsb2NrVGltZS4gZml4ZXMgIzUwODE3NS4KCjIwMDgtMDEtMDkgMTI6MTk6MzEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmM6IFVwZGF0ZSBzb21lIGNvbW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6CgkgIFVwZGF0ZSBzb21lIGNvbW1lbnRzLgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyk6CgkgIEltcHJvdmUgcHJpbnRpbmcgb2YgZmxhZ3MuCgoyMDA4LTAxLTA4IDIxOjEzOjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IFByaW50IGVsZW1lbnQgbmFtZSB3aXRoIGdfd2FybmluZygpIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggdGhlIHVuaXQgc2l6ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fdHJhbnNmb3JtX3NpemUpOgoJICBQcmludCBlbGVtZW50IG5hbWUgd2l0aCBnX3dhcm5pbmcoKSBpZiB0aGVyZSdzIGEgcHJvYmxlbQoJICB3aXRoIHRoZSB1bml0IHNpemUuCgoyMDA4LTAxLTA4IDAyOjA3OjM4ICswMDAwICBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvOiBGaXggZW1wdHkgcHJvdG90eXBlcy4gIEZpeGVzIGJ1ZyAjNTA3OTU3LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBnbWFpbC5jb20+CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sc291cmNlLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZS5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0bGZvY29udHJvbHNvdXJjZS5oOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuaDoKCSAgRml4IGVtcHR5IHByb3RvdHlwZXMuICBGaXhlcyBidWcgIzUwNzk1Ny4KCjIwMDgtMDEtMDggMDI6MDE6MzQgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZG9jcy9mYXEvZGVwZW5kZW5jaWVzLnhtbDogRml4IHR5cG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2RlcGVuZGVuY2llcy54bWw6IEZpeCB0eXBvLgoKMjAwOC0wMS0wNyAxMToyMzowMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBEb24ndCB1cGRhdGUgdGhlIGxhc3Rfc3RvcCBwb3NpdGlvbiBpbiBkb19zZWVrLCB0aGF0J3MgdGhlIHBvc2l0aW9uIHdlIGRpZCBhIHNlZWsgdG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZG9fc2VlayksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCk6CgkgIERvbid0IHVwZGF0ZSB0aGUgbGFzdF9zdG9wIHBvc2l0aW9uIGluIGRvX3NlZWssIHRoYXQncyB0aGUgcG9zaXRpb24gd2UKCSAgZGlkIGEgc2VlayB0by4KCSAgUmVhZCBiYWNrd2FyZHMgd2hlbiB3ZSBoYXZlIGEgbmVnYXRpdmUgcmF0ZS4KCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9maWxlc3JjLmM6IChldmVudF9mdW5jKSwgKHdhaXRfZW9zKSwKCSAgKHNldHVwX2ZpbGVzcmMpLCAoY2xlYW51cF9maWxlc3JjKSwgKEdTVF9TVEFSVF9URVNUKSwKCSAgKGZpbGVzcmNfc3VpdGUpOgoJICBBZGQgY2hlY2sgZm9yIHJldmVyc2UgcmVhZGluZy4KCjIwMDgtMDEtMDcgMDk6NDc6NDkgKzAwMDAgIEFsZXhpcyBCYWxsaWVyIDxhYmFsbGllckBnZW50b28ub3JnPgoKCSAgdGVzdHMvY2hlY2svOiBEZWNpZGUgd2hpY2ggaGVhZGVyIHRvIGluY2x1ZGUgYmFzZWQgb24gdGhlIHVzZXJsYW5kIEFCSSB0YXJnZXQgYW5kIG5vdCB0aGUga2VybmVsL2NwdS4gRml4IHVwIHN0cnVjdHVyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogQWxleGlzIEJhbGxpZXIgPGFiYWxsaWVyIGF0IGdlbnRvbyBvcmc+CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGFiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfcHBjNjQuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2xpYnNhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9wcGM2NC5oOgoJICBEZWNpZGUgd2hpY2ggaGVhZGVyIHRvIGluY2x1ZGUgYmFzZWQgb24gdGhlIHVzZXJsYW5kIEFCSSB0YXJnZXQKCSAgYW5kIG5vdCB0aGUga2VybmVsL2NwdS4gRml4IHVwIHN0cnVjdHVyZSBzaXplcyBvZiBwcGM2NCBoZWFkZXIKCSAgZm9yIDY0LWJpdCB1c2VybGFuZCAoIzUwMzU5MCkuICBNaWdodCBuZWVkIHNvbWV0aGluZyBzaW1pbGFyIGZvcgoJICB4ODYgdG9vLgoKMjAwOC0wMS0wNSAxMzo0NToyMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6IExvZyB0aGUgcmVhc29uIHdoeSBmb3BlbiBmYWlscyBpbiBhZGRpdGlvbiB0byB0aGUgZmFjdCB0aGF0IGl0IGZhaWxlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGRlYnVndXRpbHMuYzogKF9nc3RfZGVidWdfYmluX3RvX2RvdF9maWxlKToKCSAgTG9nIHRoZSByZWFzb24gd2h5IGZvcGVuIGZhaWxzIGluIGFkZGl0aW9uIHRvIHRoZSBmYWN0IHRoYXQgaXQgZmFpbGVkLgoKMjAwOC0wMS0wNCAxODo0NDowMyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L3BhcnNlL3BhcnNlLmw6IFVzZSAiJW9wdGlvbiBuZXZlci1pbnRlcmFjdGl2ZSIgdG8gcHJldmVudCB1c2VsZXNzIGNhbGxzIHRvIGlzYXR0eSgpIG9uIGV2ZXJ5IGlucHV0IHdoZW4gcGFyc2luZy4gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9wYXJzZS5sOgoJICBVc2UgIiVvcHRpb24gbmV2ZXItaW50ZXJhY3RpdmUiIHRvIHByZXZlbnQgdXNlbGVzcyBjYWxscyB0byBpc2F0dHkoKQoJICBvbiBldmVyeSBpbnB1dCB3aGVuIHBhcnNpbmcuIEFsc28gdXNlICIlb3B0aW9uIG5vaW5wdXQiIHRvIG5vdCBkZWZpbmUKCSAgdGhlIHN0YXRpYyBpbnB1dC95eWlucHV0IGZ1bmN0aW9ucyB3aGljaCB3ZSBkb24ndCB1c2UgYW55d2F5LiBUaGlzCgkgIHJlbW92ZXMgYSBjb21waWxlciB3YXJuaW5nIHdpdGggZ2NjIDQuMyBhbmQgc2F2ZXMgc29tZSBieXRlcyBpbiB0aGUKCSAgbGlicmFyeS4KCSAgKiBnc3QvcGFyc2UvbGV4Ll9nc3RfcGFyc2VfeXkucHJlLmM6CgkgIFJlZ2VuZXJhdGVkIGZvciB0aGUgYWJvdmUgY2hhbmdlLgoKMjAwOC0wMS0wNCAxODozOToxNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogRG9uJ3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZml4YXRlIGFuZCBlbXB0eSBsaXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChmaXhhdGVfdmFsdWUpOgoJICBEb24ndCBjcmFzaCB3aGVuIHRyeWluZyB0byBmaXhhdGUgYW5kIGVtcHR5IGxpc3QuCgkgIEZpeGVzICM1MDY2NDMuCgoyMDA4LTAxLTAzIDA5OjQzOjQxICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IENsYXJpZnkgdGhlIGNvbW1lbnRzIHRvIG1ha2UgdGhlIHVzYWdlIG9mIHRoaXMgc2NyaXB0IGFuZCB3aGF0IGl0IGRvZXMgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgQ2xhcmlmeSB0aGUgY29tbWVudHMgdG8gbWFrZSB0aGUgdXNhZ2Ugb2YgdGhpcyBzY3JpcHQgYW5kIHdoYXQgaXQKCSAgZG9lcyBlYXNpZXIgdG8gdW5kZXJzdGFuZC4KCjIwMDgtMDEtMDEgMTc6MTA6MzIgKzAwMDAgIFRoaWpzIFZlcm1laXIgPHRoaWpzdmVybWVpckBnbWFpbC5jb20+CgoJICB0b29scy9nc3QtcGxvdC10aW1lbGluZS5weTogQWRkIG1vcmUgb3B0aW9ucyB0byBnc3QtcGxvdC10aW1lbGluZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtcGxvdC10aW1lbGluZS5weToKCSAgQWRkIG1vcmUgb3B0aW9ucyB0byBnc3QtcGxvdC10aW1lbGluZQoKMjAwNy0xMi0zMSAxOToxMTozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtc3luY2hyb25pc2F0aW9uLnR4dDogU29tZSBtb3JlIGluZm8gb24gaG93IHRoZSBzdHJlYW1fdGltZSBpbiBHc3RCYXNlU2luayBpcyBkb25lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN5bmNocm9uaXNhdGlvbi50eHQ6CgkgIFNvbWUgbW9yZSBpbmZvIG9uIGhvdyB0aGUgc3RyZWFtX3RpbWUgaW4gR3N0QmFzZVNpbmsgaXMgZG9uZS4KCjIwMDctMTItMzAgMTM6MzY6MzAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiByZW1vdmUgYm9ndXMgY2hhbmdlbG9nIGVudHJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBDaGFuZ2VMb2cgc3VyZ2VyeTogcmVtb3ZlIGJvZ3VzIGNoYW5nZWxvZyBlbnRyeQoKMjAwNy0xMi0zMCAxMzozMToxNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogUHV0IGJhY2sgdGhlIHRjYXNlX3NldF90aW1lb3V0KCksIGFwcGFyZW50bHkgaXQncyBuZWVkZWQgYWZ0ZXIgYWxsOyBmaXggaXQgdXAgaW4gYSB3YXkgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChnc3Rfc2lua3Nfc3VpdGUpOgoJICBQdXQgYmFjayB0aGUgdGNhc2Vfc2V0X3RpbWVvdXQoKSwgYXBwYXJlbnRseSBpdCdzIG5lZWRlZCBhZnRlcgoJICBhbGw7IGZpeCBpdCB1cCBpbiBhIHdheSB0aGF0IG1ha2VzIHRoaW5ncyB3b3JrIHdpdGggdmFsZ3JpbmQgdG9vLgoKMjAwNy0xMi0zMCAxMjoyMjo0OSArMDAwMCAgVGhpanMgVmVybWVpciA8dGhpanN2ZXJtZWlyQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6IGFkZCB3YXJuaW5nIHdoZW4gZmFpbGVkIHRvIG9wZW4gZmlsZSBmb3Igd3JpdGluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICBhZGQgd2FybmluZyB3aGVuIGZhaWxlZCB0byBvcGVuIGZpbGUgZm9yIHdyaXRpbmcKCjIwMDctMTItMjggMTQ6MzQ6MzQgKzAwMDAgIExhdXJlbnQgR2xheWFsIDxzcGdsZWdsZUB5YWhvby5mcj4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBPcHRpbWlzYXRpb246IGJhaWwgb3V0IG9mIHRoZSBsb29wIGFzIGVhcmx5IGFzIHBvc3NpYmxlICgjNTAwMTQzKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBMYXVyZW50IEdsYXlhbCAgPHNwZ2xlZ2xlIHlhaG9vIGZyPgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2lzX2ZpeGVkKToKCSAgT3B0aW1pc2F0aW9uOiBiYWlsIG91dCBvZiB0aGUgbG9vcCBhcyBlYXJseSBhcyBwb3NzaWJsZSAoIzUwMDE0MykuCgoyMDA3LTEyLTI4IDE0OjE1OjUzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogQnVuY2ggb2YgZ3JhdHVpdG91cyBuYW5vLW9wdGltaXNhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc190b19zdHJpbmcpOgoJICAqIGdzdC9nc3RpbmZvLmM6IChnc3RfZGVidWdfY29uc3RydWN0X3Rlcm1fY29sb3IpOgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoZ3N0X3BhcnNlX2xhdW5jaHYpOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3V0aWxfZHVtcF9tZW0pOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX3NlcmlhbGl6ZV9hbnlfbGlzdCksCgkgIChnc3RfdmFsdWVfdHJhbnNmb3JtX2FueV9saXN0X3N0cmluZyk6CgkgIEJ1bmNoIG9mIGdyYXR1aXRvdXMgbmFuby1vcHRpbWlzYXRpb25zLgoKMjAwNy0xMi0yOCAxMzo1NzowNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogRml4IGxlYWsgaW4gdW5pdCB0ZXN0IChidXMgc3luYyBoYW5kbGVyIG11c3QgdW5yZWYgdGhlIG1lc3NhZ2UgaWYgaXQgcmV0dXJucyBHU1RfQlVTX0RSTy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChhc3luY19kb25lX2Z1bmMpLAoJICAoYXN5bmNfZG9uZV9lb3NfZnVuYyk6CgkgIEZpeCBsZWFrIGluIHVuaXQgdGVzdCAoYnVzIHN5bmMgaGFuZGxlciBtdXN0IHVucmVmIHRoZSBtZXNzYWdlCgkgIGlmIGl0IHJldHVybnMgR1NUX0JVU19EUk9QKS4gRG9uJ3QgZmlkZGxlIHdpdGggdGhlIGRlZmF1bHQgdGVzdAoJICB0aW1lb3V0LCB0aGlzIGlzIHNtYWxsZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjb25maWd1cmVkIHZhbHVlCgkgIHZpYSBDS19ERUZBVUxUX1RJTUVPVVQsIGFuZCBhbHNvIGJyZWFrcyB0aGluZ3Mgd2l0aCB2YWxncmluZAoJICBiZWNhdXNlIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIENLX0RFRkFVTFRfVElNRU9VVC4KCjIwMDctMTItMjQgMTk6MjE6MzIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIEFkZCBidWcgdGhhdCB3YXMgZml4ZWQgd2l0aCBsYXN0IGNvbW1pdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEFkZCBidWcgdGhhdCB3YXMgZml4ZWQgd2l0aCBsYXN0IGNvbW1pdC4KCjIwMDctMTItMjQgMTk6MTE6MjkgKzAwMDAgIExhdXJlbnQgR2xheWFsIDxzcGdsZWdsZUB5YWhvby5mcj4KCgkgIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yIHN0ZGlvX2V4dC5oIGZvciB0aGUgZmlsZXNpbmsgY2hhbmdlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIFBhdGNoIGJ5OiBMYXVyZW50IEdsYXlhbCA8c3BnbGVnbGUgYXQgeWFob28gZG90IGZyPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQ2hlY2sgZm9yIHN0ZGlvX2V4dC5oIGZvciB0aGUgZmlsZXNpbmsgY2hhbmdlcy4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChidWZmZXJfbW9kZV9nZXRfdHlwZSksCgkgIChnc3RfZmlsZV9zaW5rX2NsYXNzX2luaXQpLCAoZ3N0X2ZpbGVfc2lua19pbml0KSwKCSAgKGdzdF9maWxlX3NpbmtfZGlzcG9zZSksIChnc3RfZmlsZV9zaW5rX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfZmlsZV9zaW5rX2dldF9wcm9wZXJ0eSksIChnc3RfZmlsZV9zaW5rX29wZW5fZmlsZSksCgkgIChnc3RfZmlsZV9zaW5rX2Nsb3NlX2ZpbGUpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSAgQWRkIHR3byBwcm9wZXJ0aWVzIHRvIGNvbnRyb2wgdGhlIGJ1ZmZlcmluZyBtb2RlIGFuZCBzaXplLgoJICBBUEk6IEdzdEZpbGVTaW5rOjpidWZmZXItbW9kZQoJICBBUEk6IEdzdEZpbGVTaW5rOjpidWZmZXItc2l6ZQoKMjAwNy0xMi0yNCAxNDozNToyNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiBBZGQgc29tZSBtb3JlIGRvY3MgdG8gZXhwbGFpbiB3aHkgYSBGSVhNRSB3YXMgd3JvbmdseSBhZGRlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2lkX3dhaXRfaml0dGVyX3VubG9ja2VkKToKCSAgQWRkIHNvbWUgbW9yZSBkb2NzIHRvIGV4cGxhaW4gd2h5IGEgRklYTUUgd2FzIHdyb25nbHkgYWRkZWQuCgoyMDA3LTEyLTIyIDEyOjQ4OjI2ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0b2JqZWN0LmM6IEZpeCB0eXBvIGluIHRoZSBnc3Rfb2JqZWN0X3tyZWYsdW5yZWZ9IGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuYzoKCSAgRml4IHR5cG8gaW4gdGhlIGdzdF9vYmplY3Rfe3JlZix1bnJlZn0gZG9jdW1lbnRhdGlvbi4KCjIwMDctMTItMjEgMjE6MTc6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IERvbid0IHVzZSBHU1RfUExVR0lOX0RFRklORV9TVEFUSUMsIGl0IGlzIG5vdCBwb3J0YWJsZSBhbmQgaXMgZ29pbmcgdG8gYmUgZGVwcmVjYXRlZCAoc2VlICM0OTg5MjQpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3R5cGVmaW5kaGVscGVyLmM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOgoJICBEb24ndCB1c2UgR1NUX1BMVUdJTl9ERUZJTkVfU1RBVElDLCBpdCBpcyBub3QgcG9ydGFibGUgYW5kIGlzCgkgIGdvaW5nIHRvIGJlIGRlcHJlY2F0ZWQgKHNlZSAjNDk4OTI0KS4KCjIwMDctMTItMjEgMjA6NTg6MjMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dHlwZWZpbmQuYzogTWFrZSBnc3RfdHlwZV9maW5kX3JlZ2lzdGVyIHdvcmsgZm9yIHN0YXRpYyB0eXBlZmluZCBmdW5jdGlvbnMsIGllLiBhbGxvdyBwYXNzaW5nIHBsdWdpbiA9PSBOVUxMICguLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6IChnc3RfdHlwZV9maW5kX3JlZ2lzdGVyKToKCSAgTWFrZSBnc3RfdHlwZV9maW5kX3JlZ2lzdGVyIHdvcmsgZm9yIHN0YXRpYyB0eXBlZmluZCBmdW5jdGlvbnMsCgkgIGllLiBhbGxvdyBwYXNzaW5nIHBsdWdpbiA9PSBOVUxMIChwcmVyZXF1aXNpdGUgZm9yICM0OTg5MjQpLgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiAoZ3N0X2VsZW1lbnRfcmVnaXN0ZXIpOgoJICBTbWFsbCBkb2NzIGFkZGl0aW9uLgoKMjAwNy0xMi0yMSAxMzo1NDowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogUmVhbGx5IHVubGluayB0aGUgcGVlciBwYWQgaW5zdGVhZCBvZiBzZXR0aW5nIHRoZSBwZWVyIHBvaW50ZXIgdG8gTlVMTCB3aGVuIHdlIGRpc3Bvc2UgdGhlIHBhZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9kaXNwb3NlKToKCSAgUmVhbGx5IHVubGluayB0aGUgcGVlciBwYWQgaW5zdGVhZCBvZiBzZXR0aW5nIHRoZSBwZWVyIHBvaW50ZXIgdG8gTlVMTAoJICB3aGVuIHdlIGRpc3Bvc2UgdGhlIHBhZC4KCSAgVGhpcyBjb3JyZWN0bHkgY2FsbHMgdGhlIHVubGluayBmdW5jdGlvbnMgYW5kIG1ha2VzIHN1cmUgdGhhdCB0aGUgcGVlcgoJICBkb2VzIG5vdCBoYXZlIGEgaGFuZGxlIHRvIGludmFsaWQgbWVtb3J5LiBTZWUgIzUwNDY3MS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfcGFkX3N1aXRlKToKCSAgQWRkIHRlc3RzdWl0ZSBmb3IgYWJvdmUgY2FzZS4KCjIwMDctMTItMjAgMDk6MjA6MjcgKzAwMDAgIFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDogRml4IGRldGVjdGlvbiBvZiB0aGUgY2hlY2sgdmVyc2lvbiB3ZSdyZSBjb21waWxpbmcgYWdhaW5zdCAod291bGQgb3RoZXJ3aXNlIGJyZWFrIGlmIGNoZWNrLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXhpcyBjb20+CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgRml4IGRldGVjdGlvbiBvZiB0aGUgY2hlY2sgdmVyc2lvbiB3ZSdyZSBjb21waWxpbmcgYWdhaW5zdCAod291bGQKCSAgb3RoZXJ3aXNlIGJyZWFrIGlmIGNoZWNrIGdvZXMgdjAuMTAuMCk7IGNvcnJlY3RseSByZXBvcnQgdGhlCgkgIG5hbWUgb2YgdGhlIGZhaWxlZCB0ZXN0IGFnYWluIGluIGNhc2Ugb2YgZmFpbHVyZSwgaW5zdGVhZCBvZgoJICBqdXN0ICd0ZicgKGZpeGVzICM1MDQ0OTkpLgoKMjAwNy0xMi0xOSAxNzo0OTozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBBbGxvdyBzZW5kaW5nIEVPUyB0byB0aGUgc291cmNlIHRvIG1ha2UgaXQgc2VuZCBvdXQgYW4gRU9TIGV2ZW50IGZyb20gdGhlIHN0cmVhbWluZyB0aHJlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSksIChnc3RfYmFzZV9zcmNfcGFkX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCksIChnc3RfYmFzZV9zcmNfc2V0X2ZsdXNoaW5nKSwKCSAgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBBbGxvdyBzZW5kaW5nIEVPUyB0byB0aGUgc291cmNlIHRvIG1ha2UgaXQgc2VuZCBvdXQgYW4gRU9TIGV2ZW50IGZyb20KCSAgdGhlIHN0cmVhbWluZyB0aHJlYWQuCgkgIFVwZGF0ZSBkb2NzIGFuZCBkZXByZWNhdGUgdGhlIG9sZCBOVUxML1JFQURZIHNodXRkb3duIG1ldGhvZC4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL2Jhc2VzcmMuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9iYXNlc3JjX3N1aXRlKToKCSAgQWRkIHVuaXQgdGVzdCBmb3IgY29udHJvbGxlZCBzaHV0ZG93bi4KCjIwMDctMTItMTkgMTI6NDg6MTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXN5bmNocm9uaXNhdGlvbi50eHQ6IFNtYWxsIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3luY2hyb25pc2F0aW9uLnR4dDoKCSAgU21hbGwgdXBkYXRlcy4KCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc2V0X3NlZWspLAoJICAoZ3N0X3NlZ21lbnRfc2V0X25ld3NlZ21lbnRfZnVsbCksIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSksCgkgIChnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUpOgoJICBUaGUgc2VlayBmb3JtYXQgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBzZWdtZW50IGZvcm1hdCB3aGVuIHRoZSBzdGFydAoJICBhbmQgc3RvcCB2YWx1ZXMgYXJlIG5vdCB0byBiZSB1cGRhdGVkLCB3aGVuIHdlIG9ubHkgZG8gYSByYXRlIGNoYW5nZSBmb3IKCSAgZXhhbXBsZS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3NlZ21lbnRfc3VpdGUpOgoJICBBZGQgYSB0ZXN0Y2FzZSBmb3IgdGhlIHJhdGUtb25seSBzZWVrcywgY2hlY2tpbmcgdGhhdCB0aGUgZm9ybWF0IGlzCgkgIGNvcnJlY3RseSBpZ25vcmVkIHdoZW4gc3RhcnQgYW5kIHN0b3AgYXJlIG5vdCB1cGRhdGVkLgoKMjAwNy0xMi0xOCAxMzozODozMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSogQ2hhbmdlTG9nOgoJICBDaGFuZ2VMb2cgc3VyZ2VyeSwgZ3N0ZW51bXR5cGVzLmMgY2hhbmdlcyB3ZXJlIG5vdCBjb21taXR0ZWQgYmVjYXVzZSB0aGVyZSB3ZXJlIG5vbmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogQ2hhbmdlTG9nIHN1cmdlcnksIGdzdGVudW10eXBlcy5jIGNoYW5nZXMgd2VyZSBub3QgY29tbWl0dGVkIGJlY2F1c2UgdGhlcmUgd2VyZSBub25lCgoyMDA3LTEyLTE4IDEzOjE4OjM1ICswMDAwICBNYXR0aGlhcyBCb2x0ZSA8cGhvdG9uQG1haWwudXBiLmRlPgoKCSAgd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOiBTb21lIGluZGVudGlvbiBmaXhlcyBieSBnc3QtaW5kZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmM6IChyZWdpc3Rlcl9nc3RfYnVmZmVyX2ZsYWcpLAoJICAocmVnaXN0ZXJfZ3N0X2J1ZmZlcl9jb3B5X2ZsYWdzKSwgKHJlZ2lzdGVyX2dzdF9jbG9ja19mbGFncyksCgkgIChyZWdpc3Rlcl9nc3RfZGVidWdfZ3JhcGhfZGV0YWlscyksCgkgIChyZWdpc3Rlcl9nc3Rfc3RhdGVfY2hhbmdlX3JldHVybiksIChyZWdpc3Rlcl9nc3Rfc3RhdGVfY2hhbmdlKSwKCSAgKHJlZ2lzdGVyX2dzdF9lbGVtZW50X2ZsYWdzKSwgKHJlZ2lzdGVyX2dzdF9jb3JlX2Vycm9yKSwKCSAgKHJlZ2lzdGVyX2dzdF9saWJyYXJ5X2Vycm9yKSwgKHJlZ2lzdGVyX2dzdF9yZXNvdXJjZV9lcnJvciksCgkgIChyZWdpc3Rlcl9nc3Rfc3RyZWFtX2Vycm9yKSwgKHJlZ2lzdGVyX2dzdF9ldmVudF90eXBlX2ZsYWdzKSwKCSAgKHJlZ2lzdGVyX2dzdF9ldmVudF90eXBlKSwgKHJlZ2lzdGVyX2dzdF9pbmRleF9lbnRyeV90eXBlKSwKCSAgKHJlZ2lzdGVyX2dzdF9hc3NvY19mbGFncyksIChyZWdpc3Rlcl9nc3RfbWVzc2FnZV90eXBlKSwKCSAgKHJlZ2lzdGVyX2dzdF9taW5pX29iamVjdF9mbGFncyksIChyZWdpc3Rlcl9nc3RfcGFkX2xpbmtfcmV0dXJuKSwKCSAgKHJlZ2lzdGVyX2dzdF9mbG93X3JldHVybiksIChyZWdpc3Rlcl9nc3RfcGFkX3RlbXBsYXRlX2ZsYWdzKSwKCSAgKHJlZ2lzdGVyX2dzdF9waXBlbGluZV9mbGFncyksIChyZWdpc3Rlcl9nc3RfcGx1Z2luX2Vycm9yKSwKCSAgKHJlZ2lzdGVyX2dzdF90YWdfbWVyZ2VfbW9kZSksIChyZWdpc3Rlcl9nc3RfYWxsb2NfdHJhY2VfZmxhZ3MpLAoJICAocmVnaXN0ZXJfZ3N0X3R5cGVfZmluZF9wcm9iYWJpbGl0eSksIChyZWdpc3Rlcl9nc3RfcGFyc2VfZXJyb3IpOgoJICBTb21lIGluZGVudGlvbiBmaXhlcyBieSBnc3QtaW5kZW50LgoJICBQYXRjaCBieTogTWF0dGhpYXMgQm9sdGUgPHBob3RvbiBhdCBtYWlsIGRvdCB1cGIgZG90IGRlPgoJICAqIHdpbjMyL3ZzOC9ncmFtbWFyLnZjcHJvajoKCSAgKiB3aW4zMi92czgvbGliZ3N0Y29udHJvbGxlci52Y3Byb2o6CgkgICogd2luMzIvdnM4L2xpYmdzdHJlYW1lci52Y3Byb2o6CgkgIEZpeCBjb21waWxhdGlvbiB3aXRoIFZTOCBhbmQgaW5jbHVkZSBzb21lIG1pc3NpbmcgZmlsZXMuCgoyMDA3LTEyLTE4IDEyOjAzOjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHRhZ2xpc3QuYzogU21hbGwgZG9jcyBhZGRpdGlvbjogbWVudGlvbiB0aGF0IHRoZSBzdHJpbmdzIHJldHVybmVkIGJ5IGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKigpIGFyZSBpbiBVVEYtOCBlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgIFNtYWxsIGRvY3MgYWRkaXRpb246IG1lbnRpb24gdGhhdCB0aGUgc3RyaW5ncyByZXR1cm5lZCBieQoJICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyooKSBhcmUgaW4gVVRGLTggZW5jb2RpbmcuCgoyMDA3LTEyLTE3IDE5OjU5OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTWFrZWZpbGUuYW06IFRoZSBjaGVjay1leHBvcnRzIHN0dWZmIG1vdmVkIHRvIGNvbW1vbi93aW4zMi5tYWssIHNvIGluY2x1ZGUgdGhhdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgIFRoZSBjaGVjay1leHBvcnRzIHN0dWZmIG1vdmVkIHRvIGNvbW1vbi93aW4zMi5tYWssIHNvIGluY2x1ZGUgdGhhdC4KCjIwMDctMTItMTcgMTY6Mzg6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogTWFrZSBfd2FpdF9wbGF5aW5nKCkgbm90IGNoZWNrIGFueSB2YXJpYWJsZXMgc28gdGhhdCB3ZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gc3ViY2wuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfd2FpdF9wbGF5aW5nKSwKCSAgKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZV9zcmNfc2V0X3BsYXlpbmcpLCAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIE1ha2UgX3dhaXRfcGxheWluZygpIG5vdCBjaGVjayBhbnkgdmFyaWFibGVzIHNvIHRoYXQgd2UgY2FuIGNhbGwgdGhpcwoJICBmdW5jdGlvbiBmcm9tIHN1YmNsYXNzZXMuIE1vdmUgdGhlIGNoZWNrcyBlbHNld2hlcmUgc2ltaWxhciB0bwoJICBfd2FpdF9wcmVyb2xsKCkgaW4gYmFzZXNpbmsuCgkgIEFkZCBzb21lIGRlYnVnZ2luZy4KCSAgT25seSBzaWduYWwgdGhlIExJVkUgY29uZCB3aGVuIHdlIGFyZSBnb2luZyBiYWNrIHRvIFBMQVlJTkcuCgoyMDA3LTEyLTE2IDE4OjI5OjI1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IFVzZSBnX3JlbW92ZSgpIGFuZCBnX3JlbmFtZSgpLiBDaGVjayByZXN1bHQgb2YgZ19yZW5hbWUoKSwgYW5kIGRvbid0IGxlYWsgdGhlIG9wZW4gZmlsZSBkZXNjLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZV9jYWNoZSk6CgkgIFVzZSBnX3JlbW92ZSgpIGFuZCBnX3JlbmFtZSgpLiBDaGVjayByZXN1bHQgb2YgZ19yZW5hbWUoKSwgYW5kCgkgIGRvbid0IGxlYWsgdGhlIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGlmIHdlIGVycm9yIG91dCB3aGVuIHdyaXRpbmcuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChsb2FkX3BsdWdpbiksIChnc3RfcmVnaXN0cnlfeG1sX3dyaXRlX2NhY2hlKToKCSAgTXVzdCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGNsb3NlKCkgYWZ0ZXIgd3JpdGluZyBvdXQgdGhlIG5ldwoJICByZWdpc3RyeSBmaWxlLiAgU29tZXRpbWVzIHdyaXRlIHByb2JsZW1zIHN1Y2ggYXMgb3V0LW9mLWRpc2tzcGFjZQoJICBhcmUgb25seSByZXBvcnRlZCB3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZCBhbmQgbm90IGFscmVhZHkgZHVyaW5nCgkgIHRoZSB3cml0ZS4gIFRoaXMgbWF5IGhhdmUgY2F1c2VkIHBhcnRpYWwvYnJva2VuIHJlZ2lzdHJ5IGZpbGVzIGluCgkgIHNvbWUgcmFyZSBjaXJjdW1zdGFuY2VzLiBTaG91bGQgZml4ICM1MDM2NzUuCgoyMDA3LTEyLTE2IDE3OjM3OjExICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZG9jcy86IElnbm9yZSBmaWxlcyBnZW5lcmF0ZWQgYnkgbmV3IGNvbW1vbi8qIG1vZGlmaWNhdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2xpYnMvLmN2c2lnbm9yZToKCSAgKiBkb2NzL3BsdWdpbnMvLmN2c2lnbm9yZToKCSAgSWdub3JlIGZpbGVzIGdlbmVyYXRlZCBieSBuZXcgY29tbW9uLyogbW9kaWZpY2F0aW9ucwoKMjAwNy0xMi0xNSAxNToxOTozMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOiBZZXMsIHlvdSBjYW4gYWxzbyBoYXZlIGEgPFRBQj4gaWYgeW91IHdhbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgWWVzLCB5b3UgY2FuIGFsc28gaGF2ZSBhIDxUQUI+IGlmIHlvdSB3YW50LgoKMjAwNy0xMi0xNSAxNDo1ODo1OSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOiBBZGQgbmV3IGJhc2V0cmFuc2Zvcm0gQVBJIHRvIHdpbiBleHBvcnQgZmlsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBBZGQgbmV3IGJhc2V0cmFuc2Zvcm0gQVBJIHRvIHdpbiBleHBvcnQgZmlsZS4KCjIwMDctMTItMTUgMTQ6NDI6MjUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogQWRqdXN0IHRoZSB0ZXN0IHRvIHRoZSByZWZjb3VudCBjaGFuZ2UgdHdvIGRheXMgYWdvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgIEFkanVzdCB0aGUgdGVzdCB0byB0aGUgcmVmY291bnQgY2hhbmdlIHR3byBkYXlzIGFnby4KCjIwMDctMTItMTQgMjE6MzY6NTAgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZG9jcy9mYXEvZ2V0dGluZy54bWw6IEZpeCB0eXBvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nZXR0aW5nLnhtbDogRml4IHR5cG8uCgoyMDA3LTEyLTE0IDE2OjUyOjM4ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBBUEk6IEFkZCBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2dhcF9hd2FyZSgpIHRvIGNvbnRyb2wgd2hldGhlciB0aGUgZWxlbWVudCBjb3JyZWN0bHkgaGFuZGxlcyBHU1RfQlVGRkVSX0ZMQUdfR0FQIG9yIHMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9nYXBfYXdhcmUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBBUEk6IEFkZCBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2dhcF9hd2FyZSgpIHRvIGNvbnRyb2wgd2hldGhlcgoJICB0aGUgZWxlbWVudCBjb3JyZWN0bHkgaGFuZGxlcyBHU1RfQlVGRkVSX0ZMQUdfR0FQIG9yIHNob3VsZG4ndAoJICBnZXQgYnVmZmVycyB3aXRoIHRoaXMgZmxhZyBhdCBhbGwuIEZpeGVzICM1MDMyMzEuCgoyMDA3LTEyLTEzIDE2OjQ5OjU0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlLzogUmVwbGFjZSBnc3RfcGFkX2dldF9wYXJlbnQgYnkgR1NUX09CSkVDVF9QQVJFTlQgaW5zaWRlIHN0cmVhbWluZyB0aHJlYWQuIENvcnJlY3QgbG9nIG1lc3NhZ2UgaW4gZ3N0YmEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBSZXBsYWNlIGdzdF9wYWRfZ2V0X3BhcmVudCBieSBHU1RfT0JKRUNUX1BBUkVOVCBpbnNpZGUgc3RyZWFtaW5nCgkgIHRocmVhZC4gQ29ycmVjdCBsb2cgbWVzc2FnZSBpbiBnc3RiYXNlc3JjLmMuCgoyMDA3LTEyLTEzIDEzOjU5OjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEZpeCBwb3NzaWJsZSBjb21waWxlciB3YXJuaW5nICgjNTAzNDE3KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChlbGVtZW50X2ZpbmRfdW5jb25uZWN0ZWRfcGFkKToKCSAgRml4IHBvc3NpYmxlIGNvbXBpbGVyIHdhcm5pbmcgKCM1MDM0MTcpLgoKMjAwNy0xMi0xMyAxMTo0MTowNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RvYmplY3QuYzogRG9uJ3QgdXNlIEdTVF9DQVRfRVZFTlQgaGVyZSBmb3IgbG9nZ2luZywgaXQgbWFrZXMgbm8gc2Vuc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfZGlzcGF0Y2hfcHJvcGVydGllc19jaGFuZ2VkKToKCSAgRG9uJ3QgdXNlIEdTVF9DQVRfRVZFTlQgaGVyZSBmb3IgbG9nZ2luZywgaXQgbWFrZXMgbm8gc2Vuc2UuCgoyMDA3LTEyLTEzIDEwOjMxOjMzICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBBZGQgc3VwcG9ydCBmb3IgR3N0RnJhY3Rpb24gcHJvcGVydGllcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X2VsZW1lbnRfcHJvcGVydGllc19pbmZvKToKCSAgQWRkIHN1cHBvcnQgZm9yIEdzdEZyYWN0aW9uIHByb3BlcnRpZXMuCgoyMDA3LTEyLTEyIDIzOjIwOjAwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTWFrZWZpbGUuYW06IEFkZCBjaGVjay1leHBvcnRzIHRhcmdldCBhbmQgcnVuIGl0IGFzIHBhcnQgb2YgJ21ha2UgY2hlY2snIChzZWUgIzQ5OTE0MCBhbmQgIzQ5Mzk4MykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE1ha2VmaWxlLmFtOgoJICBBZGQgY2hlY2stZXhwb3J0cyB0YXJnZXQgYW5kIHJ1biBpdCBhcyBwYXJ0IG9mICdtYWtlIGNoZWNrJwoJICAoc2VlICM0OTkxNDAgYW5kICM0OTM5ODMpLgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0aW5mby5jOiAoX3ByaXZfZ3N0X2luX3ZhbGdyaW5kKSwgKF9nc3RfZGVidWdfaW5pdCksCgkgIChfcHJpdl9nc3RfaW5fdmFsZ3JpbmQpOgoJICAqIGdzdC9nc3RpbmZvLmg6IChHc3RMb2dGdW5jdGlvbik6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6ICh0eXBlX2ZpbmRfZGVidWcpLCAoR1NUX0NBVF9ERUZBVUxUKSwKCSAgKGdzdF90eXBlX2ZpbmRfcmVnaXN0ZXIpOgoJICAqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuYzogKHR5cGVfZmluZF9kZWJ1ZyksIChHU1RfQ0FUX0RFRkFVTFQpLAoJICAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2dldF90eXBlKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogKEdTVF9DQVRfREVGQVVMVCksCgkgIChHU1RfQ0FUX0RFRkFVTFQpLCAocGFyZW50X2NsYXNzKSwgKHByaXZfZ3N0X2NvbnRyb2xsZXJfa2V5KSwKCSAgKGdzdF9jb250cm9sbGVyX25ld192YWxpc3QpLCAoZ3N0X2NvbnRyb2xsZXJfbmV3X2xpc3QpLAoJICAoX2dzdF9jb250cm9sbGVyX2Rpc3Bvc2UpLCAoX2dzdF9jb250cm9sbGVyX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbHNvdXJjZS5jOiAoR1NUX0NBVF9ERUZBVUxUKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOiAoR1NUX0NBVF9ERUZBVUxUKSwKCSAgKEdTVF9DQVRfREVGQVVMVCksIChnc3Rfb2JqZWN0X3VuY29udHJvbF9wcm9wZXJ0aWVzKSwKCSAgKGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xsZXIpLCAoZ3N0X29iamVjdF9zZXRfY29udHJvbGxlciksCgkgIChnc3Rfb2JqZWN0X3N1Z2dlc3RfbmV4dF9zeW5jKSwgKGdzdF9vYmplY3Rfc3luY192YWx1ZXMpLAoJICAoZ3N0X29iamVjdF9zZXRfY29udHJvbF9zb3VyY2UpLCAoZ3N0X29iamVjdF9nZXRfY29udHJvbF9zb3VyY2UpLAoJICAoZ3N0X29iamVjdF9nZXRfdmFsdWVfYXJyYXlzKSwgKGdzdF9vYmplY3RfZ2V0X3ZhbHVlX2FycmF5KSwKCSAgKGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfcmF0ZSksIChnc3Rfb2JqZWN0X3NldF9jb250cm9sX3JhdGUpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiAoR1NUX0NBVF9ERUZBVUxUKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2xpYi5jOiAoR1NUX0NBVF9ERUZBVUxUKToKCSAgTWFrZSBzb21lIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBzdGF0aWMgc3RhdGljOyByZW5hbWUgc29tZQoJICBwcml2YXRlIHN5bWJvbHMgc28gdGhhdCB0aGV5IGRvbid0IGdldCBleHBvcnRlZDsgYWRkIHNvbWUgRklYTUUKCSAgY29tbWVudHMgc28gd2UgY2FuIG1vdmUgYWNjaWRlbnRhbGx5IGV4cG9ydGVkIGZ1bmN0aW9ucyBpbnRvCgkgIG91ciBwcml2YXRlIHNlY3Rpb24gaW4gMC4xMS4KCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIGdzdF91dGlsc19nZXRfdGltZXN0YW1wKCkuCgoyMDA3LTEyLTEyIDE0OjA0OjE0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuKjogQWRkIG1vcmUgbWlzc2luZyAiU2luY2U6IiB0YWdzIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICAqIGdzdC9nc3R2YWx1ZS5oOgoJICBBZGQgbW9yZSBtaXNzaW5nICJTaW5jZToiIHRhZ3MgdG8gZG9jcy4KCjIwMDctMTItMTIgMDY6NTg6NTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R1dGlscy5jOiBBZGQgbWlzaW5nICJTaW5jZToiIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBBZGQgbWlzaW5nICJTaW5jZToiIHRvIGRvY3MuCgoyMDA3LTEyLTExIDIyOjAzOjU4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IEluY2x1ZGUgImdsaWItY29tcGF0LXByaXZhdGUuaCIgdG8gZml4IHRoZSBidWlsZCBvbiBzeXN0ZW0gd2l0aCBnbGliIDwgMi4xMC4gRml4ZXMgIzUwMzEzMS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOgoJICBJbmNsdWRlICJnbGliLWNvbXBhdC1wcml2YXRlLmgiIHRvIGZpeCB0aGUgYnVpbGQgb24gc3lzdGVtIHdpdGgKCSAgZ2xpYiA8IDIuMTAuIEZpeGVzICM1MDMxMzEuCgoyMDA3LTEyLTExIDIwOjMyOjI5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuKjogQWN0dWFsbHkgaXRzIG5vdCBQVVJFIGFzIGl0IGdldHMgdGhlIHRpbWUgZnJvbSBlbHNld2hlcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBY3R1YWxseSBpdHMgbm90IFBVUkUgYXMgaXQgZ2V0cyB0aGUgdGltZSBmcm9tIGVsc2V3aGVyZS4KCjIwMDctMTItMTEgMjA6MjM6NTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIENoYW5nZSBHU1RfR0VUX1RJTUVTVEFNUCBpbnRvIGdzdF91dGlsX2dldF90aW1lc3RhbXAgYW5kIHJlcGxhY2UgYWxsIHVzZXMgYXMgd2UgZG9uJ3QgaGF2ZSBIQVZFX1BPU0lYX1RJTUVSUyBpbiBwdWJsaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBDaGFuZ2UgR1NUX0dFVF9USU1FU1RBTVAgaW50byBnc3RfdXRpbF9nZXRfdGltZXN0YW1wIGFuZCByZXBsYWNlIGFsbAoJICB1c2VzIGFzIHdlIGRvbid0IGhhdmUgSEFWRV9QT1NJWF9USU1FUlMgaW4gcHVibGljIGhlYWRlcnMuCgkgIFRoYW5rcyBUaW0gZm9yIHNwb3R0aW5nLgoKMjAwNy0xMi0xMSAxNToyOToyNiArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHVwZGF0ZSBzcGVjIGZpbGUgYnkgbWlycm9yaW5nIGxhdGVzdCBGZWRvcmEgb25lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgc3BlYyBmaWxlIGJ5IG1pcnJvcmluZyBsYXRlc3QgRmVkb3JhIG9uZQoKMjAwNy0xMi0wOSAwNDoyODowMyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgY29uZmlndXJlLmFjOiBEb24ndCBkZWZpbmUgR1NUX0RJU0FCTEVfREVQUkVDQVRFRCBmb3IgcmVsZWFzZXMuIEZpeGVzICM0OTgxODEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgRG9uJ3QgZGVmaW5lIEdTVF9ESVNBQkxFX0RFUFJFQ0FURUQgZm9yIHJlbGVhc2VzLiBGaXhlcyAjNDk4MTgxLgoKMjAwNy0xMi0wOCAxMjo1NDo1MyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RzdHJ1Y3R1cmUuYzogRG9uJ3QgY3Jhc2ggaW4gX2Zyb21fc3RyaW5nKCkgaWYgdGhlIHN0cnVjdHVyZSBuYW1lIGlzIG5vdCB2YWxpZCAoZml4ZXMgIzUwMTU2MCkuICBBbGxvdyBzdHJ1Y3R1ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX3ZhbGlkYXRlX25hbWUpLAoJICAoZ3N0X3N0cnVjdHVyZV9uZXdfdmFsaXN0KSwgKGdzdF9zdHJ1Y3R1cmVfcGFyc2VfdmFsdWUpLAoJICAoZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZyk6CgkgIERvbid0IGNyYXNoIGluIF9mcm9tX3N0cmluZygpIGlmIHRoZSBzdHJ1Y3R1cmUgbmFtZSBpcyBub3QgdmFsaWQKCSAgKGZpeGVzICM1MDE1NjApLiAgQWxsb3cgc3RydWN0dXJlIG5hbWVzIHRvIHN0YXJ0IHdpdGggYSBudW1iZXIKCSAgYWdhaW4gKHRoaXMgYXBwYXJlbnRseSBicm9rZSB0aGUgdWJ1bnR1IGNvZGVjIGluc3RhbGxlcikuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgY3Jhc2g7IHVwZGF0ZSB1bml0IHRlc3RzIGZvciBuZXcgYmVoYXZpb3VyLgoKMjAwNy0xMi0wMyAxMTowNDowOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jOiBDbGFyaWZ5IGdzdF9lbGVtZW50X2dldF9jb21wYXRpYmxlX3BhZCgpIGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBDbGFyaWZ5IGdzdF9lbGVtZW50X2dldF9jb21wYXRpYmxlX3BhZCgpIGRvY3VtZW50YXRpb24uCgkgIEZpeGVzICM1MDA5MTkuCgoyMDA3LTEyLTAyIDIwOjMzOjQ5ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbTogRG9uJ3QgZm9yZ2V0IHRvIGRpc3Qge2dzdCxsaWJzfS9zdHJ1Y3RfaHBwYS5oLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgRG9uJ3QgZm9yZ2V0IHRvIGRpc3Qge2dzdCxsaWJzfS9zdHJ1Y3RfaHBwYS5oLgoKMjAwNy0xMS0yOCAxMzowMjozMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBVc2UgbmV3IEFQSSB0byBnZXQgZWxhcHNlZCB0aW1lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIFVzZSBuZXcgQVBJIHRvIGdldCBlbGFwc2VkIHRpbWUuCgoyMDA3LTExLTI4IDEyOjUyOjQyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvOiBGaXggd3Jvbmcgb3JkZXIgb2YgYXJncyBpbiBHU1RfQ0xPQ0tfRElGRigpIHVzYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIEZpeCB3cm9uZyBvcmRlciBvZiBhcmdzIGluIEdTVF9DTE9DS19ESUZGKCkgdXNhZ2UuCgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBVc2UgbmV3IEFQSSB0byBnZXQgZWxhcHNlZCB0aW1lLgoKMjAwNy0xMS0yOCAxMjozNToxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgUmVuYW1lIG5ldyBBUEkgKyBDaGFuZ2VMb2cgc3VyZ2VyeSB0byByZW1vdmUgb2xkIG5hbWUgZnJvbSBsYXN0IGVudHJ5Li4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIFJlbmFtZSBuZXcgQVBJICsgQ2hhbmdlTG9nIHN1cmdlcnkgdG8gcmVtb3ZlIG9sZCBuYW1lIGZyb20gbGFzdCBlbnRyeS4uCgkgIEFQSTogR1NUX0dFVF9USU1FU1RBTVAKCjIwMDctMTEtMjggMTI6MTE6NTkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIE5vdyBoaWRlIHRoZSBkaWZmZXJlbnQgY2xvY2sgc3R1ZmYgYmVoaW5kIGEgbWFjcm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgICogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICBOb3cgaGlkZSB0aGUgZGlmZmVyZW50IGNsb2NrIHN0dWZmIGJlaGluZCBhIG1hY3JvLgoJICBBUEk6IEdTVF9HRVRfQ1VSUkVOVF9USU1FCgoyMDA3LTExLTI4IDExOjM5OjM1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBBcHBseSB0aGUgcG9zaXgtdGltZXIgY2hlY2sgZnJvbSAjMzYxMTU1LiBDb25kaXRpb25hbGx5IHVzZSB0aGUgcG9zaXggdGltZXIgZm9yIGxvZ2dpbmcuIFRoaXMgZ2l2ZXMgYmV0dGVyIHRpbWVzdGFtcCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgQXBwbHkgdGhlIHBvc2l4LXRpbWVyIGNoZWNrIGZyb20gIzM2MTE1NS4gQ29uZGl0aW9uYWxseSB1c2UgdGhlIHBvc2l4CgkgIHRpbWVyIGZvciBsb2dnaW5nLiBUaGlzIGdpdmVzIGJldHRlciB0aW1lc3RhbXAgcHJlY2lzc2lvbiwgbGVzcwoJICBvdmVyaGVhZCBhbmQgbm8gbnRwIGppdHRlci4KCjIwMDctMTEtMjggMTE6MTE6NTggKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmM6IFNvbWUgY2xlYW51cCBhbmQgY2hlY2tpbmcgYWdhaW5zdCBpbnZhbGlkIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfbWluaV9vYmplY3RfZ2V0X3R5cGUpLAoJICAoZ3N0X21pbmlfb2JqZWN0X2NsYXNzX2luaXQpLCAoZ3N0X21pbmlfb2JqZWN0X2NvcHlfZGVmYXVsdCksCgkgIChnc3RfbWluaV9vYmplY3RfZmluYWxpemUpLCAoZ3N0X21pbmlfb2JqZWN0X2NvcHkpLAoJICAoZ3N0X21pbmlfb2JqZWN0X2lzX3dyaXRhYmxlKSwgKGdzdF9taW5pX29iamVjdF9tYWtlX3dyaXRhYmxlKSwKCSAgKGdzdF9taW5pX29iamVjdF9yZXBsYWNlKSwgKHBhcmFtX21pbmlfb2JqZWN0X3ZhbGlkYXRlKSwKCSAgKGdzdF9wYXJhbV9zcGVjX21pbmlfb2JqZWN0X2dldF90eXBlKToKCSAgU29tZSBjbGVhbnVwIGFuZCBjaGVja2luZyBhZ2FpbnN0IGludmFsaWQgZnVuY3Rpb24gcGFyYW1ldGVycy4KCjIwMDctMTEtMjggMTA6NTg6MzkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTdGFydCBtZXJnaW5nIGluIHRoZSBlYXN5IGJpdHMgb2YgIzM2MTE1NSwgdGhlIG1vbm90b25pYyBjbG9jayBwYXRjaC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9zeXN0ZW1jbG9ja19zdWl0ZSk6CgkgIFN0YXJ0IG1lcmdpbmcgaW4gdGhlIGVhc3kgYml0cyBvZiAjMzYxMTU1LCB0aGUgbW9ub3RvbmljIGNsb2NrIHBhdGNoLgoJICBUaGlzIG9uZSBhZGRzIGEgZmV3IGhhbmR5IG1hY3JvcyB3aXRoIGRvY3MgYW5kIGEgdGVzdHN1aXRlLgoKMjAwNy0xMS0yNyAxODo0NTozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogQmUgYSBiaXQgc21hcnRlciB3aGVuIHNlZWtpbmcsIGxpa2UsIGRvbid0IHRyeSB0byBkbyBhIHNlZWsgd2hlbiBpdCdzIG5vdCBuZWVkZWQuIFRoaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2V2ZW50KToKCSAgQmUgYSBiaXQgc21hcnRlciB3aGVuIHNlZWtpbmcsIGxpa2UsIGRvbid0IHRyeSB0byBkbyBhIHNlZWsgd2hlbiBpdCdzCgkgIG5vdCBuZWVkZWQuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRoZSBmaWxlIGlzIG5vdCBzZWVrYWJsZS4KCSAgRml4ZXMgIzQ5OTc3MS4KCjIwMDctMTEtMjYgMTM6MTY6MDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIER1ZSB0byBwb3B1bGFyIHJlcXVlc3QgcmVtb3ZlIHByZXNldCBpbnRlcmZhY2UgYWdhaW4uIDotKC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlcy5pbjoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3RwcmVzZXQuYzoKCSAgKiBnc3QvZ3N0cHJlc2V0Lmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBEdWUgdG8gcG9wdWxhciByZXF1ZXN0IHJlbW92ZSBwcmVzZXQgaW50ZXJmYWNlIGFnYWluLiA6LSguCgoyMDA3LTExLTIyIDIxOjMyOjA5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBQcmludCAnZGVmYXVsdCB2YWx1ZScgZm9yIGVudW1zIGFuZCBmbGFncyB0b28uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIFByaW50ICdkZWZhdWx0IHZhbHVlJyBmb3IgZW51bXMgYW5kIGZsYWdzIHRvby4KCjIwMDctMTEtMjIgMTU6NTk6MDEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2Vuc29uaWMvcHJvZmlsaW5nLnR4dDogTW9yZSBpZGVhcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9wcm9maWxpbmcudHh0OgoJICBNb3JlIGlkZWFzLgoJICAqIGdzdC9nc3RiaW4uYzoKCSAgRml4IHR5cG8gYW5kIGdpdmUgYmV0dGVyIGxvZyBvdXRwdXQuCgkgICogZ3N0L2dzdGRlYnVndXRpbHMuYzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5oOgoJICBNb3JlIGlkZWFzLCBtYWtlIGdyYXBocyBhIGJpdCBzbWFsbGVyIGFuZCBmaXggcGFyYW0gbmFtZSBpbiBtYWNyby4KCjIwMDctMTEtMjIgMTM6NTY6MjQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RwcmVzZXQuYzogVHJ5IGhhcmRlciB0byB1c2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGZnZXRzKCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwcmVzZXQuYzoKCSAgVHJ5IGhhcmRlciB0byB1c2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGZnZXRzKCkuCgoyMDA3LTExLTIxIDE2OjA4OjI1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IEZvciB0aGVzZXMgdHdvIGZnZXRzIHdlIGhhbmRsZSB0aGUgZXJyb3IgYmVsb3cuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwcmVzZXQuYzoKCSAgRm9yIHRoZXNlcyB0d28gZmdldHMgd2UgaGFuZGxlIHRoZSBlcnJvciBiZWxvdy4KCjIwMDctMTEtMjEgMTM6NDc6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IE9ubHkgc2VuZCB1cHN0cmVhbSBldmVudHMgdXBzdHJlYW0uIEZpeGVzICM0OTg3NDYuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfc2VuZF9ldmVudCk6CgkgIE9ubHkgc2VuZCB1cHN0cmVhbSBldmVudHMgdXBzdHJlYW0uIEZpeGVzICM0OTg3NDYuCgoyMDA3LTExLTIxIDEzOjI3OjUwICswMDAwICBMYXVyZW50IEdsYXlhbCA8c3BnbGVnbGVAeWFob28uZnI+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5Lio6IEFkZCBwcm9wZXJ0eSB0byBkaXNhYmxlIGhhbmRvZmYgc2lnbmFsIGVtaXNzaW9uLiBGaXhlcyAjNDk4Njk0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IExhdXJlbnQgR2xheWFsIDxzcGdsZWdsZSBhdCB5YWhvbyBkb3QgZnI+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpLAoJICAoZ3N0X2lkZW50aXR5X2luaXQpLCAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCksCgkgIChnc3RfaWRlbnRpdHlfc2V0X3Byb3BlcnR5KSwgKGdzdF9pZGVudGl0eV9nZXRfcHJvcGVydHkpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgQWRkIHByb3BlcnR5IHRvIGRpc2FibGUgaGFuZG9mZiBzaWduYWwgZW1pc3Npb24uIEZpeGVzICM0OTg2OTQuCgkgIEFQSTogR3N0SWRlbnRpdHk6OnNpZ25hbC1oYW5kb2ZmcwoKMjAwNy0xMS0yMSAwOTo0Njo1MCArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IFlldCBhbm90aGVyIG1pc3NpbmcgbGlicmFyeSBmb3IgdGhlIHVuaW5zdGFsbGVkIHNjcmlwdCAoZmZ0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0xMS0yMSAgSnVsaWVuIE1vdXR0ZSAgPGp1bGllbkBmbHVlbmRvLmNvbT4KCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IFlldCBhbm90aGVyIG1pc3NpbmcgbGlicmFyeSBmb3IgdGhlCgkgIHVuaW5zdGFsbGVkIHNjcmlwdCAoZmZ0KQoKMjAwNy0xMS0yMSAwMDoyNDowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL2ZhcS9kZXZlbG9waW5nLnhtbDogQWRkIGEgcXVlc3Rpb24gYWJvdXQgaG93IHRvIHN1Ym1pdCBuZXcgdHJhbnNsYXRpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9kZXZlbG9waW5nLnhtbDoKCSAgQWRkIGEgcXVlc3Rpb24gYWJvdXQgaG93IHRvIHN1Ym1pdCBuZXcgdHJhbnNsYXRpb25zLgoJICAqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkgIFVwZGF0ZSB0aGUgY29udGFjdCBlbWFpbCBhZGRyZXNzIGZvciB0aGUgVHJhbnNsYXRpb24gUHJvamVjdAoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSAgVGhlIHBhcmVudF9jbGFzcyBmb3IgZmRzcmMgaXMgcHVzaHNyYywgbm90IEdzdEVsZW1lbnQuCgoyMDA3LTExLTIwIDE2OjM0OjM4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IFBsdWcgYSBsZWFrIGFuZCBmaXggc2F2aW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cHJlc2V0LmM6CgkgIFBsdWcgYSBsZWFrIGFuZCBmaXggc2F2aW5nLgoKMjAwNy0xMS0yMCAxNjoxMDoyMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBnc3RfcHJlc2V0X19nZXRfcHJvcGVydHlfbmFtZXMoKSBmdW5jdGlvbiB0byB0aGUgZG9jcyB0byBmaXggdGhlIGJ1aWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgbmV3IGdzdF9wcmVzZXRfX2dldF9wcm9wZXJ0eV9uYW1lcygpIGZ1bmN0aW9uIHRvIHRoZSBkb2NzCgkgIHRvIGZpeCB0aGUgYnVpbGQuCgoyMDA3LTExLTIwIDE1OjQ2OjM5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0Lio6IENoYW5nZSBfZ2V0X3ByZXNldF9uYW1lcyBBUEkgdG8gcmV0dXJuIGEgc3RydiB3aXRoIGNvcGllcy4gQWRkIF9nZXRfcHJvcGVydHlfbmFtZXMgdG8gYWxsb3cgaW1wbGVtZW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHByZXNldC5jOgoJICAqIGdzdC9nc3RwcmVzZXQuaDoKCSAgQ2hhbmdlIF9nZXRfcHJlc2V0X25hbWVzIEFQSSB0byByZXR1cm4gYSBzdHJ2IHdpdGggY29waWVzLiBBZGQKCSAgX2dldF9wcm9wZXJ0eV9uYW1lcyB0byBhbGxvdyBpbXBsZW1lbnRhdGlvbnMgdG8gZmlsdGVyIGFuZCBwcm92aWRlCgkgIGdvb2QgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KCjIwMDctMTEtMjAgMTE6NDY6MzUgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOiBBZGQgYW5vdGhlciBsaWJyYXJ5IHRvIHRoZSB1bmluc3RhbGxlZCBzY3JpcHQgKHNkcCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA3LTExLTIwICBKdWxpZW4gTU9VVFRFICA8anVsaWVuQG1vdXR0ZS5uZXQ+CgkgICogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOiBBZGQgYW5vdGhlciBsaWJyYXJ5IHRvIHRoZSB1bmluc3RhbGxlZAoJICBzY3JpcHQgKHNkcCkuCgoyMDA3LTExLTE5IDE1OjIzOjQ0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IE1vcmUgY2xlYW51cHMsIGRvY3MsIGFuZCBUT0RPcyBmcm9tIGNvbW1lbnRzIHRoYXQgbm93IHNsb3dseSBjb21lIGluLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cHJlc2V0LmM6CgkgIE1vcmUgY2xlYW51cHMsIGRvY3MsIGFuZCBUT0RPcyBmcm9tIGNvbW1lbnRzIHRoYXQgbm93IHNsb3dseSBjb21lIGluLgoKMjAwNy0xMS0xOSAxNDozODo0OSArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IEFkZCBuZXcgYmFzZSBsaWJyYXJpZXMgaW4gdGhlIExEIHNlYXJjaCBwYXRoLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0xMS0xOSAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogQWRkIG5ldyBiYXNlIGxpYnJhcmllcyBpbiB0aGUgTEQKCSAgc2VhcmNoIHBhdGguCgoyMDA3LTExLTE5IDExOjU0OjEzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IEZpeCBib2d1cyB3YXJuaW5nIGFuZCBtYWtlIHRoZSBwcm9wZXJ0eSB0eXBlIHNwZWNpZmljIGNvZGUgbW9yZSBzaW1pbGFyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cHJlc2V0LmM6CgkgIEZpeCBib2d1cyB3YXJuaW5nIGFuZCBtYWtlIHRoZSBwcm9wZXJ0eSB0eXBlIHNwZWNpZmljIGNvZGUgbW9yZQoJICBzaW1pbGFyLgoKMjAwNy0xMS0xOSAwOTozMzowNSArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0cHJlc2V0LmM6IE1ha2UgaXQgYnVpbGQgb24gT1MgWC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMTEtMTkgIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBnc3QvZ3N0cHJlc2V0LmM6IChnc3RfcHJlc2V0X2RlZmF1bHRfY3JlYXRlX3ByZXNldCk6IE1ha2UKCSAgaXQgYnVpbGQgb24gT1MgWC4KCjIwMDctMTEtMTkgMDg6NTA6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IENoYW5nZSBlbWFpbCwgY2xlYW51cHMgYWRkIHNvbWUgbW9yZSBkZWJ1ZyBhbmQgY29tbWVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2luaXQpLAoJICAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX3JlbW92ZV9mdW5jKSwKCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpLCAoZ3N0X2Jpbl9jb250aW51ZV9mdW5jKToKCSAgQ2hhbmdlIGVtYWlsLCBjbGVhbnVwcyBhZGQgc29tZSBtb3JlIGRlYnVnIGFuZCBjb21tZW50cy4KCSAgQWxzbyBzZXQgYnVzIGFuZCBjbG9jayBvbiBuZXcgZWxlbWVudHMgd2hlbiB0aGUgcGlwZWxpbmUgd2FzIGluIGVycm9yLgoKMjAwNy0xMS0xOCAxOTozMDoxMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0LzogRml4IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWdzdC1kZWJ1Zy4gRml4ZXMgIzQ5Nzg1OS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIEZpeCBidWlsZCB3aXRoIC0tZGlzYWJsZS1nc3QtZGVidWcuIEZpeGVzICM0OTc4NTkuCgkgIFNwb3R0ZWQgYnkgU2FtZWVyIE5haWsuCgoyMDA3LTExLTE3IDE3OjUwOjIxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0ZXZlbnQuYzogTGl0dGxlIGRvY3VtZW50YXRpb24gaW1wcm92bWVudC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgIExpdHRsZSBkb2N1bWVudGF0aW9uIGltcHJvdm1lbnQuCgkgICogZ3N0L2dzdHByZXNldC5jOgoJICBNb3JlIFRPRE8gY2xlYW51cHMuIFJlbW92ZSBjKysgY29tbWVudHMuCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIEFkZCBUT0RPIGFuZCB1c2UgcXVhcmsgZnJvbSBzdGF0aWMgc3RyaW5nLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RtZXNzYWdlLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBVc2UgcXVhcmsgZnJvbSBzdGF0aWMgc3RyaW5nLgoKMjAwNy0xMS0xNyAxNzoyNDo1MyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHByZXNldC5jOiBBZGQgc29tZSBjb21tZW50cyBhbmQgVE9ET3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwcmVzZXQuYzoKCSAgQWRkIHNvbWUgY29tbWVudHMgYW5kIFRPRE9zLgoJICAqIGdzdC9nc3RwcmVzZXQuaDoKCSAgQWRkIHBhZGRpbmcgZm9yIGZ1dHVyZSBjaGFuZ2VzLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgSW1wbGVtZW50IHRoZSBpZmFjZS4KCjIwMDctMTEtMTcgMTY6NDM6MTIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZCB0aGUgcHJlc2V0IGludGVyZmFjZSAoRml4ZXMgIzM5Njc3OSkuIERvIHNvbWUgZG9jIGNsZWFudXBzIGFsb25nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzLmluOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0Lmg6CgkgICogZ3N0L2dzdHByZXNldC5jOgoJICAqIGdzdC9nc3RwcmVzZXQuaDoKCSAgQWRkIHRoZSBwcmVzZXQgaW50ZXJmYWNlIChGaXhlcyAjMzk2Nzc5KS4gRG8gc29tZSBkb2MgY2xlYW51cHMgYWxvbmcuCgoyMDA3LTExLTE2IDAwOjIzOjE4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogQmFjayB0byBDVlMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBCYWNrIHRvIENWUwoKPT09IHJlbGVhc2UgMC4xMC4xNSA9PT0KCjIwMDctMTEtMTYgMDA6MDc6NTQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiByZWxlYXNpbmcgMC4xMC4xNSwgIk9jdG9iZXIiCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICA9PT0gcmVsZWFzZSAwLjEwLjE1ID09PQoJICAyMDA3LTExLTE1ICBKYW4gU2NobWlkdCA8amFuLnNjaG1pZHRAc3VuLmNvbT4KCSAgKiBjb25maWd1cmUuYWM6CgkgIHJlbGVhc2luZyAwLjEwLjE1LCAiT2N0b2JlciIKCjIwMDctMTEtMTUgMjM6MzE6MTEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZS5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZXMucG86CgkqIHBvL2ZpLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaHUucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3BsLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vcncucG86CgkqIHBvL3NrLnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDctMTEtMTQgMTI6MjQ6MDkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgd2luMzIvdnM2L2xpYmdzdHJlYW1lci5kc3A6IENvbnZlcnQgbGluZSBlbmRpbmdzIGJhY2sgdG8gRE9TLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi92czYvbGliZ3N0cmVhbWVyLmRzcDoKCSAgQ29udmVydCBsaW5lIGVuZGluZ3MgYmFjayB0byBET1MuCgoyMDA3LTExLTEzIDExOjMwOjA5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzLzogVXBkYXRlIGZhc3QgdGFncmVhZGluZyBkcmFmdCBhbmQgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIGlkZWFzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC10YWdyZWFkaW5nLnR4dDoKCSAgKiBkb2NzL3JhbmRvbS9lbnNvbmljL3Byb2ZpbGluZy50eHQ6CgkgIFVwZGF0ZSBmYXN0IHRhZ3JlYWRpbmcgZHJhZnQgYW5kIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBpZGVhcy4KCjIwMDctMTEtMDkgMTQ6MDU6MDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IERvbid0IGhvbGQgdGhlIG9iamVjdCBsb2NrIHdoZW4gdW5yZWZmaW5nIGEgYnVmZmVyIGJlY2F1c2UgaXQgY291bGQgY2F1c2UgYSBkZWFkbG9jayB3aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19zZXRfbGFzdF9idWZmZXIpOgoJICBEb24ndCBob2xkIHRoZSBvYmplY3QgbG9jayB3aGVuIHVucmVmZmluZyBhIGJ1ZmZlciBiZWNhdXNlIGl0IGNvdWxkCgkgIGNhdXNlIGEgZGVhZGxvY2sgd2hlbiB0aGUgZmluYWxpemUgZnVuY3Rpb24gd2FudHMgdG8gZ3JhYiB0aGUgb2JqZWN0CgkgIGxvY2sgdG9vLiBGaXhlcyAjNDk1MTMzLgoKMjAwNy0xMS0wOSAxMTo1Njo0MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IEFsc28gYWNjdW11bGF0ZSB0aW1lIGNvcnJlY3RseSB3aGVuIGRvaW5nIHJldmVyc2UgcGxheWJhY2suIEZpeGVzICM0ODgyMDEsCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudF9mdWxsKSwKCSAgKGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lKSwgKGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSk6CgkgIEFsc28gYWNjdW11bGF0ZSB0aW1lIGNvcnJlY3RseSB3aGVuIGRvaW5nIHJldmVyc2UgcGxheWJhY2suIEZpeGVzCgkgICM0ODgyMDEsCgkgIFdoZW4gY29udmVydGluZyB0byBydW5uaW5nIGFuZCBzdHJlYW0gdGltZSwgdXNlIGRlZmF1bHQgdmFsdWVzIGZvcgoJICBzdGFydC9zdG9wL3RpbWUvYWNjdW0gd2hlbiBjb21wYXJpbmcgZGlmZmVyZW50IGZvcm1hdHMuIEZpeGVzICM0OTQyNDUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfc3luY190aW1lcyk6CgkgIERvIHJ1bm5pbmcvc3RyZWFtIHRpbWUgaW4gVElNRSBmb3JtYXQuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHNlZ21lbnQuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9zZWdtZW50X3N1aXRlKToKCSAgMiBuZXcgdW5pdCB0ZXN0cyBmb3Igc2VnbWVudCBhY2N1bXVsYXRpb24uCgoyMDA3LTExLTA3IDE1OjUzOjUyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogTW92ZSBnZXRlbnYoKSBiYWNrIGludG8gZ3N0X2luaXQsIHNvIGV2ZXJ5b25lIGNhbiBsaXZlIGhhcHBpbHkgZXZlciBhZnRlci4gTWFrZSBzdXJlIHRoZSBzeW1ib2wgaXNuJ3QgZXhwb3J0ZWQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcHJlKToKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOiAocHJpdl9nc3RfZHVtcF9kb3RfZGlyKSwgKGRlYnVnX2R1bXBfZWxlbWVudCksCgkgIChfZ3N0X2RlYnVnX2Jpbl90b19kb3RfZmlsZSk6CgkgIE1vdmUgZ2V0ZW52KCkgYmFjayBpbnRvIGdzdF9pbml0LCBzbyBldmVyeW9uZSBjYW4gbGl2ZSBoYXBwaWx5CgkgIGV2ZXIgYWZ0ZXIuIE1ha2Ugc3VyZSB0aGUgc3ltYm9sIGlzbid0IGV4cG9ydGVkIHRob3VnaC4KCjIwMDctMTEtMDYgMjM6MTc6MDkgKzAwMDAgIFNlYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy4qOiBVcGRhdGUgZW51bSB0eXBlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTZWJhc3RpZW4gTW91dHRlICA8c2ViYXN0aWVuIG1vdXR0ZSBuZXQ+CgkgICogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOgoJICAqIHdpbjMyL2NvbW1vbi9nc3RlbnVtdHlwZXMuaDoKCSAgVXBkYXRlIGVudW0gdHlwZXMuCgkgICogd2luMzIvdnM2L2xpYmdzdHJlYW1lci5kc3A6CgkgIFVwZGF0ZSB2czYgcHJvamVjdCBmaWxlcyAoIzQ5NDM0MykuCgoyMDA3LTExLTA2IDE3OjE4OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFVuaWZ5IGZsdXNoaW5nIGNvZGUsIHJlbW92ZSBzb21lIG9sZCB1bmxvY2sgY29kZSB0aGF0IGlzIG5vIGxvbmdlciB1c2VkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KSwKCSAgKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX3NldF9mbHVzaGluZyksIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCksCgkgIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVsbCk6CgkgIFVuaWZ5IGZsdXNoaW5nIGNvZGUsIHJlbW92ZSBzb21lIG9sZCB1bmxvY2sgY29kZSB0aGF0IGlzIG5vIGxvbmdlciB1c2VkLgoJICBUYWtlIHRoZSBzdHJlYW1pbmcgbG9jayB3aGVuIHNlZWtpbmcgdG8gYXZvaWQgcmFjZXMuIEZpeGVzICM0OTI3MjkuCgkgIEFkZGVkIHNvbWUgbW9yZSBjb21tZW50cy4KCjIwMDctMTEtMDYgMTU6MTA6MzYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IE1ha2UgIF9nc3RfZGlzYWJsZV9zZWd0cmFwIHN0YXRpYywgaXQncyBvbmx5IHVzZWQgaW4gZ3N0cGx1Z2luLmMgYW5kIHdlIGNhbiB1c2UgZ3N0X3NlZ3RyYXBfaXNfZW5hYmxlZCgpIHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoX2dzdF9kaXNhYmxlX3NlZ3RyYXApOgoJICBNYWtlICBfZ3N0X2Rpc2FibGVfc2VndHJhcCBzdGF0aWMsIGl0J3Mgb25seSB1c2VkIGluIGdzdHBsdWdpbi5jIGFuZAoJICB3ZSBjYW4gdXNlIGdzdF9zZWd0cmFwX2lzX2VuYWJsZWQoKSB0aGVyZSBub3cgdGhhdCB3ZSBoYXZlIHRoYXQgQVBJLgoJICBNb3ZlIF9nc3RfZGVidWdfZHVtcF9kb3RfZGlyIGludG8gZ3N0ZGVidWd1dGlscy5jLCB0aGVyZSdzIG5vIHJlYXNvbgoJICB0byBkbyB0aGUgZ2V0ZW52IGhlcmUgKGFuZCBleHBvcnQgdGhlIHZhcmlhYmxlKS4KCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOiAoZGVidWdfZHVtcF9lbGVtZW50KSwKCSAgKF9nc3RfZGVidWdfYmluX3RvX2RvdF9maWxlKSwgKF9nc3RfZGVidWdfYmluX3RvX2RvdF9maWxlX3dpdGhfdHMpOgoJICBEb24ndCB1c2UgVkxBcyB3aGljaCBpcyBhIEM5OWlzbSBhbmQgdGhyb3dzIG9mZiBNU1ZDICgjNDkzOTgzKS4KCSAgKiBnc3QvZ3N0aW5mby5jOiAoX3ByaXZfZ3N0X2luZm9fc3RhcnRfdGltZSksIChfZ3N0X2RlYnVnX2luaXQpLAoJICAoZ3N0X2RlYnVnX2xvZ19kZWZhdWx0KToKCSAgUmVuYW1lIF9nc3RfaW5mb19zdGFydF90aW1lIHRvIHByaXZfZ3N0X2luZm9fc3RhcnRfdGltZSBzbyBpdAoJICBkb2Vzbid0IGdldCBleHBvcnRlZCAod2FzIG5ldmVyIGluIGFueSBoZWFkZXIpLgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKF9nc3RfcGx1Z2luX2ZhdWx0X2hhbmRsZXJfc2V0dXApLAoJICAoZ3N0X3BsdWdpbl9sb2FkaW5nX211dGV4KToKCSAgTWFrZSBzdGF0aWMgbXV0ZXggZ3N0X3BsdWdpbl9sb2FkaW5nX211dGV4IHJlYWxseSBzdGF0aWMgKHdhcyBuZXZlcgoJICBpbiBhbnkgaGVhZGVyKSwgYW5kIHVzZSBnc3Rfc2VndHJhcF9pc19lbmFibGVkKCkgaW5zdGVhZCBvZgoJICBfZ3N0X2Rpc2FibGVfc2VndHJhcC4KCSAgKiBnc3QvZ3N0dHJhY2UuYzogKF9nc3RfdHJhY2VfZGVmYXVsdCk6CgkgIE1ha2UgbG9jYWwgX2dzdF90cmFjZV9kZWZhdWx0IHN0YXRpYyAod2FzIG5ldmVyIGluIGFueSBoZWFkZXIpLgoKMjAwNy0xMS0wNiAxNDo0MzoxNCArMDAwMCAgT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzIDxvbGUuYW5kcmUucmF2bmFzQHRhbmRiZXJnLmNvbT4KCgkgIHdpbjMyL2NvbW1vbi86IEFkZCBtb3JlIG1pc3Npbmcgc3ltYm9scywgcmVtb3ZlIHNvbWUgZHVwbGljYXRlcywgYW5kIHNvcnQgYXMgdGhlICdzb3J0JyBjb21tYW5kIHNvcnRzIGl0IChwYXJ0aWFsbHkgZi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyAgPG9sZS5hbmRyZS5yYXZuYXNAdGFuZGJlcmcuY29tPgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0Y29udHJvbGxlci5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGRhdGFwcm90b2NvbC5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdG5ldC5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBtb3JlIG1pc3Npbmcgc3ltYm9scywgcmVtb3ZlIHNvbWUgZHVwbGljYXRlcywgYW5kIHNvcnQKCSAgYXMgdGhlICdzb3J0JyBjb21tYW5kIHNvcnRzIGl0IChwYXJ0aWFsbHkgZml4ZXMgIzQ5Mzk4MykuCgoyMDA3LTExLTA2IDEyOjI4OjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogT25seSBjaGFuZ2UgdGhlIHN0YXRlIGNvb2tpZSBpZiBhIGRpZmZlcmVudCBzdGF0ZSB3YXMgc2V0IG9uIHRoZSBlbGVtZW50LiBTZWUgIzQ5MjcyOS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9zdGF0ZV9mdW5jKToKCSAgT25seSBjaGFuZ2UgdGhlIHN0YXRlIGNvb2tpZSBpZiBhIGRpZmZlcmVudCBzdGF0ZSB3YXMgc2V0IG9uIHRoZQoJICBlbGVtZW50LiBTZWUgIzQ5MjcyOS4KCjIwMDctMTEtMDYgMTE6NDE6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogUmVtb3ZlIHVudXNlZCBhbmQgdW5pbml0aWFsaXNlZCB0eXBlIHZhcmlhYmxlcyB0aGF0IHdlcmUgc3RpbGwgZXhwb3J0ZWQgZm9yIHNvbWUgcmVhc29uICh0aGV5IHdlcmUgbmUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIFJlbW92ZSB1bnVzZWQgYW5kIHVuaW5pdGlhbGlzZWQgdHlwZSB2YXJpYWJsZXMgdGhhdCB3ZXJlIHN0aWxsCgkgIGV4cG9ydGVkIGZvciBzb21lIHJlYXNvbiAodGhleSB3ZXJlIG5ldmVyIGluIGFueSBoZWFkZXIgZmlsZXMKCSAgdGhvdWdoKS4KCjIwMDctMTEtMDYgMTA6MzM6MjIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IERvbid0IHRyeSB0byByZXBvcnQgYSAwIHBvc2l0aW9uIHdoZW4gd2UgZG9uJ3Qga25vdywgcmV0dXJuIC0xIGFuZCBGQUxTRSBpbnN0ZWFkLiBUaGlzIG0uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfc3luY190aW1lcyksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX2xhc3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb25fcGF1c2VkKSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgRG9uJ3QgdHJ5IHRvIHJlcG9ydCBhIDAgcG9zaXRpb24gd2hlbiB3ZSBkb24ndCBrbm93LCByZXR1cm4gLTEgYW5kIEZBTFNFCgkgIGluc3RlYWQuIFRoaXMgbW9zdGx5IGhhcHBlbnMgd2hlbiB3ZSBhcmUgcHJlcm9sbGluZy4KCSAgTWFrZSBzdXJlIHdlIGNhbiByZXBvcnQgdGhlIHJpZ2h0IHBvc2l0aW9uIGJlZm9yZSB3ZSBwb3N0IHRoZSBBU1lOQ19ET05FCgkgIG1lc3NhZ2Ugc28gdGhhdCBhIG1lc3NhZ2UgaGFuZGxlciBjYW4gcXVlcnkgcG9zaXRpb24gd2l0aG91dCByYWNlcy4KCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChzZW5kX2VvcyksIChHU1RfU1RBUlRfVEVTVCksCgkgIChhc3luY19kb25lX2hhbmRvZmYpLCAoYXN5bmNfZG9uZV9mdW5jKSwgKHNlbmRfYnVmZmVyKSwKCSAgKGFzeW5jX2RvbmVfZW9zX2Z1bmMpLCAoZ3N0X3NpbmtzX3N1aXRlKToKCSAgQWRkIHR3byB0ZXN0cyBmb3IgdGhlIGFib3ZlLgoKMjAwNy0xMS0wNiAxMDoyMTowMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIE1BSU5UQUlORVJTOiBVcGRhdGUgd2l0aCBuZXcgZW1haWwgYWRkcmVzcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTUFJTlRBSU5FUlM6CgkgIFVwZGF0ZSB3aXRoIG5ldyBlbWFpbCBhZGRyZXNzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIEFkZCBzb21lIG1vcmUgaW5mbyBhYm91dCBmdXR1cmUgcGFkLWJsb2NrIGFuZCBuZWdvdGlhdGlvbiBjaGFuZ2VzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgQWRkIHNvbWUgaWRlYXMgYWJvdXQgYnVmZmVyaW5nIHJlcG9ydGluZy4KCjIwMDctMTEtMDYgMTA6MDE6MDcgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIE1ha2VmaWxlLmFtOgoJKiBjb21tb246CgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICB1cGRhdGUgU1BFQyBmaWxlIHdpdGggbGF0ZXN0IGNoYW5nZXMsIGFsc28gYWRkIE1BSU5UQUlORVJTIGZpbGUgdG8gRVhUUkFfRElTVCwgdGhlIG9tbWlzc2lvbiBvZiB0aGlzIGNhdXNlIGEgd2VpcmQgUlAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBTUEVDIGZpbGUgd2l0aCBsYXRlc3QgY2hhbmdlcywgYWxzbyBhZGQgTUFJTlRBSU5FUlMgZmlsZSB0byBFWFRSQV9ESVNULCB0aGUgb21taXNzaW9uIG9mIHRoaXMgY2F1c2UgYSB3ZWlyZCBSUE0gYnVpbGQgZXJyb3Igb24gRkM4CgoyMDA3LTExLTA2IDAwOjU5OjU0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RvYmplY3QuYzogRGlzYWJsZSBzaWxseSByYWN5IHRlc3QgdGhhdCBhbHdheXMgZmFpbHMgb24gdGhpcyBjb21iaW5hdGlvbiBvZiBDUFUgYW5kIGtlcm5lbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOgoJICBEaXNhYmxlIHNpbGx5IHJhY3kgdGVzdCB0aGF0IGFsd2F5cyBmYWlscyBvbiB0aGlzIGNvbWJpbmF0aW9uIG9mIENQVQoJICBhbmQga2VybmVsLgoKMjAwNy0xMS0wNCAxMDoxNjozOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkqIENoYW5nZUxvZzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IG1lbnRpb24gYnVnIG51bWJlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IG1lbnRpb24gYnVnIG51bWJlcgoKMjAwNy0xMS0wNCAxMDoxMzozMyArMDAwMCAgTXVycmF5IEN1bW1pbmcgPG11cnJheWNAbXVycmF5Yy5jb20+CgoJICBnc3QvZ3N0b2JqZWN0LmM6IENvcnJlY3RlZCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSBwYXJlbnQtc2V0IGFuZCBwYXJlbnQtdW5zZXQgc2lnbmFsczogVGhlIHBhcmFtZXRlciBpcyBhIEdzdE9iamVjdCwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBNdXJyYXkgQ3VtbWluZyAgPG11cnJheWNAbXVycmF5Yy5jb20+CgkgICogZ3N0L2dzdG9iamVjdC5jOgoJICBDb3JyZWN0ZWQgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgcGFyZW50LXNldCBhbmQgcGFyZW50LXVuc2V0CgkgIHNpZ25hbHM6IFRoZSBwYXJhbWV0ZXIgaXMgYSBHc3RPYmplY3QsIG5vdCBhIEdPYmplY3QuCgoyMDA3LTExLTAyIDE4OjM1OjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogTW92ZSBkZWNsYXJhdGlvbiBvZiBwcml2YXRlIF9nc3RfZm9vX2luaXRpYWxpemUoKSBmdW5jdGlvbnMgaW50byBvdXIgcHJpdmF0ZSBoZWFkZXIgZmlsZSB3aGVyZSB0aGV5IHNob3VsZCBoYXZlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0Zm9ybWF0Lmg6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuaDoKCSAgTW92ZSBkZWNsYXJhdGlvbiBvZiBwcml2YXRlIF9nc3RfZm9vX2luaXRpYWxpemUoKSBmdW5jdGlvbnMgaW50bwoJICBvdXIgcHJpdmF0ZSBoZWFkZXIgZmlsZSB3aGVyZSB0aGV5IHNob3VsZCBoYXZlIGJlZW4gYWxsIGFsb25nLgoKMjAwNy0xMS0wMiAxNzo0MzoyNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGd0ay1kb2MgZml4ZXM7IHRyYWlsaW5nLWNvbW1hLWluLWVudW0gZml4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmg6CgkgICogZ3N0L2dzdHhtbC5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgZ3RrLWRvYyBmaXhlczsgdHJhaWxpbmctY29tbWEtaW4tZW51bSBmaXguCgoyMDA3LTExLTAyIDE2OjI3OjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBDbGVhbiB1cCBvbiBkZWluaXQgKG5vdCB0aGUgZXh0ZXJuYWwgb25lcyB0aG91Z2gsIGRvZXNuJ3Qgc2VlbSB0byBiZSBuZWVkZWQgZm9yIHNvbWUgcmVhc29uKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoZ3N0X2RlaW5pdCk6CgkgIENsZWFuIHVwIG9uIGRlaW5pdCAobm90IHRoZSBleHRlcm5hbCBvbmVzIHRob3VnaCwgZG9lc24ndCBzZWVtIHRvIGJlCgkgIG5lZWRlZCBmb3Igc29tZSByZWFzb24pLgoKMjAwNy0xMS0wMSAyMzo1MTo1NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmg6IFJlbW92ZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZm9yIE1TVkMgdGhhdCB3YXMgY29waWVkIG92ZXIgaW50byBjb3JlIGZyb20gYSBwbHVnaW4sIG9idmlvdXNseSB3aXRob3V0IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5oOiAoR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTik6CgkgIFJlbW92ZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZm9yIE1TVkMgdGhhdCB3YXMgY29waWVkIG92ZXIgaW50byBjb3JlCgkgIGZyb20gYSBwbHVnaW4sIG9idmlvdXNseSB3aXRob3V0IGV2ZXIgaGF2aW5nIGJlZW4gdGVzdGVkIChub3RlIHRoZQoJICBzaW5nbGUgdW5kZXJzY29yZSBpbiBfZGVjbHNwZWMgaW4gdGhlIGluaXRpYWwgY29tbWl0KSwgYW5kIHRoYXQgZG9lc24ndAoJICByZWFsbHkgbWFrZSBzZW5zZS4gIFNlZSAjNDkyMDc3LgoKMjAwNy0xMS0wMSAyMTo1MDowNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdfdHlwZV9jbGFzc19yZWYoKSBvdGhlciB0eXBlcyBhcyB3ZWxsLCBzZWUgIzM0OTQxMCBhbmQgIzY0NzY0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpOgoJICAqIGdzdC9nc3RldmVudC5jOiAoX2dzdF9ldmVudF9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKF9nc3RfcXVlcnlfaW5pdGlhbGl6ZSk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jIChnc3RfZHBfaW5pdCk6CgkgIGdfdHlwZV9jbGFzc19yZWYoKSBvdGhlciB0eXBlcyBhcyB3ZWxsLCBzZWUgIzM0OTQxMCBhbmQgIzY0NzY0LgoJICAqIGdzdC9nc3RidWZmZXIuYzogKF9nc3RfYnVmZmVyX2luaXRpYWxpemUpOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChfZ3N0X21lc3NhZ2VfaW5pdGlhbGl6ZSk6CgkgIFNpbXBsaWZ5IGV4aXN0aW5nIGdfdHlwZV9jbGFzc19yZWYoKS4KCjIwMDctMTEtMDEgMjA6MTA6NDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Zm9ybWF0LmM6IGdfdHlwZV9jbGFzc19yZWYoKSBvdXIgR3N0Rm9ybWF0IHR5cGUgdG8gbWFrZSBzdXJlIHdlIGF2b2lkIHRoZSB0aHJlYWQtdW5zYWZlIGJpdHMgb2YgdGhlIEdPYmplY3QvR1QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGZvcm1hdC5jOiAoX2dzdF9mb3JtYXRfaW5pdGlhbGl6ZSk6CgkgIGdfdHlwZV9jbGFzc19yZWYoKSBvdXIgR3N0Rm9ybWF0IHR5cGUgdG8gbWFrZSBzdXJlIHdlIGF2b2lkIHRoZQoJICB0aHJlYWQtdW5zYWZlIGJpdHMgb2YgdGhlIEdPYmplY3QvR1R5cGUgc3lzdGVtLCBpZS4gYnVnICMzNDk0MTAgYW5kCgkgIGJ1ZyAjNjQ3NjQuIFNob3VsZCBmaXggaW50ZXJtaXR0ZW50IHRlZSB1bml0IHRlc3QgZmFpbHVyZXMgKCM0NzQ4MjMpLgoKMjAwNy0xMS0wMSAxOToxOToxMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiBTaW1wbGlmeSwgc2ltcGxpZnksIHNpbXBsaWZ5IC0gb3Igbm90LiAgUmV3cml0ZSB1bml0IHRlc3Qgbm90IHRvIHVzZSBnc3RfcGFyc2VfbGF1bmNoKCk7IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZWUuYzogKHRlc3RfbnVtX2J1ZmZlcnMpOgoJICBTaW1wbGlmeSwgc2ltcGxpZnksIHNpbXBsaWZ5IC0gb3Igbm90LiAgUmV3cml0ZSB1bml0IHRlc3QKCSAgbm90IHRvIHVzZSBnc3RfcGFyc2VfbGF1bmNoKCk7IGFsbG93IE4gc3ViLXN0cmVhbXMuIEluY3JlYXNpbmcKCSAgdGhlIG51bWJlciBvZiBzdWItc3RyZWFtcyBzZWVtcyB0byByZXByb2R1Y2UgIzQ3NDgyMyBtb3JlIGVhc2lseS4KCjIwMDctMTAtMzEgMjI6MDE6MDMgKzAwMDAgIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlLmFuZHJlLnJhdm5hc0B0YW5kYmVyZy5jb20+CgoJICBGaXggYSBjb3VwbGUgb2YgbWlzc2luZyBpbmNsdWRlcyBmb3IgTVNWQzIwMDUgYW5kIGEgQzk5IGlzc3VlLiBBbHNvLCBzdGFydGluZyB3aXRoIDIuMTQuMCwgR0xpYiB3b24ndCBwcm92aWRlIGEgcGlwZSguLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgIDxvbGUuYW5kcmUucmF2bmFzQHRhbmRiZXJnLmNvbT4KCSAgKiBnc3QvZ3N0dHJhY2UuYzoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzogKGdzdF9uZXRfY2xpZW50X2Nsb2NrX25ldyk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwYWNrZXQuYzogKGdzdF9uZXRfdGltZV9wYWNrZXRfc2VuZCk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOiAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX25ldyk6CgkgIEZpeCBhIGNvdXBsZSBvZiBtaXNzaW5nIGluY2x1ZGVzIGZvciBNU1ZDMjAwNSBhbmQgYSBDOTkgaXNzdWUuIEFsc28sCgkgIHN0YXJ0aW5nIHdpdGggMi4xNC4wLCBHTGliIHdvbid0IHByb3ZpZGUgYSBwaXBlKCkgbWFjcm8gYW55IGxvbmdlciwKCSAgc28gdXNlIF9waXBlKCkgZGlyZWN0bHkgKCM0OTIwNzcpLgoJICAqIHdpbjMyL2NvbW1vbi9kaXJlbnQuYzogKF90cmVhZGRpcik6CgkgIEFkZCBhIGNvdXBsZSBvZiBjYXN0cyB0byBtYWtlIGl0IGJ1aWxkIHdpdGhvdXQgd2FybmluZ3Mgd2l0aCBNU1ZDLgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgc29tZSBtb3JlIHN5bWJvbHMgdGhhdCBuZWVkIHRvIGJlIGV4cG9ydGVkLgoKMjAwNy0xMC0zMSAxODowODoyMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2V4YW1wbGVzL21ldGFkYXRhL3JlYWQtbWV0YWRhdGEuYzogVXNlIF9LRUVQIGFzIG1lcmdlIG1vZGUgcmF0aGVyIHRoYW4gX0tFRVBfQUxMLCBzbyB0YWdzIGFycml2aW5nIGluIGEgc2Vjb25kIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9leGFtcGxlcy9tZXRhZGF0YS9yZWFkLW1ldGFkYXRhLmM6IChtZXNzYWdlX2xvb3ApOgoJICBVc2UgX0tFRVAgYXMgbWVyZ2UgbW9kZSByYXRoZXIgdGhhbiBfS0VFUF9BTEwsIHNvIHRhZ3MKCSAgYXJyaXZpbmcgaW4gYSBzZWNvbmQgb3IgdGhpcmQgdGFnIG1lc3NhZ2UgYXJlIGFkZGVkIHRvCgkgIHRoZSB0YWcgbGlzdCBhcyB3ZWxsLgoKMjAwNy0xMC0zMSAxMzowMTozNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IEl0cyAiU2luY2U6IiBhbmQgbm90ICJAU2luY2U6Ii4gQW5kIHJlbW92ZSBhbiBzdXBlcmZsb3VzIGNhc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICBJdHMgIlNpbmNlOiIgYW5kIG5vdCAiQFNpbmNlOiIuIEFuZCByZW1vdmUgYW4gc3VwZXJmbG91cyBjYXN0LgoKMjAwNy0xMC0zMCAxODozMDoxMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBhIG5ldyBsYXN0LWJ1ZmZlciBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIHRoZSBsYXN0IGJ1ZmZlciB1c2VkIGluIGJhc2VzaW5rIGZvciBwcmVyb2xsIG9yIHJlbmRlcmluZy4gdXNlZnVsIGZvciBtYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9sYXN0X2J1ZmZlciksIChnc3RfYmFzZV9zaW5rX3NldF9sYXN0X2J1ZmZlciksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zaW5rX3JlbmRlcl9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdF91bmxvY2tlZCksIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIEFkZCBhIG5ldyBsYXN0LWJ1ZmZlciBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIHRoZSBsYXN0IGJ1ZmZlciB1c2VkIGluCgkgIGJhc2VzaW5rIGZvciBwcmVyb2xsIG9yIHJlbmRlcmluZy4gdXNlZnVsIGZvciBtYWtpbmcgc25hcHNob3RzLgoJICBBUEk6IGdzdF9iYXNlX3NpbmtfZ2V0X2xhc3RfYnVmZmVyKCkKCSAgQVBJOiBHc3RCYXNlU2luazo6bGFzdC1idWZmZXIKCjIwMDctMTAtMjkgMTM6NDY6MjUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEltcHJvdmUgYmluIGdyYXBoIGR1bXBpbmcsIGJ5IHVzaW5nIHRoZSBlbnZ2YXIgdG8gc3BlY2lmeSBhIHBhdGguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L3J1bm5pbmcueG1sOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmg6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBJbXByb3ZlIGJpbiBncmFwaCBkdW1waW5nLCBieSB1c2luZyB0aGUgZW52dmFyIHRvIHNwZWNpZnkgYSBwYXRoLgoJICBSZW5hbWUgdGhlIGVudnZhciB0byBHU1RfREVCVUdfRFVNUF9ET1RfRElSLgoKMjAwNy0xMC0yOSAxMzoxMDowMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IFBvc3Qgc3BlY2lhbCBlcnJvciBtZXNzYWdlIGlmIHdlIGNhbid0IGRldGVybWluZSB0aGUgdHlwZSBvZiBhIHN0cmVhbSBiZWNhdXNlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfYWN0aXZhdGUpOgoJICBQb3N0IHNwZWNpYWwgZXJyb3IgbWVzc2FnZSBpZiB3ZSBjYW4ndCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgYSBzdHJlYW0KCSAgYmVjYXVzZSBpdCdzIGVtcHR5LgoKMjAwNy0xMC0yOSAxMDowNTo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgRG9jdW1lbnQgbmV3IGVudi12YXIuIEFkZCBvbmUgbG9nLWxpbmUgYWZ0ZXIgZHVtcG5nIGEgZ3JhcGguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L3J1bm5pbmcueG1sOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIERvY3VtZW50IG5ldyBlbnYtdmFyLiBBZGQgb25lIGxvZy1saW5lIGFmdGVyIGR1bXBuZyBhIGdyYXBoLgoKMjAwNy0xMC0yNiAxODozOTowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGNvbmZpZ3VyZS5hYzogVWdseSBoYWNrIHRvIHB1dCB0aGUgKHJlY2VudGx5IHJlbW92ZWQgYW5kIG5vbi1wb3J0YWJsZSwgYXBwYXJlbnRseSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBVZ2x5IGhhY2sgdG8gcHV0IHRoZSAocmVjZW50bHkgcmVtb3ZlZCBhbmQgbm9uLXBvcnRhYmxlLCBhcHBhcmVudGx5KQoJICAtV2wsLS1leHBvcnQtZHluYW1pYyBiYWNrIGludG8gbGliZ3N0Y2hlY2sncyBMREZMQUdTIHdoZW4gd2UncmUgdXNpbmcKCSAgR05VIGxkLCBiZWNhdXNlIHdpdGhvdXQgdGhhdCAnbWFrZSBjaGVjaycgZmFpbHMgbWlzZXJhYmx5IG9uIG15IGRlYmlhbgoJICBzdGFibGUgYm94LiAgU29tZW9uZSB3aXRoIG1vcmUga25vd2xlZGdlIG9mIGxpbmtlciBpbnRyaWNhY2llcyBhbmQKCSAgcG9ydGFiaWxpdHkgaXNzdWVzIHRoYW4gbWUgZml4IHRoaXMgcHJvcGVybHkgcGxlYXNlLgoKMjAwNy0xMC0yNSAxNzoyMDo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogUmVzZXQgbGFzdCBzZWVuIHBvc2l0aW9uIGFmdGVyIGZsdXNoaW5nIHNvIHRoYXQgd2UgZG9uJ3QgcmVwb3J0IHRoZSBvbGQgcG9zaXRpb24gYW55bW9yZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19ldmVudCk6CgkgIFJlc2V0IGxhc3Qgc2VlbiBwb3NpdGlvbiBhZnRlciBmbHVzaGluZyBzbyB0aGF0IHdlIGRvbid0IHJlcG9ydCB0aGUgb2xkCgkgIHBvc2l0aW9uIGFueW1vcmUuCgoyMDA3LTEwLTI1IDE2OjE5OjA1ICswMDAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyb0BubnZhLm9yZz4KCgkgIGdzdC86IFBhdGNoIGZyb20gQWxlc3NhbmRybyBEZWNpbmEgYWRkaW5nIGdldF90eXBlX2Z1bGwgYW5kIGdldF9wcm90b2NvbHNfZnVsbCBwcml2YXRlIHZmdW5jcyB0byB0aGUgVVJJSGFuZGxlciBpbnRlci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogKGdzdF9lbGVtZW50X3JlZ2lzdGVyKToKCSAgKiBnc3QvZ3N0dXJpLmg6CgkgIFBhdGNoIGZyb20gQWxlc3NhbmRybyBEZWNpbmEgYWRkaW5nIGdldF90eXBlX2Z1bGwgYW5kCgkgIGdldF9wcm90b2NvbHNfZnVsbCBwcml2YXRlIHZmdW5jcyB0byB0aGUgVVJJSGFuZGxlciBpbnRlcmZhY2UKCSAgdG8gYWxsb3cgYmluZGluZ3MgdG8gc3VwcG9ydCBjcmVhdGluZyBVUkkgaGFuZGxlcnMuCgkgIFBhcnRpYWxseSBmaXhlczogIzMzOTI3OQoJICBBUEk6IEdzdFVSSUhhbmRsZXJJbnRlcmZhY2U6OmdldF90eXBlX2Z1bGwKCSAgQVBJOiBHc3RVUklIYW5kbGVySW50ZXJmYWNlOjpnZXRfcHJvdG9jb2xzX2Z1bGwKCjIwMDctMTAtMjUgMTU6MTQ6MDIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IE1ha2UgaXQgc28gdGhhdCBwYWRzIGFyZSBjb25zaWRlcmVkIGxpbmtlZCB1bnRpbCBhIGJ1ZmZlciBpcyBwdXNoZWQgYW5kIGRpc2NvdmVyZWQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiAoZ3N0X211bHRpX3F1ZXVlX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfbXVsdGlfcXVldWVfcmVxdWVzdF9uZXdfcGFkKSwgKGdzdF9zaW5nbGVfcXVldWVfZmx1c2gpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2xvb3ApLCAoZ3N0X211bHRpX3F1ZXVlX3NpbmtfYWN0aXZhdGVfcHVzaCk6CgkgIE1ha2UgaXQgc28gdGhhdCBwYWRzIGFyZSBjb25zaWRlcmVkIGxpbmtlZCB1bnRpbCBhIGJ1ZmZlciBpcyBwdXNoZWQKCSAgYW5kIGRpc2NvdmVyZWQgb3RoZXJ3aXNlLiBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aXRoIGRlY29kZWJpbjIgaGFuZ2luZwoJICBhZnRlciBhIHNlZWsgaW4gdGhlIGZpbGVzcmMgISBkZWNvZGViaW4yIG5hbWU9ZCAhIGZha2VzaW5rIGQuICEgZmFrZXNpbmsKCSAgY2FzZS4KCSAgTWFrZSBzdXJlIHdlIGxvY2sgdGhlIG11bHRpcXVldWUgd2hlbiB1cGRhdGluZyB0aGUgbWF4LXNpemUgcHJvcGVydGllcy4KCSAgRml4IGEgY3Jhc2ggb24gU29sYXJpcyBpbiBhIGRlYnVnIHN0YXRlbWVudCBpbiBnZXRfcmVxdWVzdF9wYWQgdGhhdAoJICBwYXNzZXMgYSBOVUxMIHN0cmluZyB0byBHU1RfREVCVUcuCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvbXVsdGlxdWV1ZS5jOiAobXFfZHVtbXlwYWRfY2hhaW4pLAoJICAocnVuX291dHB1dF9vcmRlcl90ZXN0KToKCSAgRml4IHRoZSB0ZXN0IHRvIGFsbG93IHRoZSBmaXJzdCBidWZmZXIgb24gbm90LWxpbmtlZCBwYWRzIHRvIGNvbWUgb3V0CgkgIG9mIHNlcXVlbmNlIHdoaWxlIG11bHRpcXVldWUgZGlzY292ZXJzIHRoYXQgdGhleSBhcmUgbm90LWxpbmtlZC4KCjIwMDctMTAtMjUgMTQ6NTA6NDggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgVXNlIGEgY3VzdG9tIGV4cG9ydCBzeW1ib2wgcmVnZXggZm9yIGxpYmdzdGNoZWNrLCBhcyBpdCBuZWVkcyB0byBleHBvcnQgc3ltYm9scyB0aGF0IGRvbid0IG1hdGNoIHRoZSBzdGFuZGFyZCBHU3RyZWFtLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbToKCSAgVXNlIGEgY3VzdG9tIGV4cG9ydCBzeW1ib2wgcmVnZXggZm9yIGxpYmdzdGNoZWNrLCBhcyBpdCBuZWVkcwoJICB0byBleHBvcnQgc3ltYm9scyB0aGF0IGRvbid0IG1hdGNoIHRoZSBzdGFuZGFyZCBHU3RyZWFtZXIgZ3N0XyoKCSAgcGF0dGVybiwgYW5kICAtLWV4cG9ydC1keW5hbWljIGlzIG5vdCBwb3J0YWJsZSAob25seSB3b3JrcyBvbgoJICBHTlUgbGQpCgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19zZXR1cF9zcmNfcGFkKSwKCSAgKGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCk6CgkgIE1ha2Ugc3VyZSB0byBwYXNzIGEgbWVzc2FnZSBwYXJhbWV0ZXIgdG8gdGhlIGZhaWxfKiBtYWNyb3MuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGluZm8uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MuCgoyMDA3LTEwLTI1IDE0OjQxOjAxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiBEaXNhYmxlIHRlc3QgdGhhdCBjaGVja3MgdGhhdCB3aGl0ZSBzcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cnVjdHVyZSBuYW1lcyBvciBmaWVsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogKHRlc3RfdG9fc3RyaW5nKToKCSAgRGlzYWJsZSB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgd2hpdGUgc3BhY2VzIGFyZSBub3QgYWxsb3dlZAoJICBpbiBzdHJ1Y3R1cmUgbmFtZXMgb3IgZmllbGQgbmFtZXMsIHNpbmNlIHdlIG5lZWQgdG8KCSAgc3VwcG9ydCB0aGF0IGZvciBub3cgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCgoyMDA3LTEwLTI0IDEzOjEzOjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgR1NUX1RBR19BUlRJU1RfU09SVE5BTUUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIEFQSTogYWRkIEdTVF9UQUdfQVJUSVNUX1NPUlROQU1FCgkgIEFQSTogYWRkIEdTVF9UQUdfQUxCVU1fU09SVE5BTUUKCSAgQVBJOiBhZGQgR1NUX1RBR19USVRMRV9TT1JUTkFNRQoJICBBZGQgdGFnIHZhcmlhbnRzIGZvciBzb3J0aW5nICgjNDE0NTM5KS4KCjIwMDctMTAtMjQgMTM6MDA6NTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IEFsc28gYWxsb3cgd2hpdGUgc3BhY2UgZm9yIG5hbWVzIHNvIHdlIGRvbid0IGJyZWFrIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIEFsc28gYWxsb3cgd2hpdGUgc3BhY2UgZm9yIG5hbWVzIHNvIHdlIGRvbid0IGJyZWFrCgkgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoKMjAwNy0xMC0yMiAxNTozNzo0MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduLzogU21hbGwgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXNlZ21lbnRzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0cmVhbXMudHh0OgoJICBTbWFsbCB1cGRhdGVzLgoKMjAwNy0xMC0yMiAxMTozMjoxNCArMDAwMCAgRWRnYXJkIExpbWEgPGVkZ2FyZC5saW1hQGluZHQub3JnLmJyPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogRml4ZWQgZG9jdW1lbnRhdGlvbiBmcm9tIG15IHByZXZpb3VzIGNvbW1pdCAoYWRkZWQgbmV3IEFQSSBhZGQgZ3N0X3ZhbHVlX3NldF9zdHJ1Y3R1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEZpeGVkIGRvY3VtZW50YXRpb24gZnJvbSBteSBwcmV2aW91cyBjb21taXQgKGFkZGVkIG5ldyBBUEkgYWRkCgkgIGdzdF92YWx1ZV9zZXRfc3RydWN0dXJlKCksIGFkZCBnc3RfdmFsdWVfZ2V0X3N0cnVjdHVyZSgpIGFuZAoJICBHU1RfVkFMVUVfSE9MRFNfU1RSVUNUVVJFKS4KCjIwMDctMTAtMjIgMTE6MTA6MjggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6IFJlZmxvdyBjb2RlIHRvIGZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmM6CgkgIFJlZmxvdyBjb2RlIHRvIGZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcuCgoyMDA3LTEwLTIyIDA4OjUzOjI2ICswMDAwICBFZGdhcmQgTGltYSA8ZWRnYXJkLmxpbWFAaW5kdC5vcmcuYnI+CgoJICBBZGRlZCBHc3RTdHJ1Y3R1cmUgdG8gZ3N0X3ZhbHVlX3RhYmxlIGFuZCBpdHMgcmVsYXRlZCBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc190b19zdHJpbmcpLAoJICAoZ3N0X2NhcHNfZnJvbV9zdHJpbmdfaW5wbGFjZSk6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9nZXRfYWJicnMpLAoJICAoZ3N0X3N0cnVjdHVyZV90b19zdHJpbmcpLCAoZ3N0X3N0cnVjdHVyZV9mcm9tX3N0cmluZyk6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfc2V0X3N0cnVjdHVyZSksCgkgIChnc3RfdmFsdWVfZ2V0X3N0cnVjdHVyZSksIChnc3RfdmFsdWVfc2VyaWFsaXplX3N0cnVjdHVyZSksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfc3RydWN0dXJlKSwgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3N0cnVjdHVyZV9zdWl0ZSk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZGVkIEdzdFN0cnVjdHVyZSB0byBnc3RfdmFsdWVfdGFibGUgYW5kIGl0cyByZWxhdGVkIGZ1bmN0aW9ucy4KCSAgQ2hhbmdlZCBnc3Rfc3RydWN0dXJlX3RvX3N0cmluZyB0byBwcmludCAnOycgaW4gdGhlIGVuZC4KCSAgQ2hhbmdlZCBnc3RfY2Fwc190b19zdHJpbmcgdG8gbm90IHByaW50ICc7JyBiZXRld2VlbiBpdHMKCSAgZmllbGRzIChzdHJ1Y3R1cmVzKSBhbnltb3JlIGFuZCByZW1vdmUgdGhlIGxhc3RlcyAnOycgZnJvbSBsYXRlc3QKCSAgc3RydWN0dXJlLiBOb3cgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBuZXN0ZWQgc3RydWN0dXJlcy4KCSAgSW4gYWRkaXRpb24sIGJhY2t3YXJkIGNvbXBhdGliaWx0eSBpcyBhc3N1cmVkIGJ5IGFjY2VwdGluZyAnXDAnIGFzCgkgIGVuZCBkZWxpbWl0ZXIuIEZpeGVzOiAjNDg3OTY5LgoJICBBUEk6IGFkZCBnc3RfdmFsdWVfc2V0X3N0cnVjdHVyZSgpCgkgIEFQSTogYWRkIGdzdF92YWx1ZV9nZXRfc3RydWN0dXJlKCkKCjIwMDctMTAtMTkgMDk6NDg6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0YnVzLmM6IFdoZW4gbm8gR1NvdXJjZSBjYWxsYmFjayBoYXMgYmVlbiBzZXQgdXAsIHRlbGwgZGV2ZWxvcGVyIHRvIHVzZSBhIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgZXhpc3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgIFdoZW4gbm8gR1NvdXJjZSBjYWxsYmFjayBoYXMgYmVlbiBzZXQgdXAsIHRlbGwgZGV2ZWxvcGVyCgkgIHRvIHVzZSBhIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgZXhpc3RzLgoKMjAwNy0xMC0xNyAxMjo1ODoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQWxsb3cgZHVtcGluZyBwaXBlbGluZXMgYXMgZG90IGdyYXBocy4gRml4ZXMgIzQ1NjU3My4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5jOgoJICAqIGdzdC9nc3QuaDoKCSAgKiBnc3QvZ3N0ZGVidWd1dGlscy5jOgoJICAqIGdzdC9nc3RkZWJ1Z3V0aWxzLmg6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzoKCSAgQWxsb3cgZHVtcGluZyBwaXBlbGluZXMgYXMgZG90IGdyYXBocy4gRml4ZXMgIzQ1NjU3My4KCjIwMDctMTAtMTYgMjE6NDg6MjMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IEFsbG93ICcrJyBhcyB3ZWxsLCBpdCBjYW4gYmUgcGFydCBvZiBtZWRpYSBvciBtaW1lIHR5cGVzIHN1Y2ggYXMgaW1hZ2Uvc3ZnK3htbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBBbGxvdyAnKycgYXMgd2VsbCwgaXQgY2FuIGJlIHBhcnQgb2YgbWVkaWEgb3IgbWltZSB0eXBlcwoJICBzdWNoIGFzIGltYWdlL3N2Zyt4bWwuCgoyMDA3LTEwLTE2IDIwOjMwOjEzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X2J1c19wb3BfZmlsdGVyZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgICogZ3N0L2dzdGJ1cy5oOgoJICBBUEk6IGFkZCBnc3RfYnVzX3BvcF9maWx0ZXJlZAoJICBBUEk6IGFkZCBnc3RfYnVzX3RpbWVkX3BvcF9maWx0ZXJlZAoJICBUd28gbmV3IGZ1bmN0aW9ucyBmb3Igd2FpdGluZyBmb3Igc3BlY2lmaWMgbWVzc2FnZSB0eXBlcyBvbiB0aGUKCSAgYnVzIGZvciBhIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZSB3aXRob3V0IGl0ZXJhdGluZyBhbnkgbWFpbgoJICBsb29wcyBvciBtYWluIGNvbnRleHRzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzoKCSAgU29tZSB0ZXN0cyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMuCgoyMDA3LTEwLTE2IDE3OjIxOjM4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogTWFrZSBndGstZG9jIGlnbm9yZSBzdHVmZiBpdCBzaG91bGQgaWdub3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBNYWtlIGd0ay1kb2MgaWdub3JlIHN0dWZmIGl0IHNob3VsZCBpZ25vcmUuCgoyMDA3LTEwLTE2IDE2OjEyOjM2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suKjogQWxsb3cgcnVudGltZSBzZWxlY3Rpb24gb2YgdW5pdCB0ZXN0cyB0byBydW4gdmlhIHRoZSBHU1RfQ0hFQ0tTIGVudmlyb25tZW50IHZhcmlhYmxlICh0ZXN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgQWxsb3cgcnVudGltZSBzZWxlY3Rpb24gb2YgdW5pdCB0ZXN0cyB0byBydW4gdmlhIHRoZSBHU1RfQ0hFQ0tTCgkgIGVudmlyb25tZW50IHZhcmlhYmxlICh0ZXN0IGNhc2UgZnVuY3Rpb24gbmFtZXMsIGNvbW1hLXNlcGFyYXRlZCkuCgoyMDA3LTEwLTE2IDEzOjU4OjQzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBSZXZlcnQgc2VyaWFsaXNhdGlvbiBjaGFuZ2UgYW5kIGNvbnN0cmFpbiBzdHJ1Y3R1cmUtbmFtZXMgYWZ0ZXIgY29uc2Vuc3VzIG9uIGlyYy4gVXBkYXRlIGFwaSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgUmV2ZXJ0IHNlcmlhbGlzYXRpb24gY2hhbmdlIGFuZCBjb25zdHJhaW4gc3RydWN0dXJlLW5hbWVzIGFmdGVyCgkgIGNvbnNlbnN1cyBvbiBpcmMuIFVwZGF0ZSBhcGkgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBjaGFuZ2UuCgoyMDA3LTEwLTE2IDA2OjMyOjA3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IEltcHJvdmUgc2VyaWFsaXphdGlvbiBhbmQgZml4IHRlc3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIEltcHJvdmUgc2VyaWFsaXphdGlvbiBhbmQgZml4IHRlc3RzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgQWRkIGFub3RoZXIgdGVzdCB0aGF0IGNvdmVycyB3aHkgSSBhY3R1YWxseSBkaWQgdGhlIHByZXZpb3VzIHN0cnVjdHVyZQoJICBjaGFuZ2UuCgoyMDA3LTEwLTE1IDE0OjMzOjE2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogRG9uJ3QgY3Jhc2ggd2hlbiBpbnNwZWN0aW5nIGFuIGVsZW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X2luZm8pOgoJICBEb24ndCBjcmFzaCB3aGVuIGluc3BlY3RpbmcgYW4gZWxlbWVudC4KCjIwMDctMTAtMTUgMTE6NTg6MTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0c3RydWN0dXJlLmM6IEFkZCB1bml0IHRlc3QgZm9yIGVzY2FwaW5nIG9mIHN0cnVjdHVyZSBuYW1lIHdoZW4gc2VyaWFsaXNpbmcgYW5kIGRlc2VyaWFsaXNpbmcgdG8vZnIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBBZGQgdW5pdCB0ZXN0IGZvciBlc2NhcGluZyBvZiBzdHJ1Y3R1cmUgbmFtZSB3aGVuIHNlcmlhbGlzaW5nCgkgIGFuZCBkZXNlcmlhbGlzaW5nIHRvL2Zyb20gc3RyaW5ncy4KCjIwMDctMTAtMTUgMTE6MzY6MzcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogRml4IHF1ZXVlIG5lZ290aWF0aW9uLiBJZiBhY2NlcHRjYXBzIHVuY29uZGl0aW9uYWxseSByZXR1cm5zIFRSVUUsIHVwc3RyZWFtIGlzIHRyaWNrZWQgaW50byB0aGlua2kuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3Rfc2luZ2xlX3F1ZXVlX3B1c2hfb25lKSwKCSAgKGdzdF9zaW5nbGVfcXVldWVfbmV3KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaW5pdCksCgkgIChnc3RfcXVldWVfcHVzaF9vbmUpOgoJICBGaXggcXVldWUgbmVnb3RpYXRpb24uIElmIGFjY2VwdGNhcHMgdW5jb25kaXRpb25hbGx5IHJldHVybnMgVFJVRSwKCSAgdXBzdHJlYW0gaXMgdHJpY2tlZCBpbnRvIHRoaW5raW5nIGl0IGNhbiBzdWdnZXN0IGEgZm9ybWF0IGRvd25zdHJlYW0KCSAgd2hpbGUgZG93bnN0cmVhbSBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgZm9ybWF0LiBUaGUgcmVhbCBwcm9ibGVtIGlzIHRoYXQKCSAgY29yZSBjYWxscyBhY2NlcHRjYXBzIHdoZW4gcHVzaGluZyBhIGJ1ZmZlciB3aXRoIG5ldyBjYXBzLCBmb3Igd2hpY2ggd2UKCSAgZG8gYSBsaXR0bGUgd29ya2Fyb3VuZCBieSBzZXR0aW5nIHRoZSBjYXBzIG9uIHRoZSBzcmNwYWQgb3Vyc2VsdmVzCgkgIGJlZm9yZSBwdXNoaW5nIHRoZSBidWZmZXIgKHVudGlsIHRoaXMgaXMgZmlndXJlZCBvdXQpLiBGaXhlcyAjNDg2NzU4LgoKMjAwNy0xMC0xNSAxMToxOTozNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0LzogQWRkIHNvbWUgbW9yZSBjb21tZW50cyBhbmQgZGVidWcgb3V0cHV0LiBRdW90ZSBzdHJ1Y3R1cmUgbmFtZSB0byBmaXggZGVzZXJpYWxpc2F0aW9uIG9mIHNvbWUgc3RyaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBBZGQgc29tZSBtb3JlIGNvbW1lbnRzIGFuZCBkZWJ1ZyBvdXRwdXQuIFF1b3RlIHN0cnVjdHVyZSBuYW1lIHRvIGZpeAoJICBkZXNlcmlhbGlzYXRpb24gb2Ygc29tZSBzdHJpbmdzLgoKMjAwNy0xMC0xNSAwNzozNzozNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5oOiBEZWZpbmUgR1NUX0JVRkZFUl9GTEFHX0dBUCBtb3JlIHN0cmljdGx5IHRvIGVuYWJsZSBvcHRpbWl6YXRpb25zIGJhc2VkIG9uIGl0LiBGaXggZG9jcyBmb3IgR1NUX0JVRkZFLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgRGVmaW5lIEdTVF9CVUZGRVJfRkxBR19HQVAgbW9yZSBzdHJpY3RseSB0byBlbmFibGUgb3B0aW1pemF0aW9ucyBiYXNlZAoJICBvbiBpdC4gRml4IGRvY3MgZm9yIEdTVF9CVUZGRVJfTUFMTE9DREFUQSBhbmQgR3N0QnVmZmVyLm1hbGxvY19kYXRhLgoKMjAwNy0xMC0xNSAwNzoxMTowNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogU2F2ZSBhcHByb3guIDQwMCAxIGJ5dGUgYWxsb2NzIHdoZW4gcHJpbnRpbmcuIFVzZSBBUEkgdG8gYWNjZXMgZWxlbWVudCBkZXRhaWxzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICBTYXZlIGFwcHJveC4gNDAwIDEgYnl0ZSBhbGxvY3Mgd2hlbiBwcmludGluZy4gVXNlIEFQSSB0byBhY2NlcyBlbGVtZW50CgkgIGRldGFpbHMuCgkgICogdG9vbHMvZ3N0LXJ1bi5jOgoJICBBdm9pZCBhIHN0cmR1cC4KCSAgKiB0b29scy9nc3QteG1saW5zcGVjdC5jOgoJICBVc2UgQVBJIHRvIGFjY2VzIGVsZW1lbnQgZGV0YWlscy4KCjIwMDctMTAtMTUgMDY6NTI6MDEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmM6IEZpeCBzb21lIHNwZWxsaW5nIGVycm9ycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgRml4IHNvbWUgc3BlbGxpbmcgZXJyb3JzLgoKMjAwNy0xMC0xNCAxNTo1NDowMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogQ29ycmVjdGx5IHNldCB0aGUgbmV4dCBzdGF0ZSBpZiBhbGwgb2Ygb3VyIGFzeW5jIGNoaWxkcmVuIGNvbW1pdGVkIHRoZWlyIHN0YXRlLiBUaGlzIG1ha2VzIHN1cmUgd2UgY2FuIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5faGFuZGxlX2FzeW5jX2RvbmUpOgoJICBDb3JyZWN0bHkgc2V0IHRoZSBuZXh0IHN0YXRlIGlmIGFsbCBvZiBvdXIgYXN5bmMgY2hpbGRyZW4gY29tbWl0ZWQgdGhlaXIKCSAgc3RhdGUuIFRoaXMgbWFrZXMgc3VyZSB3ZSBjYW4gYWN0dWFsbHkgY2FuY2VsIHRoZSBzdGF0ZSBjaGFuZ2UgaW4KCSAgcHJvZ3Jlc3MuIEZpeGVzIGEgcmVncmVzc2lvbiBpbiBSaHl0aG1ib3ggd2hlbiBzZWVraW5nLgoKMjAwNy0xMC0xMyAxNzo0MzoyNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogRG9uJ3Qgc2hhZG93IGxvY2FsIHZhcmlhYmxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6CgkgIERvbid0IHNoYWRvdyBsb2NhbCB2YXJpYWJsZS4KCSAgKiBnc3QvZ3N0aW5mby5jOgoJICBEb24ndCBzaGFkb3cgZ2xvYmFsIGZ1bmN0aW9uIG5hbWUuCgoyMDA3LTEwLTEzIDE3OjIwOjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogVXNlIGFscmVhZHktaW50ZXJuZWQgc3RyaW5nIGZvciB0aGUgcHJpdmF0ZSBHc3RQbHVnaW5GZWF0dXJlIHBsdWdpbl9uYW1lIGZpZWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6CgkgIFVzZSBhbHJlYWR5LWludGVybmVkIHN0cmluZyBmb3IgdGhlIHByaXZhdGUgR3N0UGx1Z2luRmVhdHVyZQoJICBwbHVnaW5fbmFtZSBmaWVsZC4KCjIwMDctMTAtMTAgMjI6NDM6MTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBZGQgbmV3IEFQSSB0byBkb2NzOyBmaXhlcyB0aGUgYnVpbGQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIEFkZCBuZXcgQVBJIHRvIGRvY3M7IGZpeGVzIHRoZSBidWlsZC4KCjIwMDctMTAtMTAgMTU6MTg6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLio6IEFkZCBmdW5jdGlvbiB0byB3YWl0IGZvciBFT1MsIHN1YmNsYXNzZXMgY2FuIHVzZSB0aGlzIHRvIGNvcnJlY3RseSB3YWl0IGZvciBkZXZpY2VzIHRvIGQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGluc3BpcmVkIGJ5OiBCZW5vaXQgRm91ZXQgPGJlbm9pdCBkb3QgZm91ZXQgYXQgcHVycGxlbGFicyBkb3QgY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfd2FpdF9lb3MpLAoJICAoZ3N0X2Jhc2Vfc2lua19ldmVudCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBBZGQgZnVuY3Rpb24gdG8gd2FpdCBmb3IgRU9TLCBzdWJjbGFzc2VzIGNhbiB1c2UgdGhpcyB0byBjb3JyZWN0bHkgd2FpdAoJICBmb3IgZGV2aWNlcyB0byBkcmFpbiBiZWZvcmUgcGVyZm9ybWluZyB0aGUgRU9TIGxvZ2ljLiBGaXhlcyAjNDg1MzQzLgoJICBBUEk6IGdzdF9iYXNlX3Npbmtfd2FpdF9lb3MoKQoKMjAwNy0xMC0xMCAxMDo1MzozOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RwbHVnaW4uaDogQ2FzdCBkZXNjcmlwdGlvbiBzdHJpbmcgY29uc3RhbnRzIGluIEdTVF9QTFVHSU5fREVGSU5FIG1hY3JvcyB0byBhIChnY2hhciopIHRvIG1ha2UgQysrIGNvZGUgdXNpbmcgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIENhc3QgZGVzY3JpcHRpb24gc3RyaW5nIGNvbnN0YW50cyBpbiBHU1RfUExVR0lOX0RFRklORSBtYWNyb3MKCSAgdG8gYSAoZ2NoYXIqKSB0byBtYWtlIEMrKyBjb2RlIHVzaW5nIHRoZXNlIG1hY3JvcyBjb21waWxlCgkgIHdpdGhvdXQgd2FybmluZyB3aXRoIGcrKy00LjIgKHNlZSAjNDYyNzM3KS4gIEV2ZW4gaWYgc2xpZ2h0bHkKCSAgdWdseSwgdGhpcyBzZWVtcyBwcmVmZXJhYmxlIHRvIHB1dHRpbmcgdGhlIGRlc2NyaXB0aW9uIHN0cmluZ3MKCSAgaW50byB0aGUgR0xpYiBxdWFyayB0YWJsZSBvciBtYWtpbmcgdGhlIHN0cnVjdHVyZSBtZW1iZXIgYQoJICBjb25zdCBnY2hhciAqIGFuZCBkb2luZyBjYXN0cyBpbiBjb3JlIGNvZGUgdGhhdCBhbGxvY3MgYW5kCgkgIGZyZWVzIHRoZXNlIHN0cmluZ3MsIG9yIHJlcXVpcmluZyBhIGNhc3QgaW4gdGhlIEMrKyBjb2RlLgoKMjAwNy0xMC0wOSAyMDo0NToxMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmg6IFVzZSBfX0ZVTkNUSU9OX18gaW5zdGVhZCBvZiBfX1BSRVRUWV9GVU5DVElPTl9fLCBpdCdzIHNpbGx5IHRvIHByaW50IHRoZSBlbnRpcmUgY2xhc3MvZnVuY3Rpb24gc2lnbmF0dS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBVc2UgX19GVU5DVElPTl9fIGluc3RlYWQgb2YgX19QUkVUVFlfRlVOQ1RJT05fXywgaXQncyBzaWxseQoJICB0byBwcmludCB0aGUgZW50aXJlIGNsYXNzL2Z1bmN0aW9uIHNpZ25hdHVyZSBpbnRvIHRoZSBsb2cKCSAgZmlsZSBmb3IgQysrIGNvZGUuICBUaGlzIG9ubHkgYWZmZWN0cyBDKysgY29kZSwgZm9yIEMgY29kZQoJICBldmVyeXRoaW5nIHJlbWFpbnMgdGhlIHNhbWUuCgoyMDA3LTEwLTA5IDE2OjIwOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBXb3JrIGFyb3VuZCBhIHByb2JsZW0gd2l0aCBwaXBlbGluZXMgY29udGFpbmluZyAoc2VtaSlsb29wcyB1bnRpbCBhIHByb3BlciwgbW9yZSBjb21wbGljYXRlZCBzb2x1dGlvbiBpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKHJlbW92ZV9mcm9tX3F1ZXVlKToKCSAgV29yayBhcm91bmQgYSBwcm9ibGVtIHdpdGggcGlwZWxpbmVzIGNvbnRhaW5pbmcgKHNlbWkpbG9vcHMgdW50aWwgYQoJICBwcm9wZXIsIG1vcmUgY29tcGxpY2F0ZWQgc29sdXRpb24gaXMgcmVhZHkuIFNlZSAjNDc1NDU1LgoKMjAwNy0xMC0wOSAxNDoxODozOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86IFB1dCBtb3JlIHN0cmluZ3MgaW50byB0aGUgR0xpYiBxdWFyayB0YWJsZS4gTm8gbmVlZCB0byBrZWVwIGEgaHVuZHJlZC1zb21ldGhpbmcgY29waWVzIG9mIGlkZW50aWNhbCB2ZXJzaW9uIHN0ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOgoJICBQdXQgbW9yZSBzdHJpbmdzIGludG8gdGhlIEdMaWIgcXVhcmsgdGFibGUuIE5vIG5lZWQgdG8ga2VlcAoJICBhIGh1bmRyZWQtc29tZXRoaW5nIGNvcGllcyBvZiBpZGVudGljYWwgdmVyc2lvbiBzdHJpbmdzLAoJICBsaWNlbnNlIHN0cmluZ3MsIHBhY2thZ2UgbmFtZSBzdHJpbmdzIGFuZCBwYWNrYWdlIG9yaWdpbgoJICBzdHJpbmdzIGFyb3VuZC4KCjIwMDctMTAtMDkgMTA6NDE6NDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDogRG9uJ3QgaW1wbHkgdGhhdCBpdCdzIG9rYXkgdG8gdW5jb25kaXRpb25hbGx5IGNoYW5nZSBidWZmZXIgZGF0YSBvciBidWZmZXIgbWV0YWQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZGF0YWFjY2Vzcy54bWw6CgkgIERvbid0IGltcGx5IHRoYXQgaXQncyBva2F5IHRvIHVuY29uZGl0aW9uYWxseSBjaGFuZ2UKCSAgYnVmZmVyIGRhdGEgb3IgYnVmZmVyIG1ldGFkYXRhIGluIGEgcGFkIHByb2JlIGNhbGxiYWNrLAoJICBhbmQgYSBidW5jaCBvZiBvdGhlciBjb21tZW50cy4gRml4ZXMgIzQzMDAzMS4KCjIwMDctMTAtMDggMjA6NDU6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9jb21tb24vOiBVcGRhdGUgZ2VuZXJhdGVkIGZpbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmM6CgkgICogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5oOgoJICAqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIFVwZGF0ZSBnZW5lcmF0ZWQgZmlsZXMuCgoyMDA3LTEwLTA4IDE3OjU5OjM1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtYXV0b3BsdWdnaW5nLnhtbDogUHJlZml4IHNlY3Rpb24gd2l0aCBicm9rZW4gY29kZSB3aXRoIGEgd2FybmluZyAoc2VlICMzNDI0MzIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1hdXRvcGx1Z2dpbmcueG1sOgoJICBQcmVmaXggc2VjdGlvbiB3aXRoIGJyb2tlbiBjb2RlIHdpdGggYSB3YXJuaW5nIChzZWUgIzM0MjQzMikuCgoyMDA3LTEwLTA4IDE3OjI2OjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvOiBDYWxsIGdfdGhyZWFkX2luaXQoKSBiZWZvcmUgZ19vcHRpb25fY29udGV4dF9uZXcoKSB0byBhdm9pZCB3YXJuaW5ncy4gU3BvdHRlZCBieSBSaXRlc2ggS2hhZGdhcmF5LiBGaXhlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FwcGVuZGl4LWludGVncmF0aW9uLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtaW5pdC54bWw6CgkgIENhbGwgZ190aHJlYWRfaW5pdCgpIGJlZm9yZSBnX29wdGlvbl9jb250ZXh0X25ldygpIHRvCgkgIGF2b2lkIHdhcm5pbmdzLiBTcG90dGVkIGJ5IFJpdGVzaCBLaGFkZ2FyYXkuIEZpeGVzICM0ODQyMjUuCgoyMDA3LTEwLTA4IDE3OjA1OjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBXaGVuIHdlIHJlY2VpdmVkIEVPUyBhbmQgYXJlIHdhaXRpbmcgZm9yIHdoZW4gdG8gcG9zdCB0aGUgRU9TIG1lc3NhZ2UsIG91ciBzdGF0ZSBpcyBwcmVyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcHJlcm9sbF9xdWV1ZV9mbHVzaCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdF91bmxvY2tlZCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdCksIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfbmVlZHNfcHJlcm9sbCksIChnc3RfYmFzZV9zaW5rX2NoYWluX3VubG9ja2VkKToKCSAgV2hlbiB3ZSByZWNlaXZlZCBFT1MgYW5kIGFyZSB3YWl0aW5nIGZvciB3aGVuIHRvIHBvc3QgdGhlIEVPUyBtZXNzYWdlLAoJICBvdXIgc3RhdGUgaXMgcHJlcm9sbGVkIGFuZCB3ZSBzaG91bGQgbm90IHJldHVybiBBU1lOQy4KCSAgUmVvcmdhbml6ZSBzb21lIGNvZGUgcGF0aHMgdG8gaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IuCgkgICogdGVzdHMvY2hlY2svZ2VuZXJpYy9zaW5rcy5jOiAoc2VuZF9lb3MpLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3NpbmtzX3N1aXRlKToKCSAgQWRkIHVuaXQgdGVzdCB0byB2ZXJpZnkgYWJvdmUgRU9TIGZpeC4KCjIwMDctMTAtMDggMTA6Mjg6MTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBNb3ZlIGRldGVjdGluZyB0aGUgaW5wdXQgY2FwcyBvZiB0aGUgc2lua3BhZCB0byB0aGUgc2V0Y2FwcyBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYXZlX3R5cGUpLCAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2luaXQpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X3NldGNhcHMpLCAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoYWluKToKCSAgTW92ZSBkZXRlY3RpbmcgdGhlIGlucHV0IGNhcHMgb2YgdGhlIHNpbmtwYWQgdG8gdGhlIHNldGNhcHMgZnVuY3Rpb24uCgkgIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSB0aGUgb3V0cHV0IGNhcHMgd2hlbiB3ZSByZWNlaXZlIG5ldyBpbnB1dCBjYXBzCgkgIGluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIHRoZSBmaXJzdCBkZXRlY3RlZCBjYXBzLgoKMjAwNy0xMC0wOCAxMDoyMToxNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRG9uJ3QgdHJ5IHRvIHByZXJvbGwgbm9uLWFzeW5jIGVsZW1lbnRzIGFmdGVyIGEgZmx1c2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBEb24ndCB0cnkgdG8gcHJlcm9sbCBub24tYXN5bmMgZWxlbWVudHMgYWZ0ZXIgYSBmbHVzaC4KCSAgU3VidHJhY3QgbGF0ZW5jeSBmb3JtIGNsb2NrIHRpbWVzIHdoZW4gcmVwb3J0aW5nIHBvc2l0aW9uLgoKMjAwNy0xMC0wNSAxNDo0NDoxOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFNtYWxsIGNvbW1lbnQgYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3BhdXNlX3Rhc2spOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBTbWFsbCBjb21tZW50IGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZS4KCjIwMDctMTAtMDUgMTQ6NDA6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogUmV3b3JrIHRoZSBsb2NraW5nIG9mIGJhc2VzcmMgaW4gYSBzaW1pbGFyIGZhc2hpb24gdG8gYmFzZXNpbmsuIFdlIGJhc2ljYWxseSBoYXZlIG9uZSBsb2MuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfd2FpdF9wbGF5aW5nKSwKCSAgKGdzdF9iYXNlX3NyY19zZXRfbGl2ZSksIChnc3RfYmFzZV9zcmNfaXNfbGl2ZSksCgkgIChnc3RfYmFzZV9zcmNfcXVlcnlfbGF0ZW5jeSksIChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X2V2ZW50KSwgKGdzdF9iYXNlX3NyY193YWl0KSwKCSAgKGdzdF9iYXNlX3NyY19kb19zeW5jKSwgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX3BhZF9nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLAoJICAoZ3N0X2Jhc2Vfc3JjX3VubG9jayksIChnc3RfYmFzZV9zcmNfdW5sb2NrX3N0b3ApLAoJICAoZ3N0X2Jhc2Vfc3JjX3NldF9mbHVzaGluZyksIChnc3RfYmFzZV9zcmNfc2V0X3BsYXlpbmcpLAoJICAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIFJld29yayB0aGUgbG9ja2luZyBvZiBiYXNlc3JjIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIGJhc2VzaW5rLiBXZQoJICBiYXNpY2FsbHkgaGF2ZSBvbmUgbG9jayAoTElWRV9MT0NLKSBwcm90ZWN0aW5nIHRoZSBkYXRhZmxvdy4gVGhpcyBhbGxvd3MKCSAgdXMgdG8gaGFuZGxlIGxpdmUgc291cmNlcyBhbmQgc2VtaSBsaXZlIG9uZXMgbXVjaCBiZXR0ZXIuCgkgIFNpbXBsaWZ5IGZsdXNoaW5nLgoJICBGaXggdW5sb2NraW5nIHdoZW4gc2Vla2luZywgc2h1dHRpbmcgZG93biBhbmQgcGF1c2luZyBpbiBsaXZlIHNvdXJjZXMuCgoyMDA3LTEwLTA1IDExOjUyOjM5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzogRml4IGNvbXBpbGF0aW9uIGFnYWluLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOiAocnVuX3BpcGVsaW5lKToKCSAgRml4IGNvbXBpbGF0aW9uIGFnYWluLgoKMjAwNy0xMC0wMyAxNToyNzoyNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogVXNlIG1lYW5pbmdmdWwgY2F0ZWdvcmllcyBmb3IgdGhlIGxvZ3MgdG8gY2xlYW4gdGhlIGRlZmF1bHQgb25lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBVc2UgbWVhbmluZ2Z1bCBjYXRlZ29yaWVzIGZvciB0aGUgbG9ncyB0byBjbGVhbiB0aGUgZGVmYXVsdCBvbmUuCgoyMDA3LTEwLTAzIDE1OjA1OjMwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9waXBlbGluZXMvY2xlYW51cC5jOiBQcmludCBtZXNzYWdlIG5hbWUgYW5kIG5vdCBqdXN0IG51bWJlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL2NsZWFudXAuYzoKCSAgUHJpbnQgbWVzc2FnZSBuYW1lIGFuZCBub3QganVzdCBudW1iZXIuCgoyMDA3LTEwLTAzIDE1OjAyOjQzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC10YWdyZWFkaW5nLnR4dDogQWRkIHNvbWUgbW9yZSB0aG91Z2h0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtdGFncmVhZGluZy50eHQ6CgkgIEFkZCBzb21lIG1vcmUgdGhvdWdodHMuCgoyMDA3LTEwLTAzIDE0OjUxOjAzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOiBQcmludCBtZXNzYWdlIG5hbWUgYW5kIG5vdCBqdXN0IG51bWJlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzoKCSAgUHJpbnQgbWVzc2FnZSBuYW1lIGFuZCBub3QganVzdCBudW1iZXIuCgoyMDA3LTEwLTAzIDEyOjA1OjE3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IFNwZWVkdXAgdHlwZWZpbmRpbmcuIFRoaXMgaXMgd29yayBpbiBwcm9ncmVzcyAoc2VlICM0NTk4NjIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkgIFNwZWVkdXAgdHlwZWZpbmRpbmcuIFRoaXMgaXMgd29yayBpbiBwcm9ncmVzcyAoc2VlICM0NTk4NjIpLgoKMjAwNy0xMC0wMyAxMTozNjoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5jOiBGaXggZG9jcyB0aGF0IG1lbnRpb24gJ3BsdWdpbl9kZXNjJyBpbnN0ZWFkIG9mICdnc3RfcGx1Z2luX2Rlc2MnLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgIEZpeCBkb2NzIHRoYXQgbWVudGlvbiAncGx1Z2luX2Rlc2MnIGluc3RlYWQgb2YgJ2dzdF9wbHVnaW5fZGVzYycuCgkgIFNwb3R0ZWQgYnkgSm9zZXAgVG9ycmEgVmFsbGVzIDxqb3NlcEBmbHVlbmRvLmNvbT4uCgoyMDA3LTEwLTAzIDExOjE2OjQ4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGNsb2NrLmg6IEZpeCB1cCBicm9rZW4gR1NUX0NMT0NLX0ZMQUdTIG1hY3JvIGFuZCBHc3RDbG9jayBkb2NzLiBUaGUgZmxhZ3MgZmllbGQgaGFzIG1vdmVkIHRvIEdzdE9iamVjdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgIEZpeCB1cCBicm9rZW4gR1NUX0NMT0NLX0ZMQUdTIG1hY3JvIGFuZCBHc3RDbG9jayBkb2NzLiBUaGUgZmxhZ3MKCSAgZmllbGQgaGFzIG1vdmVkIHRvIEdzdE9iamVjdC4KCjIwMDctMTAtMDIgMTU6MjA6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogQ2FsbCB1bmxvY2sgZm9yIGxpdmUgc291cmNlcyBzbyB0aGF0IHRoZXkgY2FuJ3QgZ2V0IHN0dWNrIGluIF9jcmVhdGUgYW5kIHByb2R1Y2UgYSBidWZmZXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zcmNfZ2V0X3JhbmdlKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBDYWxsIHVubG9jayBmb3IgbGl2ZSBzb3VyY2VzIHNvIHRoYXQgdGhleSBjYW4ndCBnZXQgc3R1Y2sgaW4gX2NyZWF0ZSBhbmQKCSAgcHJvZHVjZSBhIGJ1ZmZlciBiZWZvcmUgdGhleSBhcmUgc2V0IGJhY2sgdG8gUExBWUlORy4KCjIwMDctMTAtMDIgMDk6MjE6NDggKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IENvbW1lbnQgdGhlIHNlZ21lbnQtcmVsYXRlZCBjb2RlLi4uIGluIHRoZSBQUk9QRVIgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9sb2NrZWRfZW5xdWV1ZSksCgkgIChnc3RfcXVldWVfbG9ja2VkX2RlcXVldWUpOgoJICBDb21tZW50IHRoZSBzZWdtZW50LXJlbGF0ZWQgY29kZS4uLiBpbiB0aGUgUFJPUEVSIGZ1bmN0aW9uLgoJICBTZWUgIzQ4MjE0NyBhbmQgbXkgY29tbWl0IGZyb20geWVzdGVyZGF5LgoKMjAwNy0xMC0wMSAxNzo1OToyMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBBbHNvIGluaXRpYWxpemUgdGhlIGNvdW50ZXIgdGhhdCBjYWxjdWxhdGVzIHRoZSBmaXJzdCB0aW1lc3RhbXAgb24gYSBidWZmZXIgY29ycmVjdGx5IGZvci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBBbHNvIGluaXRpYWxpemUgdGhlIGNvdW50ZXIgdGhhdCBjYWxjdWxhdGVzIHRoZSBmaXJzdCB0aW1lc3RhbXAgb24gYQoJICBidWZmZXIgY29ycmVjdGx5IGZvciBub24tbGl2ZSBzb3VyY2VzLgoKMjAwNy0xMC0wMSAxMjozMToyOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogRGlzYWJsZSBjb2RlIHRoYXQncyBicmVha2luZyB0aGUgY3VycmVudC10aW1lLWxldmVsIHJlcG9ydGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2xvY2tlZF9kZXF1ZXVlKToKCSAgRGlzYWJsZSBjb2RlIHRoYXQncyBicmVha2luZyB0aGUgY3VycmVudC10aW1lLWxldmVsIHJlcG9ydGluZy4KCSAgU2VlICM0ODIxNDcKCjIwMDctMDktMzAgMTg6MTY6MzQgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IEFkZCBNX1BJIGFuZCBJTVBPUlRfU1lNQk9MIHRvIHRoZSBwcml2YXRlIHBhcnQgb2YgdGhlIEdzdEluZm8gc2VjdGlvbiBhcyB0aGV5IHNob3VsZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgTV9QSSBhbmQgSU1QT1JUX1NZTUJPTCB0byB0aGUgcHJpdmF0ZSBwYXJ0IG9mIHRoZSBHc3RJbmZvIHNlY3Rpb24KCSAgYXMgdGhleSBzaG91bGRuJ3Qgc2hvdyB1cC4gRml4ZXMgdGhlIGRvY3MgYnVpbGQuCgoyMDA3LTA5LTI5IDExOjQ2OjMxICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0aW5mby5oOiBBZGQgYW4gZXhwbGljaXQgdmFyaWFibGUgaW1wb3J0YXRpb24gbmVlZGVkIG9uIFZTNiAob25seSBmb3IgTVNDX1ZFUikKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uaDoKCSAgQWRkIGFuIGV4cGxpY2l0IHZhcmlhYmxlIGltcG9ydGF0aW9uIG5lZWRlZCBvbiBWUzYgKG9ubHkgZm9yIE1TQ19WRVIpCgkgIERlZmluZSBNX1BJIHdoaWNoIGlzIHVzZWQgaW4gZmlsZXMgd2hpY2ggYXJlIGluY2x1ZGluZyBnc3RpbmZvLmguCgkgIFZTNiBpbmNsdWRlcyBkb2Vzbid0IGRlZmluZSBpdC4KCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGNvbnRyb2xsZXIuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzLgoJICAqIHdpbjMyL3ZzNi9saWJnc3Rjb250cm9sbGVyLmRzcDoKCSAgKiB3aW4zMi92czYvbGliZ3N0cmVhbWVyLmRzcDoKCSAgVXBkYXRlIHRoZSBsaXN0IG9mIGZpbGVzIHRvIGJ1aWxkLgoKMjAwNy0wOS0yOCAxMDoyMjo0MCArMDAwMCAgRmVsaXBlIENvbnRyZXJhcyA8ZmVsaXBlLmNvbnRyZXJhc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IEltcHJvdmUgZGVidWdnaW5nLiBGaXhlcyAjNDgwODU4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEZlbGlwZSBDb250cmVyYXMgPGZlbGlwZSBkb3QgY29udHJlcmFzIGF0IGdtYWlsIGRvdCBjb20+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAodXBkYXRlX3RpbWVfbGV2ZWwpLCAoYXBwbHlfYnVmZmVyKSwKCSAgKGdzdF9xdWV1ZV9sb2NrZWRfZGVxdWV1ZSksIChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X3F1ZXVlX2NoYWluKSwgKGdzdF9xdWV1ZV9sb29wKSwgKGdzdF9xdWV1ZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIEltcHJvdmUgZGVidWdnaW5nLiBGaXhlcyAjNDgwODU4LgoKMjAwNy0wOS0yOCAxMDoxNToyMyArMDAwMCAgRmVsaXBlIENvbnRyZXJhcyA8ZmVsaXBlLmNvbnRyZXJhc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IEZpcnN0IHBhdGNoIG9mIGNvZGUgY2xlYW51cHMsIHVzZSB0aGUgbWFjcm9zIGFuZCByaWdodCBhcmd1bWVudHMgaW4gdGhlIG1hY3JvcyB0byBzaWduYWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBGZWxpcGUgQ29udHJlcmFzIDxmZWxpcGUgZG90IGNvbnRyZXJhcyBhdCBnbWFpbCBkb3QgY29tPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCk6CgkgIEZpcnN0IHBhdGNoIG9mIGNvZGUgY2xlYW51cHMsIHVzZSB0aGUgbWFjcm9zIGFuZCByaWdodCBhcmd1bWVudHMgaW4gdGhlCgkgIG1hY3JvcyB0byBzaWduYWwgYW5kIGxvY2sgdGhlIHF1ZXVlLiBTZWUgIzQ4MDg1OC4KCjIwMDctMDktMjYgMTg6MDY6NDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVzLmM6IEltcHJvdmUgZGVidWdnaW5nIHdoZW4gZGVhbGluZyB3aXRoIF9wb2xsKCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKHBvbGxfZnVuYyk6CgkgIEltcHJvdmUgZGVidWdnaW5nIHdoZW4gZGVhbGluZyB3aXRoIF9wb2xsKCkuCgoyMDA3LTA5LTI2IDE4OjA0OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IEZpeCBtZW1vcnkgbGVhayBJIGludHJvZHVjZWQgYSBmZXcgZGF5cyBhZ28uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOgoJICBGaXggbWVtb3J5IGxlYWsgSSBpbnRyb2R1Y2VkIGEgZmV3IGRheXMgYWdvLgoKMjAwNy0wOS0yNiAxNzowMDoyMiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBNYWtlIGl0IG9uY2UgYWdhaW4gcG9zc2libGUgdG8gZnJlZSBHc3RCdWZmZXJzIGluIHRoZSBkZWZhdWx0IGJ1aWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX2ZpbmFsaXplKToKCSAgTWFrZSBpdCBvbmNlIGFnYWluIHBvc3NpYmxlIHRvIGZyZWUgR3N0QnVmZmVycyBpbiB0aGUgZGVmYXVsdAoJICBidWlsZC4KCSAgVGhlIHBvaXNvbmluZyBzY3JpYmJsZXMgb24gcGFydHMgb2YgdGhlIG1pbmlvYmplY3Qgd2UgbmVlZCBpbgoJICBvcmRlciB0byBmcmVlIGl0LgoJICBGaXhlcyAjNDgwMzQxCgoyMDA3LTA5LTI1IDE4OjM1OjM5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgR1NUX1RBR19DT01QT1NFUiwgZml4ZXMgIzQ1OTgwOS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIEFQSTogYWRkIEdTVF9UQUdfQ09NUE9TRVIsIGZpeGVzICM0NTk4MDkuCgoyMDA3LTA5LTI0IDE3OjQxOjI1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLio6IEFkZCB0aGUgMy1jbGF1c2UgQlNEIGxpY2Vuc2UgYW5kIHRoZSBNSVQvWDExIGxpY2Vuc2UgdG8gdGhlIGxpY2Vuc2UgbGlzdC4gRml4ZXMgIzQ3OTc4NC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOgoJICAqIGdzdC9nc3RwbHVnaW4uaDoKCSAgQWRkIHRoZSAzLWNsYXVzZSBCU0QgbGljZW5zZSBhbmQgdGhlIE1JVC9YMTEgbGljZW5zZSB0byB0aGUgbGljZW5zZQoJICBsaXN0LiBGaXhlcyAjNDc5Nzg0LgoKMjAwNy0wOS0yNCAxNzoyMjoyMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvZmFxL2dldHRpbmcueG1sOiBBZGQgUStBIGFib3V0IGRpZmZlcmVudCBHU3RyZWFtZXIgdmVyc2lvbnMgKCMzNjQwNTYpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nZXR0aW5nLnhtbDoKCSAgQWRkIFErQSBhYm91dCBkaWZmZXJlbnQgR1N0cmVhbWVyIHZlcnNpb25zICgjMzY0MDU2KS4KCjIwMDctMDktMjQgMTI6NDY6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJldHVybiBjb3JyZWN0IGdib29sZWFuIGZyb20gcXVlcnkgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcXVlcnlfbGF0ZW5jeSksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgUmV0dXJuIGNvcnJlY3QgZ2Jvb2xlYW4gZnJvbSBxdWVyeSBmdW5jdGlvbi4KCjIwMDctMDktMjQgMTI6Mjk6MjMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNpbXBsaWZ5IGxhdGVuY3kgcXVlcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcXVlcnlfbGF0ZW5jeSksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBTaW1wbGlmeSBsYXRlbmN5IHF1ZXJ5LgoJICBXaGVuIG5vdCBzeW5jaHJvbml6aW5nLCB3ZSBjYW4gcmVwb3J0IGxhdGVuY3kgd2l0aG91dCBxdWVyeWluZyB0aGUgcGVlcgoJICBlbGVtZW50LgoKMjAwNy0wOS0yNCAxMTo0NjozNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEZpeCBzbWFsbCB0eXBvcyBpbiB0aGUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBGaXggc21hbGwgdHlwb3MgaW4gdGhlIGRvY3MuCgoyMDA3LTA5LTI0IDExOjIyOjI2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vOiBEb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIHR5cG8gZml4ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LXB1c2gtcHVsbC50eHQ6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtdGFncmVhZGluZy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1NVC1yZWZjb3VudGluZy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1hY3RpdmF0aW9uLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtc291cmNlLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RiaW4udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0ZWxlbWVudC50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RvYmplY3QudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0cGlwZWxpbmUudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbWVzc2FnZXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcHJlcm9sbC50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1wdXNoLXB1bGwudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcW9zLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXF1ZXJ5LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXNjaGVkdWxpbmcudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc2Vla2luZy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWdtZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zdGF0ZXMudHh0OgoJICBEb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIHR5cG8gZml4ZXMuCgoyMDA3LTA5LTIzIDEwOjE2OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOiBBZGQgc29tZSBkZWJ1ZyB0ZXh0IHRvIGVycm9yIG1lc3NhZ2UgdG8gaW5kaWNhdGUgdGhhdCB3ZSBlcnJvcmVkIG91dCBvbiByZXF1ZXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkgIEFkZCBzb21lIGRlYnVnIHRleHQgdG8gZXJyb3IgbWVzc2FnZSB0byBpbmRpY2F0ZSB0aGF0CgkgIHdlIGVycm9yZWQgb3V0IG9uIHJlcXVlc3QuCgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBXaGVuIHRoZSBzdGF0ZSBjaGFuZ2UgdG8gUExBWUlORyBmYWlscywgY2hlY2sgZm9yIGFuCgkgIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJ1cyBhbmQgcHJpbnQgaXQuCgoyMDA3LTA5LTIyIDE3OjIyOjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2NzLnBvOgoJKiBwby9odS5wbzoKCSogcG8vdWsucG86CgkgIHVwZGF0ZWQgdHJhbnNsYXRpb25zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGVkIHRyYW5zbGF0aW9ucwoKMjAwNy0wOS0yMiAxNzoxODo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwby86IEFkZGVkIFNwYW5pc2ggdHJhbnNsYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB0cmFuc2xhdGVkIGJ5OiBKb3JnZSBHb256w6FsZXogR29uesOhbGV6IDxhbG9yaWVsQGdtYWlsLmNvbT4KCSAgKiBwby9MSU5HVUFTOgoJICAqIHBvL2VzLnBvOgoJICBBZGRlZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgoKMjAwNy0wOS0yMSAxNDozNzozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogRml4IHByaW50ZiBhcmd1bWVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9wdXNoX29uZSk6CgkgIEZpeCBwcmludGYgYXJndW1lbnRzLgoKMjAwNy0wOS0yMCAxMDozNjoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogSW1wcm92ZWQgc3RhdGUgY2hhbmdlIHVuaXQgdGVzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzoKCSAgSW1wcm92ZWQgc3RhdGUgY2hhbmdlIHVuaXQgdGVzdC4KCjIwMDctMDktMjAgMDc6NDI6MzUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RiaW4uaDogTW92ZSBwcml2IHRvIHRoZSByaWdodCBwbGFjZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBNb3ZlIHByaXYgdG8gdGhlIHJpZ2h0IHBsYWNlLgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICBBZGQgRklYTUU6IGFuZCBpbXByb3ZlIGxvZy4KCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9leGFtcGxlcy9tYW51YWwvTWFrZWZpbGUuYW06CgkgIFdvcmsgd2l0aCBhbGwgdHlwZXMgb2YgcmVnaXN0cmllcy4KCjIwMDctMDktMTkgMjA6Mzk6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogRG9uJ3QgdW5yZWYgdGhlIGV2ZW50IGFmdGVyIHB1c2hpbmcgaXQuIEZpeGVzICM0Nzg0MDEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpOgoJICBEb24ndCB1bnJlZiB0aGUgZXZlbnQgYWZ0ZXIgcHVzaGluZyBpdC4gRml4ZXMgIzQ3ODQwMS4KCjIwMDctMDktMTkgMTg6MDc6MTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIElnbm9yZSByZWdpc3RyaWVzIGluIGFueSBmb3JtYXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIC5jdnNpZ25vcmU6CgkgICogdGVzdHMvZXhhbXBsZXMvbWFudWFsLy5jdnNpZ25vcmU6CgkgIElnbm9yZSByZWdpc3RyaWVzIGluIGFueSBmb3JtYXQuCgoyMDA3LTA5LTE5IDEzOjI4OjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaDogQWRkIGNvbXBhdGliaWxpdHkgbWFjcm8gZm9yIGdfaW50ZXJuX3N0cmluZygpIGZvcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oOgoJICBBZGQgY29tcGF0aWJpbGl0eSBtYWNybyBmb3IgZ19pbnRlcm5fc3RyaW5nKCkgZm9yCgkgIEdMaWItMi44IChhbnkgcmVhc29uIHdlIGNhbid0IGp1c3QgYnVtcCB0aGUKCSAgcmVxdWlyZW1lbnQgdG8gYXQgbGVhc3QgMi4xMD8pCgkgICogZ3N0L2dzdHBhZHRlbXBsYXRlLmg6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6CgkgIE1ha2UgR3N0U3RhdGljUGFkVGVtcGxhdGUncyB0ZW1wbF9uYW1lIGZpZWxkIGEgY29uc3QgZ2NoYXIgKiBhbmQgZml4CgkgIHVwIHRoZSBpbnRlcm5hbCBjb2RlIGFjY29yZGluZ2x5LiAgVGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLCBzaW5jZQoJICB0aGVyZSBpcyBubyByZWFzb24gZXh0ZXJuYWwgY29kZSBjb3VsZCBldmVyIGFzc3VtZSB0aGUgc3RyaW5nIGluIHN1Y2gKCSAgYSBzdHJ1Y3R1cmUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHVubGVzcyBpdCBkaWQgdGhhdCBpdHNlbGY7ICB0aGUKCSAgdXNlIG9mIGdfc3RyZHVwKCkgaXMgcHJpdmF0ZSB0byBlbGVtZW50IGZhY3Rvcmllcy4gIFRoZSBuZXcgY29kZSBhbHNvCgkgIHNhdmVzIHNvbWUgbWVtb3J5IGJ5IHB1dHRpbmcgcGFkIHRlbXBsYXRlIG5hbWUgc3RyaW5ncyBpbnRvIHRoZSBHTGliCgkgIHF1YXJrIHRhYmxlIGluc3RlYWQgb2YgYWxsb2NhdGluZyB0aGVtIGR5bmFtaWNhbGx5LgoJICBEZWNsYXJpbmcgdGhpcyBmaWVsZCBjb25zdGFudCBmaXhlcyB3YXJuaW5ncyB3aXRoIGcrKy00LjIgd2hlbiB1c2luZwoJICB0aGUgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgbWFjcm8gaW4gYysrIGNvZGUgKCM0NzgwOTIpLgoKMjAwNy0wOS0xOSAxMjozMToxNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IFJlbGVhc2Ugc3RhdGljIGNhcHMuIEZpeGVzICM0NzU3MjMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICBSZWxlYXNlIHN0YXRpYyBjYXBzLiBGaXhlcyAjNDc1NzIzLgoKMjAwNy0wOS0xOCAyMjoxMzo1NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmZvLio6IE1ha2Ugc29tZSBpbnRlcm5hbCBBUEkgdGFrZSBjb25zdCBnY2hhciAqIGluc3RlYWQgb2YganVzdCBnY2hhciAqIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggZysrLS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgIE1ha2Ugc29tZSBpbnRlcm5hbCBBUEkgdGFrZSBjb25zdCBnY2hhciAqIGluc3RlYWQgb2YganVzdAoJICBnY2hhciAqIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggZysrLTQuMi4yIHdoZW4KCSAgcGFzc2luZyBzdHJpbmcgY29uc3RhbnRzIChwYXJ0aWFsbHkgZml4ZXMgIzQ3ODA5MikuCgoyMDA3LTA5LTE3IDIwOjU1OjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBBIGxhdGVuY3kgcXVlcnkgZmFpbHMgd2hlbiBvbmUgb2YgdGhlIHNpbmtzIGZhaWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGJpbl9xdWVyeV9sYXRlbmN5X2ZvbGQpLCAoZ3N0X2Jpbl9xdWVyeSk6CgkgIEEgbGF0ZW5jeSBxdWVyeSBmYWlscyB3aGVuIG9uZSBvZiB0aGUgc2lua3MgZmFpbC4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2V0X2Jhc2VfdGltZSk6CgkgIEltcHJvdmUgZGVidWdnaW5nLgoKMjAwNy0wOS0xNyAxNzoxNzoyOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBGaXggbWlub3IgY29tcGlsYXRpb24gd2FybmluZ3Mgc2hvd24gd2l0aCBGb3J0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jb250aW51ZV9mdW5jKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kb19zeW5jKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWRfZnVsbCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfbG9vcCk6CgkgIEZpeCBtaW5vciBjb21waWxhdGlvbiB3YXJuaW5ncyBzaG93biB3aXRoIEZvcnRlLgoKMjAwNy0wOS0xNyAwNjowMTo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogTWVhc3VyZSBxdWV1ZSBsZXZlbCBiYXNlZCBvbiB0aGUgZGlmZiBiZXR3ZWVuIGhlYWQgYW5kIHRhaWwgdGltZXN0YW1wcyBldmVuIHdoZW4gcHVzaGluZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChhcHBseV9idWZmZXIpLAoJICAoZ3N0X3F1ZXVlX2xvY2tlZF9lbnF1ZXVlKSwgKGdzdF9xdWV1ZV9sb2NrZWRfZGVxdWV1ZSk6CgkgIE1lYXN1cmUgcXVldWUgbGV2ZWwgYmFzZWQgb24gdGhlIGRpZmYgYmV0d2VlbiBoZWFkIGFuZCB0YWlsIHRpbWVzdGFtcHMKCSAgZXZlbiB3aGVuIHB1c2hpbmcgdGhlIGZpcnN0IGJ1ZmZlci4KCjIwMDctMDktMTQgMjM6MDY6MzEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNpbmtzIHRoYXQgZG9uJ3QgcHJlcm9sbCBjYW4gYWx3YXlzIGJlIHF1ZXJpZWQgZm9yIHRoZSBsYXRlbmN5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZmx1c2gpLAoJICAoZ3N0X2Jhc2Vfc2lua19ldmVudCksIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIFNpbmtzIHRoYXQgZG9uJ3QgcHJlcm9sbCBjYW4gYWx3YXlzIGJlIHF1ZXJpZWQgZm9yIHRoZSBsYXRlbmN5LgoJICBEb24ndCBwb3N0IEFTWU5DIHN0YXJ0IHdoZW4gd2UgYXJlIG5vdCBhc3luYy4KCjIwMDctMDktMTQgMjA6MjQ6MjIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLio6IFdoZW4gZG93bnN0cmVhbSByZXR1cm5zIFVORVhQRUNURUQgZnJvbSBwdXNoaW5nIGEgYnVmZmVyLCBkb24ndCB0cnkgdG8gcHVzaCBtb3JlIGJ1ZmZlcnMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2xvY2tlZF9lbnF1ZXVlKSwKCSAgKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksIChnc3RfcXVldWVfY2hhaW4pLAoJICAoZ3N0X3F1ZXVlX3B1c2hfb25lKSwgKGdzdF9xdWV1ZV9oYW5kbGVfc3JjX3F1ZXJ5KSwKCSAgKGdzdF9xdWV1ZV9zaW5rX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X3F1ZXVlX3NyY19hY3RpdmF0ZV9wdXNoKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmg6CgkgIFdoZW4gZG93bnN0cmVhbSByZXR1cm5zIFVORVhQRUNURUQgZnJvbSBwdXNoaW5nIGEgYnVmZmVyLCBkb24ndCB0cnkgdG8KCSAgcHVzaCBtb3JlIGJ1ZmZlcnMgYnV0IGFsbG93IHB1c2hpbmcgb2YgRU9TIGFuZCBORVdTRUdNRU5ULgoJICBBZGQgc29tZSBtb3JlIGRlYnVnIGluZm8gaGVyZSBhbmQgdGhlcmUuIEZpeGVzICM0NzY1MTQuCgoyMDA3LTA5LTE0IDE1OjUyOjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBMYXRlbmN5IHF1ZXJ5IGlzIGFsbG93ZWQgYWZ0ZXIgd2UgYXJlIHByZXJvbGxlZC4gSW50cm9kdWNlIGEgbmV3IGZsYWcgZm9yIHRoaXMgYW5kIHN0b3AgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZmx1c2gpLCAoZ3N0X2Jhc2Vfc2lua19jb21taXRfc3RhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua193YWl0X3ByZXJvbGwpLCAoZ3N0X2Jhc2Vfc2lua19uZWVkc19wcmVyb2xsKSwKCSAgKGdzdF9iYXNlX3Npbmtfc2V0X2ZsdXNoaW5nKSwgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBMYXRlbmN5IHF1ZXJ5IGlzIGFsbG93ZWQgYWZ0ZXIgd2UgYXJlIHByZXJvbGxlZC4gSW50cm9kdWNlIGEgbmV3IGZsYWcKCSAgZm9yIHRoaXMgYW5kIHN0b3AgYWJ1c2luZyBvdGhlciB2YXJpYWJsZXMuCgoyMDA3LTA5LTEzIDIzOjUzOjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFB1c2ggT09CIGV2ZW50cyBkb3duc3RyZWFtIHdoZW4gd2UgZ2V0IHRoZW0gaW4gc2VuZF9ldmVudC4gVGhpcyBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpOgoJICBQdXNoIE9PQiBldmVudHMgZG93bnN0cmVhbSB3aGVuIHdlIGdldCB0aGVtIGluIHNlbmRfZXZlbnQuIFRoaXMgYWxsb3dzCgkgIHRoZSBhcHBsaWNhdGlvbiB0byBpbnNlcnQgZXZlbnRzIGluIHRoZSBwaXBlbGluZS4KCSAgQWRkIHNvbWUgbW9yZSBjb21tZW50cy4KCjIwMDctMDktMTMgMjE6Mjc6MzMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBNb3ZlIGxhdGVuY3kgcXVlcnkgZnJvbSBHc3RQaXBlbGluZSB0byBHc3RCaW4gc28gdGhhdCB3ZSBjYW4gYWxzbyB1c2UgaXQgd2hlbiBhc3luYy1oYW5kbGluZyBpcyBlbmFibGVkIG9uIGJpbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChjbGVhcl9xdWV1ZSksCgkgIChkb19iaW5fbGF0ZW5jeSksIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICBNb3ZlIGxhdGVuY3kgcXVlcnkgZnJvbSBHc3RQaXBlbGluZSB0byBHc3RCaW4gc28gdGhhdCB3ZSBjYW4gYWxzbwoJICB1c2UgaXQgd2hlbiBhc3luYy1oYW5kbGluZyBpcyBlbmFibGVkIG9uIGJpbnMuCgoyMDA3LTA5LTEzIDIxOjE5OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFVwZGF0ZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19xdWVyeV9sYXRlbmN5KSwKCSAgKGdzdF9iYXNlX3NyY19kb19zeW5jKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBVcGRhdGUgZG9jcy4KCSAgQ2xlYW4gdXAgdGhlIHRpbWVzdGFtcGluZyBhbmQgc3luY2luZyBjb2RlIGZvciBwc2V1ZG8gbGl2ZSBzb3VyY2VzLgoKMjAwNy0wOS0xMyAxOToyNzo1MyArMDAwMCAgU3RldmUgRmluayA8c3BoaW5rQGdtYWlsLmNvbT4KCgkgIGRvY3MvbWFudWFsL2FwcGVuZGl4LWNoZWNrbGlzdC54bWw6IE1lbnRpb24gbGVzcyAtUiBzd2l0Y2ggaW4gdGhlIHNlY3Rpb24gYWJvdXQgZGVidWcgb3V0cHV0ICgjNDc0MDU1KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTdGV2ZSBGaW5rICA8c3BoaW5rIGdtYWlsIGNvbT4KCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1jaGVja2xpc3QueG1sOgoJICBNZW50aW9uIGxlc3MgLVIgc3dpdGNoIGluIHRoZSBzZWN0aW9uIGFib3V0IGRlYnVnIG91dHB1dCAoIzQ3NDA1NSkuCgoyMDA3LTA5LTEzIDE3OjE1OjM4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBRdWV1ZSBjYW4gbGF0ZW5jeSB0byB0aGUgcGlwZWxpbmUgdXAgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IHNpemUgaW4gdGltZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2hhbmRsZV9zcmNfcXVlcnkpOgoJICBRdWV1ZSBjYW4gbGF0ZW5jeSB0byB0aGUgcGlwZWxpbmUgdXAgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IHNpemUgaW4gdGltZS4KCSAgUmVwb3J0IHRoaXMgZmFjdCBpbiB0aGUgbGF0ZW5jeSBxdWVyeS4KCjIwMDctMDktMTMgMDk6MDg6MjMgKzAwMDAgIFNlYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IFVzZSBnc3RfZ3VpbnQ2NF90b19nZG91YmxlKCkgd2hlbiBjb252ZXJ0aW5nIGZyb20gYSB1aW50NjQgb3IKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTZWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW4gYXQgbW91dHRlIGRvdCBuZXQ+CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RsZm9jb250cm9sc291cmNlLmM6CgkgIFVzZSBnc3RfZ3VpbnQ2NF90b19nZG91YmxlKCkgd2hlbiBjb252ZXJ0aW5nIGZyb20gYSB1aW50NjQgb3IKCSAgR3N0Q2xvY2tUaW1lIHRvIGRvdWJsZSB0byBmaXggdGhlIGJ1aWxkIG9uIHdpbjMyLiBGaXhlcyAjNDc0MzcxLgoKMjAwNy0wOS0xMyAwODo0Mjo1NSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBJbXBsZW1lbnQgcG9pc29uaW5nIGZvciBHc3RCdWZmZXIgaWYgLS1lbmFibGUtcG9pc29uaW5nIGlzIHNwZWNpZmllZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X2J1ZmZlcl9maW5hbGl6ZSk6CgkgIEltcGxlbWVudCBwb2lzb25pbmcgZm9yIEdzdEJ1ZmZlciBpZiAtLWVuYWJsZS1wb2lzb25pbmcgaXMgc3BlY2lmaWVkLgoJICBXaGVuIGZpbmFsaXppbmcgYSBidWZmZXIgdGhlIGNvbXBsZXRlIHN0cnVjdCBpcyBmaWxsZWQgd2l0aCAweGZmLAoJICB0aHVzIG1ha2luZyBhIHVzZSBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBmaW5hbCB1bnJlZiBpbXBvc3NpYmxlLgoKMjAwNy0wOS0xMyAwODozNjozNyArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IFVzZSBmYWlsX3VubGVzc19lcXVhbHNfaW50KGEsIGIpIGluc3RlYWQgb2YgZmFpbF91bmxlc3NfZXF1YWxzIChhID09IGIpIHRvIGdldCBiZXR0ZXIgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVc2UgZmFpbF91bmxlc3NfZXF1YWxzX2ludChhLCBiKSBpbnN0ZWFkIG9mCgkgIGZhaWxfdW5sZXNzX2VxdWFscyAoYSA9PSBiKSB0byBnZXQgYmV0dGVyIG91dHB1dCBvbiBmYWlsdXJlcy4KCjIwMDctMDktMTIgMTY6MzU6NDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0dXJpLmM6IEFsc28gY2hlY2sgZm9yIHRoZSBvdGhlciBmaWxlIFVSSSB2YXJpYW50IG9uIHdpbjMyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXJpLmM6CgkgIEFsc28gY2hlY2sgZm9yIHRoZSBvdGhlciBmaWxlIFVSSSB2YXJpYW50IG9uIHdpbjMyLgoKMjAwNy0wOS0xMiAxMjozNjo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R1cmkuYzogSWYgdGhlcmUncyBubyBob3N0bmFtZSwgd2Ugd2FudCB0byByZXR1cm4gJ2M6L2Zvby9iYXIudHh0JyBhbmQgbm90ICcvYzovZm9vL2Jhci50eHQnIG9uIFdpbmRvd3MuIEZpeGVzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXJpLmM6IChnc3RfdXJpX2dldF9sb2NhdGlvbik6CgkgIElmIHRoZXJlJ3Mgbm8gaG9zdG5hbWUsIHdlIHdhbnQgdG8gcmV0dXJuICdjOi9mb28vYmFyLnR4dCcKCSAgYW5kIG5vdCAnL2M6L2Zvby9iYXIudHh0JyBvbiBXaW5kb3dzLiBGaXhlcyAjNDY5NDAyLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1cmkuYzoKCSAgVW5pdCB0ZXN0IGZvciB0aGUgYWJvdmUgYW5kIGEgZmV3IG1vcmUgdGhpbmdzLgoKMjAwNy0wOS0xMSAyMzoyNzo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtbGl2ZS1zb3VyY2UudHh0OiBBZGQgZG9jcyBvbiBob3cgbGl2ZSBzb3VyY2VzIHNob3VsZCB0aW1lc3RhbXAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbGl2ZS1zb3VyY2UudHh0OgoJICBBZGQgZG9jcyBvbiBob3cgbGl2ZSBzb3VyY2VzIHNob3VsZCB0aW1lc3RhbXAuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZG9fc3luYyk6CgkgIEFkZCBzb21lIG1vcmUgZGVidWcgaW5mby4KCSAgRm9yIHN1YmNsYXNzZXMgdGhhdCBhcmUgbGl2ZSBhbmQgbGlrZSB0byBzeW5jLCBhZGQgYWRpdGlvbmFsIHN0YXJ0dXAKCSAgbGF0ZW5jeSB0byBzeW5jIHRpbWUgYW5kIHRpbWVzdGFtcHMgc28gdGhhdCB3ZSB0aW1zdGFtcCBhY2NvcmRpbmcgdG8gdGhlCgkgIGRlc2lnbiBkb2MuCgoyMDA3LTA5LTExIDE4OjU5OjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBBbHNvIGRvIGEgZ190eXBlX2NsYXNzX3JlZigpIGZvciB0aGUgc3ViYnVmZmVyIHR5cGUgaW4gdGhlIGluaXQgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgQWxzbyBkbyBhIGdfdHlwZV9jbGFzc19yZWYoKSBmb3IgdGhlIHN1YmJ1ZmZlciB0eXBlIGluCgkgIHRoZSBpbml0IGZ1bmN0aW9uLgoKMjAwNy0wOS0xMSAxNTo1NTo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBmdW5jdGlvbiB0byBwZXJmb3JtIGEgcXVlcnkgb24gdGhlIHBlZXIgb2YgYSBwYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9wZWVyX3F1ZXJ5KToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIEFkZCBmdW5jdGlvbiB0byBwZXJmb3JtIGEgcXVlcnkgb24gdGhlIHBlZXIgb2YgYSBwYWQuCgkgIEFQSTogZ3N0X3BhZF9wZWVyX3F1ZXJ5KCkKCjIwMDctMDktMTEgMTM6NDM6NTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOiBDbGVhbnVwIHRoZSB0ZXN0IGEgbGl0dGxlICh1c2UgZ3N0LWxvZ2dpbmcgYW5kIG5vdCBnX21lc3NhZ2UpLiBJbXByb3ZlIHRlc3QgdG8gY2hlYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgQ2xlYW51cCB0aGUgdGVzdCBhIGxpdHRsZSAodXNlIGdzdC1sb2dnaW5nIGFuZCBub3QgZ19tZXNzYWdlKS4gSW1wcm92ZQoJICB0ZXN0IHRvIGNoZWNrIGlmIGEgd2FpdCByZWFjaGVkIHRoZSB0YXJnZXQuCgoyMDA3LTA5LTExIDEwOjMzOjE0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBBUEkgdG8gZG9jcyBhbmQgZml4IHRoZSBidWlsZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBBUEkgdG8gZG9jcyBhbmQgZml4IHRoZSBidWlsZC4KCjIwMDctMDktMTAgMTY6NTA6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuKjogQWRkIHByb3BlcnR5IHRvIG1ha2UgdGhlIGJhc2VzcmMgdGltZXN0YW1wIGJ1ZmZlcnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgcnVubmluZyB0aW1lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19pbml0KSwgKGdzdF9iYXNlX3NyY19zZXRfZG9fdGltZXN0YW1wKSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfZG9fdGltZXN0YW1wKSwgKGdzdF9iYXNlX3NyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Jhc2Vfc3JjX2dldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zcmNfZG9fc3luYyk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIEFkZCBwcm9wZXJ0eSB0byBtYWtlIHRoZSBiYXNlc3JjIHRpbWVzdGFtcCBidWZmZXJzIGJhc2VkIG9uIHRoZSBjdXJyZW50CgkgIHJ1bm5pbmcgdGltZS4KCSAgQVBJOiBHc3RCYXNlU3JjOjpkby10aW1lc3RhbXAKCSAgQVBJOiBnc3RfYmFzZV9zcmNfc2V0X2RvX3RpbWVzdGFtcCgpCgkgIEFQSTogZ3N0X2Jhc2Vfc3JjX2dldF9kb190aW1lc3RhbXAoKQoKMjAwNy0wOS0wOCAyMDoyNTo1NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcmFuZG9tL3JlbGVhc2U6IFJlYWxseSBtYWtlIHN1cmUgdHJhbnNsYXRpb25zIGFyZSB1cC10by1kYXRlIGJlZm9yZSBhIHJlbGVhc2UgKCM0NjUwMTApLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICBSZWFsbHkgbWFrZSBzdXJlIHRyYW5zbGF0aW9ucyBhcmUgdXAtdG8tZGF0ZSBiZWZvcmUKCSAgYSByZWxlYXNlICgjNDY1MDEwKS4KCjIwMDctMDktMDcgMTQ6NDY6NTIgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBhZGQgbGF0ZXN0IGhlYWRlciBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGxhdGVzdCBoZWFkZXIgZmlsZXMKCjIwMDctMDktMDcgMDQ6NTA6MjMgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBBbHdheXMgZGVzdHJveSB0aGUgdGltZXIsIGFsc28gaW4gZXJyb3IgY2FzZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9yZWFkX2NhY2hlKToKCSAgQWx3YXlzIGRlc3Ryb3kgdGhlIHRpbWVyLCBhbHNvIGluIGVycm9yIGNhc2VzLgoKMjAwNy0wOS0wNSAyMjoyOTo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC14bWwueG1sOiBGaXggWE1MIGV4YW1wbGUgY29kZS4gRml4ZXMgIzQ3MjcxNC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvaGlnaGxldmVsLXhtbC54bWw6CgkgIEZpeCBYTUwgZXhhbXBsZSBjb2RlLiBGaXhlcyAjNDcyNzE0LgoKMjAwNy0wOS0wNSAyMjoxMjo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogUHJvdGVjdCBlb3MgYW5kIGhhdmVfcHJlcm9sbCB3aXRoIHRoZSBPQkpFQ1QgbG9jayBzbyB3ZSBkb24ndCBuZWVkIHRvIHRha2UgdGhlIFBSRVJPTEwgbC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZmx1c2gpLAoJICAoZ3N0X2Jhc2Vfc2lua193YWl0X3ByZXJvbGwpLCAoZ3N0X2Jhc2Vfc2lua19uZWVkc19wcmVyb2xsKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBQcm90ZWN0IGVvcyBhbmQgaGF2ZV9wcmVyb2xsIHdpdGggdGhlIE9CSkVDVCBsb2NrIHNvIHdlIGRvbid0IG5lZWQgdG8KCSAgdGFrZSB0aGUgUFJFUk9MTCBsb2NrIHdoZW4gcXVlcnlpbmcgdGhlIGxhdGVuY3kuIEZpeGVzICM0NzM4NDYuCgoyMDA3LTA5LTA1IDEzOjI0OjMxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBHaXZlIHNvbWUgbG9nLW1lc3NhZ2VzIGEgY2F0ZWdvcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6CgkgIEdpdmUgc29tZSBsb2ctbWVzc2FnZXMgYSBjYXRlZ29yeS4KCjIwMDctMDktMDUgMDE6MDA6NTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IEZpeCBmcmFjdGlvbiBsaXN0IGZpeGF0aW9uIGNvZGUuIFRha2UgdGhlIGZyYWN0aW9uIHdpdGggdGhlIHNtYWxsZXN0IGRpZmZlcmVuY2Ugd2l0aCB0aGUgdGFyZ2V0IGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICAoZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbik6CgkgIEZpeCBmcmFjdGlvbiBsaXN0IGZpeGF0aW9uIGNvZGUuIFRha2UgdGhlIGZyYWN0aW9uIHdpdGggdGhlIHNtYWxsZXN0CgkgIGRpZmZlcmVuY2Ugd2l0aCB0aGUgdGFyZ2V0IGluc3RlYWQgb2YgdGhlIGZpcnN0IG9uZSBpbiB0aGUgbGlzdC4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3RydWN0dXJlLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3Rfc3RydWN0dXJlX3N1aXRlKToKCSAgQWRkZWQgdGVzdCB0byB2ZXJpZnkgY29ycmVjdCBmcmFjdGlvbiBsaXN0IGZpeGF0aW9uIGJlaGF2aW91ci4KCjIwMDctMDktMDIgMjA6MzA6MTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjogRXhwb3J0IGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaCB0b28uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBFeHBvcnQgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoIHRvby4KCjIwMDctMDgtMzAgMTc6NTA6NTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBZGQgbmV3IG1ldGhvZHMgdG8gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBtZXRob2RzIHRvIGRvY3MuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NpbmtfaW5pdCksIChnc3RfYmFzZV9zaW5rX3NldF90c19vZmZzZXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfdHNfb2Zmc2V0KSwgKGdzdF9iYXNlX3Npbmtfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jayk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBBZGQgdHMtb2Zmc2V0IHByb3BlcnR5IHRvIGZpbmUtdHVuZSB0aGUgc3luY2hyb25pc2F0aW9uLgoJICBBUEk6IEdzdEJhc2VTaW5rOjp0cy1vZmZzZXQgcHJvcGVydHkKCSAgQVBJOiBnc3RfYmFzZV9zaW5rX3NldF90c19vZmZzZXQoKQoJICBBUEk6IGdzdF9iYXNlX3NpbmtfZ2V0X3RzX29mZnNldCgpCgoyMDA3LTA4LTI5IDIwOjU3OjU4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay4qOiBBZGQgYXN5bmMgcHJvcGVydHkgdG8gaW5zdHJ1Y3QgdGhlIHNpbmsgbmV2ZXIgdG8gaW5mb3JtIHRoZSBwYXJlbnQgYWJvdXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NpbmtfaW5pdCksIChnc3RfYmFzZV9zaW5rX3NldF9zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19zZXRfbWF4X2xhdGVuZXNzKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X21heF9sYXRlbmVzcyksIChnc3RfYmFzZV9zaW5rX3NldF9xb3NfZW5hYmxlZCksCgkgIChnc3RfYmFzZV9zaW5rX2lzX3Fvc19lbmFibGVkKSwgKGdzdF9iYXNlX3Npbmtfc2V0X2FzeW5jX2VuYWJsZWQpLAoJICAoZ3N0X2Jhc2Vfc2lua19pc19hc3luY19lbmFibGVkKSwgKGdzdF9iYXNlX3Npbmtfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIEFkZCBhc3luYyBwcm9wZXJ0eSB0byBpbnN0cnVjdCB0aGUgc2luayBuZXZlciB0byBpbmZvcm0gdGhlIHBhcmVudCBhYm91dAoJICBBU1lOQyBzdGF0ZSBjaGFuZ2VzLCB1cGRhdGUgZG9jcy4KCSAgQ2hlY2sgYXJndW1lbnQgd2l0aCBnX3JldHVybl8qIGZvciB0aGUgcHVibGljIGZ1bmN0aW9ucy4KCSAgQVBJOiBHc3RCYXNlU2luazo6YXN5bmMgcHJvcGVydHkKCSAgQVBJOiBnc3RfYmFzZV9zaW5rX3NldF9hc3luY19lbmFibGVkKCkKCSAgQVBJOiBnc3RfYmFzZV9zaW5rX2lzX2FzeW5jX2VuYWJsZWQoKQoKMjAwNy0wOC0yOCAxNTowMjoxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogSW1wcm92ZSBkZWJ1Z2dpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfbG9vcCk6CgkgIEltcHJvdmUgZGVidWdnaW5nLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3F1ZXJ5X2xhdGVuY3kpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfcXVlcnkpLCAoZ3N0X2Jhc2Vfc3JjX3dhaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIFJlYXJyYW5nZSBzb21lIGNvZGUgc28gdGhhdCB3ZSBjYW4gYWRkIHN1cHBvcnQgZm9yIG1lYXN1cmluZyB0aGUKCSAgc3RhcnR1cCBsYXRlbmN5LgoKMjAwNy0wOC0yNyAyMDowMDozOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9yYW5kb20vZW5zb25pYy9keW5saW5rLnR4dDogTW9yZSB0aG91Z2hzIG9uIHRoaXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZHlubGluay50eHQ6CgkgIE1vcmUgdGhvdWdocyBvbiB0aGlzLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICBBZGQgYnVnemlsbGEgdGlja2V0IG51bWJlciB0byBGSVhNRSBjb21tZW50LgoKMjAwNy0wOC0yNiAxODozMDo1NSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNQUlOVEFJTkVSUzoKCSAgcmVtb3ZlIHRlbXAgZmlsZXMgYWdhaW4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSB0ZW1wIGZpbGVzIGFnYWluCgoyMDA3LTA4LTI2IDE2OjQyOjM2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIE1BSU5UQUlORVJTOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDgtMjYgMTU6NTg6MTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQVVUSE9SUzoKCSogTUFJTlRBSU5FUlM6CgkgIHRlc3QgY29tbWl0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB0ZXN0IGNvbW1pdAoKMjAwNy0wOC0yNCAyMTo1MzozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduLzogVXBkYXRlIHNvbWUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDoKCSAgVXBkYXRlIHNvbWUgZG9jcy4KCjIwMDctMDgtMjQgMTY6Mzk6MDYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L01ha2VmaWxlLmFtOiBSZXZlcnQgcGF0Y2ggd2hpY2ggdXNlcyAkKGdzdF9oZWFkZXJzKSBpbnN0ZWFkIG9mICReIGJlY2F1c2UgaXQgYnJlYWtzIG1ha2UgZGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICBSZXZlcnQgcGF0Y2ggd2hpY2ggdXNlcyAkKGdzdF9oZWFkZXJzKSBpbnN0ZWFkIG9mICReIGJlY2F1c2UgaXQKCSAgYnJlYWtzIG1ha2UgZGlzdC4KCjIwMDctMDgtMjQgMTQ6NTU6NDYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiBGaXggbGVha3MgaW4gdGhlIG5ldyB1bml0IHRlc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRml4IGxlYWtzIGluIHRoZSBuZXcgdW5pdCB0ZXN0LgoKMjAwNy0wOC0yMyAyMDo0MTozMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3QuYzogRG9uJ3QgdXNlIEdTVF9JTkZPIGJlZm9yZSB0aGUgZGVidWcgc3lzdGVtIGlzIGFjdHVhbGx5IGluaXRpYWxpc2VkIChzaG91bGRuJ3QgZG8gYW55IGhhcm0sIGJ1dCB3b24ndCBwcmludC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIERvbid0IHVzZSBHU1RfSU5GTyBiZWZvcmUgdGhlIGRlYnVnIHN5c3RlbSBpcyBhY3R1YWxseSBpbml0aWFsaXNlZAoJICAoc2hvdWxkbid0IGRvIGFueSBoYXJtLCBidXQgd29uJ3QgcHJpbnQgYW55dGhpbmcgZWl0aGVyLCBzbyB3ZSBjYW4KCSAganVzdCBhcyB3ZWxsIHJlbW92ZSBpdCkuCgkgICogZ3N0L2dzdGluZm8uaDoKCSAgR1NUX0NBVF9MRVZFTF9MT0dfdmFsaXN0KCksIHdoaWNoIGlzIG91ciBpbmxpbmUgaGVscGVyIGZ1bmN0aW9uIGZvcgoJICBjb21waWxlcnMgdGhhdCBkb24ndCBzdXBwb3J0IHZhcmlhZGljIG1hY3JvcyAoc3VjaCBhcyBNU1ZDKSwgc2hvdWxkCgkgIGNoZWNrIGZvciBkZWJ1Z19sZXZlbCA8PSBfX2dzdF9kZWJ1Z19taW4gYXMgd2VsbCwgc2luY2UgdGhhdCdzIHRoZQoJICBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhbGwgdGhlIGxldmVsLXNwZWNpZmljIEdTVF9DQVRfKl9MT0dfT0JKRUNUKCkKCSAgaW5saW5lIGhlbHBlciBmdW5jdGlvbnMuIFNob3VsZCBpbXByb3ZlIHBlcmZvcm1hbmNlIGEgYml0LCBidXQgYWxzbwoJICBtYWtlcyBzdXJlIHVzZXMgb2YgR1NUX0lORk8gZXQuYWwgYXJlIGlnbm9yZWQgaWYgdGhlIGRlYnVnZ2luZwoJICBzeXN0ZW0gaXNuJ3QgaW5pdGlhbGlzZWQgeWV0IChpbnN0ZWFkIG9mIHByaW50aW5nIGFuIGFzc2VydGlvbgoJICBmYWlsdXJlKS4KCjIwMDctMDgtMjMgMDc6MTA6MzMgKzAwMDAgIERhdmlkIE5lxI1hcyA8eWV0aUBwaHlzaWNzLm11bmkuY3o+CgoJICBnc3QvTWFrZWZpbGUuYW06IFJlcGxhY2Ugc29tZSBub24gcG9ydGFibGUgbWFrZWZpbGUgY29uc3RydWN0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHBhdGNoIGJ5OiBEYXZpZCBOZcSNYXMgPHlldGlAcGh5c2ljcy5tdW5pLmN6PgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgUmVwbGFjZSBzb21lIG5vbiBwb3J0YWJsZSBtYWtlZmlsZSBjb25zdHJ1Y3RzLgoKMjAwNy0wOC0yMSAxNDoxMDowOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgY29tbW9uL2d0ay1kb2MtcGx1Z2lucy5tYWs6IEdycnJyci4gRG9uJ3QgcmVtb3ZlIHRoZSB0eXBlcyBmaWxlIG9uIG1ha2UgY2xlYW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrOgoJICBHcnJycnIuIERvbid0IHJlbW92ZSB0aGUgdHlwZXMgZmlsZSBvbiBtYWtlIGNsZWFuLgoKMjAwNy0wOC0yMCAxNzo1MTozNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRvb2xzL2dzdC1sYXVuY2guMS5pbjogQWRkIGNvbG9yc3BhY2UgdG8gZXhhbXBsZSBwaXBlbGluZS4gRml4ZXMgIzQ1ODI3NC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBBZGQgY29sb3JzcGFjZSB0byBleGFtcGxlIHBpcGVsaW5lLiBGaXhlcyAjNDU4Mjc0LgoKMjAwNy0wOC0yMCAxMjozMTo1NCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcmFuZG9tL3JlbGVhc2U6IFRoZSByZWxlYXNlIG1hbmFnZXIgc2hvdWxkIHJ1biAnbWFrZSBkb3dubG9hZC1wbycgYmVmb3JlIG1ha2luZyBhIHJlbGVhc2UgdG8gbWFrZSBzdXJlIHRyYW5zbGF0aS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICBUaGUgcmVsZWFzZSBtYW5hZ2VyIHNob3VsZCBydW4gJ21ha2UgZG93bmxvYWQtcG8nIGJlZm9yZSBtYWtpbmcgYQoJICByZWxlYXNlIHRvIG1ha2Ugc3VyZSB0cmFuc2xhdGlvbnMgYXJlIHVwLXRvLWRhdGUuCgkgICogcG8vTElOR1VBUzoKCSAgKiBwby9iZS5wbzoKCSAgKiBwby9wbC5wbzoKCSAgKiBwby9ydy5wbzoKCSAgQWRkIHNvbWUgbmV3IHRyYW5zbGF0aW9ucy4KCjIwMDctMDgtMTcgMTM6NDg6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IERvbsK0dCB0cnkgdG8gZG8gYW55IHN0YXRlIG1hbmFnZW1lbnQgd2hlbiBhIGxpdmUgcGlwZWxpbmUgcG9zdHMgYnVmZmVyaW5nIG1lc3NhZ2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKSwgKG1haW4pOgoJICBEb27CtHQgdHJ5IHRvIGRvIGFueSBzdGF0ZSBtYW5hZ2VtZW50IHdoZW4gYSBsaXZlIHBpcGVsaW5lIHBvc3RzCgkgIGJ1ZmZlcmluZyBtZXNzYWdlcy4KCSAgQWxzbyBtYWtlIHRoZSBidWZmZXJpbmcgc3RyaW5nIHRyYW5zbGF0YWJsZS4KCjIwMDctMDgtMTYgMTE6MDQ6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEltcHJvdmUgZGVidWdnaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChpc19lb3MpLCAoZ3N0X2Jpbl9hZGRfZnVuYyksCgkgIChiaW5faGFuZGxlX2FzeW5jX3N0YXJ0KSwgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIEltcHJvdmUgZGVidWdnaW5nLgoJICBXaGVuIGFkZGluZyBlbGVtZW50cywgaW5zZXJ0IG1lc3NhZ2VzIGludG8gdGhlIGJ1cyBvZiB0aGUgbmV3bHkgYWRkZWQKCSAgZWxlbWVudCBhbmQgbWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHRoZSBzb3VyY2Ugb2YgdGhlIG1lc3NhZ2UuIFRoaXMKCSAgYWxsb3dzIHRoZSBwYXJlbnQgYmluIHRvIGludGVyY2VwdCB0aGUgbWVzc2FnZSBhbmQgZG8gdGhlCgkgIHJpZ2h0IHRoaW5nLiBJdCBhbHNvIGF2b2lkcyB1cyBwb3N0aW5nIEFTWU5DX1NUQVJUIGFuZCBDTE9DS19QUk9WSURFCgkgIG1lc3NhZ2VzIHRvIHRoZSBhcHAgKHdoaWNoIGlzIG5vdCBhbGxvd2VkKS4KCSAgVXBkYXRlIHNvbWUgZG9jcy4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRml4IHRlc3RzdWl0ZSBzbyB0aGF0IGlzIGRvZXMgbm90IHdvcmsgYXJvdW5kIG1lc3NhZ2VzIHRoYXQgc2hvdWxkIG5vdAoJICBoYXZlIGJlZW4gcG9zdGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KCjIwMDctMDgtMTYgMTA6Mjc6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEZpeCBhbm5veWluZyBidWcgaW4gdGhlIHNvcnRlZCBpdGVyYXRvciB3aGVyZSBhIHNpbmsgdGhhdCBpcyBub3QgcmVhbGx5IGEgc2luayAod2hlbiBpdCBoYXMgZG93bnN0cmVhbSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYWRkX3RvX3F1ZXVlKSwgKHJlbW92ZV9mcm9tX3F1ZXVlKSwgKGNsZWFyX3F1ZXVlKSwKCSAgKHVwZGF0ZV9kZWdyZWUpLCAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25leHQpOgoJICBGaXggYW5ub3lpbmcgYnVnIGluIHRoZSBzb3J0ZWQgaXRlcmF0b3Igd2hlcmUgYSBzaW5rIHRoYXQgaXMgbm90IHJlYWxseQoJICBhIHNpbmsgKHdoZW4gaXQgaGFzIGRvd25zdHJlYW0gbGlua3MpIHNjcmV3ZWQgdXAgdGhlIGl0ZXJhdG9yLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9iaW5fc3VpdGUpOgoJICBVbml0IHRlc3QgdG8gdmVyaWZ5IHRoZSBmaXguCgoyMDA3LTA4LTE2IDEwOjA3OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdG1lc3NhZ2UuaDogQWRkIHNvbWUgbW9yZSBkb2NzIGZvciB0aGUgbWVzc2FnZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIEFkZCBzb21lIG1vcmUgZG9jcyBmb3IgdGhlIG1lc3NhZ2VzLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBBZGQgc29tZSBtb3JlIGRlYnVnZ2luZy4KCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgV2hlbiBpbnRlcnJ1cHRpbmcsIGRvbid0IHRyeSB0byBzZXQgcGlwZWxpbmUgdG8gUEFVU0VEIHR3aWNlLgoKMjAwNy0wOC0xNCAxNDoxMDozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogTW92ZSBBU1lOQ19TVEFSVCBtZXNzYWdlIHBvc3RpbmcgdG8gd2hlcmUgaXQgYmVsb25ncywgc2ltaWxhciB0byBhc3luY19kb25lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2FkZF9mdW5jKSwgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpLAoJICAoYmluX2hhbmRsZV9hc3luY19zdGFydCksIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBNb3ZlIEFTWU5DX1NUQVJUIG1lc3NhZ2UgcG9zdGluZyB0byB3aGVyZSBpdCBiZWxvbmdzLCBzaW1pbGFyIHRvCgkgIGFzeW5jX2RvbmUuCgkgIERvbid0IHBvc3QgQVNZTkNfU1RBUlQgd2hlbiB3ZSBhcmUgaW4gZXJyb3IuCgkgIFBvc3QgQVNZTkNfU1RBUlQgd2hlbiB3ZSBhZGRlZCBhbiBhc3luYyBlbGVtZW50IHRvIGEgYmluLgoKMjAwNy0wOC0xNCAxMzo0Mzo0NCArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0aW5kZXguYzogRml4IGluZGV4IGVudHJ5IGdlbmVyYXRpb24gZnJvbSB2YXJncy4gRml4ZXMgIzQ2NjU5NS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDgtMTQgIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBnc3QvZ3N0aW5kZXguYzogKGdzdF9pbmRleF9hZGRfYXNzb2NpYXRpb24pOiBGaXggaW5kZXggZW50cnkKCSAgZ2VuZXJhdGlvbiBmcm9tIHZhcmdzLiBGaXhlcyAjNDY2NTk1LgoKMjAwNy0wOC0xNCAxMzozNzoxNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogQWx3YXlzIGNoYW5nZSB0aGUgc3RhdGUgb2YgYSBOT19QUkVST0xMIGVsZW1lbnQgZXZlbiBpZiBpdCBoYXMgQVNZTkMgZWxlbWVudHMgaW5zaWRlIChpbiBjYXNlIG9mIGEgYmluKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9lbGVtZW50X3NldF9zdGF0ZSk6CgkgIEFsd2F5cyBjaGFuZ2UgdGhlIHN0YXRlIG9mIGEgTk9fUFJFUk9MTCBlbGVtZW50IGV2ZW4gaWYgaXQgaGFzIEFTWU5DCgkgIGVsZW1lbnRzIGluc2lkZSAoaW4gY2FzZSBvZiBhIGJpbikuCgkgICogdGVzdHMvY2hlY2svZ2VuZXJpYy9zaW5rcy5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3NpbmtzX3N1aXRlKToKCSAgVW5pdCB0ZXN0IGZvciB0aGlzIGNhc2UuCgoyMDA3LTA4LTEzIDEzOjMzOjA3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBBZGQgbW9yZSBtaXNzaW5nIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGJ1ZmZlcnN0cmF3LmM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xzb3VyY2UuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGxmb2NvbnRyb2xzb3VyY2UuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuaDoKCSAgQWRkIG1vcmUgbWlzc2luZyBkb2NzLgoKMjAwNy0wOC0xMiAxNjo0NDowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzdHJ1Y3R1cmUuYzogQWRkIFNpbmNlIHRhZyB0byBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIEFkZCBTaW5jZSB0YWcgdG8gZG9jcy4KCjIwMDctMDgtMTIgMTY6NDA6NTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgZnVuY3Rpb24gdG8gZ2V0IHVpbnQgZnJvbSBhIHN0cnVjdHVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX2dldF91aW50KToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkgIEFkZCBmdW5jdGlvbiB0byBnZXQgdWludCBmcm9tIGEgc3RydWN0dXJlLgoJICBBUEk6IGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoKQoKMjAwNy0wOC0xMiAxNjozODo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEZpeCBwcm9wZXIgY2hlY2sgZm9yIHNpbXBsZSBjYXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfc2V0X3NpbXBsZV92YWxpc3QpLAoJICAoZ3N0X2NhcHNfaW50ZXJzZWN0KToKCSAgRml4IHByb3BlciBjaGVjayBmb3Igc2ltcGxlIGNhcHMuCgoyMDA3LTA4LTEwIDE3OjM1OjMwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzLzogUmVtb3ZlIGNydWZ0IGFuZCBkbyBzb21lIGNsZWFudXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkgIFJlbW92ZSBjcnVmdCBhbmQgZG8gc29tZSBjbGVhbnVwcy4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgIFByZXBhcmUgZm9yIGNvbW1pbmcgZ3RrZG9jIGZlYXR1cmVzIChyZWJhc2UgYWdhaW5zdCBvbmxpbmUgZG9jcykuCgoyMDA3LTA4LTEwIDE0OjUyOjQxICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgZ3N0X3JlZ2lzdHJ5X2FkZF9wYXRoIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZCBnc3RfcmVnaXN0cnlfYWRkX3BhdGggdG8gZG9jcy4KCSAgQWxzbyBmaXggZm9ybWF0dGluZyBvZiBhbiBvbGRlciBjaGFuZ2Vsb2cgZW50cnkKCjIwMDctMDgtMTAgMTQ6NDA6MjYgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC9nc3RyZWdpc3RyeS5oOiBBZGQgZ3N0X3JlZ2lzdHJ5X2FkZF9wYXRoLCB3aGljaCB3YXMgbWlzc2luZyBmcm9tIHRoaXMgaGVhZGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgQWRkIGdzdF9yZWdpc3RyeV9hZGRfcGF0aCwgd2hpY2ggd2FzIG1pc3NpbmcgZnJvbSB0aGlzIGhlYWRlci4KCjIwMDctMDgtMTAgMTA6MzA6MjIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGxmb2NvbnRyb2xzb3VyY2UuYzogUHJpbnRmIGZvcm1hdCBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0bGZvY29udHJvbHNvdXJjZS5jOgoJICBQcmludGYgZm9ybWF0IGZpeC4KCjIwMDctMDgtMDkgMjE6NTA6MTkgKzAwMDAgIFBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IERvbid0IHNlbmQgYW4gYXN5bmNfc3RhcnQgbWVzc2FnZSBkdXJpbmcgZG93bndhcmRzIHN0YXRlIGNoYW5nZSBpZiB0YXJnZXQgc3RhdGUgaXMgbGVzcyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBEb24ndCBzZW5kIGFuIGFzeW5jX3N0YXJ0IG1lc3NhZ2UgZHVyaW5nIGRvd253YXJkcyBzdGF0ZSBjaGFuZ2UgaWYgdGFyZ2V0CgkgIHN0YXRlIGlzIGxlc3MgdGhhbiBSRUFEWQoKMjAwNy0wOC0wOSAxMDo1MDoyMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwby86IEFkZGVkIEh1bmdhcmlhbiB0cmFuc2xhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHRyYW5zbGF0ZWQgYnk6IEdhYm9yIEtlbGVtZW4gPGtlbGVtZW5nQGdub21lLmh1PgoJICAqIHBvL0xJTkdVQVM6CgkgICogcG8vaHUucG86CgkgIEFkZGVkIEh1bmdhcmlhbiB0cmFuc2xhdGlvbi4KCjIwMDctMDgtMDkgMTA6NDg6NTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcG8vOiBVcGRhdGVkIHRyYW5zbGF0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcG8vZmkucG86CgkgICogcG8vaXQucG86CgkgICogcG8vbmwucG86CgkgICogcG8vc3YucG86CgkgICogcG8vdWsucG86CgkgIFVwZGF0ZWQgdHJhbnNsYXRpb25zLgoKMjAwNy0wOC0wNyAxNjowNjo0NyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL01ha2VmaWxlLmFtOiBEaXN0IGdzdGxmb2NvbnRyb2xzb3VyY2Vwcml2YXRlLmgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSAgRGlzdCBnc3RsZm9jb250cm9sc291cmNlcHJpdmF0ZS5oCgoyMDA3LTA4LTA3IDE1OjE1OjQwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy50eXBlczogRG9uJ3QgcmVnaXN0ZXIgdGhlIGVudW0gdHlwZSBnc3RfbGZvX3dhdmVmb3JtX2dldF90eXBlKCkgaW4gdGhlIC50eXBlcyBmaWxlIC0gb25seSBHTy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMudHlwZXM6CgkgIERvbid0IHJlZ2lzdGVyIHRoZSBlbnVtIHR5cGUgZ3N0X2xmb193YXZlZm9ybV9nZXRfdHlwZSgpIGluIHRoZQoJICAudHlwZXMgZmlsZSAtIG9ubHkgR09iamVjdCBkZXJpdmVkIHR5cGVzIGJlbG9uZy4KCjIwMDctMDgtMDcgMTQ6MDQ6MjIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmg6IFJlbW92ZSBjb21tYSBmcm9tIGxhc3QgZWxlbWVudCBpbiBlbnVtIHRvIGF2b2lkIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgLXBlbmRhbnRpYy4gRml4ZXMgIzQ2NDM2Ni4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiA8YXJlbmV2aWVyIGF0IGZkbiBkb3QgZnI+CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICBSZW1vdmUgY29tbWEgZnJvbSBsYXN0IGVsZW1lbnQgaW4gZW51bSB0byBhdm9pZCBjb21waWxlIGVycm9ycyB3aGVuCgkgIHVzaW5nIC1wZW5kYW50aWMuIEZpeGVzICM0NjQzNjYuCgoyMDA3LTA4LTA3IDA5OjU2OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogQWRkIHNvbWUgbW9yZSBUT0RPIGl0ZW1zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIEFkZCBzb21lIG1vcmUgVE9ETyBpdGVtcwoJICAqIGdzdC9nc3RiaW4uYzogKGZpbmRfbWVzc2FnZSksIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2ludGVyc2VjdCk6CgkgIE9wdGltaXplIHRyaXZpYWwgaW50ZXJzZWN0aW9uIGNhc2UgYmV0d2VlbiBpZGVudGljYWwgY2FwcyBwb2ludGVycy4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY29udGludWVfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlX2Z1bmMpOgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgRml4IHNwZWxsaW5nIGFuZCBncmFtbWFyIG1pc3Rha2VzLgoKMjAwNy0wOC0wNSAxNDo0ODowNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcG8vUE9URklMRVMuKjogVXBkYXRlIFBPVEZJTEVTLiBGaXhlcyAjNDYxNTk5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwby9QT1RGSUxFUy5pbjoKCSAgKiBwby9QT1RGSUxFUy5za2lwOgoJICBVcGRhdGUgUE9URklMRVMuIEZpeGVzICM0NjE1OTkuCgoyMDA3LTA4LTAzIDE5OjI1OjQ1ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0LmM6IEZpeCBjb25mdXNpbmcgdHlwbyBpbiBkZWJ1ZyBvdXRwdXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgRml4IGNvbmZ1c2luZyB0eXBvIGluIGRlYnVnIG91dHB1dC4KCjIwMDctMDgtMDMgMTU6NDc6MTcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvOiBBUEk6IEFkZCBHc3RMRk9Db250cm9sU291cmNlLCBhIGNvbnRyb2wgc291cmNlIHRoYXQgZ2l2ZXMgdmFsdWVzIGZvciBzcGVjaWZpYyB0aW1lc3RhbXBzIGJhc2VkIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmV2aWV3ZWQgYnk6IFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0bGZvY29udHJvbHNvdXJjZS5jOiAoX2NhbGN1bGF0ZV9wb3MpLAoJICAoZ3N0X2xmb193YXZlZm9ybV9nZXRfdHlwZSksIChnc3RfbGZvX2NvbnRyb2xfc291cmNlX3Jlc2V0KSwKCSAgKGdzdF9sZm9fY29udHJvbF9zb3VyY2VfbmV3KSwKCSAgKGdzdF9sZm9fY29udHJvbF9zb3VyY2Vfc2V0X3dhdmVmb3JtKSwKCSAgKGdzdF9sZm9fY29udHJvbF9zb3VyY2VfYmluZCksIChnc3RfbGZvX2NvbnRyb2xfc291cmNlX2luaXQpLAoJICAoZ3N0X2xmb19jb250cm9sX3NvdXJjZV9maW5hbGl6ZSksCgkgIChnc3RfbGZvX2NvbnRyb2xfc291cmNlX2Rpc3Bvc2UpLAoJICAoZ3N0X2xmb19jb250cm9sX3NvdXJjZV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2xmb19jb250cm9sX3NvdXJjZV9nZXRfcHJvcGVydHkpLAoJICAoZ3N0X2xmb19jb250cm9sX3NvdXJjZV9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGxmb2NvbnRyb2xzb3VyY2UuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGxmb2NvbnRyb2xzb3VyY2Vwcml2YXRlLmg6CgkgIEFQSTogQWRkIEdzdExGT0NvbnRyb2xTb3VyY2UsIGEgY29udHJvbCBzb3VyY2UgdGhhdCBnaXZlcyB2YWx1ZXMKCSAgZm9yIHNwZWNpZmljIHRpbWVzdGFtcHMgYmFzZWQgb24gc2V2ZXJhbCBwZXJpb2RpYyB3YXZlZm9ybXMuCgkgIEZpeGVzICM0NTk3MTcuCgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy50eXBlczoKCSAgQWRkIGRvY3VtZW50YXRpb24gYW5kIHVuaXQgdGVzdHMgZm9yIEdzdExGT0NvbnRyb2xTb3VyY2UuCgoyMDA3LTA4LTAzIDE0OjQwOjIyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogQmFjayB0byBDVlMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBCYWNrIHRvIENWUwoKPT09IHJlbGVhc2UgMC4xMC4xNCA9PT0KCjIwMDctMDgtMDMgMTQ6Mzk6MTUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBORVdTOgoJKiBSRUxFQVNFOgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5hcmdzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkqIGdzdHJlYW1lci5kb2FwOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIFJlbGVhc2UgMC4xMC4xNAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmVsZWFzZSAwLjEwLjE0CgoyMDA3LTA4LTAzIDEzOjIwOjUwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZmkucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICBVcGRhdGUgLnBvIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBVcGRhdGUgLnBvIGZpbGVzCgoyMDA3LTA4LTAyIDExOjUxOjE3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnQuKjogTWFrZSBzdHJpbmdzIHBhc3NlZCB0byBnc3RfZWxlbWVudF9jbGFzc19zZXRfZGV0YWlsc19zaW1wbGUoKSBjb25zdGFudCwgYXMgdGhleSBzaG91bGQgYmUgKCM0NjI3NTIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBNYWtlIHN0cmluZ3MgcGFzc2VkIHRvIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZSgpCgkgIGNvbnN0YW50LCBhcyB0aGV5IHNob3VsZCBiZSAoIzQ2Mjc1MikuCgoyMDA3LTA4LTAyIDExOjE1OjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBEb24ndCBmb3JnZXQgYWJvdXQgdGhlIGZhY3QgdGhhdCBzb21lIGVsZW1lbnQgd2VudCBBU1lOQyBldmVuIGFmdGVyIGEgcmVzeW5jLiBUaGlzIG1ha2VzIHVzIHBvc3QgdGhlIEFTLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpLAoJICAoYmluX2hhbmRsZV9hc3luY19kb25lKSwgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIERvbid0IGZvcmdldCBhYm91dCB0aGUgZmFjdCB0aGF0IHNvbWUgZWxlbWVudCB3ZW50IEFTWU5DIGV2ZW4gYWZ0ZXIgYQoJICByZXN5bmMuIFRoaXMgbWFrZXMgdXMgcG9zdCB0aGUgQVNZTkNfRE9ORSBtZXNzYWdlIGNvcnJlY3RseS4KCSAgRml4ZXMgIzQ2MjU1OC4KCjIwMDctMDctMzEgMTE6NTE6MzggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmM6IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIGZlYXR1cmUgaW4gdGhlIHJlZ2lzdHJ5LCBtYWtlIHN1cmUgdG8gY29udGludWUgaG9sZGluZyBhIHJlZmVyZW5jZSB1bnRpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2FkZF9mZWF0dXJlKToKCSAgV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgZmVhdHVyZSBpbiB0aGUgcmVnaXN0cnksIG1ha2Ugc3VyZSB0bwoJICBjb250aW51ZSBob2xkaW5nIGEgcmVmZXJlbmNlIHVudGlsIHdlJ3ZlIHJlcGxhY2VkIHRoZSBuYW1lIHN0cmluZwoJICB3aXRoaW4gb3VyIGZlYXR1cmUgaGFzaCB0YWJsZS4gTWFrZSBzdXJlIHRvIHVzZSBnX2hhc2hfdGFibGVfcmVwbGFjZQoJICBpbnN0ZWFkIG9mIGdfaGFzaF90YWJsZV9pbnNlcnQgdG8gZW5zdXJlIHRoZSBuZXcgbmFtZSBzdHJpbmcgaXMgdXNlZAoJICBhcyBhIGtleSBpbnN0ZWFkIG9mIHRoZSBvbGQgb25lIHRoYXQgd2UncmUgYWJvdXQgdG8gZnJlZS4KCSAgRml4ZXM6ICM0NjIwODUKCjIwMDctMDctMzEgMTA6MTA6MjcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzogUmV2ZXJ0IHBhdGNoIGZyb20gIzQ1OTQ2NiB1bnRpbCBhZnRlciB0aGUgcmVsZWFzZSBhbmQgd2UgY2FuIHdvcmsgb3V0IGV4YWN0bHkgd2hhdCB0aGUgcHJvYmxlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfZmluYWxpemUpLAoJICAoZ3N0X3BsdWdpbl9mZWF0dXJlX3NldF9uYW1lKToKCSAgUmV2ZXJ0IHBhdGNoIGZyb20gIzQ1OTQ2NiB1bnRpbCBhZnRlciB0aGUgcmVsZWFzZSBhbmQgd2UgY2FuIHdvcmsKCSAgb3V0IGV4YWN0bHkgd2hhdCB0aGUgcHJvYmxlbSBpcyAoaWYgYW55KS4KCjIwMDctMDctMjYgMTU6NDg6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBUEk6IGFkZCBHU1RfVEFHX0xJQ0VOU0VfVVJJIGFuZCBHU1RfVEFHX0NPUFlSSUdIVF9VUkkgKCM0NTE5MzkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgQVBJOiBhZGQgR1NUX1RBR19MSUNFTlNFX1VSSSBhbmQgR1NUX1RBR19DT1BZUklHSFRfVVJJICgjNDUxOTM5KS4KCjIwMDctMDctMjYgMTQ6MDU6MjMgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZG9jcy9saWJzL01ha2VmaWxlLmFtOiBJbmNsdWRlIG91ciBidWlsZC1wcmVmaXggbGlicyBhbmQgaW5jbHVkZXMgYmVmb3JlIHRoZSBnZW5lcmljIG9uZXMgdG8gYXZvaWQgbGlua2luZyBhZ2FpbnN0IHRoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgSW5jbHVkZSBvdXIgYnVpbGQtcHJlZml4IGxpYnMgYW5kIGluY2x1ZGVzIGJlZm9yZSB0aGUgZ2VuZXJpYyBvbmVzIHRvCgkgIGF2b2lkIGxpbmtpbmcgYWdhaW5zdCB0aGUgaW5zdGFsbGVkIGxpYnMgd2hlbiB3ZSB3YW50IHRoZSBidWlsZC10cmVlCgkgIG9uZXMuCgoyMDA3LTA3LTI2IDA4OjQ2OjQ2ICswMDAwICBTdGV2ZSBGaW5rIDxzcGhpbmtAZ21haWwuY29tPgoKCSAgZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6IE1lbnRpb24gdGhhdCBHU1RfUExVR0lOX1BBVEggb3IgLS1nc3QtcGx1Z2luLXBhdGggbWlnaHQgYmUgbmVlZGVkIGlmIHBlb3BsZSB0cnkgdG8gYnVpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU3RldmUgRmluayAgPHNwaGluayBnbWFpbCBjb20+CgkgICogZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6CgkgIE1lbnRpb24gdGhhdCBHU1RfUExVR0lOX1BBVEggb3IgLS1nc3QtcGx1Z2luLXBhdGggbWlnaHQgYmUgbmVlZGVkCgkgIGlmIHBlb3BsZSB0cnkgdG8gYnVpbGQgb3IgaW5zdGFsbCB0aGUgZXhhbXBsZSBmcm9tIHRoZSBwbHVnaW4KCSAgdGVtcGxhdGUgYWdhaW5zdCBhIEdTdHJlYW1lciBmcm9tIHBhY2thZ2UgdXNpbmcgdGhlIGNvbmZpZ3VyZQoJICBkZWZhdWx0cy4KCjIwMDctMDctMjUgMjI6Mjk6NTcgKzAwMDAgIFN0ZXZlIEZpbmsgPHNwaGlua0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtaW5zcGVjdC4xLmluOiBEb2N1bWVudCAtLXByaW50LWFsbCBhbmQgLS1wcmludC1wbHVnaW4tYXV0by1pbnN0YWxsLWluZm8gY29tbWFuZCBsaW5lIG9wdGlvbnMgaW4gbWFuIHBhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU3RldmUgRmluayAgPHNwaGluayBnbWFpbCBjb20+CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuMS5pbjoKCSAgRG9jdW1lbnQgLS1wcmludC1hbGwgYW5kIC0tcHJpbnQtcGx1Z2luLWF1dG8taW5zdGFsbC1pbmZvIGNvbW1hbmQKCSAgbGluZSBvcHRpb25zIGluIG1hbiBwYWdlLgoKMjAwNy0wNy0yNSAxODo0Njo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IEFkZCBkb2NzIGZvciBuZXcgYXBpIGZ1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgZG9jcyBmb3IgbmV3IGFwaSBmdW5jdGlvbi4KCjIwMDctMDctMjUgMTg6Mzc6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuKjogQVBJOiBnc3RfZWxlbWVudF9mYWN0b3J5X2hhc19pbnRlcmZhY2UoKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogKGdzdF9lbGVtZW50X2ZhY3RvcnlfaGFzX2ludGVyZmFjZSk6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkgIEFQSTogZ3N0X2VsZW1lbnRfZmFjdG9yeV9oYXNfaW50ZXJmYWNlKCkKCSAgQWRkZWQgbWV0aG9kIHRvIGNoZWNrIGlmIGFuIGVsZW1lbnQgZmFjdG9yeSBpbXBsZW1lbnRzIGEgbmFtZWQKCSAgaW50ZXJmYWNlLgoKMjAwNy0wNy0yNSAxMzowMDoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQW5vdGhlciBjb25kaXRpb25hbCBkb2MgY2hlY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXMuaW46CgkgIEFub3RoZXIgY29uZGl0aW9uYWwgZG9jIGNoZWNrLgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgICogZ3N0L2dzdHBhcmFtc3BlY3MuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgICogZ3N0L2dzdHhtbC5oOgoJICBBUEktZG9jIGZpeGVzLgoKMjAwNy0wNy0yNCAxMzo0NDowNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IFByaW50IGVycm9yIGp1c3Qgb25jZSBhbmQgd2l0aCBhZGRpdGlvbmFsIGluZm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9jaGVja19tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgIFByaW50IGVycm9yIGp1c3Qgb25jZSBhbmQgd2l0aCBhZGRpdGlvbmFsIGluZm8uCgoyMDA3LTA3LTI0IDEzOjM4OjIxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IENsZWFudXAgdGhlIHR5cGVmaW5kaGVscGVyIGNvZGUgYW5kIGFkZCBwcml2YXRlIGRvYyBjb21tZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAoaGVscGVyX2ZpbmRfcGVlayksCgkgIChoZWxwZXJfZmluZF9zdWdnZXN0KSwgKGhlbHBlcl9maW5kX2dldF9sZW5ndGgpLAoJICAoZ3N0X3R5cGVfZmluZF9oZWxwZXJfZ2V0X3JhbmdlKSwgKGJ1Zl9oZWxwZXJfZmluZF9zdWdnZXN0KSwKCSAgKGdzdF90eXBlX2ZpbmRfaGVscGVyX2Zvcl9idWZmZXIpOgoJICBDbGVhbnVwIHRoZSB0eXBlZmluZGhlbHBlciBjb2RlIGFuZCBhZGQgcHJpdmF0ZSBkb2MgY29tbWVudHMuCgoyMDA3LTA3LTI0IDEyOjMyOjMxICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IEZpeCBjYXBzZmlsdGVyIGZvciBjYXNlcyB3aGVyZSB0aGUgY2FwcyBzZXQgb24gY2Fwc2ZpbHRlciB3aWxsIHByb3ZpZGUgYWRkaXRpb25hbCBpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfY2xhc3NfaW5pdCksCgkgIChnc3RfY2Fwc2ZpbHRlcl90cmFuc2Zvcm1fc2l6ZSksIChnc3RfY2Fwc2ZpbHRlcl9wcmVwYXJlX2J1Zik6CgkgIEZpeCBjYXBzZmlsdGVyIGZvciBjYXNlcyB3aGVyZSB0aGUgY2FwcyBzZXQgb24gY2Fwc2ZpbHRlciB3aWxsIHByb3ZpZGUKCSAgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KCSAgRml4ZXMgIzQ0OTE5NwoKMjAwNy0wNy0yNCAxMTozMTowOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOiBGaXggZG9jcyB0aGF0IHJlY29tbWVuZWQgd3JvbmcgZnVuY3Rpb24gdG8gdXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6CgkgIEZpeCBkb2NzIHRoYXQgcmVjb21tZW5lZCB3cm9uZyBmdW5jdGlvbiB0byB1c2UuCgoyMDA3LTA3LTIzIDEzOjAzOjQzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBBbHNvIGdpdmUgbWVkaWEtdHlwZSBmb3IgdHlwZWZpbmRlcnMgaW4gZWxlbWVudCBvdXRwdXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9wbHVnaW5fZmVhdHVyZXMpOgoJICBBbHNvIGdpdmUgbWVkaWEtdHlwZSBmb3IgdHlwZWZpbmRlcnMgaW4gZWxlbWVudCBvdXRwdXQuCgoyMDA3LTA3LTIzIDExOjQyOjEyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnkuKjogU3BlZWQgdXAgZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9mZWF0dXJlX2xvY2tlZCgpIGJ5IHVzaW5nIGEgaGFzaG1hcC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfaW5pdCksIChnc3RfcmVnaXN0cnlfZmluYWxpemUpLAoJICAoZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9mZWF0dXJlc19mb3JfcGx1Z2luX3VubG9ja2VkKSwKCSAgKGdzdF9yZWdpc3RyeV9hZGRfZmVhdHVyZSksIChnc3RfcmVnaXN0cnlfcmVtb3ZlX2ZlYXR1cmUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9mZWF0dXJlX2xvY2tlZCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIFNwZWVkIHVwIGdzdF9yZWdpc3RyeV9sb29rdXBfZmVhdHVyZV9sb2NrZWQoKSBieSB1c2luZyBhIGhhc2htYXAuCgkgIEZpeGVzICM0NTk1MDEuCgoyMDA3LTA3LTIzIDEwOjM5OjEwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOiBBdm9pZCBkb3VibGUgbWVtb3J5IHVzYWdlIGZvciBwbHVnaW5mZWF0dXJlIG5hbWVzLiBGaXhlcyAjNDU5NDY2LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2ZpbmFsaXplKSwKCSAgKGdzdF9wbHVnaW5fZmVhdHVyZV9zZXRfbmFtZSk6CgkgIEF2b2lkIGRvdWJsZSBtZW1vcnkgdXNhZ2UgZm9yIHBsdWdpbmZlYXR1cmUgbmFtZXMuIEZpeGVzICM0NTk0NjYuCgoyMDA3LTA3LTIyIDE4OjI2OjMyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5oOiBTbWFsbCBhZGRpdGlvbiB0byBHU1RfRkxPV19JU19GQVRBTCgpIGRvY3M6IG1lbnRpb24gdGhhdCBlbGVtZW50cyBkcml2aW5nIHRoZSBwaXBlbGluZSBtYXkgbmVlZCB0byBleHBsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgU21hbGwgYWRkaXRpb24gdG8gR1NUX0ZMT1dfSVNfRkFUQUwoKSBkb2NzOiBtZW50aW9uIHRoYXQgZWxlbWVudHMKCSAgZHJpdmluZyB0aGUgcGlwZWxpbmUgbWF5IG5lZWQgdG8gZXhwbGljaXRseSBjaGVjayBmb3IgTk9UX0xJTktFRCBhcwoJICB3ZWxsLCBzaW5jZSBJU19GQVRBTCBkb2Vzbid0IGNvdmVyIHRoYXQuCgoyMDA3LTA3LTIyIDE4OjE2OjE5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOiBGaXggdHlwbyBhbmQgZHVwbGljYXRlIGVudHJ5IGluIHZpZGVvIGZvcm1hdHMgbGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOgoJICBGaXggdHlwbyBhbmQgZHVwbGljYXRlIGVudHJ5IGluIHZpZGVvIGZvcm1hdHMgbGlzdC4KCjIwMDctMDctMjIgMTI6MTg6NDYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiBBbHNvIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludCB3aGVuIHVzaW5nIGN1YmljIGludGVycG9sYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICBBbHNvIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludCB3aGVuIHVzaW5nIGN1YmljIGludGVycG9sYXRpb24uCgoyMDA3LTA3LTIxIDIxOjIwOjM3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiBXaGVuIGxpbmVhcmx5IGludGVycG9sYXRpbmcgaW50ZWdlciB0eXBlcywgcm91bmQgdG8gdGhlIG5lYXJlc3QgaW50IGJ5IGFkZGluZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgV2hlbiBsaW5lYXJseSBpbnRlcnBvbGF0aW5nIGludGVnZXIgdHlwZXMsIHJvdW5kIHRvIHRoZSBuZWFyZXN0IGludAoJICBieSBhZGRpbmcgMC41LiBEb24ndCBkbyBpdCBmb3IgZmxvYXQvZG91YmxlIHR5cGVzLgoJICBGaXhlcyB0aGUgZmFpbGluZyBjb250cm9sbGVyIHRlc3Qgb24gbXkgbWFjaGluZSwgd2hpY2ggaXMgc29tZWhvdwoJICByb3VuZGluZyBkaWZmZXJlbnRseSB0aGFuIG9uIHRoZSBidWlsZGJvdHMuCgoyMDA3LTA3LTIwIDA3OjM2OjQ0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy9nc3QtcGxvdC10aW1lbGluZS5weTogQmV0dGVyIGxvZyBwYXJzaW5nIChjYXRlZ29yaWVzIGNhbiBoYXZlIC0pLiBBZGp1c3QgdGV4dCB2cy4gbGluZXMsIHNvIHRoYXQgdGhleSBzcGFuIHRoZSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LXBsb3QtdGltZWxpbmUucHk6CgkgIEJldHRlciBsb2cgcGFyc2luZyAoY2F0ZWdvcmllcyBjYW4gaGF2ZSAtKS4gQWRqdXN0IHRleHQgdnMuIGxpbmVzLCBzbwoJICB0aGF0IHRoZXkgc3BhbiB0aGUgc2FtZSB5LXJhbmdlLgoKMjAwNy0wNy0yMCAwNzoyNjozOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9yYW5kb20vZW5zb25pYy86IFNhdmUgbXkgdGhvdWdodHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvYXVkaW9iYXNlY2xhc3Nlcy50eHQ6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9keW5saW5rLnR4dDoKCSAgKiBkb2NzL3JhbmRvbS9lbnNvbmljL3Byb2ZpbGluZy50eHQ6CgkgIFNhdmUgbXkgdGhvdWdodHMuCgkgICogZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6CgkgIEFkZCBub3RlIHRvIHVzZSBnX2Fzc2VydCB0eXBlIG1hY3Jvcy4KCjIwMDctMDctMjAgMDc6MDk6MTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZCBsaWJtIGNoZWNrIGFzIHdlIHVzZSBpbiBmb3IgcGx1Z2lucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICBBZGQgbGlibSBjaGVjayBhcyB3ZSB1c2UgaW4gZm9yIHBsdWdpbnMuCgoyMDA3LTA3LTE4IDE0OjMxOjIxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogQ2hlY2sgdGhhdCB0aGUgc3RhdGVfY29va2llIGhhc24ndCBjaGFuZ2VkIHNpbmNlIHRoZSBjb250aW51ZV9mdW5jIHdhcyBzY2hlZHVsZWQuIEF2b2lkcyBwcm9ibGVtcyB3aGVyZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NvbnRpbnVlX2Z1bmMpOgoJICBDaGVjayB0aGF0IHRoZSBzdGF0ZV9jb29raWUgaGFzbid0IGNoYW5nZWQgc2luY2UgdGhlIGNvbnRpbnVlX2Z1bmMKCSAgd2FzIHNjaGVkdWxlZC4gQXZvaWRzIHByb2JsZW1zIHdoZXJlIHRoZSBzdGF0ZSBjaGFuZ2VzIGJhY2sgdG8KCSAgc29tZXRoaW5nIGl0IHNob3VsZG4ndCBiZSBiZWNhdXNlIGl0IHdhcyBjaGFuZ2VkIGluIHRoZSBtZWFudGltZS4KCjIwMDctMDctMTcgMDk6NDQ6NTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBGaXggbWVtb3J5IGxlYWsuIEJlIGxlc3MgdmVyYm9zZSBpbiB0aGUgbG9nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9jb25zdF9zdHJpbmcpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3N0cmluZyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfcGFkX3RlbXBsYXRlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9wbHVnaW4pLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX2ZlYXR1cmUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3JlYWRfY2FjaGUpOgoJICBGaXggbWVtb3J5IGxlYWsuIEJlIGxlc3MgdmVyYm9zZSBpbiB0aGUgbG9nLgoKMjAwNy0wNy0xNiAxNjo0NDozMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9jaGVjay9lbGVtZW50cy8uY3ZzaWdub3JlOiBBZGQgZmlsZSB0byBjdnNpZ25vcmUgYXMgY29tbWFuZGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy8uY3ZzaWdub3JlOgoJICBBZGQgZmlsZSB0byBjdnNpZ25vcmUgYXMgY29tbWFuZGVkLgoKMjAwNy0wNy0xNiAxNjowNDo0OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9jaGVjay9lbGVtZW50cy9tdWx0aXF1ZXVlLmM6IFVzZSBhIEdTdGF0aWNNdXRleCB0byBwcm90ZWN0IGFsbCBjYXNlcyB3aGVyZSBsaWJjaGVjayBmYWlsX2lmL2ZhaWxfdW5sZXNzIG1hY3JvcyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvbXVsdGlxdWV1ZS5jOiAobXFfZHVtbXlwYWRfY2hhaW4pLAoJICAobXFfZHVtbXlwYWRfZXZlbnQpLCAocnVuX291dHB1dF9vcmRlcl90ZXN0KToKCSAgVXNlIGEgR1N0YXRpY011dGV4IHRvIHByb3RlY3QgYWxsIGNhc2VzIHdoZXJlIGxpYmNoZWNrCgkgIGZhaWxfaWYvZmFpbF91bmxlc3MgbWFjcm9zIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMKCSAgc2ltdWx0YW5lb3VzbHkgdG8gYXZvaWQgZXJyb3JzIGxpa2U6CgkgICJjaGVja19wYWNrLmM6MTA3OiA6LTEwODE3MjU0MDA6QmFkIG1lc3NhZ2UgdHlwZSBhcmciCgoyMDA3LTA3LTE2IDE1OjE5OjA2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9zdHJlc3MuYzogTWFrZSBzdXJlIHdlIHNldCB0aGUgcGlwZWxpbmUgYmFjayB0byB0aGUgTlVMTCBzdGF0ZSBiZWZvcmUgZHJvcHBpbmcgb3VyIGZpbmFsIHJlZmVyZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc3RyZXNzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIE1ha2Ugc3VyZSB3ZSBzZXQgdGhlIHBpcGVsaW5lIGJhY2sgdG8gdGhlIE5VTEwgc3RhdGUgYmVmb3JlCgkgIGRyb3BwaW5nIG91ciBmaW5hbCByZWZlcmVuY2UuCgoyMDA3LTA3LTE2IDE0OjU1OjI2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiBNYWtlIHRoZSB0ZWUgc3RyZXNzLXRlc3QgYSBsaXR0bGUgbGVzcyBzdHJlc3NmdWwgc28gaXQgZG9lc24ndCBqdXN0IHRpbWUgb3V0IG9uIHNsb3ctbWFjaC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZWUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSB0aGUgdGVlIHN0cmVzcy10ZXN0IGEgbGl0dGxlIGxlc3Mgc3RyZXNzZnVsIHNvIGl0IGRvZXNuJ3QganVzdAoJICB0aW1lIG91dCBvbiBzbG93LW1hY2hpbmVzLCBhbmQgcmVtb3ZlIGEgc21hbGwgcmFjZSB3aGVuIGl0J3Mgc3RhcnRpbmcKCSAgdXAgYnkgYWRkaW5nIGEgZ2V0X3N0YXRlKCkgY2FsbC4KCjIwMDctMDctMTYgMTI6MzY6MTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3QuYzogQXZvaWQgcmVhZGluZyByZWdpc3RyeSB0d2ljZSBvbiBzdGFydHVwLiBGaXhlcyAjNDU3MzIyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIEF2b2lkIHJlYWRpbmcgcmVnaXN0cnkgdHdpY2Ugb24gc3RhcnR1cC4gRml4ZXMgIzQ1NzMyMi4KCjIwMDctMDctMTMgMTQ6MTE6MjIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgcGtnY29uZmlnLzogU3Vic3RpdHV0ZSB0aGUgQ0ZMQUdTIGZvciBsaWJjaGVjayBpbnRvIG91ciAucGMgZmlsZSB0b28gc28gdGhhdCBkZXBlbmRlbnQgbW9kdWxlcyB3aWxsIHBpY2sgaXQgdXAgcHJvcGVyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItY2hlY2stdW5pbnN0YWxsZWQucGMuaW46CgkgICogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay5wYy5pbjoKCSAgU3Vic3RpdHV0ZSB0aGUgQ0ZMQUdTIGZvciBsaWJjaGVjayBpbnRvIG91ciAucGMgZmlsZSB0b28gc28gdGhhdAoJICBkZXBlbmRlbnQgbW9kdWxlcyB3aWxsIHBpY2sgaXQgdXAgcHJvcGVybHkgaWYgbGliY2hlY2sgaXMgaW5zdGFsbGVkCgkgIGludG8gc29tZSBvdGhlciBwcmVmaXguCgoyMDA3LTA3LTEzIDEzOjQ5OjE0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogUmV2ZXJ0IHRoZSBwa2ctY29uZmlnIGNoZWNrIGZvciBsaWJjaGVjaywgc2luY2UgaXQgcHVsbHMgaW4gdGhlIHdyb25nIG5vbi1QSUMgbGliY2hlY2suYSBvbiBVYnVudHUgYW5kIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFJldmVydCB0aGUgcGtnLWNvbmZpZyBjaGVjayBmb3IgbGliY2hlY2ssIHNpbmNlIGl0IHB1bGxzIGluIHRoZQoJICB3cm9uZyBub24tUElDIGxpYmNoZWNrLmEgb24gVWJ1bnR1IGFuZCBwcm9iYWJseSBGZWRvcmEgdG9vLiBXZSBuZWVkCgkgIGEgcHJvcGVyIHNvbHV0aW9uLCBlaXRoZXIgZnJvbSB0aGUgY2hlY2sgcHJvamVjdCwgb3Igc29tZXRoaW5nIGVsc2UuCgoyMDA3LTA3LTEyIDExOjEwOjIyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjb25maWd1cmUuYWM6IFVzZSBwa2ctY29uZmlnIHRvIGxvY2F0ZSBjaGVjay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBVc2UgcGtnLWNvbmZpZyB0byBsb2NhdGUgY2hlY2suCgoyMDA3LTA3LTEwIDIwOjEwOjE2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC5jOiBGaXggZG9jIHN5bnRheC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgRml4IGRvYyBzeW50YXguCgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFkZCBkZXByZWNhdGlvbiBndWFyZHMuCgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJICBEb24ndCBkb2N1bWVudCBvYmplY3QgKHRoaXMgaXMgaW1wbGljaXRseSBwcml2YXRlKS4KCjIwMDctMDctMDggMTQ6MTE6NTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IFdoZW4gZGVzZXJpYWxpc2luZyBmb289YmFyIHdpdGhvdXQgYSB0eXBlIGNhc3QsIGNoZWNrIGlmIGl0J3MgYSBib29sZWFuIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9wYXJzZV92YWx1ZSk6CgkgIFdoZW4gZGVzZXJpYWxpc2luZyBmb289YmFyIHdpdGhvdXQgYSB0eXBlIGNhc3QsIGNoZWNrIGlmIGl0J3MgYQoJICBib29sZWFuIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gYSBzdHJpbmcgdHlwZSwgb3RoZXJ3aXNlIHRoaW5ncyBsaWtlCgkgIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvL3gtcmF3LWludCxzaWduZWQ9dHJ1ZSAhIGZha2VzaW5rIHdvbid0IHdvcmssCgkgIGJlY2F1c2UgdGhlIGZpbHRlcmNhcHMgZW5kIHVwIGhhdmluZyBhIHNpZ25lZD0oc3RyaW5nKXRydWUgZmllbGQsCgkgIHdoaWNoIGNhdXNlcyBwcm9ibGVtcyBsYXRlciB3aGVuIGludGVyc2VjdGlvbiBjYXBzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgQWRkIGEgdW5pdCB0ZXN0IGZvciB0aGlzLgoKMjAwNy0wNy0wNiAyMTo1MDowMiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IEFQSTogUmVmYWN0b3IgR3N0Q29udHJvbGxlciBpbnRvIHRoZSBjb3JlIGNvbnRyb2xsZXIgd2hpY2ggY2FuIHRha2UgYSBHc3RDb250cm9sU291cmNlIGZvciBwcm92Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXZpZXdlZCBieTogU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9hZGRfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZSksCgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9uZXcpLCAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfZnJlZSksCgkgIChnc3RfY29udHJvbGxlcl9maW5kX2NvbnRyb2xsZWRfcHJvcGVydHkpLAoJICAoZ3N0X2NvbnRyb2xsZXJfbmV3X3ZhbGlzdCksIChnc3RfY29udHJvbGxlcl9uZXdfbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl9uZXcpLCAoZ3N0X2NvbnRyb2xsZXJfcmVtb3ZlX3Byb3BlcnRpZXNfdmFsaXN0KSwKCSAgKGdzdF9jb250cm9sbGVyX3JlbW92ZV9wcm9wZXJ0aWVzX2xpc3QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfcmVtb3ZlX3Byb3BlcnRpZXMpLAoJICAoZ3N0X2NvbnRyb2xsZXJfc2V0X3Byb3BlcnR5X2Rpc2FibGVkKSwKCSAgKGdzdF9jb250cm9sbGVyX3NldF9kaXNhYmxlZCksIChnc3RfY29udHJvbGxlcl9zZXRfY29udHJvbF9zb3VyY2UpLAoJICAoZ3N0X2NvbnRyb2xsZXJfZ2V0X2NvbnRyb2xfc291cmNlKSwgKGdzdF9jb250cm9sbGVyX2dldCksCgkgIChnc3RfY29udHJvbGxlcl9zeW5jX3ZhbHVlcyksIChnc3RfY29udHJvbGxlcl9nZXRfdmFsdWVfYXJyYXkpLAoJICAoX2dzdF9jb250cm9sbGVyX2Rpc3Bvc2UpLCAoZ3N0X2NvbnRyb2xsZXJfZ2V0X3R5cGUpLAoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfc2V0X2ludGVycG9sYXRpb25fbW9kZSksCgkgIChnc3RfY29udHJvbGxlcl9zZXQpLCAoZ3N0X2NvbnRyb2xsZXJfc2V0X2Zyb21fbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl91bnNldCksIChnc3RfY29udHJvbGxlcl91bnNldF9hbGwpLAoJICAoZ3N0X2NvbnRyb2xsZXJfZ2V0X2FsbCksIChnc3RfY29udHJvbGxlcl9zZXRfaW50ZXJwb2xhdGlvbl9tb2RlKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXJwcml2YXRlLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sc291cmNlLmM6CgkgIChnc3RfY29udHJvbF9zb3VyY2VfY2xhc3NfaW5pdCksIChnc3RfY29udHJvbF9zb3VyY2VfaW5pdCksCgkgIChnc3RfY29udHJvbF9zb3VyY2VfZ2V0X3ZhbHVlKSwKCSAgKGdzdF9jb250cm9sX3NvdXJjZV9nZXRfdmFsdWVfYXJyYXkpLCAoZ3N0X2NvbnRyb2xfc291cmNlX2JpbmQpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbHNvdXJjZS5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6IChnc3Rfb2JqZWN0X3NldF9jb250cm9sX3NvdXJjZSksCgkgIChnc3Rfb2JqZWN0X2dldF9jb250cm9sX3NvdXJjZSk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIChnc3RfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZV9maW5kX2NvbnRyb2xfcG9pbnRfbm9kZSksCgkgIChnc3RfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZV9nZXRfZmlyc3RfdmFsdWUpLAoJICAoX2ludGVycG9sYXRlX25vbmVfZ2V0KSwgKGludGVycG9sYXRlX25vbmVfZ2V0KSwKCSAgKGludGVycG9sYXRlX25vbmVfZ2V0X2Jvb2xlYW5fdmFsdWVfYXJyYXkpLAoJICAoaW50ZXJwb2xhdGVfbm9uZV9nZXRfZW51bV92YWx1ZV9hcnJheSksCgkgIChpbnRlcnBvbGF0ZV9ub25lX2dldF9zdHJpbmdfdmFsdWVfYXJyYXkpLAoJICAoX2ludGVycG9sYXRlX3RyaWdnZXJfZ2V0KSwgKGludGVycG9sYXRlX3RyaWdnZXJfZ2V0KSwKCSAgKGludGVycG9sYXRlX3RyaWdnZXJfZ2V0X2Jvb2xlYW5fdmFsdWVfYXJyYXkpLAoJICAoaW50ZXJwb2xhdGVfdHJpZ2dlcl9nZXRfZW51bV92YWx1ZV9hcnJheSksCgkgIChpbnRlcnBvbGF0ZV90cmlnZ2VyX2dldF9zdHJpbmdfdmFsdWVfYXJyYXkpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2UuYzoKCSAgKGdzdF9jb250cm9sX3BvaW50X2ZyZWUpLCAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2VfcmVzZXQpLAoJICAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2VfbmV3KSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX3NldF9pbnRlcnBvbGF0aW9uX21vZGUpLAoJICAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2VfYmluZCksCgkgIChnc3RfY29udHJvbF9wb2ludF9jb21wYXJlKSwgKGdzdF9jb250cm9sX3BvaW50X2ZpbmQpLAoJICAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2Vfc2V0X2ludGVybmFsKSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX3NldCksCgkgIChnc3RfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZV9zZXRfZnJvbV9saXN0KSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX3Vuc2V0KSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX3Vuc2V0X2FsbCksCgkgIChnc3RfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZV9nZXRfYWxsKSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX2dldF9jb3VudCksCgkgIChnc3RfaW50ZXJwb2xhdGlvbl9jb250cm9sX3NvdXJjZV9pbml0KSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX2ZpbmFsaXplKSwKCSAgKGdzdF9pbnRlcnBvbGF0aW9uX2NvbnRyb2xfc291cmNlX2Rpc3Bvc2UpLAoJICAoZ3N0X2ludGVycG9sYXRpb25fY29udHJvbF9zb3VyY2VfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uY29udHJvbHNvdXJjZS5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbmNvbnRyb2xzb3VyY2Vwcml2YXRlLmg6CgkgIEFQSTogUmVmYWN0b3IgR3N0Q29udHJvbGxlciBpbnRvIHRoZSBjb3JlIGNvbnRyb2xsZXIgd2hpY2ggY2FuIHRha2UKCSAgYSBHc3RDb250cm9sU291cmNlIGZvciBwcm92aWRpbmcgYWN0dWFsIHZhbHVlcyBmb3IgdGltZXN0YW1wcy4KCSAgSW1wbGVtZW50IGEgaW50ZXJwb2xhdGlvbiBjb250cm9sIHNvdXJjZSBhbmQgdXNlIHRoaXMgZm9yIGJhY2t3YXJkCgkgIGNvbXBhdGliaWxpdHksIGRlcHJlY2F0ZSBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0IGFyZSBub3cgaGFuZGxlZAoJICBieSBHc3RDb250cm9sU291cmNlIG9yIEdzdEludGVycG9sYXRpb25Db250cm9sU291cmNlLgoJICBNYWtlIGl0IHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIGNvbnRyb2xsZXIgY29tcGxldGVseSBvciBvbmx5IGZvcgoJICBzcGVjaWZpYyBwcm9wZXJ0aWVzLiBGaXhlcyAjNDUwNzExLgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMudHlwZXM6CgkgIEFkZCBuZXcgZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvIHRoZSBkb2NzLgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfc3VpdGUpOgoJICAqIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvYXVkaW8tZXhhbXBsZS5jOiAobWFpbik6CgkgIFBvcnQgdW5pdCB0ZXN0IGFuZCBleGFtcGxlIHRvIHRoZSBuZXcgQVBJIGFuZCBhZGQgc29tZSBuZXcKCSAgdW5pdCB0ZXN0cy4KCjIwMDctMDctMDUgMDk6MDY6MDIgKzAwMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1d0Bza3luZXQuYmU+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogSW1wbGVtZW50IG5vbi1kZWZhdWx0IEdzdFBhZEludExpbmtGdW5jdGlvbiBmb3IgbXVsdGlxdWV1ZSBwYWRzIHNvIHRoYXQgdGhlIHBpcGVsaW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBNYXJrIE5hdXdlbGFlcnRzIDxtYW5hdXcgYXQgc2t5bmV0IGJlPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOgoJICAoZ3N0X211bHRpX3F1ZXVlX2dldF9pbnRlcm5hbF9saW5rcyksIChhcHBseV9idWZmZXIpLAoJICAoc2luZ2xlX3F1ZXVlX292ZXJydW5fY2IpLCAoZ3N0X3NpbmdsZV9xdWV1ZV9uZXcpOgoJICBJbXBsZW1lbnQgbm9uLWRlZmF1bHQgR3N0UGFkSW50TGlua0Z1bmN0aW9uIGZvciBtdWx0aXF1ZXVlIHBhZHMgc28gdGhhdAoJICB0aGUgcGlwZWxpbmUgbGF5b3V0IGNhbiBiZSB0cmFja2VkIGNvcnJlY3RseS4gRml4ZXMgIzQ1MzczMi4KCjIwMDctMDctMDUgMDg6NDI6NDIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvOiBTaW1wbGl0eSAtLWV4dHJhLWRpciBhcyBndGtkb2Mgc2NhbnMgcmVjdXJzaXZlbHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CgkgIFNpbXBsaXR5IC0tZXh0cmEtZGlyIGFzIGd0a2RvYyBzY2FucyByZWN1cnNpdmVseS4KCjIwMDctMDctMDMgMTc6MDE6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IFdoZW4gd2UgZ290IGFuIGVycm9yLCB0aGVyZSBpcyBubyBwb2ludCBpbiB3YWl0aW5nIGZvciBwcmVyb2xsIHdoZW4gc2h1dHRpbmcgZG93bi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAobWFpbik6CgkgIFdoZW4gd2UgZ290IGFuIGVycm9yLCB0aGVyZSBpcyBubyBwb2ludCBpbiB3YWl0aW5nIGZvciBwcmVyb2xsIHdoZW4KCSAgc2h1dHRpbmcgZG93bi4KCjIwMDctMDctMDMgMTY6MjY6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiBCZSBhIGxvdCBzbWFydGVyIHdoZW4gZGVjaWRpbmcgd2hhdCBzcmNwYWQgdG8gdXNlIGZvciBwcm94eWluZyB0aGUgYnVmZmVyX2FsbG9jLiBBbHNvIGhhbmQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzogKGdzdF90ZWVfYmFzZV9pbml0KSwKCSAgKGdzdF90ZWVfcmVxdWVzdF9uZXdfcGFkKSwgKGdzdF90ZWVfcmVsZWFzZV9wYWQpLAoJICAoZ3N0X3RlZV9maW5kX2J1ZmZlcl9hbGxvYyksIChnc3RfdGVlX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfdGVlX2RvX3B1c2gpLCAoY2xlYXJfcGFkcyksIChnc3RfdGVlX2hhbmRsZV9idWZmZXIpLAoJICAoZ3N0X3RlZV9jaGFpbik6CgkgIEJlIGEgbG90IHNtYXJ0ZXIgd2hlbiBkZWNpZGluZyB3aGF0IHNyY3BhZCB0byB1c2UgZm9yIHByb3h5aW5nCgkgIHRoZSBidWZmZXJfYWxsb2MuIEFsc28gaGFuZGxlIHBhZCBhZGRlZC9yZW1vdmVkIHdoZW4gZG9pbmcgc28uCgkgIEZpeGVzICMzNTc5NTkuCgkgIEtlZXAgdHJhY2sgb2Ygd2hhdCBwYWRzIHdlIGFscmVhZHkgcHVzaGVkIG9uIGluIGNhc2Ugd2UgaGF2ZSBwYWRzCgkgIGFkZGVkL3JlbW92ZWQgd2hpbGUgcHVzaGluZy4gRml4ZXMgIzM3NDYzOQoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3RlZS5jOiAoaGFuZG9mZiksIChHU1RfU1RBUlRfVEVTVCksCgkgICh0ZWVfc3VpdGUpOgoJICBBZGRlZCB1bml0IHRlc3QgZm9yIHBhZCByZXN5bmMuCgoyMDA3LTA3LTAxIDIxOjMxOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHBvLzogVXBkYXRlZCB0cmFuc2xhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBvL25sLnBvOgoJICAqIHBvL3N2LnBvOgoJICBVcGRhdGVkIHRyYW5zbGF0aW9ucy4KCjIwMDctMDctMDEgMjE6MzA6MDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcG8vOiBBZGRlZCBuZXcgRmlubmlzaCB0cmFuc2xhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHRyYW5zbGF0aW9uIGJ5OiBUb21taSBWYWluaWthaW5lbiA8VG9tbWkuVmFpbmlrYWluZW5AaWtpLmZpPgoJICAqIHBvL0xJTkdVQVM6CgkgICogcG8vZmkucG86CgkgIEFkZGVkIG5ldyBGaW5uaXNoIHRyYW5zbGF0aW9uLgoKMjAwNy0wNi0yOCAxMToyNToxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBXaGVuIGZpZ3VyaW5nIG91dCB3aGVuIGEgcXVldWUgaXMgZmlsbGVkLCB1c2Ugb3VyIGludGVybmFsIHRpbWUgZXN0aW1hdGUgYmFzZWQgb24gcy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGFwcGx5X2J1ZmZlciksCgkgIChzaW5nbGVfcXVldWVfb3ZlcnJ1bl9jYik6CgkgIFdoZW4gZmlndXJpbmcgb3V0IHdoZW4gYSBxdWV1ZSBpcyBmaWxsZWQsIHVzZSBvdXIgaW50ZXJuYWwgdGltZSBlc3RpbWF0ZQoJICBiYXNlZCBvbiBzZWdtZW50cywganVzdCBsaWtlIGNoZWNrX2Z1bGwgZG9lcy4KCjIwMDctMDYtMjcgMTE6NDc6NDYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBNZW50aW9uIGJ1ZyA0MzA2ODIgY2xvc2VkIGJ5IHByZXZpb3VzIGNvbW1pdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE1lbnRpb24gYnVnIDQzMDY4MiBjbG9zZWQgYnkgcHJldmlvdXMgY29tbWl0LgoKMjAwNy0wNi0yNyAxMTo0MzowNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogUmVtb3ZlIDMgZG8tbm90aGluZyBtZXRob2RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X2dldF90eXBlKToKCSAgUmVtb3ZlIDMgZG8tbm90aGluZyBtZXRob2RzLgoKMjAwNy0wNi0yNyAxMToyNDowOCArMDAwMCAgVGltIEFuZ3VzIDx0aW1Abmd1cy5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgY29weSB3aGVuIHNldHRpbmcgImNhcHMiLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFRpbSBBbmd1cyA8dGltIGF0IG5ndXMgZG90IG5ldD4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX2NsYXNzX2luaXQpLAoJICAoZ3N0X2NhcHNmaWx0ZXJfc2V0X3Byb3BlcnR5KToKCSAgVGFrZSBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgY29weSB3aGVuIHNldHRpbmcgImNhcHMiLgoJICBGaXggZG9jdW1lbnRhdGlvbiB0byBjbGFyaWZ5IHRoaXMgYmVoYXZpb3VyLiBGaXhlcyAjNDQ5NDE0LgoKMjAwNy0wNi0yNyAxMDoxMjoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0LzogUmVtb3ZlIGVtcHR5IGluc3RhbmNlX2luaXQoKSBmdW5jdGlvbnMgdG8gc2F2ZSByZWxvY3MgYW5kIGxlc3NlbiB0aGUgbm9pc2UuIFJlbW92ZSBzb21lIG9mIHRoZSBmdW5jdGlvbiBwcm90b3R5Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmRleGZhY3RvcnkuYzogKGdzdF9pbmRleF9mYWN0b3J5X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2luaXQpOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfaW5pdCk6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2luaXQpOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfaGFuZGxlcl9iYXNlX2luaXQpOgoJICBSZW1vdmUgZW1wdHkgaW5zdGFuY2VfaW5pdCgpIGZ1bmN0aW9ucyB0byBzYXZlIHJlbG9jcyBhbmQgbGVzc2VuIHRoZQoJICBub2lzZS4gUmVtb3ZlIHNvbWUgb2YgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgdGhhdCBhcmUgZG91YmxlZCBieQoJICBHX0RFRklORV9UWVBFLgoKMjAwNy0wNi0yNyAwOTozNDowMSArMDAwMCAgw4l0aWVubmUgTm9yZWF1LUjDqWJlcnQgPGV0aWVubmVAZGVlcHVuZGVyLm9yZz4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jOiBBZGQgcGVlciBhbmQgZGlyZWN0aW9uIGluIHRoZSBYTUwgc2VyaWFsaXNhdGlvbiBvZiBnaG9zdHBhZHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogw4l0aWVubmUgTm9yZWF1LUjDqWJlcnQgPGV0aWVubmUgYXQgZGVlcHVuZGVyIGRvdCBvcmc+CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX3NhdmVfdGh5c2VsZik6CgkgIEFkZCBwZWVyIGFuZCBkaXJlY3Rpb24gaW4gdGhlIFhNTCBzZXJpYWxpc2F0aW9uIG9mIGdob3N0cGFkcy4KCSAgRml4ZXMgIzQ0OTIyNi4KCjIwMDctMDYtMjYgMTY6MjQ6MjAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNvbmZpZ3VyZS5hYzogUHJlc2VydmUgdXNlZnVsIGluZm9ybWF0aW9uLCB0aGFua3MgVGltLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFByZXNlcnZlIHVzZWZ1bCBpbmZvcm1hdGlvbiwgdGhhbmtzIFRpbS4KCjIwMDctMDYtMjYgMTQ6NDU6MTUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLio6IFRha2UgdGhlIG11bHRpcXVldWUgbG9jayB3aGVuIHVwZGF0aW5nIHRoZSBmaWxsIGxldmVsIHNvIHdlIGRvbid0IGdldCBjb25mdXNlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfaW5pdCksCgkgIChnc3Rfc2luZ2xlX3F1ZXVlX2ZsdXNoKSwgKGFwcGx5X3NlZ21lbnQpLCAoYXBwbHlfYnVmZmVyKSwKCSAgKGdzdF9zaW5nbGVfcXVldWVfcHVzaF9vbmUpLCAoZ3N0X211bHRpX3F1ZXVlX2xvb3ApLAoJICAoZ3N0X211bHRpX3F1ZXVlX3NpbmtfYWN0aXZhdGVfcHVzaCksIChnc3RfbXVsdGlfcXVldWVfc2lua19ldmVudCksCgkgIChnc3RfbXVsdGlfcXVldWVfc3JjX2FjdGl2YXRlX3B1c2gpLCAod2FrZV91cF9uZXh0X25vbl9saW5rZWQpLAoJICAoY29tcHV0ZV9oaWdoX2lkKSwgKGdzdF9zaW5nbGVfcXVldWVfbmV3KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuaDoKCSAgVGFrZSB0aGUgbXVsdGlxdWV1ZSBsb2NrIHdoZW4gdXBkYXRpbmcgdGhlIGZpbGwgbGV2ZWwgc28gd2UgZG9uJ3QgZ2V0CgkgIGNvbmZ1c2VkLgoJICBBZnRlciBhcHBseWluZyBhIGJ1ZmZlciBvciBldmVudCBvbiB0aGUgc3JjIHBhZCBzZWdtZW50LCBtYWtlIHN1cmUgdG8KCSAgY2FsbCBnc3RfZGF0YV9xdWV1ZV9saW1pdHNfY2hhbmdlZCgpIHRvIGdldCB0aGUgZGF0YSBxdWV1ZSB0byB1bmJsb2NrCgkgIGFuZCBjaGVjayB0aGUgZmlsbGVkIHN0YXRlIGFnYWluLgoJICBSZXdvcmsgdGhlIG5vdC1saW5rZWQgcGFkIGhhbmRsaW5nIHNvIHRoZSBsb2dpYyBpcyB0aGF0IG5vdC1saW5rZWQKCSAgcGFkcyBjYW4gcHVzaCBhcyBmYXN0IGFzIHRoZXkgbGlrZSwgYnV0IG9ubHkgc28gdGhleSBuZXZlciBnZXQKCSAgYWhlYWQgb2YgYW55IGxpbmtlZCBwYWRzLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL211bHRpcXVldWUuYzogKG1xX3NpbmtwYWRfdG9fc3JjcGFkKSwKCSAgKG1xX2R1bW15cGFkX2dldGNhcHMpLCAobXFfZHVtbXlwYWRfY2hhaW4pLCAobXFfZHVtbXlwYWRfZXZlbnQpLAoJICAocnVuX291dHB1dF9vcmRlcl90ZXN0KSwgKEdTVF9TVEFSVF9URVNUKSwgKG11bHRpcXVldWVfc3VpdGUpOgoJICBBZGQgYSB0ZXN0IHRvIGNoZWNrIHRoYXQgbm90LWxpbmtlZCBwYWRzIGFsd2F5cyBzdGF5IGJlaGluZAoJICBsaW5rZWQgcGFkcy4KCjIwMDctMDYtMjYgMTE6NTc6MjMgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZG9jcy9yYW5kb20vcmVsZWFzZTogU29tZSB1cGRhdGVzIHRvIHRoZSByZWxlYXNlIHByb2NlZHVyZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vcmVsZWFzZToKCSAgU29tZSB1cGRhdGVzIHRvIHRoZSByZWxlYXNlIHByb2NlZHVyZS4KCjIwMDctMDYtMjYgMDg6MjY6MzYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiBNaWNyb29wdGltaXphdGlvbiB0aGF0IHNhdmVzIHN0dW5uaW5nIDgwIGJ5dGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogKF9fZ3N0X2VsZW1lbnRfZGV0YWlsc19jbGVhcik6CgkgIE1pY3Jvb3B0aW1pemF0aW9uIHRoYXQgc2F2ZXMgc3R1bm5pbmcgODAgYnl0ZXMuCgoyMDA3LTA2LTI1IDEyOjM1OjQ2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3BsdWdpbnMvOiBVcGRhdGUgZG9jcyB3aXRoIGNhcHMgaW5mby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkgICogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkgICogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkgIFVwZGF0ZSBkb2NzIHdpdGggY2FwcyBpbmZvLgoKMjAwNy0wNi0yMyAyMjo1NjoyOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwby9pdC5wbzogVXBkYXRlZCBJdGFsaWFuIHRyYW5zbGF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwby9pdC5wbzoKCSAgVXBkYXRlZCBJdGFsaWFuIHRyYW5zbGF0aW9uLgoKMjAwNy0wNi0yMyAxMToxOToxNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGZpeCB3aW4zMiBhcmNoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggd2luMzIgYXJjaAoKMjAwNy0wNi0yMyAxMToxODo0NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICA4MCBsaW5lIGZpeAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgODAgbGluZSBmaXgKCjIwMDctMDYtMjMgMTE6MTU6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcG8vOiBVcGRhdGUgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIENoYW5nZUxvZzoKCSAgKiBwby92aS5wbzoKCSAgVXBkYXRlIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLgoKMjAwNy0wNi0yMSAyMjozNzoyNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogUmVtb3ZlIHVudXNlZCBzaWduYWwgZW51bS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBSZW1vdmUgdW51c2VkIHNpZ25hbCBlbnVtLgoKMjAwNy0wNi0yMSAxODowMDo1OCArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogTUFJTlRBSU5FUlM6CgkgIHVwZGF0ZSBNQUlOVEFJTkVSUyBmaWxlIHRvIHJlZmxlY3QgY3VycmVudCByZWFsaXRpZXMgYmV0dGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgTUFJTlRBSU5FUlMgZmlsZSB0byByZWZsZWN0IGN1cnJlbnQgcmVhbGl0aWVzIGJldHRlcgoKMjAwNy0wNi0yMSAxNjozOTowMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBCZWVmIHVwIGFuZCBpbmNsdWRlIHRoZSBkb2NzIGZvciBnc3RfdHlwZV9yZWdpc3Rlcl9zdGF0aWNfZnVsbCBhbmQgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlIGFuZCBhZGQgdGhlIEEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3R5cGVfcmVnaXN0ZXJfc3RhdGljX2Z1bGwpOgoJICBCZWVmIHVwIGFuZCBpbmNsdWRlIHRoZSBkb2NzIGZvciBnc3RfdHlwZV9yZWdpc3Rlcl9zdGF0aWNfZnVsbCBhbmQKCSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlIGFuZCBhZGQgdGhlIEFQSSBrZXl3b3JkCgkgIGluIHRoZSBDaGFuZ2VMb2cuCgoyMDA3LTA2LTIxIDE0OjM1OjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IEZpeCBzZXR0aW5nIG1heC0qIHByb3BlcnRpZXMgYWZ0ZXIgYWRkaW5nIHF1ZXVlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfc2V0X3Byb3BlcnR5KSwKCSAgKHVwZGF0ZV90aW1lX2xldmVsKSwgKGdzdF9zaW5nbGVfcXVldWVfcHVzaF9vbmUpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2NoYWluKSwgKGdzdF9tdWx0aV9xdWV1ZV9zaW5rX2V2ZW50KSwKCSAgKHNpbmdsZV9xdWV1ZV9vdmVycnVuX2NiKSwgKHNpbmdsZV9xdWV1ZV91bmRlcnJ1bl9jYiksCgkgIChzaW5nbGVfcXVldWVfY2hlY2tfZnVsbCk6CgkgIEZpeCBzZXR0aW5nIG1heC0qIHByb3BlcnRpZXMgYWZ0ZXIgYWRkaW5nIHF1ZXVlcy4KCSAgVXNlIElTX0ZJTExFRCBmb3IgY2hlY2tpbmcgdmlzaWJsZSBpdGVtcy4KCSAgU2lnbmFsIG92ZXJydW4gaWYgbXVsdGlwbGUgcXVldWVzIG92ZXJydW4uCgkgIEFkZCBleHRyYSBkZWJ1ZyBvdXRwdXQuCgkgIFBhdGNoIGJ5OiBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgoKMjAwNy0wNi0yMSAxNDoyOTowNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgU2F2aW5nIHJlbG9jYXRpb25zIGZvciBHVHlwZUluZm8gYW5kIEdzdEVsZW1lbnREZXRhaWxzLiBGaXhlcyAjNDM3NDU3LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHNfc2ltcGxlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3R5cGVfcmVnaXN0ZXJfc3RhdGljX2Z1bGwpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfYmFzZV9pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2Jhc2VfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfYmFzZV9pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiAoZ3N0X2ZkX3NpbmtfYmFzZV9pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2Jhc2VfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19iYXNlX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2Jhc2VfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2Jhc2VfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfYmFzZV9pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfYmFzZV9pbml0KSwKCSAgKGFwcGx5X2J1ZmZlciksIChnc3RfcXVldWVfY2hhaW4pOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2Jhc2VfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9iYXNlX2luaXQpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NsYXNzX2luaXQpOgoJICBTYXZpbmcgcmVsb2NhdGlvbnMgZm9yIEdUeXBlSW5mbyBhbmQgR3N0RWxlbWVudERldGFpbHMuIEZpeGVzICM0Mzc0NTcuCgoyMDA3LTA2LTIxIDA5OjQ2OjAyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOiBGaXggdHlwbyBpbiBpYW5hLm9yZyBVUkkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDoKCSAgRml4IHR5cG8gaW4gaWFuYS5vcmcgVVJJLgoKMjAwNy0wNi0xOSAyMTo1ODozMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wNi0xOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jCgkgICh0ZXN0X3N0YXRlX2NoYW5nZV9yZXR1cm5zKTogRW5hYmxlIHB1bGwtbW9kZSB0ZXN0cyBub3cgdGhhdAoJICBiYXNlc2luayBoYXMgYmVlbiBmaXhlZC4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlX3NpbmtfbmVlZHNfcHJlcm9sbCk6CgkgIENoYW5nZWQgZnJvbSBnc3RfYmFzZV9zaW5rX2lzX3ByZXJvbGxlZCwgcmV2ZXJzaW5nIHRoZSBzZW5zZSBvZgoJICB0aGUgcmV0dXJuIHZhbHVlLiBSZXR1cm5zIEZBTFNFIGFsc28gaWYgdGhlIHNpbmsgaXMgaW4gcHVsbCBtb2RlLAoJICBpbiB3aGljaCBjYXNlIGl0IG5lZWRzIG5vIHByZXJvbGwuCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXJ5LCBnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6IFVwZGF0ZSBmb3IKCSAgbmVlZHNfcHJlcm9sbCBjaGFuZ2UuCgkgIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6IEFkZCBhIGNhc2UgZm9yIFJFQURZX1RPX1BBVVNFRCBhZnRlcgoJICBjaGFpbmluZyB1cCwgaW4gd2hpY2ggd2UgcmV0dXJuIFNVQ0NFU1MgZGlyZWN0bHkgaWYgd2UgYWN0aXZhdGVkCgkgIGluIHB1bGwgbW9kZSBpbnN0ZWFkIG9mIEFTWU5DLiBJbnZvbHZlcyBjb3VudGVyaW5nIGFuIGFzeW5jX3N0YXJ0CgkgIG1lc3NhZ2Ugc2VudCBiZWZvcmUgY2hhaW5pbmcgdXA7IG5vdCBzdXJlIGlmIHRoaXMgaXMgY29ycmVjdCwgaW4KCSAgYW4gaWRlYWwgd29ybGQgd2Ugb25seSBzZW5kIGFzeW5jLXN0YXJ0IHdoZW4gYWN0aXZhdGluZyBpbiBwdXNoCgkgIG1vZGUuCgoyMDA3LTA2LTE5IDIxOjI4OjU0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9zaW1wbGUtbGF1bmNoLWxpbmVzLmM6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wNi0xOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jCgkgICh0ZXN0X3N0YXRlX2NoYW5nZV9yZXR1cm5zKTogTmV3IHRlc3QsIHBhcnRpYWxseSBkaXNhYmxlZCB1bnRpbAoJICBiYXNlc2luayBpcyBmaXhlZC4KCjIwMDctMDYtMTkgMTY6MDU6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogRml4IGV2ZW50IGxlYWsuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiAoYXBwbHlfYnVmZmVyKSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9zaW5rX2V2ZW50KToKCSAgRml4IGV2ZW50IGxlYWsuCgoyMDA3LTA2LTE5IDEwOjQxOjMzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBNb3ZlIHRoZSBjb21tb24gY29kZSBmb3IgcG9zdGluZyBzdGF0ZS1jaGFuZ2UgbWVzc2FnZXMgaW50byBvbmUgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwgKGJpbl9wdXNoX3N0YXRlX2NvbnRpbnVlKSwKCSAgKGJpbl9oYW5kbGVfYXN5bmNfc3RhcnQpLCAoYmluX2hhbmRsZV9hc3luY19kb25lKSwKCSAgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIE1vdmUgdGhlIGNvbW1vbiBjb2RlIGZvciBwb3N0aW5nIHN0YXRlLWNoYW5nZSBtZXNzYWdlcyBpbnRvCgkgIG9uZSBmdW5jdGlvbi4KCSAgQnJvYWRjYXN0IHRoZSBzdGF0ZSBzaWduYWwgYWZ0ZXIgd2UgcG9zdGVkIHRoZSBtZXNzYWdlcy4KCSAgTWFyayB0aGUgYmluIGFzIGJ1c3kgd2hlbiBpdCdzIGRvaW5nIGEgc3RhdGUtY2hhbmdlLgoJICBNYWtlIHN1cmUgYXN5bmMtc3RhcnQvZG9uZSBtZXNzYWdlcyBkb24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgYmluJ3MKCSAgc3RhdGUgd2hlbiBpdCdzIGJ1c3kuCgkgIEFmdGVyIHRoZSBzdGF0ZSBjaGFuZ2UsIGxldCB0aGUgYmluIGNoZWNrIHdoaWNoIGVsZW1lbnRzIGNvbXBsZXRlZCB0aGUKCSAgc3RhdGUgY2hhbmdlIHdoaWxlIGl0IHdhcyBidXN5IHNvIHRoYXQgaXQgY2FuIHVwZGF0ZSBpdHMgc3RhdGUuCgoyMDA3LTA2LTE5IDEwOjM4OjM5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvcmFuZG9tL3JlbGVhc2U6IEFkZCBhIG5vdGUgYWJvdXQgdXBkYXRpbmcgdGhlIGRvYXAgZmlsZSB0byB0aGUgcmVsZWFzZSBjaGVja2xpc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vcmVsZWFzZToKCSAgQWRkIGEgbm90ZSBhYm91dCB1cGRhdGluZyB0aGUgZG9hcCBmaWxlIHRvIHRoZSByZWxlYXNlIGNoZWNrbGlzdAoKMjAwNy0wNi0xOCAxNjo0NDowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVmZXJlbmNlIHRoZSBidWZmZXIvZXZlbnQgYWZ0ZXIgd2UgaGF2ZSBnaXZlbiBhd2F5IG93bmVyc2hpcCBpbi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGFwcGx5X2J1ZmZlciksCgkgIChnc3Rfc2luZ2xlX3F1ZXVlX3B1c2hfb25lKSwgKGdzdF9tdWx0aV9xdWV1ZV9jaGFpbiksCgkgIChnc3RfbXVsdGlfcXVldWVfc2lua19ldmVudCk6CgkgIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWZlcmVuY2UgdGhlIGJ1ZmZlci9ldmVudCBhZnRlciB3ZSBoYXZlIGdpdmVuIGF3YXkKCSAgb3duZXJzaGlwIGluIHRoZSBxdWV1ZS4KCjIwMDctMDYtMTggMTU6MTU6MzIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogVXBkYXRlIHF1ZXVlIHN0YXRlIF9hZnRlcl8gYWRkaW5nIHRoZSBpdGVtIGluIHRoZSBxdWV1ZSBiZWNhdXNlIGVsc2Ugd2UgY291bGQgZW5kIHUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3Rfc2luZ2xlX3F1ZXVlX2ZsdXNoKSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9jaGFpbiksIChnc3RfbXVsdGlfcXVldWVfc2lua19ldmVudCk6CgkgIFVwZGF0ZSBxdWV1ZSBzdGF0ZSBfYWZ0ZXJfIGFkZGluZyB0aGUgaXRlbSBpbiB0aGUgcXVldWUgYmVjYXVzZSBlbHNlIHdlCgkgIGNvdWxkIGVuZCB1cCBiZWluZyBmdWxsIHdpdGhvdXQgdGhlIGVsZW1lbnQgYWRkZWQgeWV0LgoKMjAwNy0wNi0xOCAxNToxMjoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uKjogSW1tZWRpYXRseSBjb21taXQgdGhlIHRvcGxldmVsIGJpbiBzdGF0ZSB3aGVuIHJlY2VpdmluZyBhbiBhc3luYy1kb25lIG1lc3NhZ2UuIFRoaXMgZW5hYmxlcyB1cyB0byBhdm9pZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2luaXQpLCAoZ3N0X2Jpbl9hZGRfZnVuYyksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5fZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2Jpbl9lbGVtZW50X3NldF9zdGF0ZSksIChnc3RfYmluX2NvbnRpbnVlX2Z1bmMpLAoJICAoYmluX3B1c2hfc3RhdGVfY29udGludWUpLCAoYmluX2hhbmRsZV9hc3luY19zdGFydCksCgkgIChiaW5faGFuZGxlX2FzeW5jX2RvbmUpLCAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgIEltbWVkaWF0bHkgY29tbWl0IHRoZSB0b3BsZXZlbCBiaW4gc3RhdGUgd2hlbiByZWNlaXZpbmcgYW4gYXN5bmMtZG9uZQoJICBtZXNzYWdlLiBUaGlzIGVuYWJsZXMgdXMgdG8gYXZvaWQgc3Bhd25pbmcgYSB0aHJlYWQgdG8gY29tbWl0IHRoZSBzdGF0ZQoJICBpbiBzb21lIGNvbW1vbiBjYXNlcyBhbmQgaXQgYWxzbyBhdm9pZHMgc29tZSByYWNlcy4KCSAgQXZvaWQgc3Bhd25pbmcgYSBzdGF0ZSB0aHJlYWQgd2hlbiBhZGRpbmcvcmVtb3ZpbmcgYXN5bmMgZWxlbWVudHMgdG8gYQoJICB0b3BsZXZlbCBiaW4uIEluc3RlYWQgd2UgaW1tZWRpYXRseSB1cGRhdGUgdGhlIGJpbiBzdGF0ZS4KCSAgR2V0IHJpZCBvZiBpdGVyYXRpbmcgYWxsIHRoZSBjaGlsZHJlbiB3aGVuIGdldHRpbmcgdGhlIHN0YXRlIGluIHRoZSBiaW4KCSAgYmVjYXVzZSBpdCBpcyBub3cgYWx3YXlzIHVwLXRvLWRhdGUuCgkgIEZpeCBidWcgd2hlcmUgbG9ja2VkIGVsZW1lbnRzIHdvdWxkIGFsd2F5cyByZXR1cm4gX1NVQ0NFU1MgZXZlbiBpdCB0aGV5CgkgIHJldHVybmVkIE5PX1BSRVJPTEwgYmVmb3JlIGJlaW5nIGxvY2tlZC4KCSAgRml4IHRoZSBvcmRlciBvZiB0aGUgc3RhdGVfY2hhbmdlLCBhc3luYy1zdGFydC9kb25lIG1lc3NhZ2VzIHRoYXQgd2FzCgkgIHNvbWV0aW1lcyBpbmNvcnJlY3QuCgkgIE1hcmsgdGhlIHN0YXRlX2RpcnR5IGZpZWxkIGFzIGRlcHJlY2F0ZWQsIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZSBhcyB3ZQoJICBhcmUgYWx3YXlzIHVwLXRvLWRhdGUuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF9zdGF0ZV9mdW5jKSwKCSAgKGdzdF9lbGVtZW50X2NvbnRpbnVlX3N0YXRlKToKCSAgU21hbGwgZGVidWcgaW5wcm92ZW1lbnRzLgoJICBSZXR1cm4gdGhlIHByZXZpb3VzIGVsZW1lbnQgc3RhdGUgcmV0dXJuIHdoZW4gbm90aGluZyBpcyBwZW5kaW5nIGluc3RlYWQKCSAgb2YgYmxpbmRseSByZXR1cm5pbmcgU1VDQ0VTUy4KCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChHU1RfU1RBUlRfVEVTVCksIChwYWRfYmxvY2tlZF9jYiksCgkgIChnc3Rfc2lua3Nfc3VpdGUpOgoJICBBZGQgYSB3aG9sZSBidW5jaCBvZiBuZXcgdGVzdGNhc2VzLgoKMjAwNy0wNi0xNyAxNzoyNjo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwby86IFVwZGF0ZSB0cmFuc2xhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBvL3VrLnBvOgoJICAqIHBvL3ZpLnBvOgoJICBVcGRhdGUgdHJhbnNsYXRpb25zLgoKMjAwNy0wNi0xNSAxNDozNzoyOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IEZpeCB0eXBvIGluIHRoZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIEZpeCB0eXBvIGluIHRoZSBkb2NzLgoKMjAwNy0wNi0xNSAxMTo0OToyNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6IEFkZCBkb2NzIGZvciBuZXcgbWV0aG9kcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQWRkIGRvY3MgZm9yIG5ldyBtZXRob2RzLgoKMjAwNy0wNi0xNSAxMTozNToyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBEb24ndCB1c2UgR1NsaWNlIGJlY2F1c2Ugd2UgZG9uJ3QgZGVwZW5kIG9uID49IDIuMTAgeWV0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGdzdF9tdWx0aV9xdWV1ZV9pdGVtX2Rlc3Ryb3kpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2l0ZW1fbmV3KToKCSAgRG9uJ3QgdXNlIEdTbGljZSBiZWNhdXNlIHdlIGRvbid0IGRlcGVuZCBvbiA+PSAyLjEwIHlldC4KCjIwMDctMDYtMTUgMTE6MDk6MzggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogUmVtb3ZlIGRlYnVnIHByaW50Zi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3Rfc2luZ2xlX3F1ZXVlX2ZsdXNoKSwKCSAgKHVwZGF0ZV90aW1lX2xldmVsKSwgKGFwcGx5X3NlZ21lbnQpLCAoYXBwbHlfYnVmZmVyKSwKCSAgKGdzdF9zaW5nbGVfcXVldWVfcHVzaF9vbmUpLCAoZ3N0X211bHRpX3F1ZXVlX2l0ZW1fbmV3KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9sb29wKSwgKGdzdF9tdWx0aV9xdWV1ZV9zaW5rX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X211bHRpX3F1ZXVlX3NpbmtfZXZlbnQpLCAoc2luZ2xlX3F1ZXVlX292ZXJydW5fY2IpLAoJICAoc2luZ2xlX3F1ZXVlX3VuZGVycnVuX2NiKSwgKHNpbmdsZV9xdWV1ZV9jaGVja19mdWxsKToKCSAgUmVtb3ZlIGRlYnVnIHByaW50Zi4KCjIwMDctMDYtMTUgMTE6MDA6MzIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGRhdGFxdWV1ZS4qOiBWYXJpb3VzIGNsZWFudXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGRhdGFxdWV1ZS5jOiAoZ3N0X2RhdGFfcXVldWVfY2xlYW51cCksCgkgIChnc3RfZGF0YV9xdWV1ZV9maW5hbGl6ZSksIChnc3RfZGF0YV9xdWV1ZV9sb2NrZWRfaXNfZW1wdHkpLAoJICAoZ3N0X2RhdGFfcXVldWVfc2V0X2ZsdXNoaW5nKSwgKGdzdF9kYXRhX3F1ZXVlX3B1c2gpLAoJICAoZ3N0X2RhdGFfcXVldWVfcG9wKSwgKGdzdF9kYXRhX3F1ZXVlX2Ryb3BfaGVhZCksCgkgIChnc3RfZGF0YV9xdWV1ZV9saW1pdHNfY2hhbmdlZCksIChnc3RfZGF0YV9xdWV1ZV9nZXRfbGV2ZWwpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmg6CgkgIFZhcmlvdXMgY2xlYW51cHMuCgkgIEFkZGVkIG1ldGhvZHMgdG8gZ2V0IHRoZSBjdXJyZW50IGxldmVscyBhbmQgdG8gaW5mb3JtIHRoZSBxdWV1ZSB0aGF0IHRoZQoJICAnZnVsbCcgbGltaXRzIGNoYW5nZWQuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3RfbXVsdGlfcXVldWVfaW5pdCksCgkgIChnc3RfbXVsdGlfcXVldWVfZmluYWxpemUpLCAoZ3N0X211bHRpX3F1ZXVlX3NldF9wcm9wZXJ0eSksCgkgIChnc3Rfc2luZ2xlX3F1ZXVlX2ZsdXNoKSwgKHVwZGF0ZV90aW1lX2xldmVsKSwgKGFwcGx5X3NlZ21lbnQpLAoJICAoYXBwbHlfYnVmZmVyKSwgKGdzdF9zaW5nbGVfcXVldWVfcHVzaF9vbmUpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2l0ZW1fc3RlYWxfb2JqZWN0KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9pdGVtX2Rlc3Ryb3kpLCAoZ3N0X211bHRpX3F1ZXVlX2l0ZW1fbmV3KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9sb29wKSwgKGdzdF9tdWx0aV9xdWV1ZV9jaGFpbiksCgkgIChnc3RfbXVsdGlfcXVldWVfc2lua19hY3RpdmF0ZV9wdXNoKSwgKGdzdF9tdWx0aV9xdWV1ZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9nZXRjYXBzKSwgKGdzdF9tdWx0aV9xdWV1ZV9zcmNfYWN0aXZhdGVfcHVzaCksCgkgIChnc3RfbXVsdGlfcXVldWVfc3JjX3F1ZXJ5KSwgKHNpbmdsZV9xdWV1ZV9vdmVycnVuX2NiKSwKCSAgKHNpbmdsZV9xdWV1ZV91bmRlcnJ1bl9jYiksIChzaW5nbGVfcXVldWVfY2hlY2tfZnVsbCksCgkgIChnc3Rfc2luZ2xlX3F1ZXVlX25ldyk6CgkgIEtlZXAgdHJhY2sgb2YgdGltZSBpbiB0aGUgcXVldWUgYnkgbWVhc3VyaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KCSAgcnVubmluZ190aW1lIG9uIGlucHV0IGFuZCBvdXRwdXQuIFRoaXMgZ2l2ZXMgbW9yZSBhY2N1cmF0ZSByZXN1bHRzIGFuZAoJICBjYW4gY29tcGVuc2F0ZSBmb3Igc2VnbWVudHMgY29ycmVjdGx5LgoJICBNYWtlIGEgcXVldWUgYnkgZGVmYXVsdCBvbmx5IDUgYnVmZmVycyBkZWVwLiBXZSB3aWxsIG5vdyBpbmNyZWFzZSB0aGUKCSAgYnVmZmVyIHNpemUgZGVwZW5kaW5nIG9uIHRoZSBmaWxsZWRuZXNzIG9mIHRoZSBvdGhlciBxdWV1ZXMuCgkgIEZhY3RvciBvdXQgY29tbW9uZyBmbHVzaCBjb2RlLgoJICBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFkZGl0aW9uYWwgcmVmY291bnRzIHRvIGJ1ZmZlcnMgd2hlbiB3ZSBjYW4gYXZvaWQKCSAgaXQuCgkgIFByb3BhZ2F0ZSBHc3RGbG93UmV0dXJuIGRpZmZlcmVudGx5LgoJICBVc2UgR1NsaWNlIGZvciBpbnRlcm1lZGlhdGUgR3N0TXVsdGlRdWV1ZUl0ZW1zLgoJICBLZWVwIHRyYWNrIG9mIEVPUy4KCSAgUmVzaXplIHF1ZXVlcyBvbiBvdmVyIGFuZCB1bmRlcnJ1bnMgYmFzZWQgb24gZmlsbGVkIGxldmVsIG9mIG90aGVyCgkgIHF1ZXVlcy4KCSAgV2hlbiBjaGVja2luZyBpZiB0aGUgcXVldWUgaXMgZmlsbGVkLCBwcmVmZXIgdG8gbWVhc3VyZSBpbiB0aW1lIGlmIHdlCgkgIGNhbiBhbmQgZmFsbCBiYWNrIHRvIGJ5dGVzIHdoZW4gbm8gdGltZSBpcyBrbm93bi4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgIEZpeCByZXR1cm4gdmFsdWUuCgoyMDA3LTA2LTE1IDEwOjQ4OjE5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IFdvcmsgYXJvdW5kIHRoZSBicm9rZW5uZXNzIG9mIHRoZSBldmVudCB2bWV0aG9kIGluIGJhc2V0cmFuc2Zvcm0uIFByZWZlciB0byByZXR1cm4gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfZXZlbnQpOgoJICBXb3JrIGFyb3VuZCB0aGUgYnJva2VubmVzcyBvZiB0aGUgZXZlbnQgdm1ldGhvZCBpbiBiYXNldHJhbnNmb3JtLiBQcmVmZXIKCSAgdG8gcmV0dXJuIFRSVUUgd2hlbiB0aGUgc3ViY2xhc3MgcmV0dXJuZWQgRkFMU0UgKG1lYW5pbmcgZG9uJ3QgZm9yd2FyZAoJICB0aGUgZXZlbnQpLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBDbGFyaWZ5IHRoZSBkb2NzLgoKMjAwNy0wNi0xNSAxMDo0Mzo1MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEltcHJvdmUgZGVidWdnaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3B1c2hfZXZlbnQpLCAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19xdWVyeV9sYXRlbmN5KSwKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KSwgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChzZXR1cF9waXBlbGluZSk6CgkgIEltcHJvdmUgZGVidWdnaW5nLgoKMjAwNy0wNi0xNSAwNzoyNzowMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOiBBZGRlZCBtb3JlIGZvcm1hdHMgdG8gY2FwcyB0YWJsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOgoJICBBZGRlZCBtb3JlIGZvcm1hdHMgdG8gY2FwcyB0YWJsZS4KCjIwMDctMDYtMTUgMDc6MDI6MDQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogUmVtb3ZlIGNydWZ5IGNvZGUuIEdPcHRpb24gZG9lcyBub3QgbmVlZCB0aGlzIHdvcmthcm91bmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICBSZW1vdmUgY3J1ZnkgY29kZS4gR09wdGlvbiBkb2VzIG5vdCBuZWVkIHRoaXMgd29ya2Fyb3VuZC4KCjIwMDctMDYtMTQgMjA6Mjk6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiBGaXggd3JvbmcgZ2V0dGVyIGZvciBlbnVtcyBpbiBjb250cm9sbGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X3NldF9pbnRlcnBvbGF0aW9uX21vZGUpOgoJICBGaXggd3JvbmcgZ2V0dGVyIGZvciBlbnVtcyBpbiBjb250cm9sbGVyLgoKMjAwNy0wNi0xNCAxNzozNjoxOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IEludGVyY2VwdCBjcml0aWNhbHMgYW5kIHdhcm5pbmdzIGluIHRoZSBHc3QtUGhvbm9uIGxvZyBkb21haW4sIHNvCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfaW5pdCk6CgkgIEludGVyY2VwdCBjcml0aWNhbHMgYW5kIHdhcm5pbmdzIGluIHRoZSBHc3QtUGhvbm9uIGxvZyBkb21haW4sIHNvCgkgIEFTU0VSVF9DUklUSUNBTCgpIGV0Yy4gY2FuIGJlIHVzZWQgaW4gZ3N0LXBob25vbidzIHVuaXQgdGVzdHMgYXMKCSAgd2VsbC4KCjIwMDctMDYtMTQgMTY6MDc6MDkgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0cGFyYW1zcGVjcy5jOiBTaW5jZSB0aGlzIGZpbGUgZG9lc24ndCBpbmNsdWRlICJnc3QuaCIgaXQgd2lsbCBub3QgZ28gdGhyb3VnaCB0aGUgbWFjcm9zIHRoYXQgZGlzYWJsZSBHU1RfTE9HIGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhcmFtc3BlY3MuYzogKF9nc3RfcGFyYW1fZnJhY3Rpb25fdmFsaWRhdGUpOgoJICBTaW5jZSB0aGlzIGZpbGUgZG9lc24ndCBpbmNsdWRlICJnc3QuaCIgaXQgd2lsbCBub3QgZ28gdGhyb3VnaCB0aGUKCSAgbWFjcm9zIHRoYXQgZGlzYWJsZSBHU1RfTE9HIGlmIGRlYnVnZ2luZyB3YXMgZGlzYWJsZWQuCgoyMDA3LTA2LTE0IDE1OjU2OjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgVWdseSAnZml4JyBmb3IgdGhlIGNvbnRyb2xsZXIgdW5pdCB0ZXN0IG9uIHRoZSBwNSBib3Q6IGluIGZhaWxfdW5sZXNzX2VxdWFsc19mbG9hdCgpIGNoZWNrIHdoZXRoZXIgdGhlIHZhbHVlcyBhcmUgJ2FsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgICogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay11bmluc3RhbGxlZC5wYy5pbjoKCSAgKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLnBjLmluOgoJICBVZ2x5ICdmaXgnIGZvciB0aGUgY29udHJvbGxlciB1bml0IHRlc3Qgb24gdGhlIHA1IGJvdDogaW4KCSAgZmFpbF91bmxlc3NfZXF1YWxzX2Zsb2F0KCkgY2hlY2sgd2hldGhlciB0aGUgdmFsdWVzIGFyZSAnYWxtb3N0CgkgIGVxdWFsJyBieSBhbGxvd2luZyBhIHNtYWxsIGFic29sdXRlIGVycm9yLCB3aGljaCBzaG91bGQgYmUgZ29vZAoJICBlbm91Z2ggZm9yIG91ciB1c2UgY2FzZXMgKG5vcm1hbCBudW1iZXJzIGFuZCB2YWx1ZXMgY2xvc2UgdG8gMCkuCgkgIFByb3BlciBmaXhhZ2UgbGVmdCB0byBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGFmaWNpb25hZG9zLgoKMjAwNy0wNi0xNCAxMjowMzo0NCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBBZGQgdHdvIGJyZWFrcyB0aGF0cyB3aGVyZSBtaXNzaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3Jlc2V0X3FvcyksCgkgIChnc3RfYmFzZV9zaW5rX3JlbmRlcl9vYmplY3QpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBBZGQgdHdvIGJyZWFrcyB0aGF0cyB3aGVyZSBtaXNzaW5nLgoKMjAwNy0wNi0xNCAxMTo1Njo0NCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFQSTogYWRkIGZhaWxfdW5sZXNzX2VxdWFsc19mbG9hdCgpIGFuZCBhc3NlcnRfZXF1YWxzX2Zsb2F0KCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgQVBJOiBhZGQgZmFpbF91bmxlc3NfZXF1YWxzX2Zsb2F0KCkgYW5kIGFzc2VydF9lcXVhbHNfZmxvYXQoKS4KCSAgQWRkIGRvY3VtZW50YXRpb24gZm9yIHNvbWUgb2YgdGhlIG1hY3Jvcy4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVXNlIG5ld2x5LWFkZGVkIGFzc2VydHMuCgoyMDA3LTA2LTE0IDEwOjMzOjI4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IFNob3cgdGhlIGNhcHMgY2hhbmdlIGluIHRoZSBsb2cgdG8gaGVscCBzcG90dGluZyB0aGUgY2FzZSBvZiBub3QgZXhhY3RseSBtYXRjaGluZyBjYXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9mdWxsKSwgKGdzdF9wYWRfcHVzaCk6CgkgIFNob3cgdGhlIGNhcHMgY2hhbmdlIGluIHRoZSBsb2cgdG8gaGVscCBzcG90dGluZyB0aGUgY2FzZSBvZiBub3QKCSAgZXhhY3RseSBtYXRjaGluZyBjYXBzLgoKMjAwNy0wNi0xNCAwODo1Mjo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcHdnL2J1aWxkaW5nLWJvaWxlci54bWw6IEZpeCB0eXBvcywgc3BvdHRlZCBieSBUaGlqcyBWZXJtZWlyICgjNDQ3MTkwKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctYm9pbGVyLnhtbDoKCSAgRml4IHR5cG9zLCBzcG90dGVkIGJ5IFRoaWpzIFZlcm1laXIgKCM0NDcxOTApLgoKMjAwNy0wNi0xMyAxNjoxNToyMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL3BsdWdpbnMvdG1wbC8uY3ZzaWdub3JlOiBJZ25vcmUgZmlsZSB0byBrZWVwIHRoZSBidWlsZGJvdHMgaGFwcHkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wbHVnaW5zL3RtcGwvLmN2c2lnbm9yZToKCSAgSWdub3JlIGZpbGUgdG8ga2VlcCB0aGUgYnVpbGRib3RzIGhhcHB5CgoyMDA3LTA2LTEzIDE1OjM5OjUzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvcGx1Z2lucy86IFB1bGwgZmRzaW5rIGludG8gdGhlIGRvY3MgdG9vLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CgkgICogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLWRvY3Muc2dtbDoKCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OgoJICBQdWxsIGZkc2luayBpbnRvIHRoZSBkb2NzIHRvby4KCjIwMDctMDYtMTEgMDc6MTQ6NTMgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiBBY3R1YWxseSB1c2UgdGhlIG5ldyBmdW5jdGlvbnMgd2l0aCBtaW4vbWF4IGNoZWNrcyBmb3IgdGhlIHRyaWdnZXIgYW5kIG5vbmUgaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgQWN0dWFsbHkgdXNlIHRoZSBuZXcgZnVuY3Rpb25zIHdpdGggbWluL21heCBjaGVja3MgZm9yIHRoZSB0cmlnZ2VyIGFuZAoJICBub25lIGludGVycG9sYXRpb24gbW9kZXMgZm9yIGdldCgpIGFuZCBnZXRfdmFsdWVfYXJyYXkoKSBpbnN0ZWFkIG9mCgkgIGp1c3QgdGhlIGxhdHRlci4KCjIwMDctMDYtMTAgMTI6Mzg6MTEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiBVbnNldCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBHVmFsdWVzIHdoZW4gZnJlZWluZyB0aGUgY29ycmVzcG9uZGluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X2ZyZWUpOgoJICBVbnNldCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBHVmFsdWVzIHdoZW4gZnJlZWluZyB0aGUgY29ycmVzcG9uZGluZwoJICBHc3RDb250cm9sbGVyUHJvcGVydHkgc3RydWN0LgoKMjAwNy0wNi0wOSAxNjo1ODozMCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IFByb3RlY3QgYWdhaW5zdCB2YWx1ZXMgbGFyZ2VyIG9yIHNtYWxsZXIgdGhhbiB0aGUgbWluaW11bSBvciBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIHRoZSBwcm9wLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfbmV3KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXJwcml2YXRlLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9maW5kX2NvbnRyb2xfcG9pbnRfbm9kZSksCgkgIChpbnRlcnBvbGF0ZV9ub25lX2dldCksIChpbnRlcnBvbGF0ZV9ub25lX2dldF9lbnVtX3ZhbHVlX2FycmF5KSwKCSAgKGludGVycG9sYXRlX25vbmVfZ2V0X3N0cmluZ192YWx1ZV9hcnJheSksCgkgIChpbnRlcnBvbGF0ZV90cmlnZ2VyX2dldCksCgkgIChpbnRlcnBvbGF0ZV90cmlnZ2VyX2dldF9lbnVtX3ZhbHVlX2FycmF5KSwKCSAgKGludGVycG9sYXRlX3RyaWdnZXJfZ2V0X3N0cmluZ192YWx1ZV9hcnJheSk6CgkgIFByb3RlY3QgYWdhaW5zdCB2YWx1ZXMgbGFyZ2VyIG9yIHNtYWxsZXIgdGhhbiB0aGUgbWluaW11bSBvciBtYXhpbXVtCgkgIGFsbG93ZWQgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eSB3aGVuIHVzaW5nIHZhbHVlcyB0aGF0IGNhbiBiZSBjb21wYXJlZC4KCSAgT3B0aW1pemUgdHJpZ2dlciBpbnRlcnBvbGF0b3IgYSBiaXQgYnkgdGFraW5nIHRoZSBsYXN0IHJlcXVlc3RlZCB2YWx1ZQoJICBpbnRvIGFjY291bnQgaW5zdGVhZCBvZiBhbHdheXMgbG9vcGluZyB0aHJvdWdoIHRoZSBjb21wbGV0ZSBsaXN0LgoJICBGaXggY29kaW5nIHN0eWxlIGEgYml0LCBldmVyeXdoZXJlIGVsc2Ugd2UgdXNlICJyZXR1cm4gZm9vIiBpbnN0ZWFkCgkgIG9mICJyZXR1cm4gKGZvbykiLgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfc3VpdGUpOgoJICBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgcHJvdGVjdGlvbiBhZ2FpbnN0IHRvbyBsYXJnZSBvciB0b28gc21hbGwKCSAgdmFsdWVzLgoKMjAwNy0wNi0wOCAyMTowODoyNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZG9jcy9yYW5kb20vc2xvbW8vY29udHJvbGxlci50eHQ6IEFkZCBzb21lIHRob3VnaHRzIGFib3V0IHRoZSBmdXR1cmUgb2YgdGhlIGNvbnRyb2xsZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL3Nsb21vL2NvbnRyb2xsZXIudHh0OgoJICBBZGQgc29tZSB0aG91Z2h0cyBhYm91dCB0aGUgZnV0dXJlIG9mIHRoZSBjb250cm9sbGVyLgoKMjAwNy0wNi0wOCAxMTowMDo1OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogRG9uJ3Qgb3ZlcmZsb3cgaW4gcmV0aW1lc3RhbXBpbmcgY29kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCk6CgkgIERvbid0IG92ZXJmbG93IGluIHJldGltZXN0YW1waW5nIGNvZGUuCgoyMDA3LTA2LTA3IDIwOjUxOjM1ICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzogVXNlIGdzdF91dGlsX2d1aW50NjRfdG9fZ2RvdWJsZSBmb3IgY29udmVyc2lvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiAoREVGSU5FX0NVQklDX0dFVCk6CgkgIFVzZSBnc3RfdXRpbF9ndWludDY0X3RvX2dkb3VibGUgZm9yIGNvbnZlcnNpb25zLgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDctMDYtMDcgMTc6MjI6NDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuYzogU21hbGwgZG9jcyBhZGRpdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIFNtYWxsIGRvY3MgYWRkaXRpb24uCgoyMDA3LTA2LTA3IDE0OjQ5OjAwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBSRUFETUU6IFJlbW92ZSB0aGF0IHRlc3QgbGluZSBhZ2Fpbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogUkVBRE1FOgoJICBSZW1vdmUgdGhhdCB0ZXN0IGxpbmUgYWdhaW4uCgoyMDA3LTA2LTA3IDE0OjM2OjAyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBSRUFETUU6IFRlc3QgY29tbWl0IG1haWwgc2VuZGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogUkVBRE1FOgoJICBUZXN0IGNvbW1pdCBtYWlsIHNlbmRpbmcuCgoyMDA3LTA2LTA3IDE0OjE3OjQ2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjb25maWd1cmUuYWM6IEZpeCB0eXBvIGFuZCB0ZXN0IGNvbW1pdCBtYWlsIHNlbmRpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgRml4IHR5cG8gYW5kIHRlc3QgY29tbWl0IG1haWwgc2VuZGluZy4KCjIwMDctMDYtMDcgMTQ6MTI6MDcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvYXVkaW8tZXhhbXBsZS5jOiBJbXByb3ZlIGNvbW1lbnQgYW5kIHRlc3QgY29tbWl0IG1haWwgc2VuZGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6CgkgIEltcHJvdmUgY29tbWVudCBhbmQgdGVzdCBjb21taXQgbWFpbCBzZW5kaW5nLgoKMjAwNy0wNi0wNyAxMDoxMTo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogQWRkIGhlbHBlciBmdW5jdGlvbiB0byBmaW5kIG1lc3NhZ2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChmaW5kX21lc3NhZ2UpLCAoYmluX3JlcGxhY2VfbWVzc2FnZSksIChpc19lb3MpLAoJICAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX2VsZW1lbnRfc2V0X3N0YXRlKSwKCSAgKGJpbl9oYW5kbGVfYXN5bmNfc3RhcnQpLCAoYmluX2hhbmRsZV9hc3luY19kb25lKSwKCSAgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIEFkZCBoZWxwZXIgZnVuY3Rpb24gdG8gZmluZCBtZXNzYWdlcy4KCSAgR2VuZXJhdGUgdGhlIGFzeW5jLWRvbmUgbWVzc2FnZXMgdG9nZXRoZXIgd2l0aCB0aGUgc3RhdGUgY2hhbmdlCgkgIG1lc3NhZ2VzLgoJICBTbWFsbCBjbGVhbnVwcyBpbiBoYW5kbGluZyB0b3BsZXZlbCBiaW5zLgoKMjAwNy0wNi0wNiAxODoxMToxMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEZpeCBtdWx0aXF1ZXVlIGxlYWtpbmcgYnVmZmVycyBhbmQgZXZlbnRzIHdoZW4gZG93bnN0cmVhbSBvciB0aGUgcXVldWUgYXJlIGZsdXNoaW5nLiBNYWtlIHJlZmNvdW50aW5nIGFzc3VtcHRpb25zIGV4cC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGRhdGFxdWV1ZS5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3Rfc2luZ2xlX3F1ZXVlX3B1c2hfb25lKSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9pdGVtX25ldyksIChnc3RfbXVsdGlfcXVldWVfY2hhaW4pLAoJICAoZ3N0X211bHRpX3F1ZXVlX3NpbmtfZXZlbnQpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL211bHRpcXVldWUuYzogKG11bHRpcXVldWVfc3VpdGUpOgoJICBGaXggbXVsdGlxdWV1ZSBsZWFraW5nIGJ1ZmZlcnMgYW5kIGV2ZW50cyB3aGVuIGRvd25zdHJlYW0gb3IgdGhlCgkgIHF1ZXVlIGFyZSBmbHVzaGluZy4gTWFrZSByZWZjb3VudGluZyBhc3N1bXB0aW9ucyBleHBsaWNpdCBhbmQKCSAgZG9jdW1lbnQgdGhlbSAoc2hvdWxkbid0IGJyZWFrIGV4aXN0aW5nIGNvZGUgdGhhdCB1c2VzIGl0IG90aGVyIHRoYW4KCSAgbWF5YmUgbGVhayBtaW5pb2JqZWN0cywgYnV0IHRoYXQgYWxyZWFkeSBoYXBwZW5zIGFueXdheSkuIEFkZCB1bml0CgkgIHRlc3QgZm9yIHRoZSBtb3N0IGNvbW1vbiBmbHVzaGluZyBjYXNlLiBGaXhlcyAjNDIzNzAwLgoKMjAwNy0wNi0wNiAxNDoyMDowMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IENsYXJpZnkgZG9jczogVGhlIGdldF9hbGwsIGdldF92YWx1ZV9hcnJheShzKSBmdW5jdGlvbnMgZG9uJ3QgbW9kaWZ5IHRoZSBHT2JqZWN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICBDbGFyaWZ5IGRvY3M6IFRoZSBnZXRfYWxsLCBnZXRfdmFsdWVfYXJyYXkocykgZnVuY3Rpb25zCgkgIGRvbid0IG1vZGlmeSB0aGUgR09iamVjdCBwcm9wZXJ0aWVzLgoKMjAwNy0wNi0wNiAxNDowMTo1NiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IEZhY3RvciBvdXQgdGhlICdzZXQnIGxvZ2ljIGludG8gZ3N0X2NvbnRyb2xsZXJfc2V0X3VubG9ja2VkIGZvciB0aGUgZ3N0X2NvbnRyb2xsZXJfc2V0IGFuZCBnc3RfLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfc2V0X2ludGVycG9sYXRpb25fbW9kZSksCgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9wcmVwZW5kX2RlZmF1bHQpLAoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfbmV3KSwgKGdzdF9jb250cm9sbGVyX3NldF91bmxvY2tlZCksCgkgIChnc3RfY29udHJvbGxlcl9zZXQpLCAoZ3N0X2NvbnRyb2xsZXJfc2V0X2Zyb21fbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl91bnNldCksIChnc3RfY29udHJvbGxlcl91bnNldF9hbGwpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlcnByaXZhdGUuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgRmFjdG9yIG91dCB0aGUgJ3NldCcgbG9naWMgaW50byBnc3RfY29udHJvbGxlcl9zZXRfdW5sb2NrZWQgZm9yIHRoZQoJICBnc3RfY29udHJvbGxlcl9zZXQgYW5kIGdzdF9jb250cm9sbGVyX3NldF9mcm9tX2xpc3QgZnVuY3Rpb25zLgoJICBUbyBtYWtlIGxpZmUgb2YgdGhlIGludGVycG9sYXRvcnMgZWFzaWVyIGFsd2F5cyBhZGQgYSBjb250cm9sIHBvaW50CgkgIGF0IHRpbWVzdGFtcCB6ZXJvIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUuCgkgIEluIHRoZSBsaW5lYXIgaW50ZXJwb2xhdG9yIG1ha2UgdGhpbmdzIG1vcmUgb2J2aW91cyBieSBiZXR0ZXIgdmFyaWFibGUKCSAgbmFtaW5nIChzbG9wZSkuCgkgIEltcGxlbWVudCBjdWJpYyBpbnRlcnBvbGF0aW9uIG1vZGUgKGJ5IHVzaW5nIGEgbmF0dXJhbCBjdWJpYyBzcGxpbmUpCgkgIGFuZCBtYXAgdGhlIHF1YWRyYXRpYyBpbnRlcnBvbGF0aW9uIG1vZGUgdG8gdGhpcyB0b28gKGFzIHF1YWRyYXRpYwoJICBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSwgc2VlIGRpc2N1c3Npb24gb24gdGhlIGxpc3QpLgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfc3VpdGUpOgoJICBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgY3ViaWMgaW50ZXJwb2xhdGlvbiBtb2RlIGFuZCBjaGVjayBldmVyeXdoZXJlCgkgIGlmIHRoZSBpbnRlcnBvbGF0aW9uIG1vZGUgY291bGQgYmUgc2V0IGFzIGV4cGVjdGVkLgoKMjAwNy0wNi0wNiAxMTozODoyNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RwYXJhbXNwZWNzLmM6IERvbid0IHVzZSBHTGliLTIuMTAgZnVuY3Rpb25zLCB3ZSBzdGlsbCBkZXBlbmQgb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhcmFtc3BlY3MuYzogKGdzdF9wYXJhbV9zcGVjX2ZyYWN0aW9uX2dldF90eXBlKToKCSAgRG9uJ3QgdXNlIEdMaWItMi4xMCBmdW5jdGlvbnMsIHdlIHN0aWxsIGRlcGVuZCBvbgoJICBHTGliLWhvdy1vbGQtaXMtaXQtYWdhaW4tMi44LgoKMjAwNy0wNi0wNiAxMToxODoxMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFQSTogYWRkIEdzdFBhcmFtU3BlY0ZyYWN0aW9uLCBzbyBlbGVtZW50cyBjYW4gaGF2ZSBmcmFjdGlvbiBwcm9wZXJ0aWVzIHdpdGhvdXQgbG90cyBvZiBwYWluZnVsIHN0cmluZyBwYXJzaW5nICgjNDQ0Ni4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3RwYXJhbXNwZWNzLmM6IChfZ3N0X3BhcmFtX2ZyYWN0aW9uX2luaXQpLAoJICAoX2dzdF9wYXJhbV9mcmFjdGlvbl9zZXRfZGVmYXVsdCksIChfZ3N0X3BhcmFtX2ZyYWN0aW9uX3ZhbGlkYXRlKSwKCSAgKF9nc3RfcGFyYW1fZnJhY3Rpb25fdmFsdWVzX2NtcCksCgkgIChnc3RfcGFyYW1fc3BlY19mcmFjdGlvbl9nZXRfdHlwZSksIChnc3RfcGFyYW1fc3BlY19mcmFjdGlvbik6CgkgICogZ3N0L2dzdHBhcmFtc3BlY3MuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFyYW1zcGVjcy5jOiAoZ3N0X2R1bW15X29ial9iYXNlX2luaXQpLAoJICAoZ3N0X2R1bW15X29ial9jbGFzc19pbml0KSwgKGdzdF9kdW1teV9vYmpfaW5pdCksCgkgIChnc3RfZHVtbXlfb2JqX3NldF9wcm9wZXJ0eSksIChnc3RfZHVtbXlfb2JqX2dldF9wcm9wZXJ0eSksCgkgIChHU1RfU1RBUlRfVEVTVCksIChnc3RfcGFyYW1fc3BlY19zdWl0ZSk6CgkgIEFQSTogYWRkIEdzdFBhcmFtU3BlY0ZyYWN0aW9uLCBzbyBlbGVtZW50cyBjYW4gaGF2ZSBmcmFjdGlvbgoJICBwcm9wZXJ0aWVzIHdpdGhvdXQgbG90cyBvZiBwYWluZnVsIHN0cmluZyBwYXJzaW5nICgjNDQ0NjQ4KS4KCjIwMDctMDYtMDUgMTY6MjU6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0b2JqZWN0LmM6IEZpeCBzaWduYWwgc2lnbmF0dXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2NsYXNzX2luaXQpOgoJICBGaXggc2lnbmFsIHNpZ25hdHVyZS4KCSAgKiBnc3QvZ3N0c2VnbWVudC5jOgoJICBBZGQgc21hbGwgY2xhcmlmaWNhdGlvbiBpbiB0aGUgYXBpIGRvY3MuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfc2V0X2xvY2F0aW9uKToKCSAgU3RhdGVzIGFyZSBwcm90ZWN0ZWQgd2l0aCBvYmplY3QgbG9jay4KCjIwMDctMDYtMDUgMTQ6MTE6NTkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgQVVUSE9SUzogSSBzaG91bGQgcHJvYmFibHkgYmUgbGlzdGVkIGFzIGFuIGF1dGhvciBieSBub3cuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIEFVVEhPUlM6CgkgIEkgc2hvdWxkIHByb2JhYmx5IGJlIGxpc3RlZCBhcyBhbiBhdXRob3IgYnkgbm93LgoJICAqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkgIFVwZGF0ZSB0aGUgcmVsZWFzZSBkb2MKCjIwMDctMDYtMDUgMTM6NDk6MTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogTWFrZSBkb2NzIGZvciBnc3RfdmFsdWVfY29tcGFyZSgpIG1lbnRpb24gcmV0dXJuIGVudW1zIHRoYXQgYWN0dWFsbHkgZXhpc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBNYWtlIGRvY3MgZm9yIGdzdF92YWx1ZV9jb21wYXJlKCkgbWVudGlvbiByZXR1cm4gZW51bXMgdGhhdAoJICBhY3R1YWxseSBleGlzdC4KCjIwMDctMDYtMDUgMTM6MjE6NDEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBCYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJhY2sgdG8gQ1ZTCgo9PT0gcmVsZWFzZSAwLjEwLjEzID09PQoKMjAwNy0wNi0wNSAxMjo0NzoyMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5zaWduYWxzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIGdzdHJlYW1lci5kb2FwOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkqIHdpbjMyL3ZzNi9ncmFtbWFyLmRzcDoKCSogd2luMzIvdnM2L2dzdF9pbnNwZWN0LmRzcDoKCSogd2luMzIvdnM2L2dzdF9sYXVuY2guZHNwOgoJKiB3aW4zMi92czYvZ3N0cmVhbWVyLmRzdzoKCSogd2luMzIvdnM2L2xpYmdzdGJhc2UuZHNwOgoJKiB3aW4zMi92czYvbGliZ3N0Y29udHJvbGxlci5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3Rjb3JlZWxlbWVudHMuZHNwOgoJKiB3aW4zMi92czYvbGliZ3N0ZGF0YXByb3RvY29sLmRzcDoKCSogd2luMzIvdnM2L2xpYmdzdG5ldC5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3RyZWFtZXIuZHNwOgoJICBSZWxlYXNlIDAuMTAuMTMgIldpdGggb3Igd2l0aG91dCB5b3UiCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZWxlYXNlIDAuMTAuMTMgIldpdGggb3Igd2l0aG91dCB5b3UiCgoyMDA3LTA2LTA1IDEyOjA2OjQ0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGEucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDctMDUtMjkgMTU6NTA6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0cmlnZ2VyIGEgbWFpbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHJpZ2dlciBhIG1haWwKCjIwMDctMDUtMjkgMTQ6NDk6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0cmlnZ2VyIGEgbWFpbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHJpZ2dlciBhIG1haWwKCjIwMDctMDUtMjkgMTQ6NDg6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0cmlnZ2VyIGEgbWFpbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHJpZ2dlciBhIG1haWwKCjIwMDctMDUtMjkgMTQ6Mzc6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICBzZW5kIGEgbWFpbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgc2VuZCBhIG1haWwKCjIwMDctMDUtMjkgMTE6NTI6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTE6NDA6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTE6MDA6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTA6NDM6MjMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTA6MzU6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTA6MzQ6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjkgMTA6MjA6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB0ZXN0IGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVzdCBjb21taXQKCjIwMDctMDUtMjUgMTU6MzY6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IE1ha2Ugc3VyZSB0aGF0IHRoZSBjaGlsZCBiaW4gc3RvcHMgYWZ0ZXIgY29tcGxldGluZyB0aGUgYXN5bmMgc3RhdGUgY2hhbmdlIHNvIHRoYXQgdGhlIHBhcmVudCBjYW4gY29udGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2hhbmRsZV9hc3luY19kb25lKToKCSAgTWFrZSBzdXJlIHRoYXQgdGhlIGNoaWxkIGJpbiBzdG9wcyBhZnRlciBjb21wbGV0aW5nIHRoZSBhc3luYyBzdGF0ZQoJICBjaGFuZ2Ugc28gdGhhdCB0aGUgcGFyZW50IGNhbiBjb250aW51ZSB0aGUgc3RhdGUgY2hhbmdlIHRvIFBMQVlJTkcuCgkgIEZpeGVzICM0NDExNTkuCgoyMDA3LTA1LTI1IDA5OjI2OjIwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBVc2UgYWRkaXRpb25hbCByZWZjb3VudGluZyB0byBhdm9pZCBjcmFzaGVzIHdoZW4gZHluYW1pY2FsbHkgYWRkaW5nIGFuZCByZW1vdmluZyBwYWRzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfZmluYWxpemUpLAoJICAodW5yZWZfZGF0YSksIChnc3RfY29sbGVjdF9wYWRzX3JlbW92ZV9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19jaGVja19wYWRzKToKCSAgVXNlIGFkZGl0aW9uYWwgcmVmY291bnRpbmcgdG8gYXZvaWQgY3Jhc2hlcyB3aGVuIGR5bmFtaWNhbGx5IGFkZGluZyBhbmQKCSAgcmVtb3ZpbmcgcGFkcy4gRml4ZXMgIzQyMDIwNi4KCjIwMDctMDUtMjQgMTU6MDA6NTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IFdoZW4gYnVmZmVyaW5nIGdvZXMgZnJvbSBhIHR3byBkaWdpdCB0byBhIHNpbmdsZSBkaWdpdCBudW1iZXIsIG1ha2Ugc3VyZSB0byByZW1vdmUgdGhlIG9sZCBzZWNvbmQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoZXZlbnRfbG9vcCk6CgkgIFdoZW4gYnVmZmVyaW5nIGdvZXMgZnJvbSBhIHR3byBkaWdpdCB0byBhIHNpbmdsZSBkaWdpdCBudW1iZXIsIG1ha2Ugc3VyZQoJICB0byByZW1vdmUgdGhlIG9sZCBzZWNvbmQgZGlnaXQgYnkgd3JpdGluZyBhIGJsYW5rIG92ZXIgaXQuCgoyMDA3LTA1LTI0IDEyOjE5OjAxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RkYXRhcXVldWUuYzogRWxpbWluYXRlIHRhYnMgYW5kIHRyYWlsaW5nIGNvbW1hIGluIGVudW0gbGlzdDsgZml4IHNvbWUgdHlwb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmM6CgkgIEVsaW1pbmF0ZSB0YWJzIGFuZCB0cmFpbGluZyBjb21tYSBpbiBlbnVtIGxpc3Q7IGZpeCBzb21lIHR5cG9zLgoKMjAwNy0wNS0yNCAxMTo1MDo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogQWxsb3cgcmVmY291bnQgb2YgMyBhbmQgNCBiZWNhdXNlIHNvbWUgc3RhdGUgdGhyZWFkIG1pZ2h0IHN0aWxsIGJlIGJ1c3kgd2l0aCBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBBbGxvdyByZWZjb3VudCBvZiAzIGFuZCA0IGJlY2F1c2Ugc29tZSBzdGF0ZSB0aHJlYWQgbWlnaHQgc3RpbGwgYmUgYnVzeQoJICB3aXRoIGl0LgoKMjAwNy0wNS0yNCAwOTo0MTo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBUaGVzZSBhcmUgbm90IGluc3RhbGxlZCBoZWFkZXJzLCBubyBuZWVkIGZvciBwYWRkaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuaDoKCSAgVGhlc2UgYXJlIG5vdCBpbnN0YWxsZWQgaGVhZGVycywgbm8gbmVlZCBmb3IgcGFkZGluZy4KCjIwMDctMDUtMjQgMDg6MzU6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEVuYWJsZSBsYXRlbmN5IGZvciBuZXh0IHJlbGVhc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2dldF9zdGF0ZV9mdW5jKSwKCSAgKGdzdF9iaW5fY29udGludWVfZnVuYyk6CgkgIEVuYWJsZSBsYXRlbmN5IGZvciBuZXh0IHJlbGVhc2UuCgkgIFJlc3RvcmUgU1RBVEVfTE9DSyBhcm91bmQgcmVjYWxjX3N0YXRlIHRoYXQgd2FzIGxlZnQgb3V0IGR1cmluZyB0aGUKCSAgcmV3cml0ZSBhbmQgY291bGQgcmVzdWx0IGluIHJhY3kgYmVoYXZpb3VyIHdoZW4gX2dldF9zdGF0ZSBhbmQKCSAgcmVjYWxjX3N0YXRlIGFyZSBydW4gY29uY3VycmVudGx5LiBTZWUgIzQ0MDQ2My4KCjIwMDctMDUtMjMgMTM6NTY6MjUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzogSW1wcm92ZSB0ZXN0X2FzeW5jX29yZGVyIHRvIGFsc28gd29yayB3aGVuIGJvdGggdGltZXJzIGFyZSBhbHJlYWR5IGV4cGlyZWQgd2hlbiB3ZSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChzdG9yZV9jYWxsYmFjayksCgkgIChHU1RfU1RBUlRfVEVTVCk6CgkgIEltcHJvdmUgdGVzdF9hc3luY19vcmRlciB0byBhbHNvIHdvcmsgd2hlbiBib3RoIHRpbWVycyBhcmUgYWxyZWFkeQoJICBleHBpcmVkIHdoZW4gd2UgZ2V0IHNjaGVkdWxlZCB0byBjaGVjayBpdC4KCjIwMDctMDUtMjIgMTc6MTA6MDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0YmluLio6ICdwcml2YXRlJyBpcyBhIGMrKyBrZXl3b3JkLCBsZXQncyBub3QgdXNlIHRoYXQgaW4gaGVhZGVyIGZpbGVzLCBvdGhlcndpc2UgYysrIGNvbXBpbGVycyB3aWxsIHRocm93IGEgdGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9pbml0KSwgKGdzdF9iaW5fZGlzcG9zZSksCgkgIChnc3RfYmluX3NldF9wcm9wZXJ0eSksIChnc3RfYmluX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgICogZ3N0L2dzdGJpbi5oOgoJICAncHJpdmF0ZScgaXMgYSBjKysga2V5d29yZCwgbGV0J3Mgbm90IHVzZSB0aGF0IGluIGhlYWRlciBmaWxlcywKCSAgb3RoZXJ3aXNlIGMrKyBjb21waWxlcnMgd2lsbCB0aHJvdyBhIHRhbnRydW0uCgoyMDA3LTA1LTIyIDExOjU1OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy86IFVzZSAjaWZkZWYgZm9yIEhBVkVfWFlaIGZvciBjb25zaXN0ZW5jeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfZG9fc2VlayksCgkgIChnc3RfZmlsZV9zaW5rX2dldF9jdXJyZW50X29mZnNldCk6CgkgICogcGx1Z2lucy9pbmRleGVycy9nc3RpbmRleGVycy5jOiAocGx1Z2luX2luaXQpOgoJICBVc2UgI2lmZGVmIGZvciBIQVZFX1hZWiBmb3IgY29uc2lzdGVuY3kuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9maWxlc2luay5jOiAoc2V0dXBfZmlsZXNpbmspLAoJICAoY2xlYW51cF9maWxlc2luayksIChHU1RfU1RBUlRfVEVTVCksIChmaWxlc2lua19zdWl0ZSk6CgkgIEFkZCBzb21lIHVuaXQgdGVzdHMgZm9yIGZpbGVzaW5rLgoKMjAwNy0wNS0yMiAxMTo0MzowNyArMDAwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3QHNreW5ldC5iZT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuKjogRml4IHBvc2l0aW9uIHJlcG9ydGluZzsgcmVuYW1lIGRhdGFfd3JpdHRlbiBtZW1iZXIgdG8gY3VycmVudF9wb3MgdG8gcmVmbGVjdCBpdHMgcmVhbC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1dyBhdCBza3luZXQgYmU+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19vcGVuX2ZpbGUpLAoJICAoZ3N0X2ZpbGVfc2lua19xdWVyeSksIChnc3RfZmlsZV9zaW5rX2RvX3NlZWspLAoJICAoZ3N0X2ZpbGVfc2lua19nZXRfY3VycmVudF9vZmZzZXQpLCAoZ3N0X2ZpbGVfc2lua19yZW5kZXIpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSAgRml4IHBvc2l0aW9uIHJlcG9ydGluZzsgcmVuYW1lIGRhdGFfd3JpdHRlbiBtZW1iZXIgdG8gY3VycmVudF9wb3MgdG8KCSAgcmVmbGVjdCBpdHMgcmVhbCBtZWFuaW5nIChmaXhlcyAjNDEyNjQ4KS4KCjIwMDctMDUtMjIgMTE6MDk6NDUgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBBZGQgYSBwcm9wZXJ0eSBmb3IgYmlucyB0aGF0IGhhbmRsZSB0aGUgc3RhdGUgY2hhbmdlIG9mIHRoZWlyIGNoaWxkcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpLCAoZ3N0X2Jpbl9pbml0KSwKCSAgKGdzdF9iaW5fZGlzcG9zZSksIChnc3RfYmluX3NldF9wcm9wZXJ0eSksIChnc3RfYmluX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBBZGQgYSBwcm9wZXJ0eSBmb3IgYmlucyB0aGF0IGhhbmRsZSB0aGUgc3RhdGUgY2hhbmdlIG9mIHRoZWlyIGNoaWxkcy4KCSAgRml4ZXMgIzQzNTg4MAoKMjAwNy0wNS0yMiAxMDoyMTozMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1xdW90ZXMueG1sOgoJKiBkb2NzL21hbnVhbC9tYW51YWwueG1sOgoJICBhZGQgcXVvdGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBxdW90ZQoKMjAwNy0wNS0yMiAwOTo1NjoyNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6IFVzZSBhbiBhcnJheSBvZiB0aGUgY29ycmVjdCB0eXBlIHdoZW4gdXNpbmcgX2dldF92YWx1ZV9hcnJheSB3aXRoIGxpbmVhciBpbnRlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICBVc2UgYW4gYXJyYXkgb2YgdGhlIGNvcnJlY3QgdHlwZSB3aGVuIHVzaW5nIF9nZXRfdmFsdWVfYXJyYXkgd2l0aAoJICBsaW5lYXIgaW50ZXJwb2xhdGlvbi4KCjIwMDctMDUtMjIgMDY6Mzc6MzcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cGFkLmg6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJICBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9yZXF1aXJlc19jbG9jaywgZ3N0X2VsZW1lbnRfcHJvdmlkZXNfY2xvY2ssIGdzdF9lbGVtZW50X3JlcXVlc3RfcGFkLCBnc3RfZWxlbWVudF9jbGFzc18uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfcmVxdWlyZXNfY2xvY2ssCgkgIGdzdF9lbGVtZW50X3Byb3ZpZGVzX2Nsb2NrLCBnc3RfZWxlbWVudF9yZXF1ZXN0X3BhZCwKCSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X2RldGFpbHMsIGdzdF9lbGVtZW50X2NsYXNzX3NldF9kZXRhaWxzX3NpbXBsZSwKCSAgZ3N0X2VsZW1lbnRfZGVmYXVsdF9zZW5kX2V2ZW50LCBnc3RfZWxlbWVudF9hYm9ydF9zdGF0ZSwKCSAgZ3N0X2VsZW1lbnRfY29udGludWVfc3RhdGUsIGdzdF9lbGVtZW50X3NldF9zdGF0ZSwKCSAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlX2Z1bmMsIGl0ZXJhdG9yX2FjdGl2YXRlX2ZvbGRfd2l0aF9yZXN5bmMpOgoJICAqIGdzdC9nc3RwYWQuYyAoZ3N0X3BhZF9hY3RpdmF0ZV9wdWxsLCBnc3RfcGFkX3NldF9nZXRjYXBzX2Z1bmN0aW9uLAoJICBnc3RfcGFkX2ZpeGF0ZV9jYXBzLCBnc3RfcGFkX2NvbmZpZ3VyZV9zaW5rLCBnc3RfcGFkX2NvbmZpZ3VyZV9zcmMsCgkgIGdzdF9wYWRfcXVlcnksIGdzdF9wYWRfc2F2ZV90aHlzZWxmLCBoYW5kbGVfcGFkX2Jsb2NrLCBnc3RfcGFkX3B1c2gsCgkgIGdzdF9wYWRfZ2V0X3JhbmdlLCBnc3RfcGFkX3B1bGxfcmFuZ2UpOgoJICAqIGdzdC9nc3RwYWQuaCAoR1NUX1BBRF9MSU5LX1NVQ0NFU1NGVUwsIEdTVF9GTE9XX0NVU1RPTV9TVUNDRVNTLAoJICBHU1RfRkxPV19OT1RfU1VQUE9SVEVELCBHU1RfRkxPV19JU19GQVRBTCwgR3N0UGFkQWN0aXZhdGVGdW5jdGlvbiwKCSAgR3N0UGFkQWN0aXZhdGVNb2RlRnVuY3Rpb24sIEdzdFBhZENoYWluRnVuY3Rpb24sCgkgIEdzdFBhZEdldENhcHNGdW5jdGlvbiwgR3N0UGFkQWNjZXB0Q2Fwc0Z1bmN0aW9uLAoJICBHc3RQYWRGaXhhdGVDYXBzRnVuY3Rpb24sIEdzdFBhZFRlbXBsYXRlKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYyAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSwKCSAgZ3N0X3BpcGVsaW5lX3NldF9uZXdfc3RyZWFtX3RpbWUsIGdzdF9waXBlbGluZV91c2VfY2xvY2ssCgkgIGdzdF9waXBlbGluZV9zZXRfY2xvY2ssIGdzdF9waXBlbGluZV9hdXRvX2Nsb2NrLAoJICBnc3RfcGlwZWxpbmVfZ2V0X2RlbGF5KToKCSAgV2hpdGVzcGFjZSBhbmQgZG9jcyBmaXhlcy4KCjIwMDctMDUtMjEgMjE6NDg6MDcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOiBBZGQgc3VwcG9ydCBmb3IgcmV0cmlldmluZyB2YWx1ZSBhcnJheXMgd2hlbiB1c2luZyB0aGUgdHJpZ2dlciBpbnRlcnBvbGF0aW9uIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgKGludGVycG9sYXRlX3RyaWdnZXJfZ2V0X2VudW1fdmFsdWVfYXJyYXkpLAoJICAoaW50ZXJwb2xhdGVfdHJpZ2dlcl9nZXRfc3RyaW5nX3ZhbHVlX2FycmF5KToKCSAgQWRkIHN1cHBvcnQgZm9yIHJldHJpZXZpbmcgdmFsdWUgYXJyYXlzIHdoZW4gdXNpbmcgdGhlIHRyaWdnZXIKCSAgaW50ZXJwb2xhdGlvbiBtb2RlLgoKMjAwNy0wNS0yMSAyMTozNDo0OSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLio6IENsYXJpZnkgdGhlIGRvY3Mgb2YgZ3N0X2NvbnRyb2xsZXJfZ2V0X3ZhbHVlX2FycmF5KCk6IFRoZSBhcnJheSB3aGVyZSB0aGUgdmFsdWVzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZXJfZ2V0X3ZhbHVlX2FycmF5KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgQ2xhcmlmeSB0aGUgZG9jcyBvZiBnc3RfY29udHJvbGxlcl9nZXRfdmFsdWVfYXJyYXkoKTogVGhlIGFycmF5IHdoZXJlCgkgIHRoZSB2YWx1ZXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbXVzdCBiZSBhbGxvY2F0ZWQgYXMgdGhlcmUgc2VlbXMgdG8gYmUKCSAgbm8gd2F5IHRvIGdldCB0aGUgc2l6ZSBvZiBhIHJhbmRvbSBHVHlwZS4gVGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkKCSAgYmVoYXZpb3VyLiBBbHNvIGZpeCBzb21lIHR5cG9zIGFsbCBvdmVyIHRoZSBwbGFjZSBhbmQgcmVtb3ZlIGFuIHVudXNlZCwKCSAgY29tbWVudGVkIGZ1bmN0aW9uIHRoYXQgaXMgbm90IG5lY2Vzc2FyeSBhcyBnX29iamVjdF9zZXQoKSBjb3VsZCBiZQoJICB1c2VkIGluc3RlYWQuCgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIEFkZCB1bml0IHRlc3QgZm9yIGdzdF9jb250cm9sbGVyX2dldF92YWx1ZV9hcnJheSgpLgoKMjAwNy0wNS0yMSAxNDo1MDo1MSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IERpc2FibGUgcGFydCBvZiB0aGUgZ3N0X2J1ZmZlcl90cnlfbmV3X2FuZF9hbGxvYyB0ZXN0LCBiZWNhdXNlIGl0IGNhbiBoYXBwaWx5IHN1Y2NlZWQgb24uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBEaXNhYmxlIHBhcnQgb2YgdGhlIGdzdF9idWZmZXJfdHJ5X25ld19hbmRfYWxsb2MgdGVzdCwgYmVjYXVzZQoJICBpdCBjYW4gaGFwcGlseSBzdWNjZWVkIG9uIDY0LWJpdCBzeXN0ZW1zIHdoZXJlIHRoZXJlJ3MgbW9yZSBhZGRyZXNzCgkgIHNwYWNlIGF2YWlsYWJsZS4KCjIwMDctMDUtMjEgMTI6MDU6NTYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzogQWRkIHVuaXQgdGVzdCBmb3IgdGhlIGltcHJvdmVkIGNhcHMgY2hlY2tpbmcgZnJvbSBidWcgIzQyMTU0My4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3BhZF9zdWl0ZSk6CgkgIEFkZCB1bml0IHRlc3QgZm9yIHRoZSBpbXByb3ZlZCBjYXBzIGNoZWNraW5nIGZyb20gYnVnICM0MjE1NDMuCgoyMDA3LTA1LTIxIDEyOjA1OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1zeW5jaHJvbmlzYXRpb24udHh0OiBTbWFsbCBhZGRpdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zeW5jaHJvbmlzYXRpb24udHh0OgoJICBTbWFsbCBhZGRpdGlvbi4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3F1ZXJ5KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChhcHBseV9zZWdtZW50KToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgSW1wcm92ZSBkb2NzLgoKMjAwNy0wNS0yMSAxMjowMDo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogQWRkZWQgc2ltcGxlIHZlcnNpb24gb2YgaW1wcm92ZWQgY2FwcyBjaGVja2luZy4gSXQgd2FzIHByZXZpb3VzbHkgYXNzdW1lZCB0aGF0IGEgc2V0Y2FwcyBmdW5jdGlvbiB3b3VsZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF9jYXBzX3VubG9ja2VkKSwKCSAgKGdzdF9wYWRfYWNjZXB0Y2Fwc19kZWZhdWx0KSwgKGdzdF9wYWRfY29uZmlndXJlX3NpbmspLAoJICAoZ3N0X3BhZF9jb25maWd1cmVfc3JjKToKCSAgQWRkZWQgc2ltcGxlIHZlcnNpb24gb2YgaW1wcm92ZWQgY2FwcyBjaGVja2luZy4gSXQgd2FzIHByZXZpb3VzbHkKCSAgYXNzdW1lZCB0aGF0IGEgc2V0Y2FwcyBmdW5jdGlvbiB3b3VsZCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGNhcHMgYnV0CgkgIHBlb3BsZSBwcmVmZXIgdXMgdG8gY2hlY2sgY2FwcyBhZ2FpbnN0IHRoZSB0ZW1wbGF0ZSBhdXRvbWF0aWNhbGx5LgoJICBGaXhlcyAjNDIxNTQzLgoKMjAwNy0wNS0yMSAxMToyOToyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOiBGaXggbWFjcm8gZm9yIGxvY2tpbmcvdW5sb2NraW5nIHRoZSB0cmFuc2Zvcm0gbG9jay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIEZpeCBtYWNybyBmb3IgbG9ja2luZy91bmxvY2tpbmcgdGhlIHRyYW5zZm9ybSBsb2NrLgoKMjAwNy0wNS0xOSAxMzo1MzoyMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcGx1Z2lucy90bXBsLy5jdnNpZ25vcmU6IElnbm9yZSBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3BsdWdpbnMvdG1wbC8uY3ZzaWdub3JlOgoJICBJZ25vcmUgbW9yZS4KCjIwMDctMDUtMTggMTY6NTM6MTggKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IEhlbGxvLCBJIGFtIE1yIFRheW1hbnMnIHBlcnNvbmFsIGRlYnVnZ2VyLiBUb2RheSBJIHdpbGwgaW50cm9kdWNlIGEgZml4IGZvciB0aGUgc3VidGxlIGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2xvb3ApOgoJICBIZWxsbywgSSBhbSBNciBUYXltYW5zJyBwZXJzb25hbCBkZWJ1Z2dlci4gVG9kYXkgSSB3aWxsIGludHJvZHVjZSBhIGZpeAoJICBmb3IgdGhlIHN1YnRsZSBhcnQgb2Ygd2FybmluZyBhIHBvdGVudGlhbGx5IGJsb2NraW5nIHRocmVhZCB0aGF0IGl0CgkgIHNob3VsZCBjaGVjayB0aGUgc291cmNlIHBhZCByZXR1cm4gdmFsdWUsIGFuZCByZWxheSB0aGUgaW5mb3JtYXRpb24KCSAgdXBzdHJlYW0uCgoyMDA3LTA1LTE4IDExOjIwOjMzICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBSZWxlYXNlIHRoZSBxdWV1ZSBsb2NrICEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KToKCSAgUmVsZWFzZSB0aGUgcXVldWUgbG9jayAhCgoyMDA3LTA1LTE3IDE3OjU1OjQ4ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBZGQgdGhlIHR3byBuZXcgY29udHJvbGxlciBmdW5jdGlvbnMgdG8gdGhlIGFwcHJvcGlhdGUgcGxhY2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBBZGQgdGhlIHR3byBuZXcgY29udHJvbGxlciBmdW5jdGlvbnMgdG8gdGhlIGFwcHJvcGlhdGUgcGxhY2VzLgoKMjAwNy0wNS0xNyAxNzozNzo1OCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IEFQSTogZ3N0X2NvbnRyb2xsZXJfc3VnZ2VzdF9uZXh0X3N5bmMoKSwgZ3N0X29iamVjdF9zdWdnZXN0X25leHRfc3luYygpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZXJfc3VnZ2VzdF9uZXh0X3N5bmMpLCAoZ3N0X2NvbnRyb2xsZXJfc3luY192YWx1ZXMpLAoJICAoX2dzdF9jb250cm9sbGVyX2dldF9wcm9wZXJ0eSksIChfZ3N0X2NvbnRyb2xsZXJfc2V0X3Byb3BlcnR5KSwKCSAgKF9nc3RfY29udHJvbGxlcl9pbml0KSwgKF9nc3RfY29udHJvbGxlcl9jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOiAoZ3N0X29iamVjdF9zdWdnZXN0X25leHRfc3luYyksCgkgIChnc3Rfb2JqZWN0X2dldF9jb250cm9sX3JhdGUpLCAoZ3N0X29iamVjdF9zZXRfY29udHJvbF9yYXRlKToKCSAgQVBJOiBnc3RfY29udHJvbGxlcl9zdWdnZXN0X25leHRfc3luYygpLCBnc3Rfb2JqZWN0X3N1Z2dlc3RfbmV4dF9zeW5jKCkKCSAgQWRkIEFQSSB0aGF0IHByb3ZpZGVzIHN5bmMgc3VnZ2VzdGlvbiB0aW1lc3RhbXBzIGZvciBlbGVtZW50cyB0aGF0CgkgIGNhbGwgZ3N0X29iamVjdF9zeW5jX3ZhbHVlcygpIGZyb20gd2hpY2ggdGhvc2UgZWxlbWVudHMgY2FuIHN1YmRpdmlkZQoJICB0aGVpciBwcm9jZXNzaW5nIGxvb3AgdG8gZ2V0IHRoZSBiZXN0IHJlc3VsdHMgZm9yIHRoZSBjb250cm9sbGVkCgkgIHByb3BlcnRpZXMuIEZvciBub3cgaXQganVzdCBzdWdnZXN0cyBsYXN0X3N5bmMgKyBjb250cm9sX3JhdGUgYXMKCSAgbmV3IHRpbWVzdGFtcCBidXQgdGhpcyB3aWxsIGJlIGltcHJvdmVkIGluIHRoZSBmdXR1cmUuCgkgIFdoaWxlIGRvaW5nIHRoYXQgY2hhbmdlIHRoZSBjb250cm9sLXJhdGUgcHJvcGVydHkgdG8gYSBHc3RDbG9ja1RpbWUKCSAgZnJvbSBndWludCBhbmQgY2hhbmdlIGl0J3MgbWVhbmluZyBmcm9tIHNhbXBsZXMgdG8gbmFub3NlY29uZHMgYXMKCSAgdGhlIEdzdENvbnRyb2xsZXIgZG9lc24ndCBrbm93IGFueXRoaW5nIGFib3V0IHNhbXBsaW5nIHJhdGUuIFN0cmljdGx5CgkgIHNwZWFraW5nIHRoaXMgYnJlYWtzIEFCSSBidXQgYXMgdGhlIGNvbnRyb2wtcmF0ZSBwcm9wZXJ0eSBkaWRuJ3QgZG8KCSAgYW55dGhpbmcgaW4gdGhlIHBhc3QgYW5kIGFzIHN1Y2ggY291bGRuJ3QgYmUgdXNlZCB0aGlzIHNob3VsZCBiZSBubwoJICBwcm9ibGVtLgoKMjAwNy0wNS0xNyAxNzoxNjowOSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci86IFNhdmUgbGFzdCBzeW5jZWQgdmFsdWUgZnJvbSB0aGUgbGlzdCB0byBjb250aW51ZSBzZWFyY2hpbmcgZnJvbSB0aGVyZSBpbiBmdXR1cmUgc3luY3MuIFRoaXMgc3BlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfdW5zZXQpLAoJICAoZ3N0X2NvbnRyb2xsZXJfdW5zZXRfYWxsKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXJwcml2YXRlLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9maW5kX2NvbnRyb2xfcG9pbnRfbm9kZSk6CgkgIFNhdmUgbGFzdCBzeW5jZWQgdmFsdWUgZnJvbSB0aGUgbGlzdCB0byBjb250aW51ZSBzZWFyY2hpbmcgZnJvbSB0aGVyZQoJICBpbiBmdXR1cmUgc3luY3MuIFRoaXMgc3BlZWRzIGV2ZXJ5dGhpbmcgdXAgYSBiaXQuCgoyMDA3LTA1LTE3IDE3OjA1OjM2ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyLzogQWRkIGEgbmV3IHByaXZhdGUgR3N0Q29udHJvbFBvaW50IHN0cnVjdCB3aGljaCAiaW5oZXJpdHMiIGZyb20KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJldmlld2VkIGJ5OiBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IChnc3RfY29udHJvbF9wb2ludF9jb21wYXJlKSwKCSAgKGdzdF9jb250cm9sX3BvaW50X2ZpbmQpLCAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfbmV3KSwKCSAgKGdzdF9jb250cm9sX3BvaW50X2ZyZWUpLCAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfZnJlZSksCgkgIChnc3RfY29udHJvbGxlcl9zZXQpLCAoZ3N0X2NvbnRyb2xsZXJfc2V0X2Zyb21fbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl91bnNldCksIChnc3RfY29udHJvbGxlcl91bnNldF9hbGwpLAoJICAoZ3N0X2NvbnRyb2xsZXJfc3luY192YWx1ZXMpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlcnByaXZhdGUuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X2ZpbmRfY29udHJvbF9wb2ludF9ub2RlKSwKCSAgKGludGVycG9sYXRlX25vbmVfZ2V0KSwgKGludGVycG9sYXRlX3RyaWdnZXJfZ2V0KToKCSAgQWRkIGEgbmV3IHByaXZhdGUgR3N0Q29udHJvbFBvaW50IHN0cnVjdCB3aGljaCAiaW5oZXJpdHMiIGZyb20KCSAgR3N0VGltZWRWYWx1ZSB0byBhbGxvdyBkaWZmZXJlbnQgaW50ZXJwb2xhdG9ycyB0byBzdG9yZSBpbnRlcm5hbAoJICB2YWx1ZXMgbmV4dCB0byBlYWNoIGNvbnRyb2wgcG9pbnQuIEZyb20gdGhlIG91dHNpZGUgZXZlcnl0aGluZyBpcwoJICBzdGlsbCBhIEdzdENvbnRyb2xQb2ludCBzbyB3ZSBkb24ndCBsb29zZSBiaW5hcnkgY29tcGF0aWJpbGl0eS4KCSAgQWxzbyBmaXh1cCBhbGwgdGhlIEdWYWx1ZSBoYW5kbGluZyB0byBub3QgbGVhayBHVmFsdWVzIG9yIGxpc3Qgbm9kZXMuCgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEZyZWUgdGhlIGxpc3Qgbm9kZXMgYW5kIEdWYWx1ZXMgaW4gdGhlIGNvbnRyb2xsZXJfbWlzYyB0ZXN0LgoKMjAwNy0wNS0xNyAxMTowNToyMiArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IFNtYWxsIGRvYyBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6CgkgIFNtYWxsIGRvYyBmaXguCgoyMDA3LTA1LTE2IDE5OjM1OjQ2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5jOiBJZiB3ZSBmYWlsIHRvIGxvYWQgYSBwbHVnaW4gYmVjYXVzZSBvZiB1bnJlc29sdmVkIHN5bWJvbHMgb3IgbWlzc2luZyBsaWJyYXJpZXMgYW5kIHNwZXcgYSB3YXJuaW5nIHRvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKGdzdF9wbHVnaW5fbG9hZF9maWxlKToKCSAgSWYgd2UgZmFpbCB0byBsb2FkIGEgcGx1Z2luIGJlY2F1c2Ugb2YgdW5yZXNvbHZlZCBzeW1ib2xzIG9yIG1pc3NpbmcKCSAgbGlicmFyaWVzIGFuZCBzcGV3IGEgd2FybmluZyB0byBzdGRlcnIsIHdlIG1heSBqdXN0IGFzIHdlbGwgbWVudGlvbgoJICB3aGljaCBwbHVnaW4gaXQgd2FzIHRoYXQgZmFpbGVkIHRvIGxvYWQuCgoyMDA3LTA1LTEzIDIwOjI4OjE0ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGRvY3MvTWFrZWZpbGUuYW06IHRoZSBndGstZG9jIG1ha2VmaWxlIHNuaXBwZXQgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGNhc2Ugd2hlbiBFTkFCTEVfR1RLX0RPQyBpcyBmYWxzZSwgYW5kIGluc3RhbGxzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL01ha2VmaWxlLmFtOiB0aGUgZ3RrLWRvYyBtYWtlZmlsZSBzbmlwcGV0IGNvcnJlY3RseQoJICBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gRU5BQkxFX0dUS19ET0MgaXMgZmFsc2UsIGFuZCBpbnN0YWxscwoJICB0aGUgcHJlYnVpbHQgZG9jdW1lbnRhdGlvbi4gIFNvIGd0ay1kb2Mgc3ViZGlycyBhcmUKCSAgdW5jb25kaXRpb25hbGx5IGVuYWJsZWQuICBGaXhlczogIzM0OTA5OS4KCjIwMDctMDUtMTMgMjA6MTE6MjcgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmg6IFJld29yZCBzb21lIGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5oOiBSZXdvcmQgc29tZSBkb2N1bWVudGF0aW9uLgoKMjAwNy0wNS0xMyAwMDoyMDozNSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IGdzdF9wbHVnaW5fcmVnaXN0ZXJfZnVuYygpIGRvZXNuJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCB0aGUgcGFzc2VkICJtb2R1bGUiIHBhcmFtZXRlciwgc28gcmVtb3YuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiBnc3RfcGx1Z2luX3JlZ2lzdGVyX2Z1bmMoKSBkb2Vzbid0IGFjdHVhbGx5CgkgIGRvIGFueXRoaW5nIHdpdGggdGhlIHBhc3NlZCAibW9kdWxlIiBwYXJhbWV0ZXIsIHNvIHJlbW92ZSBpdC4KCSAgQWxsb3dzIHJlbW92YWwgb2YgYWRkaXRpb25hbCB2ZXN0aWdhbCBjb2RlLgoKMjAwNy0wNS0xMyAwMDowOTowMCArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IFVzaW5nIHNpZ2FjdGlvbiBzaG91bGQgZGVwZW5kIG9uIEhBVkVfU0lHQUNUSU9OLCBub3QgSEFWRV9XSU4zMi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOgoJICBVc2luZyBzaWdhY3Rpb24gc2hvdWxkIGRlcGVuZCBvbiBIQVZFX1NJR0FDVElPTiwgbm90IEhBVkVfV0lOMzIuCgkgIFN3aXRjaCB0byB1c2luZyBnX3N0YXQoKSBiZWNhdXNlIGl0J3MgbW9yZSBwb3J0YWJsZS4KCjIwMDctMDUtMTIgMjM6NTM6MDggKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdC5jOiBBZGQgR1NUX0RJU0FCTEVfT1BUSU9OX1BBUlNJTkcsIGluIG9yZGVyIHRvIGRpc2FibGUgb3B0aW9uIHBhcnNpbmcgZm9yIGVtYmVkZGVkIHN5c3RlbXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgQWRkIEdTVF9ESVNBQkxFX09QVElPTl9QQVJTSU5HLCBpbiBvcmRlciB0byBkaXNhYmxlIG9wdGlvbgoJICBwYXJzaW5nIGZvciBlbWJlZGRlZCBzeXN0ZW1zLgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICBBbGxvdyBnc3RfZWxlbWVudF9yZWdpc3RlcigpIHRvIGJlIGNhbGxlZCB3aXRoIHBsdWdpbj09TlVMTC4KCSAgRGlkIG5vYm9keSBub3RpY2UgdGhhdCBzdGF0aWMgZWxlbWVudHMgd2VyZSBicm9rZW4/CgoyMDA3LTA1LTEyIDE1OjM4OjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBHaXZlIG1vcmUgaW50ZXJlc3RpbmcgaW5mbyB3aGVuIGJ1ZmZlcmluZyBzdGFydHMgYW5kIHN0b3BzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgR2l2ZSBtb3JlIGludGVyZXN0aW5nIGluZm8gd2hlbiBidWZmZXJpbmcgc3RhcnRzIGFuZCBzdG9wcy4KCSAgRml4IGNhc2Ugd2hlcmUgYnVmZmVyaW5nIHN0YXJ0cyBidXQgd2UgZmFpbCB0byB1cGRhdGUgdGhlIGJ1ZmZlcmluZyBmbGFnCgkgIGJlY2F1c2UgdGhlIHRhcmdldCBzdGF0ZSBpcyBub3QgUExBWUlORy4KCjIwMDctMDUtMTIgMTU6MzU6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLio6IFJlZmFjdG9yIGFuIGNsZWFudXAgcXVldWUgYSBiaXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9pbml0KSwKCSAgKGdzdF9xdWV1ZV9maW5hbGl6ZSksICh1cGRhdGVfdGltZV9sZXZlbCksIChhcHBseV9zZWdtZW50KSwKCSAgKGFwcGx5X2J1ZmZlciksIChnc3RfcXVldWVfbG9ja2VkX2ZsdXNoKSwKCSAgKGdzdF9xdWV1ZV9sb2NrZWRfZW5xdWV1ZSksIChnc3RfcXVldWVfbG9ja2VkX2RlcXVldWUpLAoJICAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KSwgKGdzdF9xdWV1ZV9jaGFpbiksCgkgIChnc3RfcXVldWVfcHVzaF9vbmUpLCAoZ3N0X3F1ZXVlX2xvb3ApOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuaDoKCSAgUmVmYWN0b3IgYW4gY2xlYW51cCBxdWV1ZSBhIGJpdC4KCSAgRG8gYmV0dGVyIHRpbWUgbGV2ZWwgY2FsY3VsYXRpb25zIHRoYXQgYWxzbyB3b3JrIHdoZW4gdGhlIHNyY3BhZCBpcyBub3QKCSAgeWV0IHJ1bm5pbmcuCgkgIFJlbW92ZSBzb21lIHVubmVlZGVkIGRlYnVnIGxpbmVzLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3F1ZXVlLmM6IChHU1RfU1RBUlRfVEVTVCksIChxdWV1ZV9zdWl0ZSk6CgkgIEFkZGVkIHRlc3RjYXNlIGZvciB0aW1lIGxldmVsIG1lYXN1cmVtZW50LgoJICBUcnkgdG8gbWFrZSBzb21lIHN0dWZmIG1vcmUgcmFjZWZyZWUuCgoyMDA3LTA1LTExIDE0OjQ2OjEwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHVyaS5jOiBEb24ndCBsZWFrIHBsdWdpbiBmZWF0dXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXJpLmM6IChnc3RfZWxlbWVudF9tYWtlX2Zyb21fdXJpKToKCSAgRG9uJ3QgbGVhayBwbHVnaW4gZmVhdHVyZS4KCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXJpLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdXJpX3N1aXRlKToKCSAgQWRkIGJyYWluLWRlYWQgdW5pdCB0ZXN0LgoKMjAwNy0wNS0xMSAxNDoyODo1NSArMDAwMCAgSmVyb2VuIFdvdXRlcnMgPHdvdXRlcnNqQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R1cmkuYzogVHJlYXQgcHJvdG9jb2wgc3RyaW5ncyBpbiBhIGNhc2UtaW5zZW5zaXRpdmUgd2F5ICgjNDM3NTYzKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBKZXJvZW4gV291dGVycyA8d291dGVyc2ogYXQgZ21haWwgY29tPgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfZ2V0X3Byb3RvY29sKSwgKHNlYXJjaF9ieV9lbnRyeSk6CgkgIFRyZWF0IHByb3RvY29sIHN0cmluZ3MgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIHdheSAoIzQzNzU2MykuCgoyMDA3LTA1LTExIDEwOjU2OjQ4ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvOiBEb24ndCBwcmludCBhIGdfd2FybmluZyBmb3IgYW55IGZhaWx1cmUgdG8gbG9hZCBhIHNoYXJlZCBvYmplY3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKGdzdF9wbHVnaW5fbG9hZF9maWxlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOgoJICBEb24ndCBwcmludCBhIGdfd2FybmluZyBmb3IgYW55IGZhaWx1cmUgdG8gbG9hZCBhIHNoYXJlZCBvYmplY3QuCgkgIEluc3RlYWQsIHB1c2ggdGhpcyBkb3duIGludG8gZ3N0cGx1Z2luLmMsIGFuZCB3YXJuIF9vbmx5XyBpZiB3ZQoJICBmYWlsZWQgdG8gb3BlbiB0aGUgbW9kdWxlIChpLmUuIGZhaWx1cmUgdG8gbGluaykuCgkgIEF2b2lkcyB3YXJuaW5ncyBvbiBub3JtYWwsIHdvcmtpbmcsIG5vbi1wbHVnaW4gLnNvIGZpbGVzLgoKMjAwNy0wNS0xMSAwODoyOToxMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5jIChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6IGdzdC9nc3RyZWdpc3RyeS5jIChHU1RfQ0FUX0RFRkFVTFQsIGdzdF9yZWdpc3RyeV9sb29rdXBfZmVhdHVyZV9sb2NrZWQsIGdzdF9yLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uYyAoZ3N0X3BsdWdpbl9sb2FkX2ZpbGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jIChHU1RfQ0FUX0RFRkFVTFQsCgkgIGdzdF9yZWdpc3RyeV9sb29rdXBfZmVhdHVyZV9sb2NrZWQsIGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOgoJICBQcmludCBhIGdfd2FybmluZyBpZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBsb2FkaW5nIGEgcGx1Z2lucyBkdXJpbmcKCSAgcmVnaXN0cnkgc2Nhbi4gVGhlIHNodWxkIGhlbHAgYmVnaW5uZXJzIHN0YXJ0aW5nIHdpdGggZ3N0LXBsdWdpbgoJICB0ZW1wbGF0ZS4KCjIwMDctMDUtMTAgMTU6MjE6MjAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLio6IEJlIHNtYXJ0ZXIgd2hlbiBjYWxjdWxhdGluZyB0aGUgY3VycmVudCBhbW91bnQgb2YgZGF0YSBpbiB0aGUgcXVldWUgYnkgbWVhc3VyaW5nIHRoZSBkaWYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2NsYXNzX2luaXQpLAoJICAodXBkYXRlX3RpbWVfbGV2ZWwpLCAoZ3N0X3F1ZXVlX2xvY2tlZF9mbHVzaCksCgkgIChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLCAoZ3N0X3F1ZXVlX2NoYWluKSwKCSAgKGdzdF9xdWV1ZV9wdXNoX29uZSksIChnc3RfcXVldWVfbG9vcCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5oOgoJICBCZSBzbWFydGVyIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGN1cnJlbnQgYW1vdW50IG9mIGRhdGEgaW4gdGhlIHF1ZXVlIGJ5CgkgIG1lYXN1cmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHN0YXJ0IGFuZCBlbmQgdGltZXN0YW1wcyAoaW4gcnVubmluZwoJICB0aW1lKSBpbnNpZGUgdGhlIHF1ZXVlLiBGaXhlcyAjNDMyODc2LgoJICBBUEk6IEdzdFF1ZXVlOjpwdXNoaW5nIHRvIG5vdGlmeSBlbGVtZW50cyB0aGF0IHdlIGFyZSBwdXNoaW5nIGRhdGEgYWdhaW4KCSAgc2luY2UgdGhlIHJ1bm5pbmcgc2lnbmFsIGlzIHJhdGhlciBicm9rZW4gZm9yIHRoaXMgcHVycG9zZS4KCjIwMDctMDUtMTAgMTI6NDA6MTIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYyAoX2RvX2luaXQsIGdzdF9xdWV1ZV9zaWduYWxzLCBnc3RfcXVldWVfYmFzZV9pbml0LCBnc3RfcXVldWVfaW5pdCk6IHVzZSBHU1RfQk9JTEVSUExBVEUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jIChfZG9faW5pdCwgZ3N0X3F1ZXVlX3NpZ25hbHMsCgkgIGdzdF9xdWV1ZV9iYXNlX2luaXQsIGdzdF9xdWV1ZV9pbml0KToKCSAgdXNlIEdTVF9CT0lMRVJQTEFURQoKMjAwNy0wNS0wOSAyMTowNjowNiArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6IEFkZCBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMuCgkgICogd2luMzIvdnM2L2dyYW1tYXIuZHNwOgoJICBVc2UgZ3JhbW1hciBwcmUtZ2VuZXJhdGVkIGZpbGVzLgoKMjAwNy0wNS0wOSAxNjozMjowNyArMDAwMCAgUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CgoJICBnc3QvOiBNYWludGFpbiBBUEkgYW5kIEFCSSB3aGVuIC0tZGlzYWJsZS1wYXJzZSBpcyB1c2VkLiBOb3cgdGhhdCB3ZSBoYXZlIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUsIHdlIGNhbiBqdXN0IHJldHUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBQZXRlciBLamVsbGVyc3RlZHQgIDxwa2ogYXQgYXhpcyBjb20+CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoZ3N0X3BhcnNlX2xhdW5jaHYpLCAoZ3N0X3BhcnNlX2xhdW5jaCk6CgkgICogZ3N0L2dzdHBhcnNlLmg6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24pOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBNYWludGFpbiBBUEkgYW5kIEFCSSB3aGVuIC0tZGlzYWJsZS1wYXJzZSBpcyB1c2VkLiBOb3cgdGhhdAoJICB3ZSBoYXZlIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUsIHdlIGNhbiBqdXN0IHJldHVybiBOVUxMIGFuZCB0aGUKCSAgYXBwcm9wcmlhdGUgZXJyb3Igd2hlbiBnc3RfcGFyc2VfbGF1bmNoKCkgaXMgdXNlZCBkZXNwaXRlIGl0IGhhdmluZwoJICBiZWVuIGRpc2FibGVkICgjMzQyNTY0KS4KCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtZGlzYWJsZWQuYzoKCSAgTWFrZSBzdXJlIHRoZXNlIGZ1bmN0aW9ucyBleGlzdCBhbmQgcmV0dXJuIE5VTEwgcGx1cyBhIEdFcnJvciB3aGVuCgkgIC0tZGlzYWJsZS1wYXJzZSBpcyB1c2VkLgoKMjAwNy0wNS0wOSAxMDowMTozNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2JlbmNobWFya3MvOiBTZXQgYSBnb29kIGV4YW1wbGUgYW5kIGRvbid0IGxlYWsgbWVzc2FnZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2JlbmNobWFya3MvY29tcGxleGl0eS5jOiAobWFpbik6CgkgICogdGVzdHMvYmVuY2htYXJrcy9tYXNzLWVsZW1lbnRzLmM6IChtYWluKToKCSAgU2V0IGEgZ29vZCBleGFtcGxlIGFuZCBkb24ndCBsZWFrIG1lc3NhZ2VzLgoKMjAwNy0wNS0wNiAxODoyNzoyNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy86IENvcnJlY3QgZml4eHJlZnMgb3B0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgICogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICBDb3JyZWN0IGZpeHhyZWZzIG9wdGlvbnMuCgkgICogZG9jcy9wbHVnaW5zL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy1kb2NzLnNnbWw6CgkgICogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jIChnc3RfY2Fwc2ZpbHRlcl9kZXRhaWxzKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuaCAoX19HU1RfQ0FQU0ZJTFRFUl9IX18sCgkgIEdTVF9UWVBFX0NBUFNGSUxURVIsIEdTVF9DQVBTRklMVEVSLCBHU1RfQ0FQU0ZJTFRFUl9DTEFTUywKCSAgR1NUX0lTX0NBUFNGSUxURVIsIEdTVF9JU19DQVBTRklMVEVSX0NMQVNTLCBHc3RDYXBzRmlsdGVyLAoJICBHc3RDYXBzRmlsdGVyQ2xhc3MsIF9Hc3RDYXBzRmlsdGVyLCB0cmFucywgZmlsdGVyX2NhcHMsCgkgIF9Hc3RDYXBzRmlsdGVyQ2xhc3MsIHRyYW5zX2NsYXNzKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGVsZW1lbnRzLmMgKG5hbWUsIHJhbmssIHR5cGUsIF9lbGVtZW50cyk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jCgkgIChnc3RfaWRlbnRpdHlfY2hlY2tfaW1wZXJmZWN0X3RpbWVzdGFtcCwKCSAgZ3N0X2lkZW50aXR5X2NoZWNrX2ltcGVyZmVjdF9vZmZzZXQpOgoJICBEb2N1bWVudCBjYXBzZmlsdGVyIGFuZCBhZGQgZG9jLWJsdXJiIHRvIGlkZW50aXR5LgoKMjAwNy0wNS0wNCAxMjozNzowMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvOiBEb24ndCBjcmFzaCBpZiBzb21lb25lIHRyaWVzIHRvIHNldCBhbiBpbnRlcnBvbGF0aW9uIG1vZGUgdGhhdCBpcyBpbnZhbGlkIG9yIHRoYXQgaXNuJ3Qgc3VwcG9ydC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X3NldF9pbnRlcnBvbGF0aW9uX21vZGUpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICBEb24ndCBjcmFzaCBpZiBzb21lb25lIHRyaWVzIHRvIHNldCBhbiBpbnRlcnBvbGF0aW9uIG1vZGUgdGhhdAoJICBpcyBpbnZhbGlkIG9yIHRoYXQgaXNuJ3Qgc3VwcG9ydGVkIHlldC4gRml4ZXMgIzQyMjI5NS4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9jb250cm9sbGVyX3N1aXRlKToKCSAgQWRkIGEgdGVzdCBjYXNlIGZvciB0aGUgYWJvdmUuCgoyMDA3LTA1LTAzIDE2OjQ0OjM0ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IFByb3Blcmx5IHNldCB0aGUgbGFzdF9zdG9wIHBvc2l0aW9uIG9uIEdzdFNlZ21lbnQuIFRoaXMgd2lsbCBvbmx5IGhhcHBlbiBpZiB0aGVyZSBpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYWluKToKCSAgUHJvcGVybHkgc2V0IHRoZSBsYXN0X3N0b3AgcG9zaXRpb24gb24gR3N0U2VnbWVudC4gVGhpcyB3aWxsIG9ubHkgaGFwcGVuCgkgIGlmIHRoZXJlIGlzIGEgYnVmZmVyIHRvIHB1c2ggb3V0LgoKMjAwNy0wNS0wMyAxNDo1ODowNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBhbHdheXNfaW5fcGxhY2UgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzaW5rIGFuZCBzb3VyY2UgY2FwcyBhcmUgdGhlIHNhbWUhIE1ha2Ugc3VyZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpOgoJICBhbHdheXNfaW5fcGxhY2UgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzaW5rIGFuZCBzb3VyY2UgY2FwcyBhcmUgdGhlCgkgIHNhbWUhIE1ha2Ugc3VyZSB3ZSBkb24ndCBibGluZGx5IHByb3h5IHRoZSBidWZmZXJfYWxsb2MgaW4gdGhpcyBjYXNlLgoKMjAwNy0wNS0wMyAxNDo1NDozNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFQSTogZ3N0X2Jhc2Vfc3JjX3F1ZXJ5X2xhdGVuY3koKS4gQWRkZWQgbWV0aG9kIHNvIHRoYXQgc3ViY2xhc3NlcyBjYW4gZWFzaWx5IGdldCB0aGUgbGF0ZW5jeSB2YWx1ZXMgb2YgdGhlIGJhc2Ugc291ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3F1ZXJ5X2xhdGVuY3kpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfcXVlcnkpLCAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIEFQSTogZ3N0X2Jhc2Vfc3JjX3F1ZXJ5X2xhdGVuY3koKS4gQWRkZWQgbWV0aG9kIHNvIHRoYXQgc3ViY2xhc3NlcyBjYW4KCSAgZWFzaWx5IGdldCB0aGUgbGF0ZW5jeSB2YWx1ZXMgb2YgdGhlIGJhc2Ugc291cmNlIGNsYXNzLgoKMjAwNy0wNS0wMyAwOToyNDo1OCArMDAwMCAgWmFoZWVyIEFiYmFzIE1lcmFsaSA8emFoZWVyYWJiYXNAbWVyYWxpLm9yZz4KCgkgIHRvb2xzL2dzdC1pbnNwZWN0LmMgKHByaW50X2ltcGxlbWVudGF0aW9uX2luZm8pOiBSZW1vdmUgMC44IGNydWZ0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jIChwcmludF9pbXBsZW1lbnRhdGlvbl9pbmZvKToKCSAgUmVtb3ZlIDAuOCBjcnVmdC4KCjIwMDctMDUtMDIgMTc6MDk6MzAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy86IERvbid0IGNyZWF0ZSBhIGN1c3RvbWlzZWQgbWFuIHBhZ2UgYmFzZWQgb24gdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLCBkZXNjcmliZSB0aGUgZGVmYXVsdCByZWdpc3RyeSBwYXRoIGdlbmVyaWMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvTWFrZWZpbGUuYW06CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBEb24ndCBjcmVhdGUgYSBjdXN0b21pc2VkIG1hbiBwYWdlIGJhc2VkIG9uIHRoZSBob3N0IGFyY2hpdGVjdHVyZSwKCSAgZGVzY3JpYmUgdGhlIGRlZmF1bHQgcmVnaXN0cnkgcGF0aCBnZW5lcmljYWxseS4gVGhhdCB3YXkgdGhlIG1hbgoJICBwYWdlIGlzIHRoZSBzYW1lIGZvciBhbGwgYXJjaGl0ZWN0dXJlcyBhbmQgcGFja2FnZXJzIGhhdmUgb25lCgkgIG11bHRpbGliIGlzc3VlIGxlc3MgdG8gZGVhbCB3aXRoLiBGaXhlcyAjNDM0OTI2LgoKMjAwNy0wNS0wMiAxNToxNDozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogRml4IGRvY3VtZW50YXRpb24gYXMgc3BvdHRlZCBieSByZyBvbiBJUkMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgRml4IGRvY3VtZW50YXRpb24gYXMgc3BvdHRlZCBieSByZyBvbiBJUkMuCgoyMDA3LTA0LTI5IDE3OjM2OjE4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuYzogSW1wcm92ZSBkb2NzIGZvciBnc3RfZWxlbWVudF97bGluayx1bmxpbmt9LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgSW1wcm92ZSBkb2NzIGZvciBnc3RfZWxlbWVudF97bGluayx1bmxpbmt9LgoKMjAwNy0wNC0yOSAxNDowNDoyNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGRvY3MvUkVBRE1FOgoJICB1cGRhdGUgUkVBRE1FCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgUkVBRE1FCgoyMDA3LTA0LTI4IDExOjI5OjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgVHlwbyBmaXhlczsgbWlub3IgZG9jcyBhZGRpdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3R1cmkuYzoKCSAgKiBnc3QvZ3N0dXJpLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBUeXBvIGZpeGVzOyBtaW5vciBkb2NzIGFkZGl0aW9uLgoKMjAwNy0wNC0yNyAwODozMDo1OSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgQVBJOiBBZGQgZ3N0X3VyaV9wcm90b2NvbF9pc19zdXBwb3J0ZWQoKSwgd2hpY2ggY2hlY2tzIGlmIGFuIHNpbmsgb3Igc3JjIHRoYXQgc3VwcG9ydHMgYSBnaXZlbiBVUkkgcHJvdG9jb2wgZXhpc3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1cmkuYzogKGdldF9lbGVtZW50X2ZhY3Rvcmllc19mcm9tX3VyaV9wcm90b2NvbCksCgkgIChnc3RfdXJpX3Byb3RvY29sX2lzX3N1cHBvcnRlZCksIChnc3RfZWxlbWVudF9tYWtlX2Zyb21fdXJpKToKCSAgKiBnc3QvZ3N0dXJpLmg6CgkgIEFQSTogQWRkIGdzdF91cmlfcHJvdG9jb2xfaXNfc3VwcG9ydGVkKCksIHdoaWNoIGNoZWNrcyBpZiBhbiBzaW5rCgkgIG9yIHNyYyB0aGF0IHN1cHBvcnRzIGEgZ2l2ZW4gVVJJIHByb3RvY29sIGV4aXN0cy4KCjIwMDctMDQtMjcgMDc6MzQ6MTAgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBTZXQgdGhlIGxvY2F0aW9uIHRvIE5VTEwgaWYgImZpbGU6Ly8iIGlzIHNldCBhcyBVUkkuIE90aGVyd2lzZSBzb21lIHJhbmRvbSBwcmV2aW91cyBVUkkgd291bGQgc3RpbC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX3VyaV9zZXRfdXJpKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY191cmlfc2V0X3VyaSk6CgkgIFNldCB0aGUgbG9jYXRpb24gdG8gTlVMTCBpZiAiZmlsZTovLyIgaXMgc2V0IGFzIFVSSS4gT3RoZXJ3aXNlCgkgIHNvbWUgcmFuZG9tIHByZXZpb3VzIFVSSSB3b3VsZCBzdGlsbCBiZSBzZXQgaWYgImZpbGU6Ly8iIGlzCgkgIHNldCBvbiBhbiBhbHJlYWR5IHVzZWQgZmlsZXNpbmsvZmlsZXNyYy4KCjIwMDctMDQtMjcgMDc6Mjc6MzYgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBTcGVjaWFsIGNhc2UgdGhlICJmaWxlOi8vIiBVUkkgYXMgYXMgdGhpcyBpcyB1c2VkIGJ5IHNvbWUgYXBwbGljYXRpb25zIHRvIHRlc3Qgd2l0aCBnc3RfZWxlbWVudF9tYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX3VyaV9zZXRfdXJpKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY191cmlfc2V0X3VyaSk6CgkgIFNwZWNpYWwgY2FzZSB0aGUgImZpbGU6Ly8iIFVSSSBhcyBhcyB0aGlzIGlzIHVzZWQgYnkgc29tZQoJICBhcHBsaWNhdGlvbnMgdG8gdGVzdCB3aXRoIGdzdF9lbGVtZW50X21ha2VfZnJvbV91cmkgaWYgdGhlcmUncwoJICBhbiBlbGVtZW50IHRoYXQgc3VwcG9ydHMgdGhlIFVSSSBwcm90b2NvbC4KCSAgQWxzbyBtb3ZlIHRoZSBnX3BhdGhfaXNfYWJzb2x1dGUoKSBjaGVjayBmb3IgdGhlIGxvY2F0aW9uIHBhcnQKCSAgb2YgdGhlIFVSSSB0byBhbHNvIGNoZWNrIHRoaXMgZm9yICJmaWxlOi8vbG9jYWxob3N0L2JsYSIgVVJJcy4KCjIwMDctMDQtMjYgMTA6MDA6NDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBUEk6IGFkZCBnc3RfYnVmZmVyX3RyeV9uZXdfYW5kX2FsbG9jKCkgcGx1cyB1bml0IHRlc3QgKCM0MzE5NDApLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfdHJ5X25ld19hbmRfYWxsb2MpOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfYnVmZmVyX3N1aXRlKToKCSAgQVBJOiBhZGQgZ3N0X2J1ZmZlcl90cnlfbmV3X2FuZF9hbGxvYygpIHBsdXMgdW5pdCB0ZXN0ICgjNDMxOTQwKS4KCjIwMDctMDQtMjYgMDc6MzI6MDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS4qOiBJbXBsZW1lbnQgbm8tbW1hcCBhbHRlcm5hdGl2ZSBmb3IgcmVnaXN0cnkgcmVhZGluZy4gRG8gY29kZSBjbGVhbnVwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlX2NhY2hlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wYWRfdGVtcGxhdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3JlYWRfY2FjaGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5oOgoJICBJbXBsZW1lbnQgbm8tbW1hcCBhbHRlcm5hdGl2ZSBmb3IgcmVnaXN0cnkgcmVhZGluZy4gRG8gY29kZSBjbGVhbnVwcy4KCSAgQWRkIG1vcmUgY29tbWVudHMgYWJvdXQgYXZvaWRpbmcgc3RyZHVwcyBmb3IgYWxsIHRleHQgZGF0YS4gQ29tbWVudHMKCSAgd2VsY29tZS4KCjIwMDctMDQtMjUgMTI6MzA6MjcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5oIChHc3RCaW5hcnlQbHVnaW5FbGVtZW50LAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuaCAoR3N0QmluYXJ5UGx1Z2luRWxlbWVudCwKCSAgR3N0QmluYXJ5UGx1Z2luRmVhdHVyZSwgX0dzdEJpbmFyeUVsZW1lbnRGYWN0b3J5LCBwbHVnaW5fZmVhdHVyZSwKCSAgR3N0QmluYXJ5RWxlbWVudEZhY3RvcnksIF9Hc3RCaW5hcnlUeXBlRmluZEZhY3RvcnksIHBsdWdpbl9mZWF0dXJlKToKCSAgQ29tbWVudCBzdHJ1Y3RzIGFuZCByZWZvcm1hdCB0byBmaXggdGhlIGJ1aWxkICh0aGF0IHN0dWZmIHNob3VsZCBnbwoJICBpbnRvIGEgcHJpdi4gaGVhZGVyKS4KCjIwMDctMDQtMjUgMTE6NDQ6MjkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS4qOiBSZWZhY3RvciBzbyB0aGF0IHdlIGNhbiBpbXBsZW1lbnQgbXVsdGlwbGUgZmVhdHVyZXMuIEFkZCBzdXBwb3J0IGZvcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9mZWF0dXJlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuaDoKCSAgUmVmYWN0b3Igc28gdGhhdCB3ZSBjYW4gaW1wbGVtZW50IG11bHRpcGxlIGZlYXR1cmVzLiBBZGQgc3VwcG9ydCBmb3IKCSAgVHlwZUZpbmRGYWN0b3J5IGZlYXR1cmVzLgoKMjAwNy0wNC0yNCAwNjoxNDozNSArMDAwMCAgUGV0ZXIgS2plbGxlcnN0ZWR0IDxQZXRlci5LamVsbGVyc3RlZHRAYXhpcy5jb20+CgoJICBjb25maWd1cmUuYWM6IEZpeCBBTV9DT05ESVRJT05BTChHU1RfRElTQUJMRV9HU1RfREVCVUcsLi4uKSBhbmQgdXBkYXRlIGNvbW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxQZXRlci5LamVsbGVyc3RlZHRAYXhpcy5jb20+CgkgICogY29uZmlndXJlLmFjOgoJICBGaXggQU1fQ09ORElUSU9OQUwoR1NUX0RJU0FCTEVfR1NUX0RFQlVHLC4uLikgYW5kIHVwZGF0ZSBjb21tZW50LgoKMjAwNy0wNC0yMyAwNzozMDozOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGJpbi5jOiBGaXggYnVpbGQgd2l0aCAtLWdzdC1kaXNhYmxlLWdzdC1kZWJ1ZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2VsZW1lbnRfc2V0X3N0YXRlKSwKCSAgKGl0ZXJhdG9yX2FjdGl2YXRlX2ZvbGRfd2l0aF9yZXN5bmMpLCAoZ3N0X2Jpbl9jb250aW51ZV9mdW5jKSwKCSAgKGJpbl9oYW5kbGVfYXN5bmNfZG9uZSksIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBGaXggYnVpbGQgd2l0aCAtLWdzdC1kaXNhYmxlLWdzdC1kZWJ1ZwoKMjAwNy0wNC0yMSAxMzoyNzoxNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBNYWtlIHN1cmUgc3RyZWFtaW5nIGhhcyBmaW5pc2hlZCBiZWZvcmUgY2FsbGluZyB0aGUgOjpzdG9wKCkgdmZ1bmMsIHNpbmNlIHRoYXQgdmZ1bi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9hY3RpdmF0ZSk6CgkgIE1ha2Ugc3VyZSBzdHJlYW1pbmcgaGFzIGZpbmlzaGVkIGJlZm9yZSBjYWxsaW5nIHRoZSA6OnN0b3AoKSB2ZnVuYywKCSAgc2luY2UgdGhhdCB2ZnVuYyBtaWdodCBjbGVhciBzdGF0ZSB3aGljaCBpcyBiZWluZyB1c2VkIGluIHRoZQoJICBzdHJlYW1pbmcgdGhyZWFkLiBUaGlzIGZpeGVzIGEgcmFjZSB0aGF0IGNhdXNlZCBjcmFzaGVzIGluCgkgIGF1ZGlvcmVzYW1wbGUgd2hlbiBzaHV0dGluZyBkb3duIGEgcGlwZWxpbmUgKCM0MjAxMDYpLgoKMjAwNy0wNC0yMCAwODo1Mzo0MSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogVGhhdCB3YXMgb25lIGJ5dGUgbWlzc2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgVGhhdCB3YXMgb25lIGJ5dGUgbWlzc2luZy4KCjIwMDctMDQtMjAgMDg6Mzk6MzUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIDJuZCBhdHRlbXB0IHRvIGhhdmUgYSB4bWwtbGVzcyBidWlsZCBhcyBhIGpvaW5lZCBlZmZvcnQgb2YgIzQxMzEyMyBhbmQgIzQyMTQ4MC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2NsYXNzX2luaXQpLAoJICAoZ3N0X3NpZ25hbF9vYmplY3RfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICAybmQgYXR0ZW1wdCB0byBoYXZlIGEgeG1sLWxlc3MgYnVpbGQgYXMgYSBqb2luZWQgZWZmb3J0IG9mICM0MTMxMjMKCSAgYW5kICM0MjE0ODAuCgoyMDA3LTA0LTIwIDA4OjIxOjE5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC10YWdyZWFkaW5nLnR4dDogQWRkZWQgb3BlbiBpc3N1ZXMvdGhvdWdodHMgdG8gZHJhZnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LXRhZ3JlYWRpbmcudHh0OgoJICBBZGRlZCBvcGVuIGlzc3Vlcy90aG91Z2h0cyB0byBkcmFmdC4KCjIwMDctMDQtMTkgMTQ6MzI6NDkgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9wYXJzZS86IFVwZGF0ZSB0aGUgcHJlYnVpbGQgcGFyc2VyIHNvdXJjZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnRhYi5wcmUuYzoKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci50YWIucHJlLmg6CgkgICogZ3N0L3BhcnNlL2xleC5fZ3N0X3BhcnNlX3l5LnByZS5jOgoJICBVcGRhdGUgdGhlIHByZWJ1aWxkIHBhcnNlciBzb3VyY2VzLgoKMjAwNy0wNC0xOSAxNDoyMzoyNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L3BhcnNlL01ha2VmaWxlLmFtOiBBbmQgbm93IGZpeCB0aGUgYnVpbGRpbmcgb2YgdGhlIGZsZXggc291cmNlcy4gTm93IGV2ZXJ5dGhpbmcgc2hvdWxkIHdvcmsgYXMgZXhwZWN0ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgQW5kIG5vdyBmaXggdGhlIGJ1aWxkaW5nIG9mIHRoZSBmbGV4IHNvdXJjZXMuIE5vdyBldmVyeXRoaW5nIHNob3VsZAoJICB3b3JrIGFzIGV4cGVjdGVkLgoKMjAwNy0wNC0xOSAxNDowNjo1MiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L3BhcnNlL01ha2VmaWxlLmFtOiBOb3cgaG9wZWZ1bGx5IGZpeCB0aGUgYnVpbGQgZmFpbHVyZXMgYnkgc2V0dGluZyBwcm9wZXIgcnVsZSBkZXBlbmRlbmNpZXMgYW5kIG1vdmluZyBpbnN0ZWFkIG9mLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgTm93IGhvcGVmdWxseSBmaXggdGhlIGJ1aWxkIGZhaWx1cmVzIGJ5IHNldHRpbmcgcHJvcGVyIHJ1bGUKCSAgZGVwZW5kZW5jaWVzIGFuZCBtb3ZpbmcgaW5zdGVhZCBvZiBjb3B5aW5nLgoKMjAwNy0wNC0xOSAxMDo0MzoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvYmVuY2htYXJrcy86IFRvdGFsIGxpY2Vuc2lmaWNhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvYmVuY2htYXJrcy9jb21wbGV4aXR5LmdudXBsb3Q6CgkgICogdGVzdHMvYmVuY2htYXJrcy9jb21wbGV4aXR5LnNjbToKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL21hc3MtZWxlbWVudHMuZ251cGxvdDoKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL21hc3MtZWxlbWVudHMuc2NtOgoJICBUb3RhbCBsaWNlbnNpZmljYXRpb24uCgoyMDA3LTA0LTE5IDEwOjIyOjI5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvcGFyc2UvTWFrZWZpbGUuYW06IEZpeCB0aGUgYnVpbGQgYnkgY29ycmVjdGluZyB0aGUgcnVsZSB0aGF0IGdhdmUgd3JvbmcgZmlsZXMgdG8gZmxleC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL01ha2VmaWxlLmFtOgoJICBGaXggdGhlIGJ1aWxkIGJ5IGNvcnJlY3RpbmcgdGhlIHJ1bGUgdGhhdCBnYXZlIHdyb25nIGZpbGVzIHRvIGZsZXguCgoyMDA3LTA0LTE5IDA4OjQwOjMzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9iZW5jaG1hcmtzLzogQ2hhbmdlIGxpY2VuY2UgdG8gTEdQTCBhcyBncmFudGVkIGJ5IEJlbmphbWluIGFuZCBBbmR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL2NvbXBsZXhpdHkuYzoKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL21hc3MtZWxlbWVudHMuYzoKCSAgQ2hhbmdlIGxpY2VuY2UgdG8gTEdQTCBhcyBncmFudGVkIGJ5IEJlbmphbWluIGFuZCBBbmR5LgoKMjAwNy0wNC0xOSAwNjoxODoyNCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgZ3N0L3BhcnNlL01ha2VmaWxlLmFtOiBBZGQgY29ycmVjdCBncmFtbWFyLnRhYi5oIGRlcGVuZGVuY3kgaWYgY29tcGlsaW5nIHdpdGhvdXQgbmV3IGVub3VnaCBmbGV4LiBGaXhlcyAjNDMxMTUwLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvTWFrZWZpbGUuYW06CgkgIEFkZCBjb3JyZWN0IGdyYW1tYXIudGFiLmggZGVwZW5kZW5jeSBpZiBjb21waWxpbmcgd2l0aG91dCBuZXcgZW5vdWdoCgkgIGZsZXguIEZpeGVzICM0MzExNTAuCgoyMDA3LTA0LTE4IDEzOjM0OjQ4ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvcGFyc2UvTWFrZWZpbGUuYW06IEZpeCB0eXBvIGFuZCB1c2Ugb3V0ZGF0ZWQgc291cmNlcyBpZiB0aGUgZmxleC9iaXNvbiBzb3VyY2VzIGFyZSBuZXdlciB0aGFuIHRoZSBwcmVnZW5lcmF0ZWQgb24uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL01ha2VmaWxlLmFtOgoJICBGaXggdHlwbyBhbmQgdXNlIG91dGRhdGVkIHNvdXJjZXMgaWYgdGhlIGZsZXgvYmlzb24gc291cmNlcyBhcmUgbmV3ZXIKCSAgdGhhbiB0aGUgcHJlZ2VuZXJhdGVkIG9uZXMgYnV0IGZsZXggaXMgdG9vIG9sZC4gUHJpbnQgYSB3YXJuaW5nIGluCgkgIHRoYXQgY2FzZS4gVGhpcyBzaG91bGQgZml4IHRoZSBidWlsZCBvbiB0aGUgYnVpbGQgYm90LgoKMjAwNy0wNC0xOCAxMjozNDo1MSArMDAwMCAgTWFyYy1BbmRyZSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAZ21haWwuY29tPgoKCSAgZ3N0L3BhcnNlLzogTWFrZSB0aGUgcGFyc2VyIHJlZW50cmFudCBhbmQgcmVjdXJzaXZlbHkgY2FsbGFibGUuIFRoaXMgcmVxdWlyZXMgZmxleCA+PSAyLjUuMzEsIGZvciBvbGRlciB2ZXJzaW9ucyBwcmVnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyYy1BbmRyZSBMdXJlYXUgPG1hcmNhbmRyZSBkb3QgbHVyZWF1IGF0IGdtYWlsIGRvdCBjb20+CgkgICogZ3N0L3BhcnNlL01ha2VmaWxlLmFtOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogZ3N0L3BhcnNlL3BhcnNlLmw6CgkgIE1ha2UgdGhlIHBhcnNlciByZWVudHJhbnQgYW5kIHJlY3Vyc2l2ZWx5IGNhbGxhYmxlLiBUaGlzIHJlcXVpcmVzIGZsZXgKCSAgPj0gMi41LjMxLCBmb3Igb2xkZXIgdmVyc2lvbnMgcHJlZ2VuZXJhdGVkIHNvdXJjZXMgYXJlIHVzZWQgYXMgd2UKCSAgY2FuJ3QgYnVtcCB0aGUgYnVpbGQgZGVwZW5kZW5jeS4gRmluYWxseSBmaXhlcyAjMzQ5MTgwLgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoZ3N0X3BhcnNlX2xhdW5jaCk6CgkgIERyb3AgdGhlIEhBVkVfTVRfU0FWRV9GTEVYICNpZmRlZnMgYXMgd2UgYWx3YXlzIHVzZSBhIG5ldyBlbm91Z2ggZmxleAoJICBub3cgYW55d2F5LgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnRhYi5wcmUuYzogKF9fZ3N0X3BhcnNlX3N0cmR1cCksCgkgIChfX2dzdF9wYXJzZV9zdHJmcmVlKSwgKF9fZ3N0X3BhcnNlX2xpbmtfbmV3KSwKCSAgKF9fZ3N0X3BhcnNlX2xpbmtfZnJlZSksIChfX2dzdF9wYXJzZV9jaGFpbl9uZXcpLAoJICAoX19nc3RfcGFyc2VfY2hhaW5fZnJlZSksIChTRVRfRVJST1IpLCAoWVlQUklOVEYpLAoJICAoZ3N0X3BhcnNlX2VsZW1lbnRfc2V0KSwgKGdzdF9wYXJzZV9mcmVlX2xpbmspLAoJICAoZ3N0X3BhcnNlX2ZvdW5kX3BhZCksIChnc3RfcGFyc2VfcGVyZm9ybV9kZWxheWVkX2xpbmspLAoJICAoZ3N0X3BhcnNlX3BlcmZvcm1fbGluayksICh5eXRuYW1lcnIpLCAoeXlzeW50YXhfZXJyb3IpLCAoeXllcnJvciksCgkgIChfZ3N0X3BhcnNlX2xhdW5jaCk6CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIudGFiLnByZS5oOgoJICAqIGdzdC9wYXJzZS9sZXguX2dzdF9wYXJzZV95eS5wcmUuYzogKFBSSU5UKSwgKHl5X2dldF9uZXh0X2J1ZmZlciksCgkgICh5eV9nZXRfcHJldmlvdXNfc3RhdGUpLCAoeXlfdHJ5X05VTF90cmFucyksIChpbnB1dCksCgkgIChfZ3N0X3BhcnNlX3l5cmVzdGFydCksIChfZ3N0X3BhcnNlX3l5X3N3aXRjaF90b19idWZmZXIpLAoJICAoX2dzdF9wYXJzZV95eV9sb2FkX2J1ZmZlcl9zdGF0ZSksIChfZ3N0X3BhcnNlX3l5X2NyZWF0ZV9idWZmZXIpLAoJICAoX2dzdF9wYXJzZV95eV9kZWxldGVfYnVmZmVyKSwgKF9nc3RfcGFyc2VfeXlfaW5pdF9idWZmZXIpLAoJICAoX2dzdF9wYXJzZV95eV9mbHVzaF9idWZmZXIpLCAoX2dzdF9wYXJzZV95eXB1c2hfYnVmZmVyX3N0YXRlKSwKCSAgKF9nc3RfcGFyc2VfeXlwb3BfYnVmZmVyX3N0YXRlKSwKCSAgKF9nc3RfcGFyc2VfeXllbnN1cmVfYnVmZmVyX3N0YWNrKSwgKF9nc3RfcGFyc2VfeXlfc2Nhbl9idWZmZXIpLAoJICAoX2dzdF9wYXJzZV95eV9zY2FuX3N0cmluZyksIChfZ3N0X3BhcnNlX3l5X3NjYW5fYnl0ZXMpLAoJICAoeXlfZmF0YWxfZXJyb3IpLCAoX2dzdF9wYXJzZV95eWdldF9leHRyYSksCgkgIChfZ3N0X3BhcnNlX3l5Z2V0X2xpbmVubyksIChfZ3N0X3BhcnNlX3l5Z2V0X2NvbHVtbiksCgkgIChfZ3N0X3BhcnNlX3l5Z2V0X2luKSwgKF9nc3RfcGFyc2VfeXlnZXRfb3V0KSwKCSAgKF9nc3RfcGFyc2VfeXlnZXRfbGVuZyksIChfZ3N0X3BhcnNlX3l5Z2V0X3RleHQpLAoJICAoX2dzdF9wYXJzZV95eXNldF9leHRyYSksIChfZ3N0X3BhcnNlX3l5c2V0X2xpbmVubyksCgkgIChfZ3N0X3BhcnNlX3l5c2V0X2NvbHVtbiksIChfZ3N0X3BhcnNlX3l5c2V0X2luKSwKCSAgKF9nc3RfcGFyc2VfeXlzZXRfb3V0KSwgKF9nc3RfcGFyc2VfeXlnZXRfZGVidWcpLAoJICAoX2dzdF9wYXJzZV95eXNldF9kZWJ1ZyksIChfZ3N0X3BhcnNlX3l5Z2V0X2x2YWwpLAoJICAoX2dzdF9wYXJzZV95eXNldF9sdmFsKSwgKF9nc3RfcGFyc2VfeXlsZXhfaW5pdCksCgkgICh5eV9pbml0X2dsb2JhbHMpLCAoX2dzdF9wYXJzZV95eWxleF9kZXN0cm95KSwgKHl5X2ZsZXhfc3RybmNweSksCgkgICh5eV9mbGV4X3N0cmxlbiksIChfZ3N0X3BhcnNlX3l5YWxsb2MpLCAoX2dzdF9wYXJzZV95eXJlYWxsb2MpLAoJICAoX2dzdF9wYXJzZV95eWZyZWUpOgoJICBJZiB0aGUgaW5zdGFsbGVkIGZsZXggdmVyc2lvbiBpcyB0b28gb2xkIHVzZSBwcmUtZ2VuZXJhdGVkIHBhcnNlcgoJICBzb3VyY2VzLiBUaGVzZSBwcmUtZ2VuZXJhdGVkIHBhcnNlciBzb3VyY2VzIGFyZSBhbHdheXMgdXBkYXRlZCB3aGVuCgkgIHRoZSBhY3R1YWwgZmxleC9iaXNvbiBzb3VyY2VzIGNoYW5nZSBidXQgcmVxdWlyZSBldmVyeWJvZHkgd2hvIHdhbnRzCgkgIHRvIGNoYW5nZSBzb21ldGhpbmcgaW4gdGhlIHBhcnNlciB0byBoYXZlIGZsZXggPj0gMi41LjMxIGluc3RhbGxlZC4KCjIwMDctMDQtMTggMTA6NTg6MzEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIE1ha2UgLS1kaXNhYmxlLW5scyB0byB3b3JrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9tNC9nc3QtZ2V0dGV4dC5tNDoKCSAgKiBnc3QvZ3N0LWkxOG4tbGliLmg6CgkgIE1ha2UgLS1kaXNhYmxlLW5scyB0byB3b3JrCgoyMDA3LTA0LTE3IDE2OjEyOjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGNvbmZpZy5oLmluOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlIHRoYXQgYnJva2UgdGhlIGJ1aWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgIFJldmVydCBwcmV2aW91cyBjaGFuZ2UgdGhhdCBicm9rZSB0aGUgYnVpbGQuCgoyMDA3LTA0LTE3IDE0OjM2OjM1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgTUFOUEFUSCBmaXgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE1BTlBBVEggZml4CgoyMDA3LTA0LTE3IDEwOjQ2OjQ2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBEcm9wIGxpYnhtbDIgZGVwZW5kZW5jeSB3aGVuIGJ1aWxkaW5nIHdpdGgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgIERyb3AgbGlieG1sMiBkZXBlbmRlbmN5IHdoZW4gYnVpbGRpbmcgd2l0aAoJICAtLWVuYWJsZS1iaW5hcnktcmVnaXN0cnkgLS1kaXNhYmxlLWxvYWRzYXZlCgoyMDA3LTA0LTE2IDIxOjQxOjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdHJlYW1lci5kb2FwOgoJICBmaXggdGhlIHJlbGVhc2UgZGF0ZSBpbiB0aGUgZG9hcCBmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggdGhlIHJlbGVhc2UgZGF0ZSBpbiB0aGUgZG9hcCBmaWxlCgoyMDA3LTA0LTE2IDE5OjQ1OjMxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lio6IFJlbW92ZSB1bm5lY2Vzc2FyeSA8c3lzL21tYW4uaD4gaW5jbHVkZSB3aGljaCBicm9rZSB0aGUgd2luMzIgYnVpbGQgd2l0aCBNaW5nVzsgbW92ZSBpbmNsdWRlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV93cml0ZV9jYWNoZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3JlYWRfY2FjaGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5oOgoJICBSZW1vdmUgdW5uZWNlc3NhcnkgPHN5cy9tbWFuLmg+IGluY2x1ZGUgd2hpY2ggYnJva2UgdGhlIHdpbjMyIGJ1aWxkCgkgIHdpdGggTWluZ1c7IG1vdmUgaW5jbHVkZXMgZnJvbSBoZWFkZXIgZmlsZSB0byAuYyBmaWxlLCBldmVuIGlmIHRoZQoJICBoZWFkZXIgZmlsZSBpc24ndCBpbnN0YWxsZWQ7IHVzZSBnX3N0cmVycm9yKCkgd2hlcmUgVVRGLTggc3RyaW5ncwoJICBhcmUgZXhwZWN0ZWQsIHN1Y2ggYXMgaW4gR1NUX0RFQlVHIG1lc3NhZ2VzLgoKMjAwNy0wNC0xMyAxNToxNTo1MCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBSZW1vdmUgYm9ndXMgYWRkaXRpb24gZm9yIEFQSSBJIGRpZG4ndCBlbmQgdXAga2VlcGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgUmVtb3ZlIGJvZ3VzIGFkZGl0aW9uIGZvciBBUEkgSSBkaWRuJ3QgZW5kIHVwIGtlZXBpbmcuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIE1lbnRpb24gU2luY2U6IDAuMTAuMTMgaW4gdGhlIGRvY3VtZW50YXRpb24uCgkgIEFkZCB0aGUgQVBJIGtleXdvcmQgdG8gdGhlIHByZXZpb3VzIENoYW5nZUxvZyBlbnRyeS4KCjIwMDctMDQtMTMgMTQ6MTg6NDQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgQWxsb3cgYmFzZXNyYyBkZXJpdmVkIGNsYXNzZXMgdG8gZXhlY3V0ZSBzZWVrcyBpbiBvdGhlciBmb3JtYXRzIGJ5IHByb3ZpZGluZyBhIHByZXBhcmVfc2Vla19zZWdtZW50IHZtZXRob2QuIFN1Yi1jbGFzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zcmNfZGVmYXVsdF9wcmVwYXJlX3NlZWtfc2VnbWVudCksCgkgIChnc3RfYmFzZV9zcmNfcHJlcGFyZV9zZWVrX3NlZ21lbnQpLCAoZ3N0X2Jhc2Vfc3JjX3BlcmZvcm1fc2Vlayk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIEFsbG93IGJhc2VzcmMgZGVyaXZlZCBjbGFzc2VzIHRvIGV4ZWN1dGUgc2Vla3MgaW4gb3RoZXIgZm9ybWF0cwoJICBieSBwcm92aWRpbmcgYSBwcmVwYXJlX3NlZWtfc2VnbWVudCB2bWV0aG9kLiBTdWItY2xhc3NlcyBjYW4gY2hvb3NlCgkgIHRvIHByZXBhcmUgdGhlIEdzdFNlZ21lbnQgaW4gYW55IGZvcm1hdCB0aGF0IHRoZWlyIHBlcmZvcm1fc2VlayBtZXRob2QKCSAgd2lsbCBiZSBhYmxlIHRvIHVuZGVyc3RhbmQuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIHRoZQoJICBvbGQgYmVoYXZpb3VyIG9mIGF0dGVtcHRpbmcgdG8gY29udmVydCB0aGUgc2VlayBvZmZzZXRzIHRvIHRoZQoJICBjb25maWd1cmVkIG5hdGl2ZSBmb3JtYXQuCgoyMDA3LTA0LTEzIDExOjUzOjAwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IERvbid0IG91dHB1dCB0aGUgc2FtZSBkZWJ1ZyBzdGF0ZW1lbnQgdHdpY2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyk6CgkgIERvbid0IG91dHB1dCB0aGUgc2FtZSBkZWJ1ZyBzdGF0ZW1lbnQgdHdpY2UuCgkgICogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6IChnc3RfYWRhcHRlcl90cnlfdG9fbWVyZ2VfdXApLAoJICAoZ3N0X2FkYXB0ZXJfcGVlayksIChnc3RfYWRhcHRlcl90YWtlX2J1ZmZlcik6CgkgIE9wdGltaXNlIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgYnVmZmVycyBhdCB0aGUgaGVhZCBvZiB0aGUgcXVldWUgdGhhdAoJICBjYW4gYmUgam9pbmVkIHF1aWNrbHkgKGJlY2F1c2UgdGhleSdyZSBjb250aWd1b3VzIHN1Yi1idWZmZXJzKSBieQoJICBtZXJnaW5nIHRoZW0gdG9nZXRoZXIgcmF0aGVyIHRoYW4gY29weWluZyBkYXRhIG91dCBpbnRvIG5ldyBtZW1vcnkuCgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6CgkgIEZpeCBhIGxlYWsgaW4gYW4gZXJyb3IgcGF0aCBmb3IgcGFyc2VfbGF1bmNoLCBhbmQgYWRkIGEgY2hlY2sKCSAgZm9yIGl0IHRvIHRoZSB0ZXN0c3VpdGUuCgoyMDA3LTA0LTEzIDExOjIwOjQ4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBEb24ndCBkZWFkbG9jayB3aGVuIHJlbGVhc2luZyBhIHBhZCAtIGdzdF9wYWRfc2V0X2FjdGl2ZSBtYXkgdHJ5IGFuZCB0YWtlIHRoZSBtdWx0aS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGdzdF9tdWx0aV9xdWV1ZV9yZWxlYXNlX3BhZCk6CgkgIERvbid0IGRlYWRsb2NrIHdoZW4gcmVsZWFzaW5nIGEgcGFkIC0gZ3N0X3BhZF9zZXRfYWN0aXZlIG1heSB0cnkKCSAgYW5kIHRha2UgdGhlIG11bHRpcXVldWUgbG9jayB0b28uCgoyMDA3LTA0LTEyIDEyOjU5OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGVycm9yLio6IEFQSTogYWRkIEdTVF9DT1JFX0VSUk9SX0RJU0FCTEVEICgjMzkyODA0KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVycm9yLmM6IChfZ3N0X2NvcmVfZXJyb3JzX2luaXQpOgoJICAqIGdzdC9nc3RlcnJvci5oOgoJICBBUEk6IGFkZCBHU1RfQ09SRV9FUlJPUl9ESVNBQkxFRCAoIzM5MjgwNCkuCgoyMDA3LTA0LTEyIDEwOjMyOjM4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogZG9uJ3QgZ2V0IGVtcHR5IHBhdGhzIG9uIHRoZSBQQVRIIHZhcmlhYmxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIGRvbid0IGdldCBlbXB0eSBwYXRocyBvbiB0aGUgUEFUSCB2YXJpYWJsZXMKCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfaXNfYWN0aXZlLCBnc3RfcGFkX3NldF9ibG9ja2VkX2FzeW5jKToKCSAgRG9uJ3QgZm9ybWF0IGZvciB0aGUgdW5jb21tb24gdGVybWluYWwgd2lkdGggb2YgODQgY2hhcmFjdGVycy4KCjIwMDctMDQtMDkgMTE6NTk6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBiYWNrIHRvIGhlYWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gaGVhZAoKMjAwNy0wNC0wOSAwODoxNzoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIGRvbid0IGZvcm1hdCBmb3IgdGhlIHVuY29tbW9uIGVkaXRvciB3aWR0aCBvZiA4NCBjaGFyYWN0ZXJzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb24ndCBmb3JtYXQgZm9yIHRoZSB1bmNvbW1vbiBlZGl0b3Igd2lkdGggb2YgODQgY2hhcmFjdGVycwoKMjAwNy0wNC0wNiAxMTo0ODoxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwaXBlbGluZS5jOiBPbmx5IHRyeSB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcGlwZWxpbmUgY2xvY2sgd2hlbiB3ZSB3ZW50IGJhY2sgdG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChyZXNldF9zdHJlYW1fdGltZSksCgkgIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwgKGdzdF9waXBlbGluZV9zZXRfbmV3X3N0cmVhbV90aW1lKToKCSAgT25seSB0cnkgdG8gc2VsZWN0IGEgZGlmZmVyZW50IHBpcGVsaW5lIGNsb2NrIHdoZW4gd2Ugd2VudCBiYWNrIHRvCgkgIFBBVVNFRCBhbmQgbm90IHdoZW4gd2UgbWVyZWx5IGdvdCBmbHVzaGVkLgoKMjAwNy0wNC0wNSAxNjoxNzoyNCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC4xLmluOiBmcmFjdGlvbnMgYXJlIGJldHRlciBzdXBwb3J0ZWQgaW4gZ3N0cmVhbWVyIHRoYW4gcmFjdGlvbnMsIHNvIHN1Z2dlc3QgdXNpbmcgdGhvc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guMS5pbjoKCSAgZnJhY3Rpb25zIGFyZSBiZXR0ZXIgc3VwcG9ydGVkIGluIGdzdHJlYW1lciB0aGFuIHJhY3Rpb25zLCBzbwoJICBzdWdnZXN0IHVzaW5nIHRob3NlLgoKMjAwNy0wNC0wNSAxMzo0OTo0MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwby9ubC5wbzoKCSAgdXBkYXRlIGR1dGNoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgZHV0Y2gKCjIwMDctMDQtMDUgMTM6NDY6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcG8vOiBBZGRlZCBEYW5pc2ggdHJhbnNsYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBTdWJtaXR0ZWQgYnk6IE1vZ2VucyBKYWVnZXIgPG1vZ2Vuc0BqYWVnZXIudGY+CgkgICogcG8vTElOR1VBUzoKCSAgKiBwby9kYS5wbzoKCSAgQWRkZWQgRGFuaXNoIHRyYW5zbGF0aW9uLgoKMjAwNy0wNC0wNSAxMToxNjowOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRml4IGxlYWsgY2F1c2VkIHdoZW4gcmVmdXNpbmcgbmV3c2VnbWVudCBhZnRlciBFT1MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgKGdzdF9iYXNlX3NpbmtfcXVldWVfb2JqZWN0X3VubG9ja2VkKSwgKGdzdF9iYXNlX3NpbmtfZXZlbnQpOgoJICBGaXggbGVhayBjYXVzZWQgd2hlbiByZWZ1c2luZyBuZXdzZWdtZW50IGFmdGVyIEVPUy4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Zha2Vfc2lua19pbml0KSwgKGdzdF9mYWtlX3Npbmtfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mYWtlX3NpbmtfZ2V0X3Byb3BlcnR5KSwgKGdzdF9mYWtlX3NpbmtfcHJlcm9sbCksCgkgIChnc3RfZmFrZV9zaW5rX3JlbmRlciksIChnc3RfZmFrZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5oOgoJICBBZGQgbnVtLWJ1ZmZlcnMgcHJvcGVydHkgdG8gbWFrZSB0aGUgZWxlbWVudCBnZW5lcmF0ZSBFT1MgYWZ0ZXIgYQoJICBjb25maWd1cmFibGUgYW1vdW50IG9mIGJ1ZmZlcnMuCgkgIEFQSTogZmFrZXNpbms6Om51bS1idWZmZXJzIHByb3BlcnR5LgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChmYWtlc2lua19zdWl0ZSk6CgkgIEZpeCBHc3RCdXMgbGVhayBpbiB0ZXN0LgoJICBUZXN0IGZvciBmYWtlc2luayBudW0tYnVmZmVycy4KCjIwMDctMDQtMDUgMTA6MTA6MDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IERvbid0IGFjY2VwdCBhbnl0aGluZyBhZnRlciBhbiBFT1MsIHJldHVybiBVTkVYUEVDVEVEIGluc3RlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgKGdzdF9iYXNlX3NpbmtfcXVldWVfb2JqZWN0X3VubG9ja2VkKSwgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBEb24ndCBhY2NlcHQgYW55dGhpbmcgYWZ0ZXIgYW4gRU9TLCByZXR1cm4gVU5FWFBFQ1RFRCBpbnN0ZWFkLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChmYWtlc2lua19zdWl0ZSk6CgkgIFVuaXQgdGVzdCBmb3IgbmV3IEVPUyBiZWhhdmlvdXIuCgoyMDA3LTA0LTA1IDEwOjA4OjIxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogTWFrZSBwYWR0ZW1wbGF0ZXMgYWxzbyB3b3JrIHdoZW4gdGhleSBkb24ndCBjb250YWluICVzIG9yICVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKToKCSAgTWFrZSBwYWR0ZW1wbGF0ZXMgYWxzbyB3b3JrIHdoZW4gdGhleSBkb24ndCBjb250YWluICVzIG9yICVkLgoKMjAwNy0wNC0wNSAxMDowNjoyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEltcHJvdmUgX2FkanVzdF91bmxvY2tlZCgpIHNvIHRoYXQgaXQgb3ZlcmZsb3dzIGxlc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfYWRqdXN0X3VubG9ja2VkKSwKCSAgKGdzdF9jbG9ja191bmFkanVzdF91bmxvY2tlZCksIChnc3RfY2xvY2tfc2V0X2NhbGlicmF0aW9uKToKCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgSW1wcm92ZSBfYWRqdXN0X3VubG9ja2VkKCkgc28gdGhhdCBpdCBvdmVyZmxvd3MgbGVzcy4KCSAgQWRkIGdzdF9jbG9ja191bmFkanVzdF91bmxvY2tlZCB0byBjb252ZXJ0IGZyb20gZXh0ZXJuYWwgdGltZSB0bwoJICBpbnRlcm5hbCB0aW1lIGJhc2VkIG9uIGNhbGlicmF0aW9uLgoJICBBZGQgc29tZSBtb3JlIGRlYnVnLgoJICBBUEk6IEdzdENsb2NrOjpnc3RfY2xvY2tfdW5hZGp1c3RfdW5sb2NrZWQoKQoKMjAwNy0wNC0wMyAxMTowMjo0MSArMDAwMCAgVG9tbWkgTXnDtmjDpG5lbiA8ZXh0LXRvbW1pLm15b2hhbmVuQG5va2lhLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBEZWFjdGl2YXRlIHBhZHMgYW5kIGZyZWUgR3N0U2luZ2xlUXVldWUgd2l0aCBnc3Rfc2luZ2xlX3F1ZXVlX2ZyZWUoKSB3aGVuIHJlbGVhc2luZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFRvbW1pIE15w7Zow6RuZW4gPGV4dC10b21taSBkb3QgbXlvaGFuZW4gYXQgbm9raWEgZG90IGNvbT4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGdzdF9tdWx0aV9xdWV1ZV9yZWxlYXNlX3BhZCk6CgkgIERlYWN0aXZhdGUgcGFkcyBhbmQgZnJlZSBHc3RTaW5nbGVRdWV1ZSB3aXRoIGdzdF9zaW5nbGVfcXVldWVfZnJlZSgpCgkgIHdoZW4gcmVsZWFzaW5nIHNpbmsgcGFkLiBGaXhlcyAjNDI1NDAwLgoKMjAwNy0wNC0wMiAxNDo0ODoxMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9yYW5kb20vZW5zb25pYy9keW5saW5rLnR4dDogTW9yZSB3b3JrIG9uIHByb3Bvc2FsIGZvciBuZXcgY29yZSBhcGkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZHlubGluay50eHQ6CgkgIE1vcmUgd29yayBvbiBwcm9wb3NhbCBmb3IgbmV3IGNvcmUgYXBpLgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIEFQSTogR1NUX0JBU0VfVFJBTlNGT1JNX0xPQ0svVU5MT0NLIGFkZGVkCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIChvbl9vYmplY3RfY29udHJvbGxlZF9wcm9wZXJ0eV9jaGFuZ2VkKSwKCSAgKGdzdF9jb250cm9sbGVyX3N5bmNfdmFsdWVzKSwKCSAgKGdzdF9jb250cm9sbGVyX3NldF9pbnRlcnBvbGF0aW9uX21vZGUpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICBMZXNzIHZlcmJvc2UgbG9nZ2luZyBhZGQgZG9jcyBmb3IgdW5pbXBsZW1lbnRlZCBwYXJ0cyBhbmQgY29ycmVjdGx5CgkgIHJldHVybiB3aGVuIHVzaW5nIHVuYXZhaWxhYmxlIHBhcnRzLgoKMjAwNy0wMy0yOSAxNjowNDo0NSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0Y2xvY2suYzogTW92ZSBhbGwgdGhlIGRlYnVnIHRvIHRoZSBDTE9DSyBjYXRlZ29yeSwgYW5kIGFzc29jaWF0ZSBpdCB3aXRoIHRoZSBjbG9jayBvYmplY3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX3NldF9tYXN0ZXIpLCAoZG9fbGluZWFyX3JlZ3Jlc3Npb24pOgoJICBNb3ZlIGFsbCB0aGUgZGVidWcgdG8gdGhlIENMT0NLIGNhdGVnb3J5LCBhbmQgYXNzb2NpYXRlIGl0IHdpdGgKCSAgdGhlIGNsb2NrIG9iamVjdC4KCjIwMDctMDMtMjkgMTU6NTM6MDMgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6IE1ha2UgdGFrZV9idWZmZXIgYSBiaXQgcXVpY2tlciBieSByZW1vdmluZyByZWR1bmRhbnQgY2hlY2tzIGNhdXNlZCBieSBjYWxsaW5nIGdzdF9hZGFwdGVyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIpOgoJICBNYWtlIHRha2VfYnVmZmVyIGEgYml0IHF1aWNrZXIgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IGNoZWNrcwoJICBjYXVzZWQgYnkgY2FsbGluZyBnc3RfYWRhcHRlcl90YWtlLgoKMjAwNy0wMy0yOCAxODozODoxMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBEb24ndCBsZWFrIEdDb25kLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGdzdF9zaW5nbGVfcXVldWVfZnJlZSk6CgkgIERvbid0IGxlYWsgR0NvbmQuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9tdWx0aXF1ZXVlLmM6IChzZXR1cF9tdWx0aXF1ZXVlKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKG11bHRpcXVldWVfc3VpdGUpOgoJICBBZGQgc29tZSBkZWFkIHNpbXBsZSB1bml0IHRlc3RzIGZvciB0aGUgJ211bHRpcXVldWUnIGVsZW1lbnQKCSAgKHNvbWUgYml0cyBkb24ndCB3b3JrIHlldCBhbmQgYXJlIGRpc2FibGVkIGZvciBub3cpLgoKMjAwNy0wMy0yOCAxODoyNToxNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IE1ha2UgZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKCkgY3JlYXRlIHJlcXVlc3QgcGFkcyBvbmx5IGZvciByZXF1ZXN0IHBhZCB0ZW1wbGF0ZXMgYW5kIG5vdCBmb3IsIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKSwKCSAgKGdzdF9lbGVtZW50X2NsYXNzX2dldF9yZXF1ZXN0X3BhZF90ZW1wbGF0ZSk6CgkgIE1ha2UgZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkKCkgY3JlYXRlIHJlcXVlc3QgcGFkcyBvbmx5IGZvcgoJICByZXF1ZXN0IHBhZCB0ZW1wbGF0ZXMgYW5kIG5vdCBmb3IsIHNheSwgc29tZXRpbWVzIHBhZCB0ZW1wbGF0ZXMuCgoyMDA3LTAzLTI4IDEzOjQ0OjQxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6IEFkZCBleGFtcGxlIHRoYXQgbmVlZHMgbW9yZSB0aGlua2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQta2xhc3MudHh0OgoJICBBZGQgZXhhbXBsZSB0aGF0IG5lZWRzIG1vcmUgdGhpbmtpbmcuCgkgICogZG9jcy9kZXNpZ24vZHJhZnQtbWlzc2luZy1wbHVnaW5zLnR4dDoKCSAgTW9yZSB0aG91Z2h0cyBhYm91dCB3dHJhcHBlciBwbHVnaW5zLgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZW1iZWRkZWQudHh0OgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvcHJvZmlsaW5nLnR4dDoKCSAgTW9yZSBkZXNpZ24gd29yay4KCjIwMDctMDMtMjUgMTU6MzM6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogT25seSBwdXNoIHRoZSBzZWdtZW50IGV2ZW50cyBpbiB0aGUgUExBWUlORyBzdGF0ZSBmb3IgbGl2ZSBzb3VyY2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2xvb3ApOgoJICBPbmx5IHB1c2ggdGhlIHNlZ21lbnQgZXZlbnRzIGluIHRoZSBQTEFZSU5HIHN0YXRlIGZvciBsaXZlIHNvdXJjZXMuCgoyMDA3LTAzLTIzIDE3OjUyOjE5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RwaXBlbGluZS5jOiBNb2RpZnkgdGhlIGNsb2NrIGRpc3RyaWJ1dGlvbiBwYXRoIGluIFBBVVNFRC0+UExBWUlORyBzbyB0aGF0IHdlIG5ldmVyIGF0dGVtcHQgdG8gY2hvb3NlIGEgbmV3IGNsby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICBNb2RpZnkgdGhlIGNsb2NrIGRpc3RyaWJ1dGlvbiBwYXRoIGluIFBBVVNFRC0+UExBWUlORyBzbyB0aGF0IHdlCgkgIG5ldmVyIGF0dGVtcHQgdG8gY2hvb3NlIGEgbmV3IGNsb2NrIHVubGVzcyB3ZSdyZSBhY3R1YWxseSBsZWF2aW5nCgkgIHRoZSBQQVVTRUQgc3RhdGUgZm9yIHRoZSBmaXJzdCB0aW1lLiBUaGlzIHByZXZlbnRzIGNob29zaW5nIGEKCSAgZGlmZmVyZW50IGNsb2NrIHdoZW4gdGhlIHN0YXRlX2NoYW5nZSBnZXRzIGNhbGxlZCBmb3IgYSAybmQgdGltZSBkdWUKCSAgdG8gc29tZSBlbGVtZW50IGRvaW5nIGFuIGFzeW5jIHN0YXRlIGNoYW5nZS4KCjIwMDctMDMtMjIgMTg6Mjg6MDAgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGdzdC9nc3RwYWQuYzogUmV2ZXJ0IGxhc3QgY29tbWl0LiBUaGlzIG5lZWRzIHNvbWUgbW9yZSB0aG91Z2h0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfY2FwcyksIChnc3RfcGFkX2NvbmZpZ3VyZV9zaW5rKSwKCSAgKGdzdF9wYWRfY29uZmlndXJlX3NyYyksIChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9mdWxsKSwKCSAgKGdzdF9wYWRfY2hhaW5fdW5jaGVja2VkKSwgKGdzdF9wYWRfcHVzaCk6CgkgIFJldmVydCBsYXN0IGNvbW1pdC4gVGhpcyBuZWVkcyBzb21lIG1vcmUgdGhvdWdodHMuCgoyMDA3LTAzLTIyIDE3OjEyOjIzICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBnc3QvZ3N0cGFkLmM6IENoZWNrIGluIHNldF9jYXBzIGlmIHRoZSBjYXBzIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIHBhZCBhbmQgcmVtb3ZlIHR3byBmdW5jdGlvbnMgdGhhdCBhcmUgcmVkdW5kYW50IG4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfY2FwcyksIChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9mdWxsKSwKCSAgKGdzdF9wYWRfY2hhaW5fdW5jaGVja2VkKSwgKGdzdF9wYWRfcHVzaCk6CgkgIENoZWNrIGluIHNldF9jYXBzIGlmIHRoZSBjYXBzIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlIHBhZCBhbmQgcmVtb3ZlCgkgIHR3byBmdW5jdGlvbnMgdGhhdCBhcmUgcmVkdW5kYW50IG5vdy4gRml4ZXMgIzQyMTU0My4KCjIwMDctMDMtMjIgMTI6MzE6NTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzogVW5yZWYgc29tZSBtb3JlIHRvIG1ha2UgdmFsZ3JpbmQgaGFwcHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAobWl4ZWRfdGhyZWFkKSwgKG1peGVkX2FzeW5jX2NiKSwgKGdzdF9zeXN0ZW1jbG9ja19zdWl0ZSk6CgkgIFVucmVmIHNvbWUgbW9yZSB0byBtYWtlIHZhbGdyaW5kIGhhcHB5LgoKMjAwNy0wMy0yMiAxMTo1ODowOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiBGaXggYW5veWluZyByZWdyZXNzaW9uIHRoYXQgc3Vydml2ZWQgYSBmZXcgcmVsZWFzZXMuIFdoZW4gYWRkaW5nIGFuIGFzeW5jIGVudHJ5IHdoaWxlIGJsb2NraW5nIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzogKGdzdF9zeXN0ZW1fY2xvY2tfaWRfd2FpdF9qaXR0ZXJfdW5sb2NrZWQpLAoJICAoZ3N0X3N5c3RlbV9jbG9ja19pZF93YWl0X2ppdHRlciksCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX2lkX3dhaXRfYXN5bmMpLCAoZ3N0X3N5c3RlbV9jbG9ja19pZF91bnNjaGVkdWxlKToKCSAgRml4IGFub3lpbmcgcmVncmVzc2lvbiB0aGF0IHN1cnZpdmVkIGEgZmV3IHJlbGVhc2VzLiBXaGVuIGFkZGluZyBhbgoJICBhc3luYyBlbnRyeSB3aGlsZSBibG9ja2luZyBvbiBhIHN5bmMgZW50cnksIHRoZSBzeW5jIGVudHJ5IHdpbGwgdW5ibG9jawoJICBidXQgc3RpbGwgYmUgYnVzeSwgc28gaXQgc2hvdWxkIGNvbnRpbnVlIHRvIHdhaXQgaW5zdGVhZCBvZiByZXR1cm5pbmcKCSAgX0JVU1kgdG8gdGhlIGFwcC4KCSAgQWRkIHNvbWUgY29tbWVudHMgaGVyZSBhbmQgdGhlcmUuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChtaXhlZF90aHJlYWQpLAoJICAobWl4ZWRfYXN5bmNfY2IpLCAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3N5c3RlbWNsb2NrX3N1aXRlKToKCSAgQWRkIHRlc3RjYXNlIGZvciB0aGlzLgoKMjAwNy0wMy0yMiAxMToxOTozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBIYW5kbGUgZXJyb3JzIGZyb20gdGhlIGNsb2NrIHN5bmMgYmV0dGVyLCBvbmx5IFVOU0NIRURVTEVEIGluZGljYXRlcyBhCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSk6CgkgIEhhbmRsZSBlcnJvcnMgZnJvbSB0aGUgY2xvY2sgc3luYyBiZXR0ZXIsIG9ubHkgVU5TQ0hFRFVMRUQgaW5kaWNhdGVzIGEKCSAgV1JPTkdfU1RBVEUgYW5kIGNhbiBzaWxlbnRseSBwYXVzZSB0aGUgdGFzay4gQWxsIG90aGVyIGNhc2VzIHNob3VsZAoJICBlcnJvciBvdXQuCgoyMDA3LTAzLTIyIDA4OjIzOjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBGaXggcG9zc2libGUgZGVhZGxvY2sgaWYgcGFkIGV2ZW50ZnVuYyBpcyBub3Qgc3BlY2lmaWVkLiAgRml4ZXMgIzQyMTE3Ny4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiA8c3lyamFsYSBhdCBzY2kgZG90IGZpPgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWxsb2NfYnVmZmVyX2Z1bGwpLCAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgRml4IHBvc3NpYmxlIGRlYWRsb2NrIGlmIHBhZCBldmVudGZ1bmMgaXMgbm90IHNwZWNpZmllZC4gIEZpeGVzICM0MjExNzcuCgkgIEltcHJvdmUgZGVidWdnaW5nLgoKMjAwNy0wMy0yMSAxODoxMzo0MCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOiBGaXggc29tZSBlcnJvcnMgaW4gdGhlIHR5cGVmaW5kaW5nIGRvY3MgcG9pbnRlZCBvdXQgb24gaXJjLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC10eXBlcy54bWw6CgkgIEZpeCBzb21lIGVycm9ycyBpbiB0aGUgdHlwZWZpbmRpbmcgZG9jcyBwb2ludGVkIG91dCBvbiBpcmMuCgoyMDA3LTAzLTIxIDE3OjUwOjQ2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBDbGFyaWZ5IEZJWE1FIGNvbW1lbnQgaW4gdGhlIGZhY2Ugb2YgaGF2aW5nIGFkZGVkIHVubG9ja19zdG9wKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIENsYXJpZnkgRklYTUUgY29tbWVudCBpbiB0aGUgZmFjZSBvZiBoYXZpbmcgYWRkZWQgdW5sb2NrX3N0b3AoKQoKMjAwNy0wMy0yMSAxMTo1MjowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogUHJlcGFyZSBmb3IgcmVsZWFzZSB3aGVyZSB3ZSB3YXJuIGFnYWluc3QgcG9zc2libGUgYXBwIGJyZWFrYWdlIGluIHRoZSBjYXNlIG9mIGxpdmUgcGlwZWxpbmVzIGFsb25nIHdpdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2dldF90eXBlKSwgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpOgoJICBQcmVwYXJlIGZvciByZWxlYXNlIHdoZXJlIHdlIHdhcm4gYWdhaW5zdCBwb3NzaWJsZSBhcHAgYnJlYWthZ2UgaW4gdGhlCgkgIGNhc2Ugb2YgbGl2ZSBwaXBlbGluZXMgYWxvbmcgd2l0aCBhbiBlbnYgdmFyIHRvIGVuYWJsZS9kaXNhYmxlIGxpdmUKCSAgcHJlcm9sbCBtb2RlIChHU1RfQ09NUEFUPVtuby1dbGl2ZS1wcmVyb2xsKS4KCjIwMDctMDMtMjAgMTQ6MjU6MTUgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmMgKGdzdF9pZGVudGl0eV9jaGVja19pbXBlcmZlY3Rfb2Zmc2V0KTogU28gd2Ugc2hvdWxkIHVzZSBjb3JyZWN0IGNvbnN0YW50cyBmb3IgY2hlY2tpbmcuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jIChnc3RfaWRlbnRpdHlfY2hlY2tfaW1wZXJmZWN0X29mZnNldCk6CgkgIFNvIHdlIHNob3VsZCB1c2UgY29ycmVjdCBjb25zdGFudHMgZm9yIGNoZWNraW5nIGZvciBOb25lIG9mZnNldC4KCjIwMDctMDMtMjAgMTQ6MTc6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDogTWVudGlvbiB0aGUgZmFjdCB0aGF0IHRoZSBuZXdseSBzd2l0Y2hlZCBlbGVtZW50IHNob3VsZCBiZSBzZXQgdG8gYXQgbGVhc3QgUEFVU0VELgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWJsb2NrLnR4dDoKCSAgTWVudGlvbiB0aGUgZmFjdCB0aGF0IHRoZSBuZXdseSBzd2l0Y2hlZCBlbGVtZW50IHNob3VsZCBiZSBzZXQgdG8gYXQKCSAgbGVhc3QgUEFVU0VELgoKMjAwNy0wMy0yMCAxMDoyMzoyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3QuYzogRml4IGNvbXBpbGF0aW9uIHdpdGggcmVnaXN0cnkgZGlzYWJsZWQgYXMgc3BvdHRlZCBieSBTYXVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIEZpeCBjb21waWxhdGlvbiB3aXRoIHJlZ2lzdHJ5IGRpc2FibGVkIGFzIHNwb3R0ZWQgYnkgU2F1ci4KCjIwMDctMDMtMjAgMDk6NDY6MTEgKzAwMDAgIE9saXZpZXIgQ3JldGUgPHRlc3RlckB0ZXN0ZXIuY2E+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBMb29rIGF0IHRoZSBwZW5kaW5nIHN0YXRlIHRvbyB3aGVuIHN5bmNpbmcgdGhlIGVsZW1lbnQgc3RhdGUgdG8gdGhlIHBhcmVudC4gRml4ZXMgIzQyMDEzMy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBPbGl2aWVyIENyZXRlIDx0ZXN0ZXIgYXQgdGVzdGVyIGRvdCBjYT4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCk6CgkgIExvb2sgYXQgdGhlIHBlbmRpbmcgc3RhdGUgdG9vIHdoZW4gc3luY2luZyB0aGUgZWxlbWVudCBzdGF0ZSB0byB0aGUKCSAgcGFyZW50LiBGaXhlcyAjNDIwMTMzLgoKMjAwNy0wMy0xOSAxNTowMTo0MCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBsaWJzL2dzdC9iYXNlLzogQWRkIDo6dW5sb2NrX3N0b3AgdG8gYmFzZXNyYyBhbmQgYmFzZXNpbmsuIFRoaXMgYWxsb3dzIGFuIG9wcG9ydHVuaXR5IGZvciBzdWItY2xhc3NlcyB0byBjb3JyZWN0bHkgY2wuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19zZXRfZmx1c2hpbmcpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc3JjX3VubG9ja19zdG9wKSwKCSAgKGdzdF9iYXNlX3NyY19kZWFjdGl2YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgQWRkIDo6dW5sb2NrX3N0b3AgdG8gYmFzZXNyYyBhbmQgYmFzZXNpbmsuIFRoaXMgYWxsb3dzIGFuIG9wcG9ydHVuaXR5CgkgIGZvciBzdWItY2xhc3NlcyB0byBjb3JyZWN0bHkgY2xlYXIgYW55IHN0YXRlIHRoZXkgc2V0IHRyeWluZyB0bwoJICB1bmxvY2ssIHN1Y2ggYXMgY2xlYXJpbmcgb3V0IHVubG9jayBjb21tYW5kcyBmcm9tIGEgY29tbWFuZCBmZC4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiAoZ3N0X2ZkX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfZmRfc2lua19yZW5kZXIpLCAoZ3N0X2ZkX3NpbmtfdW5sb2NrKSwKCSAgKGdzdF9mZF9zaW5rX3VubG9ja19zdG9wKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19pbml0KSwgKGdzdF9mZF9zcmNfdW5sb2NrKSwgKGdzdF9mZF9zcmNfdW5sb2NrX3N0b3ApLAoJICAoZ3N0X2ZkX3NyY19jcmVhdGUpLCAoZ3N0X2ZkX3NyY19nZXRfc2l6ZSksIChnc3RfZmRfc3JjX2RvX3NlZWspOgoJICBJbXBsZW1lbnQgdW5sb2NrX3N0b3AgaW4gZmRzcmMgYW5kIGZkc2luay4KCSAgSW1wbGVtZW50IHNlZWtpbmcgaW4gZmRzcmMgd2hlbiBhIHNlZWthYmxlIGZkIGlzIHBhc3NlZCwgYXMgaW4KCSAgZ3N0LWxhdW5jaC0wLjEwIGZkc3JjICEgLi4uICEgeHZpbWFnZXNpbmsgPCAvcGF0aC90by9maWxlCgoyMDA3LTAzLTE5IDEyOjA3OjMyICswMDAwICBFdmFuIE5lbWVyc29uIDxldmFuQGNvZXVzLmRhc2guZ3JvdXAuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogRml4IHBhZC1hZGRlZCBhbmQgcGFkLXJlbW92ZWQgc2lnbmFsIHNpZ25hdHVyZXMgc28gdGhhdCB0aGUgcGFkIHR5cGUgaXMgc3RhdGVkIGFzIEdTVF9UWVBFX1BBRCBpbnN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogRXZhbiBOZW1lcnNvbiA8ZXZhbiBhdCBjb2V1cyBkYXNoIGdyb3VwIGRvdCBjb20+CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpOgoJICBGaXggcGFkLWFkZGVkIGFuZCBwYWQtcmVtb3ZlZCBzaWduYWwgc2lnbmF0dXJlcyBzbyB0aGF0IHRoZSBwYWQgdHlwZSBpcwoJICBzdGF0ZWQgYXMgR1NUX1RZUEVfUEFEIGluc3RlYWQgb2YgR19UWVBFX09CSkVDVC4gRml4ZXMgIzQxOTg1MS4KCjIwMDctMDMtMTkgMTA6NDc6NTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgbmV3IGVsZW1lbnQgZmllbGQgYW5kIG1ldGhvZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgQWRkIG5ldyBlbGVtZW50IGZpZWxkIGFuZCBtZXRob2QuCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jbGFzc19pbml0KSwgKGdzdF9iaW5faW5pdCksCgkgIChiaW5fcmVtb3ZlX21lc3NhZ2VzKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksCgkgIChnc3RfYmluX3JlY2FsY19zdGF0ZSksIChnc3RfYmluX2dldF9zdGF0ZV9mdW5jKSwKCSAgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpLCAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyksCgkgIChnc3RfYmluX2NvbnRpbnVlX2Z1bmMpLCAoYmluX2J1c19oYW5kbGVyKSwKCSAgKGJpbl9wdXNoX3N0YXRlX2NvbnRpbnVlKSwgKGJpbl9oYW5kbGVfYXN5bmNfc3RhcnQpLAoJICAoYmluX2hhbmRsZV9hc3luY19kb25lKSwgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIE1ha2UgYXN5bmMgc3RhdGUgY2hhbmdlcyBhIGJpdCBzbWFydGVyIGJ5IHVzaW5nIG5ldyBBU1lOQ19TVEFSVCBhbmQKCSAgQVNZTkNfRE9ORSBtZXNzYWdlcy4gVGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgcnVuIHRoZSBzdGF0ZQoJICByZWNhbGN1bGF0aW9uIHRocmVhZC4KCSAgRG9uJ3QgY2hhbmdlIHN0YXRlIG9mIGVsZW1lbnQgd2l0aCBhIHBlbmRpbmcgQVNZTkNfU1RBUlQgbWVzc2FnZS4KCSAgRGVwcmVjYXRlIFNUQVRFX0RJUlRZIG1lc3NhZ2VzLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9pbml0KSwgKGdzdF9lbGVtZW50X3NlbmRfZXZlbnQpLAoJICAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLCAoZ3N0X2VsZW1lbnRfY29udGludWVfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfbG9zdF9zdGF0ZSksIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyksCgkgIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIEtlZXAgdGhlIHN0YXRlIHRoYXQgd2FzIGxhc3Qgc2V0IGJ5IHRoZSBhcHAgaW4gYSBuZXcgZWxlbWVudCBmaWVsZC4KCSAgRG9uJ3QgYWxsb3cgc3RhdGUgY2hhbmdlcyB3aGVuIGhhbmRsaW5nIGFuIGVsZW1lbnQgZXZlbnQuCgkgIFBvc3QgQVNZTkNfU1RBUlQgYW5kIEFTWU5DX0RPTkUgbWVzc2FnZXMuCgkgIENoYW5nZSBsb3N0X3N0YXRlIHNvIHRoYXQgd2UgZ28gdG8gUEFVU0VEIGFuZCB3YWl0IGZvciB0aGUgcGFyZW50IHRvIHNldAoJICB1cyB0byBQTEFZSU5HIGFnYWluIChzbyBsYXRlbmN5IGNhbGN1bGF0aW9uIGNhbiBiZSBwZXJmb3JtZWQpCgkgIEV4cG9ydCBnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUoKSBtZXRob2Qgc28gdGhhdCBzdWJjbGFzc2VzIGNhbiB1c2UgaXQuCgkgIEFQSTogZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKCkKCSAgQVBJOiBHU1RfU1RBVEVfVEFSR0VUCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfY2xhc3NfaW5pdCksCgkgIChyZXNldF9zdHJlYW1fdGltZSksIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9waXBlbGluZV9oYW5kbGVfbWVzc2FnZSksIChnc3RfcGlwZWxpbmVfc2V0X25ld19zdHJlYW1fdGltZSk6CgkgIFVzaW5nIHRoZSBuZXcgQVNZTkNfU1RBUlQgbWVzc2FnZSB3ZSBjYW4gcmVzZXQgdGhlIGJhc2VfdGltZSB3aGVuCgkgIG5lZWRlZC4gVGhpcyBjYW4gdGhlbiBiZSB1c2VkIHRvIGltcGxlbWVudCBiYXNlX3RpbWUgcmVkaXN0cmlidXRpb24gaW4KCSAgZmx1c2hpbmcgc2Vla3Mgc28gdGhhdCB3ZSBjYW4gcmVtb3ZlIHRoZSBleHBsaWNpdCBzZWVrIGhhbmRsaW5nLgoJICBQZXJmb3JtIGxhdGVuY3kgcXVlcnkgYW5kIGNvbmZpZ3VyYXRpb24gd2hlbiBnb2luZyB0byBQTEFZSU5HLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBQb3N0IG5ldyBBU1lOQ19TVEFSVC9BU1lOQ19ET05FIG1lc3NhZ2VzLgoJICAqIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRml4IHRlc3QgYmVjYXVzZSB0aGUgYmluIHdpbGwgbm90IHNldCB0aGUgYXN5bmMgZWxlbWVudCB0byBQTEFZSU5HIHJpZ2h0CgkgIGF3YXkuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiAocG9wX2FzeW5jX2RvbmUpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICBNYWtlIHRoZSBtZXNzYWdlIGNoZWNrIGEgbGl0dGxlIHN0cm9uZ2VyLgoJICBIYW5kbGUgQVNZTkMgbWVzc2FnZXMuCgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL2NsZWFudXAuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBFeHBlY3QgQVNZTkNfRE9ORSBtZXNzYWdlcy4KCjIwMDctMDMtMTkgMDk6NTU6MDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgQVNZTkNfU1RBUlQgYW5kIEFTWU5DX0RPTkUgbWVzc2FnZXMgdG8gcHJlcGFyZSBmb3IgbGF0ZW5jeSBzdXBwb3J0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfYXN5bmNfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X2FzeW5jX2RvbmUpLCAoZ3N0X21lc3NhZ2VfcGFyc2VfaW5mbyksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9hc3luY19zdGFydCk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgQWRkIEFTWU5DX1NUQVJUIGFuZCBBU1lOQ19ET05FIG1lc3NhZ2VzIHRvIHByZXBhcmUgZm9yIGxhdGVuY3kKCSAgc3VwcG9ydC4KCjIwMDctMDMtMTUgMjI6MzM6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9kZXNpZ24vcGFydC1zeW5jaHJvbmlzYXRpb24udHh0OgoJICB0eXBvcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHlwb3MKCjIwMDctMDMtMTUgMTI6Mzc6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBOb3cgdGhhdCB3ZSBkb24ndCBjaGVjayBmb3IgdGhlICdDb2RlYycga2V5d29yZCBhbnkgbG9uZ2VyIGluIHRoZSBrbGFzcywgd2Ugc2hvdWxkbid0IHNwZXcgYSB3YXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSAgKHByaW50X3BsdWdpbl9hdXRvbWF0aWNfaW5zdGFsbF9pbmZvX2NvZGVjcyk6CgkgIE5vdyB0aGF0IHdlIGRvbid0IGNoZWNrIGZvciB0aGUgJ0NvZGVjJyBrZXl3b3JkIGFueSBsb25nZXIgaW4gdGhlCgkgIGtsYXNzLCB3ZSBzaG91bGRuJ3Qgc3BldyBhIHdhcm5pbmcgaWYgdGhlIGtsYXNzIGlzbid0IGEgZGVjb2RlciBvcgoJICBlbmNvZGVyIChzaW5jZSBpdCBtaWdodCBiZSBhIFNvdXJjZS9OZXR3b3JrLCBmb3IgZXhhbXBsZSkuCgoyMDA3LTAzLTE0IDE3OjI0OjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogRG9uJ3QgcmVxdWlyZSBkZWNvZGVyL2RlbXV4ZXIvZGVwYXlsb2FkZXIgZWxlbWVudHMgb3IgZW5jb2Rlci9tdXhlci9wYXlsYWRlciBlbGVtZW50cyB0byBoYXZlICdDLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIChwcmludF9wbHVnaW5fYXV0b21hdGljX2luc3RhbGxfaW5mb19jb2RlY3MpOgoJICBEb24ndCByZXF1aXJlIGRlY29kZXIvZGVtdXhlci9kZXBheWxvYWRlciBlbGVtZW50cyBvcgoJICBlbmNvZGVyL211eGVyL3BheWxhZGVyIGVsZW1lbnRzIHRvIGhhdmUgJ0NvZGVjJyBhcyBwYXJ0IG9mIHRoZWlyCgkgIGZhY3RvcnkgY2xhc3Mgc3RyaW5nIHdoZW4gaW50cm9zcGVjdGluZyBhIHBsdWdpbidzIGNhcGFiaWxpdGllcy4KCSAgZHJhZnQta2xhc3MudHh0IG1lbnRpb25zIHRoYXQgaXQgbWlnaHQgYmUgcmVtb3ZlZCBpbiBmdXR1cmUsIGFuZAoJICBmbHVtcDNkZWMgZG9lc24ndCBoYXZlIGl0IGFzIHBhcnQgb2YgaXRzIGNsYXNzIHN0cmluZywgc28gY2hhbmNlcwoJICBhcmUgb3RoZXJzIG1pZ2h0IGFsc28gbm90IGhhdmUgaXQuCgoyMDA3LTAzLTE0IDE1OjQyOjAxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL2kxOG46CgkgIHVwZGF0ZSBpMThuIGRvYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGkxOG4gZG9jCgoyMDA3LTAzLTE0IDE1OjE3OjA5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgcmVmb3JtYXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlZm9ybWF0CgoyMDA3LTAzLTE0IDE1OjE1OjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHBvLzogVXBkYXRlIHRyYW5zbGF0aW9ucyBmcm9tIHRyYW5zbGF0aW9uIHByb2plY3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcG8vYWYucG86CgkgICogcG8vYXoucG86CgkgICogcG8vYmcucG86CgkgICogcG8vY2EucG86CgkgICogcG8vY3MucG86CgkgICogcG8vZGUucG86CgkgICogcG8vZW5fR0IucG86CgkgICogcG8vZnIucG86CgkgICogcG8vaXQucG86CgkgICogcG8vbmIucG86CgkgICogcG8vbmwucG86CgkgICogcG8vcnUucG86CgkgICogcG8vc3EucG86CgkgICogcG8vc3IucG86CgkgICogcG8vc3YucG86CgkgICogcG8vdHIucG86CgkgICogcG8vdWsucG86CgkgICogcG8vdmkucG86CgkgICogcG8vemhfQ04ucG86CgkgICogcG8vemhfVFcucG86CgkgIFVwZGF0ZSB0cmFuc2xhdGlvbnMgZnJvbSB0cmFuc2xhdGlvbiBwcm9qZWN0CgoyMDA3LTAzLTE0IDEzOjQwOjI4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0Y2hpbGRwcm94eS5jOiBJbnZlcnQgcHJlY29uZGl0aW9uIGNoZWNrIHRvIGJlIGFsaWtlIHRoZSBvbmVzIGluIHRoZSBtaW1pY2VkIGdvYmplY3QgYXBpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOiAoZ3N0X2NoaWxkX3Byb3h5X2dldF9wcm9wZXJ0eSksCgkgIChnc3RfY2hpbGRfcHJveHlfc2V0X3Byb3BlcnR5KToKCSAgSW52ZXJ0IHByZWNvbmRpdGlvbiBjaGVjayB0byBiZSBhbGlrZSB0aGUgb25lcyBpbiB0aGUgbWltaWNlZCBnb2JqZWN0CgkgIGFwaS4KCjIwMDctMDMtMTQgMTE6MjE6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBmaXggbWlzbGVhZGluZyBsb2cgc3RhdGVtZW50CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggbWlzbGVhZGluZyBsb2cgc3RhdGVtZW50CgoyMDA3LTAzLTEzIDE0OjUzOjIxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzLzogRG8gc29tZSBBcmNoaXRlY3Qgd29yay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtdGFncmVhZGluZy50eHQ6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9hdWRpb2Jhc2VjbGFzc2VzLnR4dDoKCSAgRG8gc29tZSBBcmNoaXRlY3Qgd29yay4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X3NldF9uYW1lKToKCSAgQWRkIGEgV0FSTklORy4KCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIEFkZCBkb2NzIHRoYXQgcG9pbnQgZnJvbSBnc3RfcGFkX2dldF9yYW5nZSB0byBnc3RfcGFkX3B1bGxfcmFuZ2UKCjIwMDctMDMtMTIgMTU6Mjc6MDUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IERlZmVyIHN0YXJ0aW5nIHRoZSBhc3luYyBzeXN0ZW0gY2xvY2sgdGhyZWFkIHVudGlsIHRoZSBmaXJzdCBhc3luYyB3YWl0IGlzIHNjaGVkdWxlZC4gRml4ZXMgIzQxLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pbml0KSwKCSAgKGdzdF9zeXN0ZW1fY2xvY2tfc3RhcnRfYXN5bmMpLCAoZ3N0X3N5c3RlbV9jbG9ja19pZF93YWl0X2FzeW5jKToKCSAgRGVmZXIgc3RhcnRpbmcgdGhlIGFzeW5jIHN5c3RlbSBjbG9jayB0aHJlYWQgdW50aWwgdGhlIGZpcnN0IGFzeW5jCgkgIHdhaXQgaXMgc2NoZWR1bGVkLiBGaXhlcyAjNDE0OTg2LgoKMjAwNy0wMy0xMiAxNDoyMzoxNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBGaXggc21hbGwgbGVhayAoZnJlZSBHc3RTaW5nbGVRdWV1ZSBzdHJ1Y3R1cmUgdG9vLCBub3Qgb25seSBjb250ZW50cykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiAoZ3N0X211bHRpX3F1ZXVlX2ZpbmFsaXplKSwKCSAgKGdzdF9zaW5nbGVfcXVldWVfZnJlZSk6CgkgIEZpeCBzbWFsbCBsZWFrIChmcmVlIEdzdFNpbmdsZVF1ZXVlIHN0cnVjdHVyZSB0b28sIG5vdCBvbmx5IGNvbnRlbnRzKS4KCjIwMDctMDMtMTAgMTU6NDQ6NDQgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogVXNlIEdTVF9TVFJfTlVMTCB0byBwcmV2ZW50IE5VTEwgcG9pbnRlciB0byBiZSBwYXNzZWQgdG8gR1NUX0NBVF9ERUJVRy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOihnc3RfYmluX2FkZCk6CgkgIFVzZSBHU1RfU1RSX05VTEwgdG8gcHJldmVudCBOVUxMIHBvaW50ZXIgdG8gYmUgcGFzc2VkIHRvIEdTVF9DQVRfREVCVUcuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDctMDMtMDkgMTY6Mzk6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OiBGaXggR3N0VGVlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy1zZWN0aW9ucy50eHQ6CgkgIEZpeCBHc3RUZWUgZG9jcy4KCjIwMDctMDMtMDkgMTY6MzA6MzggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgbWV0YWRhdGEgY29weSBmdW5jdGlvbnMuIEZpeGVzICMzOTMwOTkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X2J1ZmZlcl9jb3B5X21ldGFkYXRhKSwgKF9nc3RfYnVmZmVyX2NvcHkpOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgQWRkIG1ldGFkYXRhIGNvcHkgZnVuY3Rpb25zLiBGaXhlcyAjMzkzMDk5LgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2J1ZmZlcl9zdGFtcCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmZmVyKToKCSAgVXNlIG5ldyBtZXRhZGF0YSBjb3B5IGZ1bmN0aW9ucy4KCjIwMDctMDMtMDkgMTQ6MjA6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS4qOiBTZXBhcmF0ZSBvdXQgY2hlY2staW1wZXJmZWN0LXRpbWVzdGFtcCBhbmQgY2hlY2staW1wZXJmZWN0LW9mZnNldC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpLAoJICAoZ3N0X2lkZW50aXR5X2luaXQpLCAoZ3N0X2lkZW50aXR5X2NoZWNrX3BlcmZlY3QpLAoJICAoZ3N0X2lkZW50aXR5X2NoZWNrX2ltcGVyZmVjdF90aW1lc3RhbXApLAoJICAoZ3N0X2lkZW50aXR5X2NoZWNrX2ltcGVyZmVjdF9vZmZzZXQpLCAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCksCgkgIChnc3RfaWRlbnRpdHlfc2V0X3Byb3BlcnR5KSwgKGdzdF9pZGVudGl0eV9nZXRfcHJvcGVydHkpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgU2VwYXJhdGUgb3V0IGNoZWNrLWltcGVyZmVjdC10aW1lc3RhbXAgYW5kIGNoZWNrLWltcGVyZmVjdC1vZmZzZXQuCgkgIFB1dCBiYWNrIGNoZWNrLXBlcmZlY3QgYXMgaXQgd2FzIHRvIGtlZXAgY29tcGF0aWJpbGl0eS4KCjIwMDctMDMtMDkgMTI6MzQ6NDYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogVGhlcmUncyBubyBuZWVkIHRvIHdhcm4gaWYgVk9JRF9QRU5ESU5HIGlzIG5vdCBOT05FIGhlcmUsIGFzIGxvbmcgYXMgdGhlIHN0YXRlIGlzIE5VTEwgaXQncyBvaywgYW5kLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9kaXNwb3NlKToKCSAgVGhlcmUncyBubyBuZWVkIHRvIHdhcm4gaWYgVk9JRF9QRU5ESU5HIGlzIG5vdCBOT05FIGhlcmUsIGFzCgkgIGxvbmcgYXMgdGhlIHN0YXRlIGlzIE5VTEwgaXQncyBvaywgYW5kIHRoYXQncyBjaGVja2VkIGltbWVkaWF0ZWx5CgkgIGFib3ZlLgoKMjAwNy0wMy0wOCAxNzo1ODo1NyArMDAwMCAgWmFoZWVyIEFiYmFzIE1lcmFsaSA8emFoZWVyYWJiYXNAbWVyYWxpLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogRml4IGNoZWNrIGZvciBwZXJmZWN0IHN0cmVhbSB0byBpZ25vcmUgYnVmZmVycyB3aXRoIC0xIG9mZnNldHMvb2Zmc2V0IGVuZHMgd2hlbiBjaGVjay4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMy0wOCAgWmFoZWVyIEFiYmFzIE1lcmFsaSAgPHphaGVlcmFiYmFzIGF0IG1lcmFsaSBkb3Qgb3JnPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9jaGVja19wZXJmZWN0KToKCSAgRml4IGNoZWNrIGZvciBwZXJmZWN0IHN0cmVhbSB0byBpZ25vcmUgYnVmZmVycyB3aXRoIC0xCgkgIG9mZnNldHMvb2Zmc2V0IGVuZHMgd2hlbiBjaGVja2luZyBkYXRhIGNvbnRpZ3VpdHkuCgoyMDA3LTAzLTA4IDE2OjI2OjQ0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBQcmludCBJTkZPIG1lc3NhZ2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgUHJpbnQgSU5GTyBtZXNzYWdlcy4KCjIwMDctMDMtMDggMTE6NDA6MTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uKjogQWRkIHN1cHBvcnQgZm9yIGRyb3BwaW5nIGJ1ZmZlcnMgd2l0aCBjdXN0b20gR3N0Rmxvd1JldHVybi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudGZ1bmMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYWluKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9hY3RpdmF0ZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIEFkZCBzdXBwb3J0IGZvciBkcm9wcGluZyBidWZmZXJzIHdpdGggY3VzdG9tIEdzdEZsb3dSZXR1cm4uCgkgIFNldCBESVNDT05UIGZsYWdzIG9uIG91dGdvaW5nIGJ1ZmZlcnMgYmFzZWQgb24gUW9TLCBpbmNvbW1pbmcgRElTQ09OVAoJICBidWZmZXJzIG9yIGRyb3BwZWQgYnVmZmVycy4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBkb2NzIGZvciBuZXcgY3VzdG9tIHJldHVybiBjb2RlLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV90cmFuc2Zvcm1faXApOgoJICBVc2UgZHJvcCBzdXBwb3J0IGluIGJhc2UgY2xhc3MgdG8gaW1wbGVtZW50IGRyb3AtcHJvYmFiaWxpdHkuCgoyMDA3LTAzLTA3IDE3OjI2OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogUmVtb3ZlIG5ld2xpbmVzIGF0IGVuZCBvZiBkZWJ1ZyBsb2cgc3RyaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAobG9hZF9wbHVnaW5fZnVuYyk6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiAoZ3N0X3BsdWdpbl9sb2FkX2J5X25hbWUpLCAoZ3N0X3BsdWdpbl9sb2FkKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgICogZ3N0L2dzdHRyYWNlLmM6IChnc3RfdHJhY2VfbmV3KSwgKGdzdF9hbGxvY190cmFjZV9zZXRfZmxhZ3NfYWxsKToKCSAgUmVtb3ZlIG5ld2xpbmVzIGF0IGVuZCBvZiBkZWJ1ZyBsb2cgc3RyaW5ncy4KCjIwMDctMDMtMDcgMTc6MTQ6NTMgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IE9ubHkgcG9zdCBidXMgbWVzc2FnZSBhdCBtYXgsIG9uY2UgcGVyIGJ1ZmZlciByZWNlaXZlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDMtMDcgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfY2hlY2tfcGVyZmVjdCk6CgkgIE9ubHkgcG9zdCBidXMgbWVzc2FnZSBhdCBtYXgsIG9uY2UgcGVyIGJ1ZmZlciByZWNlaXZlZC4KCjIwMDctMDMtMDcgMTc6MTM6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IEFkZCBkb2MgYWJvdXQgc3luY2hyb25pc2F0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3luY2hyb25pc2F0aW9uLnR4dDoKCSAgQWRkIGRvYyBhYm91dCBzeW5jaHJvbmlzYXRpb24KCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtY2xvY2tzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RidXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0cGlwZWxpbmUudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbGl2ZS1zb3VyY2UudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbWVzc2FnZXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3RyZWFtcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC10cmlja21vZGVzLnR4dDoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwNy0wMy0wNyAxNzowOTo1NyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3RyZWFtZXIuZG9hcDogVXBkYXRlIHRoZSBkb2FwIGZpbGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdHJlYW1lci5kb2FwOgoJICBVcGRhdGUgdGhlIGRvYXAgZmlsZS4KCjIwMDctMDMtMDcgMTc6MDI6NTEgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IFJlbmFtZSBub24tcGVyZmVjdCB0byBpbXBlcmZlY3QgZm9yIE1pa2UgYW5kIGZvciB0aGUgc2FuY3RpdHkgb2YgdGhlIGxhbmd1YWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMy0wNyAgWmFoZWVyIEFiYmFzIE1lcmFsaSAgPHphaGVlcmFiYmFzIGF0IG1lcmFsaSBkb3Qgb3JnPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9jaGVja19wZXJmZWN0KToKCSAgUmVuYW1lIG5vbi1wZXJmZWN0IHRvIGltcGVyZmVjdCBmb3IgTWlrZSBhbmQgZm9yIHRoZSBzYW5jdGl0eSBvZgoJICB0aGUgbGFuZ3VhZ2UuCgkgIEFsc28gbWFrZSBzdXJlIGJ1cyBtZXNzYWdlIGdldHMgZW1pdHRlZCBmb3IgZGF0YS1pbmNvbnRpZ3VpdGllcy4KCjIwMDctMDMtMDcgMTY6NTg6NDIgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5Lio6IEVtaXQgYnVzIG1lc3NhZ2UgaWYgY2hlY2stcGVyZmVjdCBpcyB0cnVlIGFuZCB3ZSBlbmNvdW50ZXIgYSBub24tcGVyZmVjdCBzdHJlYW0gYmV0d2UuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDMtMDcgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfY2hlY2tfcGVyZmVjdCksCgkgIChnc3RfaWRlbnRpdHlfc3RhcnQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgRW1pdCBidXMgbWVzc2FnZSBpZiBjaGVjay1wZXJmZWN0IGlzIHRydWUgYW5kIHdlIGVuY291bnRlciBhCgkgIG5vbi1wZXJmZWN0IHN0cmVhbSBiZXR3ZWVuIDIgY29uc2VjdXRpdmUgYnVmZmVycy4KCSAgRml4ZXMgIzQxNTM5NC4KCjIwMDctMDMtMDcgMTY6NTU6MDIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBCYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJhY2sgdG8gQ1ZTCgo9PT0gcmVsZWFzZSAwLjEwLjEyID09PQoKMjAwNy0wMy0wNyAxNjo0NDowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBSZWxlYXNlIDAuMTAuMTIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlbGVhc2UgMC4xMC4xMgoKMjAwNy0wMy0wNyAxNjozMTozMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDctMDMtMDcgMTI6NTE6MjAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogY29tbW9uOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDctMDMtMDEgMTg6NDY6MzYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBWZXJzaW9uIDAuMTAuMTEuMiAoMC4xMC4xMiBwcmUtcmVsZWFzZSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBWZXJzaW9uIDAuMTAuMTEuMiAoMC4xMC4xMiBwcmUtcmVsZWFzZSkKCSAgQnVtcCBsaWJ0b29sIHZlcnNpb25pbmcuCgoyMDA3LTAzLTAxIDE0OjQ5OjQxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogTG9nIGZsb3ctbmFtZXMgYW5kIG5vdCBudW1iZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19sb29wKToKCSAgTG9nIGZsb3ctbmFtZXMgYW5kIG5vdCBudW1iZXJzLgoKMjAwNy0wMi0yOCAxOToyNTo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb25maWd1cmUuYWM6IENvbnZlcnQgdG8gbmV3IEFHX0dTVCBzdHlsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBDb252ZXJ0IHRvIG5ldyBBR19HU1Qgc3R5bGUuCgoyMDA3LTAyLTI4IDE4OjUxOjQ3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBEb24ndCB1bnJlZiBxdWVyeSB0d2ljZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19xdWVyeV9sYXRlbmN5KToKCSAgRG9uJ3QgdW5yZWYgcXVlcnkgdHdpY2UuCgoyMDA3LTAyLTI4IDE2OjU3OjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHZhbHVlLmM6IEltcGxlbWVudCBHc3RPYmplY3QgLT4gc3RyaW5nIHRyYW5zZm9ybSBzbyB3ZSBwcmludCBvYmplY3QgbmFtZXMgd2hlbiBzZXJpYWxpemluZyBHVmFsdWVzIGNvbnRhaW5pbmcgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX3RyYW5zZm9ybV9vYmplY3Rfc3RyaW5nKSwKCSAgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgIEltcGxlbWVudCBHc3RPYmplY3QgLT4gc3RyaW5nIHRyYW5zZm9ybSBzbyB3ZSBwcmludCBvYmplY3QgbmFtZXMKCSAgd2hlbiBzZXJpYWxpemluZyBHVmFsdWVzIGNvbnRhaW5pbmcgR3N0T2JqZWN0cy4KCjIwMDctMDItMjggMTY6NTU6NTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN0dWZmIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZCBuZXcgc3R1ZmYgdG8gZG9jcy4KCjIwMDctMDItMjggMTY6NDY6MDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEltcHJvdmUgbGF0ZW5jeSBxdWVyeSBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3F1ZXJ5X2xhdGVuY3kpLAoJICAoZ3N0X2Jhc2Vfc2lua19xdWV1ZV9vYmplY3RfdW5sb2NrZWQpLCAoZ3N0X2Jhc2Vfc2lua19zZW5kX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgSW1wcm92ZSBsYXRlbmN5IHF1ZXJ5IGNvZGUuCgkgIERvbid0IGxlYWsgbGF0ZW5jeSBldmVudHMuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBJbXByb3ZlIGRlYnVnZ2luZy4KCjIwMDctMDItMjggMTY6NDM6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC4qOiBJbXByb3ZlIGRvY3MgYSBsaXR0bGUuIEFkZGVkIFNpbmNlOiBmb3IgbmV3IG1hY3JvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsKSwKCSAgKGdzdF9lbGVtZW50X2dldF9zdGF0ZV9mdW5jKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBJbXByb3ZlIGRvY3MgYSBsaXR0bGUuIEFkZGVkIFNpbmNlOiBmb3IgbmV3IG1hY3JvLgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3Rfc2luayk6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9waXBlbGluZV9zZXRfbmV3X3N0cmVhbV90aW1lKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcgYW5kIGRvY3MuCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9zdGF0ZV9jaGFuZ2VfcmV0dXJuX2dldF9uYW1lKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcuCgoyMDA3LTAyLTI4IDE2OjQwOjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogSGFuZGxlIElORk8gbWVzc2FnZXMgZnJvbSB0aGUgR1NUX0VMRU1FTlRfSU5GTyBtYWNybyBhcyB3ZWxsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsKSwKCSAgKGdzdF9lbGVtZW50X3NldF9sb2NrZWRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKToKCSAgSGFuZGxlIElORk8gbWVzc2FnZXMgZnJvbSB0aGUgR1NUX0VMRU1FTlRfSU5GTyBtYWNybyBhcyB3ZWxsLgoJICBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgkgIFNtYWxsIGNvZGUgY2xlYW51cHMuCgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX25ld19pbmZvKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX2luZm8pOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIEFQSTogZ3N0X21lc3NhZ2VfbmV3X2luZm8oKQoJICBBUEk6IGdzdF9tZXNzYWdlX3BhcnNlX2luZm8oKQoJICBBZGQgSU5GTyBtZXNzYWdlIGNyZWF0ZSBhbmQgcGFyc2UgY29kZS4KCjIwMDctMDItMjggMTY6MzU6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEFsc28gcmVwb3J0IHRoZSBsaXZlIHBhcmFtZXRlciBvZiBhIGxhdGVuY3kgcXVlcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGJpbl9xdWVyeV9taW5fbWF4X2luaXQpLCAoYmluX3F1ZXJ5X2xhdGVuY3lfZm9sZCksCgkgIChiaW5fcXVlcnlfbGF0ZW5jeV9kb25lKToKCSAgQWxzbyByZXBvcnQgdGhlIGxpdmUgcGFyYW1ldGVyIG9mIGEgbGF0ZW5jeSBxdWVyeS4KCjIwMDctMDItMjggMTI6NTc6NDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzoKCSAgcGx1ZyB0ZXN0IGxlYWsKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHBsdWcgdGVzdCBsZWFrCgoyMDA3LTAyLTI4IDEyOjQzOjU3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBhY3R1YWxseSB1c2UgdGhlIGVudiB2YXIgZm9yIHRlc3RzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhY3R1YWxseSB1c2UgdGhlIGVudiB2YXIgZm9yIHRlc3RzCgoyMDA3LTAyLTI4IDEyOjQwOjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRlc3RzL2NoZWNrL2dlbmVyaWMvc3RhdGVzLmM6IENvcHkgdGhlIGN1cnJlbnQgZ2VuZXJpYy9zdGF0ZXMgZXhhbXBsZSBmcm9tIC1iYXNlIGFuZCBhZGFwdCBzbyB3ZSBjYW4gdXNlIHRoZSBleGFjdCBzYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3N0YXRlcy5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoc3RhdGVzX3N1aXRlKToKCSAgQ29weSB0aGUgY3VycmVudCBnZW5lcmljL3N0YXRlcyBleGFtcGxlIGZyb20gLWJhc2UgYW5kIGFkYXB0IHNvCgkgIHdlIGNhbiB1c2UgdGhlIGV4YWN0IHNhbWUgY29kZSBldmVyeXdoZXJlLgoJICBDaGVjayBhIFNUQVRFU19JR05PUkVfRUxFTUVOVFMgZW52IHZhciB3aGljaCBjYW4gYmUgdXNlZAoJICB0byBpZ25vcmUgY2VydGFpbiBlbGVtZW50IGZhY3RvcmllcyBmb3IgdGhpcyB0ZXN0LCB3aGljaCBpcwoJICB3aGF0IGlzIGJlaW5nIGRvbmUgaW4gLWJhc2UKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgTWVudGlvbiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlLgoKMjAwNy0wMi0yNyAxNzoyMjowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFQSTogZ3N0X2J1c190aW1lZF9wb3AoKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfaW5pdCksIChnc3RfYnVzX2Rpc3Bvc2UpLCAoZ3N0X2J1c19wb3N0KSwKCSAgKGdzdF9idXNfdGltZWRfcG9wKSwgKGdzdF9idXNfcG9wKToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgIEFQSTogZ3N0X2J1c190aW1lZF9wb3AoKQoJICBJbXBsZW1lbnQgZ3N0X2J1c190aW1lZF9wb3AoKSB0byBkbyBhIGJsb2NraW5nIHRpbWVkIHdhaXQgZm9yIGEKCSAgbWVzc2FnZSB0byBhcnJpdmUgb24gdGhlIGJ1cy4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVzLmM6IChHU1RfU1RBUlRfVEVTVCksIChwb3BfdGhyZWFkKSwKCSAgKGdzdF9idXNfc3VpdGUpOgoJICBUd28gdW5pdCB0ZXN0cyBmb3IgbmV3IF90aW1lZF9wb3AoKSBmdW5jdGlvbi4KCjIwMDctMDItMjMgMTc6NDI6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYzogRG9uJ3QgcmVmIGEgTlVMTCBjbG9jayBpbiBfcHJvdmlkZV9jbG9ja19mdW5jKCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSksCgkgIChnc3RfcGlwZWxpbmVfcHJvdmlkZV9jbG9ja19mdW5jKSwgKGdzdF9waXBlbGluZV9zZXRfZGVsYXkpOgoJICBEb24ndCByZWYgYSBOVUxMIGNsb2NrIGluIF9wcm92aWRlX2Nsb2NrX2Z1bmMoKS4KCSAgRG9uJ3QgYWxsb3cgYW4gSU5WQUxJRCBkZWxheS4KCSAgRG9uJ3QgdHJ5IHRvIGNhbGN1bGF0ZSBiYXNlX3RpbWUgd2l0aCBhbiBpbnZhbGlkIHN0YXJ0X3RpbWUuCgkgIEFsc28gZGlzdHJpYnV0ZSBhbmQgbm90aWZ5IGEgTlVMTCBjbG9jayB3aGVuIGl0IHdhcyBzZWxlY3RlZC4KCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgRG9uJ3QgY3Jhc2ggd2hlbiBhIE5VTEwgY2xvY2sgd2FzIHNlbGVjdGVkIGluIHRoZSBwaXBlbGluZS4KCjIwMDctMDItMjMgMTM6NDI6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzLzogU29tZSBzbWFsbCB1cGRhdGVzOiB1cGRhdGUgcGx1Z2luIHN5c3RlbSBpZGVudGlmaWVyIHByZWZpeCBtZW50aW9uIG91ciBuZXcgaW5zdGFsbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1taXNzaW5nLXBsdWdpbnMudHh0OgoJICAqIGRvY3MvcmFuZG9tL2RyYWZ0LW1pc3NpbmctcGx1Z2lucy50eHQ6CgkgIFNvbWUgc21hbGwgdXBkYXRlczogdXBkYXRlIHBsdWdpbiBzeXN0ZW0gaWRlbnRpZmllciBwcmVmaXgKCSAgKCdnc3RyZWFtZXIubmV0JyB0byAnZ3N0cmVhbWVyJyksIG1lbnRpb24gb3VyIG5ldyBpbnN0YWxsCgkgIEFQSSBpbiBsaWJnc3RiYXNldXRpbHMgcmF0aGVyIHRoYW4gbGliZ2ltbWUtY29kZWMsIGFkZAoJICByZWZlcmVuY2UgdG8gdGhlIG9ubGluZSBkb2NzLgoKMjAwNy0wMi0yMSAxNTozNToxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB3aW4zMi9jb21tb24vY29uZmlnLmg6IFByZXR0eSBzdXJlIEJpbGwgbmV2ZXIgbWFkZSBhIHBvd2VycGMgdmVyc2lvbi4gIFBvd2VycGMgaGFja2VycywgdXNlIG1vYXAgY2wgY2kgdG8gb25seSBjaGVjayAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBQcmV0dHkgc3VyZSBCaWxsIG5ldmVyIG1hZGUgYSBwb3dlcnBjIHZlcnNpb24uICBQb3dlcnBjIGhhY2tlcnMsCgkgIHVzZSBtb2FwIGNsIGNpIHRvIG9ubHkgY2hlY2sgaW4gd2hhdCBpcyBtZW50aW9uZWQgaW4gdGhlIENoYW5nZUxvZy4KCjIwMDctMDItMjEgMTU6MzQ6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgRml4IHVwIGRvY3VtZW50YXRpb24gdG8gbGluayB0byB0aGUgY29ycmVjdCBHc3RHRXJyb3Igc2VjdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBGaXggdXAgZG9jdW1lbnRhdGlvbiB0byBsaW5rIHRvIHRoZSBjb3JyZWN0IEdzdEdFcnJvciBzZWN0aW9uLgoJICBBZGQgR1NUX0VMRU1FTlRfSU5GTyBtYWNybyBzaW5jZSBzb21lb25lIGVsc2UgYWRkZWQgYSBJbmZvIG1lc3NhZ2UuCgoyMDA3LTAyLTIxIDE1OjMwOjUzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogTWFrZSBzdXJlIHRoYXQgd2UgYWN0dWFsbHkgc2hvdyB0aGUgaW1wb3J0YW50IG1lc3NhZ2UgcGFydCBvZiBhIHdhcm5pbmcgbWVzc2FnZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoZXZlbnRfbG9vcCk6CgkgIE1ha2Ugc3VyZSB0aGF0IHdlIGFjdHVhbGx5IHNob3cgdGhlIGltcG9ydGFudCBtZXNzYWdlIHBhcnQgb2YgYQoJICB3YXJuaW5nIG1lc3NhZ2UuCgkgIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGdlcnJvciBpcyBub3QgTlVMTCB0byBmcmVlOyBmaXJzdCBvZiBhbGwKCSAgZ19mcmVlIGFjY2VwdHMgTlVMTDsgYW5kIHNlY29uZCB0aGUgZGVmYXVsdCBlcnJvciBoYW5kbGVyIHdvdWxkCgkgIHNlZ2ZhdWx0IGlmIGdlcnJvciB3YXMgTlVMTC4KCjIwMDctMDItMjEgMTI6MTA6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBSZW1vdmVkIGRvY3MgYXMgd2VsbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgUmVtb3ZlZCBkb2NzIGFzIHdlbGwuCgoyMDA3LTAyLTIxIDEyOjAxOjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdG1lc3NhZ2UuKjogUmVtb3ZlIG5ldyBtZXNzYWdlcyBmb3IgcmVsZWFzZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3BhcnNlX2R1cmF0aW9uKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBSZW1vdmUgbmV3IG1lc3NhZ2VzIGZvciByZWxlYXNlLgoKMjAwNy0wMi0yMCAxODowMjo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIE1ha2UgdGhlIGdob3N0cGFkIGEgcGFyZW50IG9mIHRoZSBpbnRlcm5hbCBwYWQgYWdhaW4gZm9yIGJldHRlciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBEb24ndCB3cml0ZSBjb2RlIHRoYXQgcmVsaWVzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGdob3N0cGFkLnR4dDoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9naG9zdF9wYWRfZGlzcG9zZSksCgkgIChnc3RfZ2hvc3RfcGFkX25ld19mdWxsKToKCSAgTWFrZSB0aGUgZ2hvc3RwYWQgYSBwYXJlbnQgb2YgdGhlIGludGVybmFsIHBhZCBhZ2FpbiBmb3IgYmV0dGVyIGJhY2t3YXJkCgkgIGNvbXBhdGliaWxpdHkuIERvbid0IHdyaXRlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhpcyBob3dldmVyLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWN0aXZhdGVfcHVsbCksIChnc3RfcGFkX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X3BhZF9saW5rX2NoZWNrX2hpZXJhcmNoeSk6CgkgIFJlcXVpcmUgdGhhdCBwYXJlbnRzIHNob3VsZCBiZSBHc3RFbGVtZW50cyBpbiB0aGUgaGllcmFyY2h5IGNoZWNrLgoKMjAwNy0wMi0yMCAxMDo0NToxMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogSW1wcm92ZSBkZWJ1ZyBpbmZvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fcmVwbGFjZV9tZXNzYWdlKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyksIChiaW5fcXVlcnlfbWluX21heF9pbml0KSwKCSAgKGJpbl9xdWVyeV9sYXRlbmN5X2ZvbGQpLCAoYmluX3F1ZXJ5X2xhdGVuY3lfZG9uZSksCgkgIChnc3RfYmluX3F1ZXJ5KToKCSAgSW1wcm92ZSBkZWJ1ZyBpbmZvLgoJICBJbXBsZW1lbnQgbGF0ZW5jeSBxdWVyeS4KCjIwMDctMDItMjAgMTA6MTY6MjcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBEbyBub3Qgc2V0IHRoZSBpbnRlcm5hbCBwYWQgYXMgYSBwYXJlbnQgYW55bW9yZSBzbyB3ZSBjYW4gYXZvaWQgaGllcmFyY2h5IGxpbmtpbmcgZXJyb3JzIHdoZW4gdGhlIGdob3N0cGFkIGhhcyBubyBwYXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RnaG9zdHBhZC50eHQ6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX2NsYXNzX2luaXQpLAoJICAoZ3N0X2dob3N0X3BhZF9pbnRlcm5hbF9kb19hY3RpdmF0ZV9wdXNoKSwKCSAgKGdzdF9naG9zdF9wYWRfaW50ZXJuYWxfZG9fYWN0aXZhdGVfcHVsbCksCgkgIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X2dob3N0X3BhZF9kb19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9naG9zdF9wYWRfZG9fbGluayksIChnc3RfZ2hvc3RfcGFkX2Rpc3Bvc2UpLAoJICAoZ3N0X2dob3N0X3BhZF9uZXdfZnVsbCksIChnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQpOgoJICBEbyBub3Qgc2V0IHRoZSBpbnRlcm5hbCBwYWQgYXMgYSBwYXJlbnQgYW55bW9yZSBzbyB3ZSBjYW4gYXZvaWQKCSAgaGllcmFyY2h5IGxpbmtpbmcgZXJyb3JzIHdoZW4gdGhlIGdob3N0cGFkIGhhcyBubyBwYXJlbnQgeWV0LiBUaGlzIGFsc28KCSAgZml4ZXMgZmFpbGVkIGFjdGl2YXRpb24gYmVjYXVzZSBvZiB1bmxpbmtlZCBpbnRlcm5hbCBwYWRzLCB3aGljaCBpbgoJICB0dXJuIGZpeGVzIHRoZSBpbXBvc3NpYmxlIGNhc2Ugd2hlcmUgeW91IGhhdmUgdG8gYWN0aXZhdGUgYSBwYWQgYmVmb3JlCgkgIHlvdSBjYW4gYWRkIGl0IHRvIGEgcnVubmluZyBlbGVtZW50LgoJICBBbHNvIGZpeCB0aGUgZG9jcy4KCSAgKiBnc3QvZ3N0cGFkLmM6IChwcmVfYWN0aXZhdGUpLCAocG9zdF9hY3RpdmF0ZSksCgkgIChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCksIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpOgoJICBBZGQgc29tZSBtb3JlIGRlYnVnIGluZm8uCgkgIE1hcmsgYWN0aXZhdGlvbiBtb2RlIGluIHByZV9hY3RpdmF0ZSBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byBhY3RpdmF0ZSBpbgoJICBlbmRsZXNzIGxvb3BzLiBGaXhlcyAjMzg1MDg0LgoKMjAwNy0wMi0xOSAxODowODo1OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBJbXBsZW1lbnQgYSBjaGVja2dldHJhbmdlIGZ1bmN0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdCBjb3JlIGJlaGF2aW91ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGVja19nZXRfcmFuZ2UpOgoJICBJbXBsZW1lbnQgYSBjaGVja2dldHJhbmdlIGZ1bmN0aW9uIGluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgZGVmYXVsdAoJICBjb3JlIGJlaGF2aW91ciB0aGF0IGFzc3VtZXMgd2UgY2FuIG9wZXJhdGUgaW4gcHVsbCBtb2RlIGlmIHdlIGhhdmUgYQoJICBnZXRyYW5nZSBmdW5jdGlvbi4gRmlyc3Qgc3RlcCBhdCBmaXhpbmcgIzM4NTA4NC4KCjIwMDctMDItMTUgMTI6MDU6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIE1vcmUgZG9jcyBjb3ZlcmFnZSBhbmQgc29tZSBDaGFuZ2VMb2cgc3VyZ2VyeSAoYWRkIG1pc3NpbmcgbmFtZXMpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjaGlsZHByb3h5Lmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBNb3JlIGRvY3MgY292ZXJhZ2UgYW5kIHNvbWUgQ2hhbmdlTG9nIHN1cmdlcnkgKGFkZCBtaXNzaW5nIG5hbWVzKQoKMjAwNy0wMi0xNSAxMTozMjowMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduLzogU29tZSBkb2MgdXBkYXRlcy4gU3RhcnQgcmVuYW1pbmcgZnJvbSBzdHJlYW1fdGltZSB0byBydW5uaW5nX3RpbWUgd2hlcmUgaXQgd2FzIHVzZWQgd3JvbmdseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWFjdGl2YXRpb24udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWNsb2Nrcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNvdXJjZS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0YmluLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGJ1cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RwaXBlbGluZS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1saXZlLXNvdXJjZS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1tZXNzYWdlcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1vdmVydmlldy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1xb3MudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcXVlcnkudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3RhdGVzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXRyaWNrbW9kZXMudHh0OgoJICBTb21lIGRvYyB1cGRhdGVzLiBTdGFydCByZW5hbWluZyBmcm9tIHN0cmVhbV90aW1lIHRvIHJ1bm5pbmdfdGltZSB3aGVyZQoJICBpdCB3YXMgdXNlZCB3cm9uZ2x5LgoKMjAwNy0wMi0xNSAwOTowNzoyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBBbnN3ZXIgTEFURU5DWSBxdWVyeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZGVmYXVsdF9xdWVyeSk6CgkgIEFuc3dlciBMQVRFTkNZIHF1ZXJ5LgoKMjAwNy0wMi0xNSAwODo0MDozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RldmVudC5jOiBJbXByb3ZlIGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChldmVudF9wcm9iZSksICh0ZXN0X2V2ZW50KSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcuCgoyMDA3LTAyLTE1IDA4OjM3OjE5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBJbXByb3ZlIGRlYnVnZ2luZyBvZiBkZWZhdWx0IHBhZCBkaXNwYXRjaGVyIGFuZCBxdWVyeSBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZ2V0X2ludGVybmFsX2xpbmtzX2RlZmF1bHQpLAoJICAoZ3N0X3BhZF9kaXNwYXRjaGVyKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcgb2YgZGVmYXVsdCBwYWQgZGlzcGF0Y2hlciBhbmQgcXVlcnkgZnVuY3Rpb25zLgoKMjAwNy0wMi0xNSAwODozMToyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IFJlbW92ZSBvbGQgdW51c2VkIG1ldGhvZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgUmVtb3ZlIG9sZCB1bnVzZWQgbWV0aG9kLgoKMjAwNy0wMi0xMyAxNTo1MTowMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IEZpeCBjaGVjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggY2hlY2sKCjIwMDctMDItMTMgMTU6MzQ6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXNlZWtpbmcudHh0OiBTb21lIHNtYWxsIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWVraW5nLnR4dDoKCSAgU29tZSBzbWFsbCB1cGRhdGUuCgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X3NldF9zZWVrKToKCSAgUmV2ZXJ0IG9sZCBib2d1cyBjaGFuZ2UgdGhhdCBzaG91bGQgbWFrZSBzZWVraW5nIHdvcmsgYWdhaW4uCgoyMDA3LTAyLTEzIDE0OjUyOjQ3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3JhbmRvbS9lbnNvbmljLzogUG9zc2libGUgZHluYW1pYyByZWNvbm5lY3Rpb24gYXBpLCBwbHVzIHNvbWUgdHlwZSBmaXhlcyB0aGUgb3RoZXIgdHdvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZHlubGluay50eHQ6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9pbnRlcmZhY2VzLnR4dDoKCSAgKiBkb2NzL3JhbmRvbS9lbnNvbmljL3JlY2VpcGllcy50eHQ6CgkgIFBvc3NpYmxlIGR5bmFtaWMgcmVjb25uZWN0aW9uIGFwaSwgcGx1cyBzb21lIHR5cGUgZml4ZXMgdGhlIG90aGVyIHR3bwoJICBkb2NzLgoKMjAwNy0wMi0xMyAxMzo0MDowNSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy86IEFsc28gY2hlY2sgZm9yIGFuIGFic29sdXRlIHBhdGggZm9sbG93aW5nIGZpbGU6Ly8gaW4gdGhlIGZpbGVzcmMgZWxlbWVudC4gUmVtb3ZlIHJlZHVuZGFudCBjaGVjayBhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfdXJpX3NldF91cmkpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX3VyaV9zZXRfdXJpKToKCSAgQWxzbyBjaGVjayBmb3IgYW4gYWJzb2x1dGUgcGF0aCBmb2xsb3dpbmcgZmlsZTovLyBpbiB0aGUgZmlsZXNyYwoJICBlbGVtZW50LiBSZW1vdmUgcmVkdW5kYW50IGNoZWNrIGFuZCBjYWxsIGdfcGF0aF9pc19hYnNvbHV0ZSgpIG9uIHRoZQoJICB1bmVzY2FwZWQgbG9jYXRpb24uCgoyMDA3LTAyLTEzIDA5OjEwOjUzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6IEFkZCBleGlzdGluZyBjYXRlZ29yeSBhbmFseXNpcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQta2xhc3MudHh0OgoJICBBZGQgZXhpc3RpbmcgY2F0ZWdvcnkgYW5hbHlzaXMuCgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgRml4IGRvYyBleGFtcGxlLCBmcmFtZXJhdGUgaXMgYSBmcmFjdGlvbi4KCjIwMDctMDItMTIgMTk6NTU6MjQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZCBjcm9zc3JlZmVyZW5jZXMgdG8gZ2xpYi9nb2JqZWN0IGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkgICogZG9jcy9wbHVnaW5zL01ha2VmaWxlLmFtOgoJICBBZGQgY3Jvc3NyZWZlcmVuY2VzIHRvIGdsaWIvZ29iamVjdCBkb2NzLgoKMjAwNy0wMi0xMiAxMTozMjoyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OiBTbWFsbCB1cGRhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJICBTbWFsbCB1cGRhdGUuCgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfbGF0ZW5jeSksIChnc3RfYmFzZV9zaW5rX3F1ZXJ5X2xhdGVuY3kpLAoJICAoZ3N0X2Jhc2Vfc2lua193YWl0X2Nsb2NrKSwgKGdzdF9iYXNlX3Npbmtfc2VuZF9xb3MpLAoJICAoZ3N0X2Jhc2Vfc2lua19wZXJmb3JtX3FvcyksIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdF91bmxvY2tlZCksCgkgIChnc3RfYmFzZV9zaW5rX2NoYWluX3VubG9ja2VkKSwgKGdzdF9iYXNlX3Npbmtfc2VuZF9ldmVudCksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbiksIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIEFQSTogZ3N0X2Jhc2Vfc2lua19xdWVyeV9sYXRlbmN5KCkgdG8gbGV0IHN1YmNsYXNzZXMgcXVlcnkgdGhlIHVwc3RyZWFtCgkgIGxhdGVuY3kuCgkgIEFQSTogZ3N0X2Jhc2Vfc2lua19nZXRfbGF0ZW5jeSgpIHRvIGxldCBzdWJjbGFzc2VzIHF1ZXJ5IHRoZSBjb25maWd1cmVkCgkgIGxhdGVuY3kgaW4gdGhlIHNpbmsuCgkgIEltcGxlbWVudCBxdWVyeSBhbmQgc2V0IGxhdGVuY3kuCgkgIFVwZGF0ZSBzb21lIGRvY3MuCgkgIEFzIHNwb3R0ZWQgYnkgV2lsbCBOZXd0b24gPHdpbGwgZG90IG5ld3RvbiBhdCBnbWFpbCBkb3QgY29tPjogTWFrZSBzdXJlIHdlCgkgIGRvbid0IGNvbnRpbnVlIHByZXJvbGwgd2hlbiB3ZSBhcmUgZmx1c2hpbmcuIEZpeGVzICM0MDUyODQuCgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3N0cmVzcy5jOiAoY2hhbmdlX3N0YXRlX3RpbWVvdXQpLAoJICAocXVpdF90aW1lb3V0KSwgKEdTVF9TVEFSVF9URVNUKSwgKHN0cmVzc19zdWl0ZSk6CgkgIFRlc3QgZm9yICM0MDUyODQuCgoyMDA3LTAyLTEyIDEwOjUwOjIwICswMDAwICBSZW7DqSBTdGFkbGVyIDxtYWlsQHJlbmVzdGFkbGVyLmRlPgoKCSAgQVBJOiBhZGQgR1NUX1RBR19SRUZFUkVOQ0VfTEVWRUwgKCM0MDM1OTcpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFJlbsOpIFN0YWRsZXIgPG1haWwgYXQgcmVuZXN0YWRsZXIgZGU+CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgQVBJOiBhZGQgR1NUX1RBR19SRUZFUkVOQ0VfTEVWRUwgKCM0MDM1OTcpLgoKMjAwNy0wMi0xMSAxOTo1OToxMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9saWJzL01ha2VmaWxlLmFtOiBGaXggcGF0aCB0byBjb3JlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgRml4IHBhdGggdG8gY29yZSBkb2NzLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZ2V0X2J5X2ludGVyZmFjZSksCgkgIChnc3RfYmluX2l0ZXJhdGVfYWxsX2J5X2ludGVyZmFjZSk6CgkgIFJlZml4IGRvY3MgYnkgYWxzbyByZW5hbWluZyAnaW50ZXJmYWNlJyB0byAnaWZhY2UnIGluIGltcGxlbWVudGF0aW9uLgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOiAoZ3N0X2NoaWxkX3Byb3h5X2Jhc2VfaW5pdCk6CgkgICogZ3N0L2dzdGNoaWxkcHJveHkuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzoKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X25ldyk6CgkgIERvY3VtZW50IG1vcmUuCgoyMDA3LTAyLTEwIDE4OjMxOjEyICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0YmluLmg6IFJlcGxhY2UgaW50ZXJmYWNlIHBhcmFtZXRlciBuYW1lIGJ5IGlmYWNlIGFzIGludGVyZmFjZSBpcyBhIHJlc2VydmVkIGtleXdvcmQgaW4gVmlzdWFsIFN0dWRpbyBmb3IgQysrIHAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5oOihnc3RfYmluX2dldF9ieV9pbnRlcmZhY2UpLAoJICAoZ3N0X2Jpbl9pdGVyYXRlX2FsbF9ieV9pbnRlcmZhY2UpOgoJICBSZXBsYWNlIGludGVyZmFjZSBwYXJhbWV0ZXIgbmFtZSBieSBpZmFjZSBhcyBpbnRlcmZhY2UgaXMKCSAgYSByZXNlcnZlZCBrZXl3b3JkIGluIFZpc3VhbCBTdHVkaW8gZm9yIEMrKyBwcm9qZWN0cyBzbyBpdCByZW1vdmVzCgkgIGEgYnVpbGQgZXJyb3IgZm9yIGFwcGxpY2F0aW9uIGRldmVsb3BwZXJzIHVzaW5nIFZTLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOihnc3RfZmlsZV9zcmNfdXJpX3NldF91cmkpOgoJICBGaXggYSBidWcgb24gV2luZG93cyBpbiB1cmkgZm9ybWF0IGNoZWNrLiBOb3cgdGhlIHByZWZpeCBjaGVja2VkCgkgIGlzIGZpbGU6Ly8gYW5kIG5leHQgd2UgY2hlY2sgaWYgdGhlIHBhdGggYWZ0ZXIgZmlsZTovLyBpcyBhYnNvbHV0ZS4KCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGRhdGFwcm90b2NvbC5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zLgoKMjAwNy0wMi0wOSAxNToyNTo0NSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogQ2hhbmdlTG9nOgoJKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOgoJICB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA3LTAyLTA5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9zaW1wbGUtbGF1bmNoLWxpbmVzLmMKCSAgKHNpbXBsZV9sYXVuY2hfbGluZXNfc3VpdGUsIHRlc3RfdGVlKTogRGlzYWJsZSB0ZWUgdGVzdCB1bnRpbCBJCgkgIGhhdmUgdGltZSB0byBmaXggaXQgOi0oCgoyMDA3LTAyLTA5IDEzOjU5OjMyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0ZXN0cy9jaGVjay86IEFkZCBBQkkgY2hlY2tzIGZvciBQUEMzMi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDItMDkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gKG5vaW5zdF9IRUFERVJTKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2xpYnNhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9wcGMzMi5oOiBBZGQgQUJJIGNoZWNrcyBmb3IgUFBDMzIuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGFiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfcHBjMzIuaDogQWRkIEFCSSBjaGVja3MgZm9yIFBQQzMyLgoKMjAwNy0wMi0wOSAxMzo0NToyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYyAodGVzdF90ZWUpOiBBZGQgdGVzdHMgZm9yIHB1c2ggYW5kIHB1bGwgdGVlIGJlaGF2aW9yLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMi0wOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jICh0ZXN0X3RlZSk6IEFkZAoJICB0ZXN0cyBmb3IgcHVzaCBhbmQgcHVsbCB0ZWUgYmVoYXZpb3IuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiBEZXNjcmliZSBoYXMtc2luay1sb29wIGJldHRlciwgYW5kCgkgIG1hcmsgYXMgZGVwcmVjYXRlZCBhcyB3ZWxsIGFzIHVuaW1wbGVtZW50ZWQuIEl0IHdhcyBhIGNyYWNrIGlkZWEuCgkgIEFkZCBzdXBwb3J0IGZvciB0ZWUgb3BlcmF0aW5nIGluIHB1bGwgbW9kZSwgb2ZmIGJ5IGRlZmF1bHQuCgoyMDA3LTAyLTA5IDEzOjQxOjI0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYyAobG9hZF9mZWF0dXJlLCBsb2FkX3BsdWdpbik6IERyb3Agc29tZSBub3JtYWwtY2FzZSBsb2dzIGRvd24gdG8gTE9HLCByYWlzZSBlcnJvcnMgdG8gV0FSTklORy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDItMDkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmMgKGxvYWRfZmVhdHVyZSwgbG9hZF9wbHVnaW4pOiBEcm9wIHNvbWUKCSAgbm9ybWFsLWNhc2UgbG9ncyBkb3duIHRvIExPRywgcmFpc2UgZXJyb3JzIHRvIFdBUk5JTkcuCgkgIChnc3RfcmVnaXN0cnlfeG1sX3JlYWRfY2FjaGUpOiBEb24ndCBsb2cgYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbgoJICB0aGF0IGxvZ3MuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmMgKGdzdF9yZWdpc3RyeV9maW5hbGl6ZSk6IExlc3MgZGVidWcgb24gcHJvZ3JhbQoJICBleGl0IChyZWdpc3RyeSBmaW5hbGl6ZSkuCgkgIChnc3RfcmVnaXN0cnlfYWRkX3BsdWdpbiwgZ3N0X3JlZ2lzdHJ5X2FkZF9mZWF0dXJlKTogTm8gbmVlZCBmb3IgYQoJICBERUJVRyBsb2cgd2hlbiB3ZSBlbWl0IHNpZ25hbHMgdGhhdCBwZW9wbGUgZG9uJ3QgZXZlbiBoYXZlIHRoZQoJICBjaGFuY2UgdG8gY29ubmVjdCB0by4KCSAgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOiBMZXNzIGxvZ2dpbmcgaW4gdGhlIG5vcm1hbCBjYXNlLgoKMjAwNy0wMi0wNSAxMzoxNTo0NCArMDAwMCAgTWljaGFsIEJlbmVzIDxtaWNoYWwuYmVuZXNAaXRvbmlzLnR2PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IENvcnJlY3RseSBnZW5lcmF0ZSBFT1MgZm9yIG5vbi1zZWVrYWJsZSBmaWxlcy4gV2UgZG9uJ3QgaGF2ZSBhIHRvdGFsIGxlbmd0aCBmb3IgdGhlbSBhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWljaGFsIEJlbmVzIDxtaWNoYWwgZG90IGJlbmVzIGF0IGl0b25pcyBkb3QgdHY+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY3JlYXRlX3JlYWQpOgoJICBDb3JyZWN0bHkgZ2VuZXJhdGUgRU9TIGZvciBub24tc2Vla2FibGUgZmlsZXMuIFdlIGRvbid0IGhhdmUgYSB0b3RhbAoJICBsZW5ndGggZm9yIHRoZW0gYW5kIHdvdWxkIGdldCBhbiB1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGlmIHdlIG9ubHkKCSAgc3BlY2lhbC1jYXNlZCBmb3IgcmVndWxhciBmaWxlcy4gKEZpeGVzOiAjNDA0NTY5KQoKMjAwNy0wMi0wNSAwODoxNToyNiArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgR3N0VVJJSGFuZGxlciBpbnRlcmZhY2UgaW4gZmlsZXNyYy4gVGhpcyBhbHNvIHRlc3RzIHRoZSBuZXdseSBhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2ZpbGVzcmMuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGZpbGVzcmNfc3VpdGUpOgoJICBBZGQgdW5pdCB0ZXN0IGZvciB0aGUgR3N0VVJJSGFuZGxlciBpbnRlcmZhY2UgaW4gZmlsZXNyYy4gVGhpcyBhbHNvCgkgIHRlc3RzIHRoZSBuZXdseSBhZGRlZCBmaWxlOi8vbG9jYWxob3N0L2Zvby9iYXIgc3VwcG9ydC4KCjIwMDctMDItMDQgMTY6MTQ6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuaDogVGhlIGtsYXNzIHN0cmluZyBpcyBub3QgYSBoaWVyYXJjaHkuIEFkZCByZWZlcmVuY2UgdG8gdGhlIGRlc2lnbiBkb2MgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkgIFRoZSBrbGFzcyBzdHJpbmcgaXMgbm90IGEgaGllcmFyY2h5LiBBZGQgcmVmZXJlbmNlIHRvIHRoZSBkZXNpZ24gZG9jCgkgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBjb21tb24gdHlwZXMuCgoyMDA3LTAyLTAyIDE4OjA4OjMyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHF1ZXJ5LmM6IFJlbW92ZSBvbGQgc3RydWN0dXJlIGZpZWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKGdzdF9xdWVyeV9uZXdfbGF0ZW5jeSk6CgkgIFJlbW92ZSBvbGQgc3RydWN0dXJlIGZpZWxkLgoKMjAwNy0wMi0wMiAxMjoyNzoxNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC4xLmluOiBHaXZlIGV4YW1wbGUgZm9yIG5ldHdvcmsgc3RyZWFtaW5nICgjMzUxOTk4KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLjEuaW46CgkgIEdpdmUgZXhhbXBsZSBmb3IgbmV0d29yayBzdHJlYW1pbmcgKCMzNTE5OTgpCgoyMDA3LTAyLTAyIDExOjQ4OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIGRvY3MgZm9yIG5ldyBtZXRob2RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgZG9jcyBmb3IgbmV3IG1ldGhvZHMuCgkgICogZ3N0L2dzdGV2ZW50LmM6IChnc3RfZXZlbnRfbmV3X2xhdGVuY3kpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX2xhdGVuY3kpOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBBZGQgbmV3IExBVEVOQ1kgZXZlbnQgdG8gY29uZmlndXJlIGxhdGVuY3kgaW4gYSBwaXBlbGluZS4KCSAgQVBJOiBnc3RfZXZlbnRfbmV3X2xhdGVuY3kKCSAgQVBJOiBnc3RfZXZlbnRfcGFyc2VfbGF0ZW5jeQoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfYnVmZmVyaW5nKSwKCSAgKGdzdF9tZXNzYWdlX25ld19sb3N0X3ByZXJvbGwpLCAoZ3N0X21lc3NhZ2VfbmV3X3ByZXJvbGxlZCksCgkgIChnc3RfbWVzc2FnZV9uZXdfbGF0ZW5jeSksIChnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmcpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2VfbG9zdF9wcmVyb2xsKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBBZGRlZCBtZXNzYWdlcyB1c2VkIGluIGRyYWZ0LWxhdGVuY3kuCgkgIEFQSTogZ3N0X21lc3NhZ2VfbmV3X2xvc3RfcHJlcm9sbAoJICBBUEk6IGdzdF9tZXNzYWdlX3BhcnNlX2xvc3RfcHJlcm9sbAoJICBBUEk6IGdzdF9tZXNzYWdlX25ld19wcmVyb2xsZWQKCSAgQVBJOiBnc3RfbWVzc2FnZV9uZXdfbGF0ZW5jeQoJICAqIGdzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X25ld19sYXRlbmN5KSwgKGdzdF9xdWVyeV9zZXRfbGF0ZW5jeSksCgkgIChnc3RfcXVlcnlfcGFyc2VfbGF0ZW5jeSk6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIEltcGxlbWVudGVkIG5ldyBsYXRlbmN5IHF1ZXJ5IGFzIGluIGRlc2lnbiBkb2MuCgkgIEFQSTogZ3N0X3F1ZXJ5X25ld19sYXRlbmN5CgkgIEFQSTogZ3N0X3F1ZXJ5X3NldF9sYXRlbmN5CgkgIEFQSTogZ3N0X3F1ZXJ5X3BhcnNlX2xhdGVuY3kKCjIwMDctMDItMDIgMTE6MzM6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDogU2xpZ2h0IHJlZGVzaWduIHRvIGFsbG93IGZvciBkeW5hbWljIGxhdGVuY3kgYWRqdXN0bWVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJICBTbGlnaHQgcmVkZXNpZ24gdG8gYWxsb3cgZm9yIGR5bmFtaWMgbGF0ZW5jeSBhZGp1c3RtZW50cy4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW5lZ290aWF0aW9uLnR4dDoKCSAgRml4IHNvbWUgdHlwb3MuCgoyMDA3LTAyLTAyIDEwOjQxOjI5ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BjaXJjdWxhci1jaGFvcy5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogQWxsb3cgZmlsZTovL2xvY2FsaG9zdC9mb28vYmFyIFVSTHMgYW5kIGNvcnJlY3RseSBmYWlsIGZvciBldmVyeSBvdGhlciBob3N0bmFtZSB0aGF0IG9uZSBzZXRzLiBUaGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJldmlld2VkIGJ5OiBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfdXJpX3NldF91cmkpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX3VyaV9zZXRfdXJpKToKCSAgQWxsb3cgZmlsZTovL2xvY2FsaG9zdC9mb28vYmFyIFVSTHMgYW5kIGNvcnJlY3RseSBmYWlsIGZvciBldmVyeSBvdGhlcgoJICBob3N0bmFtZSB0aGF0IG9uZSBzZXRzLiBUaGlzIHdhcyBnbm9tZXZmc3NyYyBpcyBsaW5rZWQgZm9yIHRob3NlIGlmCgkgIGluc3RhbGxlZCBhcyBpdCBjYW4gaGFuZGxlIGl0ICgjNDAzMTcyKQoKMjAwNy0wMi0wMSAxOTowMDo0OCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY2lyY3VsYXItY2hhb3Mub3JnPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy4qOiBEb24ndCBwdXQgdGhlIHByZXZpb3VzbHkgYWRkZWQgZGVzdHJveSBub3RpZnkgaW4gdGhlIEdzdENvbGxlY3REYXRhIHN0cnVjdCBhcyBhbGwgaXQnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogVGltLVBoaWxpcHAgTcO8bGxlciA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19maW5hbGl6ZSksCgkgICh1bnJlZl9kYXRhKSwgKGdzdF9jb2xsZWN0X3BhZHNfYWRkX3BhZF9mdWxsKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkgIERvbid0IHB1dCB0aGUgcHJldmlvdXNseSBhZGRlZCBkZXN0cm95IG5vdGlmeSBpbiB0aGUgR3N0Q29sbGVjdERhdGEKCSAgc3RydWN0IGFzIGFsbCBpdCdzIHBhZGRpbmcgaXMgYWxyZWFkeSB1c2VkIGFuZCB3ZSBkb24ndCB3YW50IHRvIGJyZWFrCgkgIEFCSS4gSW5zdGVhZCBwdXQgaW4gdGhlIHBhZCdzIEdPYmplY3QgZGF0YSBmb3Igbm93LiBUaGlzIHNob3VsZCBiZQoJICBjbGVhbmVkIHVwIGZvciAwLjExICgjNDAyMzkzKS4KCjIwMDctMDItMDEgMTc6NTI6MTEgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIEFQSTogQWRkIGZ1bmN0aW9uIHRvIHNwZWNpZnkgYSBkZXN0cm95IG5vdGlmaWNhdGlvbiBmb3IgY3VzdG9tCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogV2ltIFRheW1hbnMgPHdpbUBmbHVlbmRvLmNvbT4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfZmluYWxpemUpLAoJICAodW5yZWZfZGF0YSksIChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19hZGRfcGFkX2Z1bGwpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgQVBJOiBBZGQgZnVuY3Rpb24gdG8gc3BlY2lmeSBhIGRlc3Ryb3kgbm90aWZpY2F0aW9uIGZvciBjdXN0b20KCSAgR3N0Q29sbGVjdERhdGEgd2hlbiBhZGRpbmcgbmV3IHBhZHMgaW4gR3N0Q29sbGVjdFBhZHMgKCM0MDIzOTMpLgoKMjAwNy0wMi0wMSAxNzoxMDoyNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBvL3N2LnBvOiBVcGRhdGUgU3dlZGlzaCB0cmFuc2xhdGlvbiAoIzM3ODI1NSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBvL3N2LnBvOgoJICBVcGRhdGUgU3dlZGlzaCB0cmFuc2xhdGlvbiAoIzM3ODI1NSkuCgoyMDA3LTAxLTMxIDExOjQyOjUzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6IEZpeCB0aGUgcHJldmlvdXMgY2hhbmdlLCB0aGlzIGlzIGEgbGlzdCBvZiBjYXRlZ29yaWVzIGFuZCBub3QgYSBoaWVyYXJjaHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWtsYXNzLnR4dDoKCSAgRml4IHRoZSBwcmV2aW91cyBjaGFuZ2UsIHRoaXMgaXMgYSBsaXN0IG9mIGNhdGVnb3JpZXMgYW5kIG5vdCBhIGhpZXJhcmNoeS4KCjIwMDctMDEtMzEgMTE6MDI6MjkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZGVzaWduL2RyYWZ0LWtsYXNzLnR4dDogQWRkIGluZm8gYWJvdXQgaG93IHRvIGdldCBhIGxpc3Qgb2YgdXNlZCBjbGFzc2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6CgkgIEFkZCBpbmZvIGFib3V0IGhvdyB0byBnZXQgYSBsaXN0IG9mIHVzZWQgY2xhc3Nlcy4KCjIwMDctMDEtMzAgMTk6MTI6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBEb24ndCBsZWFrIGZvdW5kIGNhcHMgaW4gY2hhaW4gZnVuY3Rpb24gKG5vIGlkZWEgd2h5IHRoYXQgbmV2ZXIgc2hvd2VkIHVwIGFzIGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbl9kb190eXBlZmluZGluZyksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhbmdlX3N0YXRlKToKCSAgRG9uJ3QgbGVhayBmb3VuZCBjYXBzIGluIGNoYWluIGZ1bmN0aW9uIChubyBpZGVhIHdoeSB0aGF0IG5ldmVyCgkgIHNob3dlZCB1cCBhcyBhIGxlYWsgYW55d2hlcmUpLgoKMjAwNy0wMS0zMCAxNTowNDozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbi5oOiBGaXggYW5kIGV4cGFuZCBHc3RQbHVnaW5EZXNjIEFQSSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIEZpeCBhbmQgZXhwYW5kIEdzdFBsdWdpbkRlc2MgQVBJIGRvY3MuCgoyMDA3LTAxLTI5IDE1OjU0OjA5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjb25maWd1cmUuYWM6IGNvbW1lbnQgYWJvdXQgcmVmaW5pbmcgdGhlIHhtbCBkZXBzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgY29tbWVudCBhYm91dCByZWZpbmluZyB0aGUgeG1sIGRlcHMKCSAgKiBkb2NzL21hbnVhbHMubWFrOgoJICBjb21tZW50cyBhYm91dCBtb3ZpbmcgYXdheSBmcm9tIGphZGUgZm9yIGRvY3MKCSAgKiBnc3QvZ3N0LmM6CgkgIHJlY29tbWl0IHRoZSBpZmRlZnMgdG8gdXNlIHRoZSBiaW5hcnkgcmVnaXN0cnkKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKToKCSAgdGhpcyBicmVhayBpcyBvYnNvbGV0ZQoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJICBiZXR0ZXIgR1NUX0VMRU1FTlRfREVUQUlMUyBkb2NzLCBhZGQgY29tbWVudCBhYm91dCB0cmFuc2xhdGlvbgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgIHJlbW92ZSBlb2wgc2xhc2gKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfc2lnbmFsX29iamVjdF9nZXRfdHlwZSk6CgkgIGFkZCBHX1VOTElLRUxZIGFzIHVzdWFsCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0KToKCSAgYWRkIGZhbGwgdHJodSBjb21tZW50CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfaW5pdGlhbGl6ZV9tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfc3RyaW5nKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9wYWRfdGVtcGxhdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX2ZlYXR1cmUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlX2NhY2hlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfY2hlY2tfbWFnaWMpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX3BhZF90ZW1wbGF0ZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgIGNvbW1lbnQgdHlwbyBhbmQgZm9ybWF0dGluZwoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUpLAoJICAoZ3N0X2VsZW1lbnRfc3RhdGVfY2hhbmdlX3JldHVybl9nZXRfbmFtZSk6CgkgIHJlbW92ZSBvYnNvbGV0ZSBicmVha3MKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF9kYXRlX2dldF90eXBlKSwgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgIGFkZCBGSVhNRSAwLjExIGFuZCByZW1vdmUgY3BwIGNvbW1lbnQKCjIwMDctMDEtMjkgMTU6MDI6MTEgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogRml4IHByaW50IHN0YXRlbWVudCBpbiBhbiBldmVuIG1vcmUgcG9ydGFibGUgd2F5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgIEZpeCBwcmludCBzdGF0ZW1lbnQgaW4gYW4gZXZlbiBtb3JlIHBvcnRhYmxlIHdheS4KCjIwMDctMDEtMjkgMTM6NDA6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBUEk6IGFkZCBHU1RfUk9VTkRfRE9XTl8qIG1hY3JvcyAoIzQwMTc4MSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFQSTogYWRkIEdTVF9ST1VORF9ET1dOXyogbWFjcm9zICgjNDAxNzgxKS4KCjIwMDctMDEtMjcgMTg6NDQ6MTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBEb2N1bWVudCByZWdpc3RyeSBzaWduYWxzIGFuZCBtYWtlIGd0ay1kb2MgcGljayB0aGVtIHVwICgjNDAxMzgxKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzLmluOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2NsYXNzX2luaXQpOgoJICBEb2N1bWVudCByZWdpc3RyeSBzaWduYWxzIGFuZCBtYWtlIGd0ay1kb2MgcGljayB0aGVtIHVwICgjNDAxMzgxKS4KCjIwMDctMDEtMjYgMTg6MjQ6NTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3B3Zy9idWlsZGluZy10ZXN0YXBwLnhtbDogQWRkIHNvbWUgYXVkaW9jb252ZXJ0cyBhbmQgYXVkaW9yZXNhbXBsZSB0byB0aGUgcGlwZWxpbmUsIGFuZCBzb21lIG1vcmUgY29tbWVudHMgYW5kIGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6CgkgIEFkZCBzb21lIGF1ZGlvY29udmVydHMgYW5kIGF1ZGlvcmVzYW1wbGUgdG8gdGhlIHBpcGVsaW5lLCBhbmQgc29tZQoJICBtb3JlIGNvbW1lbnRzIGFuZCBlcnJvciBoYW5kbGluZy4KCjIwMDctMDEtMjYgMTM6MDc6MzYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzLzogRml4IHR5cG8gKCM0MDA5ODcpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9tYW51YWwueG1sOgoJICAqIGRvY3MvcHdnL3B3Zy54bWw6CgkgIEZpeCB0eXBvICgjNDAwOTg3KS4KCjIwMDctMDEtMjYgMDk6Mzc6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBJbml0IGNhcHMgZmxhZ3MgdG9vLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X3N0YXRpY19jYXBzX2dldCk6CgkgIEluaXQgY2FwcyBmbGFncyB0b28uCgoyMDA3LTAxLTI1IDE3OjU0OjA3ICswMDAwICBKaW5kcmljaCBNYWtvdmlja2EgPGppbmRyaWNoLm1ha292aWNrQGl0b25pcy50dj4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiBJZiBub3QgdXNpbmcgbW1hcCdlZCBmaWxlcyB0cnkgdG8gc2VlayB0byB0aGUgZW5kIGluc3RlYWQgb2YgdGhlIHN0YXJ0IHRvIGRldGVybWluZSB3aC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEppbmRyaWNoIE1ha292aWNrYSA8amluZHJpY2gubWFrb3ZpY2sgYXQgaXRvbmlzIGRvdCB0dj4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY19zdGFydCk6CgkgIElmIG5vdCB1c2luZyBtbWFwJ2VkIGZpbGVzIHRyeSB0byBzZWVrIHRvIHRoZSBlbmQgaW5zdGVhZCBvZiB0aGUKCSAgc3RhcnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgY2FuIHNlZWsgYXQgYWxsLiBUaGlzIGZpeGVzIHRoZSBjYXNlCgkgIG9mIDJHQisgZmlsZXMgb3ZlciBORlMsIHdoZXJlIHNlZWtzIGluIHRoZSBmaXJzdCAyR0IgY2FuIHN1Y2NlZWQgYnV0CgkgIHNlZWtzIGZvciBldmVyeXRoaW5nIGFmdGVyd2FyZHMgZmFpbC4gRml4ZXMgIzQwMDY1NgoKMjAwNy0wMS0yNSAxNzo0MTozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEFkZCBzb21lIHJlZmNvdW50IGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKF9nc3RfY2Fwc19mcmVlKSwgKGdzdF9zdGF0aWNfY2Fwc19nZXQpOgoJICBBZGQgc29tZSByZWZjb3VudCBkZWJ1Z2dpbmcuCgkgIE1ha2UgZ3N0X3N0YXRpY19jYXBzX2dldCB0aHJlYWRzYWZlLCB3aGljaCBpcyBuZWVkZWQgd2hlbiBhdXRvcGx1Z2dpbmcKCSAgaW4gbXVsdGlwbGUgc3RyZWFtaW5nIHRocmVhZHMuCgoyMDA3LTAxLTI1IDEwOjUwOjAzICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIEFQSTogZ3N0X2FkYXB0ZXJfY29weSgpIHRoYXQgY2FuIHJlZHVjZSB0aGUgYW1vdW50IG9mIG1lbWNweSB3aGVuIGdldHRpbmcgZGF0YSBmcm9tIHRoZSBhZGFwdGVyLiBGaXhlcyAjMzg4MjAxLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IERhdmlkIFNjaGxlZWYgPGRzIGF0IHNjaGxlZWYgZG90IG9yZz4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfY29weSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmg6CgkgIEFQSTogZ3N0X2FkYXB0ZXJfY29weSgpIHRoYXQgY2FuIHJlZHVjZSB0aGUgYW1vdW50IG9mIG1lbWNweSB3aGVuCgkgIGdldHRpbmcgZGF0YSBmcm9tIHRoZSBhZGFwdGVyLiBGaXhlcyAjMzg4MjAxLgoKMjAwNy0wMS0yNSAxMDoxNDowOSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RyZWdpc3RyeWJpbmFyeS5jOiBJbiBwcmludCBzdGF0ZW1lbnRzLCAiJXgiIGlzIGZvciBndWludC4gRml4ZXMgYnVpbGQgb24gbWFjb3N4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgIEluIHByaW50IHN0YXRlbWVudHMsICIleCIgaXMgZm9yIGd1aW50LiBGaXhlcyBidWlsZCBvbiBtYWNvc3guCgoyMDA3LTAxLTI0IDExOjMyOjAwICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IFNtYWxsIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkgIChnc3RfbXVsdGlfcXVldWVfbG9vcCk6CgkgIFNtYWxsIGZpeC4KCSAgKHNpbmdsZV9xdWV1ZV9vdmVycnVuX2NiKSwgKHNpbmdsZV9xdWV1ZV91bmRlcnJ1bl9jYiksCgkgIChzaW5nbGVfcXVldWVfY2hlY2tfZnVsbCksIChnc3Rfc2luZ2xlX3F1ZXVlX25ldyk6CgkgIEltcGxlbWVudCBzaW5nbGUgcXVldWUgZ3Jvd3RoIHN5c3RlbS4KCSAgVGhpcyB1c2VzIHRoZSBleHRyYS1zaXplIHByb3BlcnRpZXMsIGFuZCB3aWxsIGdyb3cgc2luZ2xlIHF1ZXVlcyBieQoJICB0aGF0IG11Y2ggaWYgb25lIGdvZXMgZnVsbCB3aGVyZWFzIHRoZXJlIGFyZSBvdGhlcnMgZW1wdHkuIFRoaXMgaXMKCSAgY2FsbGVkIGV4dHJhLW1vZGUgaW4gdGhlIGNvZGUuCgkgIFdoZW4gYSBzaW5nbGUgcXVldWUncyBsZXZlbHMgZ28gYmFjayBiZWxvdyB0aGUgaW5pdGlhbCBtYXgtc2l6ZQoJICBsaW1pdHMsIGl0IGlzIG5vIGxvbmdlciBpbiBleHRyYS1tb2RlLiBUaGlzIGlzIHRvIGVuc3VyZSB3ZSBkb24ndAoJICBjb25zdW1lIHRvbyBtdWNoIG1lbW9yeS4KCSAgRml4ZXMgIzM5OTg3NQoKMjAwNy0wMS0yMyAxMzo1MDo0MiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3QuYzogTWFrZSB3YXJuaW5nIGFib3V0IGxhdGUgZ190aHJlYWRfaW5pdCgpIGNhbGxzIGEgYml0IG1vcmUgZXhwbGljaXQsIHNvIHRoYXQgaXQncyBtb3JlIG9idmlvdXMgdG8gYXBwbGljYXRpby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChnc3RfaW5pdF9nZXRfb3B0aW9uX2dyb3VwKToKCSAgTWFrZSB3YXJuaW5nIGFib3V0IGxhdGUgZ190aHJlYWRfaW5pdCgpIGNhbGxzIGEgYml0IG1vcmUgZXhwbGljaXQsCgkgIHNvIHRoYXQgaXQncyBtb3JlIG9idmlvdXMgdG8gYXBwbGljYXRpb24gZGV2ZWxvcGVycyB3aGF0IHRoZXkgbmVlZAoJICB0byBkbyBpZiBhIHVzZXIgZmlsZXMgYSBidWcgYWdhaW5zdCB0aGVpciBhcHBsaWNhdGlvbi4KCjIwMDctMDEtMjIgMTY6MDA6MzkgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogUmVtb3ZlIHByZXZpb3VzIGhhY2sgb2YgdW5zZXR0aW5nIHRoZSBmbHVzaGluZyBmbGFnIGZvciB0aGUgc291cmNlIHBhZCBpbnN0ZWFkIG9mIGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6CgkgIChnc3RfbXVsdGlfcXVldWVfc3JjX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X3NpbmdsZV9xdWV1ZV9uZXcpOgoJICBSZW1vdmUgcHJldmlvdXMgaGFjayBvZiB1bnNldHRpbmcgdGhlIGZsdXNoaW5nIGZsYWcgZm9yIHRoZSBzb3VyY2UgcGFkCgkgIGluc3RlYWQgb2YgYWN0aXZhdGluZyBpdC4gSW5zdGVhZCwgZml4IHRoZSBzb3VyY2UgcGFkIGFjdGl2YXRlIGZ1bmN0aW9uCgkgIHNvIHRoYXQgaXQgbm8gbG9uZ2VyIGRlcGVuZHMgb24gaGF2aW5nIGEgcGFyZW50IHNldCBvciBub3QuCgoyMDA3LTAxLTIyIDE0OjMwOjI3ICswMDAwICBDYXJsb3MgU2FubWFydGluIERvbWluZ3VleiA8Y3Nhbm1hcnRpbkBpZ2FsaWEuY29tPgoKCSAgZG9jcy9tYW51YWwvYmFzaWNzLWJ1cy54bWw6IEZpeCBleGFtcGxlIGNvZGUsIGdzdF9lbGVtZW50X3VucmVmKCkgZG9lc24ndCBleGlzdCBhbnkgbG9uZ2VyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IENhcmxvcyBTYW5tYXJ0aW4gRG9taW5ndWV6IDxjc2FubWFydGluQGlnYWxpYS5jb20+CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWJ1cy54bWw6CgkgIEZpeCBleGFtcGxlIGNvZGUsIGdzdF9lbGVtZW50X3VucmVmKCkgZG9lc24ndCBleGlzdCBhbnkgbG9uZ2VyLgoKMjAwNy0wMS0yMSAyMDoyNDoxMSArMDAwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3QHNreW5ldC5iZT4KCgkgIGdzdC9nc3RwYWQuYzogRml4IHR3byBkb2NzIHR5cG9lcyAoIzM5OTA5NCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3IGF0IHNreW5ldCBiZT4KCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIEZpeCB0d28gZG9jcyB0eXBvZXMgKCMzOTkwOTQpLgoKMjAwNy0wMS0xOSAwOToxNToyMSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDogQWRkIGdzdC1wbHVnaW5zLWJhc2UvZ3N0L3V0aWxzLyB0byBMRF9MSUJSQVJZX1BBVEggc28gdGhhdCBwbHVnaW5zIGRlcGVuZGluZyBvbiBsaWJnc3RiYXNldS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIEFkZCBnc3QtcGx1Z2lucy1iYXNlL2dzdC91dGlscy8gdG8gTERfTElCUkFSWV9QQVRIIHNvIHRoYXQgcGx1Z2lucwoJICBkZXBlbmRpbmcgb24gbGliZ3N0YmFzZXV0aWxzIGNhbiB3b3JrIGluIHVuaW5zdGFsbGVkIGVudmlyb25tZW50LgoKMjAwNy0wMS0xOCAxMjowMDoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0LzogQWRkIG1vcmUgZG9jcyByZWdhcmRpbmcgdGFnIG1lcmdlLW1vZGVzIGFuZCB3aGVuIHRvIHNlbmQgdGFncy4gRml4ICdzaW5jZScgc3RhdGVtZW50IGZvciBuZXcgdGFnLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzoKCSAgQWRkIG1vcmUgZG9jcyByZWdhcmRpbmcgdGFnIG1lcmdlLW1vZGVzIGFuZCB3aGVuIHRvIHNlbmQgdGFncy4gRml4ICdzaW5jZScKCSAgc3RhdGVtZW50IGZvciBuZXcgdGFnLgoKMjAwNy0wMS0xNyAxNDozMzozOSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0bXVsdGlxdWV1ZS5jOiBXaGVuIGR5bmFtaWNhbGx5IGNyZWF0aW5nIHNpbmdsZSBxdWV1ZXMsIGFjdGl2YXRlIHNpbmtwYWQgYmVmb3JlIGFkZGluZyBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmM6IChnc3Rfc2luZ2xlX3F1ZXVlX25ldyk6CgkgIFdoZW4gZHluYW1pY2FsbHkgY3JlYXRpbmcgc2luZ2xlIHF1ZXVlcywgYWN0aXZhdGUgc2lua3BhZCBiZWZvcmUgYWRkaW5nCgkgIGl0LgoJICBXZSBzaG91bGQgYmUgZG9pbmcgdGhlIHNhbWUgdGhpbmcgZm9yIHRoZSBzb3VyY2UgcGFkLCBidXQgd2UgY2FuJ3QKCSAgc2luY2UgaXQgd291bGQgY2FsbCBhIG1ldGhvZCB3aGljaCBuZWVkcyB0aGUgcGFyZW50IHRvIGJlIHNldCBpbiBvcmRlcgoJICB0byB3b3JrIHByb3BlcnRseS4gSW5zdGVhZCBvZiBhY3RpdmF0aW5nIHRoZSBzb3VyY2UgcGFkLCB3ZSBqdXN0IHVuc2V0CgkgIHRoZSBmbHVzaGluZyBmbGFnLCB3aGljaCBpcyB0aGUgbWluaW1hbCByZXF1aXJlbWVudCBmb3IgYWRkaW5nIGEgcGFkCgkgIHRvIGFuIGVsZW1lbnQgaW4gYSBzdGF0ZSBncmVhdGVyIHRoYW4gUkVBRFkuCgoyMDA3LTAxLTE3IDE0OjI2OjQ2ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOiBBZGQgRFlMRF9MSUJSQVJZX1BBVEggZGVjbGFyYXRpb25zIHNvIHdlIGNhbiBhbHNvIHVzZSB0aGlzIHNjcmlwdCBvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIEFkZCBEWUxEX0xJQlJBUllfUEFUSCBkZWNsYXJhdGlvbnMgc28gd2UgY2FuIGFsc28gdXNlIHRoaXMgc2NyaXB0IG9uCgkgIE1hYyBPUyBYLgoKMjAwNy0wMS0xNyAxMjozMTowMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrLzogQWRkIEFCSSBzdHJ1Y3RzIGZvciBIUFBBIChzZWUgIzM5Mzc5NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3Qvc3RydWN0X2hwcGEuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2xpYnNhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9ocHBhLmg6CgkgIEFkZCBBQkkgc3RydWN0cyBmb3IgSFBQQSAoc2VlICMzOTM3OTYpLgoKMjAwNy0wMS0xNiAwOTo1Nzo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IEFjdHVhbGx5IHdyaXRlIEFCSSBzdHJ1Y3RzIHRvIHRoZSBmaWxlIHNwZWNpZmllZCBpbiB0aGUgR1NUX0FCSSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYXMgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX2FiaV9saXN0KToKCSAgQWN0dWFsbHkgd3JpdGUgQUJJIHN0cnVjdHMgdG8gdGhlIGZpbGUgc3BlY2lmaWVkIGluIHRoZSBHU1RfQUJJCgkgIGVudmlyb25tZW50IHZhcmlhYmxlLCBhcyB0aGUgbWVzc2FnZSB3ZSBwcmludCBjbGFpbXMgd2Ugd291bGQuCgoyMDA3LTAxLTE1IDE0OjUxOjA5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFzay5jOiBGaXggaGVhZGVyIGNvbW1lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R0YXNrLmM6CgkgIEZpeCBoZWFkZXIgY29tbWVudC4KCjIwMDctMDEtMTUgMTQ6Mzk6NTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0LmM6IENoYW5nZSB0YWcgdHlwZSBmcm9tIFNUUklORyB0byBET1VCTEUuIEFwcGx5IENoYW5nZUxvZyBzdXJnZXJ5IGZvciBteSBwcmV2aW91cyB0d28gZW50cmllcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzogKF9nc3RfdGFnX2luaXRpYWxpemUpOgoJICBDaGFuZ2UgdGFnIHR5cGUgZnJvbSBTVFJJTkcgdG8gRE9VQkxFLiBBcHBseSBDaGFuZ2VMb2cgc3VyZ2VyeSBmb3IgbXkKCSAgcHJldmlvdXMgdHdvIGVudHJpZXMuCgoyMDA3LTAxLTE1IDEzOjU3OjEyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBhZGQgdGFnIHN1cHBvcnQgZm9yIGJlYXQtcGVyLW1pbnV0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6IChfZ3N0X3RhZ19pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICBhZGQgdGFnIHN1cHBvcnQgZm9yIGJlYXQtcGVyLW1pbnV0ZQoKMjAwNy0wMS0xNSAxMjoxODo0NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lio6IHVzZSBnbGliIHR5cGVzLCBjbGVhbnVwIGNvbW1lbnRzLCBpbXBlbWVudCBpbnRlcmZhY2VzIGFuZCB1cmktdHlwZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5LmM6IChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfaW5pdGlhbGl6ZV9tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfc3RyaW5nKSwgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbWFrZV9kYXRhKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9wYWRfdGVtcGxhdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX2ZlYXR1cmUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3dyaXRlX2NhY2hlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfY2hlY2tfbWFnaWMpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9sb2FkX3BhZF90ZW1wbGF0ZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfcmVhZF9jYWNoZSk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5YmluYXJ5Lmg6CgkgIHVzZSBnbGliIHR5cGVzLCBjbGVhbnVwIGNvbW1lbnRzLCBpbXBlbWVudCBpbnRlcmZhY2VzIGFuZCB1cmktdHlwZXMKCjIwMDctMDEtMTMgMTA6MzM6NDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RwYWQuYyAoZ3N0X3BhZF9nZXRfcmFuZ2UsIGdzdF9wYWRfcHVsbF9yYW5nZSk6IEFsbG93IGdldHJhbmdlKCkgdG8gcmV0dXJuIGJ1ZmZlcnMgd2l0aCBvdGhlciBjYXBzLCB3aGlsZSB3ZSBmaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMS0xMyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfZ2V0X3JhbmdlLCBnc3RfcGFkX3B1bGxfcmFuZ2UpOiBBbGxvdwoJICBnZXRyYW5nZSgpIHRvIHJldHVybiBidWZmZXJzIHdpdGggb3RoZXIgY2Fwcywgd2hpbGUgd2UgZml4CgkgIGRlbXV4ZXJzIGFuZCB0eXBlZmluZCwgb3Igb3RoZXJ3aXNlIGNoYW5nZSBwYXJ0LW5lZ290aWF0aW9uLnR4dC4KCjIwMDctMDEtMTIgMjE6MTM6MzIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jIChnc3RfYmFzZV90cmFuc2Zvcm1fYWN0aXZhdGUpOiBGYWN0b3Igc3RhcnQvc3RvcCBpbnRvIHRoaXMgcHJpdmF0ZSBmdW5jdGlvbiBpbnN0ZWFkIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMS0xMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYyAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2FjdGl2YXRlKToKCSAgRmFjdG9yIHN0YXJ0L3N0b3AgaW50byB0aGlzIHByaXZhdGUgZnVuY3Rpb24gaW5zdGVhZCBvZiBwYXJ0aWFsbHkKCSAgaW4gYWN0aXZhdGUgZnVuY3Rpb25zIGFuZCBwYXJ0aWFsbHkgaW4gdGhlIGNoYW5nZV9zdGF0ZSBmdW5jdGlvbi4KCSAgRml4ZXMgc2V0dXAgYmVmb3JlIHRoZSBlbGVtZW50IGhhcyBjaGFuZ2VkIGZyb20gUkVBRFktPlBBVVNFRCwgYXMKCSAgaXMgdGhlIGNhc2UgaW4gcHVsbC1tb2RlIHBpcGVsaW5lcy4KCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zaW5rX2FjdGl2YXRlX3B1c2gpCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc3JjX2FjdGl2YXRlX3B1bGwpOiBSZWZhY3RvciB0byB1c2UKCSAgZ3N0X2Jhc2VfdHJhbnNmb3JtX2FjdGl2YXRlKCkuCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKTogUmVtb3ZlZCwgbm90IG5lZWRlZCBhbnkgbW9yZS4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlX3NpbmtfbmVnb3RpYXRlX3B1bGwpOgoJICBUcnVuY2F0ZSBiZWZvcmUgZml4YXRpbmcuCgoyMDA3LTAxLTEyIDE4OjA2OjI5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlX3NpbmtfbmVnb3RpYXRlX3B1bGwpOiBEb24ndCBzZXRfY2FwcygpIGlmIHRoZSByZXN1bHQgb2YgZml4YXRpbmcgaXMgQU5ZLCBhcyBpdCcuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDEtMTIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX25lZ290aWF0ZV9wdWxsKToKCSAgRG9uJ3Qgc2V0X2NhcHMoKSBpZiB0aGUgcmVzdWx0IG9mIGZpeGF0aW5nIGlzIEFOWSwgYXMgaXQncyBub3QKCSAgc3VwcG9ydGVkLCBhbmQgbm90IG5lY2Vzc2FyeSBpbiB0aGUgY2FzZSBvZiBhIGxpbmsgd2l0aCBubwoJICB0ZW1wbGF0ZSBjYXBzIG9uIGVpdGhlciBzaWRlLiBGaXhlcyB0ZXN0cy9jaGVjay9saWJzL2Jhc2VzcmMgaW4KCSAgc29tZSBwdWxsLW1vZGUgdGVzdHMuCgoyMDA3LTAxLTEyIDE1OjU2OjAwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYyAoX0dzdEJhc2VUcmFuc2Zvcm1Qcml2YXRlKTogKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0LCBnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19hY3RpdmEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDEtMTIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKF9Hc3RCYXNlVHJhbnNmb3JtUHJpdmF0ZSk6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faW5pdCwgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfYWN0aXZhdGVfcHVzaCkKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zcmNfYWN0aXZhdGVfcHVsbCk6CgkgIFRyYWNrIHRoZSBhY3RpdmF0aW9uIG1vZGUuCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0Y2Fwcyk6IEluIHB1bGwgbW9kZSwgd2hlbiBhY3RpdmF0aW5nIHRoZQoJICBzcmMgcGFkLCBhZnRlciBhY3RpdmF0aW5nIHRoZSBzaW5rIHBhZCwgYWN0aXZhdGUgdGhlIHNpbmsgcGFkJ3MKCSAgcGVlciwgYXMgZGlzY3Vzc2VkIGluIHBhcnQtbmVnb3RpYXRpb24udHh0LgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfZml4YXRlKTogQWRkIGZpeGF0ZQoJICB2bWV0aG9kLCBhcyBpbiBiYXNlc2luay4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6IFJlZm9ybWF0IGRvY3MsIGFkZCBmaXhhdGUgdm1ldGhvZC4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlX3NpbmtfcGFkX3NldGNhcHMpOiBJbiBwdWxsCgkgIG1vZGUsIGZpcnN0IHByb3h5IHRoZSBzZXRjYXBzIHRvIHRoZSBwZWVyIHBhZC4KCSAgKGdzdF9iYXNlX3NpbmtfcGFkX2ZpeGF0ZSk6IEFkZCBhIGZpeGF0ZSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZQoJICBuZXcgZml4YXRlIHZtZXRob2QuCgkgIChnc3RfYmFzZV9zaW5rX2RlZmF1bHRfYWN0aXZhdGVfcHVsbCk6IFJlbmFtZSBmcm9tCgkgIGdzdF9iYXNlX3NpbmtfYWN0aXZhdGVfcHVsbC4KCSAgKGdzdF9iYXNlX3NpbmtfbmVnb3RpYXRlX3B1bGwpOiBOZXcgZnVuY3Rpb24sIHBlcmZvcm1zIG5lZ290aWF0aW9uCgkgIGluIHB1bGwgbW9kZSBiZWZvcmUgY2FsbGluZyA6OmFjdGl2YXRlX3B1bGwoKS4KCSAgKGdzdF9iYXNlX3NpbmtfcGFkX2FjdGl2YXRlX3B1bGwpOiBBY3R1YWxseSBjYWxsIHRoZSBhY3RpdmF0ZV9wdWxsCgkgIHZtZXRob2QgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4gSSBoYXZlIG5vIGlkZWEgaG93CgkgIHRoaXMgd29ya2VkIGJlZm9yZS4gTmVnb3RpYXRlIGJlZm9yZSBjYWxsaW5nIGFjdGl2YXRlX3B1bGwuCgoyMDA3LTAxLTEyIDE1OjQ4OjAwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfYWN0aXZhdGVfcHVsbCk6IFJlZnVzZSB0byBhY3RpdmF0ZSB1bmxpbmtlZCBzaW5rIHBhZHMgaW4gcHVsbCBtb2RlLiBJbiBhZGRpdGlvbiB0byBiZWluZyBjb3JyZWMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDEtMTIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2FjdGl2YXRlX3B1bGwpOiBSZWZ1c2UgdG8gYWN0aXZhdGUgdW5saW5rZWQKCSAgc2luayBwYWRzIGluIHB1bGwgbW9kZS4gSW4gYWRkaXRpb24gdG8gYmVpbmcgY29ycmVjdCwgZml4ZXMKCSAgZmlsZXNyYyAhIGRlY29kZWJpbiAhIGlkZW50aXR5ICEgZmFrZXNpbmsuCgkgIChnc3RfcGFkX2dldF9yYW5nZSwgZ3N0X3BhZF9wdWxsX3JhbmdlKTogRG9uJ3QgY2FsbAoJICBnc3RfcGFkX3NldF9jYXBzKCkgaWYgdGhlIGNhcHMgY2hhbmdlczsgaW5zdGVhZCBlcnJvciBvdXQgd2l0aAoJICBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRCwgYXMgZGlzY3Vzc2VkIGluIHBhcnQtbmVnb3RpYXRpb24udHh0LgoKMjAwNy0wMS0xMiAxNTozOTo1NyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1uZWdvdGlhdGlvbi50eHQ6IFVwZGF0ZSB3aXRoIG1vcmUgcG9saWN5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMS0xMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW5lZ290aWF0aW9uLnR4dDogVXBkYXRlIHdpdGggbW9yZSBwb2xpY3kuCgoyMDA3LTAxLTEyIDEyOjQ4OjI1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvY2hlY2svOiBBZGQgR19CRUdJTl9ERUNMUyBhbmQgR19FTkRfREVDTFMuIE1vdmUgR1NUX0NIRUNLX01BSU4gd2hlcmUgaXQgYmVsb25ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0YnVmZmVyc3RyYXcuaDoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOgoJICBBZGQgR19CRUdJTl9ERUNMUyBhbmQgR19FTkRfREVDTFMuIE1vdmUgR1NUX0NIRUNLX01BSU4gd2hlcmUgaXQKCSAgYmVsb25ncy4KCjIwMDctMDEtMTIgMTA6NTM6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IEFkZCBtaW5pbWFsIHVuaXQgdGVzdCBmb3IgYmVmb3JlbWVudGlvbmVkIEdzdFRhZ1NldHRlciBidWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R0YWdzZXR0ZXIuYzogKGdzdF9kdW1teV9lbmNfYWRkX2ludGVyZmFjZXMpLAoJICAoZ3N0X2R1bW15X2VuY19iYXNlX2luaXQpLCAoZ3N0X2R1bW15X2VuY19jbGFzc19pbml0KSwKCSAgKGdzdF9kdW1teV9lbmNfaW5pdCksICh0YWdfbGlzdF9mb3JlYWNoKSwgKHRhZ19zZXR0ZXJfbGlzdF9sZW5ndGgpLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3RhZ19zZXR0ZXJfc3VpdGUpOgoJICBBZGQgbWluaW1hbCB1bml0IHRlc3QgZm9yIGJlZm9yZW1lbnRpb25lZCBHc3RUYWdTZXR0ZXIgYnVnLgoKMjAwNy0wMS0xMiAxMDo0ODo0OSArMDAwMCAgUmVuw6kgU3RhZGxlciA8bWFpbEByZW5lc3RhZGxlci5kZT4KCgkgIGdzdC9nc3R0YWdzZXR0ZXIuYzogZ3N0X3RhZ19saXN0X21lcmdlKCkgcmV0dXJucyBhIG5ldyBsaXN0LCBzbyBpdCdzIG5vdCB0aGUgYmVzdCBpZGVhIHRvIGluZ29yZSBpdHMgcmV0dXJuIHZhbHVlLiBFZi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFJlbsOpIFN0YWRsZXIgPG1haWwgYXQgcmVuZXN0YWRsZXIgZG90IGRlPgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzogKGdzdF90YWdfc2V0dGVyX21lcmdlX3RhZ3MpOgoJICBnc3RfdGFnX2xpc3RfbWVyZ2UoKSByZXR1cm5zIGEgbmV3IGxpc3QsIHNvIGl0J3Mgbm90IHRoZSBiZXN0IGlkZWEKCSAgdG8gaW5nb3JlIGl0cyByZXR1cm4gdmFsdWUuIEVmZmVjdGl2ZWx5IG1lYW50IHRoYXQgdGFncyBjb3VsZCBvbmx5CgkgIGJlIG1lcmdlZCBvbiBhIEdzdFRhZ1NldHRlciBvbmNlIHVzaW5nIF9tZXJnZV90YWdzKCkuIEZpeGVzICMzOTU1NTQuCgkgIEFsc28gYWRkIGZ1bmN0aW9uIGd1YXJkIHRvIHJlcXVpcmUgYSBub24tTlVMTCB0YWdsaXN0IGFzIGlucHV0IChoYXMKCSAgYWx3YXlzIGJlZW4gc28gZHVlIHRvIGdzdF90YWdfbGlzdF9jb3B5KCksIGp1c3QgbWFraW5nIGl0IGV4cGxpY2l0KS4KCjIwMDctMDEtMTEgMTU6MDM6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3JhbmRvbS9kcmFmdC1taXNzaW5nLXBsdWdpbnMudHh0OiBTb21lIGFkZGl0aW9uczogbWVudGlvbiBuZXcgQVBJIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhdCB0aGUgdmFyaW91cyBzdGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vZHJhZnQtbWlzc2luZy1wbHVnaW5zLnR4dDoKCSAgU29tZSBhZGRpdGlvbnM6IG1lbnRpb24gbmV3IEFQSSB0aGF0IGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYXQgdGhlCgkgIHZhcmlvdXMgc3RhZ2VzOyBzaG9ydCBibG9iIGFib3V0IG5ldyBnc3QtaW5zcGVjdCBpbnRyb3NwZWN0aW9uCgkgIG9wdGlvbjsgbWVudGlvbiBwb3RlbnRpYWwgZnV0dXJlIHByb2JsZW0gd2l0aCBwbHVnaW5zIHRoYXQgaGF2ZQoJICBhIGR5bmFtaWMgbGlzdCBvZiBlbGVtZW50cyAoc3VjaCBhcyBsYWRzcGEsIHBpdGZkbGwsIGxpYnZpc3VhbCkuCgoyMDA3LTAxLTExIDE0OjE2OjIzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogQWRkIC0tcHJpbnQtcGx1Z2luLWF1dG8taW5zdGFsbC1pbmZvIG9wdGlvbiB0byBnc3QtaW5zcGVjdCwgc28gd2UgY2FuIGludHJvc3BlY3QgcGx1Z2luIGZpbGVzIGFuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIChwcmludF9wbHVnaW5fYXV0b21hdGljX2luc3RhbGxfaW5mb19jb2RlY3MpLAoJICAocHJpbnRfcGx1Z2luX2F1dG9tYXRpY19pbnN0YWxsX2luZm9fcHJvdG9jb2xzKSwKCSAgKHByaW50X3BsdWdpbl9hdXRvbWF0aWNfaW5zdGFsbF9pbmZvKSwgKG1haW4pOgoJICBBZGQgLS1wcmludC1wbHVnaW4tYXV0by1pbnN0YWxsLWluZm8gb3B0aW9uIHRvIGdzdC1pbnNwZWN0LCBzbyB3ZSBjYW4KCSAgaW50cm9zcGVjdCBwbHVnaW4gZmlsZXMgYW5kIGdldCBtYWNoaW5lLXBhcnNhYmxlIG91dHB1dCB0aGF0IGNvcnJlc3BvbmRzCgkgIHRvIHRoZSBsYXN0IGJpdCBvZiB0aGUgbWlzc2luZy1wbHVnaW4gaW5zdGFsbGVyIHN0cmluZyAoc21hbGwgZ290Y2hhOgoJICBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHJhbmtzKS4KCjIwMDctMDEtMTEgMTM6NDU6NTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNvbW1pdCBiaW5hcnkgcmVnaXN0cnkgKGRpc2FibGVkIGJ5IGRlZmF1bHQsIHNlZSAjMzU5NjUzKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfbG9va3VwX2ZlYXR1cmVfbG9ja2VkKSwKCSAgKGdzdF9yZWdpc3RyeV9sb29rdXBfbG9ja2VkKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuYzogKGdzdF9yZWdpc3RyeV9iaW5hcnlfd3JpdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9pbml0aWFsaXplX21hZ2ljKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfc2F2ZV9zdHJpbmcpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9zYXZlX3BhZF90ZW1wbGF0ZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X3NhdmVfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfd3JpdGVfY2FjaGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9jaGVja19tYWdpYyksCgkgIChnc3RfcmVnaXN0cnlfYmluYXJ5X2xvYWRfcGFkX3RlbXBsYXRlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV9iaW5hcnlfbG9hZF9wbHVnaW4pLAoJICAoZ3N0X3JlZ2lzdHJ5X2JpbmFyeV9yZWFkX2NhY2hlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnliaW5hcnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGxvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfeG1sX3JlYWRfY2FjaGUpOgoJICBjb21taXQgYmluYXJ5IHJlZ2lzdHJ5IChkaXNhYmxlZCBieSBkZWZhdWx0LCBzZWUgIzM1OTY1MykKCjIwMDctMDEtMTEgMTA6NDg6NTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6IEZpeCAnbWFrZSBjaGVjaycgdG9vLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6ICh0ZXN0X2dldF9hbGxvd2VkX2NhcHMpOgoJICBGaXggJ21ha2UgY2hlY2snIHRvby4KCjIwMDctMDEtMTAgMjE6MjQ6MDggKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OiBGaXggYSB0eXBvLCBhZGQgYSBjb3VwbGUgbm90ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA3LTAxLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OiBGaXggYSB0eXBvLCBhZGQgYSBjb3VwbGUKCSAgbm90ZXMuCgoyMDA3LTAxLTEwIDIxOjE1OjA4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LW5lZ290aWF0aW9uLnR4dDogVXBkYXRlIHdpdGgsIHVtLCBvbmUgd2F5IHRoYXQgcHVsbC1tb2RlIG5lZ290aWF0aW9uIG1pZ2h0IHdvcms/CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA3LTAxLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OiBVcGRhdGUgd2l0aCwgdW0sIG9uZSB3YXkgdGhhdAoJICBwdWxsLW1vZGUgbmVnb3RpYXRpb24gbWlnaHQgd29yaz8KCSAgKiBnc3QvZ3N0cGFkLmg6CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMpOiBSZW1vdmUgdGhlIHJlc3RyaWN0aW9uCgkgIHRoYXQgdGhlIHBhZCBtdXN0IGJlIGEgc3JjIHBhZDsgbWFrZXMgc2Vuc2UgdG8gY2FsbCBpdCB0aGUgb3RoZXIKCSAgd2F5IGluIHB1bGwgbW9kZSwgYW5kIHRoZSBsb2dpYyBpcyBzeW1tZXRyaWMgYW55d2F5LgoKMjAwNy0wMS0xMCAxOToyNTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogSW5jbHVkZSA8c3RkaW8uaD4gZm9yIGZzZWVrbygpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkgIEluY2x1ZGUgPHN0ZGlvLmg+IGZvciBmc2Vla28oKS4KCjIwMDctMDEtMTAgMTA6MjE6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuKjogUmVzZXJ2ZSBMQVRFTkNZIGV2ZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgUmVzZXJ2ZSBMQVRFTkNZIGV2ZW50LgoKMjAwNy0wMS0wOSAxODowOTo1NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OiBVcGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDoKCSAgVXBkYXRlcy4KCjIwMDctMDEtMDkgMTU6Mzg6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDogVXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtbGF0ZW5jeS50eHQ6CgkgIFVwZGF0ZXMuCgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgICogZ3N0L2dzdHRyYWNlLmM6CgkgIFNtYWxsIHR5cG8gZml4ZXMuCgoyMDA3LTAxLTA5IDE0OjM4OjExICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvY2hlY2svLmN2c2lnbm9yZTogSWdub3JlIHRlc3QtcmVnaXN0cnkueG1sIGFzIHdlbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrLy5jdnNpZ25vcmU6CgkgIElnbm9yZSB0ZXN0LXJlZ2lzdHJ5LnhtbCBhcyB3ZWxsLgoKMjAwNy0wMS0wOSAxMjozNDo0NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogdW5yZWYgZGF0YSBhdCB0aGUgZW5kIHdoZW4gd2UgYXJlIGRvbmUgd2l0aCB0aGUgcGFkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX3JlbW92ZV9wYWQpOgoJICB1bnJlZiBkYXRhIGF0IHRoZSBlbmQgd2hlbiB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBwYWQuCgoyMDA3LTAxLTA4IDIwOjMwOjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X3VwZGF0ZV9yZWdpc3RyeSgpICgjMzkxMjk2KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0LmM6IChsb2FkX3BsdWdpbl9mdW5jKSwgKHNjYW5fYW5kX3VwZGF0ZV9yZWdpc3RyeSksCgkgIChpbml0X3Bvc3QpLCAoZ3N0X2RlaW5pdCksIChnc3RfdXBkYXRlX3JlZ2lzdHJ5KToKCSAgKiBnc3QvZ3N0Lmg6CgkgIEFQSTogYWRkIGdzdF91cGRhdGVfcmVnaXN0cnkoKSAoIzM5MTI5NikuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgICogdGVzdHMvY2hlY2svZ3N0Ly5jdnNpZ25vcmU6CgkgIFNpbXBsZSB1bml0IHRlc3QgZm9yIHRoZSBhYm92ZS4KCjIwMDctMDEtMDggMTY6MjM6MDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnkuYzogUGx1Z2luIGV4dGVuc2lvbiBvbiBIUC1VWCBpcyAuc2wsIGFkZCB0aGF0IHRvIHRoZSBsaXN0IG9mIGFwcHJvdmVkIHBsdWdpbiBleHRlbnNpb25zIChzZWUgIzM5Mzc5NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCk6CgkgIFBsdWdpbiBleHRlbnNpb24gb24gSFAtVVggaXMgLnNsLCBhZGQgdGhhdCB0byB0aGUgbGlzdCBvZiBhcHByb3ZlZAoJICBwbHVnaW4gZXh0ZW5zaW9ucyAoc2VlICMzOTM3OTYpLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgdWxvbmcgPT4gZ3Vsb25nLiBGaXhlcyBjb21waWxhdGlvbiB3aXRoIEhQLVVYIGNvbXBpbGVyLgoJICAqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9wYXJzZS1sYXVuY2guYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRml4IGNvbXBpbGF0aW9uIGlmIHZhbGdyaW5kIGhlYWRlcnMgYXJlIG5vdCBhdmFpbGFibGUuCgoyMDA3LTAxLTA3IDEwOjIxOjMzICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjogQWRkIG5ldyBleHBvcnRlZCBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkgICogd2luMzIvdnM2L2xpYmdzdGJhc2UuZHNwOgoJICBBZGQgZ3N0ZGF0YXF1ZXVlLmMgdG8gdGhlIGJ1aWxkLgoJICAqIHdpbjMyL3ZzNi9saWJnc3Rjb3JlZWxlbWVudHMuZHNwOgoJICBBZGQgZ3N0bXVsdGlxdWV1ZS5jIHRvIHRoZSBidWlsZC4KCjIwMDctMDEtMDYgMTc6MTg6MDMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDogTmV3IEdzdEJhc2VTaW5rQ2xhc3Mgdm1ldGhvZCwgYWN0aXZhdGVfcHVsbCgpLCBwcm92aWRpbmcgZm9yIGEgd2F5IHRvIHNwZWNpYWxpemUgdGhlIHByby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNy0wMS0wNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6IE5ldyBHc3RCYXNlU2lua0NsYXNzIHZtZXRob2QsCgkgIGFjdGl2YXRlX3B1bGwoKSwgcHJvdmlkaW5nIGZvciBhIHdheSB0byBzcGVjaWFsaXplIHRoZSBwcm9jZXNzIG9mCgkgIHNwYXduaW5nIGEgdGhyZWFkIHRvIHB1bGwgb24gdGhlIHNpbmsgcGFkLiBUaGVyZSBpcyBhIGRlZmF1bHQKCSAgaW1wbGVtZW50YXRpb24uCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX3BhZF9hY3RpdmF0ZV9wdWxsKQoJICAoZ3N0X2Jhc2Vfc2lua19wYWRfYWN0aXZhdGVfcHVzaCwgZ3N0X2Jhc2Vfc2lua19wYWRfYWN0aXZhdGUpCgkgIChnc3RfYmFzZV9zaW5rX2luaXQpOiBSZW5hbWVkIHBhZCBhY3RpdmF0aW9uIGZ1bmN0aW9ucyAoaW5zZXJ0aW5nCgkgICJfcGFkIiBpbiB0aGVpciBuYW1lcykuIFJlZmFjdG9yIHRvIHVzZSB0aGUgbmV3IGFjdGl2YXRlX3B1bGwKCSAgdm1ldGhvZCwgYXMgYXBwcm9wcmlhdGUuCgkgIChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQsIGdzdF9iYXNlX3NpbmtfYWN0aXZhdGVfcHVsbCk6IFNldCB0aGUKCSAgZGVmYXVsdCBhY3RpdmF0ZV9wdWxsIGZ1bmN0aW9uIHRvIHN0YXJ0IGEgdGFzayBwdWxsaW5nIGZyb20gdGhlCgkgIHNpbmsgcGFkLCBhcyBiZWZvcmUuCgoyMDA3LTAxLTA2IDE3OjA5OjEwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfZ2V0X3JhbmdlLCBnc3RfcGFkX3B1bGxfcmFuZ2UpOiBTZXQgY2FwcyBvbiB0aGUgcGFkcyBpZiBuZWNlc3NhcnksIGFzIGluIHB1c2goKS9jaGFpbigpLiBVcGRhdGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDctMDEtMDYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2dldF9yYW5nZSwgZ3N0X3BhZF9wdWxsX3JhbmdlKTogU2V0IGNhcHMKCSAgb24gdGhlIHBhZHMgaWYgbmVjZXNzYXJ5LCBhcyBpbiBwdXNoKCkvY2hhaW4oKS4gVXBkYXRlIGRvY3MuCgkgIFNob3VsZG4ndCBhZmZlY3QgZXhpc3RpbmcgcHVsbCgpIHVzYWdlIGFzIGl0IGlzIGN1cnJlbnRseSBvbmx5CgkgIGJlaW5nIHVzZWQgb24gYnVmZmVycyB3aXRob3V0IGNhcHMuCgoyMDA3LTAxLTA1IDE2OjM2OjM2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBDYWxsIGdfdGhyZWFkX2luaXQoKSBmaXJzdCB0aGluZyBpbiBnc3RfaW5pdCgpIC8gZ3N0X2NoZWNrX2luaXQoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCksIChnc3RfaW5pdF9jaGVjayksCgkgIChpbml0X3ByZSk6CgkgIENhbGwgZ190aHJlYWRfaW5pdCgpIGZpcnN0IHRoaW5nIGluIGdzdF9pbml0KCkgLyBnc3RfY2hlY2tfaW5pdCgpLgoJICBXaGVuIGluaXRpYWxpc2F0aW9uIGlzIGRvbmUgdmlhIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAoKSBhbmQKCSAgR09wdGlvbiBwYXJzaW5nLCBpc3N1ZSBhIHdhcm5pbmcgaWYgdGhlIEdMaWIgdGhyZWFkIHN5c3RlbSBoYXMgbm90CgkgIGJlZW4gaW5pdGlhbGlzZWQgeWV0IGJ5IHRoZSB0aW1lIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAoKSBpcwoJICBjYWxsZWQsIGFzIGl0J3MgcXVpdGUgbGlrZWx5IG90aGVyIEdMaWIgZnVuY3Rpb25zIHN1Y2ggYXMKCSAgZ19vcHRpb25fY29udGV4dF9uZXcoKSBoYXZlIGJlZW4gY2FsbGVkIGFscmVhZHkgdGhlbiwgYW5kCgkgIGdfdGhyZWFkX2luaXQoKSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIEdMaWIgZnVuY3Rpb24uIFRoZQoJICBhcHBsaWNhdGlvbiBpbiBxdWVzdGlvbiBtdXN0IGJlIGZpeGVkIGluIHRoYXQgY2FzZSwgc2luY2UgbWVtb3J5CgkgIGNvcnJ1cHRpb24gbWlnaHQgaGFwcGVuIG90aGVyd2lzZS4KCSAgV2UgaXNzdWUgdGhlIHdhcm5pbmcgYmVjYXVzZSBldmVuIGlmIHRoZSBHTGliIGZvbGtzIGRlY2lkZSB0byB3b3JrCgkgIGFyb3VuZCB0aGUgcHJvYmxlbSBvbiB0aGVpciBlbmQgaW4gZnV0dXJlLCB0aGlzIGlzIHN0aWxsIGFuIGlzc3VlCgkgIHdpdGggYWxsIEdMaWIgdmVyc2lvbnMgPj0gMi4xMC4wLCBzbyB3ZSBzaG91bGQgd2FybiB1bnRpbCB3ZSBkZXBlbmQKCSAgb24gYSBHTGliIHZlcnNpb24gd2Uga25vdyB0byBiZSBzYWZlLgoJICBVcGRhdGUgZG9jdW1lbnRhdGlvbiBhcyB3ZWxsLgoJICBDbG9zZXMgYnVnICMzOTEyNzguCgoyMDA3LTAxLTA1IDE1OjU1OjE2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvOiBDYWxsIGdfdGhyZWFkX2luaXQoKSByZWFsbHkgcmVhbGx5IGVhcmx5LCBiZWZvcmUgYW55IG90aGVyIEdMaWIgZnVuY3Rpb24gKHNlZSAjMzQyNTY0IGFuZCByZWNlbnQgZGlzY3Vzc2lvbiBvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChtYWluKToKCSAgQ2FsbCBnX3RocmVhZF9pbml0KCkgcmVhbGx5IHJlYWxseSBlYXJseSwgYmVmb3JlIGFueSBvdGhlciBHTGliCgkgIGZ1bmN0aW9uIChzZWUgIzM0MjU2NCBhbmQgcmVjZW50IGRpc2N1c3Npb24gb24gZ3RrLWRldmVsLWxpc3QpLgoKMjAwNy0wMS0wNSAxMzoyMzowMiArMDAwMCAgVmluY2VudCBUb3JyaSA8dnRvcnJpQHVuaXYtZXZyeS5mcj4KCgkgIGdzdC86IE9uIHdpbjMyLCBhbGwgdGhlIF9fZGVjbHNwZWMgc3R1ZmYgZm9yIHN5bWJvbCBleHBvcnRpbmcgaXMgYXBwYXJlbnRseSBvbmx5IG5lZWRlZCB3aXRoIE1TVkMsIGJ1dCBkb2Vzbid0IHdvcmsgdy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFZpbmNlbnQgVG9ycmkgIDx2dG9ycmkgYXQgdW5pdi1ldnJ5IGRvdCBmcj4KCSAgKiBnc3QvZ3N0X3ByaXZhdGUuaDoKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgICogZ3N0L2dzdGluZm8uaDoKCSAgT24gd2luMzIsIGFsbCB0aGUgX19kZWNsc3BlYyBzdHVmZiBmb3Igc3ltYm9sIGV4cG9ydGluZyBpcwoJICBhcHBhcmVudGx5IG9ubHkgbmVlZGVkIHdpdGggTVNWQywgYnV0IGRvZXNuJ3Qgd29yayB3aXRoIE1pbmdXLgoJICBGaXhlcyBjb21waWxhdGlvbiB3aXRoIE1pbmdXIGFuZCAjMzkxOTA5LgoKMjAwNy0wMS0wNSAxMTo1Nzo0OSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBDaGFuZ2Ugc29tZSBHU1RfRVJST1JfT0JKRUNUIHRoYXQgYXJlbid0IHJlYWxseSBlcnJvcnMgdG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIENoYW5nZSBzb21lIEdTVF9FUlJPUl9PQkpFQ1QgdGhhdCBhcmVuJ3QgcmVhbGx5IGVycm9ycyB0bwoJICBHU1RfV0FSTklOR19PQkpFQ1QgaW4gb3JkZXIgdG8gcmVkdWNlIHRlcm1pbmFsIHNwYW0uCgoyMDA3LTAxLTA0IDEzOjU0OjI1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbTogZGlzYWJsZSB0ZXN0IGFnYWluLCBhcyB0aGVyZSBzZWVtIHRvIGJlIHN0aWxsIHJhY2UgcHJvYmxlbXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGRpc2FibGUgdGVzdCBhZ2FpbiwgYXMgdGhlcmUgc2VlbSB0byBiZSBzdGlsbCByYWNlIHByb2JsZW1zCgoyMDA3LTAxLTA0IDEzOjM3OjA4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IGVuYWJsZSBxdWV1ZSB0ZXN0IGFnYWluLCBhZGQgdGVzdHMgZm9yIHRoZSBsZWFreSBiZWhhdmlvdXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvcXVldWUuYzogKHF1ZXVlX292ZXJydW4pLCAocXVldWVfdW5kZXJydW4pLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAocXVldWVfc3VpdGUpOgoJICBlbmFibGUgcXVldWUgdGVzdCBhZ2FpbiwgYWRkIHRlc3RzIGZvciB0aGUgbGVha3kgYmVoYXZpb3VyCgoyMDA3LTAxLTAyIDE3OjAxOjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQ29tcGlsZSBhZGFwdGVyIHRlc3QvZXhhbXBsZSBvbmx5IGlmIHRoZSByZXF1aXJlZCBoZWFkZXJzIGFyZSBhdmFpbGFibGUgKGZpeGVzICMzOTE5MTUpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkgIENvbXBpbGUgYWRhcHRlciB0ZXN0L2V4YW1wbGUgb25seSBpZiB0aGUgcmVxdWlyZWQgaGVhZGVycyBhcmUKCSAgYXZhaWxhYmxlIChmaXhlcyAjMzkxOTE1KS4KCjIwMDctMDEtMDIgMDk6MzE6NDUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIHRlbGwgdXMgd2hhdCdzIG5vdCBpbXBsZW1lbnRlZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVsbCB1cyB3aGF0J3Mgbm90IGltcGxlbWVudGVkCgoyMDA3LTAxLTAyIDA5OjMxOjExICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgYnVtcCB0byBDVlMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJ1bXAgdG8gQ1ZTCgoyMDA3LTAxLTAyIDA2OjE0OjA2ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RwbHVnaW4uYzogUmVzdG9yZSB0aGUgcHJldmlvdXMgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR1NFR1YgaW5zdGVhZCBvZiBzZXR0aW5nIHRvIGRlZmF1bHQsIHNpbmNlIHdlIG1heSBoYXZlIHN0by4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgIFJlc3RvcmUgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyIGZvciBTSUdTRUdWIGluc3RlYWQgb2YKCSAgc2V0dGluZyB0byBkZWZhdWx0LCBzaW5jZSB3ZSBtYXkgaGF2ZSBzdG9sZW4gaXQgYXdheSBmcm9tCgkgIHNvbWVvbmUuICAoaS5lLiwgTW9ubykKCjIwMDYtMTItMjYgMTU6NTU6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3JhbmRvbS9kcmFmdC1taXNzaW5nLXBsdWdpbnMudHh0OiBTb21lIHNtYWxsIGFkZGl0aW9ucyBhbmQgY2xhcmlmaWNhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2RyYWZ0LW1pc3NpbmctcGx1Z2lucy50eHQ6CgkgIFNvbWUgc21hbGwgYWRkaXRpb25zIGFuZCBjbGFyaWZpY2F0aW9ucy4KCjIwMDYtMTItMjYgMTU6MDY6NTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogTWFrZSBzdXJlIHdlIGRvbid0IHBhc3Mgbm9uLVVURi04IHN0cmluZ3MgdG8gZ19tYXJrdXBfZXNjYXBlKCksIHNpbmNlIHRoYXQgY2FuIGxlYWQgdG8gcmFuZG9tIG0uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChnc3RfcmVnaXN0cnlfc2F2ZV9lc2NhcGVkKToKCSAgTWFrZSBzdXJlIHdlIGRvbid0IHBhc3Mgbm9uLVVURi04IHN0cmluZ3MgdG8gZ19tYXJrdXBfZXNjYXBlKCksCgkgIHNpbmNlIHRoYXQgY2FuIGxlYWQgdG8gcmFuZG9tIG1lbW9yeSBjb3JydXB0aW9ucyBhbmQgY3Jhc2hlcwoJICAobWF5IG9yIG1heSBub3QgYmUgcmVsYXRlZCB0byAjMzgzMjQ0LCAjMzg2NzExLCBhbmQgIzM4NjcxMSkuCgoyMDA2LTEyLTIxIDE1OjU0OjA2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IHN5bmMgLmN2c2lnbm9tZSBhbmQgQ0xFQU5GSUxFUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBzeW5jIC5jdnNpZ25vbWUgYW5kIENMRUFORklMRVMKCjIwMDYtMTItMjEgMTU6MzI6MDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOiBmaXggZGlzdGNoZWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBmaXggZGlzdGNoZWNrCgoyMDA2LTEyLTIxIDE1OjAwOjA4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6IHR3byB0aW55IGFkZGl0aW9uYWwgY29tbWVudHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zdGF0ZXMudHh0OgoJICB0d28gdGlueSBhZGRpdGlvbmFsIGNvbW1lbnRzCgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBkb2MgZml4aW5nCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvcXVldWUuYzogKHF1ZXVlX292ZXJydW4pLCAocXVldWVfdW5kZXJydW4pLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICBkaXNhYmxlIHRlc3QgZm9yIG5vdywgdW5sZXNzIGl0IGdldHMgZml4ZWQKCjIwMDYtMTItMjEgMTQ6MjQ6NTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3F1ZXVlLmM6IGZpeCByYWNlIGluIHVuZGVycnVuIHRlc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvcXVldWUuYzogKHF1ZXVlX292ZXJydW4pLCAocXVldWVfdW5kZXJydW4pLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICBmaXggcmFjZSBpbiB1bmRlcnJ1biB0ZXN0CgoyMDA2LTEyLTIxIDA5OjU4OjI1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9lbGVtZW50cy8uY3ZzaWdub3JlOiBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy8uY3ZzaWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3F1ZXVlLmM6IChxdWV1ZV9vdmVycnVuKSwgKHF1ZXVlX3VuZGVycnVuKSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgdHJ5IHRvIG5hcnJvdyB0ZXN0IGZhaWx1cmUKCjIwMDYtMTItMjEgMDk6Mzc6NTYgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IFVzZSBnX3JhbmRvbV9pbnRfcmFuZ2UoKSwgc2luY2UgaXQgcHJvZHVjZXMgYmV0dGVyIHJhbmRvbSBudW1iZXJzIGluIGEgcmFuZ2UgdGhhbiBhbG1vLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBVc2UgZ19yYW5kb21faW50X3JhbmdlKCksIHNpbmNlIGl0IHByb2R1Y2VzIGJldHRlciByYW5kb20KCSAgbnVtYmVycyBpbiBhIHJhbmdlIHRoYW4gYWxtb3N0LWNvcnJlY3QgZmxvYXRpbmcgcG9pbnQgY29kZS4KCjIwMDYtMTItMjEgMDg6MTI6MjggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IGRvIG5vdCBhdXRvbWF0aWNhbGx5IChkZSlhY3RpdmF0ZSBwYWRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZCksCgkgIChnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCksIChnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQpLAoJICAoZ3N0X2NoZWNrX3RlYXJkb3duX3NpbmtfcGFkKToKCSAgZG8gbm90IGF1dG9tYXRpY2FsbHkgKGRlKWFjdGl2YXRlIHBhZHMKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9xdWV1ZS5jOiAocXVldWVfb3ZlcnJ1biksIChxdWV1ZV91bmRlcnJ1biksCgkgIChzZXR1cF9xdWV1ZSksIChjbGVhbnVwX3F1ZXVlKSwgKEdTVF9TVEFSVF9URVNUKSwgKHF1ZXVlX3N1aXRlKToKCSAgYWRkIG5ldywgeWV0IHNpbXBsZSB0ZXN0cyBmb3IgcXVldWUKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlc3JjLmM6IChjbGVhbnVwX2Zha2VzcmMpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zkc3JjLmM6IChjbGVhbnVwX2Zkc3JjKToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9maWxlc3JjLmM6IChjbGVhbnVwX2ZpbGVzcmMpLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6IChjbGVhbnVwX2lkZW50aXR5KToKCSAgY29uc2lzdGVudCBwYWQgKGRlKWFjdGl2YXRpb24KCjIwMDYtMTItMjAgMTk6MDY6MDIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNpcmN1bGFyLWNoYW9zLm9yZz4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogRml4IHR3byBkb2MgdHlwb3MgKCMzODc4NjYpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNlYmFzdGlhbiBEcsO2Z2UgIDxzbG9tbyB1YnVudHUgY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSAgRml4IHR3byBkb2MgdHlwb3MgKCMzODc4NjYpLgoKMjAwNi0xMi0xOSAxNTowNjo0MiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRwYXJhbXMueG1sOiBGaXggdHlwbyAoZ19vYmplY3RfY29udHJvbF9wcm9wZXJ0aWVzKCkgZG9lc24ndCBleGlzdCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRwYXJhbXMueG1sOgoJICBGaXggdHlwbyAoZ19vYmplY3RfY29udHJvbF9wcm9wZXJ0aWVzKCkgZG9lc24ndCBleGlzdCkuCgoyMDA2LTEyLTE5IDEyOjM4OjAwICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYzogRmluZSB0dW5lIHRoZSBjYXNlcyB3aGVyZSB0aGUgc2VnbWVudCBzdGFydC9zdG9wIHZhbHVlcyBhcmUgcmVhbGx5IHVwZGF0ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfc2Vlayk6CgkgIEZpbmUgdHVuZSB0aGUgY2FzZXMgd2hlcmUgdGhlIHNlZ21lbnQgc3RhcnQvc3RvcCB2YWx1ZXMgYXJlIHJlYWxseQoJICB1cGRhdGVkLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCB0ZXN0cyBmb3IgdGhlIHJldHVybiB2YWx1ZXMgb2YgZ3N0X3NlZ21lbnRfc2V0X3NlZWsoKS4KCjIwMDYtMTItMTkgMTE6MDQ6NDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IERvY3MgdHlwbyBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgRG9jcyB0eXBvIGZpeC4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfY2xhc3NfaW5pdCksCgkgIChnc3RfcXVldWVfaW5pdCk6CgkgIEZpeCBpbmNvcnJlY3QgZG9jdW1lbnRhdGlvbiBhbmQgZmxlc2ggaXQgb3V0IGEgYml0IG1vcmUuCgkgIFNldCBkZWZhdWx0IHZhbHVlcyBmb3IgdGhlIG1heCBwcm9wZXJ0aWVzIG9uIHRoZSBHUGFyYW1TcGVjIGFzIHdlbGwsCgkgIHNvIGl0IHNob3dzIHVwIGNvcnJlY3RseSBpbiBnc3QtaW5zcGVjdC4KCjIwMDYtMTItMTggMTY6MDE6MzIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogQ29ycmVjdCBkb2NzIG9mIHF1ZXVlLCBhZGQgbW9yZSBkZXRhaWwgYW5kIGNyb3NzbGluayBpdCBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChxdWV1ZV9sZWFreV9nZXRfdHlwZSk6CgkgIENvcnJlY3QgZG9jcyBvZiBxdWV1ZSwgYWRkIG1vcmUgZGV0YWlsIGFuZCBjcm9zc2xpbmsgaXQgbW9yZS4KCjIwMDYtMTItMTYgMTk6MzM6MjYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IFByaW50IGFkZGl0aW9uYWwgZGVidWcgaW5mbyB3aGVuIHRoZSBzdHJlYW0gaXNuJ3QgcGVyZmVjdGx5IHRpbWVzdGFtcGVkOyBkb24ndCB0cnkgdG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NoZWNrX3BlcmZlY3QpOgoJICBQcmludCBhZGRpdGlvbmFsIGRlYnVnIGluZm8gd2hlbiB0aGUgc3RyZWFtIGlzbid0IHBlcmZlY3RseQoJICB0aW1lc3RhbXBlZDsgZG9uJ3QgdHJ5IHRvIHVzZSBpbnZhbGlkIGR1cmF0aW9ucy4KCjIwMDYtMTItMTYgMTY6MTQ6MDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9NYWtlZmlsZS5hbTogRGlzdCBuZXcgZGVzaWduIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJICBEaXN0IG5ldyBkZXNpZ24gZG9jcy4KCjIwMDYtMTItMTYgMTU6MTc6NTQgKzAwMDAgIFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuKjogQWRkIHJlZmNvdW50aW5nIHRvIHRoZSBjb2xsZWN0cGFkcyBkYXRhIHNvIHdlIGNhbiB0cmFjayB3aGVuIGl0J3Mgc2FmZSB0byBmcmVlIHRoZSBkYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNqb2VyZCBTaW1vbnMgPHNqb2VyZCBhdCBsdW9uIGRvdCBuZXQ+CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAocmVmX2RhdGEpLCAodW5yZWZfZGF0YSksCgkgIChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQpLCAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCksIChnc3RfY29sbGVjdF9wYWRzX2V2ZW50KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfY2hhaW4pOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgQWRkIHJlZmNvdW50aW5nIHRvIHRoZSBjb2xsZWN0cGFkcyBkYXRhIHNvIHdlIGNhbiB0cmFjayB3aGVuIGl0J3Mgc2FmZQoJICB0byBmcmVlIHRoZSBkYXRhLiBGaXhlcyAjMzgzMzgyLgoKMjAwNi0xMi0xNSAxNzowOTo1OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogQXV0b21hdGljYWxseSBhY3RpdmF0ZS9kZWFjdGl2YXRlIHBhZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIHN0YXJ0ZWQvc3RvcGVkIGNvbGxlYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKToKCSAgQXV0b21hdGljYWxseSBhY3RpdmF0ZS9kZWFjdGl2YXRlIHBhZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhCgkgIHN0YXJ0ZWQvc3RvcGVkIGNvbGxlY3RwYWRzLgoKMjAwNi0xMi0xNSAxNjowMTo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFNldCBwYWRzIHRvIEZMVVNISU5HIHdoZW4gdGhleSBhcmUgY3JlYXRlZC4gQ2hlY2ssIHdhcm4gYW5kIGZpeCB3aGVuIGEgZGVtdXhlciBhZGRzIGFuIGluYWN0aXZlIHBhZCB0byBpdHNlbGYgdy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfYWRkX3BhZCk6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX25ld19mdWxsKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2luaXQpOgoJICBTZXQgcGFkcyB0byBGTFVTSElORyB3aGVuIHRoZXkgYXJlIGNyZWF0ZWQuIENoZWNrLCB3YXJuIGFuZCBmaXggd2hlbiBhCgkgIGRlbXV4ZXIgYWRkcyBhbiBpbmFjdGl2ZSBwYWQgdG8gaXRzZWxmIHdoZW4gcnVubmluZy4gRml4ZXMgIzMzOTMyNi4KCjIwMDYtMTItMTUgMTU6NDk6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBFeHBvc2UgZGVmYXVsdCBlbGVtZW50IHNlbmRfZXZlbnQgYW5kIHF1ZXJ5IGhhbmRsaW5nIGFzIHZtZXRob2RzIHRoYXQgc3ViY2xhc3NlcyBjYW4gY2hhaW4gdXAgdG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X2RlZmF1bHRfc2VuZF9ldmVudCksIChnc3RfZWxlbWVudF9zZW5kX2V2ZW50KSwKCSAgKGdzdF9lbGVtZW50X2RlZmF1bHRfcXVlcnkpLCAoZ3N0X2VsZW1lbnRfcXVlcnkpOgoJICBFeHBvc2UgZGVmYXVsdCBlbGVtZW50IHNlbmRfZXZlbnQgYW5kIHF1ZXJ5IGhhbmRsaW5nIGFzIHZtZXRob2RzIHRoYXQKCSAgc3ViY2xhc3NlcyBjYW4gY2hhaW4gdXAgdG8uCgoyMDA2LTEyLTE1IDE1OjM5OjI4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogU21hbGwgZG9jdW1lbnRhdGlvbiBmaXhlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9zdGF0ZV9mdW5jKToKCSAgU21hbGwgZG9jdW1lbnRhdGlvbiBmaXhlcy4KCjIwMDYtMTItMTUgMTU6MjY6NDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1sYXRlbmN5LnR4dDogQ2hlY2tlZCBpbiBkcmFmdCBmb3IgaGFuZGxpbmcgbGF0ZW5jeSBpbiBwaXBlbGluZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWxhdGVuY3kudHh0OgoJICBDaGVja2VkIGluIGRyYWZ0IGZvciBoYW5kbGluZyBsYXRlbmN5IGluIHBpcGVsaW5lcy4KCjIwMDYtMTItMTUgMDA6MTY6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgYWRkaW5nIC5kb2FwIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgICogZ3N0cmVhbWVyLmRvYXA6CgkgICogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIGFkZGluZyAuZG9hcCBmaWxlCgoyMDA2LTEyLTE0IDE0OjA2OjM4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBpbml0X3ByZSgpIGFuZCBpbml0X3Bvc3QoKSBtaWdodCBiZSBjYWxsZWQgdmlhIG91ciBHT3B0aW9uR3JvdXAgb3IgZnJvbSBnc3RfaW5pdCgpLCBhbmQgd2Ugc2hvdWxkIHNraXAgYm90Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcHJlKSwgKGluaXRfcG9zdCk6CgkgIGluaXRfcHJlKCkgYW5kIGluaXRfcG9zdCgpIG1pZ2h0IGJlIGNhbGxlZCB2aWEgb3VyIEdPcHRpb25Hcm91cCBvcgoJICBmcm9tIGdzdF9pbml0KCksIGFuZCB3ZSBzaG91bGQgc2tpcCBib3RoIG9mIHRoZW0gaWYgd2UndmUgYWxyZWFkeQoJICBiZWVuIGluaXRpYWxpc2VkLCBvdGhlcndpc2Ugd2Ugd2lsbCBpbml0IHNvbWUgdGhpbmdzIHR3aWNlIG9yIGFkZAoJICB0d28gZGVmYXVsdCBsb2cgZnVuY3Rpb25zLgoKMjAwNi0xMi0xMyAxMjo0NjoyOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGRvY3MvbWFudWFsL2Jhc2ljcy1idXMueG1sOiBObywgZ3N0X21haW5fbG9vcCBkb2VzIG5vdCBleGlzdC4gSXRzIGdfbWFpbl9sb29wLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYnVzLnhtbDoKCSAgTm8sIGdzdF9tYWluX2xvb3AgZG9lcyBub3QgZXhpc3QuIEl0cyBnX21haW5fbG9vcC4KCSAgRGlzY292ZXJlZCBieSBzb21lYm9keSB3aG8gYWJ1c2VkIHRoZSBjb3B5LXBhc3RlIHRlY2huaXF1ZSBvZiBjb2RpbmcgOikKCjIwMDYtMTItMTMgMTE6MDU6MjAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogTG9nIGdob3N0cGFkIGRlYnVnIHN0dWZmIHRvIHRoZSBHU1RfUEFEUyBjYXRlZ29yeSBhcyB3ZWxsIHJhdGhlciB0aGFuIGp1c3QgdG8gdGhlIGRlZmF1bHQgY2F0ZWdvcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICBMb2cgZ2hvc3RwYWQgZGVidWcgc3R1ZmYgdG8gdGhlIEdTVF9QQURTIGNhdGVnb3J5IGFzIHdlbGwgcmF0aGVyCgkgIHRoYW4ganVzdCB0byB0aGUgZGVmYXVsdCBjYXRlZ29yeS4KCjIwMDYtMTItMTIgMTM6NTM6MDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBZGQgc29tZSBiYXNpYyBzeXN0ZW0gZGV0YWlscyBzdWNoIGFzIE9TIGFuZCBhcmNoaXRlY3R1cmUgdG8gdGhlIGRlYnVnIG91dHB1dCBpZiBwb3NzaWJsZSwgY291cnRlc3kgb2YgdW5hbWUoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcHJlKToKCSAgQWRkIHNvbWUgYmFzaWMgc3lzdGVtIGRldGFpbHMgc3VjaCBhcyBPUyBhbmQgYXJjaGl0ZWN0dXJlCgkgIHRvIHRoZSBkZWJ1ZyBvdXRwdXQgaWYgcG9zc2libGUsIGNvdXJ0ZXN5IG9mIHVuYW1lKCkuCgoyMDA2LTEyLTExIDEzOjQwOjMyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9nc3QvcnVubmluZy54bWw6IERvY3VtZW50IEdTVF9SRUdJU1RSWV9GT1JLIGFuZCBHU1RfREVCVUdfTk9fQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9ydW5uaW5nLnhtbDoKCSAgRG9jdW1lbnQgR1NUX1JFR0lTVFJZX0ZPUksgYW5kIEdTVF9ERUJVR19OT19DT0xPUgoJICBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgoyMDA2LTEyLTA5IDIwOjIzOjEwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogSXQgaXMgYWNjZXB0YWJsZSB0byBoYXZlIGEgcmVmY291bnQgb2YgMiBvciAzIGF0IHRoaXMgcG9pbnQgaW4gdGhlIHRlc3QsIGJlY2F1c2UgdGhlIHBpcGVsaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEl0IGlzIGFjY2VwdGFibGUgdG8gaGF2ZSBhIHJlZmNvdW50IG9mIDIgb3IgMyBhdCB0aGlzIHBvaW50IGluIHRoZQoJICB0ZXN0LCBiZWNhdXNlIHRoZSBwaXBlbGluZSBtaWdodCBiZSBqdXN0IHBvc3RpbmcgaXRzIHN0YXRlX2NoYW5nZQoJICBtZXNzYWdlLiBUaGUgbmV4dCBsaW5lIHRoZW4gd2FpdHMgZm9yIHRoYXQgbWVzc2FnZSB0byBhcHBlYXIgdXNpbmcKCSAgYnVzX3BvbGwsIHNvIHRoYXQgc2hvdWxkIGJlIGZpbmUgdG9vLgoKMjAwNi0xMi0wOSAxODo0ODo1NyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0LmM6IElnbm9yZSBFSU5UUiB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgY2hpbGQgcmVnaXN0cnkgcGlwZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnlfZm9ya2luZyk6CgkgIElnbm9yZSBFSU5UUiB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgY2hpbGQgcmVnaXN0cnkgcGlwZS4KCSAgRXhwbGljaXRseSBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGNsb3NlLCBzaW5jZSBpdCBtYWtlcyBubwoJICBkaWZmZXJlbmNlLgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfbWluaV9vYmplY3RfcmVmKSwKCSAgKGdzdF9taW5pX29iamVjdF91bnJlZik6CgkgIFdoZW4gZGVidWdnaW5nIHJlZmNvdW50cywgY2hlY2sgR1NUX0lTX01JTklfT0JKRUNUIGFuZCB3YXJuLgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoX3ByaXZfZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9jYWNoZV9wbHVnaW5zKToKCSAgV2hlbiByZW1vdmluZyBjYWNoZWQgcGx1Z2lucywgcmVtb3ZlIHRoZWlyIGZlYXR1cmVzIHRvbywgc28gdGhleSdyZQoJICBub3QgdmlzaWJsZSBhZnRlciB0aGV5J3ZlIGRpc2FwcGVhcmVkLgoJICAqIGdzdC9nc3R1dGlscy5jOiAocHJlcGFyZV9saW5rX21heWJlX2dob3N0aW5nKToKCSAgSW4gdGhlIHVubGlrZWx5IGNhc2UgdGhhdCB3ZSBhcmUgbGlua2luZyBwYWRzIHdpdGggbm8gcGFyZW50cywgZG9uJ3QKCSAgY3Jhc2ggdHJ5aW5nIHRvIGdldCB0aGUgbm9uLWV4aXN0ZW50IHBhcmVudCBiaW4uCgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgT3V0cHV0IGRlYnVnIGluIHRoZSBQSVBFTElORSBjYXRlZ29yeQoKMjAwNi0xMi0wOCAxNjoxMjo0NCArMDAwMCAgUmVuw6kgU3RhZGxlciA8bWFpbEByZW5lc3RhZGxlci5kZT4KCgkgIGdzdC9nc3RjbG9jay5jOiBSZWplY3QgaW52YWxpZCBjbG9jayB0aW1lcyBmb3IgaW50ZXJ2YWwgb2YgcGVyaW9kaWMgaWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFJlbsOpIFN0YWRsZXIgPG1haWwgYXQgcmVuZXN0YWRsZXIgZG90IGRlPgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX25ld19wZXJpb2RpY19pZCk6CgkgIFJlamVjdCBpbnZhbGlkIGNsb2NrIHRpbWVzIGZvciBpbnRlcnZhbCBvZiBwZXJpb2RpYyBpZHMuCgkgIEZpeGVzICMjMzgzNTA2LgoKMjAwNi0xMi0wNyAxMjoxMToxNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBGaXggcmVmY291bnRpbmcgb2YgZ3N0X3BsdWdpbl9mZWF0dXJlX2xvYWQgdG8gbWF0Y2ggdGhlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jcmVhdGUpOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfbG9hZCk6CgkgICogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOiAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2NhbGxfZnVuY3Rpb24pOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X2luZm8pOgoJICBGaXggcmVmY291bnRpbmcgb2YgZ3N0X3BsdWdpbl9mZWF0dXJlX2xvYWQgdG8gbWF0Y2ggdGhlIGRvY3MuCgkgIEZpeGVzOiAjMzgwMTI5CgoyMDA2LTEyLTA3IDEwOjU5OjA1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJbXByb3ZlIGRlYnVnZ2luZyBvZiBldmVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBJbXByb3ZlIGRlYnVnZ2luZyBvZiBldmVudHMuCgoyMDA2LTEyLTA3IDEwOjUxOjM2ICswMDAwICBSZW7DqSBTdGFkbGVyIDxtYWlsQHJlbmVzdGFkbGVyLmRlPgoKCSAgZ3N0L2dzdGNsb2NrLmM6IE1ha2UgcGVyaW9kIGlkcyBhZGQgdGhlIGludGVydmFsIHRvIHRoZSBvcmlnaWFsIHJlcXVlc3RlZCB0aW1lIGluc3RlYWQgb2YgdGhlIHBvc3NpYmx5IHVwZGF0ZWQgdGltZSB3Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUmVuw6kgU3RhZGxlciA8bWFpbCBhdCByZW5lc3RhZGxlciBkb3QgZGU+CgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfaWRfd2FpdCk6CgkgIE1ha2UgcGVyaW9kIGlkcyBhZGQgdGhlIGludGVydmFsIHRvIHRoZSBvcmlnaWFsIHJlcXVlc3RlZCB0aW1lIGluc3RlYWQKCSAgb2YgdGhlIHBvc3NpYmx5IHVwZGF0ZWQgdGltZSB3aGljaCBjYW4gYmUgd3Jvbmcgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUKCSAgd2FpdGVycyBmb3IgdGhlIHNhbWUgaWQuIEZpeGVzICMzODI1OTIuCgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2FzeW5jX3RocmVhZCksCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX2lkX3dhaXRfaml0dGVyX3VubG9ja2VkKSwKCSAgKGdzdF9zeXN0ZW1fY2xvY2tfaWRfd2FpdF9qaXR0ZXIpOgoJICBGaXggcmVzdGFydCBpbiB0aGUgYXN5bmMgbm90aWZ5IHRocmVhZCB3aGVuIGFuIGFzeW5jIGVudHJ5IGlzIGFkZGVkIHRvCgkgIHRoZSBmcm9udCBvZiB0aGUgbGlzdC4gRml4ZXMgIzM4MTQ5Mi4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzogKHN0b3JlX2NhbGxiYWNrKSwKCSAgKG5vdGlmeV9jYWxsYmFjayksIChHU1RfU1RBUlRfVEVTVCksIChnc3Rfc3lzdGVtY2xvY2tfc3VpdGUpOgoJICBBZGRlZCB0ZXN0IGZvciBtdWx0aXBsZSBhc3luYyB3YWl0cy4KCSAgQWRkZWQgdGVzdCBmb3IgYXN5bmMgd2FpdCBvcmRlci4KCjIwMDYtMTItMDcgMTA6MDI6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEFkZCBzb21lIG1vcmUgZG9jcyBhYm91dCB0aGUgUE9TSVRJT04gcXVlcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcXVlcnkpOgoJICBBZGQgc29tZSBtb3JlIGRvY3MgYWJvdXQgdGhlIFBPU0lUSU9OIHF1ZXJ5LgoKMjAwNi0xMi0wNyAwMjozNzoxOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IEJ1bXAgdmVyc2lvbiBuYW5vIC0gYmFjayB0byBDVlMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgQnVtcCB2ZXJzaW9uIG5hbm8gLSBiYWNrIHRvIENWUy4KCj09PSByZWxlYXNlIDAuMTAuMTEgPT09CgoyMDA2LTEyLTA3IDAyOjMzOjU0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogcmVsZWFzaW5nIDAuMTAuMTEsICJMb3ZlIG5ldmVyIHJ1bnMgb24gdGltZSIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgID09PSByZWxlYXNlIDAuMTAuMTEgPT09CgkgIDIwMDYtMTItMDYgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgcmVsZWFzaW5nIDAuMTAuMTEsICJMb3ZlIG5ldmVyIHJ1bnMgb24gdGltZSIKCjIwMDYtMTItMDEgMTA6MjM6MjYgKzAwMDAgIFNlcmdleSBTY29iaWNoIDxzZXJnZXkuc2NvYmljaEBnbWFpbC5jb20+CgoJICB3aW4zMi86IEZpeCBjb21waWxhdGlvbiBvbiB3aW4zMiB1bmRlciBWUzgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICAqIHdpbjMyL3ZzOC9saWJnc3RiYXNlLnZjcHJvajoKCSAgKiB3aW4zMi92czgvbGliZ3N0Y29yZWVsZW1lbnRzLnZjcHJvajoKCSAgKiB3aW4zMi92czgvbGliZ3N0cmVhbWVyLnZjcHJvajoKCSAgRml4IGNvbXBpbGF0aW9uIG9uIHdpbjMyIHVuZGVyIFZTOAoJICBQYXRjaCBieTogU2VyZ2V5IFNjb2JpY2ggPHNlcmdleSBkb3Qgc2NvYmljaCBhdCBnbWFpbCBkb3QgY29tPgoJICBQYXJ0aWFsbHkgZml4ZXMgIzM4MTE3NQoKMjAwNi0xMS0zMCAyMjo1NTowOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDYtMTEtMjkgMTY6Mzk6MzIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHZhbHVlLmM6IElmIHNvbWVvbmUgaXMgZm9vbGlzaCBlbm91Z2ggdG8gY29tcGFyZSAyIGZyYWN0aW9ucyB3aXRoIGRlbm9taW5hdG9yID0gMCwgcmV0dXJuIFVOT1JERVJFRCByYXRoZXIgdGhhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2NvbXBhcmVfZnJhY3Rpb24pOgoJICBJZiBzb21lb25lIGlzIGZvb2xpc2ggZW5vdWdoIHRvIGNvbXBhcmUgMiBmcmFjdGlvbnMgd2l0aCBkZW5vbWluYXRvciA9CgkgIDAsIHJldHVybiBVTk9SREVSRUQgcmF0aGVyIHRoYW4gYWJvcnRpbmcuCgoyMDA2LTExLTI4IDEyOjA3OjA2ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvYmFzZS86IE5ldyBHc3REYXRhUXVldWUgb2JqZWN0IGZvciB0aHJlYWRzYWZlIHF1ZXVlaW5nLiBNb3N0IHVzZWZ1bCBmb3IgZWxlbWVudHMgdGhhdCBuZWVkIHNvbWUgcXVldWVpbmcgZnVuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvYmFzZS9nc3RkYXRhcXVldWUuYzogKGdzdF9kYXRhX3F1ZXVlX2dldF90eXBlKSwKCSAgKGdzdF9kYXRhX3F1ZXVlX2Jhc2VfaW5pdCksIChnc3RfZGF0YV9xdWV1ZV9jbGFzc19pbml0KSwKCSAgKGdzdF9kYXRhX3F1ZXVlX2luaXQpLCAoZ3N0X2RhdGFfcXVldWVfbmV3KSwKCSAgKGdzdF9kYXRhX3F1ZXVlX2NsZWFudXApLCAoZ3N0X2RhdGFfcXVldWVfZmluYWxpemUpLAoJICAoZ3N0X2RhdGFfcXVldWVfbG9ja2VkX2ZsdXNoKSwgKGdzdF9kYXRhX3F1ZXVlX2xvY2tlZF9pc19lbXB0eSksCgkgIChnc3RfZGF0YV9xdWV1ZV9sb2NrZWRfaXNfZnVsbCksIChnc3RfZGF0YV9xdWV1ZV9mbHVzaCksCgkgIChnc3RfZGF0YV9xdWV1ZV9pc19lbXB0eSksIChnc3RfZGF0YV9xdWV1ZV9pc19mdWxsKSwKCSAgKGdzdF9kYXRhX3F1ZXVlX3NldF9mbHVzaGluZyksIChnc3RfZGF0YV9xdWV1ZV9wdXNoKSwKCSAgKGdzdF9kYXRhX3F1ZXVlX3BvcCksIChnc3RfZGF0YV9xdWV1ZV9kcm9wX2hlYWQpLAoJICAoZ3N0X2RhdGFfcXVldWVfc2V0X3Byb3BlcnR5KSwgKGdzdF9kYXRhX3F1ZXVlX2dldF9wcm9wZXJ0eSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RkYXRhcXVldWUuaDoKCSAgTmV3IEdzdERhdGFRdWV1ZSBvYmplY3QgZm9yIHRocmVhZHNhZmUgcXVldWVpbmcuIE1vc3QgdXNlZnVsIGZvcgoJICBlbGVtZW50cyB0aGF0IG5lZWQgc29tZSBxdWV1ZWluZyBmdW5jdGlvbm5hbGl0eS4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIEluc2VydCBkb2N1bWVudGF0aW9uIGZvciBHc3REYXRhUXVldWUKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG11bHRpcXVldWUuYzogKGdzdF9tdWx0aV9xdWV1ZV9iYXNlX2luaXQpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2NsYXNzX2luaXQpLCAoZ3N0X211bHRpX3F1ZXVlX2luaXQpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2ZpbmFsaXplKSwgKGdzdF9tdWx0aV9xdWV1ZV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X211bHRpX3F1ZXVlX2dldF9wcm9wZXJ0eSksIChnc3RfbXVsdGlfcXVldWVfcmVxdWVzdF9uZXdfcGFkKSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9yZWxlYXNlX3BhZCksIChnc3Rfc2luZ2xlX3F1ZXVlX3B1c2hfb25lKSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9pdGVtX2Rlc3Ryb3kpLCAoZ3N0X211bHRpX3F1ZXVlX2l0ZW1fbmV3KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9sb29wKSwgKGdzdF9tdWx0aV9xdWV1ZV9jaGFpbiksCgkgIChnc3RfbXVsdGlfcXVldWVfc2lua19hY3RpdmF0ZV9wdXNoKSwgKGdzdF9tdWx0aV9xdWV1ZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9tdWx0aV9xdWV1ZV9nZXRjYXBzKSwgKGdzdF9tdWx0aV9xdWV1ZV9idWZmZXJhbGxvYyksCgkgIChnc3RfbXVsdGlfcXVldWVfc3JjX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X211bHRpX3F1ZXVlX2FjY2VwdGNhcHMpLAoJICAoZ3N0X211bHRpX3F1ZXVlX3NyY19ldmVudCksIChnc3RfbXVsdGlfcXVldWVfc3JjX3F1ZXJ5KSwKCSAgKHdha2VfdXBfbmV4dF9ub25fbGlua2VkKSwgKGNvbXB1dGVfbmV4dF9ub25fbGlua2VkKSwKCSAgKHNpbmdsZV9xdWV1ZV9vdmVycnVuX2NiKSwgKHNpbmdsZV9xdWV1ZV91bmRlcnJ1bl9jYiksCgkgIChzaW5nbGVfcXVldWVfY2hlY2tfZnVsbCksIChnc3Rfc2luZ2xlX3F1ZXVlX25ldyk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aXF1ZXVlLmg6CgkgIE5ldyBtdWx0aXF1ZXVlIGVsZW1lbnQsIHVzaW5nIEdzdERhdGFRdWV1ZS4gVXNlZCBmb3IgcXVldWluZyBtdWx0aXBsZQoJICBzdHJlYW1zLgoJICBDbG9zZXMgIzM0NDYzOSBhbmQgIzM0Nzc4NQoKMjAwNi0xMS0yMiAxMjoyOTo0MSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOiBhZGQgbW9yZSBtaXNzaW5nIHR5cGUgZGV0YWlscwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC10eXBlcy54bWw6CgkgIGFkZCBtb3JlIG1pc3NpbmcgdHlwZSBkZXRhaWxzCgkgICogdG9vbHMvZ3N0LXJ1bi5jOiAobWFpbik6CgkgIHJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCjIwMDYtMTEtMjEgMDg6MzA6MjAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvbGlicy86IGFkZCB0eXBlcyBvZiBiYXNlIGNsYXNzZXMgdG8gZW5hYmxlIGdvYmplY3Qgc3BlY2lmaWMgc3R1ZmYgaW4gdGhlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy50eXBlczoKCSAgYWRkIHR5cGVzIG9mIGJhc2UgY2xhc3NlcyB0byBlbmFibGUgZ29iamVjdCBzcGVjaWZpYyBzdHVmZiBpbiB0aGUgZG9jcwoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZW1iZWRkZWQudHh0OgoJICBtb3JlIGlkZWFzIGFib3V0IGlzb2xhdGluZyBwbGF0Zm9ybSBzcGVjaWZpYyB0aGluZ3MKCjIwMDYtMTEtMjAgMTE6MTE6MjAgKzAwMDAgIFNlYmFzdGlhbiBEcm9lZ2UgPHNsb21vQHVidW50dS5jb20+CgoJICBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOiBGaXggY29tcGlsYXRpb24gYW5kIHJ1bm5pbmcgYWdhaW5zdCAwLjkuNC4gRml4ZXMgIzM3NzMzMi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTZWJhc3RpYW4gRHJvZWdlIDxzbG9tbyBhdCB1YnVudHUgZG90IGNvbT4KCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOgoJICBGaXggY29tcGlsYXRpb24gYW5kIHJ1bm5pbmcgYWdhaW5zdCAwLjkuNC4gRml4ZXMgIzM3NzMzMi4KCjIwMDYtMTEtMjAgMTA6Mjc6NDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0c2VnbWVudC5jOiBGaXggYm91bmRhcnkgY2hlY2tpbmcgaW4gdG9fcnVubmluZ190aW1lKCkgYW5kIHRvX3N0cmVhbV90aW1lKCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfc2VlayksCgkgIChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudF9mdWxsKSwgKGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lKSwKCSAgKGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSk6CgkgIEZpeCBib3VuZGFyeSBjaGVja2luZyBpbiB0b19ydW5uaW5nX3RpbWUoKSBhbmQgdG9fc3RyZWFtX3RpbWUoKS4KCSAgRml4ZXMgIzM3NzE4My4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBzdHJlYW0gYW5kIHJ1bm5pbmcgdGltZSBjYW4gbm93IGJlIGNhbGN1bGF0ZWQgZm9yIHRoZSBjb21wbGV0ZQoJICBjbGlwcGVkIHNlZ21lbnQuCgoyMDA2LTExLTE1IDE3OjM4OjEzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBDYW4ndCBhY2Nlc3MgZXZlbnQgc3RydWN0dXJlIGFmdGVyIGdpdmluZyBhd2F5IG93bmVyc2hpcCBvZiB0aGUgZXZlbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfcHVzaF9ldmVudCk6CgkgIENhbid0IGFjY2VzcyBldmVudCBzdHJ1Y3R1cmUgYWZ0ZXIgZ2l2aW5nIGF3YXkgb3duZXJzaGlwIG9mCgkgIHRoZSBldmVudC4KCjIwMDYtMTEtMTUgMTM6MDA6MTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2Vuc29uaWMvOiBtb3JlIHRoaW5raW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZW1iZWRkZWQudHh0OgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvcHJvZmlsaW5nLnR4dDoKCSAgKiBkb2NzL3JhbmRvbS9lbnNvbmljL3JlY2VpcGllcy50eHQ6CgkgIG1vcmUgdGhpbmtpbmcKCjIwMDYtMTEtMTMgMTg6MDM6MzUgKzAwMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1d0Bza3luZXQuYmU+CgoJICBnc3QvZ3N0cGFkLmM6IEZpeCBkb2N1bWVudGF0aW9uIGZvciBnc3RfcGFkX2Rpc3BhdGNoZXIuIEZpeGVzICMzNzQ0NzUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyayBOYXV3ZWxhZXJ0cyA8bWFuYXV3IGF0IHNreW5ldCBkb3QgYmU+CgkgICogZ3N0L2dzdHBhZC5jOgoJICBGaXggZG9jdW1lbnRhdGlvbiBmb3IgZ3N0X3BhZF9kaXNwYXRjaGVyLiBGaXhlcyAjMzc0NDc1LgoKMjAwNi0xMS0xMyAxNzo1NDo1OCArMDAwMCAgSm9uYXRoYW4gTWF0dGhldyA8am9uYXRoYW5Aa2FvbGluLndoOS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogU3RvcmUgbmV3IGxlbmd0aCBpbiBzZWdtZW50IGR1cmF0aW9uIHNvIHdlIGRvbid0IGtlZXAgb24gY2FsbGluZyB0aGUgcG90ZW50aWFsbHkgZXhwZW5zaXouLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBKb25hdGhhbiBNYXR0aGV3IDxqb25hdGhhbiBhdCBrYW9saW4gZG90IHdoOSBkb3QgbmV0PgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3VwZGF0ZV9sZW5ndGgpOgoJICBTdG9yZSBuZXcgbGVuZ3RoIGluIHNlZ21lbnQgZHVyYXRpb24gc28gd2UgZG9uJ3Qga2VlcCBvbiBjYWxsaW5nIHRoZQoJICBwb3RlbnRpYWxseSBleHBlbnNpemUgZ2V0X3NpemUoKSBjYWxsLiBGaXhlcyAjMzcwODY1LgoKMjAwNi0xMS0xMCAxODo1Njo0NCArMDAwMCAgU2VyZ2V5IFNjb2JpY2ggPHNlcmdlcnkuc2NvYmljaEBnbWFpbC5jb20+CgoJICB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjogQWRkIHR3byBtaXNzaW5nIHN5bWJvbHMgKCMzNjY0OTIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNlcmdleSBTY29iaWNoICA8c2VyZ2VyeS5zY29iaWNoIGF0IGdtYWlsIGNvbT4KCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgQWRkIHR3byBtaXNzaW5nIHN5bWJvbHMgKCMzNjY0OTIpLgoKMjAwNi0xMS0xMCAxMDo1MDoxOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzogRml4IGZvcm1hdCBzdHJpbmcgdG8gdXNlIGFsbCBpdHMgYXJndW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzogKGdzdF9hZGFwdGVyX2ZsdXNoKSwKCSAgKGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyKToKCSAgRml4IGZvcm1hdCBzdHJpbmcgdG8gdXNlIGFsbCBpdHMgYXJndW1lbnRzLgoJICBSZW1vdmUgdXNlbGVzcyA+PSBjaGVjayBvbiBhIGd1aW50CgoyMDA2LTExLTA5IDE1OjI1OjM5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2V4YW1wbGVzL2FkYXB0ZXIvLmN2c2lnbm9yZTogSWdub3JlIGJ1aWxkIGZpbGUgYXMgY29tbWFuZGVkIGJ5IHRoZSBidWlsZC1ib3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvZXhhbXBsZXMvYWRhcHRlci8uY3ZzaWdub3JlOgoJICBJZ25vcmUgYnVpbGQgZmlsZSBhcyBjb21tYW5kZWQgYnkgdGhlIGJ1aWxkLWJvdAoKMjAwNi0xMS0wOSAxNDozODo1OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9leGFtcGxlcy9hZGFwdGVyLzogQWRkIG5ldyBmaWxlcyBmcm9tIHRoZSBwcmV2aW91cyBjb21taXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvZXhhbXBsZXMvYWRhcHRlci9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9leGFtcGxlcy9hZGFwdGVyL2FkYXB0ZXJfdGVzdC5jOiAocnVuX3Rlc3RfdGFrZSksCgkgIChydW5fdGVzdF90YWtlX2J1ZmZlciksIChydW5fdGVzdHMpLCAobWFpbik6CgkgIEFkZCBuZXcgZmlsZXMgZnJvbSB0aGUgcHJldmlvdXMgY29tbWl0CgoyMDA2LTExLTA5IDE0OjM3OjM4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIERvIHNvbWUgb3B0aW1pc2F0aW9uIHdvcmsgaW4gR3N0QWRhcHRlciB0byBhdm9pZCBjb3BpZXMgaW4gbW9yZSBjYXNlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgICogY29uZmlndXJlLmFjOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfY2xlYXIpLAoJICAoZ3N0X2FkYXB0ZXJfcHVzaCksIChnc3RfYWRhcHRlcl9wZWVrX2ludG8pLCAoZ3N0X2FkYXB0ZXJfcGVlayksCgkgIChnc3RfYWRhcHRlcl9mbHVzaCksIChnc3RfYWRhcHRlcl90YWtlKSwgKGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2FkYXB0ZXIuYzogKGNyZWF0ZV9hbmRfZmlsbF9hZGFwdGVyKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9hZGFwdGVyX3N1aXRlKToKCSAgKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgRG8gc29tZSBvcHRpbWlzYXRpb24gd29yayBpbiBHc3RBZGFwdGVyIHRvIGF2b2lkIGNvcGllcyBpbiBtb3JlIGNhc2VzLgoJICBJdCBjb3VsZCBzdGlsbCBkbyBzbGlnaHRseSBiZXR0ZXIgYnkgbWVyZ2luZyBidWZmZXJzIHdoZW4KCSAgZ3N0X2J1ZmZlcl9pc19zcGFuX2Zhc3QgaXMgdHJ1ZSwgYnV0IGlzIGFscmVhZHkgZmFzdGVyLgoJICBBbHNvLCBhdm9pZCB0cmF2ZXJzaW5nIGEgc2luZ2xlLWxpbmtlZCBsaXN0IHRvIGFwcGVuZCBlYWNoIGluY29taW5nCgkgIGJ1ZmZlciBpbnNpZGUgdGhlIGFkYXB0ZXIuCgkgIEFkZCBzaW1wbGUgdGVzdCBhcHAgdGhhdCB0aW1lcyB0aGUgYWRhcHRlciBiZWhhdmlvdXIgaW4gZGlmZmVyZW50CgkgIHNpdHVhdGlvbnMsIGFuZCBleHRlbmQgdGhlIHVuaXQgdGVzdCB0byBjaGVjayB0aGF0IGJ5dGVzIGVudGVyIGFuZAoJICBleGl0IHRoZSBhZGFwdGVyIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgoKMjAwNi0xMS0wOCAxOToyNzoxNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2RyYWZ0LW1pc3NpbmctcGx1Z2lucy50eHQ6IFVwZGF0ZTogdXNlIGVsZW1lbnQgbWVzc2FnZSBpbnN0ZWFkIG9mIGFkZGluZyBhIG5ldyBtZXNzYWdlIHR5cGUgdG8gdGhlIGNvcmU7IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9kcmFmdC1taXNzaW5nLXBsdWdpbnMudHh0OgoJICBVcGRhdGU6IHVzZSBlbGVtZW50IG1lc3NhZ2UgaW5zdGVhZCBvZiBhZGRpbmcgYSBuZXcgbWVzc2FnZQoJICB0eXBlIHRvIHRoZSBjb3JlOyBkb24ndCBwcm92aWRlIEdTdHJlYW1lciBBUEkgdG8gaW5pdGlhdGUgdGhlCgkgIHBsdWdpbiBkb3dubG9hZCwganVzdCBwcm92aWRlIEFQSSB0byBjb21wb3NlIHRoZSBzdHJpbmdzIG5lZWRlZAoJICBhbmQgbGV0IGFuIGV4dGVybmFsIGxpYmdpbW1lc3R1ZmYgaGFuZGxlIHRoZSByZXN0LgoKMjAwNi0xMS0wOCAxMTo0MToxMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBQcmludCBhIHN0cmluZyBpbnN0ZWFkIG9mICd1bmtub3duIHR5cGUnIGZvciBHVmFsdWVBcnJheSBwcm9wZXJ0aWVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyk6CgkgIFByaW50IGEgc3RyaW5nIGluc3RlYWQgb2YgJ3Vua25vd24gdHlwZScgZm9yIEdWYWx1ZUFycmF5IHByb3BlcnRpZXMKCjIwMDYtMTEtMDggMTA6MzU6MjQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBGaXggQ2hyaXN0aWFuJ3MgZW1haWwgYWRkcmVzcyBpbiBDaGFuZ2Vsb2cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEZpeCBDaHJpc3RpYW4ncyBlbWFpbCBhZGRyZXNzIGluIENoYW5nZWxvZwoKMjAwNi0xMS0wOCAwMjowNDo1MiArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSAgZG9jcy9yYW5kb20vZHJhZnQtbWlzc2luZy1wbHVnaW5zLnR4dDogTW9yZSBzbWFsbCBmaXhlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vZHJhZnQtbWlzc2luZy1wbHVnaW5zLnR4dDoKCSAgTW9yZSBzbWFsbCBmaXhlcy4KCjIwMDYtMTEtMDggMDI6MDM6NDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9leGFtcGxlcy90eXBlZmluZC90eXBlZmluZC5jOiBNYWtlIHR5cGVmaW5kIGVsZW1lbnQgZXhhbXBsZSB3b3JrIGFnYWluICgjMzcxODk0KTsgYWRkIGEgbGljZW5zZSBoZWFkZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2V4YW1wbGVzL3R5cGVmaW5kL3R5cGVmaW5kLmM6ICh0eXBlX2ZvdW5kKSwgKG1haW4pOgoJICBNYWtlIHR5cGVmaW5kIGVsZW1lbnQgZXhhbXBsZSB3b3JrIGFnYWluICgjMzcxODk0KTsgYWRkIGEKCSAgbGljZW5zZSBoZWFkZXIuCgoyMDA2LTExLTA4IDAxOjQwOjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9yYW5kb20vZHJhZnQtbWlzc2luZy1wbHVnaW5zLnR4dDogQ29tbWl0IGluaXRpYWwgZHJhZnQgYWJvdXQgaG93IHRvIGRlYWwgd2l0aCBtaXNzaW5nIHBsdWdpbnMsIG5lZWRzIHdvcmsgKEFQSSB0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2RyYWZ0LW1pc3NpbmctcGx1Z2lucy50eHQ6CgkgIENvbW1pdCBpbml0aWFsIGRyYWZ0IGFib3V0IGhvdyB0byBkZWFsIHdpdGggbWlzc2luZyBwbHVnaW5zLAoJICBuZWVkcyB3b3JrIChBUEkgdG9vKS4KCjIwMDYtMTEtMDcgMDc6MzQ6NDMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDogZG9jdW1lbnRzIHRoZSBuZXcgY2FwcyBlbGVtZW50cyAoc2VlICMzNjMxMTgpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDoKCSAgZG9jdW1lbnRzIHRoZSBuZXcgY2FwcyBlbGVtZW50cyAoc2VlICMzNjMxMTgpCgoyMDA2LTExLTA2IDE3OjUzOjI0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgVXNlIGdfc3RyZXJyb3IoKSBpbnN0ZWFkIG9mIHN0cmVycm9yKCkgLSB3ZSB3YW50IFVURi04LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfbW1hcF9idWZmZXJfZmluYWxpemUpLAoJICAoZ3N0X2ZpbGVfc3JjX21hcF9yZWdpb24pLCAoZ3N0X2ZpbGVfc3JjX3N0YXJ0KToKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOiAoZ3N0X2ZpbGVfaW5kZXhfbG9hZCksCgkgIChnc3RfZmlsZV9pbmRleF9jb21taXQpOgoJICBVc2UgZ19zdHJlcnJvcigpIGluc3RlYWQgb2Ygc3RyZXJyb3IoKSAtIHdlIHdhbnQgVVRGLTguCgoyMDA2LTExLTA2IDE3OjI1OjAxICswMDAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogQW5vdGhlciBwcmludGYgZml4ICgjMzcxNDkzKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBraiBhdCBheGlzIGNvbT4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NyZWF0ZSk6CgkgIEFub3RoZXIgcHJpbnRmIGZpeCAoIzM3MTQ5MykuCgoyMDA2LTExLTA2IDE1OjIyOjQwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6IHJlbGljZW5jZSAob2theSB3aXRoIGF1dGhvcj1jb21wYW55KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkgIHJlbGljZW5jZSAob2theSB3aXRoIGF1dGhvcj1jb21wYW55KQoKMjAwNi0xMS0wNiAxNToxODo1NyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBFbmhhbmNlIGRlYnVnIGFuZCBpbXByb3ZlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0X2Rpc3BhdGNoKSwKCSAgKGdzdF9wYWRfcHVzaF9ldmVudCk6CgkgIEVuaGFuY2UgZGVidWcgYW5kIGltcHJvdmUgZG9jcwoJICAqIGdzdC9nc3R1cmkuYzoKCSAgRml4IGRvY3MKCjIwMDYtMTEtMDYgMTU6MTc6MzUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2Vuc29uaWMvOiBtb3JlIGlkZWFzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZGlzdHJpYnV0ZWQudHh0OgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvcHJvZmlsaW5nLnR4dDoKCSAgbW9yZSBpZGVhcwoKMjAwNi0xMS0wNiAxNToxNDo0NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogYWRkIG5ldyBBUEkgYW5kIGZpeCB0aGUgYnVpbGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgYWRkIG5ldyBBUEkgYW5kIGZpeCB0aGUgYnVpbGQKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3JlY2FsY19zdGF0ZSk6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X21lc3NhZ2VfZnVsbCksCgkgIChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyksIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyk6CgkgIHVzZSBuZXcgQVBJIGFuZCBpbXByb3ZlIGxvZ2dpbmcKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X3N0YXRlX2NoYW5nZV9yZXR1cm5fZ2V0X25hbWUpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBUEk6IGFkZCBmdW5jdGlvbiB0byBnZXQgU3RhdGVDaGFuZ2VyZXR1cm4gbmFtZXMgdG8gaW1wcm92ZSBsb2dzCgoyMDA2LTExLTA2IDEyOjAxOjI3ICswMDAwICBaYWhlZXIgQWJiYXMgTWVyYWxpIDx6YWhlZXJhYmJhc0BtZXJhbGkub3JnPgoKCSogZG9jcy9yYW5kb20vemFoZWVybS9kdmItaW50ZXJmYWNlLnR4dDoKCSAgTm90ZXMgdGFrZW4gd2hpbGUgZGlzY3Vzc2luZyBkdmIgY2hhbm5lbCBzZWxlY3Rpb24gd2l0aCBXaW0KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE5vdGVzIHRha2VuIHdoaWxlIGRpc2N1c3NpbmcgZHZiIGNoYW5uZWwgc2VsZWN0aW9uIHdpdGggV2ltCgoyMDA2LTExLTA0IDEyOjU0OjA4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJICBkb24ndCBwdXQgc3RyZXJyb3IgaW4gdHJhbnNsYXRhYmxlIG1lc3NhZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvbid0IHB1dCBzdHJlcnJvciBpbiB0cmFuc2xhdGFibGUgbWVzc2FnZQoKMjAwNi0xMS0wMyAxNTowNDo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogR2V0IHRoZSB0eXBlIGFuZCBwcmludGYgY29udmVyc2lvbiBzcGVjaWZpZXJzIHJpZ2h0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NyZWF0ZSk6CgkgIEdldCB0aGUgdHlwZSBhbmQgcHJpbnRmIGNvbnZlcnNpb24gc3BlY2lmaWVycyByaWdodC4KCjIwMDYtMTEtMDMgMTM6NTc6MjggKzAwMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1d0Bza3luZXQuYmU+CgoJICBnc3QvZ3N0cGFkLmM6IFNvbWUgc21hbGwgY2xlYW51cHMuIEltcHJvdmUgZGVidWdnaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1dyBhdCBza3luZXQgZG90IGJlPgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfaW5pdCksIChwcmVfYWN0aXZhdGUpLAoJICAoZ3N0X3BhZF9zZXRfYmxvY2tlZF9hc3luYyksIChnc3RfcGFkX2FjY2VwdGNhcHNfZGVmYXVsdCksCgkgIChnc3RfcGFkX2FjY2VwdF9jYXBzKSwgKGhhbmRsZV9wYWRfYmxvY2spLCAoZ3N0X3BhZF9wdXNoX2V2ZW50KToKCSAgU29tZSBzbWFsbCBjbGVhbnVwcy4gSW1wcm92ZSBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdHBhZC5oOgoJICBTaWduYWwgYWxsIHdhaXRpbmcgdGhyZWFkcyB3aXRoIGEgYnJvYWRjYXN0IGluc3RlYWQgb2YganVzdCBvbmUuCgkgIEZpeGVzICMzNjk5NDIuCgoyMDA2LTExLTAzIDA5OjQwOjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiBBZGQgc29tZSBkZWJ1Z2dpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogKGdzdF9mZF9zcmNfdXBkYXRlX2ZkKSwKCSAgKGdzdF9mZF9zcmNfY3JlYXRlKToKCSAgQWRkIHNvbWUgZGVidWdnaW5nLgoJICBPbmx5IHVwZGF0ZSBmZCB3aGVuIGl0J3MgZGlmZmVyZW50IGZyb20gdGhlIG9sZC4KCjIwMDYtMTEtMDIgMjA6NTI6MjEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogUHJpbnRmIGZpeGVzIGZvciBQUEMvT1NYLCB0YWtlIHR3byAoIzM2OTM2NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2NyZWF0ZV9tbWFwKToKCSAgUHJpbnRmIGZpeGVzIGZvciBQUEMvT1NYLCB0YWtlIHR3byAoIzM2OTM2NikuCgoyMDA2LTExLTAyIDEzOjAwOjM4ICswMDAwICBKYW4gRGF2aWQgTW9sIDxqLmouZC5tb2xAdHVkZWxmdC5ubD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBQcmludGYgZml4ZXMgZm9yIGdzaXplIHBhcmFtZXRlcnMgb24gUFBDL09TWCAoIzM2OTM2NikuIEFsc28sIGRvbid0IGNhc3QgdG8gbG9uZyBsb25nIGZvciBwb3J0YWJpbC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQmFzZWQgb24gcGF0Y2ggYnk6IEphbiBEYXZpZCBNb2wgIDxqLmouZC5tb2wgYXQgdHVkZWxmdCBubD4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2ZpbGVfc3JjX21hcF9zbWFsbF9yZWdpb24pLCAoZ3N0X2ZpbGVfc3JjX2NyZWF0ZV9tbWFwKToKCSAgUHJpbnRmIGZpeGVzIGZvciBnc2l6ZSBwYXJhbWV0ZXJzIG9uIFBQQy9PU1ggKCMzNjkzNjYpLiBBbHNvLAoJICBkb24ndCBjYXN0IHRvIGxvbmcgbG9uZyBmb3IgcG9ydGFiaWxpdHkgcmVhc29ucywgYnV0IHVzZQoJICBHTGliJ3MgdHlwZXMgaW5zdGVhZC4KCjIwMDYtMTAtMzAgMTg6NDM6MTIgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzogR2V0IHRoZSBhcmd1bWVudHMgdG8gbHNlZWsoKSB0aGUgcmlnaHQgd2F5IGFyb3VuZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY191cGRhdGVfZmQpOgoJICBHZXQgdGhlIGFyZ3VtZW50cyB0byBsc2VlaygpIHRoZSByaWdodCB3YXkgYXJvdW5kLgoJICBGaXhlcyAzNjc2NzcuCgoyMDA2LTEwLTMwIDA3OjUxOjEzICswMDAwICBnb3JzaGtvdiA8Z29yc2hrb3ZAb2dobWEub24uY2E+CgoJICBnc3QvZ3N0aW5mby5oOiBfZGVjbHNwZWMgc2hvdWxkIGJlIF9fZGVjbHNwZWMgKHR3byB1bmRlcnNjb3Jlcywgbm90IG9uZSkuIEZpeGVzIDM2NjU3Mi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBnb3JzaGtvdiA8Z29yc2hrb3YgYXQgb2dobWEgZG90IG9uIGRvdCBjYT4KCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBfZGVjbHNwZWMgc2hvdWxkIGJlIF9fZGVjbHNwZWMgKHR3byB1bmRlcnNjb3Jlcywgbm90IG9uZSkuIEZpeGVzIDM2NjU3Mi4KCjIwMDYtMTAtMjggMTU6NDI6MjkgKzAwMDAgIEtqYXJ0YW4gTWFyYWFzIDxrbWFyYWFzQGdub21lLm9yZz4KCgkgIFR5cG8gZml4ZXMgKCMzNjYyMTIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEtqYXJ0YW4gTWFyYWFzICA8a21hcmFhcyBhdCBnbm9tZSBvcmc+CgkgICogZG9jcy9kZXNpZ24vcGFydC1NVC1yZWZjb3VudGluZy50eHQ6CgkgICogZG9jcy9yYW5kb20vd3RheS9jYXBzbmVnbzItZG9jczoKCSAgKiBnc3QvZ3N0Y2xvY2suYzoKCSAgKiBnc3QvZ3N0eG1sLmM6CgkgIFR5cG8gZml4ZXMgKCMzNjYyMTIpLgoKMjAwNi0xMC0yOCAxNToxMDoyNiArMDAwMCAgU2VyZ2V5IFNjb2JpY2ggPHNlcmdleS5zY29iaWNoQGdtYWlsLmNvbT4KCgkgIEFkZCBuZWVkZWQgZW50cmllcyBpbiAuZGVmIGZpbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNlcmdleSBTY29iaWNoIDxzZXJnZXkgZG90IHNjb2JpY2ggYXQgZ21haWwgZG90IGNvbT4KCSAgKiBnc3QvZ3N0LmM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICAqIHdpbjMyL3ZzOC9saWJnc3RiYXNlLnZjcHJvajoKCSAgKiB3aW4zMi92czgvbGliZ3N0Y29udHJvbGxlci52Y3Byb2o6CgkgIEFkZCBuZWVkZWQgZW50cmllcyBpbiAuZGVmIGZpbGVzLgoJICBVc2UgSEFWRV9VTklTVERfSC4KCSAgUmVhcnJhbmdlIGRlZiBmaWxlcyBpbiB2czggc29sdXRpb25zLiBGaXhlcyAjMzY2Mjg2LgoKMjAwNi0xMC0yOCAxNTowMzoxOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9nc3Rjb25maWcuaDogQWRkIEdTVF9TRUdNRU5UX0ZPUk1BVCBhbmQgR1NUX1VTSU5HX1BSSU5URl9FWFRFTlNJT04gdG8gdGhlIGhhbmQtbWFkZSB3aW4zMiBnc3Rjb25maWcuaC4gRi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vZ3N0Y29uZmlnLmg6CgkgIEFkZCBHU1RfU0VHTUVOVF9GT1JNQVQgYW5kIEdTVF9VU0lOR19QUklOVEZfRVhURU5TSU9OIHRvIHRoZQoJICBoYW5kLW1hZGUgd2luMzIgZ3N0Y29uZmlnLmguIEZpeGVzICMzNjYzMjEuCgoyMDA2LTEwLTI3IDE2OjMxOjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IE1ha2UgYWNjZXB0Y2FwcyByZXR1cm4gVFJVRSB3aGVuIHdlIGRvbid0IGhhdmUgYSB0YXJnZXQsIGp1c3QgbGlrZSBzZXRjYXBzIGRvZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9kb19hY2NlcHRjYXBzKSwKCSAgKGdzdF9naG9zdF9wYWRfbmV3X2Z1bGwpOgoJICBNYWtlIGFjY2VwdGNhcHMgcmV0dXJuIFRSVUUgd2hlbiB3ZSBkb24ndCBoYXZlIGEgdGFyZ2V0LCBqdXN0IGxpa2UKCSAgc2V0Y2FwcyBkb2VzLgoKMjAwNi0xMC0yNyAxMDoxMDoyNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBSZXZlcnQgcHJldmlvdXMgY29tbWl0LCAwIHNpemVkIGJ1ZmZlcnMgYXJlIGFsbG93ZWQuIFJlb3BlbnMgIzM2MzA5NS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pOgoJICBSZXZlcnQgcHJldmlvdXMgY29tbWl0LCAwIHNpemVkIGJ1ZmZlcnMgYXJlIGFsbG93ZWQuIFJlb3BlbnMgIzM2MzA5NS4KCjIwMDYtMTAtMjYgMDg6NDk6NTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IElmIHNvbWVvbmUgdHJpZXMgdG8gc2V0IGEgbm9uLVVURjggc3RyaW5nIGZpZWxkIG9uIGEgc3RydWN0dXJlLCBkb24ndCBqdXN0IHByaW50IGEgd2FybmluZywgYnV0IGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9pZF9zZXRfdmFsdWUpOgoJICBJZiBzb21lb25lIHRyaWVzIHRvIHNldCBhIG5vbi1VVEY4IHN0cmluZyBmaWVsZCBvbiBhIHN0cnVjdHVyZSwKCSAgZG9uJ3QganVzdCBwcmludCBhIHdhcm5pbmcsIGJ1dCBhbHNvIGlnbm9yZSB0aGUgcmVxdWVzdCBhbmQgZG8KCSAgbm90IGNoYW5nZS9hZGQgdGhhdCBmaWVsZCB0byB0aGUgc3RydWN0dXJlLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R0YWcuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF90YWdfc3VpdGUpOgoJICBUZXN0IGZvciB0aGUgYWJvdmUuCgoyMDA2LTEwLTI2IDAwOjAwOjM0ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RpbmZvLmM6IGdfaGFzaF90YWJsZV9pbnNlcnQoKSBuZWVkcyBhIGNhc3QgdG8gYSBub24tY29uc3QgcG9pbnRlciBkdWguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIGdfaGFzaF90YWJsZV9pbnNlcnQoKSBuZWVkcyBhIGNhc3QgdG8gYSBub24tY29uc3QgcG9pbnRlciBkdWguCgoyMDA2LTEwLTI1IDIzOjQ3OjQwICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RpbmZvLio6IENoYW5nZSBuYW1lIHBhcmFtZXRlciBvZiBfZ3N0X2RlYnVnX3JlZ2lzdGVyX2Z1bmNwdHIgdG8gY29uc3QgdG8gcmVmbGVjdCB0aGUgY29uc3RuZXNzIG9mIGl0cyB1c2UgaW4gdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgIENoYW5nZSBuYW1lIHBhcmFtZXRlciBvZiBfZ3N0X2RlYnVnX3JlZ2lzdGVyX2Z1bmNwdHIgdG8gY29uc3QKCSAgdG8gcmVmbGVjdCB0aGUgY29uc3RuZXNzIG9mIGl0cyB1c2UgaW4gdGhlIGZ1bmN0aW9uIGFzIHdlbGwKCSAgYXMgdG8gcXVpZXQgYSBnY2Mgd2FybmluZy4KCjIwMDYtMTAtMjUgMTM6NDE6NDQgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIGlmIGl0J3MgZW1wdHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYWluKToKCSAgRG9uJ3QgcHVzaCB0aGUgYnVmZmVyIGlmIGl0J3MgZW1wdHkuCgkgIENsb3NlcyAjMzYzMDk1CgoyMDA2LTEwLTI0IDA4OjIyOjE5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50Lmg6IEFkZCBzbWFsbCBjb21tZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgQWRkIHNtYWxsIGNvbW1lbnQuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudGZ1bmMpOgoJICBEZWJ1ZyBzZWdtZW50IHZhbHVlcyAqYWZ0ZXIqIHVwZGF0aW5nIHRoZW0gYXMgdGhpcyBpcyBtb3JlCgkgIGludGVyZXN0aW5nLgoKMjAwNi0xMC0yMyAxNToyMToxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDogVXBkYXRlIHNvbWUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICBVcGRhdGUgc29tZSBkb2NzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfaXNfYmxvY2tpbmcpLCAoaGFuZGxlX3BhZF9ibG9jayksCgkgIChnc3RfcGFkX3B1c2hfZXZlbnQpOgoJICBSZXZlcnQgQkxPQ0tJTkcgcGF0Y2gsIGl0IHRyaWVzIHRvIGJlIHNtYXJ0IHdpdGhvdXQgcmVhbGx5IGhhdmluZyBhCgkgIGNsZWFyIGlkZWEgd2hhdCBvciBob3cuIFNvLCBub3cgd2UgZGlzY2FyZCBhbGwgRkxVU0hJTkcgZXZlbnRzIGFnYWluIG9uCgkgIGEgYmxvY2tpbmcgcGFkLiBTaG91bGQgZml4IGdub25saW4gYWdhaW4uCgoyMDA2LTEwLTIzIDE0OjUxOjMwICswMDAwICBTZXJnZXkgU2NvYmljaCA8c2VyZ2V5LnNjb2JpY2hAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IE1ha2Ugc3VyZSBzaXplIGlzIGFsd2F5cyBpbml0aWFsaXplZC4gRml4ZXMgIzM2NDM4OC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTZXJnZXkgU2NvYmljaCA8c2VyZ2V5IGRvdCBzY29iaWNoIGF0IGdtYWlsIGRvdCBjb20+CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfd2FpdF9wbGF5aW5nKSwKCSAgKGdzdF9iYXNlX3NyY19zdGFydCksIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIE1ha2Ugc3VyZSBzaXplIGlzIGFsd2F5cyBpbml0aWFsaXplZC4gRml4ZXMgIzM2NDM4OC4KCjIwMDYtMTAtMjAgMTE6MzY6NTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2Vuc29uaWMvZGlzdHJpYnV0ZWQudHh0OiBhZGQgc29tZSBpZGVhcyBhYm91dCBkb2luZyBkaXN0cmlidXRlZCBwcm9jZXNzaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZGlzdHJpYnV0ZWQudHh0OgoJICBhZGQgc29tZSBpZGVhcyBhYm91dCBkb2luZyBkaXN0cmlidXRlZCBwcm9jZXNzaW5nCgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9wcm9maWxpbmcudHh0OgoJICBnZXRfcnVzYWdlIGxvb2sgcHJvbWlzaW5nCgoyMDA2LTEwLTE4IDE5OjQzOjQ2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6IEFkZCBhIGNhc3QgaW4gZXhhbXBsZSB0byBmaXggY29tcGlsZSB3YXJuaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1oZWxsb3dvcmxkLnhtbDoKCSAgQWRkIGEgY2FzdCBpbiBleGFtcGxlIHRvIGZpeCBjb21waWxlIHdhcm5pbmcKCjIwMDYtMTAtMTggMTU6Mjg6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0c2VnbWVudC5jOiBSZWxheCBhcmcgY2hlY2tpbmcgYWdhaW4sIC0xIGlzIGFsbG93ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfbGFzdF9zdG9wKSwKCSAgKGdzdF9zZWdtZW50X3NldF9zZWVrKSwgKGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50X2Z1bGwpOgoJICBSZWxheCBhcmcgY2hlY2tpbmcgYWdhaW4sIC0xIGlzIGFsbG93ZWQuCgoyMDA2LTEwLTE4IDEzOjI3OjM5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYzogX3NldF9sYXN0X3N0b3AoKSBtdXN0IGJlIHdpdGggYSB2YWx1ZSAhPSAtMQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc2V0X2xhc3Rfc3RvcCksCgkgIChnc3Rfc2VnbWVudF9zZXRfc2VlayksIChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudF9mdWxsKToKCSAgX3NldF9sYXN0X3N0b3AoKSBtdXN0IGJlIHdpdGggYSB2YWx1ZSAhPSAtMQoJICBBIF9UWVBFX1NFVCB0byAtMSBtZWFucyBzZWVrIHRvIDAuCgkgIENhbGMgbGFzdF9zdG9wIGNvcnJlY3RseSBmb3IgbmVnYXRpdmUgcmF0ZXMuCgkgIE1ha2Ugc3VyZSB3ZSB3b3JrIHdpdGggcG9zaXRpdmUgZHVyYXRpb25zIHdoZW4gdXBkYXRpbmcgYSBzZWdtZW50LgoKMjAwNi0xMC0xOCAxMzoyMTo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFNtYWxsIGRvY3MgZml4ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbGl2ZS1zb3VyY2UudHh0OgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBTbWFsbCBkb2NzIGZpeGVzLgoKMjAwNi0xMC0xOCAxMDowODo0NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RidWZmZXIuaDogQWRkIGFuIGV4cGxpY2l0IGNhc3QgdG8gR3N0QnVmZmVyKiogdG8ga2VlcCBvbGQgY29kZSB0aGF0IGFkZGVkIGFuIGV4cGxpY2l0IGNhc3QgdG8gR3N0TWluaU9iamVjdCoqIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIEFkZCBhbiBleHBsaWNpdCBjYXN0IHRvIEdzdEJ1ZmZlcioqIHRvIGtlZXAgb2xkIGNvZGUgdGhhdCBhZGRlZCBhbgoJICBleHBsaWNpdCBjYXN0IHRvIEdzdE1pbmlPYmplY3QqKiBmb3IgZ3N0X21pbmlfb2JqZWN0X3JlcGxhY2UoKQoJICBjb21waWxpbmcgd2l0aG91dCB3YXJuaW5nLgoKMjAwNi0xMC0xOCAwODo1NDozMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLmM6IGNoZWNrIGZvciB2YWxpZGl0eSBvZiBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9zZXRfZGF0ZSksIChnc3RfZGF0ZV9jb3B5KToKCSAgY2hlY2sgZm9yIHZhbGlkaXR5IG9mIGRhdGVzCgoyMDA2LTEwLTE3IDEyOjA5OjM1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogRm9yZ290IHRoaXMgb25lLCBtYWtlcyBndGstZG9jIHNodXQgdXAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEZvcmdvdCB0aGlzIG9uZSwgbWFrZXMgZ3RrLWRvYyBzaHV0IHVwLgoKMjAwNi0xMC0xNyAxMTo1NzozMiArMDAwMCAgUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CgoJICBnc3QvZ3N0b2JqZWN0Lmg6IERvbid0IGRlZmluZSB4bWxOb2RlUHRyIHRvIGdwb2ludGVyIGlmIHRoZSBjb3JlIHdhcyBidWlsdCB3aXRoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXQgYXhpcyBjb20+CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICBEb24ndCBkZWZpbmUgeG1sTm9kZVB0ciB0byBncG9pbnRlciBpZiB0aGUgY29yZSB3YXMgYnVpbHQgd2l0aAoJICAtLWRpc2FibGUtbG9hZHNhdmUgYW5kIC0tZGlzYWJsZS1yZWdpc3RyeSwgdGhpcyB3aWxsIGJyZWFrCgkgIGFwcGxpY2F0aW9ucyB0aGF0IHdhbnQgdG8gdXNlIGxpYnhtbDIgYnV0IGFyZSBidWlsZGxpbmcgYWdhaW5zdCBhCgkgIGNvcmUgdGhhdCBkb2Vzbid0IHVzZSBsaWJ4bWwyLiBVc2UgYW4gaW50ZXJtZWRpYXJ5IHR5cGUgR3N0WG1sTm9kZVB0cgoJICBpbnN0ZWFkIHNvIHdlIGRvbid0IGhhdmUgdG8gbWVzcyB3aXRoIHRoZSBsaWJ4bWwyIG5hbWVzcGFjZQoJICAoIzM2MTY3NSkuCgoyMDA2LTEwLTE3IDEwOjMwOjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5oOiBGaXggZ3N0X2J1ZmZlcl9yZXBsYWNlKCkgbWFjcm8gdG8gYXZvaWQgZ3N0X21pbmlfb2JqZWN0X3JlcGxhY2UoKS1yZWxhdGVkIHR5cGUtcHVubmVkIHBvaW50ZXIgd2FybmluZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgRml4IGdzdF9idWZmZXJfcmVwbGFjZSgpIG1hY3JvIHRvIGF2b2lkIGdzdF9taW5pX29iamVjdF9yZXBsYWNlKCktcmVsYXRlZAoJICB0eXBlLXB1bm5lZCBwb2ludGVyIHdhcm5pbmdzLgoKMjAwNi0xMC0xNiAyMDowMjozOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RlbGVtZW50Lmg6IEFkZCBjYXN0cyB0byB0aGUgY29ycmVjdCByZXR1cm4gdHlwZSB0byBzdGF0ZSA8PT4gc3RhdGUgdHJhbnNpdGlvbiBtYWNyb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIEFkZCBjYXN0cyB0byB0aGUgY29ycmVjdCByZXR1cm4gdHlwZSB0byBzdGF0ZSA8PT4gc3RhdGUgdHJhbnNpdGlvbgoJICBtYWNyb3MuCgoyMDA2LTEwLTE2IDEzOjUzOjU1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWxpdmUtc291cmNlLnR4dDogZGVzY3JpYmUgaG93dG8gaGFuZGxlIGxhdGVuY3kKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1saXZlLXNvdXJjZS50eHQ6CgkgIGRlc2NyaWJlIGhvd3RvIGhhbmRsZSBsYXRlbmN5CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9wcm9maWxpbmcudHh0OgoJICBtb3JlIGlkZWFzCgkgICogdG9vbHMvZ3N0LXBsb3QtdGltZWxpbmUucHk6CgkgIGZpeCBsb2cgcGFyc2luZyBmb3Igc29sYXJpcywgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbgoKMjAwNi0xMC0xNiAxMTo0NjowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFVwZGF0ZSBzb21lIGRvY3MgcmVnYXJkaW5nIHJldmVyc2UgcGxheWJhY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtdHJpY2ttb2Rlcy50eHQ6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgIFVwZGF0ZSBzb21lIGRvY3MgcmVnYXJkaW5nIHJldmVyc2UgcGxheWJhY2suCgoyMDA2LTEwLTE1IDEyOjQ3OjEzICswMDAwICBNYXJjdXMgR3JhbmFkbyA8bXJjLmdyYW5AZ21haWwuY29tPgoKCSAgd2luMzIvdnM4L2dyYW1tYXIudmNwcm9qOiBFcnJvciBvdXQgd2l0aCBhIHdhcm5pbmcgaWYgZ2xpYi1nZW5tYXJzaGFsLmV4ZSBpcyBub3QgaW4gcGF0aCwgaW5zdGVhZCBvZiBjcmVhdGluZyBib2d1cyBnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyY3VzIEdyYW5hZG8gIDxtcmMgZG90IGdyYW4gYXQgZ21haWwgY29tPgoJICAqIHdpbjMyL3ZzOC9ncmFtbWFyLnZjcHJvajoKCSAgRXJyb3Igb3V0IHdpdGggYSB3YXJuaW5nIGlmIGdsaWItZ2VubWFyc2hhbC5leGUgaXMgbm90IGluIHBhdGgsCgkgIGluc3RlYWQgb2YgY3JlYXRpbmcgYm9ndXMgZ3N0bWFyc2hhbC5bY2hdIGZpbGVzLiBGaXhlcyAjMzYxNzIwLgoKMjAwNi0xMC0xMyAxNjowOTo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IFdoZW4gc2Vla2luZyB0byBzdG9wIC0xLCBzZXQgbGFzdF9zdG9wIChjdXJyZW50IHBvc2l0aW9uKSB0byB0aGUgZHVyYXRpb24gb2YgdGhlIHNlZ21lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfc2Vlayk6CgkgIFdoZW4gc2Vla2luZyB0byBzdG9wIC0xLCBzZXQgbGFzdF9zdG9wIChjdXJyZW50IHBvc2l0aW9uKSB0byB0aGUKCSAgZHVyYXRpb24gb2YgdGhlIHNlZ21lbnQuCgoyMDA2LTEwLTEzIDEzOjI3OjQ2ICswMDAwICBZdmVzIExlZmVidnJlIDxpdmFub2hlQGFiYWNvbS5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5oOiBDbGFyaWZ5IF9OT19QUkVST0xMIGEgYml0IG1vcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIENsYXJpZnkgX05PX1BSRVJPTEwgYSBiaXQgbW9yZS4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgRml4IGRvY3MuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9saW5rX2NoZWNrX2hpZXJhcmNoeSksCgkgIChnc3RfcGFkX2dldF9jYXBzX3VubG9ja2VkKSwgKGdzdF9wYWRfc2F2ZV90aHlzZWxmKSwKCSAgKGhhbmRsZV9wYWRfYmxvY2spLCAoZ3N0X3BhZF9wdXNoX2V2ZW50KSwgKGdzdF9wYWRfc2VuZF9ldmVudCk6CgkgIFBhdGNoIGJ5OiBZdmVzIExlZmVidnJlIDxpdmFub2hlIGF0IGFiYWNvbSBkb3QgY29tPiBGaXggcG9zc2libGUgZGVhZGxvY2sKCSAgZHVlIHRvIHdyb25nIGxvY2tpbmcgb3JkZXIuIEZpeGVzICMzNjE3NjkuCgkgIFJlbW92ZSBzb21lIHJlZHVuZGFudC9taXNwbGFjZWQgY2hlY2tzIGluIHBhZF9ibG9jay4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbik6CgkgIEZvciBuZWdhdGl2ZSByYXRlcywgY291bnQgYmFja3dhcmRzIGZyb20gdGhlIGR1cmF0aW9uLgoKMjAwNi0xMC0xMyAwOTozNzo1OSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RlcnJvci5jOiBGaXggZXJyb3IgbWVzc2FnZSBmb3IgR1NUX0xJQlJBUllfRVJST1JfU0VUVElOR1MgKGZlZWwgZnJlZSB0byBjb21lIHVwIHdpdGggc29tZXRoaW5nIGJldHRlcikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlcnJvci5jOiAoX2dzdF9saWJyYXJ5X2Vycm9yc19pbml0KToKCSAgRml4IGVycm9yIG1lc3NhZ2UgZm9yIEdTVF9MSUJSQVJZX0VSUk9SX1NFVFRJTkdTIChmZWVsIGZyZWUgdG8gY29tZQoJICB1cCB3aXRoIHNvbWV0aGluZyBiZXR0ZXIpLgoKMjAwNi0xMC0xMiAyMjozNTo1MiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHdpbjMyLzogRG9uJ3QgcmVmZXJlbmNlIGdsaWItY29tcGF0LmMgd2hpY2ggaXMgY3VycmVudGx5IG5vdCB1c2VkIGFuZCBub3QgZGlzdGVkOyBhZGQgZ3N0cXVhcmsuYyB3aGljaCB3YXMgcmVjZW50bHkgYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi92czYvbGliZ3N0cmVhbWVyLmRzcDoKCSAgKiB3aW4zMi92czcvbGliZ3N0cmVhbWVyLnZjcHJvajoKCSAgKiB3aW4zMi92czgvbGliZ3N0cmVhbWVyLnZjcHJvajoKCSAgRG9uJ3QgcmVmZXJlbmNlIGdsaWItY29tcGF0LmMgd2hpY2ggaXMgY3VycmVudGx5IG5vdCB1c2VkIGFuZCBub3QKCSAgZGlzdGVkOyBhZGQgZ3N0cXVhcmsuYyB3aGljaCB3YXMgcmVjZW50bHkgYWRkZWQuIEZpeGVzICMzNjE3MzAuCgoyMDA2LTEwLTEyIDE2OjA5OjI0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgd2luMzIvY29tbW9uLzogQWRkIGdzdF9jYXBzX21lcmdlKCkgYW5kIGEgYnVuY2ggb2Ygb3RoZXIgcmVjZW50bHktYWRkZWQgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGNvbnRyb2xsZXIuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgZ3N0X2NhcHNfbWVyZ2UoKSBhbmQgYSBidW5jaCBvZiBvdGhlciByZWNlbnRseS1hZGRlZCBmdW5jdGlvbnMuCgkgIEZpeGVzICMzNjE3MzIuCgoyMDA2LTEwLTExIDE2OjMwOjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9wbHVnaW5zLzogVXBkYXRlIGVsZW1lbnQgYXJncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkgICogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkgICogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkgIFVwZGF0ZSBlbGVtZW50IGFyZ3MuCgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkgIFNtYWxsIGNvbW1lbnQgdXBkYXRlLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2NsYXNzX2luaXQpLCAoZ3N0X3RlZV9pbml0KSwKCSAgKGdzdF90ZWVfcmVxdWVzdF9uZXdfcGFkKSwgKGdzdF90ZWVfcmVsZWFzZV9wYWQpLAoJICAoZ3N0X3RlZV9idWZmZXJfYWxsb2MpLCAoZ3N0X3RlZV9zaW5rX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X3RlZV9zaW5rX2FjdGl2YXRlX3B1bGwpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmg6CgkgIFNvbWUgdGVlIGxvdmluZzoKCSAgQWRkIGRlZmF1bHQgcHJvcGVydHkgZGVmaW5lcy4KCSAgSW1wbGVtZW50IHJlbGVhc2UgcGFkIGZ1bmN0aW9uLgoJICBHaXZlIHByb3BlcnRpZXMgYmV0dGVyIGJsdWJzIGV0Yy4KCSAgQWN0aXZhdGUgcGFkcyBiZWZvcmUgYWRkaW5nIHRoZW0gdG8gYSBydW5uaW5nIHRlZS4KCSAgRG8gc2ltcGxlIGJ1ZmZlcl9hbGxvYyBvbiB0aGUgZmlyc3QgcmVxdWVzdGVkIHBhZC4KCSAgUG9zdCBlcnJvciB3aGVuIGFjdGl2YXRpb24gZmFpbHMuCgoyMDA2LTEwLTExIDEyOjE2OjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBDaGVjayByZXR1cm4gdmFsdWUgb2Ygd3JpdGUoKSB0byBtYWtlIGNvbXBpbGVyIGhhcHB5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChlbnN1cmVfY3VycmVudF9yZWdpc3RyeV9mb3JraW5nKToKCSAgQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdyaXRlKCkgdG8gbWFrZSBjb21waWxlciBoYXBweS4KCjIwMDYtMTAtMTEgMTA6MTA6MzcgKzAwMDAgIFNqb2VyZCBTaW1vbnMgPHNqb2VyZEBsdW9uLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogUmVjaGVjayBxdWV1ZSBmaWxsZWRuZXNzIGFmdGVyIHNpZ25hbGxpbmcgdGhlIG92ZXJydW4gd2hlbiB3ZSdyZSBhYm91dCB0byBsZWFrIGRvd25zdHJlYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNqb2VyZCBTaW1vbnMgPHNqb2VyZCBhdCBsdW9uIGRvdCBuZXQ+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2NoYWluKToKCSAgUmVjaGVjayBxdWV1ZSBmaWxsZWRuZXNzIGFmdGVyIHNpZ25hbGxpbmcgdGhlIG92ZXJydW4gd2hlbiB3ZSdyZSBhYm91dAoJICB0byBsZWFrIGRvd25zdHJlYW0gYmVjYXVzZSB3ZSByZWxlYXNlZCB0aGUgbG9jayB3aGVuIGVtaXR0aW5nIHRoZSBzaWduYWwKCSAgYW5kIHRoZSBxdWV1ZSBjb3VsZCBiZSBlbXB0eSBhZ2Fpbi4gRml4ZXMgIzM1MjM0NS4KCjIwMDYtMTAtMTEgMDk6MTM6MjYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogRml4IHJlZmNvdW50aW5nIGhlcmUgdG9vLCBqdXN0IGxpa2Ugd2UgZGlkIGZvciBfbmV3X3ZhbGlzdCgpIGEgZmV3IGRheXMgYWdvICgjMzUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IChnc3RfY29udHJvbGxlcl9uZXdfbGlzdCk6CgkgIEZpeCByZWZjb3VudGluZyBoZXJlIHRvbywganVzdCBsaWtlIHdlIGRpZCBmb3IgX25ld192YWxpc3QoKSBhIGZldwoJICBkYXlzIGFnbyAoIzM1NzE4MCkgKHRoYW5rcyB0byBSZW7DqSBTdGFkbGVyKS4gQWxzbyByZW1vdmUgYWxsIHRob3NlCgkgICdTaW5jZTogMC45JyBmcm9tIHRoZSBndGstZG9jIGJsb2JzLgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOiAoY29udHJvbGxlcl9yZWZjb3VudF9uZXdfbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIFVuaXQgdGVzdCBmb3IgdGhlIGFib3ZlLgoKMjAwNi0xMC0xMCAxNDo0Nzo0MCArMDAwMCAgU2ViYXN0aWVuIENvdGUgPHNlYmFzNjQyQHlhaG9vLmNhPgoKCSAgZ3N0L2dzdHBhZC5jOiBVcGRhdGUgc29tZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFNlYmFzdGllbiBDb3RlIDxzZWJhczY0MiBhdCB5YWhvbyBkb3QgY2E+CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9nZXRfY2Fwc191bmxvY2tlZCksCgkgIChnc3RfcGFkX3NhdmVfdGh5c2VsZik6CgkgIFVwZGF0ZSBzb21lIGRvY3MuCgkgIFdyaXRlIHBhZCBkaXJlY3Rpb24gaW4gWE1MIG91dHB1dC4gRml4ZXMgIzM0NTQ5Ni4KCjIwMDYtMTAtMTAgMTQ6MTM6MDggKzAwMDAgIFJlbsOpIFN0YWRsZXIgPG1haWxAcmVuZXN0YWRsZXIuZGU+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogVGFrZSByZWYgdG8gY29udHJvbGxlZCBvYmplY3Qgc28gdGhhdCBpdCBjYW5ub3QgZGlzYXBwZWFyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFJlbsOpIFN0YWRsZXIgPG1haWwgYXQgcmVuZXN0YWRsZXIgZG90IGRlPgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfbmV3X3ZhbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl9uZXdfbGlzdCksIChfZ3N0X2NvbnRyb2xsZXJfZGlzcG9zZSksCgkgIChfZ3N0X2NvbnRyb2xsZXJfZmluYWxpemUpLCAoX2dzdF9jb250cm9sbGVyX2NsYXNzX2luaXQpOgoJICBUYWtlIHJlZiB0byBjb250cm9sbGVkIG9iamVjdCBzbyB0aGF0IGl0IGNhbm5vdCBkaXNhcHBlYXIuCgkgIEZpeGVzICMzNTc0MzIuCgoyMDA2LTEwLTEwIDE0OjA5OjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogQWN0aXZhdGUvZGVhY3RpdmF0ZSBwYWRzIGluIHNldHVwL3RlYXJkb3duIHJlc3BlY3RpdmVseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19zZXR1cF9zcmNfcGFkKSwKCSAgKGdzdF9jaGVja190ZWFyZG93bl9zcmNfcGFkKSwgKGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCksCgkgIChnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQpOgoJICBBY3RpdmF0ZS9kZWFjdGl2YXRlIHBhZHMgaW4gc2V0dXAvdGVhcmRvd24gcmVzcGVjdGl2ZWx5LgoKMjAwNi0xMC0xMCAxMjoxMjo0NCArMDAwMCAgSm9zZXAgVG9ycmUgVmFsbGVzIDxqb3NlcEBmbHVlbmRvLmNvbT4KCgkgIGdzdC9NYWtlZmlsZS5hbTogQ2FzdCB2YWx1ZXMgd2hlbiBtYWtpbmcgZ3N0ZW51bXR5cGVzLmguICBUaGlzIHBhY2lmaWVzIEZvcnRlIHNvIGl0IGRvZXNuJ3Qgd2FybiBhYm91dCB0aGUgfjAgYXMgR1NUXy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0xMC0xMCAgWmFoZWVyIEFiYmFzIE1lcmFsaSAgPHphaGVlcmFiYmFzIGF0IG1lcmFsaSBkb3Qgb3JnPgoJICBQYXRjaCBieTogSm9zZXAgVG9ycmUgVmFsbGVzIDxqb3NlcEBmbHVlbmRvLmNvbT4KCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgIENhc3QgdmFsdWVzIHdoZW4gbWFraW5nIGdzdGVudW10eXBlcy5oLiAgVGhpcyBwYWNpZmllcyBGb3J0ZQoJICBzbyBpdCBkb2Vzbid0IHdhcm4gYWJvdXQgdGhlIH4wIGFzIEdTVF9NRVNTQUdFX0FOWSBub3QgZml0dGluZwoJICBpbiB0aGUgZW51bWVyYXRpb24uCgoyMDA2LTEwLTA5IDE3OjE1OjM5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50LmM6IFJlbmFtZSBzb21lIG1vcmUgQGN1ciB0byBAc3RhcnQgdG8gZml4IGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19zZWVrKSwgKGdzdF9ldmVudF9wYXJzZV9zZWVrKToKCSAgUmVuYW1lIHNvbWUgbW9yZSBAY3VyIHRvIEBzdGFydCB0byBmaXggZG9jcy4KCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc2V0X3NlZWspOgoJICBGaXggdHlwby4KCSAgdGltZSBhbmQgc3RhcnQgbXVzdCBhbHdheXMgc3RheSBpbiBzeW5jIGFzIGRlZmluZWQgaW4gZGVzaWduIGRvYy4KCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoZ3N0X3RhZ19saXN0X2lzX2VtcHR5KToKCSAgUmVuYW1lIHBhcmFtIHRvIGZpeCBkb2NzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIENoZWNrIHRoYXQgc3RhcnQgYW5kIHRpbWUgYXJlIGluIHN5bmMuCgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOgoJICAoZ3N0X3BhcnNlX3Rlc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICBBY3RpdmF0ZSBwYWQgYmVmb3JlIGFkZGluZyB0byB0aGUgZWxlbWVudC4KCjIwMDYtMTAtMDkgMTY6MzM6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXFvcy50eHQ6IEZpeCB0eXBvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXFvcy50eHQ6CgkgIEZpeCB0eXBvLgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBVcGRhdGUgc2VlayBldmVudCBkb2NzIHJlZ2FyZGluZyBuZWdhdGl2ZSByYXRlcy4KCSAgUmVuYW1lIEBjdXIgdG8gQHN0YXJ0LgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9zZXRfc2Vlayk6CgkgICogZ3N0L2dzdHNlZ21lbnQuaDoKCSAgVXBkYXRlIHNldF9zZWVrIGRvY3MgcmVnYXJkaW5nIG5lZ2F0aXZlIHJhdGVzLgoJICBDb3JyZWN0bHkgdXBkYXRlIGxhc3Rfc3RvcCB0byBAc3RvcCB3aGVuIGRlYWxpbmcgd2l0aCBuZWdhdGl2ZQoJICByYXRlcy4KCSAgUmVuYW1lIEBjdXIgdG8gQHN0YXJ0LgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgQWN0aXZhdGUgcGFkcyBiZWZvcmUgdHJ5aW5nIHRvIHVzZSB0aGVtLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3Rfc2VnbWVudF9zdWl0ZSk6CgkgIEFkZCBzaW1wbGUgY2hlY2sgZm9yIHNlZ21lbnRzIGFuZCBuZWdhdGl2ZSByYXRlcy4KCjIwMDYtMTAtMDkgMTE6MjA6NDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBUEk6IGFkZCBnc3RfdGFnX2xpc3RfaXNfZW1wdHkoKSAoIzM2MDQ2NykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6IChnc3RfdGFnX2xpc3RfaXNfZW1wdHkpOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgQVBJOiBhZGQgZ3N0X3RhZ19saXN0X2lzX2VtcHR5KCkgKCMzNjA0NjcpLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R0YWcuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgQW5kIGEgdGVzdCBjYXNlLgoKMjAwNi0xMC0wOSAxMTowNjo1MCArMDAwMCAgWmFoZWVyIEFiYmFzIE1lcmFsaSA8emFoZWVyYWJiYXNAbWVyYWxpLm9yZz4KCgkgIGdzdC9nc3RtZXNzYWdlLmg6IFJldmVydCBjaGFuZ2UgZnJvbSBlYXJsaWVyIHdydCBHU1RfTUVTU0FHRV9UWVBFX0FOWSBoYXZpbmcgYSB2YWx1ZSB0aGF0IGRvZXNuJ3QgZml0IG9uIGVudW1lcmF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0xMC0wOSAgWmFoZWVyIEFiYmFzIE1lcmFsaSAgPHphaGVlcmFiYmFzIGF0IG1lcmFsaSBkb3Qgb3JnPgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIFJldmVydCBjaGFuZ2UgZnJvbSBlYXJsaWVyIHdydCBHU1RfTUVTU0FHRV9UWVBFX0FOWSBoYXZpbmcKCSAgYSB2YWx1ZSB0aGF0IGRvZXNuJ3QgZml0IG9uIGVudW1lcmF0aW9uLgoKMjAwNi0xMC0wOSAxMDoxNDoyOCArMDAwMCAgWmFoZWVyIEFiYmFzIE1lcmFsaSA8emFoZWVyYWJiYXNAbWVyYWxpLm9yZz4KCgkgIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiBSZW1vdmUgbG9jYWwgZGVidWdnaW5nIHN5c3RlbSBhbmQgdXNlIEdzdHJlYW1lcidzIGluc3RlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTEwLTA5ICBaYWhlZXIgQWJiYXMgTWVyYWxpICA8emFoZWVyYWJiYXMgYXQgbWVyYWxpIGRvdCBvcmc+CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IChnc3RfbmV0X2NsaWVudF9jbG9ja190aHJlYWQpOgoJICBSZW1vdmUgbG9jYWwgZGVidWdnaW5nIHN5c3RlbSBhbmQgdXNlIEdzdHJlYW1lcidzIGluc3RlYWQuCgoyMDA2LTEwLTA5IDA5OjMyOjI5ICswMDAwICBKb3NlcCBUb3JyZSBWYWxsZXMgPGpvc2VwQGZsdWVuZG8uY29tPgoKCSAgY29tbW9uL200L2dzdC1lcnJvci5tNDogRGlzYWJsZSB3YXJuaW5nIG9mIHN0YXRlbWVudCBub3QgcmVhY2hlZCBvbiBGb3J0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMTAtMDkgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgUGF0Y2ggYnk6IEpvc2VwIFRvcnJlIFZhbGxlcyA8am9zZXBAZmx1ZW5kby5jb20+CgkgICogY29tbW9uL200L2dzdC1lcnJvci5tNDoKCSAgRGlzYWJsZSB3YXJuaW5nIG9mIHN0YXRlbWVudCBub3QgcmVhY2hlZCBvbiBGb3J0ZS4KCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBGaXggd2FybmluZyBvbiBGb3J0ZSAodmFsdWUgZG9lc24ndCBmaXQgb24gZW51bWVyYXRpb24pLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQpOgoJICBGaXggd2FybmluZyBvbiBGb3J0ZSAodmFsdWUgZG9lc24ndCBmaXQgb24gZW51bWVyYXRpb24pLgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiAoZ3N0X25ldF9jbGllbnRfY2xvY2tfdGhyZWFkKToKCSAgREVCVUcgbWFjcm8gc2F5cyBpdCB0YWtlcyBtaW5pbXVtIG9mIDIgYXJncyBhbmQgc28gRm9ydGUKCSAgY29tcGxhaW5zIGFib3V0IHRoZSB1c2Ugd2l0aCBqdXN0IDEgYXJnLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgVXNlIGNvcnJlY3QgcmV0dXJuIHR5cGUgZm9yIHRoZSB1cmkgaGFuZGxlciBpbXBsZW1lbnRhdGlvbnMuCgkgIEFsbCB0aGVzZSBmaXggd2FybmluZ3MgaW4gRm9ydGUuICBGaXhlcyBidWcgIzM2MDg2MC4KCjIwMDYtMTAtMDggMTM6Mjc6MTcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZWxlbWVudC5oOiBnY2MgdmVyc2lvbnMgcHJpb3IgdG8gZ2NjIDMuMyBhcHBhcmVudGx5IGNvbXBsYWluIGFib3V0IGEgTlVMTCBwcmludGYgZm9ybWF0IHN0cmluZywgc28gZG9uJ3QgdXNlIEcuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgZ2NjIHZlcnNpb25zIHByaW9yIHRvIGdjYyAzLjMgYXBwYXJlbnRseSBjb21wbGFpbiBhYm91dCBhIE5VTEwgcHJpbnRmCgkgIGZvcm1hdCBzdHJpbmcsIHNvIGRvbid0IHVzZSBHX0dOVUNfUFJJTlRGIGZvciB0aG9zZSB2ZXJzaW9ucy4KCjIwMDYtMTAtMDcgMTg6NDE6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC4qOiBNaW5vciBmaXhlcyB0byBHU1RfSVNfVEFHX0xJU1QgYW5kIGdzdF9pc190YWdfbGlzdCgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoZ3N0X2lzX3RhZ19saXN0KToKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICBNaW5vciBmaXhlcyB0byBHU1RfSVNfVEFHX0xJU1QgYW5kIGdzdF9pc190YWdfbGlzdCgpLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R0YWcuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF90YWdfc3VpdGUpOgoJICBTbWFsbCB0ZXN0IGZvciB0aGUgYWJvdmUuCgoyMDA2LTEwLTA3IDE4OjExOjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHRhZ2xpc3QuaDogTGVzcyB0YWJzLCBtb3JlIHNwYWNlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgTGVzcyB0YWJzLCBtb3JlIHNwYWNlcy4KCjIwMDYtMTAtMDYgMTc6MjE6MzMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aW5mby5oOiBUaG9zZSB0d28gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGRvIGFjdHVhbGx5IGJlbG9uZyB0aGVyZSwgcmV2ZXJ0IGNvbW1pdCBmcm9tIHllc3RlcmRheSB0aGF0IHR1cm5lZCB0aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uaDoKCSAgVGhvc2UgdHdvIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBkbyBhY3R1YWxseSBiZWxvbmcgdGhlcmUsIHJldmVydAoJICBjb21taXQgZnJvbSB5ZXN0ZXJkYXkgdGhhdCB0dXJuZWQgdGhlbSBpbnRybyBtYWNyb3MuCgoyMDA2LTEwLTA2IDE0OjQ2OjA0ICswMDAwICBKb3NlcCBUb3JyZSBWYWxsZXMgPGpvc2VwQGZsdWVuZG8uY29tPgoKCSAgZ3N0L2dzdC5jOiBGaXggZW1wdHkgZGVjbGFyYXRpb24gYW5kIHR5cGUgbWlzbWF0Y2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTEwLTA2ICBaYWhlZXIgQWJiYXMgTWVyYWxpICA8emFoZWVyYWJiYXMgYXQgbWVyYWxpIGRvdCBvcmc+CgkgIFBhdGNoIGJ5OiBKb3NlcCBUb3JyZSBWYWxsZXMgPGpvc2VwQGZsdWVuZG8uY29tPgoJICAqIGdzdC9nc3QuYzogKGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXApOgoJICBGaXggZW1wdHkgZGVjbGFyYXRpb24gYW5kIHR5cGUgbWlzbWF0Y2guCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyk6CgkgIEZpeCB0eXBlIG1pc21hdGNoLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jb250aW51ZV9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlX2Z1bmMpOgoJICBGaXggdHlwZSBtaXNtYXRjaGVzLgoJICAqIGdzdC9nc3RpbmZvLmM6IChnc3RfZGVidWdfY29tcGFyZV9sb2dfZnVuY3Rpb25fYnlfZnVuYyksCgkgIChnc3RfZGVidWdfcmVtb3ZlX2xvZ19mdW5jdGlvbiksIChfZ3N0X2RlYnVnX25hbWVvZl9mdW5jcHRyKToKCSAgQ2FzdCBhcyBhcHByb3ByaWF0ZS4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3RfY2xhc3Nfc2lnbmFsX2Nvbm5lY3QpOgoJICBDYXN0IGFzIGFwcHJvcHJpYXRlLiAgVGhlIGZ1bmN0aW9uIHBvaW50ZXIgcGFyYW1ldGVyIHJlYWxseQoJICBoYXMgdGhlIHdyb25nIHR5cGUgYnV0IHdvdWxkIGJyZWFrIEFQSSBpZiB3ZSBjaGFuZ2UgaXQuCgkgICogZ3N0L2dzdHF1ZXJ5LmM6CgkgIEZpeCByZWRlZmluaXRpb24gb2YgX0ZJTEVfT0ZGU0VUX0JJVFMgY2F1c2VkIG9uIFNvbGFyaXMgd3J0CgkgIG9yZGVyIG9mIGluY2x1ZGluZyBzdHJpbmcuaC4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lKToKCSAgUmVtb3ZlIHVucmVhY2hhYmxlIGxpbmUuCgkgICogZ3N0L2dzdHhtbC5jOiAoZ3N0X3htbF9wYXJzZV9kb2MpOgoJICBGaXggdHlwZSBtaXNtYXRjaC4KCSAgQWxsIHRoZXNlIGNhdWdodCBieSBGb3J0ZS4KCjIwMDYtMTAtMDYgMTQ6MDA6NDkgKzAwMDAgIEpvc2VwIFRvcnJlIFZhbGxlcyA8am9zZXBAZmx1ZW5kby5jb20+CgoJICBjb21tb24vbTQvZ3N0LWVycm9yLm00OiBGaXhlZCBidWcgIzM2MDE1MS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMTAtMDYgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgUGF0Y2ggYnk6IEpvc2VwIFRvcnJlIFZhbGxlcyA8am9zZXBAZmx1ZW5kby5jb20+CgkgICogY29tbW9uL200L2dzdC1lcnJvci5tNDoKCSAgRml4ZWQgYnVnICMzNjAxNTEuCgkgIFdlIG5lZWQgdG8gZGlzYWJsZSB3YXJuaW5ncyBvbiBGb3J0ZSBmb3IgZW1wdHkgZGVjbGFyYXRpb25zCgkgIGR1ZSB0byBnc3QtaW5kZW50IGFkZGluZyA7cyB0byBsaW5lcyB0aGF0IGp1c3QgdXNlIG1hY3JvcwoJICB3aGVyZSB0aGUgbWFjcm8gYWN0dWFsbHkgZG9lc24ndCBuZWVkIGEgOyBhdCBlbmQgdG8gZW5kCgkgIHN0YXRlbWVudC4KCjIwMDYtMTAtMDYgMTM6MDE6MzAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IEFkZCBzb21lIEZJWE1FIGZvciB0aGUgTkVXU0VHTUVOVCBoYW5kbGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19vcGVuX2ZpbGUpLAoJICAoZ3N0X2ZpbGVfc2lua19jbG9zZV9maWxlKSwgKGdzdF9maWxlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2ZpbGVfc2lua19yZW5kZXIpOgoJICBBZGQgc29tZSBGSVhNRSBmb3IgdGhlIE5FV1NFR01FTlQgaGFuZGxpbmcuCgoyMDA2LTEwLTA1IDE1OjQ3OjQ0ICswMDAwICBaYWhlZXIgQWJiYXMgTWVyYWxpIDx6YWhlZXJhYmJhc0BtZXJhbGkub3JnPgoKCSAgZ3N0L3BhcnNlL2dyYW1tYXIueTogUmVtb3ZlIHN0YXRpYyBmdW5jdGlvbiBnc3RfcGFyc2VfZWxlbWVudF9sb2NrIGFzIGFsbCBpdCBkb2VzIGlzIHJldHVybi4gIExvb2tzIGxpa2UgY3J1ZnQgZnJvbSAwLjguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTEwLTA1ICBaYWhlZXIgQWJiYXMgTWVyYWxpICA8emFoZWVyYWJiYXMgYXQgbWVyYWxpIGRvdCBvcmc+CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgUmVtb3ZlIHN0YXRpYyBmdW5jdGlvbiBnc3RfcGFyc2VfZWxlbWVudF9sb2NrIGFzIGFsbCBpdCBkb2VzCgkgIGlzIHJldHVybi4gIExvb2tzIGxpa2UgY3J1ZnQgZnJvbSAwLjguCgoyMDA2LTEwLTA1IDE1OjMxOjE2ICswMDAwICBKb3NlcCBUb3JyZSBWYWxsZXMgPGpvc2VwQGZsdWVuZG8uY29tPgoKCSAgRml4IGEgY29tcGlsYXRpb24gaXNzdWUgd2l0aCBGb3J0ZSBvbiBTb2xhcmlzLiAgaW5ldF9hdG9uIGlzIGluIGxpYnJlc29sdi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMTAtMDUgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgUGF0Y2ggYnk6IEpvc2VwIFRvcnJlIFZhbGxlcyA8am9zZXBAZmx1ZW5kby5jb20+CgkgICogY29tbW9uL200L2dzdC1lcnJvci5tNDoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogbGlicy9nc3QvbmV0L01ha2VmaWxlLmFtOgoJICBGaXggYSBjb21waWxhdGlvbiBpc3N1ZSB3aXRoIEZvcnRlIG9uIFNvbGFyaXMuICBpbmV0X2F0b24gaXMgaW4KCSAgbGlicmVzb2x2LgoKMjAwNi0xMC0wNSAxNDoyNjowOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIFByaW50ZiBmaXhlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAocHJlX2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAobG9hZF9wbHVnaW4pOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfc2V0X2ludGVycG9sYXRpb25fbW9kZSk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICAoZ3N0X2RwX3BhY2tldF9mcm9tX2V2ZW50XzFfMCk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19vYnNlcnZlX3RpbWVzKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NyZWF0ZSk6CgkgIFByaW50ZiBmaXhlcy4KCjIwMDYtMTAtMDUgMTI6MzE6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBZGQgR1NUX1VTSU5HX1BSSU5URl9FWFRFTlNJT04gdG8gZ3N0Y29uZmlnLmggc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgd2UgY2FuIHVzZSBHX0dOVUNfUFJJTlRGIGluIG90aGVyIGhlYWRlciBmaWxlcyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGNvbmZpZy5oLmluOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdGluZm8uaDoKCSAgQWRkIEdTVF9VU0lOR19QUklOVEZfRVhURU5TSU9OIHRvIGdzdGNvbmZpZy5oIHNvIHRoYXQgd2Uga25vdwoJICB3aGV0aGVyIHdlIGNhbiB1c2UgR19HTlVDX1BSSU5URiBpbiBvdGhlciBoZWFkZXIgZmlsZXMgYW5kIGF0CgkgIGxlYXN0IGNoZWNrIHRoZSBwcmludGYgZm9ybWF0L2FyZ3VtZW50cyBvZiBkZWJ1ZyBtZXNzYWdlcyBhbmQKCSAgR1NUX0VMRU1FTlRfRVJST1IgbWVzc2FnZXMgd2hlbiB0aGUgcHJpbnRmIGV4dGVuc2lvbiBpcyBub3QKCSAgYmVpbmcgdXNlZC4KCSAgUmVwbGFjZSBtb3JlIHRhYnMgd2l0aCBzcGFjZXMgaW4gZ3N0aW5mby5oIGFuZCByZW1vdmUgdHdvIHNwdXJpb3VzCgkgIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiBHU1RfRElTQUJMRV9ERUJVRyBwYXJ0IHdpdGggbWFjcm9zLgoKMjAwNi0xMC0wMyAxOToxMzozNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RidXMuYzogTW9yZSBkb2NzIGZvciB0aGUgc3luYy1tZXNzYWdlIHNpZ25hbCAobWVudGlvbiB0aGF0IGl0IGlzIG5vdCBlbWl0dGVkIGJ5IGRlZmF1bHQpOyBsb2cgbWVzc2FnZSBzdHJ1Y3R1ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX2NsYXNzX2luaXQpLCAoZ3N0X2J1c19wb3N0KToKCSAgTW9yZSBkb2NzIGZvciB0aGUgc3luYy1tZXNzYWdlIHNpZ25hbCAobWVudGlvbiB0aGF0IGl0IGlzIG5vdAoJICBlbWl0dGVkIGJ5IGRlZmF1bHQpOyBsb2cgbWVzc2FnZSBzdHJ1Y3R1cmVzIG9mIG1lc3NhZ2VzIHBvc3RlZCBvbgoJICB0aGUgYnVzIGFzIHdlbGwuCgoyMDA2LTEwLTAzIDE1OjEwOjUxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3QuYzogVXNlIGEgcGlwZSBwYWlyIHRvIHJlY2VpdmUgc3RhdHVzIHJlc3VsdHMgZnJvbSB0aGUgZm9ya2VkIGNoaWxkLCBhbmQgaWdub3JlIHRoZSByZXN1bHQgZnJvbSB3YWl0cGlkLiBGaXhlcy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChlbnN1cmVfY3VycmVudF9yZWdpc3RyeV9mb3JraW5nKToKCSAgVXNlIGEgcGlwZSBwYWlyIHRvIHJlY2VpdmUgc3RhdHVzIHJlc3VsdHMgZnJvbSB0aGUgZm9ya2VkIGNoaWxkLCBhbmQKCSAgaWdub3JlIHRoZSByZXN1bHQgZnJvbSB3YWl0cGlkLiBGaXhlcyAjMzU1NDk5CgoyMDA2LTEwLTAyIDE2OjQ2OjE2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6IEZpeCBsZWFrIGluIGNoZWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9naG9zdF9wYWRfc3VpdGUpOgoJICBGaXggbGVhayBpbiBjaGVjay4KCjIwMDYtMTAtMDIgMTY6Mzc6NTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IEFkZCAnU2luY2U6IDAuMTAuMTEnIHRvIGdzdF9wYWRfaXNfYmxvY2tpbmcoKSBndGstZG9jIGJsdXJiLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIEFkZCAnU2luY2U6IDAuMTAuMTEnIHRvIGdzdF9wYWRfaXNfYmxvY2tpbmcoKSBndGstZG9jIGJsdXJiLgoKMjAwNi0xMC0wMiAxNjowMTo1NCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OiBGdXJ0aGVyIGV4cGxhaW4gdGhlIHVzZSBvZiBmbHVzaGluZyBvbiBibG9ja2VkIHBhZHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICBGdXJ0aGVyIGV4cGxhaW4gdGhlIHVzZSBvZiBmbHVzaGluZyBvbiBibG9ja2VkIHBhZHMuCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2lzX2Jsb2NraW5nKSwgKGhhbmRsZV9wYWRfYmxvY2spLAoJICAoZ3N0X3BhZF9wdXNoX2V2ZW50KToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIEFkZGVkIG5ldyBHc3RQYWRGbGFnIDogR1NUX1BBRF9CTE9DS0lORy4KCSAgQWRkcyB0aGUgbm90aW9uIG9mIHBhZHMgcmVhbGx5IGJsb2NraW5nLCB3aGljaCBlbmFibGVzIHRvIHByb3Blcmx5CgkgIGhhbmRsZSBGTFVTSF9TVEFSVC9GTFVTSF9TVE9QIGV2ZW50cyBvbiBibG9ja2VkIHBhZHMuCgkgIEZpeGVzICMzNTg5OTkKCSAgQVBJOiBnc3RfcGFkX2lzX2Jsb2NraW5nKCkKCSAgQVBJOiBHU1RfUEFEX0lTX0JMT0NLSU5HKCkgbWFjcm8KCSAgQVBJOiBHU1RfUEFEX0JMT0NLSU5HIEdzdFBhZEZsYWcKCjIwMDYtMTAtMDIgMTA6MDY6MTcgKzAwMDAgIG1yY2dyYW4gPG1yYy5ncmFuQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jOiBGaWx0ZXIgdGhlIHByb3hpZWQgY2FwcyBhZ2FpbnN0IHRoZSBwYWR0ZW1wbGF0ZSBpZiB3ZSBoYXZlIG9uZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBtcmNncmFuIDxtcmMuZ3JhbiBhdCBnbWFpbCBkb3QgY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9kb19nZXRjYXBzKToKCSAgRmlsdGVyIHRoZSBwcm94aWVkIGNhcHMgYWdhaW5zdCB0aGUgcGFkdGVtcGxhdGUgaWYgd2UgaGF2ZSBvbmUuCgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3NlZ21lbnQpOgoJICBBZGQgaW5jbHVkZSBmb3IgZ3N0aW5mby5oIHNvIHRoYXQgY29tcGlsYXRpb24gd2l0aAoJICAtREdTVF9ESVNBQkxFX0dTVF9ERUJVRyB3b3JrcyBhZ2Fpbi4gRml4ZXMgIzM1ODQzNi4KCjIwMDYtMTAtMDIgMDk6NDQ6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIEdpdmUgY3JlZGl0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBHaXZlIGNyZWRpdAoKMjAwNi0xMC0wMiAwOTo0MTowOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogU2V0IGZpbGUgdG8gTlVMTCB3aGVuIGNsb3NpbmcgZmlsZXNpbmsgc28gdGhhdCB3ZSBjYW4gc2V0IGEgbmV3IGZpbGVuYW1lIGluIFJFQURZLiBGaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2luaXQpLAoJICAoZ3N0X2ZpbGVfc2lua19zZXRfbG9jYXRpb24pLCAoZ3N0X2ZpbGVfc2lua19vcGVuX2ZpbGUpLAoJICAoZ3N0X2ZpbGVfc2lua19jbG9zZV9maWxlKSwgKGdzdF9maWxlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2ZpbGVfc2lua19yZW5kZXIpOgoJICBTZXQgZmlsZSB0byBOVUxMIHdoZW4gY2xvc2luZyBmaWxlc2luayBzbyB0aGF0IHdlIGNhbiBzZXQgYSBuZXcgZmlsZW5hbWUKCSAgaW4gUkVBRFkuIEZpeGVzICMzNTg2MTMuCgoyMDA2LTEwLTAyIDA4OjM3OjI0ICswMDAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyb0BubnZhLm9yZz4KCgkgIGdzdC9nc3RldmVudC5jOiBGaXggZ3N0X21pbmlfb2JqZWN0X21ha2Vfd3JpdGFibGUoKSBhbmQgZ3N0X2V2ZW50X2NvcHkoKSBmb3IgZXZlbnRzIHdpdGggZXZlbnQgc3RydWN0dXJlcyBieSBzZXR0aW5nIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEFsZXNzYW5kcm8gRGVjaW5hICA8YWxlc3NhbmRybyBhdCBubnZhIG9yZz4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKF9nc3RfZXZlbnRfY29weSk6CgkgIEZpeCBnc3RfbWluaV9vYmplY3RfbWFrZV93cml0YWJsZSgpIGFuZCBnc3RfZXZlbnRfY29weSgpIGZvciBldmVudHMKCSAgd2l0aCBldmVudCBzdHJ1Y3R1cmVzIGJ5IHNldHRpbmcgdGhlIHBhcmVudCByZWZjb3VudCBhZGRyZXNzIG9mIHRoZQoJICBjb3BpZWQgc3RydWN0dXJlIHRvIHRoZSBhZGRyZXNzIG9mIHRoZSByZWZjb3VudCBtZW1iZXIgb2YgdGhlIG5ld2x5CgkgIGNvcGllZCBldmVudCByYXRoZXIgdGhhbiB0aGUgYWRkcmVzcyBvZiB0aGUgcmVmY291bnQgbWVtYmVyIG9mIHRoZQoJICBvcmlnaW5hbCBldmVudC4gRml4ZXMgIzM1ODczNy4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZXZlbnQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVW5pdCB0ZXN0IGZvciB0aGUgYWJvdmUuCgoyMDA2LTA5LTI5IDIwOjI5OjQ5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9NYWtlZmlsZS5hbTogRGlzdCBzb21lIG1vcmUgZmlsZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL01ha2VmaWxlLmFtOgoJICBEaXN0IHNvbWUgbW9yZSBmaWxlcy4KCjIwMDYtMDktMjkgMTI6MzE6MTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzogQWRkIHRlc3QgZm9yIHRoZSBwcmV2aW91cyBmaXg7IGFkZCBzb21lIG1vcmUgdGVzdHMgZm9yIGNvcnJlY3QgcmVmY291bnRpbmcgYmVoYXZpb3VyOyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIEFkZCB0ZXN0IGZvciB0aGUgcHJldmlvdXMgZml4OyBhZGQgc29tZSBtb3JlIHRlc3RzCgkgIGZvciBjb3JyZWN0IHJlZmNvdW50aW5nIGJlaGF2aW91cjsgZml4IGEgZmV3IGxlYWtzCgkgIGluIHRlc3QgY2FzZXM7IGNhbGwgZ3N0X2NvbnRyb2xsZXJfaW5pdCgpIGF0IHN0YXJ0CgkgIG9mIGFsbCB0ZXN0cy4KCjIwMDYtMDktMjkgMTI6MjQ6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogRG9uJ3QgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKSBvbiB0aW1lZCB2YWx1ZXMgd2l0aCBpbnZhbGlkIHRpbWVzdGFtcHMgaW5zaWRlIGEgY3IuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IChnc3RfY29udHJvbGxlcl9uZXdfdmFsaXN0KSwKCSAgKGdzdF9jb250cm9sbGVyX3NldF9mcm9tX2xpc3QpOgoJICBEb24ndCBnX3JldHVybl92YWxfaWZfZmFpbCgpIG9uIHRpbWVkIHZhbHVlcyB3aXRoIGludmFsaWQgdGltZXN0YW1wcwoJICBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIHdpdGhvdXQgdW5sb2NraW5nIHRoZSBtdXRleC4gU3BvdHRlZCBieQoJICBSZW7DqSBTdGFkbGVyLiAoIzM1NzYxNykKCSAgQWxzbywgZml4IHVwIHJlZmNvdW50aW5nIHByb3Blcmx5OiB3aGVuIHJldHVybmluZyBhbiBleGlzdGluZwoJICBjb250cm9sbGVyLCB3ZSBzaG91bGQgaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBvbmx5IG9uY2UgYW5kIG5vdAoJICBvbmNlIHBlciBwcm9wZXJ0eSBhbmQgd2hlbiB0cnlpbmcgdG8gY29udHJvbCBhIHByb3BlcnR5IGFnYWluCgkgIHdlIHNob3VsZCBhbHNvIGluY3JlYXNlIHRoZSByZWZjb3VudC4KCjIwMDYtMDktMjkgMDg6MjI6MjIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9uZXQvOiBTdG9wIHJlYWRpbmcgY29tbWFuZHMgd2hlbiBFT0YgYXMgd2VsbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IChnc3RfbmV0X2NsaWVudF9jbG9ja190aHJlYWQpOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzoKCSAgKGdzdF9uZXRfdGltZV9wcm92aWRlcl90aHJlYWQpOgoJICBTdG9wIHJlYWRpbmcgY29tbWFuZHMgd2hlbiBFT0YgYXMgd2VsbC4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9jbGFzc19pbml0KToKCSAgVW5pZnkgZGVzY3JpcHRpb24gb2YgdGhlIGR1bXAgcHJvcGVydHkuCgoyMDA2LTA5LTI4IDE3OjIwOjE3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgTWVudGlvbiBidWcgbnVtYmVyIGluIHByZXZpb3VzIGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgTWVudGlvbiBidWcgbnVtYmVyIGluIHByZXZpb3VzIGNvbW1pdAoKMjAwNi0wOS0yOCAxNTo1MjowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9leGFtcGxlcy9tYW51YWwvLmN2c2lnbm9yZTogT0ssIHNvIGl0J3MgYWN0dWFsbHkgY3ZzaWdub3JlIHRoYXQgbmVlZHMgY2hhbmdpbmcuIFN0b3AgbGF1Z2hpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2V4YW1wbGVzL21hbnVhbC8uY3ZzaWdub3JlOgoJICBPSywgc28gaXQncyBhY3R1YWxseSBjdnNpZ25vcmUgdGhhdCBuZWVkcyBjaGFuZ2luZy4gU3RvcCBsYXVnaGluZy4KCjIwMDYtMDktMjggMTU6Mjc6MTIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgdGVzdHMvZXhhbXBsZXMvbWFudWFsL01ha2VmaWxlLmFtOiBHYWgsIGRlY2xhcmUgdmFycyAqYmVmb3JlKiB1c2luZyB0aGVtCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2V4YW1wbGVzL21hbnVhbC9NYWtlZmlsZS5hbToKCSAgR2FoLCBkZWNsYXJlIHZhcnMgKmJlZm9yZSogdXNpbmcgdGhlbQoKMjAwNi0wOS0yOCAxNDowMDo0MyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvOiBSZS1jb21taXQgdGhlIHJlZ2lzdHJ5IGNoYW5nZXMsIGFsb25nIHdpdGggYW4gZXh0cmEgZml4OgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3ByZSksIChzY2FuX2FuZF91cGRhdGVfcmVnaXN0cnkpLAoJICAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnlfbm9uZm9ya2luZyksCgkgIChlbnN1cmVfY3VycmVudF9yZWdpc3RyeV9mb3JraW5nKSwgKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5KSwKCSAgKGluaXRfcG9zdCksIChnc3RfZGVidWdfaGVscCksIChnc3RfZGVpbml0KToKCSAgKiBnc3QvZ3N0X3ByaXZhdGUuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9maW5hbGl6ZSksCgkgIChnc3RfcmVnaXN0cnlfcmVtb3ZlX2ZlYXR1cmVzX2Zvcl9wbHVnaW5fdW5sb2NrZWQpLAoJICAoZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9wbHVnaW4pLCAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCksCgkgIChnc3RfcmVnaXN0cnlfc2Nhbl9wYXRoKSwKCSAgKF9wcml2X2dzdF9yZWdpc3RyeV9yZW1vdmVfY2FjaGVfcGx1Z2lucyksCgkgIChfcHJpdl9nc3RfcmVnaXN0cnlfY2xlYW51cCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIFJlLWNvbW1pdCB0aGUgcmVnaXN0cnkgY2hhbmdlcywgYWxvbmcgd2l0aCBhbiBleHRyYSBmaXg6CgkgIFdoZW4gYSBjYWNoZWQgcGx1Z2luIGlzIGVuY291bnRlcmVkIGF0IGEgZGlmZmVyZW50IGZpbGUgcGF0aCwKCSAgdXBkYXRlIHRoZSBzdG9yZWQgcGF0aCBpbiB0aGUgcmVnaXN0cnkgY2FjaGUgc28gdGhhdCB0aGUgcGFyZW50CgkgIHByb2Nlc3Mga25vd3Mgd2hlcmUgaXQgYWN0dWFsbHkgaXMgbm93IHdoZW4gaXQgcmUtcmVhZHMgdGhlIHJlZ2lzdHJ5CgkgIGNhY2hlLiBGaXhlcyB0aGUgdGhpbmcgdGhhdCBicm9rZSBkaXN0Y2hlY2sgd2l0aCB0aGUgcHJldmlvdXMgY29tbWl0LgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBDbGVhbiB1cCBmaWxlcyBuYW1lZCAnY29yZScgdG9vIHdoZW4gcnVubmluZyBtYWtlIGNsZWFuLgoJICAqIHRlc3RzL2V4YW1wbGVzL21hbnVhbC9NYWtlZmlsZS5hbToKCSAgU2V0IHVwIGEgcmVnaXN0cnkgcGF0aCBmb3IgcnVubmluZyB0aGVzZSB0ZXN0cywgYW5kIGNsZWFuIGl0IHByb3Blcmx5CgkgIGZvciBkaXN0Y2hlY2suCgoyMDA2LTA5LTI4IDExOjExOjI4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogRG9uJ3QgcHVsbCBpbiBnbW9kdWxlLTIuMC5wYyBhcyBhIGRlcGVuZGVuY3kgaW4gb3VyIC5wYyBmaWxlcyAtIHdlIHdhbnQgZ21vZHVsZS1uby1leHBvcnQtMi4wLnBjIGluc3RlYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIERvbid0IHB1bGwgaW4gZ21vZHVsZS0yLjAucGMgYXMgYSBkZXBlbmRlbmN5IGluIG91ciAucGMgZmlsZXMgLSB3ZQoJICB3YW50IGdtb2R1bGUtbm8tZXhwb3J0LTIuMC5wYyBpbnN0ZWFkIHNvIHRoYXQgd2UgZG9uJ3QgZHJhZyBpbgoJICAtLWV4cG9ydC1keW5hbWljIG9uIGV2ZXJ5IHByb2plY3QgdGhhdCBsaW5rcyB0byBHU3RyZWFtZXIuCgkgIEFsc28sIG1ha2Ugb3VyIGV4cG9ydCByZWdleCBvbmx5IG1hdGNoIHRoZSBzdGFydCBvZiBzeW1ib2xzLCByYXRoZXIKCSAgdGhhbiBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgJ19nc3QnIHNvbWV3aGVyZS4KCSAgKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbToKCSAgVGhlIGxpYmdzdGNoZWNrIHdlIGJ1aWxkIGRvZXMgaG93ZXZlciBuZWVkIGV4cG9ydC1keW5hbWljLCBhcyBpdAoJICBwcm9kdWNlcyBzb21lIHN5bWJvbHMgdGhhdCBkb24ndCBtYXRjaCBvdXIgX2dzdC4uLiBzdHlsZSByZWdleC4KCjIwMDYtMDktMjcgMTc6NDI6NDcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0LzogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZSB1bnRpbCBJIGZpZ3VyZSBvdXQgd2h5IGl0IGJyZWFrcyBkaXN0Y2hlY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcHJlKSwgKHNjYW5fYW5kX3VwZGF0ZV9yZWdpc3RyeSksCgkgIChlbnN1cmVfY3VycmVudF9yZWdpc3RyeV9ub25mb3JraW5nKSwKCSAgKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5X2ZvcmtpbmcpLCAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnkpLAoJICAoaW5pdF9wb3N0KSwgKGdzdF9kZWJ1Z19oZWxwKSwgKGdzdF9kZWluaXQpOgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2ZpbmFsaXplKSwKCSAgKGdzdF9yZWdpc3RyeV9yZW1vdmVfcGx1Z2luKSwgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpLAoJICAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aCksIChfZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9jYWNoZV9wbHVnaW5zKSwKCSAgKF9nc3RfcmVnaXN0cnlfY2xlYW51cCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIFJldmVydCBwcmV2aW91cyBjaGFuZ2UgdW50aWwgSSBmaWd1cmUgb3V0IHdoeSBpdCBicmVha3MgZGlzdGNoZWNrLgoKMjAwNi0wOS0yNyAxNjo1Mjo1OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0LmM6IE1ha2UgaW5pdF9wcmUgYW5kIGluaXRfcG9zdCB0YWtlIHRoZSBmdWxsIGNvbXBsZW1lbnQgb2YgR09wdGlvbkZ1bmMgYXJncyBzbyB0aGV5IGNhbiByZXR1cm4gdXNlZnVsIEdFcnJvcnMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wcmUpLCAoc2Nhbl9hbmRfdXBkYXRlX3JlZ2lzdHJ5KSwKCSAgKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5X25vbmZvcmtpbmcpLAoJICAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnlfZm9ya2luZyksIChlbnN1cmVfY3VycmVudF9yZWdpc3RyeSksCgkgIChpbml0X3Bvc3QpLCAoZ3N0X2RlYnVnX2hlbHApLCAoZ3N0X2RlaW5pdCk6CgkgIE1ha2UgaW5pdF9wcmUgYW5kIGluaXRfcG9zdCB0YWtlIHRoZSBmdWxsIGNvbXBsZW1lbnQgb2YgR09wdGlvbkZ1bmMKCSAgYXJncyBzbyB0aGV5IGNhbiByZXR1cm4gdXNlZnVsIEdFcnJvcnMuIE1ha2UgdGhlIHJlZ2lzdHJ5IHVwZGF0aW5nCgkgIGZ1bmN0aW9ucyBkbyBzby4KCSAgQ2FsbCBfcHJpdl9nc3RfcmVnaXN0cnlfcmVtb3ZlX2NhY2hlX3BsdWdpbnMgYWZ0ZXIgc2Nhbm5pbmcgZmlsZXMgdG8KCSAgZW5zdXJlIHRoYXQgdGhlIHJlZ2lzdHJ5IHdlJ3JlIGFib3V0IHRvIHdyaXRlIG91dCBkb2Vzbid0IGNvbnRhaW4KCSAgc3RhbGUgaW5mb3JtYXRpb24gYWJvdXQgb2xkLWRlbGV0ZWQgcGx1Z2luIGZpbGVzLgoJICBNYWtlIF9wcml2X2dzdF9yZWdpc3RyeV9yZW1vdmVfY2FjaGVfcGx1Z2lucyByZXR1cm4gYSBib29sZWFuIHNvCgkgIHRoYXQgZGVsZXRpb24gb2YgcGx1Z2luIGZpbGVzIGlzIGNvbnNpZGVyZWQgYSByZWdpc3RyeSBjaGFuZ2UuCgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfZmluYWxpemUpLAoJICAoZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9mZWF0dXJlc19mb3JfcGx1Z2luX3VubG9ja2VkKSwKCSAgKGdzdF9yZWdpc3RyeV9yZW1vdmVfcGx1Z2luKSwgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpLAoJICAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aCksCgkgIChfcHJpdl9nc3RfcmVnaXN0cnlfcmVtb3ZlX2NhY2hlX3BsdWdpbnMpLAoJICAoX3ByaXZfZ3N0X3JlZ2lzdHJ5X2NsZWFudXApOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5oOgoJICBSZW5hbWUgX2dzdF9yZWdpc3RyeV9yZW1vdmVfY2FjaGVfcGx1Z2lucyBhbmQgX2dzdF9yZWdpc3RyeV9jbGVhbnVwCgkgIGJ5IGFkZGluZyBfcHJpdiBwcmVmaXgsIHNvIHRoYXQgdGhleSB3b24ndCBhcHBlYXIgaW4gdGhlIGdsb2JhbAoJICBzeW1ib2wgdGFibGUuIFRoZXkgc3RpbGwgZG8gYXRtIHRob3VnaCBiZWNhdXNlIG9mICMzMTgwMzEuIE1vdmUgdGhlCgkgIHByb3RvdHlwZXMgdG8gZ3N0X3ByaXZhdGUuaAoJICBXaGVuIHJlbW92aW5nIGEgcGx1Z2luLCByZW1vdmUgYWxsIGZlYXR1cmVzIGZvciB0aGF0IHBsdWdpbiB0b28uCgkgIEZpeGVzICMzNDA4NzguCgoyMDA2LTA5LTI3IDEzOjE5OjU1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6IE1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgImNvbXBpbGVkLWluIGRlc2NyaXB0aW9ucyIgcmVhbGx5IG1lYW4gdGhlIGVsZW1lbnQgZGV0YWlscy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6CgkgIE1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgImNvbXBpbGVkLWluIGRlc2NyaXB0aW9ucyIgcmVhbGx5IG1lYW4KCSAgdGhlIGVsZW1lbnQgZGV0YWlscy4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfYmFzZV9zaW5rX3dhaXRfcHJlcm9sbCk6CgkgIFVwZGF0ZSBkb2NzLgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfd2FpdF9wbGF5aW5nKSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1c2gpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBBZGRlZCBmdW5jdGlvbiB0byBibG9jayB3aGlsZSB3YWl0aW5nIGZvciBQTEFZSU5HLCB0aGlzIGZ1bmN0aW9uCgkgIGlzIHVzZWQgYnkgbGl2ZSBzb3VyY2VzIHRoYXQgYmxvY2sgb24gdGhlIGNsb2NrLgoJICBBUEk6IGdzdF9iYXNlX3NyY193YWl0X3BsYXlpbmcoKQoKMjAwNi0wOS0yNyAxMDoxMzoxMyArMDAwMCAgUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CgoJICBNYWtlZmlsZS5hbTogZ3N0LWVsZW1lbnQtY2hlY2subTQgaXMgZ2VuZXJhdGVkIGFuZCBzaG91bGQgdGhlcmVmb3JlIGJlIGNvcGllZCBmcm9tIHRoZSBidWlsZCBkaXIgcmF0aGVyIHRoYW4gdGhlIHNvdXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBraiBhdCBheGlzIGNvbT4KCSAgKiBNYWtlZmlsZS5hbToKCSAgZ3N0LWVsZW1lbnQtY2hlY2subTQgaXMgZ2VuZXJhdGVkIGFuZCBzaG91bGQgdGhlcmVmb3JlIGJlCgkgIGNvcGllZCBmcm9tIHRoZSBidWlsZCBkaXIgcmF0aGVyIHRoYW4gdGhlIHNvdXJjZSBkaXIgKCMzNTc1OTMpLgoJICAnbWFrZSBkaXN0Y2hlY2snIGhhc24ndCBub3RpY2VkIHRoaXMgYmVjYXVzZSB3ZSB3ZXJlIGRpc3RpbmcKCSAgdGhlIGZpbGUgYXMgd2VsbCwgc28gc3RvcCBkb2luZyB0aGF0LgoKMjAwNi0wOS0yNyAwOToyMzoxOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RjYXBzLmM6IEFkZCBzb21lIHRlc3RzIGZvciBnc3RfY2Fwc19pbnRlcnNlY3QoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9jYXBzX3N1aXRlKToKCSAgQWRkIHNvbWUgdGVzdHMgZm9yIGdzdF9jYXBzX2ludGVyc2VjdCgpLgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApOgoJICBQcmludCBhbGwgYnVmZmVyaW5nIHBlcmNlbnRhZ2VzIHdlIGdldCwgZXZlbiB0aGUgMTAwJSBvbmUuCgoyMDA2LTA5LTI2IDEyOjM5OjI2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogRml4IHByaW50aW5nIG9mIGZsYWdzIHRvIG1hdGNoIHRoZSBsb29rIG9mIGVudW1zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pLAoJICAocHJpbnRfc2lnbmFsX2luZm8pOgoJICBGaXggcHJpbnRpbmcgb2YgZmxhZ3MgdG8gbWF0Y2ggdGhlIGxvb2sgb2YgZW51bXMuCgoyMDA2LTA5LTI1IDEzOjA4OjI5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IEZpeCB0eXBvIGluIGRvY3MgYmx1cmIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICBGaXggdHlwbyBpbiBkb2NzIGJsdXJiLgoKMjAwNi0wOS0yNSAxMToxNjozNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R1cmkuYzogRG9uJ3QgYXNzZXJ0L2NyYXNoIGhlcmUgaWYgYSB1cmkgaGFuZGxlciBkb2Vzbid0IHJldHVybiBhbnkgc3VwcG9ydGVkIHByb3RvY29scy4gVGhlIGxpc3Qgb2YgcHJvdG9jb2xzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXJpLmM6IChzZWFyY2hfYnlfZW50cnkpOgoJICBEb24ndCBhc3NlcnQvY3Jhc2ggaGVyZSBpZiBhIHVyaSBoYW5kbGVyIGRvZXNuJ3QgcmV0dXJuIGFueQoJICBzdXBwb3J0ZWQgcHJvdG9jb2xzLiBUaGUgbGlzdCBvZiBwcm90b2NvbHMgY291bGQgYmUgZ2VuZXJhdGVkCgkgIGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWUgb3IgYXQgcGx1Z2luIHJlZ2lzdHJhdGlvbiwgYW5kIGFuIGVycm9yCgkgIGluIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkgc2hvdWxkbid0IGJlIGZhdGFsICgjMzUzMzAxKS4KCjIwMDYtMDktMjUgMTA6MzY6MjMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aW5mby5jOiBGaXggd2FybmluZyBpZiBIQVZFX1BSSU5URl9FWFRFTlNJT04gaXMgdW5kZWZpbmVkIChzcG90dGVkIGJ5IFBldGVyIEtqZWxsZXJzdGVkdCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgIEZpeCB3YXJuaW5nIGlmIEhBVkVfUFJJTlRGX0VYVEVOU0lPTiBpcyB1bmRlZmluZWQKCSAgKHNwb3R0ZWQgYnkgUGV0ZXIgS2plbGxlcnN0ZWR0KS4KCjIwMDYtMDktMjMgMDk6MzA6NDAgKzAwMDAgIEFudG9pbmUgVHJlbWJsYXkgPGhleGEwMEBnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogTWF0Y2ggX3N0YXJ0L19zdG9wIGNhbGxzIGluIHRoZSBhY3RpdmF0ZSBmdW5jdGlvbnMuIFJlbW92ZSByZWR1bmRhbnQgX3N0b3AgY2FsbCBmcm9tIHRoZSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEJhc2VkIG9uIHBhdGNoIGJ5OiBBbnRvaW5lIFRyZW1ibGF5IDxoZXhhMDAgYXQgZ21haWwgZG90IGNvbT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X2NoZWNrX2dldF9yYW5nZSksIChnc3RfYmFzZV9zcmNfc3RhcnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIE1hdGNoIF9zdGFydC9fc3RvcCBjYWxscyBpbiB0aGUgYWN0aXZhdGUgZnVuY3Rpb25zLiBSZW1vdmUgcmVkdW5kYW50CgkgIF9zdG9wIGNhbGwgZnJvbSB0aGUgc3RhdGUgY2hhbmdlIGZ1bmN0aW9uLiBGaXhlcyAjMzU2OTEwLgoJICBUdXJuIGZhaWx1cmUgREVCVUcgaW50byBFUlJPUi4KCjIwMDYtMDktMjIgMTU6Mjk6MjMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBVcGRhdGUgZG9jcyBhYm91dCBidWZmZXJpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X2J1ZmZlcmluZyksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmcpOgoJICBVcGRhdGUgZG9jcyBhYm91dCBidWZmZXJpbmcuCgkgICogZG9jcy9kZXNpZ24vcGFydC10cmlja21vZGVzLnR4dDoKCSAgRml4IHR5cG8uCgoyMDA2LTA5LTIyIDE0OjMwOjQ5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbWFudWFsL2Jhc2ljcy1lbGVtZW50cy54bWw6CgkgIGF1ZGlvdGVzdHNyYyBpcyBub3QgcGFydCBvZiBjb3JlLCBmYWtlc3JjIGlzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhdWRpb3Rlc3RzcmMgaXMgbm90IHBhcnQgb2YgY29yZSwgZmFrZXNyYyBpcwoKMjAwNi0wOS0yMiAxMzozMjo0MyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IFJlZiBpbnN0YW5jZXMgd2hlbiByZXR1cm5pbmcgdGhlbSBhZ2FpbiAoZml4ZXMgIzM1NzE4MCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IChnc3RfY29udHJvbGxlcl9uZXdfdmFsaXN0KSwKCSAgKGdzdF9jb250cm9sbGVyX25ld19saXN0KToKCSAgUmVmIGluc3RhbmNlcyB3aGVuIHJldHVybmluZyB0aGVtIGFnYWluIChmaXhlcyAjMzU3MTgwKQoKMjAwNi0wOS0yMiAxMDoxNzoxNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jOiBEb24ndCBmb3JnZXQgdG8gcmVsZWFzZSBwcm94eSBsb2NrIHdoZW4gdGhlcmUncyBhbiBlcnJvci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQpOgoJICBEb24ndCBmb3JnZXQgdG8gcmVsZWFzZSBwcm94eSBsb2NrIHdoZW4gdGhlcmUncyBhbiBlcnJvci4KCjIwMDYtMDktMjAgMTY6MTc6MjYgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdGNhcHMuaDogQWRkIGV4dHJhIGluaXRpYWxpc2VycyBmb3IgQ2FwcyB0aGluZ3MsIHRvIGZpeCBzb21lIHBsdWdpbiB3YXJuaW5ncyB3aGVuIHVzaW5nIC1XZXh0cmEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgQWRkIGV4dHJhIGluaXRpYWxpc2VycyBmb3IgQ2FwcyB0aGluZ3MsIHRvIGZpeCBzb21lIHBsdWdpbiB3YXJuaW5ncwoJICB3aGVuIHVzaW5nIC1XZXh0cmEKCjIwMDYtMDktMTggMTM6NTY6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogQWxzbyBzZXQgdGVtcGxhdGUgb24gdGhlIGludGVybmFsIHBhZCBzbyB0aGF0IGEgZ2V0Y2FwcyBmcm9tIHRoZSB0YXJnZXQgcGFkIHJldHVybnMgdGhlIHRlbXBsYXRlIGMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX25ld19mdWxsKToKCSAgQWxzbyBzZXQgdGVtcGxhdGUgb24gdGhlIGludGVybmFsIHBhZCBzbyB0aGF0IGEgZ2V0Y2FwcyBmcm9tIHRoZSB0YXJnZXQKCSAgcGFkIHJldHVybnMgdGhlIHRlbXBsYXRlIGNhcHMuCgoyMDA2LTA5LTE4IDEzOjQ0OjEyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogVXNlIF9ERUJVR19PQkpFQ1Qgc29tZSBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKSwKCSAgKGdzdF9lbGVtZW50X2Rpc3Bvc2UpOgoJICBVc2UgX0RFQlVHX09CSkVDVCBzb21lIG1vcmUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfbG9vcCk6CgkgIEF2b2lkIHR5cGVjaGVja3MuCgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAobWFpbik6CgkgIElmIHRoZSB0b3BsZXZlbCBlbGVtZW50IGlzIG5vdCBhIEdzdFBpcGVsaW5lLCBpdCBtdXN0IGJlIHB1dCBpbiBhCgkgIHBpcGVsaW5lIHNvIHRoYXQgYSBidXMgYW5kIGNsb2NrIGlzIHNlbGVjdGVkLgoKMjAwNi0wOS0xNyAxOTozMToyNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBKSVRURVIsIFJBVEUsIGFuZCBMQVRFTkNZIHF1ZXJ5IHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBkZWZhdWx0IGNhc2UgYW5kIG5vdCBieSB0aGUgQ09OVi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KToKCSAgSklUVEVSLCBSQVRFLCBhbmQgTEFURU5DWSBxdWVyeSBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUKCSAgZGVmYXVsdCBjYXNlIGFuZCBub3QgYnkgdGhlIENPTlZFUlQgcXVlcnkgY29kZS4KCjIwMDYtMDktMTcgMTk6MjY6MTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Zm9ybWF0LmM6IEZpeCBsb2NraW5nIG9yZGVyIChtdXN0IHRha2UgbG9jayBiZWZvcmUgdXNpbmcgbl92YWx1ZXMpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Zm9ybWF0LmM6IChnc3RfZm9ybWF0X3JlZ2lzdGVyKToKCSAgRml4IGxvY2tpbmcgb3JkZXIgKG11c3QgdGFrZSBsb2NrIGJlZm9yZSB1c2luZyBuX3ZhbHVlcykuCgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfc2VyaWFsaXplX2VudW0pLAoJICAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2VudW1faXRlcl9jbXApLAoJICAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2VudW0pOgoJICBGaXggc2VyaWFsaXNhdGlvbi9kZXNlcmlhbGlzYXRpb24gb2YgY3VzdG9tIHJlZ2lzdGVyZWQgR3N0Rm9ybWF0cy4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF92YWx1ZV9zdWl0ZSk6CgkgIFVuaXQgdGVzdCBmb3IgY3VzdG9tIGZvcm1hdCBzZXJpYWxpc2F0aW9uL2Rlc2VyaWFsaXNhdGlvbi4KCjIwMDYtMDktMTYgMjE6Mzg6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIE1vcmUgR19PQkpFQ1QgbWFjcm8gZml4aW5nLiBBbHNvIEZpeCBzb21lIGRldGFpbHMgb24gdGhlIHBsdWdpbi1zdGFtcCBzZWN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1ib2lsZXIueG1sOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICBNb3JlIEdfT0JKRUNUIG1hY3JvIGZpeGluZy4gQWxzbyBGaXggc29tZSBkZXRhaWxzIG9uIHRoZSBwbHVnaW4tc3RhbXAKCSAgc2VjdGlvbi4KCjIwMDYtMDktMTYgMTI6NDk6MDIgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogQ2hlY2sgaWYgcmVxdWVzdGVkIGNhcHMgYXJlIHRoZSBzYW1lIGFzIHRoZSBzaW5rcyBjYXBzIElGCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIENoZWNrIGlmIHJlcXVlc3RlZCBjYXBzIGFyZSB0aGUgc2FtZSBhcyB0aGUgc2lua3MgY2FwcyBJRgoJICAtPmhhdmVfc2FtZV9jYXBzIGlzIFRSVUUuIElmIHRoZXkgYXJlIG5vdCwgYWN0IGFzIGlmIGhhdmVfc2FtZV9jYXBzCgkgIGlzIEZBTFNFLgoJICBUaGlzIGZpeGVzIHRoZSByZW5lZ290aWF0aW9uIGlzc3VlcyBzdGF0ZWQgaW4gIzM1MjgyNy4KCjIwMDYtMDktMTYgMTA6NDk6NDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgRXh0cmFjdCB0aGUgbWFudWFsIGV4YW1wbGVzIGFnYWluIGxpa2Ugd2UgdXNlZCB0byBkby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWF1dG9wbHVnZ2luZy54bWw6CgkgICogdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvZXhhbXBsZXMvbWFudWFsLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvZXhhbXBsZXMvbWFudWFsL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2V4YW1wbGVzL21hbnVhbC9leHRyYWN0LnBsOgoJICBFeHRyYWN0IHRoZSBtYW51YWwgZXhhbXBsZXMgYWdhaW4gbGlrZSB3ZSB1c2VkIHRvIGRvLgoJICBGaXggb25lIG9mIHRoZW0uCgoyMDA2LTA5LTE2IDEwOjQ3OjM2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHdpbjMyL2NvbW1vbi9jb25maWcuaDogdXBkYXRlIGZvciB2ZXJzaW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgdXBkYXRlIGZvciB2ZXJzaW9uCgoyMDA2LTA5LTE1IDIxOjMwOjAwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0ZXJyb3IuYzogRG9jdW1lbnRzIGhvdyB0byByZWNlaXZlIGVycm9ycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVycm9yLmM6CgkgIERvY3VtZW50cyBob3cgdG8gcmVjZWl2ZSBlcnJvcnMuCgoyMDA2LTA5LTE1IDEwOjQzOjE2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBBZGRlZCBzb21lIGNvbW1lbnRzIGhlcmUgYW5kIHRoZXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChzaWdpbnRfaGFuZGxlcl9zaWdoYW5kbGVyKSwgKGNoZWNrX2ludHIpLAoJICAoZXZlbnRfbG9vcCksIChtYWluKToKCSAgQWRkZWQgc29tZSBjb21tZW50cyBoZXJlIGFuZCB0aGVyZS4KCSAgUG9zdCBhbiBhcHBsaWNhdGlvbiBtZXNzYWdlIHdoZW4gYW4gaW50ZXJydXB0IGlzIGNhdWdodCBpbnN0ZWFkIG9mIGRvaW5nCgkgIGFuIHVuY29udHJvbGxlZCBzdGF0ZSBjaGFuZ2UuCgkgIENsZWFuIHVwIHRoZSBldmVudCBsb29wLgoJICBIYW5kbGUgYnVmZmVyaW5nIG1lc3NhZ2VzLCBwYXVzZS9yZXN1bWUgdGhlIHBpcGVsaW5lLgoJICBNYWtlIHNodXRkb3duIGJlY2F1c2Ugb2YgYW4gaW50ZXJydXB0IG1vcmUgcmVsaWFibGUuCgoyMDA2LTA5LTE1IDA5OjQ5OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBNYWtlIHN1cmUgdGhhdCBvdXIgaW50ZXJuYWwgc3RhdGUgaXMgY29ycmVjdCB3aGVuIHdlIGNvbW1pdCBvdXIgc3RhdGUgYXN5bmNocm9ub3VzbHkuIFRoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3Npbmtfd2FpdF9wcmVyb2xsKSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfb2JqZWN0KToKCSAgTWFrZSBzdXJlIHRoYXQgb3VyIGludGVybmFsIHN0YXRlIGlzIGNvcnJlY3Qgd2hlbiB3ZSBjb21taXQgb3VyIHN0YXRlCgkgIGFzeW5jaHJvbm91c2x5LiBUaGlzIHNvbHZlcyBhIHJhY2Ugd2hlcmUgYSBzdGF0ZSBjaGFuZ2UgdG8gUExBWUlORwoJICBjb3VsZCBjYXVzZSB0aGUgc2luayB0byByZW1haW4gYmxvY2tlZCBpbiBwcmVyb2xsIGluIHNvbWUgc2l0dWF0aW9ucy4KCjIwMDYtMDktMTUgMDg6NTA6MjEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBMaXN0IGZsYWdzIGFzIGhleCBzbyBpdCdzIGVhc2llciB0byBkZWFsIHdpdGguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyksCgkgIChwcmludF9zaWduYWxfaW5mbyk6CgkgIExpc3QgZmxhZ3MgYXMgaGV4IHNvIGl0J3MgZWFzaWVyIHRvIGRlYWwgd2l0aC4KCjIwMDYtMDktMTUgMDg6NDc6MzYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBFeHBvc2UgbG9naWMgdG8gd2FpdCBmb3IgcHJlcm9sbCBzbyB0aGF0IHN1YmNsYXNzZXMgc3VjaCBhcyBhdWRpb3NpbmsgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfd2FpdF9wcmVyb2xsKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBFeHBvc2UgbG9naWMgdG8gd2FpdCBmb3IgcHJlcm9sbCBzbyB0aGF0IHN1YmNsYXNzZXMgc3VjaCBhcyBhdWRpb3NpbmsKCSAgY2FuIGFsc28gdXNlIHRoaXMgbWV0aG9kLgoJICBBUEk6IGdzdF9iYXNlX3Npbmtfd2FpdF9wcmVyb2xsKCkKCjIwMDYtMDktMTUgMDg6NDM6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBTbWFsbCBjbGVhbnVwcyBpbiBkb2NzIGFuZCBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X3NldF9wYXJlbnQpOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZG9fcGlwZWxpbmVfc2Vlayk6CgkgIFNtYWxsIGNsZWFudXBzIGluIGRvY3MgYW5kIGNvZGUuCgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X2NsaXApOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIGlmIHN0b3AgPT0gc3RhcnQgYW5kIHN0YXJ0IGlzIGluIHRoZSBzZWdtZW50LCBubyBjbGlwcGluZyBzaG91bGQgYmUKCSAgZG9uZS4gQWxzbyBhZGQgYSB0ZXN0IGZvciB0aGlzLgoKMjAwNi0wOS0xNSAwODozOTo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZGVkIG1ldGhvZHMgdG8gY3JlYXRlIGFuZCBwYXJzZSBCVUZGRVJJTkcgbWVzc2FnZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYnVmZmVyaW5nLnR4dDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfYnVmZmVyaW5nKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX2J1ZmZlcmluZyk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgQWRkZWQgbWV0aG9kcyB0byBjcmVhdGUgYW5kIHBhcnNlIEJVRkZFUklORyBtZXNzYWdlcy4KCSAgQWRkZWQgcHJlbGltaW5hcnkgZG9jcyBhYm91dCBidWZmZXJpbmcuCgkgIEFQSTogZ3N0X21lc3NhZ2VfbmV3X2J1ZmZlcmluZwoJICBBUEk6IGdzdF9tZXNzYWdlX3BhcnNlX2J1ZmZlcmluZwoKMjAwNi0wOS0xNSAwODozMjo1NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzoKCSAgVXBkYXRlIGRvY3VtZW50YXRpb24uCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpLAoJICAoZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCksIChnc3RfZWxlbWVudF9zZXRfY2xvY2spLAoJICAoZ3N0X2VsZW1lbnRfZ2V0X2luZGV4KSwgKGdzdF9lbGVtZW50X2FkZF9wYWQpLAoJICAoZ3N0X2VsZW1lbnRfcmVtb3ZlX3BhZCksIChnc3RfZWxlbWVudF9nZXRfcmFuZG9tX3BhZCksCgkgIChnc3RfZWxlbWVudF9zZW5kX2V2ZW50KSwgKGdzdF9lbGVtZW50X2dldF9xdWVyeV90eXBlcyksCgkgIChnc3RfZWxlbWVudF9xdWVyeSksIChnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UpLAoJICAoZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsKSwgKGdzdF9lbGVtZW50X2NvbnRpbnVlX3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfc2F2ZV90aHlzZWxmKSwKCSAgKGdzdF9lbGVtZW50X3Jlc3RvcmVfdGh5c2VsZik6CgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCSAgUmVuYW1lIGxhc3QgYml0IG9mIHRoZSBuZXctcGFkIC0+IHBhZC1hZGRlZCBzaWduYWwgcmVuYW1lLgoJICBGaXggdGhlIGNhc2Ugd2hlcmUgYW4gZWxlbWVudCBxdWVyeSB3b3VsZCBvbmx5IHdvcmsgaWYgdGhlIHNvdXJjZQoJICBwYWQgd2FzIGxpbmtlZC4KCSAgQXZvaWQgc29tZSB1c2VsZXNzIHR5cGUgY2hlY2tpbmcgaW4gbWVzc2FnZSBoYW5kbGluZy4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwNi0wOS0xNCAyMDoxMjowNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSAgYWRkIGFuIElORk8gbGluZSBmb3Igd2hlbiB3ZSBhY3R1YWxseSB1cGRhdGUgdGhlIGZkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgYW4gSU5GTyBsaW5lIGZvciB3aGVuIHdlIGFjdHVhbGx5IHVwZGF0ZSB0aGUgZmQKCjIwMDYtMDktMTQgMjA6MTE6MTAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjb25maWd1cmUuYWM6CgkgIGJhY2sgdG8gdHJ1bmsKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gdHJ1bmsKCj09PSByZWxlYXNlIDAuMTAuMTAgPT09CgoyMDA2LTA5LTE0IDIwOjA4OjE0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogTkVXUzoKCSogUkVMRUFTRToKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5hcmdzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdGNhcHMuYzoKCSogZ3N0L2dzdGNsb2NrLmg6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC4xMC4xMAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVsZWFzaW5nIDAuMTAuMTAKCjIwMDYtMDktMDkgMTY6MDg6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGZpcnN0IHByZXJlbGVhc2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpcnN0IHByZXJlbGVhc2UKCjIwMDYtMDktMDkgMTY6MDc6MzQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICB0cmFuc2xhdGlvbiB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB0cmFuc2xhdGlvbiB1cGRhdGVzCgoyMDA2LTA5LTA1IDE0OjExOjA2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtcG9zaXRpb24ueG1sOiBGaXggdHlwbyBpbiBzYW1wbGUgY29kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtcG9zaXRpb24ueG1sOgoJICBGaXggdHlwbyBpbiBzYW1wbGUgY29kZS4KCjIwMDYtMDktMDUgMDg6MzU6MjAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9uZXQvOiBNYWtlIHN0dWZmIGNvbXBpbGUgb24gd2luZG93cy4gRml4ZXMgIzM0NTI5NS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IChpbmV0X2F0b24pLAoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfaW5pdCksIChnc3RfbmV0X2NsaWVudF9jbG9ja19maW5hbGl6ZSksCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19kb19zZWxlY3QpLCAoZ3N0X25ldF9jbGllbnRfY2xvY2tfbmV3KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5jOiAoZ3N0X25ldF90aW1lX3BhY2tldF9zZW5kKToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5oOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzogKGluZXRfYXRvbiksCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfaW5pdCksIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfZmluYWxpemUpLAoJICAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX3RocmVhZCksIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfbmV3KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmg6CgkgIE1ha2Ugc3R1ZmYgY29tcGlsZSBvbiB3aW5kb3dzLiBGaXhlcyAjMzQ1Mjk1LgoKMjAwNi0wOS0wMyAxMToxNjo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3QuYzogUHJpbnQgYmV0dGVyIGRldGFpbHMgd2hlbiBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5X2ZvcmtpbmcpOgoJICBQcmludCBiZXR0ZXIgZGV0YWlscyB3aGVuIGNoaWxkIHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbC4KCjIwMDYtMDktMDMgMTE6MDY6NTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogUHJpbnQgYSB3YXJuaW5nIHJhdGhlciB0aGFuIGdfYXNzZXJ0KCkgaWYgYSBwbHVnaW4gZmVhdHVyZSBpcyBhIFVSSSBoYW5kbGVyIGJ1dCByZXR1cm5zIG5vIHByb3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChnc3RfcmVnaXN0cnlfeG1sX3NhdmVfZmVhdHVyZSk6CgkgIFByaW50IGEgd2FybmluZyByYXRoZXIgdGhhbiBnX2Fzc2VydCgpIGlmIGEgcGx1Z2luIGZlYXR1cmUKCSAgaXMgYSBVUkkgaGFuZGxlciBidXQgcmV0dXJucyBubyBwcm90b2NvbHMgKCMzNTM5NzYpLgoKMjAwNi0wOS0wMiAxOToxMDo1NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6IEZpeCB0d28gdHlwb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL21vdmluZy1wbHVnaW5zOgoJICBGaXggdHdvIHR5cG9zLgoKMjAwNi0wOS0wMiAxOTowMzo0MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL3JhbmRvbS9tb3ZpbmctcGx1Z2luczoKCSAgZG9jdW1lbnQgcHJvY2VzcyBzb21lIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvY3VtZW50IHByb2Nlc3Mgc29tZSBtb3JlCgoyMDA2LTA5LTAyIDEzOjQwOjQxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RlcnJvci5jOgoJICBjbGFyaWZ5IGVycm9yIG1lc3NhZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNsYXJpZnkgZXJyb3IgbWVzc2FnZQoKMjAwNi0wOS0wMiAxMzozNjo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL3JhbmRvbS9tb3ZpbmctcGx1Z2luczoKCSAgZG9jdW1lbnQgcHJvY2VzcyBzb21lIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvY3VtZW50IHByb2Nlc3Mgc29tZSBtb3JlCgoyMDA2LTA5LTAxIDE2OjAzOjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSogQ2hhbmdlTG9nOgoJICBDaGFuZ2VMb2cgc3VyZ2VyeTogZml4IHR5cG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiBmaXggdHlwbwoKMjAwNi0wOS0wMSAxNTo1NToyMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RpbmZvLmM6IEZpeCBsb2NraW5nIG9yZGVyLCBoYW5kbGUgTlVMTCBmdW5jdGlvbiB2YWx1ZXMgcHJvcGVybHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChfZ3N0X2RlYnVnX25hbWVvZl9mdW5jcHRyKToKCSAgRml4IGxvY2tpbmcgb3JkZXIsIGhhbmRsZSBOVUxMIGZ1bmN0aW9uIHZhbHVlcyBwcm9wZXJseS4KCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBGaXggZG9jcy4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2J1ZmZlcl9hbGxvY191bmNoZWNrZWQpOgoJICBJbml0aWFsaXNlZCB2YXJpYWJsZSBiZWZvcmUgdXNpbmcgaXQgYW5kIGZpeCBkZWJ1ZyBzdGF0ZW1lbnQgdG8KCSAgcHJpbnQgdGhlIGFkZHJlc3Mgb2YgdGhlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBhZGRyZXNzIG9mIHRoZQoJICB2YXJpYWJsZSBvbiB0aGUgc3RhY2sgaG9sZGluZyB0aGUgYWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24uCgoyMDA2LTA5LTAxIDEwOjMzOjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IE1vcmUgY2xlYW51cHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9kb19ldmVudCksCgkgIChnc3RfcHJveHlfcGFkX2RvX2J1ZmZlcmFsbG9jKSwgKGdzdF9wcm94eV9wYWRfZG9fY2hhaW4pLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19nZXRyYW5nZSksIChnc3RfcHJveHlfcGFkX2RvX2NoZWNrZ2V0cmFuZ2UpLAoJICAoZ3N0X3Byb3h5X3BhZF9zZXRfdGFyZ2V0X3VubG9ja2VkKSwgKGdzdF9naG9zdF9wYWRfcGFyZW50X3NldCksCgkgIChnc3RfZ2hvc3RfcGFkX3BhcmVudF91bnNldCksCgkgIChnc3RfZ2hvc3RfcGFkX2ludGVybmFsX2RvX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X2dob3N0X3BhZF9pbnRlcm5hbF9kb19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9naG9zdF9wYWRfZG9fYWN0aXZhdGVfcHVzaCksIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X2dob3N0X3BhZF9kb19saW5rKSwgKGdzdF9naG9zdF9wYWRfZG9fdW5saW5rKSwKCSAgKGdzdF9naG9zdF9wYWRfaW5pdCksIChnc3RfZ2hvc3RfcGFkX2Rpc3Bvc2UpLAoJICAoZ3N0X2dob3N0X3BhZF9uZXdfZnVsbCksIChnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXQpLAoJICAoZ3N0X2dob3N0X3BhZF9uZXcpLCAoZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSksCgkgIChnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSksCgkgIChnc3RfZ2hvc3RfcGFkX2dldF90YXJnZXQpLCAoZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0KToKCSAgTW9yZSBjbGVhbnVwcy4KCSAgQXZvaWQgbmVlZGxlc3MgdHlwZWNoZWNraW5nIGluIG1hY3Jvcy4KCSAgU2luY2UgdGhlIGludGVybmFsIHBhZCBpcyBhbHdheXMgcHJlc2VudCBhbmQgbmV2ZXIgY2hhbmdlcywgdGhlcmUgaXMKCSAgbm8gbmVlZCB0byBsb2NraW5nIG9yIHJlZiB3aGVuIHJldHJpZXZpbmcgaXQuCgkgIEltcHJvdmUgZGVidWdnaW5nIGEgYml0LgoJICBIYW5kbGUgbGluayBlcnJvcnMgd2hlbiBzZXR0aW5nIHRoZSB0YXJnZXQuIEZpeGVzICMzNDEwMjkuCgoyMDA2LTA5LTAxIDEwOjI2OjUyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy86IEZpeCBkb2NzIHNvbWUgbW9yZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OgoJICBGaXggZG9jcyBzb21lIG1vcmUuCgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfZXZlbnQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBGcmVlIHF1ZXVlZCBidWZmZXIgd2hlbiByZW1vdmluZyBhIHBhZC4KCjIwMDYtMDgtMzEgMTc6MTM6MzQgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC9nc3R1dGlscy5jOiBFbnN1cmUgdGhhdCB3ZSBzZXQgYSBjYXBzZmlsdGVyIHRvIE5VTEwgaWYgd2UgZmFpbGVkIHRvIGxpbmsgaXQgd2hlbiBkb2luZyBmaWx0ZXJlZCBsaW5raW5nLCB0byBhdm9pZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2xpbmtfcGFkcyksCgkgIChnc3RfZWxlbWVudF9saW5rX3BhZHNfZmlsdGVyZWQpOgoJICBFbnN1cmUgdGhhdCB3ZSBzZXQgYSBjYXBzZmlsdGVyIHRvIE5VTEwgaWYgd2UgZmFpbGVkIHRvIGxpbmsgaXQKCSAgd2hlbiBkb2luZyBmaWx0ZXJlZCBsaW5raW5nLCB0byBhdm9pZCBjcml0aWNhbHMuCgkgIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHVucmVmZmluZyBzcmNwYWQsIHdoaWNoIGlzIGV4cGxpY2x5IE5VTExlZAoJICBhYm92ZSAoYSB0cml2aWFsIGNvZGUgY2xlYW51cCkuCgoyMDA2LTA4LTMxIDE1OjE5OjQ0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1nc3RnaG9zdHBhZC50eHQ6IFVwZGF0ZSBhc2NpaSBhcnQgaW4gZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RnaG9zdHBhZC50eHQ6CgkgIFVwZGF0ZSBhc2NpaSBhcnQgaW4gZG9jdW1lbnRhdGlvbi4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9wcm94eV9wYWRfZG9faW50ZXJuYWxfbGluayksCgkgIChnc3RfcHJveHlfcGFkX3NldF90YXJnZXRfdW5sb2NrZWQpLCAoZ3N0X3Byb3h5X3BhZF9pbml0KSwKCSAgKGdzdF9naG9zdF9wYWRfcGFyZW50X3NldCksIChnc3RfZ2hvc3RfcGFkX3BhcmVudF91bnNldCksCgkgIChnc3RfZ2hvc3RfcGFkX2ludGVybmFsX2RvX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X2dob3N0X3BhZF9pbnRlcm5hbF9kb19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9naG9zdF9wYWRfZG9fYWN0aXZhdGVfcHVzaCksIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X2dob3N0X3BhZF9kb19saW5rKSwgKGdzdF9naG9zdF9wYWRfZG9fdW5saW5rKSwKCSAgKGdzdF9naG9zdF9wYWRfZGlzcG9zZSksIChnc3RfZ2hvc3RfcGFkX25ld19mdWxsKSwKCSAgKGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCk6CgkgIFNtYWxsIGNsZWFudXBzIGFuZCBsZWFrIGZpeGVzLgoJICBSZW1vdmUgc29tZSBjaGVja3Mgbm93IHRoYXQgdGhlIGludGVybmFsIHBhZCBpcyBuZXZlciBOVUxMLgoJICBGaXggdGhlIGNhc2Ugd2hlcmUgbGlua2luZyBwYWRzIHdpdGhvdXQgYSB0YXJnZXQgd291bGQgY3JlYXRlIG5hc3R5CgkgIGNyaXRpY2Fscy4gRml4ZXMgIzM0MTAyOS4KCSAgRG9uJ3QgYXNzaWduIGEgR3N0UGFkTGlua1JldHVybiB0byBhIGdib29sZWFuIGFuZCBtZXNzIHVwIHRoZSByZXR1cm4KCSAgdmFsdWUgb2YgX3NldF90YXJnZXQoKS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9naG9zdF9wYWRfc3VpdGUpOgoJICBTb21lIG1vcmUgdGVzdHMgZm9yIGNyZWF0aW5nIGFuZCBsaW5raW5nIHVudGFyZ2V0ZWQgZ2hvc3RwYWRzLgoKMjAwNi0wOC0zMSAxMDo1OToxMSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIFJlZmFjdG9yZWQgKl9uZXcoKSBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2RvX2dldGNhcHMpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19zZXRjYXBzKSwgKGdzdF9wcm94eV9wYWRfc2V0X3RhcmdldF91bmxvY2tlZCksCgkgIChnc3RfcHJveHlfcGFkX2Rpc3Bvc2UpLCAoZ3N0X2dob3N0X3BhZF9uZXdfZnVsbCksCgkgIChnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXQpLCAoZ3N0X2dob3N0X3BhZF9uZXcpLAoJICAoZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSksCgkgIChnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSk6CgkgICogZ3N0L2dzdGdob3N0cGFkLmg6CgkgIFJlZmFjdG9yZWQgKl9uZXcoKSBmdW5jdGlvbnMuCgkgIFRlbXBsYXRlcyBhcmUgbm93IHVzZWQgYXMgYSBnX29iamVjdF9uZXcoKSBwYXJhbWV0ZXIuCgkgIFVzZSB0ZW1wbGF0ZSBpbiBfZG9fZ2V0Y2FwcygpIGlmIHdlIGRvbid0IGhhdmUgYSB0YXJnZXQuCgkgIFNtYWxsIGRvY3VtZW50YXRpb24gY2xlYW51cHMuCgkgIEFkZGVkIHR3byBuZXcgY29uc3RydWN0b3JzOgoJICBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlKCkKCSAgZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUoKQoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2dob3N0X3BhZF9zdWl0ZSk6CgkgIEFkZGVkIHRlc3RzIGZvciBuZXcgZ2hvc3RwYWQgaW5zdGFuY2lhdGlvbiBmdW5jdGlvbnMuCgkgIEFQSSBhZGRpdGlvbnM6IGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUsCgkgIGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlCgoyMDA2LTA4LTMwIDEyOjI4OjU1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3JhbmRvbS9lbnNvbmljL3Byb2ZpbGluZy50eHQ6IElkZWFzIGFib3V0IHFvcyBwcm9maWxpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvcHJvZmlsaW5nLnR4dDoKCSAgSWRlYXMgYWJvdXQgcW9zIHByb2ZpbGluZy4KCjIwMDYtMDgtMjkgMTQ6Mzk6NDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBDb2RlIGNsZWFudXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfc3RydWN0dXJlX2lzX3N1YnNldF9maWVsZCk6CgkgIENvZGUgY2xlYW51cHMuCgkgIEZpeCBtZW1sZWFrLgoKMjAwNi0wOC0yOSAxMDo0OTowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R4bWwuYzogSW1wcm92ZSBhbmQgZGV0eXBvZnkgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHhtbC5jOgoJICBJbXByb3ZlIGFuZCBkZXR5cG9meSBkb2NzLgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R4bWwuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF94bWxfc3VpdGUpOgoJICBBZGQgYSBiYXNpYyB0ZXN0IHN1aXRlIGZvciBHc3RYTUwuCgoyMDA2LTA4LTI5IDA5OjU2OjU3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogQ2xlYXIgdGhlIHBhZCBjYXBzIHdoZW4gdGhlIGVsZW1lbnQgc2h1dCBkb3duIGFsbCBvZiB0aGUgcGFkcyBhbmQgaXMgbm90IHN0cmVhbWluZyBkYXRhIHRoYXQgY291bGQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChhY3RpdmF0ZV9wYWRzKSwgKGNsZWFyX2NhcHMpLAoJICAoaXRlcmF0b3JfYWN0aXZhdGVfZm9sZF93aXRoX3Jlc3luYyksIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKToKCSAgQ2xlYXIgdGhlIHBhZCBjYXBzIHdoZW4gdGhlIGVsZW1lbnQgc2h1dCBkb3duIGFsbCBvZiB0aGUgcGFkcyBhbmQKCSAgaXMgbm90IHN0cmVhbWluZyBkYXRhIHRoYXQgY291bGQgbW9kaWZ5IHRoZSBjYXBzLgoJICBGaXhlcyAjMzUyOTU4LgoKMjAwNi0wOC0yOSAwODowMjo0MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIEkgZG9uJ3QgZXZlbiBrbm93IHdoaWNoIGFyY2ggdGhhdCBpcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgSSBkb24ndCBldmVuIGtub3cgd2hpY2ggYXJjaCB0aGF0IGlzCgoyMDA2LTA4LTI4IDIzOjE2OjMzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RwYWQuYzoKCSAgbW9yZSBsb2dpY2FsIHRvIGxvZyB0aGUgc2VuZGluZyBwYWQsIGFuZCB0aGUgcGFkIGl0IGlzIHNlbmRpbmcgdG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgbG9naWNhbCB0byBsb2cgdGhlIHNlbmRpbmcgcGFkLCBhbmQgdGhlIHBhZCBpdCBpcyBzZW5kaW5nIHRvCgoyMDA2LTA4LTI4IDE4OjIwOjAwICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IFJldmVydCBwcmV2aW91cyBjaGFuZ2U7IEkgbWlzdW5kZXJzdG9vZCBzaW5nbGUtc2VnbWVudCBtb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtX2lwKToKCSAgUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZTsgSSBtaXN1bmRlcnN0b29kIHNpbmdsZS1zZWdtZW50IG1vZGUuCgoyMDA2LTA4LTI4IDE4OjA4OjA5ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IFVuc2V0IERJU0NPTlQgb24gYnVmZmVycyB3aGVuIHVzaW5nIHNpbmdsZS1zZWdtZW50IG1vZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV90cmFuc2Zvcm1faXApOgoJICBVbnNldCBESVNDT05UIG9uIGJ1ZmZlcnMgd2hlbiB1c2luZyBzaW5nbGUtc2VnbWVudCBtb2RlLgoKMjAwNi0wOC0yOCAxNjozOToyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLio6IEZpeCBkb2NzIGFuZCBpbmRlbnRhdGlvbiBhZ2Fpbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX21lcmdlX3N0cnVjdHVyZSk6CgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgRml4IGRvY3MgYW5kIGluZGVudGF0aW9uIGFnYWluLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RxdWVyeS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggbGVhayBpbiB0ZXN0cyBhbmQgYWRkIHNvbWUgbW9yZSB0ZXN0cy4KCjIwMDYtMDgtMjggMTU6NTc6MzkgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEluZm9ybSBHc3RTZWdtZW50IG9mIHRoZSBsYXN0IHN0b3AgcG9zaXRpb24gaW4gb3JkZXIgZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQgdG8gaGF2ZSBhIHAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfc3luY190aW1lcyk6CgkgIEluZm9ybSBHc3RTZWdtZW50IG9mIHRoZSBsYXN0IHN0b3AgcG9zaXRpb24gaW4gb3JkZXIgZm9yIHRoZSBjdXJyZW50CgkgIHNlZ21lbnQgdG8gaGF2ZSBhIHByb3BlciBkdXJhdGlvbiBpZiBpdCBkb2Vzbid0IGhhdmUgYSBzcGVjaWZpYyBzdG9wCgkgIHBvc2l0aW9uIGZyb20gd2hpY2ggYSBkdXJhdGlvbiBjb3VsZCBiZSBjYWxjdWxhdGVkLgoJICBUaGlzIGJ1ZyB3YXMgbm90aWNlYWJsZSB3aGVuIGEgbm9uLWZsdXNoaW5nLCBub24tdXBkYXRlIG5ldyBzZWdtZW50IHdhcwoJICBmb2xsb3dlZCBieSBhbm90aGVyIHNlZ21lbnQgKGFsbCBidWZmZXJzIGZyb20gdGhlIG5ldyBzZWdtZW50IHdlcmUgYmVpbmcKCSAgZHJvcHBlZCkuCgoyMDA2LTA4LTI4IDE1OjQ4OjI0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFNtYWxsIGNvbW1lbnQgdXBkYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspOgoJICBTbWFsbCBjb21tZW50IHVwZGF0ZS4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCksCgkgIChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtX2lwKToKCSAgRHJvcC1wcm9iYWJpbGl0eSBpcyBicm9rZW4sIG1lbnRpb24gdGhpcyBpbiB0aGUgY29kZSB3aXRoIGEKCSAgRklYTUUgYW5kIGFsc28gaW4gdGhlIHByb3BlcnR5IGRlc2NyaXB0aW9uLgoJICBNYWtlIHNpbGVudCBhbHNvIGJlIHNpbGVudCBhYm91dCB0aGUgZHJvcCBtZXNzYWdlcy4KCjIwMDYtMDgtMjggMTE6MDY6MDUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9hcHBlbmRpeC13aW4zMi54bWw6IFJlbW92ZSBtZW50aW9uIG9mIHBvcHQsIHdlIGRvbid0IGRlcGVuZCBvbiB0aGF0IGFueSBsb25nZXIgKCMzNTMxMzYpLiBBZGQgc29tZSBjb21tZW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtd2luMzIueG1sOgoJICBSZW1vdmUgbWVudGlvbiBvZiBwb3B0LCB3ZSBkb24ndCBkZXBlbmQgb24gdGhhdCBhbnkKCSAgbG9uZ2VyICgjMzUzMTM2KS4gQWRkIHNvbWUgY29tbWVudHMgcG9pbnRpbmcgb3V0IHRoYXQKCSAgdGhpcyBzZWN0aW9uIGlzIHNsaWdodGx5IG91dGRhdGVkLgoKMjAwNi0wOC0yOCAwODo0NDoyOSArMDAwMCAgVG9yc3RlbiBTY2hvZW5mZWxkIDxrYWZmZWV0aXNjaEBnbXguZGU+CgoJICBJbml0aWFsaXplIHZhcmlhYmxlcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHNlZ21lbnQgcXVlcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogVG9yc3RlbiBTY2hvZW5mZWxkIDxrYWZmZWV0aXNjaCBhdCBnbXggZG90IGRlPgoJICAqIGdzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X25ld19zZWdtZW50KToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cXVlcnkuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgSW5pdGlhbGl6ZSB2YXJpYWJsZXMgd2hlbiBjcmVhdGluZyBhIG5ldyBzZWdtZW50IHF1ZXJ5LgoJICBGaXhlcyAjMzUzMTIxLgoKMjAwNi0wOC0yOCAwODozNTozMSArMDAwMCAgVG9yc3RlbiBTY2hvZW5mZWxkIDxrYWZmZWV0aXNjaEBnbXguZGU+CgoJICBDaGVjayBmb3IgTlVMTCBiZWZvcmUgX3JlZmZpbmcgdGhlIGJ1cy4gRml4ZXMgIzM1MzEyMi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBUb3JzdGVuIFNjaG9lbmZlbGQgPGthZmZlZXRpc2NoIGF0IGdteCBkb3QgZGU+CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF9idXMpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RlbGVtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIENoZWNrIGZvciBOVUxMIGJlZm9yZSBfcmVmZmluZyB0aGUgYnVzLiBGaXhlcyAjMzUzMTIyLgoKMjAwNi0wOC0yNSAxNjo0NjowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsL2Jhc2ljcy1idXMueG1sOiBEb2NzIHVwZGF0ZTogZml4IHdyb25nIGNhbGxiYWNrIHJldHVybiB2YWx1ZSBleHBsYW5hdGlvbjsgYWRkIHNvbWUgbGluZXMgYWJvdXQgdGhlIGltcGxpYy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYnVzLnhtbDoKCSAgRG9jcyB1cGRhdGU6IGZpeCB3cm9uZyBjYWxsYmFjayByZXR1cm4gdmFsdWUgZXhwbGFuYXRpb247IGFkZAoJICBzb21lIGxpbmVzIGFib3V0IHRoZSBpbXBsaWNpdCByZWxhdGlvbnNoaXAgYmV0d2VlbiBtYWluIGxvb3AKCSAgYW5kIG1haW4gY29udGV4dDsgcmVtb3ZlIGR1cGxpY2F0ZSBtYWluIGxvb3AgdmFyaWFibGUgZGVjbGFyYXRpb24uCgoyMDA2LTA4LTI0IDEyOjMwOjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogRG9uJ3QgbGVhayBjYXBzIGluIHVuaXQgdGVzdDsgYWRkIGEgZmV3IG1vcmUgc2ltcGxlIGNoZWNrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgRG9uJ3QgbGVhayBjYXBzIGluIHVuaXQgdGVzdDsgYWRkIGEgZmV3IG1vcmUgc2ltcGxlCgkgIGNoZWNrcy4KCjIwMDYtMDgtMjQgMTA6NDA6MzEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGltcGxlbWVudCBjYXBzIG1lcmdpbmcgKGZpeGVzICMzNTI1ODApCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX3N0cnVjdHVyZV9pc19zdWJzZXRfZmllbGQpLAoJICAoZ3N0X2NhcHNfc3RydWN0dXJlX2lzX3N1YnNldCksIChnc3RfY2Fwc19tZXJnZSksCgkgIChnc3RfY2Fwc19tZXJnZV9zdHJ1Y3R1cmUpOgoJICAqIGdzdC9nc3RjYXBzLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fdHJhbnNmb3JtX2NhcHMpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RjYXBzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfY2Fwc19zdWl0ZSk6CgkgIGltcGxlbWVudCBjYXBzIG1lcmdpbmcgKGZpeGVzICMzNTI1ODApCgoyMDA2LTA4LTIzIDE4OjUzOjQ0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy86IGFkZCBkZWJ1Zy1sb2cgcGxvdHRpbmcgZGV2ZWxvcGVyIHRvb2wgKCMzNDA2NzQpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL01ha2VmaWxlLmFtOgoJICAqIHRvb2xzL2dzdC1wbG90LXRpbWVsaW5lLnB5OgoJICBhZGQgZGVidWctbG9nIHBsb3R0aW5nIGRldmVsb3BlciB0b29sICgjMzQwNjc0KQoKMjAwNi0wOC0yMyAxNjo1MToxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogSW1wcm92ZSBkZWJ1Z2dpbmcgZm9yIHRhc2sgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3N0YXJ0X3Rhc2spLCAoZ3N0X3BhZF9wYXVzZV90YXNrKSwKCSAgKGdzdF9wYWRfc3RvcF90YXNrKToKCSAgSW1wcm92ZSBkZWJ1Z2dpbmcgZm9yIHRhc2sgZnVuY3Rpb25zLgoJICAqIGdzdC9nc3R0YXNrLmM6IChnc3RfdGFza19mdW5jKSwgKGdzdF90YXNrX3NldF9sb2NrKSwKCSAgKGdzdF90YXNrX3N0YXJ0KSwgKGdzdF90YXNrX3BhdXNlKSwgKGdzdF90YXNrX2pvaW4pOgoJICBNYWtlIHN1cmUgdGhhdCB0aGUgdGFzayBmdW5jdGlvbiBzdGFydGVkIGFuZCBmaW5pc2hlZCBhZnRlciBhCgkgIGpvaW4oKS4KCSAgRG9uJ3QgdHJ5IHRvIHB1c2ggdGhlIHRhc2sgZnVuY3Rpb24gb24gdGhlIHRocmVhZHBvb2wgbXVsdGlwbGUKCSAgdGltZXMuCgkgIEltcHJvdmUgdGhlIGdfd2FybmluZyBtZXNzYWdlIHdpdGggc29tZSB1c2VmdWwgc3VnZ2VzdGlvbnMKCSAgYWJvdXQgaG93IHRvIGZpeCB0aGUgcHJvYmxlbS4KCjIwMDYtMDgtMjMgMTA6NTk6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYzogSGFuZGxlIFJFU1lOQyBjb3JyZWN0bHkgaW4gX3Byb3h5X2dldGNhcHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3BhZF9wcm94eV9nZXRjYXBzKToKCSAgSGFuZGxlIFJFU1lOQyBjb3JyZWN0bHkgaW4gX3Byb3h5X2dldGNhcHMuCgoyMDA2LTA4LTIzIDA5OjQ3OjMyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSAgd29yZCByZWZjb3VudGluZyBtb3JlIHByZWNpc2VseSBmb3IgZ3N0X3ZhbHVlXypfYnVmZmVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3b3JkIHJlZmNvdW50aW5nIG1vcmUgcHJlY2lzZWx5IGZvciBnc3RfdmFsdWVfKl9idWZmZXIKCjIwMDYtMDgtMjEgMTU6MTk6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0eG1sLmM6IENoYWluIHVwIHRvIHBhcmVudCBjbGFzcyBpbiBkaXNwb3NlIGZ1bmN0aW9uIGFuZCBhbHNvIHVucmVmIHRoZSBlbGVtZW50cyBpbiB0aGUgdG9wbGV2ZWxfZWxlbWVudHMgR0xpc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R4bWwuYzogKGdzdF94bWxfZGlzcG9zZSksIChnc3RfeG1sX3BhcnNlX2ZpbGUpLAoJICAoZ3N0X3htbF9wYXJzZV9tZW1vcnkpLCAoZ3N0X3htbF9nZXRfZWxlbWVudCk6CgkgIENoYWluIHVwIHRvIHBhcmVudCBjbGFzcyBpbiBkaXNwb3NlIGZ1bmN0aW9uIGFuZCBhbHNvCgkgIHVucmVmIHRoZSBlbGVtZW50cyBpbiB0aGUgdG9wbGV2ZWxfZWxlbWVudHMgR0xpc3QuCgkgIERvbid0IGxlYWsgWG1sRG9jUHRyIGluIF9wYXJzZV9maWxlKCkgYW5kIF9wYXJzZV9tZW1vcnkoKS4KCSAgQWx3YXlzIHJldHVybiBhIHJlZmVyZW5jZSBpbiBnc3RfeG1sX2dldF9lbGVtZW50KCkgcmF0aGVyCgkgIHRoYW4gb25seSBzb21ldGltZXMuCgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoeG1sbGF1bmNoX3BhcnNlX2NtZGxpbmUpOgoJICBEb24ndCBsZWFrIEdzdFhtbCBvYmplY3QuCgoyMDA2LTA4LTIxIDE0OjU0OjMxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBBUEk6IEFkZCBnc3RfY2Fwc19tZXJnZSgpIGFuZCB1c2UgaXQgaW4gYmFzZXRyYW5zZm9ybSwgZml4ZXMgIzM0NTQ0NCBpbiBhIGJldHRlciB3YXkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X3N0cnVjdHVyZV9pc19lcXVhbF9mb3JlYWNoKSwKCSAgKGdzdF9jYXBzX21lcmdlKToKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKToKCSAgQVBJOiBBZGQgZ3N0X2NhcHNfbWVyZ2UoKSBhbmQgdXNlIGl0IGluIGJhc2V0cmFuc2Zvcm0sIGZpeGVzICMzNDU0NDQKCSAgaW4gYSBiZXR0ZXIgd2F5CgoyMDA2LTA4LTIxIDE0OjAzOjMzICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdHhtbC5jOiBJbXBsZW1lbnQgR09iamVjdDo6ZGlzcG9zZSB2aXJ0dWFsIG1ldGhvZCBpbiBHc3RYTUwgc28gd2UgY2FuIGZyZWUgdGhlIHRvcF9lbGVtZW50cyBHTGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHhtbC5jOiAoZ3N0X3htbF9jbGFzc19pbml0KSwgKGdzdF94bWxfZGlzcG9zZSk6CgkgIEltcGxlbWVudCBHT2JqZWN0OjpkaXNwb3NlIHZpcnR1YWwgbWV0aG9kIGluIEdzdFhNTCBzbyB3ZSBjYW4gZnJlZSB0aGUKCSAgdG9wX2VsZW1lbnRzIEdMaXN0LgoKMjAwNi0wOC0yMSAwOTozMDowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogQ29weSBkdXJhdGlvbi9vZmZzZXRfZW5kL2NhcHMgd2hlbiBjcmVhdGluZyBhIHN1YmJ1ZmZlciBvZiB0aGUgY29tcGxldGUgcGFyZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFibGUpLAoJICAoZ3N0X2J1ZmZlcl9jcmVhdGVfc3ViKToKCSAgQ29weSBkdXJhdGlvbi9vZmZzZXRfZW5kL2NhcHMgd2hlbiBjcmVhdGluZyBhIHN1YmJ1ZmZlciBvZiB0aGUKCSAgY29tcGxldGUgcGFyZW50LgoJICBNYWtlIHRoZSBzdWJidWZmZXIgcmVhZC1vbmx5IHdoZW4gd2UgbWFrZSB0aGUgbWV0YWRhdGEgd3JpdGFibGUgZm9yCgkgIG5vdy4gRml4ZXMgIzM1MTc2OC4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZGVkIGNoZWNrIGZvciBtZXRhZGF0YSBjb3B5IHdoZW4gY3JlYXRpbmcgc3ViYnVmZmVycy4KCjIwMDYtMDgtMjEgMDk6MjA6NDIgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogT25seSBjYWxsIGRvd25zdHJlYW0gYnVmZmVyX2FsbG9jIGlmIHRyYW5zZm9ybSBlbGVtZW50IGlzIHBhc3N0aHJvdWdoIG9yIGFsd2F5c19pbl8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKToKCSAgT25seSBjYWxsIGRvd25zdHJlYW0gYnVmZmVyX2FsbG9jIGlmIHRyYW5zZm9ybSBlbGVtZW50IGlzIHBhc3N0aHJvdWdoCgkgIG9yIGFsd2F5c19pbl9wbGFjZS4gQ2xvc2VzICMzNTA0NDkuCgoyMDA2LTA4LTIwIDE5OjM2OjIxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBDaGFuZ2VMb2c6IENoYW5nZUxvZyBzdXJnZXJ5IHRvIGFkZCBjb21tZW50cyB0byBwcmV2aW91cyBjaGFuZ2VzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIENoYW5nZUxvZzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnkgdG8gYWRkIGNvbW1lbnRzIHRvIHByZXZpb3VzIGNoYW5nZXMKCjIwMDYtMDgtMjAgMTk6MzA6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIFNpbXBsaWZ5IGNhcHMgdG8gZ2V0IHJpZCBvZiBkdXBsaWNhdGVzLCBmaXhlcyAjMzQ1NDQ0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKToKCSAgU2ltcGxpZnkgY2FwcyB0byBnZXQgcmlkIG9mIGR1cGxpY2F0ZXMsIGZpeGVzICMzNDU0NDQKCjIwMDYtMDgtMjAgMTU6NTU6MTIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R2YWx1ZS4qOiBVc2UgdGhlc2Ugb3B0aW1pemF0aW9ucyBvbmx5IGludGVybmFseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIFVzZSB0aGVzZSBvcHRpbWl6YXRpb25zIG9ubHkgaW50ZXJuYWx5LgoKMjAwNi0wOC0yMCAxNDozMDoyMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLio6IFNhdmVzIHRoZSBleHBlbnNpdmUgbG9va3VwIG9mIHRoZSBjb21wYXJlIGZ1bmN0aW9uIGluIG1hbnkgY2FzZXMgKCMzNDU0NDQpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2NvbXBhcmVfbGlzdCksCgkgIChnc3RfdmFsdWVfY29tcGFyZV9mcmFjdGlvbl9yYW5nZSksCgkgIChnc3RfdmFsdWVfaW50ZXJzZWN0X2ZyYWN0aW9uX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9pbnRlcnNlY3RfZnJhY3Rpb25fcmFuZ2VfZnJhY3Rpb25fcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2ZyYWN0aW9uX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zdWJ0cmFjdF9mcmFjdGlvbl9yYW5nZV9mcmFjdGlvbl9yYW5nZSksCgkgIChnc3RfdmFsdWVfZ2V0X2NvbXBhcmVfZnVuYyksIChnc3RfdmFsdWVfY29tcGFyZSksCgkgIChnc3RfdmFsdWVfY29tcGFyZV93aXRoX2Z1bmMpOgoJICAqIGdzdC9nc3R2YWx1ZS5oOgoJICBTYXZlcyB0aGUgZXhwZW5zaXZlIGxvb2t1cCBvZiB0aGUgY29tcGFyZSBmdW5jdGlvbiBpbiBtYW55IGNhc2VzCgkgICgjMzQ1NDQ0KQoKMjAwNi0wOC0xOCAxMzo0MTowMiArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RpbmZvLmM6IERpc2FibGUgdGVzdCB0aGF0IHJlcXVpcmUgZ3N0ZGVidWcgaWYgaXQgd2Fzbid0IGJ1aWx0IGluIGNvcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RpbmZvLmM6IChnc3RfaW5mb19zdWl0ZSk6CgkgIERpc2FibGUgdGVzdCB0aGF0IHJlcXVpcmUgZ3N0ZGVidWcgaWYgaXQgd2Fzbid0IGJ1aWx0IGluIGNvcmUuCgoyMDA2LTA4LTE4IDEwOjUyOjMzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3JhbmRvbS9lbnNvbmljL2xvZ2dpbmcudHh0OiB1cGRhdGUgaWRlYXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9sb2dnaW5nLnR4dDoKCSAgdXBkYXRlIGlkZWFzCgkgICogZ3N0L2dzdGluZm8uYzogKGdzdF9kZWJ1Z19sb2dfZGVmYXVsdCk6CgkgIHJlb3JkZXIgZmllbGRzLCBzYXZlIHNvbWUgY29sdW1ucywgYWRkIG9wdGluYWwgY29sb3IgY29kZXMgZm9yIGxvZy0KCSAgbGV2ZWxzCgoyMDA2LTA4LTE4IDA4OjA3OjEyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3JhbmRvbS9lbnNvbmljL2xvZ2dpbmcudHh0OiBhZGQgaWRlYXMgYWJvdXQgbWFraW5nIHRoZSBsb2dzIGFiaXQgbW9yZSB1c2VmdWwKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9sb2dnaW5nLnR4dDoKCSAgYWRkIGlkZWFzIGFib3V0IG1ha2luZyB0aGUgbG9ncyBhYml0IG1vcmUgdXNlZnVsCgoyMDA2LTA4LTE3IDE4OjExOjExICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9wd2cvOiBVcGRhdGUgZm9yIDAuMTAgQVBJICgjMzQwNjI3KS4gQWRkIG15c2VsZiB0byBhdXRob3JzIGxpc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLWV2ZW50cy54bWw6CgkgICogZG9jcy9wd2cvdGl0bGVwYWdlLnhtbDoKCSAgVXBkYXRlIGZvciAwLjEwIEFQSSAoIzM0MDYyNykuIEFkZCBteXNlbGYKCSAgdG8gYXV0aG9ycyBsaXN0LgoKMjAwNi0wOC0xNyAxMDo0NjoxOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIE1ha2UgZ3N0Y2hlY2sgc3R1ZmYgc2hvdyB1cCBpbiBkb2NzIChzdGlsbCBuZWVkcyB0byBiZSBkb2N1bWVudGVkIHByb3Blcmx5IHRob3VnaCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RidWZmZXJzdHJhdy5jOgoJICBNYWtlIGdzdGNoZWNrIHN0dWZmIHNob3cgdXAgaW4gZG9jcyAoc3RpbGwgbmVlZHMgdG8KCSAgYmUgZG9jdW1lbnRlZCBwcm9wZXJseSB0aG91Z2gpLgoKMjAwNi0wOC0xNiAxMTo0Nzo1NCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBBZGQgaW50ZXJuYWwgaGVscGVycyBmb3IgcHJlLXJlZ2lzdGVyaW5nIHF1YXJrcyBmcm9tIHN0YXRpYyBzdHJpbmdzIGFuZCB1c2luZyB0aGUgcXVhcmsgdmFsdWVzIGRpcmVjdGx5IGluc3RlYWQgb2YgbG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgKiBnc3QvZ3N0X3ByaXZhdGUuaDoKCSAgKiBnc3QvZ3N0cXVhcmsuYzogKF9wcml2X2dzdF9xdWFya3NfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHF1YXJrLmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKSwKCSAgKGdzdF9xdWVyeV9zZXRfcG9zaXRpb24pLCAoZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKSwKCSAgKGdzdF9xdWVyeV9uZXdfZHVyYXRpb24pLCAoZ3N0X3F1ZXJ5X3NldF9kdXJhdGlvbiksCgkgIChnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24pLCAoZ3N0X3F1ZXJ5X25ld19jb252ZXJ0KSwKCSAgKGdzdF9xdWVyeV9zZXRfY29udmVydCksIChnc3RfcXVlcnlfcGFyc2VfY29udmVydCksCgkgIChnc3RfcXVlcnlfbmV3X3NlZ21lbnQpLCAoZ3N0X3F1ZXJ5X3NldF9zZWdtZW50KSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KSwgKGdzdF9xdWVyeV9uZXdfc2Vla2luZyksCgkgIChnc3RfcXVlcnlfc2V0X3NlZWtpbmcpLCAoZ3N0X3F1ZXJ5X3BhcnNlX3NlZWtpbmcpOgoJICBBZGQgaW50ZXJuYWwgaGVscGVycyBmb3IgcHJlLXJlZ2lzdGVyaW5nIHF1YXJrcyBmcm9tIHN0YXRpYyBzdHJpbmdzCgkgIGFuZCB1c2luZyB0aGUgcXVhcmsgdmFsdWVzIGRpcmVjdGx5IGluc3RlYWQgb2YgbG9va2luZyB0aGVtIHVwIHdoZW4KCSAgY3JlYXRpbmcgYW5kIHBhcnNpbmcgcXVlcmllcy4gQ2FuIGJlIHVzZWQgZm9yIGV2ZW50IGNvbnN0cnVjdGlvbiB0b28uCgkgIENsb3NlcyAjMzUwNDMyLgoKMjAwNi0wOC0xNiAwODo1NDo1NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogRml4IGJvZ3VzIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzoKCSAgRml4IGJvZ3VzIGRvY3MuCgoyMDA2LTA4LTE1IDE4OjQ1OjM5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEZpeCBtZW1sZWFrICgjMzUxNTAyKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9zZXRfdmFsdWVfZnJvbV9zdHJpbmcpOgoJICBGaXggbWVtbGVhayAoIzM1MTUwMikuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdXRpbHNfc3VpdGUpOgoJICBBZGQgdW5pdCB0ZXN0IGZvciBtb3N0IG9mIGdzdF91dGlsX3NldF92YWx1ZV9mcm9tX3N0cmluZygpCgkgIChub3QgdGhhdCBvbmUgd291bGQgd2FudCB0byBlbmNvdXJhZ2UgdXNlIG9mIHRoaXMgZnVuY3Rpb24pLgoKMjAwNi0wOC0xNSAxODoyOToyMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6IFVzZSBjb25zdCBnY2hhciAqIHZhcmlhYmxlcyBpbiBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIG1hY3JvIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOgoJICBVc2UgY29uc3QgZ2NoYXIgKiB2YXJpYWJsZXMgaW4gZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZwoJICBtYWNybyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAoYW5kIGRvbid0IHVzZSB0YWJzIGZvcgoJICBpbmRlbnRpbmcpLgoKMjAwNi0wOC0xNSAxMDowODozNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogTW9yZSBzcGFjZSBvbiB0aGUgbGVmdCBmb3IgdGhlIHRhZyBuYW1lcywgdG8gY2F0ZXIgZm9yIHRoZSAnZXh0ZW5kZWQgY29tbWVudCcgdGFnIChub3QgdG91Y2hpbmcgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChwcmludF90YWcpOgoJICBNb3JlIHNwYWNlIG9uIHRoZSBsZWZ0IGZvciB0aGUgdGFnIG5hbWVzLCB0byBjYXRlcgoJICBmb3IgdGhlICdleHRlbmRlZCBjb21tZW50JyB0YWcgKG5vdCB0b3VjaGluZyB0aGUKCSAgc3RyaW5nIGZvciB0aGUgZmlyc3QgbGluZSBzaW5jZSBpdCdzIHRyYW5zbGF0ZWQpLgoKMjAwNi0wOC0xNSAwOTo0NDo1OCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkqIENoYW5nZUxvZzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IGRvbid0IGZvcmdldCB0byBtZW50aW9uIHRoZSBvdGhlciBjaGFuZ2UgaW4gdGhlIENoYW5nZUxvZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IGRvbid0IGZvcmdldCB0byBtZW50aW9uIHRoZSBvdGhlciBjaGFuZ2UgaW4gdGhlIENoYW5nZUxvZwoKMjAwNi0wOC0xNSAwOTozMzoyNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6IEZpeCBBU1NFUlRfQ1JJVElDQUwgYW5kIEFTU0VSVF9XQVJOSU5HIG1hY3JvcyB0byBhY3R1YWxseSBwcmludCBzb21ldGhpbmcgd2hlbiB0aGV5IGZhaWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIEZpeCBBU1NFUlRfQ1JJVElDQUwgYW5kIEFTU0VSVF9XQVJOSU5HIG1hY3JvcyB0byBhY3R1YWxseQoJICBwcmludCBzb21ldGhpbmcgd2hlbiB0aGV5IGZhaWwuCgoyMDA2LTA4LTE0IDE5OjA0OjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgR1NUX1RBR19FWFRFTkRFRF9DT01NRU5UICgjMzUwOTM1KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgQVBJOiBhZGQgR1NUX1RBR19FWFRFTkRFRF9DT01NRU5UICgjMzUwOTM1KS4KCjIwMDYtMDgtMTQgMTc6Mjk6MzEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aW5mby5jOiBNYWtlIEdTVF9QVFJfRk9STUFUIHByaW50IG1lc3NhZ2VzIGFzIHdlbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChnc3RfZGVidWdfcHJpbnRfb2JqZWN0KToKCSAgTWFrZSBHU1RfUFRSX0ZPUk1BVCBwcmludCBtZXNzYWdlcyBhcyB3ZWxsLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RpbmZvLmM6IChwcmludGZfZXh0ZW5zaW9uX2xvZ19mdW5jKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9pbmZvX3N1aXRlKToKCSAgTW9yZSB0ZXN0cy4KCjIwMDYtMDgtMTQgMTU6MzM6MTcgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogSWYgdGhlIEdzdEVsZW1lbnRDbGFzcyBkb2Vzbid0IGhhdmUgYSBHc3RFbGVtZW50RGV0YWlscyB3aXRoIGFsbCBmaWVsZHMgdGhlbiBlcnJvciBvdXQgbmljZWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9yZWdpc3Rlcik6CgkgIElmIHRoZSBHc3RFbGVtZW50Q2xhc3MgZG9lc24ndCBoYXZlIGEgR3N0RWxlbWVudERldGFpbHMgd2l0aCBhbGwgZmllbGRzCgkgIGZpbGxlZCB1cCBjb3JyZWN0bHkgKGxvbmduYW1lLCBkZXNjcmlwdGlvbiBBTkQgYXV0aG9yKSwgdGhlbiBlcnJvciBvdXQKCSAgbmljZWx5IGluc3RlYWQgb2YgY3Jhc2hpbmcuCgoyMDA2LTA4LTE0IDEyOjM1OjA2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS5jOiBGaXggdHlwbyBpbiBkb2NzIGFuZCByZS13cmFwIGRvY3MgYmx1cmIgdG8gbm90IGV4Y2VlZCA4MCBjaGFycy9saW5lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgIEZpeCB0eXBvIGluIGRvY3MgYW5kIHJlLXdyYXAgZG9jcyBibHVyYiB0byBub3QgZXhjZWVkIDgwIGNoYXJzL2xpbmUuCgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIEV4cGFuZCBvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFycmF5cyBhbmQgbGlzdHMgYXMgd2UgdXNlIHRoZW0uCgoyMDA2LTA4LTE0IDA3OjQ0OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IElmIHRoZSBwYXJlbnQgc3RhdGUgY2hhbmdlIGZ1bmN0aW9uIGZhaWxlZCwgZG9uJ3QgYXNzdW1lIHdlIGNhbiBzYWZlbHkgc3RvcCB0aGUgc291cmNlLCB0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIElmIHRoZSBwYXJlbnQgc3RhdGUgY2hhbmdlIGZ1bmN0aW9uIGZhaWxlZCwgZG9uJ3QgYXNzdW1lIHdlIGNhbiBzYWZlbHkKCSAgc3RvcCB0aGUgc291cmNlLCB0aGlzIHdpbGwgYmUgZG9uZSB3aGVuIHRoZSBwYWRzIGFyZSBkZWFjdGl2YXRlZC4KCjIwMDYtMDgtMTQgMDc6MzU6MDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBTbWFsbCBkb2MgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOgoJICAqIGdzdC9nc3R0YXNrLmM6IChnc3RfdGFza19qb2luKToKCSAgU21hbGwgZG9jIHVwZGF0ZXMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hY3RpdmF0ZV9wdWxsKSwgKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCksCgkgIChnc3RfcGFkX3N0b3BfdGFzayk6CgkgIFdoZW4gcGFkIChkZSlhY3RpdmF0aW9uIGZhaWxlZCBmb3Igc29tZSByZWFzb24sIHJlc3RvcmUgdGhlIG9sZAoJICBhY3RpdmF0aW9uIG1vZGUgYW5kIHNldCB0aGUgcGFkIHRvIGZsdXNoaW5nIGluc3RlYWQgb2YgYXNzdW1pbmcgdGhlCgkgIHBhZCBpcyBkZWFjdGl2YXRlZC4KCSAgSWYgdGhlIF90YXNrX2pvaW4oKSBmYWlsZWQsIHJlaW5zdGFsbCB0aGUgdGFzayBvbiB0aGUgcGFkIHNvIHRoYXQgaXQgY2FuCgkgIGJlIHN0b3BwZWQgbGF0ZXIgYW5kIHJldHVybiBhbiBlcnJvci4KCjIwMDYtMDgtMTEgMTU6MjY6MzMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIEdTVF9ESVNBQkxFX0RFUFJFQ0FURUQgaXMgb25seSBmb3IgdXNlcnMgb2YgQVBJIHRoYXQgZG9uJ3Qgd2FudCB0byBzZWUgZGVwcmVjYXRlZCBmdW5jdGlvbnMgaW4gdGhlIGhlYWRlcnM7IHBlb3BsZSB0aC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wOC0xMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjb25maWd1cmUuYWM6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiAoZ3N0X2RwX3BhY2tldGl6ZXJfbmV3KToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOiAoZ3N0X2RwX3N1aXRlKTogR1NUX0RJU0FCTEVfREVQUkVDQVRFRAoJICBpcyBvbmx5IGZvciB1c2VycyBvZiBBUEkgdGhhdCBkb24ndCB3YW50IHRvIHNlZSBkZXByZWNhdGVkCgkgIGZ1bmN0aW9ucyBpbiB0aGUgaGVhZGVyczsgcGVvcGxlIHRoYXQgd2FudCB0byBjb21waWxlIG91dAoJICBkZXByZWNhdGVkIGNvZGUgc2hvdWxkIHBhc3MgLURHU1RfUkVNT1ZFX0RFUFJFQ0FURUQgaW50byB0aGUKCSAgQ0ZMQUdTLiBGaXhlcyB0aGUgYnVpbGQgb2YgbXVsdGlmZHNpbmssIG9yIHdpbGwgc29vbi4uCgoyMDA2LTA4LTExIDE1OjI0OjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIEdzdENsb2NrQ2xhc3Mgdm1ldGhvZCBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgR3N0Q2xvY2tDbGFzcyB2bWV0aG9kIGRvY3MuCgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgTWFyayAjZW5kaWYgd2l0aCBjb21tZW50IGZvciBhc3NvY2lhdGVkICNpZgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2lkX3dhaXQpOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBBZGQgdm1ldGhvZCB3YWl0X2ppdHRlciB0byBhdm9pZCBhbiB1bm5lZWRlZCBfZ2V0X3RpbWUoKSBmb3IKCSAgbW9zdCBjbG9jayBpbXBsZW1lbnRhdGlvbnMuCgkgIERvY3VtZW50IHZtZXRob2RzLgoJICBGbGVzaCBvdXQgZG9jcyBhYm91dCByZXNvbHV0aW9uIG1ldGhvZHMuCgkgIEFQSTogR3N0Q2xvY2tDbGFzczo6d2FpdF9qaXR0ZXIKCSAgKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzogKGdzdF9zeXN0ZW1fY2xvY2tfY2xhc3NfaW5pdCksCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX2FzeW5jX3RocmVhZCksCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX2lkX3dhaXRfaml0dGVyX3VubG9ja2VkKSwKCSAgKGdzdF9zeXN0ZW1fY2xvY2tfaWRfd2FpdF9qaXR0ZXIpOgoJICBVc2UgYmFzZSBjbGFzcyB3YWl0X2ppdHRlciB2YXJpYW50IGZvciBpbXByb3ZlZCBwZXJmb3JtYW5jZQoJICBkdWUgdG8gbGVzcyBjbG9jayBwb2xsaW5nLgoKMjAwNi0wOC0xMSAxNTowNzo1OCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3QuYzogU2V0IGdzdCBhcyBiZWluZyBpbml0aWFsaXplZCBiZWZvcmUgc2Nhbm5pbmcvdXBkYXRpbmcgdGhlIHJlZ2lzdHJ5LCBzaW5jZSB0aGVyZSBtaWdodCBiZSBzb21lIHBsdWdpbnMgdGhhdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChnc3RfaW5pdF9jaGVjayksIChpbml0X3Bvc3QpOgoJICBTZXQgZ3N0IGFzIGJlaW5nIGluaXRpYWxpemVkIGJlZm9yZSBzY2FubmluZy91cGRhdGluZyB0aGUgcmVnaXN0cnksCgkgIHNpbmNlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgcGx1Z2lucyB0aGF0IGNhbGwgZ3N0X2luaXQoKSBhbmQgd2UgZG9uJ3QKCSAgd2FudCB0byBsb29wIGJhY2sgaW4uCgkgIENsb3NlcyAjMzUwODc5CgoyMDA2LTA4LTExIDEzOjEzOjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBNZW50aW9uIHRoYXQgd2UgZml4ZWQgYnVnICMzNDk5NDMgd2l0aCB0aGUgbGFzdCBjb21taXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBNZW50aW9uIHRoYXQgd2UgZml4ZWQgYnVnICMzNDk5NDMgd2l0aCB0aGUgbGFzdCBjb21taXQuCgoyMDA2LTA4LTExIDEzOjA1OjMwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1xb3MudHh0OiBCcmluZyBkb2NzIGluIGxpbmUgd2l0aCB0aGUgY29kZS4gTW9zdGx5IHRoZSBzaWduIG9mIHRoZSBqaXR0ZXIgd2FzIHdyb25nIGluIHRoZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXFvcy50eHQ6CgkgIEJyaW5nIGRvY3MgaW4gbGluZSB3aXRoIHRoZSBjb2RlLiBNb3N0bHkgdGhlIHNpZ24gb2YgdGhlIGppdHRlciB3YXMKCSAgd3JvbmcgaW4gdGhlIGRvY3MuCgkgICogZ3N0L2dzdGNsb2NrLmM6CgkgIEZpeCB0aGUgZG9jcyBmb3IgdGhlIGppdHRlci4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfY3VzdG9tKSwgKGdzdF9ldmVudF9uZXdfdGFnKSwKCSAgKGdzdF9ldmVudF9wYXJzZV90YWcpLCAoZ3N0X2V2ZW50X25ld19idWZmZXJfc2l6ZSksCgkgIChnc3RfZXZlbnRfcGFyc2VfYnVmZmVyX3NpemUpLCAoZ3N0X2V2ZW50X3BhcnNlX3FvcyksCgkgIChnc3RfZXZlbnRfbmV3X3NlZWspLCAoZ3N0X2V2ZW50X3BhcnNlX3NlZWspLAoJICAoZ3N0X2V2ZW50X25ld19uYXZpZ2F0aW9uKToKCSAgTWFrZSBzdXJlIHRoZSBHc3RTdHJ1Y3R1cmUgaGFzIG5vIHBhcmVudCB3aGVuIGNyZWF0aW5nIGN1c3RvbQoJICBldmVudHMuCgkgIEFkZCBzb21lIG1vcmUgYXJndW1lbnQgY2hlY2tpbmcgc28gdGhhdCB3ZSBhdm9pZCAwLjAgcmF0ZXMuCgkgIEZsZXNoIG91dCB0aGUgZG9jcyBmb3IgdGhlIFFvUyBldmVudCBzb21lIG1vcmUuCgoyMDA2LTA4LTExIDEwOjIxOjM2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBGb3Jnb3QgdG8gbWVudGlvbiBmaXhlZCBidWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGb3Jnb3QgdG8gbWVudGlvbiBmaXhlZCBidWcuCgoyMDA2LTA4LTExIDEwOjE5OjUxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgRG9jIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdC5jOiAoZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCksIChnc3RfaW5pdF9jaGVjayksCgkgIChlbnN1cmVfY3VycmVudF9yZWdpc3RyeV9mb3JraW5nKSwgKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5KSwKCSAgKHBhcnNlX29uZV9vcHRpb24pLCAocGFyc2VfZ29wdGlvbl9hcmcpLCAoZ3N0X2RlaW5pdCksCgkgIChnc3RfcmVnaXN0cnlfZm9ya19pc19lbmFibGVkKSwgKGdzdF9yZWdpc3RyeV9mb3JrX3NldF9lbmFibGVkKToKCSAgKiBnc3QvZ3N0Lmg6CgkgIERvYyB1cGRhdGVzLgoJICBBZGRlZCBBUEkgYW5kIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZGlzYWJsZSByZWdpc3RyeSBmb3JraW5nIGluCgkgIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCSAgQ29uc3RpZnkgc29tZSBzdGF0aWMgYXJyYXlzLgoJICBBZGRlZCBzb21lIG1vcmUgZGVidWcuCgkgIERvbid0IGRlaW5pdCB0d2ljZS4KCSAgQVBJOiBnc3RfcmVnaXN0cnlfZm9ya19pc19lbmFibGVkKCkKCSAgQVBJOiBnc3RfcmVnaXN0cnlfZm9ya19zZXRfZW5hYmxlZCgpCgkgIEFQSTogLS1nc3QtZGlzYWJsZS1yZWdpc3RyeS1mb3JrIGNvbW1hbmQgbGluZSBvcHRpb24KCjIwMDYtMDgtMTEgMDk6NTk6MjkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGdzdF9pbml0KToKCSAgRml4IHR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KCjIwMDYtMDgtMTAgMjA6MDU6MzAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOiBmaXggQUJJIHNpemUtY29ycmVjdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgZml4IEFCSSBzaXplLWNvcnJlY3Rpb24KCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOiAoZ3N0X2RwX3N1aXRlKToKCSAgbWFrZSB0ZXN0cyB0aGF0IHVzZSBkZXByZWNhdGVkIEFQSSBjb25kaXRpb25hbAoKMjAwNi0wOC0xMCAxOTo0NjoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X29iamVjdF97cyxnfWV0X2NvbnRyb2xfcmF0ZSgpLCBhZGQgcHJpdmF0ZSBkYXRhIHNlY3Rpb24sIGZpeCBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIChfZ3N0X2NvbnRyb2xsZXJfZ2V0X3Byb3BlcnR5KSwgKF9nc3RfY29udHJvbGxlcl9zZXRfcHJvcGVydHkpLAoJICAoX2dzdF9jb250cm9sbGVyX2luaXQpLCAoX2dzdF9jb250cm9sbGVyX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6IChnc3Rfb2JqZWN0X2dldF9jb250cm9sX3JhdGUpLAoJICAoZ3N0X29iamVjdF9zZXRfY29udHJvbF9yYXRlKToKCSAgQVBJOiBhZGQgZ3N0X29iamVjdF97cyxnfWV0X2NvbnRyb2xfcmF0ZSgpLCBhZGQgcHJpdmF0ZSBkYXRhIHNlY3Rpb24sCgkgIGZpeCBkb2NzCgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiAoZ3N0X2RwX3BhY2tldGl6ZXJfbmV3KToKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmg6CgkgIGFkZCBkZXByZWNhdGlvbiBndWFyZHMgdG8gbWFrZSBndGstZG9jIGhhcHB5IGFuZCBhbGxvdyBkaXNhYmxpbmcgY3J1ZnQKCjIwMDYtMDgtMDkgMTU6MjY6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay86IExldCdzIGVuYWJsZSB0aGUgbmV3IHVuaXQgdGVzdCBhcyB3ZWxsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgTGV0J3MgZW5hYmxlIHRoZSBuZXcgdW5pdCB0ZXN0IGFzIHdlbGwuCgoyMDA2LTA4LTA5IDE1OjEzOjE0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgR1NUX1NFR01FTlRfRk9STUFULCB3aGljaCBpcyBhIHByaW50ZiBleHRlbnNpb24gd2UgcmVnaXN0ZXIgdGhhdCBsZXRzIHVzIGVhc2lseSBkdW1wIEdzdFNlZ21lbnRzIGludG8gZGVidWcgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSAgKiBnc3QvZ3N0aW5mby5jOiAoX2dzdF9kZWJ1Z19pbml0KSwgKGdzdF9kZWJ1Z19wcmludF9zZWdtZW50KSwKCSAgKF9nc3RfaW5mb19wcmludGZfZXh0ZW5zaW9uX3B0ciksCgkgIChfZ3N0X2luZm9fcHJpbnRmX2V4dGVuc2lvbl9zZWdtZW50KToKCSAgQVBJOiBhZGQgR1NUX1NFR01FTlRfRk9STUFULCB3aGljaCBpcyBhIHByaW50ZiBleHRlbnNpb24gd2UKCSAgcmVnaXN0ZXIgdGhhdCBsZXRzIHVzIGVhc2lseSBkdW1wIEdzdFNlZ21lbnRzIGludG8gZGVidWcKCSAgbG9ncyAoIzM1MDQxOSkuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGluZm8uYzogKHNlZ21lbnRfcHJpbnRmX2V4dGVuc2lvbl9sb2dfZnVuYyksCgkgIChpbmZvX3NlZ21lbnRfZm9ybWF0X3ByaW50Zl9leHRlbnNpb24pLCAoZ3N0X2luZm9fc3VpdGUpOgoJICBBZGQgc2ltcGxlIHVuaXQgdGVzdCB0aGF0IGxvZ3MgYSBidW5jaCBvZiBkaWZmZXJlbnQgc2VnbWVudHMgKG5vdAoJICB2YWxncmluZGVkIGF0IHRoZSBtb21lbnQgYmVjYXVzZSBvZiBsZWFrcyBpbiBnc3RfZGVidWdfYWRkX2xvZ19mdW5jdGlvbikuCgoyMDA2LTA4LTA5IDExOjAxOjIwICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEV2ZW4gaWYgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUgcHJvcGVyIGZvcm1hdCB0byByZXF1ZXN0IGRvd25zdHJlYW0sIGNhbGwgYnVmZmVyX2FsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIEV2ZW4gaWYgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUgcHJvcGVyIGZvcm1hdCB0byByZXF1ZXN0IGRvd25zdHJlYW0sCgkgIGNhbGwgYnVmZmVyX2FsbG9jKCkgZG93bnN0cmVhbSB3aXRoIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHdpdGhvdXQgc2V0dGluZwoJICB0aGUgY2FwcyBvbiB0aGUgc3JjcGFkLiBUaGlzIHdpbGwgZm9yY2UgbmVnb3RpYXRpb24gaW4gdGhlIGNoYWluCgkgIGZ1bmN0aW9uLgoJICBDbG9zZXMgIzM1MDQ0OQoKMjAwNi0wOC0wOCAxNjoyNDo1OCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jOiBVbmxpbmtpbmcgZnJvbSBhIHBhZCB3aXRob3V0IGEgdGFyZ2V0IGlzIG5vdyBhIHBlcmZlY3RseSB2YWxpZCBjYXNlIHdoaWNoIHNob3VsZCBOT1QgcmFpc2UgYW4gYXNzZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9naG9zdF9wYWRfZG9fdW5saW5rKToKCSAgVW5saW5raW5nIGZyb20gYSBwYWQgd2l0aG91dCBhIHRhcmdldCBpcyBub3cgYSBwZXJmZWN0bHkgdmFsaWQgY2FzZQoJICB3aGljaCBzaG91bGQgTk9UIHJhaXNlIGFuIGFzc2VydGlvbi4KCSAgVGhpcyBjYXNlIHdvdWxkIGhhcHBlbiBpZiBhIGxpbmtlZCBnaG9zdHBhZCBpdHMgdGFyZ2V0IHNldCB0byBOVUxMIGFmdGVyCgkgIGl0IHdhcyBwcmV2aW91c2x5IGxpbmtlZC4KCjIwMDYtMDgtMDggMDk6NTY6NDUgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOiBBbHNvIGNvbW1lbnQgb3V0IHRoZSB0ZXN0IChzZWUgYmVsb3cpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOgoJICBBbHNvIGNvbW1lbnQgb3V0IHRoZSB0ZXN0IChzZWUgYmVsb3cpLgoKMjAwNi0wOC0wOCAwOTowNzozNCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2xpYnMvZ2RwLmM6IFVzZSB0aGUgYXJjaGl0ZWN0dXJlIGluZm9ybWF0aW9uIGZyb20gY29uZmlnLmggYW5kIG5vdCBnY2MgbWFjcm9zIGluIG9yZGVyIHRvIHByb3Blcmx5IGRpc2FibC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOiAoZ3N0X2RwX3N1aXRlKToKCSAgVXNlIHRoZSBhcmNoaXRlY3R1cmUgaW5mb3JtYXRpb24gZnJvbSBjb25maWcuaCBhbmQgbm90IGdjYyBtYWNyb3MKCSAgaW4gb3JkZXIgdG8gcHJvcGVybHkgZGlzYWJsZSBhIHRlc3QgdGhhdCBmYWlscyBvbiBQUEM2NC4KCjIwMDYtMDgtMDQgMTU6MTU6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBEb24ndCBjcmFzaCBwcmludGluZyB0aGUgd2FybmluZyBpZiB0aGUgcGFkIGhhcyBubyBwYXJlbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9yZW1vdmVfcGFkKToKCSAgRG9uJ3QgY3Jhc2ggcHJpbnRpbmcgdGhlIHdhcm5pbmcgaWYgdGhlIHBhZCBoYXMgbm8gcGFyZW50LgoKMjAwNi0wOC0wMiAxNToxOTozMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzogTWFrZSBkZWJ1ZyBjYXRlZ29yeSBzdGF0aWMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICAoZ3N0X2RwX2hlYWRlcl9mcm9tX2J1ZmZlcl9hbnkpLCAoZ3N0X2RwX3BhY2tldF9mcm9tX2NhcHNfYW55KSwKCSAgKGdzdF9kcF9jcmMpLCAoZ3N0X2RwX2hlYWRlcl9wYXlsb2FkX2xlbmd0aCksCgkgIChnc3RfZHBfaGVhZGVyX3BheWxvYWRfdHlwZSksIChnc3RfZHBfcGFja2V0X2Zyb21fZXZlbnQpLAoJICAoZ3N0X2RwX3BhY2tldF9mcm9tX2V2ZW50XzFfMCksIChnc3RfZHBfYnVmZmVyX2Zyb21faGVhZGVyKSwKCSAgKGdzdF9kcF9jYXBzX2Zyb21fcGFja2V0KSwgKGdzdF9kcF9ldmVudF9mcm9tX3BhY2tldF8wXzIpLAoJICAoZ3N0X2RwX2V2ZW50X2Zyb21fcGFja2V0KSwgKGdzdF9kcF92YWxpZGF0ZV9oZWFkZXIpLAoJICAoZ3N0X2RwX3ZhbGlkYXRlX3BheWxvYWQpOgoJICBNYWtlIGRlYnVnIGNhdGVnb3J5IHN0YXRpYwoJICBDb25zdGlmeSB0aGUgY3JjIHRhYmxlLgoJICBEbyBzb21lIG1vcmUgYXJnIGNoZWNraW5nIGluIHB1YmxpYyBmdW5jdGlvbnMuCgkgIEZpeCBzb21lIGRvY3MgYW5kIGRvIHNvbWUgc21hbGwgY2xlYW51cHMuCgkgICogdGVzdHMvY2hlY2svbGlicy9nZHAuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9kcF9zdWl0ZSk6CgkgIEFkZCBzb21lIG1vcmUgY2hlY2tzIHRvIHNlZSBpZiBHRFAgZGVhbHMgd2l0aCBib2d1cyBpbnB1dC4KCjIwMDYtMDctMzEgMTY6MzQ6NDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0dmFsdWUuYzogRml4IEdzdFZhbHVlTGlzdCBjb21wYXJpc29uIGNvZGUuIEZpeGVzICMzNDcyOTMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2NvbXBhcmVfbGlzdCk6CgkgIEZpeCBHc3RWYWx1ZUxpc3QgY29tcGFyaXNvbiBjb2RlLiBGaXhlcyAjMzQ3MjkzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBDaGVjayB0byB0ZXN0IEdzdFZhbHVlTGlzdCBjb21wYXJpc29uLgoKMjAwNi0wNy0zMSAxNToxMjo1OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBVc2UgT0JKRUNUX0xPQ0sgYW5kIHJlZmNvdW50aW5nIHRvIGdldCB0aGUgcGFkIGNhcHMgaW4gdGhlIGJ1ZmZlcl9hbGxvYyBmdW5jdGlvbiBiZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpOgoJICBVc2UgT0JKRUNUX0xPQ0sgYW5kIHJlZmNvdW50aW5nIHRvIGdldCB0aGUgcGFkIGNhcHMgaW4gdGhlCgkgIGJ1ZmZlcl9hbGxvYyBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjYXBzIGNvdWxkIGNoYW5nZSB3aGlsZSB3ZSBhcmUKCSAgYnVzeSB3aXRoIHRoZW0uIEZpeGVzICMzNDkxMDUKCjIwMDYtMDctMzEgMTU6MTI6MDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogUmVtb3ZlIHVubmVjZXNzYXJ5IHJlZi91bnJlZiBwYWlyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jcmVhdGUpOgoJICBSZW1vdmUgdW5uZWNlc3NhcnkgcmVmL3VucmVmIHBhaXIKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBNYWtlIHN1cmUgdG8gZnJlZSB0aGUgcGFyc2UgYnVmZmVyIG9uIGFsbCBjb2RlIHBhdGhzLgoJICBNb3ZlIGEgZ19mcmVlIHVwIHRvIHRoZSBlcnJvciBoYW5kbGVyIHdoZXJlIGl0J3MgZWFzaWVyIHRvIHNlZS4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZXZlbnQuYzogKHRlc3RfZXZlbnQpOgoJICBFeHRlbmRpbmcgdGltZW91dCBmb3IgZG93bnN0cmVhbSB0cmF2ZWxsaW5nIGV2ZW50cyB0byAxMCBzZWNvbmRzIHRvCgkgIGhvcGVmdWxseSBhdm9pZCBpbnRlcm1pdHRlbnQgZmFpbHVyZSBvbiB0aGUgYnVpbGRib3RzLgoJICAqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9wYXJzZS1sYXVuY2guYzogKHJ1bl9kZWxheWVkX3Rlc3QpOgoJICBEb24ndCBtYW51YWxseSBzZXQgdGhlIHN0YXRlIG9mIHRoZSBzcmMgZWxlbWVudCAtIGl0IHdpbGwgaGFwcGVuIGFzIGEKCSAgbmF0dXJhbCBjb25zZXF1ZW5jZSBvZiB0aGUgcGlwZWxpbmUgY2hhbmdpbmcgc3RhdGUsIGFuZCB0aGF0IHdheSBpdAoJICB3aWxsIGRvIGl0IGluIHRoZSByaWdodCBvcmRlciB0b28uCgoyMDA2LTA3LTMxIDE1OjA3OjMwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgcmVmL3VucmVmIHBhaXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9mYWN0b3J5X2NyZWF0ZSk6CgkgIFJlbW92ZSB1bm5lY2Vzc2FyeSByZWYvdW5yZWYgcGFpcgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgIE1ha2Ugc3VyZSB0byBmcmVlIHRoZSBwYXJzZSBidWZmZXIgb24gYWxsIGNvZGUgcGF0aHMuCgkgIE1vdmUgYSBnX2ZyZWUgdXAgdG8gdGhlIGVycm9yIGhhbmRsZXIgd2hlcmUgaXQncyBlYXNpZXIgdG8gc2VlLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RldmVudC5jOiAodGVzdF9ldmVudCk6CgkgIEV4dGVuZGluZyB0aW1lb3V0IGZvciBkb3duc3RyZWFtIHRyYXZlbGxpbmcgZXZlbnRzIHRvIDEwIHNlY29uZHMgdG8KCSAgaG9wZWZ1bGx5IGF2b2lkIGludGVybWl0dGVudCBmYWlsdXJlIG9uIHRoZSBidWlsZGJvdHMuCgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOiAocnVuX2RlbGF5ZWRfdGVzdCk6CgkgIERvbid0IG1hbnVhbGx5IHNldCB0aGUgc3RhdGUgb2YgdGhlIHNyYyBlbGVtZW50IC0gaXQgd2lsbCBoYXBwZW4gYXMgYQoJICBuYXR1cmFsIGNvbnNlcXVlbmNlIG9mIHRoZSBwaXBlbGluZSBjaGFuZ2luZyBzdGF0ZSwgYW5kIHRoYXQgd2F5IGl0CgkgIHdpbGwgZG8gaXQgaW4gdGhlIHJpZ2h0IG9yZGVyIHRvby4KCjIwMDYtMDctMzEgMTQ6MjM6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYzogUHJvdGVjdCBfUEFEX0NBUFMgd2l0aCBPQkpFQ1RfTE9DSy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfcGFkX2dldF9maXhlZF9jYXBzX2Z1bmMpOgoJICBQcm90ZWN0IF9QQURfQ0FQUyB3aXRoIE9CSkVDVF9MT0NLLgoKMjAwNi0wNy0zMSAxNDoyMToxMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogVXNlIF9ERUJVR19PQkpFQ1Qgd2hlbiBpdCBtYWtlcyBzZW5zZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9jbGFzc19pbml0KSwgKGdzdF9wYWRfZGlzcG9zZSksCgkgIChnc3RfcGFkX2dldF9wcm9wZXJ0eSksIChnc3RfcGFkX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X3BhZF9hY3RpdmF0ZV9wdXNoKSwgKGdzdF9wYWRfc2V0X2Jsb2NrZWRfYXN5bmMpLAoJICAoZ3N0X3BhZF9zZXRfYWN0aXZhdGVfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9zZXRfYWN0aXZhdGVwdWxsX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X2FjdGl2YXRlcHVzaF9mdW5jdGlvbiksIChnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiksCgkgIChnc3RfcGFkX3NldF9nZXRyYW5nZV9mdW5jdGlvbiksCgkgIChnc3RfcGFkX3NldF9jaGVja2dldHJhbmdlX2Z1bmN0aW9uKSwgKGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKSwgKGdzdF9wYWRfc2V0X3F1ZXJ5X3R5cGVfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9zZXRfaW50ZXJuYWxfbGlua19mdW5jdGlvbiksIChnc3RfcGFkX3NldF9saW5rX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X3VubGlua19mdW5jdGlvbiksIChnc3RfcGFkX3NldF9nZXRjYXBzX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X2FjY2VwdGNhcHNfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9zZXRfZml4YXRlY2Fwc19mdW5jdGlvbiksIChnc3RfcGFkX3NldF9zZXRjYXBzX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X2J1ZmZlcmFsbG9jX2Z1bmN0aW9uKSwgKGdzdF9wYWRfbGlua19jaGVja19oaWVyYXJjaHkpLAoJICAoZ3N0X3BhZF9nZXRfY2Fwc191bmxvY2tlZCksIChnc3RfcGFkX2dldF9jYXBzKSwKCSAgKGdzdF9wYWRfcGVlcl9nZXRfY2FwcyksIChnc3RfcGFkX2FjY2VwdF9jYXBzKSwKCSAgKGdzdF9wYWRfcGVlcl9hY2NlcHRfY2FwcyksIChnc3RfcGFkX3NldF9jYXBzKSwKCSAgKGdzdF9wYWRfY29uZmlndXJlX3NpbmspLCAoZ3N0X3BhZF9jb25maWd1cmVfc3JjKSwKCSAgKGdzdF9wYWRfZ2V0X2FsbG93ZWRfY2FwcyksIChnc3RfcGFkX2dldF9uZWdvdGlhdGVkX2NhcHMpLAoJICAoZ3N0X3BhZF9idWZmZXJfYWxsb2NfdW5jaGVja2VkKSwgKGdzdF9wYWRfYWxsb2NfYnVmZmVyX2Z1bGwpLAoJICAoZ3N0X3BhZF9xdWVyeSksIChnc3RfcGFkX2xvYWRfYW5kX2xpbmspLCAoaGFuZGxlX3BhZF9ibG9jayksCgkgIChnc3RfcGFkX2NoYWluX3VuY2hlY2tlZCksIChnc3RfcGFkX3B1c2gpLCAoZ3N0X3BhZF9nZXRfcmFuZ2UpLAoJICAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgVXNlIF9ERUJVR19PQkpFQ1Qgd2hlbiBpdCBtYWtlcyBzZW5zZS4KCSAgUHJvdGVjdCBHU1RfUEFEX0NBUFMgd2l0aCB0aGUgT0JKRUNUX0xPQ0suCgkgIFNtYWxsIGNsZWFudXBzIGFuZCBjb2RlIHJlZmxvd3MuCgkgIEF2b2lkIGNhcHMgcmVmY291bnRpbmcgaW4gX2FjY2VwdF9jYXBzLgoJICBSZWZhY3RvciBhbGxvY19idWZmZXIgc28gdGhhdCB0aGUgY29kZSBwZXJmb3JtZWQgb24gdGhlIHBlZXIgaXMgaW4gYQoJICBzZXBhcmF0ZSBmdW5jdGlvbi4gQWxzbyBpZiB0aGUgcGFkIGRvZXMgbm90IGltcGxlbWVudCBhIGJ1ZmZlciBhbGxvYwoJICBmdW5jdGlvbiwgd2Ugc2hvdWxkIHN0aWxsIGNoZWNrIGlmIHRoZSBwYWQgaXMgZmx1c2hpbmcgYmVmb3JlIGZhbGxpbmcKCSAgYmFjayB0byB0aGUgZGVmYXVsdCBhbGxvY2F0b3IuCgoyMDA2LTA3LTMwIDIyOjIwOjQyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9wYXJzZS1sYXVuY2guYzogTWFrZSBhbGwgdXNlcyBvZiBpZGVudGl0eSBhbmQgZmFrZXNpbmsgaGF2ZSBzaWxlbnQ9dHJ1ZSB0byBhdm9pZCBzZXJpYWxpc2luZyBldi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIE1ha2UgYWxsIHVzZXMgb2YgaWRlbnRpdHkgYW5kIGZha2VzaW5rIGhhdmUgc2lsZW50PXRydWUgdG8gYXZvaWQKCSAgc2VyaWFsaXNpbmcgZXZlcnkgcGFzc2luZyBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgYnJlYWtpbmcgdGVzdHMKCSAgb24gRkM0IGZvciBzb21lIHVua25vd24gcmVhc29uLgoKMjAwNi0wNy0zMCAxODo1ODoyOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L3BhcnNlLzogUmV2ZXJ0ZWQgcHJldmlvdXMgcGF0Y2ggYXMgaXQgcmVxdWlyZWQgdG8gYnVtcCB0aGUgZmxleCBkZXBlbmRlbmN5IHRvIDIuNS4zMSwgd2hlcmUgZmM0LzUgc2VlbSB0byBzaGlwIG9uLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICAqIGdzdC9wYXJzZS9wYXJzZS5sOgoJICBSZXZlcnRlZCBwcmV2aW91cyBwYXRjaCBhcyBpdCByZXF1aXJlZCB0byBidW1wIHRoZSBmbGV4IGRlcGVuZGVuY3kgdG8KCSAgMi41LjMxLCB3aGVyZSBmYzQvNSBzZWVtIHRvIHNoaXAgb25seSB0aGUgYW5jaWVudCAyLjUuNGEgOigKCjIwMDYtMDctMzAgMTg6MzI6NDkgKzAwMDAgIE1hcmMtQW5kcmUgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QGdtYWlsLmNvbT4KCgkgIGdzdC9wYXJzZS86IHB1c2ggJiBwb3AgdGhlIHN0YXRlIG9mIHRoZSBsZXhlciBmb3IgcmVlbnRyYW50IHVzZSBjYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTWFyYy1BbmRyZSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAZ21haWwuY29tPgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICAqIGdzdC9wYXJzZS9wYXJzZS5sOgoJICBwdXNoICYgcG9wIHRoZSBzdGF0ZSBvZiB0aGUgbGV4ZXIgZm9yIHJlZW50cmFudCB1c2UgY2FzZQoJICBGaXhlcyAjMzQ5MTgwCgoyMDA2LTA3LTI5IDEzOjQ1OjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6IE5vdGUgaW4gdGhlIGRvY3MgdGhhdCB0aGUgOjpuZXdzZWdtZW50IHZmdW5jIGlzIG5vdCBhY3R1YWxseSB1c2VkIGJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBOb3RlIGluIHRoZSBkb2NzIHRoYXQgdGhlIDo6bmV3c2VnbWVudCB2ZnVuYyBpcyBub3QgYWN0dWFsbHkgdXNlZCBieQoJICBHc3RCYXNlU3JjLgoKMjAwNi0wNy0yOCAxNDowOToxMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogV2hlbiBmbHVzaGluZyBhIHBhZCwgYWxzbyBjbGVhciB0aGUgcXVldWVkIGJ1ZmZlciBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseSB1c2UgaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgIChnc3RfY29sbGVjdF9wYWRzX3NldF9mbHVzaGluZ191bmxvY2tlZCksIChnc3RfY29sbGVjdF9wYWRzX3BvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2NsZWFyKSwgKGdzdF9jb2xsZWN0X3BhZHNfZmx1c2gpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCksIChnc3RfY29sbGVjdF9wYWRzX2NoYWluKToKCSAgV2hlbiBmbHVzaGluZyBhIHBhZCwgYWxzbyBjbGVhciB0aGUgcXVldWVkIGJ1ZmZlciBzbyB0aGF0IHdlIGRvbid0CgkgIGFjY2lkZW50YWxseSB1c2UgaXQgd2hlbiB3ZSBzaG91bGRuJ3QuCgkgIEZpeCBsZWFrcyBieSBpbnJlZmZpbmcgaW5jb21taW5nIGJ1ZmZlci4KCSAgRmx1c2ggb3V0IHF1ZXVlZCBidWZmZXJzIGluIGNhc2Ugb2YgZXJyb3JzLgoJICBGaXhlcyAjMzQ3NDUyLgoKMjAwNi0wNy0yOCAxMDoxNzo1NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvcmFuZG9tL3Bob25vbi1nc3Q6IFJhbmRvbSBub3RlcyBhYm91dCBhIFBob25vbiBiYWNrZW5kLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9waG9ub24tZ3N0OgoJICBSYW5kb20gbm90ZXMgYWJvdXQgYSBQaG9ub24gYmFja2VuZC4KCjIwMDYtMDctMjcgMTQ6MzI6MDEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEV4dHJhIGRlYnVnIG91dHB1dAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKToKCSAgRXh0cmEgZGVidWcgb3V0cHV0CgkgICogdGVzdHMvY2hlY2svbGlicy9nZHAuYzogKGdzdF9kcF9zdWl0ZSk6CgkgIFRha2UgYSB3aGFjayBhdCBmaXhpbmcgdGhlIHBwYyBjb21waWxlIHVzaW5nIGEgZGlmZmVyZW50IGRlZmluZSB0bwoJICBkaXNhYmxlIHRoZSBicm9rZW4gdGVzdC4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIFJlbW92ZSBleGNlc3MgZ19wcmludCgpCgoyMDA2LTA3LTI3IDEzOjQ0OjIyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9wYXJzZS1sYXVuY2guYzogT29wcywgbWVhbnQgdG8gdW5jb21tZW50IHRoaXMgbGluZSB0b28gdG8gZGFtcGVuIHRoZSBub2lzZSBhIGJpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOiAoZXhwZWN0ZWRfZmFpbF9waXBlKToKCSAgT29wcywgbWVhbnQgdG8gdW5jb21tZW50IHRoaXMgbGluZSB0b28gdG8gZGFtcGVuIHRoZSBub2lzZSBhIGJpdC4KCjIwMDYtMDctMjcgMTM6MjY6MjcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgRml4IHNvbWUgb2YgdGhlIGxlYWtzIGV4cG9zZWQgYnkgZXh0ZW5kaW5nIHRoZSBwYXJzZS1sYXVuY2ggdGVzdHN1aXRlLCBhbmQgbW92ZSB0aGUgMyBJIGNhbid0IGZpZ3VyZSBvdXQgaW50byBhIHNlcGFyLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogZ3N0L3BhcnNlL3BhcnNlLmw6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3BhcnNlLWxhdW5jaC5jOiAoZXhwZWN0ZWRfZmFpbF9waXBlKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKHBhcnNlX3N1aXRlKToKCSAgRml4IHNvbWUgb2YgdGhlIGxlYWtzIGV4cG9zZWQgYnkgZXh0ZW5kaW5nIHRoZSBwYXJzZS1sYXVuY2ggdGVzdHN1aXRlLAoJICBhbmQgbW92ZSB0aGUgMyBJIGNhbid0IGZpZ3VyZSBvdXQgaW50byBhIHNlcGFyYXRlIHRlc3QgdGhhdCB3b24ndCBydW4KCSAgdGhlIHBpcGVsaW5lcyB1bmxlc3MgdGhlIGFwcHJvcHJpYXRlIGxpbmUgaXMgdW5jb21tZW50ZWQuCgoyMDA2LTA3LTI3IDEyOjM5OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IFJlcXVlc3RpbmcgMCBieXRlcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZmlsZSBzaG91bGQgcmVzdWx0IGluCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2NyZWF0ZV9yZWFkKToKCSAgUmVxdWVzdGluZyAwIGJ5dGVzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBmaWxlIHNob3VsZCByZXN1bHQgaW4KCSAgRkxPV19PSyBhbmQgYW4gZW1wdHkgYnVmZmVyLCBub3QgRkxPV19VTkVYUEVDVEVELiBUaGFuayB5b3UKCSAgdW5pdCB0ZXN0LgoKMjAwNi0wNy0yNyAxMTowMDoyMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEZpeCB1c2VsZXNzIGFzc2VydCwgYSB1aW50IGlzIGFsd2F5cyBwb3NpdGl2ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9zdGF0aWNfY2Fwc19nZXQpLCAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSk6CgkgIEZpeCB1c2VsZXNzIGFzc2VydCwgYSB1aW50IGlzIGFsd2F5cyBwb3NpdGl2ZS4KCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX250aF9maWVsZF9uYW1lKSwKCSAgKGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaCksIChnc3Rfc3RydWN0dXJlX21hcF9pbl9wbGFjZSk6CgkgIENoZWNrIGlucHV0IGFyZ3VtZW50cyBmb3IgcHVibGljIGZ1bmN0aW9ucyB0byBhdm9pZCBvYnZpb3VzIGNyYXNoZXMuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOiAoZ3N0X2Zha2Vfc2lua19yZW5kZXIpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuaDoKCSAgRG8gbGVzcyB1c2VsZXNzIHR5cGVjaGVja2luZy4KCjIwMDYtMDctMjcgMTA6NTQ6MjkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogRG8gbm90IHVzZSBtbWFwKCkgYnkgZGVmYXVsdCBzaW5jZSB0aGVyZSBhcmUgYSBudW1iZXIgb2YgZXJyb3IgY29uZGl0aW9ucyB0aGF0IHdlIHdvdWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgIERvIG5vdCB1c2UgbW1hcCgpIGJ5IGRlZmF1bHQgc2luY2UgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGVycm9yCgkgIGNvbmRpdGlvbnMgdGhhdCB3ZSB3b3VsZCBsaWtlIHRvIGhhbmRsZSBpbiBhIG5vbi1mYXRhbCB3YXkgdGhhdAoJICB3aWxsIHJlc3VsdCBpbiBhIFNJR0JVUyBpZiB3ZSB1c2UgbW1hcCgpLiBFeGFtcGxlczogZXh0ZXJuYWwKCSAgZGV2aWNlcyAoVVNCIGhhcmRkcml2ZSwgcG9ydGFibGUgbXVzaWMgcGxheWVyKSBiZWluZyB1bnBsdWdnZWQKCSAgd2hpbGUgaW4gdXNlOyBmaWxlIG9uIG1vdW50ZWQgQ0QvRFZEIHRoYXQgY2FuJ3QgYmUgcmVhZCBiZWNhdXNlCgkgIHRoZSBtZWRpdW0gaXMgcGFydGx5IGRhbWFnZWQuIEZpeGVzICMzNDg0NTUgYW5kICMzNDg0NzUuCgoyMDA2LTA3LTI2IDIyOjU5OjE5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RxdWVyeS5oOiBEZWxldGUgdW51c2VkIGFuZCBtaXNsZWFkaW5nIGRlZmluZSBvZiBHU1RfUVVFUllfVFlQRV9SQVRFX0RFTiAtIHJhdGVzIGFyZSBhIGdkb3VibGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIERlbGV0ZSB1bnVzZWQgYW5kIG1pc2xlYWRpbmcgZGVmaW5lIG9mIEdTVF9RVUVSWV9UWVBFX1JBVEVfREVOIC0KCSAgcmF0ZXMgYXJlIGEgZ2RvdWJsZQoKMjAwNi0wNy0yNiAyMDozMDo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmM6IE1vdmUgYmlnIGRvY3VtZW50YXRpb24gY29tbWVudCBpbnRvIGNsYXNzIHNlY3Rpb24gaGVhZGVyLCBzbyB0aGF0IGl0IGFwcGVhcnMgaW4gdGhlIEFQSSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgTW92ZSBiaWcgZG9jdW1lbnRhdGlvbiBjb21tZW50IGludG8gY2xhc3Mgc2VjdGlvbiBoZWFkZXIsIHNvIHRoYXQgaXQKCSAgYXBwZWFycyBpbiB0aGUgQVBJIGRvY3MuCgoyMDA2LTA3LTI2IDE3OjE4OjI1ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IE9vcHMuIENvbW1pdCB0aGUgZG9jcyBhZGRpdGlvbnMgdG9vIGZvciBuZXcgQVBJLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBPb3BzLiBDb21taXQgdGhlIGRvY3MgYWRkaXRpb25zIHRvbyBmb3IgbmV3IEFQSS4KCSAgQWxzbywgcmVtb3ZlIHRoZSBtZW50aW9uIG9mIHRoZSBub24tZXhpc3RlbnQgR1NUX1FVRVJZX1RZUEVfUkFURV9ERU4KCjIwMDYtMDctMjYgMTc6MDQ6NDUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS4qOiBBZGQgQVBJIGZvciBzZXR0aW5nIHZhbHVlcyBpbnRvIHN0cnVjdHVyZXMgd2l0aG91dCBwZXJmb3JtaW5nIGEgcXVhcmsgbG9va3VwLCBpZiB0aGUgYXBwcm9wcmlhdGUgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfaWRfc2V0KSwKCSAgKGdzdF9zdHJ1Y3R1cmVfaWRfc2V0X3ZhbGlzdCk6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5oOgoJICBBZGQgQVBJIGZvciBzZXR0aW5nIHZhbHVlcyBpbnRvIHN0cnVjdHVyZXMgd2l0aG91dCBwZXJmb3JtaW5nCgkgIGEgcXVhcmsgbG9va3VwLCBpZiB0aGUgYXBwcm9wcmlhdGUgcXVhcmsgaXMgYWxyZWFkeSBrbm93bi4KCSAgQVBJOiBnc3Rfc3RydWN0dXJlX2lkX3NldAoJICBBUEk6IGdzdF9zdHJ1Y3R1cmVfaWRfc2V0X3ZhbGlzdAoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogZ3N0L3BhcnNlL3BhcnNlLmw6CgkgIFJlbW92ZSBzb21lIGRlYWQgY29kZSBzaG93biBieSB0aGUgY292ZXJhZ2UgaW5mb3JtYXRpb24uCgkgIERvbid0IHRocm93IGEgY3JpdGljYWwgZ193YXJuaW5nIHdoZW4gZW5jb3VudGVyaW5nIGEgc3ludGF4IGVycm9yLAoJICBqdXN0IHdhcm4gYW5kIGxldCB0aGUgbm9ybWFsIGVycm9yIHBhdGggaGFuZGxlIGl0LgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgQnVtcCB0aGUgcmFuayBvZiBmaWxlc2luayB1cCB0byBQUklNQVJZIHNvIHRoYXQgaXQgaXMgcHJlZmVycmVkIG92ZXIKCSAgZ25vbWV2ZnNzaW5rIGZvciBmaWxlOi8vIHNpbmsgdXJpJ3MKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChleHBlY3RlZF9mYWlsX3BpcGUpLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAocnVuX2RlbGF5ZWRfdGVzdCksCgkgIChnc3RfcGFyc2VfdGVzdF9lbGVtZW50X2Jhc2VfaW5pdCksCgkgIChnc3RfcGFyc2VfdGVzdF9lbGVtZW50X2NsYXNzX2luaXQpLCAoZ3N0X3BhcnNlX3Rlc3RfZWxlbWVudF9pbml0KSwKCSAgKGdzdF9wYXJzZV90ZXN0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9yZWdpc3Rlcl9wYXJzZV9lbGVtZW50KSwgKHBhcnNlX3N1aXRlKToKCSAgQmVlZiB1cCB0aGUgdGVzdHMgZm9yIHBhcnNlIHN5bnRheCB0byBjaGVjayB0aGF0IG1vcmUgZXJyb3IgY2FzZXMKCSAgZmFpbCBhcyB0aGV5IGFyZSBzdXBwb3NlZCB0by4gSW5jcmVhc2VzIHRoZSB0ZXN0IGNvdmVyYWdlIGEgYml0LgoKMjAwNi0wNy0yNiAxMTo0MzoyMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsL2Jhc2ljcy1lbGVtZW50cy54bWw6IEZpeCBnc3RfZWxlbWVudF9saW5rKCkgZXhhbXBsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWVsZW1lbnRzLnhtbDoKCSAgRml4IGdzdF9lbGVtZW50X2xpbmsoKSBleGFtcGxlLgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBNZW50aW9uIGluIEFQSSBkb2NzIHRoYXQgb25lIHNob3VsZCB1c3VhbGx5IGdzdF9iaW5fYWRkKCkKCSAgZWxlbWVudHMgdG8gYSBiaW4gb3IgcGlwZWxpbmUgYmVmb3JlIGRvaW5nIHRoZSBsaW5raW5nLgoKMjAwNi0wNy0yNiAxMDo0NzoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGJhY2sgdG8gMzIgYml0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIDMyIGJpdAoKMjAwNi0wNy0yNiAxMDozOTo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogQXZvaWQgZnVuY3Rpb24gY2FsbCBmb3Iga25vd24gdHlwZXMgYnkga2VlcGluZyB0aGUgYnVmZmVyIGFuZCBzdWJidWZmZXIgR1R5cGUgZ2xvYmFsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX2dldF90eXBlKSwgKGdzdF9idWZmZXJfbmV3KSwKCSAgKGdzdF9zdWJidWZmZXJfZ2V0X3R5cGUpLCAoZ3N0X2J1ZmZlcl9jcmVhdGVfc3ViKToKCSAgQXZvaWQgZnVuY3Rpb24gY2FsbCBmb3Iga25vd24gdHlwZXMgYnkga2VlcGluZyB0aGUgYnVmZmVyIGFuZAoJICBzdWJidWZmZXIgR1R5cGUgZ2xvYmFsLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX2NyZWF0ZV9yZWFkKToKCSAgUmFuZG9tIHNpbGx5IG9wdGltaXNhdGlvbnMgaW4gcmVhZCgpIHBhdGguCgoyMDA2LTA3LTI2IDA2OjE4OjQ0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogSWYgdGhlIHRvcC1sZXZlbCBvZiB0aGUgcGFyc2UgaXMgYSBub3JtYWwgYmluLCBpdCBkb2Vzbid0IGRvIHRoZSByaWdodCBsb2dpYyB0byBydW4gYXMgYSB0b3AtbGV2ZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgSWYgdGhlIHRvcC1sZXZlbCBvZiB0aGUgcGFyc2UgaXMgYSBub3JtYWwgYmluLCBpdCBkb2Vzbid0IGRvIHRoZQoJICByaWdodCBsb2dpYyB0byBydW4gYXMgYSB0b3AtbGV2ZWwgZWxlbWVudCwgc28gcGxhY2UgaXQgaW5zaWRlIGEKCSAgcGlwZWxpbmUuCgoyMDA2LTA3LTI1IDE5OjM3OjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IFJlbW92ZSBzdXBlcmZsdW91cyBnX29iamVjdF9ub3RpZnkoKSBjYWxscywgR09iamVjdCBkb2VzIHRoYXQgZm9yIHVzIGF1dG9tYXRpY2FsbHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX3NldF9wcm9wZXJ0eSk6CgkgIFJlbW92ZSBzdXBlcmZsdW91cyBnX29iamVjdF9ub3RpZnkoKSBjYWxscywgR09iamVjdCBkb2VzCgkgIHRoYXQgZm9yIHVzIGF1dG9tYXRpY2FsbHkuCgoyMDA2LTA3LTI1IDE1OjA3OjU4ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgYWRkIGxhdGVzdCAuaCBhZGRpdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGxhdGVzdCAuaCBhZGRpdGlvbgoKMjAwNi0wNy0yNSAxMzowNjoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGluZm8uaDogTW92ZSB0aGUgV2luMzIgdmVyc2lvbiBmcm9tIGdzdC1wbHVnaW5zLWdvb2QvZ3N0L2F2aS9hdmlkZW11eC5jIHRvIGhlcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgIE1vdmUgdGhlIFdpbjMyIHZlcnNpb24gZnJvbSBnc3QtcGx1Z2lucy1nb29kL2dzdC9hdmkvYXZpZGVtdXguYyB0bwoJICBoZXJlLgoKMjAwNi0wNy0yNCAxNjozMzozMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0LmM6IEFsbG93IG1vcmUgdGhhbiBvbmUgR1NUX1RBR19JTUFHRSBwZXIgdGFnbGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzogKF9nc3RfdGFnX2luaXRpYWxpemUpOgoJICBBbGxvdyBtb3JlIHRoYW4gb25lIEdTVF9UQUdfSU1BR0UgcGVyIHRhZ2xpc3QuCgoyMDA2LTA3LTI0IDA3OjQwOjEzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmM6IHVwZGF0ZSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkgIHVwZGF0ZSBkb2NzCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2ZkX3NyY19jcmVhdGUpOgoJICBsb2cgcmVjdXJyaW5nIGV2ZW50cyBhdCBMT0cgbGV2ZWwKCSAgYWRkIG1vcmUgZGVidWcgZm9yIHdoZW4gdGhlIGZkIGdldHMgc2V0CgoyMDA2LTA3LTI0IDA3OjM3OjUyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGF1dG9nZW4uc2g6CgkqIGNvbW1vbjoKCSAgcmVtb3ZlIC0tZW5hYmxlLWRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSAtLWVuYWJsZS1kb2NzCgoyMDA2LTA3LTIzIDA5OjQxOjMwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBjb21tb246CgkgIENoYW5nZUxvZyBzdXJnZXJ5OiBhZGQgYnVnIHJlZmVyZW5jZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnk6IGFkZCBidWcgcmVmZXJlbmNlCgoyMDA2LTA3LTIxIDE4OjUyOjMwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGFyc2UuYzogQWxzbyByZW1vdmUgcmVlbnRyYW5jZSBjaGVja3MgaWYgZmxleCBpcyBNVCBzYXZlICgjMzQ4MTc5KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFyc2UuYzogKGdzdF9wYXJzZV9sYXVuY2gpOgoJICBBbHNvIHJlbW92ZSByZWVudHJhbmNlIGNoZWNrcyBpZiBmbGV4IGlzIE1UIHNhdmUgKCMzNDgxNzkpCgkgIEZpeCBteSBlbXB0eSBDaGFuZ2VMb2cgZW50cnkgYmVsb3cKCjIwMDYtMDctMjEgMTY6MDE6MzQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6IEF0dGVtcHQgdG8gcGFjaWZ5IGJ1aWxkYm90LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wNy0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBdHRlbXB0IHRvIHBhY2lmeSBidWlsZGJvdC4KCjIwMDYtMDctMjEgMTU6NDg6MDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L2NoZWNrL01ha2VmaWxlLmFtIChsaWJnc3RjaGVja19AR1NUX01BSk9STUlOT1JAaW5jbHVkZV9IRUFERVJTKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wNy0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbQoJICAobGliZ3N0Y2hlY2tfQEdTVF9NQUpPUk1JTk9SQGluY2x1ZGVfSEVBREVSUykKCSAgKGxpYmdzdGNoZWNrX0BHU1RfTUFKT1JNSU5PUkBfbGFfU09VUkNFUyk6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0YnVmZmVyc3RyYXcuaDoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RidWZmZXJzdHJhdy5jOiBBZGQgc29tZSBuZXcgaHlwZSB0ZXN0aW5nCgkgIGZ1bmN0aW9ucywgdGh1cyBwcm92aW5nIEkgYW0gc3RpbGwgYSBHU3RyZWFtZXIgaGF4b3IuIE9LIEkgd3JvdGUKCSAgdGhlbSBhIGxvbmcgdGltZSBhZ28sIGJ1dCBhbnl3YXlzLgoKMjAwNi0wNy0yMSAxMzoxMTozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoZ3N0X3BhcnNlX2xhdW5jaCk6CgoyMDA2LTA3LTIxIDEwOjQwOjI1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhcnNlLmM6IFByb3RlY3QgcmVjdXJzaXZlIGNhbGxzIHRvIF9wYXJzZSB3aXRoIGEgcmVjdXJzaXZlIG11dGV4IGFuZCBidXN5IGZsYWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYXJzZS5jOiAoZ3N0X3BhcnNlX2xhdW5jaCk6CgkgIFByb3RlY3QgcmVjdXJzaXZlIGNhbGxzIHRvIF9wYXJzZSB3aXRoIGEgcmVjdXJzaXZlIG11dGV4CgkgIGFuZCBidXN5IGZsYWcuCgoyMDA2LTA3LTIxIDEwOjM4OjUzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHBhZC5jOiBGaXggbGVhayBpbiB0ZXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEZpeCBsZWFrIGluIHRlc3QuCgoyMDA2LTA3LTIwIDIwOjAyOjU1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0cGFyc2UuYzogRG8gbm90IGhhbmdlIG9uIHJlY3Vyc2l2ZSB1YXNnZSBvZiBnc3RfcGFyc2VfbGF1bmNoKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhcnNlLmM6IChnc3RfcGFyc2VfbGF1bmNoKToKCSAgRG8gbm90IGhhbmdlIG9uIHJlY3Vyc2l2ZSB1YXNnZSBvZiBnc3RfcGFyc2VfbGF1bmNoKCkKCjIwMDYtMDctMjAgMTY6MTA6MTcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC5jOiBBZGQgc29tZSBtb3JlIGRvY3MsIGNvbW1lbnRzIGFuZCBGSVhNRSAwLjExcyBoZXJlIGFuZCB0aGVyZSBhbmQgIGFsc28gZml4IHNvbWUgdHlwb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgIEFkZCBzb21lIG1vcmUgZG9jcywgY29tbWVudHMgYW5kIEZJWE1FIDAuMTFzIGhlcmUgYW5kIHRoZXJlCgkgIGFuZCAgYWxzbyBmaXggc29tZSB0eXBvcy4KCjIwMDYtMDctMjAgMTA6NTA6MjAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0c2VnbWVudC5oOiBDb252ZXJ0IHRhYnMgdG8gc3BhY2VzIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50Lmg6CgkgIENvbnZlcnQgdGFicyB0byBzcGFjZXMgZm9yIGJldHRlciByZWFkYWJpbGl0eS4KCjIwMDYtMDctMjAgMTA6MjU6MjggKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICB0ZXN0cy9jaGVjay9saWJzL2dkcC5jOiB0aGUgdGVzdF9idWZmZXIgdGVzdCBmYWlscyBhdCBsaW5lIDE0MCBvbiBwcGM2NCBhdCB0aGUgZm9sbG93aW5nIGNoZWNrOiAiR1NUX0JVRkZFUl9JTl9DQVBTIGYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svbGlicy9nZHAuYzogKGdzdF9kcF9zdWl0ZSk6CgkgIHRoZSB0ZXN0X2J1ZmZlciB0ZXN0IGZhaWxzIGF0IGxpbmUgMTQwIG9uIHBwYzY0IGF0IHRoZSBmb2xsb3dpbmcKCSAgY2hlY2s6CgkgIGZhaWxfdW5sZXNzIChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChuZXdidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19JTl9DQVBTKSwKCSAgIkdTVF9CVUZGRVJfSU5fQ0FQUyBmbGFnIHNob3VsZCBoYXZlIGJlZW4gY29waWVkICEiKTsKCSAgU2VlIGJ1ZyAjMzQ4MTE0IGZvciBtb3JlIGRldGFpbHMuCgoyMDA2LTA3LTE5IDEyOjQwOjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgRml4IHR5cG9zICgjMzQ4MDAwKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtc2NoZWR1bGluZy54bWw6CgkgICogZ3N0L2dzdHBhZC5jOgoJICBGaXggdHlwb3MgKCMzNDgwMDApLgoKMjAwNi0wNy0xOCAyMDozODo0NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcHdnL2ludHJvLWJhc2ljcy54bWw6IEZpeCB3cm9uZyBsaW5rcyAoIzM0NzkyNykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2ludHJvLWJhc2ljcy54bWw6CgkgIEZpeCB3cm9uZyBsaW5rcyAoIzM0NzkyNykuCgoyMDA2LTA3LTE4IDE5OjAxOjI1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBtYWtlIC0tZGlzYWJsZS1pbmRleCB3b3JrICgjMzQyNTY0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGxvYWRfZmVhdHVyZSksCgkgIChnc3RfcmVnaXN0cnlfeG1sX3JlYWRfY2FjaGUpLCAoZ3N0X3JlZ2lzdHJ5X3htbF9zYXZlX2ZlYXR1cmUpOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgbWFrZSAtLWRpc2FibGUtaW5kZXggd29yayAoIzM0MjU2NCkKCjIwMDYtMDctMTggMDk6NDI6MzEgKzAwMDAgIFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgoKCSAgZ3N0LzogVGhlIGF0dGFjaGVkIHBhdGNoIGFkZHMgdHdvIG1pc3NpbmcgZGVmaW5lcyB0byBnc3R0cmFjZS5oIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gIEl0IGFsc28gY29ycmVjdHMgb25lIGV4aXN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2ogYXQgYXhpcyBkb3QgY29tPgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0dHJhY2UuaDoKCSAgVGhlIGF0dGFjaGVkIHBhdGNoIGFkZHMgdHdvIG1pc3NpbmcgZGVmaW5lcyB0byBnc3R0cmFjZS5oIHdoZW4gdHJhY2luZwoJICBpcyBkaXNhYmxlZC4gIEl0IGFsc28gY29ycmVjdHMgb25lIGV4aXN0aW5nIGRlZmluZS4KCSAgRml4ZXMgIzM0Nzc1Ni4KCjIwMDYtMDctMTcgMTc6NDA6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGQgdHdvIGZ1bmN0aW9ucyB0byBjaGVjayBhbmQgY2hhbmdlIHRoZSBTSUdTRUdWIGJlaGF2aW91ciB3aGVuIGxvYWRpbmcgcGx1Z2lucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0LmM6IChnc3Rfc2VndHJhcF9pc19lbmFibGVkKSwgKGdzdF9zZWd0cmFwX3NldF9lbmFibGVkKToKCSAgKiBnc3QvZ3N0Lmg6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiAoX2dzdF9wbHVnaW5fZmF1bHRfaGFuZGxlcl9yZXN0b3JlKToKCSAgQWRkIHR3byBmdW5jdGlvbnMgdG8gY2hlY2sgYW5kIGNoYW5nZSB0aGUgU0lHU0VHViBiZWhhdmlvdXIKCSAgd2hlbiBsb2FkaW5nIHBsdWdpbnMuCgkgIERvbid0IG1lc3Mgd2l0aCB0aGUgU0lHU0VHViBoYW5kbGVyIHdoZW4gd2Ugd2VyZSB0b2xkIG5vdCB0by4KCSAgRml4ZXMgIzM0Nzc5NC4KCSAgQVBJOiBnc3Rfc2VndHJhcF9pc19lbmFibGVkCgkgIEFQSTogZ3N0X3NlZ3RyYXBfc2V0X2VuYWJsZWQKCjIwMDYtMDctMTQgMTY6NDI6MjAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBSZXZlcnQgZml4IGZvciByZWdyZXNzaW9uIGluICMzNDc0MDggYWZ0ZXIgcmVsZWFzZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfdXBkYXRlX2xlbmd0aCk6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBSZXZlcnQgZml4IGZvciByZWdyZXNzaW9uIGluICMzNDc0MDggYWZ0ZXIgcmVsZWFzZS4KCjIwMDYtMDctMTQgMTY6MjA6MTggKzAwMDAgIEFudG9pbmUgVHJlbWJsYXkgPGhleGEwMEBnbWFpbC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYzogRnJlZSBpdGVyYXRvciB3aGVuIGRvbmUgKCMzNDczMTEpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEFudG9pbmUgVHJlbWJsYXkgPGhleGEwMCBhdCBnbWFpbCBjb20+CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF91bmxpbmspOgoJICBGcmVlIGl0ZXJhdG9yIHdoZW4gZG9uZSAoIzM0NzMxMSkuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdXRpbHNfc3VpdGUpOgoJICBBbmQgYWRkIGEgdGVzdCBjYXNlIGZvciB0aGlzLgoKMjAwNi0wNy0xNCAxNTo1Mjo1NSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IEJ1bXAgbmFubyBiYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIEJ1bXAgbmFubyBiYWNrIHRvIENWUwoKPT09IHJlbGVhc2UgMC4xMC45ID09PQoKMjAwNi0wNy0xNCAxNTo1MDoxOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IHJlbGVhc2luZyAwLjEwLjksICJPbiB0aGUgcm9hZCBhZ2FpbiIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDctMTMgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgcmVsZWFzaW5nIDAuMTAuOSwgIk9uIHRoZSByb2FkIGFnYWluIgoKMjAwNi0wNy0xMyAxOTo0NzoxNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDYtMDctMTMgMTU6NTE6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBSZXZlcnQgcHVsbC0wIGZpeCBmb3IgcmVsZWFzZS4gRGlzYWJsZSBjaGVjay4gRml4ZXMgIzM0NzQwOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfdXBkYXRlX2xlbmd0aCk6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBSZXZlcnQgcHVsbC0wIGZpeCBmb3IgcmVsZWFzZS4gRGlzYWJsZSBjaGVjay4gRml4ZXMgIzM0NzQwOC4KCjIwMDYtMDctMTMgMTQ6MDI6MTYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBGaXhlcyAjMzQ3MzM3OiBmYWlsdXJlIHRvIGRlc2VyaWFsaXplIGV2ZW50IHBhY2tldHMgd2l0aCBlbXB0eSBwYXlsb2FkIChvbmx5IGV2Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgKGdzdF9kcF9ldmVudF9mcm9tX3BhY2tldF8xXzApOgoJICBGaXhlcyAjMzQ3MzM3OiBmYWlsdXJlIHRvIGRlc2VyaWFsaXplIGV2ZW50IHBhY2tldHMgd2l0aAoJICBlbXB0eSBwYXlsb2FkIChvbmx5IGV2ZW50IHR5cGUpCgoyMDA2LTA3LTEzIDEzOjU3OjMzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9NYWtlZmlsZS5hbTogZG8gbm90IGluc3RhbGwgYSAuYyBmaWxlIGluIHRoZSBoZWFkZXIgZGlyZWN0b3J5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgZG8gbm90IGluc3RhbGwgYSAuYyBmaWxlIGluIHRoZSBoZWFkZXIgZGlyZWN0b3J5CgoyMDA2LTA3LTEzIDEwOjQ3OjAwICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IEdob3N0UGFkIG5vIGxvbmdlciBpbXBsaWNpdGVseSB1c2UgdGhlIHBhZHRlbXBsYXRlcyBvZiB0aGUgdGFyZ2V0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX3NldF90YXJnZXRfdW5sb2NrZWQpOgoJICBHaG9zdFBhZCBubyBsb25nZXIgaW1wbGljaXRlbHkgdXNlIHRoZSBwYWR0ZW1wbGF0ZXMgb2YgdGhlIHRhcmdldHMuCgkgIEZpeGVzICMzNDczODQKCjIwMDYtMDctMTEgMjI6NTU6NDAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHBvL3poX1RXLnBvOgoJICBVcGRhdGUgLnBvIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBVcGRhdGUgLnBvIGZpbGVzCgoyMDA2LTA3LTExIDIwOjQ0OjQ2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgTWVudGlvbiBidWcgIzM0MTAyOSBmaXhlZCBieSBiaWxib2VkJ3MgcHJldmlvdXMgY29tbWl0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBNZW50aW9uIGJ1ZyAjMzQxMDI5IGZpeGVkIGJ5IGJpbGJvZWQncyBwcmV2aW91cyBjb21taXQKCjIwMDYtMDctMTEgMjA6MTQ6MjAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgTWFrZSBHc3RWYWx1ZUFycmF5IGNvbXBhcmlzb24gYmUgb3JkZXIgZGVwZW5kZW50IGFzIGRlc2lnbmVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9jb21wYXJlX2xpc3QpLAoJICAoZ3N0X3ZhbHVlX2NvbXBhcmVfYXJyYXkpLCAoX2dzdF92YWx1ZV9pbml0aWFsaXplKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSBHc3RWYWx1ZUFycmF5IGNvbXBhcmlzb24gYmUgb3JkZXIgZGVwZW5kZW50IGFzIGRlc2lnbmVkLgoJICBBZGQgY2hlY2tzIGZvciB2YWx1ZSBsaXN0cyBhbmQgdmFsdWUgYXJyYXkgY29tcGFyaXNvbnMuCgkgIEZpeGVzICMzNDcyMjEKCjIwMDYtMDctMTEgMTY6MjA6MDkgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IChkZSlhY3RpdmF0ZSBzcmMgcGFkcyBiZWZvcmUgY2FsbGluZyBzdGF0ZV9jaGFuZ2Ugb24gdGhlIGNoaWxkcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYWN0aXZhdGVfcGFkcyksCgkgIChpdGVyYXRvcl9hY3RpdmF0ZV9mb2xkX3dpdGhfcmVzeW5jKSwgKGdzdF9iaW5fc3JjX3BhZHNfYWN0aXZhdGUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyk6CgkgIChkZSlhY3RpdmF0ZSBzcmMgcGFkcyBiZWZvcmUgY2FsbGluZyBzdGF0ZV9jaGFuZ2Ugb24gdGhlIGNoaWxkcy4KCSAgVGhpcyBpcyB0byBhdm9pZCB0aGUgY2FzZSB3aGVyZSBhIHNyYyBnaG9zdHBhZCBpcyBibG9ja2VkIChob2xkaW5nIHRoZQoJICBzdHJlYW0gbG9jayksIHdoaWNoIHdvdWxkIGJsb2NrIHRoZSBkZWFjdGl2YXRpb24gb2YgdGhlIGdob3N0cGFkJ3MKCSAgdGFyZ2V0IHBhZC4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9wcm94eV9wYWRfZG9fcXVlcnlfdHlwZSksCgkgIChnc3RfcHJveHlfcGFkX2RvX2V2ZW50KSwgKGdzdF9wcm94eV9wYWRfZG9fcXVlcnkpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19pbnRlcm5hbF9saW5rKSwgKGdzdF9wcm94eV9wYWRfZG9fYnVmZmVyYWxsb2MpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19jaGFpbiksIChnc3RfcHJveHlfcGFkX2RvX2dldHJhbmdlKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fY2hlY2tnZXRyYW5nZSksIChnc3RfcHJveHlfcGFkX2RvX2dldGNhcHMpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19hY2NlcHRjYXBzKSwgKGdzdF9wcm94eV9wYWRfZG9fZml4YXRlY2FwcyksCgkgIChnc3RfcHJveHlfcGFkX2RvX3NldGNhcHMpLCAoZ3N0X3Byb3h5X3BhZF9zZXRfdGFyZ2V0X3VubG9ja2VkKSwKCSAgKGdzdF9wcm94eV9wYWRfc2V0X3RhcmdldCksIChnc3RfcHJveHlfcGFkX2dldF9pbnRlcm5hbCksCgkgIChnc3RfcHJveHlfcGFkX2Rpc3Bvc2UpLCAoZ3N0X3Byb3h5X3BhZF9pbml0KSwKCSAgKGdzdF9naG9zdF9wYWRfcGFyZW50X3NldCksIChnc3RfZ2hvc3RfcGFkX3BhcmVudF91bnNldCksCgkgIChnc3RfZ2hvc3RfcGFkX2NsYXNzX2luaXQpLAoJICAoZ3N0X2dob3N0X3BhZF9pbnRlcm5hbF9kb19hY3RpdmF0ZV9wdXNoKSwKCSAgKGdzdF9naG9zdF9wYWRfaW50ZXJuYWxfZG9fYWN0aXZhdGVfcHVsbCksCgkgIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X2dob3N0X3BhZF9kb19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9naG9zdF9wYWRfZG9fbGluayksIChnc3RfZ2hvc3RfcGFkX2RvX3VubGluayksCgkgIChnc3RfZ2hvc3RfcGFkX2Rpc3Bvc2UpLCAoZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0KSwKCSAgKGdzdF9naG9zdF9wYWRfbmV3KSwgKGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCk6CgkgIEdob3N0UGFkcyBub3cgY3JlYXRlIHRoZWlyIGludGVybmFsIEdzdFByb3h5UGFkIGF0IGNyZWF0aW9uIChhbmQgbm90CgkgIHdoZW4gdGhleSdyZSBsaW5rZWQsIGFzIGl0IHdhcyBiZWluZyBkb25lIHByZXZpb3VzbHkpLgoJICBUaGUgaW50ZXJuYWwgYW5kIHRhcmdldCBwYWRzIGFyZSBsaW5rZWQgc3RyYWlnaHQgYXdheS4KCSAgVGhlIGRhdGEgd2lsbCBhbHNvIHRyYXZlbCB0aHJvdWdoIHRoZSBvdGhlciBwYWQgaW4gb3JkZXIgdG8gbWFrZQoJICBwYWQgYmxvY2tpbmcgYW5kIHByb2JlcyBub24taGFja2lzaCAodGhlIHByb2JlL2Jsb2NrIG5vdyByZWFsbHkgaGFwcGVucwoJICBvbiB0aGUgR2hvc3RQYWQgYW5kIG5vdCBvbiB0aGUgdGFyZ2V0KS4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9ibG9ja2VkX2FzeW5jKSwKCSAgKGdzdF9wYWRfbGlua19wcmVwYXJlKSwgKGdzdF9wYWRfcHVzaF9ldmVudCk6CgkgIFJlbW92ZSBwcmV2aW91cyBnaG9zdHBhZCBjcnVmdC4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9wYWRfYWRkX2RhdGFfcHJvYmUpLAoJICAoZ3N0X3BhZF9hZGRfZXZlbnRfcHJvYmUpLCAoZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlKSwKCSAgKGdzdF9wYWRfcmVtb3ZlX2RhdGFfcHJvYmUpLCAoZ3N0X3BhZF9yZW1vdmVfZXZlbnRfcHJvYmUpLAoJICAoZ3N0X3BhZF9yZW1vdmVfYnVmZmVyX3Byb2JlKToKCSAgUmVtb3ZlIHByZXZpb3VzIGdob3N0IHBhZCBjcnVmdC4KCSAgQWRkZWQgbW9yZSBkZXRhaWxlZCBkZWJ1ZyBzdGF0ZW1lbnRzLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggdGhlIHRlc3RzdWl0ZSBmb3IgcmVmY291bnRpbmcgY2hhbmdlcy4KCSAgVGhlIGNvbW1lbnRzIGFib3V0IHdobyBoYXMgcmVmZXJlbmNlcyB3ZXJlIGNvcnJlY3QsIGJ1dCB0aGUgcmVmY291bnQKCSAgYmVpbmcgY2hlY2tlZCB3YXNuJ3QgdGhlIHNhbWUgKCE/ISkuCgoyMDA2LTA3LTEwIDE5OjM1OjMyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBNb3JlIGRvY3MgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYWRkIGRvY3MgdG8gZ3RrLWRvYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgIE1vcmUgZG9jcyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhZGQgZG9jcyB0byBndGstZG9jLgoKMjAwNi0wNy0xMCAxODoyNzo0MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgRml4IGJ1aWxkIHdoZW4gZGlzYWJsaW5nIHRyYWNpbmcgKGZpeGVzICMzNDQwMTYpLiBBbHNvIHN0YXJ0IHRvIGRvY3VtZW50IHRoZSBkZWZpbmVzIHRoYXQgZGlzYWJsZSB0aGUgc3ViLXN5c3RlbXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBGaXggYnVpbGQgd2hlbiBkaXNhYmxpbmcgdHJhY2luZyAoZml4ZXMgIzM0NDAxNikuIEFsc28gc3RhcnQgdG8gZG9jdW1lbnQKCSAgdGhlIGRlZmluZXMgdGhhdCBkaXNhYmxlIHRoZSBzdWItc3lzdGVtcy4KCjIwMDYtMDctMTAgMDk6NDI6MjAgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0LmM6IGxldCdzIG1ha2UgdmFsZ3JpbmQgaGFwcHkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnlfZm9ya2luZyk6CgkgIGxldCdzIG1ha2UgdmFsZ3JpbmQgaGFwcHkuLi4KCjIwMDYtMDctMDkgMTY6NTY6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBCZXR0ZXIgcGFkIGFjdGl2YXRpb24gY29kZTogUmVzZXQgdGhlIGNvbGxlY3QgdmFsdWUgdG9vIG9uIHJlc3luYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGFjdGl2YXRlX3BhZHMpLAoJICAoaXRlcmF0b3JfYWN0aXZhdGVfZm9sZF93aXRoX3Jlc3luYyksIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKToKCSAgQmV0dGVyIHBhZCBhY3RpdmF0aW9uIGNvZGU6IFJlc2V0IHRoZSBjb2xsZWN0IHZhbHVlIHRvbyBvbiByZXN5bmMuCgkgIEFkZCBzb21lIGNvbW1lbnRzLgoKMjAwNi0wNy0wOSAxMzoyNjowNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogVXNlIHNvbWUgbW9yZSBtYWNyb3Mgd2hlcmUgaXQgbWFrZXMgc2Vuc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfaW5pdCksIChnc3RfcGFkX2FjdGl2YXRlX3B1bGwpLAoJICAoZ3N0X3BhZF9hY3RpdmF0ZV9wdXNoKToKCSAgVXNlIHNvbWUgbW9yZSBtYWNyb3Mgd2hlcmUgaXQgbWFrZXMgc2Vuc2UuCgkgIEFsbG93IHBhZCBtb2RlIHN3aXRjaGluZyBpbnN0ZWFkIG9mIGFzc2VydGluZy4gV2hlbiBhIHBhZAoJICBpcyBhY3RpdmF0ZWQgaW4gb25lIG1vZGUgYW5kIHdlIGFjdGl2YXRlIGl0IGluIGFub3RoZXIsCgkgIGRlYWN0aXZhdGUgaXQgZmlyc3QgYmVmb3JlIGFjdGl2YXRpbmcgaXQgaW4gYSBkaWZmZXJlbnQgbW9kZS4KCSAgRml4ZXMgIzMyOTE5OC4KCjIwMDYtMDctMDggMTM6MjI6MzIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYyAobWFpbik6IEhhbmRsZSBlcnIgPT0gTlVMTC4gZ3N0L2dzdC5jIChpbml0X3Bvc3QsIGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5KSAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0ci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wNy0wOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0b29scy9nc3QtbGF1bmNoLmMgKG1haW4pOiBIYW5kbGUgZXJyID09IE5VTEwuCgkgICogZ3N0L2dzdC5jIChpbml0X3Bvc3QsIGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5KQoJICAoZW5zdXJlX2N1cnJlbnRfcmVnaXN0cnlfZm9ya2luZykKCSAgKGVuc3VyZV9jdXJyZW50X3JlZ2lzdHJ5X25vbmZvcmtpbmcpOiBSZWR1Y2UgI2lmZGVmIHJhdG5lc3QgYnkKCSAgZmFjdG9yaW5nIG91dCB0aGUgcmVnaXN0cnkgc2Nhbm5pbmcgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMuIERvbid0CgkgIGZvcmsgZm9yIHRoZSByZXNjYW4gaXMgR1NUX1JFR0lTVFJZX0ZPUks9bm87IHVzZWZ1bCBpbiBkZWJ1Z2dpbmcuCgkgIEJldHRlciBlbnZpcm9ubWVudCB2YXIgbmFtZS9pbnRlcmZhY2Ugc3VnZ2VzdGlvbnMgYWNjZXB0ZWQuCgoyMDA2LTA3LTA3IDE3OjE2OjI2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdG9iamVjdC5jOiBSYW5kb20gbWljcm8tb3B0aW1pc2F0aW9uOiBkb24ndCB1c2UgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5ncyBhcyBrZXlzIGFuZCB0aGUgdXN1YWwgc3RyZHVwL3N0cmNtcCBpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3Rfc2V0X25hbWVfZGVmYXVsdCksCgkgIChnc3Rfb2JqZWN0X3NldF9uYW1lKToKCSAgUmFuZG9tIG1pY3JvLW9wdGltaXNhdGlvbjogZG9uJ3QgdXNlIGEgaGFzaCB0YWJsZQoJICB3aXRoIHN0cmluZ3MgYXMga2V5cyBhbmQgdGhlIHVzdWFsIHN0cmR1cC9zdHJjbXAKCSAgaW52b2x2ZWQsIGJ1dCByYXRoZXIganVzdCB1c2UgdGhlIEdRdWFyayBvZiB0aGUKCSAgdHlwZSBuYW1lIGFzIGtleSwgc2luY2UgaXQgbmVlZHMgdG8gYmUgbG9va2VkIHVwCgkgIGFueXdheSB0byBnZXQgdGhlIHR5cGUgbmFtZSBzdHJpbmcuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggdmFyaW91cyBsZWFrcy4KCjIwMDYtMDctMDcgMTU6NDI6MDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0YmluLmM6IENhbid0IHVzZSBHUE9JTlRFUl9UT19JTlQgYW5kIEdJTlRfVE9fUE9JTlRFUiB3aXRoIEdUeXBlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoY29tcGFyZV9pbnRlcmZhY2UpLCAoZ3N0X2Jpbl9nZXRfYnlfaW50ZXJmYWNlKSwKCSAgKGdzdF9iaW5faXRlcmF0ZV9hbGxfYnlfaW50ZXJmYWNlKToKCSAgQ2FuJ3QgdXNlIEdQT0lOVEVSX1RPX0lOVCBhbmQgR0lOVF9UT19QT0lOVEVSIHdpdGggR1R5cGVzLgoJICBHVHlwZXMgYXJlIGd1bG9uZ3MgYW5kIHRodXMgdGhlIHRvcCA0IGJ5dGVzIG1pZ2h0IGJlIGN1dAoJICBvZmYgb24gc29tZSBwbGF0Zm9ybXMgd2hlbiBkb2luZyBHUE9JTlRFUl9UT19JTlQsIGxlYWRpbmcKCSAgdG8gaW52YWxpZCBHVHlwZXMgYW5kIGJhZCB0aGluZ3MgaGFwcGVuaW5nLgoJICBBbHNvIGFkZCBhIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgdHlwZSBwYXNzZWQgaW4gaXMgcmVhbGx5CgkgIGFuIGludGVyZmFjZSB0eXBlLgoKMjAwNi0wNy0wNyAwOTo0NzoxOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIC5jdnNpZ25vcmU6IElnbm9yZSBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiAuY3ZzaWdub3JlOgoJICBJZ25vcmUgbW9yZS4KCjIwMDYtMDctMDcgMDk6MDk6MTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBNYWtlIGdzdC1lbGVtZW50LWNoZWNrLSRWRVJTSU9OLm00IGNhbGwgZ3N0LWluc3BlY3QtJFZFUlNJT04gaW5zdGVhZCBvZiB0aGUgdW52ZXJzaW9uZWQgZ3N0LWluc3BlY3QgKCMzMjQxNzYsICMxNjg2NTkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBNYWtlZmlsZS5hbToKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZ3N0LWVsZW1lbnQtY2hlY2subTQ6CgkgICogZ3N0LWVsZW1lbnQtY2hlY2subTQuaW46CgkgIE1ha2UgZ3N0LWVsZW1lbnQtY2hlY2stJFZFUlNJT04ubTQgY2FsbCBnc3QtaW5zcGVjdC0kVkVSU0lPTgoJICBpbnN0ZWFkIG9mIHRoZSB1bnZlcnNpb25lZCBnc3QtaW5zcGVjdCAoIzMyNDE3NiwgIzE2ODY1OSkuCgoyMDA2LTA3LTA2IDE2OjE3OjIwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdG1lc3NhZ2UuaDogVXNlIGEgdmFsaWQgaW50IGZvciB0aGUgX01FU1NBR0VfQU5ZIGVudW0gdmFsdWUgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIFVzZSBhIHZhbGlkIGludCBmb3IgdGhlIF9NRVNTQUdFX0FOWSBlbnVtIHZhbHVlIHRvIGF2b2lkIGNvbXBpbGVyCgkgIHdhcm5pbmdzLgoKMjAwNi0wNy0wNiAxNTo0NjoyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBVcGRhdGUgZG9jcy4gYmxvY2tzaXplID09IDAgbm93IG1lYW5zIHRoZSBkZWZhdWx0IGJsb2Nrc2l6ZSB3aGVuIHdvcmtpbmcgaW4gcHVzaCBiYXNlZCBtb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY193YWl0KSwgKGdzdF9iYXNlX3NyY191cGRhdGVfbGVuZ3RoKSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfY2hlY2tfZ2V0X3JhbmdlKSwKCSAgKGdzdF9iYXNlX3NyY19jaGVja19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX3BhZF9jaGVja19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLCAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KSwKCSAgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdWxsKToKCSAgVXBkYXRlIGRvY3MuCgkgIGJsb2Nrc2l6ZSA9PSAwIG5vdyBtZWFucyB0aGUgZGVmYXVsdCBibG9ja3NpemUgd2hlbiB3b3JraW5nIGluIHB1c2gKCSAgYmFzZWQgbW9kZS4KCSAgUmVtb3ZlIHNvbWUgcG9pbnRsZXNzIGFzc2VydHMgaW4gX3dhaXQgZnVuY3Rpb24uCgkgIEZpeCBvZmZzZXQvbGVuZ3RoIGNhbGN1bGF0aW9ucyBhbmQgRU9TIGhhbmRsaW5nLiBXZSBjYW4gbm93IHB1bGwgMAoJICBieXRlcyBhcyB3ZWxsLCB3aGljaCBpcyBhbGxvd2VkLgoJICB1c2UgX2NoZWNrX2dldF9yYW5nZSgpIHRvIGRlY2lkZSBpZiB3ZSBjYW4gb3BlcmF0ZSBpbiBfcHVsbCBiYXNlZAoJICBtb2RlLgoJICBGaXggcmVmY291bnRpbmcgbGVhayB3aGVuIGNoZWNrX2dldF9yYW5nZSBmdW5jdGlvbiB3YXMgbm90CgkgIGltcGxlbWVudGVkLgoJICBBUEkgR3N0QmFzZVNyYzo6YmxvY2tzaXplIHJhbmdlIGNhbiBiZSAwIHRvbyBub3cgKGRlZmF1bHQpCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZmlsZXNyY19zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrIHRvIHRlc3QgX2dldF9yYW5nZSgpIGJlaGF2aW91ci4KCjIwMDYtMDctMDYgMTU6MjE6NDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLio6IExvdHMgb2YgY29tbWVudHMgYW5kIGRvY3MgYWRkZWQgdG8gdGhlIHBhZCBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfY2hhaW5fdW5jaGVja2VkKSwgKGdzdF9wYWRfY2hhaW4pLAoJICAoZ3N0X3BhZF9wdXNoKSwgKGdzdF9wYWRfY2hlY2tfcHVsbF9yYW5nZSksIChnc3RfcGFkX2dldF9yYW5nZSksCgkgIChnc3RfcGFkX3B1bGxfcmFuZ2UpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgTG90cyBvZiBjb21tZW50cyBhbmQgZG9jcyBhZGRlZCB0byB0aGUgcGFkIGZ1bmN0aW9ucy4KCSAgRmxlc2ggb3V0IHRoZSBleHBlY3RlZCBiZWhhdmlvdXIgb2YgdGhlIGdldF9yYW5nZSgpIGZ1bmN0aW9ucy4KCjIwMDYtMDctMDYgMDk6MjE6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBSZW1vdmUgY29tbWEgYXQgZW5kIG9mIGVudW1lcmF0b3IgbGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5oOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RpdGVyYXRvci5oOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgICogZ3N0L2dzdHRhc2suaDoKCSAgUmVtb3ZlIGNvbW1hIGF0IGVuZCBvZiBlbnVtZXJhdG9yIGxpc3QuCgoyMDA2LTA3LTA1IDE5OjU2OjA4ICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi9jb21tb24vOiBBZGQgbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RkYXRhcHJvdG9jb2wuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJzZ3RyZWFtZXIuZGVmOgoJICBBZGQgbmV3IGV4cG9ydGVkIGZ1bmN0aW9ucy4KCjIwMDYtMDctMDUgMTg6MjA6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzogQWRkIHNvbWUgbW9yZSBkb2NzIGhlcmUgYW5kIHRoZXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzogKGdzdF9wdXNoX3NyY19jaGVja19nZXRfcmFuZ2UpOgoJICBBZGQgc29tZSBtb3JlIGRvY3MgaGVyZSBhbmQgdGhlcmUuCgoyMDA2LTA3LTA1IDE4OjE4OjQ3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBXaGVuIG9wZXJhdGluZyBpbiBwdWxsIG1vZGUgdXBkYXRlIHRoZSBvZmZzZXQgc28gdGhhdCB3ZSByZWFkIHNlcXVlbnRpYWxseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2xvb3ApLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBXaGVuIG9wZXJhdGluZyBpbiBwdWxsIG1vZGUgdXBkYXRlIHRoZSBvZmZzZXQgc28gdGhhdCB3ZQoJICByZWFkIHNlcXVlbnRpYWxseS4KCjIwMDYtMDctMDUgMTg6MTc6MDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogQXZvaWQgc3RyZHVwLiAod2lsbCBoYXBwZW4gaW4gbGlieG1sLCBidXQgaGV5ISkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChyZWFkX3N0cmluZyk6CgkgIEF2b2lkIHN0cmR1cC4gKHdpbGwgaGFwcGVuIGluIGxpYnhtbCwgYnV0IGhleSEpCgkgICogZ3N0L2dzdHVyaS5jOgoJICBBZGQgc29tZSBtb3JlIGRvY3MuCgoyMDA2LTA3LTA1IDE3OjA5OjE4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgTm8gcG9pbnQgaW4gY2hlY2tpbmcgaWYgdGhlIHNpemUgb2YgdGhlIHN1YmJ1ZmZlciA+IDAsIHRoZSBjb2RlIGhhbmRsZXMgaXQgY29ycmVjbHR5IGFzIGRlbW9uc3RyYXRlZCBieSB1bml0IHRlc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKF9nc3RfYnVmZmVyX2NvcHkpLCAoZ3N0X2J1ZmZlcl9jcmVhdGVfc3ViKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfYnVmZmVyX3N1aXRlKToKCSAgTm8gcG9pbnQgaW4gY2hlY2tpbmcgaWYgdGhlIHNpemUgb2YgdGhlIHN1YmJ1ZmZlciA+IDAsIHRoZQoJICBjb2RlIGhhbmRsZXMgaXQgY29ycmVjbHR5IGFzIGRlbW9uc3RyYXRlZCBieSB1bml0IHRlc3QuCgkgIEFsc28gYWRkIGEgdW5pdCB0ZXN0IGZvciB0aGUgemVybyBzaXplZCBfbmV3X2FuZF9hbGxvYyBhbmQKCSAgX2NvcHkuIEZpeGVzICMzNDY2NjMuCgoyMDA2LTA3LTA1IDA4OjE2OjEyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IE1ha2Ugc3VyZSB0aGUgYnVmZmVyIHdlIHBhc3MgdG8gdHJhbnNmb3JtX2lwIGhhcyBhIHJlZmNvdW50IG9mIDEgYW5kIHRodXMgaXMgd3JpdGFiLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZmZlciksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgTWFrZSBzdXJlIHRoZSBidWZmZXIgd2UgcGFzcyB0byB0cmFuc2Zvcm1faXAgaGFzIGEgcmVmY291bnQgb2YKCSAgMSBhbmQgdGh1cyBpcyB3cml0YWJsZS4gRml4ZXMgIzM0MzE5NgoKMjAwNi0wNy0wNCAwOTowMTo1MSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuKjogQWRkICJzZXF1ZW50aWFsIiBwcm9wZXJ0eSwgb2ZmIGJ5IGRlZmF1bHQsIHRvIHVzZSBtYWR2aXNlIGFuZCBoaW50IHRvIHRoZSBrZXJuZWwgdGhhdCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmlsZV9zcmNfaW5pdCksIChnc3RfZmlsZV9zcmNfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9maWxlX3NyY19nZXRfcHJvcGVydHkpLCAoZ3N0X2ZpbGVfc3JjX21hcF9yZWdpb24pOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5oOgoJICBBZGQgInNlcXVlbnRpYWwiIHByb3BlcnR5LCBvZmYgYnkgZGVmYXVsdCwgdG8gdXNlIG1hZHZpc2UgYW5kIGhpbnQKCSAgdG8gdGhlIGtlcm5lbCB0aGF0IHNlcXVlbnRpYWwgYWNjZXNzIGlzIGRlc2lyZWQuCgkgIFRvdWNoIGFsbCByZXRyaWV2ZWQgcGFnZXMgYnkgZGVmYXVsdCB0byBlbnN1cmUgdGhleSBhcmUgcHVsbGVkCgkgIGludG8gbWVtb3J5LiAoQ2xvc2VzICMzNDU3MjApCgoyMDA2LTA3LTAzIDE3OjQ0OjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vOiBTbWFsbCBkb2NzIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZHluYW1pYy50eHQ6CgkgIFNtYWxsIGRvY3MgdXBkYXRlcy4KCjIwMDYtMDctMDMgMTY6NTc6NTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBVc2UgR1NsaWNlIHdoZW4gdGhlIGdsaWIgd2UgYnVpbGQgYWdhaW5zdCBpcyA+PSAyLjEwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19uZXdfZW1wdHkpLCAoX2dzdF9jYXBzX2ZyZWUpLAoJICAoZ3N0X2NhcHNfdW5yZWYpLCAoZ3N0X3N0YXRpY19jYXBzX2dldCksCgkgIChnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlKToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19lbnRyeV9uZXcpLCAoX2dzdF9jbG9ja19pZF9mcmVlKToKCSAgVXNlIEdTbGljZSB3aGVuIHRoZSBnbGliIHdlIGJ1aWxkIGFnYWluc3QgaXMgPj0gMi4xMAoKMjAwNi0wNy0wMyAxNjo0NjowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IFNtYWxsIGNsZWFudXAgaW4gcGFkIGFjdGl2YXRpb24gY29kZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3BhZHNfYWN0aXZhdGUpOgoJICBTbWFsbCBjbGVhbnVwIGluIHBhZCBhY3RpdmF0aW9uIGNvZGUuCgoyMDA2LTA3LTAzIDE0OjE0OjQ4ICswMDAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkgIFRoZSBhdHRhY2hlZCBwYXRjaCB3aWxsIG1ha2UgdGhlIGluY2x1c2lvbiBvZiBnZXR0ZXh0LmggdW5jb25kaXRpb25hbCBpbiBnc3QvZ3N0LWkxOG4tYXBwLmggYW5kIGdzdC9nc3QtaTE4bi1saWIuaCwgYS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqIGF0IGF4aXMgZG90IGNvbT4KCSAgKiBnc3QvZ3N0LWkxOG4tYXBwLmg6CgkgICogZ3N0L2dzdC1pMThuLWxpYi5oOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9zaWduYWxfaW5mbyk6CgkgIFRoZSBhdHRhY2hlZCBwYXRjaCB3aWxsIG1ha2UgdGhlIGluY2x1c2lvbiBvZiBnZXR0ZXh0LmggdW5jb25kaXRpb25hbCBpbgoJICBnc3QvZ3N0LWkxOG4tYXBwLmggYW5kIGdzdC9nc3QtaTE4bi1saWIuaCwgYW5kIGl0IHdpbGwgcmVtb3ZlIHRoZSBpbmNsdXNpb24gb2YKCSAgbGliaW50bC5oIGluIHRvb2xzL2dzdC1pbnNwZWN0LmMuCgkgIFRoaXMgYWxsb3dzIHVzZSBvZiAtLWRpc2FibGUtbmxzIGFnYWluIGFuZCBmaXhlcyAjMzQ0NjQyLgoKMjAwNi0wNy0wMyAxMToxMDo0MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgIGZpeCBsZWFrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggbGVhawoKMjAwNi0wNy0wMyAxMDozMDo0OSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogSW1wbGVtZW50IHBhZCBibG9ja2luZyBvbiBldmVudHMgYWNjb3JkaW5nIHRvIHBhcnQtYmxvY2sudHh0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChoYW5kbGVfcGFkX2Jsb2NrKSwgKGdzdF9wYWRfcHVzaF9ldmVudCk6CgkgIEltcGxlbWVudCBwYWQgYmxvY2tpbmcgb24gZXZlbnRzIGFjY29yZGluZyB0byBwYXJ0LWJsb2NrLnR4dC4KCSAgTW9yZSBjb21tZW50cyBvbiBiZWhhdmlvdXIuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6ICh0ZXN0X2V2ZW50KToKCSAgU2VuZCBldmVudCB0byBwZWVyIHBhZCBvZiBibG9ja2VkIHBhZCAoZWxzZSBpdCB3aWxsIGJsb2NrKS4KCjIwMDYtMDctMDIgMjM6MjI6MzEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogaWYgd2UgZ2V0IHRoZSB3cm9uZyBtZXNzYWdlLCBnaXZlIHVzIHRoZSB0eXBlcyBhcyBzdHJpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19tZXNzYWdlX2Vycm9yKSwKCSAgKGdzdF9jaGVja19ydW5fc3VpdGUpOgoJICBpZiB3ZSBnZXQgdGhlIHdyb25nIG1lc3NhZ2UsIGdpdmUgdXMgdGhlIHR5cGVzIGFzIHN0cmluZwoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVfc3JjX3N0YXJ0KToKCSAgRml4IGEgdHJhbnNsYXRhYmxlCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmlsZXNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBhZGQgYSB0ZXN0IGZvciB0cnlpbmcgdG8gb3BlbiBhIG5vbi1leGlzdGluZyBmaWxlCgoyMDA2LTA3LTAyIDIyOjQ0OjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIGFkZCBtYWNyb3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtYWNyb3MKCjIwMDYtMDctMDIgMjI6Mjg6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIHJlbW92ZSBkb3VibGUgdmFyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZG91YmxlIHZhcgoKMjAwNi0wNy0wMiAyMjoyNzozMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICBjbGVhbiBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjbGVhbiBtb3JlCgoyMDA2LTA3LTAyIDIyOjIwOjIwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0Ly5naXRpZ25vcmU6CgkqIGRvY3MvbGlicy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9iZW5jaG1hcmtzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2dlbmVyaWMvLmdpdGlnbm9yZToKCSogdGVzdHMvY2hlY2svZ3N0Ly5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2xpYnMvLmdpdGlnbm9yZToKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvLmdpdGlnbm9yZToKCSogdGVzdHMvZXhhbXBsZXMvaGVsbG93b3JsZC8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9leGFtcGxlcy9sYXVuY2gvLmdpdGlnbm9yZToKCSogdGVzdHMvZXhhbXBsZXMvbWV0YWRhdGEvLmdpdGlnbm9yZToKCSogdGVzdHMvZXhhbXBsZXMvcXVldWUvLmdpdGlnbm9yZToKCSogdGVzdHMvZXhhbXBsZXMvdHlwZWZpbmQvLmdpdGlnbm9yZToKCSogdGVzdHMvZXhhbXBsZXMveG1sLy5naXRpZ25vcmU6CgkgIG1vYXAgaWdub3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb2FwIGlnbm9yZQoKMjAwNi0wNy0wMiAyMjoxNzozMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6IGFkZCBhIHRlc3QgZm9yIGFkZGluZyBzZWxmCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9iaW5fc3VpdGUpOgoJICBhZGQgYSB0ZXN0IGZvciBhZGRpbmcgc2VsZgoKMjAwNi0wNy0wMiAyMjowNTo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5oOiBhZGQgc29tZSBhc3NlcnRfIGFzIGFsaWFzIGZvciBmYWlsX3VubGVzc18qCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBzb21lIGFzc2VydF8gYXMgYWxpYXMgZm9yIGZhaWxfdW5sZXNzXyoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0LmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3Rfc3VpdGUpOgoJICBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlCgoyMDA2LTA3LTAyIDIxOjU0OjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIE1ha2VmaWxlLmFtOiBpbmNsdWRlIGxjb3YubWFrIGZvciBsY292IGNvdmVyYWdlIGdlbmVyYXRpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgIGluY2x1ZGUgbGNvdi5tYWsgZm9yIGxjb3YgY292ZXJhZ2UgZ2VuZXJhdGlvbgoJICAqIHRvb2xzL01ha2VmaWxlLmFtOgoJICBhZGQgdG8gQ0xFQU5GSUxFUwoKMjAwNi0wNy0wMiAyMTo1Mjo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGdzdC9nc3RldmVudC5oOgoJKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICB3aGl0ZXNwYWNlL2RvYyBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgd2hpdGVzcGFjZS9kb2MgZml4ZXMKCjIwMDYtMDctMDIgMTY6Mjc6MTQgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICB0ZXN0cy9jaGVjay9lbGVtZW50cy8uY3ZzaWdub3JlOiBtb2FwaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5jdnNpZ25vcmU6CgkgIG1vYXBpbmcKCjIwMDYtMDctMDIgMTQ6Mzk6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiBkb24ndCBzZXQgQ0ZMQUdTIGFuZCBmcmllbmRzIGZvciBnY292LCBkb25lIGZyb20gR1NUX0dDT1Ygbm93CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgZG9uJ3Qgc2V0IENGTEFHUyBhbmQgZnJpZW5kcyBmb3IgZ2NvdiwgZG9uZSBmcm9tIEdTVF9HQ09WIG5vdwoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBjbGVhbiB1cCBnY292IGZpbGVzCgoyMDA2LTA3LTAyIDE0OjM3OjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RjYXBzLmM6IHJlbW92ZSBnc3RfY2Fwc19zaW1wbGlmeTsgaXQgd2FzIG5vdCBkZWNsYXJlZCBhbmQgbm90IHVzZWQgYW5kIGRlcHJlY2F0ZWQgaW4gMC44CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19yZW1vdmVfYW5kX2dldF9zdHJ1Y3R1cmUpOgoJICByZW1vdmUgZ3N0X2NhcHNfc2ltcGxpZnk7IGl0IHdhcyBub3QgZGVjbGFyZWQgYW5kIG5vdCB1c2VkCgkgIGFuZCBkZXByZWNhdGVkIGluIDAuOAoKMjAwNi0wNy0wMiAxNDowNTo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IGRvbid0IHB1dCBlbXB0eSBwYXRocyBvbiBQWVRIT05QQVRICgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgZG9uJ3QgcHV0IGVtcHR5IHBhdGhzIG9uIFBZVEhPTlBBVEgKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICByZW1vdmUgc29tZSBzeW1ib2xzIHRoYXQgYXJlIG5vdCB0aGVyZQoKMjAwNi0wNy0wMiAxMjo1NzoxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Y2Fwcy5jOgoJICB1bmJyZWFrIHRlc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVuYnJlYWsgdGVzdAoKMjAwNi0wNy0wMiAxMjo1NDowMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0Y2Fwcy5jOiB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19jb21wYXJlX3N0cnVjdHVyZXMpOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RjYXBzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfY2Fwc19zdWl0ZSk6CgkgIGFkZCBtb3JlIHRlc3RzCgoyMDA2LTA3LTAyIDEyOjUyOjA5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC8uZ2l0aWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWdub3JlIG1vcmUKCjIwMDYtMDctMDIgMDk6MDQ6NDUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL01ha2VmaWxlLmFtOiBidWlsZCBkYXRhcHJvdG9jb2wgdGVzdCBieSBsaW5raW5nIHRvIHRoZSBsaWIsIGluc3RlYWQgb2YgY29tcGlsaW5nIHRoZSBzb3VyY2UsIHNvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSAgYnVpbGQgZGF0YXByb3RvY29sIHRlc3QgYnkgbGlua2luZyB0byB0aGUgbGliLCBpbnN0ZWFkIG9mCgkgIGNvbXBpbGluZyB0aGUgc291cmNlLCBzbyB3ZSBnZXQgY292ZXJhZ2UKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9maWxlc3JjLmM6IChldmVudF9mdW5jKSwgKHNldHVwX2ZpbGVzcmMpLAoJICAoY2xlYW51cF9maWxlc3JjKSwgKEdTVF9TVEFSVF9URVNUKSwgKGZpbGVzcmNfc3VpdGUpOgoJICBhZGQgYSB0ZXN0IGZvciBmaWxlc3JjCgoyMDA2LTA3LTAyIDA4OjI2OjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogUHVzaCBjb3ZlcmFnZSBmcm9tIDU5LjA0JSB0byA3MC4wMCUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3N0cnVjdHVyZV9zdWl0ZSk6CgkgIFB1c2ggY292ZXJhZ2UgZnJvbSA1OS4wNCUgdG8gNzAuMDAlCgoyMDA2LTA3LTAyIDAwOjQwOjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogUHVzaCBjb3ZlcmFnZSBmcm9tIDU5LjA0JSB0byA3MC4wMCUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3N0cnVjdHVyZV9zdWl0ZSk6CgkgIFB1c2ggY292ZXJhZ2UgZnJvbSA1OS4wNCUgdG8gNzAuMDAlCgoyMDA2LTA3LTAyIDAwOjM5OjI4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGxpYnMvZ3N0L2Jhc2UvLmdpdGlnbm9yZToKCSogbGlicy9nc3QvY2hlY2svLmdpdGlnbm9yZToKCSogbGlicy9nc3QvZGF0YXByb3RvY29sLy5naXRpZ25vcmU6CgkgIG1vYXAgaWdub3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb2FwIGlnbm9yZQoKMjAwNi0wNy0wMiAwMDozODozNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBsaWJzL2dzdC9iYXNlLy5naXRpZ25vcmU6CgkgIG1vYXAgaWdub3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb2FwIGlnbm9yZQoKMjAwNi0wNy0wMiAwMDozMzo1MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbTogZ3N0LWluc3BlY3QgZXZlcnkgZWxlbWVudDsgdGhpcyBtYWtlcyBzdXJlIHRoYXQgd2UgYWxzbyBnZXQgY292ZXJhZ2Ugb24gZWxlbWVudCdzIGdldC9zZXQgZnUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGdzdC1pbnNwZWN0IGV2ZXJ5IGVsZW1lbnQ7IHRoaXMgbWFrZXMgc3VyZSB0aGF0IHdlIGFsc28gZ2V0CgkgIGNvdmVyYWdlIG9uIGVsZW1lbnQncyBnZXQvc2V0IGZ1bmN0aW9ucwoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9zdHJ1Y3R1cmVfc3VpdGUpOgoJICBQdXNoIGNvdmVyYWdlIGZyb20gNTkuMDQlIHRvIDcwLjAwJQoKMjAwNi0wNy0wMSAyMzoyNjowNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb25maWd1cmUuYWM6IHNldCBDRkxBR1MgYW5kIGZyaWVuZHMgdG8gLU8wIGlmIGdjb3YgaXMgYmVpbmcgdXNlZCBhZGQgR0NPViBMSUJTCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgc2V0IENGTEFHUyBhbmQgZnJpZW5kcyB0byAtTzAgaWYgZ2NvdiBpcyBiZWluZyB1c2VkCgkgIGFkZCBHQ09WIExJQlMKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9uZXQvTWFrZWZpbGUuYW06CgkgICogcGx1Z2lucy9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJICBhZGQgbWFrZWZpbGUgcnVsZXMgdG8gZ2VuZXJhdGUgZ2NvdiBkYXRhIGFuZCBjbGVhbiB1cAoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBhZGQgYSBjb3ZlcmFnZSB0YXJnZXQgdGhhdCBnZW5lcmF0ZXMgYW4gaHRtbCBvdmVydmlldwoJICBvZiBjb3ZlcmFnZSBkYXRhCgoyMDA2LTA3LTAxIDIzOjE5OjI4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIGZpeCBkb2NzIGJ1aWxkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggZG9jcyBidWlsZAoKMjAwNi0wNy0wMSAyMDo1Njo1NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB0ZXN0cy9jaGVjay86IHVzZSB0aGUgbmV3IG1hY3JvCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZXNyYy5jOgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zkc3JjLmM6CgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvaWRlbnRpdHkuYzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChnc3Rfc2lua3Nfc3VpdGUpOgoJICAqIHRlc3RzL2NoZWNrL2dlbmVyaWMvc3RhdGVzLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdC5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X2J1ZmZlcl9zdWl0ZSk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19zdWl0ZSk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZWxlbWVudC5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0aXRlcmF0b3IuYzogKGdzdF9pdGVyYXRvcl9zdWl0ZSk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWluaW9iamVjdC5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RvYmplY3QuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHBsdWdpbi5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc3VpdGUpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHRhc2suYzogKGdzdF90YXNrX3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXRpbHMuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2FkYXB0ZXIuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2Jhc2VzcmMuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbGxlY3RwYWRzLmM6CgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6CgkgICogdGVzdHMvY2hlY2svbGlicy9nZHAuYzogKGdzdF9kcF9zdWl0ZSk6CgkgICogdGVzdHMvY2hlY2svbGlicy9nc3RuZXRjbGllbnRjbG9jay5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgICogdGVzdHMvY2hlY2svbGlicy9saWJzYWJpLmM6IChsaWJzYWJpX3N1aXRlKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3R5cGVmaW5kaGVscGVyLmM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL2NsZWFudXAuYzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzoKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvc3RyZXNzLmM6IChzdHJlc3Nfc3VpdGUpOgoJICB1c2UgdGhlIG5ldyBtYWNybwoKMjAwNi0wNy0wMSAyMDo1NDoyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay4qOiBjcmVhdGUgYSBtYWNybyBhbmQgZnVuY3Rpb24gc28gdGhhdCB0aGUgc2ltcGxlIHVuaXQgdGVzdCBjYXNlIGNhbiBiZSBqdXN0IG9uZSBtYWNybyB0byBjcmUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19ydW5fc3VpdGUpOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGNyZWF0ZSBhIG1hY3JvIGFuZCBmdW5jdGlvbiBzbyB0aGF0IHRoZSBzaW1wbGUgdW5pdCB0ZXN0CgkgIGNhc2UgY2FuIGJlIGp1c3Qgb25lIG1hY3JvIHRvIGNyZWF0ZSBtYWluKCkKCjIwMDYtMDYtMzAgMTM6MTc6NDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvOiBGaXggZGVzZXJpYWxpc2F0aW9uIGZyb20gWE1MLiBTZXQgcGFyZW50IG1hbnVhbGx5IGluc3RlYWQgb2YgdXNpbmcgZ3N0X2Jpbl9hZGQoKSwgc2luY2UgZ3N0X2Jpbl9hZGQoKSB3aWxsIHVubGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9yZXN0b3JlX3RoeXNlbGYpOgoJICAqIGdzdC9nc3R4bWwuYzogKGdzdF94bWxfbWFrZV9lbGVtZW50KToKCSAgRml4IGRlc2VyaWFsaXNhdGlvbiBmcm9tIFhNTC4gU2V0IHBhcmVudCBtYW51YWxseQoJICBpbnN0ZWFkIG9mIHVzaW5nIGdzdF9iaW5fYWRkKCksIHNpbmNlIGdzdF9iaW5fYWRkKCkKCSAgd2lsbCB1bmxpbmsgYWxsIHBhZHMgb2YgdGhlIGVsZW1lbnQgYmVpbmcgYWRkZWQuCgkgIEZpeGVzICMzNDE2NjcuCgoyMDA2LTA2LTI4IDE1OjE5OjA4ICswMDAwICBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KCgkgIGdzdC9nc3QuYzogRml4IG1pc3NpbmcgZ19zdHJkdXAoKSBhbmQgZG91YmxlIGZyZWUgd2hlbiB1c2luZyB0aGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBraiBhdCBheGlzIGNvbT4KCSAgKiBnc3QvZ3N0LmM6IChwcmVwYXJlX2Zvcl9sb2FkX3BsdWdpbl9mdW5jKSwgKHNwbGl0X2FuZF9pdGVyYXRlKToKCSAgRml4IG1pc3NpbmcgZ19zdHJkdXAoKSBhbmQgZG91YmxlIGZyZWUgd2hlbiB1c2luZyB0aGUKCSAgLS1nc3QtcGx1Z2luLWxvYWQgY29tbWFuZCBsaW5lIG9wdGlvbiAoIzM0NjA5NykuCgoyMDA2LTA2LTIzIDEzOjE2OjQ2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGluZm8uYzogUHJvbW90ZSBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIGluIGV4YW1wbGUgaW4gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgUHJvbW90ZSBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIGluIGV4YW1wbGUgaW4gZG9jcy4KCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIFVzZSBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIGhlcmUgdG9vICgjMzQyNTAzKS4KCjIwMDYtMDYtMjMgMTA6MzA6MDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDogRml4IGJ1ZmZlciBwcm9iZSBleGFtcGxlIGNvbXBpbGF0aW9uIGluCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRhdGFhY2Nlc3MueG1sOgoJICBGaXggYnVmZmVyIHByb2JlIGV4YW1wbGUgY29tcGlsYXRpb24gaW4KCSAgQURNICgjMzQ1NzA4KS4KCjIwMDYtMDYtMjIgMTc6MDk6MTMgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgc3JjIHBhZHMgZmlyc3QgYW5kIHRoZW4gc2luayBwYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcGFkc19hY3RpdmF0ZSk6CgkgIFdlIG5lZWQgdG8gZGVhY3RpdmF0ZSBzcmMgcGFkcyBmaXJzdCBhbmQgdGhlbiBzaW5rIHBhZHMuCgkgIFRoZSByZWFzb24gaXMgdGhlIHNyYyBwYWRzIG1pZ2h0IGJlIGJsb2NraW5nIHdoaWxlIGhvbGRpbmcgdGhlIHN0cmVhbWluZwoJICBsb2NrLCBzbyB3ZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlbSBmaXJzdCBzbyB0aGF0IGRlYWN0aXZhdGluZyB0aGUgc2luawoJICBwYWRzIGRvZXNuJ3QgYmxvY2sgKHNpbmNlIGl0IHdpbGwgcmVxdWlyZSB0aGUgc3RyZWFtaW5nIGxvY2spLgoKMjAwNi0wNi0yMiAxNToxMjo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBGb3Jnb3QgdG8gcmVtb3ZlIHR3byB1bm5lZWRlZCB1bnJlZnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIEZvcmdvdCB0byByZW1vdmUgdHdvIHVubmVlZGVkIHVucmVmcy4KCSAgU2ltcGxpZnkgYSBjaGVjayBfaXNfZXF1YWwgYWxscmVhZHkgY2hlY2tzIHRoZSBvYnZpb3VzIGNhc2UuCgoyMDA2LTA2LTIyIDE0OjA5OjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1ibG9jay50eHQ6IFNvbWUgZG9jcyBhYm91dCB3aGF0IHBhZF9ibG9jayBzaG91bGQgZG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYmxvY2sudHh0OgoJICBTb21lIGRvY3MgYWJvdXQgd2hhdCBwYWRfYmxvY2sgc2hvdWxkIGRvLgoKMjAwNi0wNi0yMiAxMzo1MToxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IEZpeCBjcmFzaGVyIHdoZW4gcGFzc2VkIE5VTEwuIERvYyBjbGFyaWZpY2F0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfcmVwbGFjZSk6CgkgIEZpeCBjcmFzaGVyIHdoZW4gcGFzc2VkIE5VTEwuIERvYyBjbGFyaWZpY2F0aW9uLgoJICBPcHRpbWl6ZSBmb3IgdGhlIHRyaXZpYWwgY2FzZS4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICBTbWFsbCBjbGVhbnVwcy4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19sb29wKToKCSAgU21hbGwgZG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgIERvbid0IHVzZSBzaWxseSBnc3RfcGFkX2dldF9uZWdvdGlhdGVkX2NhcHMsIEdTVF9QQURfQ0FQUwoJICBpcyB3aGF0IHdlIG5lZWQgYW5kIGl0IGF2b2lkcyBhIHdob2xlIGxvdCBvZiByZWR1bmRhbnQKCSAgcmVmY291bnQgb3BlcmF0aW9ucy4KCjIwMDYtMDYtMjIgMDg6NTM6NDAgKzAwMDAgIFBoaWxpcCBKw6RnZW5zdGVkdCA8cGhpbGlwQGx5c2F0b3IubGl1LnNlPgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtZGF0YWFjY2Vzcy54bWw6IEZpeCAnRW1iZWRkaW5nIHN0YXRpYyBlbGVtZW50cycgc2VjdGlvbiB0byB1c2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBQaGlsaXAgSsOkZ2Vuc3RlZHQgIDxwaGlsaXAgYXQgbHlzYXRvciBsaXUgc2U+CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZGF0YWFjY2Vzcy54bWw6CgkgIEZpeCAnRW1iZWRkaW5nIHN0YXRpYyBlbGVtZW50cycgc2VjdGlvbiB0byB1c2UKCSAgR1NUX1BMVUdJTl9ERUZJTkVfU1RBVElDICgjMzQ1NjA3KS4KCjIwMDYtMDYtMjEgMTE6MTI6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9jaGVjay9waXBlbGluZXMvc2ltcGxlLWxhdW5jaC1saW5lcy5jOiBBdHRlbXB0IHRvICdmaXgnIHNwdXJpb3VzbHkgZmFpbGluZyB0ZXN0IGNhc2U6IGl0IHNlZW1zIGxpa2UgdGhlIHRpbWVvdXQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzogKHRlc3Rfc3RvcF9mcm9tX2FwcCk6CgkgIEF0dGVtcHQgdG8gJ2ZpeCcgc3B1cmlvdXNseSBmYWlsaW5nIHRlc3QgY2FzZTogaXQgc2VlbXMgbGlrZSB0aGUKCSAgdGltZW91dCBvZiBoYWxmIGEgc2Vjb25kIGlzIHNpbXBseSB0b28gc21hbGwgd2hlbiB0aGUgc3lzdGVtIGlzIHVuZGVyCgkgIGxvYWQgb3RoZXJ3aXNlLCBhbmQgdGhlIHRpbWVvdXQgZG9lc24ndCByZWFsbHkgc2VlbSB0byBzZXJ2ZSBhbnkKCSAgcGFydGljdWxhciBwdXJwb3NlIGhlcmUuIEdpdmUgdGhlIHBpcGVsaW5lIGEgZmV3IHNlY29uZHMgdG8gcHJlcm9sbAoJICBmaXJzdCwgYW5kIHRoZW4gZ2l2ZSBpdCBhbm90aGVyIGhhbGYgYSBzZWNvbmQgdG8gZ28gZnJvbSBQQVVTRUQgdG8KCSAgUExBWUlORyBhbmQgbWFyc2hhbCB0aGUgbWVzc2FnZSBpbnRvIHRoZSBtYWluIHRocmVhZC4KCjIwMDYtMDYtMjEgMTA6MTQ6MDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtZmVlZGJhY2stbS5tOiBEb24ndCBvbmx5IHVzZSB1bnZlcnNpb25lZCB0b29scywgdHJ5IHZlcnNpb25lZCB0b29scyBhcyB3ZWxsICgjMzQ1MDg2KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWZlZWRiYWNrLW0ubToKCSAgRG9uJ3Qgb25seSB1c2UgdW52ZXJzaW9uZWQgdG9vbHMsIHRyeSB2ZXJzaW9uZWQgdG9vbHMgYXMgd2VsbAoJICAoIzM0NTA4NikuCgoyMDA2LTA2LTIxIDEwOjAxOjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1cy5jOiBGaXggc29tZSB0eXBvcywgbWFrZSBkb2NzIG1vcmUgZXhwbGljaXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfY2xhc3NfaW5pdCk6CgkgIEZpeCBzb21lIHR5cG9zLCBtYWtlIGRvY3MgbW9yZSBleHBsaWNpdC4KCjIwMDYtMDYtMjAgMDg6NDA6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogQWRkZWQgc29tZSBtb3JlIGdob3N0cGFkIHRlc3RzLCBtYWlubHkgYmxvY2tpbmcgYW5kIHByb2Jlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6IChibG9ja19jYWxsYmFjayksCgkgIChHU1RfU1RBUlRfVEVTVCksIChnc3RfZ2hvc3RfcGFkX3N1aXRlKToKCSAgQWRkZWQgc29tZSBtb3JlIGdob3N0cGFkIHRlc3RzLCBtYWlubHkgYmxvY2tpbmcKCSAgYW5kIHByb2Jlcy4KCjIwMDYtMDYtMTkgMDg6NTY6NDggKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBsYXRlc3QgdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbGF0ZXN0IHVwZGF0ZXMKCjIwMDYtMDYtMTYgMTY6Mjg6MzcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLio6IENoZWNrIGlmIHdlIGNhbiBzZWVrIGluIHRoZSBmaWxlIGluc3RlYWQgb2YgYXNzdW1pbmcgd2UgYWx3YXlzIGNhbi4gUG9zdCBhbiBlcnJvciB3aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19vcGVuX2ZpbGUpLAoJICAoZ3N0X2ZpbGVfc2lua19jbG9zZV9maWxlKSwgKGdzdF9maWxlX3NpbmtfZG9fc2VlayksCgkgIChnc3RfZmlsZV9zaW5rX2V2ZW50KSwgKGdzdF9maWxlX3NpbmtfcmVuZGVyKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmg6CgkgIENoZWNrIGlmIHdlIGNhbiBzZWVrIGluIHRoZSBmaWxlIGluc3RlYWQgb2YgYXNzdW1pbmcKCSAgd2UgYWx3YXlzIGNhbi4gUG9zdCBhbiBlcnJvciB3aGVuIHdlIGFyZSBhc2tlZCB0byBzZWVrIGluIGEKCSAgbm9uLXNlZWthYmxlIGZpbGUgKGxpa2UgYSBmaWZvKS4gRml4ZXMgIzM0MzMxMi4KCSAgU29tZSBjbGVhbnVwcy4KCjIwMDYtMDYtMTYgMTQ6MzE6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtbGF1bmNoLjEuaW46IFVuLWdhcmJsZSAoZm91cmNjKSBiaXQgaW4gZmlsdGVyZWQgY2FwcyBzZWN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLjEuaW46CgkgIFVuLWdhcmJsZSAoZm91cmNjKSBiaXQgaW4gZmlsdGVyZWQgY2FwcyBzZWN0aW9uLgoKMjAwNi0wNi0xNiAwOTozOTo1NCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsLzogRG9uJ3QgbGVhayBidXMgcmVmZXJlbmNlIGluIHNhbXBsZSBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1hdXRvcGx1Z2dpbmcueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1oZWxsb3dvcmxkLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9oaWdobGV2ZWwtY29tcG9uZW50cy54bWw6CgkgIERvbid0IGxlYWsgYnVzIHJlZmVyZW5jZSBpbiBzYW1wbGUgY29kZS4KCjIwMDYtMDYtMTYgMDg6MzA6NDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBhdXRvZ2VuLnNoOiBBZGQgZGVmYXVsdCBmb3IgbmV3IC0tZW5hYmxlLXBsdWdpbi1kb2NzIHN3aXRjaC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogYXV0b2dlbi5zaDoKCSAgQWRkIGRlZmF1bHQgZm9yIG5ldyAtLWVuYWJsZS1wbHVnaW4tZG9jcyBzd2l0Y2guCgkgICogY29uZmlndXJlLmFjOgoJICBVc2UgbmV3IEdTVF9QTFVHSU5fRE9DUyBtYWNybyB0byBjaGVjayBmb3IgcHl4bWwgZXRjLgoJICBGaXhlcyAjMzQ0MDM5LgoJICAqIGRvY3MvTWFrZWZpbGUuYW06CgkgIFVzZSBuZXcgRU5BQkxFX1BMVUdJTl9ET0NTIGNvbmRpdGlvbmFsLgoKMjAwNi0wNi0xNCAxMDozNDoxNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogTWFrZSBpdCBjbGVhciB3aXRoIGEgRklYTUUgYW5kIGEgcmVhbCBkZWZpbmUgd2hhdCB0aGUgI2lmIDAgcHJldmlvdXNseSBkaXNhYmxlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX3F1ZXJ5X2R1cmF0aW9uX2RvbmUpLCAoZ3N0X2Jpbl9xdWVyeSk6CgkgIE1ha2UgaXQgY2xlYXIgd2l0aCBhIEZJWE1FIGFuZCBhIHJlYWwgZGVmaW5lIHdoYXQgdGhlICNpZiAwCgkgIHByZXZpb3VzbHkgZGlzYWJsZWQuCgoyMDA2LTA2LTE0IDEwOjMxOjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS86IERvbid0IHJhbmRvbWx5IGFuZCBzaWxlbnRseSByZXNldCBhIHNlZ21lbnQgd2hlbiB0aGUgZm9ybWF0IGNoYW5nZXMgYXMgdGhpcyBpcyBhIGJ1ZyBzb21ld2hlcmUgdXBzdHJlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29uZmlndXJlX3NlZ21lbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX29iamVjdCksIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbik6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudGZ1bmMpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfZXZlbnQpOgoJICBEb24ndCByYW5kb21seSBhbmQgc2lsZW50bHkgcmVzZXQgYSBzZWdtZW50IHdoZW4gdGhlIGZvcm1hdAoJICBjaGFuZ2VzIGFzIHRoaXMgaXMgYSBidWcgc29tZXdoZXJlIHVwc3RyZWFtLiBGaXhlcyAjMzMwMzc5LgoKMjAwNi0wNi0xNCAwODoyNjo1MyArMDAwMCAgV291dGVyIFBhZXNlbiA8d291dGVyQGthbmdhcm9vdC5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogRml4IGNvbnRyb2xsaW5nIG9mIGZsb2F0IHByb3BlcnRpZXMgKCMzNDQ4NDkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFdvdXRlciBQYWVzZW4gIDx3b3V0ZXIgYXQga2FuZ2Fyb290IG5ldD4KCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X25ldyk6CgkgIEZpeCBjb250cm9sbGluZyBvZiBmbG9hdCBwcm9wZXJ0aWVzICgjMzQ0ODQ5KS4KCSAgKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzoKCSAgKGdzdF90ZXN0X21vbm9fc291cmNlX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfdGVzdF9tb25vX3NvdXJjZV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X3Rlc3RfbW9ub19zb3VyY2VfY2xhc3NfaW5pdCksIChHU1RfU1RBUlRfVEVTVCk6CgkgIFdoaWxlIHdlJ3JlIGF0IGl0LCBhZGQgc29tZSBmbG9hdCBzdHVmZiB0byB1bml0IHRlc3QuCgoyMDA2LTA2LTEzIDE5OjI0OjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvOiBhZGQgYSBnZHAgaW1hZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9SRUFETUU6CgkgICogZG9jcy9pbWFnZXMvZ2RwLWhlYWRlci5zdmc6CgkgIGFkZCBhIGdkcCBpbWFnZQoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2xpYnMvZ2RwLWhlYWRlci5wbmc6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICBhZGQgaXQgdG8gdGhlIEFQSSBkb2NzCgkgICogZG9jcy9tYW51YWwvaW50cm8tbW90aXZhdGlvbi54bWw6CgkgIGZpeCB0eXBvCgoyMDA2LTA2LTEzIDE2OjQxOjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdC5jOiBJZiB0aGUgZm9yaygpJ2VkIGNoaWxkIHByb2Nlc3MgY2FuJ3Qgd3JpdGUgdGhlIHVwZGF0ZWQgcmVnaXN0cnkgY2FjaGUgZmlsZSB0byBkaXNrIGZvciBzb21lIHJlYXNvbiwgbWFrZSBpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKHNjYW5fYW5kX3VwZGF0ZV9yZWdpc3RyeSksIChpbml0X3Bvc3QpOgoJICBJZiB0aGUgZm9yaygpJ2VkIGNoaWxkIHByb2Nlc3MgY2FuJ3Qgd3JpdGUgdGhlIHVwZGF0ZWQgcmVnaXN0cnkgY2FjaGUKCSAgZmlsZSB0byBkaXNrIGZvciBzb21lIHJlYXNvbiwgbWFrZSBpdCBleGl0IHdpdGggYSBmYWlsdXJlIGV4aXQgY29kZSwKCSAgc28gdGhhdCB0aGUgcGFyZW50IGNhbiB0aGVuIHJlLXNjYW4gdGhlIHBsdWdpbnMgaXRzZWxmIGFuZCB1cGRhdGUgdGhlCgkgIHJlZ2lzdHJ5IHN0cnVjdHVyZXMgaW4gbWVtb3J5IGFuZCB3b3JrIHdpdGggdGhhdCAocmF0aGVyIHRoYW4gZmFpbGluZwoJICB3aGVuIGNyZWF0aW5nIGVsZW1lbnRzIGJlY2F1c2Ugc2VlbWluZ2x5IG5vIHBsdWdpbnMgYXJlIGF2YWlsYWJsZSkuCgkgIFJlZmFjdG9yIHJlZ2lzdHJ5IHNjYW5uaW5nIGNvZGUgaW50byBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhpcyBhbmQKCSAgYWxzbyBzZXBhcmF0ZSBmb3JrKCkgYW5kIG5vbi1mb3JrKCkgY29kZSBwYXRocy4gRml4ZXMgIzM0NDc0OC4KCjIwMDYtMDYtMTMgMTY6MjQ6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDogRml4IHdyb25nIFBsdWdpbkRlc2MuIEZpeGVzICMzNDQ3NTUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRhdGFhY2Nlc3MueG1sOgoJICBGaXggd3JvbmcgUGx1Z2luRGVzYy4gRml4ZXMgIzM0NDc1NS4KCjIwMDYtMDYtMTMgMTM6MzA6NDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogRml4IHNpbGx5IGJ1ZyB0aGF0IHByZXZlbnRlZCB1cyBmcm9tIGNyZWF0aW5nIH4vLmdzdHJlYW1lci0wLjEwIGFuZCB3cml0aW5nIHRoZSByZWdpc3RyeSBpbiBvbmUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChnc3RfcmVnaXN0cnlfeG1sX3dyaXRlX2NhY2hlKToKCSAgRml4IHNpbGx5IGJ1ZyB0aGF0IHByZXZlbnRlZCB1cyBmcm9tIGNyZWF0aW5nCgkgIH4vLmdzdHJlYW1lci0wLjEwIGFuZCB3cml0aW5nIHRoZSByZWdpc3RyeSBpbiBvbmUKCSAgZ28gKHRoZSBmaXJzdCBjYWxsIHRvIGdfbWtzdGVtcCgpIHdvdWxkIG92ZXJ3cml0ZSB0aGUKCSAgcGxhY2Vob2xkZXIgaW4gdGhlIHRlbXBsYXRlIHN0cmluZywgc28gdGhlIHNlY29uZCBjYWxsCgkgIHRvIGdfbWtzdGVtcCgpIGFmdGVyIGNyZWF0aW5nIHRoZSBtaXNzaW5nIGRpcmVjdG9yeQoJICB3b3VsZCB0aGVuIGVycm9yIG91dCB3aXRoICdpbnZhbGlkIGFyZ3VtZW50JykuCgoyMDA2LTA2LTEzIDExOjE3OjAyICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdC5jOiBGcmVlIHN0cmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgRnJlZSBzdHJpbmcuCgoyMDA2LTA2LTEzIDA4OjIwOjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IHJlbW92ZSBHTGliIDIuNiBjb21wYXRpYmlsaXR5IGNvZGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaDoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuYzoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9zZXJpYWxpemVfZmxhZ3MpOgoJICByZW1vdmUgR0xpYiAyLjYgY29tcGF0aWJpbGl0eSBjb2RlCgoyMDA2LTA2LTEyIDE2OjUwOjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L3BhcnNlL01ha2VmaWxlLmFtOiBGaXggYnVpbGQgd2l0aCAnbWFrZSAtaiBOJyBldmVuIG1vcmUgKCMzNDAwMTYpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvTWFrZWZpbGUuYW06CgkgIEZpeCBidWlsZCB3aXRoICdtYWtlIC1qIE4nIGV2ZW4gbW9yZSAoIzM0MDAxNikuCgoyMDA2LTA2LTEyIDA5OjM3OjU4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogRml4IGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEZpeCBkb2NzLgoKMjAwNi0wNi0xMiAwOToyOTo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IFVzZSBHX1VOTElLRUxZIHRvIGhlbHAgdGhlIGNvbXBpbGVyIGEgYml0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfc2V0X2R1cmF0aW9uKSwKCSAgKGdzdF9zZWdtZW50X3NldF9sYXN0X3N0b3ApLCAoZ3N0X3NlZ21lbnRfc2V0X3NlZWspLAoJICAoZ3N0X3NlZ21lbnRfc2V0X25ld3NlZ21lbnRfZnVsbCksIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSksCgkgIChnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUpLCAoZ3N0X3NlZ21lbnRfY2xpcCk6CgkgIFVzZSBHX1VOTElLRUxZIHRvIGhlbHAgdGhlIGNvbXBpbGVyIGEgYml0LgoKMjAwNi0wNi0xMiAwOToyODozNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAc29uaWNwdWxzZS5kZT4KCgkgIGdzdC86IGNvbnN0aWZ5IHF1YXJrIHJlZ2lzdHJhdGlvbiBzdHJpbmdzLiBGaXhlcyAjMzQ0MTE1CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU3RlZmFuIEtvc3QgPGVuc29uaWMgYXQgc29uaWNwdWxzZSBkb3QgZGU+CgkgICogZ3N0L2dzdGV2ZW50LmM6IChnc3RfZXZlbnRfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9jaGFpbl91bmNoZWNrZWQpLCAoZ3N0X3BhZF9jaGFpbiksCgkgIChnc3RfcGFkX3B1c2gpOgoJICBjb25zdGlmeSBxdWFyayByZWdpc3RyYXRpb24gc3RyaW5ncy4gRml4ZXMgIzM0NDExNQoJICBBdm9pZCB1bm5lZWRlZCB0eXBlIGNoZWNraW5nIGlzIF9wYWRfcHVzaCgpIGJ5IGludGVybmFsbHkKCSAgY2FsbGluZyBnc3RfcGFkX2NoYWluX3VuY2hlY2tlZCgpLgoKMjAwNi0wNi0xMiAwOToyMzo0MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogSW5pdCBfdHlwZSBmb3IgY29uc2lzdGVuY3kuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfZ2V0X3R5cGUpLCAoZ3N0X2J1ZmZlcl9maW5hbGl6ZSksCgkgIChfZ3N0X2J1ZmZlcl9jb3B5KSwgKGdzdF9idWZmZXJfaXNfbWV0YWRhdGFfd3JpdGFibGUpLAoJICAoZ3N0X3N1YmJ1ZmZlcl9maW5hbGl6ZSksIChnc3RfYnVmZmVyX2NyZWF0ZV9zdWIpLAoJICAoZ3N0X2J1ZmZlcl9pc19zcGFuX2Zhc3QpLCAoZ3N0X2J1ZmZlcl9zcGFuKToKCSAgSW5pdCBfdHlwZSBmb3IgY29uc2lzdGVuY3kuCgkgIFVzZSBfRkxBR1MgbWFjcm8gdG8gYXZvaWQgdHlwZSBjaGVjay4KCSAgQXZvaWQgdW5uZWVkZWQgdHlwZSBjaGVja3MgaW4gc3ViYnVmZXIgY29kZS4KCjIwMDYtMDYtMTIgMDk6MTc6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBVc2UgX0NBU1QgbWFjcm9zIHRvIGF2b2lkIHVubmVlZGVkIHR5cGUgY2hlY2tpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGdzdF9kZWJ1Z19oZWxwKToKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2ZpbmFsaXplKSwgKGdzdF9wbHVnaW5fbGlzdF9mcmVlKToKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2ZpbmFsaXplKSwKCSAgKGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2FkZF9wbHVnaW4pLAoJICAoZ3N0X3JlZ2lzdHJ5X2FkZF9mZWF0dXJlKSwgKGdzdF9yZWdpc3RyeV9wbHVnaW5fZmlsdGVyKSwKCSAgKGdzdF9yZWdpc3RyeV9mZWF0dXJlX2ZpbHRlciksIChnc3RfcmVnaXN0cnlfZmluZF9wbHVnaW4pLAoJICAoZ3N0X3JlZ2lzdHJ5X2ZpbmRfZmVhdHVyZSksIChnc3RfcmVnaXN0cnlfZ2V0X3BsdWdpbl9saXN0KSwKCSAgKGdzdF9yZWdpc3RyeV9sb29rdXBfZmVhdHVyZV9sb2NrZWQpLCAoZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9sb2NrZWQpOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAobG9hZF9mZWF0dXJlKSwKCSAgKGdzdF9yZWdpc3RyeV94bWxfcmVhZF9jYWNoZSksIChnc3RfcmVnaXN0cnlfeG1sX3dyaXRlX2NhY2hlKToKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X3VucmVmKSwKCSAgKGdzdF9taW5pX29iamVjdF9yZXBsYWNlKSwgKGdzdF92YWx1ZV9taW5pX29iamVjdF9mcmVlKSwKCSAgKGdzdF92YWx1ZV9taW5pX29iamVjdF9jb3B5KToKCSAgVXNlIF9DQVNUIG1hY3JvcyB0byBhdm9pZCB1bm5lZWRlZCB0eXBlIGNoZWNraW5nLgoJICBBZGRlZCBzb21lIG1vcmUgR19VTkxJS0VMWS4KCjIwMDYtMDYtMTIgMDk6MTE6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmg6IEF2b2lkIHVubmVlZGVkIHR5cGUgY2hlY2tpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgQXZvaWQgdW5uZWVkZWQgdHlwZSBjaGVja2luZy4KCSAgQVBJOiBHU1RfQlVGRkVSX0lTX0RJU0NPTlQKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oOgoJICBBdm9pZCB0eXBlIGNoZWNrIGluIGZsYWcgYWNjZXNzb3IuCgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkgIEFkZCBfQ0FTVCBtYWNyb3MuCgkgIEFQSTogR1NUX0VMRU1FTlRfRkFDVE9SWV9DQVNUCgkgIEFQSTogR1NUX1BMVUdJTl9DQVNUCgkgIEFQSTogR1NUX1BMVUdJTl9GRUFUVVJFX0NBU1QKCjIwMDYtMDYtMTIgMDk6MDY6MDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0b2JqZWN0LmM6IEFkZCBHX1VOTElLRUxZIGluIHR5cGUgcmVnaXN0cmF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2dldF90eXBlKSwgKGdzdF9vYmplY3RfcmVmKSwKCSAgKGdzdF9vYmplY3RfdW5yZWYpOgoJICBBZGQgR19VTkxJS0VMWSBpbiB0eXBlIHJlZ2lzdHJhdGlvbi4KCSAgQXZvaWQgdHlwZSBjaGVjayBpbiBfcmVmL191bnJlZiBzaW5jZSB0aGF0IGlzIGFsc28KCSAgZG9uZSBpbiBnbGliLgoKMjAwNi0wNi0xMiAwODo1NToyMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBHX1VOTElLRUxZIGluIHR5cGUgcmVnaXN0cmF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXJyb3IuYzogKGdzdF9nX2Vycm9yX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzogKGdzdF9wYWRfdGVtcGxhdGVfZ2V0X3R5cGUpLAoJICAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6IChnc3RfdGFnX2xpc3RfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzogKGdzdF90YWdfc2V0dGVyX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6IChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfaGFuZGxlcl9nZXRfdHlwZSk6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfZGF0ZV9nZXRfdHlwZSk6CgkgICogZ3N0L2dzdHhtbC5jOiAoZ3N0X3htbF9nZXRfdHlwZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfdHlwZSksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfdHlwZSk6CgkgIEFkZCBHX1VOTElLRUxZIGluIHR5cGUgcmVnaXN0cmF0aW9uLgoKMjAwNi0wNi0xMiAwODo1MToyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRvb2xzL2dzdC1pbnNwZWN0LmM6IFByb3Blcmx5IHByaW50IGVudW0gdmFsdWVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfc2lnbmFsX2luZm8pOgoJICBQcm9wZXJseSBwcmludCBlbnVtIHZhbHVlcy4KCjIwMDYtMDYtMTIgMDg6NDc6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0aW5mby4qOiBBZGQgc29tZSBHX1tVTl1MSUtFTFkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChnc3RfZGVidWdfc2V0X2FjdGl2ZSksCgkgIChnc3RfZGVidWdfY2F0ZWdvcnlfc2V0X3RocmVzaG9sZCksIChfZ3N0X2RlYnVnX25hbWVvZl9mdW5jcHRyKToKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBBZGQgc29tZSBHX1tVTl1MSUtFTFkuCgkgIE1haW50YWluIF9fZ3N0X2RlYnVnX21pbiB0byBhdm9pZCBmb3JtYXR0aW5nIHRoZSBhcmd1bWVudHMgb2YKCSAgZGVidWcgbWVzc2FnZXMgdGhhdCB3aWxsIGJlIGRyb3BwZWQgYW55d2F5IHRvIGF2b2lkIGEgbG90IG9mCgkgIG92ZXJoZWFkIGZyb20gdGhlIGRlYnVnZ2luZyBzeXN0ZW0uCgoyMDA2LTA2LTExIDIwOjM3OjQxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBwby9QT1RGSUxFUy4qOiBhZGQgbWlzc2luZyBmaWxlcyBjb250YWluaW5nIHRyYW5zbGF0YWJsZSBzdHJpbmdzLCB0ZWxsIGludGx0b29sIGFib3V0IG9uZSBleGNlcHRpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcG8vUE9URklMRVMuaW46CgkgICogcG8vUE9URklMRVMuc2tpcDoKCSAgYWRkIG1pc3NpbmcgZmlsZXMgY29udGFpbmluZyB0cmFuc2xhdGFibGUgc3RyaW5ncywgdGVsbCBpbnRsdG9vbCBhYm91dAoJICBvbmUgZXhjZXB0aW9uCgoyMDA2LTA2LTExIDE3OjI4OjE5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0ZXN0cy9jaGVjay9saWJzLy5jdnNpZ25vcmU6IGFkZCB0ZXN0LWJpbmFyeSB0byBpZ25vcmUgbGlzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzLy5jdnNpZ25vcmU6CgkgIGFkZCB0ZXN0LWJpbmFyeSB0byBpZ25vcmUgbGlzdAoKMjAwNi0wNi0xMSAxNzowMzowNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDogcmVvcmRlciAocHV0IGRwIGludG8gYSBjaGFwdGVyKSBhbmQgaW5kZW50CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgIHJlb3JkZXIgKHB1dCBkcCBpbnRvIGEgY2hhcHRlcikgYW5kIGluZGVudAoKMjAwNi0wNi0xMSAxMTo1NjozNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGRvY3MvcmFuZG9tL2F1dG90b29sczoKCSAgYWRkIG5vdGVzIG9uIG91ciBhdXRvdG9vbHMgc2V0dXAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBub3RlcyBvbiBvdXIgYXV0b3Rvb2xzIHNldHVwCgoyMDA2LTA2LTEwIDE3OjMyOjUzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGJhY2sgdG8gSEVBRAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYmFjayB0byBIRUFECgo9PT0gcmVsZWFzZSAwLjEwLjggPT09CgoyMDA2LTA2LTEwIDE3OjA2OjMzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogTkVXUzoKCSogUkVMRUFTRToKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC4xMC44CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZWxlYXNpbmcgMC4xMC44CgoyMDA2LTA2LTEwIDExOjUxOjU4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3QuYzogbW92ZSBwaWQgZGVjbGFyYXRpb24gdG8gZGVjbGFyYXRpb24gYmxvY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgbW92ZSBwaWQgZGVjbGFyYXRpb24gdG8gZGVjbGFyYXRpb24gYmxvY2sKCjIwMDYtMDYtMTAgMTE6NDc6NDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdC5jOiB1c2UgX2V4aXQoKSBpbnN0ZWFkIG9mIGV4aXQoKSBpbiBvdXIgZm9ya2VkIGNoaWxkOyB0aGlzIGVuc3VyZXMgdGhhdCBub25lIG9mIHRoZSByZWdpc3RlcmVkIGV4aXQgaGFuZGxlcnMgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCk6CgkgIHVzZSBfZXhpdCgpIGluc3RlYWQgb2YgZXhpdCgpIGluIG91ciBmb3JrZWQgY2hpbGQ7IHRoaXMgZW5zdXJlcwoJICB0aGF0IG5vbmUgb2YgdGhlIHJlZ2lzdGVyZWQgZXhpdCBoYW5kbGVycyBmcm9tIHdoYXRldmVyIGlzIHVzaW5nCgkgIEdTdHJlYW1lciBnZXQgZXhlY3V0ZWQuICBUaGlzIGZpeGVzIGdub21lLW1peGVyLWFwcGxldCBmYWlsaW5nCgkgIHRvIGxvYWQsIGJlY2F1c2UgT1JCaXQgd291bGQgc2h1dCBkb3duLgoJICBTcG90dGVkIGJ5OiBFZHdhcmQgSGVydmV5ICA8ZWR3YXJkQGZsdWVuZG8uY29tPgoJICBGaXggc3VnZ2VzdGVkIGJ5OiBUaW0tUGhpbGlwcCBNw7xsbGVyICA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgIEZpeGVzICMzNDQ0NzQKCjIwMDYtMDYtMDkgMTg6NTI6MDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiBiYWNrIHRvIFRSVU5LCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTA2LTA5ICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlICA8dGhvbWFzIGF0IGFwZXN0YWFydCBkb3Qgb3JnPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBUUlVOSwoKPT09IHJlbGVhc2UgMC4xMC43ID09PQoKMjAwNi0wNi0wOSAxODo0OToyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5zaWduYWxzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgcmVsZWFzaW5nIDAuMTAuNwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVsZWFzaW5nIDAuMTAuNwoKMjAwNi0wNi0wNyAxMDo0NjowNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICAwLjEwLjYuMiBwcmVyZWxlYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBwby9hZi5wbzoKCSAgKiBwby9hei5wbzoKCSAgKiBwby9iZy5wbzoKCSAgKiBwby9jYS5wbzoKCSAgKiBwby9jcy5wbzoKCSAgKiBwby9kZS5wbzoKCSAgKiBwby9lbl9HQi5wbzoKCSAgKiBwby9mci5wbzoKCSAgKiBwby9pdC5wbzoKCSAgKiBwby9uYi5wbzoKCSAgKiBwby9ubC5wbzoKCSAgKiBwby9ydS5wbzoKCSAgKiBwby9zcS5wbzoKCSAgKiBwby9zci5wbzoKCSAgKiBwby9zdi5wbzoKCSAgKiBwby90ci5wbzoKCSAgKiBwby91ay5wbzoKCSAgKiBwby92aS5wbzoKCSAgKiBwby96aF9DTi5wbzoKCSAgKiBwby96aF9UVy5wbzoKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIDAuMTAuNi4yIHByZXJlbGVhc2UKCjIwMDYtMDYtMDcgMDg6Mzg6MzAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBGaXggbGVhayBzcG90dGVkIGJ5IGNvdmVyaXR5IGNoZWNrZXIuIEZpeGVzICMzNDM4MjcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfZ3R5cGVfcmVzb2x2ZXIpOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChwcmludF9wbHVnaW5faW5mbyk6CgkgIEZpeCBsZWFrIHNwb3R0ZWQgYnkgY292ZXJpdHkgY2hlY2tlci4gRml4ZXMgIzM0MzgyNwoJICBGaXggYW5vdGhlciBvdGhlciBsZWFrIGZvdW5kIGJ5IHBhb2xvIGJvcmVsbGkuCgoyMDA2LTA2LTA2IDE2OjUyOjU5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfcHBjNjQuaDoKCSogdGVzdHMvY2hlY2svZ3N0L3N0cnVjdF94ODZfNjQuaDoKCSAgaWZkZWYgTE9BRFNBVkUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlmZGVmIExPQURTQVZFCgoyMDA2LTA2LTA2IDE1OjE4OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbGlicy90bXBsL2dzdGNvbnRyb2wuc2dtbDoKCSAgcmVtb3ZlIG9sZCBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgb2xkIGRvY3MKCjIwMDYtMDYtMDYgMTQ6NTE6NDUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svbGlicy9saWJzYWJpLmM6CgkgIHRlcm1pbmF0ZSBpZmRlZgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGVybWluYXRlIGlmZGVmCgoyMDA2LTA2LTA2IDE0OjMyOjU1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbGlicy90bXBsL2dzdGJ5dGVzdHJlYW0uc2dtbDoKCSAgcmVtb3ZlIHVudXNlZCB0bXBsCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgdW51c2VkIHRtcGwKCjIwMDYtMDYtMDYgMTQ6Mjk6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgYWRkIG5vdGUgdG8gZG9jcyBhYm91dCBHRFAgdmVyc2lvbmluZzsgcmVtb3ZlIHRtcGwgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG5vdGUgdG8gZG9jcyBhYm91dCBHRFAgdmVyc2lvbmluZzsgcmVtb3ZlIHRtcGwgZmlsZQoKMjAwNi0wNi0wNiAxNDoyNDowMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLio6IEFQSTogYWRkIGEgR3N0RFBQYWNrZXRpemVyIG9iamVjdCwgYW5kIGNyZWF0ZS9mcmVlIGZ1bmN0aW9ucwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkgIChnc3RfZHBfaGVhZGVyX2Zyb21fYnVmZmVyX2FueSksIChnc3RfZHBfcGFja2V0X2Zyb21fY2Fwc19hbnkpLAoJICAoZ3N0X2RwX3ZlcnNpb25fZ2V0X3R5cGUpLCAoZ3N0X2RwX2luaXQpLAoJICAoZ3N0X2RwX2hlYWRlcl9mcm9tX2J1ZmZlciksIChnc3RfZHBfaGVhZGVyX2Zyb21fYnVmZmVyXzFfMCksCgkgIChnc3RfZHBfcGFja2V0X2Zyb21fY2FwcyksIChnc3RfZHBfcGFja2V0X2Zyb21fY2Fwc18xXzApLAoJICAoZ3N0X2RwX3BhY2tldF9mcm9tX2V2ZW50KSwgKGdzdF9kcF9wYWNrZXRfZnJvbV9ldmVudF8xXzApLAoJICAoZ3N0X2RwX2V2ZW50X2Zyb21fcGFja2V0XzBfMiksIChnc3RfZHBfZXZlbnRfZnJvbV9wYWNrZXRfMV8wKSwKCSAgKGdzdF9kcF9ldmVudF9mcm9tX3BhY2tldCksIChnc3RfZHBfcGFja2V0aXplcl9uZXcpLAoJICAoZ3N0X2RwX3BhY2tldGl6ZXJfZnJlZSk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5oOgoJICBBUEk6IGFkZCBhIEdzdERQUGFja2V0aXplciBvYmplY3QsIGFuZCBjcmVhdGUvZnJlZSBmdW5jdGlvbnMKCSAgQVBJOiBhZGQgR3N0RFBWZXJzaW9uIGVudW0KCSAgQWRkIDEuMCBldmVudCBmdW5jdGlvbiB0aGF0IHVzZXMgdGhlIHN0cmluZyBzZXJpYWxpemF0aW9uCgkgIFNlcmlhbGl6ZSBtb3JlIHVzZWZ1bCBidWZmZXIgZmxhZ3MKCSAgRml4ZXMgIzM0Mzk4OAoKMjAwNi0wNi0wNiAxNDoyMToxMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBkb2NzL2xpYnMvdG1wbC9nc3RkYXRhcHJvdG9jb2wuc2dtbDoKCSAgYWRkIHN5bWJvbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIHN5bWJvbAoKMjAwNi0wNi0wNiAxNDoxNjozMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIHdpZHRoIHJlc3BlY3RhdGlvbml6aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aWR0aCByZXNwZWN0YXRpb25pemluZwoKMjAwNi0wNi0wNiAxNDoxMDowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB0ZXN0cy9jaGVjay86IGFkZCBwcGM2NCBzdHJ1Y3R1cmUgc2l6ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGFiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfcHBjNjQuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2xpYnNhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9wcGM2NC5oOgoJICBhZGQgcHBjNjQgc3RydWN0dXJlIHNpemVzCgoyMDA2LTA2LTA2IDEzOjU5OjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRlc3RzL2NoZWNrLzogZ2VuZXJhdGUgYW5kIGFkZCBzdHJ1Y3R1cmUgc2l6ZSBsaXN0cyBmb3IgeDg2XzY0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RhYmkuYzoKCSAgKiB0ZXN0cy9jaGVjay9nc3Qvc3RydWN0X3g4Nl82NC5oOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvbGlic2FiaS5jOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvc3RydWN0X3g4Nl82NC5oOgoJICBnZW5lcmF0ZSBhbmQgYWRkIHN0cnVjdHVyZSBzaXplIGxpc3RzIGZvciB4ODZfNjQKCjIwMDYtMDYtMDYgMTM6NTM6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSAgY29zbWV0aWNzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjb3NtZXRpY3MKCjIwMDYtMDYtMDYgMTM6NDg6MjAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suKjogZmFjdG9yIG91dCB0aGUgbWV0aG9kIGZyb20gdGVzdHMgdGhhdCBjaGVja3Mgc2l6ZSBvZiBzdHJ1Y3R1cmVzLCBhbmQgYWRkIGNvZGUgdG8gZ2VuZXJhdGUgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfYWJpX2xpc3QpOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGZhY3RvciBvdXQgdGhlIG1ldGhvZCBmcm9tIHRlc3RzIHRoYXQgY2hlY2tzIHNpemUgb2Ygc3RydWN0dXJlcywKCSAgYW5kIGFkZCBjb2RlIHRvIGdlbmVyYXRlIHRoZSBoZWFkZXIgY29udGFpbmluZyB0aGVzZSBzaXplcwoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RhYmkuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nc3Qvc3RydWN0X2kzODYuaDoKCSAgKiB0ZXN0cy9jaGVjay9saWJzL2xpYnNhYmkuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9saWJzL3N0cnVjdF9pMzg2Lmg6CgkgIHVzZSBpdAoKMjAwNi0wNi0wNiAxMzoxMTowMyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHNlZ21lbnQuaDogRG9uJ3QgdXNlIGMrKy1zdHlsZSBjb21tZW50cywgZml4ZXMgIzM0MzkyOQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5oOgoJICBEb24ndCB1c2UgYysrLXN0eWxlIGNvbW1lbnRzLCBmaXhlcyAjMzQzOTI5CgoyMDA2LTA2LTA2IDA5OjQ3OjQwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIHdoaXRlc3BhY2Uvd2lkdGggZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdoaXRlc3BhY2Uvd2lkdGggZml4ZXMKCjIwMDYtMDYtMDYgMDg6NTA6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA2LTA2LTA2IDA4OjUwOjI1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbW1vbjoKCSogZ3N0L2dzdGVycm9yLmM6CgkgIHJlbW92ZSBhbiBleHRyYSBzcGFjZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGFuIGV4dHJhIHNwYWNlCgoyMDA2LTA2LTA1IDEzOjA1OjM3ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdC5jOiBwbHVnaW5fcGF0aHMgaXMgbm90IHVzZWQgaWYgd2UgYnVpbGQgd2l0aG91dCByZWdpc3RyeSBzdXBwb3J0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIHBsdWdpbl9wYXRocyBpcyBub3QgdXNlZCBpZiB3ZSBidWlsZCB3aXRob3V0IHJlZ2lzdHJ5IHN1cHBvcnQuCgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X2NvcHkpOgoJICBfY29weSgpIHdhcyBhbHdheXMgcmV0dXJuaW5nIE5VTEwuLi4KCjIwMDYtMDYtMDUgMTI6NTU6NTggKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0c2VnbWVudC5jOiBfY29weSgpIHdhcyBhbHdheXMgcmV0dXJuaW5nIE5VTEwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X2NvcHkpOgoJICBfY29weSgpIHdhcyBhbHdheXMgcmV0dXJuaW5nIE5VTEwuLi4KCjIwMDYtMDYtMDIgMTY6NDY6MTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBmYWN0b3Igb3V0IENSQyBjb2RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgKGdzdF9kcF9oZWFkZXJfZnJvbV9idWZmZXIpLCAoZ3N0X2RwX3BhY2tldF9mcm9tX2NhcHMpLAoJICAoZ3N0X2RwX3BhY2tldF9mcm9tX2V2ZW50KToKCSAgZmFjdG9yIG91dCBDUkMgY29kZQoKMjAwNi0wNi0wMiAxNjo0NTowOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiBtYWtlIHN1cmUgd2UgdW5zZXQgY2FwcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQpOgoJICBtYWtlIHN1cmUgd2UgdW5zZXQgY2FwcwoKMjAwNi0wNi0wMiAxNjo0MTowMiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suKjogQWRkIGEgY29uZC9tdXRleCB0byB0aGUgY2hlY2sgc3VwcG9ydCBsaWIsIHNpZ25hbCB0aGlzIHdoZW5ldmVyIHdlIGFkZCB0byB0aGUgYnVmZmVycyBsaXN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfaW5pdCksCgkgIChnc3RfY2hlY2tfY2hhaW5fZnVuYyk6CgkgICogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgQWRkIGEgY29uZC9tdXRleCB0byB0aGUgY2hlY2sgc3VwcG9ydCBsaWIsIHNpZ25hbCB0aGlzIHdoZW5ldmVyIHdlCgkgIGFkZCB0byB0aGUgYnVmZmVycyBsaXN0LiBUaGlzIHdpbGwgYWxsb3cgdGVzdHMgdG8gbm90IGJ1c3ktd2FpdCBvbgoJICB0aGUgYnVmZmVyLWxpc3QuCgoyMDA2LTA2LTAyIDEwOjU4OjQ3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzogZmFjdG9yIG91dCBzb21lIGNvbW1vbiBoZWFkZXIgaW5pdCBjb2RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgKGdzdF9kcF9oZWFkZXJfZnJvbV9idWZmZXIpLCAoZ3N0X2RwX3BhY2tldF9mcm9tX2NhcHMpLAoJICAoZ3N0X2RwX3BhY2tldF9mcm9tX2V2ZW50KToKCSAgZmFjdG9yIG91dCBzb21lIGNvbW1vbiBoZWFkZXIgaW5pdCBjb2RlCgoyMDA2LTA2LTAyIDEwOjA4OjMxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIEFQSTogbWFrZSBnc3RfZHBfY3JjKCkgcHVibGljCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiAoZ3N0X2RwX2NyYyk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5oOgoJICBBUEk6IG1ha2UgZ3N0X2RwX2NyYygpIHB1YmxpYwoKMjAwNi0wNi0wMiAwOToxMzo1NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgZGVidWcgY2hhbmdlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkZWJ1ZyBjaGFuZ2UKCjIwMDYtMDYtMDEgMTg6MzA6MTkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHBsdWdpbnMvaW5kZXhlcnMvZ3N0aW5kZXhlcnMuYzogY29uZGl0aW9uYWxseSByZWdpc3RlciBmaWxlaW5kZXhlciAoZml4ZXMgIzM0MzU5OCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9pbmRleGVycy9nc3RpbmRleGVycy5jOiAocGx1Z2luX2luaXQpOgoJICBjb25kaXRpb25hbGx5IHJlZ2lzdGVyIGZpbGVpbmRleGVyIChmaXhlcyAjMzQzNTk4KQoKMjAwNi0wNi0wMSAxODoyMjoxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHRhZ3NldHRlci5oOiBDYW4ndCBjYXN0IGlmYWNlcyB0byBhIGNsYXNzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuaDoKCSAgQ2FuJ3QgY2FzdCBpZmFjZXMgdG8gYSBjbGFzcwoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5oOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuaDoKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOgoJICAqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0bWVtaW5kZXguYzoKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvcGx1Z2lucy9leGFtcGxlLmg6CgkgIEZpeCBtb3JlIGdvYmplY3QgbWFjcm9zOiBvYmo8LT5rbGFzcywgR3N0WFhYPC0+R3N0WFhYQ2xhc3MKCjIwMDYtMDYtMDEgMTE6MTM6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBtYWtlIHN1cmUgd2UgemVybyB0aGUgd2hvbGUgQUJJLWNvbXBhdGlibGUgYXJlYQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkgIChnc3RfZHBfaGVhZGVyX2Zyb21fYnVmZmVyKToKCSAgbWFrZSBzdXJlIHdlIHplcm8gdGhlIHdob2xlIEFCSS1jb21wYXRpYmxlIGFyZWEKCjIwMDYtMDYtMDEgMDk6MDI6MjMgKzAwMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvQG5udmEub3JnPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBNYWtlIHN1cmUgdGhlIEVPUyBmbGFnIGlzIGNsZWFyZWQgZnJvbSBwYWRzIGFmdGVyIGEgZmx1c2ggb3Igc3RvcC4gRml4ZXMgIzM0MzUzOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRybyBhdCBubnZhIGRvdCBvcmc+CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19zdG9wKToKCSAgTWFrZSBzdXJlIHRoZSBFT1MgZmxhZyBpcyBjbGVhcmVkIGZyb20gcGFkcyBhZnRlciBhIGZsdXNoCgkgIG9yIHN0b3AuIEZpeGVzICMzNDM1MzguCgkgICogdGVzdHMvY2hlY2svbGlicy9jb2xsZWN0cGFkcy5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19zdWl0ZSk6CgkgIEFkZGVkIHRlc3QgZm9yIGNvbGxlY3RwYWRzIHJldXNhZ2UgYWZ0ZXIgRU9TLgoKMjAwNi0wNS0zMCAyMDoyNTowMyArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdC5jOiBzZXQgI2luY2x1ZGUgPHN5cy93YWl0Lmg+IGluIGEgI2lmZGVmICNpZmRlZiBIQVZFX0ZPUksKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOgoJICBzZXQgI2luY2x1ZGUgPHN5cy93YWl0Lmg+IGluIGEgI2lmZGVmICNpZmRlZiBIQVZFX0ZPUksKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgIGV4cG9ydCBnc3RfY29sbGVjdF9wYWRzX3NldF9mbHVzaGluZwoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBleHBvcnQgZ3N0X3BhZF9zZXRfYWNjZXB0Y2Fwc19mdW5jdGlvbiwgZ3N0X3N0cnVjdHVyZV9lbXB0eV9uZXcsCgkgIGdzdF92YWx1ZV9mcmFjdGlvbl9tdWx0aXBseQoJICAqIHdpbjMyL3ZzNi9nc3RfaW5zcGVjdC5kc3A6CgkgIGFkZCBhIGxpbmsgdG8gaW50bC5saWIKCjIwMDYtMDUtMzAgMTU6NTU6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHBhZCBpcyByZW1vdmVkIGZyb20gdGhlIGNvbGxlY3Rpb24gdGhhdCBjb3VsZCBjYXVzZSB0aGUgb3RoZXIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfY2hhaW4pOgoJICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBwYWQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBjb2xsZWN0aW9uCgkgIHRoYXQgY291bGQgY2F1c2UgdGhlIG90aGVyIHBhZHMgdG8gYmVjb21lIGNvbGxlY3RhYmxlLgoKMjAwNi0wNS0zMCAxNTo1Mzo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IENsYXJpZnkgdGhlIHVzZSBvZiBfcmVsZWFzZV9yZXF1ZXN0X3BhZCgpIGFuZCBfZ2V0X3JlcXVlc3RfcGFkKCkgYSBiaXQgYmV0dGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBDbGFyaWZ5IHRoZSB1c2Ugb2YgX3JlbGVhc2VfcmVxdWVzdF9wYWQoKSBhbmQKCSAgX2dldF9yZXF1ZXN0X3BhZCgpIGEgYml0IGJldHRlci4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzogKGdzdF9hZGFwdGVyX3BlZWspLAoJICAoZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIpOgoJICBGaXggc29tZSBkb2MgYW5kIGNvbW1lbnQgdHlwb3MuCgoyMDA2LTA1LTMwIDE0OjQzOjM1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvOiBhZGQgZGVjbGFyZWQgc3ltYm9scwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIGFkZCBkZWNsYXJlZCBzeW1ib2xzCgoyMDA2LTA1LTMwIDE0OjQxOjE1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgdXBkYXRlIHBvIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgcG8gZmlsZXMKCjIwMDYtMDUtMzAgMTQ6NDA6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGZpeCBidWlsZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGJ1aWxkCgoyMDA2LTA1LTMwIDE0OjAzOjU4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgYWRkZWQgSEFWRV9GT1JLCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGRlZCBIQVZFX0ZPUksKCjIwMDYtMDUtMzAgMTI6MDQ6MjkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IEFkZCBkZWJ1ZyB0aGF0IGNhbiBiZSBlbmFibGVkIHVzaW5nIGEgI2RlZmluZSBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBmb3IgZHVtcGluZyBzdGF0cyBhYm91dCBoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pZF93YWl0X3VubG9ja2VkKToKCSAgQWRkIGRlYnVnIHRoYXQgY2FuIGJlIGVuYWJsZWQgdXNpbmcgYSAjZGVmaW5lIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsCgkgIGZvciBkdW1waW5nIHN0YXRzIGFib3V0IGhvdyBsYXRlL2Vhcmx5IHdlIHdlcmUgd2hlbiB3YWtpbmcgdXAgZnJvbQoJICB3YWl0aW5nIG9uIHRoZSBjbG9jay4KCjIwMDYtMDUtMzAgMTE6NDM6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IFdoZW4gcmVidWlsZGluZyB0aGUgcGFkIGxpc3QsIGRvbid0IGxlYWsgdGhlIHByZXZpb3VzIGxpc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfY2hlY2tfcGFkcyk6CgkgIFdoZW4gcmVidWlsZGluZyB0aGUgcGFkIGxpc3QsIGRvbid0IGxlYWsgdGhlIHByZXZpb3VzIGxpc3QuCgoyMDA2LTA1LTMwIDEwOjU3OjQ0ICswMDAwICBMdXR6IE11ZWxsZXIgPGx1dHpAdG9wZnJvc2UuZGU+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogUHVibGlzaCBzdXBwb3J0ZWQgcXVlcnkgdHlwZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogTHV0eiBNdWVsbGVyIDxsdXR6IGF0IHRvcGZyb3NlIGRvdCBkZT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcXVlcnlfdHlwZXMpLCAoZ3N0X2Jhc2Vfc3JjX3VwZGF0ZV9sZW5ndGgpOgoJICBQdWJsaXNoIHN1cHBvcnRlZCBxdWVyeSB0eXBlcy4KCSAgVXBkYXRlIGxhc3Rfc3RvcCBmaWVsZCBpbiBnZXRfcmFuZ2UgbW9kZSBzbyB0aGUgcG9zaXRpb24KCSAgcXVlcnkgd29ya3MuIEZpeGVzICMzNDIzMjEuCgoyMDA2LTA1LTMwIDEwOjEyOjAyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgR1NUX1RBR19QUkVWSUVXX0lNQUdFICgjMzQzMzQxKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgQVBJOiBhZGQgR1NUX1RBR19QUkVWSUVXX0lNQUdFICgjMzQzMzQxKS4KCjIwMDYtMDUtMzAgMDk6NDI6MDkgKzAwMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvQG5udmEub3JnPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBVbmxvY2sgbXV0ZXggd2hlbiByZW1vdmluZyBhbiB1bmtub3duIHBhZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRybyBhdCBubnZhIGRvdCBvcmc+CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKToKCSAgVW5sb2NrIG11dGV4IHdoZW4gcmVtb3ZpbmcgYW4gdW5rbm93biBwYWQuCgkgIEZpeGVzICMzNDMzMzQuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy9jb2xsZWN0cGFkcy5jOiAoY29sbGVjdGVkX2NiKSwgKHB1c2hfYnVmZmVyKSwKCSAgKHB1c2hfZXZlbnQpLCAoc2V0dXApLCAodGVhcmRvd24pLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19zdWl0ZSksIChtYWluKToKCSAgQWRkZWQgY29sbGVjcGFkcyBjaGVjaywgZGlzYWJsZWQgZm9yIG5vdyBhcyBjaGVjayBjcmFzaGVzIGZvcgoJICBzb21lIHJlYXNvbi4KCjIwMDYtMDUtMjkgMTc6MjA6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IERvbid0IGxlYWsgcGFkcyBsaXN0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19maW5hbGl6ZSk6CgkgIERvbid0IGxlYWsgcGFkcyBsaXN0cy4KCjIwMDYtMDUtMjkgMTY6MDA6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBUEk6IGdzdF9jb2xsZWN0X3BhZHNfc2V0X2ZsdXNoaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJICAoZ3N0X2NvbGxlY3RfcGFkc19zZXRfZmx1c2hpbmdfdW5sb2NrZWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19zZXRfZmx1c2hpbmcpLCAoZ3N0X2NvbGxlY3RfcGFkc19zdGFydCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3N0b3ApOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgQVBJOiBnc3RfY29sbGVjdF9wYWRzX3NldF9mbHVzaGluZwoJICBBZGRlZCBhcGkgdG8gc2V0IHRoZSBwYWRzIHRvIGZsdXNoaW5nLCB1c2VmdWxsIGZvciBzZWVraW5nCgkgIGNvZGUgaW4gZWxlbWVudHMgdXNpbmcgY29sbGVjdHBhZHMuCgkgIENsZWFyIHNlZ21lbnQgd2hlbiByZWNlaXZpbmcgYSBmbHVzaC4KCjIwMDYtMDUtMjkgMTE6NTI6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IERvbid0IHNjYW4gcmVnaXN0cnkgcGF0aHMgcGFzc2VkIHZpYSAtLWdzdC1wbHVnaW4tLXBhdGggaW1tZWRpYXRlbHkgKHdpbGwgY3Jhc2gsIGJlY2F1c2UgYWJzb2x1dGVseSBub3RoaW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoYWRkX3BhdGhfZnVuYyksIChpbml0X3Bvc3QpOgoJICBEb24ndCBzY2FuIHJlZ2lzdHJ5IHBhdGhzIHBhc3NlZCB2aWEgLS1nc3QtcGx1Z2luLS1wYXRoIGltbWVkaWF0ZWx5CgkgICh3aWxsIGNyYXNoLCBiZWNhdXNlIGFic29sdXRlbHkgbm90aGluZyBpcyBzZXQgdXAgYW5kIG5vIHR5cGVzIGFyZQoJICByZWdpc3RlcmVkIGV0Yy4pOyBkbyB0aGlzIGxhdGVyIGluIGluaXRfcG9zdCgpLiBGaXhlcyAjMzQzMDU3LgoKMjAwNi0wNS0yOCAwOTowOTowMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0LmM6IGlmIHdlIGhhdmUgZm9yaywgZm9yayB3aGlsZSByZWFkaW5nL3JlYnVpbGRpbmcgdGhlIHJlZ2lzdHJ5IHNvIHRoZSBwYXJlbnQgZG9lc24ndCB0YWtlIHRoZSBoaXQgb2YgaGF2aW5nIGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgaWYgd2UgaGF2ZSBmb3JrLCBmb3JrIHdoaWxlIHJlYWRpbmcvcmVidWlsZGluZyB0aGUgcmVnaXN0cnkKCSAgc28gdGhlIHBhcmVudCBkb2Vzbid0IHRha2UgdGhlIGhpdCBvZiBoYXZpbmcgYWxsIHBsdWdpbnMgbG9hZGVkCgkgIGluIG1lbW9yeS4gIEZpeGVzICMzNDI3NzcuCgkgICogY29uZmlndXJlLmFjOgoJICBDaGVjayBpZiB3ZSBoYXZlIGZvcmsoKQoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgbm8gZm9yaygpIG9uIHdpbjMyCgoyMDA2LTA1LTI2IDEzOjUyOjAzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvOiBBZGQgYSB1c2UtbW1hcCBwcm9wZXJ0eSB0byBlbmFibGUgZWFzaWVyIHRlc3Rpbmcgb2YgYWxsIGNvZGUgcGF0aHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9maWxlX3NyY19pbml0KSwgKGdzdF9maWxlX3NyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2ZpbGVfc3JjX2dldF9wcm9wZXJ0eSksIChnc3RfZmlsZV9zcmNfc3RhcnQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5oOgoJICBBZGQgYSB1c2UtbW1hcCBwcm9wZXJ0eSB0byBlbmFibGUgZWFzaWVyIHRlc3Rpbmcgb2YgYWxsIGNvZGUgcGF0aHMuCgkgIEJ1bXAgcmFuayB0byBQUklNQVJZLCBzbyBmaWxlc3JjIGlzIHRoZSBwcmVmZXJyZWQgZmlsZSByZWFkZXIgYW5kIHVzZWQKCSAgaW4gdGhlIGFic2VuY2Ugb2YgZ25vbWV2ZnNzcmMuIChDbG9zZXMgIzM0MDUwMSkKCjIwMDYtMDUtMjYgMTA6MzU6MzQgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBBZGQgbWlzc2luZyBpbmNsdWRlLCByZW1vdmVzIHdhcm5pbmcgb2YgbmdldHRleHQgbm90IGJlaW5nIGRlZmluZWQgb24gc29tZSBhcmNoZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTA1LTI2ICBaYWhlZXIgQWJiYXMgTWVyYWxpICA8emFoZWVyYWJiYXMgYXQgbWVyYWxpIGRvdCBvcmc+CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSAgQWRkIG1pc3NpbmcgaW5jbHVkZSwgcmVtb3ZlcyB3YXJuaW5nIG9mIG5nZXR0ZXh0IG5vdCBiZWluZyBkZWZpbmVkIG9uCgkgIHNvbWUgYXJjaGVzLgoKMjAwNi0wNS0yNiAwOToxOToyNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0dmFsdWUuYzogSGFuZGxlIE5VTEwgaW5wdXQgYW5kIG91dHB1dCBwb2ludGVycyBzaWxlbnRseSBhcyBhIGZhaWxlZCBjb252ZXJzaW9uLCByYXRoZXIgdGhhbiBnX3dhcm5pbmdzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9mcmFjdGlvbik6CgkgIEhhbmRsZSBOVUxMIGlucHV0IGFuZCBvdXRwdXQgcG9pbnRlcnMgc2lsZW50bHkgYXMgYSBmYWlsZWQgY29udmVyc2lvbiwKCSAgcmF0aGVyIHRoYW4gZ193YXJuaW5ncy4KCjIwMDYtMDUtMjUgMTU6NTI6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzogSW5pdGlhbGl6ZSB2YXJpYWJsZSBiZWZvcmUgdXNpbmcuIEZpeGVzICMzNDI4MjAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiAoZ3N0X25ldF9jbGllbnRfY2xvY2tfc3RhcnQpOgoJICBJbml0aWFsaXplIHZhcmlhYmxlIGJlZm9yZSB1c2luZy4gRml4ZXMgIzM0MjgyMC4KCjIwMDYtMDUtMjQgMTc6MTE6MDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IEZpeCBvZmYtYnktb25lIGJ1ZyB0aGF0IHdvdWxkIG9ubHkgYWxsb3cgcGVla3Mgb2YgTi0xIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IGV2ZW4gaWYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAoYnVmX2hlbHBlcl9maW5kX3BlZWspOgoJICBGaXggb2ZmLWJ5LW9uZSBidWcgdGhhdCB3b3VsZCBvbmx5IGFsbG93IHBlZWtzIG9mIE4tMSBieXRlcwoJICBmcm9tIHRoZSBzdGFydCBldmVuIGlmIHRoZSBidWZmZXIgdG8gdHlwZWZpbmQgb24gY29udGFpbnMKCSAgaW4gZmFjdCBOIGJ5dGVzIG9mIGRhdGEgKG1ha2VzIHZvcmJpcyB0eXBlZmluZGluZyBmcm9tIGEKCSAgdm9yYmlzIGlkZW50aWZpY2F0aW9uIGhlYWRlciBidWZmZXIgd29yaykuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvdHlwZWZpbmRoZWxwZXIuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF90eXBlZmluZGhlbHBlcl9zdWl0ZSksIChtYWluKSwgKGZvb2Jhcl90eXBlZmluZCksCgkgIChwbHVnaW5faW5pdCk6CgkgIEFkZCB2ZXJ5IGJhc2ljIHVuaXQgdGVzdCBmb3IgZ3N0X3R5cGVfZmluZF9oZWxwZXJfZm9yX2J1ZmZlcigpCgkgIHRoYXQgY2hlY2tzIGZvciB0aGUgcHJvYmxlbSBmaXhlZCBhYm92ZS4KCjIwMDYtMDUtMjQgMDk6MDA6NDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHR5cGVmaW5kLmM6CgkgIGRvYyBpbmRlbnQgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb2MgaW5kZW50IGZpeAoKMjAwNi0wNS0yNCAwOTowMDoxMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIG1hcmsgbW9yZSBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFyayBtb3JlIHN0cmluZ3MgZm9yIHRyYW5zbGF0aW9uCgoyMDA2LTA1LTIzIDE0OjIzOjQ5ICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IE1ha2UgbmV3IEdTVF9GTE9XX0lTX1NVQ0NFU1MgbWFjcm8gdmlzaWJsZSBpbiBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IEp1bGllbiBNb3V0dGUgIDxqdWxpZW4gYXQgbW91dHRlIG5ldD4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBNYWtlIG5ldyBHU1RfRkxPV19JU19TVUNDRVNTIG1hY3JvIHZpc2libGUgaW4gZG9jcy4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Zha2Vfc2lua19wcmVyb2xsKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmg6CgkgIEFkZCBuZXcgOjpwcmVyb2xsLWhhbmRvZmYgc2lnbmFsICgjMzM3MTAwKS4KCjIwMDYtMDUtMjMgMTE6MTM6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLio6IEFkZGVkIF9DVVNUT00gZXJyb3IgYW5kIHN1Y2Nlc3MgR3N0Rmxvd1JldHVybiB0aGF0IGNhbiBiZSB1c2VkIGJlIGVsZW1lbnRzIGludGVybmFsbHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9mbG93X2dldF9uYW1lKSwgKGdzdF9mbG93X3RvX3F1YXJrKToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIEFkZGVkIF9DVVNUT00gZXJyb3IgYW5kIHN1Y2Nlc3MgR3N0Rmxvd1JldHVybiB0aGF0IGNhbiBiZQoJICB1c2VkIGJlIGVsZW1lbnRzIGludGVybmFsbHkuCgkgIEFkZGVkIG1hY3JvIHRvIGNoZWNrIGZvciBTVUNDRVNTIGZsb3dyZXR1cm5zLgoJICBBUEk6IEdTVF9GTE9XX0NVU1RPTV9TVUNDRVNTCgkgIEFQSTogR1NUX0ZMT1dfQ1VTVE9NX0VSUk9SCgkgIEFQSTogR1NUX0ZMT1dfSVNfU1VDQ0VTUwoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9wYWRfc3VpdGUpOgoJICBBZGRlZCBjaGVjayBmb3IgR3N0Rmxvd1JldHVybiBzYW5pdHkuCgoyMDA2LTA1LTIzIDA5OjQwOjE0ICswMDAwICBNYXJrIE5hdXdlbGFlcnRzIDxtYW5hdXdAc2t5bmV0LmJlPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBjbGVhci9yZXNldCBzZWdtZW50IGluZm8gaW4gRkxVU0hfU1RPUC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBNYXJrIE5hdXdlbGFlcnRzIDxtYW5hdXcgYXQgc2t5bmV0IGRvdCBiZT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX3JlbW92ZV9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCk6CgkgIGNsZWFyL3Jlc2V0IHNlZ21lbnQgaW5mbyBpbiBGTFVTSF9TVE9QLgoJICBGaXhlcyAjMzM2OTI5LgoKMjAwNi0wNS0yMiAxNjozMDozNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBGbHVzaCBxdWV1ZWQgYnVmZmVyIG9uIF9zdG9wKCksIGZpeGVzIHBsYXlpbmcgYWdhaW4gKCMzNDI0NTQpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2NoZWNrX2NvbGxlY3RlZCk6CgkgIEZsdXNoIHF1ZXVlZCBidWZmZXIgb24gX3N0b3AoKSwgZml4ZXMgcGxheWluZyBhZ2FpbiAoIzM0MjQ1NCkKCjIwMDYtMDUtMjIgMTM6MzQ6MDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiBhZGQgYSB0ZXN0IGZvciBhIGNvbXBsZXRlIHN0cnVjdHVyZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3RydWN0dXJlLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3Rfc3RydWN0dXJlX3N1aXRlKToKCSAgYWRkIGEgdGVzdCBmb3IgYSBjb21wbGV0ZSBzdHJ1Y3R1cmUKCjIwMDYtMDUtMjIgMTM6MzE6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSAgZGVidWdnaW5nIGNoYW5nZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRlYnVnZ2luZyBjaGFuZ2VzCgoyMDA2LTA1LTE5IDE1OjM1OjQxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9mYXEvOiBTb21lIG1pbm9yIEZBUSB1cGRhdGVzIHRoYXQgd29uJ3QgY2hhbmdlIHRoZSBmYWN0IHRoYXQgb3VyIEZBUSBpcyBiYWRseSBzdHJ1Y3R1cmVkLCBmdWxsIG9mIGluZm9ybWF0aW9uIGhhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2RldmVsb3BpbmcueG1sOgoJICAqIGRvY3MvZmFxL2ZhcS54bWw6CgkgICogZG9jcy9mYXEvdHJvdWJsZXNob290aW5nLnhtbDoKCSAgKiBkb2NzL2ZhcS91c2luZy54bWw6CgkgIFNvbWUgbWlub3IgRkFRIHVwZGF0ZXMgdGhhdCB3b24ndCBjaGFuZ2UgdGhlIGZhY3QgdGhhdAoJICBvdXIgRkFRIGlzIGJhZGx5IHN0cnVjdHVyZWQsIGZ1bGwgb2YgaW5mb3JtYXRpb24gaGFyZGx5CgkgIGFueW9uZSBuZXcgdG8gR1N0cmVhbWVyIG5lZWRzIHRvIGtub3cgYW5kIGxhY2tpbmcgbG90cwoJICBvZiBpbmZvcm1hdGlvbiBwZW9wbGUgY29uc3RhbnRseSBhc2sgZm9yLgoKMjAwNi0wNS0xOSAxMzo0NjoxMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IFNob3J0LWNpcmN1aXQgZ3N0X3BhZF9zZXRfY2FwcyBpZiBzZXR0aW5nIHRoZSBleGlzdGluZyBjYXBzIHBvaW50ZXIgYWdhaW4sIGFuZCBhdm9pZCBwcmludGluZyBkZWJ1ZyBhbmQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfY2Fwcyk6CgkgIFNob3J0LWNpcmN1aXQgZ3N0X3BhZF9zZXRfY2FwcyBpZiBzZXR0aW5nIHRoZSBleGlzdGluZwoJICBjYXBzIHBvaW50ZXIgYWdhaW4sIGFuZCBhdm9pZCBwcmludGluZyBkZWJ1ZyBhbmQKCSAgcmVmZmluZy91bnJlZmZpbmcgdGhlIGNhcHMuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX3B1c2hfb25lKToKCSAgVGhlcmUncyBhY3R1YWxseSBubyBuZWVkIHRvIHNldCB0aGUgY2FwcyBiZWZvcmUgcHVzaGluZyAtCgkgIHRoZSBhY2NlcHRjYXBzIG1ldGhvZCB3aWxsIGhhbmRsZSBpdCBhbnl3YXkuCgoyMDA2LTA1LTE5IDEwOjI5OjA3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQVBJOiBhZGQgZ3N0X2VsZW1lbnRfc2Vla19zaW1wbGUoKSAoIzM0MjIzOCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9zZWVrX3NpbXBsZSk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFQSTogYWRkIGdzdF9lbGVtZW50X3NlZWtfc2ltcGxlKCkgKCMzNDIyMzgpLgoKMjAwNi0wNS0xOCAxNDoyNTowMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3R0eXBlZmluZC4qOiBBZGRlZCBHU1RfVFlQRV9UWVBFX0ZJTkQgYW5kIGdzdF90eXBlX2ZpbmRfZ2V0X3R5cGUoKSBzbyBhIEdUeXBlIGdldHMgcmVnaXN0ZXJlZCBmb3IgR3N0VHlwZUZpbmQgcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmQuYzogKGdzdF90eXBlX2ZpbmRfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3R0eXBlZmluZC5oOgoJICBBZGRlZCBHU1RfVFlQRV9UWVBFX0ZJTkQgYW5kIGdzdF90eXBlX2ZpbmRfZ2V0X3R5cGUoKSBzbyBhIEdUeXBlIGdldHMKCSAgcmVnaXN0ZXJlZCBmb3IgR3N0VHlwZUZpbmQgcG9pbnRlcnMuIFRoaXMgYWxsb3dzIHdyYXBwaW5nIHRoZSBzdHJ1Y3R1cmUKCSAgaW4gYmluZGluZ3MgKGkuZS4gZ3N0LXB5dGhvbikuCgoyMDA2LTA1LTE4IDE0OjAxOjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHRhZ3NldHRlci5jOiBEb2NzIGFkZGl0aW9ucyBhbmQgZml4ZXMgKHNlZSAjMzM5OTE4KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ3NldHRlci5jOgoJICBEb2NzIGFkZGl0aW9ucyBhbmQgZml4ZXMgKHNlZSAjMzM5OTE4KS4KCjIwMDYtMDUtMTggMDk6MDc6NTUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IFRoZSBjYXBzIGludGVyc2VjdGlvbiBhbGdvcml0aG0gY2FuIHByb2R1Y2UgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBjYXBzLiBVbnRpbCB0aGF0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfcHJlcGFyZV9idWYpOgoJICBUaGUgY2FwcyBpbnRlcnNlY3Rpb24gYWxnb3JpdGhtIGNhbiBwcm9kdWNlIG11bHRpcGxlIGNvcGllcyBvZiB0aGUKCSAgY2Fwcy4gVW50aWwgdGhhdCBpcyBmaXhlZCwgd2UgbmVlZCB0byBzaW1wbGlmeSB0aGUgcmVzdWx0IHRvIGJlCgkgIHN1cmUgd2hldGhlciB0aGUgYWxsb3dlZCBjYXBzIGFyZSBmaXhlZCBvciBub3QuCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2luaXQpLAoJICAoZ3N0X3F1ZXVlX2J1ZmZlcmFsbG9jKSwgKGdzdF9xdWV1ZV9hY2NlcHRjYXBzKSwKCSAgKGdzdF9xdWV1ZV9wdXNoX29uZSk6CgkgIFByb3hpZWQgYnVmZmVyIGFsbG9jIHNob3VsZCBub3Qgc2V0IHRoZSBjYXBzIG9uIHRoZSBzb3VyY2UgcGFkLgoJICBXaGVuIHB1c2hpbmcgYnVmZmVycywgd2UgYWx3YXlzIGFjY2VwdCB0aGUgY2FwcyBjaGFuZ2UgdGhhdCB0cmlnZ2Vycy4KCSAgVGhpcyBwcmV2ZW50cyBuZWdvdGlhdGlvbiBlcnJvcnMgY2F1c2VkIGJ5IGNhcHMgY2hhbmdpbmcgbWlkLXN0cmVhbQoJICBhbmQgdGhlbiBiZWluZyByZWZ1c2VkIG9uIG91ciBzb3VyY2UgcGFkIChiZWNhdXNlIHVwc3RyZWFtIGlzIG5vdwoJICByZWZ1c2luZyB0aG9zZSBjYXBzKS4KCjIwMDYtMDUtMTggMDg6NDg6MjEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0ZXN0cy9leGFtcGxlcy9oZWxsb3dvcmxkL2hlbGxvd29ybGQuYzogTXVzdCBwbHVnIGF1ZGlvY29udmVydCBhbmQgYXVkaW9yZXNhbXBsZSBiZXR3ZWVuIGRlY29kZXIgYW5kIGF1ZGlvIHNpbmsuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2V4YW1wbGVzL2hlbGxvd29ybGQvaGVsbG93b3JsZC5jOiAobWFpbik6CgkgIE11c3QgcGx1ZyBhdWRpb2NvbnZlcnQgYW5kIGF1ZGlvcmVzYW1wbGUgYmV0d2VlbiBkZWNvZGVyCgkgIGFuZCBhdWRpbyBzaW5rLgoKMjAwNi0wNS0xNyAxNDoxODoxMiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIE1lbnRpb24gYnVnIGZpeGVkIGJ5IHByZXZpb3VzIGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgTWVudGlvbiBidWcgZml4ZWQgYnkgcHJldmlvdXMgY29tbWl0CgoyMDA2LTA1LTE3IDE0OjAxOjMzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiBBbGxvdyBlbXB0eSBzdHJpbmdzIGZvciBzb21lIG9mIHRoZSBwbHVnaW4gZmllbGRzIHNvIHdlIGRvbid0IGRyb3AgdmFsaWQgcGx1Z2luIGVudHJpZXMgdGhhdCB3ZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKHJlYWRfc3RyaW5nKSwgKGxvYWRfcGFkX3RlbXBsYXRlKSwKCSAgKGxvYWRfZmVhdHVyZSksIChsb2FkX3BsdWdpbik6CgkgIEFsbG93IGVtcHR5IHN0cmluZ3MgZm9yIHNvbWUgb2YgdGhlIHBsdWdpbiBmaWVsZHMgc28gd2UgZG9uJ3QKCSAgZHJvcCB2YWxpZCBwbHVnaW4gZW50cmllcyB0aGF0IHdlcmUgd3JpdHRlbiBvdXQgY29ycmVjdGx5LgoKMjAwNi0wNS0xNyAxMzo0MDoyMCArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IFVzZSBnX3JlbW92ZSBhbmQgZ19yZW5hbWUgaW5zdGVhZCBvZiByZW1vdmUgYW5kIHJlbmFtZSB0aGF0IGRvbid0IGhhbmRsZSB1dGY4IGNoYXJhY3RlcnMuIHJlbmFtLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAoZ3N0X3JlZ2lzdHJ5X3htbF93cml0ZV9jYWNoZSk6CgkgIFVzZSBnX3JlbW92ZSBhbmQgZ19yZW5hbWUgaW5zdGVhZCBvZiByZW1vdmUgYW5kIHJlbmFtZSB0aGF0IGRvbid0CgkgIGhhbmRsZSB1dGY4IGNoYXJhY3RlcnMuIHJlbmFtZSB3YXMgZmFpbGluZyBmb3IgdXNlcnMgd2hvIGhhZCBzcGVjaWZpYwoJICBjaGFyYWN0ZXJzIGluIHRoZWlyIG5hbWUgdGhlbiB0aGUgcmVnaXN0cnkgd2FzIGJ1aWx0IGF0IGVhY2ggZ3N0cmVhbWVyIGluaXQuCgkgICogd2luMzIvdnM2L2dzdF9pbnNwZWN0LmRzcDoKCSAgKiB3aW4zMi92czYvZ3N0X2xhdW5jaC5kc3A6CgkgICogd2luMzIvdnM2L2xpYmdzdGJhc2UuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3Rjb3JlZWxlbWVudHMuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3RyZWFtZXIuZHNwOgoJICBVc2UgYSBkZWJ1ZyB2ZXJzaW9uIG9mIGxpYnhtbDIgKGxpYnhtbDJELmxpYixsaWJ4bWwyRC5kbGwpIGZvciBERUJVRyBidWlsZAoJICBvZiBsaWJnc3RyZWFtZXIgYW5kIGNsZWFuIHVudXNlZCBsaWJyYXJpZXMgaW4gcHJvamVjdCBsaW5rcyBzZXR0aW5ncy4KCjIwMDYtMDUtMTcgMDk6MjQ6MzQgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IFRoZSBxdWV1ZSBpcyBub3QgcmVzcG9uc2libGUgZm9yIHB1c2hpbmcgYW4gRU9TIHdoZW4gcmVjZWl2aW5nIGEgZmF0YWwgZmxvdyBlcnJvci4gSXQncyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX3B1c2hfb25lKToKCSAgVGhlIHF1ZXVlIGlzIG5vdCByZXNwb25zaWJsZSBmb3IgcHVzaGluZyBhbiBFT1Mgd2hlbiByZWNlaXZpbmcgYSBmYXRhbAoJICBmbG93IGVycm9yLiBJdCdzIHVwIHRvIHRoZSByZWFsIGVsZW1lbnQgZHJpdmluZyB0aGUgcGlwZWxpbmUgdG8gZG8gdGhhdC4KCjIwMDYtMDUtMTYgMTc6MTU6MDIgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IFRoZSBxdWV1ZSB3YXMgcG9zdGluZyBhIG5vbi1uZWVkZWQgR1NUX01FU1NBR0VfRVJST1Igd2hlbiBwdXNoaW5nIGEgYnVmZmVyIHJldHVybmVkIGEgZmEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX3B1c2hfb25lKToKCSAgVGhlIHF1ZXVlIHdhcyBwb3N0aW5nIGEgbm9uLW5lZWRlZCBHU1RfTUVTU0FHRV9FUlJPUiB3aGVuIHB1c2hpbmcgYQoJICBidWZmZXIgcmV0dXJuZWQgYSBmYXRhbCBlcnJvci4gSXQgc2hvdWxkIGp1c3Qgc2VuZCBhbiBFT1MgYW5kIHN0b3AKCSAgaXQncyB0YXNrLgoJICBVcHN0cmVhbSBlbGVtZW50cyB3aWxsIHRoZW4gcHJvcGVybHkgcmVjZWl2ZSB0aGUgR1NUX0ZMT1dfVU5FWFBFQ1RFRAoJICB3aGVuIHB1c2hpbmcgYnVmZmVycyBvbiB0aGUgcXVldWUgYW5kIHdpbGwgYmUgYWJsZSB0byBoYW5kbGUgdGhlIGV2ZW50LgoKMjAwNi0wNS0xNiAxNjoxMDozOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsLzogRml4IHR5cG9zIGFuZCBtaW5vciBlcnJvcnMgaW4gc2FtcGxlIGNvZGUgKCMzNDE4NTYpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYmlucy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWluaXQueG1sOgoJICBGaXggdHlwb3MgYW5kIG1pbm9yIGVycm9ycyBpbiBzYW1wbGUgY29kZSAoIzM0MTg1NikuCgoyMDA2LTA1LTE2IDEzOjMxOjMyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1xb3MudHh0OiBGaXggaW5kZXhlcyBpbiBmb3JtdWxhcyB0byBtYWtlIG1vcmUgc2Vuc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcW9zLnR4dDoKCSAgRml4IGluZGV4ZXMgaW4gZm9ybXVsYXMgdG8gbWFrZSBtb3JlIHNlbnNlLgoKMjAwNi0wNS0xNSAxMTo1NDoyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRG9uJ3QgcmVwb3J0IFBPU0lUSU9OIGJhc2VkIG9uIGNsb2NrIHRpbWUgaWYgc3luYyBpcyBkaXNhYmxlZCBpbiBhIHNpbmsuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgRG9uJ3QgcmVwb3J0IFBPU0lUSU9OIGJhc2VkIG9uIGNsb2NrIHRpbWUgaWYgc3luYyBpcwoJICBkaXNhYmxlZCBpbiBhIHNpbmsuCgoyMDA2LTA1LTE1IDA4OjE2OjA5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdG9iamVjdC5oOiBBZGQgY2FzdCB0byBtYWtlIGNvbXBpbGVyIGhhcHB5IC0gcmVmY291bnQgdmFyaWFibGUgd2FzIGEgZ2ludCBpbiBHc3RPYmplY3QgYnV0IGlzIGEgZ3VpbnQgaW4gR09iamVjLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgQWRkIGNhc3QgdG8gbWFrZSBjb21waWxlciBoYXBweSAtIHJlZmNvdW50IHZhcmlhYmxlIHdhcyBhIGdpbnQKCSAgaW4gR3N0T2JqZWN0IGJ1dCBpcyBhIGd1aW50IGluIEdPYmplY3QgYW5kIGdfYXRvbWljX2ludF9nZXQoKQoJICB3YW50cyBhIGdpbnQgKi4KCjIwMDYtMDUtMTQgMjM6MjM6NTYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvcGFyc2UvTWFrZWZpbGUuYW06CgkgIGZpeCBwYXJhbGxlbCBtYWtlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggcGFyYWxsZWwgbWFrZQoKMjAwNi0wNS0xNCAyMToxODoyMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHVwZGF0ZSBjb25maWcuaAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGNvbmZpZy5oCgoyMDA2LTA1LTE0IDIxOjE2OjU4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RwYWQuaDoKCSAgd2hpdGVzcGFjZSBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgd2hpdGVzcGFjZSBmaXhlcwoKMjAwNi0wNS0xNCAyMToxNjo1MCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL3JhbmRvbS9zdHJlYW1oZWFkZXI6CgkgIHNvbWUgc3RyZWFtaGVhZGVyIHVwZGF0ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNvbWUgc3RyZWFtaGVhZGVyIHVwZGF0ZXMKCjIwMDYtMDUtMTQgMTk6MjU6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBNaW5vciBkb2NzIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIE1pbm9yIGRvY3MgZml4ZXMuCgoyMDA2LTA1LTE0IDE2OjAzOjIwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIGNvbW1vbjoKCSogY29uZmlndXJlLmFjOgoJICBCYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQmFjayB0byBDVlMKCj09PSByZWxlYXNlIDAuMTAuNiA9PT0KCjIwMDYtMDUtMTQgMTU6MjA6MjQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiByZWxlYXNpbmcgMC4xMC42LCAiVGFrZSB0aGUgY2Fubm9saSIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDUtMTQgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgcmVsZWFzaW5nIDAuMTAuNiwgIlRha2UgdGhlIGNhbm5vbGkiCgoyMDA2LTA1LTE0IDE1OjE4OjAyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgVXBkYXRlIC5wbyBmaWxlcwoKMjAwNi0wNS0xMyAxNzo1MDoxMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogRml4IHVzZSBvZiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIHRoZSBoeXBvdGhldGljYWwgY2FzZSB0aGF0IHNvbWUgYnJva2VuIHBsdWdpbiBjcmVhdGVzIGEgR1NUXy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChwcmludF90YWcpOgoJICBGaXggdXNlIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gdGhlIGh5cG90aGV0aWNhbAoJICBjYXNlIHRoYXQgc29tZSBicm9rZW4gcGx1Z2luIGNyZWF0ZXMgYSBHU1RfVEFHX0lNQUdFCgkgIHRhZyBjb250YWluaW5nIGEgTlVMTCBidWZmZXIgKCMzNDE2NjcpLgoKMjAwNi0wNS0xMiAxNjo1MDozNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guYzogUHJpbnQgc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdpYmxlIGZvciBpbWFnZSB0YWdzIHdoZW4gdXNpbmcgdGhlIC10IHN3aXRjaCAoIzM0MTU1NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKHByaW50X3RhZyk6CgkgIFByaW50IHNvbWV0aGluZyBtb3JlIGludGVsbGlnaWJsZSBmb3IgaW1hZ2UgdGFncyB3aGVuCgkgIHVzaW5nIHRoZSAtdCBzd2l0Y2ggKCMzNDE1NTYpLgoKMjAwNi0wNS0xMiAxNDo1Mzo0OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBNYWtlZmlsZS5hbTogdXBkYXRlcyBmb3Igd2luMzIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogTWFrZWZpbGUuYW06CgkgIHVwZGF0ZXMgZm9yIHdpbjMyCgkgICogY29uZmlndXJlLmFjOgoJICBkZWZpbmUgR1NUX01BSk9STUlOT1Igc28gd2UgaGF2ZSBpdCBhdmFpbGFibGUgaW4gd2luMzIvY29tbW9uL2NvbmZpZy5oCgkgIFBvc3NpYmx5IHJlbW92ZSBpdCBmcm9tIG91ciBNYWtlZmlsZS5hbSBmaWxlcyBsYXRlcgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIGFkZGVkIEdTVF9NQUpPUk1JTk9SCgkgICogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOiAocmVnaXN0ZXJfZ3N0X3Jlc291cmNlX2Vycm9yKToKCSAgKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICB1cGRhdGVkCgoyMDA2LTA1LTEyIDEzOjQyOjU0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL3N0cmVhbWhlYWRlcjoKCSAgYWRkaW5nIG5vdGVzIGFib3V0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYW5kIGlkZWFzIGFib3V0IHN0cmVhbWhlYWRlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkaW5nIG5vdGVzIGFib3V0IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYW5kIGlkZWFzIGFib3V0IHN0cmVhbWhlYWRlcgoKMjAwNi0wNS0xMiAxMDo1MDo0MiArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvTUFOSUZFU1Q6IFVwZGF0ZSB3aW4zMiBmaWxlcyBsaXN0aW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9NQU5JRkVTVDoKCSAgVXBkYXRlIHdpbjMyIGZpbGVzIGxpc3RpbmcuCgkgICogd2luMzIvY29tbW9uL2dzdHZlcnNpb24uaDoKCSAgQWRkIEdTVF9NQUpPUk1JTk9SIGRlZmluaXRpb24uCgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIEFkZCBuZXcgZXhwb3J0ZWQgZnVuY3Rpb25zLgoKMjAwNi0wNS0xMiAwOToyODoyMiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHBsdWdpbi5jOiBJZiBhbiBzbyBmaWxlIGhhcyBubyBwbHVnaW4gZW50cnkgcG9pbnQsIHVubG9hZCB0aGUgbW9kdWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgIElmIGFuIHNvIGZpbGUgaGFzIG5vIHBsdWdpbiBlbnRyeSBwb2ludCwgdW5sb2FkIHRoZSBtb2R1bGUuCgoyMDA2LTA1LTExIDE5OjA3OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiBEb24ndCBmb3JnZXQgdG8gc2lnbmFsIHRoZSBfY2hhaW4gb3IgX2xvb3AgZnVuY3Rpb24gd2hlbiB0aGUgcXVldWUgc2l6ZSBvciB0aHJlc2hvbGRzIGNoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9jaGFpbiksIChnc3RfcXVldWVfbG9vcCksCgkgIChnc3RfcXVldWVfc2V0X3Byb3BlcnR5KToKCSAgRG9uJ3QgZm9yZ2V0IHRvIHNpZ25hbCB0aGUgX2NoYWluIG9yIF9sb29wIGZ1bmN0aW9uCgkgIHdoZW4gdGhlIHF1ZXVlIHNpemUgb3IgdGhyZXNob2xkcyBjaGFuZ2Ugc2luY2UgdGhhdCBtaWdodAoJICBjYXVzZSB0aGVtIHRvIG1ha2UgcHJvZ3JlcyBhZ2Fpbi4KCjIwMDYtMDUtMTEgMTg6MTA6MzQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEdfT0JKRUNUX0NMQVNTIG1hY3JvIHVzYWdlIGJhdGNoIGNsZWFudXAsIGZpeGVzICMzMzc3NDcgZm9yIGNvcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19jbGFzc19pbml0KToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl9jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRfc3JjX2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2NsYXNzX2luaXQpOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9wbHVnaW5zL2V4YW1wbGUuYzogKGdzdF9leGFtcGxlX2NsYXNzX2luaXQpOgoJICAqIHRlc3RzL29sZC90ZXN0c3VpdGUvdGhyZWFkcy9zaWduYWxzLmM6IChnc3RfdGVzdF9jbGFzc19pbml0KToKCSAgR19PQkpFQ1RfQ0xBU1MgbWFjcm8gdXNhZ2UgYmF0Y2ggY2xlYW51cCwgZml4ZXMgIzMzNzc0NyBmb3IgY29yZQoKMjAwNi0wNS0xMSAxMDozNToxNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogUmVnaXN0ZXIgc3ViYnVmZXIgYWxvbmcgd2l0aCB0aGUgYnVmZmVyIHR5cGUgc28gdGhhdCBpdCBkb2VzIG5vdCBhY2NpZGVudGFsbHkgZ2V0cyByZWdpc3RlcmVkIGZyb20gTi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChfZ3N0X2J1ZmZlcl9pbml0aWFsaXplKToKCSAgUmVnaXN0ZXIgc3ViYnVmZXIgYWxvbmcgd2l0aCB0aGUgYnVmZmVyIHR5cGUgc28gdGhhdAoJICBpdCBkb2VzIG5vdCBhY2NpZGVudGFsbHkgZ2V0cyByZWdpc3RlcmVkIGZyb20gTgoJICBkaWZmZXJlbnQgc3RyZWFtaW5nIHRocmVhZHMgaW4gYSBub24gdGhyZWFkc2FmZSB3YXkuCgoyMDA2LTA1LTEwIDE2OjQ0OjE1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogTWFrZSBndGstZG9jIGdlbmVyYXRlIGRvY3MgZm9yIG91ciBpbmxpbmVkIGdzdF9idWZmZXJfcmVmKCksIGdzdF9ldmVudF9yZWYoKSBhbmQgZ3N0X21lc3NhZ2VfcmVmKCkgZnVuY3Rpb25zIGFnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBNYWtlIGd0ay1kb2MgZ2VuZXJhdGUgZG9jcyBmb3Igb3VyIGlubGluZWQgZ3N0X2J1ZmZlcl9yZWYoKSwKCSAgZ3N0X2V2ZW50X3JlZigpIGFuZCBnc3RfbWVzc2FnZV9yZWYoKSBmdW5jdGlvbnMgYWdhaW4KCSAgKHVnbHkgaGFjaywgcGxlYXNlIGRvIGZpeCBpZiB0aGVyZSdzIGEgYmV0dGVyIHdheSBiZXNpZGVzCgkgIG92ZXJyaWRlcy50eHQsIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byB3b3JrKS4KCjIwMDYtMDUtMTAgMTU6NDk6MzAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbGlicy9nc3QvY2hlY2svZ3N0Y2hlY2suaDogYWRkIGFuIGFzc2VydCBmb3Igc2V0dGluZyBzdGF0ZSB0byBhdm9pZCBsb3RzIG9mIHJlcGV0aXRpdmUgY29kZSBpbiB0aGUgZnV0dXJlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTA1LTEwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlICA8dGhvbWFzIGF0IGFwZXN0YWFydCBkb3Qgb3JnPgoJICAqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBhbiBhc3NlcnQgZm9yIHNldHRpbmcgc3RhdGUgdG8gYXZvaWQgbG90cyBvZiByZXBldGl0aXZlIGNvZGUKCSAgaW4gdGhlIGZ1dHVyZQoKMjAwNi0wNS0xMCAxNTozODo1MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0dmFsdWUuYzogZml4IGEgbGVhayBpZiBubyBmbGFncyBhcmUgc2V0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX3NlcmlhbGl6ZV9mbGFncyk6CgkgIGZpeCBhIGxlYWsgaWYgbm8gZmxhZ3MgYXJlIHNldAoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBmaXggbGVhayBpbiB0ZXN0cwoKMjAwNi0wNS0xMCAxNTowMDozMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsL2Jhc2ljcy1wYWRzLnhtbDogRXhwYW5kIGEgYml0IG9uIGNhcHMgYW5kIGZpbHRlcmVkIGxpbmtzIGFuZCB1cGRhdGUgZXhhbXBsZXMgdGhhdCB3ZXJlIHN0aWxsIHVzaW5nIHRoZSBuby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtcGFkcy54bWw6CgkgIEV4cGFuZCBhIGJpdCBvbiBjYXBzIGFuZCBmaWx0ZXJlZCBsaW5rcyBhbmQgdXBkYXRlCgkgIGV4YW1wbGVzIHRoYXQgd2VyZSBzdGlsbCB1c2luZyB0aGUgbm8gbG9uZ2VyIGV4aXN0aW5nCgkgIGdzdF9wYWRfbGlua19maWx0ZXJlZCgpICgjMzM4MjA2KS4KCjIwMDYtMDUtMTAgMTQ6NTE6MzMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLio6IE5vIG5lZWQgdG8gY2FsbCBfc3RvcCBpbiBfZmluYWxpemUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfZmluYWxpemUpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19hZGRfcGFkKSwgKGdzdF9jb2xsZWN0X3BhZHNfcmVtb3ZlX3BhZCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3NldF9mbHVzaGluZyksIChnc3RfY29sbGVjdF9wYWRzX3N0YXJ0KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJICBObyBuZWVkIHRvIGNhbGwgX3N0b3AgaW4gX2ZpbmFsaXplLgoJICBJdGVyYXRlIHRoZSBtYWluIHBhZCBsaXN0IGluIF9maW5hbGl6ZS4KCSAgQWRkZWQgc29tZSBtb3JlIGRlYnVnLgoJICBGcmVlIGxpc3RzIGFuZCBkYXRhIGluIHRoZSByaWdodCBvcmRlci4KCSAgQWxzbyBmcmVlIGRhdGEgd2hlbSBkb2luZyBfcmVtb3ZlX3BhZCB3aGVuIHN0b3BwZWQgZm9yCgkgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcHJvdGVjdCA6OnN0YXJ0ZWQgd2l0aCBQQURfTE9DSyBhcwoJICB3ZWxsLgoKMjAwNi0wNS0xMCAxNDoxMjoxNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0c3RydWN0dXJlLmM6IGFkZCBzb21lIGNvbW1lbnRzIHJlbmFtZSBhIG1ldGhvZCBzbyB0aGF0IGl0IGFjdHVhbGx5IHNheXMgd2hhdCBpdCBkb2VzIGJldHRlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX2d0eXBlX2Zyb21fYWJiciksCgkgIChnc3Rfc3RydWN0dXJlX3BhcnNlX3ZhbHVlKToKCSAgYWRkIHNvbWUgY29tbWVudHMKCSAgcmVuYW1lIGEgbWV0aG9kIHNvIHRoYXQgaXQgYWN0dWFsbHkgc2F5cyB3aGF0IGl0IGRvZXMgYmV0dGVyCgoyMDA2LTA1LTEwIDE0OjA1OjQ2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IG1ha2Ugc3VyZSBzb21lIGVzc2VudGlhbCB0eXBlcyB1c2VkIGJ5IGV2ZW50cyBhcmUgcmVnaXN0ZXJlZCBhcyBwYXJ0IG9mIGdzdF9pbml0KCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6IChfZ3N0X2V2ZW50X2luaXRpYWxpemUpOgoJICAqIGdzdC9nc3Rmb3JtYXQuYzogKF9nc3RfZm9ybWF0X2luaXRpYWxpemUpOgoJICBtYWtlIHN1cmUgc29tZSBlc3NlbnRpYWwgdHlwZXMgdXNlZCBieSBldmVudHMgYXJlIHJlZ2lzdGVyZWQKCSAgYXMgcGFydCBvZiBnc3RfaW5pdCgpCgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfc2VyaWFsaXplX2ZsYWdzKToKCSAgaWYgbm8gZmxhZ3MgYXJlIHNldCwgc2VyaWFsaXplIHRoZW0gdG8gYSB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgTk9ORQoJICBzbyB0aGF0IGRlc2VyaWFsaXppbmcgdGhlbSB3b3JrcwoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgYWRkIHRlc3RzIGZvciBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24gb2YgZmxhZ3MKCjIwMDYtMDUtMTAgMTM6NTM6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgbGltaXQgdG8gODAgY2hhcnMgYWRkIG5vdGUgYWJvdXQgY2hhbmdpbmcgZGl2aWRlciBmb3IgZmxhZ3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGxpbWl0IHRvIDgwIGNoYXJzCgkgIGFkZCBub3RlIGFib3V0IGNoYW5naW5nIGRpdmlkZXIgZm9yIGZsYWdzCgoyMDA2LTA1LTEwIDExOjI0OjU1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBVcGRhdGUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19jb2xsZWN0KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfY29sbGVjdF9yYW5nZSksIChnc3RfY29sbGVjdF9wYWRzX2F2YWlsYWJsZSksCgkgIChnc3RfY29sbGVjdF9wYWRzX2NoZWNrX3BhZHMpLCAoZ3N0X2NvbGxlY3RfcGFkc19jaGVja19jb2xsZWN0ZWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCksIChnc3RfY29sbGVjdF9wYWRzX2NoYWluKToKCSAgVXBkYXRlIGRvY3MuCgkgIEJldHRlciBkZWJ1ZyBpbmZvLgoJICBDYXRjaCBhbmQgcmV0dXJuIGVycm9ycyBmcm9tIHRoZSBjb2xsZWN0IGZ1bmN0aW9uCgkgIFJlZnVzZSBkYXRhIG9uIGVvcyBwYWRzLgoKMjAwNi0wNS0xMCAxMDoyNjo1NSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RpbnRlcmZhY2UuaDogR1NUX0lNUExFTUVOVFNfSU5URVJGQUNFIGFuZCBHU1RfSVNfSU1QTEVNRU5UU19JTlRFUkZBQ0UgdXNlIHRoZSBub3JtYWwKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGludGVyZmFjZS5oOgoJICBHU1RfSU1QTEVNRU5UU19JTlRFUkZBQ0UgYW5kIEdTVF9JU19JTVBMRU1FTlRTX0lOVEVSRkFDRSB1c2UgdGhlIG5vcm1hbAoJICBHSW50ZXJmYWNlIHR5cGUgY2hlY2tpbmcuCgkgIFRoZXkgd2VyZSBwcmV2aW91c2x5IHVzaW5nIG5vbi1kZWZpbmVkIG1hY3Jvcy4KCjIwMDYtMDUtMDkgMjA6NDc6MjMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLio6IENsZWFuIHVwIHRoZSBtZXNzIHRoYXQgaXMgY29sbGVjdHBhZHMsIGFkZCBjb21tZW50cyBhbmQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RfcGFkc19pbml0KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfZmluYWxpemUpLCAoZ3N0X2NvbGxlY3RfcGFkc19hZGRfcGFkKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfcmVtb3ZlX3BhZCksIChnc3RfY29sbGVjdF9wYWRzX3NldF9mbHVzaGluZyksCgkgIChnc3RfY29sbGVjdF9wYWRzX3N0YXJ0KSwgKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3BlZWspLCAoZ3N0X2NvbGxlY3RfcGFkc19wb3ApLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19hdmFpbGFibGUpLCAoZ3N0X2NvbGxlY3RfcGFkc19yZWFkKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfZmx1c2gpLCAoZ3N0X2NvbGxlY3RfcGFkc19jaGVja19wYWRzKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfaXNfY29sbGVjdGVkKSwgKGdzdF9jb2xsZWN0X3BhZHNfZXZlbnQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19jaGFpbik6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJICBDbGVhbiB1cCB0aGUgbWVzcyB0aGF0IGlzIGNvbGxlY3RwYWRzLCBhZGQgY29tbWVudHMgYW5kCgkgIEZJWE1FcyB3aGVyZSBuZWVkZWQuCgkgIE1haW50YWluIGEgc2VwYXJhdGUgcGFkIGxpc3Qgc28gd2UgY2FuIGFkZCBwYWRzIHdoaWxlCgkgIGNvbGxlY3RpbmcgdGhlIG90aGVyIG9uZXMuIEZvciB0aGlzIHdlIG5lZWQgYSBuZXcgc2VwYXJhdGUKCSAgbG9jayAoc2VlIGNvbWljcykuCgkgIEZpeCBtZW1vcnkgbGVhayBpbiBmaW5hbGl6ZS4KCSAgUmVmYWN0b3Igc29tZSB3ZWlyZCBjb2RlIHRvIHNldC91bnNldCBwYWQgZmx1c2hpbmcgZmxhZ3MsIG1hcmsKCSAgd2l0aCBjb21tZW50cy4KCSAgRG9uJ3QgY3Jhc2ggaW4gX2F2YWlsYWJsZSwgX3JlYWQsIF9mbHVzaCB3aGVuIHdlJ3JlIEVPUy4KCSAgKiB0ZXN0cy9jaGVjay9saWJzLy5jdnNpZ25vcmU6CgkgIElnbm9yZSBhZGFwdGVyIGNoZWNrIGJpbmFyeS4KCjIwMDYtMDUtMDkgMTk6MTQ6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkgIGRvYyB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb2Mgd2hpdGVzcGFjZSBmaXhlcwoKMjAwNi0wNS0wOSAxNzo1ODozNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIENvbnN0LWlmeSBHRW51bVZhbHVlIGFycmF5cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfcmVzb2x2ZXJfZ2V0X3R5cGUpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSAgKGdzdF9mYWtlX3Npbmtfc3RhdGVfZXJyb3JfZ2V0X3R5cGUpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2RhdGFfZ2V0X3R5cGUpLAoJICAoZ3N0X2Zha2Vfc3JjX3NpemV0eXBlX2dldF90eXBlKSwgKGdzdF9mYWtlX3NyY19maWxsdHlwZV9nZXRfdHlwZSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAocXVldWVfbGVha3lfZ2V0X3R5cGUpOgoJICBDb25zdC1pZnkgR0VudW1WYWx1ZSBhcnJheXMuCgoyMDA2LTA1LTA5IDEzOjIzOjA2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOiBBZGQgdGVzdCBjYXNlIGZvciBmbGFncyArIGdzdF9idWZmZXJfbWFrZV9tZXRhZGF0YV93cml0YWJsZSgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCB0ZXN0IGNhc2UgZm9yIGZsYWdzICsgZ3N0X2J1ZmZlcl9tYWtlX21ldGFkYXRhX3dyaXRhYmxlKCkuCgoyMDA2LTA1LTA5IDEyOjAxOjMyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBnc3RfYnVmZmVyX21ha2VfbWV0YWRhdGFfd3JpdGFibGUoKSBzaG91bGQgbWFpbnRhaW4gdGhlIGJ1ZmZlciBmbGFncyAodGhvc2UgdGhhdCBtYWtlIHNlbnNlIGF0IGxlYXN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfbWFrZV9tZXRhZGF0YV93cml0YWJsZSk6CgkgIGdzdF9idWZmZXJfbWFrZV9tZXRhZGF0YV93cml0YWJsZSgpIHNob3VsZCBtYWludGFpbiB0aGUKCSAgYnVmZmVyIGZsYWdzICh0aG9zZSB0aGF0IG1ha2Ugc2Vuc2UgYXQgbGVhc3QpIChzZWUgIzM0MDg1OSkuCgoyMDA2LTA1LTA5IDEwOjUzOjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvOiBGaXggdXAgaW5jbHVkZXM6IG5lZWQgdG8gaW5jbHVkZSBzdGRsaWIuaCBpbiB0b29scy5oIGZvciBleGl0KCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICAqIHRvb2xzL2dzdC10eXBlZmluZC5jOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgICogdG9vbHMvdG9vbHMuaDoKCSAgRml4IHVwIGluY2x1ZGVzOiBuZWVkIHRvIGluY2x1ZGUgc3RkbGliLmggaW4gdG9vbHMuaCBmb3IgZXhpdCgpLgoKMjAwNi0wNS0wOSAxMDowMjo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0Lio6IEFQSTogYWRkIEdTVF9UQUdfSU1BR0UgdGFnICgjMzQwNzIxKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzogKF9nc3RfdGFnX2luaXRpYWxpemUpOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIEFQSTogYWRkIEdTVF9UQUdfSU1BR0UgdGFnICgjMzQwNzIxKS4KCjIwMDYtMDUtMDggMTc6MTI6MDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cXVlcnkuYzogQWRkZWQgc29tZSBkb2NzIGZvciB0aGUgc2VnbWVudCBxdWVyeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6CgkgIEFkZGVkIHNvbWUgZG9jcyBmb3IgdGhlIHNlZ21lbnQgcXVlcnkuCgoyMDA2LTA1LTA4IDE3OjAzOjEzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IEFsd2F5cyBwdXNoIG5vbi1mbHVzaGluZyBzZXJpYWxpemVkIGV2ZW50cyBpbiB0aGUgc3RyZWFtaW5nIHRocmVhZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19sb29wKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBBbHdheXMgcHVzaCBub24tZmx1c2hpbmcgc2VyaWFsaXplZCBldmVudHMgaW4gdGhlIHN0cmVhbWluZwoJICB0aHJlYWQuCgoyMDA2LTA1LTA4IDE1OjUzOjEyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3R1dGlscy5jOgoJKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuaDoKCSAgd2hpdGVzcGFjZSwgY29tbWVudCwgZG9jIGZpeHVwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZXNwYWNlLCBjb21tZW50LCBkb2MgZml4dXAKCjIwMDYtMDUtMDggMTU6NTI6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdGVycm9yLmM6IEFkZCBhIG1pc3NpbmcgZXJyb3Igc3RyaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXJyb3IuYzogKF9nc3Rfc3RyZWFtX2Vycm9yc19pbml0KToKCSAgQWRkIGEgbWlzc2luZyBlcnJvciBzdHJpbmcuCgoyMDA2LTA1LTA4IDE0OjU1OjI2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogQWRkIGFwcGxpZWRfcmF0ZSB0byB0aGUgZGVidWcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jb25maWd1cmVfc2VnbWVudCk6CgkgIEFkZCBhcHBsaWVkX3JhdGUgdG8gdGhlIGRlYnVnCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKToKCSAgQ29weSBhcHBsaWVkX3JhdGUgaW50byB0aGUgb3V0Z29pbmcgTkVXU0VHTUVOVCBldmVudAoKMjAwNi0wNS0wOCAxMTo0OTo0MyArMDAwMCAgUGhpbGlwcGUgUm91cXVpZXIgPHBoaWxpcHBlcm9AbGliZXJ0eXN1cmYuZnI+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IGNhbGwgOjp1bmxvY2sgYmVmb3JlIHRha2luZyB0aGUgUFJFUk9MTF9MT0NLIHNvIHdlIGNhbiBzYWZlbHkgaGFuZGxlIGVsZW1lbnRzIHRoYXQgbG9jayAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBQaGlsaXBwZSBSb3VxdWllciA8cGhpbGlwcGVybyBhdCBsaWJlcnR5c3VyZiBkb3QgZnI+CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19zZXRfZmx1c2hpbmcpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBjYWxsIDo6dW5sb2NrIGJlZm9yZSB0YWtpbmcgdGhlIFBSRVJPTExfTE9DSyBzbyB3ZSBjYW4gc2FmZWx5CgkgIGhhbmRsZSBlbGVtZW50cyB0aGF0IGxvY2sgaW4gOjpyZW5kZXIuCgkgIEZpeGVzICMzNDAxNzQuCgoyMDA2LTA1LTA4IDExOjQzOjE5ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgYXV0b2dlbi5zaDogRGFyd2luJ3MgbGlidG9vbGl6ZSBpcyBpbiBmYWN0IGNhbGxlZCBnbGlidG9vbGl6ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogYXV0b2dlbi5zaDogKENPTkZJR1VSRV9ERUZfT1BUKToKCSAgRGFyd2luJ3MgbGlidG9vbGl6ZSBpcyBpbiBmYWN0IGNhbGxlZCBnbGlidG9vbGl6ZS4KCSAgQWRkaW5nIGdsaWJ0b29saXplIHRvIHRoZSBsaXN0IG9mIGFjY2VwdGVkIG5hbWVzIGZvciBsaWJ0b29saXplLgoKMjAwNi0wNS0wOCAxMTozNToyOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBVbmlmeSBlcnJvciBoYW5kbGluZywgZG9uJ3QgcG9zdCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gYSBwdXNoKCkgcmV0dXJucyBFT1MgYnV0IHBlcmZvcm0gby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19sb29wKToKCSAgVW5pZnkgZXJyb3IgaGFuZGxpbmcsIGRvbid0IHBvc3QgYW4gZXJyb3IgbWVzc2FnZQoJICB3aGVuIGEgcHVzaCgpIHJldHVybnMgRU9TIGJ1dCBwZXJmb3JtIG91ciBub3JtYWwgRU9TCgkgIGhhbmRsaW5nIGNvZGUuIEZpeGVzICMzNDA3NzIuCgoyMDA2LTA1LTA4IDA5OjUyOjMzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1vdmVydmlldy50eHQ6IE1ha2UgdXBzdGVhbS9kb3duc3RyZWFtIGNvbmNlcHRzIG1vcmUgY2xlYXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICBNYWtlIHVwc3RlYW0vZG93bnN0cmVhbSBjb25jZXB0cyBtb3JlIGNsZWFyLgoJICBHaXZlIGFuIGV4YW1wbGUgb2Ygc2VyaWFsaXplZC9ub24tc2VyaWFsaXplZCBldmVudHMuCgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3RyZWFtcy50eHQ6CgkgIE1lbnRpb24gYXBwbGllZF9yYXRlLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtdHJpY2ttb2Rlcy50eHQ6CgkgIE1lbnRpb24gYXBwbGllZCByYXRlLCBmbGVzaCBvdXQgc29tZSBtb3JlIHVzZSBjYXNlcy4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX25ld19zZWdtZW50KSwgKGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnRfZnVsbCksCgkgIChnc3RfZXZlbnRfcGFyc2VfbmV3X3NlZ21lbnRfZnVsbCksIChnc3RfZXZlbnRfbmV3X3RhZyksCgkgIChnc3RfZXZlbnRfcGFyc2VfdGFnKSwgKGdzdF9ldmVudF9uZXdfYnVmZmVyX3NpemUpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX2J1ZmZlcl9zaXplKSwgKGdzdF9ldmVudF9uZXdfcW9zKSwKCSAgKGdzdF9ldmVudF9wYXJzZV9xb3MpLCAoZ3N0X2V2ZW50X3BhcnNlX3NlZWspLAoJICAoZ3N0X2V2ZW50X25ld19uYXZpZ2F0aW9uKToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgQWRkIGFwcGxpZWRfcmF0ZSBmaWVsZCB0byBORVdTRUdNRU5UIGV2ZW50LgoJICBBUEk6IGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnRfZnVsbCgpCgkgIEFQSTogZ3N0X2V2ZW50X3BhcnNlX25ld19zZWdtZW50X2Z1bGwoKQoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9pbml0KSwgKGdzdF9zZWdtZW50X3NldF9zZWVrKSwKCSAgKGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50KSwgKGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50X2Z1bGwpLAoJICAoZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUpLCAoZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5oOgoJICBBZGQgYXBwbGllZF9yYXRlIHRvIEdzdFNlZ21lbnQgc3RydWN0dXJlLgoJICBNYWtlIGNhbGN1bGF0aW9uIG9mIHN0cmVhbV90aW1lIGFuZCBydW5uaW5nX3RpbWUgbW9yZSBjb3JyZWN0CgkgIHdydCByYXRlL2FwcGxpZWRfcmF0ZS4KCSAgQWRkIHNvbWUgbW9yZSBkb2NzLgoJICBBUEk6IEdzdFNlZ21lbnQ6OmFwcGxpZWRfcmF0ZSBmaWVsZAoJICBBUEk6IGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50X2Z1bGwoKTsKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbmZpZ3VyZV9zZWdtZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfZXZlbnRmdW5jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgUGFyc2UgYW5kIHVzZSBhcHBsaWVkX3JhdGUgaW4gdGhlIEdzdFNlZ21lbnQgZmllbGQuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFkZCBjaGVjayBmb3IgYXBwbGllZF9yYXRlIGZpZWxkLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RzZWdtZW50c19zdWl0ZSk6CgkgIEFkZCBtb3JlIGNoZWNrcyBmb3IgdmFyaW91cyBHc3RTZWdtZW50IG9wZXJhdGlvbnMuCgoyMDA2LTA1LTA4IDA5OjE2OjAxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBTdG9yZSB0aGUgc3luYyB0aW1lIG9mIHRoZSBidWZmZXIgZW5kIHBvc2l0aW9uIHNlcGFyYXRseSBpbiBhIG5ldyB2YXJpYWJsZSBlb3NfcnRpbWUgc28gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLAoJICAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwgKGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBTdG9yZSB0aGUgc3luYyB0aW1lIG9mIHRoZSBidWZmZXIgZW5kIHBvc2l0aW9uIHNlcGFyYXRseSBpbiBhCgkgIG5ldyB2YXJpYWJsZSBlb3NfcnRpbWUgc28gd2UgY2FuIHByb3Blcmx5IHN5bmMgdGhlIEVPUyBldmVudC4KCSAgRml4ZXMgIzM0MDY5Ny4KCSAgRml4IHRoZSBkb2NzIGZvciBnc3RfYmFzZV9zaW5rX3NldF9xb3NfZW5hYmxlZCgpLgoJICBEb24ndCBzZXQgc2VnbWVudCBzdGFydCB0byBpbnZhbGlkIHZhbHVlIHdoZW4gd2UgcmVjZWl2ZSBhCgkgIG5vbiBUSU1FIG5ld3NlZ21lbnQuCgkgIGdldCBjbG9zZXIgdG8gaGFuZGxpbmcgcG9zaXRpb24gcmVwb3J0aW5nIGZvciBuZWdhdGl2ZSByYXRlcwoJICBjb3JyZWN0bHkuCgoyMDA2LTA1LTA3IDE5OjU3OjQ4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBEb2NzIGFib3V0IGhvdyB0byBwcmludCBjYXBzIGZvciBkZWJ1ZyBwdXJwb3Nlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgRG9jcyBhYm91dCBob3cgdG8gcHJpbnQgY2FwcyBmb3IgZGVidWcgcHVycG9zZXMuCgkgICogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6IChnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQpOgoJICB1c2UgZ3N0X2NhcHNfbWFrZV93cml0YWJsZSBpbnN0ZWFkIG9mIGdzdF9jYXBzX2NvcHksIEZpeGVzICMzNDA2MDgKCjIwMDYtMDUtMDYgMjE6NDU6MjcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IHVzZSBmdWxsIGVudW0gbmFtZXMgYW5kIHByZXByZW5kIGEgJyUnIGluIGRvY3Mgc3RyaW5ncyB0byBtYWtlIHJlY2VudCBndGstZG9jIHR1cm4gdGhhdCBpbnRvIGEgbGluawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICB1c2UgZnVsbCBlbnVtIG5hbWVzIGFuZCBwcmVwcmVuZCBhICclJyBpbiBkb2NzIHN0cmluZ3MgdG8gbWFrZSByZWNlbnQKCSAgZ3RrLWRvYyB0dXJuIHRoYXQgaW50byBhIGxpbmsKCjIwMDYtMDUtMDUgMjE6NDQ6NTcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC86IFNvbWUgdHlwbyBmaXhlcywgc29tZSBhZGRpdGlvbnMsIHNvbWUgY2xhcmlmaWNhdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1iaW5zLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYnVzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtcGFkcy54bWw6CgkgIFNvbWUgdHlwbyBmaXhlcywgc29tZSBhZGRpdGlvbnMsIHNvbWUgY2xhcmlmaWNhdGlvbnMuCgoyMDA2LTA1LTA1IDE3OjQ1OjQxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvOiBVc2UgdGhlIHN0cmluZyBwYXNzZWQgdG8gZ19vcHRpb25fY29udGV4dF9uZXcoKSBmb3Igd2hhdCBpdCdzIGludGVuZGVkIGZvciAtIHRoZSBwcm9ncmFtIG5hbWUgaXMgYWxyZWFkeSBwcmluLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtcnVuLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChtYWluKToKCSAgVXNlIHRoZSBzdHJpbmcgcGFzc2VkIHRvIGdfb3B0aW9uX2NvbnRleHRfbmV3KCkgZm9yCgkgIHdoYXQgaXQncyBpbnRlbmRlZCBmb3IgLSB0aGUgcHJvZ3JhbSBuYW1lIGlzIGFscmVhZHkKCSAgcHJpbnRlZCBlbHNld2hlcmUuCgoyMDA2LTA1LTA1IDE3OjA3OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvOiBBZGQgYmFjayAtLXZlcnNpb24gY29tbWFuZCBsaW5lIG9wdGlvbiAoIzM0MDQ2MCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL01ha2VmaWxlLmFtOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QteG1saW5zcGVjdC5jOiAobWFpbik6CgkgICogdG9vbHMvdG9vbHMuaDoKCSAgQWRkIGJhY2sgLS12ZXJzaW9uIGNvbW1hbmQgbGluZSBvcHRpb24gKCMzNDA0NjApLgoJICAqIHRvb2xzL2dzdC10eXBlZmluZC5jOiAoaGF2ZV90eXBlX2hhbmRsZXIpLCAodHlwZWZpbmRfZmlsZSksIChtYWluKToKCSAgQWRkIC0tdmVyc2lvbiBvcHRpb24gYW5kIHVzZSBHT3B0aW9uIGZvciBhcmd1bWVudCBwYXJzaW5nOyByZWZhY3RvciBhCgkgIGJpdDsgYWNjZXB0IGRpcmVjdG9yaWVzIGFzIGFyZ3VtZW50cyBhbmQgcmVjdXJzZSBpbnRvIHRoZW07IGxhc3RseSwKCSAgcHJpbnQgYSBkZWNlbnQgZXJyb3IgbWVzc2FnZSB3aGVuIHRoaW5ncyBnbyB3cm9uZy4KCjIwMDYtMDUtMDUgMTQ6Mzg6MDEgKzAwMDAgIE1hY2llaiBLYXRhZmlhc3ogPG1hdGhyaWNrQG1hdGhyaWNrLm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9tYW51YWwvYmFzaWNzLWJpbnMueG1sOgoJKiBkb2NzL21hbnVhbC9iYXNpY3MtZWxlbWVudHMueG1sOgoJICBEb24ndCBtZW50aW9uIEdzdFRocmVhZCAoIzM0MDYxMSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIERvbid0IG1lbnRpb24gR3N0VGhyZWFkICgjMzQwNjExKQoJICBVcGRhdGUgbGluayB0byBHT2JqZWN0IHR1dG9yaWFsICgjMzQwNjA3KQoKMjAwNi0wNS0wNSAxNDoyNzozMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEFkZCBub3RlIGFib3V0IHJlZmNvdW50aW5nIGFuZCBtaW5pb2JqZWN0L2J1ZmZlciB3cml0ZWFiaWxpdHkgdG8gZG9jcy4gRml4ZXMgIzM0MDYwNAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgQWRkIG5vdGUgYWJvdXQgcmVmY291bnRpbmcgYW5kIG1pbmlvYmplY3QvYnVmZmVyIHdyaXRlYWJpbGl0eQoJICB0byBkb2NzLiBGaXhlcyAjMzQwNjA0CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkgIEFkZGVkIHNvbWUgZXhwbGFuYXRpb24gYWJvdXQgQGtsYXNzLgoKMjAwNi0wNS0wNSAxNDowOToyMSArMDAwMCAgTWFjaWVqIEthdGFmaWFzeiA8bWF0aHJpY2tAbWF0aHJpY2sub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL21hbnVhbC9pbnRyby1tb3RpdmF0aW9uLnhtbDoKCSogZG9jcy9tYW51YWwvbWFudWFsLnhtbDoKCSAgQXZvaWQgQ09SQkEgJiBCb25vYm8gcmVmZXJlbmNlcyAoIzM0MDU5OCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEF2b2lkIENPUkJBICYgQm9ub2JvIHJlZmVyZW5jZXMgKCMzNDA1OTgpCgoyMDA2LTA1LTA1IDEzOjUzOjI4ICswMDAwICBNYWNpZWogS2F0YWZpYXN6IDxtYXRocmlja0BtYXRocmljay5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvbWFudWFsL2Jhc2ljcy1idXMueG1sOgoJKiBkb2NzL21hbnVhbC9iYXNpY3MtcGFkcy54bWw6CgkgIEZpeCB1cCBzb21lIGluYWNjdXJhY2llcyBhbmQgb21pc3Npb25zIGluIEFETSAoIzM0MDYwOSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEZpeCB1cCBzb21lIGluYWNjdXJhY2llcyBhbmQgb21pc3Npb25zIGluIEFETSAoIzM0MDYwOSkKCjIwMDYtMDUtMDUgMTI6NTM6MzMgKzAwMDAgIE1hY2llaiBLYXRhZmlhc3ogPG1hdGhyaWNrQG1hdGhyaWNrLm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkgIFNtYWxsIHR5cG8gaW4gZG9jcyAoIzM0MDYyNSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFNtYWxsIHR5cG8gaW4gZG9jcyAoIzM0MDYyNSkKCjIwMDYtMDUtMDUgMDk6MDE6NTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvcGFyc2UvTWFrZWZpbGUuYW06IE1ha2UgJ21ha2UgLWonIHByb29mIChzZWUgIzM0MDY5OCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgTWFrZSAnbWFrZSAtaicgcHJvb2YgKHNlZSAjMzQwNjk4KS4KCjIwMDYtMDUtMDUgMDg6NTY6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBjb25maWd1cmUuYWM6IFJlcXVpcmUgR0xpYi0yLjggaGVyZSBhcyB3ZWxsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFJlcXVpcmUgR0xpYi0yLjggaGVyZSBhcyB3ZWxsLgoKMjAwNi0wNS0wNSAwODoxNzoyMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFJlbW92ZSBwcmUgZ2xpYjIuOCBjb21wYXRpYmlsaXR5LCBmaXhlcyAjMzQwNTA4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nbGliLWNvbXBhdC5jOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcHJlKToKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2luaXQpLCAoZ3N0X29iamVjdF9yZWYpLAoJICAoZ3N0X29iamVjdF91bnJlZiksIChnc3Rfb2JqZWN0X3JlcGxhY2UpLCAoZ3N0X29iamVjdF9kaXNwb3NlKSwKCSAgKGdzdF9vYmplY3RfZGlzcGF0Y2hfcHJvcGVydGllc19jaGFuZ2VkKToKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChnc3RfcmVnaXN0cnlfeG1sX3JlYWRfY2FjaGUpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbGlzdCk6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfZGF0ZV9nZXRfdHlwZSksIChfZ3N0X3ZhbHVlX2luaXRpYWxpemUpOgoJICBSZW1vdmUgcHJlIGdsaWIyLjggY29tcGF0aWJpbGl0eSwgZml4ZXMgIzM0MDUwOAoKMjAwNi0wNS0wNCAxODoxNDozMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R0YWdsaXN0Lmg6IE1lbnRpb24gdHlwZSBvZiB0YWdzIGluIGRvYyBibHVyYnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0YWdsaXN0Lmg6CgkgIE1lbnRpb24gdHlwZSBvZiB0YWdzIGluIGRvYyBibHVyYnMuCgoyMDA2LTA1LTA0IDE2OjM0OjIwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogUmVzdG9yZSBhY2NlcHRjYXBzIGNoZWNraW5nIGJlaGF2aW91ciBub3cgdGhhdCBnb29kIHBsdWdpbnMgaGF2ZSBiZWVuIHJlbGVhc2VkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2luaXQpLCAoZ3N0X3BhZF9jb25maWd1cmVfc2luayksCgkgIChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpLCAoZ3N0X3BhZF9wdXNoKToKCSAgUmVzdG9yZSBhY2NlcHRjYXBzIGNoZWNraW5nIGJlaGF2aW91ciBub3cgdGhhdCBnb29kIHBsdWdpbnMgaGF2ZQoJICBiZWVuIHJlbGVhc2VkLgoKMjAwNi0wNS0wNCAxNToyMDoxNCArMDAwMCAgSmFtZXMgQW5kcmV3YXJ0aGEgPHRyczgwQHRhcnRhcnVzLnV3YS5lZHUuYXU+CgoJICBNYWtlIHN1cmUgZ3N0cHJpdmF0ZS5oIGFuZC9vciBjb25maWcuaCBhcmUgYWx3YXlzIGluY2x1ZGVkIGZpcnN0LCBvdGhlcndpc2Ugc29tZSBvZiBvdXIgZGVmaW5lcyAobGlrZSBfRklMRV9PRkZTRVRfQkkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBKYW1lcyBBbmRyZXdhcnRoYSA8dHJzODAgYXQgdGFydGFydXMgdXdhIGVkdSBhdT4KCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3Rmb3JtYXQuYzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICAqIGdzdC9nc3RwYXJzZS5jOgoJICAqIGdzdC9nc3RxdWVyeS5jOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICAqIGdzdC9wYXJzZS9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJICBNYWtlIHN1cmUgZ3N0cHJpdmF0ZS5oIGFuZC9vciBjb25maWcuaCBhcmUKCSAgYWx3YXlzIGluY2x1ZGVkIGZpcnN0LCBvdGhlcndpc2Ugc29tZSBvZiBvdXIKCSAgZGVmaW5lcyAobGlrZSBfRklMRV9PRkZTRVRfQklUUykgbWlnaHQgYmUKCSAgcmVkZWZpbmVkIGluIHRoZSBzeXN0ZW0gaGVhZGVycy4gRml4ZXMgYnVpbGQKCSAgb24gb3BlbnNvbGFyaXMgKCMzNDAwMTYpLgoKMjAwNi0wNS0wNCAxNDoxOTo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6IEFQSTogYWRkaXRpb246IGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgQVBJOiBhZGRpdGlvbjogZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIoKQoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfcHVzaCksCgkgIChnc3RfYWRhcHRlcl9wZWVrKSwgKGdzdF9hZGFwdGVyX3Rha2UpLCAoZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIpLAoJICAoZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlX2Zhc3QpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJICBQcmVwYXJlIGZvciBvcHRpbWl6aW5nIHRoZSBoZWxsIG91dCBvZiB0aGlzIGh1Z2VseSBpbmVmZmljaWVudAoJICBwaWVjZSBvZiBjb2RlLgoJICBBZGRlZCBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlcigpIHNvIHdlIGNhbiBhdCBsZWFzdCBzdGFydCB0aGlua2luZwoJICBhYm91dCBzdWJidWZmZXJpbmcgYW5kIG1lcmdpbmcuCgkgIEFkZGVkIHNvbWUgY29tbWVudHMuCgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy9hZGFwdGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfYWRhcHRlcl9zdWl0ZSksIChtYWluKToKCSAgQWRkZWQgR3N0QWRhcHRlciBjaGVjay4KCjIwMDYtMDUtMDQgMTM6MzA6MzAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LW92ZXJ2aWV3LnR4dDogRml4IHNvbWUgdHlwb3MsIGFkZCBibHVyYiBhYm91dCBidWZmZXIgZmxhZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICBGaXggc29tZSB0eXBvcywgYWRkIGJsdXJiIGFib3V0IGJ1ZmZlciBmbGFncy4KCjIwMDYtMDUtMDMgMTY6NDU6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogbWFrZSBzdXJlIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyBzaG93cyB1cCBpbiB0aGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBtYWtlIHN1cmUgR3N0QmFzZVRyYW5zZm9ybUNsYXNzIHNob3dzIHVwIGluIHRoZSBkb2NzCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIG1vdmUgZG9jcyBzbyBndGstZG9jIHBpY2tzIGl0IHVwIG5vdwoKMjAwNi0wNS0wMyAxNjo0MjowOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgd2hpdGVzcGFjZSByZW1vdmFsIGFuZCB3aWR0aCBjb2VyY2lvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgd2hpdGVzcGFjZSByZW1vdmFsIGFuZCB3aWR0aCBjb2VyY2lvbgoKMjAwNi0wNS0wMyAxNjo0MDo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNYWtlZmlsZS5hbToKCSAgd2hpdGVzcGFjZSBtb3ZpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdoaXRlc3BhY2UgbW92aW5nCgoyMDA2LTA1LTAyIDE3OjI5OjA3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBhZGQgbWlzc2luZyBzeW1ib2xzIHRvIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgYWRkIG1pc3Npbmcgc3ltYm9scyB0byBkb2NzCgoyMDA2LTA1LTAyIDE3OjE3OjIyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IGJhY2sgb3V0IHRoZSBuZXdzZWdtZW50IGhhbmRsaW5nIGNoYW5nZSwgc2VlICMzNDAwNjAgZm9yIG9uZ29pbmcgZGlzY3Vzc2lvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2V2ZW50KToKCSAgYmFjayBvdXQgdGhlIG5ld3NlZ21lbnQgaGFuZGxpbmcgY2hhbmdlLCBzZWUgIzM0MDA2MCBmb3Igb25nb2luZwoJICBkaXNjdXNzaW9uCgoyMDA2LTA0LTI5IDIzOjE1OjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LXJ1bi5jOiBGaXggd3JvbmcgZ19maWxlX3Rlc3QoKSB1c2FnZSAoc2VlIGdsaWIgZG9jcyBmb3Igd2h5IGl0IGRvZXNuJ3Qgd29yayk7IGZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuIEZpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1ydW4uYzogKGdldF9jYW5kaWRhdGVzKSwgKG1haW4pOgoJICBGaXggd3JvbmcgZ19maWxlX3Rlc3QoKSB1c2FnZSAoc2VlIGdsaWIgZG9jcyBmb3Igd2h5IGl0IGRvZXNuJ3QKCSAgd29yayk7IGZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuIEZpeGVzICMzNDAwNzkuCgoyMDA2LTA0LTI5IDAwOjM4OjA2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcGx1Z2lucy90bXBsLy5naXRpZ25vcmU6CgkgIGlnbm9yZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgbW9yZQoKMjAwNi0wNC0yOSAwMDozNjo0NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBtb3ZlIHVwbG9hZC5tYWsgdG8gY29tbW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvZmFxL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL21hbnVhbC9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CgkgICogZG9jcy9wd2cvTWFrZWZpbGUuYW06CgkgICogZG9jcy9zbGlkZXMvTWFrZWZpbGUuYW06CgkgICogZG9jcy91cGxvYWQubWFrOgoJICAqIGNvbW1vbi91cGxvYWQubWFrOgoJICBtb3ZlIHVwbG9hZC5tYWsgdG8gY29tbW9uCgoyMDA2LTA0LTI5IDAwOjM1OjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL21vdmluZy1wbHVnaW5zOgoJICBhZGQgbW9yZSBub3RlcyBvbiBtb3ZpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtb3JlIG5vdGVzIG9uIG1vdmluZwoKMjAwNi0wNC0yOSAwMDozMzo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogYWRkIG1vcmUgYXNzZXJ0cyBvbiByZWZjb3VudHMgZG8gbW9yZSBjbGVhbnVwIGF0IGVuZCBvZiB0ZXN0cyBmaXggdGVzdCBsZWFrcyBzaG93aW5nIGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDQtMjkgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIGFkZCBtb3JlIGFzc2VydHMgb24gcmVmY291bnRzCgkgIGRvIG1vcmUgY2xlYW51cCBhdCBlbmQgb2YgdGVzdHMKCSAgZml4IHRlc3QgbGVha3Mgc2hvd2luZyBpbiBGQzUKCjIwMDYtMDQtMjggMjI6NTY6MjggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IHJldmVydGVkIHdyb25nIGNoYW5nZSBhbmQgcmVmbG93ZWQgY29kZSB0byBhdm9pZCBvdGhlcnMgZmFsbGluZyBpbnRvIHRoaXMgdHJhcAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCk6CgkgIHJldmVydGVkIHdyb25nIGNoYW5nZSBhbmQgcmVmbG93ZWQgY29kZSB0byBhdm9pZCBvdGhlcnMgZmFsbGluZyBpbnRvCgkgIHRoaXMgdHJhcAoKMjAwNi0wNC0yOCAyMDo1NTozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBmaXggY2hhbmdlbG9nIGVudHJ5IGFib3V0IGxhc3QgY29sbGVjdHBhZHMgY2hhbmdlLCBhZGQgbm90ZXMgYWJvdXQgcHJvcGVyIGZpeAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2V2ZW50KToKCSAgZml4IGNoYW5nZWxvZyBlbnRyeSBhYm91dCBsYXN0IGNvbGxlY3RwYWRzIGNoYW5nZSwKCSAgYWRkIG5vdGVzIGFib3V0IHByb3BlciBmaXgKCjIwMDYtMDQtMjggMjA6NDc6MjMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC86IG9ubHkgd3JpdGUgb3V0IHJlZ2lzdHJ5IGlmIGl0IGhhcyBjaGFuZ2VkLCBmaXhlcyAjMzM4MzM5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpLAoJICAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIG9ubHkgd3JpdGUgb3V0IHJlZ2lzdHJ5IGlmIGl0IGhhcyBjaGFuZ2VkLCBmaXhlcyAjMzM4MzM5CgoyMDA2LTA0LTI4IDIwOjQ0OjIxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvOiBvbmx5IHdyaXRlIG91dCByZWdpc3RyeSBpZiBpdCBoYXMgY2hhbmdlZCwgZml4ZXMgIzMzODMzOQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfc2Nhbl9wYXRoX2xldmVsKSwKCSAgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGgpOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5oOgoJICBvbmx5IHdyaXRlIG91dCByZWdpc3RyeSBpZiBpdCBoYXMgY2hhbmdlZCwgZml4ZXMgIzMzODMzOQoKMjAwNi0wNC0yOCAxODo1NToxNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbWFrZSBHc3RFbGVtZW50RGV0YWlscyBjb25zdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYW5kbGVfZXZlbnQpOgoJICBtYWtlIEdzdEVsZW1lbnREZXRhaWxzIGNvbnN0CgoyMDA2LTA0LTI4IDE4OjQ4OjM4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlLzogbW9yZSBkZXRhaWxlZCBkZWJ1ZyBhbmQgZm9ybWF0dGluZyBjbGVhbnVwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZXZlbnQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfYmFzZV9pbml0KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfaXNfY29sbGVjdGVkKSwgKGdzdF9jb2xsZWN0X3BhZHNfZXZlbnQpOgoJICBtb3JlIGRldGFpbGVkIGRlYnVnIGFuZCBmb3JtYXR0aW5nIGNsZWFudXAKCjIwMDYtMDQtMjggMTc6NTI6MTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3R1dGlscy5jOiBjbGVhbnVwIGRvdWJsZSBjb2RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfbGlua19wYWRzKToKCSAgY2xlYW51cCBkb3VibGUgY29kZQoKMjAwNi0wNC0yOCAxNzozMzo0MSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IHNvbWUgbGl0dGxlIHR1bmluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVyX3N5bmNfdmFsdWVzKToKCSAgc29tZSBsaXR0bGUgdHVuaW5nCgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIGEgbmV3IHRlc3QgZm9yIGxpdmUgdmFsdWUgaGFuZGxpbmcKCjIwMDYtMDQtMjggMTU6NTE6NTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIEdpdmUgY3JlZGl0IHRvIFRhcGkgUGFhdm9sYSBmb3IgbGFzdCBwYXRjaAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgR2l2ZSBjcmVkaXQgdG8gVGFwaSBQYWF2b2xhIGZvciBsYXN0IHBhdGNoCgoyMDA2LTA0LTI4IDE1OjQ4OjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEFkZGVkIHNvbWUgbW9yZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKHB1c2hfYW5kX3JlZik6CgkgIEFkZGVkIHNvbWUgbW9yZSBkb2NzLgoJICBGaXggcmVmY291bnQgaXNzdWUgd2hpdGggZ3N0X2VsZW1lbnRfZm91bmRfdGFncygpIGhlbHBlcgoJICBmdW5jdGlvbi4gRml4ZXMgIzMzODMzNQoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3V0aWxzX3N1aXRlKToKCSAgQWRkZWQgdGVzdHN1aXRlIGZvciBnc3RfZWxlbWVudF9mb3VuZF90YWdzKCkuCgoyMDA2LTA0LTI4IDEzOjUxOjAwICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvZ3N0dmFsdWUuYzogQXZvaWQgTlVMTCBkZXJlZmVyZW5jZSB3aGVuIHRyeWluZyB0byBzZXJpYWxpemUgZmxhZ3MgY29udGFpbmluZyBpbnZhbGlkIHZhbHVlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfc2VyaWFsaXplX2ZsYWdzKToKCSAgQXZvaWQgTlVMTCBkZXJlZmVyZW5jZSB3aGVuIHRyeWluZyB0byBzZXJpYWxpemUgZmxhZ3MgY29udGFpbmluZwoJICBpbnZhbGlkIHZhbHVlcy4KCjIwMDYtMDQtMjggMTM6NDQ6MjAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHBhZC5jOgoJICBzbWFsbCBkb2MgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzbWFsbCBkb2MgZml4CgoyMDA2LTA0LTI4IDEzOjQzOjAzICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBJZiB3ZSBnZXQgRU9TIGJlZm9yZSBhbnkgZGF0YSBpcyBhY2N1bXVsYXRlZCwgZG9uJ3QgdXNlIHVuaW5pdGlhbGlzZWQgbG9jYWwgdmEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYW5kbGVfZXZlbnQpOgoJICBJZiB3ZSBnZXQgRU9TIGJlZm9yZSBhbnkgZGF0YSBpcyBhY2N1bXVsYXRlZCwgZG9uJ3QgdXNlCgkgIHVuaW5pdGlhbGlzZWQgbG9jYWwgdmFyaWFibGVzLgoKMjAwNi0wNC0yOCAxMzo0MDoxNSArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBGaXhlcyBpbiByZWFkaW5nL3dyaXRpbmcgZXZlbnRzIG92ZXIgR0RQIChub3QgY3VycmVudGx5IHVzZWQ/KSAtIGRlcmVmZXJlbmNpbmcgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzogKGdzdF9kcF9wYWNrZXRfZnJvbV9ldmVudCksCgkgIChnc3RfZHBfZXZlbnRfZnJvbV9wYWNrZXQpOgoJICBGaXhlcyBpbiByZWFkaW5nL3dyaXRpbmcgZXZlbnRzIG92ZXIgR0RQIChub3QgY3VycmVudGx5IHVzZWQ/KSAtCgkgIGRlcmVmZXJlbmNpbmcgTlVMTCBldmVudHMgZm9yIHVua25vd24vaW52YWxpZCBldmVudCB0eXBlcywgbWVtb3J5CgkgIGxlYWssIGFuZCBjaGFuZ2UgZ193YXJuaW5nIHRvIEdTVF9XQVJOSU5HLgoKMjAwNi0wNC0yOCAxMzoyNTo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogV2hlbiBmcmFtZSBkcm9wcGluZyBpcyBlbmFibGVkLCB3ZSBzaG91bGQgbm90IGlnbm9yZSBmcmFtZXMgd2l0aG91dCBhIGR1cmF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fcmVuZGVyX3N0YXRzKSwgKGdzdF9iYXNlX3NpbmtfcmVuZGVyX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbiksIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIFdoZW4gZnJhbWUgZHJvcHBpbmcgaXMgZW5hYmxlZCwgd2Ugc2hvdWxkIG5vdCBpZ25vcmUgZnJhbWVzCgkgIHdpdGhvdXQgYSBkdXJhdGlvbi4KCSAgVXBkYXRlIHNvbWUgZG9jdW1lbnRhdGlvbi4KCjIwMDYtMDQtMjggMTM6MTg6NDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLAoJICAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCjIwMDYtMDQtMjggMTM6MTY6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiBoYW5kbGUgRUFHQUlOLCBFSU5UUiBhbmQgc2hvcnQgd3JpdGVzIGNvcnJlY3RseS4gQWxzbyBjbGVhbiB1cCBzb21lIGVycm9yIGNhc2VzLCBhdm9pZCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKGdzdF9mZF9zaW5rX3JlbmRlciksCgkgIChnc3RfZmRfc2lua19jaGVja19mZCksIChnc3RfZmRfc2lua191cGRhdGVfZmQpOgoJICBoYW5kbGUgRUFHQUlOLCBFSU5UUiBhbmQgc2hvcnQgd3JpdGVzIGNvcnJlY3RseS4gQWxzbyBjbGVhbgoJICB1cCBzb21lIGVycm9yIGNhc2VzLCBhdm9pZCBhIGRlYWRsb2NrIG9uIGJhZCBmaWxlIGRlc2NyaXB0b3JzIGFuZAoJICB1c2UgR1NUX0RFQlVHX09CSkVDVC4KCSAgRml4ZXMgIzMzOTg0MwoKMjAwNi0wNC0yOCAxMzoxMzoyMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBEb24ndCB0cnkgdG8gc2VyaWFsaXplIGEgR1ZhbHVlIHdpdGggYSBOVUxMIGJ1ZmZlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfc2VyaWFsaXplX2J1ZmZlciksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYnVmZmVyKToKCSAgRG9uJ3QgdHJ5IHRvIHNlcmlhbGl6ZSBhIEdWYWx1ZSB3aXRoIGEgTlVMTCBidWZmZXIuCgkgIEZpeGVzICMzMzk4MjEuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdmFsdWVfc3VpdGUpOgoJICBBZGRlZCBjaGVjayBmb3Igc2VyaWFsaXNhdGlvbiBvZiBOVUxMIGJ1ZmZlcnMuCgoyMDA2LTA0LTI4IDEzOjEwOjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogVGFraW5nIGEgTlVMTCBtaW5pb2JqZWN0IGlzIHZhbGlkLCBmaXggdGhlIGNhc2Ugd2hlcmUgd2UgdHJ5IHRvIHVucmVmIHRoZSBOVUxMIG1pbmlvYmplY3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfdmFsdWVfdGFrZV9taW5pX29iamVjdCk6CgkgIFRha2luZyBhIE5VTEwgbWluaW9iamVjdCBpcyB2YWxpZCwgZml4IHRoZSBjYXNlIHdoZXJlCgkgIHdlIHRyeSB0byB1bnJlZiB0aGUgTlVMTCBtaW5pb2JqZWN0LgoKMjAwNi0wNC0yOCAxMzowNToxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHVwZGF0ZSB3aW4zMiBjb25maWcuaAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHdpbjMyIGNvbmZpZy5oCgoyMDA2LTA0LTI4IDEzOjA0OjA3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0Bzb25pY3B1bHNlLmRlPgoKCSAgZ3N0L2dzdGJpbi5jOiBVcGRhdGUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBTdGVmYW4gS29zdCA8ZW5zb25pYyBhdCBzb25pY3B1bHNlIGRvdCBkZT4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBVcGRhdGUgZG9jcy4KCSAgRG9uJ3QgbGVhayBiaW4gcmVmY291bnQgd2hlbiBhIHN0YXRlIHJlY2FsYyBpcwoJICBpbiBwcm9ncmVzcyBhbmQgd2UgZGVsYXkgYW5vdGhlciBvbmUgIzMzOTgwOC4KCjIwMDYtMDQtMjggMTI6NTg6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OiBNZW50aW9uIFFvUyBhcyBhbiBvbmdvaW5nIHdvcmsgaXRlbS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgTWVudGlvbiBRb1MgYXMgYW4gb25nb2luZyB3b3JrIGl0ZW0uCgkgICogZG9jcy9kZXNpZ24vcGFydC1idWZmZXJpbmcudHh0OgoJICBOZXcgZG9jIGFib3V0IGJ1ZmZlcmluZyB0aGF0IG5lZWRzIHRvIGJlIGZsZXNoZWQgb3V0CgkgIGF0IHNvbWUgcG9pbnQuCgkgICogZG9jcy9kZXNpZ24vcGFydC1xb3MudHh0OgoJICBNb3JlIFFvUyBwb2xpY3kgZm9yIGRlY29kZXJzL2RlbXV4ZXJzL3RyYW5zZm9ybXMKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXRyaWNrbW9kZXMudHh0OgoJICBTbWFsbCB1cGRhdGUuCgoyMDA2LTA0LTI4IDEwOjU2OjA0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gSEVBRAoKPT09IHJlbGVhc2UgMC4xMC41ID09PQoKMjAwNi0wNC0yOCAxMDo1MzozMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC4xMC41CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZWxlYXNpbmcgMC4xMC41CgoyMDA2LTA0LTI4IDA5OjQ4OjA5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5zaWduYWxzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIGRvY3MvdXBsb2FkLm1hazoKCSAgZml4IHVwbG9hZC5tYWs7IHNob3VsZCBtb3ZlIHRvIGNvbW1vbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IHVwbG9hZC5tYWs7IHNob3VsZCBtb3ZlIHRvIGNvbW1vbgoKMjAwNi0wNC0yOCAwOToyMDoyNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9NQU5JRkVTVDoKCSAgYWRkaW5nIG1pc3NpbmcgZHNwIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGRpbmcgbWlzc2luZyBkc3AgZmlsZXMKCjIwMDYtMDQtMjYgMTM6NTQ6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHByZXJlbGVhc2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHByZXJlbGVhc2UKCjIwMDYtMDQtMjIgMjE6MzQ6MjMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBGaXggaW50ZXJuYWwgZGF0YSBmbG93IGVycm9ycy4gIEZpeGVzICMzMzg3MTEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogV2ltIFRheW1hbnMKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2luaXQpLCAoZ3N0X3BhZF9jb25maWd1cmVfc2luayksCgkgIChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpLCAoZ3N0X3BhZF9wdXNoKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9pbml0KToKCSAgRml4IGludGVybmFsIGRhdGEgZmxvdyBlcnJvcnMuICBGaXhlcyAjMzM4NzExLgoKMjAwNi0wNC0xMiAxMTo1ODo0MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3RlbGVtZW50LmM6IERvbid0IGxlYWsgdGhlIGZhY3RvcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RlbGVtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIERvbid0IGxlYWsgdGhlIGZhY3RvcnkuCgoyMDA2LTA0LTEyIDExOjA2OjQ0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2JnLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfVFcucG86CgkgIHVwZGF0ZWQgdHJhbnNsYXRpb25zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGVkIHRyYW5zbGF0aW9ucwoKMjAwNi0wNC0xMiAxMTowNDozNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSAgdXBkYXRlIGxpYnRvb2wgdmVyc2lvbmluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGxpYnRvb2wgdmVyc2lvbmluZwoKMjAwNi0wNC0xMiAxMDo1NzoyNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBwcmVyZWxlYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwcmVyZWxlYXNlCgoyMDA2LTA0LTEyIDEwOjI4OjUzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IEZyZWUgYWxsb2NhdGVkIEdzdFRpbWVkVmFsdWVzIHdoZW4gZnJlZWluZyBsaXN0IG5vZGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzogKGdzdF9jb250cm9sbGVyX3Vuc2V0KSwKCSAgKGdzdF9jb250cm9sbGVyX3Vuc2V0X2FsbCk6CgkgIEZyZWUgYWxsb2NhdGVkIEdzdFRpbWVkVmFsdWVzIHdoZW4gZnJlZWluZyBsaXN0IG5vZGVzLgoJICBTaG91bGQgZml4IGxlYWtzICdtYWtlIGNoZWNrLXZhbGdyaW5kJyBjb21wbGFpbnMgYWJvdXQuCgkgICogd2luMzIvY29tbW9uL2xpYmdzdGNvbnRyb2xsZXIuZGVmOgoJICBBZGQgZ3N0X2NvbnRyb2xsZXJfdW5zZXRfYWxsLgoKMjAwNi0wNC0xMiAxMDoxNToxMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkgIGZpeCBDaGFuZ2VMb2cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBDaGFuZ2VMb2cKCjIwMDYtMDQtMTEgMjE6MDc6MjYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIEFkZGVkIG5ldyBtZXRob2QgX3Vuc2V0X2FsbCgpIGFuZCBmaXhlZCBfdW5zZXQoKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfdW5zZXQpLAoJICAoZ3N0X2NvbnRyb2xsZXJfdW5zZXRfYWxsKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgQWRkZWQgbmV3IG1ldGhvZCBfdW5zZXRfYWxsKCkgYW5kIGZpeGVkIF91bnNldCgpCgkgICogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIEFkZGVkIHR3byB0ZXN0Y2FzZXMgZm9yIG5ldyBhbmQgZml4ZWQgbWV0aG9kCgoyMDA2LTA0LTExIDE4OjQzOjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwYWNrZXQuYzogTVNHX0RPTlRXQUlUIGlzIG5vdCBkZWZpbmVkIG9uIEN5Z3dpbiwgc28gd29yayBhcm91bmQgdGhhdCAoZml4ZXMgIzMxNzA0OCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0LmM6IChnc3RfbmV0X3RpbWVfcGFja2V0X3NlbmQpOgoJICBNU0dfRE9OVFdBSVQgaXMgbm90IGRlZmluZWQgb24gQ3lnd2luLCBzbyB3b3JrCgkgIGFyb3VuZCB0aGF0IChmaXhlcyAjMzE3MDQ4KS4KCjIwMDYtMDQtMTEgMTQ6NDg6MzQgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBmaXggdmVyc2lvbmluZyBtYWNybwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IHZlcnNpb25pbmcgbWFjcm8KCjIwMDYtMDQtMTEgMTE6NDc6MzkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogU29tZSBjbGVhbnVwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9yZWdpc3RlciksCgkgIChnc3RfZWxlbWVudF9mYWN0b3J5X2NyZWF0ZSksIChnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UpOgoJICBTb21lIGNsZWFudXBzLgoJICBGaXhlZCBhIEZJWE1FLgoJICBVcGRhdGVkIGRvY3MgKEZpeGVzICMxMzEwNzkpCgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzogKGdzdF9wbHVnaW5fZmVhdHVyZV9sb2FkKToKCSAgU21hbGwgY2xlYW51cHMuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9lbGVtZW50X3N1aXRlKToKCSAgQWRkZWQgdGVzdGNhc2UgZm9yIGVsZW1lbnRmYWN0b3J5IGNsYXNzIGZpZWxkLgoKMjAwNi0wNC0xMCAxMDo0Njo0NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IEFkZGVkIHNvbWUgbW9yZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOgoJICBBZGRlZCBzb21lIG1vcmUgZG9jcy4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3BlcmZvcm1fcW9zKSwKCSAgKGdzdF9iYXNlX3NpbmtfcmVzZXRfcW9zKToKCSAgQ2FsY3VsYXRlIG1vcmUgYWNjdXJhdGUgcmF0ZSB2YWx1ZXMuCgoyMDA2LTA0LTA5IDE2OjU3OjM0ICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0X3ByaXZhdGUuaDogYWRkIGEgbmV3ICNpZmRlZiB0byB1c2UgX19kZWNsc3BlYyhkbGxpbXBvcnQpIG9ubHkgZm9yIG90aGVyIG1vZHVsZXMgYW5kIG5vdCBmb3IgZ3N0cmVhbWVyIGNvcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgIGFkZCBhIG5ldyAjaWZkZWYgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBvbmx5IGZvcgoJICBvdGhlciBtb2R1bGVzIGFuZCBub3QgZm9yIGdzdHJlYW1lciBjb3JlCgkgICogZ3N0L2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3BlcmZvcm1fcW9zKToKCSAgdXNlIGdzdF9ndWludDY0X3RvX2dkb3VibGUgZm9yIGNvbnZlcnNpb24KCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgYWRkIG5ldyBleHBvcnRlZCBmdW5jdGlvbnMKCSAgKiB3aW4zMi92czYvZ3N0X2luc3BlY3QuZHNwOgoJICAqIHdpbjMyL3ZzNi9nc3RfbGF1bmNoLmRzcDoKCSAgKiB3aW4zMi92czYvbGliZ3N0YmFzZS5kc3A6CgkgICogd2luMzIvdnM2L2xpYmdzdGNvbnRyb2xsZXIuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3Rjb3JlZWxlbWVudHMuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3RkYXRhcHJvdG9jb2wuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3RuZXQuZHNwOgoJICB1cGRhdGUgcHJvamVjdCBmaWxlcwoKMjAwNi0wNC0wOCAyMDo1NzozMSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgRml4ICMzMzczNjUgKGdfdHlwZV9jbGFzc19yZWYgPC0+IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X3N1YmJ1ZmZlcl9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdGluZGV4ZmFjdG9yeS5jOiAoZ3N0X2luZGV4X2ZhY3RvcnlfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9jbGFzc19pbml0KSwKCSAgKGdzdF9zaWduYWxfb2JqZWN0X2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6IChnc3RfcGFkX3RlbXBsYXRlX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3R0YXNrLmM6IChnc3RfdGFza19jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0eG1sLmM6IChnc3RfeG1sX2NsYXNzX2luaXQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIChfZ3N0X2NvbnRyb2xsZXJfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2ZkX3NyY19jbGFzc19pbml0KToKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOiAoZ3N0X2ZpbGVfaW5kZXhfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9pbmRleGVycy9nc3RtZW1pbmRleC5jOiAoZ3N0X21lbV9pbmRleF9jbGFzc19pbml0KToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvcGx1Z2lucy9leGFtcGxlLmM6IChnc3RfZXhhbXBsZV9jbGFzc19pbml0KToKCSAgKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3RocmVhZHMvc2lnbmFscy5jOiAoZ3N0X3Rlc3RfY2xhc3NfaW5pdCk6CgkgIEZpeCAjMzM3MzY1IChnX3R5cGVfY2xhc3NfcmVmIDwtPiBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQpCgoyMDA2LTA0LTA4IDE4OjExOjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBNdXN0IHNldCBwZWVyIHBhZHMgYmVmb3JlIGNhbGxpbmcgdGhlIGxpbmsgZnVuY3Rpb24sIG90aGVyd2lzZSBhIHRhc2sgc3RhcnRlZCBmcm9tIGEgbGluayBmdW5jdGlvbiBtaWdoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfbGluayk6CgkgIE11c3Qgc2V0IHBlZXIgcGFkcyBiZWZvcmUgY2FsbGluZyB0aGUgbGluayBmdW5jdGlvbiwgb3RoZXJ3aXNlCgkgIGEgdGFzayBzdGFydGVkIGZyb20gYSBsaW5rIGZ1bmN0aW9uIG1pZ2h0IGdldCBhIGZsb3ctbm90LWxpbmtlZAoJICByZXN1bHQgd2hlbiB0cnlpbmcgdG8gcHVzaCBiZWNhdXNlIHRoZSBvdGhlciB0aHJlYWQgd2hlcmUgdGhlCgkgIGxpbmtpbmcgaGFwcGVucyBoYXNuJ3QgaGFkIGEgY2hhbmNlIHRvIHNldCB0aGUgcGVlcnMgeWV0LiBUaGlzCgkgIG1pZ2h0IGhhcHBlbiBmb3IgZXhhbXBsZSB3aGVuIGEgcXVldWUgZ2V0cyBsaW5rZWQgdG8gYSBkb3duc3RyZWFtCgkgIGVsZW1lbnQsIGFzIHF1ZXVlIHN0YXJ0cyBhIHN0cmVhbWluZyB0YXNrIHdoZW4gaXRzIHNvdXJjZSBwYWQKCSAgZ2V0cyBsaW5rZWQuIEhhcHBlbnMgaW4gcmVhbCBsaWZlIHdoZW4gcGxheWluZyBiYWNrIGZsYWMvbXVzZXBhY2sKCSAgZmlsZXMgaW4gcGxheWJpbiAoIzMzMjM5MCkuCgoyMDA2LTA0LTA4IDE4OjA1OjE2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBGaXggYnJva2VuIEdPYmplY3QgbWFjcm9zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmRleC5oOgoJICAqIGdzdC9nc3R4bWwuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5oOgoJICBGaXggYnJva2VuIEdPYmplY3QgbWFjcm9zCgoyMDA2LTA0LTA3IDE1OjE5OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBJbml0aWFsaXplIHN0YXJ0IGFuZCBzdG9wIHRpbWVzLCB0aGFua3MgdmFsZ3JpbmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpOgoJICBJbml0aWFsaXplIHN0YXJ0IGFuZCBzdG9wIHRpbWVzLCB0aGFua3MgdmFsZ3JpbmQuCgoyMDA2LTA0LTA3IDE0OjUwOjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBCZSBhIGJpdCBuaWNlciB0byBiYWRseSBiZWhhdmluZyB1cHN0cmVhbSBlbGVtZW50cyB0aGF0IGV4cGVjdCB1cyB0byBkZWFsIHdpdGggbm9uIFRJTUUgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpOgoJICBCZSBhIGJpdCBuaWNlciB0byBiYWRseSBiZWhhdmluZyB1cHN0cmVhbSBlbGVtZW50cyB0aGF0IGV4cGVjdAoJICB1cyB0byBkZWFsIHdpdGggbm9uIFRJTUUgc2VnbWVudHMgYW5kIHRpbWVzdGFtcHMgKHN1Y2ggYXMgZmFrZXNyYwoJICBpbiB0aGUgdGVzdHN1aXRlKS4KCjIwMDYtMDQtMDcgMTQ6MDI6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVzLmM6IFNtYWxsIGRvY3VtZW50YXRpb24gY2xhcmlmaWNhdGlvbiBhYm91dCB0aGUgc2lnbmFsIHdhdGNoLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgIFNtYWxsIGRvY3VtZW50YXRpb24gY2xhcmlmaWNhdGlvbiBhYm91dCB0aGUgc2lnbmFsIHdhdGNoLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLAoJICAoZ3N0X2Jhc2Vfc2lua193YWl0X2Nsb2NrKSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX3BlcmZvcm1fcW9zKSwgKGdzdF9iYXNlX3NpbmtfcmVzZXRfcW9zKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fcmVuZGVyX3N0YXRzKSwgKGdzdF9iYXNlX3NpbmtfcmVuZGVyX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbl9sYXN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX3BhdXNlZCksIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIENvbnZlcnQgYW5kIHN0b3JlIHRpbWVzdGFtcHMgaW4gc3RyZWFtIHRpbWUgYW5kIHJ1bm5pbmcgdGltZSwgdGhlCgkgIHJhdyB0aW1lc3RhbXBzIGFyZSBub3QgdXNlZnVsbCwgYWxzbyBkb2N1bWVudCB0aGlzIGJldHRlci4KCSAgVXNlIGRpZmZlcmVudCB3aW5kb3cgc2l6ZXMgZm9yIGdvb2QgYW5kIGJhZCBRb1Mgb2JzZXJ2YXRpb25zIHNvCgkgIHdlIHJlYWN0IHRvIGJhZG5lc3MgYSBsaXR0bGUgcXVpY2tlci4KCSAgS2VlcCB0cmFjayBvZiB0aGUgYW1vdW50IG9mIHJlbmRlcmVkIGFuZCBkcm9wcGVkIGJ1ZmZlcnMuCgkgIFNlbmQgUW9TIHRpbWVzdGFtcHMgaW4gcnVubmluZyB0aW1lLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfZXZlbnRmdW5jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgQ29tcGFyZSBRb1MgdGltZXN0YW1wcyBhZ2FpbnN0IHJ1bm5pbmcgdGltZS4KCjIwMDYtMDQtMDYgMTc6MzY6MjcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJICBhZGQgZ25vbmxpbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGdub25saW4KCjIwMDYtMDQtMDYgMTU6NDY6MDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IFR5cG8gZml4ZXMgaW4gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOgoJICBUeXBvIGZpeGVzIGluIGRvY3MuCgoyMDA2LTA0LTA2IDE1OjA3OjEyICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvZ3N0cGFkLmM6IFVzZSBnX3ZhbHVlX2dldF9vYmplY3QoKSBpbnN0ZWFkIG9mIGdfdmFsdWVfZHVwX2dzdF9vYmplY3QoKSwgdG8gYXZvaWQgZG91YmxlLXJlZmZpbmcgdGhlIHBhZCB0ZW1wbGF0ZSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfcHJvcGVydHkpOgoJICBVc2UgZ192YWx1ZV9nZXRfb2JqZWN0KCkgaW5zdGVhZCBvZiBnX3ZhbHVlX2R1cF9nc3Rfb2JqZWN0KCksCgkgIHRvIGF2b2lkIGRvdWJsZS1yZWZmaW5nIHRoZSBwYWQgdGVtcGxhdGUgKHdoaWNoIHdlIHRoZW4gc2luaywKCSAgc28gdGhpcyB3b3JrZWQgcHJldmlvdXNseSBpZiAoYW5kIG9ubHkgaWYpIHRoZSBwYWQgdGVtcGxhdGUKCSAgd2FzIGZsb2F0aW5nLgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOiAoZ3N0X3BhZF90ZW1wbGF0ZV9pbml0KSwKCSAgKGdzdF9wYWRfdGVtcGxhdGVfcGFkX2NyZWF0ZWQpOgoJICBOZXZlciByZXR1cm4gZmxvYXRpbmcgcmVmZXJlbmNlcyB0byBwYWQgdGVtcGxhdGVzLCBjcmVhdGUKCSAgdGhlbSBhcyBpbml0aWFsbHktc3Vua2VuLgoJICBEb2N1bWVudCBhbiBleHRyYSBmdW5jdGlvbiAoYW5kIG1ha2UgdGhpcyBzdG9wIHNpbmtpbmcgb3VyCgkgIHBhZCB0ZW1wbGF0ZSwgc2luY2UgdGhhdCBpcyBub3cgZ3VhcmFudGVlZCB0byBkbyBub3RoaW5nLAoJICBzaW5jZSB3ZSBjcmVhdGVkIGl0IHN1bmtlbikuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6CgkgIEZpeCBkb2NzIHR5cG8uCgoyMDA2LTA0LTA2IDExOjI3OjI0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGluZm8uYzogQWRkIHNvbWUgbmV3bGluZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChfX2dzdF9pbl92YWxncmluZCk6CgkgIEFkZCBzb21lIG5ld2xpbmVzLgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW4pOgoJICBEb24ndCBsZWFrIGJ1ZmZlciBjYXBzLgoKMjAwNi0wNC0wNiAxMDozODo1NCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L3BhcnNlL2dyYW1tYXIueTogRml4IGEgbGVhayBpbiBwYXJzZS1sYXVuY2ggZm9yIGFueSBzb3VyY2Utb3Itc2luayBuYW1lZCBlbGVtZW50IHJlZmVyZW5jZXMgdXNlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgRml4IGEgbGVhayBpbiBwYXJzZS1sYXVuY2ggZm9yIGFueSBzb3VyY2Utb3Itc2luayBuYW1lZCBlbGVtZW50CgkgIHJlZmVyZW5jZXMgdXNlZC4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChleHBlY3RlZF9mYWlsX3BpcGUpOgoJICBVbnJlZiB0aGUgcGlwZWxpbmUgaWYgaXQgZXhpc3RzIGFmdGVyIHdlJ3ZlIGZhaWxlZCBwYXJzaW5nLgoKMjAwNi0wNC0wNSAxNTo0NjowMCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmM6IFdoZW4gd2UgY3JlYXRlIGEgcGlwZWxpbmUgYnVzLCBpbml0aWFsbHkgY3JlYXRlIGl0IGluIGZsdXNoaW5nIG1vZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2luaXQpOgoJICBXaGVuIHdlIGNyZWF0ZSBhIHBpcGVsaW5lIGJ1cywgaW5pdGlhbGx5IGNyZWF0ZSBpdCBpbiBmbHVzaGluZyBtb2RlLgoJICBGaXhlcyBsZWFrcyBpbiBhdCBsZWFzdCBvbmUgdGVzdCwgYW5kIG1ha2VzIGEgbmV3IHBpcGVsaW5lIHdvcmsgdGhlCgkgIHNhbWUgYXMgb25lIHRoYXQgaGFzIGdvbmUgdG8gUkVBRFkgYW5kIHRoZW4gYmFjayB0byBOVUxMLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6CgkgIFR5cG8gZml4IGluIGRvY3MuCgoyMDA2LTA0LTA1IDE1OjEyOjM5ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogVW5yZWYgYSBwYWQgd2UgcmVmZmVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVW5yZWYgYSBwYWQgd2UgcmVmZmVkLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVbnJlZiBiaW5zCgoyMDA2LTA0LTA1IDEzOjE4OjI5ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvZ3N0cXVlcnkuYzogRml4IGxlYWtpbmcgR1ZhbHVlcyBpbiBxdWVyaWVzLCBhcyBzaG93biBieSB2YWxncmluZC90ZXN0c3VpdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X3NldF9mb3JtYXRzKSwKCSAgKGdzdF9xdWVyeV9zZXRfZm9ybWF0c3YpOgoJICBGaXggbGVha2luZyBHVmFsdWVzIGluIHF1ZXJpZXMsIGFzIHNob3duIGJ5IHZhbGdyaW5kL3Rlc3RzdWl0ZS4KCjIwMDYtMDQtMDUgMTI6MTE6MjAgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIHRlc3RzL2NoZWNrL2dlbmVyaWMvc2lua3MuYzogRml4IGEgdmFyaWV0eSBvZiBtZW1sZWFrcyBpbiBzaW5rcyBjaGVjaywgd2hpY2ggYXJlIG9ubHkgc29tZXRpbWVzIHNob3duIGJ5IHJ1bm5pbmcgdGhlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEZpeCBhIHZhcmlldHkgb2YgbWVtbGVha3MgaW4gc2lua3MgY2hlY2ssIHdoaWNoIGFyZSBvbmx5IHNvbWV0aW1lcwoJICBzaG93biBieSBydW5uaW5nIHRoZSB0ZXN0cyB1bmRlciB2YWxncmluZCAod2VpcmQ/KS4KCjIwMDYtMDQtMDUgMTE6MDQ6MTkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZG9jcy92ZXJzaW9uLmVudGl0aWVzLmluOiBGaXggdGhlIHN1YnN0aXR1dGVkIGVudGl0eSBuYW1lIGFmdGVyIHRob21hcycgY2hhbmdlcyBvbiB0aGUgd2Vla2VuZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy92ZXJzaW9uLmVudGl0aWVzLmluOgoJICBGaXggdGhlIHN1YnN0aXR1dGVkIGVudGl0eSBuYW1lIGFmdGVyIHRob21hcycgY2hhbmdlcyBvbiB0aGUKCSAgd2Vla2VuZC4KCjIwMDYtMDQtMDUgMTA6MzE6MjAgKzAwMDAgIFphaGVlciBBYmJhcyBNZXJhbGkgPHphaGVlcmFiYmFzQG1lcmFsaS5vcmc+CgoJICBnc3QvZ3N0aW5mby5jOiBVc2UgcHJpbnRmIGluc3RlYWQgb2YKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDQtMDUgIFphaGVlciBBYmJhcyBNZXJhbGkgIDx6YWhlZXJhYmJhcyBhdCBtZXJhbGkgZG90IG9yZz4KCSAgKiBnc3QvZ3N0aW5mby5jOiAoX19nc3RfaW5fdmFsZ3JpbmQpOiBVc2UgcHJpbnRmIGluc3RlYWQgb2YKCSAgVkFMR1JJTkRfUFJJTlRGCgoyMDA2LTA0LTA1IDEwOjI2OjI5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2Jsb2NrZWRfYXN5bmMpOiBNb3JlIGRlYnVnLiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wNC0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2Jsb2NrZWRfYXN5bmMpOiBNb3JlIGRlYnVnLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudGZ1bmMpOiBXaGVuIHJlc2V0dGluZyBvdXIgc2VnbWVudCBvbgoJICBGTFVTSF9TVE9QLCBhbHNvIHVwZGF0ZSB0aGUgZmxhZyBzYXlpbmcgd2UgaGF2ZW4ndCBzZWVuIGEKCSAgbmV3c2VnbWVudC4KCjIwMDYtMDQtMDQgMTg6MDI6MDcgKzAwMDAgIFBhb2xvIEJvcmVsbGkgPHBib3JlbGxpQGthdGFtYWlsLmNvbT4KCgkgIGdzdC9nc3RwbHVnaW4uYzogbWlub3IgY2xlYW4tdXBzOiBHX0RFRklORV9UWVBFIGFscmVhZHkgdGFrZXMgY2FyZSBvZiB0aGUgcGFyZW50X2NsYXNzIHN0dWZmLCBubyBuZWVkIHRvIGRvIGl0IHR3aWNlLi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IFBhb2xvIEJvcmVsbGkgIDxwYm9yZWxsaSBhdCBrYXRhbWFpbCBkb3QgY29tPgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKGdzdF9wbHVnaW5fZmluYWxpemUpLCAoZ3N0X3BsdWdpbl9jbGFzc19pbml0KSwKCSAgKGdzdF9wbHVnaW5fY2hlY2tfbGljZW5zZSk6CgkgIG1pbm9yIGNsZWFuLXVwczogR19ERUZJTkVfVFlQRSBhbHJlYWR5IHRha2VzIGNhcmUgb2YgdGhlCgkgIHBhcmVudF9jbGFzcyBzdHVmZiwgbm8gbmVlZCB0byBkbyBpdCB0d2ljZS4gTWFyayBhcnJheSBvZgoJICBsaWNlbnNlIHN0cmluZ3MgYXMgY29uc3RhbnQuICgjMzM3MTAzKQoKMjAwNi0wNC0wNCAxNzo1NDozMCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogRnJlZSB0aGUgcmlnaHQgcGx1Z2luIGxpc3Q7IGZpeGVzIGEgbWVtb3J5IGxlYWsuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X2xpc3QpOgoJICBGcmVlIHRoZSByaWdodCBwbHVnaW4gbGlzdDsgZml4ZXMgYSBtZW1vcnkgbGVhay4KCjIwMDYtMDQtMDQgMTU6NDU6MzYgKzAwMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1hbmF1d0Bza3luZXQuYmU+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IERvbid0IGVycm9yIG91dCBvbiBlbXB0eSBidWZmZXJzICgjMzM2OTQ1KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5OiBNYXJrIE5hdXdlbGFlcnRzICA8bWFuYXV3IGF0IHNreW5ldCBkb3QgYmU+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19yZW5kZXIpOgoJICBEb24ndCBlcnJvciBvdXQgb24gZW1wdHkgYnVmZmVycyAoIzMzNjk0NSkuCgoyMDA2LTA0LTA0IDE0OjU4OjUwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4gTWFrZSBCYXNlU2luayBhbmQgQmFzZVNyYyBkb2NzIGNvbnRhaW4gdGhlIGNsYXNzIHN0cnVjdHVyZSBzbyB0aGF0IHBlb3BsZSBjYW4gYWN0dWFsbHkgc2VlIHRoZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLiBNYWtlIEJhc2VTaW5rIGFuZCBCYXNlU3JjIGRvY3MgY29udGFpbiB0aGUKCSAgY2xhc3Mgc3RydWN0dXJlIHNvIHRoYXQgcGVvcGxlIGNhbiBhY3R1YWxseSBzZWUgdGhlIHByb3RvdHlwZXMgZm9yCgkgIHZpcnR1YWwgZnVuY3Rpb25zIHRoZXkncmUgc3VwcG9zZWQgdG8gYmUgb3ZlcnJpZGluZy4KCjIwMDYtMDQtMDQgMDg6NTU6NDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBNb3JlIGRlYnVnIGluZm87IHdoZW4gc2tpcHBpbmcgdHlwZWZpbmRpbmcsIHNlbmQgY2FjaGVkIGV2ZW50cyBpbiBhbGwgY2FzZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW4pOgoJICBNb3JlIGRlYnVnIGluZm87IHdoZW4gc2tpcHBpbmcgdHlwZWZpbmRpbmcsIHNlbmQgY2FjaGVkCgkgIGV2ZW50cyBpbiBhbGwgY2FzZXMuCgoyMDA2LTA0LTAzIDE3OjA1OjMxICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIEZpeCB0eXBvIGluIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGaXggdHlwbyBpbiBkb2NzLgoKMjAwNi0wNC0wMyAwODo1OTo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICB1cGRhdGUgd2luMzIgY29tbW9uIGRpcjsgdXBkYXRlIHVuaW5zdGFsbGVkIHNjcmlwdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHdpbjMyIGNvbW1vbiBkaXI7IHVwZGF0ZSB1bmluc3RhbGxlZCBzY3JpcHQKCjIwMDYtMDQtMDEgMTU6MzA6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkgIGRpc2FibGUgdXNlIG9mIEFTX0xJQlRPT0xfVEFHUywgaXQgZG9lc24ndCB3b3JrIGNvcnJlY3RseQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGlzYWJsZSB1c2Ugb2YgQVNfTElCVE9PTF9UQUdTLCBpdCBkb2Vzbid0IHdvcmsgY29ycmVjdGx5CgoyMDA2LTA0LTAxIDA5OjQxOjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogdXNlIG5ldyBBU19WRVJTSU9OIGFuZCBBU19OQU5PIG1hY3JvcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIHVzZSBuZXcgQVNfVkVSU0lPTiBhbmQgQVNfTkFOTyBtYWNyb3MKCSAgKiBnc3QvZ3N0LWkxOG4tbGliLmg6CgkgICogZ3N0L2dzdC5jOgoJICAqIGdzdC9nc3RlcnJvci5jOgoJICAqIGdzdC9nc3R2ZXJzaW9uLmguaW46CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgdXBkYXRlIGFjY29yZGluZ2x5CgoyMDA2LTAzLTMxIDE1OjI2OjA0ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBEbyBub3QgdHlwZWZpbmQgY29udGVudCBpZiB0aGUgYnVmZmVycyBhbHJlYWR5IGhhdmUgY2Fwcy4gYW5kIHRoZSByaWdodCB0aGluZyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbik6CgkgIERvIG5vdCB0eXBlZmluZCBjb250ZW50IGlmIHRoZSBidWZmZXJzIGFscmVhZHkgaGF2ZSBjYXBzLgoJICBOZWNjZXNhcnkgZm9yIGljeWRlbXV4ICgjMzMzNjU3KSwgYW5kIHRoZSByaWdodCB0aGluZyB0byBkbyBhbnl3YXkuCgoyMDA2LTAzLTMwIDE2OjM2OjEyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBNb3JlIFFvUyBtZWFzdXJlbWVudHMgYXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19maW5hbGl6ZSksIChnc3RfYmFzZV9zaW5rX3NldF9xb3NfZW5hYmxlZCksCgkgIChnc3RfYmFzZV9zaW5rX2lzX3Fvc19lbmFibGVkKSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX3JlY29yZF9xb3Nfb2JzZXJ2YXRpb24pLAoJICAoZ3N0X2Jhc2Vfc2lua19wZXJmb3JtX3FvcyksIChnc3RfYmFzZV9zaW5rX3Jlc2V0X3FvcyksCgkgIChnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlKSwgKGdzdF9iYXNlX3NpbmtfcmVuZGVyX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIE1vcmUgUW9TIG1lYXN1cmVtZW50cyBhcyBkZXNjcmliZWQgaW4gdGhlIGRlc2lnbiBkb2MuCgkgIEdldCByaWQgb2YgcmluZ2J1ZmZlciB3aXRoIG9ic2VydmF0aW9ucywgcnVubmluZyBhdmVyYWdlIGlzCgkgIG1vcmUgc2ltcGxlIGFuZCBlcXVhbGx5IGdvb2QuCgkgIENhbGN1bGF0ZXMgdmFsaWQgcHJvcG9ydGlvbiBub3cuCgkgIEFkZGVkIGJlZ2lubmluZyBvZiBmbG9vZCBtZWFzdXJlbWVudC4KCjIwMDYtMDMtMjkgMTM6NDU6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTbWFsbCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIGFkZGl0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1xb3MudHh0OgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICBTbWFsbCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIGFkZGl0aW9ucy4KCjIwMDYtMDMtMjkgMTM6Mzk6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogUGVyZm9ybSB0aGUgRU9TIGxvZ2ljIHdoZW4gd2UgcmVhY2ggdGhlIHNlZ21lbnQgc3RvcCBwb3NpdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZmluYWxpemUpLAoJICAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLAoJICAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIFBlcmZvcm0gdGhlIEVPUyBsb2dpYyB3aGVuIHdlIHJlYWNoIHRoZSBzZWdtZW50IHN0b3AgcG9zaXRpb24uCgkgIEZpeCBjb21waWxhdGlvbiBvbiBnY2M0LjEKCjIwMDYtMDMtMjkgMTE6MDI6MzMgKzAwMDAgIFRvbW1pIE15w7Zow6RuZW4gPGV4dC10b21taS5teW9oYW5lbkBub2tpYS5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLio6IEluIHF1ZXVlLCB3aGVuIEVPUyBpcyByZWNlaXZlZCwgaWYgbWluaW11bSB0aHJlc2hvbGQgPiBtYXhfc2l6ZSAtIGN1cnJlbnRfbGV2ZWwsIHRoZXJlIGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFBhdGNoIGJ5IFRvbW1pIE15w7Zow6RuZW4gPGV4dC10b21taSBkb3QgbXlvaGFuZW4gYXQgbm9raWEgZG90IGNvbT4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaW5pdCksCgkgIChnc3RfcXVldWVfbG9ja2VkX2ZsdXNoKSwgKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksCgkgIChnc3RfcXVldWVfc2V0X3Byb3BlcnR5KToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmg6CgkgIEluIHF1ZXVlLCB3aGVuIEVPUyBpcyByZWNlaXZlZCwgaWYgbWluaW11bSB0aHJlc2hvbGQgPiBtYXhfc2l6ZSAtCgkgIGN1cnJlbnRfbGV2ZWwsIHRoZXJlIGlzIGNoYW5jZSB0aGF0IHF1ZXVlIGJsb2NrcyBmb3JldmVyIGluIGNvbmRpdGlvbmFsIGl0ZW0KCSAgZGVsIHdhaXQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcXVldWUgaXMgbm90IGVtcHRpZWQgY29tcGxldGVseSBkdWUgdG8gbWluaW11bQoJICB0aHJlc2hvbGQuCgkgIEhlcmUgaXMgYW5vdGhlciBhcHByb2FjaC4gSW5zdGVhZCBvZiBzZXR0aW5nIGN1cl9sZXZlbHMgdG8gbWF4IGluIEVPUywganVzdAoJICB6ZXJvIGFsbCBtaW5pbXVtIHRocmVzaG9sZCBsZXZlbHMuIFRoaXMgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHF1ZXVlIGdpdmVzIG91dAoJICBhbGwgZGF0YS4gV2hlbiBnb2luZyB0byBSRUFEWSAoc3RvcCkgc3RhdGUsIGp1c3QgcmVzZXQgdGhlIG9yaWdpbmFsIG1pbmltdW0KCSAgdGhyZXNob2xkIGxldmVscy4KCSAgRml4ZXMgIzMzNjMzNi4KCjIwMDYtMDMtMjkgMTA6MzM6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC4qOiBXaGVuIHR5cGVmaW5kaW5nIGlzIGRvbmUgaW4gcHVzaCBtb2RlLCB3ZSBzaG91bGQgY2FjaGUgZXZlbnRzIHdlIHJlY2VpdmUgZHVyaW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogKHN0b3BfdHlwZWZpbmRpbmcpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfc2VuZF9jYWNoZWRfZXZlbnRzKSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgIFdoZW4gdHlwZWZpbmRpbmcgaXMgZG9uZSBpbiBwdXNoIG1vZGUsIHdlIHNob3VsZCBjYWNoZQoJICBldmVudHMgd2UgcmVjZWl2ZSBkdXJpbmcgdHlwZWZpbmRpbmcgaW5zdGVhZCBvZiBqdXN0CgkgIGRyb3BwaW5nIHRoZW0gKGUuZy4gbmV3c2VnbWVudCwgY3VzdG9tIGV2ZW50cyBmcm9tCgkgIGR2ZHJlYWRzcmMgZXRjLikgYW5kIHRoZW4gc2VuZCB0aGVtIG91dCBvbmNlIHdlJ3ZlCgkgIGRldGVybWluZWQgdGhlIHR5cGUgb2YgdGhlIHN0cmVhbSAoYW5kIGRlY29kZWJpbgoJICBoYXMgaGFkIGEgY2hhbmNlIHRvIHBsdWcgaW4gYSBkZWNvZGVyL2RlbXV4ZXIpLgoKMjAwNi0wMy0yNyAxODozODo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtcW9zLnR4dDogRmlyc3QgUW9TIGlkZWFzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXFvcy50eHQ6CgkgIEZpcnN0IFFvUyBpZGVhcy4KCjIwMDYtMDMtMjcgMTE6NDg6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogSGFuZGxlIGVsZW1lbnQgc2VlayBjb3JyZWN0bHkgd2hlbiB3ZSBhcmUgc3RyZWFtaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgSW5zcGlyZWQgYnkgYSBwYXRjaCBvZjogTHV0eiBNdWVsbGVyIDxsdXR6IGF0IHRvcGZyb3NlIGRvdCBkZT4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19maW5hbGl6ZSksCgkgIChnc3RfYmFzZV9zcmNfc2VuZF9ldmVudCksIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKToKCSAgSGFuZGxlIGVsZW1lbnQgc2VlayBjb3JyZWN0bHkgd2hlbiB3ZSBhcmUgc3RyZWFtaW5nLgoJICBGaXhlcyAjMzI2OTk4LgoKMjAwNi0wMy0yNCAxODozODoxMiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOiBTZXQgdXAgTERfTElCUkFSWV9QQVRIIHRvIHBvaW50IGF0IGFsbCB0aGUgZ3N0cmVhbWVyIGxpYnMuIFRoaXMgd2lsbCBhbGxvdyB5b3UgdG8gY29ycmVjdGx5Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgU2V0IHVwIExEX0xJQlJBUllfUEFUSCB0byBwb2ludCBhdCBhbGwgdGhlIGdzdHJlYW1lciBsaWJzLiBUaGlzIHdpbGwKCSAgYWxsb3cgeW91IHRvIGNvcnJlY3RseSBydW4gaW50YWxsZWQgYXBwbGljYXRpb25zIGJ1aWx0IGFnYWluc3Qgb2xkICAgICAgICAgICBjb3JlLCB1c2luZyBwbHVnaW5zIHRoYXQgcmVxdWlyZSB1cGRhdGVkIGNvcmUgKGUuZy4gcnVubmluZwoJICBpbnN0YWxsZWQgdG90ZW0gYWdhaW5zdCBhIGZ1bGwgdW5pbnN0YWxsZWQgZ3N0cmVhbWVyIHN0YWNrKQoKMjAwNi0wMy0yNCAxNzoyOToyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkgIGFkZCBBUEk6IG1hcmtlciBpbiBDaGFuZ2VMb2cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBBUEk6IG1hcmtlciBpbiBDaGFuZ2VMb2cKCjIwMDYtMDMtMjQgMTc6MTA6NDYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogbW9yZSBkZWJ1ZyBkZXRhaWxzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfaXNfY29sbGVjdGVkKToKCSAgbW9yZSBkZWJ1ZyBkZXRhaWxzCgoyMDA2LTAzLTI0IDExOjAyOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogUmVhcnJhbmdlIHRoZSBvcmRlciBvZiB0aGUgbWV0aG9kcyBzbyB0aGF0IHJlbGF0ZWQgbWV0aG9kcyBhcmUgZ3JvdXBlZCB0b2dldGhlciBpbiBzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIFJlYXJyYW5nZSB0aGUgb3JkZXIgb2YgdGhlIG1ldGhvZHMgc28gdGhhdCByZWxhdGVkIG1ldGhvZHMKCSAgYXJlIGdyb3VwZWQgdG9nZXRoZXIgaW4gc2VjdGlvbnMuCgoyMDA2LTAzLTI0IDEwOjQ0OjE3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBMaXR0bGUgY2xhcmlmaWNhdGlvbiBpbiB0aGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBMaXR0bGUgY2xhcmlmaWNhdGlvbiBpbiB0aGUgZG9jcwoKMjAwNi0wMy0yNCAxMDozODoyMCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9SRUFETUU6IGZvcm1hdHRpbmcgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvUkVBRE1FOgoJICBmb3JtYXR0aW5nIGZpeAoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICBHU1RfRUxFTUVOVF9ERVRBSUxTIGZvcm1hdHRpbmcKCjIwMDYtMDMtMjQgMDk6NDg6MzMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6IE9ubHkgYWRkIGZpZWxkcywgbm90IGluc2VydCBvciB3ZSBicmVhayBBQkkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgT25seSBhZGQgZmllbGRzLCBub3QgaW5zZXJ0IG9yIHdlIGJyZWFrIEFCSS4KCjIwMDYtMDMtMjMgMTg6NTE6MDUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9jb21tb24vOiBVcGRhdGUsIGFkZCByZWNlbnRseSBhZGRlZCBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgVXBkYXRlLCBhZGQgcmVjZW50bHkgYWRkZWQgZnVuY3Rpb25zLgoKMjAwNi0wMy0yMyAxODo0NTowMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFQSTogYWRkIHNvbWUgbmV3IHV0aWxpdHkgZnVuY3Rpb25zOgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3BhZF9xdWVyeV9wZWVyX3Bvc2l0aW9uKSwKCSAgKGdzdF9wYWRfcXVlcnlfcGVlcl9kdXJhdGlvbiksIChnc3RfcGFkX3F1ZXJ5X3BlZXJfY29udmVydCk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFQSTogYWRkIHNvbWUgbmV3IHV0aWxpdHkgZnVuY3Rpb25zOgoJICAtIGdzdF9wYWRfcXVlcnlfcGVlcl9wb3NpdGlvbgoJICAtIGdzdF9wYWRfcXVlcnlfcGVlcl9kdXJhdGlvbgoJICAtIGdzdF9wYWRfcXVlcnlfcGVlcl9jb252ZXJ0CgoyMDA2LTAzLTIzIDE2OjMyOjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBGb3Jnb3QgdG8gbWVudGlvbiB0aGUgcHJldmlvdXMgY29tbWl0IGZpeGVkICMzMjYzMTEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEZvcmdvdCB0byBtZW50aW9uIHRoZSBwcmV2aW91cyBjb21taXQgZml4ZWQgIzMyNjMxMQoKMjAwNi0wMy0yMyAxNjoyMDo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRGVjb3VwbGUgbWF4LWxhdGVuZXNzIGFuZCB0aGUgZmFjdCB0aGF0IFFvUyBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIHdpdGggYSBuZXcgcHJvcGVydHkgKC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19pbml0KSwgKGdzdF9iYXNlX3NpbmtfZmluYWxpemUpLAoJICAoZ3N0X2Jhc2Vfc2lua19zZXRfcW9zX2VuYWJsZWQpLCAoZ3N0X2Jhc2Vfc2lua19pc19xb3NfZW5hYmxlZCksCgkgIChnc3RfYmFzZV9zaW5rX3NldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zaW5rX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZV9zaW5rX2NvbW1pdF9zdGF0ZSksIChnc3RfYmFzZV9zaW5rX2dldF9zeW5jX3RpbWVzKSwKCSAgKGdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jayksIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLAoJICAoZ3N0X2Jhc2Vfc2lua19hZGRfcW9zX29ic2VydmF0aW9uKSwgKGdzdF9iYXNlX3Npbmtfc2VuZF9xb3MpLAoJICAoZ3N0X2Jhc2Vfc2lua19wZXJmb3JtX3FvcyksIChnc3RfYmFzZV9zaW5rX3Jlc2V0X3FvcyksCgkgIChnc3RfYmFzZV9zaW5rX2lzX3Rvb19sYXRlKSwgKGdzdF9iYXNlX3NpbmtfcmVuZGVyX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFpbl91bmxvY2tlZCksIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbl9sYXN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uX3BhdXNlZCksIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbiksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgRGVjb3VwbGUgbWF4LWxhdGVuZXNzIGFuZCB0aGUgZmFjdCB0aGF0IFFvUyBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkCgkgIHdpdGggYSBuZXcgcHJvcGVydHkgKHFvcykuCgkgIEFkZCB2bWV0aG9kIHNvIHN1YmNsYXNzZXMgY2FuIGJlIG5vdGlmaWVkIG9mIEFTWU5DIHBsYXlpbmcKCSAgc3RhdGUgY2hhbmdlcy4KCSAgQ29sbGVjdCB0aW1lc3RhbXAgc3RhcnQgYW5kIHN0b3AgdG8gcmVwb3J0IGJldHRlciBjdXJyZW50CgkgIHBvc2l0aW9uIGluIEVPUy9QTEFZSU5HL1BBVVNFRC9SRUFEWS9OVUxMLgoJICBSZWZhY3RvciBRb1MvZnJhbWUgZHJvcHBpbmcgYW5kIG90aGVyIG1lYXN1cmVtZW50cy4KCSAgQVBJOiBHc3RCYXNlU3JjOjpxb3MKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIEFkZGVkIFByaXZhdGUgc3RydWN0LgoJICBBUEk6IGdzdF9iYXNlX3Npbmtfc2V0X3Fvc19lbmFibGVkCgkgIEFQSTogZ3N0X2Jhc2Vfc2lua19pc19xb3NfZW5hYmxlZAoKMjAwNi0wMy0yMyAxMTo1NDo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiBJZiBjb21waWxpbmcgYWdhaW5zdCBHTGliLTIuOCBvciBuZXdlciwgdHJ5IHRvIHJlYWQgdGhlIHJlZ2lzdHJ5IGZpbGUgdXNpbmcgR01hcHBlZEZpbGUgZmlyc3QgYi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGdzdF9yZWdpc3RyeV94bWxfcmVhZF9jYWNoZSk6CgkgIElmIGNvbXBpbGluZyBhZ2FpbnN0IEdMaWItMi44IG9yIG5ld2VyLCB0cnkgdG8gcmVhZCB0aGUKCSAgcmVnaXN0cnkgZmlsZSB1c2luZyBHTWFwcGVkRmlsZSBmaXJzdCBiZWZvcmUgZmFsbGluZyBiYWNrCgkgIHRvIGZvcGVuKCkgKyBmcmVhZCgpICgjMzMyMTUxKS4KCjIwMDYtMDMtMjIgMTg6MjU6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0aW5mby5jOiBEaXNhYmxlIGRlYnVnZ2luZyB1bmxlc3MgZXhwbGljaXRseSBhY3RpdmF0ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChnc3RfZGVidWdfc2V0X2FjdGl2ZSksCgkgIChnc3RfZGVidWdfY2F0ZWdvcnlfc2V0X3RocmVzaG9sZCk6CgkgIERpc2FibGUgZGVidWdnaW5nIHVubGVzcyBleHBsaWNpdGx5IGFjdGl2YXRlZC4KCSAgRml4ZXMgIzMzNTQ4MC4KCjIwMDYtMDMtMjIgMTM6MTA6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBDbGVhbnVwIHRoZSBlcnJvciBjYXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9kaXNwb3NlKToKCSAgQ2xlYW51cCB0aGUgZXJyb3IgY2FzZS4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2Rpc3Bvc2UpOgoJICBwcmludCBhIGNyaXRpY2FsIHdoZW4gc29tZSBvYmplY3Qgd2FzIGRpc3Bvc2VkIHdpdGgKCSAgYSBwYXJlbnQsIGFsc28gcmV2aXZlIHRoZSBvYmplY3Qgc2luY2UgaXQgbWlnaHQKCSAgY3Jhc2ggdGhlIHBhcmVudC4KCjIwMDYtMDMtMjIgMDk6MDM6MTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtbGF1bmNoLjEuaW46IEZpeCBhbm90aGVyIHR5cG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guMS5pbjoKCSAgRml4IGFub3RoZXIgdHlwby4KCjIwMDYtMDMtMjEgMTk6Mjc6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZGlzYWJsZSBzb21lIHRlc3RzIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIHJlZ2lzdHJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgZGlzYWJsZSBzb21lIHRlc3RzIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIHJlZ2lzdHJ5CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbHNfc3VpdGUpOgoJICBkb24ndCBidWlsZCB0aGUgcGFydCB0aGF0IG5lZWRzIHBhcnNpbmcKCjIwMDYtMDMtMjEgMTc6MjU6MjIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L01ha2VmaWxlLmFtCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbQoJICAqIHRlc3RzL2V4YW1wbGVzL01ha2VmaWxlLmFtOgoJICBmaXggLS1kaXNhYmxlLXBhcnNlIGJ1aWxkCgoyMDA2LTAzLTIxIDE3OjI0OjMwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSAgdGhlIC5pbiBmaWxlIGlzIGluIGN2cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGhlIC5pbiBmaWxlIGlzIGluIGN2cwoKMjAwNi0wMy0yMSAxNTo0MjowMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1mZWVkYmFjay4xLmluOiBGaXggdHlwbzogcy9mZWViYWNrL2ZlZWRiYWNrLyAoIzEzMzQ5NCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1mZWVkYmFjay4xLmluOgoJICBGaXggdHlwbzogcy9mZWViYWNrL2ZlZWRiYWNrLyAoIzEzMzQ5NCkuCgoyMDA2LTAzLTIxIDE1OjA0OjIwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvOiBBZGQgRklMRVMgc2VjdGlvbiBhbmQgY29ycmVjdCBlbnRyeSBhYm91dCBHU1RfUkVHSVNUUllfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSAoIzEzMzQ5NTsgIzEzMzQ5NCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL01ha2VmaWxlLmFtOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guMS5pbjoKCSAgQWRkIEZJTEVTIHNlY3Rpb24gYW5kIGNvcnJlY3QgZW50cnkgYWJvdXQgR1NUX1JFR0lTVFJZX1BBVEgKCSAgZW52aXJvbm1lbnQgdmFyaWFibGUgKCMxMzM0OTU7ICMxMzM0OTQpLgoKMjAwNi0wMy0yMSAxNDo0MTo1OCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzLzogUmVtb3ZlIGdzdC1tZDVzdW0gYW5kIG1hbiBwYWdlICh0aGUgbWQ1c2luayBlbGVtZW50IHJlcXVpcmVkIHdhcyByZW1vdmVkIGFnZXMgYWdvKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9nc3QtbWQ1c3VtLjEuaW46CgkgICogdG9vbHMvZ3N0LW1kNXN1bS5jOgoJICBSZW1vdmUgZ3N0LW1kNXN1bSBhbmQgbWFuIHBhZ2UgKHRoZSBtZDVzaW5rIGVsZW1lbnQKCSAgcmVxdWlyZWQgd2FzIHJlbW92ZWQgYWdlcyBhZ28pCgoyMDA2LTAzLTIxIDE0OjI0OjQxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS5jOiBNYWtlIHN1cmUgdGhhdCBzdHJpbmcgZmllbGRzIGluIHN0cnVjdHVyZXMvdGFnbGlzdHMgY29udGFpbiB2YWxpZCBVVEYtOCAtIHdlIGRvbid0IHdhbnQgdG8gcGFzcyByLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfaWRfc2V0X3ZhbHVlKToKCSAgTWFrZSBzdXJlIHRoYXQgc3RyaW5nIGZpZWxkcyBpbiBzdHJ1Y3R1cmVzL3RhZ2xpc3RzCgkgIGNvbnRhaW4gdmFsaWQgVVRGLTggLSB3ZSBkb24ndCB3YW50IHRvIHBhc3MgcnViYmlzaCB0bwoJICBhcHBsaWNhdGlvbnMgYmVjYXVzZSBvZiBhIGJ1Z2d5IHBsdWdpbiAoY3AuICMzMzQxNjcpLgoKMjAwNi0wMy0yMSAxNDoxNDo0OSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIFNlcmllcyBvZiBmaXhlcyBmb3IgZGVyZWZlcmVuY2VkIHBvaW50ZXJzIHRoYXQgZ2NjIDQuMSBjb21wbGFpbnMgYWJvdXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZpZXdlZCBieTogPGRlbGV0ZSBpZiBub3QgdXNpbmcgYSBidWRkeT4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2Rpc3Bvc2UpLCAoZ3N0X2Jpbl9wcm92aWRlX2Nsb2NrX2Z1bmMpLAoJICAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19kaXNwb3NlKSwgKGdzdF9jbG9ja19zZXRfbWFzdGVyKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2V0X2Nsb2NrKSwgKGdzdF9lbGVtZW50X2Rpc3Bvc2UpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X2J1c19mdW5jKToKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9wcm94eV9wYWRfZGlzcG9zZSk6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzogKGdzdF92YWx1ZV9zZXRfbWluaV9vYmplY3QpLAoJICAoZ3N0X3ZhbHVlX3Rha2VfbWluaV9vYmplY3QpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X3BhZF90ZW1wbGF0ZSk6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfZGlzcG9zZSksCgkgIChnc3RfcGlwZWxpbmVfdXNlX2Nsb2NrKSwgKGdzdF9waXBlbGluZV9hdXRvX2Nsb2NrKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX3BvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2NoYWluKToKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfc2V0X3Byb3BlcnR5KToKCSAgU2VyaWVzIG9mIGZpeGVzIGZvciBkZXJlZmVyZW5jZWQgcG9pbnRlcnMgdGhhdCBnY2MgNC4xIGNvbXBsYWlucyBhYm91dC4KCSAgSXQncyBpbiBmYWN0IGFsbCBpc3N1ZXMgd2l0aCBnc3RfKm9iamVjdF9yZXBsYWNlKCkuCgoyMDA2LTAzLTIxIDEzOjU1OjQ0ICswMDAwICBMb8OvYyBNaW5pZXIgPGxvb2wuZ25vbWVAdmlhLmVjcC5mcj4KCgkgIHBrZ2NvbmZpZy86IFVzZSBAQ0hFQ0tfTElCU0AgaGVyZSBpbnN0ZWFkIG9mIGhhcmQtY29kaW5nIC1sY2hlY2sgKCMzMzQxMDkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUGF0Y2ggYnk6IExvw69jIE1pbmllciAgPGxvb2wgKyBnbm9tZSBhdCB2aWEgZG90IGVjcCBkb3QgZnI+CgkgICogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay11bmluc3RhbGxlZC5wYy5pbjoKCSAgKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLnBjLmluOgoJICBVc2UgQENIRUNLX0xJQlNAIGhlcmUgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyAtbGNoZWNrICgjMzM0MTA5KS4KCjIwMDYtMDMtMjEgMTM6NTA6NTIgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvOiBnc3RfW2J1ZmZlcnxldmVudHxtZXNzYWdlXV9yZWYoKSBtYWNyb3MgYXJlIHJlcGxhY2VkIGJ5IGEgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYmVjYXVzZSBnY2MtNC4xIHdpbGwgYWJvdXQgaWYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIGdzdF9bYnVmZmVyfGV2ZW50fG1lc3NhZ2VdX3JlZigpIG1hY3JvcyBhcmUgcmVwbGFjZWQgYnkgYSBzdGF0aWMKCSAgaW5saW5lIGZ1bmN0aW9ucyBiZWNhdXNlIGdjYy00LjEgd2lsbCBhYm91dCBpZiB0aGUgcmV0dXJuIHZhbHVlCgkgIGlzbid0IHVzZWQuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChldmVudF9wcm9iZSk6CgkgIGdzdF9ldmVudF9yZWYgbm93IGhhcyB0byBiZSBnaXZlbiBhIEdzdEV2ZW50KiAsIGZpeCBjaGVjayBhY2NvcmRpbmdseS4KCjIwMDYtMDMtMjAgMTY6NDc6MzUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogZG9jcy9wbHVnaW5zL3RtcGwvLmdpdGlnbm9yZToKCSAgUmVtb3ZlIGlycml0YXRpbmcgZmlsZSB0aGF0IGtlZXBzIGJyZWFraW5nIG15IGNoZWNrb3V0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmVtb3ZlIGlycml0YXRpbmcgZmlsZSB0aGF0IGtlZXBzIGJyZWFraW5nIG15IGNoZWNrb3V0cwoKMjAwNi0wMy0yMCAxNjo0NToxNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuaDogQWRkIEdfVU5MSUtFTFkgdG8gb3VyIGJvaWxlcnBsYXRlIHRvIG9wdGltaXNlIHRoZSAnYWxyZWFkeSByZWdpc3RlcmVkIHRoZSB0eXBlJyBjYXNlLiAoQ2xvc2VzOiAjMzM1MTkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFkZCBHX1VOTElLRUxZIHRvIG91ciBib2lsZXJwbGF0ZSB0byBvcHRpbWlzZSB0aGUgJ2FscmVhZHkgcmVnaXN0ZXJlZAoJICB0aGUgdHlwZScgY2FzZS4gKENsb3NlczogIzMzNTE5NSBmb3Igbm93KS4gSW4gdGhlIGZ1dHVyZSwgd2hlbiB3ZQoJICBkZXBlbmQgb24gR0xpYiAyLjEwLCB3ZSBjb3VsZCBhbHNvIGludGVybiB0aGUgdHlwZSBuYW1lIHVzaW5nCgkgIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoKQoKMjAwNi0wMy0yMCAxMDo1NjowOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogUG9zaXRpb24gcXVlcnkgc2hvdWxkIGFsc28gdGFrZSBtYXggb2YgYWxsIHN0cmVhbXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyksCgkgIChiaW5fcXVlcnlfbWF4X2luaXQpLCAoYmluX3F1ZXJ5X3Bvc2l0aW9uX2ZvbGQpLAoJICAoYmluX3F1ZXJ5X3Bvc2l0aW9uX2RvbmUpLCAoZ3N0X2Jpbl9xdWVyeSk6CgkgIFBvc2l0aW9uIHF1ZXJ5IHNob3VsZCBhbHNvIHRha2UgbWF4IG9mIGFsbCBzdHJlYW1zLgoKMjAwNi0wMy0yMCAwOToyODo0MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiBGaXggbGVha3MgaW4gZmFrZXNyYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmFrZV9zcmNfZmluYWxpemUpOgoJICBGaXggbGVha3MgaW4gZmFrZXNyYy4KCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEZpeCBsZWFrcyBpbiB0aGUgdGVzdGNhc2UuCgoyMDA2LTAzLTE5IDIxOjM5OjIxICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0X3ByaXZhdGUuaDogYWRkIHdpbjMyIHNwZWNpZmljIGltcG9ydCBkZWNvcmF0aW9uKF9fZGVjbHNwZWMoZGxsaW1wb3J0KSkgZm9yIGFsbCBleHRlcm4gR3N0RGVidWdDYXRlZ29yeSAqIHZhcmkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgIGFkZCB3aW4zMiBzcGVjaWZpYyBpbXBvcnQgZGVjb3JhdGlvbihfX2RlY2xzcGVjKGRsbGltcG9ydCkpCgkgIGZvciBhbGwgZXh0ZXJuIEdzdERlYnVnQ2F0ZWdvcnkgKiB2YXJpYWJsZXMKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGNvbnRyb2xsZXIuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgc29tZSBleHBvcnRzLCByZW1vdmUgZW1wdHkgbGluZXMKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0ZGF0YXByb3RvY29sLmRlZjoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0ZGF0YXByb3RvY29sLmRzcDoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0bmV0LmRlZjoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0bmV0LmRzcDoKCSAgbmV3IHByb2plY3QgZmlsZXMgYW5kIGV4cG9ydGF0aW9uIGZpbGVzIGFkZGVkCgoyMDA2LTAzLTE5IDE2OjA1OjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svbGlicy9iYXNlc3JjLmM6IFVzZSBwcm9wZXIgcmV0dXJuIHZhbHVlIGZvciBwcm9iZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svbGlicy9iYXNlc3JjLmM6IChlb3NfZXZlbnRfY291bnRlcik6CgkgIFVzZSBwcm9wZXIgcmV0dXJuIHZhbHVlIGZvciBwcm9iZS4KCjIwMDYtMDMtMTcgMTk6Mjc6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IERvbid0IGxlYWsgYnVmZmVycywgY2FwcyBhbmQgcGFkcyBvbiBuZWdvdGlhdGlvbiBlcnJvcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9hbGxvY19idWZmZXJfZnVsbCksCgkgIChnc3RfcGFkX3B1c2gpOgoJICBEb24ndCBsZWFrIGJ1ZmZlcnMsIGNhcHMgYW5kIHBhZHMgb24gbmVnb3RpYXRpb24gZXJyb3JzLgoKMjAwNi0wMy0xNiAxNTozMzo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9mYXEvOiBGYXEgcmV2aWV3IGFuZCB1cGRhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2N2cy54bWw6CgkgICogZG9jcy9mYXEvZGVwZW5kZW5jaWVzLnhtbDoKCSAgKiBkb2NzL2ZhcS9kZXZlbG9waW5nLnhtbDoKCSAgKiBkb2NzL2ZhcS9mYXEueG1sOgoJICAqIGRvY3MvZmFxL2dlbmVyYWwueG1sOgoJICAqIGRvY3MvZmFxL2dldHRpbmcueG1sOgoJICAqIGRvY3MvZmFxL2xlZ2FsLnhtbDoKCSAgKiBkb2NzL2ZhcS90cm91Ymxlc2hvb3RpbmcueG1sOgoJICAqIGRvY3MvZmFxL3VzaW5nLnhtbDoKCSAgRmFxIHJldmlldyBhbmQgdXBkYXRlLgoKMjAwNi0wMy0xNiAxMDoxODoyNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IERvbid0IHBvdW5kIHRoZSBjcHUgdG8gcGllY2VzIGJ5IGNoZWNraW5nIGdldF9jYXBzIHdoZW4gYWNjZXB0X2NhcHMgaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUgY2FwcyBhcyB0aGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksIChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9mdWxsKSwKCSAgKGdzdF9wYWRfcHVzaCk6CgkgIERvbid0IHBvdW5kIHRoZSBjcHUgdG8gcGllY2VzIGJ5IGNoZWNraW5nIGdldF9jYXBzIHdoZW4gYWNjZXB0X2NhcHMKCSAgaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUgY2FwcyBhcyB0aGUgcGFkIGFscmVhZHkgaGFzLgoJICBVc2UgR1NUX0RFQlVHX09CSkVDVCB3aGVuIG91dHB1dHRpbmcgY2FwcyBjaGFuZ2UgaW5mb3JtYXRpb24uCgoyMDA2LTAzLTE1IDIwOjE3OjQwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGNsb2NrLmM6IEZpeCBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19jbGFzc19pbml0KToKCSAgRml4IGRvY3MuCgoyMDA2LTAzLTE1IDE2OjI5OjAyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuaDogRG9jdW1lbnRhdGlvbiBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgRG9jdW1lbnRhdGlvbiBmaXguCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9pbml0KSwgKGdzdF9wYWRfYWNjZXB0Y2Fwc19kZWZhdWx0KSwKCSAgKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9jb25maWd1cmVfc2luayksCgkgIChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpLCAoZ3N0X3BhZF9jaGFpbiksIChnc3RfcGFkX3B1c2gpOgoJICBNYWtlIHRoZSBkZWZhdWx0IGFjY2VwdGNhcHMgYmVoYXZpb3VyIGJlIHRvIGNoZWNrIHRoZSByZXF1ZXN0ZWQKCSAgY2FwcyBhZ2FpbnN0IHRoZSBnc3RfcGFkX2dldF9jYXBzIG91dHB1dC4KCSAgRW5zdXJlIHRoYXQgZ3N0X3BhZF9hY2NlcHRfY2FwcyBpcyB1c2VkIHRvIGNoZWNrIGNhcHMgd2hlbiBhIHBhZAoJICBkb2Vzbid0IGhhdmUgYSBzZXRjYXBzIGZ1bmN0aW9uLCBzbyB0aGF0IHBhZHMgYXV0b21hdGljYWxseSByZWZ1c2UKCSAgY2FwcyB0aGF0IHRoZXkgZG9uJ3QgYWxsb3cgaW4gdGhlaXIgcGFkIHRlbXBsYXRlLiAoRml4ZXMgIzMzMjk4NikKCSAgV2hlbiBhIGJ1ZmZlciB3aXRoIGF0dGFjaGVkIGNhcHMgaXMgcHVzaGVkLCBlbnN1cmUgdGhhdCB0aGUgc291cmNlCgkgIHBhZCByZWNlaXZlcyB0aG9zZSBjYXBzIGV2ZW4gaWYgdGhlIGVsZW1lbnQgZGlkbid0IGNhbGwKCSAgZ3N0X3BhZF9zZXRfY2FwcyBmaXJzdC4KCjIwMDYtMDMtMTUgMTY6MjI6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzogQWRkIHNvbWUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIEFkZCBzb21lIGRvY3MuCgoyMDA2LTAzLTE1IDE1OjU3OjUxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgd2luMzIvY29tbW9uLzogQWRkIGEgd2hvbGUgYnVuY2ggb2YgbWlzc2luZyBmdW5jdGlvbnMgKCMzMzQ0MzQpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGNvbnRyb2xsZXIuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBBZGQgYSB3aG9sZSBidW5jaCBvZiBtaXNzaW5nIGZ1bmN0aW9ucyAoIzMzNDQzNCkuCgoyMDA2LTAzLTE0IDE5OjM2OjA1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBCZXR0ZXIgZGVidWcgaW5mbyB3aGVuIHdlIHJlY2VpdmUgYSBzZWdtZW50IGV2ZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbmZpZ3VyZV9zZWdtZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLCAoZ3N0X2Jhc2Vfc2lua193YWl0X2Nsb2NrKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksIChnc3RfYmFzZV9zaW5rX2RvX3Fvcyk6CgkgIEJldHRlciBkZWJ1ZyBpbmZvIHdoZW4gd2UgcmVjZWl2ZSBhIHNlZ21lbnQgZXZlbnQuCgkgIFJlb3JnYW5pemUgYSBiaXQgc28gd2UgY2FuIHBhc3MgdGhlIGdldF90aW1lcygpIHJlc3VsdHMgYXJvdW5kLgoJICBVc2UgdGhlIHNlZ21lbnQgZm9ybWF0IHdoZW4gY2FsY3VsYXRpbmcgdGhlIHJ1bm5pbmcgdGltZS4KCSAgRG9uJ3QgZG8gUW9TIGlzIHN5bmMgaXMgZGlzYWJsZWQgb3Igd2UgaGF2ZSBubyBjbG9jayBvciB0aGUKCSAgZWxlbWVudCBkb2VzIG5vdCB3YW50IHVzIHRvIHN5bmMgdG8gdGhlIGNsb2NrLgoJICBEb24ndCBkcm9wIGJ1ZmZlcnMgaWYgUW9TIGlzIGRpc2FibGVkIGZvciBub3cuCgoyMDA2LTAzLTE0IDE5OjI4OjIwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGNsb2NrLmM6IE1hcmtlZCB0aGUgc3RhdHMgcHJvcGVydHkgYXMgdW5pbXBsZW1lbnRlZCBzbyBwZW9wbGUgZG9uJ3QgZ2V0IHdpbGQgaWRlYXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2NsYXNzX2luaXQpLCAoZG9fbGluZWFyX3JlZ3Jlc3Npb24pOgoJICBNYXJrZWQgdGhlIHN0YXRzIHByb3BlcnR5IGFzIHVuaW1wbGVtZW50ZWQgc28gcGVvcGxlIGRvbid0IGdldAoJICB3aWxkIGlkZWFzLgoJICBBZGQgZGVidWcgbWVzc2FnZSB3aGVuIHJlZ3Jlc3Npb24gZ29lcyB3cm9uZy4KCSAgQWRkZWQgc29tZSBtb3JlIGRvY3MuCgoyMDA2LTAzLTE0IDE5OjI2OjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYzogUmV0dXJuIGNvcnJlY3QgcmV0dXJuIHR5cGUgaW4gY2FzZSBvZiBlcnJvcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSk6CgkgIFJldHVybiBjb3JyZWN0IHJldHVybiB0eXBlIGluIGNhc2Ugb2YgZXJyb3JzLgoKMjAwNi0wMy0xNCAxOToxNjo0NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3Rmb3JtYXQuYzogRG9uJ3Qgc2VnZmF1bHQgb24gaW52YWxpZCBmb3JtYXRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Zm9ybWF0LmM6IChnc3RfZm9ybWF0X2dldF9uYW1lKSwgKGdzdF9mb3JtYXRfdG9fcXVhcmspOgoJICBEb24ndCBzZWdmYXVsdCBvbiBpbnZhbGlkIGZvcm1hdHMuCgoyMDA2LTAzLTE0IDE4OjI1OjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBDYW4ndCB1c2UgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lKCkgd2hlbiB0aGUgc2VnbWVudCBpcyBub3QgaW4gR1NUX1RJTUVfRk9STUFUIChsaWtlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpOgoJICBDYW4ndCB1c2UgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lKCkgd2hlbiB0aGUgc2VnbWVudAoJICBpcyBub3QgaW4gR1NUX1RJTUVfRk9STUFUIChsaWtlIHdpdGggZmlsZXNpbmssIGZvciBleGFtcGxlKS4KCSAgU3RvcHMgZmxhYyBlbmNvZGluZyBwaXBlbGluZXMgZnJvbSBzcGV3aW5nIGNyaXRpY2FsIHdhcm5pbmdzCgkgIGF0IEVPUyAoIzMzMTI0OCkuCgoyMDA2LTAzLTE0IDE2OjMyOjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmM6IEFkZCAnU2luY2U6IDAuMTAuNScgdG8gZ3RrLWRvYyBibHVyYiBmb3IgYWRkZWQgcHJvcGVydHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NsYXNzX2luaXQpOgoJICBBZGQgJ1NpbmNlOiAwLjEwLjUnIHRvIGd0ay1kb2MgYmx1cmIgZm9yIGFkZGVkIHByb3BlcnR5LgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfaGFuZGxlX2V2ZW50KToKCSAgRG9uJ3QgdHJ5IHRvIHR5cGVmaW5kIGVtcHR5IHN0cmVhbXMuCgoyMDA2LTAzLTE0IDExOjE4OjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBTZXBhcmF0ZSBRb1MgY2FsY3VsYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3Fvcyk6CgkgIFNlcGFyYXRlIFFvUyBjYWxjdWxhdGlvbi4KCSAgT25seSBkcm9wIGJ1ZmZlcnMgd2hlbiBsYXRlbmVzcyBpcyBiaWdnZXIgdGhhbiB0aGUKCSAgZHVyYXRpb24gb2YgdGhlIGJ1ZmZlci4KCjIwMDYtMDMtMTMgMTU6MTc6NDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYzogRG9uJ3QgZGVhZGxvY2sgd2hlbiByZWFkaW5nIHByb3BlcnRpZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfcGlwZWxpbmVfZ2V0X3Byb3BlcnR5KSwgKGRvX3BpcGVsaW5lX3NlZWspLAoJICAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSksIChnc3RfcGlwZWxpbmVfc2V0X2RlbGF5KSwKCSAgKGdzdF9waXBlbGluZV9nZXRfZGVsYXkpOgoJICBEb24ndCBkZWFkbG9jayB3aGVuIHJlYWRpbmcgcHJvcGVydGllcy4KCjIwMDYtMDMtMTMgMTE6Mjc6NTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uKjogTWFrZSBiYXNldHJhbnNmb3JtIHZpcnR1YWwgbWV0aG9kIGZvciBzcmMgZXZlbnRzIHRvby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2xhc3NfaW5pdCksIChnc3RfYmFzZV90cmFuc2Zvcm1faW5pdCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2lua19ldmVudGZ1bmMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NyY19ldmVudCksIChnc3RfYmFzZV90cmFuc2Zvcm1fc3JjX2V2ZW50ZnVuYyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFuZ2Vfc3RhdGUpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3VwZGF0ZV9xb3MpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9xb3NfZW5hYmxlZCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faXNfcW9zX2VuYWJsZWQpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBNYWtlIGJhc2V0cmFuc2Zvcm0gdmlydHVhbCBtZXRob2QgZm9yIHNyYyBldmVudHMgdG9vLgoJICBIYW5kbGUgUU9TIGluIGJhc2V0cmFuc2Zvcm0uCgkgIEFQSTogZ3N0X2Jhc2VfdHJhbnNmb3JtX3VwZGF0ZV9xb3MKCSAgQVBJOiBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Fvc19lbmFibGVkCgkgIEFQSTogZ3N0X2Jhc2VfdHJhbnNmb3JtX2lzX3Fvc19lbmFibGVkCgoyMDA2LTAzLTEzIDExOjE2OjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBTbWFsbCBjbGVhbnVwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19pbml0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgIFNtYWxsIGNsZWFudXBzLgoJICBVc2UgUU9TIGRlYnVnIGNhdGVnb3J5LgoKMjAwNi0wMy0xMyAxMToxMToxNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogVmVyeSBzbWFsbCBkb2MgdXBkYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgIFZlcnkgc21hbGwgZG9jIHVwZGF0ZS4KCjIwMDYtMDMtMTMgMTE6MDg6MjggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBBZGRlZCBRT1MgZGVidWcgY2F0ZWdvcnkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgICogZ3N0L2dzdGluZm8uYzogKF9nc3RfZGVidWdfaW5pdCk6CgkgIEFkZGVkIFFPUyBkZWJ1ZyBjYXRlZ29yeQoKMjAwNi0wMy0xMyAxMTowNDozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fYnVzX2hhbmRsZXIpLCAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgICogZ3N0L2dzdGNsb2NrLmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9sb2NrZWRfc3RhdGUpOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6CgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9nZXRfdHlwZSksCgkgIChnc3RfcGlwZWxpbmVfY2xhc3NfaW5pdCksIChnc3RfcGlwZWxpbmVfaW5pdCksCgkgIChnc3RfcGlwZWxpbmVfZGlzcG9zZSksIChnc3RfcGlwZWxpbmVfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9waXBlbGluZV9nZXRfcHJvcGVydHkpLCAoZG9fcGlwZWxpbmVfc2VlayksCgkgIChnc3RfcGlwZWxpbmVfc2VuZF9ldmVudCksIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9waXBlbGluZV9wcm92aWRlX2Nsb2NrX2Z1bmMpLCAoZ3N0X3BpcGVsaW5lX3NldF9kZWxheSksCgkgIChnc3RfcGlwZWxpbmVfZ2V0X2RlbGF5KToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSAgQWRkZWQgbWV0aG9kcyBmb3Igc2V0dGluZyB0aGUgZGVsYXkuCgkgIEFQSTogZ3N0X3BpcGVsaW5lX3NldF9kZWxheQoJICBBUEk6IGdzdF9waXBlbGluZV9nZXRfZGVsYXkKCSAgQWRkIHBpcGVsaW5lIGRlYnVnIGNhdGVnb3J5CgkgIFZhcmlvdXMgY2xlYW51cHMuCgkgIFVwZGF0ZWQgZG9jcy4KCSAgRG9uJ3QgcmVzZXQgc3RyZWFtIHRpbWUgd2hlbiBzZWVrIGZhaWxlZC4KCjIwMDYtMDMtMTMgMTA6MzI6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IERvY3VtZW50YXRpb24gdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQta2xhc3MudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtY2xvY2tzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RiaW4udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0cGlwZWxpbmUudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbWVzc2FnZXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcHJlcm9sbC50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWVraW5nLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zdHJlYW1zLnR4dDoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwNi0wMy0xMiAyMDo0NDo0NiArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0dGFnbGlzdC5jOiBGaXggcnViYmlzaCBkb2NzIHRoYXQgYXJlIGVuY291cmFnaW5nIHVzIHRvIGxlYWsgc3RyaW5ncy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMy0xMiAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9nc3R0YWdsaXN0LmM6IEZpeCBydWJiaXNoIGRvY3MgdGhhdCBhcmUgZW5jb3VyYWdpbmcKCSAgdXMgdG8gbGVhayBzdHJpbmdzLi4uCgoyMDA2LTAzLTEyIDIwOjQwOjE5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzogZml4IGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOgoJICBmaXggZG9jcwoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgdXBkYXRlCgoyMDA2LTAzLTEyIDE0OjMyOjM3ICswMDAwICBKdWxpbyBNLiBNZXJpbm8gVmlkYWwgPGptbXZAbmV0YnNkLm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogRG9uJ3QgY2hlY2sgZm9yIGxpYmdub21ldWkgKGxlZnRvdmVyIGZyb20gb2xkIGV4YW1wbGVzIHRoYXQgYXJlbid0IGJ1aWx0IG9yIGRpc3RlZCBhbnkgbG9uZ2VyKSAoIzMzNDMwMykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogSnVsaW8gTS4gTWVyaW5vIFZpZGFsIDxqbW12IGF0IG5ldGJzZCBvcmc+CgkgICogY29uZmlndXJlLmFjOgoJICBEb24ndCBjaGVjayBmb3IgbGliZ25vbWV1aSAobGVmdG92ZXIgZnJvbSBvbGQgZXhhbXBsZXMKCSAgdGhhdCBhcmVuJ3QgYnVpbHQgb3IgZGlzdGVkIGFueSBsb25nZXIpICgjMzM0MzAzKS4KCjIwMDYtMDMtMTEgMTM6MDI6MjggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogRW1pdCBSRVNPVVJDRV9OT19TUEFDRV9MRUZUIGVycm9yIGhlcmUgYXMgd2VsbCB3aGVuIHRoZXJlJ3Mgbm8gc3BhY2UgbGVmdCBvbiB0aGUgZGV2aWNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOiAoZ3N0X2ZkX3NpbmtfcmVuZGVyKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX3JlbmRlcik6CgkgIEVtaXQgUkVTT1VSQ0VfTk9fU1BBQ0VfTEVGVCBlcnJvciBoZXJlIGFzIHdlbGwgd2hlbgoJICB0aGVyZSdzIG5vIHNwYWNlIGxlZnQgb24gdGhlIGRldmljZS4KCjIwMDYtMDMtMTAgMjM6NDQ6MDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Y2xvY2suaDogRml4IEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIHNpZ25lZG5lc3MgaXNzdWVzIC0gd2UgbmVlZCB0byBjYXN0IHRoZSBpbnB1dCB0byBHc3RDbG9ja1RpbWUgYmVmb3JlIGNvbXAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgIEZpeCBHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCBzaWduZWRuZXNzIGlzc3VlcyAtIHdlIG5lZWQKCSAgdG8gY2FzdCB0aGUgaW5wdXQgdG8gR3N0Q2xvY2tUaW1lIGJlZm9yZSBjb21wYXJpbmcgd2l0aAoJICBhbm90aGVyIEdzdENsb2NrVGltZSB2YWx1ZS4KCjIwMDYtMDMtMTAgMTk6MTI6MDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIGxvZyB3aGF0IHdlJ3JlIHdhaXRpbmcgb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGxvZyB3aGF0IHdlJ3JlIHdhaXRpbmcgb24KCjIwMDYtMDMtMTAgMTk6MTE6MzQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIGhlYWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gaGVhZAoKPT09IHJlbGVhc2UgMC4xMC40ID09PQoKMjAwNi0wMy0xMCAxOTowMzoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9tYW51YWwvUkVBRE1FOgoJKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMuYXJnczoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiBkb2NzL3VwbG9hZC5tYWs6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgcmVsZWFzaW5nIDAuMTAuNAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVsZWFzaW5nIDAuMTAuNAoKMjAwNi0wMy0xMCAxNTozMDoyNyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBGaXggZG9jcyBmb3IgZGF0YXByb2NvdG9sIHRvIG5vdCBnZXQgdGhlIHJldHVybiB0eXBlcyBjb21wbGV0ZWx5IHdyb25nIGZvciBhIGZlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzoKCSAgRml4IGRvY3MgZm9yIGRhdGFwcm9jb3RvbCB0byBub3QgZ2V0IHRoZSByZXR1cm4gdHlwZXMgY29tcGxldGVseQoJICB3cm9uZyBmb3IgYSBmZXcgZnVuY3Rpb25zLgoKMjAwNi0wMy0wOSAxOTowMDoyMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBwcmVyZWxlYXNpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHByZXJlbGVhc2luZwoKMjAwNi0wMy0wOSAxNjo1MzowNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFkZCBuZXcgQVBJOiBnc3RfcGlwZWxpbmVfc2V0X2F1dG9fZmx1c2hfYnVzKCkgYW5kIGdzdF9waXBlbGluZV9nZXRfYXV0b19mbHVzaF9idXMoKSB0byBkaXNhYmxlIGF1dG9tYXRpYyBmbHVzaGluZyBvZi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NsYXNzX2luaXQpLAoJICAoZ3N0X3BpcGVsaW5lX2luaXQpLCAoZ3N0X3BpcGVsaW5lX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfcGlwZWxpbmVfZ2V0X3Byb3BlcnR5KSwgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpLAoJICAoZ3N0X3BpcGVsaW5lX3NldF9hdXRvX2ZsdXNoX2J1cyksCgkgIChnc3RfcGlwZWxpbmVfZ2V0X2F1dG9fZmx1c2hfYnVzKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSAgQWRkIG5ldyBBUEk6IGdzdF9waXBlbGluZV9zZXRfYXV0b19mbHVzaF9idXMoKSBhbmQKCSAgZ3N0X3BpcGVsaW5lX2dldF9hdXRvX2ZsdXNoX2J1cygpIHRvIGRpc2FibGUgYXV0b21hdGljCgkgIGZsdXNoaW5nIG9mIHRoZSBwaXBlbGluZSdzIEdzdEJ1cyB3aGVuIGdvaW5nIGZyb20gUkVBRFkKCSAgdG8gTlVMTCBzdGF0ZSAoIzMzMjA0NSkuCgoyMDA2LTAzLTA5IDEyOjA4OjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQWRkIG5ldyBBUEk6IGdzdF91cmlfaGFzX3Byb3RvY29sKCkgKCMzMzM3NzkpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF91cmlfaGFzX3Byb3RvY29sKToKCSAgKiBnc3QvZ3N0dXJpLmg6CgkgIEFkZCBuZXcgQVBJOiBnc3RfdXJpX2hhc19wcm90b2NvbCgpICgjMzMzNzc5KS4KCjIwMDYtMDMtMDkgMTE6NDU6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2xvY2suKjogUmV2aWV3IGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2VudHJ5X25ldyksCgkgIChnc3RfY2xvY2tfaWRfY29tcGFyZV9mdW5jKSwgKGdzdF9jbG9ja19pZF93YWl0KSwKCSAgKGdzdF9jbG9ja19pZF93YWl0X2FzeW5jKSwgKGdzdF9jbG9ja19pZF91bnNjaGVkdWxlKSwKCSAgKGdzdF9jbG9ja19pbml0KSwgKGdzdF9jbG9ja19nZXRfaW50ZXJuYWxfdGltZSksCgkgIChnc3RfY2xvY2tfc2V0X21hc3RlciksIChkb19saW5lYXJfcmVncmVzc2lvbiksCgkgIChnc3RfY2xvY2tfYWRkX29ic2VydmF0aW9uKSwgKGdzdF9jbG9ja19zZXRfcHJvcGVydHkpOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBSZXZpZXcgZG9jcy4KCSAgU21hbGwgY2xlYW51cHMuCgkgIEZpeCBhIHBvc3NpYmxlIHNlZ2ZhdWx0IHdoZW4gdGhlIHdpbmRvdy1zaXplIGlzIG1hZGUgc21hbGxlci4KCSAgQ2FsY3VsYXRlIGppdHRlciBiZWZvcmUgcGVyZm9ybWluZyB0aGUgY2xvY2sgd2FpdC4gSWRlYWxseQoJICB0aGUgY2xvY2sgaW1wbGVtZW50YXRpb24gc2hvdWxkIGNhbGN1bGF0ZSBqaXR0ZXIgYnV0IHdlIG5lZWQKCSAgQVBJIGJyZWFrYWdlIGZvciB0aGF0LgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pbml0KToKCSAgRG9jcyByZXZpZXcuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKToKCSAgUmVtb3ZlIGxlZnRvdmVyIGVsc2UKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9zeXN0ZW1jbG9ja19zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrIHRvIHRlc3QgR1NUX0NMT0NLX0RJRkYuCgoyMDA2LTAzLTA5IDEwOjQ2OjM1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiBJZiB3ZSBhcmUgcHJvdmlkZWQgd2l0aCB0aGUgc2l6ZSwgd2Ugc2hvdWxkIGltcGxlbWVudAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChoZWxwZXJfZmluZF9nZXRfbGVuZ3RoKSwKCSAgKGdzdF90eXBlX2ZpbmRfaGVscGVyX2dldF9yYW5nZSk6CgkgIElmIHdlIGFyZSBwcm92aWRlZCB3aXRoIHRoZSBzaXplLCB3ZSBzaG91bGQgaW1wbGVtZW50CgkgIEdzdFR5cGVGaW5kOjpnZXRfbGVuZ3RoLCBzbyB0aGF0IHR5cGVmaW5kIGZ1bmN0aW9ucyB3aG8KCSAgd2FudCB0byBjYW4gYWN0dWFsbHkgcGVlayBhdCB0aGUgbWlkZGxlIG9mIGEgZmlsZS4KCjIwMDYtMDMtMDggMTQ6MzA6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDogQWRkIHNvbWUgdmVyeSB2ZXJ5IGJhc2ljIGVycm9yIGNoZWNraW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDoKCSAgQWRkIHNvbWUgdmVyeSB2ZXJ5IGJhc2ljIGVycm9yIGNoZWNraW5nLgoJICAqIGRvY3MvcHdnL2FwcGVuZGl4LWNoZWNrbGlzdC54bWw6CgkgIFNvbWUgdXBkYXRlcyB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8gY2hlY2sgd2hlbiB3cml0aW5nIGFuIGVsZW1lbnQuCgoyMDA2LTAzLTA4IDEzOjQ0OjU1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXRyYW5zZm9ybS50eHQ6IEFkZGVkIHNvbWUgZG9jcyBhYm91dCB0aGUgZGVzaWduIG9mIHRyYW5mb3JtIGVsZW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtdHJhbnNmb3JtLnR4dDoKCSAgQWRkZWQgc29tZSBkb2NzIGFib3V0IHRoZSBkZXNpZ24gb2YgdHJhbmZvcm0gZWxlbWVudHMuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19sb29wKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBNYXJrIGJ1ZmZlcnMgd2l0aCB0aGUgRElTQ09OVCBmbGFnLgoKMjAwNi0wMy0wOCAxMjo1NzozNyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0LzogUmV3cml0ZSByZWdpc3RyeS1zYXZpbmcgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGFuZCBjaGVjayBmb3IgZmFpbGVkIHdyaXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChnc3RfcmVnaXN0cnlfc2F2ZSksCgkgIChnc3RfcmVnaXN0cnlfc2F2ZV9lc2NhcGVkKSwgKGdzdF9yZWdpc3RyeV94bWxfc2F2ZV9jYXBzKSwKCSAgKGdzdF9yZWdpc3RyeV94bWxfc2F2ZV9wYWRfdGVtcGxhdGUpLAoJICAoZ3N0X3JlZ2lzdHJ5X3htbF9zYXZlX2ZlYXR1cmUpLCAoZ3N0X3JlZ2lzdHJ5X3htbF9zYXZlX3BsdWdpbiksCgkgIChnc3RfcmVnaXN0cnlfeG1sX3dyaXRlX2NhY2hlKToKCSAgUmV3cml0ZSByZWdpc3RyeS1zYXZpbmcgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGFuZCBjaGVjayBmb3IKCSAgZmFpbGVkIHdyaXRlcy4KCjIwMDYtMDMtMDggMTA6MTc6NDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogQ2xlYW51cHMsIHNlcGFyYXRlIG5vcm1hbCBmbG93IGZyb20gZXJyb3JzLCBhZGQgc2Vuc2libGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fdHJhbnNmb3JtX2NhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9zaXplKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF91bml0X3NpemUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKToKCSAgQ2xlYW51cHMsIHNlcGFyYXRlIG5vcm1hbCBmbG93IGZyb20gZXJyb3JzLCBhZGQgc2Vuc2libGUKCSAgREVCVUcgbGluZXMuCgkgIERvbid0IHRyeSB0byByZW5lZ290aWF0ZSB3aGVuIGFsbG9jYXRpbmcgYW4gb3V0cHV0IGJ1ZmZlci4KCSAgQWxzbyBjb3B5IERJU0NPTlQgYnVmZmVyIGZsYWcgd2hlbiBjb3B5aW5nIGEgYnVmZmVyLgoJICBSZXNldCB0aGUgdHJhbnNmb3JtIGFmdGVyIHdlIGZpbmlzaCBzdHJlYW1pbmcsIG5vdCBkdXJpbmcuCgoyMDA2LTAzLTA4IDA5OjQ2OjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBVc2UgbGFzdCBidWZmZXIgdGltZXN0YW1wIGluIHFvcyBtZXNzYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpOgoJICBVc2UgbGFzdCBidWZmZXIgdGltZXN0YW1wIGluIHFvcyBtZXNzYWdlLgoKMjAwNi0wMy0wNyAxNzowNjo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvcHdnLzogQXBwbGllZCBwYXRjaCBmcm9tIENocmlzdG9waGUgRmVyZ2VhdSwgZml4ZXMgIzMzMzQxNgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC10YWdnaW5nLnhtbDoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1wYWRzLnhtbDoKCSAgQXBwbGllZCBwYXRjaCBmcm9tIENocmlzdG9waGUgRmVyZ2VhdSwgZml4ZXMgIzMzMzQxNgoKMjAwNi0wMy0wNyAxNjoyMTowMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6IEFkZGVkIGJhc2VzaW5rIG5ldyBtZXRob2RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBBZGRlZCBiYXNlc2luayBuZXcgbWV0aG9kcy4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgRG9jcyB1cGRhdGVzLiBGbGVzaCBvdXQgdGhlIFFvUyBkb2NzLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBTbWFsbCBkb2MgY2xhcmlmaWNhdGlvbiBhYm91dCBvd25lcnNoaXAgYW5kIGZsdXNoaW5nLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfc2V0X3N5bmMpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfc3luYyksIChnc3RfYmFzZV9zaW5rX3NldF9tYXhfbGF0ZW5lc3MpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfbWF4X2xhdGVuZXNzKSwgKGdzdF9iYXNlX3Npbmtfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBBZGRlZCBuZXcgbWV0aG9kcyB0byBhbGxvdyBzdWJjbGFzcyB0byBjb250cm9sIG1heC1sYXRlbmVzcwoJICBhbmQgc3luYy4KCSAgR2VuZXJhdGUgdmVyeSBiYXNpYyBRb1MgZXZlbnRzIGJhc2VkIG9uIGxhc3Qgc3luYyBvYnNlcnZhdGlvbi4KCSAgVXBkYXRlZCBkb2NzLCBmaXggdHlwbywgYWRkZWQgc29tZSBRb1MgYmx1cmIuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIFJlbW92ZSBvYnNvbGV0ZSBfZ2V0X3N0YXRlKCkgY2FsbHMgZnJvbSBkb2NzLgoKMjAwNi0wMy0wNyAxNToxNDo1MSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEZpeCAjMzMzNjY5LCBBZGQgcGFkIGFjY2Vzc29yIGRlZmluZXMgZm9yIEdzdEJhc2VUcmFuc2Zvcm0KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgRml4ICMzMzM2NjksIEFkZCBwYWQgYWNjZXNzb3IgZGVmaW5lcyBmb3IgR3N0QmFzZVRyYW5zZm9ybQoJICBGaXggZG9jcyBmb3IgR3N0QmFzZVNyYy4KCjIwMDYtMDMtMDcgMTU6MDg6NTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTbWFsbCBkb2N1bWVudGF0aW9uIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgU21hbGwgZG9jdW1lbnRhdGlvbiBmaXhlcy4KCjIwMDYtMDMtMDcgMTE6NDc6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogRG9jdW1lbnQgdGhyZWFkLXVuc2FmZXR5IG9mIGdzdF92YWx1ZV9yZWdpc3Rlcl9mb29fZnVuYygpIHdoZW4gdXNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIGdzdF92YWx1ZV9mb28uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIERvY3VtZW50IHRocmVhZC11bnNhZmV0eSBvZiBnc3RfdmFsdWVfcmVnaXN0ZXJfZm9vX2Z1bmMoKQoJICB3aGVuIHVzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyBnc3RfdmFsdWVfZm9vKCkgKCMzMjI2MjgpLgoKMjAwNi0wMy0wNyAxMDoxOToyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBSRUFETUU6CgkgIHVwZGF0ZSBSRUFETUUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBSRUFETUUKCjIwMDYtMDMtMDcgMDk6Mjg6NDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzogUHVzaCBzb3VyY2VzIGRvbid0IHN1cHBvcnQgcHVsbCBtb2RlIGJ5IGRlZmF1bHQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5jOiAoZ3N0X3B1c2hfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X3B1c2hfc3JjX2NoZWNrX2dldF9yYW5nZSk6CgkgIFB1c2ggc291cmNlcyBkb24ndCBzdXBwb3J0IHB1bGwgbW9kZSBieSBkZWZhdWx0LgoKMjAwNi0wMy0wNiAxOTo1NTowNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy4qOiBBZGQgOjpjaGVja19nZXRfcmFuZ2UoKSB2ZnVuYyB0byBHc3RCYXNlU3JjICgjMzMyNjExKSwgcHJvdmlkZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBhbi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19pbml0KSwgKGdzdF9iYXNlX3NyY19wYWRfY2hlY2tfZ2V0X3JhbmdlKSwKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X2NoZWNrX2dldF9yYW5nZSk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIEFkZCA6OmNoZWNrX2dldF9yYW5nZSgpIHZmdW5jIHRvIEdzdEJhc2VTcmMgKCMzMzI2MTEpLAoJICBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFuZCByZW5hbWUKCSAgZ3N0X2Jhc2Vfc3JjX2NoZWNrX2dldF9yYW5nZSgpIHRvCgkgIGdzdF9iYXNlX3NyY19wYWRfY2hlY2tfZ2V0X3JhbmdlKCkgZm9yIGNsYXJpdHkuCgoyMDA2LTAzLTA2IDE2OjI0OjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL3N0eWxlZ3VpZGU6CgkgIHN0eWxlIGd1aWRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzdHlsZSBndWlkZQoKMjAwNi0wMy0wNiAxNjoxMDo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogTWFrZSBwcm9wZXJ0eSBvdmVycmlkYWJsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KToKCSAgTWFrZSBwcm9wZXJ0eSBvdmVycmlkYWJsZS4KCjIwMDYtMDMtMDYgMTY6MDI6MzcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLio6IE1ha2UgbWF4LWxhdGVuZXNzIGEgcHJvcGVydHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX2luaXQpLCAoZ3N0X2Jhc2Vfc2lua19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcHJvcGVydHkpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIE1ha2UgbWF4LWxhdGVuZXNzIGEgcHJvcGVydHkuCgoyMDA2LTAzLTA2IDE1OjE2OjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBEb24ndCBldmVyIGRyYXcgYSBmcmFtZSB0aGF0IGlzID4xMG1zIGxhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3Npbmtfd2FpdF9jbG9jayksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19yZW5kZXJfb2JqZWN0KToKCSAgRG9uJ3QgZXZlciBkcmF3IGEgZnJhbWUgdGhhdCBpcyA+MTBtcyBsYXRlLgoKMjAwNi0wMy0wNiAxNDo1MTozNiArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdG1lc3NhZ2UuYzogV2hlbiBjb3B5aW5nIGEgbWVzc2FnZSwgc2V0IHRoZSBwYXJlbnRfcmVmY291bnQgb2YgdGhlIGVuY2xvc2VkIHN0cnVjdHVyZSB0byBwb2ludCBhdCB0aGUgY29weSwgbm90Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChfZ3N0X21lc3NhZ2VfY29weSk6CgkgIFdoZW4gY29weWluZyBhIG1lc3NhZ2UsIHNldCB0aGUgcGFyZW50X3JlZmNvdW50IG9mIHRoZSBlbmNsb3NlZAoJICBzdHJ1Y3R1cmUgdG8gcG9pbnQgYXQgdGhlIGNvcHksIG5vdCB0aGUgb3JpZ2luYWwgbWVzc2FnZS4KCjIwMDYtMDMtMDYgMTQ6NDY6MzEgKzAwMDAgIENocmlzdG9waGUgRmVyZ2VhdSA8dGV1ZkBnbm9tZS5vcmc+CgoJICBnc3QvZ3N0dXRpbHMuaDogRG8gcHJvcGVyIGNhc3QgaGVyZSB0byBtYWtlIEdTVF9CT0lMRVJQTEFURV9XSVRIX0lOVEVSRkFDRQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgRG8gcHJvcGVyIGNhc3QgaGVyZSB0byBtYWtlIEdTVF9CT0lMRVJQTEFURV9XSVRIX0lOVEVSRkFDRQoJICB1c2FibGUgaW4gYysrIGNvZGUgKCMzMzM0MTc7IHBhdGNoIGJ5OiBDaHJpc3RvcGhlIEZlcmdlYXUpCgoyMDA2LTAzLTA2IDE0OjM0OjQ5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RjbG9jay5oOiBTaG93IEdTVF9DTE9DS19USU1FX05PTkUgYXMgOTk6OTk6OTkuOTk5OTk5OTk5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBTaG93IEdTVF9DTE9DS19USU1FX05PTkUgYXMgOTk6OTk6OTkuOTk5OTk5OTk5CgoyMDA2LTAzLTA2IDE0OjIzOjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbWFudWFsL2FwcGVuZGl4LXF1b3Rlcy54bWw6CgkgIGFkZCBhbm90aGVyIHF1b3RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgYW5vdGhlciBxdW90ZQoKMjAwNi0wMy0wNSAyMDo1Njo1NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBNYWtlIHN1cmUgY2FwcyBhcmUgd3JpdGFibGUgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byBnc3RfY2Fwc19hcHBlbmQoKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fdHJhbnNmb3JtX2NhcHMpOgoJICBNYWtlIHN1cmUgY2FwcyBhcmUgd3JpdGFibGUgYmVmb3JlIHBhc3NpbmcgdGhlbSB0bwoJICBnc3RfY2Fwc19hcHBlbmQoKS4KCjIwMDYtMDMtMDQgMTQ6NDU6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZXJyb3IuaDogRml4IHNvbWUgbWlub3IgZG9jcyBlcnJvcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlcnJvci5oOgoJICBGaXggc29tZSBtaW5vciBkb2NzIGVycm9ycy4KCjIwMDYtMDMtMDQgMTM6NTQ6MjYgKzAwMDAgIFJvc3MgQnVydG9uIDxyb3NzQGJ1cnRvbmluaS5jb20+CgoJICBnc3QvZ3N0ZXJyb3IuKjogQWRkIEdTVF9SRVNPVVJDRV9FUlJPUl9OT19TUEFDRV9MRUZUIChmb3IgIzMzMzM1MjsKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVycm9yLmM6IChfZ3N0X3Jlc291cmNlX2Vycm9yc19pbml0KToKCSAgKiBnc3QvZ3N0ZXJyb3IuaDoKCSAgQWRkIEdTVF9SRVNPVVJDRV9FUlJPUl9OT19TUEFDRV9MRUZUIChmb3IgIzMzMzM1MjsKCSAgcGF0Y2ggYnk6IFJvc3MgQnVydG9uIDxyb3NzIGF0IGJ1cnRvbmluaSBkb3QgY29tPikuCgoyMDA2LTAzLTAzIDE2OjU4OjUxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3QuYzogQWRkIGEgY2hlY2sgYW5kIG91dHB1dCBhIGdfd2FybmluZyB3aGVuIEdTdHJlYW1lciBpcyBidWlsdCBhZ2FpbnN0IEdMaWIgMi42IGJ1dCBydW5uaW5nIGFnYWluc3QgMi44IG9yIGhpZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIEFkZCBhIGNoZWNrIGFuZCBvdXRwdXQgYSBnX3dhcm5pbmcgd2hlbiBHU3RyZWFtZXIgaXMgYnVpbHQKCSAgYWdhaW5zdCBHTGliIDIuNiBidXQgcnVubmluZyBhZ2FpbnN0IDIuOCBvciBoaWdoZXIsIGFuZCB2aWNlCgkgIHZlcnNhLiAoQ2xvc2VzOiAjMzIzNTQyKQoKMjAwNi0wMy0wMyAxNTozMjozMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvcGFyc2UvcGFyc2UubDogQ29tbWl0IHBhdGNoIGZvciBwYXJzZV9sYXVuY2ggc3ludGF4IGZyb20gIzMzMTI1NS4gUmVtb3ZlcyBzdXBwb3J0IGZvciBxdW90ZWQgc3RyaW5ncyBhbmQgbWltZXR5cGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3BhcnNlL3BhcnNlLmw6CgkgIENvbW1pdCBwYXRjaCBmb3IgcGFyc2VfbGF1bmNoIHN5bnRheCBmcm9tICMzMzEyNTUuIFJlbW92ZXMKCSAgc3VwcG9ydCBmb3IgcXVvdGVkIHN0cmluZ3MgYW5kIG1pbWV0eXBlcyB3aGVuIHdyaXRpbmcgZmlsdGVyZWQKCSAgY2Fwcy4gU2VlIHRoZSBidWcgcmVwb3J0IGZvciBtb3JlIGRldGFpbHMgLSBJJ20gcHJldHR5IHN1cmUgdGhpcwoJICBvYnNjdXJlIGZlYXR1cmUgaXMgbm90IGluIHVzZSBieSBfYW55b25lXyBhbnl3aGVyZS4KCSAgV2l0aCB0aGlzIHNpbXBsZSBjaGFuZ2UsIHRoZSBzaXplIG9mIHRoZSBnc3RyZWFtZXIuc28gaGVyZQoJICBkcm9wcyBmcm9tIDIxOTNLQiB0byAxNTY1S0IuCgoyMDA2LTAzLTAzIDE0OjE4OjAxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuKjogVXNlIGdzdF90eXBlX2ZpbmRfaGVscGVyX2Zvcl9idWZmZXIoKSBmb3IgY2hhaW4tYmFzZWQgdHlwZWZpbmRpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9zcmNfZXZlbnQpLCAoc3RhcnRfdHlwZWZpbmRpbmcpLAoJICAoc3RvcF90eXBlZmluZGluZyksIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfaGFuZGxlX2V2ZW50KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbiksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW5fZG9fdHlwZWZpbmRpbmcpOgoJICBVc2UgZ3N0X3R5cGVfZmluZF9oZWxwZXJfZm9yX2J1ZmZlcigpIGZvciBjaGFpbi1iYXNlZAoJICB0eXBlZmluZGluZy4KCjIwMDYtMDMtMDMgMTE6NDI6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBEZXByZWNhdGUgIm1heGltdW0iIHByb3BlcnR5IChub3Qgb25seSB3YXMgaXQgb25seSB0YWtlbiBpbnRvIGFjY291bnQgZm9yIHR5cGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2dldF9wcm9wZXJ0eSk6CgkgIERlcHJlY2F0ZSAibWF4aW11bSIgcHJvcGVydHkgKG5vdCBvbmx5IHdhcyBpdCBvbmx5IHRha2VuIGludG8KCSAgYWNjb3VudCBmb3IgdHlwZWZpbmRpbmcgaW4gcHVzaC1tb2RlIGFueXdheSwgaXQgYWxzbyB3YXMgbmV2ZXIKCSAgYWN0dWFsbHkgcG9zc2libGUgdG8gc2V0IGl0IGluIHRoZSBmaXJzdCBwbGFjZSBiZWNhdXNlIHRoZQoJICBwcm9wZXJ0eSB3YXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBudW1lcmljIHByb3BlcnR5IElEIGZvciB0aGUKCSAgIm1pbmltdW0iIHByb3BlcnR5KS4gUmVnaXN0ZXIgIm1heGltdW0iIHByb3BlcnR5IGNvcnJlY3RseSwKCSAgZm9yIHRoZSBzYWtlIG9mIGZ1dHVyZSBjb3B5J24ncGFzdGVycy4gUmVtb3ZlIHNvbWUgY3J1ZnQKCSAgZnJvbSBwcm9wZXJ0eSBnZXQvc2V0IGZ1bmN0aW9ucy4KCjIwMDYtMDMtMDMgMTE6Mjc6MDIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBVc2UgZ3N0X3R5cGVfZmluZF9oZWxwZXJfZ2V0X3JhbmdlKCkgaGVyZSwgc28gd2UgY2FuIGhvbm91ciB0aGUgbWluLXByb2JhYmlsaXQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9hY3RpdmF0ZSk6CgkgIFVzZSBnc3RfdHlwZV9maW5kX2hlbHBlcl9nZXRfcmFuZ2UoKSBoZXJlLCBzbyB3ZQoJICBjYW4gaG9ub3VyIHRoZSBtaW4tcHJvYmFiaWxpdHkgcHJvcGVydHkgYW5kIGFsc28gZW1pdAoJICB0aGUgc2lnbmFsIHdpdGggdGhlIGNvcnJlY3QgcHJvYmFiaWxpdHkgb2YgdGhlIGZvdW5kIGNhcHMuCgoyMDA2LTAzLTAyIDEzOjQ1OjMyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTmV3IEFQSTogZ3N0X3R5cGVfZmluZF9oZWxwZXJfZ2V0X3JhbmdlKCkgKCMzMzMwNDIpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzogKGhlbHBlcl9maW5kX3BlZWspLAoJICAoaGVscGVyX2ZpbmRfc3VnZ2VzdCksIChnc3RfdHlwZV9maW5kX2hlbHBlcl9nZXRfcmFuZ2UpLAoJICAoZ3N0X3R5cGVfZmluZF9oZWxwZXIpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSAgTmV3IEFQSTogZ3N0X3R5cGVfZmluZF9oZWxwZXJfZ2V0X3JhbmdlKCkgKCMzMzMwNDIpLgoKMjAwNi0wMy0wMiAxMTowNDo1OCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IEFzc2VydGluZyBvbiBhIGZhaWx1cmUgdG8gcmVhZCBwYXJ0IG9mIHRoZSByZWdpc3RyeSBpcyBOb3QgQ29vbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChsb2FkX2ZlYXR1cmUpOgoJICBBc3NlcnRpbmcgb24gYSBmYWlsdXJlIHRvIHJlYWQgcGFydCBvZiB0aGUgcmVnaXN0cnkgaXMgTm90IENvb2wuCgkgIEp1c3QgbG9nIGEgd2FybmluZyBhbmQgcmV0dXJuIE5VTEwgKHdoaWNoIGlzIGFscmVhZHkgaGFuZGxlZCkKCjIwMDYtMDItMjggMjA6NTc6MTAgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjogYWRkZWQgZXhwb3J0IG9mIGdzdF90eXBlX2ZpbmRfaGVscGVyX2Zvcl9idWZmZXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBhZGRlZCBleHBvcnQgb2YgZ3N0X3R5cGVfZmluZF9oZWxwZXJfZm9yX2J1ZmZlcgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgYWRkZWQgc29tZSBleHBvcnRzIDogZ3N0X2Jpbl9pdGVyYXRlX2VsZW1lbnRzLCBnc3RfaXRlcmF0b3JfcmVzeW5jLAoJICBnc3RfZ2hvc3RfcGFkX2dldF90YXJnZXQKCjIwMDYtMDItMjggMTc6MjQ6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6IFdlIHVzZSBGaWx0ZXIgbm93LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6CgkgIFdlIHVzZSBGaWx0ZXIgbm93LgoJICBBZGRlZCBDb25uZWN0b3IgdG8gbWFyayBlbGVtZW50cyB0aGF0IGFyZSBvbmx5IHVzZWQgdG8KCSAgYWxsb3cgcGlwZWxpbmUgY29ubmVjdGlvbnMuCgkgIE1vdmVkIERlYnVnIHRvIGV4dHJhIGZlYXR1cmUgc2luY2UgbW9zdCBvZiB0aGVtIGFyZQoJICBmdW5jdGlvbmFsbHkgc29tZXRoaW5nIGVsc2UuCgoyMDA2LTAyLTI4IDE3OjAzOjMyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vZHJhZnQta2xhc3MudHh0OiBTb21lIHVwZGF0ZXMgYW5kIGNsYXJpZmljYXRpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6CgkgIFNvbWUgdXBkYXRlcyBhbmQgY2xhcmlmaWNhdGlvbnMuCgoyMDA2LTAyLTI4IDE1OjU0OjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vZHJhZnQta2xhc3MudHh0OiBQcm9wb3NhbCBmb3Iga2xhc3MgZmllbGQgdmFsdWVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1rbGFzcy50eHQ6CgkgIFByb3Bvc2FsIGZvciBrbGFzcyBmaWVsZCB2YWx1ZXMuCgkgICogZG9jcy9kZXNpZ24vcGFydC1zdHJlYW1zLnR4dDoKCSAgU3RhcnQgb2YgYSBkb2MgZGVzY3JpYmluZyBzdHJlYW0gYW5hdG9teS4KCjIwMDYtMDItMjggMTA6NTI6MDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEhlbHAgdGhlIGNvbXBpbGVyIGEgYml0IHdpdGggdHlwZSByZWdpc3RyYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZ2V0X3R5cGUpLCAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgSGVscCB0aGUgY29tcGlsZXIgYSBiaXQgd2l0aCB0eXBlIHJlZ2lzdHJhdGlvbi4KCSAgVXNlIGV4aXN0aW5nIGZvcndhcmQgY29kIHBhdGggaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdCB3aGVuCgkgIGhhbmRsaW5nIGEgbWVzc2FnZS4KCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfZ2V0X3R5cGUpLCAoZ3N0X3N0YXRpY19jYXBzX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOiAoZ3N0X2NoaWxkX3Byb3h5X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19nZXRfdHlwZSk6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF90eXBlKSwKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzogKGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RpbmRleGZhY3RvcnkuYzogKGdzdF9pbmRleF9mYWN0b3J5X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19nZXRfdHlwZSk6CgkgICogZ3N0L2dzdHRhc2suYzogKGdzdF90YXNrX2dldF90eXBlKSwgKGdzdF90YXNrX2pvaW4pOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICBIZWxwIGNvbXBpbGVyIHdpdGggdHlwZSByZWdpc3RyYXRpb24uCgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KToKCSAgU21hbGwgZG9jIHVwZGF0ZS4KCjIwMDYtMDItMjcgMjA6MDE6NTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBXaGVuIHdlIGdldCBhbiBFT1MgZXZlbnQgYW5kIGhhdmUgbm90IGZvdW5kIGEgdHlwZSB5ZXQgKG1vc3QgbGlrZWx5IGJlY2F1c2Ugd2UuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYW5kbGVfZXZlbnQpOgoJICBXaGVuIHdlIGdldCBhbiBFT1MgZXZlbnQgYW5kIGhhdmUgbm90IGZvdW5kIGEgdHlwZSB5ZXQKCSAgKG1vc3QgbGlrZWx5IGJlY2F1c2Ugd2UgaGFkIG5vdCB5ZXQgYWNjdW11bGF0ZWQKCSAgVFlQRV9GSU5EX01JTl9TSVpFIG9mIGRhdGEgeWV0KSwgdHJ5IHRvIGRldGVybWluZSB0aGUKCSAgdHlwZSBnaXZlbiB0aGUgZGF0YSB3ZSBoYXZlIHNvIGZhci4gRml4ZXMgdHlwZWZpbmRpbmcKCSAgZm9yIHZlcnkgc2hvcnQgc3RyZWFtcyBhZ2FpbiwgbW9zdCBub3RhYmx5IHF1aWNrdGltZQoJICByZWRpcmVjdGlvbnMgYXMgdXNlZCBvbiBBcHBsZSdzIHRyYWlsZXIgc2l0ZSAoIzMzMTcwMSkuCgoyMDA2LTAyLTI3IDE5OjQ1OjMxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiBUcnkgdHlwZWZpbmRpbmcgZmFjdG9yaWVzIHdpdGggdGhlIGhpZ2hlc3QgcmFuayBmaXJzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAodHlwZV9maW5kX2ZhY3RvcnlfcmFua19jbXApLAoJICAoZ3N0X3R5cGVfZmluZF9oZWxwZXIpOgoJICBUcnkgdHlwZWZpbmRpbmcgZmFjdG9yaWVzIHdpdGggdGhlIGhpZ2hlc3QgcmFuayBmaXJzdC4KCjIwMDYtMDItMjcgMTk6MTk6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBZGQgc2VjdGlvbiBmb3IgdHlwZWZpbmQgaGVscGVyIGFuZCBhZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG9sZCBhbmQgdGhlIG5ldyBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzoKCSAgQWRkIHNlY3Rpb24gZm9yIHR5cGVmaW5kIGhlbHBlciBhbmQgYWRkIGRvY3VtZW50YXRpb24KCSAgZm9yIHRoZSBvbGQgYW5kIHRoZSBuZXcgZnVuY3Rpb24uCgoyMDA2LTAyLTI3IDE4OjQzOjI2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci4qOiBOZXcgQVBJOiBnc3RfdHlwZV9maW5kX2hlbHBlcl9mb3JfYnVmZmVyKCkgKCMzMzI3MjMpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChidWZfaGVscGVyX2ZpbmRfcGVlayksCgkgIChidWZfaGVscGVyX2ZpbmRfc3VnZ2VzdCksICh0eXBlX2ZpbmRfZmFjdG9yeV9yYW5rX2NtcCksCgkgIChnc3RfdHlwZV9maW5kX2hlbHBlcl9mb3JfYnVmZmVyKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmg6CgkgIE5ldyBBUEk6IGdzdF90eXBlX2ZpbmRfaGVscGVyX2Zvcl9idWZmZXIoKSAoIzMzMjcyMykuCgoyMDA2LTAyLTI3IDE1OjQzOjEwICswMDAwICBMb8OvYyBNaW5pZXIgPGxvb2wuZ25vbWVAdmlhLmVjcC5mcj4KCgkgIFBhdGNoIGZyb20gTG/Dr2MgTWluaWVyIHRvIHByZXZlbnQgQ1ZTIGRpcmVjdG9yaWVzIGdldHRpbmcgZGlzdGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZG9jcy9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL3NsaWRlcy9NYWtlZmlsZS5hbToKCSAgUGF0Y2ggZnJvbSBMb8OvYyBNaW5pZXIgdG8gcHJldmVudCBDVlMgZGlyZWN0b3JpZXMgZ2V0dGluZyBkaXN0ZWQuCgoyMDA2LTAyLTI3IDEyOjEwOjQ3ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgdXBkYXRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUKCjIwMDYtMDItMjcgMTE6MDE6MDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBVc2UgdGhlIFJFRkNPVU5USU5HIGNhdGVnb3J5IGZvciBjYXBzIHJlZmNvdW50aW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfcmVmKSwgKGdzdF9jYXBzX3VucmVmKToKCSAgVXNlIHRoZSBSRUZDT1VOVElORyBjYXRlZ29yeSBmb3IgY2FwcyByZWZjb3VudGluZy4KCjIwMDYtMDItMjYgMTk6MjA6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBUaGlzIHNob3VsZCBiZSAwIG5vdCBHU1RfQ0xPQ0tfVElNRV9OT05FIChzZWUgIzMzMTcwMSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IChzdG9wX3R5cGVmaW5kaW5nKToKCSAgVGhpcyBzaG91bGQgYmUgMCBub3QgR1NUX0NMT0NLX1RJTUVfTk9ORSAoc2VlICMzMzE3MDEpLgoKMjAwNi0wMi0yNiAxNDo0MjoyOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IFVzZSBnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UoKSBiZWZvcmUgX2FjdGl2YXRlX3B1bGwoKSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBvcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2FjdGl2YXRlKToKCSAgVXNlIGdzdF9wYWRfY2hlY2tfcHVsbF9yYW5nZSgpIGJlZm9yZSBfYWN0aXZhdGVfcHVsbCgpCgkgIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG9wZW4vY2xvc2UgKHNlZSAjMzMxNjkwKS4KCjIwMDYtMDItMjQgMTY6NTQ6MjcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuYzogRG9jcyBlbmhhbmNlbWVudDogbWFrZSBpdCBjcnlzdGFsIGNsZWFyIHdoYXQgdGhlIGdzdF9wYWRfYWRkXypfcHJvYmUoKSBjYWxsYmFja3Mgc2hvdWxkIGxvb2sgbGlrZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIERvY3MgZW5oYW5jZW1lbnQ6IG1ha2UgaXQgY3J5c3RhbCBjbGVhciB3aGF0IHRoZQoJICBnc3RfcGFkX2FkZF8qX3Byb2JlKCkgY2FsbGJhY2tzIHNob3VsZCBsb29rIGxpa2UuCgoyMDA2LTAyLTI0IDEwOjU3OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IERvY3VtZW50IGhvdyBhcHBsaWNhdGlvbnMgY2FuIHN0b3AgcmVjb3JkaW5nIGZyb20gbGl2ZSBzb3VyY2VzIChzZWUgIzMzMDk5NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICBEb2N1bWVudCBob3cgYXBwbGljYXRpb25zIGNhbiBzdG9wIHJlY29yZGluZyBmcm9tCgkgIGxpdmUgc291cmNlcyAoc2VlICMzMzA5OTYpLgoKMjAwNi0wMi0yMyAxODowNjozMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIElnbm9yZSBtb3JlIHN0dWZmLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9wbHVnaW5zL3RtcGwvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9jaGVjay9saWJzLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvY2hlY2svcGlwZWxpbmVzLy5jdnNpZ25vcmU6CgkgIElnbm9yZSBtb3JlIHN0dWZmLgoKMjAwNi0wMi0yMyAxNzozOToyMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrLzogLi4uIGFuZCBhZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGJhc2Ugc291cmNlIEVPUyBzdHVmZi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy9iYXNlc3JjLmM6IChlb3NfZXZlbnRfY291bnRlciksCgkgIChiYXNlc3JjX2Vvc19ldmVudHNfcHVsbCksIChiYXNlc3JjX2Vvc19ldmVudHNfcHVzaCksCgkgIChiYXNlc3JjX2Vvc19ldmVudHNfcHVzaF9saXZlX29wKSwgKGJhc2VzcmNfZW9zX2V2ZW50c19wdWxsX2xpdmVfb3ApLAoJICAoZ3N0X2Jhc2VzcmNfc3VpdGUpLCAobWFpbik6CgkgIC4uLiBhbmQgYWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBiYXNlIHNvdXJjZSBFT1Mgc3R1ZmYuCgoyMDA2LTAyLTIzIDE2OjU2OjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IFRlc3QgY2FzZSBvcmlnaW5hbGx5IHNob3dlZCB0aGUgcHJvYmxlbSBmaXhlZCBiZWxvdywgYnV0IHdhcyB0aGVuIGFtZW5kZWQuIEFkZCBjaGVja3MgYmFjLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiAodGVzdF9idWZmZXJfcHJvYmVfbl90aW1lcyk6CgkgIFRlc3QgY2FzZSBvcmlnaW5hbGx5IHNob3dlZCB0aGUgcHJvYmxlbSBmaXhlZCBiZWxvdywKCSAgYnV0IHdhcyB0aGVuIGFtZW5kZWQuIEFkZCBjaGVja3MgYmFjayBhdCB0aGUgcGxhY2UKCSAgd2hlcmUgdGhleSB1c2VkIHRvIGJlLgoKMjAwNi0wMi0yMyAxNjoyNDozNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy4qOiBEb24ndCB1bmNvbmRpdGlvbmFsbHkgc2VuZCBFT1Mgd2hlbiBnb2luZyBmcm9tIFBBVVNFRCB0bwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19pbml0KSwgKGdzdF9iYXNlX3NyY19sb29wKSwKCSAgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdXNoKSwgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBEb24ndCB1bmNvbmRpdGlvbmFsbHkgc2VuZCBFT1Mgd2hlbiBnb2luZyBmcm9tIFBBVVNFRCB0bwoJICBSRUFEWSBzdGF0ZSwgZXNwLiBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2VuZCB0d28gRU9TIGV2ZW50cwoJICBpbiBzb21lIGNhc2VzIChlLmcuIG9uZSB3aGVuIHJlYWNoaW5nIEVPUyBhbmQgb25lIHdoZW4KCSAgZ29pbmcgZnJvbSBQQVVTRUQgdG8gUkVBRFkpLiBBbHNvLCB3ZSBkb24ndCB3YW50IHRvIHNlbmQKCSAgRU9TIGV2ZW50cyB3aGVuIG9wZXJhdGluZyBpbiBwdWxsIG1vZGUuIEhvd2V2ZXIsIHdlIGRvCgkgIHdhbnQgdG8gc2VuZCBhbiBFT1MgZXZlbnQgd2hlbiBzaHV0dGluZyBkb3duIGEgbGl2ZQoJICBzb3VyY2UgZXhwbGljaXRseSwgZm9yIGV4YW1wbGUgKGZpeGVzICMzMzA5OTYpLgoKMjAwNi0wMi0yMyAxMDoyNDoxMyArMDAwMCAgUmVuY2hpIFJhanUgPHJlbmNoaUBnbWFpbC5jb20+CgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogVXBkYXRlIHNyYy0+cmVhZF9wb3NpdGlvbiBhZnRlciBhIHNlZWsgd2hlbiBub3QgdXNpbmcgbW1hcC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY3JlYXRlX3JlYWQpOgoJICBVcGRhdGUgc3JjLT5yZWFkX3Bvc2l0aW9uIGFmdGVyIGEgc2VlayB3aGVuIG5vdCB1c2luZyBtbWFwLgoJICBGaXhlcyAjMzMyMjc3LCBwYXRjaCBieTogUmVuY2hpIFJhanUgPHJlbmNoaSBnbWFpbCBjb20+CgoyMDA2LTAyLTIwIDIzOjM0OjQwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC86IE1ha2UgdGhpbmdzIHdvcmsgd2l0aCAtLWRpc2FibGUtcGFyc2UgYXMgdGhleSBkbyB3aXRoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0cGFyc2UuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgTWFrZSB0aGluZ3Mgd29yayB3aXRoIC0tZGlzYWJsZS1wYXJzZSBhcyB0aGV5IGRvIHdpdGgKCSAgLS1kaXNhYmxlLWxvYWQtc2F2ZSAtIHRoZSBzeW1ib2xzIGludm9sdmVkIGRpc2FwcGVhciwgYnV0IHRoZQoJICBoZWFkZXIgaXMgc3RpbGwgaW5zdGFsbGVkIGFuZCBHU1RfRElTQUJMRV9QQVJTRSBpcyBpbmNsdWRlZCB2aWEKCSAgZ3N0Y29uZmlnLmgKCjIwMDYtMDItMjAgMTY6MDc6NDIgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEZpeCBhIHN0dXBpZCBidWcuIEkgd2FzIHN1cmUgaSBjb21waWxlZCB0aGF0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFuZ2Vfc3RhdGUpOiBGaXggYSBzdHVwaWQgYnVnLiBJIHdhcwoJICBzdXJlIGkgY29tcGlsZWQgdGhhdC4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoyMDA2LTAyLTIwIDE1OjA3OjMzICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGdzdC86IE1ha2UgdGhvc2UgZnVuY3Rpb24gYWN0IG9uIHRoZSBnaG9zdHBhZCB0YXJnZXQgd2hlbiBpdCdzIGEgZ2hvc3RwYWQuIChDbG9zZXMgIzMzMTcyNykKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfYmxvY2tlZF9hc3luYyk6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfcGFkX2FkZF9kYXRhX3Byb2JlKSwKCSAgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlKSwgKGdzdF9wYWRfYWRkX2J1ZmZlcl9wcm9iZSksCgkgIChnc3RfcGFkX3JlbW92ZV9kYXRhX3Byb2JlKSwgKGdzdF9wYWRfcmVtb3ZlX2V2ZW50X3Byb2JlKSwKCSAgKGdzdF9wYWRfcmVtb3ZlX2J1ZmZlcl9wcm9iZSk6IE1ha2UgdGhvc2UgZnVuY3Rpb24gYWN0IG9uIHRoZQoJICBnaG9zdHBhZCB0YXJnZXQgd2hlbiBpdCdzIGEgZ2hvc3RwYWQuIChDbG9zZXMgIzMzMTcyNykKCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoyMDA2LTAyLTIwIDE1OjAxOjE0ICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBNYWtlIGJhc2V0cmFuc2Zvcm0gcmV1c2FibGUuIChDbG9zZXMgIzMzMTg5OCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKTogTWFrZSBiYXNldHJhbnNmb3JtIHJldXNhYmxlLgoJICAoQ2xvc2VzICMzMzE4OTgpCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMjAwNi0wMi0yMCAxMjoyNjo1MCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL3JhbmRvbS9yZWxlYXNlOiBNb3ZlIHRoZSBjdXJyZW50IGRvY3VtZW50YXRpb24gb2YgaG93IHRvIGRvIGEgcmVsZWFzZSB0byB0aGUgdG9wIG9mIHRoZSBmaWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICBNb3ZlIHRoZSBjdXJyZW50IGRvY3VtZW50YXRpb24gb2YgaG93IHRvIGRvIGEgcmVsZWFzZSB0byB0aGUgdG9wCgkgIG9mIHRoZSBmaWxlLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksCgkgIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpOgoJICBBbGxvdyBtdWx0aXBsZSBzdGF0ZS1yZWNhbGN1bGF0aW9uIHRocmVhZHMuIChDbG9zZXMgIzMyODg3MykKCjIwMDYtMDItMTkgMTI6MjU6MDEgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdGluZm8uaDogQWRkIEdTVF9TVFJfTlVMTCB0byB0aGUgc2Vjb25kIHN0cmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDItMTkgIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBnc3QvZ3N0aW5mby5oOiBBZGQgR1NUX1NUUl9OVUxMIHRvIHRoZSBzZWNvbmQgc3RyaW5nLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uKSwgKGdzdF9wYWRfc2V0X3F1ZXJ5X3R5cGVfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9zZXRfZ2V0Y2Fwc19mdW5jdGlvbik6IEdTVF9ERUJVR19QQURfTkFNRSBldmFsdWF0ZXMgdG8KCSAgMiBzdHJpbmdzLiBZb3UgY2FuJ3QgdXNlIHRoZSBTVFJfTlVMTCBtYWNybyBvbiB0aGF0LgoKMjAwNi0wMi0xOSAxMjowMDozOCArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfZ2V0Y2Fwc19mdW5jdGlvbikKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24pLCAoZ3N0X3BhZF9zZXRfcXVlcnlfdHlwZV9mdW5jdGlvbiksCgkgIChnc3RfcGFkX3NldF9nZXRjYXBzX2Z1bmN0aW9uKQoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6IChnc3RfcGFyc2VfZm91bmRfcGFkKSwgKGdzdF9wYXJzZV9wZXJmb3JtX2RlbGF5ZWRfbGluaykKCSAgRml4ZWQgTlVMTCBwb2ludGVyIHVzZWQgaW4gR1NUX0NBVF9ERUJVRyB1c2luZyBHU1RfU1RSX05VTEwgbWFjcm8KCSAgU28gbm93LCB3ZSBjYW4gdXNlIC0tZ3N0LWRlYnVnLWxldmVsPTUgb24gV2luZG93cwoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3Rjb250cm9sbGVyLmRlZjoKCSAgQWRkZWQgZXhwb3J0IG9mIGdzdF9jb250cm9sbGVyX2luaXQKCSAgKiB3aW4zMi92czYvbGliZ3N0Y29udHJvbGxlci5kc3A6CgkgIEZpeGVkIFJlbGVhc2UgcG9zdCBidWlsZCBjb25maWd1cmF0aW9uCgoyMDA2LTAyLTE3IDE1OjI1OjM5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHF1ZXJ5LmM6IEFkZGVkIGFub3RoZXIgY2hlY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RxdWVyeS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBBZGRlZCBhbm90aGVyIGNoZWNrLgoKMjAwNi0wMi0xNSAxMjoxNzo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IFdlIGNhbiBkbyBwZWVrcyBhdCBub24temVybyBvZmZzZXRzLCBhcyBsb25nIGFzIHRoZXkgZmFsbCB3aXRoaW4gdGhlIGJ1ZmZlciB3ZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiAoZmluZF9wZWVrKToKCSAgV2UgY2FuIGRvIHBlZWtzIGF0IG5vbi16ZXJvIG9mZnNldHMsIGFzIGxvbmcgYXMgdGhleQoJICBmYWxsIHdpdGhpbiB0aGUgYnVmZmVyIHdlIGhhdmUuCgoyMDA2LTAyLTE1IDAxOjAyOjExICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHRlc3RzL2NoZWNrLzogQWRkIHRlc3RzdWl0ZSBmb3IgcGFyc2UgbGF1bmNoIHN5bnRheAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9waXBlbGluZXMvcGFyc2UtbGF1bmNoLmM6IChzZXR1cF9waXBlbGluZSksCgkgIChleHBlY3RlZF9mYWlsX3BpcGUpLCAoY2hlY2tfcGlwZWxpbmVfcnVucyksIChHU1RfU1RBUlRfVEVTVCksCgkgIChwYXJzZV9zdWl0ZSksIChtYWluKToKCSAgQWRkIHRlc3RzdWl0ZSBmb3IgcGFyc2UgbGF1bmNoIHN5bnRheAoKMjAwNi0wMi0xNCAyMDo1NzozMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IFdoZW4gdHlwZWZpbmRpbmcgaXMgdW5zdWNjZXNzZnVsIGluIHRoZSBjaGFpbiBmdW5jdGlvbiwgZG9uJ3QgZXJyb3Igb3V0IGltbWVkaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoYWluKToKCSAgV2hlbiB0eXBlZmluZGluZyBpcyB1bnN1Y2Nlc3NmdWwgaW4gdGhlIGNoYWluIGZ1bmN0aW9uLCBkb24ndAoJICBlcnJvciBvdXQgaW1tZWRpYXRlbHkuIE9ubHkgZXJyb3Igb3V0IHdpdGggTk9fQ0FQU19GT1VORCBpZgoJICB0aGUgYW1vdW50IG9mIGRhdGEgaXMgYXQgbGVhc3QgTUFYX1RZUEVGSU5EX1NJWkUgYnl0ZXMsCgkgIG90aGVyd2lzZSBzaW1wbHkgd2FpdCBmb3IgbW9yZSBkYXRhIHNvIHdlIGNhbiB0cnkgdHlwZWZpbmRpbmcKCSAgYWdhaW4gd2l0aCBtb3JlIGRhdGEgbGF0ZXIuIEFsc28sIGRvbid0IGF0dGVtcHQgdG8gdHlwZWZpbmQKCSAgaWYgd2UgaGF2ZSBsZXNzIHRoYW4gTUlOX1RZUEVGSU5EX1NJWkUgZGF0YSBhdmFpbGFibGUuIE92ZXJhbGwsCgkgIHRoaXMgc2hvdWxkIGltcHJvdmUgdHlwZWZpbmRpbmcgZnJvbSBuZXR3b3JrIHNvdXJjZXMgd2hlcmUgdGhlCgkgIHNpemUgb2YgdGhlIGZpcnN0IGJ1ZmZlciBjYW4gYmUgc29tZXdoYXQgcmFuZG9tLgoKMjAwNi0wMi0xNCAxODoyNjoxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEZpeCBwYWR0ZW1wbGF0ZSBkb2NzLCBmaXhlcyAjMzI4ODA1LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJICAqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5oOgoJICBGaXggcGFkdGVtcGxhdGUgZG9jcywgZml4ZXMgIzMyODgwNS4KCjIwMDYtMDItMTQgMTc6MjU6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IE5PX1BSRVJPTEwgaXMgbm90IGFuIEVSUk9SIHNvIGRvbid0IHNlbmQgY29uZnVzaW5nIG1lc3NhZ2VzIHRvIHRoZSB1c2VyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgTk9fUFJFUk9MTCBpcyBub3QgYW4gRVJST1Igc28gZG9uJ3Qgc2VuZCBjb25mdXNpbmcgbWVzc2FnZXMKCSAgdG8gdGhlIHVzZXIuCgoyMDA2LTAyLTE0IDE2OjE1OjA1ICswMDAwICBUb3JzdGVuIFNjaG9lbmZlbGQgPGthZmZlZXRpc2NoQGdteC5kZT4KCgkgIGdzdC9nc3RyZWdpc3RyeS5jOiBQcm90ZWN0IGRlZmF1bHQgcmVnaXN0cnkgd2l0aCBsb2NrIGFuZCByZWYvc2luayBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfcmVnaXN0cnlfZ2V0X2RlZmF1bHQpLAoJICAoX2dzdF9yZWdpc3RyeV9jbGVhbnVwKToKCSAgUHJvdGVjdCBkZWZhdWx0IHJlZ2lzdHJ5IHdpdGggbG9jayBhbmQgcmVmL3NpbmsgaXQuCgkgIEZpeGVzICMzMjQ4MTgsIHBhdGNoIGJ5IFRvcnN0ZW4gU2Nob2VuZmVsZC4KCjIwMDYtMDItMTQgMTM6MDc6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBEb2NzIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbGlzdF9hZGRfZm9ybWF0KSwKCSAgKGdzdF9xdWVyeV9zZXRfZm9ybWF0c3YpLCAoZ3N0X3F1ZXJ5X3BhcnNlX2Zvcm1hdHNfbGVuZ3RoKSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9mb3JtYXRzX250aCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfc3luY190aW1lcyk6CgkgIERvY3MgZml4ZXMuCgoyMDA2LTAyLTE0IDEyOjA3OjE2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogUmV3b3JrZWQgcXVlcnkgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgUmV3b3JrZWQgcXVlcnkgZG9jcy4KCSAgKiBnc3QvZ3N0cXVlcnkuYzogKGdzdF9xdWVyeV9uZXdfZm9ybWF0cyksCgkgIChnc3RfcXVlcnlfbGlzdF9hZGRfZm9ybWF0KSwgKGdzdF9xdWVyeV9zZXRfZm9ybWF0cyksCgkgIChnc3RfcXVlcnlfc2V0X2Zvcm1hdHN2KSwgKGdzdF9xdWVyeV9wYXJzZV9mb3JtYXRzX2xlbmd0aCksCgkgIChnc3RfcXVlcnlfcGFyc2VfZm9ybWF0c19udGgpOgoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICBGbGVzaCBvdXQgZm9ybWF0cyBxdWVyeSwgYWRkZWQgc29tZSBuZXcgbWV0aG9kcy4KCSAgRml4IHBhcnQgb2YgIzMyNDM5OC4KCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cXVlcnkuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdHF1ZXJ5X3N1aXRlKToKCSAgQWRkZWQgcXVlcnkgY3JlYXRpb24gdGVzdHMuCgoyMDA2LTAyLTE0IDExOjM4OjUwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogQWRkIGEgZGVmYXVsdCBmaXhhdGlvbiBmb3IgZnJhY3Rpb24gbGlzdHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGZpeGF0ZV92YWx1ZSk6CgkgIEFkZCBhIGRlZmF1bHQgZml4YXRpb24gZm9yIGZyYWN0aW9uIGxpc3RzLgoKMjAwNi0wMi0xMyAxNzowMzoyMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R0YXNrLio6IERldGVjdCBhbmQgd2FybiBmb3Igb2J2aW91cyBkZWFkbG9ja3MuIGZpeGVzICMzMjAzNDAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHRhc2suYzogKGdzdF90YXNrX2luaXQpLCAoZ3N0X3Rhc2tfZnVuYyksCgkgIChnc3RfdGFza19zZXRfbG9jayksIChnc3RfdGFza19zdGFydCksIChnc3RfdGFza19wYXVzZSksCgkgIChnc3RfdGFza19qb2luKToKCSAgKiBnc3QvZ3N0dGFzay5oOgoJICBEZXRlY3QgYW5kIHdhcm4gZm9yIG9idmlvdXMgZGVhZGxvY2tzLiBmaXhlcyAjMzIwMzQwCgkgIEZpeCBlcnJvciBjYXNlIHdoZXJlIGxvY2sgd2FzIG5vdCByZWxlYXNlZC4KCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFzay5jOiAodGFza19mdW5jMiksIChHU1RfU1RBUlRfVEVTVCksCgkgICh0YXNrX2Z1bmMpLCAoZ3N0X2VsZW1lbnRfc3VpdGUpLCAobWFpbik6CgkgIEFkZCB0YXNrIGNoZWNrLgoKMjAwNi0wMi0xMyAxNDowMDozMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgRm9yZ290IGNoYW5nZWxvZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRm9yZ290IGNoYW5nZWxvZwoKMjAwNi0wMi0xMyAxMzo1NzoyOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCBuZXcgZnVuY3Rpb25zIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICBBZGQgbmV3IGZ1bmN0aW9ucyB0byBkb2NzLgoKMjAwNi0wMi0xMyAxMTo1Mjo0MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFVwZGF0ZWQgVE9ETyBsaXN0LCBiYXNlc3JjIHN1cHBvcnRzIHNlZWtpbmcgdG8gbm9uLWJ5dGVzIGZvcm1hdHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFVwZGF0ZWQgVE9ETyBsaXN0LCBiYXNlc3JjIHN1cHBvcnRzIHNlZWtpbmcgdG8gbm9uLWJ5dGVzCgkgIGZvcm1hdHMuCgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OgoJICBVcGRhdGUgZG9jcy4KCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fcmVwbGFjZV9tZXNzYWdlKSwKCSAgKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19wb3N0KSwgKGdzdF9idXNfcG9wKToKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9maW5hbGl6ZSk6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0X2Rpc3BhdGNoKSwKCSAgKGdzdF9wYWRfc2VuZF9ldmVudCk6CgkgIFVzZSBzaGlueSBuZXcgX1RZUEVfTkFNRSBtYWNyb3MuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZ2V0X3JhbmdlKToKCSAgTW92ZSBkZWJ1ZyBzdGF0ZW1lbnQgdXAuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9sb2NrZWRfc3RhdGUpOgoJICBBZGQgc29tZSBkZWJ1Z2dpbmcuCgoyMDA2LTAyLTEzIDExOjE5OjMyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTmV3IEFQSTogYWRkIEdTVF9NRVNTQUdFX1RZUEVfTkFNRSBhbmQgR1NUX1FVRVJZX1RZUEVfTkFNRSBtYWNyb3MgKCMzMzA5MDYpLiBBbHNvLCBkb2N1bWVudCB0aGUgYWxyZWFkeSBleGlzdGluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIE5ldyBBUEk6IGFkZCBHU1RfTUVTU0FHRV9UWVBFX05BTUUgYW5kIEdTVF9RVUVSWV9UWVBFX05BTUUKCSAgbWFjcm9zICgjMzMwOTA2KS4gQWxzbywgZG9jdW1lbnQgdGhlIGFscmVhZHkgZXhpc3RpbmcKCSAgR1NUX1FVRVJZX1RZUEUgbWFjcm8uCgoyMDA2LTAyLTEzIDEwOjU0OjAzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IE9ubHkgZXZlbnRzIHVwIHRvIHRoZSBwaXBlbGluZSBFT1MgYXJlIGNvdW50ZWQsIHRoZXJlIGFyZSBzb21lIG1vcmUgd2hlbiBnb2luZyB0byBOVUxMIGN1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiAoZGF0YV9wcm9iZSksIChidWZmZXJfcHJvYmUpLAoJICAoZXZlbnRfcHJvYmUpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICBPbmx5IGV2ZW50cyB1cCB0byB0aGUgcGlwZWxpbmUgRU9TIGFyZSBjb3VudGVkLCB0aGVyZSBhcmUKCSAgc29tZSBtb3JlIHdoZW4gZ29pbmcgdG8gTlVMTCBjdXJyZW50bHkgd2hpY2ggd2UgZG9uJ3QgY2FyZQoJICBhYm91dCBmb3Igbm93LgoKMjAwNi0wMi0xMyAwOTo1OTowMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogQ29ycmVjdGx5IGNoZWNrIGZsdXNoaW5nIGFuZCBlbWl0IHByb2Jlcy4gZml4ZXMgIzMzMDEyNQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NlbmRfZXZlbnQpOgoJICBDb3JyZWN0bHkgY2hlY2sgZmx1c2hpbmcgYW5kIGVtaXQgcHJvYmVzLiBmaXhlcyAjMzMwMTI1CgoyMDA2LTAyLTEyIDEzOjExOjUzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgcmV2ZXJ0IHdyb25nIGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmV2ZXJ0IHdyb25nIGNvbW1pdAoKMjAwNi0wMi0xMCAxNjowNDo1OSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGJ1cy5jIChnc3RfYnVzX2NsYXNzX2luaXQpOiBEZWNsYXJlIG91ciBwcml2YXRlIGRhdGEgc3RydWN0dXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMi0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YnVzLmMgKGdzdF9idXNfY2xhc3NfaW5pdCk6IERlY2xhcmUgb3VyIHByaXZhdGUgZGF0YQoJICBzdHJ1Y3R1cmUuCgkgIChnc3RfYnVzX2luaXQpOiBDYWNoZSB0aGUgbG9jYXRpb24gb2YgdGhlIHByaXZhdGUgZGF0YSBpbiB0aGUKCSAgaW5zdGFuY2Ugc3RydWN0dXJlLgoJICAoZ3N0X2J1c19lbmFibGVfc3luY19tZXNzYWdlX2VtaXNzaW9uKQoJICAoZ3N0X2J1c19kaXNhYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbik6IEltcGxlbWVudCBuZXcgcHVibGljCgkgIGZ1bmN0aW9ucy4KCSAgKGdzdF9idXNfcG9zdCk6IEVtaXQgdGhlIHN5bmMtbWVzc2FnZSBzaWduYWwgaWYgdGhlIHVzZXIgYXNrZWQgZm9yCgkgIGl0LiBGaXhlcyAjMzMwNjg0LgoJICAqIGdzdC9nc3RidXMuaCAoR3N0QnVzKTogVXNlIGEgcGFkZGluZyBwb2ludGVyIHRvIGNhY2hlIHRoZQoJICBsb2NhdGlvbiBvZiB0aGUgYnVzLXByaXZhdGUgc3RydWN0dXVyZS4KCSAgKGdzdF9idXNfZW5hYmxlX3N5bmNfbWVzc2FnZV9lbWlzc2lvbikKCSAgKGdzdF9idXNfZGlzYWJsZV9zeW5jX21lc3NhZ2VfZW1pc3Npb24pOiBOZXcgcHVibGljIGZ1bmN0aW9ucy4KCjIwMDYtMDItMDkgMjM6NDA6NDMgKzAwMDAgIFZpbmNlbnQgVG9ycmkgPHZ0b3JyaUB1bml2LWV2cnkuZnI+CgoJICBkb2NzL3B3Zy9idWlsZGluZy1ib2lsZXIueG1sOgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1ib2lsZXIueG1sOgoJICBQV0cgcGF0Y2ggZnJvbSAjMzI2ODAwIChQYXRjaCBieSBWaW5jZW50IFRvcnJpKQoKMjAwNi0wMi0wOSAxODozMDo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9kZXNpZ24vTWFrZWZpbGUuYW06CgkgIENoYW5nZUxvZyBzdXJnZXJ5IGFuZCBhZGQgbWlzc2luZyBuZXcgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ2hhbmdlTG9nIHN1cmdlcnkgYW5kIGFkZCBtaXNzaW5nIG5ldyBmaWxlCgoyMDA2LTAyLTA5IDE4OjI4OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9kZXNpZ24vTWFrZWZpbGUuYW0KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvTWFrZWZpbGUuYW06CgkgICogZG9jcy9kZXNpZ24vTWFrZWZpbGUuYW0KCSAgRGlzdCBkZXNpZ24gZG9jcy4KCjIwMDYtMDItMDggMTc6MzQ6NDMgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBiYWNrIHRvIENWUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIGJhY2sgdG8gQ1ZTCgo9PT0gcmVsZWFzZSAwLjEwLjMgPT09CgoyMDA2LTAyLTA4IDE3OjMxOjM0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogcmVsZWFzaW5nIDAuMTAuMywgIkxpa2UgYSB2aXJnaW4iCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICA9PT0gcmVsZWFzZSAwLjEwLjMgPT09CgkgIDIwMDYtMDItMDggIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgcmVsZWFzaW5nIDAuMTAuMywgIkxpa2UgYSB2aXJnaW4iCgoyMDA2LTAyLTA4IDExOjEyOjA3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYzogMm5kIHByZXJlbGVhc2Ugb2YgMC4xMC4zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTAyLTA4ICBKYW4gU2NobWlkdCAgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgkgICogY29uZmlndXJlLmFjOgoJICAybmQgcHJlcmVsZWFzZSBvZiAwLjEwLjMKCSAgQnVtcCBsaWJ0b29sIHZlcnNpb25pbmcuCgoyMDA2LTAyLTA3IDE1OjQ5OjQwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmMgKGdzdF9jb2xsZWN0X3BhZHNfY2hhaW4pOiBPbmx5IHVwZGF0ZSBsYXN0X3N0b3AgaWYgd2UncmUgaW4gVElNRSBmb3JtYXQgYW5kIHRoZSB0aW1lc3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDItMDcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jIChnc3RfY29sbGVjdF9wYWRzX2NoYWluKTogT25seQoJICB1cGRhdGUgbGFzdF9zdG9wIGlmIHdlJ3JlIGluIFRJTUUgZm9ybWF0IGFuZCB0aGUgdGltZXN0YW1wIGlzCgkgIHZhbGlkLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYyAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCkKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYyAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50ZnVuYyk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX2NvbmZpZ3VyZV9zZWdtZW50KToKCSAgSWYgd2UgZ2V0IGEgbmV3IG5ld3NlZ21lbnQgd2l0aCBhIGRpZmZlcmVudCBmb3JtYXQsIGFkYXB0CgkgIGFjY29yZGluZ2x5LgoJICAqIGdzdC9nc3RjbG9jay5jIChnc3RfY2xvY2tfc2V0X2NhbGlicmF0aW9uKTogQWNjZXB0IGEgbnVtZXJhdG9yCgkgIG9mIDAuIE5vdCBhIHByb2JsZW0sIHJlYWxseS4KCjIwMDYtMDItMDcgMTM6MjA6MTYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2Vfc2lua19jaGFpbl91bmxvY2tlZCk6IE9ubHkgd2FybiBpZiBzeW5jPXRydWUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTAyLTA3ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2Vfc2lua19jaGFpbl91bmxvY2tlZCk6IE9ubHkKCSAgd2FybiBpZiBzeW5jPXRydWUuCgoyMDA2LTAyLTA3IDEwOjUxOjI0ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgdXBkYXRlIHNwZWMgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHNwZWMgZmlsZQoKMjAwNi0wMi0wNiAyMjowMToyMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjb25maWd1cmUuYWM6IFByZWxlYXNlIG9mIDAuMTAuMwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIFByZWxlYXNlIG9mIDAuMTAuMwoKMjAwNi0wMi0wNiAyMTo1MzowNSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDYtMDItMDYgMjE6Mjk6MDQgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHdpbjMyL3ZzNzogcHJvamVjdCBmaWxlcyB1cGRhdGVkIHRvIHRoZSBkZWZhdWx0IHZzNyBjb25maWd1cmF0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL3ZzNzoKCSAgcHJvamVjdCBmaWxlcyB1cGRhdGVkIHRvIHRoZSBkZWZhdWx0IHZzNyBjb25maWd1cmF0aW9uCgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBhZGRlZCBuZXcgc3ltYm9scywKCSAgcmVtb3ZlZCBlbXB0eSBsaW5lcywKCSAgc29ydGVkIGFsbCBleHBvcnRlZCBzeW1ib2xzIGFscGhhYmV0aWNhbGx5CgkgICogd2luMzIvY29tbW9uL2RpcmVudC5jOgoJICAqIHdpbjMyL2NvbW1vbi9kaXJlbnQuaDoKCSAgKiB3aW4zMi9jb21tb24vZ2NoYXIuaDoKCSAgdXNlIHdpbmRvd3MgbGluZSBlbmQuCgoyMDA2LTAyLTA2IDE1OjI1OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGRvYyBzdWI4MCBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jIHN1YjgwIGZpeGVzCgoyMDA2LTAyLTA2IDE0OjU3OjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6IFNlbmQgRU9TIGV2ZW50IHdoZW4gc3RvcHBpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NoYW5nZV9zdGF0ZSk6CgkgIFNlbmQgRU9TIGV2ZW50IHdoZW4gc3RvcHBpbmcuCgoyMDA2LTAyLTA2IDEwOjQyOjAxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9SRUFETUU6IFRlbGwgZm9sa3Mgd2hhdCB0byBkbyBpZiB0aGUgcGx1Z2luLWZvb2Jhci54bWwgZmlsZSBoYXNuJ3QgYmVlbiBnZW5lcmF0ZWQgZm9yIGEgbmV3bHktYWRkZWQgcGx1Z2luLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgVGVsbCBmb2xrcyB3aGF0IHRvIGRvIGlmIHRoZSBwbHVnaW4tZm9vYmFyLnhtbCBmaWxlCgkgIGhhc24ndCBiZWVuIGdlbmVyYXRlZCBmb3IgYSBuZXdseS1hZGRlZCBwbHVnaW4uCgoyMDA2LTAyLTA1IDE4OjEzOjI4ICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogQ29sbGVjdHBhZHMgbm93IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBHc3RQYWQgdGhhdCB3YXMgYWRkZWQuIEluZGVlZCB3ZSBkb24ndCB3YW50IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMi0wNSAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfZmluYWxpemUpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19hZGRfcGFkKSwgKGdzdF9jb2xsZWN0X3BhZHNfcmVtb3ZlX3BhZCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3N0YXJ0KSwgKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2V2ZW50KTogQ29sbGVjdHBhZHMgbm93IGhvbGRzIGEgcmVmZXJlbmNlCgkgIHRvIHRoZSBHc3RQYWQgdGhhdCB3YXMgYWRkZWQuIEluZGVlZCB3ZSBkb24ndCB3YW50IHRvIGxvb2sKCSAgYXQgcGFkcyB0aGF0IG1pZ2h0IGp1c3QgZ28gYXdheSB3aXRoIG5vIHdhcm5pbmcuLi4KCjIwMDYtMDItMDUgMTY6MTg6MzcgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy4qOiBIYW5kbGUgZmx1c2guIEFkYXB0ZWQgZnJvbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMi0wNSAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfYWRkX3BhZCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3N0YXJ0KSwgKGdzdF9jb2xsZWN0X3BhZHNfc3RvcCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2V2ZW50KSwgKGdzdF9jb2xsZWN0X3BhZHNfY2hhaW4pOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDogSGFuZGxlIGZsdXNoLiBBZGFwdGVkIGZyb20KCSAgTWFyayBOYXV3ZWxhZXJ0cydzIHBhdGNoIG9uIGJ1ZyAjMzI4NDkxLgoKMjAwNi0wMi0wNCAxMjo0OTo1MyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOiBBZGQgc29tZSBzaW1wbGUgdGVzdHMgZm9yIGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbigpIGFuZCBnc3RfYmluX2ZpbmRfdW5jb25uZWN0ZWRfcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dXRpbHMuYzogKHRlc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24pLAoJICAoZ3N0X3V0aWxzX3N1aXRlKToKCSAgQWRkIHNvbWUgc2ltcGxlIHRlc3RzIGZvciBnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24oKSBhbmQKCSAgZ3N0X2Jpbl9maW5kX3VuY29ubmVjdGVkX3BhZCgpICgjMzI5MDY5KS4KCjIwMDYtMDItMDQgMTE6NTY6MTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IENhdGNoIGVycm9ycyBkdXJpbmcgcHJlcm9sbCAoIzMyMDA4NCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApLCAobWFpbik6CgkgIENhdGNoIGVycm9ycyBkdXJpbmcgcHJlcm9sbCAoIzMyMDA4NCkuCgoyMDA2LTAyLTAzIDIxOjE0OjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogUG9zdCBUWVBFX05PVF9GT1VORCBlcnJvciBtZXNzYWdlIHdoZW4gdHlwZWZpbmRpbmcgaXMgdW5zdWNjZXNzZnVsIGluIHRoZSBhY3RpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfYWN0aXZhdGUpOgoJICBQb3N0IFRZUEVfTk9UX0ZPVU5EIGVycm9yIG1lc3NhZ2Ugd2hlbiB0eXBlZmluZGluZwoJICBpcyB1bnN1Y2Nlc3NmdWwgaW4gdGhlIGFjdGl2YXRlIGZ1bmN0aW9uIGFzIHdlbGwuCgoyMDA2LTAyLTAyIDE2OjE1OjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OiBVcGRhdGVkIGRvYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OgoJICBVcGRhdGVkIGRvYy4KCjIwMDYtMDItMDIgMTY6MTI6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IE9ubHkga2VlcCB0cmFjayBvZiBwcmVyb2xsYWJsZSBpdGVtcyB3aGVuIHdlIGFyZSBwcmVyb2xsaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLAoJICAoZ3N0X2Jhc2Vfc2lua19yZW5kZXJfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVldWVfb2JqZWN0X3VubG9ja2VkKToKCSAgT25seSBrZWVwIHRyYWNrIG9mIHByZXJvbGxhYmxlIGl0ZW1zIHdoZW4gd2UgYXJlCgkgIHByZXJvbGxpbmcuCgkgIEJlZm9yZSByZW5kZXJpbmcgYWZ0ZXIgcHJlcm9sbCwgYWx3YXlzIGNoZWNrIGlmIHdlCgkgIGhhdmUgcXVldWVkIGl0ZW1zLgoJICBBZGRlZCBzb21lIG1vcmUgZGVidWdnaW5nLgoKMjAwNi0wMi0wMiAxMzo1ODoxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IEZpeGVkICMzMjY1NzYsIGJlZW4gcnVubmluZyB0aGlzIGZvciBxdWl0ZSBzb21lIHRpbWUgd2l0aCBubyByZWdyZXNzaW9ucyBhdCBhbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jb250aW51ZV9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICBGaXhlZCAjMzI2NTc2LCBiZWVuIHJ1bm5pbmcgdGhpcyBmb3IgcXVpdGUgc29tZSB0aW1lIHdpdGgKCSAgbm8gcmVncmVzc2lvbnMgYXQgYWxsLgoKMjAwNi0wMi0wMiAxMzo0NDowNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNvbW1vbi9nc3Quc3VwcDogQWRkZWQgbW9yZSBzdXBwcmVzc2lvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29tbW9uL2dzdC5zdXBwOgoJICBBZGRlZCBtb3JlIHN1cHByZXNzaW9ucwoKMjAwNi0wMi0wMiAxMjowNzo0OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtZWxlbWVudC1zaW5rLnR4dDogVXBkYXRlZCBkb2N1bWVudC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OgoJICBVcGRhdGVkIGRvY3VtZW50LgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX2ZpbmFsaXplKSwgKGdzdF9iYXNlX3NpbmtfcHJlcm9sbF9xdWV1ZV9mbHVzaCksCgkgIChnc3RfYmFzZV9zaW5rX2NvbmZpZ3VyZV9zZWdtZW50KSwgKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3N5bmNfdGltZXMpLCAoZ3N0X2Jhc2Vfc2lua193YWl0X2Nsb2NrKSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksIChnc3RfYmFzZV9zaW5rX3JlbmRlcl9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdF91bmxvY2tlZCksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXVlX29iamVjdCksIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQpLCAoZ3N0X2Jhc2Vfc2lua19jaGFpbiksCgkgIChnc3RfYmFzZV9zaW5rX2xvb3ApLCAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIFRvdGFsbHkgcmVmYWN0b3JlZCBtYXRjaGluZyB0aGUgZGVzaWduIGRvYy4KCSAgVXNlIHR3byBzZWdtZW50cywgb25lIHRvIGNsaXAgaW5jb21taW5nIGJ1ZmZlcnMgYW5kIGFub3RoZXIgdG8KCSAgcGVyZm9ybSBzeW5jLgoJICBIYW5kbGUgcXVldWVpbmcgY29ycmVjdGx5LCBieXBhc3MgdGhlIHF1ZXVlIHdoZW4gcGxheWluZy4KCSAgTWFrZSBFT1MgY2FuY2VsYWJsZS4KCSAgSGFuZGxlIGVycm9ycyBjb3JyZWN0bHkgd2hlbiBvcGVyYXRpbmcgaW4gcHVsbCBiYXNlZCBtb2RlLgoJICAqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzaW5rLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChmYWtlc2lua19zdWl0ZSk6CgkgIEFkZGVkIG5ldyBjaGVjayBmb3Igc2lua3MuCgoyMDA2LTAyLTAyIDExOjU5OjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYzogTm8gcmVhc29uIHRvIHJlZnVzZSB0byBjbGlwIHdoZW4gc3RhcnQgPT0gLTEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X2NsaXApOgoJICBObyByZWFzb24gdG8gcmVmdXNlIHRvIGNsaXAgd2hlbiBzdGFydCA9PSAtMQoKMjAwNi0wMi0wMiAxMToyNDoxOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy86IGRlc2NyaWJlIGRwYXJhbXMgKGNvbnRyb2xsZXIpIGZvciBwbHVnaW5zIHVuaWZ5IGRvY3MgYSBsaXR0bGUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgKiBkb2NzL21hbnVhbC9pbnRyby1iYXNpY3MueG1sOgoJICAqIGRvY3MvbWFudWFsL2ludHJvLXByZWZhY2UueG1sOgoJICAqIGRvY3MvbWFudWFsL21hbnVhbC54bWw6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtZHBhcmFtcy54bWw6CgkgICogZG9jcy9wd2cvaW50cm8tYmFzaWNzLnhtbDoKCSAgKiBkb2NzL3B3Zy9pbnRyby1wcmVmYWNlLnhtbDoKCSAgKiBkb2NzL3B3Zy9wd2cueG1sOgoJICBkZXNjcmliZSBkcGFyYW1zIChjb250cm9sbGVyKSBmb3IgcGx1Z2lucwoJICB1bmlmeSBkb2NzIGEgbGl0dGxlIG1vcmUKCjIwMDYtMDItMDIgMDk6NTE6MTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBZGQgbmV3IEFQSTogZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uKCkgYW5kIGdzdF9iaW5fZmluZF91bmNvbm5lY3RlZF9wYWQoKSAoIzMyOTA2OSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChlbGVtZW50X2ZpbmRfdW5jb25uZWN0ZWRfcGFkKSwKCSAgKGdzdF9iaW5fZmluZF91bmNvbm5lY3RlZF9wYWQpLCAoZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQWRkIG5ldyBBUEk6IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbigpIGFuZAoJICBnc3RfYmluX2ZpbmRfdW5jb25uZWN0ZWRfcGFkKCkgKCMzMjkwNjkpLgoKMjAwNi0wMi0wMSAyMjo0MzoxNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9tYW51YWwvUkVBRE1FOiB1bmNvdmVyIGEgbmFzdHkgZGV0YWlsIG9mIHRoZSBkb2NzIGJ1aWxkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL1JFQURNRToKCSAgdW5jb3ZlciBhIG5hc3R5IGRldGFpbCBvZiB0aGUgZG9jcyBidWlsZAoKMjAwNi0wMi0wMSAwODoyNzoyNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL1JFQURNRToKCSAgdXBkYXRlcyBmb3IgcGx1Z2luIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZXMgZm9yIHBsdWdpbiBkb2NzCgoyMDA2LTAxLTMxIDE4OjQ2OjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBEb24ndCBjYWNoZSBkdXJhdGlvbiBtZXNzYWdlcyBpZiB3ZSdyZSBub3QgZ29pbmcgdG8gdXNlIG9yIGZyZWUgdGhlbS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX3JlbW92ZV9tZXNzYWdlcyksIChiaW5fcXVlcnlfZHVyYXRpb25fZG9uZSk6CgkgIERvbid0IGNhY2hlIGR1cmF0aW9uIG1lc3NhZ2VzIGlmIHdlJ3JlIG5vdCBnb2luZyB0byB1c2Ugb3IKCSAgZnJlZSB0aGVtLgoKMjAwNi0wMS0zMSAxNjo1NjoyOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy86IG1vcmUgZHBhcmFtIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZHBhcmFtcy54bWw6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtZHBhcmFtcy54bWw6CgkgIG1vcmUgZHBhcmFtIGRvY3MKCSAgKiBnc3QvZ3N0aW5kZXguYzoKCSAgZml4IGRvY3MKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2xpYi5jOiAoZ3N0X2NvbnRyb2xsZXJfaW5pdCk6CgkgIGluaXQganVzdCBvbmNlCgoyMDA2LTAxLTMxIDEwOjE2OjQ5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IGFsc28gc2hvdyBmaWxlL2xpbmUvZnVuYyBpZiBubyBhZGRpdGlvbmFsIGRlYnVnIHdhcyBnaXZlbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsKToKCSAgYWxzbyBzaG93IGZpbGUvbGluZS9mdW5jIGlmIG5vIGFkZGl0aW9uYWwgZGVidWcgd2FzIGdpdmVuCgoyMDA2LTAxLTMwIDIzOjUyOjUyICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi92czcvZ3JhbW1hci52Y3Byb2o6IGFjdGl2YXRlIGNvcHkgb2YgYXV0b2dlbmVyYXRlZCBmaWxlcyBmb3IgUmVsZWFzZSBtb2RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL3ZzNy9ncmFtbWFyLnZjcHJvajoKCSAgYWN0aXZhdGUgY29weSBvZiBhdXRvZ2VuZXJhdGVkIGZpbGVzIGZvciBSZWxlYXNlIG1vZGUKCjIwMDYtMDEtMzAgMjI6Mjk6MDMgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOiBleHBvcnQgZ3N0X3ZhbHVlX2NvbXBhcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGV4cG9ydCBnc3RfdmFsdWVfY29tcGFyZQoKMjAwNi0wMS0zMCAyMTo1NzowMCArMDAwMCAgUGhpbGlwcGUgUm91cXVpZXIgPGJvbmZpcmUtYXBwQHdhbmFkb28uZnI+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzoKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzogKF9kb19pbml0KSwKCSAgKGdzdF9mZF9zaW5rX2Jhc2VfaW5pdCksIChnc3RfZmRfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9mZF9zaW5rX2luaXQpLCAoZ3N0X2ZkX3NpbmtfZGlzcG9zZSksIChnc3RfZmRfc2lua19xdWVyeSksCgkgIChnc3RfZmRfc2lua19yZW5kZXIpLCAoZ3N0X2ZkX3NpbmtfY2hlY2tfZmQpLCAoZ3N0X2ZkX3Npbmtfc3RhcnQpLAoJICAoZ3N0X2ZkX3Npbmtfc3RvcCksIChnc3RfZmRfc2lua191bmxvY2spLCAoZ3N0X2ZkX3NpbmtfdXBkYXRlX2ZkKSwKCSAgKGdzdF9mZF9zaW5rX3NldF9wcm9wZXJ0eSksIChnc3RfZmRfc2lua191cmlfZ2V0X3R5cGUpLAoJICAoZ3N0X2ZkX3NpbmtfdXJpX2dldF9wcm90b2NvbHMpLCAoZ3N0X2ZkX3NpbmtfdXJpX2dldF91cmkpLAoJICAoZ3N0X2ZkX3NpbmtfdXJpX3NldF91cmkpLCAoZ3N0X2ZkX3NpbmtfdXJpX2hhbmRsZXJfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuaDoKCSAgUG9ydCBmZHNpbmsgdG8gMC4xMCAocGF0Y2ggYnkgUGhpbGlwcGUgUm91cXVpZXIpIChGaXhlcyAjMzI1NDkwKQoKMjAwNi0wMS0zMCAyMToxMTozOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtZHBhcmFtcy54bWw6IGRlc2NyaWJlIGNvbnRyb2xsZXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZHBhcmFtcy54bWw6CgkgIGRlc2NyaWJlIGNvbnRyb2xsZXIKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1wb3NpdGlvbi54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWluaXQueG1sOgoJICAqIGRvY3MvbWFudWFsL21hbnVhbC54bWw6CgkgICogZG9jcy9tYW51YWwvdGl0bGVwYWdlLnhtbDoKCSAgKiBkb2NzL3B3Zy9wd2cueG1sOgoJICAqIGRvY3MvcHdnL3RpdGxlcGFnZS54bWw6CgkgIGNsZWFudXAgeG1sIChtb3JlIHRvIGNvbWUpCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIGZpeCB0eXBvCgoyMDA2LTAxLTMwIDIwOjM2OjUxICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi92czYvZ3JhbW1hci5kc3A6IGFkZCBhdXRvZ2VuIG9mIGdzdG1hcnNoYWwuYyxoIGZvciBSZWxlYXNlIG1vZGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvdnM2L2dyYW1tYXIuZHNwOgoJICBhZGQgYXV0b2dlbiBvZiBnc3RtYXJzaGFsLmMsaCBmb3IgUmVsZWFzZSBtb2RlCgoyMDA2LTAxLTMwIDE2OjA3OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiBCYXNlc2luayBjbGVhbnVwcywgcmVtb3ZlIHNvbWUgb2xkIGNvZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZW1wdHkpLCAoZ3N0X2Jhc2Vfc2lua19jb21taXRfc3RhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc2lua19pc19wcmVyb2xsZWQpLCAoZ3N0X2Jhc2Vfc2lua193YWl0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9ldmVudCksCgkgIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9idWZmZXIpLCAoZ3N0X2Jhc2Vfc2lua19zZXRfZmx1c2hpbmcpLAoJICAoZ3N0X2Jhc2Vfc2lua19kZWFjdGl2YXRlKSwgKGdzdF9iYXNlX3NpbmtfYWN0aXZhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdWxsKSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBCYXNlc2luayBjbGVhbnVwcywgcmVtb3ZlIHNvbWUgb2xkIGNvZGUuCgkgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIHN1YmNsYXNzIGNhbiBwcmVyb2xsIGluIHRoZSByZW5kZXIKCSAgbWV0aG9kIChtb3N0bHkgYXVkaW9zaW5rcykuCgkgIEhhbmRsZSBtb3JlIGV2ZW50cy4KCSAgUmVtb3ZlIHNvbWUgbG9ja3MgYXJvdW5kIHZhcmlhYmxlcyB0aGF0IGFyZSBub3cgcHJvdGVjdGVkCgkgIHdpdGggdGhlIFBSRVJPTExfTE9DSyAoY2xvY2tfaWQsIGZsdXNoaW5nLCAuLikuCgkgIE9wdGltaXplIHBvc2l0aW9uIHF1ZXJ5IHNvbWUgbW9yZSwgZG8gY29ycmVjdCBsb2NraW5nLgoJICBSZW1vdmUgb2xkIGNvZGUgdG8gcHVzaCBxdWV1ZSBpbiBzdGF0ZSBjaGFuZ2UsIHRoaXMgaXMgbm90CgkgIG5lZWRlZCBhbnltb3JlIHNpbmNlIHByZXJvbGwgYmxvY2tzIG9uIGFsbCBwcmVyb2xsYWJsZSBpdGVtcwoJICBub3cuCgkgIEFsbW9zdCBpbXBsZW1lbnRlZCBhcyBkZXNjcmliZWQgaW4gZGVzaWduIGRvYy4KCjIwMDYtMDEtMzAgMTU6NTc6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6IFdhaXQgZm9yIHJlZmNvdW50IHRvIHNldHRsZSBkb3duIGJlZm9yZSBjaGVja2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBXYWl0IGZvciByZWZjb3VudCB0byBzZXR0bGUgZG93biBiZWZvcmUgY2hlY2tpbmcuCgoyMDA2LTAxLTMwIDE1OjE1OjQ3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OiBQc2V1ZG8gY29kZSBvdmVydmlldyBvZiBkZXNpcmVkIHNpbmsgYmVoYXZpb3VyIHJlZ2FyZGluZyBwcmVyb2xsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWVsZW1lbnQtc2luay50eHQ6CgkgIFBzZXVkbyBjb2RlIG92ZXJ2aWV3IG9mIGRlc2lyZWQgc2luayBiZWhhdmlvdXIgcmVnYXJkaW5nCgkgIHByZXJvbGwuCgoyMDA2LTAxLTMwIDE0OjI4OjAzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgQmxlaCwgZm9yZ290IHRvIGNvbW1pdCB0aGUgY2hhbmdlbG9nIGVudHJ5IG9uIFNhdHVyZGF5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQmxlaCwgZm9yZ290IHRvIGNvbW1pdCB0aGUgY2hhbmdlbG9nIGVudHJ5IG9uIFNhdHVyZGF5LgoKMjAwNi0wMS0yOSAyMTo1NjowMCArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvdnM2L2dyYW1tYXIuZHNwOiBmaXggc29tZSBidWdzIGluIGF1dG9nZW5lcmF0ZWQgZmlsZXMgZm9yIFJlbGVhc2UgbW9kZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi92czYvZ3JhbW1hci5kc3A6CgkgIGZpeCBzb21lIGJ1Z3MgaW4gYXV0b2dlbmVyYXRlZCBmaWxlcyBmb3IgUmVsZWFzZSBtb2RlCgoyMDA2LTAxLTI5IDE5OjI0OjE4ICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi9jb21tb24vOiBleHBvcnQgc29tZSBuZXcgc3ltYm9sczogZ3N0X2Jhc2Vfc3JjX3NldF9mb3JtYXQsIGdzdF9pdGVyYXRvcl9uZXh0LCBnc3Rfc3RydWN0dXJlX3NldF92YWxpc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBleHBvcnQgc29tZSBuZXcgc3ltYm9sczogZ3N0X2Jhc2Vfc3JjX3NldF9mb3JtYXQsCgkgIGdzdF9pdGVyYXRvcl9uZXh0LCBnc3Rfc3RydWN0dXJlX3NldF92YWxpc3QKCjIwMDYtMDEtMjkgMTc6Mzc6MDggKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IFNldCBwYWQgZnVuY3Rpb25zIHVuY29uZGl0aW9uYWxseS4gRml4ZXMgIzMyOTEwNS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDEtMjkgIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9wcm94eV9wYWRfc2V0X3RhcmdldF91bmxvY2tlZCk6CgkgIFNldCBwYWQgZnVuY3Rpb25zIHVuY29uZGl0aW9uYWxseS4gRml4ZXMgIzMyOTEwNS4KCjIwMDYtMDEtMjkgMTY6NTQ6NDAgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHdpbjMyL3ZzODogYWRkIHZzOCBwcm9qZWN0IGZpbGVzIGNyZWF0ZWQgYnkgU2VyZ2V5IFNjb2JpY2gKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogd2luMzIvdnM4OgoJICBhZGQgdnM4IHByb2plY3QgZmlsZXMgY3JlYXRlZCBieSBTZXJnZXkgU2NvYmljaAoKMjAwNi0wMS0yOCAwMDo1OTozNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYzogRG9uJ3QgbGVhayBwYWQgcmVmZXJlbmNlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF91bmxpbmtfcGFkcyk6CgkgIERvbid0IGxlYWsgcGFkIHJlZmVyZW5jZXMuCgkgICogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZXNpbmsuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZWxlbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RpdGVyYXRvci5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBGaXggYSBidW5jaCBvZiBsZWFrcy4gTWFrZSBnZW5lcmljL3NpbmtzLmMKCSAgdXNlIGEgYml0IGxlc3MgY3B1IGJ5IHNsb3dpbmcgdGhlIGJ1ZmZlciByYXRlCgkgIGJldHdlZW4gZmFrZXNyYyBhbmQgZmFrZXNpbmsuCgoyMDA2LTAxLTI3IDIyOjM0OjUxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2MgZml4ZXMsIHRvIGxpbmsgdG8gZnVuY3Rpb24sIGp1c3Qgd3JpdGUgZ3N0X2Nvb2xfZnVuY3Rpb24oKSwgZG9uJ3QgcHJlZml4IHdpdGggJyMnCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NlbmRfZXZlbnQpOgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmg6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgICogZ3N0L2dzdHVyaS5jOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICBkb2MgZml4ZXMsIHRvIGxpbmsgdG8gZnVuY3Rpb24sIGp1c3Qgd3JpdGUgZ3N0X2Nvb2xfZnVuY3Rpb24oKSwgZG9uJ3QKCSAgcHJlZml4IHdpdGggJyMnCgoyMDA2LTAxLTI3IDE2OjU5OjU3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6IEFsd2F5cyBwcmVmZXIgYW4gYWN0dWFsIHJldHVybiB2YWx1ZSBmcm9tIGEgc3JjIHBhZCBpbiBwbGFjZSBvZiBOT1RfTElOS0VELiBUaGlzIG1lYW5zIHdlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9kb19wdXNoKSwKCSAgKGdzdF90ZWVfaGFuZGxlX2J1ZmZlcik6CgkgIEFsd2F5cyBwcmVmZXIgYW4gYWN0dWFsIHJldHVybiB2YWx1ZSBmcm9tIGEgc3JjCgkgIHBhZCBpbiBwbGFjZSBvZiBOT1RfTElOS0VELiBUaGlzIG1lYW5zIHdlIHJldHVybgoJICBXUk9OR19TVEFURSB3aGVuIGFsbCBzcmMgcGFkcyBhcmUgV1JPTkdfU1RBVEUKCSAgaW5zdGVhZCBvZiBOT1RfTElOS0VELgoJICBMb2NrIHdoZW4gcmVwbGFjaW5nIHRoZSBsYXN0IG1lc3NhZ2UgdG8gcHJldmVudAoJICByYWNpbmcgd2l0aCB0aGUgZ2V0X3Byb3BlcnR5IG1ldGhvZC4KCSAgQWRkIGRlYnVnIG91dHB1dAoKMjAwNi0wMS0yNyAxMTo1MzoyMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0ZXN0cy9jaGVjay86IEFkZCBhIHZlcnkgc2ltcGxlIGNoZWNrIHRoYXQgc2hvdWxkIGhhdmUgY2F1Z2h0IHRoZSBtZW1sZWFrIEkgZml4ZWQgbGFzdCBuaWdodCAoaWYgbm90IGZvciB0aGUgc2xpY2UgYWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHF1ZXJ5LmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RxdWVyeV9zdWl0ZSksCgkgIChtYWluKToKCSAgQWRkIGEgdmVyeSBzaW1wbGUgY2hlY2sgdGhhdCBzaG91bGQgaGF2ZSBjYXVnaHQgdGhlIG1lbWxlYWsgSSBmaXhlZAoJICBsYXN0IG5pZ2h0IChpZiBub3QgZm9yIHRoZSBzbGljZSBhbGxvY2F0b3IgaGlkaW5nIGl0KQoKMjAwNi0wMS0yNyAwMTo0ODozNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IENsZWFuIHVwIHJlZmVyZW5jZXMgdG8gdGhlIGNsb2NrIHByb3ZpZGVyIHdoZW4gZGlzcG9zZWQgb3Igd2hlbiBoYW5kbGluZyBhIGNsb2NrLWxvc3QgbWVzc2FnZSBmcm9tIGl0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2Rpc3Bvc2UpLCAoZ3N0X2Jpbl9wcm92aWRlX2Nsb2NrX2Z1bmMpLAoJICAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX2hhbmRsZV9tZXNzYWdlX2Z1bmMpLAoJICAoYmluX3F1ZXJ5X2R1cmF0aW9uX2ZvbGQpLCAoYmluX3F1ZXJ5X2dlbmVyaWNfZm9sZCk6CgkgIENsZWFuIHVwIHJlZmVyZW5jZXMgdG8gdGhlIGNsb2NrIHByb3ZpZGVyIHdoZW4gZGlzcG9zZWQgb3Igd2hlbgoJICBoYW5kbGluZyBhIGNsb2NrLWxvc3QgbWVzc2FnZSBmcm9tIGl0LgoJICBVbnJlZiBzaW5rcyB3aGVuIHBlcmZvcm1pbmcgYSBxdWVyeSB2aWEgZ3N0X2l0ZXJhdG9yX2ZvbGQsIGFzIHRoZQoJICBnc3RfYmluX2l0ZXJhdGVfc2lua3MgaXRlcmF0b3IgcmVmcyBlYWNoIGl0ZW0uIChGaXhlcyAjMzIzODc0KQoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2NsYXNzX2luaXQpLCAoZ3N0X2Nsb2NrX2Rpc3Bvc2UpLAoJICAoZ3N0X2Nsb2NrX3NldF9tYXN0ZXIpOgoJICBEcm9wIG91ciByZWZlcmVuY2UgdG8gdGhlIG1hc3RlciBjbG9jaywgaWYgYW55LCB3aGVuIHdlIGFyZSBkaXNwb3NlZC4KCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6IChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfZGlzcG9zZSk6CgkgIENoYWluIHVwIGluIGRpc3Bvc2UuCgoyMDA2LTAxLTI3IDAxOjEzOjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL2kxOG46CgkgIGFkZCBub3RlcyBvbiBpMThuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgbm90ZXMgb24gaTE4bgoKMjAwNi0wMS0yNiAxMjo1OTo0OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBBZGQgc29tZSBkZWJ1Z2dpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSk6CgkgIEFkZCBzb21lIGRlYnVnZ2luZy4KCjIwMDYtMDEtMjYgMTI6NDA6MTcgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzogQXBwbHkgcGF0Y2ggZnJvbSAjMzI4NzE1LiBUZWUgbm93IGhhbmRsZXMgcGFkIGJlaW5nIE5PVF9MSU5LRUQgb3IgaW4gV1JPTkdfU1RBVEUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA2LTAxLTI2ICBKdWxpZW4gTU9VVFRFICA8anVsaWVuQG1vdXR0ZS5uZXQ+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzogKGdzdF90ZWVfZG9fcHVzaCksCgkgIChnc3RfdGVlX2hhbmRsZV9idWZmZXIpOiBBcHBseSBwYXRjaCBmcm9tICMzMjg3MTUuIFRlZSBub3cKCSAgaGFuZGxlcyBwYWQgYmVpbmcgTk9UX0xJTktFRCBvciBpbiBXUk9OR19TVEFURS4KCjIwMDYtMDEtMjYgMDg6NTc6NDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHdpbjMyL01BTklGRVNUOiBtb3JlIHVwZGF0aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL01BTklGRVNUOgoJICBtb3JlIHVwZGF0aW5nCgoyMDA2LTAxLTI2IDA4OjM5OjIwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB3aW4zMi9NQU5JRkVTVDogcmVtb3ZlIG9ic29sZXRlIGVudHJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL01BTklGRVNUOgoJICByZW1vdmUgb2Jzb2xldGUgZW50cnkKCjIwMDYtMDEtMjYgMDY6NTc6MTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGFkZGVkIGNvZGUgZm9yIGRvd25zdHJlYW0gZXZlbnRzLCByZXZpZXdlZCBkb2NzIGluIGdzdGV2ZW50LmMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fZWxlbWVudF9pc19zcmMpLCAoc3JjX2l0ZXJhdG9yX2ZpbHRlciksCgkgIChnc3RfYmluX2l0ZXJhdGVfc291cmNlcyksIChnc3RfYmluX3NlbmRfZXZlbnQpOgoJICAqIGdzdC9nc3RiaW4uaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2VuZF9ldmVudCk6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgYWRkZWQgY29kZSBmb3IgZG93bnN0cmVhbSBldmVudHMsIHJldmlld2VkIGRvY3MgaW4gZ3N0ZXZlbnQuYwoKMjAwNi0wMS0yNSAxODowNzowMiArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFdlIG9ubHkgcXVlcnkgcG9zaXRpb24gdXNpbmcgdGhlIGNsb2NrIGluIHRoZSBwbGF5aW5nIHN0YXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMS0yNSAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgV2Ugb25seSBxdWVyeSBwb3NpdGlvbiB1c2luZyB0aGUgY2xvY2sgaW4gdGhlIHBsYXlpbmcgc3RhdGUuCgkgIFF1ZXJ5IHBlZXIgaW4gdGhlIG90aGVyIGNhc2VzLgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDogVXBkYXRlcy4KCjIwMDYtMDEtMjQgMTY6MjM6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0c3lzdGVtY2xvY2suYzogQSBjbG9jayBlbnRyeSB0aGF0IGlzIHNjaGVkdWxlZCBmb3IgdGhlIGV4YWN0IHRpbWUgb2YgdGhlIGNsb2NrIGlzIHN0aWxsIGluIHRpbWUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pZF93YWl0X3VubG9ja2VkKToKCSAgQSBjbG9jayBlbnRyeSB0aGF0IGlzIHNjaGVkdWxlZCBmb3IgdGhlIGV4YWN0IHRpbWUgb2YgdGhlCgkgIGNsb2NrIGlzIHN0aWxsIGluIHRpbWUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgIEFkZCBzb21lIG1vcmUgZGVidWcgaW5mby4KCjIwMDYtMDEtMjMgMTI6Mzc6MzMgKzAwMDAgIFPDqWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHdpbjMyL3ZzNzogQWRkIG5ldyB2czcgcHJvamVjdCBmaWxlcyBhbmQgc29sdXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL3ZzNyA6CgkgIEFkZCBuZXcgdnM3IHByb2plY3QgZmlsZXMgYW5kIHNvbHV0aW9uLgoKMjAwNi0wMS0yMyAxMjoyMzowMCArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvdnM3OiBhbGwgZmlsZXMgcmVtb3ZlZCBhcyB0aGV5IHdlcmUgb3V0LWRhdGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi92czc6CgkgIGFsbCBmaWxlcyByZW1vdmVkIGFzIHRoZXkgd2VyZSBvdXQtZGF0ZWQuCgoyMDA2LTAxLTIwIDE5OjAxOjU5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvcmFuZG9tL3JlbGVhc2U6IHVwZGF0ZSBub3RlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJICB1cGRhdGUgbm90ZXMKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2luaXQpOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfbmV3KToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfaW5pdCk6CgkgIHVzZSBnc3RfYnVzX25ldygpLCBpbXByb3ZlIGxvZ2dpbmcsIGZpeCBkb2NzCgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICB1cGRhdGUgZm9yIGN2cyBidWlsZAoKMjAwNi0wMS0yMCAxODo1OTowMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBhdXRvZ2VuLnNoOiB1cCByZXF1aXJlZCB2ZXJzaW9uIG9mIGF1dG9tYWtlIHRvIDEuNwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBhdXRvZ2VuLnNoOgoJICB1cCByZXF1aXJlZCB2ZXJzaW9uIG9mIGF1dG9tYWtlIHRvIDEuNwoKMjAwNi0wMS0yMCAxMjo1Mzo0MCArMDAwMCAgU8OpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgoKCSAgd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6IGV4cG9ydCBnc3RfYnVmZmVyX2lzX21ldGFkYXRhX3dyaXRhYmxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBleHBvcnQgZ3N0X2J1ZmZlcl9pc19tZXRhZGF0YV93cml0YWJsZQoKMjAwNi0wMS0yMCAxMTo0NjowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFkZCBnc3RfZXZlbnRfcmVwbGFjZSgpICgjMzI3MDAxKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBBZGQgZ3N0X2V2ZW50X3JlcGxhY2UoKSAoIzMyNzAwMSkKCjIwMDYtMDEtMjAgMDk6NTY6MzggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IE1ha2UgaXQgYWN0dWFsbHkgY29tcGlsZSB0b28uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2xpbmtfY2hlY2tfY29tcGF0aWJsZV91bmxvY2tlZCk6CgkgIE1ha2UgaXQgYWN0dWFsbHkgY29tcGlsZSB0b28uLgoKMjAwNi0wMS0yMCAwOTo1MzoyNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IENsYXJpZnkgYmVoYXZpb3VyIG9mIF9pc19lcXVhbCgpIHdoZW4gcGFzc2luZyBOVUxMIHBhcmFtZXRlcnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6CgkgIENsYXJpZnkgYmVoYXZpb3VyIG9mIF9pc19lcXVhbCgpIHdoZW4gcGFzc2luZyBOVUxMIHBhcmFtZXRlcnMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9saW5rX2NoZWNrX2NvbXBhdGlibGVfdW5sb2NrZWQpLAoJICAoZ3N0X3BhZF9zZXRfY2Fwcyk6CgkgIENsZWFudXBzLiBEb24ndCB1bnJlZiBOVUxMIGNhcHMuCgkgIFdoZW4gc2V0dGluZyB0aGUgc2FtZSBjYXBzLCBwcm90ZWN0IGNhcHMgb2YgdGhlIHBhZCB3aXRoCgkgIHByb3BlciBsb2NrLgoJICBVc2UgZnVsbCBmdW5jdGlvbmFsaXR5IG9mIF9pc19lcXVhbCgpIHdoZW4gY29tcGFyaW5nIGNhcHMuCgoyMDA2LTAxLTIwIDA5OjI2OjAwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogRG9uJ3QgbG9vcCBpbmZpbml0ZWx5IGlmIHRoZXJlIGFyZSBubyBidWZmZXJzIHRvIHByZXNlbnQuIFBhcnRpYWxseSBmaXhlcyAjMzI3MTk3LCBidS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2lzX2NvbGxlY3RlZCk6CgkgIERvbid0IGxvb3AgaW5maW5pdGVseSBpZiB0aGVyZSBhcmUgbm8gYnVmZmVycyB0byBwcmVzZW50LiBQYXJ0aWFsbHkKCSAgZml4ZXMgIzMyNzE5NywgYnV0IGNvbGxlY3RwYWRzIGlzIGp1c3QgYnJva2VuIGZvciByZXVzaW5nIGVsZW1lbnRzCgkgIHRvIGRvIG11bHRpcGxlIGVuY29kZXMgYXRtLgoKMjAwNi0wMS0yMCAwOToxMjoxMCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICB0b29scy86IFVSTF9IQU5ETEVSIGlzIG5vdCBhIHBsdWdpbiBmZWF0dXJlIHdlIGNhbiBzZWFyY2ggZm9yIGluIHRoZSByZWdpc3RyeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X2VsZW1lbnRfZmVhdHVyZXMpOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChtYWluKToKCSAgVVJMX0hBTkRMRVIgaXMgbm90IGEgcGx1Z2luIGZlYXR1cmUgd2UgY2FuIHNlYXJjaCBmb3IgaW4KCSAgdGhlIHJlZ2lzdHJ5LgoKMjAwNi0wMS0xOSAxODowNjoxOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IFdoZW4gYWN0aXZhdGluZywgZG8gc3JjIHBhZHMgZmlyc3QsIHRoZW4gc2luayBwYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcGFkc19hY3RpdmF0ZSk6CgkgIFdoZW4gYWN0aXZhdGluZywgZG8gc3JjIHBhZHMgZmlyc3QsIHRoZW4gc2luayBwYWRzLgoJICBXaGVuIGRlLWFjdGl2YXRpbmcsIGRvIHNpbmsgcGFkcyBmaXJzdCwgdGhlbiBzcmMgcGFkcy4KCjIwMDYtMDEtMTkgMTQ6MDI6MDQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIGdzdF9pbmRleF9hZGRfYXNzb2NpYXRpb252IHRvIHRoZSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZCBnc3RfaW5kZXhfYWRkX2Fzc29jaWF0aW9udiB0byB0aGUgZG9jcwoKMjAwNi0wMS0xOSAxMzozMDozMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuYzogRml4IGRvY3MgdHlwbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgRml4IGRvY3MgdHlwbwoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksCgkgIChnc3RfcXVldWVfY2hhaW4pLCAoZ3N0X3F1ZXVlX3B1c2hfb25lKSwgKGdzdF9xdWV1ZV9sb29wKToKCSAgRG8gc29tZSByZWZhY3RvcmluZy4gRG9lc24ndCBhY3R1YWxseSBjaGFuZ2UgZnVuY3Rpb25hbGl0eSwKCSAgYnV0IG1ha2VzIGxhbmRpbmcgdGhlIERSQUlOIGV2ZW50IGVhc2llciBsYXRlci4KCjIwMDYtMDEtMTkgMTA6Mzk6MjcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3B3Zy9hZHZhbmNlZC1zY2hlZHVsaW5nLnhtbDogVXBkYXRlIGZyb20gMC45LnggdG8gMC4xMCBBUEkgYW5kIG1ha2UgZXhhbXBsZSBhIGJpdCBjbGVhcmVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC1zY2hlZHVsaW5nLnhtbDoKCSAgVXBkYXRlIGZyb20gMC45LnggdG8gMC4xMCBBUEkgYW5kIG1ha2UgZXhhbXBsZSBhIGJpdAoJICBjbGVhcmVyLgoKMjAwNi0wMS0xOSAwOToyNDowMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfbWV0YWRhdGFfd3JpdGFibGUgbWV0aG9kcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgQWRkIGdzdF9idWZmZXJfKGlzfG1ha2UpX21ldGFkYXRhX3dyaXRhYmxlIG1ldGhvZHMuCgoyMDA2LTAxLTE5IDA5OjA4OjE1ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtc3BhcnNlc3RyZWFtcy50eHQ6IFVwZGF0ZSBzcGFyc2Ugc3RyZWFtcyBkb2MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zcGFyc2VzdHJlYW1zLnR4dDoKCSAgVXBkYXRlIHNwYXJzZSBzdHJlYW1zIGRvYwoKMjAwNi0wMS0xOSAwOTowMjoxMiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6IFJlbW92ZSBtZW50aW9uIG9mIEZJTExFUiBldmVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDoKCSAgUmVtb3ZlIG1lbnRpb24gb2YgRklMTEVSIGV2ZW50cy4KCSAgQWRkIERSQUlOIGV2ZW50LgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3BhcnNlc3RyZWFtcy50eHQ6CgkgIFdyaXRlIHNvbWUgdGhpbmdzIGFib3V0IHVzaW5nIE5FV1NFR01FTlQgdG8ga2VlcCBzcGFyc2Ugc3RyZWFtcwoJICBmbG93aW5nLgoKMjAwNi0wMS0xOCAxODo1Njo0NCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogR3VhcmQgZ3N0X29iamVjdF91bnJlZiBjYWxsIGFnYWluc3QgYSBOVUxMIG9iamVjdCAoZGlzcG9zZSBjYW4gdGhlb3JldGljYWxseSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2Rpc3Bvc2UpOgoJICBHdWFyZCBnc3Rfb2JqZWN0X3VucmVmIGNhbGwgYWdhaW5zdCBhIE5VTEwgb2JqZWN0IChkaXNwb3NlCgkgIGNhbiB0aGVvcmV0aWNhbGx5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcykuCgoyMDA2LTAxLTE4IDE4OjA1OjQzICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDogUmVtb3ZlIG1lbnRpb24gb2YgRklMTEVSIGV2ZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICBSZW1vdmUgbWVudGlvbiBvZiBGSUxMRVIgZXZlbnRzLgoJICBBZGQgRFJBSU4gZXZlbnQuCgkgICogZG9jcy9kZXNpZ24vcGFydC1zcGFyc2VzdHJlYW1zLnR4dDoKCSAgV3JpdGUgc29tZSB0aGluZ3MgYWJvdXQgdXNpbmcgTkVXU0VHTUVOVCB0byBrZWVwIHNwYXJzZSBzdHJlYW1zCgkgIGZsb3dpbmcuCgoyMDA2LTAxLTE4IDE4OjAxOjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQWRkZWQgc29tZSBtb3JlIGRlYnVnIGluZm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2lkX3dhaXQpOgoJICBBZGRlZCBzb21lIG1vcmUgZGVidWcgaW5mby4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgQWRkZWQgbW9yZSBkb2NzLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19jaGFpbik6CgkgIEFkZGVkIHNvbWUgY29tbWVudHMuCgoyMDA2LTAxLTE4IDE3OjU5OjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogdGVzdHMvY2hlY2svZWxlbWVudHMvLmdpdGlnbm9yZToKCSAgSWdub3JlIGZha2VzaW5rIHRlc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBJZ25vcmUgZmFrZXNpbmsgdGVzdC4KCjIwMDYtMDEtMTggMTc6NTc6NTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay86IEFkZGVkIGZha2VzaW5rIHRlc3QgdGhhdCBjaGVja3MgcHJlcm9sbGluZyBhbmQgY2xpcHBpbmcgYmVoYXZpb3VyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlc2luay5jOiAoY2hhaW5fYXN5bmNfYnVmZmVyKSwKCSAgKGNoYWluX2FzeW5jKSwgKGNoYWluX2FzeW5jX3JldHVybiksIChHU1RfU1RBUlRfVEVTVCksCgkgIChmYWtlc2lua19zdWl0ZSksIChtYWluKToKCSAgQWRkZWQgZmFrZXNpbmsgdGVzdCB0aGF0IGNoZWNrcyBwcmVyb2xsaW5nIGFuZCBjbGlwcGluZwoJICBiZWhhdmlvdXIuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIE1ha2UgY2hlY2sgcnVuIGZhc3RlciBzbyB0aGF0IGJ1aWxkYm90cyBkb24ndCB0aW1lb3V0LgoKMjAwNi0wMS0xOCAxNzoxODozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogU29tZSBjbGVhbnVwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgIFNvbWUgY2xlYW51cHMuCgkgIFdoZW4gdGhlIHNpbmsgZmluaXNoZXMgYmxvY2tpbmcgb24gdGhlIHByZXJvbGwgYnVmZmVyLCBpdCBjYW4KCSAgaW1tZWRpYXRseSByZW5kZXIgaXQgaW5zdGVhZCBvZiByZW5kZXJpbmcgd2hlbiB0aGUgbmV4dCBidWZmZXIKCSAgYXJyaXZlcy4KCjIwMDYtMDEtMTggMTY6NDA6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNtYWxsIGNsZWFudXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFpbik6CgkgIFNtYWxsIGNsZWFudXBzLgoJICBHU1RfRUxFTUVOVF9DTE9DSyBhbmQgc3luYyBhcmUgcHJvdGVjdGVkIHdpdGggTE9DSy4KCSAgRG9uJ3Qgc3RvcmUgX2xhc3Rfc3RvcCBpZiB0aGUgYnVmZmVyIGlzIGRyb3BwZWQuCgoyMDA2LTAxLTE4IDE2OjMxOjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogJ2hhdmUtdHlwZScgc2lnbmFsIG5lZWRzIHRvIGJlIEdfU0lHTkFMX1JVTl9GSVJTVCwgYXMgaXQgaXMgdGhlIG9iamVjdCBtZXRob2QgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2xhc3NfaW5pdCk6CgkgICdoYXZlLXR5cGUnIHNpZ25hbCBuZWVkcyB0byBiZSBHX1NJR05BTF9SVU5fRklSU1QsIGFzIGl0IGlzIHRoZQoJICBvYmplY3QgbWV0aG9kIGhhbmRsZXIgdGhhdCBzZXRzIHRoZSBjYXBzIG9uIHRoZSBwYWQgYW5kIHdlIHdhbnQKCSAgdGhhdCB0byBoYXBwZW4gYmVmb3JlIHdlIGVtaXQgdGhlIHNpZ25hbCAoZml4ZXMgZS5nLiBmZWVkaW5nIGEKCSAgcGxhaW4gdGV4dCBmaWxlIHRvIGRlY29kZWJpbikuCgoyMDA2LTAxLTE4IDExOjQ0OjU1ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3RwbHVnaW4uYzoKCSAgYWRkIE1QTCBhbmQgUHJvcGVyaWV0YXJ0IHRvIGxpc3Qgb2YgbGljZW5zZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBNUEwgYW5kIFByb3BlcmlldGFydCB0byBsaXN0IG9mIGxpY2Vuc2VzCgoyMDA2LTAxLTE4IDA5OjQyOjEyICswMDAwICBUb3JzdGVuIFNjaG9lbmZlbGQgPGthZmZlZXRpc2NoQGdteC5kZT4KCgkgIGdzdC9nc3RpbmRleC5oIChnc3RfaW5kZXhfYWRkX2Fzc29jaWF0aW9udik6IEFkZCB0byBoZWFkZXIuIFRoZSBzeW1ib2wgd2FzIGV4cG9ydGVkIGJlZm9yZSwgaXQgYXBwZWFycyB0aGlzIHdhcyBqdXN0IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMS0xOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0aW5kZXguaCAoZ3N0X2luZGV4X2FkZF9hc3NvY2lhdGlvbnYpOiBBZGQgdG8gaGVhZGVyLiBUaGUKCSAgc3ltYm9sIHdhcyBleHBvcnRlZCBiZWZvcmUsIGl0IGFwcGVhcnMgdGhpcyB3YXMganVzdCBhbiBvdmVyc2lnaHQuCgkgIEZpeGVzICMxNjg3MDMuCgkgIFBhdGNoIGJ5OiBUb3JzdGVuIFNjaG9lbmZlbGQgPGthZmZlZXRpc2NoIGF0IGdteC5kZT4KCSAgKiBnc3QvZ3N0aW5kZXguYyAoZ3N0X2luZGV4X2FkZF9hc3NvY2lhdGlvbnYpOiBDaGFuZ2VkIGludCBpbgoJICBwcm90b3R5cGUgdG8gZ2ludC4gT0sgc2luY2UgdGhpcyBwcm90b3R5cGUgd2FzIG5vdCBpbiB0aGUgaGVhZGVyLgoKMjAwNi0wMS0xNyAxNjozOToyMyArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZG9jcy9tYW51YWwvYXBwZW5kaXgtbGljZW5zaW5nLnhtbDoKCSAgc21hbGwgZml4IHRvIHRoZSBwcm9wb3NlZCBsaWNlbnNlIGNsYXVzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgc21hbGwgZml4IHRvIHRoZSBwcm9wb3NlZCBsaWNlbnNlIGNsYXVzZQoKMjAwNi0wMS0xNyAxMjo1MzowNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmMgKF9nc3RfcmVnaXN0cnlfcmVtb3ZlX2NhY2hlX3BsdWdpbnMpOiBMb2NrIHRoZSByZWdpc3RyeSB3aGlsZSB3ZSByZW1vdmUgcGx1Z2lucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDYtMDEtMTcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmMgKF9nc3RfcmVnaXN0cnlfcmVtb3ZlX2NhY2hlX3BsdWdpbnMpOiBMb2NrIHRoZQoJICByZWdpc3RyeSB3aGlsZSB3ZSByZW1vdmUgcGx1Z2lucy4KCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jIChwcmludF9lbGVtZW50X2luZm8pOiBEb24ndCB1bnJlZiB0aGUKCSAgZmFjdG9yeSBhcmcsIHRoYXQgc2hvdWxkIGJlIHRoZSByZXNwb25zaWJpbGl0eSBvZiB3aGF0ZXZlciBjb2RlCgkgIHJlY2VpdmVkIHRoZSByZWYuIEZpeGVzIGEgZG91YmxlLWZyZWUgd2hlbiBjYWxsZWQgZnJvbQoJICBwcmludF9lbGVtZW50X2xpc3QgdmlhIGdzdC1pbnNwZWN0LTAuMTAgLWEuIEZpeGVzICMzMjczMjQuCgkgIChtYWluKTogVW5yZWYgdGhlIGZhY3RvcnkgaWYgd2UgaGF2ZSBvbmUuCgkgIChwcmludF9lbGVtZW50X2xpc3QpOiBObyBjaGFuZ2UgLS0gcmVsaWVzIG9uIHRoZQoJICBwbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUgdG8gZnJlZSB0aGUgbGlzdCBvZiBmZWF0dXJlcy4KCjIwMDYtMDEtMTcgMTI6MTQ6MjAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgUmVwbGFjZSBnc3RfYnVmZmVyXyhtYWtlfGlzKV9tZXRhZGF0YV93cml0YWJsZSBwYXRjaCBub3cgdGhhdCB0aGUgcmVsZWFzZSBpcyBvdXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfaXNfbWV0YWRhdGFfd3JpdGFibGUpLAoJICAoZ3N0X2J1ZmZlcl9tYWtlX21ldGFkYXRhX3dyaXRhYmxlKToKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3ByZXBhcmVfYnVmKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdGVzdF9zdWl0ZSk6CgkgIFJlcGxhY2UgZ3N0X2J1ZmZlcl8obWFrZXxpcylfbWV0YWRhdGFfd3JpdGFibGUgcGF0Y2ggbm93CgkgIHRoYXQgdGhlIHJlbGVhc2UgaXMgb3V0LgoKMjAwNi0wMS0xNyAxMjowODo0MyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5LmM6IFJlZmxvdyBkZXNpZ24gY29tbWVudC4gVXBkYXRlIHNvIGFzIHRvIHNwZWFrIGluIHRoZSBwcmVzZW50IHRlbnNlIHdpdGhvdXQgcmVmZXJlbmNlIHRvIHZlcnNpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNi0wMS0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogUmVmbG93IGRlc2lnbiBjb21tZW50LiBVcGRhdGUgc28gYXMgdG8gc3BlYWsKCSAgaW4gdGhlIHByZXNlbnQgdGVuc2Ugd2l0aG91dCByZWZlcmVuY2UgdG8gdmVyc2lvbnMuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmMgKGdzdF9yZWdpc3RyeV9hZGRfcGx1Z2luKQoJICAoZ3N0X3JlZ2lzdHJ5X3JlbW92ZV9wbHVnaW4sIGdzdF9yZWdpc3RyeV9yZW1vdmVfZmVhdHVyZSkKCSAgKGdzdF9yZWdpc3RyeV9maW5kX2ZlYXR1cmUsIGdzdF9yZWdpc3RyeV9nZXRfZmVhdHVyZV9saXN0KQoJICAoZ3N0X3JlZ2lzdHJ5X2dldF9wbHVnaW5fbGlzdCwgZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9mZWF0dXJlKQoJICAoZ3N0X3JlZ2lzdHJ5X2xvb2t1cCwgZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aCkKCSAgKF9nc3RfcmVnaXN0cnlfcmVtb3ZlX2NhY2hlX3BsdWdpbnMpCgkgIChnc3RfcmVnaXN0cnlfZ2V0X2ZlYXR1cmVfbGlzdF9ieV9wbHVnaW4pOiBBZGQgYXJndW1lbnQKCSAgdmFsaWRhdGlvbi4KCjIwMDYtMDEtMTYgMjE6MDA6NTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gSEVBRAoKPT09IHJlbGVhc2UgMC4xMC4yID09PQoKMjAwNi0wMS0xNiAyMDo1OTozOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHJlbGVhc2luZyAwLjEwLjIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbGVhc2luZyAwLjEwLjIKCjIwMDYtMDEtMTYgMTU6NDI6MDggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgQmFjayBvdXQgcGF0Y2ggdW50aWwgYWZ0ZXIgdGhlIHJlbGVhc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3ByZXBhcmVfYnVmKToKCSAgKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChnc3RfdGVzdF9zdWl0ZSk6CgkgIEJhY2sgb3V0IHBhdGNoIHVudGlsIGFmdGVyIHRoZSByZWxlYXNlLgoKMjAwNi0wMS0xNiAxNDozNzo1NCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0bWluaW9iamVjdC5jOiBTcGVsbGluZyBmaXggaW4gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgU3BlbGxpbmcgZml4IGluIGRvY3MuCgkgICogQ2hhbmdlTG9nIC0gcmVtb3ZlIGNvbmZsaWN0IGluZGljYXRvcgoKMjAwNi0wMS0xNiAxNDozNzowMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICAoTWlzc2VkIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jIGluIHByZXZpb3VzIGNvbW1pdCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIChNaXNzZWQgcGx1Z2lucy9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmMgaW4gcHJldmlvdXMgY29tbWl0KQoJICBSZXZpZXdlZCBCeTogQW5keSBXaW5nbwoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfaXNfbWV0YWRhdGFfd3JpdGFibGUpLAoJICAoZ3N0X2J1ZmZlcl9tYWtlX21ldGFkYXRhX3dyaXRhYmxlKToKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIEFkZCBnc3RfYnVmZmVyXyhpc3xtYWtlKV9tZXRhZGF0YV93cml0YWJsZSBhcyBhbmFsb2d1ZXMgb2YKCSAgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfd3JpdGFibGUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3ByZXBhcmVfYnVmKToKCSAgVXNlIG5hbWUgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfbWV0YWRhdGFfd3JpdGFibGUgZnVuY3Rpb25zLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RidWZmZXIuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF90ZXN0X3N1aXRlKToKCSAgVGVzdCBnc3RfYnVmZmVyXyhpc3xtYWtlKV9tZXRhZGF0YV93cml0YWJsZQoJICAoQ2xvc2VzOiAjMzI0MTYyKQoKMjAwNi0wMS0xNiAxNDozMjozMyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLio6IEFkZCBnc3RfYnVmZmVyXyhpc3xtYWtlKV9tZXRhZGF0YV93cml0YWJsZSBhcyBhbmFsb2d1ZXMgb2YgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfd3JpdGFibGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXZpZXdlZCBCeTogQW5keSBXaW5nbwoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfaXNfbWV0YWRhdGFfd3JpdGFibGUpLAoJICAoZ3N0X2J1ZmZlcl9tYWtlX21ldGFkYXRhX3dyaXRhYmxlKToKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIEFkZCBnc3RfYnVmZmVyXyhpc3xtYWtlKV9tZXRhZGF0YV93cml0YWJsZSBhcyBhbmFsb2d1ZXMgb2YKCSAgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfd3JpdGFibGUuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmKToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3ByZXBhcmVfYnVmKToKCSAgVXNlIG5hbWUgZ3N0X2J1ZmZlcl8oaXN8bWFrZSlfbWV0YWRhdGFfd3JpdGFibGUgZnVuY3Rpb25zLgoJICAqIHRlc3RzL2NoZWNrL2dzdC9nc3RidWZmZXIuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF90ZXN0X3N1aXRlKToKCSAgVGVzdCBnc3RfYnVmZmVyXyhpc3xtYWtlKV9tZXRhZGF0YV93cml0YWJsZQoJICAoQ2xvc2VzOiAjMzI0MTYyKQoKMjAwNi0wMS0xNCAyMjo1OTo0NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJKiBwby96aF9UVy5wbzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBwcmVyZWxlYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwcmVyZWxlYXNlCgoyMDA2LTAxLTE0IDE0OjEyOjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSAgYWRkIHVubGluayBhbmQgc29tZSBhc3NlcnRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgdW5saW5rIGFuZCBzb21lIGFzc2VydHMKCjIwMDYtMDEtMTQgMTE6MjA6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG9jcy9tYW51YWwvTWFrZWZpbGUuYW06IGRvbid0IGRvIHBhcmFsbGVsIG1ha2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvTWFrZWZpbGUuYW06CgkgIGRvbid0IGRvIHBhcmFsbGVsIG1ha2UKCSAgKiBjb25maWd1cmUuYWM6CgkgIEFDX1NVQlNUIEhPU1RfQ1BVCgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBhZGQgZ2VuZXJhdGlvbnMgZm9yIEhPU1RfQ1BVIGFuZCBHU1RfTUFKT1JNSU5PUgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDogICAgICAgICAgIGNvbW1pdCBnZW5lcmF0ZWQgcmVzdWx0CgoyMDA2LTAxLTEzIDE5OjUxOjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkgIHVwZGF0ZXMgdG8gcmVsZWFzZSBkb2MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZXMgdG8gcmVsZWFzZSBkb2MKCjIwMDYtMDEtMTMgMTk6MTc6MDUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9hcHBlbmRpeC1pbnRlZ3JhdGlvbi54bWw6IFVwZGF0ZSBHTk9NRSBpbnRlZ3JhdGlvbiBzZWN0aW9uIHRvIHVzZSBnc3RfaW5pdF9nZXRfb3B0aW9uX2dyb3VwKCkgaW5zdGVhZCBvZiAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtaW50ZWdyYXRpb24ueG1sOgoJICBVcGRhdGUgR05PTUUgaW50ZWdyYXRpb24gc2VjdGlvbiB0byB1c2UgZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCgpCgkgIGluc3RlYWQgb2YgdGhlIG9sZCBwb3B0IHN0dWZmICgjMzIyOTExKS4gQWxzbywgR05PTUUgYXBwbGljYXRpb25zCgkgIHNob3VsZCAgbm93IHVzZSBnY29uZipzaW5rIGFuZCBnY29uZipzcmMgaW5zdGVhZCBvZiB0aGUgb2xkIGdjb25mCgkgIGhlbHBlciBsaWIgd2UgaGFkLgoKMjAwNi0wMS0xMyAxNjoxNjoyNCArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHJlbW92aW5nIDAxMCBzdWZmaXhpbmcgb2YgcGFja2FnZSBuYW1lIGFzIEZlZG9yYSBvbmx5IHVzZSBpdCBmb3IgMC44LCB3YW50IHRvIGhhdmUgdGhlIHBhY2thZ2VzIGJlIGludGVyY2hhbmdlYWJsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZpbmcgMDEwIHN1ZmZpeGluZyBvZiBwYWNrYWdlIG5hbWUgYXMgRmVkb3JhIG9ubHkgdXNlIGl0IGZvciAwLjgsIHdhbnQKCSAgdG8gaGF2ZSB0aGUgcGFja2FnZXMgYmUgaW50ZXJjaGFuZ2VhYmxlCgoyMDA2LTAxLTEzIDE0OjU5OjAwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzoKCSogcG8vTElOR1VBUzoKCSAgcmVhZGQgemhfVFcgYW5kIGZvcmNlIGFuIGF1dG9nZW4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlYWRkIHpoX1RXIGFuZCBmb3JjZSBhbiBhdXRvZ2VuCgoyMDA2LTAxLTEzIDE0OjIxOjQ4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzLzogYWRkIG5ldyBBUEkgZW50cmllcyB0byB0aGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgYWRkIG5ldyBBUEkgZW50cmllcyB0byB0aGUgZG9jcwoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVycHJpdmF0ZS5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIG1vdmUgcHJpdmF0ZSBzdHJ1Y3RzIHRvIHByaXZhdGUgaGVhZGVyCgkgICogcG8vUkVBRE1FOgoJICBnc3RyZWFtZXItMC43IC0+IGdzdHJlYW1lci0wLjEwCgkgICogdGVzdHMvY2hlY2svbGlicy9zdHJ1Y3RfaTM4Ni5oOgoJICByZW1vdmUgcHJpdmF0ZSBzdHJ1Y3RzCgoyMDA2LTAxLTEzIDE0OjE5OjM3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL1BPVEZJTEVTLmluOgoJICB0cmlnZ2VyIGEgcmVidWlsZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHJpZ2dlciBhIHJlYnVpbGQKCjIwMDYtMDEtMTMgMTQ6MTk6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vTElOR1VBUzoKCSAgdHJpZ2dlciBhIHJlYnVpbGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHRyaWdnZXIgYSByZWJ1aWxkCgoyMDA2LTAxLTEzIDE0OjEyOjU1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHBsdWdpbnMvaW5kZXhlcnMvTWFrZWZpbGUuYW06IEZpeGVzIGFzIHBhcnQgb2YgIzMxNzA0OAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJICBGaXhlcyBhcyBwYXJ0IG9mICMzMTcwNDgKCjIwMDYtMDEtMTMgMTM6NDE6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcGx1Z2lucy9pbmRleGVycy9NYWtlZmlsZS5hbTogZml4ICMzMTYwODYgLSBjb21waWxhdGlvbiB3aGVuIG1tYXAgaXMgbWlzc2luZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJICBmaXggIzMxNjA4NiAtIGNvbXBpbGF0aW9uIHdoZW4gbW1hcCBpcyBtaXNzaW5nCgoyMDA2LTAxLTEyIDIyOjA0OjU4ICswMDAwICBTw6liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6ICpjdXIgPSAobm93IC0gYmFzZSkgKiBiYXNlc2luay0+c2VnbWVudC5hYnNfcmF0ZSArIHRpbWU7IHJlcGxhY2VkIGJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgKmN1ciA9IChub3cgLSBiYXNlKSAqIGJhc2VzaW5rLT5zZWdtZW50LmFic19yYXRlICsgdGltZTsgcmVwbGFjZWQgYnkKCSAgKmN1ciA9IGdzdF9ndWludDY0X3RvX2dkb3VibGUobm93IC0gYmFzZSkgKiBiYXNlc2luay0+c2VnbWVudC5hYnNfcmF0ZSArIHRpbWU7IGZvciB2czYKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGFkZGVkIHNvbWUgZGVmaW5lcyBHU1RfTUFKT1JNSU5PUiBhbmQgSE9TVF9DUFUKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGFkZGVkIHNvbWUgZXhwb3J0ZWQgZnVuY3Rpb25zCgoyMDA2LTAxLTEyIDIxOjU1OjQyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyLzogbWFrZSBHX1RZUEVfU1RSSU5HIGNvbnRyb2xhYmxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfc2V0X2ludGVycG9sYXRpb25fbW9kZSksCgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9uZXcpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICAoaW50ZXJwb2xhdGVfbm9uZV9nZXRfc3RyaW5nX3ZhbHVlX2FycmF5KToKCSAgbWFrZSBHX1RZUEVfU1RSSU5HIGNvbnRyb2xhYmxlCgoyMDA2LTAxLTEyIDE2OjMxOjM1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICB0b29scy86IGNsZWFudXAgbWFuLXBhZ2VzLCByZW1vdmUgcmVmZXJlbmNlIHRvIGdzdC1yZWdpc3RlciwgZG9jdW1lbnQgZW52LXZhcnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvUkVBRE1FOgoJICAqIHRvb2xzL2dzdC1mZWVkYmFjay4xLmluOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LjEuaW46CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICAqIHRvb2xzL2dzdC1tZDVzdW0uMS5pbjoKCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuMS5pbjoKCSAgKiB0b29scy9nc3QteG1saW5zcGVjdC4xLmluOgoJICAqIHRvb2xzL2dzdC14bWxsYXVuY2guMS5pbjoKCSAgY2xlYW51cCBtYW4tcGFnZXMsIHJlbW92ZSByZWZlcmVuY2UgdG8gZ3N0LXJlZ2lzdGVyLCBkb2N1bWVudCBlbnYtdmFycwoKMjAwNi0wMS0xMiAxNjowNzo1MCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmM6IGdzdF9idWZmZXJfc3BhbiBzaG91bGQgY29weSB0aGUgdGltZXN0YW1wIG9mIHRoZSBmaXJzdCBidWZmZXIgaWYgdGhleSB3ZXJlIGJvdGggb3JpZ2luYWxseSBvdmVybGFwcGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X2J1ZmZlcl9zcGFuKToKCSAgZ3N0X2J1ZmZlcl9zcGFuIHNob3VsZCBjb3B5IHRoZSB0aW1lc3RhbXAgb2YgdGhlIGZpcnN0IGJ1ZmZlcgoJICBpZiB0aGV5IHdlcmUgYm90aCBvcmlnaW5hbGx5IG92ZXJsYXBwaW5nIHN1YmJ1ZmZlcnMgb2YgdGhlCgkgIHNhbWUgcGFyZW50LCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyB0aGUgJ3Nsb3cgY29weScgY2FzZS4KCjIwMDYtMDEtMTEgMjE6MzI6MjEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBOZWVkIHRvIGF3YWtlbiBBTEwgdGhlIHBhZHMgd2hlbiB3ZSBwb3AgYSBidWZmZXIsIG90aGVyd2lzZSBjb2xsZWN0cGFkcyBvbmx5IHdvcmtzIHdoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfcG9wKToKCSAgTmVlZCB0byBhd2FrZW4gQUxMIHRoZSBwYWRzIHdoZW4gd2UgcG9wIGEgYnVmZmVyLCBvdGhlcndpc2UKCSAgY29sbGVjdHBhZHMgb25seSB3b3JrcyB3aGVuIHRoZXJlIGlzIDIgaW5wdXQgc3RyZWFtcy4KCjIwMDYtMDEtMTEgMTk6MTg6MjcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvcmFuZG9tL2Vuc29uaWMvbWVkaWEtZGV2aWNlLWRhZW1vbi50eHQ6IG1vcmUgaWRlYXMgKGRidXMpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvbWVkaWEtZGV2aWNlLWRhZW1vbi50eHQ6CgkgIG1vcmUgaWRlYXMgKGRidXMpCgkgICogZ3N0L2dzdGJ1ZmZlci5jOgoJICBmaXggZG9jIGV4YW1wbGUsIGFkZCBjbGFyaWZpY2F0aW9uCgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBhZGQgaW5pdGlhbCBpbmZvIGFib3V0IEdTVF9QTFVHSU5fUEFUSCwgbmVlZHMgbW9yZSB3b3JrCgoyMDA2LTAxLTExIDEwOjM4OjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvOiBTb21lIG1vcmUgbWlub3IgZG9jcyBhZGRpdGlvbnMgYW5kIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1iaW5zLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtZWxlbWVudHMueG1sOgoJICAqIGRvY3MvbWFudWFsL2ludHJvLWJhc2ljcy54bWw6CgkgIFNvbWUgbW9yZSBtaW5vciBkb2NzIGFkZGl0aW9ucyBhbmQgdXBkYXRlcy4KCjIwMDYtMDEtMTEgMTA6MjA6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL21hbnVhbC86IFNvbWUgc21hbGwgZml4ZXMgYXMgcG9pbnRlZCBvdXQgYnkgU2VyLXZlciBvbiBJUkMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1iaW5zLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtZWxlbWVudHMueG1sOgoJICBTb21lIHNtYWxsIGZpeGVzIGFzIHBvaW50ZWQgb3V0IGJ5IFNlci12ZXIgb24gSVJDLgoKMjAwNi0wMS0xMCAxNTo0MjoyOSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogU2V0IHRoZSBidWZmZXIgb2Zmc2V0L29mZnNldF9lbmQgdG8gR1NUX0NMT0NLX1RJTUVfTk9ORSB3aGVuIHVzaW5nIHRoZSBzaW5nbGUtc2VnbWVudC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtX2lwKToKCSAgU2V0IHRoZSBidWZmZXIgb2Zmc2V0L29mZnNldF9lbmQgdG8gR1NUX0NMT0NLX1RJTUVfTk9ORSB3aGVuIHVzaW5nCgkgIHRoZSBzaW5nbGUtc2VnbWVudCBtb2RlLgoKMjAwNi0wMS0xMCAwOToyMzoxMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy4qOiBOYW1lIChwcml2YXRlKSB1bmlvbjsgbWFrZXMgU3VuJ3MgRm9ydGUgY29tcGlsZXIgaGFwcHkgKCMzMjQ5MDApLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmV2aWV3ZWQgYnk6IFRpbS1QaGlsaXBwIE3DvGxsZXIgIDx0aW0gYXQgY2VudHJpY3VsYXIgZG90IG5ldD4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX3NldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zcmNfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NyY19sb29wKSwgKGdzdF9iYXNlX3NyY19zdGFydCksCgkgIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIE5hbWUgKHByaXZhdGUpIHVuaW9uOyBtYWtlcyBTdW4ncyBGb3J0ZSBjb21waWxlciBoYXBweSAoIzMyNDkwMCkuCgoyMDA2LTAxLTA5IDEwOjQ3OjE3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgUkVBRE1FOiBnc3QtcmVnaXN0ZXIgaXMgZ29uZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogUkVBRE1FOgoJICBnc3QtcmVnaXN0ZXIgaXMgZ29uZS4KCjIwMDYtMDEtMDcgMTE6MDc6NDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vTElOR1VBUzoKCSAgcmVtb3ZlIGFuZCByZWFkZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGFuZCByZWFkZAoKMjAwNi0wMS0wNyAxMTowNzoxNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIHBvL0xJTkdVQVM6CgkgIHJlbW92ZSBhbmQgcmVhZGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBhbmQgcmVhZGQKCjIwMDYtMDEtMDcgMTA6MDQ6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHZhbHVlLmM6IG1ha2UgdGhlIEdfVFlQRV9EQVRFIGluc3RhbnRpYXRpb24gd29yayBpZiBkZWJ1ZyBpcyBkaXNhYmxlZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgIG1ha2UgdGhlIEdfVFlQRV9EQVRFIGluc3RhbnRpYXRpb24gd29yayBpZiBkZWJ1ZyBpcyBkaXNhYmxlZAoKMjAwNi0wMS0wNyAwOTo1NjowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiBwby96aF9DTi5wbzoKCSogcG8vemhfVFcucG86CgkgIHVwZGF0ZSB0cmFuc2xhdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSB0cmFuc2xhdGlvbnMKCjIwMDYtMDEtMDYgMTc6MTY6NDAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0bWVzc2FnZS5jOiBEb24ndCBjcmFzaCB3aGVuIHJldHVybiBsb2NhdGlvbiBmb3IgZXJyb3Ivd2FybmluZyBkZWJ1ZyBzdHJpbmcgaXMgTlVMTDsgYWRkIGZhY3QgdGhhdCByZXR1cm4gbG9jYXQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3BhcnNlX3RhZyksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciksIChnc3RfbWVzc2FnZV9wYXJzZV93YXJuaW5nKToKCSAgRG9uJ3QgY3Jhc2ggd2hlbiByZXR1cm4gbG9jYXRpb24gZm9yIGVycm9yL3dhcm5pbmcgZGVidWcKCSAgc3RyaW5nIGlzIE5VTEw7IGFkZCBmYWN0IHRoYXQgcmV0dXJuIGxvY2F0aW9ucyBjYW4gYmUKCSAgTlVMTCB0byBkb2NzIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwNi0wMS0wNSAxMDo0MzowMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwbHVnaW4uYzogUmVwbGFjZSBzdHJkdXAgYnkgZ19zdHJkdXAgYXMgc3VnZ2VzdGVkIGJ5IFNlci12ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKGdzdF9wbHVnaW5fbG9hZF9maWxlKToKCSAgUmVwbGFjZSBzdHJkdXAgYnkgZ19zdHJkdXAgYXMgc3VnZ2VzdGVkIGJ5IFNlci12ZXIuCgoyMDA2LTAxLTA0IDIzOjUzOjAxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgdXBkYXRlIGNvbmZpZyBmb3IgLjEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBjb25maWcgZm9yIC4xCgoyMDA2LTAxLTA0IDIzOjUyOjM1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDogZml4IGRvYyBib3JrYWdlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDoKCSAgZml4IGRvYyBib3JrYWdlCgoyMDA2LTAxLTA0IDIzOjUwOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHN1Ym1pdHRlZCBieTogQWJlbCBDaGV1bmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHN1Ym1pdHRlZCBieTogQWJlbCBDaGV1bmcKCSAgKiBwby9MSU5HVUFTOgoJICAqIHBvL3poX1RXLnBvOgoJICBBZGRlZCBDaGluZXNlICh0cmFkaXRpb25hbCkgdHJhbnNsYXRpb24KCjIwMDYtMDEtMDQgMTI6NDE6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTbWFsbCB1cGRhdGVzIHRvIHZhcmlvdXMgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLXBhZHMueG1sOgoJICAqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtZG9jcy5zZ21sOgoJICAqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtY2xvY2sueG1sOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXNjaGVkdWxpbmcueG1sOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2xhc3NfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSAgU21hbGwgdXBkYXRlcyB0byB2YXJpb3VzIGRvY3MuCgkgIEFkZGVkIGNvcmUgcGx1Z2lucyB0byBkb2NzLgoKMjAwNi0wMS0wMyAxODowODowNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb21tb24vZ3N0LnN1cHA6IGFkZCBhIHN1cHByZXNzaW9uIGZvciBsaWJvaWwncyB1bmluaXRpYWxpemVkIHZhcmlhYmxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9nc3Quc3VwcDoKCSAgYWRkIGEgc3VwcHJlc3Npb24gZm9yIGxpYm9pbCdzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUKCjIwMDYtMDEtMDIgMjA6MjY6MDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dXRpbHMuaDogQWRkIHByb3RvdHlwZSBmb3IgX2dldF90eXBlKCkgZnVuY3Rpb24gdG8gR1NUX0JPSUxFUlBMQVRFX0ZVTEwgbWFjcm8sIHNvIHRoYXQgZ2NjIGRvZXNuJ3QgY29tcGxhaW4gaWYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJldmlld2VkIGJ5OiBUaW0tUGhpbGlwcCBNw7xsbGVyICA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFkZCBwcm90b3R5cGUgZm9yIF9nZXRfdHlwZSgpIGZ1bmN0aW9uIHRvIEdTVF9CT0lMRVJQTEFURV9GVUxMCgkgIG1hY3JvLCBzbyB0aGF0IGdjYyBkb2Vzbid0IGNvbXBsYWluIGlmIHRoZSAtV21pc3NpbmctcHJvdG90eXBlcwoJICBjb21waWxlciBzd2l0Y2ggaXMgYmVpbmcgdXNlZCAoIzMyNTQyOSkuCgoyMDA1LTEyLTI5IDE2OjQ3OjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJpbi5jOiBEaXNhYmxlIGR1cmF0aW9uIHF1ZXJ5IGNhY2hpbmcgaW4gYmlucyB1bnRpbCBpdCBnZXRzIGZpeGVkIChzZWUgIzMyNDgwNykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcXVlcnkpOgoJICBEaXNhYmxlIGR1cmF0aW9uIHF1ZXJ5IGNhY2hpbmcgaW4gYmlucyB1bnRpbCBpdCBnZXRzCgkgIGZpeGVkIChzZWUgIzMyNDgwNykuCgoyMDA1LTEyLTI3IDE4OjA0OjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogSGFuZGxlIHByb3BlcnRpZXMgb2YgUE9JTlRFUiBhbmQgQk9YRUQgdHlwZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X2VsZW1lbnRfcHJvcGVydGllc19pbmZvKToKCSAgSGFuZGxlIHByb3BlcnRpZXMgb2YgUE9JTlRFUiBhbmQgQk9YRUQgdHlwZS4KCjIwMDUtMTItMjcgMTI6MTE6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0LmM6IEluaXQgdGFncyBzdHVmZiBhbmQgc29tZSBvdGhlciB0aGluZ3MgYmVmb3JlIGxvYWRpbmcgYW55IHN0YXRpYyBwbHVnaW5zICh0aGVyZSBtYXkgYmUgb3RoZXIgc3RhdGljIHBsdWdpbnMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgSW5pdCB0YWdzIHN0dWZmIGFuZCBzb21lIG90aGVyIHRoaW5ncyBiZWZvcmUgbG9hZGluZwoJICBhbnkgc3RhdGljIHBsdWdpbnMgKHRoZXJlIG1heSBiZSBvdGhlciBzdGF0aWMgcGx1Z2lucwoJICB0aGFuIGp1c3QgdGhlIEdTdHJlYW1lciBvbmVzLCBhbmQgdGhleSBtYXkgd2FudCB0bwoJICByZWdpc3RlciB0aGVpciBvd24gdGFncyBvciBmb3JtYXRzIG9yIHdoYXRldmVyLCBhbmQKCSAgcHJlZmVyYWJseSB3aXRob3V0IHNlZ2ZhdWx0aW5nKS4KCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaGFuZGxlX3NyY19xdWVyeSk6CgkgIFByaW50IGF0IGxlYXN0IGEgd2FybmluZyBpbiB0aGUgZGVidWcgbG9ncyBpZiB3ZSBkcm9wIGEKCSAgcXVlcnkganVzdCBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IHRvIGFkanVzdCB0aGUgdmFsdWUKCSAgaW4gdGhlIHBhcnRpY3VsYXIgZm9ybWF0LgoKMjAwNS0xMi0yNSAwMzo0NTo0NSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICB0b29scy9nc3RyZWFtZXItY29tcGxldGlvbjogUmVwbGFjZW1lbnQgZm9yIGdzdC1jb21wbGV0ZSB3cml0dGVuIGluIHNoIGFuZCBzZWQuICBPbmx5IGNvbXBsZXRlcyBuYW1lcyBvZiBmZWF0dXJlcywgYnUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0cmVhbWVyLWNvbXBsZXRpb246CgkgIFJlcGxhY2VtZW50IGZvciBnc3QtY29tcGxldGUgd3JpdHRlbiBpbiBzaCBhbmQgc2VkLiAgT25seQoJICBjb21wbGV0ZXMgbmFtZXMgb2YgZmVhdHVyZXMsIGJ1dCB0aGF0J3MgOTAlIG9mIHdoYXQgSSB3YW50CgkgIGl0IGZvci4gIFByb3BlcnRpZXMgYXJlIG5vdCBhdmFpbGFibGUgaW4gcmVnaXN0cnkueG1sLiAgKE1heWJlCgkgIHRoZXkgc2hvdWxkIGJlLi4uKQoKMjAwNS0xMi0yMyAxODoxNTo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkgIGJhY2sgdG8gSEVBRAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYmFjayB0byBIRUFECgo9PT0gcmVsZWFzZSAwLjEwLjEgPT09CgoyMDA1LTEyLTIzIDE4OjA0OjQ5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogTkVXUzoKCSogUkVMRUFTRToKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVpbmRleGVycy54bWw6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHJlbGVhc2luZyAwLjEwLjEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbGVhc2luZyAwLjEwLjEKCjIwMDUtMTItMjMgMTQ6NTM6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDUtMTItMjMgMTM6NDU6MjIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svbGlicy8uZ2l0aWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWdub3JlIG1vcmUKCjIwMDUtMTItMjIgMTQ6NDg6MTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL2ZhcS9jdnMueG1sOiBBZGQgbWlzc2luZyBxdW90ZSwgc2hvdWxkIGJlIG1ha2UgRVJST1JfQ0ZMQUdTPSIiLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2ZhcS9jdnMueG1sOgoJICBBZGQgbWlzc2luZyBxdW90ZSwgc2hvdWxkIGJlIG1ha2UgRVJST1JfQ0ZMQUdTPSIiLgoKMjAwNS0xMi0yMCAxNjowMTowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9iZy5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSogcG8vemhfQ04ucG86CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgcHJlcmVsZWFzaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwcmVyZWxlYXNpbmcKCjIwMDUtMTItMjAgMTI6NTA6NTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXRyaWNrbW9kZXMudHh0OiBNb3JlIGRvY3VtZW50YXRpb24gb24gdHJpY2ttb2Rlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC10cmlja21vZGVzLnR4dDoKCSAgTW9yZSBkb2N1bWVudGF0aW9uIG9uIHRyaWNrbW9kZXMuCgoyMDA1LTEyLTIwIDExOjEyOjUzICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdGNhcHMuKjogQWRkZWQgZ3BvaW50ZXIgR1R5cGUgZm9yIEdzdFN0YXRpY0NhcHMgc28gd2UgY2FuIHdyYXAgdGhlbSBpbiBiaW5kaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9zdGF0aWNfY2Fwc19nZXRfdHlwZSk6CgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgQWRkZWQgZ3BvaW50ZXIgR1R5cGUgZm9yIEdzdFN0YXRpY0NhcHMgc28gd2UgY2FuIHdyYXAgdGhlbSBpbiBiaW5kaW5ncy4KCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzogKGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSAgQWRkZWQgZ3BvaW50ZXIgR1R5cGUgZm9yIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNvIHdlIGNhbiB3cmFwIHRoZW0gaW4KCSAgYmluZGluZ3MuCgoyMDA1LTEyLTE4IDE2OjA0OjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvOiBEb2N1bWVudGF0aW9uIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbik6CgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfcXVlcnkpLCAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZG9fc2VlayksCgkgIChnc3RfYmFzZV9zcmNfZG9fc2VlayksIChnc3RfYmFzZV9zcmNfcGVyZm9ybV9zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19zZW5kX2V2ZW50KSwgKGdzdF9iYXNlX3NyY191cGRhdGVfbGVuZ3RoKSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLAoJICAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KToKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkgICogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmM6CgkgICogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmg6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuaDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmg6CgkgIERvY3VtZW50YXRpb24gdXBkYXRlcy4KCjIwMDUtMTItMTggMTQ6Mjg6MjUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6IFJlbW92ZSBzdXBlcmZsdW91cyBjbG9zaW5nIGJyYWNrZXQgaW4gaGVsbG93b3JsZCBleGFtcGxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6CgkgIFJlbW92ZSBzdXBlcmZsdW91cyBjbG9zaW5nIGJyYWNrZXQgaW4gaGVsbG93b3JsZCBleGFtcGxlLgoKMjAwNS0xMi0xNyAxNDoxOToyNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1sYXVuY2guMS5pbjogVXBkYXRlIGdzdC1sYXVuY2ggbWFuIHBhZ2U7IGFkZCBhIHNlY3Rpb24gd2l0aCB1c2VmdWwgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBGaXhlcyAjMzIzODgyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLjEuaW46CgkgIFVwZGF0ZSBnc3QtbGF1bmNoIG1hbiBwYWdlOyBhZGQgYSBzZWN0aW9uIHdpdGggdXNlZnVsCgkgIGVudmlyb25tZW50IHZhcmlhYmxlcy4gRml4ZXMgIzMyMzg4Mi4KCjIwMDUtMTItMTYgMjE6NTk6MTIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC86IGNoYW5nZSBzb21lIGNoYXIqIGludG8gY2hhcltdCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0X3ByaXZhdGUuaDoKCSAgY2hhbmdlIHNvbWUgY2hhciogaW50byBjaGFyW10KCjIwMDUtMTItMTYgMTk6MjQ6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogQ2xlYW51cHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAobG9hZF9mZWF0dXJlKToKCSAgQ2xlYW51cHMuCgkgIERvbid0IHVzZSBnX29iamVjdF91bnJlZiBvbiBHc3RPYmplY3RzIHNvIHRoYXQgd2UgYXZvaWQKCSAgbGVha3Mgb24gdW5zYWZlIGdsaWJzLgoKMjAwNS0xMi0xNiAxODoyMDo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogU21hbGwgZG9jIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcmVjYWxjX3N0YXRlKToKCSAgU21hbGwgZG9jIHVwZGF0ZXMuCgoyMDA1LTEyLTE2IDE4OjEwOjA0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY29tbW9uL2NoZWNrLm1hazogQWRkZWQgbWFrZSBmb3JldmVyIHRhcmdldCBmb3IgY2hlY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9jaGVjay5tYWs6CgkgIEFkZGVkIG1ha2UgZm9yZXZlciB0YXJnZXQgZm9yIGNoZWNrLgoKMjAwNS0xMi0xNiAxNzozNDoxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0LmM6IG1ha2UgdGhlIHJlZ2lzdHJ5IGNhY2hlIGZpbGUgSE9TVF9DUFUtZGVwZW5kZW50CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCk6CgkgIG1ha2UgdGhlIHJlZ2lzdHJ5IGNhY2hlIGZpbGUgSE9TVF9DUFUtZGVwZW5kZW50CgoyMDA1LTEyLTE2IDE0OjQ0OjQ5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0YnVmZmVyc3RvcmUuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jOgoJICBwbHVnaW5zL2VsZW1lbnRzL2dzdGJ1ZmZlcnN0b3JlLmMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTItMTYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RidWZmZXJzdG9yZS5jCgkgIChnc3RfYnVmZmVyX3N0b3JlX2NsZWFyZWRfZnVuYyk6IFBheSBhdHRlbnRpb24gdG8gZ19saXN0X2FwcGVuZAoJICByZXR1cm4gdmFsdWUuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG9iamVjdC5jCgkgICh0ZXN0X2Zha2Vfb2JqZWN0X25hbWVfdGhyZWFkZWRfdW5pcXVlKTogUGF5IGF0dGVudGlvbiB0bwoJICBnX2xpc3Rfc29ydCByZXR1cm4gdmFsdWUuCgoyMDA1LTEyLTE2IDExOjUyOjAwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWZlZWRiYWNrLW0ubTogVXBkYXRlIGZvciAwLjkvMC4xMCAoZml4ZXMgIzMyMzg3MCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1mZWVkYmFjay1tLm06CgkgIFVwZGF0ZSBmb3IgMC45LzAuMTAgKGZpeGVzICMzMjM4NzApLgoKMjAwNS0xMi0xNSAxMjoyMjozOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmM6IEZpeCBsY29weSBmb3IgbWluaSBvYmplY3RzLCB0aGUgbWluaSBvYmplY3QgbmVlZHMgdG8gYmUgcmVmJ2VkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X3ZhbHVlX21pbmlfb2JqZWN0X2xjb3B5KToKCSAgRml4IGxjb3B5IGZvciBtaW5pIG9iamVjdHMsIHRoZSBtaW5pIG9iamVjdCBuZWVkcyB0byBiZSByZWYnZWQuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdG1pbmlvYmplY3QuYzogKG15X2Zvb19pbml0KSwKCSAgKG15X2Zvb19nZXRfcHJvcGVydHkpLCAobXlfZm9vX3NldF9wcm9wZXJ0eSksIChteV9mb29fY2xhc3NfaW5pdCksCgkgICh0ZXN0X3ZhbHVlX2NvbGxlY3Rpb24pLCAoZ3N0X21pbmlfb2JqZWN0X3N1aXRlKToKCSAgQWRkIHRlc3QgdG8gZW5zdXJlIHJlZmNvdW50cyBlbmQgdXAgYXMgZXhwZWN0ZWQgd2hlbiBwYXNzaW5nCgkgIEdzdE1pbmlPYmplY3RzIHRocm91Z2ggZ19vYmplY3RfZ2V0KCkgYW5kIGdfb2JqZWN0X3NldCgpLgoKMjAwNS0xMi0xNCAxNzowODozNiArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IFJlZmFjdG9yaW5nIG9mIGNvbGxlY3RwYWRzLiBUaGlzIHZlcnNpb24gcmVtb3ZlcyBhIGxvdCBvZiByYWNlcyB3aXRob3V0IHRvdWNoaW5nIEFQSS8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTItMTQgIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2Jhc2VfaW5pdCksCgkgIChnc3RfY29sbGVjdF9wYWRzX3JlbW92ZV9wYWQpLCAoZ3N0X2NvbGxlY3RfcGFkc19pc19jb2xsZWN0ZWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCksIChnc3RfY29sbGVjdF9wYWRzX2NoYWluKTogUmVmYWN0b3JpbmcKCSAgb2YgY29sbGVjdHBhZHMuIFRoaXMgdmVyc2lvbiByZW1vdmVzIGEgbG90IG9mIHJhY2VzIHdpdGhvdXQKCSAgdG91Y2hpbmcgQVBJL0FCSS4gWWF5ICEKCjIwMDUtMTItMTQgMTA6MDk6MzUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBEb24ndCBhbGxvdyBhY3RpdmF0aW9uIG9mIGEgc3JjcGFkIGluIHB1bGxfcmFuZ2UgaWYgaXQgaGFzIG5vIGdldHJhbmdlIGZ1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FjdGl2YXRlX3B1bGwpLCAoZ3N0X3BhZF9saW5rX3ByZXBhcmUpOgoJICBEb24ndCBhbGxvdyBhY3RpdmF0aW9uIG9mIGEgc3JjcGFkIGluIHB1bGxfcmFuZ2UgaWYgaXQgaGFzIG5vCgkgIGdldHJhbmdlIGZ1bmN0aW9uLgoJICBDaGFuZ2Ugc29tZSBkZWJ1ZyBzdGF0ZW1lbnRzIHRvIGJlIGEgbGl0dGxlIGNsZWFyZXIKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9oYW5kbGVfc3JjX3F1ZXJ5KToKCSAgQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgcGVlciBiZWZvcmUgZXhlY3V0aW5nIHF1ZXJpZXMgdGhlcmV1cG9uLgoJICAqIHRlc3RzL2V4YW1wbGVzL21ldGFkYXRhL3JlYWQtbWV0YWRhdGEuYzogKG1lc3NhZ2VfbG9vcCk6CgkgIFVzZSBnc3RfYnVzX3BvcCBpbnN0ZWFkIG9mIGdzdF9idXNfcG9sbCB3aGVuIHdlIGp1c3Qgd2FudCBpdCB0bwoJICBpbW1lZGlhdGVseSByZXR1cm4gdXMgYW55IGF2YWlsYWJsZSBtZXNzYWdlIHdpdGggMCB0aW1lb3V0LgoKMjAwNS0xMi0xMiAxOTowOTo0OSArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOiBEb24ndCB1bnJlZiBmYWN0b3JpZXMgYWZ0ZXIgY2FsbGluZyB0aGVtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6IChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfY2FsbF9mdW5jdGlvbik6CgkgIERvbid0IHVucmVmIGZhY3RvcmllcyBhZnRlciBjYWxsaW5nIHRoZW0uCgkgICogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAoZ3N0X3R5cGVfZmluZF9oZWxwZXIpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW4pOgoJICBGcmVlIGxpc3RzIG9mIGZhY3RvcmllcyBhZnRlciB1c2luZyB0aGVtLiBGaXhpbmcgdHlwZWZpbmRpbmcgbWVtb3J5CgkgIGxlYWtzLgoKMjAwNS0xMi0xMiAxODoxMjoxMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzogbW9yZSBtZWFuaW5nZnVsIGRlYnVnIG91dHB1dAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2ZpbmFsaXplKSwKCSAgKGdzdF9wbHVnaW5fZmVhdHVyZV9sb2FkKToKCSAgbW9yZSBtZWFuaW5nZnVsIGRlYnVnIG91dHB1dAoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiB0ZXN0cy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkgIG1ha2UgbWFrZSBkaXN0Y2hlY2sgaGFwcHkgYWdhaW4KCjIwMDUtMTItMTIgMTc6Mzc6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICByZW1vdmUgYWxsIHRlc3RzL29sZCBNYWtlZmlsZXMgZnJvbSB0aGUgYnVpbGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBhbGwgdGVzdHMvb2xkIE1ha2VmaWxlcyBmcm9tIHRoZSBidWlsZAoKMjAwNS0xMi0xMiAxNzowOTowNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IENhdGNoIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgYXJlIG9wZXJhdGluZyBjaGFpbi1iYXNlZCwgYnV0IHRoZSBkb3duc3RyZWFtIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiAoc3RvcF90eXBlZmluZGluZyk6CgkgIENhdGNoIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgYXJlIG9wZXJhdGluZyBjaGFpbi1iYXNlZCwKCSAgYnV0IHRoZSBkb3duc3RyZWFtIHBlZXIgcGFkIGhhcyBubyBjaGFpbiBmdW5jdGlvbi4gRW1pdCBhCgkgIGN1c3RvbSBlcnJvciBtZXNzYWdlIGluIHRoaXMgY2FzZSBpbnN0ZWFkIG9mIGxldHRpbmcgdGhlCgkgIGNvcmUgZ2VuZXJhdGUgb25lIGltcGx5aW5nIHRoYXQgdGhpcyBpcyBzb21lIHNvcnQgb2YgY29yZQoJICBidWcuIEl0J3Mgbm90LCBpdCBqdXN0IG1lYW5zIHRoYXQgd2hhdGV2ZXIgZ290IHBsdWdnZWQKCSAgaW50byB0aGUgcGlwZWxpbmUgZG93bnN0cmVhbSB3aGVuIHdlIGFubm91bmNlZCB0aGUgdHlwZQoJICBjYW4gb25seSBvcGVyYXRlIHB1bGwtYmFzZWQsIHdoaWxlIG91ciBzb3VyY2UgY2FuIG9ubHkKCSAgb3BlcmF0ZSBwdXNoLWJhc2VkIChlLmcuIGh0dHA6Ly9mb28vYmFyLm1vdiAhIHF0ZGVtdXggISAuLi4pCgkgIEVycm9yIHN0cmluZyBoYXMgbm90IGJlZW4gbWFya2VkIGZvciB0cmFuc2xhdGlvbiB5ZXQsIGFzCgkgIGl0IHByb2JhYmx5IG5lZWRzIHNvbWUgbW9yZSB3b3JrIGZpcnN0LgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2dldF9iZXN0X3Bvc3NpYmlsaXR5KToKCSAgQWRkIGhlbHBlciBmdW5jdGlvbiB0byBmaW5kIHRoZSBiZXN0IG9mIGFsbCBhdmFpbGFibGUKCSAgZm91bmQgcG9zc2liaWxpdGllcyB0aGF0IHF1YWxpZnkgZ2l2ZW4gdGhlIG1pbi4gdGhyZXNob2xkLgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCk6CgkgIEZpeCB0aGUgY2FzZSB3aGVyZSB3ZSBnZXQgYW4gRU9TIHdoaWxlIHN0aWxsIGluIFRZUEVGSU5ECgkgIG1vZGUgKHdlIHdhbnQgdG8gY2hvc2UgdGhlIGJlc3Qgb2YgYWxsIHBvc3NpYmxlIHR5cGVzLAoJICBub3QganVzdCB0aGUgZmlyc3QgdHlwZSB0aGF0IGhhcHBlbnMgdG8gYmUgaW4gb3VyIHVuc29ydGVkCgkgIGxpc3Qgb2YgcG9zc2libGUgdHlwZXMpLgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoYWluKToKCSAgTWFrZSBzdXJlIHdlIHJldHVybiBHU1RfRkxPV19FUlJPUiB3aGVuIHdlIGVycm9yZWQgb3V0CgkgIGluIHN0b3BfdHlwZWZpbmRpbmcoKTsgYWxzbywgZG9uJ3QganVzdCBmaW5kIHRoZSBiZXN0IG9mCgkgIGFsbCBmb3VuZCB0eXBlIGVudHJpZXMgYW5kIHRoZW4gdXNlIHRoZSBsYXN0IGV4YW1pbmVkCgkgIHR5cGUgZW50cnksIGJ1dCBhY3R1YWxseSB1c2UgdGhlIGJlc3QgZW50cnkuCgoyMDA1LTEyLTEyIDE3OjA3OjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdGVzdHMvZXhhbXBsZXMvOiBNb3JlIGdjYzQgZml4ZXMgYW5kIGEgbWVtIGxlYWsgZml4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9leGFtcGxlcy90eXBlZmluZC90eXBlZmluZC5jOiAodHlwZV9mb3VuZCk6CgkgICogdGVzdHMvZXhhbXBsZXMveG1sL3J1bnhtbC5jOiAoeG1sX2xvYWRlZCk6CgkgIE1vcmUgZ2NjNCBmaXhlcyBhbmQgYSBtZW0gbGVhayBmaXguCgoyMDA1LTEyLTEyIDE2OjIwOjQ3ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiB0ZXN0cy9leGFtcGxlcy94bWwvcnVueG1sLmM6CgkgIG1vcmUgZ2NjIDQgd2FybmluZyBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbW9yZSBnY2MgNCB3YXJuaW5nIGZpeGVzCgoyMDA1LTEyLTEyIDE2OjA0OjQ1ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiB0ZXN0cy9leGFtcGxlcy94bWwvY3JlYXRleG1sLmM6CgkgIGFub3RoZXIgZ2NjNCBmaXgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFub3RoZXIgZ2NjNCBmaXgKCjIwMDUtMTItMTIgMTU6NTk6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2V4YW1wbGVzL3htbC9jcmVhdGV4bWwuYzogZ2NjIDQgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvZXhhbXBsZXMveG1sL2NyZWF0ZXhtbC5jOiAob2JqZWN0X3NhdmVkKToKCSAgZ2NjIDQgZml4ZXMKCjIwMDUtMTItMTIgMTU6NDY6MTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL01ha2VmaWxlLmFtOiBlbmFibGUgdGhlIGV4YW1wbGVzIGV2ZW4gbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9NYWtlZmlsZS5hbToKCSAgZW5hYmxlIHRoZSBleGFtcGxlcyBldmVuIG1vcmUKCjIwMDUtMTItMTIgMTU6MDI6MDIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYyAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX2NsYXNzX2luaXQsIGdzdF9uZXRfdGltZV9wcm92aWRlcl9pbml0KSAoZ3N0X25ldF90aW1lX3Byb3ZpZC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMi0xMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmMKCSAgKGdzdF9uZXRfdGltZV9wcm92aWRlcl9jbGFzc19pbml0LCBnc3RfbmV0X3RpbWVfcHJvdmlkZXJfaW5pdCkKCSAgKGdzdF9uZXRfdGltZV9wcm92aWRlcl9zZXRfcHJvcGVydHkpCgkgIChnc3RfbmV0X3RpbWVfcHJvdmlkZXJfZ2V0X3Byb3BlcnR5KTogRXhwb3J0ICJhY3RpdmUiIGFzIGEgR09iamVjdAoJICBwcm9wZXJ0eS4KCSAgKGdzdF9uZXRfdGltZV9wcm92aWRlcl90aHJlYWQpOiBPbmx5IHJlc3BvbmQgdG8gdGltZSBxdWVyaWVzIGlmCgkgIHRoZSB0aW1lIHByb3ZpZGVyIGlzIGFjdGl2ZS4KCSAgKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmg6IEFkZCBhbiAiYWN0aXZlIiBib29sZWFuIHRvCgkgIE5ldFRpbWVQcm92aWRlciwgcHJlc2VydmluZyBiaW5hcnkgY29tcGF0LgoKMjAwNS0xMi0xMiAxNDo0NjowNiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgdGVzdHMvZXhhbXBsZXMvOiBjb252ZXJ0IGNvbW1lbnRzIGFnYWluCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2V4YW1wbGVzL2NvbnRyb2xsZXIvYXVkaW8tZXhhbXBsZS5jOiAobWFpbik6CgkgICogdGVzdHMvZXhhbXBsZXMvbGF1bmNoL01ha2VmaWxlLmFtOgoJICBjb252ZXJ0IGNvbW1lbnRzIGFnYWluCgoyMDA1LTEyLTEyIDE0OjQzOjU3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmM6IEZpeCB0eXBvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzoKCSAgRml4IHR5cG8uCgoyMDA1LTEyLTEyIDE0OjQyOjExICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBGb3Jnb3QgdGhlIENoYW5nZWxvZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRm9yZ290IHRoZSBDaGFuZ2Vsb2cuLi4KCjIwMDUtMTItMTIgMTQ6NDE6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OiBBZGRlZCBuZXcgc3ltYm9sIHRvIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIEFkZGVkIG5ldyBzeW1ib2wgdG8gZG9jcy4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19pbml0KSwgKGdzdF9iYXNlX3NyY19zZXRfZm9ybWF0KSwKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X3F1ZXJ5KSwgKGdzdF9iYXNlX3NyY19xdWVyeSksCgkgIChnc3RfYmFzZV9zcmNfZGVmYXVsdF9kb19zZWVrKSwgKGdzdF9iYXNlX3NyY19kb19zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19wZXJmb3JtX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc3JjX2V2ZW50X2hhbmRsZXIpLAoJICAoZ3N0X2Jhc2Vfc3JjX3NldF9wcm9wZXJ0eSksIChnc3RfYmFzZV9zcmNfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NyY193YWl0KSwgKGdzdF9iYXNlX3NyY19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NyY191cGRhdGVfbGVuZ3RoKSwgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2NoZWNrX2dldF9yYW5nZSksIChnc3RfYmFzZV9zcmNfbG9vcCksCgkgIChnc3RfYmFzZV9zcmNfZGVmYXVsdF9uZWdvdGlhdGUpLCAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KSwKCSAgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdXNoKSwgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBJbXBsZW1lbnQgc2Vla2luZyB0byBvdGhlciBmb3JtYXRzIHRoYW4gX0JZVEVTLgoJICBJbXBsZW1lbnQgbW9yZSBzZWVraW5nIG1ldGhvZHMgY29ycmVjdGx5LgoJICBEb2MgdXBkYXRlcy4KCSAgQWRkZWQgcXVlcnkgdm1ldGhvZC4KCSAgQWRkZWQgZG9fc2VlayB2bWV0aG9kIHRvIG1ha2UgbGlmZSBlYXNpZXIgZm9yIHN1YmNsYXNzZXMKCSAgd2hlbiBzZWVraW5nLgoJICBBUEkgYWRkaXRpb246IGdzdF9iYXNlX3NyY19zZXRfZm9ybWF0KCkKCjIwMDUtMTItMTIgMTQ6MDg6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHRlc3RzL2V4YW1wbGVzL01ha2VmaWxlLmFtOiBhZGRlZCB0aGF0IHRvbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgYWRkZWQgdGhhdCB0b28KCjIwMDUtMTItMTIgMTQ6MDI6MTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGFwcGxpZWQgc29tZSBzaW1wbGUgZml4aW5nIHRvIHNvbWUgZXhhbXBsZXMgcmUtZW5hYmxlZCB0aGUgd29ya2luZyBleGFtcGxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZG9jcy9yYW5kb20vZW5zb25pYy9tZWRpYS1kZXZpY2UtZGFlbW9uLnR4dDoKCSAgKiB0ZXN0cy9leGFtcGxlcy9jb250cm9sbGVyLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvZXhhbXBsZXMvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9leGFtcGxlcy9jb250cm9sbGVyL2F1ZGlvLWV4YW1wbGUuYzogKG1haW4pOgoJICAqIHRlc3RzL2V4YW1wbGVzL2hlbGxvd29ybGQvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9leGFtcGxlcy9oZWxsb3dvcmxkL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2V4YW1wbGVzL2hlbGxvd29ybGQvaGVsbG93b3JsZC5jOiAoZXZlbnRfbG9vcCksIChtYWluKToKCSAgKiB0ZXN0cy9leGFtcGxlcy9sYXVuY2gvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9leGFtcGxlcy9sYXVuY2gvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvZXhhbXBsZXMvbGF1bmNoL21wM3BhcnNlbGF1bmNoLmM6IChldmVudF9sb29wKSwgKG1haW4pOgoJICAqIHRlc3RzL2V4YW1wbGVzL21ldGFkYXRhLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvZXhhbXBsZXMvbWV0YWRhdGEvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvZXhhbXBsZXMvbWV0YWRhdGEvcmVhZC1tZXRhZGF0YS5jOiAobWVzc2FnZV9sb29wKSwKCSAgKG1ha2VfcGlwZWxpbmUpLCAocHJpbnRfdGFnKSwgKG1haW4pOgoJICAqIHRlc3RzL2V4YW1wbGVzL3F1ZXVlLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvZXhhbXBsZXMvcXVldWUvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvZXhhbXBsZXMvcXVldWUvcXVldWUuYzogKGV2ZW50X2xvb3ApLCAobWFpbik6CgkgICogdGVzdHMvZXhhbXBsZXMvdHlwZWZpbmQvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9leGFtcGxlcy90eXBlZmluZC9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9leGFtcGxlcy90eXBlZmluZC90eXBlZmluZC5jOiAodHlwZV9mb3VuZCksIChldmVudF9sb29wKSwKCSAgKG1haW4pOgoJICAqIHRlc3RzL2V4YW1wbGVzL3htbC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL2V4YW1wbGVzL3htbC9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9leGFtcGxlcy94bWwvY3JlYXRleG1sLmM6IChvYmplY3Rfc2F2ZWQpLCAobWFpbik6CgkgICogdGVzdHMvZXhhbXBsZXMveG1sL3J1bnhtbC5jOiAoeG1sX2xvYWRlZCksIChldmVudF9sb29wKSwgKG1haW4pOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvVE9ETzoKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvY29udHJvbGxlci8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9jb250cm9sbGVyL2F1ZGlvLWV4YW1wbGUuYzoKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvaGVsbG93b3JsZC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9oZWxsb3dvcmxkL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9oZWxsb3dvcmxkL2hlbGxvd29ybGQuYzoKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvbGF1bmNoLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL2xhdW5jaC9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvbGF1bmNoL21wM3BhcnNlbGF1bmNoLmM6CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL2xhdW5jaC9tcDNwbGF5OgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9tYW51YWwvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL21ldGFkYXRhL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9tZXRhZGF0YS9yZWFkLW1ldGFkYXRhLmM6CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL3F1ZXVlLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL3F1ZXVlL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy9xdWV1ZS9xdWV1ZS5jOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy90eXBlZmluZC8uY3ZzaWdub3JlOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy90eXBlZmluZC9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMvdHlwZWZpbmQvdHlwZWZpbmQuYzoKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMveG1sLy5jdnNpZ25vcmU6CgkgICogdGVzdHMvb2xkL2V4YW1wbGVzL3htbC9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9vbGQvZXhhbXBsZXMveG1sL2NyZWF0ZXhtbC5jOgoJICAqIHRlc3RzL29sZC9leGFtcGxlcy94bWwvcnVueG1sLmM6CgkgIGFwcGxpZWQgc29tZSBzaW1wbGUgZml4aW5nIHRvIHNvbWUgZXhhbXBsZXMKCSAgcmUtZW5hYmxlZCB0aGUgd29ya2luZyBleGFtcGxlcwoKMjAwNS0xMi0xMiAxMjo0ODozNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50LmM6IEFkZGVkIG1vcmUgZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHNlZ21lbnQuYzogKGdzdF9zZWdtZW50X2luaXQpLAoJICAoZ3N0X3NlZ21lbnRfc2V0X2xhc3Rfc3RvcCksIChnc3Rfc2VnbWVudF9zZXRfc2VlayksCgkgIChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudCksIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSksCgkgIChnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUpOgoJICBBZGRlZCBtb3JlIGRvY3VtZW50YXRpb24uCgkgIE1ha2Ugc3VyZSB0aGUgbGFzdF9wb3MgdmFsdWUgaXMgdXBkYXRlZCBwcm9wZXJseS4KCSAgTWFrZSBzdXJlIHRvX3N0cmVhbV90aW1lIGFuZCB0b19ydW5uaW5nX3RpbWUgZG9uJ3QKCSAgb3BlcmF0ZSBvbiB3cm9uZyB2YWx1ZXMuCgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHNlZ21lbnQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVXBkYXRlIGNoZWNrLgoKMjAwNS0xMi0xMiAxMjozMjowNCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogTm93IHRoYXQgd2UncmUgbm90IGxlYWtpbmcgZmFjdG9yaWVzLCBtYWtlIHN1cmUgd2Uga2VlcCByZWZlcmVuY2VzIHRvIHRoZW0gd2hpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IChmcmVlX2VudHJ5KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbik6CgkgIE5vdyB0aGF0IHdlJ3JlIG5vdCBsZWFraW5nIGZhY3RvcmllcywgbWFrZSBzdXJlIHdlIGtlZXAgcmVmZXJlbmNlcwoJICB0byB0aGVtIHdoaWxlIHdlIG5lZWQgdGhlbS4KCjIwMDUtMTItMTIgMTE6NDA6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdGVzdHMvY2hlY2svZ3N0L3N0cnVjdF9pMzg2Lmg6IGlmZGVmIG91dCB0aGUgWE1MIHN0cnVjdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svZ3N0L3N0cnVjdF9pMzg2Lmg6CgkgIGlmZGVmIG91dCB0aGUgWE1MIHN0cnVjdHMKCjIwMDUtMTItMTIgMTA6NTk6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHZhbHVlLmM6IGZsb29yIGlzIG5vdCBuZWVkZWQsIEYgaXMgYWx3YXlzIHBvc2l0aXZlOyB0aGlzIG9idmlhdGVzIHRoZSBuZWVkIGZvciBhZGRpbmcgLWxtIHdoZW4gYnVpbGRpbmcgd2l0aG91Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX3RyYW5zZm9ybV9kb3VibGVfZnJhY3Rpb24pOgoJICBmbG9vciBpcyBub3QgbmVlZGVkLCBGIGlzIGFsd2F5cyBwb3NpdGl2ZTsgdGhpcyBvYnZpYXRlcyB0aGUKCSAgbmVlZCBmb3IgYWRkaW5nIC1sbSB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgbGlieG1sCgoyMDA1LTEyLTEyIDEwOjU3OjM3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL2FzcGVjdHJhdGlvOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVzLmM6CgkgIGFkZCBhIDsgYW5kIGFuIGV4YW1wbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBhIDsgYW5kIGFuIGV4YW1wbGUKCjIwMDUtMTItMTIgMTA6MTY6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFRha2UgY3VycmVudCBwbGF5YmFjayByYXRlIGludG8gYWNjb3VudCB3aGVuIHJlcG9ydGluZyB0aGUgcG9zaXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgVGFrZSBjdXJyZW50IHBsYXliYWNrIHJhdGUgaW50byBhY2NvdW50IHdoZW4gcmVwb3J0aW5nCgkgIHRoZSBwb3NpdGlvbi4KCjIwMDUtMTItMTEgMTk6MzU6MDIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL21hbnVhbC9taW1lLXdvcmxkLmZpZzogTGV0J3MgdHJ5IHRoaXMgYWdhaW4sIHRoaXMgdGltZSB3aXRoIGEgZmlsZSB0aGF0IGlzIGFjdHVhbGx5IGluIFhGaWcgZm9ybWF0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9taW1lLXdvcmxkLmZpZzoKCSAgTGV0J3MgdHJ5IHRoaXMgYWdhaW4sIHRoaXMgdGltZSB3aXRoIGEgZmlsZSB0aGF0IGlzCgkgIGFjdHVhbGx5IGluIFhGaWcgZm9ybWF0LgoKMjAwNS0xMi0xMSAxOToxOTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsL21pbWUtd29ybGQuZmlnOiBBZGQgYXVkaW9jb252ZXJ0IGVsZW1lbnQgdG8gZGlhZ3JhbSBzbyB0aGF0IGl0IG1hdGNoZXMgdGhlIHRleHQgYW5kIHRoZSBjb2RlIChmaXhlcyAjMzE5NS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9taW1lLXdvcmxkLmZpZzoKCSAgQWRkIGF1ZGlvY29udmVydCBlbGVtZW50IHRvIGRpYWdyYW0gc28gdGhhdCBpdAoJICBtYXRjaGVzIHRoZSB0ZXh0IGFuZCB0aGUgY29kZSAoZml4ZXMgIzMxOTUyNikuCgoyMDA1LTEyLTExIDE4OjI0OjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9wd2cvOiBVcGRhdGUgc3RhdGUgY2hhbmdlIHN0dWZmIGZvciAwLjEwIChmaXhlcyAjMzIyOTY5KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctY2hhaW5mbi54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctcGFkcy54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctc3RhdGUueG1sOgoJICAqIGRvY3MvcHdnL290aGVyLXNvdXJjZS54bWw6CgkgIFVwZGF0ZSBzdGF0ZSBjaGFuZ2Ugc3R1ZmYgZm9yIDAuMTAgKGZpeGVzICMzMjI5NjkpLgoKMjAwNS0xMi0xMSAxNzo0OToxMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvbWFudWFsLzogVXBkYXRlIGZvciAwLjEwOiBzLzAuOS8wLjEwLzsgcy9hdWRpb3NjYWxlL2F1ZGlvcnNhbXBsZS87IGFkZCBjb252ZXJ0ZXJzIGluIGZyb250IG9mIHBpcGVsaW5lczsgcmVtb3ZlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1jaGVja2xpc3QueG1sOgoJICAqIGRvY3MvbWFudWFsL2FwcGVuZGl4LXByb2dyYW1zLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtcGFkcy54bWw6CgkgICogZG9jcy9tYW51YWwvaGlnaGxldmVsLWNvbXBvbmVudHMueG1sOgoJICAqIGRvY3MvbWFudWFsL21hbnVhbC54bWw6CgkgIFVwZGF0ZSBmb3IgMC4xMDogcy8wLjkvMC4xMC87IHMvYXVkaW9zY2FsZS9hdWRpb3JzYW1wbGUvOwoJICBhZGQgY29udmVydGVycyBpbiBmcm9udCBvZiBwaXBlbGluZXM7IHJlbW92ZSBjdXJseQoJICBicmFja2V0cyBmb3IgdGhyZWFkcyBzdHVmZiwgdGhleSBubyBsb25nZXIgZXhpc3Q7IHVzZQoJICBHU1RfVFlQRV9GUkFDVElPTiBmb3IgZnJhbWVyYXRlczsgdXBkYXRlIHNvbWUgcGllY2VzIG9mCgkgIGNvZGUgdG8gMC4xMCwgYnV0IHRoZXJlJ3MgcGxlbnR5IG1vcmUgdG8gZG8uCgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgIEV4cGFuZCBvbiBhc3luY2hyb25lb3VzIHN0YXRlIGNoYW5nZXM7IHMvMC45LzAuMTAvOwoJICBtZW50aW9uIGRpc2FwcGVhcmFuY2Ugb2YgZ3N0X2luaXRfZ2V0X3BvcHRfdGFibGUoKQoJICAoZml4ZXMgIzMyMjkxNikuCgoyMDA1LTEyLTExIDExOjUzOjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9mYXEvdXNpbmcueG1sOiBTcGlkZXIgbm8gbG9uZ2VyIGV4aXN0cywgYW5kIG5laXRoZXIgZG9lcyBnc3QtbGF1bmNoLWV4dC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9mYXEvdXNpbmcueG1sOgoJICBTcGlkZXIgbm8gbG9uZ2VyIGV4aXN0cywgYW5kIG5laXRoZXIgZG9lcyBnc3QtbGF1bmNoLWV4dC4KCSAgVXBkYXRlIGV4YW1wbGVzIHRvIHVzZSBkZWNvZGViaW4gYW5kIHBsYXliaW4gYW5kIHB1dAoJICBjb252ZXJ0ZXJzIGluIGZyb250IG9mIHNpbmtzIChmaXhlcyAjMzIzNzI2KS4KCjIwMDUtMTItMDkgMTc6MjY6MzEgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IEZpeCBsZWFraW5nIGVsZW1lbnQgZmFjdG9yaWVzIGluIHR5cGVmaW5kaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiAoZmluZF9wZWVrKSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbik6CgkgIEZpeCBsZWFraW5nIGVsZW1lbnQgZmFjdG9yaWVzIGluIHR5cGVmaW5kaW5nLgoJICBGaXggcHJvYmxlbSB3aGVyZSB3ZSBmb3Jnb3QgYWJvdXQgYSBwcm9iYWJsZSB0eXBlIG9uIG5vbi1zZWVrYWJsZQoJICBmaWxlcywgYW5kIHRodXMgbGF0ZXIgbWlzLXR5cGVmb3VuZCBpdC4KCjIwMDUtMTItMDkgMTU6MDk6NDIgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIFJlbW92ZSBtYWtlY29udGV4dCBzdHVmZjsgbm90IHVzZWQgaW4gMC4xMCBhbmQgY2F1c2VzIHByb2JsZW1zIG9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9tNC9nc3QtbWFrZWNvbnRleHQubTQ6CgkgICogY29tbW9uL200L2dzdC1tY3NjLm00OgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBSZW1vdmUgbWFrZWNvbnRleHQgc3R1ZmY7IG5vdCB1c2VkIGluIDAuMTAgYW5kIGNhdXNlcyBwcm9ibGVtcyBvbgoJICBIUFVYIGFjY29yZGluZyB0byBidWcgIzMyMjQ0MQoKMjAwNS0xMi0wNyAxOTowMzo1NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrLzogQWRkZWQgQUJJIGNoZWNrIGZvciBsaWJzLCB0aGlzIHRpbWUgZm9yIHJlYWwKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svbGlicy9saWJzYWJpLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RhYmlfc3VpdGUpLAoJICAobWFpbik6CgkgICogdGVzdHMvY2hlY2svbGlicy9zdHJ1Y3RfaTM4Ni5oOgoJICBBZGRlZCBBQkkgY2hlY2sgZm9yIGxpYnMsIHRoaXMgdGltZSBmb3IgcmVhbAoKMjAwNS0xMi0wNyAxOTowMzowOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL2NoZWNrLzogQWRkZWQgQUJJIGNoZWNrIGZvciBsaWJzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvbGlic2FiaS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0YWJpX3N1aXRlKSwKCSAgKG1haW4pOgoJICAqIHRlc3RzL2NoZWNrL2xpYnMvc3RydWN0X2kzODYuaDoKCSAgQWRkZWQgQUJJIGNoZWNrIGZvciBsaWJzCgoyMDA1LTEyLTA3IDE3OjU5OjIxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06IEFuZCBhZGQgdGhlIHN0cnVjdF9pMzg2LmggdG8gZGlzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIEFuZCBhZGQgdGhlIHN0cnVjdF9pMzg2LmggdG8gZGlzdC4KCjIwMDUtMTItMDcgMTc6MzY6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0ZXN0cy9jaGVjay86IEFkZGVkIGNoZWNrIGZvciBBQkkgY29tcGF0aWJpbGl0eS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY2hlY2svZ3N0Ly5jdnNpZ25vcmU6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdGFiaS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0YWJpX3N1aXRlKSwKCSAgKG1haW4pOgoJICAqIHRlc3RzL2NoZWNrL2dzdC9zdHJ1Y3RfaTM4Ni5oOgoJICBBZGRlZCBjaGVjayBmb3IgQUJJIGNvbXBhdGliaWxpdHkuCgoyMDA1LTEyLTA3IDE1OjMzOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IEZpeCBicm9rZW4gc3luYyBvcHRpb24sIGZpeGVzICMzMjMyNTkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmFrZV9zcmNfZ2V0X3RpbWVzKSwgKGdzdF9mYWtlX3NyY19jcmVhdGUpOgoJICBGaXggYnJva2VuIHN5bmMgb3B0aW9uLCBmaXhlcyAjMzIzMjU5CgoyMDA1LTEyLTA3IDE1OjE2OjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBTbWFsbCBkb2NzIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOgoJICBTbWFsbCBkb2NzIHVwZGF0ZS4KCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfaXNfZXF1YWwpOgoJICBEb24ndCBhc3NlcnQgb24gTlVMTCA8LS0+IFguIEZpeGVzICMzMjMyNjAKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X3JlcGxhY2UpOgoJICBJZiB3ZSdyZSBkb2luZyBhdG9taWMgb3BlcmF0aW9ucywgd2UgbWlnaHQganVzdCBhcyB3ZWxsIHVzZQoJICB0aGUgcHJvcGVyIHdheSB0byBnZXQgYW4gYXRvbWljIHBvaW50ZXIuCgkgICogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBDbGVhbiB1cCBkZWJ1Z2dpbmcuCgoyMDA1LTEyLTA3IDExOjUyOjA1ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvcGFyc2UvZ3JhbW1hci55OiBSZW1vdmUgaGFuZGxpbmcgb2YgeyB9IGZvciB0aHJlYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBSZW1vdmUgaGFuZGxpbmcgb2YgeyB9IGZvciB0aHJlYWRzLgoKMjAwNS0xMi0wNiAyMzozMjowMSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogc3BlbGluZyBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBzcGVsaW5nIGZpeC4KCjIwMDUtMTItMDYgMTk6Mjk6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3RkYXRhcHJvdG9jb2wuc2dtbDoKCSogZG9jcy9yYW5kb20vb21lZ2EvdGVzdGluZy9nc3RvYmplY3QuYzoKCSogZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlcnJvci5jOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGdob3N0cGFkLmM6CgkqIGdzdC9nc3RpbmZvLmM6CgkqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dHlwZWZpbmQuYzoKCSogZ3N0L2dzdHZhbHVlLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiBsaWJzL2dzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSogbGlicy9nc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0ZmlsZWluZGV4LmM6CgkqIHBsdWdpbnMvaW5kZXhlcnMvZ3N0bWVtaW5kZXguYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZy5jOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvY3V0dGVyL2N1dHRlci5jOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvbWl4ZXIvbWl4ZXIuYzoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL3htbC9ydW54bWwuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9jYXBzL25vcm1hbGlzYXRpb24uYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9kZWJ1Zy9nbG9iYWwuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9wYXJzZS9wYXJzZTEuYzoKCSogdG9vbHMvZ3N0LXhtbGluc3BlY3QuYzoKCSogd2luMzIvY29tbW9uL2RpcmVudC5jOgoJICBleHBhbmQgdGFicwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZXhwYW5kIHRhYnMKCjIwMDUtMTItMDYgMTk6MDQ6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBiYWNrIHRvIGN2cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYmFjayB0byBjdnMKCjIwMDUtMTItMDUgMTg6MTM6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gSEVBRAoKPT09IHJlbGVhc2UgMC4xMC4wID09PQoKMjAwNS0xMi0wNSAxODowNTowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlZWxlbWVudHMueG1sOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29yZWluZGV4ZXJzLnhtbDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC4xMC4wCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZWxlYXNpbmcgMC4xMC4wCgoyMDA1LTEyLTA1IDE1OjU3OjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vYmcucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHBvL3poX0NOLnBvOgoJICBVcGRhdGUgLnBvIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBVcGRhdGUgLnBvIGZpbGVzCgoyMDA1LTEyLTA1IDE0OjM2OjA1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHBvLzogYWRkZWQgQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHRyYW5zbGF0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzdWJtaXR0ZWQgYnk6IEZ1bmRhIFdhbmcgPGZ1bmRhd2FuZ0BsaW51eC5uZXQuY24+CgkgICogcG8vTElOR1VBUzoKCSAgKiBwby96aF9DTi5wbzoKCSAgYWRkZWQgQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHRyYW5zbGF0aW9uCgoyMDA1LTEyLTA1IDE0OjE0OjM5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2FmLnBvOgoJICB1cGRhdGVkIEFmcmlrYWFucyB0cmFuc2xhdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlZCBBZnJpa2FhbnMgdHJhbnNsYXRpb24KCjIwMDUtMTItMDUgMTQ6MTQ6MDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHBhZC5oOgoJICByZW1vdmUgZGVwcmVjYXRpb24gZ3VhcmQgZnJvbSBkb2NzdHJpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBkZXByZWNhdGlvbiBndWFyZCBmcm9tIGRvY3N0cmluZwoKMjAwNS0xMi0wNSAxMzoxMDo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICB1cGRhdGUgdHJhbnNsYXRpb25zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgdHJhbnNsYXRpb25zCgoyMDA1LTEyLTA1IDEzOjA2OjM3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9yYW5kb20vdGhvbWFzdnMvVE9ETzoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIGdzdC9nc3R1dGlscy5oOgoJICBmaXggZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGRvY3MKCjIwMDUtMTItMDUgMTM6MDE6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW1AZmx1ZW5kby5jb20+CgoJICBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYyAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZikKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTItMDUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgIHBhdGNoIGJ5OiBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fcHJlcGFyZV9vdXRwdXRfYnVmKQoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jIChnc3RfcXVldWVfYnVmZmVyYWxsb2MpOiBDYWxsCgkgIGFsbG9jX2J1ZmZlcl9hbmRfc2V0X2NhcHMuCgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2FsbG9jX2J1ZmZlcik6IENoYW5nZWQgdG8gbm90IGNhbGwKCSAgc2V0X2NhcHMgb24gdGhlIHNvdXJjZSBwYWQuCgkgIChnc3RfcGFkX2FsbG9jX2J1ZmZlcl9hbmRfc2V0X2NhcHMpOiBOZXcgZnVuY3Rpb24sIGRvZXMgd2hhdAoJICBhbGxvY19idWZmZXIgdXNlZCB0byBkby4gRml4ZXMgIzMyMjg3NC4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLW5lZ290aWF0aW9uLnhtbDogVXBkYXRlIGZvciB0aGUgYWxsb2NfYnVmZmVyCgkgIGNoYW5nZXMuCgoyMDA1LTEyLTA1IDEyOjMzOjQ0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL2NoZWNrL2dzdC9nc3R1dGlscy5jOgoJICByZWFsbHkgYWRkIHRoZSB0ZXN0cyBmb3IgdGhlIDY0L2RvdWJsZSBjb252ZXJzaW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZWFsbHkgYWRkIHRoZSB0ZXN0cyBmb3IgdGhlIDY0L2RvdWJsZSBjb252ZXJzaW9uCgoyMDA1LTEyLTA1IDEyOjA5OjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3Rjb250cm9sbGVyLmRlZjoKCSAgYWRkIGRlZiBmb3IgY29udHJvbGxlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGRlZiBmb3IgY29udHJvbGxlcgoKMjAwNS0xMi0wNSAxMjowOTowMSArMDAwMCAgU2ViYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICB3aW4zMi86IHdpbjMyIGJ1aWxkIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogU2ViYXN0aWVuIE1vdXR0ZQoJICAqIHdpbjMyL01BTklGRVNUOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgKiB3aW4zMi92czYvbGliZ3N0Y29udHJvbGxlci5kc3A6CgkgIHdpbjMyIGJ1aWxkIGZpeGVzCgoyMDA1LTEyLTA1IDEwOjU5OjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQmFjayBvdXQgcHJldmlvdXMgY29kZSBjaGFuZ2VzLCBsZWF2ZSBkb2MgdXBkYXRlcywgZmlsZSBidWdzIGluc3RlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19pc19lcXVhbCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmFrZV9zcmNfY3JlYXRlKToKCSAgQmFjayBvdXQgcHJldmlvdXMgY29kZSBjaGFuZ2VzLCBsZWF2ZSBkb2MgdXBkYXRlcywgZmlsZSBidWdzCgkgIGluc3RlYWQuCgoyMDA1LTEyLTA1IDEwOjI3OjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLio6IEZpeCBicm9rZW4gc3luYyBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzogKGdzdF9mYWtlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9mYWtlX3NyY19nZXRfdGltZXMpLCAoZ3N0X2Zha2Vfc3JjX2NyZWF0ZSk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkgIEZpeCBicm9rZW4gc3luYyBjb2RlLgoKMjAwNS0xMi0wNSAxMDoyMjo1NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjYXBzLmM6IENvbXBhcmluZyBOVUxMIGFnYWluc3QgIU5VTEwgeWllbGRzIGRpZmZlcmVudCBjYXBzLCBub3QgYSBmYWlsdXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfaXNfZXF1YWwpOgoJICBDb21wYXJpbmcgTlVMTCBhZ2FpbnN0ICFOVUxMIHlpZWxkcyBkaWZmZXJlbnQgY2Fwcywgbm90IGEKCSAgZmFpbHVyZS4KCjIwMDUtMTItMDUgMTA6MTg6MjcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYzogRml4IHNtYWxsIHR5cG8gaW4gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIEZpeCBzbWFsbCB0eXBvIGluIGRvY3MuCgoyMDA1LTEyLTA1IDA5OjUzOjU0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3QuYyAoaW5pdF9wb3N0KTogcmVtb3ZlIGhhcmQtY29kZWQgMC45IGxvY2F0aW9uIGZvciByZWdpc3RyaWVzL3BsdWdpbnMgd2l0aCBhIE1BSk9STUlOT1Igb25lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMi0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgcGF0Y2ggYnk6IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogZ3N0L2dzdC5jIChpbml0X3Bvc3QpOiByZW1vdmUgaGFyZC1jb2RlZCAwLjkgbG9jYXRpb24gZm9yCgkgIHJlZ2lzdHJpZXMvcGx1Z2lucyB3aXRoIGEgTUFKT1JNSU5PUiBvbmUuCgkgIChwbHVnaW5fZGVzYyk6IFJlbmFtZSBsaWJyYXJ5IGZyb20gZ3N0Y29yZWxlZW1lbnRzIHRvCgkgIHN0YXRpY2VsZW1lbnRzLiBGaXhlcyAjMzIzMjIyLgoKMjAwNS0xMi0wNSAwOTo0NToyOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogQ2hhbmdlIGRlYnVnIGNhdGVnb3J5IHRvICdjb2xsZWN0cGFkcycgZnJvbSAnY29sbGVjdF9wYWRzJyAoZml4ZXMgIzMyMzI1MCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfYmFzZV9pbml0KToKCSAgQ2hhbmdlIGRlYnVnIGNhdGVnb3J5IHRvICdjb2xsZWN0cGFkcycgZnJvbSAnY29sbGVjdF9wYWRzJwoJICAoZml4ZXMgIzMyMzI1MCkuCgoyMDA1LTEyLTA0IDE5OjU3OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICByZW5hbWUgdHdvIGV4cG9ydHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbmFtZSB0d28gZXhwb3J0cwoKMjAwNS0xMi0wNCAxODo1NDoxOSArMDAwMCAgU2ViYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzogdXNlIGNvbnZlcnQgZnVuY3Rpb24gZm9yIHVpbnQ2NC9kb3VibGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHBhdGNoIGJ5OiBTZWJhc3RpZW4gTW91dHRlCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIHVzZSBjb252ZXJ0IGZ1bmN0aW9uIGZvciB1aW50NjQvZG91YmxlCgkgICogd2luMzIvdnM2L2xpYmdzdGNvbnRyb2xsZXIuZHNwOgoJICBsaW5rIHRvIEdMaWIKCjIwMDUtMTItMDQgMDk6NTc6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgYWRkIHRlc3RzIHRoYXQgc2VlbSB0byBzaG93IHRoYXQgdGhlIGd1aW50NjQvZ2RvdWJsZSBjb252ZXJzaW9ucyBhcmUgY29ycmVjdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9ndWludDY0X3RvX2dkb3VibGUpLAoJICAoZ3N0X3V0aWxfZ2RvdWJsZV90b19ndWludDY0KSwgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQ2NCk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdXRpbHNfc3VpdGUpOgoJICBhZGQgdGVzdHMgdGhhdCBzZWVtIHRvIHNob3cgdGhhdCB0aGUgZ3VpbnQ2NC9nZG91YmxlIGNvbnZlcnNpb25zCgkgIGFyZSBjb3JyZWN0LgoKMjAwNS0xMi0wMiAxMjo0NDo1MyArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIG1ha2UgdmVyc2lvbiBudW1iZXIgYSBsaXR0bGUgbGVzcyBob3BlZnVsbAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFrZSB2ZXJzaW9uIG51bWJlciBhIGxpdHRsZSBsZXNzIGhvcGVmdWxsCgoyMDA1LTEyLTAyIDEyOjM0OjQ3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogRml4IGRvY3MgYWdhaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2FkZF9wYXRoKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSAgRml4IGRvY3MgYWdhaW4uCgkgIFJlbW92ZWQgb2xkIGNvZGUgZnJvbSBnc3RyZWdpc3RyeXhtbC5jCgoyMDA1LTEyLTAyIDEyOjE5OjU1ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgZml4IHVwZGF0aW5nIGdzdHJlYW1lciBzcGVjIGZpbGUgbWFraW5nIGl0IDAuMTAgcmVhZHkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCB1cGRhdGluZyBnc3RyZWFtZXIgc3BlYyBmaWxlIG1ha2luZyBpdCAwLjEwIHJlYWR5CgoyMDA1LTEyLTAyIDExOjM2OjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IFNtYWxsIGNsZWFudXAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludDY0KSwKCSAgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQpOgoJICBTbWFsbCBjbGVhbnVwLgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCk6CgkgIEFkZCBkZWJ1ZyBsb2cgbGluZS4KCSAgKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCk6CgkgIEFkZCBGSVhNRS4KCjIwMDUtMTItMDIgMDk6NDg6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgd2luMzIvOiByZW5hbWVkIGNvcmUgZWxlbWVudHMgcGx1Z2luCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL01BTklGRVNUOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgKiB3aW4zMi92czYvZ3N0cmVhbWVyLmRzdzoKCSAgKiB3aW4zMi92czYvbGliZ3N0Y29yZWVsZW1lbnRzLmRzcDoKCSAgKiB3aW4zMi92czYvbGliZ3N0ZWxlbWVudHMuZHNwOgoJICByZW5hbWVkIGNvcmUgZWxlbWVudHMgcGx1Z2luCgoyMDA1LTEyLTAyIDAxOjM1OjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHRvb2xzL2dzdC1ydW4uYzogZG8gcGllY2Utd2lzZSBtYWpvci9taW5vciBjb21wYXJpc29uIHNvIDAuOSA8IDAuMTAgYWxzbyBhbGxvdyAuZXhlIGV4dGVuc2lvbnMgZm9yIHRvb2xzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1ydW4uYzogKGNvbXBhcmVfbWFqb3JfbWlub3IpLCAoZmluZF9oaWdoZXN0X3ZlcnNpb24pLAoJICAoZ2V0X2NhbmRpZGF0ZXMpOgoJICBkbyBwaWVjZS13aXNlIG1ham9yL21pbm9yIGNvbXBhcmlzb24gc28gMC45IDwgMC4xMAoJICBhbHNvIGFsbG93IC5leGUgZXh0ZW5zaW9ucyBmb3IgdG9vbHMKCjIwMDUtMTItMDEgMjM6NTc6MDcgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC9nc3QuYzogRXNjYXBlIGEgJSB0byBtYWtlIGd0a2RvYyBoYXBwaWVyOyBidWcgMzIyOTU4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgIEVzY2FwZSBhICUgdG8gbWFrZSBndGtkb2MgaGFwcGllcjsgYnVnIDMyMjk1OC4KCjIwMDUtMTItMDEgMTk6MTg6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gSEVBRAoKPT09IHJlbGVhc2UgMC45LjcgPT09CgoyMDA1LTEyLTAxIDE5OjExOjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENIQU5HRVMtMC45OgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHJlbGVhc2luZyAwLjkuNwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVsZWFzaW5nIDAuOS43CgoyMDA1LTEyLTAxIDE2OjUxOjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvbGlicy90bXBsL2dzdGRhdGFwcm90b2NvbC5zZ21sOgoJKiBkb2NzL3JhbmRvbS9yZWxlYXNlOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2JnLnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSogd2luMzIvdnM2L2dzdF9pbnNwZWN0LmRzcDoKCSogd2luMzIvdnM2L2dzdF9sYXVuY2guZHNwOgoJKiB3aW4zMi92czYvbGliZ3N0YmFzZS5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3RlbGVtZW50cy5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3RyZWFtZXIuZHNwOgoJKiB3aW4zMi92czcvR1N0cmVhbWVyLnZjcHJvajoKCSogd2luMzIvdnM3L2dzdC1pbnNwZWN0LnZjcHJvajoKCSogd2luMzIvdnM3L2dzdC1sYXVuY2gudmNwcm9qOgoJKiB3aW4zMi92czcvbGliZ3N0YmFzZS52Y3Byb2o6CgkgIGJ1bXAgR1NUX01BSk9STUlOT1IgdG8gMC4xMCByZXNldCBsaWJ0b29sIHZlcnNpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJ1bXAgR1NUX01BSk9STUlOT1IgdG8gMC4xMAoJICByZXNldCBsaWJ0b29sIHZlcnNpb24KCjIwMDUtMTItMDEgMTU6Mjg6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdG9vbHMvZ3N0LWZlZWRiYWNrLTAuNzoKCSAgcmVtb3ZlIG9sZCBmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgb2xkIGZpbGUKCjIwMDUtMTItMDEgMTU6MTg6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9wbHVnaW5zLy5naXRpZ25vcmU6CgkgIGlnbm9yZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgbW9yZQoKMjAwNS0xMi0wMSAxNTowODowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIHBvL0xJTkdVQVM6CgkqIHBvL2JnLnBvOgoJICBBZGRlZCBCdWxnYXJpYW4gdHJhbnNsYXRpb24gYnkgKEFsZXhhbmRlciBTaG9wb3YpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBBZGRlZCBCdWxnYXJpYW4gdHJhbnNsYXRpb24gYnkgKEFsZXhhbmRlciBTaG9wb3YpCgoyMDA1LTEyLTAxIDE1OjA0OjAzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0LWJ1aWxkLnN0YW1wOgoJICBjb21taXQgZmluYWwgc3RhbXAgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY29tbWl0IGZpbmFsIHN0YW1wIGZpbGUKCjIwMDUtMTItMDEgMTQ6NTE6MDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmhpZXJhcmNoeToKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmludGVyZmFjZXM6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5wcmVyZXF1aXNpdGVzOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIGFkZCBtb3JlIGZpbGVzIGZvciBkaXN0Y2hlY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtb3JlIGZpbGVzIGZvciBkaXN0Y2hlY2sKCjIwMDUtMTItMDEgMTQ6NDA6NDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLmFyZ3M6CgkqIGRvY3MvcGx1Z2lucy9nc3RyZWFtZXItcGx1Z2lucy5zaWduYWxzOgoJICBhZGQgc2lnbmFscyBhbmQgYXJncwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIHNpZ25hbHMgYW5kIGFyZ3MKCjIwMDUtMTItMDEgMTI6MzY6MTAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGx1Z2luLmM6CgkgIGZpeCB0ZXN0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggdGVzdAoKMjAwNS0xMi0wMSAxMjoyOTozNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbW1vbjoKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL01ha2VmaWxlLmFtOgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXMuaW46CgkqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLWRvY3Muc2dtbDoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9wbHVnaW5zL2dzdHJlYW1lci1wbHVnaW5zLnR5cGVzOgoJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC5zdGFtcDoKCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvcmVlbGVtZW50cy54bWw6CgkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb3JlaW5kZXhlcnMueG1sOgoJKiBkb2NzL3BsdWdpbnMvc2Nhbm9iai1idWlsZC5zdGFtcDoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkqIHBsdWdpbnMvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJKiBwbHVnaW5zL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJKiBwbHVnaW5zL2luZGV4ZXJzL2dzdGluZGV4ZXJzLmM6CgkgIGRvY3VtZW50IGNvcmUgcGx1Z2lucyBpbiBhIHNlcGFyYXRlIGRvY3VtZW50IGp1c3QgbGlrZSBhbGwgdGhlIG90aGVycyByZW5hbWUgdGhlc2UgcGx1Z2lucyB0byBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jdW1lbnQgY29yZSBwbHVnaW5zIGluIGEgc2VwYXJhdGUgZG9jdW1lbnQganVzdCBsaWtlIGFsbCB0aGUKCSAgb3RoZXJzCgkgIHJlbmFtZSB0aGVzZSBwbHVnaW5zIHRvIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIGNvcmUKCjIwMDUtMTItMDEgMTI6MDA6NTYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RldmVudC5oIChzdHJ1Y3QgX0dzdEV2ZW50KTogTWVhbnQgdG8gcmVtb3ZlIHRoZSBleHRyYSBwYWRkaW5nIGhlcmUgYmVmb3JlLCBidXQgaXQgbWlzc2VkIHRoZSBjb21taXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEyLTAxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RldmVudC5oIChzdHJ1Y3QgX0dzdEV2ZW50KTogTWVhbnQgdG8gcmVtb3ZlIHRoZSBleHRyYQoJICBwYWRkaW5nIGhlcmUgYmVmb3JlLCBidXQgaXQgbWlzc2VkIHRoZSBjb21taXQuCgoyMDA1LTEyLTAxIDEwOjA3OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJKiB3aW4zMi92czYvZ3N0cmVhbWVyLmRzdzoKCSogd2luMzIvdnM2L2xpYmdzdGNvbnRyb2xsZXIuZHNwOgoJICBhZGQgbGliZ3N0Y29udHJvbGxlciB0byB0aGUgYnVpbGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBsaWJnc3Rjb250cm9sbGVyIHRvIHRoZSBidWlsZAoKMjAwNS0xMi0wMSAwOTo1NDo1NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzogd2hpdGVzcGFjZSBwcmljZXMgaGF2ZSBjcmFzaGVkLCB3ZSBzaG91bGQgZmVlbCBmcmVlIHRvIHVzZSBzb21lIG5vdyB1c2UgZ3N0X2cuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3RpbnRlcnBvbGF0aW9uLmM6CgkgIHdoaXRlc3BhY2UgcHJpY2VzIGhhdmUgY3Jhc2hlZCwgd2Ugc2hvdWxkIGZlZWwgZnJlZSB0byB1c2Ugc29tZSBub3cKCSAgdXNlIGdzdF9ndWludDY0X3RvX2dkb3VibGUKCjIwMDUtMTItMDEgMDk6MzI6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNpbmsuaDoKCSAgZml4IHR5cG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCB0eXBvCgoyMDA1LTEyLTAxIDA5OjIzOjIwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2xpYi5jOgoJICB3cmFwIGNvbmZpZy5oIGluY2x1ZGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdyYXAgY29uZmlnLmggaW5jbHVkZQoKMjAwNS0xMi0wMSAwMjowODoxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIHVwZGF0ZSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgZG9jcwoKMjAwNS0xMi0wMSAwMDo1NDo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwbHVnaW5zL2VsZW1lbnRzLzogbW9yZSBhbmFsIGNsZWFudXAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6IChnc3RfZmRfc2lua19fYmFzZV9pbml0KSwKCSAgKGdzdF9mZF9zaW5rX19jbGFzc19pbml0KSwgKGdzdF9mZF9zaW5rX19pbml0KSwKCSAgKGdzdF9mZF9zaW5rX19jaGFpbiksIChnc3RfZmRfc2lua19fc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mZF9zaW5rX19nZXRfcHJvcGVydHkpOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmg6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOiAoX2RvX2luaXQpLCAoZ3N0X2ZkX3NyY19iYXNlX2luaXQpLAoJICAoZ3N0X2ZkX3NyY19jbGFzc19pbml0KSwgKGdzdF9mZF9zcmNfaW5pdCksIChnc3RfZmRfc3JjX2Rpc3Bvc2UpLAoJICAoZ3N0X2ZkX3NyY191cGRhdGVfZmQpLCAoZ3N0X2ZkX3NyY19zdGFydCksIChnc3RfZmRfc3JjX3N0b3ApLAoJICAoZ3N0X2ZkX3NyY191bmxvY2spLCAoZ3N0X2ZkX3NyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2ZkX3NyY19nZXRfcHJvcGVydHkpLCAoZ3N0X2ZkX3NyY19jcmVhdGUpLAoJICAoZ3N0X2ZkX3NyY19pc19zZWVrYWJsZSksIChnc3RfZmRfc3JjX2dldF9zaXplKSwKCSAgKGdzdF9mZF9zcmNfdXJpX2dldF90eXBlKSwgKGdzdF9mZF9zcmNfdXJpX2dldF9wcm90b2NvbHMpLAoJICAoZ3N0X2ZkX3NyY191cmlfZ2V0X3VyaSksIChnc3RfZmRfc3JjX3VyaV9zZXRfdXJpKSwKCSAgKGdzdF9mZF9zcmNfdXJpX2hhbmRsZXJfaW5pdCk6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5oOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9nZXRfdHlwZSk6CgkgIG1vcmUgYW5hbCBjbGVhbnVwCgoyMDA1LTExLTMwIDE5OjM2OjU0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlcy5pbjoKCSogZ3N0L01ha2VmaWxlLmFtOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIGZpeCB0aGUgZG9jcyBidWlsZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IHRoZSBkb2NzIGJ1aWxkCgoyMDA1LTExLTMwIDE5OjAzOjU5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlcy5pbjoKCSAgYWRkIG5ldyBpbnB1dCB0eXBlcyBmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgbmV3IGlucHV0IHR5cGVzIGZpbGUKCjIwMDUtMTEtMzAgMTk6MDE6NTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdmFyaW91cyBmaXhlcyB0byBtYWtlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5jOgoJICAqIGdzdC9nc3RwbHVnaW4uaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL2NvbXBsZXhpdHkuYzoKCSAgKiB0ZXN0cy9iZW5jaG1hcmtzL21hc3MtZWxlbWVudHMuYzoKCSAgKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgIHZhcmlvdXMgZml4ZXMgdG8gbWFrZQoJICAtLWRpc2FibGUtbmxzIC0tZGlzYWJsZS1yZWdpc3RyeSAtLWRpc2FibGUtbG9hZHNhdmUgICAgICAgICAgIC0tZGlzYWJsZS1wYXJzZSAtLWRpc2FibGUtZ3N0LWRlYnVnCgkgIHdvcmsgYW5kIGdldCB0aGUgY29yZSAuc28gZG93biB0byAzNjA0NDQgYnl0ZXMgYWZ0ZXIgc3RyaXBwaW5nCgoyMDA1LTExLTMwIDE3OjA1OjI5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbGlicy90bXBsL2dzdGRhdGFwcm90b2NvbC5zZ21sOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgbW92ZSBsb2NhdGlvbiBvZiB0ZXN0IHJlZ2lzdHJ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3ZlIGxvY2F0aW9uIG9mIHRlc3QgcmVnaXN0cnkKCjIwMDUtMTEtMzAgMTY6NDU6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzLy5naXRpZ25vcmU6CgkgIGlnbm9yZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgbW9yZQoKMjAwNS0xMS0zMCAxNjo0NToxNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9taXNjL01ha2VmaWxlLmFtOgoJICBtaXNzaW5nIG1ha2VmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtaXNzaW5nIG1ha2VmaWxlCgoyMDA1LTExLTMwIDE2OjQzOjE2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHNjcmlwdHMvY3ZzLXVwZGF0ZS5zaDoKCSAgcHJ1bmUgZW1wdHkgZGlycyB3aGVuIHVwZGF0aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwcnVuZSBlbXB0eSBkaXJzIHdoZW4gdXBkYXRpbmcKCjIwMDUtMTEtMzAgMTY6NDI6MjcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogRE9DQlVJTERJTkc6CgkqIGRvY3MvUkVBRE1FOgoJICByZW1vdmUgZW1wdHkgZGlyczsgbW92ZSBkb2NidWlsZGluZyBub3RlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGVtcHR5IGRpcnM7IG1vdmUgZG9jYnVpbGRpbmcgbm90ZXMKCjIwMDUtMTEtMzAgMTY6Mzk6MDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZGVzY2VuZCBpbnRvIHRlc3RzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE1ha2VmaWxlLmFtOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgZGVzY2VuZCBpbnRvIHRlc3RzCgkgICogZG9jcy9yYW5kb20vdGhvbWFzdnMvVE9ETzoKCSAgKiB0ZXN0cy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9SRUFETUU6CgkgIGFkZCBhIFJFQURNRQoKMjAwNS0xMS0zMCAxNjozMjoyMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9iZW5jaG1hcmtzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2dlbmVyaWMvLmdpdGlnbm9yZToKCSogdGVzdHMvY2hlY2svbGlicy8uZ2l0aWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWdub3JlIG1vcmUKCjIwMDUtMTEtMzAgMTY6MzA6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogUkVBRE1FOgoJICB1cGRhdGUgUkVBRE1FCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgUkVBRE1FCgoyMDA1LTExLTMwIDE2OjI5OjI4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbW1vbjoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGRvbid0IGZhaWwgb24gbWlzc2luZyByZWdpc3RyeQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9uJ3QgZmFpbCBvbiBtaXNzaW5nIHJlZ2lzdHJ5CgoyMDA1LTExLTMwIDE2OjI4OjE3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL1JFQURNRS50eHQ6CgkgIGFkZCBhIFJFQURNRQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGEgUkVBRE1FCgoyMDA1LTExLTMwIDE2OjI2OjM2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogd2luMzIvR1N0cmVhbWVyLnZjcHJvajoKCSogd2luMzIvTUFOSUZFU1Q6CgkqIHdpbjMyL01ha2VmaWxlOgoJKiB3aW4zMi9NYWtlZmlsZS5pbnNwZWN0OgoJKiB3aW4zMi9NYWtlZmlsZS5sYXVuY2g6CgkqIHdpbjMyL01ha2VmaWxlLnJlZ2lzdGVyOgoJKiB3aW4zMi9SRUFETUUudHh0OgoJKiB3aW4zMi9nc3QtaW5zcGVjdC52Y3Byb2o6CgkqIHdpbjMyL2dzdC1sYXVuY2gudmNwcm9qOgoJKiB3aW4zMi9nc3QtcmVnaXN0ZXIudmNwcm9qOgoJKiB3aW4zMi9nc3RlbGVtZW50cy52Y3Byb2o6CgkqIHdpbjMyL2dzdGdldGJpdHMuZGVmOgoJKiB3aW4zMi9nc3RnZXRiaXRzLnZjcHJvajoKCSogd2luMzIvZ3N0cmVhbWVyLWRiZy5kZWY6CgkqIHdpbjMyL2dzdHJlYW1lci5kZWY6CgkqIHdpbjMyL2xpYmdzdGJhc2UuZGVmOgoJKiB3aW4zMi9saWJnc3RiYXNlLnZjcHJvajoKCSogd2luMzIvbGlua19vbGRydW50aW1lLmM6CgkqIHdpbjMyL21tYW4uYzoKCSogd2luMzIvbW1hbi5oOgoJKiB3aW4zMi9tbWFuLmlubDoKCSogd2luMzIvbXN2YzcxLnNsbjoKCSAgbW92ZSBldmVuIG1vcmUgc3R1ZmYsIHdpbjMyLyBpcyBuaWNlIGFuZCBjbGVhbiBub3cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vdmUgZXZlbiBtb3JlIHN0dWZmLCB3aW4zMi8gaXMgbmljZSBhbmQgY2xlYW4gbm93CgoyMDA1LTExLTMwIDE2OjE3OjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogbGlicy9nc3QvY29udHJvbC8uZ2l0aWdub3JlOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkqIHdpbjMyL01BTklGRVNUOgoJKiB3aW4zMi9jb25maWcuaDoKCSogd2luMzIvZGlyZW50LmM6CgkqIHdpbjMyL2RpcmVudC5oOgoJKiB3aW4zMi9nc3RieXRlc3RyZWFtLmRlZjoKCSogd2luMzIvZ3N0Ynl0ZXN0cmVhbS52Y3Byb2o6CgkqIHdpbjMyL2dzdGNvbmZpZy5oOgoJKiB3aW4zMi9nc3RlbnVtdHlwZXMuYzoKCSogd2luMzIvZ3N0ZW51bXR5cGVzLmg6CgkqIHdpbjMyL2dzdG9wdGltYWxzY2hlZHVsZXIudmNwcm9qOgoJKiB3aW4zMi9nc3R2ZXJzaW9uLmg6CgkqIHdpbjMyL2d0Y2hhci5oOgoJKiB3aW4zMi90ZXN0c3VpdGUvYmlucy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9ieXRlc3RyZWFtLnZjcHJvajoKCSogd2luMzIvdGVzdHN1aXRlL2NhcHMudmNwcm9qOgoJKiB3aW4zMi90ZXN0c3VpdGUvY2xlYW51cC52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9jbG9jay52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9kZWJ1Zy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9kbG9wZW4udmNwcm9qOgoJKiB3aW4zMi90ZXN0c3VpdGUvZHlucGFyYW1zLnZjcHJvajoKCSogd2luMzIvdGVzdHN1aXRlL2VsZW1lbnRzLnZjcHJvajoKCSogd2luMzIvdGVzdHN1aXRlL2dob3N0cGFkcy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9pbmRleGVycy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9uZWdvdGlhdGlvbi52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9wYXJzZS52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9wbHVnaW4udmNwcm9qOgoJKiB3aW4zMi90ZXN0c3VpdGUvcmVmY291bnRpbmcudmNwcm9qOgoJKiB3aW4zMi90ZXN0c3VpdGUvc2NoZWR1bGVycy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS9zdGF0ZXMudmNwcm9qOgoJKiB3aW4zMi90ZXN0c3VpdGUvdGFncy52Y3Byb2o6CgkqIHdpbjMyL3Rlc3RzdWl0ZS90aHJlYWRzLnZjcHJvajoKCSAgcmVtb3ZlIG9sZCB3aW4zMiBzdHVmZiB0aGF0IGlzbid0IG1haW50YWluZWQgYW5kIHNob3VsZCBiZSByZW9yZ2FuaXplZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIG9sZCB3aW4zMiBzdHVmZiB0aGF0IGlzbid0IG1haW50YWluZWQgYW5kIHNob3VsZCBiZQoJICByZW9yZ2FuaXplZAoKMjAwNS0xMS0zMCAxNjoxMjo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBsaWJzL2dzdC9nZXRiaXRzLy5naXRpZ25vcmU6CgkgIHJlbW92ZSBnZXRiaXRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZ2V0Yml0cwoKMjAwNS0xMS0zMCAxNjoxMDo1NyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY29uZmlndXJlLmFjIChHU1RfUEtHX0RFUFMpOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2gsIG1ha2VzIGxvYWRpbmcgdGhlIGdzdC5pbnRlcmZhY2VzIHB5dGhvbiBtb2R1bGUgYm9yay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMzAgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY29uZmlndXJlLmFjIChHU1RfUEtHX0RFUFMpOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2gsIG1ha2VzCgkgIGxvYWRpbmcgdGhlIGdzdC5pbnRlcmZhY2VzIHB5dGhvbiBtb2R1bGUgYm9yay4KCSAgKiBjb25maWd1cmUuYWMgKEdTVF9QS0dfREVQUyk6IFVzZSBnbW9kdWxlLW5vLWV4cG9ydC0yLjAucGMsCgkgIGF2YWlsYWJsZSBzaW5jZSBHTGliIDIuMi4gRml4ZXMgIzMxODAzMS4KCjIwMDUtMTEtMzAgMTY6MDg6MzEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBNYWtlZmlsZS5hbToKCSogY2hlY2svLmdpdGlnbm9yZToKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CgkqIGNoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYzoKCSogY2hlY2svZWxlbWVudHMvZmRzcmMuYzoKCSogY2hlY2svZWxlbWVudHMvaWRlbnRpdHkuYzoKCSogY2hlY2svZ2VuZXJpYy8uZ2l0aWdub3JlOgoJKiBjaGVjay9nZW5lcmljL3N0YXRlcy5jOgoJKiBjaGVjay9nc3QtbGlicy8uZ2l0aWdub3JlOgoJKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6CgkqIGNoZWNrL2dzdC1saWJzL2dkcC5jOgoJKiBjaGVjay9nc3QvLmdpdGlnbm9yZToKCSogY2hlY2svZ3N0L2NhcHNsaXN0Lmg6CgkqIGNoZWNrL2dzdC9nc3QuYzoKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiBjaGVjay9nc3QvZ3N0YnVmZmVyLmM6CgkqIGNoZWNrL2dzdC9nc3RidXMuYzoKCSogY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSogY2hlY2svZ3N0L2dzdGV2ZW50LmM6CgkqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOgoJKiBjaGVjay9nc3QvZ3N0aXRlcmF0b3IuYzoKCSogY2hlY2svZ3N0L2dzdG1lc3NhZ2UuYzoKCSogY2hlY2svZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSogY2hlY2svZ3N0L2dzdG9iamVjdC5jOgoJKiBjaGVjay9nc3QvZ3N0cGFkLmM6CgkqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJKiBjaGVjay9nc3QvZ3N0cGx1Z2luLmM6CgkqIGNoZWNrL2dzdC9nc3RzZWdtZW50LmM6CgkqIGNoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkqIGNoZWNrL2dzdC9nc3R0YWcuYzoKCSogY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOgoJKiBjaGVjay9uZXQvLmdpdGlnbm9yZToKCSogY2hlY2svbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkqIGNoZWNrL25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzoKCSogY2hlY2svcGlwZWxpbmVzLy5naXRpZ25vcmU6CgkqIGNoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6CgkqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6CgkqIGNoZWNrL3BpcGVsaW5lcy9zdHJlc3MuYzoKCSogY2hlY2svc3RhdGVzLy5naXRpZ25vcmU6CgkqIGNoZWNrL3N0YXRlcy9zaW5rcy5jOgoJKiBjb25maWd1cmUuYWM6CgkqIGV4YW1wbGVzL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9hcHByZWFkZXIvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvYXBwcmVhZGVyL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9hcHByZWFkZXIvYXBwcmVhZGVyLmM6CgkqIGV4YW1wbGVzL2NvbnRyb2xsZXIvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6CgkqIGV4YW1wbGVzL2N1dHRlci8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy9jdXR0ZXIvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL2N1dHRlci9jdXR0ZXIuYzoKCSogZXhhbXBsZXMvY3V0dGVyL2N1dHRlci5oOgoJKiBleGFtcGxlcy9ldmVudHMvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL2V2ZW50cy9zZWVrLmM6CgkqIGV4YW1wbGVzL2hlbGxvd29ybGQvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvaGVsbG93b3JsZC9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvaGVsbG93b3JsZC9oZWxsb3dvcmxkLmM6CgkqIGV4YW1wbGVzL2hlbGxvd29ybGQyLy5naXRpZ25vcmU6CgkqIGV4YW1wbGVzL2hlbGxvd29ybGQyL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9oZWxsb3dvcmxkMi9oZWxsb3dvcmxkMi5jOgoJKiBleGFtcGxlcy9sYXVuY2gvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvbGF1bmNoL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9sYXVuY2gvbXAzcGFyc2VsYXVuY2guYzoKCSogZXhhbXBsZXMvbGF1bmNoL21wM3BsYXk6CgkqIGV4YW1wbGVzL21hbnVhbC8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy9tYW51YWwvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL21hbnVhbC9leHRyYWN0LnBsOgoJKiBleGFtcGxlcy9tZXRhZGF0YS9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvbWV0YWRhdGEvcmVhZC1tZXRhZGF0YS5jOgoJKiBleGFtcGxlcy9taXhlci8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy9taXhlci9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvbWl4ZXIvbWl4ZXIuYzoKCSogZXhhbXBsZXMvbWl4ZXIvbWl4ZXIuaDoKCSogZXhhbXBsZXMvcGluZ3BvbmcvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvcGluZ3BvbmcvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL3Bpbmdwb25nL3Bpbmdwb25nLmM6CgkqIGV4YW1wbGVzL3BsdWdpbnMvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvcGx1Z2lucy9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvcGx1Z2lucy9leGFtcGxlLmM6CgkqIGV4YW1wbGVzL3BsdWdpbnMvZXhhbXBsZS5oOgoJKiBleGFtcGxlcy9wd2cvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvcHdnL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9wd2cvZXh0cmFjdC5wbDoKCSogZXhhbXBsZXMvcXVldWUvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvcXVldWUvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL3F1ZXVlL3F1ZXVlLmM6CgkqIGV4YW1wbGVzL3F1ZXVlMi8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy9xdWV1ZTIvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL3F1ZXVlMi9xdWV1ZTIuYzoKCSogZXhhbXBsZXMvcXVldWUzLy5naXRpZ25vcmU6CgkqIGV4YW1wbGVzL3F1ZXVlMy9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvcXVldWUzL3F1ZXVlMy5jOgoJKiBleGFtcGxlcy9xdWV1ZTQvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvcXVldWU0L01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9xdWV1ZTQvcXVldWU0LmM6CgkqIGV4YW1wbGVzL3JldGFnLy5naXRpZ25vcmU6CgkqIGV4YW1wbGVzL3JldGFnL01ha2VmaWxlLmFtOgoJKiBleGFtcGxlcy9yZXRhZy9yZXRhZy5jOgoJKiBleGFtcGxlcy9yZXRhZy90cmFuc2NvZGUuYzoKCSogZXhhbXBsZXMvdGhyZWFkLy5naXRpZ25vcmU6CgkqIGV4YW1wbGVzL3RocmVhZC9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvdGhyZWFkL3RocmVhZC5jOgoJKiBleGFtcGxlcy90eXBlZmluZC8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy90eXBlZmluZC9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvdHlwZWZpbmQvdHlwZWZpbmQuYzoKCSogZXhhbXBsZXMveG1sLy5naXRpZ25vcmU6CgkqIGV4YW1wbGVzL3htbC9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMveG1sL2NyZWF0ZXhtbC5jOgoJKiBleGFtcGxlcy94bWwvcnVueG1sLmM6CgkqIHRlc3RzL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlLy5naXRpZ25vcmU6CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL1J1bGVzOgoJKiB0ZXN0c3VpdGUvY2Fwcy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvY2Fwcy9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2NhcHMvYXBwX2ZpeGF0ZS5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9hdWRpb3NjYWxlLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL2NhcHMuYzoKCSogdGVzdHN1aXRlL2NhcHMvY2Fwcy5oOgoJKiB0ZXN0c3VpdGUvY2Fwcy9jYXBzX3N0cmluZ3M6CgkqIHRlc3RzdWl0ZS9jYXBzL2NvbXBhdGliaWxpdHkuYzoKCSogdGVzdHN1aXRlL2NhcHMvZGVzZXJpYWxpemUuYzoKCSogdGVzdHN1aXRlL2NhcHMvZW51bWNhcHMuYzoKCSogdGVzdHN1aXRlL2NhcHMvZXJhdG9zdGhlbmVzLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL2ZpbHRlcmNhcHMuYzoKCSogdGVzdHN1aXRlL2NhcHMvZml4ZWQuYzoKCSogdGVzdHN1aXRlL2NhcHMvZnJhY3Rpb24tY29udmVydC5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9mcmFjdGlvbi1tdWx0aXBseS1hbmQtemVyby5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9pbnRlcnNlY3QyLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL2ludGVyc2VjdGlvbi5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9ub3JtYWxpc2F0aW9uLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL3JhbmRvbS5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9yZW5lZ290aWF0ZS5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9zZXRzLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL3NpbXBsaWZ5LmM6CgkqIHRlc3RzdWl0ZS9jYXBzL3N0cmluZy1jb252ZXJzaW9ucy5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9zdHJ1Y3R1cmUuYzoKCSogdGVzdHN1aXRlL2NhcHMvc3VidHJhY3QuYzoKCSogdGVzdHN1aXRlL2NhcHMvdW5pb24uYzoKCSogdGVzdHN1aXRlL2RlYnVnLy5naXRpZ25vcmU6CgkqIHRlc3RzdWl0ZS9kZWJ1Zy9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2RlYnVnL2NhdGVnb3J5LmM6CgkqIHRlc3RzdWl0ZS9kZWJ1Zy9jb21tYW5kbGluZS5jOgoJKiB0ZXN0c3VpdGUvZGVidWcvZ2xvYmFsLmM6CgkqIHRlc3RzdWl0ZS9kZWJ1Zy9vdXRwdXQuYzoKCSogdGVzdHN1aXRlL2RlYnVnL3ByaW50Zl9leHRlbnNpb24uYzoKCSogdGVzdHN1aXRlL2Rsb3Blbi8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvZGxvcGVuL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvZGxvcGVuL2Rsb3Blbl9nc3QuYzoKCSogdGVzdHN1aXRlL2Rsb3Blbi9sb2FkZ3N0LmM6CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9nc3QtaW5zcGVjdC1jaGVjay5pbjoKCSogdGVzdHN1aXRlL2VsZW1lbnRzL3N0cnVjdF9pMzg2Lmg6CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9zdHJ1Y3Rfc2l6ZS5jOgoJKiB0ZXN0c3VpdGUvaW5kZXhlcnMvLmdpdGlnbm9yZToKCSogdGVzdHN1aXRlL2luZGV4ZXJzL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvaW5kZXhlcnMvY2FjaGUxLmM6CgkqIHRlc3RzdWl0ZS9pbmRleGVycy9pbmRleGR1bXAuYzoKCSogdGVzdHN1aXRlL3BhcnNlLy5naXRpZ25vcmU6CgkqIHRlc3RzdWl0ZS9wYXJzZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL3BhcnNlL3BhcnNlMS5jOgoJKiB0ZXN0c3VpdGUvcGFyc2UvcGFyc2UyLmM6CgkqIHRlc3RzdWl0ZS9wbHVnaW4vLmdpdGlnbm9yZToKCSogdGVzdHN1aXRlL3BsdWdpbi9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL3BsdWdpbi9SRUFETUU6CgkqIHRlc3RzdWl0ZS9wbHVnaW4vZHluYW1pYy5jOgoJKiB0ZXN0c3VpdGUvcGx1Z2luL2xpbmtlZC5jOgoJKiB0ZXN0c3VpdGUvcGx1Z2luL2xvYWRpbmcuYzoKCSogdGVzdHN1aXRlL3BsdWdpbi9yZWdpc3RyeS5jOgoJKiB0ZXN0c3VpdGUvcGx1Z2luL3N0YXRpYy5jOgoJKiB0ZXN0c3VpdGUvcGx1Z2luL3N0YXRpYzIuYzoKCSogdGVzdHN1aXRlL3BsdWdpbi90ZXN0cGx1Z2luLmM6CgkqIHRlc3RzdWl0ZS9wbHVnaW4vdGVzdHBsdWdpbjIuYzoKCSogdGVzdHN1aXRlL3BsdWdpbi90ZXN0cGx1Z2luMl9zLmM6CgkqIHRlc3RzdWl0ZS9wbHVnaW4vdGVzdHBsdWdpbl9zLmM6CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9iaW4uYzoKCSogdGVzdHN1aXRlL3JlZmNvdW50aW5nL2VsZW1lbnQuYzoKCSogdGVzdHN1aXRlL3JlZmNvdW50aW5nL2VsZW1lbnRfcGFkLmM6CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9tYWlubG9vcC5jOgoJKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvbWVtLmM6CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9tZW0uaDoKCSogdGVzdHN1aXRlL3JlZmNvdW50aW5nL29iamVjdC5jOgoJKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvcGFkLmM6CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9zY2hlZC5jOgoJKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvdGhyZWFkLmM6CgkqIHRlc3RzdWl0ZS9zdGF0ZXMvLmdpdGlnbm9yZToKCSogdGVzdHN1aXRlL3N0YXRlcy9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL3N0YXRlcy9iaW4uYzoKCSogdGVzdHN1aXRlL3N0YXRlcy9sb2NrZWQuYzoKCSogdGVzdHN1aXRlL3N0YXRlcy9wYXJlbnQuYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvLmdpdGlnbm9yZToKCSogdGVzdHN1aXRlL3RocmVhZHMvMTU5NTY2LmM6CgkqIHRlc3RzdWl0ZS90aHJlYWRzLzE1OTg1Mi5jOgoJKiB0ZXN0c3VpdGUvdGhyZWFkcy9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL3RocmVhZHMvcXVldWUuYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvc2lnbmFscy5jOgoJKiB0ZXN0c3VpdGUvdGhyZWFkcy9zdGF0aWNyZWMuYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvdGhyZWFkLmM6CgkqIHRlc3RzdWl0ZS90aHJlYWRzL3RocmVhZGIuYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvdGhyZWFkYy5jOgoJKiB0ZXN0c3VpdGUvdGhyZWFkcy90aHJlYWRkLmM6CgkqIHRlc3RzdWl0ZS90aHJlYWRzL3RocmVhZGUuYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvdGhyZWFkZi5jOgoJKiB0ZXN0c3VpdGUvdGhyZWFkcy90aHJlYWRnLmM6CgkqIHRlc3RzdWl0ZS90aHJlYWRzL3RocmVhZGguYzoKCSogdGVzdHN1aXRlL3RocmVhZHMvdGhyZWFkaS5jOgoJICBtb3ZlIGFsbCBvZiB0aGVzZSB1bmRlciB0ZXN0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbW92ZSBhbGwgb2YgdGhlc2UgdW5kZXIgdGVzdHMKCjIwMDUtMTEtMzAgMTU6Mzc6MzYgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICB1cGRhdGUgYWZ0ZXIgdGhvbWFzJ3MgQ1ZTIHN1cmdlcnkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBhZnRlciB0aG9tYXMncyBDVlMgc3VyZ2VyeQoKMjAwNS0xMS0zMCAxNTozNDozNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9iZW5jaG1hcmtzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2JlbmNobWFya3MvTWFrZWZpbGUuYW06CgkgIGFkZCBNYWtlZmlsZS5hbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIE1ha2VmaWxlLmFtCgoyMDA1LTExLTMwIDE1OjI5OjA1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGZpeCBkaXN0Y2hlY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIHRlc3RzL01ha2VmaWxlLmFtOgoJICBmaXggZGlzdGNoZWNrCgoyMDA1LTExLTMwIDE1OjIwOjI5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2Fwcy9kZXNlcmlhbGl6ZS5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NhcHMvaW50ZXJzZWN0aW9uLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2Fwcy91bmlvbi5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9kZXNlcmlhbGl6ZS5jOgoJKiB0ZXN0c3VpdGUvY2Fwcy9pbnRlcnNlY3Rpb24uYzoKCSogdGVzdHN1aXRlL2NhcHMvdW5pb24uYzoKCSAgY29tcGlsZSB3YXJuaW5nIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjb21waWxlIHdhcm5pbmcgZml4ZXMKCjIwMDUtMTEtMzAgMTM6Mjg6MTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy9nc3QtY29tcHByZXAtY2hlY2suaW46CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2VsZW1lbnRzL2dzdC1jb21wcHJlcC1jaGVjay5pbjoKCSAgcmVtb3ZlIGNvbXBwcmVwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgY29tcHByZXAKCjIwMDUtMTEtMzAgMTM6MjU6MDUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNvbmZpZ3VyZS5hYyAoR1NUX1BLR19ERVBTKTogVXNlIGdtb2R1bGUtbm8tZXhwb3J0LTIuMC5wYywgYXZhaWxhYmxlIHNpbmNlIEdMaWIgMi4yLiBGaXhlcyAjMzE4MDMxLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0zMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjb25maWd1cmUuYWMgKEdTVF9QS0dfREVQUyk6IFVzZSBnbW9kdWxlLW5vLWV4cG9ydC0yLjAucGMsCgkgIGF2YWlsYWJsZSBzaW5jZSBHTGliIDIuMi4gRml4ZXMgIzMxODAzMS4KCjIwMDUtMTEtMzAgMTM6MDg6MDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgRmlyc3QgcGFzcyBhdCBjbGVhbmluZyB1cCB0ZXN0cy8gZGlyIGJlZm9yZSBtb3ZpbmcgdGhlIHJlc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIHRlc3RzL2JlbmNoLWNvbXBsZXhpdHkuc2NtOgoJICAqIHRlc3RzL2JlbmNoLW1hc3NfZWxlbWVudHMuc2NtOgoJICAqIHRlc3RzL2NvbXBsZXhpdHkuYzoKCSAgKiB0ZXN0cy9jb21wbGV4aXR5LmdudXBsb3Q6CgkgICogdGVzdHMvaW5zdGFudGlhdGUvLmN2c2lnbm9yZToKCSAgKiB0ZXN0cy9pbnN0YW50aWF0ZS9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9pbnN0YW50aWF0ZS9jYXBzLmM6CgkgICogdGVzdHMvbWFzc19lbGVtZW50cy5jOgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2stdXRpbHMuc2NtOgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtOgoJICAqIHRlc3RzL3Bsb3QtZGF0YToKCSAgRmlyc3QgcGFzcyBhdCBjbGVhbmluZyB1cCB0ZXN0cy8gZGlyIGJlZm9yZSBtb3ZpbmcgdGhlIHJlc3QKCSAgQ29tYmluZWQgd2l0aCBDVlMgc3VyZ2VyeQoKMjAwNS0xMS0zMCAxMzowNzoxNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBtb3ZlIGluY2x1ZGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3ZlIGluY2x1ZGVzCgoyMDA1LTExLTMwIDExOjU1OjMyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIFJFQURNRToKCSAgcmVtb3ZlIG5vcndlZ2lhbmlzbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIG5vcndlZ2lhbmlzbQoKMjAwNS0xMS0zMCAxMDo1MDo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNYWtlZmlsZS5hbToKCSAgbWFrZSBub3QgaGF2aW5nIGNoZWNrIG5vbi1mYXRhbCBmb3IgZXh0cmEgdGFyZ2V0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFrZSBub3QgaGF2aW5nIGNoZWNrIG5vbi1mYXRhbCBmb3IgZXh0cmEgdGFyZ2V0cwoKMjAwNS0xMS0zMCAxMDoxNTowOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBwby9QT1RGSUxFUy5pbjogcXVldWUgaGFzIG1vdmVkLCB1cGRhdGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcG8vUE9URklMRVMuaW46CgkgIHF1ZXVlIGhhcyBtb3ZlZCwgdXBkYXRlCgoyMDA1LTExLTMwIDEwOjEzOjU0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3R2YWx1ZS5jOgoJKiB3aW4zMi92czYvZ3JhbW1hci5kc3A6CgkqIHdpbjMyL3ZzNi9nc3RfaW5zcGVjdC5kc3A6CgkqIHdpbjMyL3ZzNi9nc3RfbGF1bmNoLmRzcDoKCSogd2luMzIvdnM2L2xpYmdzdGJhc2UuZHNwOgoJKiB3aW4zMi92czYvbGliZ3N0ZWxlbWVudHMuZHNwOgoJKiB3aW4zMi92czYvbGliZ3N0cmVhbWVyLmRzcDoKCSAgYWRkIHNvbWUgZXhwbGljaXQgY2FzdHMgdXBkYXRlIGRzcCBmaWxlczsgYWxzbyBpbnN0YWxscyB0aGUgZGVidWcgYnVpbGQgaW4gXGdzdHJlYW1lclxkZWJ1ZyB0byBzZXBhcmF0ZSBpdCBmcm9tIHRoZSBuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgc29tZSBleHBsaWNpdCBjYXN0cwoJICB1cGRhdGUgZHNwIGZpbGVzOyBhbHNvIGluc3RhbGxzIHRoZSBkZWJ1ZyBidWlsZCBpbiBcZ3N0cmVhbWVyXGRlYnVnIHRvIHNlcGFyYXRlIGl0IGZyb20gdGhlIG5vbi1kZWJ1ZyBidWlsZAoKMjAwNS0xMS0zMCAxMDowMzo0NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoKMjAwNS0xMS0zMCAwOTo1OTowNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiByZW1vdmUgZG91YmxlIGVudHJpZXMgZnJvbSB0aGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICByZW1vdmUgZG91YmxlIGVudHJpZXMgZnJvbSB0aGUgZG9jcwoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RpbmZvLmM6IChfZ3N0X2RlYnVnX2luaXQpOgoJICByZW1vdmUgdGhlIFRIUkVBRCBkZWJ1ZyBjYXRlZ29yeQoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0cXVldWUuYzoKCSAgKiBnc3QvZ3N0cXVldWUuaDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2dldF90eXBlKSwKCSAgKGdzdF9xdWV1ZV9pbml0KSwgKGdzdF9xdWV1ZV9maW5hbGl6ZSksIChnc3RfcXVldWVfY2hhbmdlX3N0YXRlKToKCSAgY29tcGxldGVseSBtb3ZlIHF1ZXVlIGFuZCBmaXggdXAgZGVidWdnaW5nIGNhdGVnb3JpZXMKCjIwMDUtMTEtMzAgMDk6Mzg6NDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiBtYWtlIGluaXRpYWxpemF0aW9uIHBvcnRhYmxlLCB1c2luZyBMTCBpcyBub3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCk6CgkgIG1ha2UgaW5pdGlhbGl6YXRpb24gcG9ydGFibGUsIHVzaW5nIExMIGlzIG5vdAoKMjAwNS0xMS0zMCAwOTozNjoxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoKMjAwNS0xMS0zMCAwOTozMDo1MCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1vcmUgc3ltYm9scyB0byBkZWYgZmlsZQoKMjAwNS0xMS0zMCAwOToyNzo0NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB3aW4zMi9jb21tb24vZ3N0Y29uZmlnLmg6IGFkZCBsYXJnZSBwYWRkaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2NvbW1vbi9nc3Rjb25maWcuaDoKCSAgYWRkIGxhcmdlIHBhZGRpbmcKCjIwMDUtMTEtMzAgMDk6MjI6NDUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6IHJlbmFtZSBzeW1ib2xzOyBzb3J0IGJhc2Ugc2VjdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgcmVuYW1lIHN5bWJvbHM7IHNvcnQgYmFzZSBzZWN0aW9uCgoyMDA1LTExLTMwIDA5OjE4OjE1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RjbG9jay5jOiByZW1vdmUgY3JhY2sgbm9uLXBvcnRhYmxlIGhhbmRyb2xsZWQgREVCVUcgbWFjcm8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMzAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogZ3N0L2dzdGNsb2NrLmM6IChkb19saW5lYXJfcmVncmVzc2lvbik6CgkgIHJlbW92ZSBjcmFjayBub24tcG9ydGFibGUgaGFuZHJvbGxlZCBERUJVRyBtYWNybwoKMjAwNS0xMS0zMCAwOToxMjo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvcmFuZG9tL3JlbGVhc2U6CgkqIHdpbjMyL2NvbW1vbi9nc3RlbnVtdHlwZXMuYzoKCSogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5oOgoJKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICB1cGRhdGUgdmlzdWFsIHN0dWRpbyBnZW5lcmF0ZWQgZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSB2aXN1YWwgc3R1ZGlvIGdlbmVyYXRlZCBmaWxlcwoKMjAwNS0xMS0zMCAwODo1Njo1OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB3aW4zMi92czYvOiB1cGRhdGUgcHJvamVjdCBmaWxlcyBmb3IgbmV3IGxvY2F0aW9ucwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi92czYvbGliZ3N0YmFzZS5kc3A6CgkgICogd2luMzIvdnM2L2xpYmdzdGVsZW1lbnRzLmRzcDoKCSAgdXBkYXRlIHByb2plY3QgZmlsZXMgZm9yIG5ldyBsb2NhdGlvbnMKCjIwMDUtMTEtMzAgMDg6NTI6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgTWFrZWZpbGUuYW06IHJlbW92ZSBzb21lIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE1ha2VmaWxlLmFtOgoJICByZW1vdmUgc29tZSBmaWxlcwoJICAqIFJFQURNRToKCSAgcmVpbnN0YXRlIGFuZCB1cGRhdGUKCSAgKiBERVZFTDoKCSAgKiBSRVFVSVJFTUVOVFM6CgkgIHJlbW92ZWQKCSAgKiBMSUNFTlNFOgoJICAqIGRvY3MvcmFuZG9tL0xJQ0VOU0U6CgkgIG1vdmVkIHRvIHJhbmRvbQoKMjAwNS0xMS0zMCAwODozNjo0NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBSRUFETUU6CgkgIHB1dCB0aGUgUkVBRE1FIGJhY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHB1dCB0aGUgUkVBRE1FIGJhY2sKCjIwMDUtMTEtMzAgMDg6MzM6MzMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogVE9ETzoKCSAgY2xlYW4gdXAgVE9ETwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY2xlYW4gdXAgVE9ETwoKMjAwNS0xMS0zMCAwODoyOToxNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBsaWJzL2V4dC9NYWtlZmlsZS5hbToKCSAgcmVtb3ZpbmcgZXh0LCB3YXMgbm90IHVzZWQgYW55bW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZpbmcgZXh0LCB3YXMgbm90IHVzZWQgYW55bW9yZQoKMjAwNS0xMS0yOSAyMzo1NjoyMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC86IEZpeCBtZW1vcnkgbGVhayBpbiBHc3RUeXBlRmluZEZhY3RvcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0eXBlZmluZC5jOiAoZ3N0X3R5cGVfZmluZF9yZWdpc3Rlcik6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmg6CgkgICogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOiAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2luaXQpLAoJICAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2Rpc3Bvc2UpOgoJICAqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuaDoKCSAgRml4IG1lbW9yeSBsZWFrIGluIEdzdFR5cGVGaW5kRmFjdG9yeS4KCjIwMDUtMTEtMjkgMjA6MTY6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICB1cGRhdGVkIHRyYW5zbGF0aW9ucwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlZCB0cmFuc2xhdGlvbnMKCjIwMDUtMTEtMjkgMTk6NDc6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgbW92ZSBxdWV1ZSBmcm9tIGNvcmUgdG8gdGhlIGVsZW1lbnRzIHBsdWdpbiDDpwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkgICogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBtb3ZlIHF1ZXVlIGZyb20gY29yZSB0byB0aGUgZWxlbWVudHMgcGx1Z2luCgkgIMOnCgoyMDA1LTExLTI5IDE5OjQ0OjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFzZS11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1uZXQtdW5pbnN0YWxsZWQucGMuaW46CgkgIHVwZGF0ZSB1bmluc3RhbGxlZCBwYyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHVuaW5zdGFsbGVkIHBjIGZpbGVzCgoyMDA1LTExLTI5IDE5OjM3OjQ5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBsaWJzL2dzdC9iYXNlLzogZW4tTEFSR0UgdGhlIHBhZGRpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDogZW4tTEFSR0UgdGhlIHBhZGRpbmcuCgkgICogZ3N0L2dzdGNvbmZpZy5oLmluIChHU1RfUEFERElOR19MQVJHRSk6IE5ldyBkZWZpbmUsIHRoZSBudW1iZXIKCSAgb2YgcG9pbnRlcnMgYnkgd2hpY2ggdG8gcGFkIHZlcnkgZXh0ZW5zaWJsZSBiYXNlIGNsYXNzZXMgKGxpa2UgdGhlCgkgIG9uZXMgaW4gbGlicy9nc3QvYmFzZSkuCgoyMDA1LTExLTI5IDE5OjM0OjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvOiBtb3ZpbmcgZG9jdW1lbnRhdGlvbiBmcm9tIGNvcmUgdG8gbGliCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgIG1vdmluZyBkb2N1bWVudGF0aW9uIGZyb20gY29yZSB0byBsaWIKCjIwMDUtMTEtMjkgMTk6MTI6MzAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZ3N0L01ha2VmaWxlLmFtOgoJKiBnc3QvYmFzZS8uZ2l0aWdub3JlOgoJKiBnc3QvYmFzZS9NYWtlZmlsZS5hbToKCSogZ3N0L2Jhc2UvUkVBRE1FOgoJKiBnc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJKiBnc3QvYmFzZS9nc3RwdXNoc3JjLmM6CgkqIGdzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSogZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJKiBnc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSogZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkqIGdzdC9uZXQvTWFrZWZpbGUuYW06CgkqIGdzdC9uZXQvZ3N0bmV0Lmg6CgkqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5oOgoJKiBnc3QvbmV0L2dzdG5ldHRpbWVwYWNrZXQuYzoKCSogZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0Lmg6CgkqIGdzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkqIGdzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmg6CgkqIGxpYnMvZ3N0L01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9iYXNlL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIHBsdWdpbnMvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHBvL1BPVEZJTEVTLmluOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgQ1ZTIHN1cmdlcnkgKyBzdXBwb3J0IHRvIG1vdmUgYmFzZSwgY2hlY2ssIGFuZCBuZXQgb3V0IG9mIGdzdCBhbmQgaW50byBsaWJzL2dzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ1ZTIHN1cmdlcnkgKyBzdXBwb3J0IHRvIG1vdmUgYmFzZSwgY2hlY2ssIGFuZCBuZXQgb3V0IG9mIGdzdAoJICBhbmQgaW50byBsaWJzL2dzdAoKMjAwNS0xMS0yOSAxODo1Nzo1OSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGV2ZW50LmggKHN0cnVjdCBfR3N0RXZlbnQpOiBPbmx5IG9uZSBwb2ludGVyIG9mIHBhZGRpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RldmVudC5oIChzdHJ1Y3QgX0dzdEV2ZW50KTogT25seSBvbmUgcG9pbnRlciBvZiBwYWRkaW5nLgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaCAoc3RydWN0IF9Hc3RTdHJ1Y3R1cmUpOiBPbmx5IG9uZSBwb2ludGVyIG9mCgkgIHBhZGRpbmcuCgkgICogZ3N0L2dzdHF1ZXJ5LmggKHN0cnVjdCBfR3N0UXVlcnkpOiBPbmx5IG9uZSBwb2ludGVyIG9mIHBhZGRpbmcuCgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDogUmVtb3ZlIGEgY29tbWVudCBpbiBQbHVnaW5GZWF0dXJlLgoJICAqIGdzdC9nc3RwbHVnaW4uaCAoc3RydWN0IF9Hc3RQbHVnaW5DbGFzcyk6IEFkZCBzb21lIHBhZGRpbmcuCgkgICogZ3N0L2dzdG9iamVjdC5oOiAoc3RydWN0IF9Hc3RPYmplY3QpOiBPbmx5IG9uZSBwb2ludGVyIG9mCgkgIHBhZGRpbmc7IHJlZHVjZXMgb2JqZWN0IHNpemUgYnkgYWJvdXQgMzAlLiBXZSBkb24ndCBleHBlY3QKCSAgYW55dGhpbmcgZWxzZSB0byBnbyBpbnRvIGdzdG9iamVjdC4KCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oIChzdHJ1Y3QgX0dzdE1pbmlPYmplY3QpCgkgIChzdHJ1Y3QgX0dzdE1pbmlPYmplY3RDbGFzcyk6IE9ubHkgb25lIHBvaW50ZXIgb2YgcGFkZGluZzsgdGhlCgkgIHBheWxvYWQgaXMgb25seSBhIHBvaW50ZXIgYW5kIHR3byBpbnRzIGFueXdheS4gRm9yIHRoZSBjbGFzcyB0aGVyZQoJICBhcmUgb25seSB0d28gbWV0aG9kcyBhcyB3ZWxsLgoJICAqIGdzdC9nc3RlbGVtZW50LmggKHN0cnVjdCBfR3N0RWxlbWVudENsYXNzKTogUmVtb3ZlZAoJICB0aGUgc3RhdGVfY2hhbmdlZCBzaWduYWwgY2FsbGJhY2ssIGl0IGlzIG5vdCB1c2VkLgoKMjAwNS0xMS0yOSAxODo0OToxOSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogY29tcG9uZW50cy9ib25vYm8tZ3N0bWVkaWFwbGF5Ly5naXRpZ25vcmU6CgkqIGNvbXBvbmVudHMvYm9ub2JvLWdzdG1lZGlhcGxheS9NYWtlZmlsZS5hbToKCSogY29tcG9uZW50cy9ib25vYm8tZ3N0bWVkaWFwbGF5L2Jvbm9iby1nc3RtZWRpYXBsYXktdWkueG1sOgoJKiBjb21wb25lbnRzL2Jvbm9iby1nc3RtZWRpYXBsYXkvYm9ub2JvLWdzdG1lZGlhcGxheS5jOgoJKiBjb21wb25lbnRzL2Jvbm9iby1nc3RtZWRpYXBsYXkvZ3N0bWVkaWFwbGF5Lm9hZmluZm86CgkqIGNvbXBvbmVudHMvYm9ub2JvLW1lZGlhL01ha2VmaWxlLmFtOgoJKiBjb21wb25lbnRzL2Jvbm9iby1tZWRpYS9ib25vYm8tbWVkaWEtZ3N0cmVhbWVyLWZhY3RvcnkuYzoKCSogY29tcG9uZW50cy9ib25vYm8tbWVkaWEvYm9ub2JvLW1lZGlhLWdzdHJlYW1lci5nb2I6CgkqIGNvbXBvbmVudHMvYm9ub2JvLW1lZGlhL2Jvbm9iby1tZWRpYS1nc3RyZWFtZXIub2FmaW5mbzoKCSogY29tcG9uZW50cy9ib25vYm8tbWVkaWEvYm9ub2JvLW1lZGlhLWdzdHJlYW1lcnZpZGVvLmdvYjoKCSAgd2hhY2sgYSBtb2xlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGFjayBhIG1vbGUKCjIwMDUtMTEtMjkgMTg6Mzg6NDYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vUE9URklMRVMuaW46CgkgIHRoZXNlIGZpbGVzIHdlcmUgbW92ZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHRoZXNlIGZpbGVzIHdlcmUgbW92ZWQKCjIwMDUtMTEtMjkgMTg6MjE6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOiBmaXggaW5jbHVkZXMsIHRob3VnaCB0aGV5IGFyZSBhIGxpdHRsZSBkaW5reQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgIGZpeCBpbmNsdWRlcywgdGhvdWdoIHRoZXkgYXJlIGEgbGl0dGxlIGRpbmt5CgoyMDA1LTExLTI5IDE4OjE0OjM1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL01ha2VmaWxlLmFtOiBsb29rIGluIHRoZSByaWdodCBwbGFjZSBmb3IgZWxlbWVudHMsIGEgbG90IG1vcmUgY2hhbmNlIG9mIHN1Y2Nlc3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIGxvb2sgaW4gdGhlIHJpZ2h0IHBsYWNlIGZvciBlbGVtZW50cywgYSBsb3QgbW9yZSBjaGFuY2Ugb2YKCSAgc3VjY2VzcwoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgcmVtb3ZlIGluZGV4ZXJzIGFuZCBlbGVtZW50cyBzdWJkaXJzCgkgICogcGx1Z2lucy9NYWtlZmlsZS5hbToKCSAgbWFrZSBpbmRleGVycyBjb25kaXRpb25hbAoKMjAwNS0xMS0yOSAxODowODoxNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwbHVnaW5zL01ha2VmaWxlLmFtOgoJICBhZGQgbWlzc2luZyBNYWtlZmlsZS5hbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1pc3NpbmcgTWFrZWZpbGUuYW0KCjIwMDUtMTEtMjkgMTg6MDQ6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgIGZpeCBkb2MgYnVpbGQgZm9yIHN0dWZmIG1vdmVkIGFyb3VuZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGRvYyBidWlsZCBmb3Igc3R1ZmYgbW92ZWQgYXJvdW5kCgoyMDA1LTExLTI5IDE4OjAzOjUyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIGdzdC9lbGVtZW50cy9nc3RidWZmZXJzdG9yZS5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0YnVmZmVyc3RvcmUuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZkc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmRzaW5rLmg6CgkqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5Lmg6CgkqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSogZ3N0L2luZGV4ZXJzLy5naXRpZ25vcmU6CgkqIGdzdC9pbmRleGVycy9NYWtlZmlsZS5hbToKCSogZ3N0L2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOgoJKiBnc3QvaW5kZXhlcnMvZ3N0aW5kZXhlcnMuYzoKCSogZ3N0L2luZGV4ZXJzL2dzdG1lbWluZGV4LmM6CgkgIHJlbW92ZSBtb3ZlZCBkaXJzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgbW92ZWQgZGlycwoKMjAwNS0xMS0yOSAxODowMjo0NSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvcmVnaXN0cmllcy8uZ2l0aWdub3JlOgoJKiBnc3Qvc2NoZWR1bGVycy8uZ2l0aWdub3JlOgoJICByZW1vdmUgZW1wdHkgZGlycwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGVtcHR5IGRpcnMKCjIwMDUtMTEtMjkgMTg6MDA6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG8gQ1ZTIHN1cmdlcnkgYW5kIHJlbGF0ZWQgYnVpbGQgZml4ZXJ5IHRvIG1vdmUgZWxlbWVudHMgYW5kIGluZGV4ZXJzIGluIGEgbmV3IGdzdHJlYW1lci9wbHVnaW5zIGRpcmVjdG9yeSwgb3V0IG9mIHRoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE1ha2VmaWxlLmFtOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJICAqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkgICogcGx1Z2lucy9pbmRleGVycy9NYWtlZmlsZS5hbToKCSAgZG8gQ1ZTIHN1cmdlcnkgYW5kIHJlbGF0ZWQgYnVpbGQgZml4ZXJ5IHRvIG1vdmUgZWxlbWVudHMKCSAgYW5kIGluZGV4ZXJzIGluIGEgbmV3IGdzdHJlYW1lci9wbHVnaW5zIGRpcmVjdG9yeSwgb3V0IG9mIHRoZQoJICBnc3QvIGRpcmVjdG9yeQoKMjAwNS0xMS0yOSAxNzo0NzowNiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgUmVuYW1lIGdzdG5ldC10ZW1wbmFtZSB0byBnc3RuZXQuIEZpeGVzICMzMjIyNTcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItbmV0LXVuaW5zdGFsbGVkLnBjLmluOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItbmV0LnBjLmluOgoJICAqIGdzdC9uZXQvTWFrZWZpbGUuYW06IFJlbmFtZSBnc3RuZXQtdGVtcG5hbWUgdG8gZ3N0bmV0LiBGaXhlcwoJICAjMzIyMjU3LgoKMjAwNS0xMS0yOSAxNzozNTowMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWdub3JlIG1vcmUKCjIwMDUtMTEtMjkgMTc6MzM6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHJlbW92ZSBzb21lIG1vcmUgY29tcGxldGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBzb21lIG1vcmUgY29tcGxldGUKCjIwMDUtMTEtMjkgMTc6MzI6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdG9vbHMvOiByZW1vdmluZyAtY29tcHByZXAgYW5kIC1jb21wbGV0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9nc3QtY29tcGxldGUuMS5pbjoKCSAgKiB0b29scy9nc3QtY29tcGxldGUuYzoKCSAgKiB0b29scy9nc3QtY29tcHByZXAuMS5pbjoKCSAgKiB0b29scy9nc3QtY29tcHByZXAuYzoKCSAgcmVtb3ZpbmcgLWNvbXBwcmVwIGFuZCAtY29tcGxldGUKCjIwMDUtMTEtMjkgMTc6MjM6NTYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdGV2ZW50Lio6IGZpeCAjMzIwNTI5IC0gY2xlYW4gdXAgbmV3X3NlZ21lbnQgQVBJIGFuZCBzdHJ1Y3R1cmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudCksCgkgIChnc3RfZXZlbnRfcGFyc2VfbmV3X3NlZ21lbnQpOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBmaXggIzMyMDUyOSAtIGNsZWFuIHVwIG5ld19zZWdtZW50IEFQSSBhbmQgc3RydWN0dXJlLgoJICBMZXQncyBob3BlIGV2ZXJ5b25lIHdhcyB1c2luZyB0aGUgbWV0aG9kcywgYW5kIG5vdCB0aGUgc3RydWN0dXJlLgoKMjAwNS0xMS0yOSAxNzoxMzo0NCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFByb3Blcmx5IGhhbmRsZSBub24gR1NUX0ZPUk1BVF9USU1FIHNlZ21lbnQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1bGwpLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBQcm9wZXJseSBoYW5kbGUgbm9uIEdTVF9GT1JNQVRfVElNRSBzZWdtZW50CgkgICogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtX2lwKToKCSAgUHJvcGVybHkgaGFuZGxlIG5vbiBHU1RfRk9STUFUX1RJTUUgc2VnbWVudAoJICAqIGdzdC9nc3RzZWdtZW50LmM6CgkgIFRoaXMgZnVuY3Rpb24gaXMgdmFsaWQgaWYgdGhlIGFjY3VtdWxhdG9yIGlzIDAgYW5kIHRoZSBmb3JtYXQKCSAgaXMgZGlmZmVyZW50IGZyb20gdGhlIHJlcXVlc3RlZCBmb3JtYXQuCgoyMDA1LTExLTI5IDE1OjUwOjUwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IEFkZCBnc3RfcXVlcnlfbmV3X3NlZWtpbmcgYW5kIGdzdF9xdWVyeV9wYXJzZV9zZWVraW5nIHRvIHRoZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGQgZ3N0X3F1ZXJ5X25ld19zZWVraW5nIGFuZCBnc3RfcXVlcnlfcGFyc2Vfc2Vla2luZyB0byB0aGUKCSAgZG9jcy4KCjIwMDUtMTEtMjkgMTU6MTU6MzggKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSogQ2hhbmdlTG9nOgoJICBGaXggY29uZmxpY3QgbWFya2VyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGaXggY29uZmxpY3QgbWFya2VyCgoyMDA1LTExLTI5IDE1OjEyOjIyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogVHJlYXQgYSBwYWQgYWxsb2Mgd2l0aCBuZXcgY2FwcyB0aGUgc2FtZSBhcyBpZiB3ZSB3ZXJlIG5vdCBuZWdvdGlhdGVkLCBpbiBvcmRlciB0byBhbGxvdy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKToKCSAgVHJlYXQgYSBwYWQgYWxsb2Mgd2l0aCBuZXcgY2FwcyB0aGUgc2FtZSBhcyBpZiB3ZSB3ZXJlIG5vdAoJICBuZWdvdGlhdGVkLCBpbiBvcmRlciB0byBhbGxvdyBhIGNoYW5naW5nIHVwc3RyZWFtIG91dHB1dAoJICB0byBwcm9kdWNlIGEgbmV3IGZvcm1hdCBvZiBkYXRhLgoKMjAwNS0xMS0yOSAxNDo0NzowNyArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogVGhlIGV2ZW50IHZpcnR1YWwgbWV0aG9kIGlzIG5vdyBwcm9wZXJseSBpbXBsZW1lbnRlZCwgd2l0aCBhIGRlZmF1bHQgaGFuZGxlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZXZlbnQpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50ZnVuYyk6CgkgIFRoZSBldmVudCB2aXJ0dWFsIG1ldGhvZCBpcyBub3cgcHJvcGVybHkgaW1wbGVtZW50ZWQsIHdpdGggYSBkZWZhdWx0CgkgIGhhbmRsZXIKCSAgU3ViIGNsYXNzZXMgc2hvdWxkIGNhbGwgdGhlIHBhcmVudF9jbGFzcyBldmVudCBtZXRob2QuIFRoZXkgc2hvdWxkCgkgIHJldHVybiBGQUxTRSBpZiB0aGV5IGhhZCBhIHByb2JsZW0gaGFuZGxpbmcgdGhlIGdpdmVuIGV2ZW50LCBvciBkb24ndAoJICB3YW50IEdzdEJhc2VUcmFuc2Zvcm0gdG8gc2VuZCB0aGF0IGV2ZW4gZG93bnN0cmVhbQoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpLAoJICAoZ3N0X2lkZW50aXR5X2luaXQpLCAoZ3N0X2lkZW50aXR5X2V2ZW50KSwKCSAgKGdzdF9pZGVudGl0eV90cmFuc2Zvcm1faXApLCAoZ3N0X2lkZW50aXR5X3NldF9wcm9wZXJ0eSksCgkgIChnc3RfaWRlbnRpdHlfZ2V0X3Byb3BlcnR5KToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgQWRkZWQgdGhlIHNpbmdsZS1zZWdtZW50IGJvb2xlYW4gcHJvcGVydHkuCgkgIElmIHNldCB0byBUUlVFLCBpdCB3aWxsIG91dHB1dCBhIHNpbmdsZSBzZWdtZW50IG9mIGRhdGEsIHN0YXJ0aW5nIGZyb20KCSAgMCwgd2lsbCBlYXQgdXAgYWxsIGluY29taW5nIG5ld3NlZ21lbnQsIGFuZCBtb2RpZnkgdGhlIHRpbWVzdGFtcCBvZiB0aGUKCSAgYnVmZmVycyBhY2NvcmRpbmdseQoKMjAwNS0xMS0yOSAxNDo0Mzo1MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL3JhbmRvbS90aG9tYXN2cy8wLjEwOgoJICBmdXJ0aGVyIHJldmlldwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZnVydGhlciByZXZpZXcKCjIwMDUtMTEtMjkgMTM6MTA6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogRG9uJ3QgcmVmIE5VTEwgdGFyZ2V0IHBhZCAoIzMyMjc1MSkuIEltcHJvdmUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2dldF90YXJnZXQpOgoJICBEb24ndCByZWYgTlVMTCB0YXJnZXQgcGFkICgjMzIyNzUxKS4gSW1wcm92ZSBkb2NzLgoKMjAwNS0xMS0yOSAxMTowNzo1NCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IERvbid0IGNyYXNoIGlmIHdlIGZhaWxlZCB0byBsb2FkIGEgZmVhdHVyZSBmcm9tIGEgcGx1Z2luLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogKGxvYWRfcGx1Z2luKToKCSAgRG9uJ3QgY3Jhc2ggaWYgd2UgZmFpbGVkIHRvIGxvYWQgYSBmZWF0dXJlIGZyb20gYSBwbHVnaW4uCgoyMDA1LTExLTI5IDAwOjUxOjU0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL3Rob21hc3ZzLzAuMTA6CgkgIGFkZCBteSB0b2RvcyBmb3IgMC4xMAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG15IHRvZG9zIGZvciAwLjEwCgoyMDA1LTExLTI4IDIxOjUxOjM3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6IHVzZSBtb3JlIGNoZWNrIEFQSSBhbmQgbGVzcyBHTGliIEFQSQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOiAoc2V0dXBfcGlwZWxpbmUpLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICB1c2UgbW9yZSBjaGVjayBBUEkgYW5kIGxlc3MgR0xpYiBBUEkKCjIwMDUtMTEtMjggMjE6NDg6MTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYzoKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzoKCSAgY29zbWV0aWMgY2hhbmdlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY29zbWV0aWMgY2hhbmdlcwoKMjAwNS0xMS0yOCAxOTo1ODo1NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBNYWtlZmlsZS5hbTogZG9uJ3QgcnVuIGNoZWNrcyBpZiB3ZSBkb24ndCBoYXZlIGNoZWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIE1ha2VmaWxlLmFtOgoJICBkb24ndCBydW4gY2hlY2tzIGlmIHdlIGRvbid0IGhhdmUgY2hlY2sKCSAgKiBjb21tb24vY2hlY2subWFrOgoJICByZW1vdmUgdGhlIHJlZ2lzdHJ5IHdoZW4gcnVubmluZyBtYWtlIHRvcnR1cmUKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICByZW1vdmUgc2Vjb25kIG11bHRpcGx5CgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfbG9vcCk6CgkgIGZpeCBhIGNvbXBpbGUgd2FybmluZyB3aGVuIGRpc2FibGluZyBkZWJ1ZwoKMjAwNS0xMS0yOCAxOTo0MzoyNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0aW5mby5oOiBIZXkhIExldCdzIHByaW50IHRoZSBwYWQgbmFtZSBpZiB0aGUgcG9pbnRlciAhPSBOVUxMIGluc3RlYWQgb2Ygd2hlbiBpdCA9PSBOVUxMIDotKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBIZXkhIExldCdzIHByaW50IHRoZSBwYWQgbmFtZSBpZiB0aGUgcG9pbnRlciAhPSBOVUxMIGluc3RlYWQKCSAgb2Ygd2hlbiBpdCA9PSBOVUxMIDotKQoKMjAwNS0xMS0yOCAxODo0NDoxMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dzdC9nc3R1dGlscy5jOiBVcGRhdGVkIGNoZWNrLCBhZGQgc29tZSBzY2FsaW5nIGFjY3VyYWN5IGNoZWNraW5nIGNvZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R1dGlscy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVcGRhdGVkIGNoZWNrLCBhZGQgc29tZSBzY2FsaW5nIGFjY3VyYWN5IGNoZWNraW5nIGNvZGUuCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9kaXYxMjhfNjQpLAoJICAoZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludDY0KSwgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSksCgkgIChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KToKCSAgRml4IDYgdGltZXMgZmFzdGVyIGRpdmlzaW9uIGNvZGUuIE9wdGltaXplIGZvciBjb21tb24KCSAgMS8xIGFuZCBsZXNzIGNvbW1vbiBYLzEgY2FzZXMuCgoyMDA1LTExLTI4IDE3OjU5OjI1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RjbG9jay5jOgoJICBkb2MgdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jIHVwZGF0ZXMKCjIwMDUtMTEtMjggMTY6MDU6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9nc3QvZ3N0dXRpbHMuYzogTW9yZSBjaGVja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R1dGlscy5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3V0aWxzX3N1aXRlKToKCSAgTW9yZSBjaGVja3MuCgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfZmluYWxpemUpLCAoZ3N0X2Nsb2NrX3NldF9tYXN0ZXIpLAoJICAoZG9fbGluZWFyX3JlZ3Jlc3Npb24pLCAoZ3N0X2Nsb2NrX2FkZF9vYnNlcnZhdGlvbik6CgkgIENsZWFudXBzLgoJICBSZWxlYXNlIGxvY2sgd2hlbiB0aGUgY2xvY2sgY2Fubm90IGJlIHNsYXZlZC4KCSAgQ2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhlIHJlZ3Jlc3Npb24gcmV0dXJuZWQgYW4gaW52YWxpZCBkZW5vbWluYXRvci4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF91dGlsX2RpdjEyOF82NF9pdGVyYXRlKSwKCSAgKGdzdF91dGlsX2RpdjEyOF82NCksIChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50NjQpLAoJICAoZ3N0X3V0aWxfdWludDY0X3NjYWxlKSwgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQpOgoJICBBZGQgcHJvdGVudGlhbGx5IG1vcmUgcGVyZm9ybWFudCBub24taXRlcmF0aXZlIDEyOC82NCBkaXZpZGUgZnVuY3Rpb24KCSAgdGhhdCB1bmZvcnR1bmF0bHkgZG9lcyBub3Qgd29yayB5ZXQuCgkgIFNob3J0Y3V0IHRoZSB0cml2aWFsIDAvWCA9IDAgY2FzZS4KCSAgUmVtb3ZlIHRoZSB3YXJuaW5ncyBvbiBvdmVyZmxvdy4KCjIwMDUtMTEtMjggMTQ6MTg6MjIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHBsdWdpbi5jOiBldmVyeXRoaW5nIGNhdXNpbmcgYSBwbHVnaW4gbm90IHRvIGxvYWQgc2hvdWxkIGJlIGF0IGxlYXN0IGEgV0FSTklORwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX3JlZ2lzdGVyX2Z1bmMpOgoJICBldmVyeXRoaW5nIGNhdXNpbmcgYSBwbHVnaW4gbm90IHRvIGxvYWQgc2hvdWxkIGJlIGF0IGxlYXN0IGEgV0FSTklORwoKMjAwNS0xMS0yOCAxNDowMjo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgbG9nIGNhcHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGxvZyBjYXBzCgoyMDA1LTExLTI4IDE0OjAxOjUyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RlbGVtZW50LmM6CgkgIGZpeCBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggZG9jcwoKMjAwNS0xMS0yOCAxMzoyNToxNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9yYW5kb20vZW5zb25pYy9kcGFyYW1zLnR4dDogc29tZSBUT0RPcyBmb3IgdGhlIG5leHQgZGV2IGN5Y2xlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvZHBhcmFtcy50eHQ6CgkgIHNvbWUgVE9ET3MgZm9yIHRoZSBuZXh0IGRldiBjeWNsZQoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfc2V0X2ludGVycG9sYXRpb25fbW9kZSksCgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9uZXcpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICB1c2UgYmFzZSB0eXBlIHRvIGFzc2lnbiBhY2NjZXNzb3IgZnVuY3Rpb25zCgoyMDA1LTExLTI4IDExOjMxOjMxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL01ha2VmaWxlLmFtOiBPb3BzLCB0aGF0IHNob3VsZCBoYXZlIGJlZW4gdG9wX3NyY2RpcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgT29wcywgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHRvcF9zcmNkaXIKCjIwMDUtMTEtMjggMTA6Mjk6MzcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIGRpc2FibGUgcGlwZWxpbmUgdGVzdCB1bnRpbCBzb21lb25lIGZpeGVzIHRoZSB1bnJlbGlhYmxlIGVycm9ycwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGlzYWJsZSBwaXBlbGluZSB0ZXN0IHVudGlsIHNvbWVvbmUgZml4ZXMgdGhlIHVucmVsaWFibGUgZXJyb3JzCgoyMDA1LTExLTI4IDEwOjA3OjM4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrLzogVXNlIGEgY21kbGluZSBkZWZpbmUgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgYSBmaWxlIHRvIHVzZSBmb3IgdGVzdGluZywgdG8gYXZvaWQgYnJlYWtpbmcgZGlzdGNoZWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9lbGVtZW50cy9mZHNyYy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVc2UgYSBjbWRsaW5lIGRlZmluZSB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiBhIGZpbGUgdG8gdXNlIGZvcgoJICB0ZXN0aW5nLCB0byBhdm9pZCBicmVha2luZyBkaXN0Y2hlY2suCgoyMDA1LTExLTI4IDEwOjA0OjQ1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGZpeGF0ZV92YWx1ZSk6IFVzZSBhcnJheSBmdW5jdGlvbnMgZm9yIGFycmF5cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChmaXhhdGVfdmFsdWUpOiBVc2UgYXJyYXkgZnVuY3Rpb25zIGZvciBhcnJheXMuCgoyMDA1LTExLTI4IDA5OjU1OjE5ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBDbGFyaWZ5IHRoZSBvdXRwdXQgc3RyaW5ncywgbWFrZXMgaXQgZWFzaWVyIHRvIHRyYW5zbGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAobWFpbik6CgkgIENsYXJpZnkgdGhlIG91dHB1dCBzdHJpbmdzLCBtYWtlcyBpdCBlYXNpZXIgdG8gdHJhbnNsYXRlLgoJICBGaXhlcyAjMzIyNjI2CgoyMDA1LTExLTI4IDA4OjIwOjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9NYWtlZmlsZS5hbTogZG9uJ3QgdHJ5IGFuZCBidWlsZCBuZXQgaWYgd2UgZG9uJ3QgZXZlbiBoYXZlIDxzeXMvc29ja2V0Lmg+CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgZG9uJ3QgdHJ5IGFuZCBidWlsZCBuZXQgaWYgd2UgZG9uJ3QgZXZlbiBoYXZlIDxzeXMvc29ja2V0Lmg+CgoyMDA1LTExLTI3IDIyOjUwOjA5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrLzogQWRkIHRlc3RzIGZvciBmZHNyYyBzZWVrYWJpbGl0eQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9lbGVtZW50cy9mZHNyYy5jOiAoZXZlbnRfZnVuYyksIChzZXR1cF9mZHNyYyksCgkgIChjbGVhbnVwX2Zkc3JjKSwgKEdTVF9TVEFSVF9URVNUKSwgKGZkc3JjX3N1aXRlKSwgKG1haW4pOgoJICBBZGQgdGVzdHMgZm9yIGZkc3JjIHNlZWthYmlsaXR5CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRzcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfZmRzcmNfaW5pdCksIChnc3RfZmRzcmNfdXBkYXRlX2ZkKSwgKGdzdF9mZHNyY19zdGFydCksCgkgIChnc3RfZmRzcmNfc2V0X3Byb3BlcnR5KSwgKGdzdF9mZHNyY19pc19zZWVrYWJsZSksCgkgIChnc3RfZmRzcmNfZ2V0X3NpemUpLCAoZ3N0X2Zkc3JjX3VyaV9zZXRfdXJpKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuaDoKCSAgZmRzcmMgc2hvdWxkIG5vdCBiZSBhICdsaXZlJyBzb3VyY2UuCgkgIEltcGxlbWVudCBzZWVraW5nIG9uIHNlZWthYmxlIGZkJ3MuCgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3NlZWtpbmcpLAoJICAoZ3N0X3F1ZXJ5X3BhcnNlX3NlZWtpbmcpOgoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICBJbXBsZW1lbnQgU0VFS0lORyBxdWVyeSBmdW5jdGlvbnM6CgkgICpfbmV3X3NlZWtpbmcgYW5kICpfcGFyc2Vfc2Vla2luZwoKMjAwNS0xMS0yNyAyMjo0MzowOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogZG9uJ3QgbG9vcCBmb3JldmVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9kaXNwb3NlKToKCSAgZG9uJ3QgbG9vcCBmb3JldmVyCgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBkb2MgZml4ZXMKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X3NldF9pbnRlcnBvbGF0aW9uX21vZGUpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICAoaW50ZXJwb2xhdGVfbm9uZV9nZXRfZW51bV92YWx1ZV9hcnJheSk6CgkgIHN1cHBvcnQgY29udHJvbGxpbmcgZW51bXMKCjIwMDUtMTEtMjcgMTk6NTI6NDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogSW1wcm92ZSBkb2N1bWVudGF0aW9uIGZvciBnc3RfdmFsdWVfdW5pb24oKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgZ3N0X3ZhbHVlX3VuaW9uKCkuCgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIENoYW5nZSByZXR1cm4gdmFsdWUgZm9yIHVuaW9uLCBpbnRlcnNlY3QgYW5kIHN1YnRyYWN0IGZ1bmN0aW9ucwoJICBmcm9tIGdpbnQgdG8gZ2Jvb2xlYW4uCgoyMDA1LTExLTI3IDE4OjExOjAyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLio6IFVzZSBnaW50LCBnZG91YmxlIGFuZCBnY2hhciBpbiBvdXIgQVBJIGluc3RlYWQgb2YgaW50LCBkb3VibGUgYW5kIGNoYXIgKGFuZCBtYWtlIHVzYWdlIGluIGdzdHZhbHVlLmMgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX3NlcmlhbGl6ZV9hbnlfbGlzdCksCgkgIChnc3RfdmFsdWVfdHJhbnNmb3JtX2FueV9saXN0X3N0cmluZyksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfbGlzdCksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYXJyYXkpLAoJICAoZ3N0X3ZhbHVlX3NldF9pbnRfcmFuZ2UpLCAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ludF9yYW5nZSksCgkgIChnc3RfdmFsdWVfc2V0X2RvdWJsZV9yYW5nZSksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfZG91YmxlX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zZXRfZnJhY3Rpb25fcmFuZ2VfZnVsbCksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfZnJhY3Rpb25fcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2NhcHMpLCAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2J1ZmZlciksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYm9vbGVhbiksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfaW50X2hlbHBlciksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfZG91YmxlKSwKCSAgKGdzdF92YWx1ZV9zZXJpYWxpemVfZmxvYXQpLCAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2Zsb2F0KSwKCSAgKGdzdF9zdHJpbmdfd3JhcCksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfc3RyaW5nKSwKCSAgKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9lbnVtKSwgKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9mbGFncyksCgkgIChnc3RfdmFsdWVfdW5pb25faW50X3JhbmdlX2ludF9yYW5nZSksCgkgIChnc3RfdmFsdWVfaW50ZXJzZWN0X2ludF9yYW5nZV9pbnRfcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX2ludGVyc2VjdF9kb3VibGVfcmFuZ2VfZG91YmxlX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9jcmVhdGVfbmV3X3JhbmdlKSwgKGdzdF92YWx1ZV9zdWJ0cmFjdF9pbnRfcmFuZ2VfaW50KSwKCSAgKGdzdF92YWx1ZV9zdWJ0cmFjdF9pbnRfcmFuZ2VfaW50X3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zdWJ0cmFjdF9kb3VibGVfZG91YmxlX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zdWJ0cmFjdF9kb3VibGVfcmFuZ2VfZG91YmxlX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9mcmFjdGlvbik6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIFVzZSBnaW50LCBnZG91YmxlIGFuZCBnY2hhciBpbiBvdXIgQVBJIGluc3RlYWQgb2YgaW50LCBkb3VibGUgYW5kCgkgIGNoYXIgKGFuZCBtYWtlIHVzYWdlIGluIGdzdHZhbHVlLmMgbW9yZSBjb25zaXN0ZW50KS4KCjIwMDUtMTEtMjcgMTc6MDU6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L01ha2VmaWxlLmFtOgoJICBhZGQgdW5kZWZpbmVkIGZvciBjb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgdW5kZWZpbmVkIGZvciBjb3JlCgoyMDA1LTExLTI3IDE2OjQ2OjQ4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGZpeCB1cCBNYWtlZmlsZS5hbSBhbmQgcmVtb3ZlIEdTVF9FTkFCTEVfTkVXCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggdXAgTWFrZWZpbGUuYW0gYW5kIHJlbW92ZSBHU1RfRU5BQkxFX05FVwoKMjAwNS0xMS0yNyAxNToxNTozNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB1cGRhdGUgTERGTEFHUyB1c2Ugc29tZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkgICogZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvbmV0L01ha2VmaWxlLmFtOgoJICB1cGRhdGUgTERGTEFHUyB1c2Ugc29tZSBtb3JlCgoyMDA1LTExLTI3IDE0OjE5OjM4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJICBGaXhlcyAjMzEyNTg5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGaXhlcyAjMzEyNTg5CgoyMDA1LTExLTI3IDE0OjAzOjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgYWRkIHNvbWUgYWRkaXRpb25hbCBmYWlsX2lmJ3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBzb21lIGFkZGl0aW9uYWwgZmFpbF9pZidzCgoyMDA1LTExLTI2IDExOjI4OjMyICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzogVGhpcyBzaG91bGRuJ3QgaXNzdWUgYSBnX3dhcm5pbmcgc2luY2UgaXQgcmV0dXJucyBOVUxMIGlmIGl0IGNvdWxkbid0IGZpbmQgdGhlIHBsdWdpbiwgYW5kIGFsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfbG9hZCk6CgkgIFRoaXMgc2hvdWxkbid0IGlzc3VlIGEgZ193YXJuaW5nIHNpbmNlIGl0IHJldHVybnMgTlVMTCBpZiBpdAoJICBjb3VsZG4ndCBmaW5kIHRoZSBwbHVnaW4sIGFuZCBhbGwgZnVuY3Rpb25zIHVzaW5nIHRoaXMgYmVoYXZlCgkgIHByb3Blcmx5IG9uIGEgTlVMTCByZXR1cm4uIFN3aXRjaGluZyB0byBhIEdTVF9XQVJOSU5HLgoKMjAwNS0xMS0yNSAxNzowNjozNiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IERvbid0IGxlYWsgY2xvY2sgbWVzc2FnZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5faGFuZGxlX21lc3NhZ2VfZnVuYyk6CgkgIERvbid0IGxlYWsgY2xvY2sgbWVzc2FnZXMuCgoyMDA1LTExLTI1IDExOjM4OjM4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IE9wdGltaXNhdGlvbnMsIHJlbW92ZSB1bm5lZWRlZCB2YXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQ2NCksCgkgIChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KToKCSAgT3B0aW1pc2F0aW9ucywgcmVtb3ZlIHVubmVlZGVkIHZhcnMuCgoyMDA1LTExLTI1IDAwOjAyOjA1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdHV0aWxzLmM6IEFkZGVkIG1vcmUgY2hlY2tzIGZvciB0aGUgaGlnaCBwcmVjaXNpb24gdWludDY0IGNhc2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0dXRpbHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF91dGlsc19zdWl0ZSk6CgkgIEFkZGVkIG1vcmUgY2hlY2tzIGZvciB0aGUgaGlnaCBwcmVjaXNpb24gdWludDY0IGNhc2VzLgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludDY0KSwKCSAgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSksIChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KToKCSAgSW1wbGVtZW50IGhpZ2ggcHJlY2lzc2lvbiAoZ3VpbnQ2NCAqIGd1aW50NjQpIC8gZ3VpbnQ2NC4KCjIwMDUtMTEtMjQgMTk6MDY6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IEZpeCB3cm9uZyBwZXJjZW50YWdlIHF1ZXJ5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcXVlcnkpOgoJICBGaXggd3JvbmcgcGVyY2VudGFnZSBxdWVyeS4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSksCgkgIChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KToKCSAgQWRkIHNvbWUgbW9yZSBjb21tb24gY2FzZXMgdGhhdCBjYW4gYmUgaGFuZGxlZAoJICBlZmZpY2llbnRseSB0byBfc2NhbGUuCgoyMDA1LTExLTI0IDE4OjQ0OjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC9nc3RtaW5pb2JqZWN0LmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RtaW5pb2JqZWN0LmM6CgkgIHJlbW92ZSB3cm9uZ2x5IGNvbW1pdGVkIGNvbW1lbnRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgd3JvbmdseSBjb21taXRlZCBjb21tZW50cwoKMjAwNS0xMS0yNCAxODo0MDo1OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9nc3QvZ3N0bWluaW9iamVjdC5jOiBkb24ndCB1c2UgY2hlY2sgY2FsbHMgZnJvbSB0aHJlYWRzOyBjaGVjayBwcm9iYWJseSBpc24ndCB0aHJlYWRzYWZlIGFuZCB1c2luZyBhIGxvY2sgdG8gbWEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdG1pbmlvYmplY3QuYzogKHRocmVhZF9yZWYpLCAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X21pbmlfb2JqZWN0X3N1aXRlKToKCSAgZG9uJ3QgdXNlIGNoZWNrIGNhbGxzIGZyb20gdGhyZWFkczsgY2hlY2sgcHJvYmFibHkgaXNuJ3QKCSAgdGhyZWFkc2FmZSBhbmQgdXNpbmcgYSBsb2NrIHRvIG1ha2UgaXQgdGhyZWFkc2FmZSB3b3VsZAoJICBkZWZlYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGVjawoJICAqIGdzdC9jaGVjay9nc3RjaGVjay5jOgoJICAqIGdzdC9jaGVjay9nc3RjaGVjay5oOgoJICB1c2UgR1NUX0RFQlVHIHNvbWUgbW9yZQoKMjAwNS0xMS0yNCAxODowMzoxNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jOiBDaGFpbiB0cml2aWFsIGNhc2UgdG8gX3NjYWxlX2ludC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF91aW50NjRfc2NhbGUpLAoJICAoZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCk6CgkgIENoYWluIHRyaXZpYWwgY2FzZSB0byBfc2NhbGVfaW50LgoKMjAwNS0xMS0yNCAxNzo0NDo1NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dzdC9nc3R1dGlscy5jOiBBZGRlZCB0ZXN0IGZvciBzY2FsaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0dXRpbHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF91dGlsc19zdWl0ZSk6CgkgIEFkZGVkIHRlc3QgZm9yIHNjYWxpbmcuCgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgIFNtYWxsIGRvYyBmaXguCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50KToKCSAgSW1wbGVtZW50ZWQgaGlnaCBwcmVjaXNpb24gc2NhbGluZyBjb2RlLgoKMjAwNS0xMS0yNCAxNjo1NjoyOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGluZm8uaDogZG8gbm90IGNyYXNoIG9uIHBhZD09TlVMTAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBkbyBub3QgY3Jhc2ggb24gcGFkPT1OVUxMCgoyMDA1LTExLTI0IDE2OjMyOjI2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CgoJICBGaXggZGlzdGNoZWNrIGlzc3VlcyBmb3IgdGhlIGxpYnJhcmllcyBkb2NzIGJ1aWxkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBQYXRjaCBieTogU3RlZmFuIEtvc3QKCSAgKiBjb21tb24vZ3RrLWRvYy5tYWs6CgkgICogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgICogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICBGaXggZGlzdGNoZWNrIGlzc3VlcyBmb3IgdGhlIGxpYnJhcmllcyBkb2NzIGJ1aWxkCgkgIENsb3NlcyAjMzE5NTk5CgoyMDA1LTExLTI0IDE0OjM5OjU5ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6IEZpeCBidWcgIzMxNTAyNzogbWVtb3J5IGxlYWsgaW4gZXhhbXBsZSBjb2RlIGluIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1oZWxsb3dvcmxkLnhtbDoKCSAgRml4IGJ1ZyAjMzE1MDI3OiBtZW1vcnkgbGVhayBpbiBleGFtcGxlIGNvZGUgaW4gZG9jcy4KCjIwMDUtMTEtMjQgMTI6NDQ6MjUgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFVubG9jayB0aGUgUFJFUk9MTF9MT0NLIGluIGEgZmFpbHVyZSBjYXNlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yNCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQGZsdWVuZG8uY29tPgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICBVbmxvY2sgdGhlIFBSRVJPTExfTE9DSyBpbiBhIGZhaWx1cmUgY2FzZS4KCjIwMDUtMTEtMjQgMTE6MTY6MzIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0Ly5naXRpZ25vcmU6CgkqIGNoZWNrL25ldC8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9jaGVjay9nc3QvLmdpdGlnbm9yZToKCSAgaWdub3JlIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlnbm9yZSBtb3JlCgoyMDA1LTExLTI0IDA5OjQ0OjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvYmFzZS9nc3RhZGFwdGVyLmg6CgkqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJKiBnc3QvYmFzZS9nc3RwdXNoc3JjLmg6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuaDoKCSogZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RidWZmZXIuYzoKCSogZ3N0L2dzdGJ1cy5oOgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGdob3N0cGFkLmg6CgkqIGdzdC9nc3RpbmRleC5oOgoJKiBnc3QvZ3N0aW50ZXJmYWNlLmg6CgkqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkqIGdzdC9nc3RtaW5pb2JqZWN0Lmg6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSogZ3N0L2dzdHBpcGVsaW5lLmg6CgkqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkqIGdzdC9nc3RxdWVyeS5oOgoJKiBnc3QvZ3N0cXVldWUuaDoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ2xpc3QuaDoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dGFnc2V0dGVyLmg6CgkqIGdzdC9nc3R0cmFjZS5jOgoJKiBnc3QvZ3N0dHJhY2UuaDoKCSogZ3N0L2dzdHR5cGVmaW5kLmg6CgkqIGdzdC9nc3R1cmkuaDoKCSogZ3N0L2dzdHZhbHVlLmM6CgkqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzoKCSogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5oOgoJKiBnc3QvbmV0L2dzdG5ldHRpbWVwYWNrZXQuYzoKCSogZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzoKCSogZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSogbGlicy9nc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkqIGxpYnMvZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5oOgoJKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5jOgoJKiBsaWJzL2dzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkqIGxpYnMvZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuaDoKCSAgRG9jIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRG9jIGZpeGVzLgoKMjAwNS0xMS0yMyAyMjo1NDo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb25maWd1cmUuYWM6CgkgIHJlbW92ZWQgZGlyZWN0b3JpZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZWQgZGlyZWN0b3JpZXMKCjIwMDUtMTEtMjMgMjI6MjE6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvaW5zdGFudGlhdGUvTWFrZWZpbGUuYW06CgkgIGZpeCBkaXN0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggZGlzdAoKMjAwNS0xMS0yMyAyMToyNDo0NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNYWtlZmlsZS5hbToKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICBhZGQgYSB0b3J0dXJlIHRhcmdldAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGEgdG9ydHVyZSB0YXJnZXQKCjIwMDUtMTEtMjMgMjE6MTg6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvaW5zdGFudGlhdGUvY3JlYXRlLmM6CgkqIHRlc3RzL25lZ290aWF0aW9uLy5naXRpZ25vcmU6CgkqIHRlc3RzL25lZ290aWF0aW9uL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9uZWdvdGlhdGlvbi9jYXBzbmVnbzEuYzoKCSAgcmVtb3ZlIG9ic29sZXRlIHRlc3RzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgb2Jzb2xldGUgdGVzdHMKCjIwMDUtMTEtMjMgMjE6MTY6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdGVzdHMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL2xhdC5jOgoJKiB0ZXN0cy9tdXhpbmcvLmdpdGlnbm9yZToKCSogdGVzdHMvbXV4aW5nL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9tdXhpbmcvY2FzZTEuYzoKCSogdGVzdHMvcHJvYmVzLy5naXRpZ25vcmU6CgkqIHRlc3RzL3Byb2Jlcy9NYWtlZmlsZS5hbToKCSogdGVzdHMvcHJvYmVzL3Byb2JldGVzdC5jOgoJICByZW1vdmUgb2Jzb2xldGUgdGVzdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBvYnNvbGV0ZSB0ZXN0cwoKMjAwNS0xMS0yMyAyMToxMzo1OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3RyaWdnZXIvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvdHJpZ2dlci9SRUFETUU6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvdHJpZ2dlci90cmlnZ2VyLmM6CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL3RyaWdnZXIvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS90cmlnZ2VyL1JFQURNRToKCSogdGVzdHN1aXRlL3RyaWdnZXIvdHJpZ2dlci5jOgoJICByZW1vdmUgdHJpZ2dlciBzdWJkaXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSB0cmlnZ2VyIHN1YmRpcgoKMjAwNS0xMS0yMyAyMToxMjoyMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2VsZW1lbnRzL2Zha2UuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy9uYW1lLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvZWxlbWVudHMvcHJvcGVydHkuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy9wcm9wZXJ0eS5oOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2VsZW1lbnRzL3RlZS5jOgoJKiB0ZXN0c3VpdGUvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9mYWtlLmM6CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9uYW1lLmM6CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy9wcm9wZXJ0eS5jOgoJKiB0ZXN0c3VpdGUvZWxlbWVudHMvcHJvcGVydHkuaDoKCSogdGVzdHN1aXRlL2VsZW1lbnRzL3RlZS5jOgoJICByZW1vdmUgdGVzdHMgcmVwbGFjZWQgYnkgY2hlY2tzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgdGVzdHMgcmVwbGFjZWQgYnkgY2hlY2tzCgoyMDA1LTExLTIzIDIwOjA0OjI1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJICBiYWNrIHRvIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJhY2sgdG8gSEVBRAoKPT09IHJlbGVhc2UgMC45LjYgPT09CgoyMDA1LTExLTIzIDE5OjU1OjA5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogTkVXUzoKCSogUkVMRUFTRToKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL3JhbmRvbS9tb3ZpbmctcGx1Z2luczoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC45LjYKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbGVhc2luZyAwLjkuNgoKMjAwNS0xMS0yMyAxODowNzoxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIFVwZGF0ZSAucG8gZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFVwZGF0ZSAucG8gZmlsZXMKCjIwMDUtMTEtMjMgMTc6NTk6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy91cGxvYWQubWFrOgoJICBDaHJpc3RpYW4sIGxlYXJuIHRvIGNvbmZpZ3VyZSB5b3VyIC5zc2gvY29uZmlnIGZpbGUsIGFuZCBTVE9QIGNvbW1pdHRpbmcgdG8gdGhpc2ZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIENocmlzdGlhbiwgbGVhcm4gdG8gY29uZmlndXJlIHlvdXIgLnNzaC9jb25maWcgZmlsZSwgYW5kIFNUT1AgY29tbWl0dGluZyB0byB0aGlzZmlsZQoKMjAwNS0xMS0yMyAxNjoxMDozOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIERvYyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nbGliLWNvbXBhdC5jOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzoKCSAgKiBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6CgkgICogZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0Lmg6CgkgIERvYyB1cGRhdGVzLgoKMjAwNS0xMS0yMyAxNTo0OTowNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZmFxL3VzaW5nLnhtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0Y29udHJvbC5zZ21sOgoJKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1kcGFyYW1zLnhtbDoKCSogZG9jcy9tYW51YWwvYXBwZW5kaXgtY2hlY2tsaXN0LnhtbDoKCSogZG9jcy9tYW51YWwvYmFzaWNzLWVsZW1lbnRzLnhtbDoKCSogZG9jcy9wd2cvb3RoZXItc291cmNlLnhtbDoKCSogZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6CgkqIGdzdC9nc3RwYWQuYzoKCSogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICByZW1vdmUgbWVudGlvbnMgb2Ygc2luZXNyYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIG1lbnRpb25zIG9mIHNpbmVzcmMKCjIwMDUtMTEtMjMgMTQ6NTI6MzEgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IFVwZGF0ZSBmb3IgbmV3IEFQSSBhbmQgQVBJIGNoYW5nZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIFVwZGF0ZSBmb3IgbmV3IEFQSSBhbmQgQVBJIGNoYW5nZXMuCgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICBEb2N1bWVudGF0aW9uIGZpeDogR1NUX1RSWUxPQ0sgLT4gR1NUX09CSkVDVF9UUllMT0NLCgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIERvY3VtZW50YXRpb24gdHlwbyBmaXguCgkgICogZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0LmM6CgkgIERvY3VtZW50YXRpb24gZml4ZXMgZm9yIGFyZ3VtZW50cy4KCjIwMDUtMTEtMjMgMTM6MjI6MjEgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgQVBJIENoYW5nZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uKSwKCSAgKGdzdF9zdHJ1Y3R1cmVfcGFyc2VfdmFsdWUpLAoJICAoZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbik6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5oOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogc2NyaXB0cy91cGRhdGUtZnVuY25hbWVzOgoJICBBUEkgQ2hhbmdlcy4KCSAgUmVuYW1lIGdzdF91dGlsX2Nsb2NrX3RpbWVfc2NhbGUgdG8gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludAoJICBNYWtlIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gdGFrZSBhIG51bWVyYXRvcgoJICBhbmQgZGVub21pbmF0b3IgYXJndW1lbnQgaW5zdGVhZCBvZiBhIEdWYWx1ZQoJICBhZGQgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gaGVscGVyIGZ1bmN0aW9uLgoKMjAwNS0xMS0yMyAxMzoxNDo0NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFVwZGF0ZSBUT0RPLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICBVcGRhdGUgVE9ETy4KCSAgKiBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IChnc3RfbmV0X2NsaWVudF9jbG9ja190aHJlYWQpOgoJICAqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgVXNlIHBhcmVudCBmaWVsZHMgZm9yIHRpbWVvdXQgYW5kIHdpbmRvd19zaXplLgoKMjAwNS0xMS0yMyAxMjozOTozNiArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZG9jcy91cGxvYWQubWFrOgoJKiBnc3QvcmVnaXN0cmllcy8uZ2l0aWdub3JlOgoJKiBnc3Qvc2NoZWR1bGVycy8uZ2l0aWdub3JlOgoJKiBsaWJzL2dzdC9jb250cm9sLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2dldGJpdHMvLmdpdGlnbm9yZToKCSAgYWRkIG1pc3NpbmcgY3ZzaWdub3JlcyBzbyBDVlMgc2h1dHMgdXAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtaXNzaW5nIGN2c2lnbm9yZXMgc28gQ1ZTIHNodXRzIHVwCgoyMDA1LTExLTIzIDEyOjM2OjAwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAodGVzdF9mdW5jdGlvbmluZyk6IEFkanVzdCB0byByYXRlX251bS9yYXRlX2Rlbm9tIGNoYW5nZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjMgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY2hlY2svbmV0L2dzdG5ldGNsaWVudGNsb2NrLmMgKHRlc3RfZnVuY3Rpb25pbmcpOiBBZGp1c3QgdG8KCSAgcmF0ZV9udW0vcmF0ZV9kZW5vbSBjaGFuZ2UuCgkgICogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19vYnNlcnZlX3RpbWVzKTogVGFrZSB0aGUgU0xBVkVfTE9DSyBub3QgdGhlCgkgIE9CSkVDVF9MT0NLLiBEb24ndCBjYWxsIGFkZF9vYnNlcnZhdGlvbiB3aXRoIHRoZSBsb2NrLgoJICAqIGdzdC9nc3RjbG9jay5jIChnc3RfY2xvY2tfaW5pdCk6IEluaXRpYWxpemUgdGhlIHJhdGUgYXMgYQoJICBmcmFjdGlvbi4KCSAgKGdzdF9jbG9ja19hZGp1c3RfdW5sb2NrZWQpOiBBZGp1c3QgdXNpbmcgdWludDY0X3NjYWxlIGFuZCB0aGUKCSAgcmF0ZSBmcmFjdGlvbi4KCSAgKGdzdF9jbG9ja19zZXRfY2FsaWJyYXRpb24sIGdzdF9jbG9ja19nZXRfY2FsaWJyYXRpb24pOiBDaGFuZ2UgdG8KCSAgZGVhbCB3aXRoIHJhdGUgYXMgYSBmcmFjdGlvbiB3aG9zZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIGFyZQoJICBHc3RDbG9ja1RpbWUgdmFsdWVzLgoJICAoZ3N0X2Nsb2NrX3NldF9tYXN0ZXIpOiBPbmx5IHVzZSB0aGUgT0JKRUNUX0xPQ0sgdG8gc2V0IHRoZQoJICBtYXN0ZXI7IHRoZSBvdGhlciBmaWVsZHMgYXJlIHByb3RlY3RlZCBieSB0aGUgU0xBVkVfTE9DSy4KCSAgKGRvX2xpbmVhcl9yZWdyZXNzaW9uKTogTm90ZSB0aGF0IHRoaXMgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUKCSAgU0xBVkVfTE9DSy4KCSAgKGdzdF9jbG9ja19hZGRfb2JzZXJ2YXRpb24pOiBUYWtlIHRoZSBTTEFWRV9MT0NLLCBub3QgdGhlCgkgIE9CSkVDVF9MT0NLLiBDYWxsIHNldF9jYWxpYnJhdGlvbiBpbnN0ZWFkIG9mIHRvdWNoaW5nIHRoZQoJICB2YXJpYWJsZXMgZGlyZWN0bHkuCgkgIChnc3RfY2xvY2tfc2V0X3Byb3BlcnR5LCBnc3RfY2xvY2tfZ2V0X3Byb3BlcnR5KTogUHJvdGVjdAoJICBtYXN0ZXIvc2xhdmUgcGFyYW1ldGVycyB3aXRoIHRoZSBTTEFWRV9MT0NLLgoJICAqIGdzdC9nc3RjbG9jay5oIChHc3RDbG9jayk6IFJlbW92ZSByYXRlLCBhZGQgcmF0ZV9udW1lcmF0b3IgYW5kCgkgIHJhdGVfZGVub21pbmF0b3IuIFBSM0MxUzMuIEFkZCBhIG5ldyBsb2NrLCB0aGUgU0xBVkVfTE9DSywgYW5kCgkgIG5vdGUgdGhhdCBhbGwgb2YgdGhlIGluc3RhbmNlIHZhcmlhYmxlcyB0aGF0IGFkZF9vYnNlcnZhdGlvbiBhbmQKCSAgdGhlIHNldF9tYXN0ZXIgZnVuY3Rpb25zIHVzZSBhcmUgcHJvdGVjdGVkIGJ5IHRoYXQgbG9jayBhbmQgbm90CgkgIHRoZSBPQkpFQ1RfTE9DSy4KCSAgKEdTVF9DTE9DS19TTEFWRV9MT0NLLCBHU1RfQ0xPQ0tfU0xBVkVfVU5MT0NLKTogTmV3IG1hY3Jvcy4KCSAgKiBnc3QvZ3N0Y2xvY2suYyAoZ3N0X2Nsb2NrX2FkZF9vYnNlcnZhdGlvbik6IE5vIGxvbmdlciByZXF1aXJlcwoJICB0aGUgY2FsbGVyIHRvIHRha2UgdGhlIG9iamVjdCBsb2NrLgoKMjAwNS0xMS0yMyAxMToyMjozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RlcnJvci4qOiBBZGQgZXJyb3IgZm9yIGNsb2NrIHN0dWZmLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXJyb3IuYzogKF9nc3RfY29yZV9lcnJvcnNfaW5pdCk6CgkgICogZ3N0L2dzdGVycm9yLmg6CgkgIEFkZCBlcnJvciBmb3IgY2xvY2sgc3R1ZmYuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9waXBlbGluZV9zZXRfY2xvY2spOgoJICBQb3N0IGNsb2NrIGVycm9yIHdoZW4gY2xvY2sgY2Fubm90IGJlIHVzZWQgaW4gYSBwaXBlbGluZS4KCjIwMDUtMTEtMjMgMTE6MDU6MzcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IG1ha2UgdHdvIHN5bWJvbHMgZnJvbSBnc3RpbmZvIHByaXZhdGUgZm9yIHRoZSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIG1ha2UgdHdvIHN5bWJvbHMgZnJvbSBnc3RpbmZvIHByaXZhdGUgZm9yIHRoZSBkb2NzCgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgZml4IGRvYyB0eXBvcywgdXBkYXRlIGRvY3MKCjIwMDUtMTEtMjIgMTg6Mjg6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay4qOiBObyBuZWVkIHRvIHN0b3JlIHRoZSBjbG9jaywgdGhlIHBhcmVudCBlbGVtZW50IGNsYXNzIGFscmVhZHkgaGFzIGl0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3Npbmtfd2FpdCksIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfZXZlbnQpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIE5vIG5lZWQgdG8gc3RvcmUgdGhlIGNsb2NrLCB0aGUgcGFyZW50IGVsZW1lbnQgY2xhc3MgYWxyZWFkeQoJICBoYXMgaXQuCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9zZXRfY2xvY2tfZnVuYyksIChnc3RfYmluX2FkZF9mdW5jKToKCSAgVXBkYXRlcyBmb3IgY2xvY2tfc2V0IHJldHVybmluZyBhIGdib29sZWFuCgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfZW50cnlfbmV3KSwgKGdzdF9jbG9ja19pZF93YWl0KSwKCSAgKGdzdF9jbG9ja19pZF93YWl0X2FzeW5jKSwgKGdzdF9jbG9ja19jbGFzc19pbml0KSwKCSAgKGdzdF9jbG9ja19pbml0KSwgKGdzdF9jbG9ja19maW5hbGl6ZSksCgkgIChnc3RfY2xvY2tfZ2V0X2ludGVybmFsX3RpbWUpLCAoZ3N0X2Nsb2NrX2dldF90aW1lKSwKCSAgKGdzdF9jbG9ja19zbGF2ZV9jYWxsYmFjayksIChnc3RfY2xvY2tfc2V0X21hc3RlciksCgkgIChnc3RfY2xvY2tfZ2V0X21hc3RlciksIChkb19saW5lYXJfcmVncmVzc2lvbiksCgkgIChnc3RfY2xvY2tfYWRkX29ic2VydmF0aW9uKSwgKGdzdF9jbG9ja19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Nsb2NrX2dldF9wcm9wZXJ0eSk6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgIEltcGxlbWVudCBtYXN0ZXIvc2xhdmUuIFdoZW4gc2V0dGluZyBhIGNsb2NrIGFzIGEgc2xhdmUsIGEKCSAgcGVyaW9kaWMgdGltZW91dCBpcyBzY2hlZHVsZWQgdG8gc2FtcGxlIG1hc3RlciBhbmQgc2xhdmUgdGltZXMuCgkgIFRoZW4gdGhlIHNsYXZlIGNsb2NrIGlzIHJlY2FsaWJyYXRlZCB0byBtYXRjaCBvZmZzZXQgYW5kIHJhdGUKCSAgb2YgdGhlIG1hc3RlciBjbG9jay4KCSAgVXBkYXRlIGxvZ2dpbmcgYSBiaXQuCgkgIEFkZCBmbGFnIHNvIHRoYXQgYSBjbG9jayBjYW4gc3RhdGUgdGhhdCBpcyBjYW5ub3QgYmUgc2xhdmVkIHRvCgkgIGFub3RoZXIgY2xvY2suCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9jbG9jayk6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgVGhlIHNldF9jbG9jayByZXR1cm5zIGEgZ2Jvb2xlYW4gZm9yIHdoZW4gYW4gZWxlbWVudCBjYW5ub3QKCSAgZGVhbCB3aXRoIHRoZSBzZWxlY3RlZCBjbG9jayBpbiB0aGUgcGlwZWxpbmUuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9waXBlbGluZV9zZXRfY2xvY2spOgoJICAqIGdzdC9nc3RwaXBlbGluZS5oOgoJICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHNlbGVjdGVkIGNsb2NrIGNhbm5vdCBiZSBzZXQgb24KCSAgdGhlIHBpcGVsaW5lLgoJICAqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzogKGdzdF9uZXRfY2xpZW50X2Nsb2NrX2NsYXNzX2luaXQpLAoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfaW5pdCksIChnc3RfbmV0X2NsaWVudF9jbG9ja19maW5hbGl6ZSksCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX29ic2VydmVfdGltZXMpOgoJICAqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suaDoKCSAgVXNlIHJlZ3Jlc3Npb24gY29kZSBpbiBHc3RDbG9jayBwYXJlbnQsIHJlbW92ZSBkdXBsaWNhdGVkCgkgIGZ1bmN0aW9uYWxpdHkuCgoyMDA1LTExLTIyIDE2OjMxOjA4ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGdzdC9nc3R1dGlscy5jOgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQWRkIHVuZGVyc2NvcmVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBBZGQgdW5kZXJzY29yZXMKCjIwMDUtMTEtMjIgMTU6NTI6MDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogY29ycmVjdGx5IGZpeCBHRW51bVZhbHVlcyBzbyB0aGF0IG5pY2sgaXMgdGhlIHNob3J0IGxvd2VyY2FzZSBkYXNoZWQgdGFnCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzogKGdzdF9mYWtlX3Npbmtfc3RhdGVfZXJyb3JfZ2V0X3R5cGUpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfZGF0YV9nZXRfdHlwZSksCgkgIChnc3RfZmFrZV9zcmNfc2l6ZXR5cGVfZ2V0X3R5cGUpLCAoZ3N0X2Zha2Vfc3JjX2ZpbGx0eXBlX2dldF90eXBlKSwKCSAgKGdzdF9mYWtlX3NyY19pbml0KSwgKGdzdF9mYWtlX3NyY19wcmVwYXJlX2J1ZmZlciksCgkgIChnc3RfZmFrZV9zcmNfYWxsb2NfYnVmZmVyKSwgKGdzdF9mYWtlX3NyY19nZXRfc2l6ZSk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSAgKiBnc3QvZ3N0cXVldWUuYzogKHF1ZXVlX2xlYWt5X2dldF90eXBlKToKCSAgY29ycmVjdGx5IGZpeCBHRW51bVZhbHVlcyBzbyB0aGF0IG5pY2sgaXMgdGhlIHNob3J0IGxvd2VyY2FzZQoJICBkYXNoZWQgdGFnCgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X2VsZW1lbnRfcHJvcGVydGllc19pbmZvKToKCSAgYWxzbyBzaG93IHRoZSBuaWNrLCBzaW5jZSBpdCdzIHVzZWZ1bCB0byB1c2UgZnJvbSBwYXJzZV9sYXVuY2gKCSAgc3ludGF4CgkgIEZpeGVzICMzMjIxMzkKCjIwMDUtMTEtMjIgMTU6MTU6NTMgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIEFkZCB1dGlsIG1ldGhvZCBmb3Igc2NhbGluZyBhIGNsb2NrdGltZSBieSBhIGZyYWN0aW9uLiBVc2VmdWwgaW1wbGVtZW50YXRpb24gaXMgbGVmdCBhcyBhbiBleGVyY2lzZSBmb3IgdGhlIHJlYWRlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9jbG9ja3RpbWVfc2NhbGUpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZCB1dGlsIG1ldGhvZCBmb3Igc2NhbGluZyBhIGNsb2NrdGltZSBieSBhIGZyYWN0aW9uLiBVc2VmdWwKCSAgaW1wbGVtZW50YXRpb24gaXMgbGVmdCBhcyBhbiBleGVyY2lzZSBmb3IgdGhlIHJlYWRlci4KCjIwMDUtMTEtMjIgMTQ6Mjk6MTAgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHZhbHVlLmM6IElmIG5lZWRlZCwgYWxsb2NhdGUgc3RvcmFnZSBpbiB0aGUgZGVzdGluYXRpb24gdmFsdWUgZHVyaW5nIGNvbGxlY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2NvbGxlY3RfZnJhY3Rpb25fcmFuZ2UpOgoJICBJZiBuZWVkZWQsIGFsbG9jYXRlIHN0b3JhZ2UgaW4gdGhlIGRlc3RpbmF0aW9uIHZhbHVlIGR1cmluZwoJICBjb2xsZWN0aW9uLgoKMjAwNS0xMS0yMiAxMzo1ODowMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIFJlbW92ZWQgR3N0VVJJICwgY2xvc2VzIGJ1ZyAjMzIxMDYxCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3QuaDoKCSAgKiBnc3QvZ3N0dXJpdHlwZS5jOgoJICAqIGdzdC9nc3R1cml0eXBlLmg6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9zZXRfb2JqZWN0X2FyZyk6CgkgICogdG9vbHMvZ3N0LWNvbXBwcmVwLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBSZW1vdmVkIEdzdFVSSSAsIGNsb3NlcyBidWcgIzMyMTA2MQoKMjAwNS0xMS0yMiAxMzoxNDo1MSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBPb3BzLCBicm9rZSBhdXRvbWF0aWMgc3RyaW5nIHR5cGUgcGFyc2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfcGFyc2VfdmFsdWUpOgoJICBPb3BzLCBicm9rZSBhdXRvbWF0aWMgc3RyaW5nIHR5cGUgcGFyc2luZy4KCSAgQWRkIGEgdGVzdCB0byBjYXRjaCBpdCBpbiBmdXR1cmUuCgoyMDA1LTExLTIyIDEzOjAyOjEyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3R0YWdzZXR0ZXIuYzoKCSAgZ3N0L2dzdHRhZ3NldHRlci5jIChnc3RfdGFnX3NldHRlcl9nZXRfdGFnX21lcmdlX21vZGUpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIyICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYyAoZ3N0X3RhZ19zZXR0ZXJfZ2V0X3RhZ19tZXJnZV9tb2RlKQoJICAoZ3N0X3RhZ19zZXR0ZXJfc2V0X3RhZ19tZXJnZV9tb2RlLCBnc3RfdGFnX3NldHRlcl9nZXRfdGFnX2xpc3QpOgoJICBBY3R1YWxseSByZW5hbWUgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucy4gR3JyLgoKMjAwNS0xMS0yMiAxMjo1MToxOCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogc2NyaXB0cy91cGRhdGUtZnVuY25hbWVzOgoJICBmaXggYm9ya2VkIGNvbW1pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGJvcmtlZCBjb21taXQKCjIwMDUtMTEtMjIgMTI6MzU6NDIgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY2hlY2svZ3N0L2NhcHNsaXN0Lmg6IENvbW1lbnQgdGVzdCBjYXNlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvY2Fwc2xpc3QuaDoKCSAgQ29tbWVudCB0ZXN0IGNhc2VzCgkgICogY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoZ3N0X3N0cnVjdHVyZV9zdWl0ZSk6CgkgIFRlc3QgYXV0b21hdGljIHZhbHVlIHR5cGUgZGV0ZWN0aW9uIGluIGdzdF9zdHJ1Y3R1cmVfZnJvbV9zdHJpbmcuCgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9wYXJzZV92YWx1ZSk6CgkgIEFkZCBmcmFjdGlvbiBhcyBhIHR5cGUgd2UgdHJ5IGFuZCBndWVzcyBhdXRvbWF0aWNhbGx5IGluCgkgIGNhcHMvc3RydWN0dXJlIHN0cmluZ3MuCgoyMDA1LTExLTIyIDEyOjM1OjM1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBzY3JpcHRzL3VwZGF0ZS1mdW5jbmFtZXM6CgkgIHVwZGF0ZSB1cGRhdGUtZnVuY3MgZm9yIHRhZ3NldHRlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHVwZGF0ZS1mdW5jcyBmb3IgdGFnc2V0dGVyCgoyMDA1LTExLTIyIDEyOjIwOjA0ICswMDAwICBUb3JzdGVuIFNjaG9lbmZlbGQgPGthZmZlZXRpc2NoQGdteC5kZT4KCgkgIGdzdC9nc3R0YWdzZXR0ZXIuKjogKGdzdF90YWdfc2V0dGVyX21lcmdlX3RhZ3MpIChnc3RfdGFnX3NldHRlcl9hZGRfdGFncywgZ3N0X3RhZ19zZXR0ZXJfYWRkX3RhZ192YWx1ZXMpIChnc3RfdGFnX3NldC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgcGF0Y2ggYnk6IFRvcnN0ZW4gU2Nob2VuZmVsZCA8a2FmZmVldGlzY2ggZ214IGRlPgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuaDoKCSAgKiBnc3QvZ3N0dGFnc2V0dGVyLmM6IChnc3RfdGFnX3NldHRlcl9tZXJnZV90YWdzKQoJICAoZ3N0X3RhZ19zZXR0ZXJfYWRkX3RhZ3MsIGdzdF90YWdfc2V0dGVyX2FkZF90YWdfdmFsdWVzKQoJICAoZ3N0X3RhZ19zZXR0ZXJfYWRkX3RhZ192YWxpc3QpCgkgIChnc3RfdGFnX3NldHRlcl9hZGRfdGFnX3ZhbGlzdF92YWx1ZXMpOiBSZW5hbWVkIGZyb20gX21lcmdlLCBfYWRkLAoJICBfYWRkX3ZhbHVlcywgX2FkZF92YWxpc3QsIGFuZCBfYWRkX3ZhbGlzdF92YWx1ZXMuIFNpbmNlIHRoaXMgaXMgYW4KCSAgaW50ZXJmYWNlIHRoZSBmdW5jdGlvbiBzdWZmaXhlcyBzaG91bGQgYmUgbW9yZSBleHBsaWNpdCBzbwoJICBsYW5ndWFnZSBiaW5kaW5nIGRvbid0IGVuZCB1cCB3aXRoIGVsZW1lbnQuYWRkX3ZhbGlzdCAtPgoJICBnc3RfdGFnX3NldHRlcl9hZGRfdmFsaXN0LCBmb3IgZXhhbXBsZS4gRml4ZXMgIzMyMjA2OS4KCjIwMDUtMTEtMjIgMTI6MTU6MTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBkb24ndCB2YWxncmluZCB0aGUgc3RyZXNzIHRlc3QsIHRha2VzIHRvbyBsb25nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb24ndCB2YWxncmluZCB0aGUgc3RyZXNzIHRlc3QsIHRha2VzIHRvbyBsb25nCgoyMDA1LTExLTIyIDExOjU2OjAxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RjYXBzLmM6IEV4dGVuZCBjYXBzIHN0cmluZyB0ZXN0cyB0byBjaGVjayB0aGF0IGEgY2FwcyB0byBzdHJpbmcgY29udmVyc2lvbiBpcyByZXZlcnNpYmxlIGFuZCBwcm9kdWNlcyB0aC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBFeHRlbmQgY2FwcyBzdHJpbmcgdGVzdHMgdG8gY2hlY2sgdGhhdCBhIGNhcHMgdG8gc3RyaW5nCgkgIGNvbnZlcnNpb24gaXMgcmV2ZXJzaWJsZSBhbmQgcHJvZHVjZXMgdGhlIHNhbWUgY2Fwcy4KCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX3ZhbHVlX2dldF9nZW5lcmljX3R5cGUpOgoJICBPdXRwdXQgImZyYWN0aW9uIiBhcyB0aGUgZ2VuZXJpYyB0eXBlIGZyYWN0aW9uIHJhbmdlLCBzbyBjYXBzCgkgIHNlcmlhbGlzYXRpb24gYW5kIGRlc2VyaWFsaXNhdGlvbiB3b3Jrcy4KCSAgKiBjaGVjay9nc3QvY2Fwc2xpc3QuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9mcmFjdGlvbik6CgkgIFN1cHBvcnQgJ01JTicgYW5kICdNQVgnIGZvciBkZXNlcmlhbGlzaW5nIGZyYWN0aW9ucy4KCjIwMDUtMTEtMjIgMTE6NTA6MTIgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgTWlub3IgZG9jIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE1pbm9yIGRvYyBmaXguCgoyMDA1LTExLTIyIDExOjQ4OjU4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuaCAoZ3N0X2V2ZW50X25ld19uZXdfc2VnbWVudCkgKGdzdF9ldmVudF9wYXJzZV9uZXdfc2VnbWVudCwgZ3N0X2V2ZW50X25ld19idWZmZXJfc2l6ZSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGV2ZW50LmggKGdzdF9ldmVudF9uZXdfbmV3X3NlZ21lbnQpCgkgIChnc3RfZXZlbnRfcGFyc2VfbmV3X3NlZ21lbnQsIGdzdF9ldmVudF9uZXdfYnVmZmVyX3NpemUpCgkgIChnc3RfZXZlbnRfcGFyc2VfYnVmZmVyX3NpemUsIGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldCk6CgkgIFJlbmFtZWQgZnJvbSAqX25ld3NlZ21lbnQsICpfYnVmZmVyc2l6ZSwgKl9ub3RhcmdldC4KCSAgKiBzY3JpcHRzL3VwZGF0ZS1mdW5jbmFtZXM6IE5ldyBzY3JpcHQsIHBlcmZvcm1zIHRoZSBjaGFuZ2VzCgkgIGxpc3RlZCBhYm92ZS4KCjIwMDUtMTEtMjIgMTE6MjU6MDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBNYWtlIHN1cmUgdGhlIEdzdEZsb3dSZXR1cm4gaXMgcmV0dXJuZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICBNYWtlIHN1cmUgdGhlIEdzdEZsb3dSZXR1cm4gaXMgcmV0dXJuZWQuCgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoX2Z1bGwpLAoJICAoZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgIGFkZCBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbC4KCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgIFNtYWxsIHN0eWxlIGNsZWFudXAuCgoyMDA1LTExLTIyIDEwOjI0OjMxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RldmVudC5jOiBCbG9jayB0aGUgZmFrZXNyYyBzcmNwYWQgd2hlbiB3ZSBzZW5kIGFuIGV2ZW50LCB0byBhdm9pZCBjb250ZW50aW9uIG9uIHRoZSBzdHJlYW1fbG9jayBjYXVzaW5nIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0ZXZlbnQuYzogKHRlc3RfZXZlbnQpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICBCbG9jayB0aGUgZmFrZXNyYyBzcmNwYWQgd2hlbiB3ZSBzZW5kIGFuIGV2ZW50LCB0byBhdm9pZAoJICBjb250ZW50aW9uIG9uIHRoZSBzdHJlYW1fbG9jayBjYXVzaW5nIHJhbmRvbSB0ZXN0IGZhaWx1cmVzLgoKMjAwNS0xMS0yMiAwOTo0MjoxNyArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBGaXggc3VidHJhY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2ZyYWN0aW9uX3N1YnRyYWN0KToKCSAgRml4IHN1YnRyYWN0aW9uLgoKMjAwNS0xMS0yMiAwOTozNToyNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdC5oOiBpbmNsdWRlICJnc3RjaGlsZHByb3h5LmgiCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuaDoKCSAgaW5jbHVkZSAiZ3N0Y2hpbGRwcm94eS5oIgoJICAqIGdzdC9nc3RjaGlsZHByb3h5Lmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkgIHVzZSBHX0dOVUNfTlVMTF9URVJNSU5BVEVECgoyMDA1LTExLTIxIDIzOjU0OjU5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIEltcGxlbWVudCBmcmFjdGlvbiByYW5nZXMgYW5kIGV4dGVuZCBHc3RGcmFjdGlvbiB0byBzdXBwb3J0IGFyaXRobWV0aWMgc3VidHJhY3Rpb24sIGFzIHdlbGwgYXMgZGVzZXJpYWxpemF0aW9uIGZyb20gaS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvY2Fwc2xpc3QuaDoKCSAgKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX3BhcnNlX3JhbmdlKSwKCSAgKGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24pOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9pbml0X2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9mcmVlX2ZyYWN0aW9uX3JhbmdlKSwgKGdzdF92YWx1ZV9jb3B5X2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9jb2xsZWN0X2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9sY29weV9mcmFjdGlvbl9yYW5nZSksIChnc3RfdmFsdWVfc2V0X2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zZXRfZnJhY3Rpb25fcmFuZ2VfZnVsbCksCgkgIChnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX3JhbmdlX21pbiksCgkgIChnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX3JhbmdlX21heCksCgkgIChnc3RfdmFsdWVfc2VyaWFsaXplX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV90cmFuc2Zvcm1fZnJhY3Rpb25fcmFuZ2Vfc3RyaW5nKSwKCSAgKGdzdF92YWx1ZV9jb21wYXJlX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9mcmFjdGlvbl9yYW5nZSksCgkgIChnc3RfdmFsdWVfaW50ZXJzZWN0X2ZyYWN0aW9uX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9pbnRlcnNlY3RfZnJhY3Rpb25fcmFuZ2VfZnJhY3Rpb25fcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2ZyYWN0aW9uX2ZyYWN0aW9uX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9zdWJ0cmFjdF9mcmFjdGlvbl9yYW5nZV9mcmFjdGlvbiksCgkgIChnc3RfdmFsdWVfc3VidHJhY3RfZnJhY3Rpb25fcmFuZ2VfZnJhY3Rpb25fcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX2NvbGxlY3RfZnJhY3Rpb24pLCAoZ3N0X3ZhbHVlX2ZyYWN0aW9uX211bHRpcGx5KSwKCSAgKGdzdF92YWx1ZV9mcmFjdGlvbl9zdWJ0cmFjdCksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfZnJhY3Rpb24pLAoJICAoZ3N0X3ZhbHVlX3RyYW5zZm9ybV9zdHJpbmdfZnJhY3Rpb24pLCAoX2dzdF92YWx1ZV9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0dmFsdWUuaDoKCSAgSW1wbGVtZW50IGZyYWN0aW9uIHJhbmdlcyBhbmQgZXh0ZW5kIEdzdEZyYWN0aW9uIHRvIHN1cHBvcnQKCSAgYXJpdGhtZXRpYyBzdWJ0cmFjdGlvbiwgYXMgd2VsbCBhcyBkZXNlcmlhbGl6YXRpb24gZnJvbSBpbnRlZ2VyCgkgIHN0cmluZ3Mgc3VjaCBhcyAiMTAwIgoJICBBZGQgYSB0ZXN0c3VpdGUgYXMgZm9yIGludCBhbmQgZG91YmxlIHJhbmdlIHNldCBvcGVyYXRpb25zCgoyMDA1LTExLTIxIDE5OjU4OjIzICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvOiBBZGQgZ2xpYi1jb21wYXQuaC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjEgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaDogQWRkIGdsaWItY29tcGF0LmguCgoyMDA1LTExLTIxIDE5OjEzOjEzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBGaXggZm9yICMzMjE1OTUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyk6CgkgIEZpeCBmb3IgIzMyMTU5NQoKMjAwNS0xMS0yMSAxOTowMDoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RzZWdtZW50Lmg6IEFuZCBhZGQgYSBuaWNlIGRlZmluZSB0b28uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RzZWdtZW50Lmg6CgkgIEFuZCBhZGQgYSBuaWNlIGRlZmluZSB0b28uCgoyMDA1LTExLTIxIDE4OjUzOjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuKjogTWFrZSBiaW5kaW5nIGZyaWVuZGx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfY29weSksIChnc3Rfc2VnbWVudF9nZXRfdHlwZSksCgkgIChnc3Rfc2VnbWVudF9uZXcpLCAoZ3N0X3NlZ21lbnRfZnJlZSksIChnc3Rfc2VnbWVudF9pbml0KSwKCSAgKGdzdF9zZWdtZW50X3NldF9kdXJhdGlvbiksIChnc3Rfc2VnbWVudF9zZXRfbGFzdF9zdG9wKSwKCSAgKGdzdF9zZWdtZW50X3NldF9zZWVrKSwgKGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50KSwKCSAgKGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lKSwgKGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSksCgkgIChnc3Rfc2VnbWVudF9jbGlwKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5oOgoJICBNYWtlIGJpbmRpbmcgZnJpZW5kbHkuCgoyMDA1LTExLTIxIDE4OjQxOjM5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvOiBTcHJpbmtsZSBOVUxMX1RFUk1JTkFURUQgdG8gdGFzdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuaDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3R1dGlscy5oOiBTcHJpbmtsZSBOVUxMX1RFUk1JTkFURUQgdG8gdGFzdGUuCgoyMDA1LTExLTIxIDE4OjI3OjI2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXJyb3IuKjogTmV3IGVycm9yIGNhdGVnb3J5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZXJyb3IuYyAoX2dzdF9jb3JlX2Vycm9yc19pbml0KToKCSAgKiBnc3QvZ3N0ZXJyb3IuaCAoR1NUX0NPUkVfRVJST1JfTUlTU0lOR19QTFVHSU4pOiBOZXcgZXJyb3IKCSAgY2F0ZWdvcnkuCgoyMDA1LTExLTIxIDE4OjE2OjAwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvTWFrZWZpbGUuYW0gKGdzdF9oZWFkZXJzKTogQWRkIGdsaWItY29tcGF0LmguIG5vaW5zdCB0aGUgLXByaXZhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9NYWtlZmlsZS5hbSAoZ3N0X2hlYWRlcnMpOiBBZGQgZ2xpYi1jb21wYXQuaC4KCSAgKG5vaW5zdF9IRUFERVJTKTogbm9pbnN0IHRoZSAtcHJpdmF0ZS4KCjIwMDUtMTEtMjEgMTg6MTA6MTMgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkgIGdzdC86IFJlbW92ZSB1bmltcGxlbWVudGVkIGRlY2xhcmF0aW9ucyBmb3Igd2hpY2ggd2UgY2FuIHNlZSBubyBzZW5zaWJsZSB1c2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgUmVtb3ZlIHVuaW1wbGVtZW50ZWQgZGVjbGFyYXRpb25zIGZvciB3aGljaCB3ZSBjYW4gc2VlIG5vIHNlbnNpYmxlCgkgIHVzZS4KCjIwMDUtMTEtMjEgMTg6MDM6MjIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3QuaDogSW5jbHVkZSBnbGliLWNvbXBhdC5oLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0Lmg6IEluY2x1ZGUgZ2xpYi1jb21wYXQuaC4KCSAgKiBnc3QvZ2xpYi1jb21wYXQuaDogQWRkIEdfR05VQ19OVUxMX1RFUk1JTkFURUQuCgkgICogZ3N0L2dsaWItY29tcGF0LmM6IEluY2x1ZGUgdGhlIHB1YmxpYyBhbmQgdGhlIHByaXZhdGUgaGVhZGVyLgoJICAqIGdzdC9nbGliLWNvbXBhdC1wcml2YXRlLmg6IENvcGllZCBoZXJlIGZyb20gZ2xpYi1jb21wYXQuaC4KCSAgKiBnc3QvZ3N0dmFsdWUuYzoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IHMvZ2xpYi1jb21wYXQvZ2xpYi1jb21wYXQtcHJpdmF0ZS8uCgoyMDA1LTExLTIxIDE3OjIxOjE1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9nc3QvZ3N0ZXZlbnQuYyAoY3JlYXRlX2N1c3RvbV9ldmVudHMpOiBDaGVjayB0aGF0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3RldmVudC5jIChjcmVhdGVfY3VzdG9tX2V2ZW50cyk6IENoZWNrIHRoYXQKCSAgRkxVU0hfU1RPUCBpcyBzZXJpYWxpemVkLgoJICAqIGNoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmMgKGV2ZW50X2Z1bmMpOgoJICAqIGNoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYyAoZXZlbnRfZnVuYyk6IE5vIHN0cmVhbSBsb2NrLCB0aGUgY29yZQoJICB0YWtlcyBpdC4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCk6IE5vIG1vcmUKCSAgc3RyZWFtIGxvY2sgdGFraW5nLCB5YXkuCgkgICogZ3N0L2dzdGV2ZW50LmggKEdTVF9FVkVOVF9GTFVTSF9TVE9QKTogTWFya2VkIGFzIHNlcmlhbGl6ZWQgdG8KCSAgZW5zdXJlIHRoYXQgY29yZSB0YWtlcyB0aGUgc3RyZWFtIGxvY2suCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfZG9fc2Vlayk6IFVwZGF0ZSBmb3Igc3RyZWFtCgkgIGxvY2sgbmFtZSBjaGFuZ2UuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2Vfc2lua19ldmVudCk6IE5vIG5lZWQgdG8gdGFrZQoJICB0aGUgc3RyZWFtIGxvY2sgZm9yIEVPUywgTkVXU0VHTUVOVCwgb3IgRkxVU0hfU1RPUCwgdGhlIGNvcmUgZG9lcwoJICBpdCBhbHJlYWR5LiBGb3IgdGhlIGZsdXNoIHN0YXJ0IHdlIGRvIHRha2UgaXQgdGhvdWdoIHNvIHdlIGdldCB0aGUKCSAgcmlnaHQgcHJlcm9sbCBzdGF0ZSBjaGFuZ2UgbWVzc2FnZXMuCgkgICogZ3N0L2dzdHF1ZXVlLmMgKGdzdF9xdWV1ZV9zaW5rX2FjdGl2YXRlX3B1c2gpOiBObyBuZWVkIHRvIHRha2UKCSAgdGhlIHN0cmVhbSBsb2NrIGhlcmUsIHRoZSBjb3JlIGRvZXMgaXQgZm9yIHVzLgoJICAqIGdzdC9nc3RwYWQuaCAoR1NUX1BBRF9HRVRfU1RSRUFNX0xPQ0spOiBSZW5hbWVkIGZyb20KCSAgR1NUX1NUUkVBTV9HRVRfTE9DSy4KCSAgKEdTVF9QQURfU1RSRUFNX0xPQ0ssIEdTVF9QQURfU1RSRUFNX1RSWUxPQ0spCgkgIChHU1RfUEFEX1NUUkVBTV9VTkxPQ0ssIEdTVF9QQURfU1RSRUFNX1VOTE9DS19GVUxMKQoJICAoR1NUX1BBRF9TVFJFQU1fTE9DS19GVUxMKTogUmVuYW1lZCBmcm9tIEdTVF9TVFJFQU1fKi4KCSAgKEdTVF9QQURfR0VUX1BSRVJPTExfTE9DSyk6IFJlbmFtZWQgZnJvbSBHU1RfUFJFUk9MTF9HRVRfTE9DSy4KCSAgKEdTVF9QQURfUFJFUk9MTF9MT0NLLCBHU1RfUEFEX1BSRVJPTExfVFJZTE9DSykKCSAgKEdTVF9QQURfUFJFUk9MTF9VTkxPQ0spOiBSZW5hbWVkIGZyb20gR1NUX1BSRVJPTExfKi4KCSAgKiBnc3QvZ3N0cGFkLmM6IFVwZGF0ZSBmb3Igc3RyZWFtIGxvY2sgbmFtZSBjaGFuZ2UuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogVXBkYXRlIGZvciBwcmVyb2xsIGxvY2sgbmFtZSBjaGFuZ2UuCgoyMDA1LTExLTIxIDE3OjEyOjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQ29udmVydCBDbG9jayBmbGFncyB0byBvYmplY3QgZmxhZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2luaXQpLCAoZ3N0X2Nsb2NrX3NldF9tYXN0ZXIpLAoJICAoZ3N0X2Nsb2NrX2dldF9tYXN0ZXIpOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pbml0KToKCSAgQ29udmVydCBDbG9jayBmbGFncyB0byBvYmplY3QgZmxhZ3MuCgkgIEFkZGVkIG1ldGhvZHMgdG8gbWFuYWdlIG1hc3Rlci9zbGF2ZSBjbG9ja3MuCgoyMDA1LTExLTIxIDE3OjA5OjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgTW9yZSBzZWdtZW50IHVwZGF0ZXMsIHJlcGxhY2UgY29kZSBpbiBwbHVnaW5zIHdpdGggc2VnbWVudCBoZWxwZXIgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0c2VnbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1bGwpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pLAoJICAoZ3N0X2Jhc2Vfc2lua19xdWVyeSksIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfaW5pdCksIChnc3RfYmFzZV9zcmNfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmV3c2VnbWVudCksCgkgIChnc3RfYmFzZV9zcmNfY29uZmlndXJlX3NlZ21lbnQpLCAoZ3N0X2Jhc2Vfc3JjX2RvX3NlZWspLAoJICAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSksIChnc3RfYmFzZV9zcmNfbG9vcCksCgkgIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZiksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZXZlbnQpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19ldmVudCk6CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2luaXQpLAoJICAoZ3N0X2Zha2Vfc3JjX2NyZWF0ZSk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV90cmFuc2Zvcm1faXApOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9pbml0KSwgKGdzdF9zZWdtZW50X3NldF9kdXJhdGlvbiksCgkgIChnc3Rfc2VnbWVudF9zZXRfbGFzdF9zdG9wKSwgKGdzdF9zZWdtZW50X3NldF9zZWVrKSwKCSAgKGdzdF9zZWdtZW50X3NldF9uZXdzZWdtZW50KSwgKGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lKSwKCSAgKGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSksIChnc3Rfc2VnbWVudF9jbGlwKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5oOgoJICBNb3JlIHNlZ21lbnQgdXBkYXRlcywgcmVwbGFjZSBjb2RlIGluIHBsdWdpbnMgd2l0aCBzZWdtZW50CgkgIGhlbHBlciBmdW5jdGlvbnMuCgoyMDA1LTExLTIxIDE2OjQ2OjA3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOiBEb24ndCBpZ25vcmUgc3NjYW5mIHJlc3VsdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmM6IChnc3RfZmRzcmNfdXJpX3NldF91cmkpOgoJICBEb24ndCBpZ25vcmUgc3NjYW5mIHJlc3VsdHMKCjIwMDUtMTEtMjEgMTY6NDE6MTYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RwYWQuaCAoR1NUX0lTX1BBRF9GQVNUKTogUmVtb3ZlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjEgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5oIChHU1RfSVNfUEFEX0ZBU1QpOiBSZW1vdmVkLgoKMjAwNS0xMS0yMSAxNjozNDoyNiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgKi4qOiBSYW4gc2NyaXB0cy91cGRhdGUtbWFjcm9zLiBPaCB5ZXMuIGdzdC9nc3RvYmplY3QuaCAoR1NUX09CSkVDVF9HRVRfTE9DSywgR1NUX09CSkVDVF9MT0NLKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiAqLmg6CgkgICogKi5jOiBSYW4gc2NyaXB0cy91cGRhdGUtbWFjcm9zLiBPaCB5ZXMuCgkgICogZ3N0L2dzdG9iamVjdC5oIChHU1RfT0JKRUNUX0dFVF9MT0NLLCBHU1RfT0JKRUNUX0xPQ0spCgkgIChHU1RfT0JKRUNUX1RSWUxPQ0ssIEdTVF9PQkpFQ1RfVU5MT0NLKTogUmVuYW1lZCBmcm9tCgkgIEdTVF9HRVRfTE9DSywgZXRjLgoJICAqIHNjcmlwdHMvdXBkYXRlLW1hY3JvczogTmV3IHNjcmlwdC4gUnVuIGl0IG9uIHlvdXIgZmlsZXMgdG8KCSAgY2hhbmdlIEdTVF9MT0NLIHRvIEdTVF9PQkpFQ1RfTE9DSywgYW5kIHRoZSBzYW1lIGZvciBVTkxPQ0sgYXMKCSAgd2VsbC4KCjIwMDUtMTEtMjEgMTU6NDc6MDkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIG1vcmUgZG9jcyBmaXhlcywgYWRkIG5ldyBhcGkgdG8gdGhlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICBtb3JlIGRvY3MgZml4ZXMsIGFkZCBuZXcgYXBpIHRvIHRoZSBkb2NzCgoyMDA1LTExLTIxIDE1OjAxOjQ4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0YmluLmMgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpOiBXaW0gY2xhaW1zIEkgY2FuIHJlbW92ZSB0aGlzIHN0YXRlX2Jyb2FkY2FzdCBjYWxsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YmluLmMgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpOiBXaW0gY2xhaW1zIEkgY2FuIHJlbW92ZSB0aGlzCgkgIHN0YXRlX2Jyb2FkY2FzdCBjYWxsLgoKMjAwNS0xMS0yMSAxNDo1MzozNCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHNlZ21lbnQuYyAoZ3N0X3NlZ21lbnRfaW5pdCk6IEluaXRpYWxpemUgYWJzX3JhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RzZWdtZW50LmMgKGdzdF9zZWdtZW50X2luaXQpOiBJbml0aWFsaXplIGFic19yYXRlLgoKMjAwNS0xMS0yMSAxNDo1Mjo1NiArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogRml4IHdyb25nIGZ1bmN0aW9uIGNhbGxzIGZvciBhcnJheXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBKdWxpZW4gTU9VVFRFICA8anVsaWVuQG1vdXR0ZS5uZXQ+CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfaW50ZXJzZWN0X2FycmF5KTogRml4IHdyb25nCgkgIGZ1bmN0aW9uIGNhbGxzIGZvciBhcnJheXMuCgoyMDA1LTExLTIxIDE0OjUwOjIyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL3JhbmRvbS9lbnNvbmljL21lZGlhLWRldmljZS1kYWVtb24udHh0OiB3aWxkIGlkZWEsIGNhbiB0aGlzIGJlIGRvbmU/CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL2Vuc29uaWMvbWVkaWEtZGV2aWNlLWRhZW1vbi50eHQ6CgkgIHdpbGQgaWRlYSwgY2FuIHRoaXMgYmUgZG9uZT8KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RlcnJvci5oOgoJICAqIGdzdC9nc3RmaWx0ZXIuYzoKCSAgKiBnc3QvZ3N0ZmlsdGVyLmg6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHRyYWNlLmM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIGRvYyBmaXhlcyBhbmQgYWRkaXRpb25zCgoyMDA1LTExLTIxIDE0OjQxOjI2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoR1NUX0xJVkVfQlJPQURDQVNULCBHU1RfTElWRV9TSUdOQUwpIChHU1RfTElWRV9USU1FRF9XQUlULCBHU1RfTElWRV9XQUlULCBHU1RfTElWRV9HRVRfQ09ORCkgKC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmMgKEdTVF9MSVZFX0JST0FEQ0FTVCwgR1NUX0xJVkVfU0lHTkFMKQoJICAoR1NUX0xJVkVfVElNRURfV0FJVCwgR1NUX0xJVkVfV0FJVCwgR1NUX0xJVkVfR0VUX0NPTkQpCgkgIChHU1RfTElWRV9VTkxPQ0ssIEdTVF9MSVZFX1RSWUxPQ0ssIEdTVF9MSVZFX0xPQ0spCgkgIChHU1RfTElWRV9HRVRfTE9DSyk6IE1vdmVkIGhlcmUgZnJvbSBnc3RiYXNlc3JjLmguIFRoZXkgYXJlCgkgIHByaXZhdGUgdG8gdGhlIGJhc2VzcmMgaW1wbGVtZW50YXRpb24uCgoyMDA1LTExLTIxIDE0OjM0OjA3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2VuZF9ldmVudCk6IERvYyBtb3JlLiBUYWtlIHN0cmVhbSBsb2NrIG9uIGJlaGFsZiBvZiBldmVudCBmdW5jdGlvbiBpZiBuZWNlc3NhcnkuIEl0IHNob3VsZCBubyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjEgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX3NlbmRfZXZlbnQpOiBEb2MgbW9yZS4gVGFrZSBzdHJlYW0gbG9jayBvbgoJICBiZWhhbGYgb2YgZXZlbnQgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5LiBJdCBzaG91bGQgbm8gbG9uZ2VyIGJlCgkgIG5lY2Vzc2FyeSB0byB0YWtlIHRoZSBzdHJlYW0gbG9jayBpbiBwYWQncyBldmVudCBmdW5jdGlvbnMuIEZpeGVzCgkgICMzMjAyOTkuCgoyMDA1LTExLTIxIDE0OjI4OjIxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIFJlbmFtZSBnc3RfY2Fwc19zdHJ1Y3R1cmVfZml4YXRlXyogdG8gZ3N0X3N0cnVjdHVyZV9maXhhdGVfKiAoIzMyMjAyNykKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCksCgkgIChnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2RvdWJsZSksCgkgIChnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9ib29sZWFuKToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkgICogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgICogd2luMzIvZ3N0cmVhbWVyLmRlZjoKCSAgUmVuYW1lIGdzdF9jYXBzX3N0cnVjdHVyZV9maXhhdGVfKiB0byBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV8qCgkgICgjMzIyMDI3KQoKMjAwNS0xMS0yMSAxNDoyNToyMSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuKjogUG9ydCBmZDovLyBVUkkgaGFuZGxlciBmcm9tIDAuOCB0byBmZHNyYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuYzogKF9kb19pbml0KSwgKGdzdF9mZHNyY19jbGFzc19pbml0KSwKCSAgKGdzdF9mZHNyY19pbml0KSwgKGdzdF9mZHNyY19kaXNwb3NlKSwgKGdzdF9mZHNyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Zkc3JjX3VyaV9nZXRfdHlwZSksIChnc3RfZmRzcmNfdXJpX2dldF9wcm90b2NvbHMpLAoJICAoZ3N0X2Zkc3JjX3VyaV9nZXRfdXJpKSwgKGdzdF9mZHNyY191cmlfc2V0X3VyaSksCgkgIChnc3RfZmRzcmNfdXJpX2hhbmRsZXJfaW5pdCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkgIFBvcnQgZmQ6Ly8gVVJJIGhhbmRsZXIgZnJvbSAwLjggdG8gZmRzcmMKCjIwMDUtMTEtMjEgMTM6MjY6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBNb3JlIHNlZ21lbnQgdXBkYXRlcyBhbmQgbW9yZSBjaGVja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RzZWdtZW50LmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RzZWdtZW50c19zdWl0ZSksCgkgIChtYWluKToKCSAgKiBnc3QvZ3N0c2VnbWVudC5jOiAoZ3N0X3NlZ21lbnRfaW5pdCksIChnc3Rfc2VnbWVudF9zZXRfZHVyYXRpb24pLAoJICAoZ3N0X3NlZ21lbnRfc2V0X2xhc3Rfc3RvcCksIChnc3Rfc2VnbWVudF9zZXRfc2VlayksCgkgIChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudCksIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSksCgkgIChnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUpLCAoZ3N0X3NlZ21lbnRfY2xpcCk6CgkgICogZ3N0L2dzdHNlZ21lbnQuaDoKCSAgTW9yZSBzZWdtZW50IHVwZGF0ZXMgYW5kIG1vcmUgY2hlY2tzLgoKMjAwNS0xMS0yMSAxMzoyNjo0MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R2YWx1ZS4qOiBEcm9wIGxlYWRpbmcgJyUnIGZyb20gR1NUX0ZPVVJDQ19GT1JNQVQsIHRodXMgbWFraW5nIGl0IGNvbnNpc3RlbnQgd2l0aCBvdXIgb3RoZXIgZm9ybWF0IGRlZmluZXMgKCMzMi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV90cmFuc2Zvcm1fZm91cmNjX3N0cmluZyksCgkgIChnc3RfdmFsdWVfc2VyaWFsaXplX2ZvdXJjYyk6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIERyb3AgbGVhZGluZyAnJScgZnJvbSBHU1RfRk9VUkNDX0ZPUk1BVCwgdGh1cyBtYWtpbmcgaXQKCSAgY29uc2lzdGVudCB3aXRoIG91ciBvdGhlciBmb3JtYXQgZGVmaW5lcyAoIzMyMDMyNCkuCgoyMDA1LTExLTIxIDEzOjEyOjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLmM6IFJldmVydCBwcmV2aW91cyBjb21taXQuIFZhbHVlIGxpc3RzIGFyZSBieSBkZWZpbml0aW9uIG5vdCBmaXhlZCwgYXMgdGhleSBhcmUgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfaXNfZml4ZWQpOgoJICBSZXZlcnQgcHJldmlvdXMgY29tbWl0LiBWYWx1ZSBsaXN0cyBhcmUgYnkgZGVmaW5pdGlvbgoJICBub3QgZml4ZWQsIGFzIHRoZXkgYXJlIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMuCgoyMDA1LTExLTIxIDEzOjAzOjM2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuaCAoR1NUX0VWRU5UX0ZJTExFUik6IFJlbW92ZWQuIENhbiBiZSBhZGRlZCBiYWNrIGR1cmluZyB0aGUgc3RhYmxlIHNlcmllcyBpZiB3ZSBuZWVkIGl0LiBGaXhlcyAjMzE5MTc4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZXZlbnQuaCAoR1NUX0VWRU5UX0ZJTExFUik6IFJlbW92ZWQuIENhbiBiZSBhZGRlZCBiYWNrCgkgIGR1cmluZyB0aGUgc3RhYmxlIHNlcmllcyBpZiB3ZSBuZWVkIGl0LiBGaXhlcyAjMzE5MTc4LgoJICAqIGdzdC9nc3RldmVudC5jIChnc3RfZXZlbnRfbmV3X2ZpbGxlcik6IFJlbW92ZWQuCgkgICogY2hlY2svZ3N0L2dzdGV2ZW50LmM6IFVwZGF0ZSBjb21tZW50IGFib3V0IGZpbGxlciBldmVudHMuCgoyMDA1LTExLTIxIDEyOjQyOjQxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLmM6IFNob3VsZCBoYW5kbGUgYm90aCB2YWx1ZSBhcnJheXMgYW5kIHZhbHVlIGxpc3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9pc19maXhlZCk6CgkgIFNob3VsZCBoYW5kbGUgYm90aCB2YWx1ZSBhcnJheXMgYW5kIHZhbHVlIGxpc3RzLgoKMjAwNS0xMS0yMSAxMjoyNzowMSArMDAwMCAgQWxlc3NhbmRybyBEZXNzaW5hIDxhbGVzc2FuZHJvQG5udmEub3JnPgoKCSAgZ3N0L2dzdHZhbHVlLmMgKGdzdF92YWx1ZV9pc19maXhlZCk6IFVzZSBnc3RfdmFsdWVfYXJyYXkgZnVuY3Rpb25zIHRvIGFjY2VzcyBhcnJheXMuIEZpeGVzICMzMjE5NjIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICBwYXRjaCBieTogQWxlc3NhbmRybyBEZXNzaW5hIDxhbGVzc2FuZHJvIG5udmEgb3JnPgoJICAqIGdzdC9nc3R2YWx1ZS5jIChnc3RfdmFsdWVfaXNfZml4ZWQpOiBVc2UgZ3N0X3ZhbHVlX2FycmF5CgkgIGZ1bmN0aW9ucyB0byBhY2Nlc3MgYXJyYXlzLiBGaXhlcyAjMzIxOTYyLgoKMjAwNS0xMS0yMSAxMToyNjowNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczogZ3N0X2NvbGxlY3RwYWRzX2dldF90eXBlID0+IGdzdF9jb2xsZWN0X3BhZHNfZ2V0X3R5cGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSAgZ3N0X2NvbGxlY3RwYWRzX2dldF90eXBlID0+IGdzdF9jb2xsZWN0X3BhZHNfZ2V0X3R5cGUuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICBSZW1vdmUgdW51c2VkIFNJR05BTF9IQU5ET0ZGIGVudW0uCgoyMDA1LTExLTIxIDExOjA2OjQyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuaCAoR3N0RXZlbnRUeXBlRmxhZ3MpOiBOZXcgZGF0YSB0eXBlLCB0aGUgZmxhZ3Mgb2YgdGhlIGV2ZW50IHR5cGUgKHVwc3RyZWFtLCBkb3duc3RyZWFtLCBzZXJpYWxpemVkKS4gUmUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMjEgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGV2ZW50LmggKEdzdEV2ZW50VHlwZUZsYWdzKTogTmV3IGRhdGEgdHlwZSwgdGhlIGZsYWdzIG9mCgkgIHRoZSBldmVudCB0eXBlICh1cHN0cmVhbSwgZG93bnN0cmVhbSwgc2VyaWFsaXplZCkuIFJlbmFtZWQKCSAgR1NUX0VWRElSXyogYW5kIEdTVF9FVlNFUiB0byBHU1RfRVZFTlRfVFlQRV8qLgoJICAoR3N0RXZlbnRUeXBlKTogVXNlIEdzdEV2ZW50VHlwZUZsYWdzLiBSZW5hbWUgQ1VTVE9NX1VQIHRvCgkgIENVU1RPTV9VUFNUUkVBTSwgQ1VTVE9NX0RTIHRvIENVU1RPTV9ET1dOU1RSRUFNLCBldGMuCgkgICogZ3N0L2dzdGV2ZW50LmM6IFVwZGF0ZSBmb3IgbmV3IENVU1RPTSBldmVudCBuYW1lcy4KCSAgKiBjaGVjay9nc3QvZ3N0ZXZlbnQuYzogVXBkYXRlIGNoZWNrIGZvciBuZXcgQ1VTVE9NIGV2ZW50IG5hbWVzLgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RldmVudC5jIChnc3RfZXZlbnRfdHlwZV9nZXRfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uIEZpeGVzCgkgIGJ1ZyAjMzE5MzkyLgoKMjAwNS0xMS0yMSAxMTowMDowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIFJlbmFtZSBnc3RfY29sbGVjcGFkc19mb28oKSA9PiBnc3RfY29sbGVjdF9wYWRzX2ZvbygpLiBEb2N1bWVudCB1bmltcGxlbWVudGVkIGZ1bmN0aW9ucyBhcyB1bmltcGxlbWVudGVkICgjMzIwNzY2KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0YmFzZS5kZWY6CgkgICogd2luMzIvbGliZ3N0YmFzZS5kZWY6CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0X3BhZHNfYmFzZV9pbml0KSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfY2xhc3NfaW5pdCksIChnc3RfY29sbGVjdF9wYWRzX2luaXQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19maW5hbGl6ZSksIChnc3RfY29sbGVjdF9wYWRzX25ldyksCgkgIChnc3RfY29sbGVjdF9wYWRzX3NldF9mdW5jdGlvbiksIChnc3RfY29sbGVjdF9wYWRzX2FkZF9wYWQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkKSwgKGdzdF9jb2xsZWN0X3BhZHNfaXNfYWN0aXZlKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfY29sbGVjdCksIChnc3RfY29sbGVjdF9wYWRzX2NvbGxlY3RfcmFuZ2UpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19zdGFydCksIChnc3RfY29sbGVjdF9wYWRzX3N0b3ApLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19wZWVrKSwgKGdzdF9jb2xsZWN0X3BhZHNfcG9wKSwKCSAgKGdzdF9jb2xsZWN0X3BhZHNfYXZhaWxhYmxlKSwgKGdzdF9jb2xsZWN0X3BhZHNfcmVhZCksCgkgIChnc3RfY29sbGVjdF9wYWRzX2ZsdXNoKSwgKGdzdF9jb2xsZWN0X3BhZHNfZXZlbnQpLAoJICAoZ3N0X2NvbGxlY3RfcGFkc19jaGFpbik6CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgUmVuYW1lIGdzdF9jb2xsZWNwYWRzX2ZvbygpID0+IGdzdF9jb2xsZWN0X3BhZHNfZm9vKCkuIERvY3VtZW50CgkgIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb25zIGFzIHVuaW1wbGVtZW50ZWQgKCMzMjA3NjYpLgoKMjAwNS0xMS0yMSAxMDo0MTowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RtZXNzYWdlLmM6IEltcHJvdmUgZG9jcyBmb3IgRFVSQVRJT04gbWVzc2FnZSAodXNhZ2Ugb2YgZHVyYXRpb24gcGFyYW1ldGVyKSAoIzMyMDExMykKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgSW1wcm92ZSBkb2NzIGZvciBEVVJBVElPTiBtZXNzYWdlICh1c2FnZSBvZiBkdXJhdGlvbiBwYXJhbWV0ZXIpCgkgICgjMzIwMTEzKQoKMjAwNS0xMS0yMSAxMDowNDoxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL3JhbmRvbS9tb3ZpbmctcGx1Z2luczoKCSAgdXBkYXRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUKCjIwMDUtMTEtMjEgMDk6NDQ6NDYgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBhZGQgbGF0ZXN0IC5wYyBmaWxlIHRvIHNwZWMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBsYXRlc3QgLnBjIGZpbGUgdG8gc3BlYwoKMjAwNS0xMS0yMCAxOToxMTowOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZGVkIHNlZ21lbnQgaGVscGVyIHN0cnVjdHVyZSBhbmQgbWV0aG9kcy4gTm90IGZ1bGx5IGltcGxlbWVudGVkIHlldC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svZ3N0L2dzdHNlZ21lbnQuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdGV2ZW50c19zdWl0ZSksCgkgIChtYWluKToKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3RzZWdtZW50LmM6IChnc3Rfc2VnbWVudF9pbml0KSwgKGdzdF9zZWdtZW50X3NldF9kdXJhdGlvbiksCgkgIChnc3Rfc2VnbWVudF9zZXRfc2VlayksIChnc3Rfc2VnbWVudF9zZXRfbmV3c2VnbWVudCksCgkgIChnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSksIChnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUpLAoJICAoZ3N0X3NlZ21lbnRfY2xpcCk6CgkgICogZ3N0L2dzdHNlZ21lbnQuaDoKCSAgQWRkZWQgc2VnbWVudCBoZWxwZXIgc3RydWN0dXJlIGFuZCBtZXRob2RzLiBOb3QgZnVsbHkgaW1wbGVtZW50ZWQKCSAgeWV0LgoJICBBZGRlZCBzZWdtZW50IGNoZWNrLgoKMjAwNS0xMS0yMCAxNzoxMjo0OSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjaGVjay9nc3QvZ3N0dmFsdWUuYzogQWRkIGEgZGVzZXJpYWxpc2F0aW9uIHRlc3QgZm9yIGZyYWN0aW9ucwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0dmFsdWUuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF92YWx1ZV9zdWl0ZSk6CgkgIEFkZCBhIGRlc2VyaWFsaXNhdGlvbiB0ZXN0IGZvciBmcmFjdGlvbnMKCSAgKiBleGFtcGxlcy9tZXRhZGF0YS9yZWFkLW1ldGFkYXRhLmM6IChtZXNzYWdlX2xvb3ApLAoJICAobWFrZV9waXBlbGluZSksIChtYWluKToKCSAgRml4IHVwIG1ldGFkYXRhIHJlYWRpbmcgc2FtcGxlLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpOgoJICBEZWJ1ZyBmb3JtYXQgZml4CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmVnb3RpYXRlKToKCSAgRG9uJ3QgdHJ5IGFuZCBmaXhhdGUgZW1wdHkgY2FwcwoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICBXcmFwIGluIEdfQkVHSU5fREVDTFMvR19FTkRfREVDTFMKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9jb2xsZWN0X2ZyYWN0aW9uKSwKCSAgKGdzdF92YWx1ZV9zZXRfZnJhY3Rpb24pLCAoZ3N0X3ZhbHVlX2dldF9mcmFjdGlvbl9kZW5vbWluYXRvciksCgkgIChnc3RfdmFsdWVfdHJhbnNmb3JtX3N0cmluZ19mcmFjdGlvbiksCgkgIChnc3RfdmFsdWVfY29tcGFyZV9mcmFjdGlvbik6CgkgIEFkZCBzb21lIGV4dHJhIGd1YXJkcyB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBlbmQgdXAKCSAgd2l0aCBhbiBpbnZhbGlkIGRlbm9taW5hdG9yIG9mIDAgaW4gYSBnc3RmcmFjdGlvbiBhbmQKCSAgdGhhdCBmcmFjdGlvbnMgYWx3YXlzIGdldCByZWR1Y2VkLgoKMjAwNS0xMS0yMCAxNDo1NjoxMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBjaGFuZ2Vsb2cgaW4gbGFzdCBjb21taXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggY2hhbmdlbG9nIGluIGxhc3QgY29tbWl0CgoyMDA1LTExLTIwIDE0OjUwOjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgRG9jIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICAqIGdzdC9nc3Rmb3JtYXQuYzoKCSAgKiBnc3QvZ3N0Zm9ybWF0Lmg6CgkgICogZ3N0L2dzdGluZGV4Lmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgIERvYyBmaXhlcy4KCjIwMDUtMTEtMjAgMTM6Mjg6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBNYWtlIGEgcHJvcGVyIGVudW0gb2YgdGhlIGZsYWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgTWFrZSBhIHByb3BlciBlbnVtIG9mIHRoZSBmbGFnLgoKMjAwNS0xMS0xOSAxODo1NzowMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZCB0eXBlIHRvIHF1YXJrIGFuZCB0eXBlIHRvIHN0cmluZyBjb252ZXJzaW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgKiBnc3QvZ3N0Zm9ybWF0LmM6IChfZ3N0X2Zvcm1hdF9pbml0aWFsaXplKSwgKGdzdF9mb3JtYXRfZ2V0X25hbWUpLAoJICAoZ3N0X2Zvcm1hdF90b19xdWFyayksIChnc3RfZm9ybWF0X3JlZ2lzdGVyKToKCSAgKiBnc3QvZ3N0Zm9ybWF0Lmg6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChfZ3N0X3F1ZXJ5X2luaXRpYWxpemUpLAoJICAoZ3N0X3F1ZXJ5X3R5cGVfZ2V0X25hbWUpLCAoZ3N0X3F1ZXJ5X3R5cGVfdG9fcXVhcmspLAoJICAoZ3N0X3F1ZXJ5X3R5cGVfcmVnaXN0ZXIpOgoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICBBZGQgdHlwZSB0byBxdWFyayBhbmQgdHlwZSB0byBzdHJpbmcgY29udmVyc2lvbnMuCgoyMDA1LTExLTE5IDE4OjMyOjAxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmggKEdTVF9CVUZGRVJfRkxBR19PUklHSU5BTCk6IFJlbW92ZWQuIEZpeGVzICMzMjAwOTcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RidWZmZXIuaCAoR1NUX0JVRkZFUl9GTEFHX09SSUdJTkFMKTogUmVtb3ZlZC4gRml4ZXMKCSAgIzMyMDA5Ny4KCjIwMDUtMTEtMTkgMTg6Mjg6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBNYWtlIG1lc3NhZ2UgaGFuZGxpbmcgb3ZlcnJpZGFibGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jbGFzc19pbml0KSwgKGdzdF9iaW5fcHJvdmlkZV9jbG9ja19mdW5jKSwKCSAgKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChiaW5fYnVzX2hhbmRsZXIpLAoJICAoZ3N0X2Jpbl9oYW5kbGVfbWVzc2FnZV9mdW5jKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgIE1ha2UgbWVzc2FnZSBoYW5kbGluZyBvdmVycmlkYWJsZS4KCjIwMDUtMTEtMTkgMTg6MjY6MzUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RwYWQuaCAoR1NUX1BBRF9JU19VU0FCTEUpOiBSZW1vdmVkLiBGaXhlcyAjMzIxMjM1LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmggKEdTVF9QQURfSVNfVVNBQkxFKTogUmVtb3ZlZC4gRml4ZXMgIzMyMTIzNS4KCjIwMDUtMTEtMTkgMTg6MTc6MjkgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RjbG9jay4qOiBDaGFuZ2UgcmVzb2x1dGlvbiB0byBiZSBhIEdzdENsb2NrVGltZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgICogZ3N0L2dzdGNsb2NrLmMgKEdzdENsb2NrLCBHc3RDbG9ja0NsYXNzKTogQ2hhbmdlIHJlc29sdXRpb24gdG8KCSAgYmUgYSBHc3RDbG9ja1RpbWUuCgkgIChnc3RfY2xvY2tfc2V0X3Jlc29sdXRpb24sIGdzdF9jbG9ja19nZXRfcmVzb2x1dGlvbik6IFJlc29sdXRpb24KCSAgaXMgYSBHc3RDbG9ja1RpbWUuIEZpeGVzICMzMjE3MTAuCgoyMDA1LTExLTE5IDE4OjA2OjU2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0Y2xvY2suaCAoR3N0Q2xvY2spOiBSZW1vdmUgb2Zmc2V0IHByb3BlcnR5LiBBZGQgaW50ZXJuYWxfY2FsaWJyYXRpb24gYW5kIGV4dGVybmFsX2NhbGlicmF0aW9uLiBGaXggcGFkZGluZy4gUGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGNsb2NrLmggKEdzdENsb2NrKTogUmVtb3ZlIG9mZnNldCBwcm9wZXJ0eS4gQWRkCgkgIGludGVybmFsX2NhbGlicmF0aW9uIGFuZCBleHRlcm5hbF9jYWxpYnJhdGlvbi4gRml4IHBhZGRpbmcuIFBhZAoJICBhbHNvIGJ5IEdzdENsb2NrVGltZSBzbyB3ZSBkb24ndCBydW4gaW50byBwcm9ibGVtcy4KCSAgKiBnc3QvZ3N0Y2xvY2suYyAoZ3N0X2Nsb2NrX3NldF9yYXRlX29mZnNldCk6IFJlbW92ZS4KCSAgKGdzdF9jbG9ja19nZXRfcmF0ZV9vZmZzZXQpOiBSZW1vdmUuCgkgIChnc3RfY2xvY2tfc2V0X3RpbWVfYWRqdXN0KTogUmVtb3ZlLiBGaXhlcyAjMzIxNzEyLgoKMjAwNS0xMS0xOSAxNzo1MDo1MiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmg6IGdzdC9nc3R1dGlscy5jIChnX3N0YXRpY19yZWNfY29uZF93YWl0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYyAoZ19zdGF0aWNfcmVjX2NvbmRfd2FpdCkKCSAgKGdfc3RhdGljX3JlY19jb25kX3RpbWVkX3dhaXQpOiBSZW1vdmVkLCBubyBsb25nZXIgbmVlZGVkLgoJICAqIGdzdC9nc3RiaW4uYzogUmVtb3ZlIHRlcnJpYmxlIGNvbnRpbnVlX3N0YXRlIHByb3RvdHlwZS4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5oIChnc3RfZWxlbWVudF9jb250aW51ZV9zdGF0ZSk6IE1ha2UgcHVibGljLgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKTogUmVtb3ZlZCwgcmVwbGFjZWQKCSAgYnkgY29udGludWVfc3RhdGUuIEZpeGVzICMzMTkzODkuCgoyMDA1LTExLTE5IDE3OjI4OjU4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0aW5kZXguaCAoR3N0SW5kZXhGaWx0ZXIpOiBBY3R1YWxseSBwYXNzIG9uIHRoZSB1c2VyX2RhdGEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RpbmRleC5oIChHc3RJbmRleEZpbHRlcik6IEFjdHVhbGx5IHBhc3Mgb24gdGhlIHVzZXJfZGF0YS4KCSAgUmVhbGx5IGZpeGVzICMxNjg0MzguIEhvd2V2ZXIgSSBkb24ndCBzZWUgYW55d2hlcmUgd2hlcmUgdGhlCgkgIGZpbHRlciBmdW5jdGlvbiBpcyBjYWxsZWQuLi4gc3R1cGlkIEdTdHJlYW1lci4uLgoKMjAwNS0xMS0xOSAxNzoyNjoyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGluZGV4LmggKEdzdEluZGV4KTogQWRkIGZpZWxkIGZvciB1c2VyX2RhdGFfZGVzdHJveS4gV2UgZG9uJ3QgaGF2ZSBhIGRpc3Bvc2UgZnVuY3Rpb24sIHNvIGl0IHdvbid0IGdldCBjYWxsZWQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RpbmRleC5oIChHc3RJbmRleCk6IEFkZCBmaWVsZCBmb3IgdXNlcl9kYXRhX2Rlc3Ryb3kuIFdlCgkgIGRvbid0IGhhdmUgYSBkaXNwb3NlIGZ1bmN0aW9uLCBzbyBpdCB3b24ndCBnZXQgY2FsbGVkIHdoZW4gdGhlCgkgIG9iamVjdCBpcyB1bnJlZmZlZCwgYnV0IG9oIHdlbGwhCgkgICogZ3N0L2dzdGluZGV4LmMgKGdzdF9pbmRleF9zZXRfZmlsdGVyX2Z1bGwpOiBOZXcgQVBJIGZ1bmN0aW9uLAoJICBhbGxvd3MgYSBkZXN0cm95IGZ1bmN0aW9uIHRvIGJlIHNldCBzbyB1c2VyX2RhdGEgY2FuIGJlIGZyZWVkLgoJICBGaXhlcyAjMTY4NDM4LgoJICAoZ3N0X2luZGV4X3NldF9maWx0ZXIpOiBDYWxsIGdzdF9pbmRleF9zZXRfZmlsdGVyX2Z1bGwuCgoyMDA1LTExLTE5IDE3OjA4OjIzICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9nc3QvZ3N0dmFsdWUuYyAodGVzdF9zdHJpbmcpOiBBZGQgdGVzdCBmb3IgYnVnICMxNjU2NTAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jICh0ZXN0X3N0cmluZyk6IEFkZCB0ZXN0IGZvciBidWcgIzE2NTY1MC4KCSAgKiBnc3QvZ3N0dmFsdWUuYyAoZ3N0X3N0cmluZ193cmFwKTogVHJ5aW5nIHRvIHNlcmlhbGl6ZSBhIE5VTEwKCSAgc3RyaW5nIHNob3VsZCBwcm9kdWNlIGFuIGVycm9yLCBnaXZlbiB0aGUgbGFjayBvZiBhIHdheSB0bwoJICByZXByZXNlbnQgTlVMTCBzdHJpbmdzLiBGaXhlcyAjMTY1NjUwLgoKMjAwNS0xMS0xOSAxNjo0NjozMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHZhbHVlLmg6IGdzdC9nc3R2YWx1ZS5jIChnc3RfdmFsdWVfYXJyYXlfYXBwZW5kX3ZhbHVlKSAoZ3N0X3ZhbHVlX2FycmF5X3ByZXBlbmRfdmFsdWUsIGdzdF92YWx1ZV9hcnJheV9nZXRfc2l6ZSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgICogZ3N0L2dzdHZhbHVlLmMgKGdzdF92YWx1ZV9hcnJheV9hcHBlbmRfdmFsdWUpCgkgIChnc3RfdmFsdWVfYXJyYXlfcHJlcGVuZF92YWx1ZSwgZ3N0X3ZhbHVlX2FycmF5X2dldF9zaXplKQoJICAoZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSk6IE5ldyBBUEksIGNvcGllZCBmcm9tCgkgIGdzdF92YWx1ZV9saXN0XyosIG9ubHkgb3BlcmF0ZXMgb24gYXJyYXlzLgoJICAoZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlLCBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlKQoJICAoZ3N0X3ZhbHVlX2xpc3RfY29uY2F0LCBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSkKCSAgKGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSk6IE9ubHkgb3BlcmF0ZSBvbiBsaXN0cy4gRml4ZXMgIzE1NjYzMy4KCSAgKiBnc3QvZ3N0dmFsdWUuYyAoZ3N0X3ZhbHVlX2luaXRfbGlzdF9vcl9hcnJheSk6IFJlbmFtZWQgZnJvbQoJICBpbml0X2xpc3QsIGJlY2F1c2UgaXQgd29ya3Mgb24gYm90aC4KCSAgKGNvcHlfZ2FycmF5X29mX2dzdHZhbHVlKTogUmVuYW1lZCBmcm9tIGdzdF92YWx1ZV9saXN0X2NvcHlfYXJyYXkuCgkgIChnc3RfdmFsdWVfY29weV9saXN0X29yX2FycmF5KTogUmVuYW1lZCBmcm9tIGNvcHlfbGlzdC4KCSAgKGdzdF92YWx1ZV9mcmVlX2xpc3Rfb3JfYXJyYXkpOiBSZW5hbWVkIGZyb20gZnJlZV9saXN0LgoJICAoZ3N0X3ZhbHVlX2NvbGxlY3RfbGlzdF9vcl9hcnJheSk6IFJlbmFtZWQgZnJvbSBjb2xsZWN0X2xpc3QuCgkgIChnc3RfdmFsdWVfbGNvcHlfbGlzdF9vcl9hcnJheSk6IFJlbmFtZWQgZnJvbSBsY29weV9saXN0LgoJICAoZ3N0X3ZhbHVlX2xpc3Rfb3JfYXJyYXlfcGVla19wb2ludGVyKTogUmVuYW1lZCBmcm9tCgkgIGxpc3RfcGVla19wb2ludGVyLgoJICAoX2dzdF92YWx1ZV9hcnJheV92YWx1ZV90YWJsZSwgX2dzdF92YWx1ZV9saXN0X3ZhbHVlX3RhYmxlKToKCSAgVXBkYXRlIHZhbHVlIHRhYmxlIGZ1bmN0aW9ucy4KCSAgKGdzdF92YWx1ZV9jb21wYXJlX2xpc3Rfb3JfYXJyYXkpOiBSZW5hbWVkIGZyb20gY29tcGFyZV9saXN0LgoKMjAwNS0xMS0xOSAxNjowNToxMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0dGFnbGlzdC5oOiBXaG9vcHMsIGZvcmVhY2ggZnVuY3Rpb24gcmV0dXJucyB2b2lkLiBBbHNvIGZpeCBzb21lIGNvbnN0bmVzcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0dGFnbGlzdC5oOiBXaG9vcHMsIGZvcmVhY2ggZnVuY3Rpb24gcmV0dXJucyB2b2lkLiBBbHNvIGZpeAoJICBzb21lIGNvbnN0bmVzcy4KCjIwMDUtMTEtMTkgMTU6NTE6NDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R0YWdsaXN0Lio6IE9wZXJhdGVzIG9uIGEgY29uc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oIChnc3RfdGFnX2xpc3RfZm9yZWFjaCk6IE9wZXJhdGVzIG9uIGEgY29uc3QKCSAgR3N0VGFnTGlzdCouIEZpeGVzICMxNDM0NzIuCgkgICogZ3N0L2dzdHN0cnVjdHVyZS5oOiBDbGFyaWZ5IHdoYXQgdGhlIGZvcmVhY2gvbWFwIGZ1bmN0aW9ucyBjYW4KCSAgb3IgY2FuJ3QgZG8gdG8gdGhlaXIgYXJndW1lbnRzLgoKMjAwNS0xMS0xOCAxOToyMTo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RjbG9jay5jOiBEb2MgYW5kIEFQSSBmaXhlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmM6IChnc3RfY2xvY2tfc2V0X2NhbGlicmF0aW9uKSwKCSAgKGdzdF9jbG9ja19nZXRfY2FsaWJyYXRpb24pOgoJICBEb2MgYW5kIEFQSSBmaXhlcy4KCSAgQ2FsbGlicmF0aW9uIGNhbiBiZSBzZXQgd2l0aCBpbnRlcm5hbCB0aW1lIGVxdWFsIHRvIGN1cnJlbnQKCSAgaW50ZXJuYWwgdGltZSB0b28uCgoyMDA1LTExLTE4IDE4OjU1OjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RlcnJvci4qOiBkb2N1bWVudAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXJyb3IuYzoKCSAgKiBnc3QvZ3N0ZXJyb3IuaDoKCSAgZG9jdW1lbnQKCjIwMDUtMTEtMTggMTg6Mzg6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9yYW5kb20vbW92aW5nLXBsdWdpbnM6CgkgIGRvY3VtZW50IG9uIHJlcXVpcmVtZW50cyBmb3IgbW92aW5nIHBsdWdpbnMgdG8gZ29vZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jdW1lbnQgb24gcmVxdWlyZW1lbnRzIGZvciBtb3ZpbmcgcGx1Z2lucyB0byBnb29kCgoyMDA1LTExLTE4IDE2OjI0OjU2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBBZGQgbmV0IHBrZ2NvbmZpZyBmaWxlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY29uZmlndXJlLmFjOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItbmV0LnBjLmluOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItbmV0LXVuaW5zdGFsbGVkLnBjLmluOgoJICAqIHBrZ2NvbmZpZy9NYWtlZmlsZS5hbTogQWRkIG5ldCBwa2djb25maWcgZmlsZXMuCgoyMDA1LTExLTE4IDE2OjA0OjI4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvOiBkb2NzIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6CgkgICogZ3N0L2dzdHRyYWNlLmM6CgkgICogZ3N0L2dzdHZhbHVlLmM6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIGRvY3MgZml4ZXMKCjIwMDUtMTEtMTggMTU6NTI6MjQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzogVHVybiBvZmYgZGVidWdnaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IFR1cm4gb2ZmIGRlYnVnZ2luZy4KCSAgKiBjaGVjay9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAodGVzdF9mdW5jdGlvbmluZyk6IEFzc2VydCB0aGF0IHRoZQoJICB0aW1lcyBjb25udmVyZ2Ugc29tZXdoYXQuIENhbid0IG1ha2UgYSByZWFsIHRlc3QuCgoyMDA1LTExLTE4IDE1OjMwOjE4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmMgKGRvX2xpbmVhcl9yZWdyZXNzaW9uKTogVXNlIGFsbCBpbnRlZ2VyIGFyaXRobWV0aWMuIFJldHVybiB0aGUgbWluaW11bSBvZiB0aGUgZG9tYWluLCB3aGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jIChkb19saW5lYXJfcmVncmVzc2lvbik6IFVzZSBhbGwKCSAgaW50ZWdlciBhcml0aG1ldGljLiBSZXR1cm4gdGhlIG1pbmltdW0gb2YgdGhlIGRvbWFpbiwgd2hpY2ggY2FuIGJlCgkgIHNldCBhcyAiaW50ZXJuYWwiIGZvciBnc3RfY2xvY2tfc2V0X2NhbGlicmF0aW9uLgoJICAoZ3N0X25ldF9jbGllbnRfY2xvY2tfb2JzZXJ2ZV90aW1lcyk6IENhbGwgX3NldF9jYWxpYnJhdGlvbi4KCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX25ldyk6IENhbGwgX3NldF9jYWxpYnJhdGlvbiBpbnN0ZWFkIG9mCgkgIHJhdGVfb2Zmc2V0LgoJICAqIGNoZWNrL25ldC9nc3RuZXRjbGllbnRjbG9jay5jICh0ZXN0X2Z1bmN0aW9uaW5nKTogVXNlIHRoZSByaWdodAoJICBhZGp1c3RtZW50IGFwaS4KCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgKiBnc3QvZ3N0Y2xvY2suYyAoZ3N0X2Nsb2NrX2dldF9jYWxpYnJhdGlvbikKCSAgKGdzdF9jbG9ja19zZXRfY2FsaWJyYXRpb24pOiBOZXcgZnVuY3Rpb25zLCBvYnNvbGV0ZSB0aGUgb25lcyBJCgkgIGFkZGVkIHllc3RlcmRheS4gRG9oLiBQcmVjaXNpb24gaXNzdWVzIG1lYW4gd2UgaGF2ZSB0byBleHRyYXBvbGF0ZQoJICBmcm9tIGEgcG9pbnQgaW4gdGhlIG1vcmUgcmVjZW50IHBhc3QgdGhhbiAxOTcwLgoJICAoZ3N0X2Nsb2NrX2dldF9yYXRlX29mZnNldCwgZ3N0X2Nsb2NrX3NldF9yYXRlX29mZnNldCk6IE1hcmsgYXMKCSAgb2Jzb2xldGUuCgkgIChnc3RfY2xvY2tfYWRqdXN0X3VubG9ja2VkKTogVXNlIHRoZSByaWdodCBjYWxpYnJhdGlvbiBkYXRhLgoKMjAwNS0xMS0xOCAxNDo0OToyOCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEFsc28gcmVzZXQgdGhlIC0+Y3VycmVudF8qIHZhbHVlcyBpbiBSRUFEWS0+UEFVU0VECgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIEFsc28gcmVzZXQgdGhlIC0+Y3VycmVudF8qIHZhbHVlcyBpbiBSRUFEWS0+UEFVU0VECgoyMDA1LTExLTE4IDE0OjEzOjI4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmMgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3RocmVhZCk6IFdob29wcywgY2hlY2sgdGhlIHJpZ2h0IGZkLiBBbHNvIGFkZCBzb21lIGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jIChnc3RfbmV0X2NsaWVudF9jbG9ja190aHJlYWQpOgoJICBXaG9vcHMsIGNoZWNrIHRoZSByaWdodCBmZC4gQWxzbyBhZGQgc29tZSBkZWJ1Z2dpbmcuCgkgIChnc3RfbmV0X2NsaWVudF9jbG9ja19vYnNlcnZlX3RpbWVzKTogQWRqdXN0IGZvciBpbnQ2NCBvZmZzZXQuCgkgIChkb19saW5lYXJfcmVncmVzc2lvbik6IEFkZCBhIGNyYXBsb2FkIG9mIGRlYnVnZ2luZy4gU3VidHJhY3Qgb2ZmCgkgIHRoZSBtaW5pbXVtIHZhbHVlcyBmcm9tIHRoZSBpbnB1dCBzZXJpZXMgdG8gZGlzY2FyZCB1bm5lZWRlZCBiaXRzLgoJICBVc2Ugb25seSBpbnQgYXJpdGhtZXRpYy4gVGhlcmUgaXMgc3RpbGwgZG91YmxlIGFyaXRobWV0aWMgd2hlbgoJICBjYWxjdWxhdGluZyB0aGUgaW50ZXJjZXB0IHRoYXQgbmVlZHMgZml4aW5nLiBSZXR1cm4gYm9vbGVhbiB0bwoJICBpbmRpY2F0ZSBzdWNjZXNzOyBGQUxTRSB3b3VsZCBtZWFuIHRoZSBkb21haW4gb3IgcmFuZ2UgaXMgdG9vCgkgIGdyZWF0LiBTdGlsbCBuZWVkcyBmaXhlcy4KCjIwMDUtMTEtMTggMTM6MTg6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBGb3IgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gc3RyZWFtIHRpbWUsIHdlIG5lZWQgdG8gc3VidHJhY3QgYWNjdW11bGF0ZWQgdGltZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgRm9yIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHN0cmVhbSB0aW1lLCB3ZSBuZWVkIHRvIHN1YnRyYWN0CgkgIGFjY3VtdWxhdGVkIHRpbWUuCgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2FzeW5jX3RocmVhZCk6CgkgIFJlbGVhc2UgbG9jayBiZWZvcmUgY2FsbGluZyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb2YgYXN5bmMKCSAgZW50cmllcy4KCjIwMDUtMTEtMTggMTE6NTc6MzAgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAoZ3N0X25ldF9jbGllbnRfY2xvY2tfY2xhc3NfaW5pdCk6IFBvcnQgZ29lcyBhbGwgdGhlIHdheSB0byBNQVhVSU5UMTYuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAoZ3N0X25ldF9jbGllbnRfY2xvY2tfY2xhc3NfaW5pdCk6CgkgIFBvcnQgZ29lcyBhbGwgdGhlIHdheSB0byBNQVhVSU5UMTYuCgkgICogZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzogTWFrZSB0aGUgcG9ydCByYW5nZSB0aGUgc2FtZSBhcwoJICBmb3IgdGhlIGtlcm5lbDogMCBhc3NpZ25zLCBvdGhlcndpc2UgcG9ydHMgYXJlIGxlc3MgdGhhbgoJICBNQVhVSU5UMTYuCgkgICogY2hlY2svbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOiBBZGFwdCBmb3IgMCA9PSBrZXJuZWwgYXNzaWducwoJICBwb3J0IGNoYW5nZS4KCSAgKiBjaGVjay9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAodGVzdF9mdW5jdGlvbmluZyk6IEFkZCB0aGUgc3RhcnQKCSAgb2YgYW5vdGhlciB0ZXN0LgoKMjAwNS0xMS0xOCAxMTowMzoxMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uKjogUmVtb3ZpbmcgYSBjbG9jayBwcm92aWRlciBmcm9tIGEgYmluLCB0cmlnZ2VycyBhIGNsb2NrIGxvc3QgbWVzc2FnZSBzbyB0aGF0IGEgbmV3IGNsb2NrIHdpbGwgYmUgc2VsZWN0ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcHJvdmlkZV9jbG9ja19mdW5jKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChiaW5fYnVzX2hhbmRsZXIpOgoJICAqIGdzdC9nc3RiaW4uaDoKCSAgUmVtb3ZpbmcgYSBjbG9jayBwcm92aWRlciBmcm9tIGEgYmluLCB0cmlnZ2VycyBhIGNsb2NrIGxvc3QgbWVzc2FnZQoJICBzbyB0aGF0IGEgbmV3IGNsb2NrIHdpbGwgYmUgc2VsZWN0ZWQuCgkgIEFkZGluZyBhIGNsb2NrIHRvIGEgYmluIHRyaWdnZXJzIGEgY2xvY2sgcHJvdmlkZXIgbWVzc2FnZS4KCSAgTWFrZSBzdXJlIHdlIHJlc2VsZWN0IGEgY2xvY2sgd2hlbiB3ZSByZWNlaXZlZCBhIGNsb2NrIGxvc3QgbWVzc2FnZS4KCSAgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVkIHRoZSBjbG9jay4KCjIwMDUtMTEtMTggMTA6NTQ6NTUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYyAoZ3N0X25ldF9jbGllbnRfY2xvY2tfbmV3KTogQWRqdXN0IHRoZSBjbG9jayBpbml0aWFsbHkgc28gaXQgcHJvZHVjZXMgdmFsdWVzIGFyb3VuZCB0aGUgYi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmMgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX25ldyk6IEFkanVzdAoJICB0aGUgY2xvY2sgaW5pdGlhbGx5IHNvIGl0IHByb2R1Y2VzIHZhbHVlcyBhcm91bmQgdGhlIGJhc2UgdGltZS4KCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX2NsYXNzX2luaXQpOiBUeXBvIGZpeC4KCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX3RocmVhZCk6IEFkZCBub3RlIG9uIHdoZW4gdGhlIHNvY2tldCBnZXRzCgkgIGNsb3NlZC4KCjIwMDUtMTEtMTcgMTg6NTA6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmM6IEZyZWUgcmVtb3RlIGFuZCBsb2NhbCB0aW1lIGFycmF5cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiAoZ3N0X25ldF9jbGllbnRfY2xvY2tfZmluYWxpemUpOgoJICBGcmVlIHJlbW90ZSBhbmQgbG9jYWwgdGltZSBhcnJheXMuCgoyMDA1LTExLTE3IDE4OjE4OjQxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiBGaXggY29tcGlsYXRpb24sIHVuaW5pdGlhbGl6ZWQgdmFycyBhbmQgYSBmb3Jnb3R0ZW4gY29udGludWUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9uZXQvZ3N0bmV0Y2xpZW50Y2xvY2suYzogKGRvX2xpbmVhcl9yZWdyZXNzaW9uKSwKCSAgKGdzdF9uZXRfY2xpZW50X2Nsb2NrX2RvX3NlbGVjdCksIChnc3RfbmV0X2NsaWVudF9jbG9ja190aHJlYWQpOgoJICBGaXggY29tcGlsYXRpb24sIHVuaW5pdGlhbGl6ZWQgdmFycyBhbmQgYSBmb3Jnb3R0ZW4gY29udGludWUuCgoyMDA1LTExLTE3IDE3OjU1OjE3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay86IEFkZCBhIG1vc3QgbWluaW1hbCB0ZXN0IGZvciB0aGUgbmV0IGNsaWVudCBjbG9jay4gTW9yZSB0byBjb21lIGxhdGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9NYWtlZmlsZS5hbSAoY2hlY2tfUFJPR1JBTVMpOgoJICAqIGNoZWNrL25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiBBZGQgYSBtb3N0IG1pbmltYWwgdGVzdCBmb3IgdGhlCgkgIG5ldCBjbGllbnQgY2xvY2suIE1vcmUgdG8gY29tZSBsYXRlci4KCSAgKiBnc3QvbmV0L2dzdG5ldC5oOgoJICAqIGdzdC9uZXQvTWFrZWZpbGUuYW06IEFkZCBuZXRjbGllbnRjbG9jay4KCSAgKiBnc3QvbmV0L2dzdG5ldGNsaWVudGNsb2NrLmg6CgkgICogZ3N0L25ldC9nc3RuZXRjbGllbnRjbG9jay5jOiBOZXcgZmlsZXMsIGltcGxlbWVudCBhbiB1bnRlc3RlZAoJICBHc3RDbG9jayB0aGF0IHRha2VzIGl0cyB0aW1lIGZyb20gYSBuZXR3b3JrIHRpbWUgcHJvdmlkZXIuCgkgIEltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBpbiBuZXR3b3JrLWNsb2NrLnNjbS4KCSAgKiB0ZXN0cy9uZXR3b3JrLWNsb2NrLnNjbSAoKndpbmRvdy1zaXplKik6IFJlbmFtZSBmcm9tCgkgICpxdWV1ZS1sZW5ndGgqLgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtIChuZXR3b3JrLXRpbWUpOgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2stdXRpbHMuc2NtIChxLXB1c2gpOiBVcGRhdGUgY2FsbGVycy4KCjIwMDUtMTEtMTcgMTY6MDI6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEFuZCB1bnJlZiB0aGUgY2hpbGQgdG9vLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9wcm92aWRlX2Nsb2NrX2Z1bmMpLAoJICAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25ldyk6CgkgIEFuZCB1bnJlZiB0aGUgY2hpbGQgdG9vLi4KCjIwMDUtMTEtMTcgMTQ6NTE6MTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFJlZmFjdG9yIHRoZSBzb3J0IGl0ZXJhdG9yIHNvIGl0IGNhbiBiZSB1c2VkIHdoaWxlIGhvbGRpbmcgdGhlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZGlzcG9zZSksIChnc3RfYmluX3Byb3ZpZGVfY2xvY2tfZnVuYyksCgkgIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV3KSwgKGdzdF9iaW5faXRlcmF0ZV9zb3J0ZWQpOgoJICBSZWZhY3RvciB0aGUgc29ydCBpdGVyYXRvciBzbyBpdCBjYW4gYmUgdXNlZCB3aGlsZSBob2xkaW5nIHRoZQoJICBMT0NLIHRvby4KCSAgTWFrZSBjbG9jayBzZWxlY3Rpb24gc2VsZWN0IGEgY2xvY2sgY2xvc2VzdCB0byB0aGUgc291cmNlLgoKMjAwNS0xMS0xNyAxMjozNjozMCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2dzdGNsb2NrLio6IEFub255bW91cyBzdHJ1Y3RzIGFyZSBhIGdjYyAoYW5kIHNvbWUgb3RoZXIgY29tcGlsZXJzKSBleHRlbnNpb24sIHNvIGRvbid0IHVzZSB0aGVtLiBTaW5jZSB0aGlzIGlzIG9uLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2luaXQpLCAoZ3N0X2Nsb2NrX2FkanVzdF91bmxvY2tlZCksCgkgIChnc3RfY2xvY2tfc2V0X3JhdGVfb2Zmc2V0KSwgKGdzdF9jbG9ja19nZXRfcmF0ZV9vZmZzZXQpOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBBbm9ueW1vdXMgc3RydWN0cyBhcmUgYSBnY2MgKGFuZCBzb21lIG90aGVyIGNvbXBpbGVycykgZXh0ZW5zaW9uLCBzbwoJICBkb24ndCB1c2UgdGhlbS4gU2luY2UgdGhpcyBpcyBvbmx5IGZvciBBQkktY29tcGF0aWJpbGl0eSwgYW5kIG91cgoJICBBUEkvQUJJIGZyZWV6ZSBpcyBvdmVyIGluIGEgZmV3IGRheXMsIHRoaXMgd2hvbGUgdGhpbmcgd2lsbCBvbmx5CgkgIGxhc3QgYSBmZXcgZGF5cywgc28gZG9uJ3QgYm90aGVyIHRyeWluZyB0byB0aGluayB1cCBhIG1lYW5pbmdmdWwKCSAgbmFtZSBmb3IgdGhlIHN0cnVjdC4KCjIwMDUtMTEtMTcgMTE6NTE6NDkgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RjbG9jay5oIChHc3RDbG9jayk6IEFkZCByYXRlIGFuZCBvZmZzZXQgcHJvcGVydGllcywgcHJlc2VydmluZyBBQkkgc3RhYmlsaXR5LiBBZGQgcmF0ZS9vZmZzZXQgYWNjZXNzb3JzLiBXaWxsIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0Y2xvY2suaCAoR3N0Q2xvY2spOiBBZGQgcmF0ZSBhbmQgb2Zmc2V0IHByb3BlcnRpZXMsCgkgIHByZXNlcnZpbmcgQUJJIHN0YWJpbGl0eS4gQWRkIHJhdGUvb2Zmc2V0IGFjY2Vzc29ycy4gV2lsbCBmaWxlIGJ1ZwoJICBmb3IgdGhlIGZyZWV6ZSBicmVhay4KCSAgKiBnc3QvZ3N0Y2xvY2suYyAoZ3N0X2Nsb2NrX2FkanVzdF91bmxvY2tlZCk6IEltcGxlbWVudCB1c2luZyByYXRlCgkgIGFuZCBvZmZzZXQsIHRyeWluZyB0byBrZWVwIHByZWNpc2lvbiBhbmQgYXZvaWRpbmcKCSAgdW5kZXJmbG93L292ZXJmbG93LgoJICAoZ3N0X2Nsb2NrX3NldF9yYXRlX29mZnNldCwgZ3N0X2Nsb2NrX2dldF9yYXRlX29mZnNldCk6IE5ldwoJICBmdW5jdGlvbnMuIE1ha2UgZ3N0X2Nsb2NrX3NldF90aW1lX2FkanVzdCBvYnNvbGV0ZS4KCSAgKGdzdF9jbG9ja19zZXRfdGltZV9hZGp1c3QpOiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBvYnNvbGV0ZS4KCSAgV2lsbCBmaWxlIGJ1ZyBzb29uLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDogTWFrZSB0aGUgQUJJLXN0YWJpbGl0eSBoYWNrCgkgIGdyZXBwYWJsZSBieSB1c2luZyBHU1RfUEFERElORy0xKzEuCgoyMDA1LTExLTE3IDExOjI1OjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvcmFuZG9tL05PVEVTLTAuMS4xOgoJKiBkb2NzL3JhbmRvbS9OT1RFUy0wLjIuMDoKCSogZG9jcy9yYW5kb20vVE9ETy1wb3N0LTAuMS4wOgoJKiBkb2NzL3JhbmRvbS9hcmNoOgoJKiBkb2NzL3JhbmRvbS9jb3JvdXRpbmVzOgoJKiBkb2NzL3JhbmRvbS9kZXNpZ246CgkqIGRvY3MvcmFuZG9tL2ZhY3RvcnlpbmZvOgoJKiBkb2NzL3JhbmRvbS9nYm9vbGVhbjoKCSogZG9jcy9yYW5kb20vcGFkYXJjaDoKCSogZG9jcy9yYW5kb20vc2VxdWVuY2U6CgkqIGRvY3MvcmFuZG9tL3N0YXRlLXRyYW5zaXRpb25zOgoJKiBkb2NzL3JhbmRvbS9zdGF0ZXM6CgkqIGRvY3MvcmFuZG9tL3N0YXRlcy5uZXc6CgkqIGRvY3MvcmFuZG9tL3N0YXRlcy5vbGQ6CgkqIGRvY3MvcmFuZG9tL3dhbGt0aHJvdWdoOgoJICByZW1vdmUgY29tcGxldGVseSBvdXRkYXRlZCByYW5kb20gZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGNvbXBsZXRlbHkgb3V0ZGF0ZWQgcmFuZG9tIGRvY3MKCjIwMDUtMTEtMTcgMDk6Mzc6NTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0bWVzc2FnZS5jOiBBc3NlcnRpb24gc2hvdWxkIGNoZWNrIGZvciBDTE9DS19MT1NULCBub3QgTkVXX0NMT0NLICgjMzIxNjQ4KS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJldmlld2VkIGJ5OiBUaW0tUGhpbGlwcCBNw7xsbGVyICA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3BhcnNlX2Nsb2NrX2xvc3QpOgoJICBBc3NlcnRpb24gc2hvdWxkIGNoZWNrIGZvciBDTE9DS19MT1NULCBub3QgTkVXX0NMT0NLICgjMzIxNjQ4KS4KCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5oOgoJICBEb24ndCB1c2UgYysrIHN0eWxlIGNvbW1lbnRzIGluIGhlYWRlcnMgKCMzMjE2MzgpLgoKMjAwNS0xMS0xNiAxODozNzo1NyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L25ldC9nc3RuZXR0aW1lcGFja2V0LmMgKGdzdF9uZXRfdGltZV9wYWNrZXRfc2VuZCk6IEZyZWUgYnVmZmVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvbmV0L2dzdG5ldHRpbWVwYWNrZXQuYyAoZ3N0X25ldF90aW1lX3BhY2tldF9zZW5kKTogRnJlZQoJICBidWZmZXIuCgoyMDA1LTExLTE2IDE4OjE2OjUxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6IENoZWNrIHRvIHNlZSB0aGF0IHRoZSB0aW1lIHByb3ZpZGVyIGFjdHVhbGx5IHByb3ZpZGVzIHRpbWVzLiBXb3JrcywgeW8hCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzogQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHRpbWUKCSAgcHJvdmlkZXIgYWN0dWFsbHkgcHJvdmlkZXMgdGltZXMuIFdvcmtzLCB5byEKCjIwMDUtMTEtMTYgMTg6MDk6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogRW5hYmxlIG1vcmUgdGVzdHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICBFbmFibGUgbW9yZSB0ZXN0cy4KCSAgKiBjaGVjay9lbGVtZW50cy9mYWtlc3JjLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIFNldCBlbGVtZW50IHRvIE5VTEwgYmVmb3JlIGRpc3Bvc2luZyBpdC4KCjIwMDUtMTEtMTYgMTc6NTM6NTQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIGdzdC9uZXQvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L25ldC9NYWtlZmlsZS5hbToKCSAgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXgKCjIwMDUtMTEtMTYgMTc6NTI6MDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9uZXQvOiBVc2UgdGhlIHRpbWVwYWNrZXQgc3R1ZmYgaW4gdGhlIHByb3ZpZGVyLCBpbmNsdWRlIGl0IGZyb20gZ3N0bmV0LmgsIGFuZCBhZGQgaXQgdG8gdGhlIGJ1aWxkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvbmV0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9uZXQvZ3N0bmV0Lmg6CgkgICogZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzoKCSAgKiBnc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5oOiBVc2UgdGhlIHRpbWVwYWNrZXQgc3R1ZmYgaW4gdGhlCgkgIHByb3ZpZGVyLCBpbmNsdWRlIGl0IGZyb20gZ3N0bmV0LmgsIGFuZCBhZGQgaXQgdG8gdGhlIGJ1aWxkLgoJICAqIGdzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5oOgoJICAqIGdzdC9uZXQvZ3N0bmV0dGltZXBhY2tldC5jOiBOZXcgZmlsZXMsIGFic3RyYWN0cyBvdXQgdGhlIHBhY2tldAoJICBzZW5kaW5nIGFuZCByZWNlaXZpbmcuCgoyMDA1LTExLTE2IDE3OjM1OjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IEVuYWJsZSB2YWxncmluZCBjaGVjay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIEVuYWJsZSB2YWxncmluZCBjaGVjay4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2FsbG9jX3BhcmVudCksCgkgIChnc3RfZmFrZV9zcmNfYWxsb2NfYnVmZmVyKToKCSAgRml4IG1lbWxlYWsuCgoyMDA1LTExLTE2IDE3OjIyOjM2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuYzogQ2FsbCBwYXJlbnQgZmluYWxpemUgdG9vLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvbmV0L2dzdG5ldHRpbWVwcm92aWRlci5jOiAoZ3N0X25ldF90aW1lX3Byb3ZpZGVyX2ZpbmFsaXplKToKCSAgQ2FsbCBwYXJlbnQgZmluYWxpemUgdG9vLgoKMjAwNS0xMS0xNiAxNzoxODozNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL01ha2VmaWxlLmFtOiBFbmFibGUgdmFsZ3JpbmQgY2hlY2sgdGhhdCBzaG91bGQgd29yayBmaW5lIG5vdy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIEVuYWJsZSB2YWxncmluZCBjaGVjayB0aGF0IHNob3VsZCB3b3JrIGZpbmUgbm93LgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9pbml0KToKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9pbml0KToKCSAgRml4IG1lbWxlYWtzIGluIHBhZCBhbGxvY2F0aW9uLgoKMjAwNS0xMS0xNiAxNjo0OTo0OSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L25ldC86IE5ldyBwYXJ0IG9mIGNvcmUgdG8gaG9sZCBuZXR3b3JrIGVsZW1lbnRzIGFuZCBvYmplY3RzLiBQdXQgaW4gY29yZSBiZWNhdXNlIGl0IGV4cG9zZXMgQVBJIHRoYXQgYXBwbGljYXRpb25zLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9uZXQvTWFrZWZpbGUuYW06CgkgICogZ3N0L25ldC9nc3RuZXQuaDogTmV3IHBhcnQgb2YgY29yZSB0byBob2xkIG5ldHdvcmsgZWxlbWVudHMgYW5kCgkgIG9iamVjdHMuIFB1dCBpbiBjb3JlIGJlY2F1c2UgaXQgZXhwb3NlcyBBUEkgdGhhdCBhcHBsaWNhdGlvbnMgd2FudAoJICB0byB1c2UuIFRoZSBsaWJyYXJ5IGlzIG5hbWVkIGxpYmdzdG5ldC10ZW1wbmFtZSByaWdodCBub3cgYmVjYXVzZQoJICBvZiB0aGUgZXhpc3RpbmcgbGliZ3N0bmV0IGluIGdzdC1wbHVnaW5zLWJhc2UuIFNvbHV0aW9uIGlzCgkgIHByb2JhYmx5IHRvIHJlbmFtZSB0aGUgb25lIGluIHBsdWdpbnMtYmFzZTsgd2lsbCBmaWxlIGEgYnVnIGZvcgoJICB0aGUgZnJlZXplIGJyZWFrLgoJICAqIGdzdC9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6CgkgICogZ3N0L25ldC9nc3RuZXR0aW1lcHJvdmlkZXIuaDogTmV3IG9iamVjdCB0byBleHBvcnQgYSBHc3RDbG9jaydzCgkgIGdldF90aW1lIGNhbGwgb3ZlciB0aGUgbmV0d29yay4KCSAgKiBjb25maWd1cmUuYWM6CgkgICogZ3N0L01ha2VmaWxlLmFtIChsaWJfTFRMSUJSQVJJRVMpOiBBZGQgZ3N0bmV0IHRvIHRoZSBidWlsZC4KCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9uZXQvZ3N0bmV0dGltZXByb3ZpZGVyLmM6IEEgbW9zdCBtaW5pbWFsIHRlc3Qgc3VpdGUuIFdpbGwKCSAgZ2V0IGFkZGl0aW9ucyBzaG9ydGx5LgoKMjAwNS0xMS0xNiAxNjowOTo0OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0cGFkLio6IGFkZCBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSBmdW5jdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgYWRkIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlIGZ1bmN0aW9ucwoJICAqIGdzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQpLAoJICAoZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2luaXQpOgoJICBhbmQgdXNlIHRoZW0KCjIwMDUtMTEtMTYgMTY6MDY6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IFJlbW92ZWQgd2FybmluZywgaXQncyBub3QgcmVhbHkgYW4gZXJyb3IgZWl0aGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3BhdXNlX3Rhc2spOgoJICBSZW1vdmVkIHdhcm5pbmcsIGl0J3Mgbm90IHJlYWx5IGFuIGVycm9yIGVpdGhlci4KCjIwMDUtMTEtMTYgMTQ6Mjc6MjAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IENoZWNrIGlmIHRoZSBjYXBzIGFyZSBOVUxMLCB0aGlzIGNhbiBoYXBwZW4gaWYgdGhlIGVsZW1lbnQgaXMgc2h1dHRpbmcgZG93biBhbmQgdGhlIHBhZCAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZiksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZXZlbnQpOgoJICBDaGVjayBpZiB0aGUgY2FwcyBhcmUgTlVMTCwgdGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBlbGVtZW50CgkgIGlzIHNodXR0aW5nIGRvd24gYW5kIHRoZSBwYWQgY2FwcyBhcmUgc2V0IHRvIE5VTEwuCgoyMDA1LTExLTE2IDEyOjU3OjUxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOgoJICBmaXggcGFkIHRlbXBhbHRlIGxlYWsgaW4gdGVlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggcGFkIHRlbXBhbHRlIGxlYWsgaW4gdGVlCgoyMDA1LTExLTE2IDEyOjQwOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IHVzZSBnc3Rfb2JqZWN0X3JlZiB3aGVuIHNldHRpbmcgdGhlIHBhZCB0ZW1wbGF0ZTsgdGhpcyB3aWxsIHRyaWdnZXIgdGhlIHBhZCB0ZW1wbGF0ZSBsZWFrcyBvbiBHTGliIDIuNiBhbmQgdGhlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuYzogKGdfdmFsdWVfZHVwX2dzdF9vYmplY3QpOgoJICAqIGdzdC9nbGliLWNvbXBhdC5oOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X3Byb3BlcnR5KToKCSAgdXNlIGdzdF9vYmplY3RfcmVmIHdoZW4gc2V0dGluZyB0aGUgcGFkIHRlbXBsYXRlOyB0aGlzIHdpbGwKCSAgdHJpZ2dlciB0aGUgcGFkIHRlbXBsYXRlIGxlYWtzIG9uIEdMaWIgMi42IGFuZCB0aGUgc2xhdmVzCgoyMDA1LTExLTE2IDEyOjI1OjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IHJlbW92ZSBmdW5jdGlvbnMgY29waWVkIGZyb20gR0xpYiAyLjYKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dsaWItY29tcGF0LmM6IChnc3RfZmxhZ3NfZ2V0X2ZpcnN0X3ZhbHVlKToKCSAgKiBnc3QvZ2xpYi1jb21wYXQuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSAgcmVtb3ZlIGZ1bmN0aW9ucyBjb3BpZWQgZnJvbSBHTGliIDIuNgoKMjAwNS0xMS0xNiAxMToyOTo1NyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L01ha2VmaWxlLmFtOiBEb24ndCBsaW5rIGFnYWluc3QgVkFMR1JJTkRfTElCUy4gVGhhdCB3YXMgYWx3YXlzIHRoZSB3cm9uZyB0aGluZyB0byBkbywgYnV0IG9ubHkgYnJlYWtzIHdpdGggbmV3ZXIgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgRG9uJ3QgbGluayBhZ2FpbnN0IFZBTEdSSU5EX0xJQlMuIFRoYXQgd2FzIGFsd2F5cyB0aGUgd3JvbmcgdGhpbmcgdG8KCSAgZG8sIGJ1dCBvbmx5IGJyZWFrcyB3aXRoIG5ld2VyIHZhbGdyaW5kIHZlcnNpb25zLiBXZSdyZSBub3QgYQoJICB2YWxncmluZCB0b29sLCB3ZSBoYXZlIG5vIGxpbmstdGltZSBkZXBlbmRlbmNpZXMgb24gbGliY29yZWdyaW5kLgoKMjAwNS0xMS0xNiAxMTowNjowNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IHNvbWUgZGVidWcgY2hhbmdlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZGVmYXVsdF9uZWdvdGlhdGUpOgoJICBzb21lIGRlYnVnIGNoYW5nZXMKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICB0eXBvIGZpeGVzCgoyMDA1LTExLTE1IDIzOjUzOjA4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIGdzdC9nc3RxdWV1ZS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgUmV2ZXJ0IGFsbCB0aGVzZSB1bnJlZnMsIHRoZXkgZG9uJ3QgZXZlbiBwYXNzIG1ha2UgY2hlY2sgIQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmV2ZXJ0IGFsbCB0aGVzZSB1bnJlZnMsIHRoZXkgZG9uJ3QgZXZlbiBwYXNzIG1ha2UgY2hlY2sgIQoKMjAwNS0xMS0xNSAxOTo0ODo0MCArMDAwMCAgSm9oYW4gRGFobGluIDxqb2hhbkBnbm9tZS5vcmc+CgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSogZ3N0L2dzdHF1ZXVlLmM6CgkqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICBBbmQgZ3N0X29iamVjdF91bnJlZiBoZXJlIHRvbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQW5kIGdzdF9vYmplY3RfdW5yZWYgaGVyZSB0b28KCjIwMDUtMTEtMTUgMTk6MzE6MDUgKzAwMDAgIEpvaGFuIERhaGxpbiA8am9oYW5AZ25vbWUub3JnPgoKCSAgZ3N0LzogRnJlZSBwYWQgdGVtcGxhdGVzLCBmaXhlcyBhIGNvdXBsZSBvZiBsZWFrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2luaXQpOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9pbml0KToKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9pbml0KToKCSAgRnJlZSBwYWQgdGVtcGxhdGVzLCBmaXhlcyBhIGNvdXBsZSBvZiBsZWFrcy4KCjIwMDUtMTEtMTUgMTk6MjQ6NDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IEdTVF9QQURfUEFEX1RFTVBMQVRFKHBhZCkgZ2V0cyB0aGUgcGFkIHRlbXBsYXRlLCB3aGlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmV2aWV3ZWQgYnk6IFRpbS1QaGlsaXBwIE3DvGxsZXIgIDx0aW0gYXQgY2VudHJpY3VsYXIgZG90IG5ldD4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF9wcm9wZXJ0eSk6CgkgIEdTVF9QQURfUEFEX1RFTVBMQVRFKHBhZCkgZ2V0cyB0aGUgcGFkIHRlbXBsYXRlLCB3aGlsZQoJICBHU1RfUEFEX1RFTVBMQVRFKHBhZCkgZG9lcyBhIGNhc3QuIFdlIHdhbnQgdGhlIGZvcm1lciBoZXJlLgoJICAoIzMyMTQ1MikKCjIwMDUtMTEtMTUgMTg6MzQ6MjggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuYzogU21hbGwgZG9jIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgIFNtYWxsIGRvYyB1cGRhdGUuCgoyMDA1LTExLTE1IDE3OjU3OjUxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9zZXRfYmFzZV90aW1lKTogQWRkIGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMTUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfc2V0X2Jhc2VfdGltZSk6IEFkZCBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmMgKGdzdF9waXBlbGluZV9zZXRfbmV3X3N0cmVhbV90aW1lKTogRG9jdW1lbnQKCSAgdXNpbmcgR1NUX0NMT0NLX1RJTUVfTk9ORSB0byBkaXNhYmxlIGJhc2UgdGltZSBtYW5hZ2VtZW50LgoJICAoZG9fcGlwZWxpbmVfc2VlaywgZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSk6IERvbid0IHJlc2V0IHN0cmVhbQoJICB0aW1lIGlmIGl0IHdhcyBOT05FIGJlZm9yZS4KCSAgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOiBPbmx5IG11bmdlIHRoZSBiYXNlIHRpbWUgaWYKCSAgc3RyZWFtX3RpbWUgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORS4KCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYyAodGVzdF9iYXNlX3RpbWUpOiBQdW50IGFyb3VuZCB0aGUKCSAgcHJvYmxlbSBvZiB0aGUgcHJvYmUgbm90IGJlaW5nIGNhbGxlZCwgYmVjYXVzZSB0aGF0J3Mgbm90IHRoZQoJICBpc3N1ZSBJJ20gbG9va2luZyBhdC4gQWRkIGEgY2hlY2sgdGhhdCBzZXR0aW5nIHN0cmVhbV90aW1lIHRvIE5PTkUKCSAgZGlzYWJsZXMgYmFzZSB0aW1lIG1hbmFnZW1lbnQuCgoyMDA1LTExLTE1IDE3OjE4OjEwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogc2VnbWVudF9zdG9wID09IC0xIGF0IHN0YXJ0dXAuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIHNlZ21lbnRfc3RvcCA9PSAtMSBhdCBzdGFydHVwLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKToKCSAgSW5pdCBzZWdtZW50IHZhbHVlcyBhdCBzdGFydC4KCjIwMDUtMTEtMTUgMTY6NTI6NDYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jICh0ZXN0X2Jhc2VfdGltZSk6IFB1bnQgYXJvdW5kIHRoZSBwcm9ibGVtIG9mIHRoZSBwcm9iZSBub3QgYmVpbmcgY2FsbGVkLCBiZWNhdXNlIHRoYXQncyBub3QgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYyAodGVzdF9iYXNlX3RpbWUpOiBQdW50IGFyb3VuZCB0aGUKCSAgcHJvYmxlbSBvZiB0aGUgcHJvYmUgbm90IGJlaW5nIGNhbGxlZCwgYmVjYXVzZSB0aGF0J3Mgbm90IHRoZQoJICBpc3N1ZSBJJ20gbG9va2luZyBhdC4uLgoKMjAwNS0xMS0xNSAxNjo0NzowNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IDAgc2VnbWVudCB2YWx1ZXMgYXJlIDAgaW4gYW55IGZvcm1hdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCk6CgkgIDAgc2VnbWVudCB2YWx1ZXMgYXJlIDAgaW4gYW55IGZvcm1hdC4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fZXZlbnQpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgUGFyc2UgbmV3c2VnbWVudCBjb3JyZWN0bHkgaW4gYmFzZXRyYW5zZm9ybQoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCk6CgkgIFN5bmMgdG8gY2xvY2sgdXNpbmcgdXBkYXRlZCBzZWdtZW50IHZhbHVlcy4KCjIwMDUtMTEtMTUgMTY6Mjc6MDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jICh0ZXN0X2Jhc2VfdGltZSk6IEFkZCBjaGVjayB0aGF0IHRoZSBiYXNlIHRpbWUgYW5kIHN0cmVhbSB0aW1lIGFyZSByZXNldCBjb3JyZWN0bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jICh0ZXN0X2Jhc2VfdGltZSk6IEFkZCBjaGVjayB0aGF0IHRoZQoJICBiYXNlIHRpbWUgYW5kIHN0cmVhbSB0aW1lIGFyZSByZXNldCBjb3JyZWN0bHkuCgoyMDA1LTExLTE1IDE1OjQ0OjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogU29tZSBtb3JlIFRPRE8gaXRlbXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFNvbWUgbW9yZSBUT0RPIGl0ZW1zLgoKMjAwNS0xMS0xNSAxMjozNTo0NSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuYyAoZ3N0X2Zha2Vfc3JjX2NyZWF0ZSk6IEl0J3Mgbm90IGFuIGVycm9yIGlmIHRoZSB1c2VyIHNlbGVjdGVkICJubyBjbG9jayIgYXMgdGhlIGNsb2NraW5nIG1lLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmMgKGdzdF9mYWtlX3NyY19jcmVhdGUpOiBJdCdzIG5vdCBhbgoJICBlcnJvciBpZiB0aGUgdXNlciBzZWxlY3RlZCAibm8gY2xvY2siIGFzIHRoZSBjbG9ja2luZyBtZXRob2QuCgoyMDA1LTExLTE1IDEyOjI5OjA3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYyAodGVzdF9iYXNlX3RpbWUpOiBOZXcgdGVzdCBmb3IgYnVmZmVyIHRpbWVzdGFtcHMgd2l0aCBsaXZlIGNhcHR1cmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTE1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jICh0ZXN0X2Jhc2VfdGltZSk6IE5ldyB0ZXN0IGZvciBidWZmZXIKCSAgdGltZXN0YW1wcyB3aXRoIGxpdmUgY2FwdHVyZS4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jIChnc3RfZmFrZV9zcmNfY3JlYXRlKTogSWYgdGhlIGRhdGFyYXRlCgkgIGlzIDAgYnV0IHdlIGFyZSBhIGxpdmUgc291cmNlLCB0aW1lc3RhbXAgdGhlIGJ1ZmZlcnMgdXNpbmcgdGhlCgkgIGVsZW1lbnQncyBjbG9jay4KCjIwMDUtMTEtMTQgMTU6MTU6NDMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIG1vcmUgc2VjdGlvbiBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGVycm9yLmM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICAqIGdzdC9nc3R4bWwuYzoKCSAgbW9yZSBzZWN0aW9uIGRvY3MKCjIwMDUtMTEtMTQgMTQ6NDU6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjb21tb24vZ3N0LnN1cHA6IGFkZCBzdXBwcmVzc2lvbnMgZnJvbSBXaW0ncyBEZWJpYW4gbWFjaGluZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb21tb24vZ3N0LnN1cHA6CgkgIGFkZCBzdXBwcmVzc2lvbnMgZnJvbSBXaW0ncyBEZWJpYW4gbWFjaGluZQoKMjAwNS0xMS0xNCAxNDozNjoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb21tb24vZ3N0LnN1cHA6IGFkZCBzdXBwcmVzc2lvbnMgZnJvbSBBbmR5J3MgQU1ENjQgVWJ1bnR1IG1hY2hpbmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29tbW9uL2dzdC5zdXBwOgoJICBhZGQgc3VwcHJlc3Npb25zIGZyb20gQW5keSdzIEFNRDY0IFVidW50dSBtYWNoaW5lCgoyMDA1LTExLTE0IDEyOjQzOjQzICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2FjdGl2ZSk6IENoYW5nZSBkb2NzOyBwYXJlbnQncwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2FjdGl2ZSk6IENoYW5nZSBkb2NzOyBwYXJlbnQncwoJICBTVEFURV9MT0NLIG5vdCBuZWNlc3NhcnkuIEZpeGVzICMzMTE0ODkuCgoyMDA1LTExLTE0IDEyOjE3OjQ2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXJyb3IuYyAoRklMRV9BX0JVRyk6IEJlIHBvbGl0ZSAqYW5kKiBoZWxwZnVsLiBGaXhlcyAjMzA1MjkxLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZXJyb3IuYyAoRklMRV9BX0JVRyk6IEJlIHBvbGl0ZSAqYW5kKiBoZWxwZnVsLiBGaXhlcwoJICAjMzA1MjkxLgoKMjAwNS0xMS0xNCAxMTo1ODo0NCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGluZGV4LmMgKGdzdF9pbmRleF9hZGRfb2JqZWN0KTogTm90ZSBpbiB0aGUgZG9jcyB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0aW5kZXguYyAoZ3N0X2luZGV4X2FkZF9vYmplY3QpOiBOb3RlIGluIHRoZSBkb2NzIHRoYXQKCSAgdGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQuCgoyMDA1LTExLTE0IDEwOjQ5OjM1ICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogUmVmIHRoZSBzb3VyY2UgcGFkIGNhcHMgd2hpbGUgd2UgbmVlZCB0aGVtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xNCAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcmVwYXJlX291dHB1dF9idWYpOgoJICBSZWYgdGhlIHNvdXJjZSBwYWQgY2FwcyB3aGlsZSB3ZSBuZWVkIHRoZW0uCgkgIEZpeGVzICgjMzIxMzg2KQoKMjAwNS0xMS0xMiAxMDoyMzo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9waXBlbGluZXMvLmdpdGlnbm9yZToKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzLy5naXRpZ25vcmU6CgkgIGlnbm9yZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgbW9yZQoKMjAwNS0xMS0xMiAxMDowNDowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHVwZGF0ZSB3aW4zMiBmaWxlcyBmb3IgSEVBRAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHdpbjMyIGZpbGVzIGZvciBIRUFECgoyMDA1LTExLTEyIDEwOjAzOjA4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3R0YXNrLmM6CgkgIGRlYnVnIHRhc2sgam9pbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGVidWcgdGFzayBqb2luCgoyMDA1LTExLTEyIDEwOjAwOjAzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvbWFudWFsL2FwcGVuZGl4LXF1b3Rlcy54bWw6CgkgIGZvdW5kIGFub3RoZXIgcXVvdGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZvdW5kIGFub3RoZXIgcXVvdGUKCjIwMDUtMTEtMTEgMjA6MTI6NDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGRlZCBzb21lIGRvY3MgZm9yIEdzdENvbGxlY3REYXRhLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBBZGRlZCBzb21lIGRvY3MgZm9yIEdzdENvbGxlY3REYXRhLgoJICAqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSAgU29tZSBzbWFsbCBjb2RlIGV4YW1wbGUgZml4LgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDoKCSAgRG9jdW1lbnQgc29tZSBtb3JlLgoKMjAwNS0xMS0xMSAxOToyNjozNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBoZWFkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIGhlYWQKCj09PSByZWxlYXNlIDAuOS41ID09PQoKMjAwNS0xMS0xMSAxOToyNDozMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICByZWxlYXNpbmcgMC45LjUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbGVhc2luZyAwLjkuNQoKMjAwNS0xMS0xMSAxODoyNTo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogQ29weSBtb3JlIGZsYWdzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChfZ3N0X2J1ZmZlcl9jb3B5KToKCSAgQ29weSBtb3JlIGZsYWdzLgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19pc19lcXVhbCk6CgkgIEZpeCBzb21lIGRvY3MuCgkgIE1ha2UgX2lzX2VxdWFsIGZhc3QgaW4gdGhlIHRyaXZpYWwgY2FzZXMuCgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oOgoJICBNb3JlIGRvY3MuIFNwaWZpZnkgLmggZmlsZS4KCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgU21hbGwgZG9jIHVwZGF0ZS4KCjIwMDUtMTEtMTEgMTc6MTY6MTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICBVcGRhdGUgLnBvIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBVcGRhdGUgLnBvIGZpbGVzCgoyMDA1LTExLTExIDE2OjM3OjExICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBTbWFsbCBjbGVhbnVwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZiksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlcik6CgkgIFNtYWxsIGNsZWFudXBzLgoJICBJZiB3ZSdyZSBwcm9jZXNzaW5nIGEgYnVmZmVyIGFuZCBuZWVkIHRvIGFsbG9jYXRlIGFuIG91dHB1dAoJICBidWZmZXIsIHdlIGNhbm5vdCBhY2NlcHQgYSBmb3JtYXQgY2hhbmdlLiBJZiB3ZSBkaWQgZ2V0IGEKCSAgZm9ybWF0IGNoYW5nZSwgd2UgaGF2ZSB0byBhbGxvYyBhIGJ1ZmZlciBvdXJzZWx2ZXMgb2YgdGhlCgkgIHJpZ2h0IHNpemUuCgoyMDA1LTExLTExIDE2OjM0OjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBXaGlsZSBjaGVja2luZyB0aGUgZmxhZyBmb3IgcmVlbnRyYW5jeSBpbiB0aGUgZ3N0Y2FwcyBmdW5jdGlvbiBpcyBuaWNlIHRvIGRldGVjdCByZWN1cnNpdmUgaW52b2NhdGlvbnMsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZ2V0X2NhcHMpLCAoZ3N0X3BhZF9wZWVyX2dldF9jYXBzKToKCSAgV2hpbGUgY2hlY2tpbmcgdGhlIGZsYWcgZm9yIHJlZW50cmFuY3kgaW4gdGhlIGdzdGNhcHMgZnVuY3Rpb24KCSAgaXMgbmljZSB0byBkZXRlY3QgcmVjdXJzaXZlIGludm9jYXRpb25zLCBpdCBhbHNvIG1ha2VzIGl0CgkgIGltcG9zc2libGUgdG8gY2FsbCBnZXRjYXBzIGZyb20gbXVsdGlwbGUgdGhyZWFkcywgd2hpY2ggbXVzdCBiZQoJICBwb3NzaWJsZS4gU28sIGNoZWNraW5nIGZvciByZWN1cnNpdmUgY2FsbHMgaGFzIHRvIGdvLgoKMjAwNS0xMS0xMSAxNToxOTozNyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRG9uJ3Qgc3luYyBvbiBidWZmZXJzIHRoYXQgZmFsbCBwYXJ0aWFsbHkgb3V0c2lkZSBvdXIgY3VycmVudCBzZWdtZW50LiBQcmV2ZW50cyBhbiBhc3NlcnRpb24gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpOgoJICBEb24ndCBzeW5jIG9uIGJ1ZmZlcnMgdGhhdCBmYWxsIHBhcnRpYWxseSBvdXRzaWRlIG91ciBjdXJyZW50CgkgIHNlZ21lbnQuIFByZXZlbnRzIGFuIGFzc2VydGlvbiBmYWlsdXJlL2Fib3J0IHBsYXlpbmcgc29tZSBmaWxlcy4KCjIwMDUtMTEtMTAgMTg6MTU6MjQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RiaW4uYyAodGVzdF9tZXNzYWdlX3N0YXRlX2NoYW5nZWRfY2hpbGRyZW4pOiBTdHlsZSBmaXguLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9nc3QvZ3N0YmluLmMgKHRlc3RfbWVzc2FnZV9zdGF0ZV9jaGFuZ2VkX2NoaWxkcmVuKTogU3R5bGUKCSAgZml4Li4KCSAgKiBnc3QvZ3N0YnVzLmMgKHBvbGxfZGVzdHJveSwgcG9sbF9mdW5jLCBnc3RfYnVzX3BvbGwpOiBJbXBsZW1lbnQKCSAgZ3N0X2J1c19wb2xsIHdpdGggdGhlIHNpZ25hbCB3YXRjaC4gRW5zdXJlcyB0aGF0IHBvbGwgYW5kIGEgc2lnbmFsCgkgIHdhdGNoIHNlZSB0aGUgc2FtZSBtZXNzYWdlcy4KCSAgKiBjaGVjay9nc3QvZ3N0YnVzLmMgKHRlc3Rfd2F0Y2hfd2l0aF9wb2xsKTogTmV3IHRlc3QsIGNoZWNrcyB0aGF0CgkgIGEgcG9sbCBhbmQgYSB3YXRjaCBhdCB0aGUgc2FtZSB0aW1lIGdldCB0aGUgc2FtZSBtZXNzYWdlcy4KCjIwMDUtMTEtMTAgMTc6Mzc6MzkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogRG9uJ3QgY2FsbCBnc3RfY2Fwc19kb19zaW1wbGlmeSAtIGl0IGRvZXNuJ3QgcmVzcGVjdCBvcmRlciBvZiBjYXBzIGFuZCBpdCdzIG5vdCBuZWVkZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fY2Fwcyk6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2ludGVyc2VjdCk6CgkgIERvbid0IGNhbGwgZ3N0X2NhcHNfZG9fc2ltcGxpZnkgLSBpdCBkb2Vzbid0IHJlc3BlY3Qgb3JkZXIgb2YgY2FwcwoJICBhbmQgaXQncyBub3QgbmVlZGVkLgoKMjAwNS0xMS0xMCAxNTowNzo0NiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFVwZGF0ZWQgdG9kby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgVXBkYXRlZCB0b2RvLgoKMjAwNS0xMS0xMCAxNDo0NToyNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlLzogSW1wbGVtZW50IGNsb2NrIHN5bmMgaW4gYmFzZSBjbGFzcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3dhaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSk6CgkgIEltcGxlbWVudCBjbG9jayBzeW5jIGluIGJhc2UgY2xhc3MuCgoyMDA1LTExLTEwIDEyOjMyOjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS5jOiBGb3J3YXJkLXBvcnQgYSAwLjggcGF0Y2ggdG8gaGFuZGxlIGVzY2FwZWQgc3BhY2VzIGluIHN0cnVjdHVyZSBzdHJpbmcsICAgICAgICAgIHNvIHRoYXQgZ3N0X3BhcnNlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBieTogVGltLVBoaWxpcHAgTcO8bGxlciA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9wYXJzZV9maWVsZCksCgkgIChnc3Rfc3RydWN0dXJlX2Zyb21fc3RyaW5nKToKCSAgRm9yd2FyZC1wb3J0IGEgMC44IHBhdGNoIHRvIGhhbmRsZSBlc2NhcGVkIHNwYWNlcyBpbiBzdHJ1Y3R1cmUgc3RyaW5nLCAgICAgICAgICBzbyB0aGF0IGdzdF9wYXJzZV9sYXVuY2goKSBjYW4gZGVhbCB3aXRoIHNwYWNlcyBpbiBmaWx0ZXJlZCBsaW5rCgkgIGNhcHMgKGZpeGVzICMxNjQ0NzkpCgkgICogY2hlY2svZ3N0L2NhcHNsaXN0Lmg6CgkgICogY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBhZGQgdW5pdCB0ZXN0cyBmb3IgdGhpcyBjaGFuZ2UKCjIwMDUtMTEtMTAgMTE6MTc6MjYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBGaXggZG9jcywgbW92ZSBzb21lIFNUQVRFIG1hY3JvcyB0byBwcml2YXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3RlbGVtZW50LmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgRml4IGRvY3MsIG1vdmUgc29tZSBTVEFURSBtYWNyb3MgdG8gcHJpdmF0ZS4KCjIwMDUtMTEtMTAgMTA6MTc6MDEgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIGdzdC9nc3RxdWVyeS5jOgoJKiBnc3QvZ3N0cXVlcnkuaDoKCSAgRnVydGhlciBpbXByb3ZlIHF1ZXJ5IGRvY3MuIFN0aWxsIG5vdCBoYXBweSB3aXRoIHRoaXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGdXJ0aGVyIGltcHJvdmUgcXVlcnkgZG9jcy4gU3RpbGwgbm90IGhhcHB5IHdpdGggdGhpcy4KCjIwMDUtMTEtMTAgMDk6MTk6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogQWRkZWQgY2hlY2sgZm9yIGJ1ZyAjMzE3MzQxCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2dob3N0X3BhZF9zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrIGZvciBidWcgIzMxNzM0MQoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIFNvbWUgbW9yZSBzcGlmZmlmeWluZy4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9naG9zdF9wYWRfZG9fbGluayk6CgkgIENhbGwgcGVlciBsaW5rZnVuY3Rpb24gaWYgd2UgYXJlIGEgc291cmNlIHBhZC4gVG90YWxseSBmaXhlcwoJICAjMzE3MzQxCgkgICogZ3N0L2dzdHBhZC5jOgoJICBVcGRhdGUgZG9jcywgc291cmNlIHBhZHMgc2hvdWxkIGNhbGwgdGhlIHBlZXIgbGlua2Z1bmN0aW9uCgkgIHNvIHRoZXkgY2FuIGF0b21pY2FsbHkgcGVyZm9ybSB0aGUgcGFkIGxpbmsuCgoyMDA1LTExLTA5IDE5OjMyOjMyICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBnc3QvZ3N0cXVlcnkuYzoKCSAgSW1wcm92ZS9maXggZG9jdW1lbnRhdGlvbiBmb3IgR3N0UXVlcnkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBJbXByb3ZlL2ZpeCBkb2N1bWVudGF0aW9uIGZvciBHc3RRdWVyeS4KCSAgVGhpcyBzdGlsbCBuZWVkcyBzb21lIG1vcmUgd29yayB0byBleHBsYWluIHdoYXQgdGhlIHF1ZXJpZXMgYWN0dWFsbHkgbWVhbi4KCjIwMDUtMTEtMDkgMTg6NDE6NTMgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIFNsaWdodGx5IHBvbGlzaCBkb2NzIGZvciBHc3RBZGFwdGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgU2xpZ2h0bHkgcG9saXNoIGRvY3MgZm9yIEdzdEFkYXB0ZXIuCgoyMDA1LTExLTA5IDE4OjEwOjUzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1ZmZlci4qOiBVYmVyLXNwaWZmeS1zcGlmZmlmeSBzb21lIG1vcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIFViZXItc3BpZmZ5LXNwaWZmaWZ5IHNvbWUgbW9yZS4KCjIwMDUtMTEtMDkgMTc6NTU6MTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvOiBVc2UgR1NUX0RFQlVHX0ZVTkNQVFIoKSBtb3JlIGV4dGVuc2l2ZWx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RwYWRzX2FkZF9wYWQpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19pbml0KToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IChnc3RfdHlwZV9maW5kX2VsZW1lbnRfaW5pdCk6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX3NldF9pbnRlcm5hbCksCgkgIChnc3RfZ2hvc3RfcGFkX2luaXQpLCAoZ3N0X2dob3N0X3BhZF9uZXdfbm90YXJnZXQpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfaW5pdCk6CgkgIFVzZSBHU1RfREVCVUdfRlVOQ1BUUigpIG1vcmUgZXh0ZW5zaXZlbHkuCgoyMDA1LTExLTA5IDE3OjMyOjEwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdG9iamVjdC4qOiBEb2N1bWVudGF0aW9uIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgRG9jdW1lbnRhdGlvbiBmaXhlcy4KCjIwMDUtMTEtMDkgMTc6MDY6MjAgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6IEZpeCBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6CgkgIEZpeCBkb2NzLgoKMjAwNS0xMS0wOSAxNjo0NDo0MCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC86CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6CgkgICogZ3N0L2dzdHR5cGVmaW5kLmg6CgoyMDA1LTExLTA5IDE2OjMyOjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGl0ZXJhdG9yLmM6IEZpeCByZXZpc2lvbiBkYXRhLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzoKCSAgRml4IHJldmlzaW9uIGRhdGEuCgkgICogZ3N0L2dzdHRhc2suYzoKCSAgKiBnc3QvZ3N0dGFzay5oOgoJICBGaXggZG9jcy4KCjIwMDUtMTEtMDkgMTY6MTY6NDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBGaXggZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgICogZ3N0L2dzdHVyaS5oOgoJICBGaXggZG9jcy4KCjIwMDUtMTEtMDkgMTY6MDA6MDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBNb3ZlZCB0aGUgbWVzc2FnZSBhc3luYyBkZWxpdmVyeSBwcml2YXRlIGxvY2sgYW5kIGNvbmQgdG8gdGhlIHByaXZhdGUgc2VjdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgTW92ZWQgdGhlIG1lc3NhZ2UgYXN5bmMgZGVsaXZlcnkgcHJpdmF0ZSBsb2NrIGFuZCBjb25kCgkgIHRvIHRoZSBwcml2YXRlIHNlY3Rpb24uCgkgICogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBGaXhlZCBkb2NzLgoKMjAwNS0xMS0wOSAxNTozNDo0NiArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIERvY3VtZW50IEdzdFVSSUhhbmRsZXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dXJpLmM6CgkgICogZ3N0L2dzdHVyaS5oOgoJICBEb2N1bWVudCBHc3RVUklIYW5kbGVyCgoyMDA1LTExLTA5IDE1OjMxOjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGl0ZXJhdG9yLio6IEZpeCBpdGVyYXRvciBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzogKGdzdF9pdGVyYXRvcl9mb2xkKSwgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKSwKCSAgKGdzdF9pdGVyYXRvcl9maW5kX2N1c3RvbSk6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmg6CgkgIEZpeCBpdGVyYXRvciBkb2NzLgoKMjAwNS0xMS0wOSAxNToxMDozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uaDogRG9jdW1lbnQgYW5vdGhlciBmaWVsZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBEb2N1bWVudCBhbm90aGVyIGZpZWxkLgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkgIERvY3VtZW50LgoKMjAwNS0xMS0wOSAxMzoxNDoyNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uaDogRG9jdW1lbnRlZCBzdHJ1Y3RzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmg6CgkgIERvY3VtZW50ZWQgc3RydWN0cy4KCjIwMDUtMTEtMDkgMTI6MzY6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGRlZCBzb21lIG5ldyBtYWNyb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZGVkIHNvbWUgbmV3IG1hY3Jvcy4KCSAgKiBnc3QvZ3N0Y2xvY2suYzoKCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgIERvY3MgdXBkYXRlcy4KCjIwMDUtMTEtMDkgMTI6MDE6NDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OiBTb21lIG1vcmUgaXRlbXMgZm9yIHRoZSBUT0RPCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFNvbWUgbW9yZSBpdGVtcyBmb3IgdGhlIFRPRE8KCSAgKiBnc3QvZ3N0Y2Fwcy5jOgoJICAqIGdzdC9nc3RjYXBzLmg6CgkgIERvY3VtZW50IEdzdENhcHMuCgoyMDA1LTExLTA5IDEwOjA2OjMwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBBZGQgdGhlIGJlZ2lubmluZyBvZiBkb2NzIGhlcmUgLS0gaGF2ZSB0byB3b3JrIG9uIHNvbWV0aGluZyBlbHNlIG5vdyB0aG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTEtMDkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogQWRkIHRoZSBiZWdpbm5pbmcgb2YgZG9jcyBoZXJlIC0tIGhhdmUKCSAgdG8gd29yayBvbiBzb21ldGhpbmcgZWxzZSBub3cgdGhvLi4uCgoyMDA1LTExLTA5IDA5OjQ4OjE2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RhZGFwdGVyLmg6CgkgIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jIChnc3RfZmlsZV9zaW5rX3N0YXJ0KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0wOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYyAoZ3N0X2ZpbGVfc2lua19zdGFydCkKCSAgKGdzdF9maWxlX3Npbmtfc3RvcCk6IE5ldyBmdW5jdGlvbnMsIHJlcGxhY2UgdGhlIHN0YXRlIGNoYW5nZQoJICBoYW5kbGVyLgoJICAoZ3N0X2ZpbGVfc2lua19jbGFzc19pbml0KTogSG9vayB1cCB0aGUgc3RhcnQgYW5kIHN0b3AgZnVuY3Rpb25zLgoJICAoZ3N0X2ZpbGVfc2lua19iYXNlX2luaXQpOiBEb24ndCBzZXQgdGhlIHN0YXRlIGNoYW5nZSBoYW5kbGVyIGFueQoJICBtb3JlLiBJdCB3YXMgYSBiaXQgdWdseSB0b28sIGJlaW5nIHNldCBmcm9tIGhlcmUuLi4KCSAgKGdzdF9maWxlX3NpbmtfZ2V0X3Byb3BlcnR5LCBnc3RfZmlsZV9zaW5rX3NldF9wcm9wZXJ0eSk6CgkgIENsZWFudXBzLi4uCgkgIChnc3RfZmlsZV9zaW5rX3NldF9sb2NhdGlvbik6IE1vcmUgcm9idXN0IGNoZWNrIHRoYXQgZG9lc24ndCBjYWxsCgkgIEdTVF9TVEFURS4gVWdnZ2dnZy4KCjIwMDUtMTEtMDkgMDk6NDc6MTIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmMgKGdzdF9maWxlX3Npbmtfc3RhcnQpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTA5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jIChnc3RfZmlsZV9zaW5rX3N0YXJ0KQoJICAoZ3N0X2ZpbGVfc2lua19zdG9wKTogTmV3IGZ1bmN0aW9ucywgcmVwbGFjZSB0aGUgc3RhdGUgY2hhbmdlCgkgIGhhbmRsZXIuCgkgIChnc3RfZmlsZV9zaW5rX2NsYXNzX2luaXQpOiBIb29rIHVwIHRoZSBzdGFydCBhbmQgc3RvcCBmdW5jdGlvbnMuCgkgIChnc3RfZmlsZV9zaW5rX2Jhc2VfaW5pdCk6IERvbid0IHNldCB0aGUgc3RhdGUgY2hhbmdlIGhhbmRsZXIgYW55CgkgIG1vcmUuIEl0IHdhcyBhIGJpdCB1Z2x5IHRvbywgYmVpbmcgc2V0IGZyb20gaGVyZS4uLgoJICAoZ3N0X2ZpbGVfc2lua19nZXRfcHJvcGVydHksIGdzdF9maWxlX3Npbmtfc2V0X3Byb3BlcnR5KToKCSAgQ2xlYW51cHMuLi4KCSAgKGdzdF9maWxlX3Npbmtfc2V0X2xvY2F0aW9uKTogTW9yZSByb2J1c3QgY2hlY2sgdGhhdCBkb2Vzbid0IGNhbGwKCSAgR1NUX1NUQVRFLiBVZ2dnZ2dnLgoKMjAwNS0xMS0wOCAxMjozMzowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogSG9sZCBTVFJFQU1fTE9DSyB3aGlsZSBwdXNoaW5nIG5ld3NlZ21lbnQgb3IgdGFnIGV2ZW50cyBhcyB3ZWxsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fZXZlbnQpOgoJICBIb2xkIFNUUkVBTV9MT0NLIHdoaWxlIHB1c2hpbmcgbmV3c2VnbWVudCBvciB0YWcgZXZlbnRzIGFzIHdlbGwuCgoyMDA1LTExLTA4IDExOjUyOjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgcmV2ZXJ0IHBhcnQgb2YgdGhlIHBhdGNoIHNvIHRoYXQgcGF0aHMgYXJlIGNvcnJlY3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJldmVydCBwYXJ0IG9mIHRoZSBwYXRjaCBzbyB0aGF0IHBhdGhzIGFyZSBjb3JyZWN0CgoyMDA1LTExLTA4IDExOjEzOjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQXZvaWQgZXhjZXNzaXZlIHR5cGVjaGVja2luZyBpbiBtYWNyb3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZW1wdHkpLAoJICAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhaW4pLCAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgIEF2b2lkIGV4Y2Vzc2l2ZSB0eXBlY2hlY2tpbmcgaW4gbWFjcm9zLgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfbWluaV9vYmplY3RfZ2V0X3R5cGUpLAoJICAoZ3N0X21pbmlfb2JqZWN0X2luaXQpLCAoZ3N0X21pbmlfb2JqZWN0X25ldyksCgkgIChnc3RfbWluaV9vYmplY3RfZnJlZSk6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9jbGFzc19pbml0KSwgKGdzdF9vYmplY3RfaW5pdCksCgkgIChnc3Rfb2JqZWN0X2ZpbmFsaXplKToKCSAgUmVtb3ZlIGNydWZ0IGNvZGUsIG9wdGltaXplIGFsbG9jX3RyYWNlLgoKMjAwNS0xMS0wNyAxODoxNjoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IGZpeCB1cCBQUzEgZm9yIHN5c3RlbXMgdGhhdCB0cnkgdG8gcmVzZXQgaXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJICBmaXggdXAgUFMxIGZvciBzeXN0ZW1zIHRoYXQgdHJ5IHRvIHJlc2V0IGl0CgoyMDA1LTExLTA3IDEwOjMzOjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBTZXQgdGhlIHNlZ21lbnRfZW5kIHRvIC0xIGluaXRpYWxseS4gRml4ZWQgdHlwZWZpbmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpOgoJICBTZXQgdGhlIHNlZ21lbnRfZW5kIHRvIC0xIGluaXRpYWxseS4gRml4ZWQgdHlwZWZpbmQuCgoyMDA1LTExLTA3IDEwOjEzOjQ3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiBEZWJ1ZyBjYXRlZ29yeSBzaG91bGQgYmUgJ2FkYXB0ZXInLCBub3QgJ0dzdEFkYXB0ZXInLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RhZGFwdGVyLmM6CgkgIERlYnVnIGNhdGVnb3J5IHNob3VsZCBiZSAnYWRhcHRlcicsIG5vdCAnR3N0QWRhcHRlcicuCgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0cGFkc19iYXNlX2luaXQpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX2NsYXNzX2luaXQpLCAoZ3N0X2NvbGxlY3RwYWRzX2luaXQpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX3BlZWspLCAoZ3N0X2NvbGxlY3RwYWRzX3BvcCksCgkgIChnc3RfY29sbGVjdHBhZHNfZXZlbnQpLCAoZ3N0X2NvbGxlY3RwYWRzX2NoYWluKToKCSAgQWRkIGRlYnVnIGNhdGVnb3J5IGFuZCBzb21lIGRlYnVnZ2luZyBvdXRwdXQuIFVzZSBib2lsZXJwbGF0ZQoJICBtYWNyb3MuIFJlbW92ZSBzb21lIGV4dHJhbmVvdXMgd29yZHMgZnJvbSBkb2NzLgoKMjAwNS0xMS0wNSAxNToxNDozMyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5jOiBTaG9ydGVuIGJ5IDMwJSB2aWEgdXNlIG9mIGJvaWxlcnBsYXRlIG1hY3JvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RwdXNoc3JjLmM6IFNob3J0ZW4gYnkgMzAlIHZpYSB1c2Ugb2YgYm9pbGVycGxhdGUKCSAgbWFjcm8uCgoyMDA1LTExLTA0IDIwOjEyOjAxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBtb3JlIGRvY3MgYWRkZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3RpbmZvLmM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuaDoKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIG1vcmUgZG9jcyBhZGRlZAoKMjAwNS0xMS0wNCAxNTozMzo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogU21hbGwgdXBkYXRlIHRvIHN0b3AgYXQgdGhlIGNvbmZpZ3VyZWQgc2VnbWVudF9lbmQgcG9zaXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpOgoJICBTbWFsbCB1cGRhdGUgdG8gc3RvcCBhdCB0aGUgY29uZmlndXJlZCBzZWdtZW50X2VuZAoJICBwb3NpdGlvbi4KCjIwMDUtMTEtMDQgMTU6MDI6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9nc3RyZWdpc3RyeS4qOiBhZGRlZCBtaXNzaW5nIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6CgkgIGFkZGVkIG1pc3NpbmcgZG9jcwoKMjAwNS0xMS0wNCAxNDozNToxMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogQ2hlY2sgaWYgd2UgYXJlIGRvaW5nIGEgc2VnbWVudCBzZWVrIGFuZCBoYXZlIGFycml2ZWQgYXQgdGhlIGVuZCBvZiB0aGF0IHNlZ21lbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpOgoJICBDaGVjayBpZiB3ZSBhcmUgZG9pbmcgYSBzZWdtZW50IHNlZWsgYW5kIGhhdmUgYXJyaXZlZCBhdCB0aGUKCSAgZW5kIG9mIHRoYXQgc2VnbWVudC4KCjIwMDUtMTEtMDQgMTI6MDg6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVzLmM6IERvbid0IGxlYWsgYSBtdXRleCB1bmxvY2sgaW4gY2FzZSBvZiBhbiBlcnJvci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19wb3N0KSwgKGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlcik6CgkgIERvbid0IGxlYWsgYSBtdXRleCB1bmxvY2sgaW4gY2FzZSBvZiBhbiBlcnJvci4KCSAgKiBnc3QvZ3N0YnVzLmg6CgkgIERvYyBmaXhlcy4KCjIwMDUtMTEtMDQgMTE6NDM6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVzLmM6IEdldCB0aGUgY29udGV4dCB0byB3YWtlIHVwIG9ubHkgb25jZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19jbGFzc19pbml0KSwgKGdzdF9idXNfaW5pdCksCgkgIChnc3RfYnVzX3Bvc3QpOgoJICBHZXQgdGhlIGNvbnRleHQgdG8gd2FrZSB1cCBvbmx5IG9uY2UuCgoyMDA1LTExLTAzIDIwOjE3OjI0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjaGVjay9zdGF0ZXMvc2lua3MuYzogVW5jb21tZW50IGZpeGVkIGNoZWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9zdGF0ZXMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgVW5jb21tZW50IGZpeGVkIGNoZWNrLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFVwZGF0ZWQgVE9ETy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jb21taXRfc3RhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbik6CgkgIElmIHdlIGFyZSBnb2luZyB0byBQTEFZSU5HLCBwb3N0IHRoZSByaWdodCBwZW5kaW5nIHN0YXRlCgkgIHdoZW4gd2UgcG9zdCB0aGUgaW50ZXJtZWRpYXRlIHBhdXNlZCBtZXNzYWdlLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jb250aW51ZV9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICBEb24ndCBwb3N0IHN0YXRlIGNoYW5nZXMgdGhhdCB3ZXJlIGJldHdlZW4gdGhlIHNhbWUgc3RhdGUKCSAgYW5kIHdlcmUgbm90IEFTWU5DLgoKMjAwNS0xMS0wMyAyMDoxNDoyNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL3N0YXRlcy9zaW5rcy5jOiBVbmNvbW1lbnQgZml4ZWQgY2hlY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL3N0YXRlcy9zaW5rcy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBVbmNvbW1lbnQgZml4ZWQgY2hlY2suCgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgVXBkYXRlZCBUT0RPLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKToKCSAgSWYgd2UgYXJlIGdvaW5nIHRvIFBMQVlJTkcsIHBvc3QgdGhlIHJpZ2h0IHBlbmRpbmcgc3RhdGUKCSAgd2hlbiB3ZSBwb3N0IHRoZSBpbnRlcm1lZGlhdGUgcGF1c2VkIG1lc3NhZ2UuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NvbnRpbnVlX3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZV9mdW5jKSwgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIERvbid0IHBvc3Qgc3RhdGUgY2hhbmdlcyB0aGF0IHdlcmUgYmV0d2VlbiB0aGUgc2FtZSBzdGF0ZQoJICBhbmQgd2VyZSBub3QgQVNZTkMuCgoyMDA1LTExLTAzIDE5OjM4OjQ4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2MgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkgIGRvYyBmaXhlcwoKMjAwNS0xMS0wMyAxNzo1MzoyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svc3RhdGVzL3NpbmtzLmMgKHRlc3RfbGl2ZXNyY19zaW5rKTogQWRkIGNoZWNrcyB0aGF0IHRoZSBzdGF0ZS1jaGFuZ2VkIG1lc3NhZ2VzIGFjdHVhbGx5IGhhdmUgdGhlIHJpZ2h0IG9yZGVyIGFuLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTExLTAzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL3N0YXRlcy9zaW5rcy5jICh0ZXN0X2xpdmVzcmNfc2luayk6IEFkZCBjaGVja3MgdGhhdCB0aGUKCSAgc3RhdGUtY2hhbmdlZCBtZXNzYWdlcyBhY3R1YWxseSBoYXZlIHRoZSByaWdodCBvcmRlciBhbmQgdGhlIHJpZ2h0CgkgIHZhbHVlcy4KCjIwMDUtMTEtMDMgMTc6MTI6MDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9zdGF0ZXMvc2lua3MuYzogQWRkZWQgc29tZSBtb3JlIGNoZWNrcy4gU3BlY2lmaWNhbGx5IHRoZSBjYXNlIHdoZXJlIE5PX1BSRVJPTEwgZWxlbWVudHMgYXJlIGluIHRoZSBwaXBlbGluZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svc3RhdGVzL3NpbmtzLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3Rfb2JqZWN0X3N1aXRlKToKCSAgQWRkZWQgc29tZSBtb3JlIGNoZWNrcy4gU3BlY2lmaWNhbGx5IHRoZSBjYXNlIHdoZXJlIE5PX1BSRVJPTEwKCSAgZWxlbWVudHMgYXJlIGluIHRoZSBwaXBlbGluZS4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jb21taXRfc3RhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbik6CgkgIFBvc3QgUkVBRFktPlBBVVNFRCBzdGF0ZSBjaGFuZ2UgbWVzc2FnZXMgdG9vLgoJICBGaXggYnVnIHdoZXJlIFZPSUQgd2FzIHBvc3RlZCBhcyBwZW5kaW5nIHN0YXRlLi4uCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9yZWNhbGNfc3RhdGUpOgoJICB1c2UgX2VsZW1lbnRfY29udGludWVfc3RhdGUoKSB0byBjb250aW51ZSB0aGUgc3RhdGUgY2hhbmdlLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jb250aW51ZV9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9jb21taXRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKSwgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZV9mdW5jKToKCSAgTG90cyBvZiBzdGF0ZSBjaGFuZ2UgY2xlYW51cHMsIGFzc2lnbiB0aGUgU1RBVEVfUkVUVVJOIGluCgkgIGEgbmV3IGNvbnRpbnVlX3N0YXRlKCkgZnVuY3Rpb24gdGhhdCBhbHNvIHByb3BhZ2F0ZXMgdGhlCgkgIGxhc3QgcmV0dXJuIHZhbHVlIGZyb20gYSBzdGF0ZSBjaGFuZ2UgdG8gdGhlIGFwcC4KCSAgVXBkYXRlIHNvbWUgZGVidWcgc3RhdGVtZW50cyB3aXRoIHByb3BlciBjYXRlZ29yeS4KCjIwMDUtMTEtMDMgMTQ6MjI6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzLzogU21hbGwgZG9jcyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RwaXBlbGluZS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1tZXNzYWdlcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1vdmVydmlldy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWVraW5nLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC10cmlja21vZGVzLnR4dDoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1wb3NpdGlvbi54bWw6CgkgIFNtYWxsIGRvY3MgdXBkYXRlcy4KCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgIFBlb3BsZSB0aGluayAhISBpcyB1Z2x5LCB0aGlzIGxvb2tzIGJldHRlci4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9ibG9ja2VkX2FzeW5jKToKCSAgUmVtb3ZlICEhIHNpbmNlIGl0J3MgZml4ZWQgZWxzZXdoZXJlIG5vdy4KCjIwMDUtMTEtMDMgMTM6NTI6NTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvOiBBZGQgISEgdG8gX0ZMQUdfSVNfU0VUIG1hY3JvcyB0byBtYWtlIHRoZSByZXN1bHQgYm9vbGVhbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuaDoKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgIEFkZCAhISB0byBfRkxBR19JU19TRVQgbWFjcm9zIHRvIG1ha2UgdGhlIHJlc3VsdCBib29sZWFuLgoKMjAwNS0xMS0wMyAxMjo0ODozMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogY29tcGFyaW5nIGEgZmxhZyBhbmQgYSBnYm9vbGVhbiByYXJlbHkgcmV0dXJucyBjb2hlcmVudCByZXN1bHRzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2Jsb2NrZWRfYXN5bmMpOgoJICBjb21wYXJpbmcgYSBmbGFnIGFuZCBhIGdib29sZWFuIHJhcmVseSByZXR1cm5zIGNvaGVyZW50IHJlc3VsdHMuLi4KCSAgQWRkZWQgdHdvIGNoYXJhY3RlcnMgKCEhKSB0byBtYWtlIHRoYXQgd29yayBjb3JyZWN0bHkuCgoyMDA1LTExLTAzIDEyOjE2OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1cy5jOiBGaXggc29tZSB0eXBvcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19jbGFzc19pbml0KToKCSAgRml4IHNvbWUgdHlwb3MuCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfbG9vcCk6CgkgIERvbid0IGFzc3VtZSBhIG1pbmlvYmplY3QgdGhhdCBpc24ndCBhIGJ1ZmZlciBpcyBhbgoJICBldmVudCAoaXQgY291bGQgYmUgdGhhdCB0aGVyZSBpcyBhIHJlZmNvdW50aW5nCgkgIHByb2JsZW0gc29tZXdoZXJlIGFuZCB0aGUgcG9pbnRlciBpcyBzdGFsZSBhbmQKCSAgcmVmZXJzIHRvIGFuIGFscmVhZHkgZGVzdHJveWVkIG1pbmlvYmplY3QpLgoKMjAwNS0xMS0wMyAxMDo1NjoyMyArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IEZpeCBzb21lIHR5cG9zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMS0wMyAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWxsb2NfYnVmZmVyKTogRml4IHNvbWUgdHlwb3MuCgoyMDA1LTExLTAzIDA5OjE4OjUzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9tYW51YWwvYWR2YW5jZWQtcG9zaXRpb24ueG1sOiBVcGRhdGUgc2VlayBleGFtcGxlIGFuZCBleHBsYW5hdGlvbnMgdG8gY3VycmVudCAwLjkgQVBJLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1wb3NpdGlvbi54bWw6CgkgIFVwZGF0ZSBzZWVrIGV4YW1wbGUgYW5kIGV4cGxhbmF0aW9ucyB0byBjdXJyZW50IDAuOSBBUEkuCgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2FjdGl2YXRlKToKCSAgUmVtb3ZlIEZJWE1FIGNvbW1lbnQgbm93IHRoYXQgdGhlIGZvdW5kIGNhcHMKCSAgYXJlIHVucmVmZmVkLgoKMjAwNS0xMS0wMyAwMDozOTo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOgoJICBBZGQgYW5vdGhlciBHU1RfU1RSX05VTEwgaW5zdGFuY2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEFkZCBhbm90aGVyIEdTVF9TVFJfTlVMTCBpbnN0YW5jZQoKMjAwNS0xMS0wMiAxOTowNDoyMCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogRm9sbG93LXVwIHRvIFdpbSdzIHBhdGNoLCBzb2x2ZXMgZGVhZGxvY2sgZm9yIGJsb2NrZWQgYW5kIGZsdXNoaW5nIHBhZHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoaGFuZGxlX3BhZF9ibG9jayk6CgkgIEZvbGxvdy11cCB0byBXaW0ncyBwYXRjaCwgc29sdmVzIGRlYWRsb2NrIGZvciBibG9ja2VkIGFuZCBmbHVzaGluZyBwYWRzCgoyMDA1LTExLTAyIDE4OjQ0OjIwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBGaXggdHlwbyBpbiBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6CgkgIEZpeCB0eXBvIGluIGRvY3MuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NvbW1pdF9zdGF0ZSk6CgkgIFJlbW92ZSB1bnVzZWQgdmFsdWUuCgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIE1lbnRpb24gdGhhdCB0aGUgcmV0dXJuZWQgZWxlbWVudCBpcyByZWZmZWQgaW4gdGhlIGRvY3MuCgoyMDA1LTExLTAyIDE4OjMzOjAwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBVbmxvY2sgYmxvY2tlZCBwYWRzIHdoZW4gdGhleSBhcmUgZmx1c2hlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLCAoaGFuZGxlX3BhZF9ibG9jayksCgkgIChnc3RfcGFkX3B1c2gpLCAoZ3N0X3BhZF9wdXNoX2V2ZW50KToKCSAgVW5sb2NrIGJsb2NrZWQgcGFkcyB3aGVuIHRoZXkgYXJlIGZsdXNoZWQuCgoyMDA1LTExLTAyIDE1OjM0OjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvYyB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvUkVBRE1FOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGJpbi5jOgoJICBkb2MgdXBkYXRlcwoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCk6CgkgIGZpeCBmb3IgYSBuYXN0eSBsaXR0bGUgbWlzc2VkIHNpdHVhdGlvbiB3aGVyZSBhbiBpbnN0YWxsZWQgcGx1Zy1pbgoJICB3aGljaCB3YXMgaW4gdGhlIGNhY2hlIGRpZCBub3QgZ2V0IG92ZXJyaWRkZW4gYnkgYW4gdW5pbnN0YWxsZWQgb25lCgkgIHdoaWNoIHdhcyBlYXJsaWVyIGluIHRoZSBwbHVnaW4gcGF0aCBiZWNhdXNlIHRoZSBuZXdseSBjcmVhdGVkIHBsdWdpbgoJICBmb3IgdGhlIHVuaW5zdGFsbGVkIG9uZSAobm90IGluIHRoZSByZWdpc3RyeSkgZGlkbid0IGdldCBpdHMKCSAgLT5yZWdpc3RlcmVkIHNldCB0byBUUlVFCgoyMDA1LTExLTAyIDE1OjA4OjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogR3VhcmQgcHVibGljIEFQSSB3aXRoIGFzc2VydGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdHBhZHNfc2V0X2Z1bmN0aW9uKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19hZGRfcGFkKSwgKGdzdF9jb2xsZWN0cGFkc19yZW1vdmVfcGFkKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19pc19hY3RpdmUpLCAoZ3N0X2NvbGxlY3RwYWRzX2NvbGxlY3QpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX2NvbGxlY3RfcmFuZ2UpLCAoZ3N0X2NvbGxlY3RwYWRzX3N0YXJ0KSwKCSAgKGdzdF9jb2xsZWN0cGFkc19zdG9wKSwgKGdzdF9jb2xsZWN0cGFkc19wZWVrKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19wb3ApLCAoZ3N0X2NvbGxlY3RwYWRzX2F2YWlsYWJsZSksCgkgIChnc3RfY29sbGVjdHBhZHNfcmVhZCksIChnc3RfY29sbGVjdHBhZHNfZmx1c2gpOgoJICBHdWFyZCBwdWJsaWMgQVBJIHdpdGggYXNzZXJ0aW9ucy4KCSAgKiBnc3QvZ3N0cGFkLmM6CgkgIEZpeCBkb2NzIGZvciBnc3RfcGFkX3NldF9saW5rX2Z1bmN0aW9uKCkuCgoyMDA1LTExLTAyIDE0OjI4OjAyICswMDAwICBKb2hhbiBEYWhsaW4gPGpvaGFuQGdub21lLm9yZz4KCgkgIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYyAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2FjdGl2YXRlKTogVW5yZWYgZm91bmRfY2FwcyBhZnRlciB3ZSB1c2VkIGl0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmMgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9hY3RpdmF0ZSk6CgkgIFVucmVmIGZvdW5kX2NhcHMgYWZ0ZXIgd2UgdXNlZCBpdC4KCjIwMDUtMTEtMDIgMTI6MjA6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiBEb24ndCB0cnkgdG8gcmVmIE5VTEwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdHBhZHNfcGVlayk6CgkgIERvbid0IHRyeSB0byByZWYgTlVMTC4KCjIwMDUtMTEtMDIgMDk6MzE6MDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGFkZCBtb3JlIHN5bWJvbHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtb3JlIHN5bWJvbHMKCjIwMDUtMTEtMDIgMDk6Mjc6MzMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGFkZCBtb3JlIHN5bWJvbHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtb3JlIHN5bWJvbHMKCjIwMDUtMTEtMDIgMDk6MjQ6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICB1cGRhdGUgZ2VuZXJhdGVkIGNvbmZpZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGdlbmVyYXRlZCBjb25maWcKCjIwMDUtMTEtMDIgMDk6MjQ6MDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIHByb3ZpZGUgYSBHU1RfRlVOQ1RJT04gdGhhdCBqdXN0IGdpdmVzIGEgc3RyaW5nIGZvciBub3cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHByb3ZpZGUgYSBHU1RfRlVOQ1RJT04gdGhhdCBqdXN0IGdpdmVzIGEgc3RyaW5nIGZvciBub3cKCjIwMDUtMTEtMDIgMDg6NTY6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmM6CgkqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkgIHVwZGF0ZSB3aW4zMiBjb3BpZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSB3aW4zMiBjb3BpZXMKCjIwMDUtMTEtMDEgMTk6MTY6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGJpbi5jOgoJICBtb3JlIGRvYyB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3JlIGRvYyB1cGRhdGVzCgoyMDA1LTExLTAxIDE3OjQ1OjQ2ICswMDAwICBMdWNhIE9nbmliZW5lIDxsdW9nbmlAdGluLml0PgoKCSAgZ3N0L2dzdC5jOiBmaXggZG9jcy4gcG9wdCBpcyBkZWF0aCwgbG9uZyBsaXZlIEdPcHRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgZml4IGRvY3MuIHBvcHQgaXMgZGVhdGgsIGxvbmcgbGl2ZSBHT3B0aW9uLgoKMjAwNS0xMC0zMSAxMTo0NDozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuaDogU21hbGwgZG9jIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICBTbWFsbCBkb2MgZml4LgoKMjAwNS0xMC0zMSAwOTo1MjoxMyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgQm9vIQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0zMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBCb28hCgkgICogZ3N0L2dzdHF1ZXVlLmMgKGdzdF9xdWV1ZV9jaGFpbik6IEZpeCBkb3duc3RyZWFtIGxlYWt5IG1vZGUuCgkgICogZ3N0L2dzdG9iamVjdC5jIChnc3Rfb2JqZWN0X2Rpc3BhdGNoX3Byb3BlcnRpZXNfY2hhbmdlZCk6IE5vCgkgIG5lZWQgdG8gc2VyaWFsaXplIHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgb24gR0xpYiAyLjguIEdMaWIgMi42IGhhcwoJICB0aGUgcG9zc2liaWxpdHkgb2YgZGVhZGxvY2tzIGhlcmUgaWYgY29kZSBjYWxsaW5nIG5vdGlmeSgpIG9yCgkgIHNldCgpIGhhcyBhIGxvY2sgdGhhdCBjYW4gYmUgdGFrZW4gaW4gYW5vdGhlciBub3RpZnkgaGFuZGxlciAoQUJCQQoJICB3aXRoIGNsYXNzIGxvY2sgYW5kIGUuZy4gcHl0aG9uIEdJTCBzdGF0ZSBsb2NrKS4KCjIwMDUtMTAtMjggMTg6MTg6MjMgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdGJ1cy5jOiBEb2MgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMjggIEp1bGllbiBNT1VUVEUgIDxqdWxpZW5AbW91dHRlLm5ldD4KCSAgKiBnc3QvZ3N0YnVzLmM6IERvYyB1cGRhdGVzLgoKMjAwNS0xMC0yOCAxODoxNDoyNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIERvYyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICAqIGdzdC9nc3RpdGVyYXRvci5jOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5oOgoJICBEb2MgdXBkYXRlcy4KCjIwMDUtMTAtMjggMTg6MTA6NDEgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBkb2NzL2dzdC86IHRoZSBHc3RVUklUeXBlIGRvY3VtZW50YXRpb24gcGFnZSBpcyBwcml2YXRlLCBpdCBvbmx5IGRlZmluZXMgR3N0VVJJVHlwZSB3aGljaCBzaG91bGQgYmUgZGVmaW5lZCBpbiB0aGUgR3MuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICB0aGUgR3N0VVJJVHlwZSBkb2N1bWVudGF0aW9uIHBhZ2UgaXMgcHJpdmF0ZSwgaXQgb25seSBkZWZpbmVzIEdzdFVSSVR5cGUKCSAgd2hpY2ggc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlIEdzdFVSSUhhbmRsZXIgcGFnZQoKMjAwNS0xMC0yOCAxNzozNTo0MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3RiaW4uYzoKCSogZ3N0L2dzdGJpbi5oOgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwNS0xMC0yOCAxNzozNTowNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIERvY3VtZW50ZWQgdGhlIGNsb2Nrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0Y2xvY2suYzoKCSAgKiBnc3QvZ3N0Y2xvY2suaDoKCSAgRG9jdW1lbnRlZCB0aGUgY2xvY2tzLgoKMjAwNS0xMC0yOCAxNzozNDozMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgdXBkYXRlZCBjb25maWcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZWQgY29uZmlnCgoyMDA1LTEwLTI4IDE3OjIwOjQ1ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIFdvcmsgYXJvdW5kIGd0a2RvYyBkZWZpY2llbmNpZXMsIGRvY3VtZW50IGEgbWFjcm8gZGlmZmVyZW50bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBXb3JrIGFyb3VuZCBndGtkb2MgZGVmaWNpZW5jaWVzLCBkb2N1bWVudCBhIG1hY3JvIGRpZmZlcmVudGx5LgoKMjAwNS0xMC0yOCAxNzowMToxNCArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkqIGdzdC9nc3R1dGlscy5jOgoJICBJbXByb3ZlIEdzdEJ1ZmZlciBkb2N1bWVudGF0aW9uLiBJdCdzIG5vdyAxMDAlIFNwaWZmaWVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgSW1wcm92ZSBHc3RCdWZmZXIgZG9jdW1lbnRhdGlvbi4gSXQncyBub3cgMTAwJSBTcGlmZmllci4KCjIwMDUtMTAtMjggMTY6NTQ6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9SRUFETUU6CgkgIHNvbWUgc3R5bGUgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNvbWUgc3R5bGUgZml4ZXMKCjIwMDUtMTAtMjggMTY6NDY6NTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IG1vdmUgc29tZSBtYWNyb3MgdG8gcHJpdmF0ZSBzZWN0aW9ucwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBtb3ZlIHNvbWUgbWFjcm9zIHRvIHByaXZhdGUgc2VjdGlvbnMKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0Lmg6CgkgIGFkZCBkZXNjcmlwdGlvbnMgcHJvdmlkZWQgYnkgZHMgYW5kIHNvbWUgbW9yZQoJICAqIGdzdC9nc3RwYWQuaDoKCSAgbWFyayBtYWNybyBhcyB0byBiZSByZW1vdmVkCgoyMDA1LTEwLTI4IDE2OjIxOjI5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogQWRkIGFuIGl0ZW0gdG8gVE9ETy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgQWRkIGFuIGl0ZW0gdG8gVE9ETy4KCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzogKGdzdF9pdGVyYXRvcl9mb2xkKSwKCSAgKGdzdF9pdGVyYXRvcl9maW5kX2N1c3RvbSk6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmg6CgkgIEFkZCBpdGVyYXRvciBkb2NzLgoKMjAwNS0xMC0yOCAxNjowODo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL1JFQURNRToKCSAgYWRkIHN0eWxlIGd1aWRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgc3R5bGUgZ3VpZGUKCjIwMDUtMTAtMjggMTA6NDU6MzMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IERvbid0IGxlYWsgY2xhc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KToKCSAgRG9uJ3QgbGVhayBjbGFzcy4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksIChnc3RfcXVldWVfbG9vcCk6CgkgIEFuIEVPUyBldmVudCBtYXJrcyB0aGUgcXVldWUgYXMgY29tcGxldGVseSBmaWxsZWQuCgoyMDA1LTEwLTI3IDIwOjU5OjAwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogU29tZSBtb3JlIGRlYnVnZ2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBTb21lIG1vcmUgZGVidWdnaW5nLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9maW5hbGl6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faW5pdCksIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0cmFuZ2UpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYWluKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIEZpeCBkZWJ1Z2dpbmcsCgkgIFByb3RlY3QgdHJhbnNmb3JtIGFuZCBjb25jdXJyZW50IGJ1ZmZlciBhbGxvYyB3aXRoIGEgbmV3IGxvY2suCgkgIFRyeSBub3QgdG8gYnJlYWsgQUJJL0FQSS4KCjIwMDUtMTAtMjcgMTk6Mzc6MjUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IE1vdmUgc29tZSBzdHVmZiBhcm91bmQgYW5kIGNsZWFudXAgdGhpbmdzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zcmNfaW5pdCksIChnc3RfYmFzZV9zcmNfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmV3c2VnbWVudCksCgkgIChnc3RfYmFzZV9zcmNfY29uZmlndXJlX3NlZ21lbnQpLCAoZ3N0X2Jhc2Vfc3JjX2RvX3NlZWspLAoJICAoZ3N0X2Jhc2Vfc3JjX3NlbmRfZXZlbnQpLCAoZ3N0X2Jhc2Vfc3JjX2V2ZW50X2hhbmRsZXIpLAoJICAoZ3N0X2Jhc2Vfc3JjX3BhZF9nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLAoJICAoZ3N0X2Jhc2Vfc3JjX3VubG9jayksIChnc3RfYmFzZV9zcmNfZGVmYXVsdF9uZWdvdGlhdGUpLAoJICAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KSwgKGdzdF9iYXNlX3NyY19kZWFjdGl2YXRlKSwKCSAgKGdzdF9iYXNlX3NyY19hY3RpdmF0ZV9wdXNoKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBNb3ZlIHNvbWUgc3R1ZmYgYXJvdW5kIGFuZCBjbGVhbnVwIHRoaW5ncy4KCjIwMDUtMTAtMjcgMTU6NDg6NTYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IEFkZCBtaXNzaW5nIGJyZWFrIHN0YXRlbWVudHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19xdWVyeSk6CgkgIEFkZCBtaXNzaW5nIGJyZWFrIHN0YXRlbWVudHMuCgoyMDA1LTEwLTI3IDEzOjQ3OjMzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBBbiBleHRyYSByZWZjb3VudCBpcyB0YWtlbiBpbiBiYXNlc3JjLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFuIGV4dHJhIHJlZmNvdW50IGlzIHRha2VuIGluIGJhc2VzcmMuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2luaXQpLCAoZ3N0X2Jhc2Vfc3JjX3F1ZXJ5KSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX3BhZF9nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2xvb3ApOgoJICBTbWFsbCBjbGVhbnVwcywgY2hlY2sgZm9yIGZsdXNoaW5nIGFmdGVyIGJlaW5nIHVubG9ja2VkIGZyb20gdGhlCgkgIExJVkVfTE9DSy4gdGFrZSByZWZjb3VudHMgY29ycmVjdGx5IChub3QgeWV0IGV2ZXJ5d2hlcmUpLgoJICBEb24ndCBzZW5kIG91dCBFT1Mgd2hlbiBnb2luZyB0byBSRUFEWS4KCjIwMDUtMTAtMjcgMDg6NTU6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBTb21lIG1vcmUgZGVidWcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBTb21lIG1vcmUgZGVidWcuCgkgICogZ3N0L2dzdGJpbi5jOiAobWVzc2FnZV9jaGVjayksIChiaW5fcmVwbGFjZV9tZXNzYWdlKSwKCSAgKGJpbl9yZW1vdmVfbWVzc2FnZXMpLCAoaXNfZW9zKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAodXBkYXRlX2RlZ3JlZSksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksIChiaW5fYnVzX2hhbmRsZXIpLAoJICAoYmluX3F1ZXJ5X2R1cmF0aW9uX2luaXQpLCAoYmluX3F1ZXJ5X2R1cmF0aW9uX2ZvbGQpLAoJICAoYmluX3F1ZXJ5X2R1cmF0aW9uX2RvbmUpLCAoYmluX3F1ZXJ5X2dlbmVyaWNfZm9sZCksCgkgIChnc3RfYmluX3F1ZXJ5KToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgUmVtb3ZlIG9sZCBvcHRpb24uCgoyMDA1LTEwLTI2IDE4OjU3OjQzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBmaXhpbmcgZXhhbXBsZXMgZml4aW5nIGRvY3MgdHlwb3MgY2hhbmdpbmcgbG9nIHByaW9yaXR5IGluIGVycm9yIHNpdHVhdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6IChtYWluKToKCSAgKiBleGFtcGxlcy9xdWV1ZS9xdWV1ZS5jOiAoZXZlbnRfbG9vcCk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZW5kX2V2ZW50KToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NlbmRfZXZlbnQpOgoJICBmaXhpbmcgZXhhbXBsZXMKCSAgZml4aW5nIGRvY3MgdHlwb3MKCSAgY2hhbmdpbmcgbG9nIHByaW9yaXR5IGluIGVycm9yIHNpdHVhdGlvbnMKCjIwMDUtMTAtMjYgMTA6MTE6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogc2NyaXB0cy9jdnMtdXBkYXRlLnNoOgoJICBtYWtlIHN1cmUgZGlycyBnZXQgY2hlY2tlZCBvdXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1ha2Ugc3VyZSBkaXJzIGdldCBjaGVja2VkIG91dAoKMjAwNS0xMC0yNiAwOTo1Njo0MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9NQU5JRkVTVDoKCSAgZml4IGRpc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBkaXN0CgoyMDA1LTEwLTI1IDE3OjQxOjI0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBTb21lIGRvYyBhbmQgZGVidWcgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAobWVzc2FnZV9jaGVjayksIChiaW5fcmVwbGFjZV9tZXNzYWdlKSwKCSAgKGJpbl9yZW1vdmVfbWVzc2FnZXMpLCAoaXNfZW9zKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAodXBkYXRlX2RlZ3JlZSksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksIChiaW5fYnVzX2hhbmRsZXIpLAoJICAoYmluX3F1ZXJ5X2R1cmF0aW9uX2luaXQpLCAoYmluX3F1ZXJ5X2R1cmF0aW9uX2ZvbGQpLAoJICAoYmluX3F1ZXJ5X2R1cmF0aW9uX2RvbmUpLCAoYmluX3F1ZXJ5X2dlbmVyaWNfZm9sZCksCgkgIChnc3RfYmluX3F1ZXJ5KToKCSAgU29tZSBkb2MgYW5kIGRlYnVnIHVwZGF0ZXMuCgkgIENhY2hlIHByZXZpb3VzbHkgcmVxdWVzdGVkIHF1ZXJ5IERVUkFUSU9OIGZvciBzcGVlZC4gaW52YWxpZGF0ZQoJICBjYWNoZWQgZHVyYXRpb24gaWYgZWxlbWVudCBwb3N0cyBhIERVUkFUSU9OIG1lc3NhZ2UuCgoyMDA1LTEwLTI1IDE1OjM5OjM2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogVXBkYXRlIFRPRE8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFVwZGF0ZSBUT0RPLgoJICAqIGdzdC9nc3RiaW4uYzogKG1lc3NhZ2VfY2hlY2spLCAoYmluX3JlcGxhY2VfbWVzc2FnZSksCgkgIChiaW5fcmVtb3ZlX21lc3NhZ2VzKSwgKGlzX2VvcyksIChnc3RfYmluX2FkZF9mdW5jKSwKCSAgKHVwZGF0ZV9kZWdyZWUpLCAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25leHQpLCAoYmluX2J1c19oYW5kbGVyKSwKCSAgKGJpbl9xdWVyeV9kdXJhdGlvbl9pbml0KSwgKGJpbl9xdWVyeV9kdXJhdGlvbl9mb2xkKSwKCSAgKGJpbl9xdWVyeV9kdXJhdGlvbl9kb25lKSwgKGJpbl9xdWVyeV9nZW5lcmljX2ZvbGQpLAoJICAoZ3N0X2Jpbl9xdWVyeSk6CgkgIEhhbmRsZSBTRUdNRU5UX1NUQVJUL0RPTkUgbWVzc2FnZXMgY29ycmVjdGx5LgoJICBNb3JlIGV2b2x2ZWQgcXVlcnkgYWxnb3JpdGhtIHRoYXQgaGFuZGxlcyBkdXJhdGlvbiBxdWVyaWVzCgkgIGNvcnJlY3RseS4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2VuZF9ldmVudCksIChnc3RfZWxlbWVudF9xdWVyeSksCgkgIChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyksIChnc3RfZWxlbWVudF9hYm9ydF9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9jb21taXRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfbG9zdF9zdGF0ZSk6CgkgIFNvbWUgbW9yZSBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgQWRkZWQgZG9jLgoKMjAwNS0xMC0yNSAxMDoxNTo0NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IERvbid0IHVzZSBpbnZhbGlkIHN0cmVhbV90aW1lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19nZXRfcG9zaXRpb24pOgoJICBEb24ndCB1c2UgaW52YWxpZCBzdHJlYW1fdGltZS4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfbmV3c2VnbWVudCk6CgkgIHN0cmVhbV90aW1lIGluIG5ld3NlZ21lbnQgY2Fubm90IGJlIHVuZGVmaW5lZC4KCjIwMDUtMTAtMjUgMTA6MTI6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIEZvcmdvdCB0aGUgY2hhbmdlbG9nIGxhc3QgdGltZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRm9yZ290IHRoZSBjaGFuZ2Vsb2cgbGFzdCB0aW1lCgoyMDA1LTEwLTI0IDE1OjQxOjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1cy5jOiBEb2MgZml4LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgIERvYyBmaXguCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLCAoZ3N0X3F1ZXVlX2NoYWluKSwKCSAgKGdzdF9xdWV1ZV9sb29wKToKCSAgRml4IHBvdGVudGlhbCBkZWFkbG9jayB3aGVuIFFVRVVFX0xPQ0sgaXMgdGFrZW4gYmVmb3JlIFNUUkVBTV9MT0NLLgoKMjAwNS0xMC0yNCAxMTo1NjowMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9saWJzL3RtcGwvOiB0aGVzZSBhcmUgb2Jzb2xldGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0ZHBhcmFtLnNnbWw6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0ZHBsaW5pbnQuc2dtbDoKCSAgKiBkb2NzL2xpYnMvdG1wbC9nc3RkcG1hbi5zZ21sOgoJICAqIGRvY3MvbGlicy90bXBsL2dzdGRwc21vb3RoLnNnbWw6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0dW5pdGNvbnZlcnQuc2dtbDoKCSAgdGhlc2UgYXJlIG9ic29sZXRlCgoyMDA1LTEwLTI0IDA5OjEzOjI3ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJKiBnc3QvZ3N0cXVldWUuYzoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgRml4IHNvbWUgbWlub3IgZG9jdW1lbnRhdGlvbiB0eXBvcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRml4IHNvbWUgbWlub3IgZG9jdW1lbnRhdGlvbiB0eXBvcwoKMjAwNS0xMC0yMyAyMzowNDozOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBIRUFECgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIEhFQUQKCj09PSByZWxlYXNlIDAuOS40ID09PQoKMjAwNS0xMC0yMyAyMjozMDoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9yYW5kb20vcmVsZWFzZToKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHRpbWUgdG8gcmVsZWFzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGltZSB0byByZWxlYXNlCgoyMDA1LTEwLTIzIDEwOjQ5OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL01BTklGRVNUOgoJICBhZGQgbW9yZSBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1vcmUgZmlsZXMKCjIwMDUtMTAtMjMgMTA6Mjk6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogVXNlIGZzZWVrbygpIGFuZCBmdGVsbG8oKSBpZiBhdmFpbGFibGUuIFdoZW4gZmFsbGluZyBiYWNrIG9uIGxzZWVrKCkgdG8gZ2V0IHRoZSBjdXJyZW50IG8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2RvX3NlZWspLAoJICAoZ3N0X2ZpbGVfc2lua19nZXRfY3VycmVudF9vZmZzZXQpOgoJICBVc2UgZnNlZWtvKCkgYW5kIGZ0ZWxsbygpIGlmIGF2YWlsYWJsZS4gV2hlbiBmYWxsaW5nIGJhY2sgb24KCSAgbHNlZWsoKSB0byBnZXQgdGhlIGN1cnJlbnQgb2Zmc2V0LCBmZmx1c2goKSBmaXJzdCB0byBtYWtlIHN1cmUKCSAgZXZlcnl0aGluZyBpcyB1cC10by1kYXRlIGFuZCB3ZSBnZXQgdGhlIHJpZ2h0IG9mZnNldC4KCjIwMDUtMTAtMjMgMDk6MDg6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGdzdC9nc3RlcnJvci5jOgoJKiBnc3QvZ3N0ZXJyb3IuaDoKCSogZ3N0L2dzdHF1ZXVlLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSogcG8vUE9URklMRVMuaW46CgkgIHJlbW92ZSBwcmVtYXR1cmVseSBhZGRlZCBlcnJvciBjYXRlZ29yeSBhbmQgY2xlYW4gdXAgdGhlIGluc3RhbmNlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIHByZW1hdHVyZWx5IGFkZGVkIGVycm9yIGNhdGVnb3J5IGFuZCBjbGVhbiB1cCB0aGUgaW5zdGFuY2VzCgoyMDA1LTEwLTIxIDE3OjUzOjMxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogU2ltcGx5IHNldCB0aGUgcmlnaHQgZmxhZyB3aGVuIGdvaW5nIHRvIHBsYXlpbmcsIHRoYXQncyBhbGwgd2UgbmVlZCB0byBkbyBpbnN0ZWFkIG9mIGNhbGxpbmcgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbiksIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgU2ltcGx5IHNldCB0aGUgcmlnaHQgZmxhZyB3aGVuIGdvaW5nIHRvIHBsYXlpbmcsIHRoYXQncyBhbGwKCSAgd2UgbmVlZCB0byBkbyBpbnN0ZWFkIG9mIGNhbGxpbmcgYSBmdW5jdGlvbiBpbnNpZGUgdGhlIG9iamVjdAoJICBsb2NrICh0aGF0IGNvdWxkIHRha2UgdGhlIGxvY2sgYXMgd2VsbCBhbmQgZGVhZGxvY2spCgoyMDA1LTEwLTIxIDE2OjE4OjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBEb24ndCB3YXJuLCB0aGUgcGVlciBlbGVtZW50IGtub3dzIHdoYXQgdG8gZG8gYmVzdCB3aGVuIHRoZSBzZWVrIGZhaWxlZCwgaXQgbWlnaHQgdHJ5IHNvbWV0aGluLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kb19zZWVrKSwKCSAgKGdzdF9iYXNlX3NyY19sb29wKToKCSAgRG9uJ3Qgd2FybiwgdGhlIHBlZXIgZWxlbWVudCBrbm93cyB3aGF0IHRvIGRvIGJlc3Qgd2hlbgoJICB0aGUgc2VlayBmYWlsZWQsIGl0IG1pZ2h0IHRyeSBzb21ldGhpbmcgZWxzZS4KCjIwMDUtMTAtMjEgMTY6MTQ6MzQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IEZpeCBzZWVraW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfaW5pdCksCgkgIChnc3RfYmFzZV9zcmNfZG9fc2VlayksIChnc3RfYmFzZV9zcmNfbG9vcCksIChnc3RfYmFzZV9zcmNfc3RhcnQpOgoJICBGaXggc2Vla2luZy4KCjIwMDUtMTAtMjEgMTU6MTM6MDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXNlZ21lbnRzLnR4dDogTW9yZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXNlZ21lbnRzLnR4dDoKCSAgTW9yZSBkb2NzLgoJICAqIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl9wcmVwYXJlX2J1Zik6CgkgIENvcnJlY3RseSBzZXQgY2FwcywgZXZlbiBvbiB0aGUgc3ViYnVmZXIuCgoyMDA1LTEwLTIxIDExOjM2OjMyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQW5kIDIlIG1vcmUgZG9jIGNvdmVyYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cGFyc2UuaDoKCSAgKiBnc3QvZ3N0dGFzay5jOiAoZ3N0X3Rhc2tfZmluYWxpemUpLCAoZ3N0X3Rhc2tfZnVuYyk6CgkgICogZ3N0L2dzdHRhc2suaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQW5kIDIlIG1vcmUgZG9jIGNvdmVyYWdlLgoKMjAwNS0xMC0yMSAwOToyNDoyOCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfcXVlcnkpOiBDbGVhbiB1cCBwZXJjZW50IHBvc2l0aW9uIHJlcG9ydGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMjEgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfcXVlcnkpOiBDbGVhbiB1cCBwZXJjZW50CgkgIHBvc2l0aW9uIHJlcG9ydGluZy4KCjIwMDUtMTAtMjAgMjE6MDg6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBNb3JlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlcnJvci5jOiAoZ3N0X2Vycm9yX2dldF9tZXNzYWdlKToKCSAgKiBnc3QvZ3N0cGFyc2UuaDoKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgICogZ3N0L2dzdHRyYWNlLmM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIE1vcmUgZG9jcy4KCjIwMDUtMTAtMjAgMjA6NDY6MTcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBBbm90aGVyIDElIG1vcmUgY292ZXJhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgICogZ3N0L2dzdHBhcnNlLmM6CgkgIEFub3RoZXIgMSUgbW9yZSBjb3ZlcmFnZS4KCjIwMDUtMTAtMjAgMjA6MjU6NTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBZYXkhIDElIG1vcmUgZG9jcyBjb3ZlcmFnZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfYWJvcnRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUpOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RxdWVyeS5jOiAoZ3N0X3F1ZXJ5X3NldF9wb3NpdGlvbiksCgkgIChnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24pLCAoZ3N0X3F1ZXJ5X3NldF9kdXJhdGlvbiksCgkgIChnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24pLCAoZ3N0X3F1ZXJ5X25ld19jb252ZXJ0KToKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgWWF5ISAxJSBtb3JlIGRvY3MgY292ZXJhZ2UuCgoyMDA1LTEwLTIwIDE5OjQ3OjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogRG9jcyBhbmQgY29uc2lzdGVuY3kgZml4ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKGdzdF9xdWVyeV9zZXRfcG9zaXRpb24pLAoJICAoZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKSwgKGdzdF9xdWVyeV9zZXRfZHVyYXRpb24pLAoJICAoZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uKSwgKGdzdF9xdWVyeV9uZXdfY29udmVydCk6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9xdWVyeV9jb252ZXJ0KToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgRG9jcyBhbmQgY29uc2lzdGVuY3kgZml4ZXMuCgoyMDA1LTEwLTIwIDE5OjMwOjU3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHRhc2suKjogTW9yZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dGFzay5jOgoJICAqIGdzdC9nc3R0YXNrLmg6CgkgIE1vcmUgZG9jcy4KCjIwMDUtMTAtMjAgMTc6MjI6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFJld29ya2VkIHRoZSBtZXNzYWdlIGhhbmRsaW5nIGEgYml0LCBjYWNoZSB0aGUgbWVzc2FnZXMgaW5zdGVhZCBvZiBvbmx5IHRoZSBzZW5kZXJzLiBhbG93cyB1cyB0byBkbyBtb3IuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAobWVzc2FnZV9jaGVjayksIChiaW5fcmVwbGFjZV9tZXNzYWdlKSwKCSAgKGJpbl9yZW1vdmVfbWVzc2FnZXMpLCAoaXNfZW9zKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAodXBkYXRlX2RlZ3JlZSksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwgKGdzdF9iaW5fZGlzcG9zZSksIChiaW5fYnVzX2hhbmRsZXIpOgoJICBSZXdvcmtlZCB0aGUgbWVzc2FnZSBoYW5kbGluZyBhIGJpdCwgY2FjaGUgdGhlIG1lc3NhZ2VzIGluc3RlYWQgb2YKCSAgb25seSB0aGUgc2VuZGVycy4gYWxvd3MgdXMgdG8gZG8gbW9yZSBpbiB0aGUgZnV0dXJlLgoKMjAwNS0xMC0yMCAxNzoxODoxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6IFVwZGF0ZSBUT0RPCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFVwZGF0ZSBUT0RPCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfZ2V0X3Bvc2l0aW9uKSwKCSAgKGdzdF9iYXNlX3NpbmtfcXVlcnkpOgoJICBEb24ndCB1c2UgY2xvY2sgdGltZSB0byByZXBvcnQgcG9zaXRpb24gd2hlbiBpbiBFT1MuCgoyMDA1LTEwLTIwIDEzOjEwOjEzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogRml4IGludGVyZmFjZSBvdXRwdXQgd2l0aCBnc3QtaW5zcGVjdCAtYTsgZG9uJ3QgcHJpbnQgbmV3bGluZXMgYWZ0ZXIgZG91YmxlL2Zsb2F0IHByb3BlcnRpZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9pbnRlcmZhY2VzKSwKCSAgKHByaW50X2VsZW1lbnRfcHJvcGVydGllc19pbmZvKSwgKHByaW50X2VsZW1lbnRfaW5mbyk6CgkgIEZpeCBpbnRlcmZhY2Ugb3V0cHV0IHdpdGggZ3N0LWluc3BlY3QgLWE7IGRvbid0IHByaW50CgkgIG5ld2xpbmVzIGFmdGVyIGRvdWJsZS9mbG9hdCBwcm9wZXJ0aWVzLgoKMjAwNS0xMC0yMCAxMTo0ODo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNwZWVkIHVwIGN1cnJlbnQgcG9zaXRpb24gY2FsY3VsYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2dldF9wb3NpdGlvbiksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KToKCSAgU3BlZWQgdXAgY3VycmVudCBwb3NpdGlvbiBjYWxjdWxhdGlvbi4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmV3c2VnbWVudCk6CgkgIENvcnJlY3RseSBzZXQgc3RyZWFtIHBvc2l0aW9uIGluIG5ld3NlZ21lbnQuCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChhZGRfdG9fcXVldWUpLAoJICAodXBkYXRlX2RlZ3JlZSksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksCgkgIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfcmVzeW5jKSwgKGdzdF9iaW5fc29ydF9pdGVyYXRvcl9mcmVlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSk6CgkgIENsZWFuIHVwIGRlYnVnZ2luZyBpbmZvCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfbGlua19zcmMpLCAoZ3N0X3F1ZXVlX2NoYWluKSwKCSAgKGdzdF9xdWV1ZV9sb29wKSwgKGdzdF9xdWV1ZV9oYW5kbGVfc3JjX3F1ZXJ5KToKCSAgUGF1c2UgdGFzayBmYXN0ZXIuCgoyMDA1LTEwLTE5IDE3OjA2OjU2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRml4IHF1ZXJ5IGhhbmRsaW5nIGFnYWluLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jb21taXRfc3RhdGUpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLCAoZG9fcGxheWluZyk6CgkgIEZpeCBxdWVyeSBoYW5kbGluZyBhZ2Fpbi4KCjIwMDUtMTAtMTkgMTU6NTA6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBBUEkgY2hhbmdlIGZpeC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KSwgKGRvX3BsYXlpbmcpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19xdWVyeSk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX3F1ZXJ5KToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIChnc3RfdHlwZV9maW5kX2hhbmRsZV9zcmNfcXVlcnkpLCAoZmluZF9lbGVtZW50X2dldF9sZW5ndGgpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2FjdGl2YXRlKToKCSAgQVBJIGNoYW5nZSBmaXguCgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKSwKCSAgKGdzdF9xdWVyeV9zZXRfcG9zaXRpb24pLCAoZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKSwKCSAgKGdzdF9xdWVyeV9uZXdfZHVyYXRpb24pLCAoZ3N0X3F1ZXJ5X3NldF9kdXJhdGlvbiksCgkgIChnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24pLCAoZ3N0X3F1ZXJ5X3NldF9zZWdtZW50KSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KToKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgQnVuZGxpbmcgcXVlcnkgcG9zaXRpb24vZHVyYXRpb24gaXMgbm90IGEgZ29vZCBpZGVhIHNpbmNlIGR1cmF0aW9uCgkgIGRvZXMgbm90IGNoYW5nZSBtdWNoIGFuZCB3ZSBkb24ndCB3YW50IHRvIHJlY2FsY3VsYXRlIGl0IGZvciBldmVyeQoJICBwb3NpdGlvbiBxdWVyeSwgc28gdGhleSBhcmUgc2VwYXJhdGVkIGFnYWluLi4KCSAgQmFzZSB2YWx1ZSBpbiBzZWdtZW50IHF1ZXJ5IGlzIG5vdCBuZWVkZWQuCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaGFuZGxlX3NyY19xdWVyeSk6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbiksCgkgIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbiksIChnc3RfcGFkX3F1ZXJ5X3Bvc2l0aW9uKSwKCSAgKGdzdF9wYWRfcXVlcnlfZHVyYXRpb24pOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBVcGRhdGVzIGZvciBxdWVyeSBBUEkgY2hhbmdlLgoJICBBZGRlZCBzb21lIGRvY3MgaGVyZSBhbmQgdGhlcmUuCgoyMDA1LTEwLTE5IDExOjQzOjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrLzogd2FpdCBvbiB0aHJlYWQgdG8gZGllIHNvIHdlIGNhbiBjaGVjayByZWZjb3VudCBjb3JyZWN0bHkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIHdhaXQgb24gdGhyZWFkIHRvIGRpZSBzbyB3ZSBjYW4gY2hlY2sgcmVmY291bnQgY29ycmVjdGx5CgoyMDA1LTEwLTE5IDExOjQzOjE4ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgdXBkYXRlIHRvb2xzIHBhY2thZ2UgbmFtaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgdG9vbHMgcGFja2FnZSBuYW1pbmcKCjIwMDUtMTAtMTkgMTE6NDI6MzkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHBhZC5jOgoJICBsb2cgYW4gaWYgYnJhbmNoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBsb2cgYW4gaWYgYnJhbmNoCgoyMDA1LTEwLTE4IDE3OjMwOjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svcGlwZWxpbmVzL3N0cmVzcy5jOiBNYWtlIGNoZWNrIGEgbGl0dGxlIG1vcmUgdGltZSBjb25zdW1pbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zdHJlc3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSBjaGVjayBhIGxpdHRsZSBtb3JlIHRpbWUgY29uc3VtaW5nLgoKMjAwNS0xMC0xOCAxNzowNjoyOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrLzogU21hbGwgc3RhdGUgY2hhbmdlIHRvcnR1cmUgdGVzdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svcGlwZWxpbmVzL3N0cmVzcy5jOiAoR1NUX1NUQVJUX1RFU1QpLAoJICAoc2ltcGxlX2xhdW5jaF9saW5lc19zdWl0ZSksIChtYWluKToKCSAgU21hbGwgc3RhdGUgY2hhbmdlIHRvcnR1cmUgdGVzdC4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwgKGRvX3BsYXlpbmcpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBOZXZlciB0YWtlIHN0YXRlIGxvY2sgZnJvbSBzdHJlYW1pbmcgdGhyZWFkLCBjbGVhbiB1cCB1Z2x5CgkgIGhhY2tzLiBVbmZvcnR1bmF0bHkgY29yZSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBuaWNlIHdheXMgdG8KCSAgYXN5bmMgY29tbWl0IHN0YXRlLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpLCAoZ3N0X2Jpbl9yZWNhbGNfc3RhdGUpLAoJICAoYmluX2J1c19oYW5kbGVyKToKCSAgU3RhcnQgc3RhdGUgcmVjYWxjIGlmIGEgU1RBVEVfRElSVFkgbWVzc2FnZSBpcyBwb3N0ZWQsIGJ1dCBvbmx5CgkgIG9uIHRoZSB0b3BsZXZlbCBiaW4uCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQpLAoJICAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLCAoZ3N0X2VsZW1lbnRfYWJvcnRfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKSwgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlX2Z1bmMpLCAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBTdGF0ZSB2YXJpYWJsZXMgYXJlIG5vdyBwcm90ZWN0ZWQgd2l0aCB0aGUgTE9DSywgdGhlIHN0YXRlCgkgIGxvY2sgaXMgb25seSB1c2VkIHRvIHNlcmlhbGl6ZSBfc2V0X3N0YXRlKCkuCgoyMDA1LTEwLTE4IDE2OjI1OjM4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgU2VyaW91c2x5LCB0aGlzIGlzIGJldHRlciB0aGFuIGEgcHJldmlvdXMgY29tbWl0IGFzIHdlIG9ubHkgbmVlZCB0byBub3RpZnkgdGhlIGZhY3QgdGhhdCBhbiBlbGVtZW50IGNoYW5nZWQgc3RhdGUgaW4gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9nc3QvZ3N0bWVzc2FnZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAobWVzc2FnZV9yZWNlaXZlZCk6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jbGFzc19pbml0KSwgKGdzdF9iaW5fcmVjYWxjX2Z1bmMpLAoJICAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfYWJvcnRfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKSwgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUpOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCksCgkgIChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfZGlydHkpLCAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9uZXdfZHVyYXRpb24pLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9zZWdtZW50X3N0YXJ0KSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9wYXJzZV9kdXJhdGlvbik6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgU2VyaW91c2x5LCB0aGlzIGlzIGJldHRlciB0aGFuIGEgcHJldmlvdXMgY29tbWl0IGFzIHdlIG9ubHkgbmVlZAoJICB0byBub3RpZnkgdGhlIGZhY3QgdGhhdCBhbiBlbGVtZW50IGNoYW5nZWQgc3RhdGUgaW4gYSBzdHJlYW1pbmcKCSAgdGhyZWFkLCBtYXJraW5nIHRoZSBzdGF0ZSBvZiB0aGUgcGFyZW50cyBkaXJ0eSwgaGVuY2UgdGhlCgkgIFNUQVRFX0RJUlRZIG1lc3NhZ2UgaW5zdGVhZCBvZiBhYnVzaW5nIGEgYm9vbGVhbiBpbiBhIFNUQVRFX0NIQU5HRQoJICBtZXNzYWdlLgoKMjAwNS0xMC0xOCAxNToxNToxMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IENsZWFudXBzLCBwcmVwYXJlIGZvciBzdGF0ZSBjaGFuZ2UgZml4ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2dldF9zdGF0ZV9mdW5jKSwKCSAgKGdzdF9iaW5fcmVjYWxjX2Z1bmMpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZXRfY2xvY2spLAoJICAoZ3N0X2VsZW1lbnRfYWJvcnRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfbG9zdF9zdGF0ZSk6CgkgIENsZWFudXBzLCBwcmVwYXJlIGZvciBzdGF0ZSBjaGFuZ2UgZml4ZXMuCgoyMDA1LTEwLTE4IDE0OjI5OjIxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogUGVuZGluZyBBQkkgY2hhbmdlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSksIChnc3RfZWxlbWVudF9zZXRfc3RhdGVfZnVuYyk6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgUGVuZGluZyBBQkkgY2hhbmdlcy4KCSAgR1RocmVhZFBvb2wgaW4gR3N0QmluQ2xhc3MgdG8gbW9uaXRvciBhc3luYyBzdGF0ZSBjaGFuZ2VzLgoJICBzdGF0ZV9jb29raWUgaW4gR3N0RWxlbWVudCB0byBkZXRlY3QgY29uY3VycmVudCBnc3Qvc2V0IHN0YXRlLgoJICBzZXRfc3RhdGUgaXMgbm93IHZpcnR1YWwgdG9vIGluIGNhc2UgYSB2ZXJ5IGNvbXBsaWNhdGVkIGVsZW1lbnQKCSAgaGFzIHRvIGJlIGNvbnN0cnVjdGVkLgoKMjAwNS0xMC0xOCAxMzoxOToxNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIE1ha2UgbWVzc2FnZXMgZnV0dXJlIHByb29mLiBzdGF0ZS1jaGFuZ2UgZ2V0cyBhIGZsYWcgaWYgaXQgd2FzIGEgbWVzc2FnZSBjb21taW5nIGZyb20gdGhlIHN0cmVhbWluZyB0aHJlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9nc3QvZ3N0bWVzc2FnZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAobWVzc2FnZV9yZWNlaXZlZCk6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUpOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCksCgkgIChnc3RfbWVzc2FnZV9uZXdfc2VnbWVudF9zdGFydCksIChnc3RfbWVzc2FnZV9uZXdfc2VnbWVudF9kb25lKSwKCSAgKGdzdF9tZXNzYWdlX25ld19kdXJhdGlvbiksIChnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFuZ2VkKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc2VnbWVudF9kb25lKSwgKGdzdF9tZXNzYWdlX3BhcnNlX2R1cmF0aW9uKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApOgoJICBNYWtlIG1lc3NhZ2VzIGZ1dHVyZSBwcm9vZi4KCSAgc3RhdGUtY2hhbmdlIGdldHMgYSBmbGFnIGlmIGl0IHdhcyBhIG1lc3NhZ2UgY29tbWluZyBmcm9tIHRoZQoJICBzdHJlYW1pbmcgdGhyZWFkLgoJICBzZWdtZW50LXN0YXJ0L3N0b3AgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGluIG90aGVyIGZvcm1hdHMuCgkgIEEgbWVzc2FnZSB0byBub3RpZnkgYW4gYXBwIHRoYXQgYSBwaXBlbGluZSBjaGFuZ2VkIHBsYXliYWNrCgkgIGR1cmF0aW9uLgoJICBBbHNvIGZpeCBhIEdzdE1lc3NhZ2UgbGVhayBpbiAtbGF1bmNoCgoyMDA1LTEwLTE4IDEwOjMyOjQ4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9kaXNwb3NlKTogTW9yZSBoZWxwZnVsIG1lc3NhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTE4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RlbGVtZW50LmMgKGdzdF9lbGVtZW50X2Rpc3Bvc2UpOiBNb3JlIGhlbHBmdWwgbWVzc2FnZS4KCjIwMDUtMTAtMTggMDg6MjA6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkgIHJlbW92ZSBpbmZvIG1lc3NhZ2VzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgaW5mbyBtZXNzYWdlcwoKMjAwNS0xMC0xOCAwNzoxMzoyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0cmVnaXN0cnkuYzogdW5yZWYgYSBwbHVnLWluIHdlIGdldCB0aGF0IHdhcyBhbHJlYWR5IGluaXRpYWxpemVkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCk6CgkgIHVucmVmIGEgcGx1Zy1pbiB3ZSBnZXQgdGhhdCB3YXMgYWxyZWFkeSBpbml0aWFsaXplZAoKMjAwNS0xMC0xNyAyMDoxNjo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgYWRkIG5ldyBhcGkgZW50cmllcyBoaWRlIGludGVybmFsIG1hY3JvCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBhZGQgbmV3IGFwaSBlbnRyaWVzCgkgIGhpZGUgaW50ZXJuYWwgbWFjcm8KCjIwMDUtMTAtMTcgMTg6MDk6MzIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmMgKGdzdF9jb2xsZWN0cGFkc19jaGFpbik6IFNsaWdodCBjbGVhbnVwLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jIChnc3RfY29sbGVjdHBhZHNfY2hhaW4pOiBTbGlnaHQKCSAgY2xlYW51cC4KCSAgKiBnc3QvTWFrZWZpbGUuYW0gKGdzdGVudW10eXBlcy5jKTogVGhyZWFkc2FmZSBub3cuCgkgICogZ3N0L2dzdGV2ZW50LmMgKGdzdF9ldmVudF9uZXcsIGdzdF9ldmVudF9maW5hbGl6ZSk6IExPRy4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyk6IHMvSU5GTy9ERUJVRy8uCgkgIChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyk6IEJldHRlciBkZWJ1ZyBtZXNzYWdlLgoJICAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKTogcy9JTkZPL0RFQlVHLy4KCSAgKGdzdF9lbGVtZW50X2xvc3Rfc3RhdGUsIGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYyAoZ3N0X21lc3NhZ2VfaW5pdCk6IHMvSU5GTy9MT0cvLgoJICAoZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSk6IHMvSU5GTy9MT0cvLgoKMjAwNS0xMC0xNyAxNzo0NjozNyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIENoZWNrIHZhbGlkaXR5IG9mIGVuZCB0aW1lIGJhc2VkIG9uIGVuZCB0aW1lIHZhcmlhYmxlLCBub3Qgc3RhcnQgdGltZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIENoZWNrIHZhbGlkaXR5IG9mIGVuZCB0aW1lIGJhc2VkIG9uIGVuZCB0aW1lIHZhcmlhYmxlLCBub3Qgc3RhcnQgdGltZS4KCjIwMDUtMTAtMTcgMTc6MDU6MzggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIG1lcmdlIGNvbnRyb2xsZXIgdGVzdHN1aXRlcyBmaXggYnJva2VuIHRlc3RzIHJlbW92ZSBtZW0tY2h1bmsgZnJvbSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzogKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9jb250cm9sbGVyX3N1aXRlKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X3NldF9pbnRlcnBvbGF0aW9uX21vZGUpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICAqIHRlc3RzdWl0ZS9jb250cm9sbGVyLy5jdnNpZ25vcmU6CgkgICogdGVzdHN1aXRlL2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkgICogdGVzdHN1aXRlL2NvbnRyb2xsZXIvaW50ZXJwb2xhdG9yLmM6CgkgIG1lcmdlIGNvbnRyb2xsZXIgdGVzdHN1aXRlcwoJICBmaXggYnJva2VuIHRlc3RzCgkgIHJlbW92ZSBtZW0tY2h1bmsgZnJvbSBkb2NzCgoyMDA1LTEwLTE3IDE0OjQyOjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IG91dC4gIGdldCBvdXQuICB5b3UncmUgZmlyZWQuICB0byB0aGUgQXR0aWMgIQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVtY2h1bmsuYzoKCSAgKiBnc3QvZ3N0bWVtY2h1bmsuaDoKCSAgKiBnc3QvZ3N0dHJhc2hzdGFjay5jOgoJICAqIGdzdC9nc3R0cmFzaHN0YWNrLmg6CgkgIG91dC4gIGdldCBvdXQuICB5b3UncmUgZmlyZWQuICB0byB0aGUgQXR0aWMgIQoKMjAwNS0xMC0xNyAxNDozNzowNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBmaXggc2lnbmVkbmVzcyBpc3N1ZXMgaW4gYSAoaG9wZWZ1bGx5KSBjb3JyZWN0IHdheQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X2NhcHNfaW50ZXJzZWN0KToKCSAgZml4IHNpZ25lZG5lc3MgaXNzdWVzIGluIGEgKGhvcGVmdWxseSkgY29ycmVjdCB3YXkKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcGFkc19hY3RpdmF0ZSk6CgkgIHNvbWUgZGVidWdnaW5nCgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9zZXRfcGFyZW50KToKCSAgc29tZSBkZWJ1Z2dpbmcKCjIwMDUtMTAtMTcgMTA6Mzc6MTMgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgRml4IGEgZG9jIHR5cG8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBGaXggYSBkb2MgdHlwby4KCjIwMDUtMTAtMTcgMDk6Mjg6MzUgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2dzdHZhbHVlLmg6IEZpeCBwcm90b3R5cGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xNyAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9nc3R2YWx1ZS5oOiBGaXggcHJvdG90eXBlcy4KCjIwMDUtMTAtMTYgMTQ6MzI6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3QuaDoKCSogZ3N0L2dzdHZlcnNpb24uaC5pbjoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGFkZCBnc3RfdmVyc2lvbl9zdHJpbmcgKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBnc3RfdmVyc2lvbl9zdHJpbmcgKCkKCjIwMDUtMTAtMTYgMTM6NTU6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIGNvbW1lbnQ7IHVwZGF0ZSB3aW4zMiBjb25maWcuaAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY29tbWVudDsgdXBkYXRlIHdpbjMyIGNvbmZpZy5oCgoyMDA1LTEwLTE2IDEyOjM3OjE0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHNjcmlwdHMvY3ZzLXVwZGF0ZS5zaDoKCSAgRGVhciBBbmR5OiBoZXJlJ3MgYSBzY3JpcHQgdG8gdXBkYXRlIHN0dWZmIGZyb20gQ1ZTCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBEZWFyIEFuZHk6CgkgIGhlcmUncyBhIHNjcmlwdCB0byB1cGRhdGUgc3R1ZmYgZnJvbSBDVlMKCSAgTG92ZSwKCSAgVGhvbWFzCgoyMDA1LTEwLTE2IDEyOjI4OjIwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogY2xlYW4gdXAgZnVydGhlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIGNsZWFuIHVwIGZ1cnRoZXIKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgaXQncyBQTFVHSU5ESVIgbm93CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2ludGVyc2VjdCk6CgkgIHVzZSBnaW50NjQsIHRoZSByYW5nZSBjb3VsZCBiZSBiaWdnZXIgdGhhbiBhIGd1aW50CgoyMDA1LTEwLTE2IDExOjQ4OjA5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBnc3QvZ3N0Y2xvY2suaDoKCSAgR1N0cmVhbWVyIGNvbnN1bHRhbnRzIHdpbGwgbWFrZSBhIGxvdCBvZiBtb25leSBpbiAyMDM4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBHU3RyZWFtZXIgY29uc3VsdGFudHMgd2lsbCBtYWtlIGEgbG90IG9mIG1vbmV5IGluIDIwMzgKCjIwMDUtMTAtMTYgMTA6NTg6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdGNhcHMuYzogRml4IGd1aW50IGogZGl2aW5nIHVuZGVyIDAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2ludGVyc2VjdCk6CgkgIEZpeCBndWludCBqIGRpdmluZyB1bmRlciAwCgoyMDA1LTEwLTE2IDEwOjM4OjAyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrIGZvciBwcm9jZXNzLmgsIGRlY2xhcmVzIGdldHBpZCgpIG9uIFdpbmRvd3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIGNoZWNrIGZvciBwcm9jZXNzLmgsIGRlY2xhcmVzIGdldHBpZCgpIG9uIFdpbmRvd3MKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICBpbmNsdWRlIHByb2Nlc3MuaCBpZiB3ZSBoYXZlIGl0CgkgICogZ3N0L2dzdG1lbWNodW5rLmM6IChwb3B1bGF0ZSksIChnc3RfbWVtX2NodW5rX25ldyk6CgkgICogZ3N0L2dzdG1lbWNodW5rLmg6CgkgIGZpeCBzaWduZWRuZXNzIGlzc3VlcwoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICBmaXggZ2V0X3R5cGUncwoKMjAwNS0xMC0xNiAxMDoyMjoyOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJICBmaXggc2lnbmVkbmVzcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IHNpZ25lZG5lc3MKCjIwMDUtMTAtMTYgMTA6MTg6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIGZpeCBHU1RfVkVSU0lPTgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IEdTVF9WRVJTSU9OCgoyMDA1LTEwLTE2IDEwOjE1OjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBmaXggaW5saW5lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggaW5saW5lCgoyMDA1LTEwLTE2IDEwOjEyOjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oLmluOgoJICBkZWZpbmUgUEFDS0FHRQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGVmaW5lIFBBQ0tBR0UKCjIwMDUtMTAtMTYgMTA6MTA6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIHVwZGF0ZSBhdmFpbGFibGUgaGVhZGVycwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGF2YWlsYWJsZSBoZWFkZXJzCgoyMDA1LTEwLTE2IDA5OjU2OjMzICswMDAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AbW91dHRlLm5ldD4KCgkgIGdzdC9nc3RjYXBzLmM6IEZpeCBhIGJhZCBidWcgd2l0aCBhIHNpbXBsZSBmaXguIEJlY2F1c2Ugb2YgdW5zaWduZWQgaW50cywgY2FwcyBpbnRlcnNlY3Rpb24gd2FzIGdvaW5nIG51dHMgYW5kIHRyeWluZy4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xNiAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19pbnRlcnNlY3QpOiBGaXggYSBiYWQgYnVnIHdpdGggYQoJICBzaW1wbGUKCSAgZml4LiBCZWNhdXNlIG9mIHVuc2lnbmVkIGludHMsIGNhcHMgaW50ZXJzZWN0aW9uIHdhcyBnb2luZyBudXRzCgkgIGFuZAoJICB0cnlpbmcgdG8gYWNjZXNzIHN0cnVjdHVyZXMgd2l0aCBHX01BWFVJTlQgaW5kZXguIFRoYXQgZml4ZXMKCSAgdmlkZW90ZXN0c3JjICEgZmZtcGVnY29sb3JzcGFjZSAhIGZha2VzaW5rCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9saW5rX2NoZWNrX2NvbXBhdGlibGVfdW5sb2NrZWQpOiBsb2dzCgkgIGNvbnNpc3RlbmN5LgoKMjAwNS0xMC0xNiAwOTo1NToyNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHVwZGF0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlCgoyMDA1LTEwLTE2IDA5OjU0OjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgdHlwbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdHlwbwoKMjAwNS0xMC0xNiAwOTo1MToyNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkqIHdpbjMyL2NvbW1vbi9jb25maWcuaC5pbjoKCSAgdXBkYXRlcyBmb3IgMmluMzIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZXMgZm9yIDJpbjMyCgoyMDA1LTEwLTE2IDA5OjQ0OjA0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzoKCSogY2hlY2svZ3N0L2dzdHBsdWdpbi5jOgoJKiBjb25maWd1cmUuYWM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RwbHVnaW4uYzoKCSogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6CgkgIG1vcmUgZGVmaW5lIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3JlIGRlZmluZSBmaXhlcwoKMjAwNS0xMC0xNiAwOToyMDo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb25maWd1cmUuYWM6IHVzZSB0aGUgZ2V0dGV4dCBtYWNybwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xNiAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSAgPHRob21hcyBhdCBhcGVzdGFhcnQgZG90IG9yZz4KCSAgKiBjb25maWd1cmUuYWM6CgkgIHVzZSB0aGUgZ2V0dGV4dCBtYWNybwoJICAqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvaW5kZXhlcnMvZ3N0aW5kZXhlcnMuYzoKCSAgdXBkYXRlIGZvciBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4KCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmg6CgkgIHVwZGF0ZWQgY29uZmlnLmgKCSAgKiB3aW4zMi9jb21tb24vY29uZmlnLmguaW46CgkgIGFkZCB0aGUgdGVtcGxhdGUgdG8gZ2VuZXJhdGUgY29uZmlnLmgKCSAgKiB3aW4zMi9jb21tb24vZ3N0ZW51bXR5cGVzLmM6CgkgICogd2luMzIvY29tbW9uL2dzdHZlcnNpb24uaDoKCSAgdXBkYXRlZCBjb3BpZXMKCjIwMDUtMTAtMTYgMDk6MTE6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1kYXRhcHJvdG9jb2wtdW5pbnN0YWxsZWQucGMuaW46CgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLnBjLmluOgoJICByZW1vdmUgbW9yZSBQS0dfQ0ZMQUdTCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgbW9yZSBQS0dfQ0ZMQUdTCgoyMDA1LTEwLTE2IDA5OjEwOjE3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IGFkZCB0aGUgbmFubwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChnc3RfdmVyc2lvbik6CgkgICogZ3N0L2dzdHZlcnNpb24uaC5pbjoKCSAgYWRkIHRoZSBuYW5vCgoyMDA1LTEwLTE2IDA4OjU5OjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItdW5pbnN0YWxsZWQucGMuaW46CgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXIucGMuaW46CgkgIHJlbW92ZSBHU1RfUEtHX0NGTEFHUwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIEdTVF9QS0dfQ0ZMQUdTCgoyMDA1LTEwLTE1IDIyOjI0OjIwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGV2ZW50Lmg6IE9vcHMsIGFkZCBtaXNzaW5nIGNsb3NpbmcgYnJhY2tldC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgIE9vcHMsIGFkZCBtaXNzaW5nIGNsb3NpbmcgYnJhY2tldC4KCjIwMDUtMTAtMTUgMjE6NDE6MjAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiB1c2UgY29tbW9uIG00J3MgZm9yIGFyZ3VtZW50IGNoZWNraW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgdXNlIGNvbW1vbiBtNCdzIGZvciBhcmd1bWVudCBjaGVja2luZwoKMjAwNS0xMC0xNSAyMDozMzowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFkZCBHU1RfRVZFTlRfVFlQRV9OQU1FKCkgbWFjcm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgIEFkZCBHU1RfRVZFTlRfVFlQRV9OQU1FKCkgbWFjcm8uCgoyMDA1LTEwLTE1IDIwOjAwOjMwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL2NvbW1vbi9saWJnc3RyZWFtZXIuZGVmOgoJICB1cGRhdGUgZGVmcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIGRlZnMKCjIwMDUtMTAtMTUgMTk6NTc6MDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogcHJpdmF0aXplIG1vcmUgc3ltYm9scwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHRhc2suYzoKCSAgcHJpdmF0aXplIG1vcmUgc3ltYm9scwoKMjAwNS0xMC0xNSAxODoyMjozMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb25maWd1cmUuYWM6IGFkZCBzcmNkaXIsIGJ1aWxkZGlyIGluY2x1ZGVzIHRvIEdTVF9BTExfQ0ZMQUdTLCBzaW5jZSBldmVyeXRoaW5nIHRoYXQgdXNlcyBHU3RyZWFtZXIgQVBJIHNob3VsZCBoYXZlIHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBhZGQgc3JjZGlyLCBidWlsZGRpciBpbmNsdWRlcyB0byBHU1RfQUxMX0NGTEFHUywgc2luY2UKCSAgZXZlcnl0aGluZyB0aGF0IHVzZXMgR1N0cmVhbWVyIEFQSSBzaG91bGQgaGF2ZSB0aGUgaW5jbHVkZXMKCjIwMDUtMTAtMTUgMTc6NTk6MDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ2l2ZSBlYWNoIHZhbHVlIGEgX2dldF90eXBlLCByZW1vdmVzIHRoZSBEQVRBIGV4cG9ydHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF9kYXRlX2dldF90eXBlKSwgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgICogZ3N0L2dzdHZhbHVlLmg6CgkgIGdpdmUgZWFjaCB2YWx1ZSBhIF9nZXRfdHlwZSwgcmVtb3ZlcyB0aGUgREFUQSBleHBvcnRzCgoyMDA1LTEwLTE1IDE3OjIyOjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9iYXNlL01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9iYXNlL01ha2VmaWxlLmFtOgoJICBmaXggbGluayBmbGFncwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGxpbmsgZmxhZ3MKCjIwMDUtMTAtMTUgMTY6Mzk6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHVwZGF0ZSBkZWZzIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBkZWZzIGZpbGUKCjIwMDUtMTAtMTUgMTY6Mzc6MjIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIHVwZGF0ZSBkZWZzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgZGVmcwoKMjAwNS0xMC0xNSAxNjozMzowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0Lio6IHJlbW92ZSBfZ3N0X3JlZ2lzdHJ5X2F1dG9fbG9hZCwgbm90IHVzZWQgYW55bW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdC5oOgoJICByZW1vdmUgX2dzdF9yZWdpc3RyeV9hdXRvX2xvYWQsIG5vdCB1c2VkIGFueW1vcmUKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF90eXBlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIG1ha2UgX2dldF90eXBlIGZ1bmN0aW9ucyBzaW1pbGFyLCBmaXhlcyBkYXRhIGV4cG9ydCBmcm9tIGxpYnJhcnkKCjIwMDUtMTAtMTUgMTY6MTY6MDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzoKCSogZ3N0L2dzdHBhZHRlbXBsYXRlLmM6CgkqIGdzdC9nc3RwbHVnaW4uYzoKCSogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOgoJKiBsaWJzL2dzdC9jaGVjay9nc3RjaGVjay5jOgoJICBJJ20gdG9vIGxhenkgdG8gY29tbWVudCB0aGlzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBndGstZG9jIGluc2lzdHMgb24gaW5zZXJ0aW5nIDxQQVJBPiBhdCBldmVyeSBlbXB0eSBsaW5lLCBzaWdoCgoyMDA1LTEwLTE1IDE2OjAxOjU3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdGJpbi5jOgoJKiBnc3QvZ3N0YnVmZmVyLmM6CgkqIGdzdC9nc3RidXMuYzoKCSogZ3N0L2dzdGNhcHMuYzoKCSogZ3N0L2dzdGNoaWxkcHJveHkuYzoKCSogZ3N0L2dzdGNsb2NrLmM6CgkqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlcnJvci5jOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGZpbHRlci5jOgoJKiBnc3QvZ3N0Zm9ybWF0LmM6CgkqIGdzdC9nc3RnaG9zdHBhZC5jOgoJKiBnc3QvZ3N0aW5kZXguYzoKCSogZ3N0L2dzdGluZGV4ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0aW5mby5jOgoJKiBnc3QvZ3N0aW50ZXJmYWNlLmM6CgkqIGdzdC9nc3RpdGVyYXRvci5jOgoJKiBnc3QvZ3N0bWVtY2h1bmsuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5jOgoJKiBnc3QvZ3N0cGFyc2UuYzoKCSogZ3N0L2dzdHBpcGVsaW5lLmM6CgkqIGdzdC9nc3RwbHVnaW4uYzoKCSogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzoKCSogZ3N0L2dzdHF1ZXJ5LmM6CgkqIGdzdC9nc3RxdWV1ZS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dHJhY2UuYzoKCSogZ3N0L2dzdHR5cGVmaW5kLmM6CgkqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuYzoKCSogZ3N0L2dzdHVyaS5jOgoJKiBnc3QvZ3N0dXJpdHlwZS5jOgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSogZ3N0L2dzdHhtbC5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkgIHZhcmlvdXMgc3R5bGUgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHZhcmlvdXMgc3R5bGUgZml4ZXMKCjIwMDUtMTAtMTUgMTU6NTM6NTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOgoJKiBjaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSogZXhhbXBsZXMvYXBwcmVhZGVyL2FwcHJlYWRlci5jOgoJKiBleGFtcGxlcy9jb250cm9sbGVyL2F1ZGlvLWV4YW1wbGUuYzoKCSogZXhhbXBsZXMvY3V0dGVyL2N1dHRlci5jOgoJKiBleGFtcGxlcy9jdXR0ZXIvY3V0dGVyLmg6CgkqIGV4YW1wbGVzL21peGVyL21peGVyLmM6CgkqIGV4YW1wbGVzL21peGVyL21peGVyLmg6CgkqIGV4YW1wbGVzL3JldGFnL3JldGFnLmM6CgkqIGV4YW1wbGVzL3JldGFnL3RyYW5zY29kZS5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHZhbHVlLmM6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9hcHByZWFkZXIvYXBwcmVhZGVyLmM6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9jb250cm9sbGVyL2F1ZGlvLWV4YW1wbGUuYzoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL2N1dHRlci9jdXR0ZXIuYzoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL2N1dHRlci9jdXR0ZXIuaDoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL21peGVyL21peGVyLmM6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9taXhlci9taXhlci5oOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvcmV0YWcvcmV0YWcuYzoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL3JldGFnL3RyYW5zY29kZS5jOgoJKiB3aW4zMi9jb21tb24vZ3N0Y29uZmlnLmg6CgkqIHdpbjMyL2NvbW1vbi9nc3R2ZXJzaW9uLmg6CgkqIHdpbjMyL2RpcmVudC5jOgoJKiB3aW4zMi9nc3Rjb25maWcuaDoKCSogd2luMzIvZ3N0dmVyc2lvbi5oOgoJKiB3aW4zMi9ndGNoYXIuaDoKCSogd2luMzIvbW1hbi5oOgoJKiB3aW4zMi92czcvbW1hbi5oOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA1LTEwLTE1IDE1OjUzOjE0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvYnl0ZXN0cmVhbS8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2J5dGVzdHJlYW0vTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvYnl0ZXN0cmVhbS9maWxlcGFkc2luay5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2J5dGVzdHJlYW0vZ3N0YnN0ZXN0LmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvYnl0ZXN0cmVhbS90ZXN0MS5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2J5dGVzdHJlYW0vdGVzdGZpbGUxOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NhcHMvbm9ybWFsaXNhdGlvbi5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NhcHMvcmFuZG9tLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xlYW51cC8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NsZWFudXAvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xlYW51cC9jbGVhbnVwMS5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDIuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9jbGVhbnVwL2NsZWFudXAzLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xlYW51cC9jbGVhbnVwNC5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDUuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9jb250cm9sbGVyL2ludGVycG9sYXRvci5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2RlYnVnL3ByaW50Zl9leHRlbnNpb24uYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy90ZWUuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9uZWdvdGlhdGlvbi8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL25lZ290aWF0aW9uL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL25lZ290aWF0aW9uL3BhZF9saW5rLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvcGFkL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3BhZC9jaGFpbm5vcHVsbC5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3BhZC9nZXRub3B1c2guYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9wYWQvbGluay5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3JlZmNvdW50aW5nL3NjaGVkLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvcmVnaXN0cnkvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvcmVnaXN0cnkvZ3N0LXByaW50LWZvcm1hdHMuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zY2hlZHVsZXJzLy5naXRpZ25vcmU6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDIxODMtMi5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQyMTgzLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDM3NzctMi5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQzNzc3LmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDc3MTMuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zY2hlZHVsZXJzLzE0NzgxOS5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQ3ODk0LTIuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zY2hlZHVsZXJzLzE0Nzg5NC5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3NjaGVkdWxlcnMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy9ncm91cF9saW5rLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy9xdWV1ZV9saW5rLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc2NoZWR1bGVycy9yZWxpbmsuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zY2hlZHVsZXJzL3VubGluay5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL3NjaGVkdWxlcnMvdW5yZWYuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zY2hlZHVsZXJzL3VzZWxlc3NfaXRlcmF0aW9uLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc3RhdGVzL2Jpbi5jOgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9ieXRlc3RyZWFtLy5naXRpZ25vcmU6CgkqIHRlc3RzdWl0ZS9ieXRlc3RyZWFtL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvYnl0ZXN0cmVhbS9maWxlcGFkc2luay5jOgoJKiB0ZXN0c3VpdGUvYnl0ZXN0cmVhbS9nc3Ric3Rlc3QuYzoKCSogdGVzdHN1aXRlL2J5dGVzdHJlYW0vdGVzdDEuYzoKCSogdGVzdHN1aXRlL2J5dGVzdHJlYW0vdGVzdGZpbGUxOgoJKiB0ZXN0c3VpdGUvY2Fwcy9ub3JtYWxpc2F0aW9uLmM6CgkqIHRlc3RzdWl0ZS9jYXBzL3JhbmRvbS5jOgoJKiB0ZXN0c3VpdGUvY2xlYW51cC8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvY2xlYW51cC9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDEuYzoKCSogdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDIuYzoKCSogdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDMuYzoKCSogdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDQuYzoKCSogdGVzdHN1aXRlL2NsZWFudXAvY2xlYW51cDUuYzoKCSogdGVzdHN1aXRlL2NvbnRyb2xsZXIvaW50ZXJwb2xhdG9yLmM6CgkqIHRlc3RzdWl0ZS9kZWJ1Zy9wcmludGZfZXh0ZW5zaW9uLmM6CgkqIHRlc3RzdWl0ZS9lbGVtZW50cy90ZWUuYzoKCSogdGVzdHN1aXRlL25lZ290aWF0aW9uLy5naXRpZ25vcmU6CgkqIHRlc3RzdWl0ZS9uZWdvdGlhdGlvbi9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL25lZ290aWF0aW9uL3BhZF9saW5rLmM6CgkqIHRlc3RzdWl0ZS9wYWQvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9wYWQvY2hhaW5ub3B1bGwuYzoKCSogdGVzdHN1aXRlL3BhZC9nZXRub3B1c2guYzoKCSogdGVzdHN1aXRlL3BhZC9saW5rLmM6CgkqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9zY2hlZC5jOgoJKiB0ZXN0c3VpdGUvcmVnaXN0cnkvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9yZWdpc3RyeS9nc3QtcHJpbnQtZm9ybWF0cy5jOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDIxODMtMi5jOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDIxODMuYzoKCSogdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQzNzc3LTIuYzoKCSogdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQzNzc3LmM6CgkqIHRlc3RzdWl0ZS9zY2hlZHVsZXJzLzE0NzcxMy5jOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy8xNDc4MTkuYzoKCSogdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQ3ODk0LTIuYzoKCSogdGVzdHN1aXRlL3NjaGVkdWxlcnMvMTQ3ODk0LmM6CgkqIHRlc3RzdWl0ZS9zY2hlZHVsZXJzL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy9ncm91cF9saW5rLmM6CgkqIHRlc3RzdWl0ZS9zY2hlZHVsZXJzL3F1ZXVlX2xpbmsuYzoKCSogdGVzdHN1aXRlL3NjaGVkdWxlcnMvcmVsaW5rLmM6CgkqIHRlc3RzdWl0ZS9zY2hlZHVsZXJzL3VubGluay5jOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy91bnJlZi5jOgoJKiB0ZXN0c3VpdGUvc2NoZWR1bGVycy91c2VsZXNzX2l0ZXJhdGlvbi5jOgoJKiB0ZXN0c3VpdGUvc3RhdGVzL2Jpbi5jOgoJICByZW1vdmUgb2Jzb2xldGUgdGVzdHMgd2hpdGVzcGFjZSBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIG9ic29sZXRlIHRlc3RzCgkgIHdoaXRlc3BhY2UgZml4ZXMKCjIwMDUtMTAtMTUgMTU6NTI6MDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiBjb3JyZWN0bHkgbWFrZSBjb25kaXRpb25hbHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBjb3JyZWN0bHkgbWFrZSBjb25kaXRpb25hbHMKCSAgKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkgICogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkgIGZpeCB0eXBvIGNhdXNpbmcgZmRzcmMgbm90IHRvIGJ1aWxkCgoyMDA1LTEwLTE1IDE1OjMwOjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkqIGdzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGJ1ZmZlcnN0b3JlLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmZHNpbmsuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5Lmg6CgkqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSogZ3N0L2dsaWItY29tcGF0LmM6CgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdGJpbi5jOgoJKiBnc3QvZ3N0YnVmZmVyLmM6CgkqIGdzdC9nc3RidXMuYzoKCSogZ3N0L2dzdGJ1cy5oOgoJKiBnc3QvZ3N0Y2Fwcy5jOgoJKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOgoJKiBnc3QvZ3N0Y2xvY2suYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkqIGdzdC9nc3Rmb3JtYXQuYzoKCSogZ3N0L2dzdGZvcm1hdC5oOgoJKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSogZ3N0L2dzdGluZGV4LmM6CgkqIGdzdC9nc3RpbmRleC5oOgoJKiBnc3QvZ3N0aW5kZXhmYWN0b3J5LmM6CgkqIGdzdC9nc3RpbmRleGZhY3RvcnkuaDoKCSogZ3N0L2dzdGluZm8uYzoKCSogZ3N0L2dzdGluZm8uaDoKCSogZ3N0L2dzdGludGVyZmFjZS5jOgoJKiBnc3QvZ3N0aXRlcmF0b3IuYzoKCSogZ3N0L2dzdG1hY3Jvcy5oOgoJKiBnc3QvZ3N0bWVtY2h1bmsuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0b2JqZWN0Lmg6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzoKCSogZ3N0L2dzdHBhZHRlbXBsYXRlLmg6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0cGx1Z2luLmM6CgkqIGdzdC9nc3RwbHVnaW4uaDoKCSogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzoKCSogZ3N0L2dzdHF1ZXJ5LmM6CgkqIGdzdC9nc3RxdWVyeS5oOgoJKiBnc3QvZ3N0cXVldWUuYzoKCSogZ3N0L2dzdHF1ZXVlLmg6CgkqIGdzdC9nc3RyZWdpc3RyeS5oOgoJKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiBnc3QvZ3N0dGFnbGlzdC5jOgoJKiBnc3QvZ3N0dGFnc2V0dGVyLmM6CgkqIGdzdC9nc3R0cmFjZS5jOgoJKiBnc3QvZ3N0dHJhY2UuaDoKCSogZ3N0L2dzdHR5cGVmaW5kLmM6CgkqIGdzdC9nc3R0eXBlZmluZC5oOgoJKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6CgkqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuaDoKCSogZ3N0L2dzdHVyaS5jOgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSogZ3N0L2dzdHV0aWxzLmg6CgkqIGdzdC9nc3R2YWx1ZS5jOgoJKiBnc3QvZ3N0dmFsdWUuaDoKCSogZ3N0L2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOgoJKiBnc3QvaW5kZXhlcnMvZ3N0bWVtaW5kZXguYzoKCSogZ3N0L3BhcnNlL3R5cGVzLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RidWZmZXJzdG9yZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc2luay5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSogcGx1Z2lucy9pbmRleGVycy9nc3RmaWxlaW5kZXguYzoKCSogcGx1Z2lucy9pbmRleGVycy9nc3RtZW1pbmRleC5jOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA1LTEwLTE1IDE1OjAxOjM5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogY2hlY2sgZm9yIHNvbWUgaGVhZGVycwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgIGNoZWNrIGZvciBzb21lIGhlYWRlcnMKCSAgKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkgICogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkgIGRvbid0IGNvbXBpbGUgZmRzcmMgd2l0aG91dCBzeXMvc29ja2V0LmgKCSAgKiBnc3QvaW5kZXhlcnMvTWFrZWZpbGUuYW06CgkgICogZ3N0L2luZGV4ZXJzL2dzdGluZGV4ZXJzLmM6IChwbHVnaW5faW5pdCk6CgkgIGRvbid0IGNvbXBpbGUgZmlsZWluZGV4IHdpdGhvdXQgbW1hcAoKMjAwNS0xMC0xNSAxMzo1ODoxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjb25maWd1cmUuYWM6IHJlb3JnYW5pemUgY2xlYW4gdXAgZG9jdW1lbnQgbW9yZSByZW1vdmUgY3J1ZnQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICByZW9yZ2FuaXplCgkgIGNsZWFuIHVwCgkgIGRvY3VtZW50IG1vcmUKCSAgcmVtb3ZlIGNydWZ0CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgICogZXhhbXBsZXMvaGVsbG93b3JsZC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkgICogZ3N0L2NoZWNrL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvaW5kZXhlcnMvTWFrZWZpbGUuYW06CgkgICogZ3N0L3BhcnNlL01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL01ha2VmaWxlLmFtOgoJICAqIGV4YW1wbGVzL2hlbGxvd29ybGQvaGVsbG93b3JsZC5jOiAoZXZlbnRfbG9vcCk6CgkgIGNvbXBpbGUgZml4ZXMsIHRob3VnaCBpdCdzIG5vdCBiZWluZyBjb21waWxlZCBjdXJyZW50bHkKCjIwMDUtMTAtMTUgMTM6MjQ6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYXNlLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNvbnRyb2xsZXItdW5pbnN0YWxsZWQucGMuaW46CgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLnBjLmluOgoJICBjbGVhbiB1cCBwYyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY2xlYW4gdXAgcGMgZmlsZXMKCjIwMDUtMTAtMTUgMTI6MDM6MzIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogbGlicy9nc3QvZ2V0Yml0cy8uZ2l0aWdub3JlOgoJICByZW1vdmUgZGlyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZGlyCgoyMDA1LTEwLTE1IDEwOjM0OjE3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbW1vbjoKCSogZ3N0L3NjaGVkdWxlcnMvLmdpdGlnbm9yZToKCSAgcmVtb3ZlIGRpcmVjdG9yeQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGRpcmVjdG9yeQoKMjAwNS0xMC0xNSAwMDoyMjowMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJKiBnc3QvZ3N0cGx1Z2luLmg6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogZ3N0L2dzdHVyaS5jOgoJICBzaWduZWRuZXNzL3R5cGUgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNpZ25lZG5lc3MvdHlwZSBmaXhlcwoKMjAwNS0xMC0xNSAwMDoyMDo0NSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgc2lnbmVkbmVzcy90eXBlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzaWduZWRuZXNzL3R5cGUgZml4ZXMKCjIwMDUtMTAtMTUgMDA6MTU6NDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJKiBnc3QvZ3N0cGFkLmM6CgkgIHNpZ25lZG5lc3MgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNpZ25lZG5lc3MgZml4ZXMKCjIwMDUtMTAtMTUgMDA6MTI6MjIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGNhcHMuYzoKCSogZ3N0L2dzdGNhcHMuaDoKCSAgc2lnbmVkbmVzcyBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgc2lnbmVkbmVzcyBmaXhlcwoKMjAwNS0xMC0xNCAxNzowMTo1NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGNoZWNrL2dzdC9nc3R0YWcuYzogQWRkIHNvbWUgc2ltcGxlIHRlc3RzIGZvciB0aGUgbmV3IHRhZ2xpc3QgZGF0ZSBBUEkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R0YWcuYzogKHRlc3RfZGF0ZV90YWdzKSwgKGdzdF90YWdfc3VpdGUpOgoJICBBZGQgc29tZSBzaW1wbGUgdGVzdHMgZm9yIHRoZSBuZXcgdGFnbGlzdCBkYXRlIEFQSS4KCjIwMDUtMTAtMTQgMTQ6MTA6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZWxlbWVudHMvOiBCZWF1dGlmeSAnbGFzdC1tZXNzYWdlJyBvdXRwdXQ6IHByaW50ICdub25lJyBmb3IgYnVmZmVyIHRpbWVzdGFtcHMgYW5kIGR1cmF0aW9ucyBpZiBub25lIGlzIHNldDsgaW1wcm8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX3JlbmRlcik6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuYzogKGdzdF9mYWtlX3NyY19jcmVhdGUpOgoJICBCZWF1dGlmeSAnbGFzdC1tZXNzYWdlJyBvdXRwdXQ6IHByaW50ICdub25lJyBmb3IgYnVmZmVyIHRpbWVzdGFtcHMKCSAgYW5kIGR1cmF0aW9ucyBpZiBub25lIGlzIHNldDsgaW1wcm92ZSBhbGlnbm1lbnQgd2l0aCBuZXh0IG1lc3NhZ2VzLgoKMjAwNS0xMC0xNCAxMTowOToyOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIEFkZCBuZXcgQVBJIHRvIGNoZWNrIHBsdWdpbiBmZWF0dXJlIHZlcnNpb24gcmVxdWlyZW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24pOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IChnc3RfZGVmYXVsdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24pOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5oOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIEFkZCBuZXcgQVBJIHRvIGNoZWNrIHBsdWdpbiBmZWF0dXJlIHZlcnNpb24gcmVxdWlyZW1lbnRzLgoJICAqIGNoZWNrL2dzdC9nc3RwbHVnaW4uYzogKHRlc3RfdmVyc2lvbl9jaGVja3MpLCAoZ3N0X3BsdWdpbl9zdWl0ZSk6CgkgIFNvbWUgYmFzaWMgdGVzdHMgZm9yIHRoZSBhYm92ZS4KCjIwMDUtMTAtMTMgMjE6Mjc6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHN0cnVjdHVyZS5jOiBndWFyZCBhZ2FpbnN0IE5VTEwgcHJpbnRmIC0gaGFwcGVucyB3aGVuIGZvciBleGFtcGxlIGEgbWVzc2FnZSBzdHJ1Y3R1cmUgd2l0aCBHc3RDbG9jayBnZXRzIHNlcmlhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEzICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlICA8dGhvbWFzIGF0IGFwZXN0YWFydCBkb3Qgb3JnPgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfdG9fc3RyaW5nKToKCSAgZ3VhcmQgYWdhaW5zdCBOVUxMIHByaW50ZiAtIGhhcHBlbnMgd2hlbiBmb3IgZXhhbXBsZQoJICBhIG1lc3NhZ2Ugc3RydWN0dXJlIHdpdGggR3N0Q2xvY2sgZ2V0cyBzZXJpYWxpemVkCgoyMDA1LTEwLTEzIDE4OjMzOjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogRml4IHByZXN1bWFibGUgY29weSduJ3Bhc3RvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RwYWRzX2V2ZW50KToKCSAgRml4IHByZXN1bWFibGUgY29weSduJ3Bhc3RvLgoKMjAwNS0xMC0xMyAxNzo1MTo1MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSAgYWRkIGNvcnJlY3QgaGVhZGVyIGZvciBXSU4zMgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGNvcnJlY3QgaGVhZGVyIGZvciBXSU4zMgoKMjAwNS0xMC0xMyAxNzo0MzozNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZWxlbWVudHMvOiBmaXggc29tZSBzaWduZWRuZXNzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlX3NyY19jcmVhdGVfcmVhZCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICBmaXggc29tZSBzaWduZWRuZXNzCgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX3JlbmRlcik6CgkgIEkgd29uZGVyIGlmIHRoaXMgY291bGQgYWN0dWFsbHkgd3JpdGUgKzJHQiBmaWxlcyBiZWZvcmUKCjIwMDUtMTAtMTMgMTc6MjQ6NTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdHJlYW1lci5kZWY6CgkgIGFkZCBhbiBleHBvcnQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBhbiBleHBvcnQKCjIwMDUtMTAtMTMgMTc6MjA6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dsaWItY29tcGF0Lmg6CgkqIGdzdC9nc3RwYWQuYzoKCSAgaW5jbHVkZSBoZWFkZXIgY29ycmVjdGx5OyBzaG93IG1lIHRoZSBuYW1lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpbmNsdWRlIGhlYWRlciBjb3JyZWN0bHk7IHNob3cgbWUgdGhlIG5hbWUKCjIwMDUtMTAtMTMgMTY6MzQ6MDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgZm9vCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmb28KCjIwMDUtMTAtMTMgMTY6MjY6MTIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYyAoZ3N0X2RwX3BhY2tldF9mcm9tX2NhcHMpOiBGaXggVGltbWVrZSBXYXltYW5zIGJ1Zy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTMgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jIChnc3RfZHBfcGFja2V0X2Zyb21fY2Fwcyk6CgkgIEZpeCBUaW1tZWtlIFdheW1hbnMgYnVnLgoJICAoZ3N0X2RwX2NhcHNfZnJvbV9wYWNrZXQpOiBNYWtlIHN1cmUgd2UgcGFzcyBhIE5VTC10ZXJtaW5hdGVkCgkgIHN0cmluZyBvZiB0aGUgcHJvcGVyIGxlbmd0aCB0byBnc3RfY2Fwc19mcm9tX3N0cmluZy4gVGhlcmUncyBhCgkgIHBvdGVudGlhbCBmb3IsIGJlZm9yZSB0aGlzIGZpeCwgdGhhdCB0aGlzIGNvdWxkIGNhdXNlIHNvbWVvbmUKCSAgY29ubmVjdGluZyBvdmVyIHRoZSBuZXR3b3JrIHRvIGNhdXNlIGEgc2VnZmF1bHQgaWYgdGhlIHBheWxvYWQgaXMKCSAgbm90IE5VTC10ZXJtaW5hdGVkLgoKMjAwNS0xMC0xMyAxNToyNzo0MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZml4ZWQgdHlwb3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtcHVzaC1wdWxsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW92ZXJ2aWV3LnR4dDoKCSAgKiBkb2NzL3JhbmRvbS9UT0RPLXByZS0wLjk6CgkgICogZG9jcy9yYW5kb20vb2xkL0NoYW5nZUxvZy5nc3RyZWFtZXI6CgkgICogZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5jOgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICBmaXhlZCB0eXBvcwoKMjAwNS0xMC0xMyAxNToyMzo1MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvOiBHTGliIDIuNiBnX2ZsYWdzX2dldF9maXJzdF92YWx1ZSBoYXMgYSBidWcgdGhhdCB0cmlnZ2VycyBhbiBpbmZpbml0ZSBsb29wCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nbGliLWNvbXBhdC5jOiAoZ3N0X2ZsYWdzX2dldF9maXJzdF92YWx1ZSk6CgkgICogZ3N0L2dsaWItY29tcGF0Lmg6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfZGVzZXJpYWxpemVfaW50X2hlbHBlciksCgkgIChnc3RfdmFsdWVfY29tcGFyZV9kb3VibGUpLCAoZ3N0X3ZhbHVlX3NlcmlhbGl6ZV9mbGFncyk6CgkgIEdMaWIgMi42IGdfZmxhZ3NfZ2V0X2ZpcnN0X3ZhbHVlIGhhcyBhIGJ1ZyB0aGF0IHRyaWdnZXJzIGFuCgkgIGluZmluaXRlIGxvb3AKCjIwMDUtMTAtMTMgMTU6MjI6MjYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2Jhc2UvOiBmaXggdXAgZGVidWdnaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEzICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlICA8dGhvbWFzIGF0IGFwZXN0YWFydCBkb3Qgb3JnPgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpOgoJICBmaXggdXAgZGVidWdnaW5nCgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoZXZlbnRfbG9vcCk6CgkgIHByaW50IG91dCBjbG9jayBuaWNlbHkKCjIwMDUtMTAtMTMgMTU6MTM6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBBZGRlZCBnc3RfdGFnX2xpc3RfZ2V0X2RhdGUoKSBhbmQgZ3N0X3RhZ19saXN0X2dldF9kYXRlX2luZGV4KCkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSksIChnc3RfdGFnX2xpc3RfZ2V0X2RhdGUpLAoJICAoZ3N0X3RhZ19saXN0X2dldF9kYXRlX2luZGV4KToKCSAgQWRkZWQgZ3N0X3RhZ19saXN0X2dldF9kYXRlKCkgYW5kIGdzdF90YWdfbGlzdF9nZXRfZGF0ZV9pbmRleCgpLgoJICBHU1RfVEFHX0RBVEUgbm93IGhhcyBhIHRhZyB0eXBlIG9mIEdTVF9UWVBFX0RBVEUgKCMxNzA3NzcpLgoKMjAwNS0xMC0xMyAxNDo1NToxNyArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy4qOiBIYW5kbGUgbmV3c2VnbWVudCBhbmQgc3RvcmUgaW5mb3JtYXRpb25zIGluIENvbGxlY3REYXRhLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMyAgSnVsaWVuIE1PVVRURSAgPGp1bGllbkBtb3V0dGUubmV0PgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IChnc3RfY29sbGVjdHBhZHNfZXZlbnQpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX2NoYWluKToKCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOiBIYW5kbGUgbmV3c2VnbWVudCBhbmQgc3RvcmUKCSAgaW5mb3JtYXRpb25zCgkgIGluIENvbGxlY3REYXRhLgoKMjAwNS0xMC0xMyAwOTo1NzoxNSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZml4IEdPcHRpb24gY29udGV4dCBsZWFrcyBkb2MgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdGVycm9yLmg6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1ydW4uYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChtYWluKToKCSAgZml4IEdPcHRpb24gY29udGV4dCBsZWFrcwoJICBkb2MgZml4ZXMKCjIwMDUtMTAtMTIgMjI6MzQ6NDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdGJ1cy5jOiB1c2UgSEFWRV9VTklTVERfSAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgIHVzZSBIQVZFX1VOSVNURF9ICgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICB1cGRhdGUgY29uZmlnCgkgICogd2luMzIvdnM2L2dyYW1tYXIuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3RlbGVtZW50cy5kc3A6CgkgICogd2luMzIvdnM2L2xpYmdzdHJlYW1lci5kc3A6CgkgIHVwZGF0ZSB2czYgZmlsZXMKCjIwMDUtMTAtMTIgMjI6MDA6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvY29tbW9uL2xpYmdzdGJhc2UuZGVmOgoJICBoYWQgYSBmZXcgdG9vIG1hbnkgMEQgYnl0ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGhhZCBhIGZldyB0b28gbWFueSAwRCBieXRlcwoKMjAwNS0xMC0xMiAyMTo1Njo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvYmFzZS86IGZpeCBtb3JlIGd1aW50NjQ8LT5nZG91YmxlIGNvbnZlcnNpb25zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19xdWVyeSk6CgkgIGZpeCBtb3JlIGd1aW50NjQ8LT5nZG91YmxlIGNvbnZlcnNpb25zCgoyMDA1LTEwLTEyIDIwOjIzOjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIE1ha2VmaWxlLmFtOiBhZGQgd2luMzItdXBkYXRlIHRhcmdldAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBNYWtlZmlsZS5hbToKCSAgYWRkIHdpbjMyLXVwZGF0ZSB0YXJnZXQKCSAgKiB3aW4zMi9jb21tb24vZ3N0Y29uZmlnLmg6CgkgICogd2luMzIvY29tbW9uL2dzdGVudW10eXBlcy5jOgoJICAqIHdpbjMyL2NvbW1vbi9nc3RlbnVtdHlwZXMuaDoKCSAgKiB3aW4zMi9jb21tb24vZ3N0dmVyc2lvbi5oOgoJICBhZGQgZmlsZXMgdGhhdCB2aXN1YWwgc3R1ZGlvIGNhbid0IGdlbmVyYXRlCgoyMDA1LTEwLTEyIDE5OjM4OjQ0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogUHJvdGVjdCBmbGFncyB3aXRoIHByb3BlciBsb2NrLiB1bnJlZiBwcm92aWRlZCBjYWNoZWQgY2xvY2sgaW4gZGlzcG9zZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX3JlbW92ZV9mdW5jKSwKCSAgKHJlc2V0X2RlZ3JlZSksIChnc3RfYmluX2Rpc3Bvc2UpLCAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfY29tbWl0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSk6CgkgIFByb3RlY3QgZmxhZ3Mgd2l0aCBwcm9wZXIgbG9jay4KCSAgdW5yZWYgcHJvdmlkZWQgY2FjaGVkIGNsb2NrIGluIGRpc3Bvc2UuCgoyMDA1LTEwLTEyIDE5OjE0OjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSAgbGF5b3V0IGNsZWFudXAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGxheW91dCBjbGVhbnVwCgoyMDA1LTEwLTEyIDE5OjEwOjQ2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICByZW1vdmVkIHVudXNlZCBmbGFncyBmcm9tIG1pbmlvYmplY3QgZG9jIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiB3aW4zMi9nc3RlbnVtdHlwZXMuYzogKGdzdF9taW5pX29iamVjdF9mbGFnc19nZXRfdHlwZSk6CgkgIHJlbW92ZWQgdW51c2VkIGZsYWdzIGZyb20gbWluaW9iamVjdAoJICBkb2MgZml4ZXMKCjIwMDUtMTAtMTIgMTg6MDM6MTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvdnM2L2dyYW1tYXIuZHNwOgoJKiB3aW4zMi92czYvZ3N0X2luc3BlY3QuZHNwOgoJKiB3aW4zMi92czYvZ3N0X2xhdW5jaC5kc3A6CgkqIHdpbjMyL3ZzNi9nc3RyZWFtZXIuZHN3OgoJKiB3aW4zMi92czYvbGliZ3N0YmFzZS5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3RlbGVtZW50cy5kc3A6CgkqIHdpbjMyL3ZzNi9saWJnc3RyZWFtZXIuZHNwOgoJICBjb252ZXJ0IHRvIHVuaXggbGluZSBlbmRzOyBzaW5jZSB0aGUgc291cmNlIGlzIGFsc28gdW5peC1zdHlsZSBsaW5lIGVuZHMsIGRldmVsb3BlcnMgZG9uJ3QgbmVlZCB0byBmaWRkbGUgYW5kIHNwZWNpYWwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNvbnZlcnQgdG8gdW5peCBsaW5lIGVuZHM7IHNpbmNlIHRoZSBzb3VyY2UgaXMgYWxzbyB1bml4LXN0eWxlIGxpbmUgZW5kcywgZGV2ZWxvcGVycyBkb24ndCBuZWVkIHRvIGZpZGRsZSBhbmQgc3BlY2lhbC1jYXNlLCBidXQgY2FuIGp1c3QgYWxsb3cgdHJhbnNsYXRpb24gb24gdGhlIGZseQoKMjAwNS0xMC0xMiAxNjowMzozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiBGbHVzaCBiZWZvcmUgc2Vla2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2RvX3NlZWspLAoJICAoZ3N0X2ZpbGVfc2lua19ldmVudCksIChnc3RfZmlsZV9zaW5rX3JlbmRlcik6CgkgIEZsdXNoIGJlZm9yZSBzZWVraW5nLgoKMjAwNS0xMC0xMiAxNTo1ODoyNCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdC5jIChnc3RfaW5pdF9jaGVjayk6IElnbm9yZSB1bmtub3duIG9wdGlvbnMsIGFzIGhhcyBhbHdheXMgYmVlbiB0aGUgY2FzZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdC5jIChnc3RfaW5pdF9jaGVjayk6IElnbm9yZSB1bmtub3duIG9wdGlvbnMsIGFzIGhhcwoJICBhbHdheXMgYmVlbiB0aGUgY2FzZS4KCjIwMDUtMTAtMTIgMTQ6Mjg6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHJlbmFtZWQgR1NUX0ZMQUdTIG1hY3JvcyB0byBHU1RfT0JKRUNUX0ZMQUdTIG1vdmVkIGJpdHNoaWZ0IGZyb20gbWFjcm8gdG8gZW51bSBkZWZpbml0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2luaXQpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2Vfc3JjX2NoZWNrX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZV9zcmNfc3RhcnQpLCAoZ3N0X2Jhc2Vfc3JjX3N0b3ApOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX3NldF9wcm9wZXJ0eSk6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX3JlbW92ZV9mdW5jKSwKCSAgKGJpbl9lbGVtZW50X2lzX3NpbmspLCAocmVzZXRfZGVncmVlKSwgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpLAoJICAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfcG9zdCksIChnc3RfYnVzX3NldF9mbHVzaGluZyk6CgkgICogZ3N0L2dzdGJ1cy5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9pc19sb2NrZWRfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZSksIChnc3RfZWxlbWVudF9jb21taXRfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RpbmRleC5jOiAoZ3N0X2luZGV4X2luaXQpOgoJICAqIGdzdC9nc3RpbmRleC5oOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0Lmg6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9pbml0KSwgKGdzdF9vYmplY3Rfc2luayksCgkgIChnc3Rfb2JqZWN0X3NldF9wYXJlbnQpOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9ibG9ja2VkX2FzeW5jKSwgKGdzdF9wYWRfaXNfYmxvY2tlZCksCgkgIChnc3RfcGFkX2dldF9jYXBzX3VubG9ja2VkKSwgKGdzdF9wYWRfc2V0X2NhcHMpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9wcm92aWRlX2Nsb2NrX2Z1bmMpLAoJICAoZ3N0X3BpcGVsaW5lX3VzZV9jbG9jayksIChnc3RfcGlwZWxpbmVfYXV0b19jbG9jayk6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmg6CgkgICogZ3N0L2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOiAoZ3N0X2ZpbGVfaW5kZXhfbG9hZCksCgkgIChnc3RfZmlsZV9pbmRleF9jb21taXQpOgoJICAqIHRlc3RzdWl0ZS9ieXRlc3RyZWFtL2ZpbGVwYWRzaW5rLmM6IChnc3RfZnBfc2lua19pbml0KToKCSAgKiB0ZXN0c3VpdGUvcGFkL2xpbmsuYzogKGdzdF90ZXN0X3NyY19pbml0KSwKCSAgKGdzdF90ZXN0X2ZpbHRlcl9pbml0KSwgKGdzdF90ZXN0X3NpbmtfaW5pdCk6CgkgICogdGVzdHN1aXRlL3N0YXRlcy9sb2NrZWQuYzogKG1haW4pOgoJICByZW5hbWVkIEdTVF9GTEFHUyBtYWNyb3MgdG8gR1NUX09CSkVDVF9GTEFHUwoJICBtb3ZlZCBiaXRzaGlmdCBmcm9tIG1hY3JvIHRvIGVudW0gZGVmaW5pdGlvbgoKMjAwNS0xMC0xMiAxNDoxMjozNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFNvbWUgbW9yZSBkZWJ1Z2dpbmcgaW5mby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX2J1ZmZlcik6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9maWxlX3NpbmtfcmVuZGVyKToKCSAgU29tZSBtb3JlIGRlYnVnZ2luZyBpbmZvLgoKMjAwNS0xMC0xMiAxMjo1ODo1NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFNvbWUgZG9jIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc3RhdGVzLnR4dDoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgU29tZSBkb2MgdXBkYXRlcy4KCSAgUmV2ZXJ0IG5vbi1pbnRlbnRpb25hbCBjaGFuZ2UuCgoyMDA1LTEwLTEyIDEyOjE4OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgVXNlIEdzdENsb2NrVGltZSBpbiBfZ2V0X3N0YXRlKCkgaW5zdGVhZCBvZiBHVGltZVZhbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RlbGVtZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChHU1RfU1RBUlRfVEVTVCksICh0ZXN0X2V2ZW50KToKCSAgKiBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOiAocnVuX3BpcGVsaW5lKToKCSAgKiBjaGVjay9zdGF0ZXMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IChzdG9wX3R5cGVmaW5kaW5nKToKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3Byb3ZpZGVfY2xvY2tfZnVuYyksIChnc3RfYmluX2FkZF9mdW5jKSwKCSAgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpLCAoZ3N0X2Jpbl9nZXRfc3RhdGVfZnVuYyksCgkgIChnc3RfYmluX3JlY2FsY19zdGF0ZSksIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwKCSAgKGJpbl9idXNfaGFuZGxlcik6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF9zdGF0ZV9mdW5jKSwKCSAgKGdzdF9lbGVtZW50X2dldF9zdGF0ZSksIChnc3RfZWxlbWVudF9hYm9ydF9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9jb21taXRfc3RhdGUpLCAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGVfZnVuYyk6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jbGFzc19pbml0KSwgKGRvX3BpcGVsaW5lX3NlZWspLAoJICAoZ3N0X3BpcGVsaW5lX3Byb3ZpZGVfY2xvY2tfZnVuYyk6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9saW5rX3BhZHNfZmlsdGVyZWQpOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC10eXBlZmluZC5jOiAobWFpbik6CgkgIFVzZSBHc3RDbG9ja1RpbWUgaW4gX2dldF9zdGF0ZSgpIGluc3RlYWQgb2YgR1RpbWVWYWwuCgkgIFJlbW92ZSBvbGQgY29kZSBpbiBnc3R1dGlscy5jCgoyMDA1LTEwLTEyIDExOjQ5OjM1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfcGF1c2VfdGFzayk6IEFjdHVhbGx5IHJldHVybiBGQUxTRSBpZiB0aGVyZSBpcyBubyB0YXNrLiBTaG91bGRuJ3QgYWZmZWN0IGFueSBjb2RlLCBhcyBub3RoaW5nIGkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX3BhdXNlX3Rhc2spOiBBY3R1YWxseSByZXR1cm4gRkFMU0UgaWYKCSAgdGhlcmUgaXMgbm8gdGFzay4gU2hvdWxkbid0IGFmZmVjdCBhbnkgY29kZSwgYXMgbm90aGluZyBpbiBvdXIKCSAgcGx1Z2lucyBjaGVja3MgdGhpcyByZXR1cm4gdmFsdWUuCgkgIChnc3RfcGFkX3N0b3BfdGFzayk6IEFsc28gdGFrZSB0aGUgc3RyZWFtIGxvY2sgaWYgdGhlIHBhZCBoYXMgbm8KCSAgdGFzay4gRG9jcyB1cGRhdGVkLgoKMjAwNS0xMC0xMiAxMDowNTozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogQ2xlYW51cCBhY3RpdmF0aW9uIGNvZGUuIFJlc2V0IG9sZCBzdGF0ZSBpZiBhY3RpdmF0aW9uIGZhaWxlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAocHJlX2FjdGl2YXRlKSwgKHBvc3RfYWN0aXZhdGUpLAoJICAoZ3N0X3BhZF9hY3RpdmF0ZV9wdWxsKSwgKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCk6CgkgIENsZWFudXAgYWN0aXZhdGlvbiBjb2RlLiBSZXNldCBvbGQgc3RhdGUgaWYKCSAgYWN0aXZhdGlvbiBmYWlsZWQuCgoyMDA1LTEwLTEyIDA5OjAyOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogTm8gbmVlZCB0byBwcmVyb2wgYWZ0ZXIgcmVjZWl2aW5nIEVPUy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIE5vIG5lZWQgdG8gcHJlcm9sIGFmdGVyIHJlY2VpdmluZyBFT1MuCgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2V2ZW50KToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2V2ZW50X2hhbmRsZXIpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2V2ZW50KToKCSAgUHJpbnQgZXZlbnRzIG1vcmUgdmVyYm9zZWx5LgoKMjAwNS0xMC0xMiAwODozODowNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrLzogTW92ZWQgc2lua3MyIHRlc3Rjb2RlIGluIHNpbmtzIGNoZWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9zdGF0ZXMvc2lua3MuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9vYmplY3Rfc3VpdGUpOgoJICAqIGNoZWNrL3N0YXRlcy9zaW5rczIuYzoKCSAgTW92ZWQgc2lua3MyIHRlc3Rjb2RlIGluIHNpbmtzIGNoZWNrLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fcHJvdmlkZV9jbG9ja19mdW5jKSwgKGdzdF9iaW5fYWRkX2Z1bmMpLAoJICAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX3JlY2FsY19zdGF0ZSksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwgKGJpbl9idXNfaGFuZGxlcik6CgkgIEZpeCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gd2hlbiBfZ2V0X3N0YXRlKCkgaXRlcmF0ZWQgb3ZlciBhbgoJICBBU1lOQyBlbGVtZW50IHJpZ2h0IGJlZm9yZSBpdCBwb3N0ZWQgYSBzdGF0ZSBjb21wbGV0aW9uLgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBEbyBwcm9wZXIgY2FzdCBoZXJlLgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19uZXdzZWdtZW50KSwKCSAgKGdzdF9ldmVudF9wYXJzZV9uZXdzZWdtZW50KToKCSAgQSBwbGF5YmFjayByYXRlIG9mIDAuMCBpcyBub3QgYWxsb3dlZC4KCjIwMDUtMTAtMTIgMDI6MjY6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogYXV0b2dlbi5zaDoKCSAgYXV0b2NvbmYgZm9yIGZyZWVic2QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGF1dG9jb25mIGZvciBmcmVlYnNkCgoyMDA1LTEwLTEyIDAyOjI1OjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGF1dG9nZW4uc2g6CgkgIGF1dG9jb25mIGZvciBmcmVlYnNkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhdXRvY29uZiBmb3IgZnJlZWJzZAoKMjAwNS0xMC0xMiAwMjoyMzoyOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBhdXRvZ2VuLnNoOgoJICBhdXRvY29uZiBmb3IgZnJlZWJzZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYXV0b2NvbmYgZm9yIGZyZWVic2QKCjIwMDUtMTAtMTIgMDI6MTk6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogYXV0b2dlbi5zaDoKCSAgYXV0b2NvbmYgZm9yIGZyZWVic2QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGF1dG9jb25mIGZvciBmcmVlYnNkCgoyMDA1LTEwLTEyIDAyOjE2OjI2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGF1dG9nZW4uc2g6CgkgIGF1dG9jb25mIGZvciBmcmVlYnNkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhdXRvY29uZiBmb3IgZnJlZWJzZAoKMjAwNS0xMC0xMSAxODowMzoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICB3aW4zMi86IFZpc3VhbCBTdHVkaW8gNiBwcm9qZWN0IGZpbGVzLCBhbmQgYSBuZXcgY29tbW9uIGRpcmVjdG9yeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTEgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogd2luMzIvY29tbW9uL2NvbmZpZy5oOgoJICAqIHdpbjMyL2NvbW1vbi9kaXJlbnQuYzogKF90b3BlbmRpciksIChfdHJlYWRkaXIpLCAoX3RjbG9zZWRpciksCgkgIChfdHJld2luZGRpciksIChfdHRlbGxkaXIpLCAoX3RzZWVrZGlyKToKCSAgKiB3aW4zMi9jb21tb24vZGlyZW50Lmg6CgkgICogd2luMzIvY29tbW9uL2d0Y2hhci5oOgoJICAqIHdpbjMyL2NvbW1vbi9saWJnc3RiYXNlLmRlZjoKCSAgKiB3aW4zMi9jb21tb24vbGliZ3N0cmVhbWVyLmRlZjoKCSAgKiB3aW4zMi92czYvZ3JhbW1hci5kc3A6CgkgICogd2luMzIvdnM2L2dzdF9pbnNwZWN0LmRzcDoKCSAgKiB3aW4zMi92czYvZ3N0X2xhdW5jaC5kc3A6CgkgICogd2luMzIvdnM2L2dzdHJlYW1lci5kc3c6CgkgICogd2luMzIvdnM2L2xpYmdzdGJhc2UuZHNwOgoJICAqIHdpbjMyL3ZzNi9saWJnc3RlbGVtZW50cy5kc3A6CgkgICogd2luMzIvdnM2L2xpYmdzdHJlYW1lci5kc3A6CgkgIFZpc3VhbCBTdHVkaW8gNiBwcm9qZWN0IGZpbGVzLCBhbmQgYSBuZXcgY29tbW9uIGRpcmVjdG9yeS4KCSAgUGhlYXIuCgoyMDA1LTEwLTExIDE3OjMzOjI1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBmb3Jnb3QgdGhpcyBvbmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZvcmdvdCB0aGlzIG9uZQoKMjAwNS0xMC0xMSAxNzozMjowMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLio6IENvcnJlY3RseSBwYXJzZSBuZXdzZWdtZW50IGluZm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwgKGdzdF9iYXNlX3NpbmtfcXVlcnkpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIENvcnJlY3RseSBwYXJzZSBuZXdzZWdtZW50IGluZm8uCgoyMDA1LTEwLTExIDE2OjU0OjQxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3QuYzogc3BsaXQgcGx1Z2luIHBhdGhzIGNvcnJlY3RseQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMSAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSAgPHRob21hcyBhdCBhcGVzdGFhcnQgZG90IG9yZz4KCSAgKiBnc3QvZ3N0LmM6IChpbml0X3Bvc3QpOgoJICBzcGxpdCBwbHVnaW4gcGF0aHMgY29ycmVjdGx5CgoyMDA1LTEwLTExIDE2OjI4OjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWRkZWQgZXh0cmEgZmxhZyB0byBuZXdzZWdtZW50IGZvciBmdXR1cmUgQVBJIGZyZWV6ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmV3c2VnbWVudCk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50KToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfZXZlbnQpOgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19uZXdzZWdtZW50KSwKCSAgKGdzdF9ldmVudF9wYXJzZV9uZXdzZWdtZW50KToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgQWRkZWQgZXh0cmEgZmxhZyB0byBuZXdzZWdtZW50IGZvciBmdXR1cmUgQVBJIGZyZWV6ZS4KCSAgVXBkYXRlZCBjaGVjayBhbmQgYmFzZSBlbGVtZW50cy4KCjIwMDUtMTAtMTEgMTY6MjU6MzUgKzAwMDAgIEp1bGllbiBNb3V0dGUgPGp1bGllbkBtb3V0dGUubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuKjogSGFuZGxlIEVPUyBjb3JyZWN0bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTExICBKdWxpZW4gTU9VVFRFICA8anVsaWVuQG1vdXR0ZS5uZXQ+CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzogKGdzdF9jb2xsZWN0cGFkc19pbml0KSwKCSAgKGdzdF9jb2xsZWN0cGFkc19hZGRfcGFkKSwgKGdzdF9jb2xsZWN0cGFkc19wb3ApLAoJICAoZ3N0X2NvbGxlY3RwYWRzX2V2ZW50KSwgKGdzdF9jb2xsZWN0cGFkc19jaGFpbik6CgkgICogZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaDogSGFuZGxlIEVPUyBjb3JyZWN0bHkuCgoyMDA1LTEwLTExIDE2OjIxOjA1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBtb3JlIHN0ciBudWxsIHByb3RlY3Rpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgc3RyIG51bGwgcHJvdGVjdGlvbgoKMjAwNS0xMC0xMSAxNjowNToxNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0LWkxOG4tbGliLmg6IGNoZWNrIGZvciBFTkFCTEVfTkxTLCBub3QgR0VUVEVYVF9QQUNLQUdFCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QtaTE4bi1saWIuaDoKCSAgY2hlY2sgZm9yIEVOQUJMRV9OTFMsIG5vdCBHRVRURVhUX1BBQ0tBR0UKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9hZGRfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpLAoJICAoX2dzdF9yZWdpc3RyeV9yZW1vdmVfY2FjaGVfcGx1Z2lucyk6CgkgIHByb3RlY3QgcG9zc2libHkgTlVMTCBzdHJpbmdzCgkgICogZ3N0L3BhcnNlL3R5cGVzLmg6CgkgIGNvbmZpZy5oIGFscmVhZHkgaW5jbHVkZWQgYmVmb3JlCgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKG1haW4pOgoJICBzeXMvd2FpdC5oIGFsc28gZG9lc260dCBleGlzdCBvbiBtaW5ndywgc28gY2hhbmdlIHRoZSBpZmRlZiBjaGVjawoJICBjaGVjayBmb3IgRU5BQkxFX05MUywgbm90IEdFVFRFWFRfUEFDS0FHRQoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICBjaGVjayBmb3IgRU5BQkxFX05MUywgbm90IEdFVFRFWFRfUEFDS0FHRQoJICBUaGlzIGNvbW1pdCBicm91Z2h0IHRvIHlvdSBmcm9tIG1zeXMvbWluZ3cKCjIwMDUtMTAtMTEgMTU6MjY6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiBpZiB3ZSBkb24ndCBoYXZlIGdsaWIsIGZhaWwgYmVmb3JlIHRlc3RpbmcgMi44CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgaWYgd2UgZG9uJ3QgaGF2ZSBnbGliLCBmYWlsIGJlZm9yZSB0ZXN0aW5nIDIuOAoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFuZ2Vfc3RhdGUpOgoJICBmaXggYSBsZWFrLCBzaG91bGQgZml4IHBsdWdpbnMtYmFzZSB0ZXN0c3VpdGUKCjIwMDUtMTAtMTEgMTU6MjM6MTAgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RwYWQuYyAocHJlX2FjdGl2YXRlKTogUmVuYW1lZCBmcm9tIHByZV9hY3RpdmF0ZV9zd2l0Y2gsIHRha2UgdGhlIG1vZGUgd2UncmUgZ29pbmcgdG8gYXMgYW4gYXJnLiBHbyBoZWFkIGFuZCBzZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKHByZV9hY3RpdmF0ZSk6IFJlbmFtZWQgZnJvbSBwcmVfYWN0aXZhdGVfc3dpdGNoLAoJICB0YWtlIHRoZSBtb2RlIHdlJ3JlIGdvaW5nIHRvIGFzIGFuIGFyZy4gR28gaGVhZCBhbmQgc2V0IHRoZSBtb2RlCgkgIGFuZCBmbHVzaGluZyBmbGFncyBub3csIHNvIHRoYXQgaWYgdGhlIGFjdGl2YXRlIGZ1bmN0aW9uIHN0YXJ0cyBhCgkgIHRocmVhZCBhbGwgdGhlIGZsYWdzIHdpbGwgYmUgaW4gdGhlIHJpZ2h0IHN0YXRlLgoJICAocG9zdF9hY3RpdmF0ZSk6IFJlbmFtZWQgYWxzby4gSnVzdCBoYW5kbGUgbWFraW5nIHN1cmUgc3RyZWFtaW5nCgkgIGZpbmlzaGVzIGZvciB0aGUgZGVhY3RpdmF0aW9uIGNhc2UsIGFuZCBzZXR0aW5nIHRoZSBkZWFjdGl2YXRlZAoJICBtb2RlLgoJICAoZ3N0X3BhZF9zZXRfYWN0aXZlKTogQ29tcGxhaW4gbG91ZGx5IGlmIGRlYWN0aXZhdGlvbiBmYWlscy4KCSAgKGdzdF9wYWRfYWN0aXZhdGVfcHVsbCk6IEFkYXB0IHRvIHByZS9wb3N0X2FjdGl2YXRlIGNoYW5nZXMuCgkgIChnc3RfcGFkX2FjdGl2YXRlX3B1c2gpOiBBZGFwdCB0byBwcmUvcG9zdF9hY3RpdmF0ZSBjaGFuZ2VzLAoJICByZW1vdmUgdGhlIHRlcnJpYmxlIGhhY2suCgoyMDA1LTEwLTExIDE1OjA1OjU1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi4qOiBQcmVwYXJlIHRvIG1ha2UgY3VycmVudCBFT1MgbWVzc2FnZSBxdWV1ZSBtb3JlIGdlbmVyaWMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5faW5pdCksIChnc3RfYmluX3Byb3ZpZGVfY2xvY2tfZnVuYyksCgkgIChpc19lb3MpLCAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX3JlbW92ZV9mdW5jKSwKCSAgKGdzdF9iaW5fcmVjYWxjX3N0YXRlKSwgKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2Jpbl9kaXNwb3NlKSwgKGJpbl9idXNfaGFuZGxlcik6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBQcmVwYXJlIHRvIG1ha2UgY3VycmVudCBFT1MgbWVzc2FnZSBxdWV1ZSBtb3JlIGdlbmVyaWMuCgkgIEZpeCBzb21lIHR5cG9zLgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19uZXdzZWdtZW50KSwKCSAgKGdzdF9ldmVudF9wYXJzZV9uZXdzZWdtZW50KToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgUmVuYW1lIGJhc2UgdG8gc3RyZWFtX3RpbWUuCgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgRml4IHR5cG8gaW4gZG9jcy4KCjIwMDUtMTAtMTEgMTI6NTg6NDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLio6IFdvcmsgb24gcHJvcGVyIGNsb2NrIHNlbGVjdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9pbml0KSwgKGdzdF9iaW5fcHJvdmlkZV9jbG9ja19mdW5jKSwKCSAgKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX3JlY2FsY19zdGF0ZSksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwgKGJpbl9idXNfaGFuZGxlcik6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBXb3JrIG9uIHByb3BlciBjbG9jayBzZWxlY3Rpb24uCgoyMDA1LTEwLTExIDEyOjQyOjIzICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLio6IEFkZGVkIEdMaXN0KiB2ZXJzaW9uIG9mIF9yZW1vdmVfcHJvcGVydGllcygpIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gd3JhcCBpdCBpbiBiLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfcmVtb3ZlX3Byb3BlcnRpZXNfbGlzdCk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkgIEFkZGVkIEdMaXN0KiB2ZXJzaW9uIG9mIF9yZW1vdmVfcHJvcGVydGllcygpIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gd3JhcAoJICBpdCBpbiBiaW5kaW5ncy4KCjIwMDUtMTAtMTEgMTE6MDg6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6IFNvbWUgbW9yZSBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgIFNvbWUgbW9yZSBkb2NzLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fc2V0X2Nsb2NrX2Z1bmMpLCAoZ3N0X2Jpbl9yZWNhbGNfc3RhdGUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGVfZnVuYyksIChiaW5fYnVzX2hhbmRsZXIpOgoJICBEb2MgdXBkYXRlcy4gRG9uJ3QgZGlzdHJpYnV0ZSB0aGUgc2FtZSBjbG9jayBvdmVyIGFuZCBvdmVyIGFnYWluLgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBEb2MgdXBkYXRlcy4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfZmxvd19nZXRfbmFtZSksIChnc3RfZmxvd190b19xdWFyayksCgkgIChnc3RfcGFkX2dldF90eXBlKSwgKGdzdF9wYWRfcHVzaCksIChnc3RfcGFkX3B1c2hfZXZlbnQpLAoJICAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIE1ha2UgcHJvYmUgZW1pc3Npb24gdGhyZWFkc2FmZSBhZ2Fpbi4KCSAgUmVnaXN0ZXIgcXVhcmtzIGFuZCBtb3ZlIF9nZXRfbmFtZSgpIGZyb20gdXRpbHMuCgkgIERvYyB1cGRhdGVzLgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NsYXNzX2luaXQpLAoJICAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSksIChnc3RfcGlwZWxpbmVfcHJvdmlkZV9jbG9ja19mdW5jKToKCSAgT25seSByZWRpc3RyaWJ1dGUgdGhlIGNsb2NrIG9mIGl0IGNoYW5nZWQuCgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmg6CgkgIERvYyB1cGRhdGVzLgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBNb3ZlZCB0aGUgX2Zsb3dfZ2V0X25hbWUoKSB0byBHc3RQYWQuCgoyMDA1LTEwLTExIDA5OjE0OjU5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbW1vbjoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJICBpZiB3ZSBsb2cgb3VyIGluaXQsIHNob3VsZCBhbHNvIGxvZyBmaW5hbGl6ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWYgd2UgbG9nIG91ciBpbml0LCBzaG91bGQgYWxzbyBsb2cgZmluYWxpemUKCjIwMDUtMTAtMTAgMjM6NTU6MzkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9nc3QtbGlicy9nZHAuYzoKCSogY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogY29tbW9uOgoJKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RjYXBzLmM6CgkqIHRlc3RzL2NoZWNrL2xpYnMvZ2RwLmM6CgkgIGZpeCBtb3JlIHZhbGdyaW5kIHdhcm5pbmdzIGJlZm9yZSB0dXJuaW5nIHVwIHRoZSBoZWF0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggbW9yZSB2YWxncmluZCB3YXJuaW5ncyBiZWZvcmUgdHVybmluZyB1cCB0aGUgaGVhdAoKMjAwNS0xMC0xMCAyMzoxMTozMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBkb24ndCBkZWNsYXJlIG9uIHRoZSBwcm9wZXIgZGVmaW5lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb24ndCBkZWNsYXJlIG9uIHRoZSBwcm9wZXIgZGVmaW5lCgoyMDA1LTEwLTEwIDIyOjU5OjIyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgIHVubWFuZ2xlIHRoZSBuZXN0aW5nIGEgbGl0dGxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1bm1hbmdsZSB0aGUgbmVzdGluZyBhIGxpdHRsZQoKMjAwNS0xMC0xMCAyMjo0OTo0MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvcGFyc2UvZ3JhbW1hci55OiBzb21lIGNsZWFudXAgYmVmb3JlIHRoZSBoYWNraW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgIHNvbWUgY2xlYW51cCBiZWZvcmUgdGhlIGhhY2tpbmcKCjIwMDUtMTAtMTAgMTg6MTY6MzcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiB1c2UgY29udmVyc2lvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX3F1ZXJ5KToKCSAgdXNlIGNvbnZlcnNpb25zCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZ3VpbnQ2NF90b19nZG91YmxlKSwKCSAgKGdzdF9nZG91YmxlX3RvX2d1aW50NjQpLCAoZ3N0X3V0aWxfdWludDY0X3NjYWxlKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgZXh0ZXJuYWxpemUsIGJhc2VzcmMgdXNlcyBpdAoJICBvYnZpb3VzbHkgdGhlIGltcGxlbWVudGF0aW9uIG5lZWRzIHRlc3RpbmcKCjIwMDUtMTAtMTAgMTc6MDU6MDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHV0aWxzLmM6CgkgIGFub3RoZXIgY2FzdCBiaXRlcyB0aGUgZHVzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYW5vdGhlciBjYXN0IGJpdGVzIHRoZSBkdXN0CgoyMDA1LTEwLTEwIDE2OjQ1OjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3R1dGlscy5jOgoJICBhbm90aGVyIGNhc3QgYml0ZXMgdGhlIGR1c3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFub3RoZXIgY2FzdCBiaXRlcyB0aGUgZHVzdAoKMjAwNS0xMC0xMCAxNjo0MzozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIHRlc3RzL3NjaGVkLzoKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdGVzdHMvc2NoZWQvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvc2NoZWQvc29ydC5jOiAobWFrZV9waXBlbGluZTEpLCAobWFrZV9waXBlbGluZTIpLAoJICAobWFrZV9waXBlbGluZTMpLCAobWFrZV9waXBlbGluZTQpLCAocHJpbnRfZWxlbSksIChtYWluKToKCjIwMDUtMTAtMTAgMTY6Mzg6NTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IGFwcGFyZW50bHkgY29udmVydGluZyBmcm9tIGd1aW50NjQgdG8gZG91YmxlIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBNU1ZDCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3VpbnQ2NF90b19nZG91YmxlKSwgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSk6CgkgIGFwcGFyZW50bHkgY29udmVydGluZyBmcm9tIGd1aW50NjQgdG8gZG91YmxlIGlzIG5vdCBpbXBsZW1lbnRlZAoJICBvbiBNU1ZDCgoyMDA1LTEwLTEwIDE2OjM4OjI2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svOiBDaGVjayBmaXhlcywgdXNlIEFQSSBhcyBzdGF0ZWQgaW4gZGVzaWduIGRvY3MsIHJlbW92ZSBoYWNrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfcGlwZWxpbmVfc3VpdGUpOgoJICAqIGNoZWNrL3N0YXRlcy9zaW5rcy5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL3N0YXRlcy9zaW5rczIuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9vYmplY3Rfc3VpdGUpLAoJICAobWFpbik6CgkgIENoZWNrIGZpeGVzLCB1c2UgQVBJIGFzIHN0YXRlZCBpbiBkZXNpZ24gZG9jcywgcmVtb3ZlIGhhY2tzLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBDYXRjaCBzdG9wcGluZyBvdXIgdGFzayB3aGlsZSB3ZSdyZSBzaHV0dGluZyBkb3duLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5faW5pdCksIChnc3RfYmluX2FkZF9mdW5jKSwKCSAgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpLCAoZ3N0X2Jpbl9nZXRfc3RhdGVfZnVuYyksCgkgIChnc3RfYmluX3JlY2FsY19zdGF0ZSksIChnc3RfYmluX2NoYW5nZV9zdGF0ZV9mdW5jKSwKCSAgKGJpbl9idXNfaGFuZGxlcik6CgkgICogZ3N0L2dzdGJpbi5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9pbml0KSwKCSAgKGdzdF9lbGVtZW50X2dldF9zdGF0ZV9mdW5jKSwgKGdzdF9lbGVtZW50X2Fib3J0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2NvbW1pdF9zdGF0ZSksIChnc3RfZWxlbWVudF9sb3N0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlX2Z1bmMpOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIE5ldyBzdGF0ZSBjaGFuZ2UgYWxnb3JpdGhtIChzZWUgIzMxODExNikKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jbGFzc19pbml0KSwKCSAgKGdzdF9waXBlbGluZV9pbml0KSwgKGdzdF9waXBlbGluZV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X3BpcGVsaW5lX2dldF9wcm9wZXJ0eSksIChkb19waXBlbGluZV9zZWVrKSwKCSAgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpLCAoZ3N0X3BpcGVsaW5lX3Byb3ZpZGVfY2xvY2tfZnVuYyk6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmg6CgkgIFJlbW92ZSBjcnVkZSBzdGF0ZSBjaGFuZ2UgaGFja3MuCgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIFJlbW92ZSBjcnVkZSBoYWNrcy4KCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgRml4ZXMgZm9yIHN0YXRlIGNoYW5nZS4gTmVlZHMgc29tZSBtb3JlIHdvcmsgdG8gZnVsbHkgdXNlIHRoZQoJICBuZXcgc3R1ZmYuCgoyMDA1LTEwLTEwIDE2OjIwOjQxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0ZXN0cy9NYWtlZmlsZS5hbSAobm9pbnN0X1BST0dSQU1TKTogTm8gbW9yZSBpbml0LmMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL01ha2VmaWxlLmFtIChub2luc3RfUFJPR1JBTVMpOiBObyBtb3JlIGluaXQuYy4KCjIwMDUtMTAtMTAgMTY6MDQ6MjggKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3QuYyAoR19PUFRJT05fRkxBR19OT19BUkcpOiBBcHBhcmVudGx5IEdMaWIgMi44IHJlcXVpcmVzIHRoaXMgZmxhZywgYnV0IGl0J3Mgbm90IGV2ZW4gaW4gR0xpYiAyLjYuIE9kZC4gSGFjayBhci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0LmMgKEdfT1BUSU9OX0ZMQUdfTk9fQVJHKTogQXBwYXJlbnRseSBHTGliIDIuOCByZXF1aXJlcwoJICB0aGlzIGZsYWcsIGJ1dCBpdCdzIG5vdCBldmVuIGluIEdMaWIgMi42LiBPZGQuIEhhY2sgYXJvdW5kIHRoZQoJICBpc3N1ZS4KCjIwMDUtMTAtMTAgMTU6NTg6MzIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aXRlcmF0b3IuYzogRml4IG15IHByZXZpb3VzIGNvbW1pdDogR1R5cGVzIHBhc3NlZCB0byBnc3RfaXRlcmF0b3JfbmV3KCkgY2FuIGJlIGZ1bmRhbWVudGFsIHR5cGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzogKGdzdF9pdGVyYXRvcl9uZXcpOgoJICBGaXggbXkgcHJldmlvdXMgY29tbWl0OiBHVHlwZXMgcGFzc2VkIHRvIGdzdF9pdGVyYXRvcl9uZXcoKQoJICBjYW4gYmUgZnVuZGFtZW50YWwgdHlwZXMuCgoyMDA1LTEwLTEwIDE1OjU1OjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogVXNlIHNyYy9zaW5rIHBhZHMgbGlzdHMgZm9yIHRoZSByZXNwZWN0aXZlIGl0ZXJhdG9ycyBpbnN0ZWFkIG9mIGZpbHRlcmluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2l0ZXJhdGVfcGFkX2xpc3QpLAoJICAoZ3N0X2VsZW1lbnRfaXRlcmF0ZV9wYWRzKSwgKGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMpLAoJICAoZ3N0X2VsZW1lbnRfaXRlcmF0ZV9zaW5rX3BhZHMpOgoJICBVc2Ugc3JjL3NpbmsgcGFkcyBsaXN0cyBmb3IgdGhlIHJlc3BlY3RpdmUgaXRlcmF0b3JzIGluc3RlYWQKCSAgb2YgZmlsdGVyaW5nLgoKMjAwNS0xMC0xMCAxNTo1Mzo1OSArMDAwMCAgUm9uYWxkIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBNZXJnZWQgaW4gcG9wdCByZW1vdmFsICsgR09wdGlvbiBhZGRpdGlvbiBwYXRjaCBmcm9tIFJvbmFsZCwgYnVnICMxNjk3NzIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICBNZXJnZWQgaW4gcG9wdCByZW1vdmFsICsgR09wdGlvbiBhZGRpdGlvbiBwYXRjaCBmcm9tIFJvbmFsZCwgYnVnCgkgICMxNjk3NzIuCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogQWRkIFNUQVRFXyhVTilMT0NLX0ZVTEwsIG1vdmUKCSAgR3N0RWxlbWVudCBtYWNyb3MgYXJvdW5kLCByZW1vdmUgcG9wdC1yZWxhdGVkIHN5bWJvbHMsIGFkZCBnb3B0aW9uCgkgIHN0dWZmLgoJICAqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIHBvcHQgY2hlY2tzLCByZXF1aXJlIEdMaWIgMi42IGZvciBHT3B0aW9uLgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGRvY3MvbGlicy9NYWtlZmlsZS5hbTogTm8gUE9QVF9DRkxBR1MuCgkgICogZXhhbXBsZXMvbWFudWFsL01ha2VmaWxlLmFtOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1pbml0LnhtbDogRG9jIHVwZGF0ZXMgd2l0aCBhbiBleGFtcGxlLgoJICAqIGdzdC9nc3QuYzogKGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXApLCAoZ3N0X2luaXRfY2hlY2spLAoJICAoZ3N0X2luaXQpLCAocGFyc2Vfb25lX29wdGlvbiksIChwYXJzZV9nb3B0aW9uX2FyZyk6CgkgICogZ3N0L2dzdC5oOiBSZW1vdmVkIGdzdF9pbml0X3dpdGhfcG9wdF90YWJsZSBhbmQgZnJpZW5kcy4gVG9vayBhCgkgIGJpdCBvZiBoYW5kIG1lcmdpbmcgYW5kIGRlYnVnZ2luZyB0byBnZXQgdGhlIEdPcHRpb24gc3R1ZmYgd29ya2luZwoJICB0aG8uCgkgICogdGVzdHMvTWFrZWZpbGUuYW06CgkgICogdG9vbHMvTWFrZWZpbGUuYW06CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1ydW4uYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChtYWluKTogVGhhbmtzIFJvbmFsZCEKCjIwMDUtMTAtMTAgMTU6MzA6NDUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aXRlcmF0b3IuYzogQWRkIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHBhc3NlZCBHVHlwZSBpcyBsaWtlbHkgdG8gcmVhbGx5IGJlIGEgR1R5cGUgKGFzIHRoZSBjb21waWxlciB3b24ndCBjYXQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6IChnc3RfaXRlcmF0b3JfbmV3KToKCSAgQWRkIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHBhc3NlZCBHVHlwZSBpcyBsaWtlbHkgdG8gcmVhbGx5CgkgIGJlIGEgR1R5cGUgKGFzIHRoZSBjb21waWxlciB3b24ndCBjYXRjaCBpdCBpZiB0aGUgc2l6ZSBhbmQKCSAgR1R5cGUgYXJndW1lbnRzIGdldCBtaXhlZCB1cCwgc2VlICMzMTg0NDcpLgoKMjAwNS0xMC0xMCAxNToyNzoxMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogUGFzcyBHVHlwZSBhbmQgc2l6ZSBhcmd1bWVudHMgdG8gZ3N0X2l0ZXJhdG9yX25ldygpIGluIHRoZSByaWdodCBvcmRlciAobWF5YmUgd2Ugc2hvdWxkIG1ha2UgX25ldygpIHRhay4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmV2aWV3ZWQgYnk6IFRpbS1QaGlsaXBwIE3DvGxsZXIgIDx0aW0gYXQgY2VudHJpY3VsYXIgZG90IG5ldD4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2l0ZXJhdGVfc29ydGVkKToKCSAgUGFzcyBHVHlwZSBhbmQgc2l6ZSBhcmd1bWVudHMgdG8gZ3N0X2l0ZXJhdG9yX25ldygpIGluIHRoZSByaWdodAoJICBvcmRlciAobWF5YmUgd2Ugc2hvdWxkIG1ha2UgX25ldygpIHRha2UgdGhlIEdUeXBlIGFzIGZpcnN0IGFyZ3VtZW50CgkgIGp1c3QgbGlrZSBfbmV3X2xpc3QoKT8pICgjMzE4NDQ3KS4KCjIwMDUtMTAtMTAgMTU6MTc6MzUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBBbmQgZnJlZSB0aGUgR1N0YXRpY1JlY011dGV4IHRvbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZmluYWxpemUpOgoJICBBbmQgZnJlZSB0aGUgR1N0YXRpY1JlY011dGV4IHRvbwoKMjAwNS0xMC0xMCAxNDozMzozOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB3aW4zMi9HU3RyZWFtZXIudmNwcm9qOgoJKiB3aW4zMi92czcvR1N0cmVhbWVyLnZjcHJvajoKCSAgZG9uJ3QgZWNobyBwYXRoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb24ndCBlY2hvIHBhdGgKCjIwMDUtMTAtMTAgMTQ6MzM6MTMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmMgKGdzdF9lbGVtZW50X2luaXQsIGdzdF9lbGVtZW50X2ZpbmFsaXplKTogQWxsb2NhdGUgYW5kIGZyZWUgdGhlIG11dGV4IHByb3Blcmx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9pbml0LCBnc3RfZWxlbWVudF9maW5hbGl6ZSk6CgkgIEFsbG9jYXRlIGFuZCBmcmVlIHRoZSBtdXRleCBwcm9wZXJseS4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5oIChHU1RfU1RBVEVfVU5MT0NLX0ZVTEwsIEdTVF9TVEFURV9MT0NLX0ZVTEwpOgoJICBOZXcgbWFjcm9zLgoJICAoR3N0RWxlbWVudCk6IFRoZSBzdGF0ZV9sb2NrIGlzIG5vdyByZWN1cnNpdmUuIFJlYnVpbGQgeW91cgoJICBwbHVnaW5zLCBzdWNrZXJzLiBPbGQgbWFjcm9zIGFkYXB0ZWQuCgoyMDA1LTEwLTEwIDE0OjIzOjU3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkgIGNoYW5nZWxvZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY2hhbmdlbG9nCgoyMDA1LTEwLTEwIDE0OjIzOjI2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBEb2MgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTAgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogRG9jIHVwZGF0ZXMuCgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogZ3N0L2dzdHV0aWxzLmMgKGdfc3RhdGljX3JlY19jb25kX3RpbWVkX3dhaXQpCgkgIChnX3N0YXRpY19yZWNfY29uZF93YWl0KTogUG9ydGVkIGZyb20gc3RhdGUgY2hhbmdlcyBwYXRjaCwgd2hpbGUKCSAgd2Ugd2FpdCBvbiBidWcgIzMxNzgwMiB0byBiZSBzb2x2ZWQgaW4gYSB3ZWxsLWRpc3RyaWJ1dGVkIEdMaWIuCgoyMDA1LTEwLTEwIDE0OjE1OjE1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL01BTklGRVNUOgoJKiB3aW4zMi9saWJnc3RiYXNlLmRlZjoKCSogd2luMzIvbGliZ3N0YmFzZS52Y3Byb2o6CgkqIHdpbjMyL2xpbmtfb2xkcnVudGltZS5jOgoJKiB3aW4zMi92czcvbGliZ3N0YmFzZS5kZWY6CgkqIHdpbjMyL3ZzNy9saWJnc3RiYXNlLnZjcHJvajoKCSogd2luMzIvdnM3L2xpbmtfb2xkcnVudGltZS5jOgoJICBhZGQgbW9yZSB3aW4zMiBidWlsZCBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1vcmUgd2luMzIgYnVpbGQgZmlsZXMKCjIwMDUtMTAtMTAgMTQ6MDM6MjUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RlbGVtZW50LmMgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZV9mdW5jKTogUmVuYW1lZCBmcm9tIGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSwgdmFyaWFibGUgbmFtZSBjaGFuZ2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGVfZnVuYyk6IFJlbmFtZWQgZnJvbQoJICBnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUsIHZhcmlhYmxlIG5hbWUgY2hhbmdlcy4KCSAgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6IFNwbGl0IG91dCBvZiBnc3RfZWxlbWVudF9zZXRfc3RhdGUgaW4KCSAgcHJlcGFyYXRpb24gZm9yIHRoZSBzdGF0ZSBjaGFuZ2UgbWVyZ2UuIERvZXNuJ3QgcGF5IGF0dGVudGlvbiB0bwoJICB0aGUgJ3RyYW5zaXRpb24nIGFyZ3VtZW50LgoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKTogVXBkYXRlcywgaG9wZWZ1bGx5IHB1cmVseSBjb3NtZXRpYy4KCSAgKGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQpOiBNVC1zYWZldHkuIFBvcnRlZCBmcm9tIHRoZQoJICBzdGF0ZSBjaGFuZ2UgcGF0Y2guCgkgIChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyk6IFJlbmFtZWQgZnJvbSBnZXRfc3RhdGUsIGNvc21ldGljCgkgIGNoYW5nZXMuCgoyMDA1LTEwLTEwIDEzOjUyOjE4ICswMDAwICBTZWJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4KCgkgIHVwZGF0ZXMgZm9yIHRoZSB3aW4zMiBidWlsZCAocGF0Y2ggZnJvbSBTZWJhc3RpZW4gTW91dHRlKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgKiB3aW4zMi9HU3RyZWFtZXIudmNwcm9qOgoJICAqIHdpbjMyL2NvbmZpZy5oOgoJICAqIHdpbjMyL2RpcmVudC5jOiAoX3RzZWVrZGlyKToKCSAgKiB3aW4zMi9nc3QtaW5zcGVjdC52Y3Byb2o6CgkgICogd2luMzIvZ3N0LWxhdW5jaC52Y3Byb2o6CgkgICogd2luMzIvZ3N0Y29uZmlnLmg6CgkgICogd2luMzIvZ3N0ZWxlbWVudHMudmNwcm9qOgoJICAqIHdpbjMyL2dzdGVudW10eXBlcy5jOiAoZ3N0X29iamVjdF9mbGFnc19nZXRfdHlwZSk6CgkgICogd2luMzIvZ3N0cmVhbWVyLmRlZjoKCSAgKiB3aW4zMi9tc3ZjNzEuc2xuOgoJICB1cGRhdGVzIGZvciB0aGUgd2luMzIgYnVpbGQgKHBhdGNoIGZyb20gU2ViYXN0aWVuIE1vdXR0ZSkKCjIwMDUtMTAtMTAgMTE6NTI6NTggKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RiaW4uYyAoZ3N0X2Jpbl9nZXRfc3RhdGVfZnVuYyk6IFJlbmFtZWQgZnJvbSBnc3RfYmluX2dldF9zdGF0ZSwgY2xlYW5lZCB1cCAoYnV0IG5vIGxvZ2ljIGNoYW5nZXMpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YmluLmMgKGdzdF9iaW5fZ2V0X3N0YXRlX2Z1bmMpOiBSZW5hbWVkIGZyb20KCSAgZ3N0X2Jpbl9nZXRfc3RhdGUsIGNsZWFuZWQgdXAgKGJ1dCBubyBsb2dpYyBjaGFuZ2VzKS4KCSAgKGJpbl9lbGVtZW50X2lzX3NpbmspOiBDb21tZW50IHVwZGF0ZXMuCgkgIChzaW5rX2l0ZXJhdG9yX2ZpbHRlcik6IFJlbW92ZSBuZWVkbGVzcyBjYXN0LgoJICAoZ3N0X2Jpbl9pdGVyYXRlX3NpbmtzKTogRG9jIHVwZGF0ZS4KCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlX2Z1bmMpOiBSZW5hbWVkIGZyb20gZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUsCgkgIGNsZWFuZWQgdXAgKGJ1dCBubyBsb2dpYyBjaGFuZ2VzKS4KCjIwMDUtMTAtMTAgMTE6MDQ6NTUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL3N0YXRlcy9zaW5rcy5jICh0ZXN0X3NyY19zaW5rKTogQ2xlYW51cHMgZnJvbSB0aGUgc3RhdGUgY2hhbmdlIHBhdGNoLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9zdGF0ZXMvc2lua3MuYyAodGVzdF9zcmNfc2luayk6IENsZWFudXBzIGZyb20gdGhlIHN0YXRlCgkgIGNoYW5nZSBwYXRjaC4KCSAgKHRlc3RfbGl2ZXNyY19zaW5rKTogU3luYyBvbiB0aGUgc3RhdGUuCgoyMDA1LTEwLTEwIDEwOjU5OjMzICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jIChydW5fcGlwZWxpbmUpOiBNZXJnZSBmcm9tIHRoZSBzdGF0ZSBjaGFuZ2UgcGF0Y2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmMgKHJ1bl9waXBlbGluZSk6IE1lcmdlIGZyb20KCSAgdGhlIHN0YXRlIGNoYW5nZSBwYXRjaC4KCjIwMDUtMTAtMTAgMTA6NTc6NDAgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jICh0ZXN0X2dob3N0X3BhZHMpOiBNZXJnZSBmcm9tIHRoZSBzdGF0ZSBjaGFuZ2UgcGF0Y2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTEwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jICh0ZXN0X2dob3N0X3BhZHMpOiBNZXJnZSBmcm9tIHRoZSBzdGF0ZQoJICBjaGFuZ2UgcGF0Y2guCgoyMDA1LTEwLTEwIDEwOjUwOjEyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9nc3QvZ3N0YmluLmM6IE1lcmdlIGluIHNvbWUgc3R5bGUgZml4ZXMgYW5kIGFkZGl0aW9uYWwgY2hlY2tzIGZyb20gV2ltJ3Mgc3RhdGUgY2hhbmdlIHBhdGNoLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IE1lcmdlIGluIHNvbWUgc3R5bGUgZml4ZXMgYW5kIGFkZGl0aW9uYWwKCSAgY2hlY2tzIGZyb20gV2ltJ3Mgc3RhdGUgY2hhbmdlIHBhdGNoLgoKMjAwNS0xMC0xMCAxMDo0MzoxNSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IENoZWNrIHdoZXRoZXIgd2UgaGF2ZSB0aGUgcmVxdWVzdGVkIGRhdGEgYWxyZWFkeSBpbiBvdXIgbGlzdCBvZiBjYWNoZWQgYnVmZmVycyBiZWZvcmUgcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAoaGVscGVyX2ZpbmRfcGVlayksCgkgIChnc3RfdHlwZV9maW5kX2hlbHBlcik6CgkgIENoZWNrIHdoZXRoZXIgd2UgaGF2ZSB0aGUgcmVxdWVzdGVkIGRhdGEgYWxyZWFkeSBpbiBvdXIgbGlzdCBvZgoJICBjYWNoZWQgYnVmZmVycyBiZWZvcmUgcHVsbGluZyBhIG5ldyBidWZmZXI7IGFsc28gbWFrZSB0aGUgYnVmZmVyCgkgIGxpc3QgYSBHU0xpc3QuIFNwZWVkcyB1cCB0eXBlZmluZGluZyBieSBjYS4gNS0xMCUgYWx0b2dldGhlci4KCjIwMDUtMTAtMTAgMDk6NDg6MjEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogZG9jIHVwZGF0ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgZG9jIHVwZGF0ZXMKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9kZXNlcmlhbGl6ZV9pbnRfaGVscGVyKToKCSAgZG9uJ3QgdXNlIGxvbmcgbG9uZywgaXQncyBub3QgcG9ydGFibGUuICBSZXBsYWNpbmcgd2l0aAoJICBnaW50NjQgc2VlbXMgdG8gd29yazsgbGV0J3MgaG9wZSBubyBza2VsZXRvbnMgZmFsbCBvdXQgb2YgdGhlIGNsb3NldC4KCjIwMDUtMTAtMTAgMDg6NTE6NTkgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGF1dG9nZW4uc2ggKENPTkZJR1VSRV9ERUZfT1BUKTogTm8gbW9yZSAtLXBsdWdpbi1idWlkZGlyLCB5YXkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMTAgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogYXV0b2dlbi5zaCAoQ09ORklHVVJFX0RFRl9PUFQpOiBObyBtb3JlIC0tcGx1Z2luLWJ1aWRkaXIsIHlheQoKMjAwNS0xMC0wOSAyMDo0OTo0NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbW9yZSBkb2NzLCBmaXggY29tcGlsYXRpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3BhcnNlX3N0YXRlX2NoYW5nZWQpOgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIG1vcmUgZG9jcywgZml4IGNvbXBpbGF0aW9uCgoyMDA1LTEwLTA5IDIwOjE5OjQ4ICswMDAwICBQaGlsaXBwZSBLYWxhZiA8cGhpbGlwcGUua2FsYWZAY29sbGFib3JhLmNvLnVrPgoKCSAgZ3N0L2dzdG1lc3NhZ2UuYzogRml4ZWQgYSBmZXcgZm9yZ290dGVuIHZhcmlhYmxlcyBvbiBwcmV2aW91cyBjb21taXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDkgIFBoaWxpcHBlIEtoYWxhZiA8YnVyZ2VyQHNwZWVkeS5vcmc+CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgRml4ZWQgYSBmZXcgZm9yZ290dGVuIHZhcmlhYmxlcyBvbiBwcmV2aW91cyBjb21taXQKCjIwMDUtMTAtMDkgMTc6NTk6MDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiBGaXggZXZpbCB0eXBlZmluZCBjcmFzaGVyOiBnZXRyYW5nZSgpIG1pZ2h0IHJldHVybiBhIHNob3J0IGJ1ZmZlciBhdCB0aGUgZW5kIG9mIGEgZmlsZSwuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzogKGhlbHBlcl9maW5kX3BlZWspOgoJICBGaXggZXZpbCB0eXBlZmluZCBjcmFzaGVyOiBnZXRyYW5nZSgpIG1pZ2h0IHJldHVybiBhIHNob3J0CgkgIGJ1ZmZlciBhdCB0aGUgZW5kIG9mIGEgZmlsZSwgYnV0IGdzdF90eXBlX2ZpbmRfcGVlaygpIG11c3QKCSAgZWl0aGVyIHJldHVybiB0aGUgZnVsbCBkYXRhIGFzIHJlcXVlc3RlZCBvciBOVUxMLCBidXQKCSAgbmV2ZXIgYSBzaG9ydCBidWZmZXIuCgoyMDA1LTEwLTA5IDE3OjUzOjMzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RtZXNzYWdlLio6IGRvbid0IHVzZSBuZXcsIGl0J3MgYSBDKysga2V5d29yZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X3N0YXRlX2NoYW5nZWQpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgZG9uJ3QgdXNlIG5ldywgaXQncyBhIEMrKyBrZXl3b3JkCgoyMDA1LTEwLTA5IDE3OjIyOjMzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIG9uY2UgaXMgZW5vdWdoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBvbmNlIGlzIGVub3VnaAoKMjAwNS0xMC0wOCAxODoyMToyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFNtYWxsIGRvY3MgYW5kIGRlYnVnIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGlzX2VvcyksICh1cGRhdGVfZGVncmVlKSwgKGdzdF9iaW5fcXVlcnkpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UpOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSk6CgkgIFNtYWxsIGRvY3MgYW5kIGRlYnVnIHVwZGF0ZXMuCgoyMDA1LTEwLTA4IDE4OjA3OjIwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBtb3JlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5jOgoJICBtb3JlIGRvY3MKCjIwMDUtMTAtMDggMTg6MDE6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEZpeCB0eXBvcywgYWRkIGNvbW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChpc19lb3MpLCAodXBkYXRlX2RlZ3JlZSksIChnc3RfYmluX2NoYW5nZV9zdGF0ZSksCgkgIChnc3RfYmluX2Rpc3Bvc2UpLCAoYmluX2J1c19oYW5kbGVyKToKCSAgRml4IHR5cG9zLCBhZGQgY29tbWVudHMuCgkgIENsZWFyIEVPUyBsaXN0IHdoZW4gZ29pbmcgdG8gUEFVU0VEIGZyb20gYW55IGRpcmVjdGlvbiBhbmQgZG8gaXQKCSAgaW4gYSB0aHJlYWRzYWZlIHdheS4KCSAgR2V0IGJhc2UgdGltZSBpbiBhIHRocmVhZHNhZmUgd2F5IHRvby4KCSAgRml4IGNvbmZ1c2luZyBkZWJ1ZyBpbiB0aGUgY2hhbmdlX3N0YXRlIGZ1bmN0aW9uLgoJICBWYXJpb3VzIG90aGVyIG1hbGwgY2xlYW51cHMuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSk6CgkgIEZpeCB2ZXJ5IHZlcmJvc2UgYnVzIHBvc3RpbmcgY29kZS4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jbGFzc19pbml0KSwKCSAgKGdzdF9waXBlbGluZV9zZXRfcHJvcGVydHkpLCAoZ3N0X3BpcGVsaW5lX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKToKCSAgU21hbGwgQVJHXyAtPiBQUk9QXyBjbGVhbnVwCgoyMDA1LTEwLTA4IDE3OjMwOjI5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBEbyBhIGxlc3MgQ1BVIGRlbWFuZGluZyBFT1MgY2hlY2sgYmVjYXVzZSB3ZSBjYW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGlzX2VvcyksIChiaW5fYnVzX2hhbmRsZXIpOgoJICBEbyBhIGxlc3MgQ1BVIGRlbWFuZGluZyBFT1MgY2hlY2sgYmVjYXVzZSB3ZSBjYW4uCgoyMDA1LTEwLTA4IDE3OjE3OjI1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sLzogSXQncyBhYm91dCB0aW1lIHdlIGJ1bXAgdGhlIHZlcnNpb24gbnVtYmVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6CgkgIChnc3RfZHBfaGVhZGVyX2Zyb21fYnVmZmVyKSwgKGdzdF9kcF9wYWNrZXRfZnJvbV9jYXBzKSwKCSAgKGdzdF9kcF9wYWNrZXRfZnJvbV9ldmVudCk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5oOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kcC1wcml2YXRlLmg6CgkgIEl0J3MgYWJvdXQgdGltZSB3ZSBidW1wIHRoZSB2ZXJzaW9uIG51bWJlci4KCSAgU2luY2UgZXZlbnQgdHlwZXMgZG9uJ3QgZml0IGluIHRoZSBndWludDggYW55bW9yZSBkZXNjcmliaW5nCgkgIHRoZSBwYXlsb2FkIHR5cGUsIG1ha2UgcGF5bG9hZCB0eXBlIDE2IGJpdHMgd2lkZS4KCjIwMDUtMTAtMDggMTY6NDk6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IE1hbnkgZG9jIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1jbG9ja3MudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGJpbi50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RlbGVtZW50LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdHBpcGVsaW5lLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWxpdmUtc291cmNlLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW1lc3NhZ2VzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW92ZXJ2aWV3LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgIE1hbnkgZG9jIHVwZGF0ZXMuCgoyMDA1LTEwLTA4IDE2OjEzOjUwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50Lio6IEZpeCBldmVudCBxdWFyayByZWdpc3RyYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBGaXggZXZlbnQgcXVhcmsgcmVnaXN0cmF0aW9uLgoJICBBZGQgc29tZSBzcGFjZSBiZXR3ZWVuIGV2ZW50cyBzbyB3ZSBjYW4gaW5zZXJ0IHRoZW0gaW4gdGhlCgkgIHJpZ2h0IGdyb3Vwcy4KCjIwMDUtMTAtMDggMTQ6NTc6MDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBCZXR0ZXIgbG9nIG1lc3NhZ2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfYnVmZmVyKToKCSAgQmV0dGVyIGxvZyBtZXNzYWdlLgoJICAqIGdzdC9nc3RidXMuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBNb3JlIGRvY3MuCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfY2xhc3NfaW5pdCksIChnc3RfcXVldWVfaW5pdCksCgkgIChnc3RfcXVldWVfc2V0X3Byb3BlcnR5KSwgKGdzdF9xdWV1ZV9nZXRfcHJvcGVydHkpOgoJICAqIGdzdC9nc3RxdWV1ZS5oOgoJICBSZW1vdmUgb2xkIHVudXNlZCBwcm9wZXJ0aWVzLgoKMjAwNS0xMC0wOCAxNDo0ODoxNyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbG90cyBvZiBuZXcgZG9jcyBhbmQgZG9jIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuaDoKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgICogZ3N0L2dzdHBhZC5oOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBsb3RzIG9mIG5ldyBkb2NzIGFuZCBkb2MgZml4ZXMKCjIwMDUtMTAtMDggMTQ6NDE6NTYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIGZpeCBhIGxlYWsgSSBpbnRyb2R1Y2VkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggYSBsZWFrIEkgaW50cm9kdWNlZAoKMjAwNS0xMC0wOCAxMzo1NzoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvOiBPbmx5IGV2ZXIgbG9hZCBvbmUgcGx1Z2luIGZvciBhIGdpdmVuIHBsdWdpbiBiYXNlbmFtZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiAoZ3N0X3BsdWdpbl9maW5hbGl6ZSksIChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiAoZ3N0X3JlZ2lzdHJ5X2xvb2t1cF9sb2NrZWQpLAoJICAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aF9sZXZlbCk6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IChsb2FkX3BsdWdpbik6CgkgIE9ubHkgZXZlciBsb2FkIG9uZSBwbHVnaW4gZm9yIGEgZ2l2ZW4gcGx1Z2luIGJhc2VuYW1lLgoJICBUaGlzIGVuc3VyZXMgY29ycmVjdCBvdmVycmlkaW5nIG9mIEdTVF9QTFVHSU5fUEFUSCBvdmVyCgkgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEggYW5kIG9mIGhvbWUgZGlyIHBsdWdpbnMgb3ZlcgoJICBzeXN0ZW0gaW5zdGFsbGVkIHBsdWdpbnMuCgoyMDA1LTEwLTA4IDEzOjM5OjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogUHJlcGFyZSBmb3IgZG9pbmcgUU9TLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9idWZmZXIpOgoJICBQcmVwYXJlIGZvciBkb2luZyBRT1MuCgoyMDA1LTEwLTA4IDEzOjEwOjM0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svOiBBbGxvdyBuZXcgY2xvY2sgbWVzc2FnZSB0b28uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9waXBlbGluZXMvY2xlYW51cC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEFsbG93IG5ldyBjbG9jayBtZXNzYWdlIHRvby4KCjIwMDUtMTAtMDggMTI6NTY6MzcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0bWVzc2FnZS4qOiBBbHNvIGNhcnJ5IHRoZSBjbG9jayBpbiBxdWVzdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX25ld19lcnJvciksCgkgIChnc3RfbWVzc2FnZV9uZXdfd2FybmluZyksIChnc3RfbWVzc2FnZV9uZXdfdGFnKSwKCSAgKGdzdF9tZXNzYWdlX25ld19zdGF0ZV9jaGFuZ2VkKSwgKGdzdF9tZXNzYWdlX25ld19jbG9ja19wcm92aWRlKSwKCSAgKGdzdF9tZXNzYWdlX25ld19jbG9ja19sb3N0KSwgKGdzdF9tZXNzYWdlX25ld19uZXdfY2xvY2spLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfc3RhcnQpLCAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfZG9uZSksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFuZ2VkKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX2Nsb2NrX3Byb3ZpZGUpLCAoZ3N0X21lc3NhZ2VfcGFyc2VfY2xvY2tfbG9zdCksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9uZXdfY2xvY2spOgoJICAqIGdzdC9nc3RtZXNzYWdlLmg6CgkgIEFsc28gY2FycnkgdGhlIGNsb2NrIGluIHF1ZXN0aW9uLgoKMjAwNS0xMC0wOCAxMjozNjozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RtZXNzYWdlLio6IENsZWFuIHVwLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSksCgkgIChnc3RfbWVzc2FnZV9uZXdfZW9zKSwgKGdzdF9tZXNzYWdlX25ld19lcnJvciksCgkgIChnc3RfbWVzc2FnZV9uZXdfd2FybmluZyksIChnc3RfbWVzc2FnZV9uZXdfdGFnKSwKCSAgKGdzdF9tZXNzYWdlX25ld19zdGF0ZV9jaGFuZ2VkKSwgKGdzdF9tZXNzYWdlX25ld19jbG9ja19wcm92aWRlKSwKCSAgKGdzdF9tZXNzYWdlX25ld19uZXdfY2xvY2spLCAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFuZ2VkKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX2Nsb2NrX3Byb3ZpZGUpLCAoZ3N0X21lc3NhZ2VfcGFyc2VfbmV3X2Nsb2NrKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBDbGVhbiB1cC4KCSAgQWRkZWQgY2xvY2sgcmVsYXRlZCBtZXNzYWdlcy4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICBQb3N0IG1lc3NhZ2Ugd2hlbiB0aGUgY2xvY2sgY2hhbmdlZC4KCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgUHJpbnQgbmV3IGNsb2NrLgoKMjAwNS0xMC0wOCAxMToxNjowMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIHRvb2xzL2dzdC1pbnNwZWN0LmM6IENhbid0IHBhc3MgTlVMTCBzdHJpbmdzIHRvIGdfcHJpbnQoKSBvbiB3aW5kb3dzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBDYW4ndCBwYXNzIE5VTEwgc3RyaW5ncyB0byBnX3ByaW50KCkgb24gd2luZG93cy4KCjIwMDUtMTAtMDggMTE6MTI6MjYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG9jcy86IGFkZCBhIGNoYXB0ZXIgb24gcnVubmluZyBHU3RyZWFtZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvTWFrZWZpbGUuYW06CgkgICogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9ydW5uaW5nLnhtbDoKCSAgKiBkb2NzL3ZlcnNpb24uZW50aXRpZXMuaW46CgkgIGFkZCBhIGNoYXB0ZXIgb24gcnVubmluZyBHU3RyZWFtZXIuCgkgIGRvY3VtZW50IEdTVF9ERUJVRyBhbmQgR1NUX1BMVUdJTiogZW52IHZhcnMKCjIwMDUtMTAtMDggMTE6MTA6MTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgTWFrZWZpbGUuYW06IHJlbW92ZSBpbmNsdWRlIGRpcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBNYWtlZmlsZS5hbToKCSAgcmVtb3ZlIGluY2x1ZGUgZGlyCgkgICogY29uZmlndXJlLmFjOgoJICByZW1vdmUgUExVR0lOU19CVUlMRERJUiBzdHVmZgoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCk6CgkgIHJlb3JkZXIgcGFyc2luZyBvZiBHU1RfUExVR0lOX1BBVEggYW5kIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEgKCSAgKiBpZGlvdHRlc3QubWFrOgoJICByZW1vdmUsIGl0IHdhcyBjb25kZXNjZW5kaW5nIGFuZCBub3QgbmVlZGVkCgoyMDA1LTEwLTA4IDA5OjU4OjMwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuKjogUmVwb3N0IEVPUyBtZXNzYWdlIHdoaWxlIGdvaW5nIHRvIFBMQVlJTkcgaWYgc3RpbGwgRU9TLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX3F1ZXVlX2ZsdXNoKSwKCSAgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksIChnc3RfYmFzZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3Npbmtfd2FpdCksIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9ldmVudCksCgkgIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgUmVwb3N0IEVPUyBtZXNzYWdlIHdoaWxlIGdvaW5nIHRvIFBMQVlJTkcgaWYgc3RpbGwgRU9TLgoJICBNYWtlIHN1cmUgdGhhdCB3aGVuIHJlY2VpdmluZyBhIEZMVVNIX1NUQVJUIHdlIGRvbid0IGF0dGVtcHQKCSAgdG8gc3luYyBvbiB0aGUgY2xvY2sgYW55bW9yZS4KCjIwMDUtMTAtMDggMDk6Mzg6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IEJldHRlciBtZXNzYWdlIHByaW50b3V0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgQmV0dGVyIG1lc3NhZ2UgcHJpbnRvdXQuCgoyMDA1LTEwLTA4IDA5OjI0OjI1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogTWFrZSBDaGlsZFByb3h5IHRocmVhZHNhZmUgYW5kIGZpeCBtZW0gbGVha3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2hpbGRfcHJveHlfZ2V0X2NoaWxkX2J5X2luZGV4KSwKCSAgKGdzdF9iaW5fY2hpbGRfcHJveHlfZ2V0X2NoaWxkcmVuX2NvdW50KToKCSAgKiBnc3QvZ3N0Y2hpbGRwcm94eS5jOiAoZ3N0X2NoaWxkX3Byb3h5X2dldF9jaGlsZF9ieV9uYW1lKSwKCSAgKGdzdF9jaGlsZF9wcm94eV9sb29rdXApLCAoZ3N0X2NoaWxkX3Byb3h5X2dldF9wcm9wZXJ0eSksCgkgIChnc3RfY2hpbGRfcHJveHlfZ2V0X3ZhbGlzdCksIChnc3RfY2hpbGRfcHJveHlfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9jaGlsZF9wcm94eV9zZXRfdmFsaXN0KToKCSAgKiBnc3QvcGFyc2UvZ3JhbW1hci55OgoJICBNYWtlIENoaWxkUHJveHkgdGhyZWFkc2FmZSBhbmQgZml4IG1lbSBsZWFrcy4KCjIwMDUtMTAtMDggMDk6MDk6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdC5jOiBkZWJ1ZyB0aGUgR1NUX1BMVUdJTl8gZW52IHZhcnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdC5jOiAoaW5pdF9wb3N0KToKCSAgZGVidWcgdGhlIEdTVF9QTFVHSU5fIGVudiB2YXJzCgoyMDA1LTEwLTA4IDA4OjU4OjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWRkZWQgZXh0cmEgZmllbGQgdG8gU1RBVEVfQ0hBTkdFIG1lc3NhZ2Ugd2l0aCB0aGUgcGVuZGluZyBzdGF0ZSwgd2hpY2ggd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbmV3IHN0YXRlIHNvb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9nc3QvZ3N0bWVzc2FnZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAobWVzc2FnZV9yZWNlaXZlZCk6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9sb3N0X3N0YXRlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X3N0YXRlX2NoYW5nZWQpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgQWRkZWQgZXh0cmEgZmllbGQgdG8gU1RBVEVfQ0hBTkdFIG1lc3NhZ2Ugd2l0aCB0aGUgcGVuZGluZwoJICBzdGF0ZSwgd2hpY2ggd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbmV3IHN0YXRlIHNvb24uCgoyMDA1LTEwLTA4IDA4OjAwOjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogU21hbGwgY2xlYW51cHMgYW5kIGRvYyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3BvcCk6CgkgICogZ3N0L2dzdGNsb2NrLmM6CgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2FzeW5jX3RocmVhZCk6CgkgIFNtYWxsIGNsZWFudXBzIGFuZCBkb2MgdXBkYXRlcy4KCjIwMDUtMTAtMDggMDY6NDk6MDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogbG9nIGRpc3RyaWJ1dGluZyBjbG9ja3MgYW5kIGJhc2UgdGltZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChpbml0X3ByZSk6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyk6CgkgIGxvZyBkaXN0cmlidXRpbmcgY2xvY2tzIGFuZCBiYXNlIHRpbWUKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9hZGRfcGx1Z2luKSwKCSAgKGdzdF9yZWdpc3RyeV9zY2FuX3BhdGhfbGV2ZWwpLCAoZ3N0X3JlZ2lzdHJ5X3NjYW5fcGF0aCk6CgkgIGNsZWFuIHVwIHRoZSBkZWJ1Z2dpbmcgb3V0cHV0IGEgbGl0dGxlCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSk6CgkgIHdhcm4gYWJvdXQgYSBtZW1sZWFrIChJJ3ZlIGFjdHVhbGx5IHNlZW4gdGhpcyBiZSB1c2VkLCB0aG91Z2gKCSAgaXQgd2FzIHByb2JhYmx5IGEgYnVnKQoKMjAwNS0xMC0wOCAwNjo0MjozMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBhZGQgdHdvIG5ldyBmdW5jdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCB0d28gbmV3IGZ1bmN0aW9ucwoKMjAwNS0xMC0wNyAxODoxNzoyMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuKjogTWFrZSB0aGUgbmV3c2VnbWVudCBldmVudCBjdXN0b21pemFibGUgYnkgc3ViY2xhc3Nlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2luaXQpLCAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmV3c2VnbWVudCksCgkgIChnc3RfYmFzZV9zcmNfbmV3c2VnbWVudCksIChnc3RfYmFzZV9zcmNfZG9fc2VlayksCgkgIChnc3RfYmFzZV9zcmNfbG9vcCksIChnc3RfYmFzZV9zcmNfc3RhcnQpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgTWFrZSB0aGUgbmV3c2VnbWVudCBldmVudCBjdXN0b21pemFibGUgYnkgc3ViY2xhc3Nlcy4KCjIwMDUtMTAtMDcgMTg6MDI6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZXZlbnQuKjogTmV3IGV2ZW50IGZvciBmdXR1cmUgaWRlYS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGV2ZW50LmM6IChnc3RfZXZlbnRfbmV3X2J1ZmZlcnNpemUpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX2J1ZmZlcnNpemUpOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBOZXcgZXZlbnQgZm9yIGZ1dHVyZSBpZGVhLgoKMjAwNS0xMC0wNyAxNjoyODo1NiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKTogRG9jIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKTogRG9jIHVwZGF0ZS4KCjIwMDUtMTAtMDcgMTY6MTM6NTEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IFVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogVXBkYXRlLgoJICAqIGdzdC9nc3RtZXNzYWdlLmMgKGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbik6IE1hZGUgaW50byBhCgkgIGZ1bmN0aW9uIGxpa2UgaG9uZXN0IEFQSSBjYWxscy4KCSAgKGdzdF9tZXNzYWdlX25ld19lbGVtZW50KTogTmV3IG1lc3NhZ2UgdHlwZS4KCSAgKiBnc3QvZ3N0bWVzc2FnZS5oIChlbnVtKTogQWRkIEdTVF9NRVNTQUdFX0VMRU1FTlQgdHlwZS4KCjIwMDUtMTAtMDcgMTU6MjU6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgZmRzcmMgZG9lcyBub3QgYnVpbGQgY3VycmVudGx5IG9uIHdpbjMyIGR1ZSB0byBzb2NrZXRwYWlyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmZHNyYyBkb2VzIG5vdCBidWlsZCBjdXJyZW50bHkgb24gd2luMzIgZHVlIHRvIHNvY2tldHBhaXIKCjIwMDUtMTAtMDcgMTU6MjI6MzggKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGNoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYyAodGVzdF9ub19wcmVyb2xsKTogTmV3IGNoZWNrLCBjaGVja3MgdGhhdCBzZXR0aW5nIGEgbGl2ZSBmYWtlc3JjIHRvIFBBVVNFRCByZXR1cm5zIE5PX1BSRVJPTC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0xMC0wNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9lbGVtZW50cy9mYWtlc3JjLmMgKHRlc3Rfbm9fcHJlcm9sbCk6IE5ldyBjaGVjaywgY2hlY2tzCgkgIHRoYXQgc2V0dGluZyBhIGxpdmUgZmFrZXNyYyB0byBQQVVTRUQgcmV0dXJucyBOT19QUkVST0xMIGJvdGgKCSAgdGltZXMuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKTogQWxsb3cgYQoJICBOT19QUkVST0xMIGZyb20gZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlIHRvIGZhbGwgdGhyb3VnaC4KCjIwMDUtMTAtMDcgMTU6MTM6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICBkb24ndCB1c2UgaWYgbm90IGRlY2xhcmVkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb24ndCB1c2UgaWYgbm90IGRlY2xhcmVkCgoyMDA1LTEwLTA3IDEyOjUyOjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IEFjdGl2YXRpbmcgYSBnaG9zdHBhZCB3aXRoIG5vIGludGVybmFsIHBhZCBpbiBwdXNoIG1vZGUgaXMgb2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X2dob3N0X3BhZF9nZXRfaW50ZXJuYWwpLAoJICAoZ3N0X2dob3N0X3BhZF9kb19hY3RpdmF0ZV9wdXNoKToKCSAgQWN0aXZhdGluZyBhIGdob3N0cGFkIHdpdGggbm8gaW50ZXJuYWwgcGFkIGluIHB1c2ggbW9kZQoJICBpcyBvay4KCjIwMDUtMTAtMDcgMTI6NDU6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdG9iamVjdC5oOiB0aGVyZSdzIG5vIHBvaW50IGluIHdyYXBwaW5nIEZMQUdfU0VUL19VTlNFVCBpbiBTVE1UIG1hY3Jvcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICB0aGVyZSdzIG5vIHBvaW50IGluIHdyYXBwaW5nIEZMQUdfU0VUL19VTlNFVCBpbiBTVE1UIG1hY3Jvcy4KCSAgRml4ZXMgY29tcGlsYXRpb24gb24gV2luZG93cy4KCjIwMDUtMTAtMDcgMTA6MzI6MjQgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICBQcmludCBvdXQgZmVhdHVyZSBhbmQgcGx1Z2luIGNvdW50IGF0IHRoZSBlbmQgd2hlbiBwcmludGluZyBvdXQgYWxsIGZlYXR1cmVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUHJpbnQgb3V0IGZlYXR1cmUgYW5kIHBsdWdpbiBjb3VudCBhdCB0aGUgZW5kIHdoZW4gcHJpbnRpbmcgb3V0CgkgIGFsbCBmZWF0dXJlcy4KCSAgQWxzbyBhZGQgYSBjaGFuZ2Vsb2cgZW50cnkgd2hpY2ggSSdkIHdyaXR0ZW4gYnV0IG5vdCBjb21taXR0ZWQ/CgoyMDA1LTEwLTA3IDAwOjE0OjQ1ICswMDAwICBKb2hhbiBEYWhsaW4gPGpvaGFuQGdub21lLm9yZz4KCgkgIEFkZCBhIEdUeXBlIHRvIEdzdEl0ZXJhdG9yLCB1cGRhdGUgY2FsbHNpdGVzIGFuZCB0ZXN0cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGl0ZXJhdG9yLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9pdGVyYXRlX2VsZW1lbnRzKSwKCSAgKGdzdF9iaW5faXRlcmF0ZV9yZWN1cnNlKSwgKGdzdF9iaW5faXRlcmF0ZV9zb3J0ZWQpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9pdGVyYXRlX3BhZHMpOgoJICAqIGdzdC9nc3Rmb3JtYXQuYzogKGdzdF9mb3JtYXRfaXRlcmF0ZV9kZWZpbml0aW9ucyk6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6IChnc3RfaXRlcmF0b3JfaW5pdCksIChnc3RfaXRlcmF0b3JfbmV3KSwKCSAgKGdzdF9pdGVyYXRvcl9uZXdfbGlzdCksIChnc3RfaXRlcmF0b3JfZmlsdGVyKToKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuaDoKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKGdzdF9xdWVyeV90eXBlX2l0ZXJhdGVfZGVmaW5pdGlvbnMpOgoJICBBZGQgYSBHVHlwZSB0byBHc3RJdGVyYXRvciwgdXBkYXRlIGNhbGxzaXRlcyBhbmQgdGVzdHMuCgoyMDA1LTEwLTA2IDIxOjA5OjExICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgZG9oLiAgdXNlIGNvcnJlY3QgdmFyaWFibGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvaC4gIHVzZSBjb3JyZWN0IHZhcmlhYmxlCgoyMDA1LTEwLTA2IDE3OjAwOjUwICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgdmVyc2lvbiBnc3RyZWFtZXItdG9vbHMgcGFja2FnZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdmVyc2lvbiBnc3RyZWFtZXItdG9vbHMgcGFja2FnZQoKMjAwNS0xMC0wNiAxNDoyMDoxNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgaW5pdGlhbGl6ZSBxdWFya3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGluaXRpYWxpemUgcXVhcmtzCgoyMDA1LTEwLTA2IDE0OjAxOjQ0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RwYWQuYzogZ2l2ZSBldmVudHMgYSBjaGFuY2UgdG8gYmUgaGFuZGxlZCBieSBldmVudCBwcm9iZXMgd2hlbiB0aGUgcGFkIGlzIG5vdCBsaW5rZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0X2Rpc3BhdGNoKToKCSAgZ2l2ZSBldmVudHMgYSBjaGFuY2UgdG8gYmUgaGFuZGxlZCBieSBldmVudCBwcm9iZXMgd2hlbiB0aGUgcGFkCgkgIGlzIG5vdCBsaW5rZWQKCjIwMDUtMTAtMDYgMTM6NTU6NDMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdGV2ZW50Lio6IGFkZCBzdHJpbmcgcmVwcmVzZW50YXRpb25zIGZvciBldmVudCB0eXBlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF90eXBlX2dldF9uYW1lKSwKCSAgKGdzdF9ldmVudF90eXBlX3RvX3F1YXJrKSwgKGdzdF9ldmVudF9maW5hbGl6ZSksIChnc3RfZXZlbnRfbmV3KToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgYWRkIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yIGV2ZW50IHR5cGVzCgoyMDA1LTEwLTA2IDEzOjQyOjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RldmVudC5oOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA1LTEwLTA2IDEzOjI0OjI4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IERvbid0IHVzZSBOVUxMIHBvaW50ZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfY2xvc2VfZmlsZSk6CgkgIERvbid0IHVzZSBOVUxMIHBvaW50ZXJzLgoKMjAwNS0xMC0wNiAwOTo0OTo0MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvOiB3aWRlbiB0aGUgZGVidWcgY2F0ZWdvcnkgaW4gb3V0cHV0IHRvIGZpdCB0aGUgYmlnZ2VzdCBvbmUgd2UgaGF2ZSBhZGQgYSBidXMgY2F0ZWdvcnkgYW5kIHVzZSBpdCBwbGF5IHdpdGggdGhlIGMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICB3aWRlbiB0aGUgZGVidWcgY2F0ZWdvcnkgaW4gb3V0cHV0IHRvIGZpdCB0aGUgYmlnZ2VzdCBvbmUgd2UgaGF2ZQoJICBhZGQgYSBidXMgY2F0ZWdvcnkgYW5kIHVzZSBpdAoJICBwbGF5IHdpdGggdGhlIGNvbG9ycwoJICBmaXggdXAgc29tZSBjYXRlZ29yaWVzCgoyMDA1LTEwLTA2IDA3OjQyOjQxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIGZpcnN0IHN0YWIgYXQgcmVvcmdhbml6aW5nIGRvY3MgZm9yIHBhZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZmlyc3Qgc3RhYiBhdCByZW9yZ2FuaXppbmcgZG9jcyBmb3IgcGFkCgoyMDA1LTEwLTA2IDA3OjEzOjAxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jOiBhZGQgcHVzaCBhY3RpdmF0aW9uIG9mIHNpbmsgZ2hvc3QgcGFkcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDYgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX2ludGVybmFsX2RvX2FjdGl2YXRlX3B1c2gpOgoJICBhZGQgcHVzaCBhY3RpdmF0aW9uIG9mIHNpbmsgZ2hvc3QgcGFkcy4KCSAgQW5keWUsIHBsZWFzZSB2ZXJpZnkKCjIwMDUtMTAtMDUgMjI6MzU6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnQuaDoKCSogZ3N0L2dzdHBhZC5jOgoJICBkb2MgdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jIHVwZGF0ZXMKCjIwMDUtMTAtMDUgMjE6MzQ6NDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IGZpeCBhIGJ1ZyBpbiB0aGUgY2FzZSB3aGVyZSBuZWl0aGVyIGVsZW1lbnQgaGFzIGEgcGFkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfbGlua19wYWRzKToKCSAgZml4IGEgYnVnIGluIHRoZSBjYXNlIHdoZXJlIG5laXRoZXIgZWxlbWVudCBoYXMgYSBwYWQKCSAgKiBjaGVjay9nc3QvZ3N0ZWxlbWVudC5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2VsZW1lbnRfc3VpdGUpOgoJICBhZGQgYSB0ZXN0IGZvciB0aGF0IGNhc2UKCjIwMDUtMTAtMDUgMTc6MDE6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdHBhZC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGFkLmM6CgkgIHVucmVmIG91ciB0ZXN0IGJ1ZmZlcnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVucmVmIG91ciB0ZXN0IGJ1ZmZlcnMKCjIwMDUtMTAtMDUgMTY6MTY6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHBhZC5jOiBlbWl0IGhhdmUtZGF0YSBiZWZvcmUgY2hlY2tpbmcgZm9yIHBlZXJzLiAgVGhpcyBhbGxvd3MgZm9yIHByb2JlIGhhbmRsZXJzIHRvIGNvbm5lY3QgZWxlbWVudHMuICBUaGlzIGhlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfcHVzaCksIChnc3RfcGFkX3B1c2hfZXZlbnQpOgoJICBlbWl0IGhhdmUtZGF0YSBiZWZvcmUgY2hlY2tpbmcgZm9yIHBlZXJzLiAgVGhpcyBhbGxvd3MKCSAgZm9yIHByb2JlIGhhbmRsZXJzIHRvIGNvbm5lY3QgZWxlbWVudHMuICBUaGlzIGhlbHBzIGF1dG9wbHVnZ2Vycy4KCSAgKiBjaGVjay9nc3QvZ3N0cGFkLmM6IChHU1RfU1RBUlRfVEVTVCksIChfcHJvYmVfaGFuZGxlciksCgkgIChnc3RfcGFkX3N1aXRlKToKCSAgYWRkIHNpeCBjaGVja3MsIGxpbmtlZC91bmxpbmtlZCB3aXRoIG5vL3RydWUvZmFsc2UgcHJvYmUKCjIwMDUtMTAtMDUgMTE6NTA6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdG9iamVjdC5jOgoJICBpbmRlbnQgaWZkZWZzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpbmRlbnQgaWZkZWZzCgoyMDA1LTEwLTA0IDE4OjQ2OjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2VsZW1lbnRzLzogUHJvdGVjdCBsYXN0X21lc3NhZ2Ugd2l0aCBsb2NrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzogKGdzdF9mYWtlX3NpbmtfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mYWtlX3NpbmtfZXZlbnQpLCAoZ3N0X2Zha2Vfc2lua19wcmVyb2xsKSwKCSAgKGdzdF9mYWtlX3NpbmtfcmVuZGVyKSwgKGdzdF9mYWtlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2V2ZW50X2hhbmRsZXIpLAoJICAoZ3N0X2Zha2Vfc3JjX2dldF9wcm9wZXJ0eSksIChnc3RfZmFrZV9zcmNfY3JlYXRlKSwKCSAgKGdzdF9mYWtlX3NyY19zdG9wKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9zdG9wKToKCSAgUHJvdGVjdCBsYXN0X21lc3NhZ2Ugd2l0aCBsb2NrLgoKMjAwNS0xMC0wNCAxNTowNDo1MCArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9nc3Rmb3JtYXQuaDogQWRkZWQgcHJlY2lzaW9uIGluIHRoZSBjb21tZW50cyBmb3IgR1NUX0ZPUk1BVF9ERUZBVUxUCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3Rmb3JtYXQuaDoKCSAgQWRkZWQgcHJlY2lzaW9uIGluIHRoZSBjb21tZW50cyBmb3IgR1NUX0ZPUk1BVF9ERUZBVUxUCgoyMDA1LTEwLTA0IDEzOjE5OjQ3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgdXBkYXRlIHVuaW5zdGFsbGVkIHNjcmlwdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlIHVuaW5zdGFsbGVkIHNjcmlwdAoKMjAwNS0xMC0wNCAxMjowMjozNCArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHJlbW92ZSBzb21lIGZpbGVzIHRoYXQgYXJlIG5vIGxvbmdlciB0aGVyZSBmcm9tIHNwZWMgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIHNvbWUgZmlsZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHRoZXJlIGZyb20gc3BlYyBmaWxlCgoyMDA1LTEwLTA0IDExOjUxOjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBEb24ndCB0cnkgdG8gcnVuIGVycm9uZW91cyBwaXBlbGluZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICBEb24ndCB0cnkgdG8gcnVuIGVycm9uZW91cyBwaXBlbGluZXMuCgoyMDA1LTEwLTA0IDExOjEwOjA0ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJICBnc3QvZ3N0ZXJyb3IuYzogQWRkIGFub3RoZXIgZXJyb3Igc3RyaW5nIHVzZWQgaW4gYSBmZXcgZXhpc3RpbmcgcGx1Z2lucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVycm9yLmM6IChfZ3N0X3N0cmVhbV9lcnJvcnNfaW5pdCk6CgkgIEFkZCBhbm90aGVyIGVycm9yIHN0cmluZyB1c2VkIGluIGEgZmV3IGV4aXN0aW5nIHBsdWdpbnMuCgkgICogZ3N0L2dzdHBsdWdpbi5jOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6IChnc3RfcGx1Z2luX2ZlYXR1cmVfbG9hZCk6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X2VsZW1lbnRfaW5mbyk6CgkgIFdoZW4gYSBmZWF0dXJlIGRpc2FwcGVhcnMgZnJvbSBhIHBsdWdpbiAoYW5kIHRoZSBmZWF0dXJlIGV4aXN0cyBpbgoJICB0aGUgY2FjaGVkIHJlZ2lzdHJ5IGZpbGUpLCB0aGluZ3Mgd2VudCBob3JyaWJseSB3cm9uZy4gVGhpcyBpc24ndCBhCgkgIGNvbXBsZXRlIGZpeCwgd2Ugc2hvdWxkIGFjdHVhbGx5IGJlIHJlbW92aW5nIHRoZSAnbWlzc2luZycgZmVhdHVyZXMKCSAgZnJvbSB0aGUgZmVhdHVyZXMgbGlzdCB3aGVuIHdlIGxvYWQgdGhlIGFjdHVhbCBwbHVnaW4uIFRoYXQncyBub3QKCSAgeWV0IGltcGxlbWVudGVkLgoKMjAwNS0xMC0wNCAxMTowOTo0MSArMDAwMCAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQG1vdXR0ZS5uZXQ+CgoJICBnc3QvZ3N0YnVzLmM6IFdlIGRvbid0IG5lZWQgdGhpcyBoZWFkZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTA0ICBKdWxpZW4gTU9VVFRFICA8anVsaWVuQG1vdXR0ZS5uZXQ+CgkgICogZ3N0L2dzdGJ1cy5jOiBXZSBkb24ndCBuZWVkIHRoaXMgaGVhZGVyLgoKMjAwNS0xMC0wMyAxNzo1NzozMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBoZWFkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIGhlYWQKCj09PSByZWxlYXNlIDAuOS4zID09PQoKMjAwNS0xMC0wMyAxNzo0NzoyMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFQURNRToKCSogY29uZmlndXJlLmFjOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIHJlbGVhc2UgdGltZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVsZWFzZSB0aW1lCgoyMDA1LTEwLTAyIDIzOjI0OjI1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCk6IFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gd2hlcmVieSBjYWxsaW5nIGEgcGFkJ3MgYWN0aXZhdGVwdXNoKCkgZnVuY3Rpb24gY2FuIHMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDMgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2FjdGl2YXRlX3B1c2gpOiBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uCgkgIHdoZXJlYnkgY2FsbGluZyBhIHBhZCdzIGFjdGl2YXRlcHVzaCgpIGZ1bmN0aW9uIGNhbiBzdGFydCBhIHRocmVhZAoJICB0aGF0IHN0YXJ0cyB0byBwdXNoIG9yIHB1bGwgYmVmb3JlIHRoZSBwYWQgZ2V0cyB0aGUgRkxVU0hJTkcgZmxhZwoJICB1bnNldC4gSGFjayBhcm91bmQgaXQgYnkgaG9sZGluZyB0aGUgc3RyZWFtIGxvY2sgdW50aWwgdGhlIGZsYWcgaXMKCSAgc2V0LiBOZWVkIHRvIHJlcGxhY2UgdGhpcyB3aXRoIGEgcHJvcGVyIHNvbHV0aW9uLiBUb2dldGhlciB3aXRoCgkgIHRoZSBnaG9zdCBwYWQgZml4ZXMsIHRoaXMgZml4ZXMgbXAzIHBsYXlpbmcvdGFncmVhZGluZy4KCjIwMDUtMTAtMDIgMjM6MjE6MDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgY2hhbmdlbG9nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjaGFuZ2Vsb2cKCjIwMDUtMTAtMDIgMjM6MjA6MjYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtZ3N0Z2hvc3RwYWQudHh0OiBBZGQgYSBub3RlIGFib3V0IGFjdGl2YXRpb24gb2YgcHJveHkgcGFkcyBvdXRzaWRlIG9mIGdob3N0IHBhZHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTEwLTAzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0Z2hvc3RwYWQudHh0OiBBZGQgYSBub3RlIGFib3V0IGFjdGl2YXRpb24gb2YKCSAgcHJveHkgcGFkcyBvdXRzaWRlIG9mIGdob3N0IHBhZHMuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IEltcGxlbWVudCB0aGUgZ2hvc3QgcGFkIGFjdGl2YXRpb24gZGVzaWduLgoKMjAwNS0xMC0wMiAxODo1NzowNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdG9iamVjdC5oIChHU1RfT0JKRUNUX1JFRkNPVU5UX1ZBTFVFKTogSnVzdCB1c2UgdGhlIGludC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMTAtMDIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdG9iamVjdC5oIChHU1RfT0JKRUNUX1JFRkNPVU5UX1ZBTFVFKTogSnVzdCB1c2UgdGhlIGludC4KCSAgSXQgaXMgdm9sYXRpbGUsIGFmdGVyIGFsbC4KCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGdob3N0cGFkLnR4dDogRmxlc2ggb3V0IGFjdGl2YXRpb24gd2l0aAoJICBnaG9zdCBwYWRzLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoZ3N0X2Jhc2Vfc3JjX2luaXQpOiBVc2UKCSAgR1NUX0RFQlVHX0ZVTkNQVFIuCgoyMDA1LTEwLTAyIDE4OjMwOjI3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgY29uZmlndXJlLmFjOiBGaXggKHVudXNlZCkgQU1fQ09ORElUSU9OQUwgdGVzdHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgRml4ICh1bnVzZWQpIEFNX0NPTkRJVElPTkFMIHRlc3RzLgoKMjAwNS0xMC0wMSAxNzoxMTowNyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R1dGlscy5jOiBBZGQgYXNzZXJ0aW9uIHRoYXQgbWFrZXMgc3VyZSBzcmNfdmFsIGlzID49MCwganVzdCBsaWtlIGdzdF9xdWVyeV9uZXdfY29udmVydCgpIGhhcy4gKCMzMTU4OTUpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXZpZXdlZCBieTogVGltLVBoaWxpcHAgTcO8bGxlciAgPHRpbSBhdCBjZW50cmljdWxhciBkb3QgbmV0PgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3BhZF9xdWVyeV9jb252ZXJ0KToKCSAgQWRkIGFzc2VydGlvbiB0aGF0IG1ha2VzIHN1cmUgc3JjX3ZhbCBpcyA+PTAsIGp1c3QgbGlrZQoJICBnc3RfcXVlcnlfbmV3X2NvbnZlcnQoKSBoYXMuICgjMzE1ODk1KQoKMjAwNS0wOS0zMCAxNTo0MzowMyArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzogTGV0J3Mgbm90IGl0ZXJhdGUgcGFkcyB3ZSdyZSBub3QgaW50ZXJlc3RlZCBpbiwgaXQgYXZvaWRzIGdldHRpbmcgc2t5LWhpZ2ggcmVmY291bnRzIG9uIHNpbmtwYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzogKGdzdF90ZWVfZG9fcHVzaCksIChnc3RfdGVlX2hhbmRsZV9idWZmZXIpOgoJICBMZXQncyBub3QgaXRlcmF0ZSBwYWRzIHdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluLCBpdCBhdm9pZHMgZ2V0dGluZwoJICBza3ktaGlnaCByZWZjb3VudHMgb24gc2lua3BhZC4KCjIwMDUtMDktMzAgMDg6Mjk6MDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5jOiBTbWFsbCB0d2VhaywgZWxlbWVudCBpbiBBU1lOQyByZW1haW5zIEFTWU5DLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKSwKCSAgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIFNtYWxsIHR3ZWFrLCBlbGVtZW50IGluIEFTWU5DIHJlbWFpbnMgQVNZTkMuCgoyMDA1LTA5LTMwIDA4OjAwOjEyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogT25seSBlcnJvciBpcyBhbiBlcnJvci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgT25seSBlcnJvciBpcyBhbiBlcnJvci4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NoYW5nZV9zdGF0ZSk6CgkgIEJldHRlciBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLCAoZ3N0X3BhZF9jaGFpbik6CgkgIEFsc28gY2FsbCBwYWRfYmxvY2sgaW4gcGFkIGFsbG9jLgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2Zsb3dfZ2V0X25hbWUpOgoJICBCZXR0ZXIgZGVidWdnaW5nLgoKMjAwNS0wOS0yOSAyMDoyNjoxMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogRml4IGRvY3VtZW50YXRpb24gdHlwb3MuIEFkZCBzb21lIG1vcmUgZGVidWcgaW5mby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2dldF9yYW5nZSk6CgkgIEZpeCBkb2N1bWVudGF0aW9uIHR5cG9zLiBBZGQgc29tZSBtb3JlIGRlYnVnIGluZm8uCgoyMDA1LTA5LTI5IDIwOjE2OjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgZGlzYWJsZSByZWZjb3VudCBjaGVja3MgdW50aWwgd2UgdHJhY2sgdGhlIGRhbmdsaW5nIHJlZgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGlzYWJsZSByZWZjb3VudCBjaGVja3MgdW50aWwgd2UgdHJhY2sgdGhlIGRhbmdsaW5nIHJlZgoKMjAwNS0wOS0yOSAxOTo0NToyNyArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IE1ha2Ugc29tZSBlcnJvciBtZXNzYWdlcyBtb3JlIGVuZC11c2VyIGZyaWVuZGx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6IE1ha2Ugc29tZSBlcnJvciBtZXNzYWdlcwoJICBtb3JlIGVuZC11c2VyIGZyaWVuZGx5LgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChtYWluKTogQ2hlY2sgaWYgY29tbWFuZC1saW5lIGFyZ3VtZW50IGlzCgkgIGEgZmlsZSBhbmQgYXR0ZW1wdCB0byBsb2FkIHRoYXQgZmlsZSBhcyBhIHBsdWdpbi4KCjIwMDUtMDktMjkgMTg6Mzc6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svOiBmaXggdGVzdHMgZm9yIHRoZSBuZXcgd2FybmluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6CgkgICogY2hlY2svc3RhdGVzL3NpbmtzLmM6CgkgIGZpeCB0ZXN0cyBmb3IgdGhlIG5ldyB3YXJuaW5nCgkgICogY2hlY2svZ3N0L2dzdHBpcGVsaW5lLmM6CgkgIGFkZCBhIHRlc3QgZm9yIHBpcGVsaW5lIGFuZCBidXMgaW50ZXJhY3Rpb24KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBlbGVtZW50cyBzaG91bGQgYmUgTlVMTCBpZiB0aGV5IGdldCBkaXNwb3NlZDsgYWRkIGEgd2FybmluZyBpZiBub3QKCjIwMDUtMDktMjkgMTg6MzU6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdG9iamVjdC5jOiBmb3IgMi42IHJlZmNvdW50aW5nLCBtYWtlIGRlYnVnIGxvZyBtb3JlIGNvcnJlY3QgYnkgcHJpbnRpbmcgdGhlIGFjdHVhbCByZWZjb3VudHMgYXQgdGhlIHRpbWUgb2Ygc3dhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RvYmplY3QuYzoKCSAgZm9yIDIuNiByZWZjb3VudGluZywgbWFrZSBkZWJ1ZyBsb2cgbW9yZSBjb3JyZWN0IGJ5IHByaW50aW5nCgkgIHRoZSBhY3R1YWwgcmVmY291bnRzIGF0IHRoZSB0aW1lIG9mIHN3YXAgKFdpbSkKCjIwMDUtMDktMjkgMTg6MjU6NTAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RidXMuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgdXNlIG1lc3NhZ2UgdHlwZSBuYW1lcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXNlIG1lc3NhZ2UgdHlwZSBuYW1lcwoKMjAwNS0wOS0yOSAxNjowNjoxOCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogQ2hhbmdlTG9nOgoJICBjaGFuZ2Vsb2cKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNoYW5nZWxvZwoKMjAwNS0wOS0yOSAxNjowNDozMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGJ1cy5jIChnc3RfYnVzX3JlbW92ZV9zaWduYWxfd2F0Y2gpOiBOZXcgZnVuY3Rpb24sIHJlbW92ZXMgc2lnbmFsIHdhdGNoZXMgcHJldmlvdXNseSBhZGRlZCB2aWEgZ3N0X2J1c19hZGRfc2lnLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA5LTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RidXMuYyAoZ3N0X2J1c19yZW1vdmVfc2lnbmFsX3dhdGNoKTogTmV3IGZ1bmN0aW9uLAoJICByZW1vdmVzIHNpZ25hbCB3YXRjaGVzIHByZXZpb3VzbHkgYWRkZWQgdmlhCgkgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaC4KCSAgKGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaCk6IERvbid0IHJldHVybiB0aGUgc291cmNlIGlkLCBqdXN0IHN0b3JlCgkgIGl0IG9uIHRoZSBidXMgaWYgdGhlcmUgd2Fzbid0IGFuIGlkIGFscmVhZHkuCgkgICogZ3N0L2dzdGJ1cy5oIChHc3RCdXMpOiBBZGQgYSBjb3VwbGUgbmV3IGZpZWxkcy4gQVBJIGNoYW5nZXMgZm9yCgkgIGFkZF9zaWduYWxfd2F0Y2ggYW5kIHJlbW92ZV9zaWduYWxfd2F0Y2guCgoyMDA1LTA5LTI5IDE1OjM5OjIyICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IEJldHRlciBpZiB3ZSBhY3R1YWxseSBpdGVyYXRlIHRoZSBsaXN0IDopCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfbmV3X2xpc3QpOgoJICBCZXR0ZXIgaWYgd2UgYWN0dWFsbHkgaXRlcmF0ZSB0aGUgbGlzdCA6KQoKMjAwNS0wOS0yOSAxMzowNzozNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RiaW4uYzogQ2hhbmdlIGZvciBuZXcgYnVzIEFQSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBDaGFuZ2UgZm9yIG5ldyBidXMgQVBJLgoJICAqIGNoZWNrL2dzdC9nc3RidXMuYzogKG1lc3NhZ2VfZnVuY19lb3MpLCAobWVzc2FnZV9mdW5jX2FwcCksCgkgIChzZW5kX21lc3NhZ2VzKSwgKEdTVF9TVEFSVF9URVNUKSwgKGdzdGJ1c19zdWl0ZSk6CgkgIENoYW5nZSBmb3IgbmV3IGJ1cyBzaWduYWwgQVBJLgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfY2xhc3NfaW5pdCksIChnc3RfYnVzX2hhdmVfcGVuZGluZyksCgkgIChnc3RfYnVzX3NvdXJjZV9wcmVwYXJlKSwgKGdzdF9idXNfc291cmNlX2NoZWNrKSwKCSAgKGdzdF9idXNfY3JlYXRlX3dhdGNoKSwgKGdzdF9idXNfYWRkX3dhdGNoX2Z1bGwpLAoJICAoZ3N0X2J1c19hZGRfd2F0Y2gpLCAoZ3N0X2J1c19wb2xsKSwgKGdzdF9idXNfYXN5bmNfc2lnbmFsX2Z1bmMpLAoJICAoZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyKSwgKGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaCk6CgkgICogZ3N0L2dzdGJ1cy5oOgoJICBSZW1vdmUgc3VwcG9ydCBmb3IgbXVsdGlwbGUgR1NvdXJjZXMgb3BlcmF0aW5nIG9uIGRpZmZlcmVudAoJICBtZXNzYWdlIHR5cGVzIGFzIGl0IGlzIHRvbyBjb21wbGV4IGFuZCB1bm5lZWRlZCB3aGVuIHVzaW5nCgkgIHNpZ25hbHMuCgkgIEFkZGVkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBzaWduYWxzIGZyb20gdGhlIGJ1cy4KCjIwMDUtMDktMjkgMTI6Mzc6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcmVuYW1lIGZpbHRlci1jYXBzIHRvIGNhcHMgcHJvcGVydHkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZGF0YWFjY2Vzcy54bWw6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgcmVuYW1lIGZpbHRlci1jYXBzIHRvIGNhcHMgcHJvcGVydHkKCjIwMDUtMDktMjkgMTI6MDU6NTEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0dmFsdWUuYzogTW9yZSByb2J1c3QgZnJhY3Rpb24gc3RyaW5nIHBhcnNpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ZyYWN0aW9uKToKCSAgTW9yZSByb2J1c3QgZnJhY3Rpb24gc3RyaW5nIHBhcnNpbmcuCgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgIE1lbnRpb24gZ3N0X3BhZF91c2VfZXhwbGljaXRfY2FwcygpID0+IGdzdF9wYWRfdXNlX2ZpeGVkX2NhcHMoKQoKMjAwNS0wOS0yOSAxMDo1Njo1NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3RjYXBzLmM6IFRob3Ugc2hhbHQgbm90IGZyZWUgYSBzdHJ1Y3R1cmUgYW5kIHRoZW4gY29udGludWUgdXNpbmcgaXQgaW4gdGhlIG5leHQgbG9vcCBpdGVyYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc19kb19zaW1wbGlmeSk6CgkgIFRob3Ugc2hhbHQgbm90IGZyZWUgYSBzdHJ1Y3R1cmUgYW5kIHRoZW4gY29udGludWUgdXNpbmcgaXQKCSAgaW4gdGhlIG5leHQgbG9vcCBpdGVyYXRpb24uCgkgICogY2hlY2svZ3N0L2dzdGNhcHMuYzogKGNoZWNrX2ZvdXJjY19saXN0KSwgKHRlc3Rfc2ltcGxpZnkpLAoJICAoZ3N0X2NhcHNfc3VpdGUpOgoJICBBZGQgdGVzdCBjYXNlIGZvciBjYXBzIHNpbXBsaWZpY2F0aW9uLgoKMjAwNS0wOS0yOSAwOTo0NDozNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICByZW1vdmUgdHdvIHJlbW92ZWQgZnVuY3Rpb25zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgdHdvIHJlbW92ZWQgZnVuY3Rpb25zCgoyMDA1LTA5LTI5IDA5OjQyOjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBPb3BzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIE9vcHMuCgoyMDA1LTA5LTI5IDA5OjM5OjM2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBBZGQgYnVzIHRvIGJpbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBBZGQgYnVzIHRvIGJpbi4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpLCAoZ3N0X2Jpbl9pbml0KSwKCSAgKGFkZF90b19xdWV1ZSksIChjbGVhcl9xdWV1ZSksIChyZXNldF9kZWdyZWUpLCAodXBkYXRlX2RlZ3JlZSksCgkgIChmaW5kX2VsZW1lbnQpLCAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25leHQpLAoJICAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX3Jlc3luYyksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfZnJlZSksCgkgIChnc3RfYmluX2l0ZXJhdGVfc29ydGVkKSwgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpLCAoZ3N0X2Jpbl9kaXNwb3NlKToKCSAgQSBiaW4gZG9lcyBub3QgaGF2ZSBhIGJ1cywgaXQgZ2V0cyB0aGUgYnVzIGZyb20gdGhlIHBhcmVudC4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcmVxdWlyZXNfY2xvY2spLAoJICAoZ3N0X2VsZW1lbnRfcHJvdmlkZXNfY2xvY2spLCAoZ3N0X2VsZW1lbnRfaXNfaW5kZXhhYmxlKSwKCSAgKGdzdF9lbGVtZW50X2lzX2xvY2tlZF9zdGF0ZSksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X2J1c19mdW5jKToKCSAgU21hbGwgY2xlYW51cHMuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfY2xhc3NfaW5pdCksCgkgIChnc3RfcGlwZWxpbmVfaW5pdCksIChnc3RfcGlwZWxpbmVfcHJvdmlkZV9jbG9ja19mdW5jKToKCSAgVGhlIHBpcGVsaW5lIHByb3ZpZGVzIGEgYnVzLgoKMjAwNS0wOS0yOSAwMjozMjozNyArMDAwMCAgSm9oYW4gRGFobGluIDxqb2hhbkBnbm9tZS5vcmc+CgoJICBnc3QvZ3N0bWVzc2FnZS5jIChnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFuZ2VkKTogVXNlIGdzdF9zdHJ1Y3R1cmVfZ2V0X2VudW0gaW5zdGVhZCBvZiBnc3Rfc3RydWN0dXJlX2dldF9pbnQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYyAoZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCk6IFVzZQoJICBnc3Rfc3RydWN0dXJlX2dldF9lbnVtIGluc3RlYWQgb2YgZ3N0X3N0cnVjdHVyZV9nZXRfaW50CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jIChnc3Rfc3RydWN0dXJlX2dldF9lbnVtKTogSW1wbC4KCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmggKGdzdF9zdHJ1Y3R1cmVfZ2V0X2VudW0pOiBBZGQKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBEaXR0bwoKMjAwNS0wOS0yOSAwMTo1NzowMCArMDAwMCAgSm9oYW4gRGFobGluIDxqb2hhbkBnbm9tZS5vcmc+CgoJICBnc3QvZ3N0bWVzc2FnZS5jIChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCk6IFVzZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jIChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCk6IFVzZQoJICBHU1RfVFlQRV9TVEFURSBpbnN0ZWFkIG9mIEdfVFlQRV9JTlQsIG1haW5seSBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MKCSAgd2hpY2ggZG9lcyBpbnRyb3NwZWN0aW9uLgoJICBSZXZpZXdlZCBieSBDaHJpc3RpYW4gU2NoYWxsZXIKCjIwMDUtMDktMjggMTg6MTQ6MTMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSAgZml4ZWQgdW1sYXV0cyBpbiBDaGFuZ2VMb2cgYWdhaW4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeGVkIHVtbGF1dHMgaW4gQ2hhbmdlTG9nIGFnYWluCgoyMDA1LTA5LTI4IDE3OjMwOjEzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0aW5mby5jOiBkb24ndCBkbyBkdW1teSBnX3N0cmR1cCgpcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aW5mby5jOiAoZ3N0X2RlYnVnX2xvZ19kZWZhdWx0KToKCSAgZG9uJ3QgZG8gZHVtbXkgZ19zdHJkdXAoKXMKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKG9uX29iamVjdF9jb250cm9sbGVkX3Byb3BlcnR5X2NoYW5nZWQpLAoJICAoZ3N0X2NvbnRyb2xsZWRfcHJvcGVydHlfbmV3KSwgKGdzdF9jb250cm9sbGVyX25ld192YWxpc3QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfbmV3X2xpc3QpLAoJICAoZ3N0X2NvbnRyb2xsZXJfcmVtb3ZlX3Byb3BlcnRpZXNfdmFsaXN0KSwgKGdzdF9jb250cm9sbGVyX3NldCksCgkgIChnc3RfY29udHJvbGxlcl9nZXQpLCAoZ3N0X2NvbnRyb2xsZXJfc3luY192YWx1ZXMpLAoJICAoZ3N0X2NvbnRyb2xsZXJfZ2V0X3ZhbHVlX2FycmF5KSwgKF9nc3RfY29udHJvbGxlcl9jbGFzc19pbml0KSwKCSAgKGdzdF9jb250cm9sbGVyX2dldF90eXBlKToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X2ZpbmRfdGltZWRfdmFsdWVfbm9kZSk6CgkgIGNvbnZlcnQgLy8gdG8gLyoqLyBjb21tZW50cwoKMjAwNS0wOS0yOCAxNjo0MzoyMCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidXMuKjogQWRkZWQgYXN5bmMtbWVzc2FnZSBhbmQgc3luYy1tZXNzYWdlIHNpZ25hbHMgdG8gdGhlIGJ1cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAobWFyc2hhbF9WT0lEX19NSU5JT0JKRUNUKSwgKGdzdF9idXNfY2xhc3NfaW5pdCksCgkgIChnc3RfYnVzX3Bvc3QpLCAocG9sbF9mdW5jKSwgKGdzdF9idXNfYXN5bmNfc2lnbmFsX2Z1bmMpLAoJICAoZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyKToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgIEFkZGVkIGFzeW5jLW1lc3NhZ2UgYW5kIHN5bmMtbWVzc2FnZSBzaWduYWxzIHRvIHRoZSBidXMuCgkgIEFkZGVkIGhlbHBlciBCdXNGdW5jIHRvIGVtaXQgc2lnbmFscyBmb3IgYWxsIHBvc3RlZCBtZXNzYWdlcy4KCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfdHlwZV9nZXRfbmFtZSksCgkgIChnc3RfbWVzc2FnZV90eXBlX3RvX3F1YXJrKSwgKGdzdF9tZXNzYWdlX2dldF90eXBlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBSZWdpc3RlciBxdWFya3MgZm9yIG1lc3NhZ2UgbmFtZXMuCgoyMDA1LTA5LTI4IDE2OjM5OjI5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBhZGRlZCBhbm90aGVyIGNvbnN0cnVjdG9yIGZvciBsYW5ndWFnZSBiaW5kaW5ncwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfbmV3X3ZhbGlzdCksCgkgIChnc3RfY29udHJvbGxlcl9uZXdfbGlzdCk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkgIGFkZGVkIGFub3RoZXIgY29uc3RydWN0b3IgZm9yIGxhbmd1YWdlIGJpbmRpbmdzCgoyMDA1LTA5LTI4IDE1OjQ1OjIxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiBhZGQgYW5vdGhlciBjaGVjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9waXBlbGluZV9zdWl0ZSk6CgkgIGFkZCBhbm90aGVyIGNoZWNrCgkgICogZ3N0L2dzdGJ1cy5jOgoJICBhZGQgc29tZSBkb2MKCSAgKiBnc3QvZ3N0aW5mby5jOiAoX2dzdF9kZWJ1Z19pbml0KToKCSAgc2xpZ2h0bHkgbW9yZSByZWFkYWJsZSBjb2xvciBmb3IgcmVmY291bnQgZGVidWdnaW5nCgoyMDA1LTA5LTI4IDEzOjQxOjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBTbWFsbCBkb2MgZml4ZXMuIGdldF9jbG9jayAtPiBwcm92aWRlX2Nsb2NrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpLCAoZ3N0X2Jpbl9wcm92aWRlX2Nsb2NrX2Z1bmMpLAoJICAoYWRkX3RvX3F1ZXVlKSwgKGNsZWFyX3F1ZXVlKSwgKHJlc2V0X2RlZ3JlZSksICh1cGRhdGVfZGVncmVlKSwKCSAgKGZpbmRfZWxlbWVudCksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksCgkgIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfcmVzeW5jKSwgKGdzdF9iaW5fc29ydF9pdGVyYXRvcl9mcmVlKSwKCSAgKGdzdF9iaW5faXRlcmF0ZV9zb3J0ZWQpLCAoZ3N0X2Jpbl9lbGVtZW50X3NldF9zdGF0ZSksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZSksIChnc3RfYmluX2Rpc3Bvc2UpOgoJICBTbWFsbCBkb2MgZml4ZXMuIGdldF9jbG9jayAtPiBwcm92aWRlX2Nsb2NrLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X3Byb3ZpZGVzX2Nsb2NrKSwgKGdzdF9lbGVtZW50X3Byb3ZpZGVfY2xvY2spLAoJICAoZ3N0X2VsZW1lbnRfZ2V0X2Nsb2NrKSwgKGdzdF9lbGVtZW50X2NvbW1pdF9zdGF0ZSksCgkgIChnc3RfZWxlbWVudF9sb3N0X3N0YXRlKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBNYWtlIGdldC9zZXRfY2xvY2soKSBzeW1ldHJpYy4gQWRkIHByb3ZpZGVfY2xvY2sgdm1ldGhvZCBzaW5jZQoJICB0aGF0IGlzIGFjdHVhbGx5IHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzLgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX2NsYXNzX2luaXQpLAoJICAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSksIChnc3RfcGlwZWxpbmVfcHJvdmlkZV9jbG9ja19mdW5jKSwKCSAgKGdzdF9waXBlbGluZV9nZXRfY2xvY2spOgoJICBnZXRfY2xvY2sgLT4gcHJvdmlkZV9jbG9jay4KCjIwMDUtMDktMjggMTM6MDU6MTIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoZ3N0X2Jhc2Vfc3JjX3VubG9jayk6IENvbW1lbnQgYSBiaXQgaW4gbGlldSBvZiByZWFsIGRvY3MuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfdW5sb2NrKTogQ29tbWVudCBhIGJpdCBpbgoJICBsaWV1IG9mIHJlYWwgZG9jcy4uLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOiBDbGVhbmVkIHVwIGEgYml0LgoKMjAwNS0wOS0yOCAxMjo1Mjo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9lbGVtZW50cy86IE1ha2UgZWxlbWVudCBkZXRhaWxzIHN0YXRpYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNpbmsuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIE1ha2UgZWxlbWVudCBkZXRhaWxzIHN0YXRpYy4KCjIwMDUtMDktMjggMTE6MDM6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFNvbWUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChhZGRfdG9fcXVldWUpLCAoY2xlYXJfcXVldWUpLCAocmVzZXRfb3V0ZGVncmVlKSwKCSAgKHVwZGF0ZV9vdXRkZWdyZWUpLCAoZmluZF9lbGVtZW50KSwgKGdzdF9iaW5fc29ydF9pdGVyYXRvcl9uZXh0KSwKCSAgKGdzdF9iaW5fc29ydF9pdGVyYXRvcl9yZXN5bmMpLCAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX2ZyZWUpLAoJICAoZ3N0X2Jpbl9pdGVyYXRlX3NvcnRlZCksIChnc3RfYmluX2VsZW1lbnRfc2V0X3N0YXRlKSwKCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlKSwgKGdzdF9iaW5fZGlzcG9zZSk6CgkgIFNvbWUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBDbGVhbiB1cCBkaXNwb3NlIGhhbmRsZXJzLgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfcmVmKSwgKGdzdF9vYmplY3RfdW5yZWYpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZGlzcG9zZSk6CgkgIENsZWFuIHVwIGRpc3Bvc2UgaGFuZGxlci4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICBSZW1vdmVkIHNwdXJpb3VzIFVOTE9DSy4KCjIwMDUtMDktMjcgMjA6NDA6MzUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGFkZGVkIHR3byBuZXcgZnVuY3Rpb25zIHRvIHRoZSBkb2NzIGRvY3VtZW50cyBhbGwgdW5kb2N1bWVudGVkIEdzdFhYWEZsYWdzIGNvbXBsZXRlZCBzb21lIGluY29tcGxldGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmg6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogZ3N0L2dzdHhtbC5oOgoJICBhZGRlZCB0d28gbmV3IGZ1bmN0aW9ucyB0byB0aGUgZG9jcwoJICBkb2N1bWVudHMgYWxsIHVuZG9jdW1lbnRlZCBHc3RYWFhGbGFncwoJICBjb21wbGV0ZWQgc29tZSBpbmNvbXBsZXRlIGRvY3MKCjIwMDUtMDktMjcgMTg6MzM6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogcmVtb3ZlIG5vdyB1c2VsZXNzIGFuZCBsZWFreSByZXN1cnJlY3Rpb24gY29kZSBpbiBkaXNwb3NlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fZGlzcG9zZSk6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2Rpc3Bvc2UpOgoJICByZW1vdmUgbm93IHVzZWxlc3MgYW5kIGxlYWt5IHJlc3VycmVjdGlvbiBjb2RlIGluIGRpc3Bvc2UKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfaW5pdCk6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9mYWN0b3J5X2NyZWF0ZSk6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9zZXRfcGFyZW50KToKCSAgYWRkIHNvbWUgZGVidWdnaW5nCgoyMDA1LTA5LTI3IDE3OjAwOjEzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDogVXBkYXRlIFRPRE8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgIFVwZGF0ZSBUT0RPLgoJICAqIGdzdC9nc3RiaW4uYzogKGFkZF90b19xdWV1ZSksIChjbGVhcl9xdWV1ZSksIChyZXNldF9vdXRkZWdyZWUpLAoJICAodXBkYXRlX291dGRlZ3JlZSksIChmaW5kX2VsZW1lbnQpLCAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX25leHQpLAoJICAoZ3N0X2Jpbl9zb3J0X2l0ZXJhdG9yX3Jlc3luYyksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfZnJlZSksCgkgIChnc3RfYmluX2l0ZXJhdGVfc29ydGVkKSwgKGdzdF9iaW5fZWxlbWVudF9zZXRfc3RhdGUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIFJlbW92ZSBlbGVtZW50IHZhcmlhYmxlLCB3ZSBrZWVwIGVsZW1lbnQgaW5mbyBpbiB0aGUgaXRlcmF0b3Igbm93LgoKMjAwNS0wOS0yNyAxNjozMDoyNiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBGaXggZXJyb3ItY2hlY2tpbmcgcmV0dXJuIHZhbHVlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOiBGaXggZXJyb3ItY2hlY2tpbmcgcmV0dXJuCgkgIHZhbHVlcy4KCjIwMDUtMDktMjcgMTY6MTY6MzkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9nc3QvZ3N0YmluLmM6IEVuYWJsZSBjaGVjayB0aGF0IHdvcmtzIG5vdy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBFbmFibGUgY2hlY2sgdGhhdCB3b3JrcyBub3cuCgkgICogZ3N0L2dzdGJpbi5jOiAoYWRkX3RvX3F1ZXVlKSwgKGNsZWFyX3F1ZXVlKSwgKHJlc2V0X291dGRlZ3JlZSksCgkgICh1cGRhdGVfb3V0ZGVncmVlKSwgKGZpbmRfZWxlbWVudCksIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfbmV4dCksCgkgIChnc3RfYmluX3NvcnRfaXRlcmF0b3JfcmVzeW5jKSwgKGdzdF9iaW5fc29ydF9pdGVyYXRvcl9mcmVlKSwKCSAgKGdzdF9iaW5faXRlcmF0ZV9zb3J0ZWQpLCAoZ3N0X2Jpbl9lbGVtZW50X3NldF9zdGF0ZSksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2dzdGJpbi5oOgoJICBSZWRpZCB0aGUgc3RhdGUgY2hhbmdlIGFsZ29yaXRobSB1c2luZyBhIHRvcG9sb2dpY2FsIHNvcnQgYWxnby4KCSAgSGFuZGxlcyBhbGwgY2FzZXMgY29ycmVjdGx5LgoJICBFeHBvc2VkIGl0ZXJhdG9yIGZvciBzdGF0ZSBjaGFuZ2Ugb3JkZXIuCgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgVGVtcCBzdG9yYWdlIGZvciBzdGF0ZSBjaGFuZ2VzLiBOZWVkIHRvIGdldCByaWQgb2YgdGhpcyBzb29uLgoKMjAwNS0wOS0yNyAxNTozNzo0MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IExlYWsgZml4ZXMsIHRoZSBmb2xkIGZ1bmN0aW9ucyBuZWVkIHRvIHVucmVmIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCBfZ2V0X3BhcmVudF8qKCkgcmV0dXJucyByZWYgdG8gcGFyZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2luaXQpLCAoZ3N0X3RlZV9kb19wdXNoKToKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGludGVyc2VjdF9jYXBzX2Z1bmMpLCAoZ3N0X3BhZF9wcm94eV9nZXRjYXBzKSwKCSAgKGxpbmtfZm9sZF9mdW5jKSwgKGdzdF9wYWRfcHJveHlfc2V0Y2Fwcyk6CgkgIExlYWsgZml4ZXMsIHRoZSBmb2xkIGZ1bmN0aW9ucyBuZWVkIHRvIHVucmVmIHRoZSBwYXNzZWQgb2JqZWN0IGFuZAoJICBfZ2V0X3BhcmVudF8qKCkgcmV0dXJucyByZWYgdG8gcGFyZW50LgoKMjAwNS0wOS0yNyAxMzoyNToxOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGNoZWNrL2dzdC9nc3RidWZmZXIuYzogUGx1ZyBsZWFrIGluIHRlc3QgY2FzZSBhbmQgZml4ICdtYWtlIGNoZWNrLXZhbGdyaW5kJwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YnVmZmVyLmM6ICh0ZXN0X21ha2Vfd3JpdGFibGUpOgoJICBQbHVnIGxlYWsgaW4gdGVzdCBjYXNlIGFuZCBmaXggJ21ha2UgY2hlY2stdmFsZ3JpbmQnCgoyMDA1LTA5LTI3IDEzOjA3OjE0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBTZXQgUkVBRE9OTFkgZmxhZyBvbiBzdWJidWZmZXJzLCBzbyB0aGF0IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSgpIHdvcmtzIGNvcnJlY3RseSBpbiBhbGwgY2lyY3Vtc3RhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9zdWJidWZmZXJfaW5pdCk6CgkgIFNldCBSRUFET05MWSBmbGFnIG9uIHN1YmJ1ZmZlcnMsIHNvIHRoYXQgZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlKCkKCSAgd29ya3MgY29ycmVjdGx5IGluIGFsbCBjaXJjdW1zdGFuY2VzICh3ZSBjb3VsZCBoYXZlIGp1c3QgY29waWVkCgkgIHRoZSBwYXJlbnQgYnVmZmVyJ3MgcmVhZG9ubHkgZmxhZywgYnV0IGNvbmNlcHR1YWxseSBpdCBzZWVtcwoJICBjbGVhbmVyIHRvIG1hcmsgYWxsIHN1YmJ1ZmZlcnMgYXMgcmVhZC1vbmx5KS4gKGJhc2VkIG9uIHBhdGNoCgkgIGJ5IEFsZXNzYW5kcm8gRGVjaW5hLCAjMzE0NzEwKS4KCSAgKiBjaGVjay9nc3QvZ3N0YnVmZmVyLmM6IChjcmVhdGVfcmVhZF9vbmx5X2J1ZmZlciksCgkgICh0ZXN0X21ha2Vfd3JpdGFibGUpLCAodGVzdF9zdWJidWZmZXJfbWFrZV93cml0YWJsZSksCgkgIChnc3RfdGVzdF9zdWl0ZSk6CgkgIEFkZCBzb21lIHRlc3RzIGZvciBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUoKS4KCjIwMDUtMDktMjcgMDk6NTc6MjAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IHVzZSBnc3Rfb2JqZWN0X2hhc19hbmNlc3RvcigpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fZWxlbWVudF9pc19zZW1pX3NpbmspLCAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICB1c2UgZ3N0X29iamVjdF9oYXNfYW5jZXN0b3IoKS4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2hhc19hbmNlc3Rvcik6CgkgICogZ3N0L2dzdG9iamVjdC5oOgoJICBnc3Rfb2JqZWN0X2hhc19hbmNlc3RvcigpIGNvcGllZCBmcm9tIGdzdGJpbi5jIGFzIGl0IGlzIGEKCSAgdXNlZnVsbCBmdW5jdGlvbi4KCSAgKiB0ZXN0cy9pbnN0YW50aWF0ZS9jcmVhdGUuYzogKGNyZWF0ZV9hbGxfZWxlbWVudHMpOgoJICAqIHRlc3RzL2xhdC5jOiAoaGFuZG9mZl9zcmMpLCAoaGFuZG9mZl9zaW5rKToKCSAgKiB0ZXN0cy9zY2hlZC9ydW54bWwuYzogKG1haW4pOgoJICAqIHRlc3RzL3NlZWtpbmcvc2Vla2luZzEuYzogKG1haW4pOgoJICAqIHRlc3RzL3RocmVhZHN0YXRlL3RocmVhZHN0YXRlMi5jOiAoYnVzX2hhbmRsZXIpLCAodGltZW91dF9mdW5jKSwKCSAgKG1haW4pOgoJICBGaXggY29tcGlsYXRpb24gb2Ygc29tZSB0ZXN0cy4KCjIwMDUtMDktMjcgMDk6Mjk6MDQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0ZXJyb3IuaDogUmVtb3ZlIGNvbW1lbnQuIEdTVF9UWVBFX0dfRVJST1IgaXMgaGVyZSB0byBzdGF5LAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZXJyb3IuaDoKCSAgUmVtb3ZlIGNvbW1lbnQuIEdTVF9UWVBFX0dfRVJST1IgaXMgaGVyZSB0byBzdGF5LAoJICBHX1RZUEVfRVJST1IgaGFzIGJlZW4gV09OVEZJWCdlZCBieSB0aGUgR0xpYiBmb2xrcwoJICAoIzMxNjk2MSwgIzMwMDYxMCkuCgoyMDA1LTA5LTI2IDE4OjIyOjA3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBBZGRlZCBjaGVjayB0aGF0IHNob3dzIGVycm9yIGluIHN0YXRlIGNoYW5nZSBvcmRlci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2Jpbl9zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrIHRoYXQgc2hvd3MgZXJyb3IgaW4gc3RhdGUgY2hhbmdlIG9yZGVyLgoKMjAwNS0wOS0yNiAxNzo0NjoyNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RiaW4uYzogTWFrZSBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gdXNlIDMgcXVldWVzIGFnYWluLCB3ZSB3ZXJlIGFkZGluZyBlbGVtZW50cyBpbiB0aGUgd3Jvbmcgb3JkZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2hhbmdlX3N0YXRlKToKCSAgTWFrZSBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gdXNlIDMgcXVldWVzIGFnYWluLCB3ZSB3ZXJlCgkgIGFkZGluZyBlbGVtZW50cyBpbiB0aGUgd3Jvbmcgb3JkZXIuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfZ2hvc3RfcGFkX2RvX3VubGluayk6CgkgIFNvbWUgZGVidWcgaW5mbywKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2Rpc3Bvc2UpOgoJICBBZGRlZCBzb21lIGRlYnVnIGluZm8gZmlyc3QuCgoyMDA1LTA5LTI2IDE3OjQwOjM5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZG9jcy9kZXNpZ24vOiBSZXBsYWNlIGFsbCBfcHVsbF9yZWdpb24oKSB3aXRoIF9wdWxsX3JhbmdlKCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtcHVzaC1wdWxsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1vdmVydmlldy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zY2hlZHVsaW5nLnR4dDoKCSAgUmVwbGFjZSBhbGwgX3B1bGxfcmVnaW9uKCkgd2l0aCBfcHVsbF9yYW5nZSgpCgoyMDA1LTA5LTI2IDE2OjE5OjI3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgdHJ5IHRoZSBmb3VydGgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHRyeSB0aGUgZm91cnRoCgoyMDA1LTA5LTI2IDE2OjEyOjA3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgZm9vCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmb28KCjIwMDUtMDktMjYgMTY6MDc6NTQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R2YWx1ZS5jIChfZ3N0X3ZhbHVlX2luaXRpYWxpemUpOiBCZXR0ZXIgZmFrZW91dC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHZhbHVlLmMgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6IEJldHRlciBmYWtlb3V0LgoKMjAwNS0wOS0yNiAxNTo0OToyMyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svZ3N0LWxpYnMvY29udHJvbGxlci5jOiBVcGRhdGUgZm9yIGNvbnRyb2xsZXIgYXBpIGNoYW5nZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY2hlY2svZ3N0LWxpYnMvY29udHJvbGxlci5jOiBVcGRhdGUgZm9yIGNvbnRyb2xsZXIgYXBpIGNoYW5nZS4KCjIwMDUtMDktMjYgMTU6NDM6MzAgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIFJlbW92ZSBtZW1jaHVuayBiZW5jaG1hcmsgc3R1ZmYsIHRoaXMgaXMgdGFrZW4gb3ZlciBieSBHTGliIGJ1ZyAxMTg0MzkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA5LTI2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiB0ZXN0cy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0cy9tZW1jaHVuazogUmVtb3ZlIG1lbWNodW5rIGJlbmNobWFyayBzdHVmZiwgdGhpcyBpcyB0YWtlbgoJICBvdmVyIGJ5IEdMaWIgYnVnIDExODQzOS4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX3dhaXQpOiBGYWN0b3Igb3V0IHRoZSB3YWl0CgkgIHJvdXRpbmVzIHRvIGEgZnVuY3Rpb24uCgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogSSBhbSBhIGdvb2QgcGVyc29uIHRvZGF5LgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmggKGdzdF9jb250cm9sbGVyX3N5bmNfdmFsdWVzKQoJICAoZ3N0X29iamVjdF9zeW5jX3ZhbHVlcyk6IFJlbmFtZWQgZnJvbSBzaW5rX3ZhbHVlcy4gVWdoLgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6IFVwZGF0ZSBmb3IgX19nc3RfY29udHJvbGxlcl9rZXkuCgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmMgKF9fZ3N0X2NvbnRyb2xsZXJfa2V5KToKCSAgUmVuYW1lZCBmcm9tIGNvbnRyb2xsZXJfa2V5LCBhcyBpdCBpcyBleHBvcnRlZC4KCSAgKiBnc3QvZ3N0dmFsdWUuYyAoX2dzdF92YWx1ZV9pbml0aWFsaXplKTogRmFrZSBvdXQgdGhlIGNvbXBpbGVyLgoKMjAwNS0wOS0yNiAxNTowMzo0MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9NYWtlZmlsZS5hbToKCSogZ3N0L2dzdC5oOgoJKiBnc3QvZ3N0cGFkLmg6CgkqIGdzdC9nc3RwYWR0ZW1wbGF0ZS5oOgoJKiBnc3QvZ3N0cXVlcnkuYzoKCSogZ3N0L2dzdHF1ZXJ5Lmg6CgkqIGdzdC9nc3RxdWVyeXV0aWxzLmM6CgkqIGdzdC9nc3RxdWVyeXV0aWxzLmg6CgkgIHJlbW92ZSBxdWVyeXV0aWxzIGhlYWRlcnMgYWZ0ZXIgbW92aW5nIHRoZSB0d28gdXNlZCBmdW5jdGlvbnMgdG8gZ3N0cXVlcnkuICBhbHNvIGZpeGVzIGJ1aWxkIHByb2JsZW0gZm9yIGdzdHNpZGRlYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIHF1ZXJ5dXRpbHMgaGVhZGVycyBhZnRlciBtb3ZpbmcgdGhlIHR3byB1c2VkIGZ1bmN0aW9ucwoJICB0byBnc3RxdWVyeS4gIGFsc28gZml4ZXMgYnVpbGQgcHJvYmxlbSBmb3IgZ3N0c2lkZGVjCgoyMDA1LTA5LTI2IDEzOjQwOjIxICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIHRvb2xzL2dzdC1sYXVuY2guMS5pbjoKCSAgQ29ycmVjdCBzeW50YXggZm9yIGRlYnVnIG9wdGlvbiBpbiBnc3QtbGF1bmNoIG1hbnBhZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIENvcnJlY3Qgc3ludGF4IGZvciBkZWJ1ZyBvcHRpb24gaW4gZ3N0LWxhdW5jaCBtYW5wYWdlCgoyMDA1LTA5LTI2IDExOjIxOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBTb21lIG1vcmUgZGVidWdnaW5nIGluZm8uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2lzX3NlZWthYmxlKSwgKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBTb21lIG1vcmUgZGVidWdnaW5nIGluZm8uCgoyMDA1LTA5LTI1IDE4OjM0OjQ5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBhZGRlZCBtb3JlIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgICogZ3N0L2dzdGluZGV4Lmg6CgkgIGFkZGVkIG1vcmUgZG9jcwoKMjAwNS0wOS0yNSAxMjoxMTozOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgaW5saW5lZCB0aGUgbGFzdCB0d28gZG9jcyBmaWxlcyByZW1vdmVkIHRoZSB0bXBsIGRpcmVjdG9yeSBmcm9tIGN2cyAobm8gbW9yZSBjb25mbGljdHMgaGVyZSEpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0Ly5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0cGlwZWxpbmUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbi5zZ21sOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOgoJICAqIGdzdC9nc3RwbHVnaW4uYzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIGlubGluZWQgdGhlIGxhc3QgdHdvIGRvY3MgZmlsZXMKCSAgcmVtb3ZlZCB0aGUgdG1wbCBkaXJlY3RvcnkgZnJvbSBjdnMgKG5vIG1vcmUgY29uZmxpY3RzIGhlcmUhKQoKMjAwNS0wOS0yNSAxMToxOToyMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgaW5saW5lZCB0d28gbW9yZSBkb2NzIGZhY3RvcmVkIGdzdHBhZHRlbXBsYXRlIG91dCBvZiBnc3RwYWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBhZHRlbXBsYXRlLnNnbWw6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfY2xhc3NfaW5pdCksIChnc3RfcGFkX2Rpc3Bvc2UpLAoJICAoZ3N0X3BhZF9maW5hbGl6ZSksIChnc3RfcGFkX3NldF9wYWRfdGVtcGxhdGUpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuYzogKGdzdF9wYWRfdGVtcGxhdGVfZ2V0X3R5cGUpLAoJICAoZ3N0X3BhZF90ZW1wbGF0ZV9jbGFzc19pbml0KSwgKGdzdF9wYWRfdGVtcGxhdGVfaW5pdCksCgkgIChnc3RfcGFkX3RlbXBsYXRlX2Rpc3Bvc2UpLCAobmFtZV9pc192YWxpZCksCgkgIChnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQpLCAoZ3N0X3BhZF90ZW1wbGF0ZV9uZXcpLAoJICAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMpLCAoZ3N0X3BhZF90ZW1wbGF0ZV9nZXRfY2FwcyksCgkgIChnc3RfcGFkX3RlbXBsYXRlX3BhZF9jcmVhdGVkKToKCSAgKiBnc3QvZ3N0cGFkdGVtcGxhdGUuaDoKCSAgaW5saW5lZCB0d28gbW9yZSBkb2NzCgkgIGZhY3RvcmVkIGdzdHBhZHRlbXBsYXRlIG91dCBvZiBnc3RwYWQKCjIwMDUtMDktMjQgMTQ6MzU6MDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBjaGVjay9nc3QvZ3N0YmluLmM6IEZpeCB0ZXN0IGNhc2U6IHdlIGNhbid0IHJlbHkgb24gYSBmaXhlZCBzdGF0ZSBjaGFuZ2Ugb3JkZXIgd2hlbiBnb2luZyBmcm9tIFJFQURZID0+IFBBVVNFRCBiZWNhdXMuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAodGVzdF9jaGlsZHJlbl9zdGF0ZV9jaGFuZ2Vfb3JkZXJfZmxhZ2dlZF9zaW5rKSwKCSAgKHRlc3RfY2hpbGRyZW5fc3RhdGVfY2hhbmdlX29yZGVyX3NlbWlfc2luayk6CgkgIEZpeCB0ZXN0IGNhc2U6IHdlIGNhbid0IHJlbHkgb24gYSBmaXhlZCBzdGF0ZSBjaGFuZ2Ugb3JkZXIgd2hlbgoJICBnb2luZyBmcm9tIFJFQURZID0+IFBBVVNFRCBiZWNhdXNlIHRoZSBzaW5rIG1pZ2h0IGNvbW1pdCBpdHMKCSAgbmV3IHN0YXRlIGZpcnN0IHdoZW4gdGhlIGZpcnN0IGJ1ZmZlciBjcmVhdGVkIGJ5IHRoZSBzb3VyY2UKCSAgcmVhY2hlcyB0aGUgc2luayBiZWZvcmUgdGhlIHNvdXJjZSBoYXMgZmluaXNoZWQgaXRzIGNoYW5nZSBzdGF0ZS4KCSAgKFRlc3QgY2FzZSBzdGlsbCBmYWlscyBhdCB0aW1lcywgc2VlICMzMTY4NTYsIGNvbW1lbnQgNSBvbndhcmRzKQoKMjAwNS0wOS0yNCAxNDoxNDowMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFZhcmlvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RidXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0cGlwZWxpbmUudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtbWVzc2FnZXMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtc2VnbWVudHMudHh0OgoJICAqIGdzdC9nc3RiaW4uYzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6CgkgICogZ3N0L2dzdGNsb2NrLmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZmlsdGVyLmM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgIFZhcmlvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKMjAwNS0wOS0yNCAxMTo0MTowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0Y2xvY2suaDogV2VsbCwgdGhhdCdzIGVtYmFyYXNzaW5nLiAgTHVja2lseSB3ZSB3ZXJlbid0IHVzaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBXZWxsLCB0aGF0J3MgZW1iYXJhc3NpbmcuICBMdWNraWx5IHdlIHdlcmVuJ3QgdXNpbmcKCSAgR1NUX0NMT0NLX0RJRkYgYW55d2hlcmUuCgoyMDA1LTA5LTIzIDE4OjA4OjU5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNvbW1vbi9ndGstZG9jLm1hazogZG9uJ3QgZmFpbCBvbiBidWlsZGluZyBYTUwsIEZDNCBzbGF2ZSBzaG93cyBhIGJ1bmNoIG9mIGRvYyBtaXNzaW5nIGJpdHMgdGhhdCBJIGRvbid0IGdldAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb21tb24vZ3RrLWRvYy5tYWs6CgkgIGRvbid0IGZhaWwgb24gYnVpbGRpbmcgWE1MLCBGQzQgc2xhdmUgc2hvd3MgYSBidW5jaCBvZiBkb2MKCSAgbWlzc2luZyBiaXRzIHRoYXQgSSBkb24ndCBnZXQKCSAgKiBnc3QvZ3N0cGFkLmM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBzb21lIGRvYyB1cGRhdGVzCgoyMDA1LTA5LTIzIDE4OjAyOjE4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQWRkIGJsdXJiIGFib3V0IGhvdyB0aGUgYnVzIGdvZXMgaW50byBmbHVzaGluZyBtb2RlIGFuZCBkcm9wcyBhbGwgbWVzc2FnZXMgd2hlbiBpdHMgYmluIGdvZXMgZnJvbSBSRUFEWSBpbnRvIE5VTEwgc3RhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0YmluLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGJ1cy50eHQ6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICBBZGQgYmx1cmIgYWJvdXQgaG93IHRoZSBidXMgZ29lcyBpbnRvIGZsdXNoaW5nIG1vZGUgYW5kCgkgIGRyb3BzIGFsbCBtZXNzYWdlcyB3aGVuIGl0cyBiaW4gZ29lcyBmcm9tIFJFQURZIGludG8gTlVMTAoJICBzdGF0ZS4KCjIwMDUtMDktMjMgMTc6NDY6MDYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgYWRkIGEgbWV0aG9kIHRvIGdldCBhIEdzdENsb2NrVGltZSBvdXQgb2YgYSBzdHJ1Y3R1cmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6IChnc3Rfc3RydWN0dXJlX2dldF9jbG9ja190aW1lKToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkgIGFkZCBhIG1ldGhvZCB0byBnZXQgYSBHc3RDbG9ja1RpbWUgb3V0IG9mIGEgc3RydWN0dXJlCgoyMDA1LTA5LTIzIDE3OjE3OjQyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBBZGRlZCB0ZXN0IHRvIGNoZWNrIHN0YXRlIGNoYW5nZSBvcmRlciBpbiBiaW5zIChjYW4gc3RpbGwgYmUgbWFkZSB0byBmYWlsIGhlcmUgdW5kZXIgaGVhdnkgZGlzayBsLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKHRlc3RfY2hpbGRyZW5fc3RhdGVfY2hhbmdlX29yZGVyX2ZsYWdnZWRfc2luayksCgkgICh0ZXN0X2NoaWxkcmVuX3N0YXRlX2NoYW5nZV9vcmRlcl9zZW1pX3NpbmspLCAoZ3N0X2Jpbl9zdWl0ZSk6CgkgIEFkZGVkIHRlc3QgdG8gY2hlY2sgc3RhdGUgY2hhbmdlIG9yZGVyIGluIGJpbnMgKGNhbiBzdGlsbCBiZSBtYWRlCgkgIHRvIGZhaWwgaGVyZSB1bmRlciBoZWF2eSBkaXNrIGxvYWQ7IGJhaWxzIG91dCB3aXRoICdQdXNoIG9uIHBhZAoJICBmYWtlc2luazpzaW5rMCwgYnV0IGl0IHdhcyBub3QgYWN0aXZhdGVkIGluIHB1c2ggbW9kZScpLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2NoYW5nZV9zdGF0ZSk6CgkgIEZpeCBzdGF0ZSBjaGFuZ2Ugb3JkZXIgd2hlbiB0aGVyZSBpcyBvbmx5IGEgc2VtaSBzaW5rICgjMzE2ODU2KQoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfY2xhc3NfaW5pdCk6CgkgIFVzZSBfY2xhc3NfcGVla19wYXJlbnQoKSwgbm90IF9jbGFzc19yZWYoKTsgZml4IGRvY3MgdG8gc2F5CgkgICdkZWZhdWx0IG1haW4gY29udGV4dCcgaW5zdGVhZCBvZiAnbWFpbmxvb3AnIHdoZXJlIHRoYXQgaXMKCSAgd2hhdCdzIG1lYW50LgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jb21taXRfc3RhdGUpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKToKCSAgRml4IHR5cG9zIGluIGRlYnVnIG1lc3NhZ2VzCgoyMDA1LTA5LTIzIDE2OjM1OjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbW1vbjoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSogZ3N0L2dzdGNsb2NrLmg6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RpbmZvLmg6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogZ3N0L2dzdHN0cnVjdHVyZS5oOgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSAgZml4IGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBkb2NzCgoyMDA1LTA5LTIzIDE1OjQ4OjE0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgIGRvbid0IGJyZWFrIGRvY3MgYnVpbGQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvbid0IGJyZWFrIGRvY3MgYnVpbGQKCjIwMDUtMDktMjMgMTU6MzY6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgdmFyaW91cyBkb2MgdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL1JFQURNRToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2NsYXNzX2luaXQpLCAoZ3N0X3BhZF9jaGFpbik6CgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYzoKCSAgKiBnc3QvZ3N0dXRpbHMuYzoKCSAgdmFyaW91cyBkb2MgdXBkYXRlcwoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICBjaGFuZ2UgYW4gYXNzZXJ0IGludG8gYW4gZXJyb3IgdW50aWwgaXQgZ2V0cyBmaXhlZCBwcm9wZXJseQoKMjAwNS0wOS0yMyAxNDozMToyMSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgaW5saW5lZCAzIG1vcmUgYmlpaWlnIGRvYyBmaWxlcyBhbmQgYWRkZWQgc29tZSBtaXNzaW5nIGRvY3Mgb24gdGhlIGZseQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGluZm8uc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdG9iamVjdC5zZ21sOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0aW5mby5jOgoJICAqIGdzdC9nc3RpbmZvLmg6CgkgICogZ3N0L2dzdG9iamVjdC5jOiAoZ3N0X29iamVjdF9jbGFzc19pbml0KToKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgIGlubGluZWQgMyBtb3JlIGJpaWlpZyBkb2MgZmlsZXMgYW5kIGFkZGVkIHNvbWUgbWlzc2luZyBkb2NzIG9uIHRoZSBmbHkKCjIwMDUtMDktMjMgMTE6NDE6MzAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcHV0IGJhY2sgc291cmNlIGluIHJlZ2lzdHJ5LiAgYWRkIGNoZWNrcyBmb3IgZmluZF9wbHVnaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICAqIGNoZWNrL2dzdC9nc3RwbHVnaW4uYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9wbHVnaW5fc3VpdGUpOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiAobG9hZF9wbHVnaW4pLAoJICAoZ3N0X3JlZ2lzdHJ5X3htbF9zYXZlX3BsdWdpbik6CgkgIHB1dCBiYWNrIHNvdXJjZSBpbiByZWdpc3RyeS4gIGFkZCBjaGVja3MgZm9yIGZpbmRfcGx1Z2luLgoJICAqIHRlc3RzdWl0ZS9zdGF0ZXMvYmluLmM6IChhc3NlcnRfc3RhdGUpLCAoZW1wdHlfYmluKSwKCSAgKHRlc3RfYWRkaW5nX29uZV9lbGVtZW50KSwgKG1haW4pOgoJICAqIHRlc3RzdWl0ZS9zdGF0ZXMvbG9ja2VkLmM6IChtYWluKToKCSAgc29tZSBjb21waWxlL3J1biBmaXhlcwoKMjAwNS0wOS0yMiAyMDowMjoxMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSAgZml4IGxlYWsgaW4gdGhlIHRlc3QgaXRzZWxmCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggbGVhayBpbiB0aGUgdGVzdCBpdHNlbGYKCjIwMDUtMDktMjIgMTg6MDc6MjIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBQcmVwYXJlIGZvciBtb3JlIGFjY3VyYXRlIHBvc2l0aW9uIHJlcG9ydGluZyBhbmQgcXVlcnkgaGFuZGxpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc2lua19zZW5kX2V2ZW50KSwgKGdzdF9iYXNlX3NpbmtfcGVlcl9xdWVyeSksCgkgIChnc3RfYmFzZV9zaW5rX3F1ZXJ5KToKCSAgUHJlcGFyZSBmb3IgbW9yZSBhY2N1cmF0ZSBwb3NpdGlvbiByZXBvcnRpbmcgYW5kIHF1ZXJ5CgkgIGhhbmRsaW5nLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZW5kX2V2ZW50KSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSk6CgkgIEFkZCBzb21lIGNvbW1lbnQuCgoyMDA1LTA5LTIyIDE3OjQwOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHF1ZXJ5Lio6IE1vcmUgZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6IChnc3RfcXVlcnlfbmV3X3NlZ21lbnQpLCAoZ3N0X3F1ZXJ5X3NldF9zZWdtZW50KSwKCSAgKGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KToKCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgTW9yZSBkb2N1bWVudGF0aW9uLgoJICBBZGQgc2VnbWVudCBxdWVyeSBmb3IgZnV0dXJlIHVzZS4KCjIwMDUtMDktMjIgMTY6NTE6MjcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IFNvbWUgbW9yZSBkZWJ1ZyBpbmZvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2FkZF9mdW5jKToKCSAgU29tZSBtb3JlIGRlYnVnIGluZm8uCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NlbmRfZXZlbnQpOgoJICBTaW1wbGlmeSBzZW5kX2V2ZW50CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgRG9uJ3Qga25vdyBob3cgZmxhZ3MgZ290IGJyb2tlbi4KCSAgKiBnc3QvZ3N0cXVlcnkuaDoKCSAgQWRkZWQgbmV3IHF1ZXJ5LgoKMjAwNS0wOS0yMiAxNTozODoxMiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiBBZGQgc2ltcGxpc3RpYyB0ZXN0IHN1aXRlIGZvciBHU1RfVFlQRV9EQVRFIHNlcmlhbGlzYXRpb24gYW5kIGRlc2VyaWFsaXNhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdHZhbHVlLmM6ICh0ZXN0X2RhdGUpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgQWRkIHNpbXBsaXN0aWMgdGVzdCBzdWl0ZSBmb3IgR1NUX1RZUEVfREFURSBzZXJpYWxpc2F0aW9uIGFuZAoJICBkZXNlcmlhbGlzYXRpb24uCgoyMDA1LTA5LTIyIDE1OjA4OjAyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQWRkIEdTVF9UWVBFX0RBVEUsIGEgYm94ZWQgdHlwZSB0aGF0IHdyYXBzIEdEYXRlLCBhbmQgdGhlIHVzdWFsIGJ1bmNoIG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFsb25nIHdpdGggYSBoYWNrIHRoYXQgY2hlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9zZXRfdmFsaXN0KSwKCSAgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RhdGUpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9zZXRfZGF0ZSksIChnc3RfdmFsdWVfZ2V0X2RhdGUpLAoJICAoZ3N0X2RhdGVfY29weSksIChnc3RfdmFsdWVfY29tcGFyZV9kYXRlKSwKCSAgKGdzdF92YWx1ZV9zZXJpYWxpemVfZGF0ZSksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfZGF0ZSksCgkgIChnc3RfdmFsdWVfdHJhbnNmb3JtX2RhdGVfc3RyaW5nKSwKCSAgKGdzdF92YWx1ZV90cmFuc2Zvcm1fc3RyaW5nX2RhdGUpLCAoX2dzdF92YWx1ZV9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0dmFsdWUuaDoKCSAgQWRkIEdTVF9UWVBFX0RBVEUsIGEgYm94ZWQgdHlwZSB0aGF0IHdyYXBzIEdEYXRlLCBhbmQgdGhlIHVzdWFsCgkgIGJ1bmNoIG9mIHV0aWxpdHkgZnVuY3Rpb25zIGFsb25nIHdpdGggYSBoYWNrIHRoYXQgY2hlY2tzIHRoYXQKCSAgZGV2ZWxvcGVycyBkb24ndCBhY2NpZGVudGFsbHkgdXNlIEdfVFlQRV9EQVRFIHdoZXJlIEdTVF9UWVBFX0RBVEUKCSAgaXMgcmVxdWlyZWQuIFBhcnQgb2YgdGhlIGdyYW5kIHNjaGVtZSBpbiAjMTcwNzc3LgoKMjAwNS0wOS0yMiAxMjowNTowNSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGNvbmZpZy5oLmluOiBQc3ljaCBvdXQgZ3RrLWRvYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGNvbmZpZy5oLmluOiBQc3ljaCBvdXQgZ3RrLWRvYy4KCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiBBZGQgR1NUX0hBVkVfR0xJQl8yXzguCgkgICogY2hlY2svTWFrZWZpbGUuYW0gKGNoZWNrX1BST0dSQU1TKTogQWRkIGdzdHBsdWdpbiB0byB0aGUgdGVzdHMuCgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYyAocHJpbnRfZWxlbWVudF9saXN0KTogUGx1ZyBzb21lCgkgIGluY29uc2VxdWVudGlhbCBsZWFrcy4KCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYyAoZ3N0X3JlZ2lzdHJ5X2dldF9kZWZhdWx0KTogRG9jLgoJICAqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuYyAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2NhbGxfZnVuY3Rpb24pOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jIChnc3RfZWxlbWVudF9mYWN0b3J5X2NyZWF0ZSk6CgkgICogZ3N0L2dzdGluZGV4ZmFjdG9yeS5jIChnc3RfaW5kZXhfZmFjdG9yeV9jcmVhdGUpOiBVcGRhdGUgZm9yCgkgIHJlZmNvdW50IGNoYW5nZXMuCgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuYyAoZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZSk6IERvYy4KCSAgKGdzdF9wbHVnaW5fZmVhdHVyZV9sb2FkKTogRG9jLCBkb24ndCBlYXQgcmVmcy4KCSAgKiBnc3QvZ3N0cGx1Z2luLmMgKGdzdF9wbHVnaW5fbG9hZCk6IERvYywgZG9uJ3QgZWF0IHJlZnMuCgkgIChnc3RfcGx1Z2luX2xpc3RfZnJlZSk6IERvYy4KCSAgKGdzdF9wbHVnaW5fbG9hZF9maWxlKTogRG9jIHVwZGF0ZXMuCgoyMDA1LTA5LTIyIDA5OjMwOjQxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmMgKGdzdF9idWZmZXJfZ2V0X2NhcHMpOiBMaWtlIGFsbCBvdXIgX2dldCBhY2Nlc3NvcnMgcmV0dXJuaW5nIHJlZmNvdW50ZWQgb2JqZWN0cywgcmV0dXJuIGEgcmVmLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOS0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YnVmZmVyLmMgKGdzdF9idWZmZXJfZ2V0X2NhcHMpOiBMaWtlIGFsbCBvdXIgX2dldAoJICBhY2Nlc3NvcnMgcmV0dXJuaW5nIHJlZmNvdW50ZWQgb2JqZWN0cywgcmV0dXJuIGEgcmVmLgoJICAqIGNoZWNrL2dzdC9nc3RidWZmZXIuYyAoR1NUX1NUQVJUX1RFU1QpOiBVc2UgcmVmY291bnQtaWRlbXBvdGVudAoJICBhY2Nlc3NvciBmb3IgY2Fwcy4gSURFTVBPVEVOQ0UuIE9oIHllcy4KCjIwMDUtMDktMjEgMjE6Mzk6MDYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aW5mby5jOiBBZGQgbXV0ZXggdG8gc2VyaWFsaXNlIGFjY2VzcyB0byB0aGUgaGFzaCB0YWJsZSB3aXRoIHRoZSBmdW5jdGlvbiBwb2ludGVyID0+IGZ1bmN0aW9uIG5hbWUgc3RyaW5nIG1hcHAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJldmlld2VkIGJ5OiBUaW0tUGhpbGlwcCBNw7xsbGVyICA8dGltIGF0IGNlbnRyaWN1bGFyIGRvdCBuZXQ+CgkgICogZ3N0L2dzdGluZm8uYzogKF9nc3RfZGVidWdfbmFtZW9mX2Z1bmNwdHIpLAoJICAoX2dzdF9kZWJ1Z19yZWdpc3Rlcl9mdW5jcHRyKToKCSAgQWRkIG11dGV4IHRvIHNlcmlhbGlzZSBhY2Nlc3MgdG8gdGhlIGhhc2ggdGFibGUgd2l0aAoJICB0aGUgZnVuY3Rpb24gcG9pbnRlciA9PiBmdW5jdGlvbiBuYW1lIHN0cmluZyBtYXBwaW5nOwoJICBtYWtlIHRoYXQgaGFzaCB0YWJsZSBzdGF0aWMgc2NvcGUgKCMzMTY4MDkpLgoJICAqIGdzdC9yZWdpc3RyaWVzLy5jdnNpZ25vcmU6CgkgIFJlbW92ZSBsZWZ0LW92ZXIgZmlsZS4KCjIwMDUtMDktMjEgMTU6NTU6MTIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3B3Zy9hcHBlbmRpeC1wb3J0aW5nLnhtbDogQW5kIHNvbWV0aGluZyBhYm91dCBuZXdzZWdtZW50IGV2ZW50cyBhbmQgY2Fwcy1vbi1idWZmZXJzIHRvIHRoZSBwb3J0aW5nIGd1aWRlIChmZWVsIGYuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgIEFuZCBzb21ldGhpbmcgYWJvdXQgbmV3c2VnbWVudCBldmVudHMgYW5kIGNhcHMtb24tYnVmZmVycyB0bwoJICB0aGUgcG9ydGluZyBndWlkZSAoZmVlbCBmcmVlIHRvIGltcHJvdmUpLgoKMjAwNS0wOS0yMSAxMzoyNDozMyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9nc3QvZ3N0dXRpbHMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHV0aWxzLmM6CgkgIFRlc3QgdGhhdCByZW1vdmluZyBwcm9iZXMgZnJvbSB3aXRoaW4gdGhlIHByb2JlIGZ1bmN0aW9ucyB3b3Jrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICh0ZXN0X2J1ZmZlcl9wcm9iZV9vbmNlKTogVGVzdCB0aGF0IHJlbW92aW5nIHByb2JlcyBmcm9tIHdpdGhpbgoJICB0aGUgcHJvYmUgZnVuY3Rpb25zIHdvcmtzLgoKMjAwNS0wOS0yMSAxMzoxMToyMiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svZ3N0L2dzdHV0aWxzLmMgKHRlc3RfYnVmZmVyX3Byb2JlX25fdGltZXMpOiBBZGQgdGVzdHMgZm9yIGRhdGEgYW5kIGV2ZW50IHByb2JlcyBvbiB0aGUgc2FtZSBwYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA5LTIxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3R1dGlscy5jICh0ZXN0X2J1ZmZlcl9wcm9iZV9uX3RpbWVzKTogQWRkIHRlc3RzIGZvcgoJICBkYXRhIGFuZCBldmVudCBwcm9iZXMgb24gdGhlIHNhbWUgcGFkLgoKMjAwNS0wOS0yMSAxMjoyMToxMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svZ3N0L2dzdHV0aWxzLmM6IE5ldyBmaWxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOS0yMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9nc3QvZ3N0dXRpbHMuYzogTmV3IGZpbGUuCgkgICh0ZXN0X2J1ZmZlcl9wcm9iZV9uX3RpbWVzKTogQSBzaW1wbGUgYnVmZmVyIHByb2JlIHRlc3QuIE1vcmUgdG8KCSAgY29tZSwgZm9vbGlvcy4KCSAgKiBnc3QvZ3N0dXRpbHMuYyAoZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlKTogQ29ubmVjdCB0bwoJICBoYXZlLWRhdGE6OmJ1ZmZlciwgbm90IGhhdmUtZGF0YS4KCSAgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlKTogTGlrZXdpc2UgZm9yIGhhdmUtZGF0YTo6ZXZlbnQuCgkgIChnc3RfcGFkX2FkZF9kYXRhX3Byb2JlKTogTW9yZSBkb2NzLiBUaGUgcGFydCBhYm91dCAncmVzb2x2aW5nIHRoZQoJICBwZWVyJyBpc24ndCBxdWl0ZSByaWdodCB5ZXQgdGhvdWdoLgoJICAoZ3N0X3BhZF9yZW1vdmVfYnVmZmVyX3Byb2JlLCBnc3RfcGFkX3JlbW92ZV9ldmVudF9wcm9iZSkKCSAgKGdzdF9wYWRfcmVtb3ZlX2RhdGFfcHJvYmUpOiBDaGFuZ2UgdG8gdGFrZSB0aGUgZ3VpbnQgaGFuZGxlcl9pZAoJICBhcyB0aGVpciBhcmcsIG5vdCB0aGUgZnVuY3Rpb24rZGF0YSwgd2hpY2ggaXMgbW9yZSBnbGliLWxpa2UuCgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2VtaXRfaGF2ZV9kYXRhX3NpZ25hbCk6IEFkZCBhIGRldGFpbCB0bwoJICB0aGUgc2lnbmFsIGVtaXNzaW9uIHRvIGluZGljYXRlIGlmIHRoZSBkYXRhIGlzIGEgYnVmZmVyIG9yIGFuCgkgIGV2ZW50LgoJICAoZ3N0X3BhZF9nZXRfdHlwZSk6IEluaXRpYWxpemUgYnVmZmVyIGFuZCBldmVudCBxdWFya3MuCgkgIChnc3RfcGFkX2NsYXNzX2luaXQpOiBoYXZlLWRhdGEgaXMgbm93IGEgZGV0YWlsZWQgc2lnbmFsLCB5ZXMgaXQKCSAgaXMuCgoyMDA1LTA5LTIxIDExOjUyOjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0LzogRG9uJ3QgcHV0IGZ1bmN0aW9uYWwgY29kZSBpbiBnX3JldHVybl9pZl9mYWlsKCkgb3IgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKSBzdGF0ZW1lbnRzLCBvdGhlcndpc2UgdGhpbmdzIHdpbGwgYnJlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSk6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfdXRpbF9zZXRfdmFsdWVfZnJvbV9zdHJpbmcpLAoJICAoZ3N0X3V0aWxfc2V0X29iamVjdF9hcmcpOgoJICBEb24ndCBwdXQgZnVuY3Rpb25hbCBjb2RlIGluIGdfcmV0dXJuX2lmX2ZhaWwoKSBvcgoJICBnX3JldHVybl92YWxfaWZfZmFpbCgpIHN0YXRlbWVudHMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbAoJICBicmVhayB3aGVuIEdfRElTQUJMRV9DSEVDS1MgaXMgZGVmaW5lZCBkdXJpbmcgY29tcGlsYXRpb24uCgoyMDA1LTA5LTIxIDA5OjQ4OjQwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBpbmxpZWQgYW5vdGhlciBvbmUgYW5kIGFkZGVkICBzb21lIG9idmlvdXMgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R2YWx1ZS5zZ21sOgoJICAqIGdzdC9nc3R2YWx1ZS5jOgoJICAqIGdzdC9nc3R2YWx1ZS5oOgoJICBpbmxpZWQgYW5vdGhlciBvbmUgYW5kIGFkZGVkICBzb21lIG9idmlvdXMgZG9jcwoKMjAwNS0wOS0yMSAwOToxMzozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RmZHNyYy4qOiBQcm9wZXJseSBpbXBsZW1lbnQgZmRzcmMuIFJlbW92ZWQgc2lnbmFsIGFuZCB0aW1lb3V0LCBiZXR0ZXIgaW1wbGVtZW50ZWQgc29tZXdoZXJlIGVsc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2Zkc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Zkc3JjX2luaXQpLCAoZ3N0X2Zkc3JjX3N0YXJ0KSwgKGdzdF9mZHNyY19zdG9wKSwKCSAgKGdzdF9mZHNyY191bmxvY2spLCAoZ3N0X2Zkc3JjX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfZmRzcmNfZ2V0X3Byb3BlcnR5KSwgKGdzdF9mZHNyY19jcmVhdGUpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5oOgoJICBQcm9wZXJseSBpbXBsZW1lbnQgZmRzcmMuIFJlbW92ZWQgc2lnbmFsIGFuZCB0aW1lb3V0LAoJICBiZXR0ZXIgaW1wbGVtZW50ZWQgc29tZXdoZXJlIGVsc2UuCgoyMDA1LTA5LTIxIDA4OjU4OjQ4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBpbmxpbmVkIG1vcmUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RpbXBsZW1lbnRzaW50ZXJmYWNlLnNnbWw6CgkgICogZ3N0L2dzdGludGVyZmFjZS5jOgoJICBpbmxpbmVkIG1vcmUgZG9jcwoKMjAwNS0wOS0yMSAwODo0MDo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9nc3QvOiByZW1vdmUgb2Jzb2xldGUgZG9jIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSAgcmVtb3ZlIG9ic29sZXRlIGRvYyBmaWxlCgoyMDA1LTA5LTIxIDA3OjM3OjAyICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiBEcmluayBhIGxpdHRsZSBiZWVyLCBmaXggYSBsaXR0bGUgbGVhay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UpOiBEcmluayBhCgkgIGxpdHRsZSBiZWVyLCBmaXggYSBsaXR0bGUgbGVhay4KCjIwMDUtMDktMjAgMjA6NTQ6MzcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVudW10eXBlcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGltcGxlbWVudHNpbnRlcmZhY2Uuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmRleC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGluZGV4ZmFjdG9yeS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGluZm8uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RvYmplY3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWR0ZW1wbGF0ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBpcGVsaW5lLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luZmVhdHVyZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHR5cGVzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dmFsdWUuc2dtbDoKCSAgcmVtb3ZlIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZmlsZXMKCjIwMDUtMDktMjAgMjA6NDA6MDAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIG1vcmUgZG9jcyBpbmxpbmVkLCBzcGxpdHRlZCBnc3RpbmRleC57YyxofQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGdzdC9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0Lmg6CgkgICogZ3N0L2dzdGJpbi5jOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdGluZGV4LmM6IChnc3RfaW5kZXhfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdGluZGV4Lmg6CgkgICogZ3N0L2dzdGluZGV4ZmFjdG9yeS5jOiAoZ3N0X2luZGV4X2ZhY3RvcnlfZ2V0X3R5cGUpLAoJICAoZ3N0X2luZGV4X2ZhY3RvcnlfY2xhc3NfaW5pdCksIChnc3RfaW5kZXhfZmFjdG9yeV9pbml0KSwKCSAgKGdzdF9pbmRleF9mYWN0b3J5X2ZpbmFsaXplKSwgKGdzdF9pbmRleF9mYWN0b3J5X25ldyksCgkgIChnc3RfaW5kZXhfZmFjdG9yeV9kZXN0cm95KSwgKGdzdF9pbmRleF9mYWN0b3J5X2ZpbmQpLAoJICAoZ3N0X2luZGV4X2ZhY3RvcnlfY3JlYXRlKSwgKGdzdF9pbmRleF9mYWN0b3J5X21ha2UpOgoJICAqIGdzdC9nc3RpbmRleGZhY3RvcnkuaDoKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmg6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6IChnc3RfY29udHJvbGxlcl9uZXdfdmFsaXN0KToKCSAgbW9yZSBkb2NzIGlubGluZWQsIHNwbGl0dGVkIGdzdGluZGV4LntjLGh9CgoyMDA1LTA5LTIwIDIwOjE5OjUyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkgIGZpeCBhIGxlYWsgaW4gY29udHJvbGxlcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGEgbGVhayBpbiBjb250cm9sbGVyCgoyMDA1LTA5LTIwIDE5OjE2OjQzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IFNldCBzeW5jIHRvIEZBTFNFIGJ5IGRlZmF1bHQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19pbml0KToKCSAgU2V0IHN5bmMgdG8gRkFMU0UgYnkgZGVmYXVsdC4KCjIwMDUtMDktMjAgMTc6Mzg6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBNYWtlIHN5bmMgcHJvcGVydHkgc2V0dGFibGUgZnJvbSBzdWJjbGFzcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZV9zaW5rX2luaXQpOgoJICBNYWtlIHN5bmMgcHJvcGVydHkgc2V0dGFibGUgZnJvbSBzdWJjbGFzcy4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzogKGdzdF9mYWtlX3NpbmtfaW5pdCksCgkgIChnc3RfZmFrZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgIFNldCBzeW5jIHRvIEZBTFNFIGJ5IGRlZmF1bHQuCgoyMDA1LTA5LTIwIDE3OjMwOjM1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgVGhlIHRpbWVvdXQgaGFuZGxlciBzaG91bGQgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBzb3VyY2Ugc28gd2UgZG9uJ3QgdGltZW91dCBiZWZvcmUgcG9wcGluZyBhIG1lc3NhZ2Ugd2l0aCAwIHRpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKHBvbGxfZnVuYyksIChwb2xsX3RpbWVvdXQpLCAoZ3N0X2J1c19wb2xsKToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChtYWluKToKCSAgVGhlIHRpbWVvdXQgaGFuZGxlciBzaG91bGQgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBzb3VyY2UKCSAgc28gd2UgZG9uJ3QgdGltZW91dCBiZWZvcmUgcG9wcGluZyBhIG1lc3NhZ2Ugd2l0aCAwIHRpbWVvdXQuCgkgIER1bXAgZXJyb3IgbWVzc2FnZXMgYWZ0ZXIgZmFpbGVkIHN0YXRlIGNoYW5nZS4KCjIwMDUtMDktMjAgMTc6MjE6MTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB0b29scy9nc3QtaW5zcGVjdC5jOiBGaXggdHdvIHR5cG9zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBGaXggdHdvIHR5cG9zLgoKMjAwNS0wOS0yMCAxNTo0NTo0MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICByZW1vdmUgdGhlIHN5bmMgcHJvcGVydHkgZnJvbSBmYWtlc2luay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGV2ZW50LmM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmg6CgkgIHJlbW92ZSB0aGUgc3luYyBwcm9wZXJ0eSBmcm9tIGZha2VzaW5rLgoJICBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIHNldHRpbmcgc3luYyBUUlVFCgkgIGZvciBmYWtlc2luaywgd2hpY2ggaXMgYSBjaGFuZ2UuICBBbnlvbmUgd2hvIGtub3dzIGhvdwoJICB0byBmaXggdGhpcyBuaWNlbHkgaW4gYSBHT2JqZWN0LXkgd2F5LCBmZWVsIGZyZWUuCgoyMDA1LTA5LTIwIDE1OjE5OjA4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOiByZW1vdmUgcHJvYmUgcmVmc2VjdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICByZW1vdmUgcHJvYmUgcmVmc2VjdGlvbgoKMjAwNS0wOS0yMCAxMjo1MDoyMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IGRpc2FibGUgdmFsZ3JpbmRpbmcgdGhlIGNvbnRyb2xsZXIgdGVzdCBhZ2FpbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgZGlzYWJsZSB2YWxncmluZGluZyB0aGUgY29udHJvbGxlciB0ZXN0IGFnYWluCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgdXBkYXRlIGZvciBhcGktY2hhbmdlcwoKMjAwNS0wOS0yMCAxMjowNTo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLio6IEFkZGVkIHN5bmMgcHJvcGVydHkgdG8gYmFzZXNpbmsgdG8gZGlzYWJsZSBjbG9jayBzeW5jLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3Npbmtfc2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlX3NpbmtfZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgQWRkZWQgc3luYyBwcm9wZXJ0eSB0byBiYXNlc2luayB0byBkaXNhYmxlIGNsb2NrIHN5bmMuCgoyMDA1LTA5LTIwIDExOjA5OjUwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYyAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jcmVhdGUpOiBBdm9pZCBlYXRpbmcgdGhlIGNhbGxlcidzIHJlZmNvdW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOS0yMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYyAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jcmVhdGUpOiBBdm9pZAoJICBlYXRpbmcgdGhlIGNhbGxlcidzIHJlZmNvdW50LgoJICAqIGdzdC9nc3RvYmplY3QuaCAoR1NUX09CSkVDVF9SRUZDT1VOVCkKCSAgKEdTVF9PQkpFQ1RfUkVGQ09VTlRfVkFMVUUpOiBDb25kaXRpb25hbGx5IGZvbmRsZSB0aGUgcmlnaHQKCSAgcmVmY291bnQuCgkgICogZ3N0L2dzdGNvbmZpZy5oLmluIChHU1RfSEFWRV9HTElCXzJfOCk6CgkgICogY29uZmlndXJlLmFjIChHU1RfSEFWRV9HTElCXzJfOF9ERUZJTkUpOiBNYWtlIHRoZSBhdmFpbGFiaWxpdHkKCSAgb2YgR0xpYiAyLjggcHVibGljLCBzbyB3ZSBjYW4ga25vdyB3aGljaCByZWZjb3VudCB0byBjaGVjayBpbgoJICB0ZXN0cy4KCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IFVzZSB0aGUgR1NUX0hBVkVfR0xJQl8yXzggZGVmaW5lLgoJICAoZ3N0X29iamVjdF9pbml0KTogT25seSBzZXQgdGhlIGdzdCByZWZjb3VudCBpZiB3ZSdyZSBnb2luZyBhaGVhZAoJICB3aXRoIHRoZSByZWZjb3VudCBoYWNrLgoKMjAwNS0wOS0yMCAxMDo0MTowMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbW9yZSBsZWFrcyBwbHVtYmVkLCBhZGRlZCBtb3JlIGRlYnVnLWxvZ2dpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0LWxpYnMvY29udHJvbGxlci5jOiAocGx1Z2luX2luaXQpLCAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOiAoZ3N0X2NvbnRyb2xsZXJfbmV3X3ZhbGlzdCk6CgkgIG1vcmUgbGVha3MgcGx1bWJlZCwgYWRkZWQgbW9yZSBkZWJ1Zy1sb2dnaW5nCgkgICogZ3N0L2dzdG1hY3Jvcy5oOgoJICB3aGl0ZXNwYWNlIGZpeAoKMjAwNS0wOS0yMCAwOTo0NzoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkgIHJlbW92ZSBpbmNsdWRlIG9mIHJlbW92ZWQgaGVhZGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgaW5jbHVkZSBvZiByZW1vdmVkIGhlYWRlcgoKMjAwNS0wOS0yMCAwOToyODo1NiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0Y2xvY2suYzogQ29tbWl0IGZyb20gdGhlIFBvbGl0aWNhbCBQYXJ0eSBGb3IgTW9yZSBBdG9taWMgQ1ZTIENvbW1pdHMsIHNvIHRoYXQgcGVvcGxlIGRvbid0IHdhc3RlIHRvbyBtdWNoIG9mIHQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNsb2NrLmM6IChfZ3N0X2Nsb2NrX2lkX2ZyZWUpOgoJICBDb21taXQgZnJvbSB0aGUgUG9saXRpY2FsIFBhcnR5IEZvciBNb3JlIEF0b21pYyBDVlMgQ29tbWl0cywKCSAgc28gdGhhdCBwZW9wbGUgZG9uJ3Qgd2FzdGUgdG9vIG11Y2ggb2YgdGhlaXIgZGF5IGZpc2hpbmcKCSAgb3V0IG9idmlvdXMgbGVha3Mgb3V0IG9mIG1hc3NpdmUgY29tbWl0cy4KCSAgT2gsIGFuZCBmaXggYSBwcmV0dHkgZGFtbiBvYnZpb3VzIGxlYWsgaW4gdGhlIG1lbWNodW5rCgkgIHJlbW92YWwgY29kZS4KCjIwMDUtMDktMjAgMDk6MjM6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNoZWNrLzogcGx1ZyBtZW0tbGVhaywgcmUtYWRkIHRvIHZhbGdyaW5kYWJsZSB0ZXN0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6IChwbHVnaW5faW5pdCksIChHU1RfU1RBUlRfVEVTVCk6CgkgIHBsdWcgbWVtLWxlYWssIHJlLWFkZCB0byB2YWxncmluZGFibGUgdGVzdHMKCjIwMDUtMDktMjAgMDk6MDg6MjUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIHVuYnJlYWsgdGhlIGJ1aWxkIGZvciB0aG9zZSB3aG8gaGF2ZSBjaHJvbmljIGFydGhyaXRpcyBhbmQgdHlwaW5nICJtYWtlIGNoZWNrIiBpcyBqdXN0IHRvbyB0YXhpbmcgb24gdGhlIGhhbmRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1bmJyZWFrIHRoZSBidWlsZCBmb3IgdGhvc2Ugd2hvIGhhdmUgY2hyb25pYyBhcnRocml0aXMKCSAgYW5kIHR5cGluZyAibWFrZSBjaGVjayIgaXMganVzdCB0b28gdGF4aW5nIG9uIHRoZSBoYW5kcwoKMjAwNS0wOS0yMCAwODoyNTozMiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdC5oOiBSZS1hZGQgbWFyc2hhbCB0byBnc3QuaCdzIGluY2x1ZGUgbGlzdCAtLSBpZiB3ZSByZWFsbHkgd2FudCBpdCBvdXQsIHlvdSBzaG91bGQgZml4IHBsdWdpbnMgYXQgdGhlIHNhbWUgdGltZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMjAgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdC5oOiBSZS1hZGQgbWFyc2hhbCB0byBnc3QuaCdzIGluY2x1ZGUgbGlzdCAtLSBpZiB3ZQoJICByZWFsbHkgd2FudCBpdCBvdXQsIHlvdSBzaG91bGQgZml4IHBsdWdpbnMgYXQgdGhlIHNhbWUgdGltZS4KCjIwMDUtMDktMjAgMDc6MzI6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGFkZGVkIG1pc3Npbmcgc3ltYm9scyB0byBhcGkgZG9jcyBkaXNhYmxlIHJlZi1jb3VudCBoYWNrIGlmIHdlIGhhdmUgZ2xpYiA+PSAyLjgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdG9iamVjdC5jOgoJICBhZGRlZCBtaXNzaW5nIHN5bWJvbHMgdG8gYXBpIGRvY3MKCSAgZGlzYWJsZSByZWYtY291bnQgaGFjayBpZiB3ZSBoYXZlIGdsaWIgPj0gMi44CgoyMDA1LTA5LTIwIDA2OjI4OjMzICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGRvY3MvZ3N0L01ha2VmaWxlLmFtOiBJZ25vcmUgYSBmZXcgbW9yZSBpbnRlcm5hbCBoZWFkZXJzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOiBJZ25vcmUgYSBmZXcgbW9yZSBpbnRlcm5hbCBoZWFkZXJzCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDogUmVtb3ZlIG9sZCBzZWN0aW9ucwoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IFJlbW92ZSBvbGQgc2VjdGlvbnMKCSAgKiBkb2NzL2dzdC90bXBsL2dzdG9iamVjdC5zZ21sOiB1cGRhdGUKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbi5zZ21sOiB1cGRhdGUKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbmZlYXR1cmUuc2dtbDogdXBkYXRlCgkgICogZG9jcy9yYW5kb20vZHMvMC45LXN1Z2dlc3RlZC1jaGFuZ2VzOiB1cGRhdGUuCgkgICogZ3N0L01ha2VmaWxlLmFtOiByZW1vdmUgbWVtY2h1bmsgYW5kIHRyYXNoc3RhY2ssIHNpbmNlIHRoZXkncmUKCSAgbm90IHVzZWQuCgkgICogZ3N0L2dzdC5jOiAoZ3N0X2RlaW5pdCk6IHJlbmFtZSBnc3RfcmVnaXN0cnlfZGVpbml0IHRvIF9jbGVhbnVwCgkgICogZ3N0L2dzdC5oOiBkb24ndCBpbmNsdWRlIHNvbWUgaGVhZGVycwoJICAqIGdzdC9nc3RjaGlsZHByb3h5LmM6IGFkZCBnc3RtYXJzaGFsLmgKCSAgKiBnc3QvZ3N0Y2xvY2suYzogRG9uJ3QgdXNlIG1lbWNodW5rcwoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IEFkZCBzb21lIGRvY3MKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IHJlbW92ZSBERVNUUk9ZRUQgZmxhZywgc2luY2UgaXQncyByZWR1bmRhbnQKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6IHNhbWUKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IGluY2x1ZGUgZ3N0bWFjcm9zLmgKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6IGRvbid0IGluY2x1ZGUgZ3N0bWFjcm9zLmgsIHNpbmNlIGl0J3MgcHJpdmF0ZQoJICAqIGdzdC9nc3RxdWVyeS5jOiBkb24ndCB1c2UgbWVtY2h1bmtzCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6IHJlbmFtZSBnc3RfcmVnaXN0cnlfZGVpbml0KCkKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDogc2FtZQoKMjAwNS0wOS0yMCAwNToxMzozMCArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOiBSZW1vdmUgZG9jcyBmb3IgZ2V0Yml0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOiBSZW1vdmUgZG9jcyBmb3IgZ2V0Yml0cwoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9saWJzL3RtcGwvZ3N0Z2V0Yml0cy5zZ21sOgoJICAqIGRvY3MvbGlicy90bXBsL2dzdHB1dGJpdHMuc2dtbDoKCjIwMDUtMDktMjAgMDA6Mjc6MzcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogQWRkIGEgc2xlZXAgdG8gZW5zdXJlIGVsZW1lbnRzIGhhdmUgYSBjaGFuY2UgdG8gc3RhcnQgdGhlaXIgcGFkIHRhc2tzIGJlZm9yZSBzaHV0ZG93bi4gUmVkdWNlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dlbmVyaWMvc3RhdGVzLmM6IChHU1RfU1RBUlRfVEVTVCksIChzdGF0ZXNfc3VpdGUpOgoJICBBZGQgYSBzbGVlcCB0byBlbnN1cmUgZWxlbWVudHMgaGF2ZSBhIGNoYW5jZSB0byBzdGFydCB0aGVpcgoJICBwYWQgdGFza3MgYmVmb3JlIHNodXRkb3duLiBSZWR1Y2VzIHJhY3kgdGVzdCByZXN1bHRzLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2Zkc3JjX2luaXQpLCAoZ3N0X2Zkc3JjX2NyZWF0ZSk6CgkgIFRpbWUgb3V0IHRoZSBzZWxlY3QgZXZlcnkgbm93IGFuZCB0aGVuIHRvIGNoZWNrIGZvciBzaHV0ZG93bi4KCjIwMDUtMDktMTkgMjA6MDE6NDUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9nc3RlbnVtdHlwZXMuKjogVXBkYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB3aW4zMi9nc3RlbnVtdHlwZXMuYzoKCSAgKiB3aW4zMi9nc3RlbnVtdHlwZXMuaDoKCSAgVXBkYXRlLgoKMjAwNS0wOS0xOSAxNjozMjo0NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwaXBlbGluZS5jOiBBdXRvbWF0aWNhbGx5IFBBVVNFIGFuZCBSRVNVTUUgYSBwaXBlbGluZSB3aGVuIGEgZmx1c2hpbmcgc2VlayBpcyBwZXJmb3JtZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZG9fcGlwZWxpbmVfc2VlayksIChnc3RfcGlwZWxpbmVfc2VuZF9ldmVudCk6CgkgIEF1dG9tYXRpY2FsbHkgUEFVU0UgYW5kIFJFU1VNRSBhIHBpcGVsaW5lIHdoZW4gYSBmbHVzaGluZyBzZWVrCgkgIGlzIHBlcmZvcm1lZC4KCSAgUmVtb3ZlZCBvbGQgZmlsZXMuCgoyMDA1LTA5LTE5IDE2OjI4OjU4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RidXMuYzoKCSAgd2hpdGVzcGFjZSBmaXgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdoaXRlc3BhY2UgZml4CgoyMDA1LTA5LTE5IDE1OjEyOjI1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cmVnaXN0cnkuaDogU3BhY2luZyBmaXhlbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHJlZ2lzdHJ5Lmg6IFNwYWNpbmcgZml4ZW4uCgoyMDA1LTA5LTE5IDE0OjU1OjI2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBIYW5kbGUgc3RhdGUgY2hhbmdlIGZhaWx1cmUgbW9yZSBjb3JyZWN0bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jaGFuZ2Vfc3RhdGUpOgoJICBIYW5kbGUgc3RhdGUgY2hhbmdlIGZhaWx1cmUgbW9yZSBjb3JyZWN0bHkuCgoyMDA1LTA5LTE5IDE0OjQxOjU3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrLzogZW5hYmxlIGNsZWFudXAgYWdhaW4gYWZ0ZXIgZml4aW5nIHRoZSBsZWFrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6IChydW5fcGlwZWxpbmUpOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6IChydW5fcGlwZWxpbmUpLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICBlbmFibGUgY2xlYW51cCBhZ2FpbiBhZnRlciBmaXhpbmcgdGhlIGxlYWsKCSAgKiBkb2NzL1JFQURNRToKCSAgc29tZSBtb3JlIGluZm8gb24gZG9jcwoKMjAwNS0wOS0xOSAxNDoyMDozNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0cGx1Z2luLmM6CgkgIGRvbid0IGNvbXBsYWluIGFib3V0IG15IEFSTSAuc28gZmlsZXMuICBBbm90aGVyIHJlYXNvbiB3aHkgaXQgZG9lcyBtYWtlIHNlbnNlIHRvIGhhdmUgcGx1Z2lucyBmb2xsb3cgYSBzdGFuZGFyZCBmaWxlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9uJ3QgY29tcGxhaW4gYWJvdXQgbXkgQVJNIC5zbyBmaWxlcy4gIEFub3RoZXIgcmVhc29uIHdoeSBpdCBkb2VzIG1ha2Ugc2Vuc2UKCSAgdG8gaGF2ZSBwbHVnaW5zIGZvbGxvdyBhIHN0YW5kYXJkIGZpbGUgbmFtZSBwYXR0ZXJuIGxpa2UgbGliZ3N0KHdoYXRldmVyKS5zbwoKMjAwNS0wOS0xOSAxNDowOTo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogcmUtZW5hYmxlIHRlc3RzIG5vdyB0aGF0IGxlYWtzIGFyZSBwbHVnZ2VkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICByZS1lbmFibGUgdGVzdHMgbm93IHRoYXQgbGVha3MgYXJlIHBsdWdnZWQKCSAgKiBjaGVjay9nc3QvZ3N0LmM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJICBhZGQgc29tZSBtb3JlIHRlc3RzIHdoaWxlIGZpeGluZyBsZWFrcwoJICAqIGNvbW1vbi9jaGVjay5tYWs6CgkgIG1ha2Ugc3VyZSBiaW5hcmllcyBhcmUgdXB0b2RhdGUgd2hlbiB2YWxncmluZGluZy9nZGJpbmcKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgIHJlbW92ZSBhIHJlZiB0b28gbWFueSwgYW5kIGFkZCBhIEZJWE1FIGZvciB3aGVuIHdlIGdldAoJICByb3VuZCB0byBkaXNwb3Npbmcgb2YgY2xhc3NlcwoJICAqIGdzdC9nc3RwbHVnaW4uYzoKCSAgZml4IHRoZSByZWZjb3VudGluZyB3aGVuIGxvYWRpbmcgYSBwbHVnaW4gZnJvbSBhIGZpbGUgYW5kCgkgIHRoZSBjb2RlIHByZXRlbmRzIHRoYXQgdGhlIHBvaW50ZXIgaXMgdGhlIHNhbWUgZXZlbiB0aG91Z2gKCSAgb2YgY291cnNlIGl0IGNhbiBjaGFuZ2UKCSAgKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJICB1bnJlZiBwbHVnaW5zIG1hcmtlZCBjYWNoZWQgKGEgYml0IGNvbmZ1c2luZyBhcyBhIG5hbWUpCgkgIGFzIHRoZSBkb2NzIHN0YXRlIHNob3VsZCBiZSBkb25lCgkgIHZhcmlvdXMgZG9jIGFkZGl0aW9ucyB0byBleHBsYWluIHJlZmNvdW50aW5nCgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6CgkgIGRlYnVnZ2luZwoKMjAwNS0wOS0xOSAxNDowOTozNyArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHVwZGF0ZSBzcGVjIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBzcGVjIGZpbGUKCjIwMDUtMDktMTkgMTE6MTg6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBHc3RCdXNIYW5kbGVyIC0+IEdzdEJ1c0Z1bmMsIHJldHVybiB2YWx1ZSBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBhbnkgb3RoZXIgR1NvdXJjZSAoRkFMU0UgPT0gcmVtb3ZlIHNvdXJjZSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKHBvcF9tZXNzYWdlcyksIChHU1RfU1RBUlRfVEVTVCk6CgkgICogY2hlY2svZ3N0L2dzdGJ1cy5jOiAobWVzc2FnZV9mdW5jX2VvcyksIChtZXNzYWdlX2Z1bmNfYXBwKSwKCSAgKHNlbmRfbWVzc2FnZXMpLCAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0YnVzX3N1aXRlKToKCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBjaGVjay9waXBlbGluZXMvY2xlYW51cC5jOiAocnVuX3BpcGVsaW5lKToKCSAgKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOiAocnVuX3BpcGVsaW5lKSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX2hhdmVfcGVuZGluZyksIChnc3RfYnVzX3NvdXJjZV9wcmVwYXJlKSwKCSAgKGdzdF9idXNfc291cmNlX2NoZWNrKSwgKGdzdF9idXNfc291cmNlX2Rpc3BhdGNoKSwKCSAgKGdzdF9idXNfY3JlYXRlX3dhdGNoKSwgKGdzdF9idXNfYWRkX3dhdGNoX2Z1bGwpLAoJICAoZ3N0X2J1c19hZGRfd2F0Y2gpLCAocG9sbF9mdW5jKSwgKHBvbGxfdGltZW91dCksIChnc3RfYnVzX3BvbGwpOgoJICAqIGdzdC9nc3RidXMuaDoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgKiB0b29scy9nc3QtbWQ1c3VtLmM6IChldmVudF9sb29wKToKCSAgR3N0QnVzSGFuZGxlciAtPiBHc3RCdXNGdW5jLCByZXR1cm4gdmFsdWUgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMKCSAgYW55IG90aGVyIEdTb3VyY2UgKEZBTFNFID09IHJlbW92ZSBzb3VyY2UpLgoJICBfYWRkX3dhdGNoKCkgYW5kIF9hZGRfd2F0Y2hfZnVsbCgpIG5vdyB0YWtlIGEgTWVzc2FnZVR5cGUgbWFzayB0bwoJICBvbmx5IGhhbmRsZSBzcGVjaWZpYyB0eXBlcyBvZiBtZXNzYWdlcy4KCSAgX3BvbGwoKSByZXR1cm5zIHRoZSBHc3RNZXNzYWdlIGluc3RlYWQgb2YgdGhlIG1lc3NhZ2UgdHlwZSB0byBhdm9pZAoJICByYWNlIGNvbmRpdGlvbnMuCgkgIF9oYXZlX3BlbmRpbmcoKSB0YWtlcyBhIE1lc3NhZ2VUeXBlIG1hc2sgbm93IHRvby4KCSAgQWRkZWQgdGVzdHN1aXRlIGZvciBtdWx0aXBsZSBidXMgd2F0Y2hlcy4KCSAgRml4IHRlc3RzdWl0ZXMgYW5kIGFwcGxpY2F0aW9ucyBmb3IgbmV3IGJ1cyBBUEkuCgoyMDA1LTA5LTE4IDIyOjE1OjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBtYXJrIGEgYnVuY2ggb2YgdGhlIHRlc3RzIGFzIHRvIGZpeCB1bnRpbCB3ZSBmaXggdGhlbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFyayBhIGJ1bmNoIG9mIHRoZSB0ZXN0cyBhcyB0byBmaXggdW50aWwgd2UgZml4IHRoZW0KCjIwMDUtMDktMTggMjE6NDA6NTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29tbW9uL2NoZWNrLm1hazogdXNlIEdTVF9QTFVHSU4gc2V0dGluZ3MgZm9yIHZhbGdyaW5kIHRlc3RzIGFzIHdlbGwsIHNvIHdlJ3JlIHZhbGdyaW5kaW5nIHRoZSBjb3JyZWN0IHRoaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbW1vbi9jaGVjay5tYWs6CgkgIHVzZSBHU1RfUExVR0lOIHNldHRpbmdzIGZvciB2YWxncmluZCB0ZXN0cyBhcyB3ZWxsLCBzbyB3ZSdyZQoJICB2YWxncmluZGluZyB0aGUgY29ycmVjdCB0aGluZwoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCk6CgkgIHBsdWcgYW5vdGhlciBsZWFrCgoyMDA1LTA5LTE4IDIxOjI0OjU1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJKiBnc3QvZ3N0aW5kZXguYzoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0cGx1Z2luLmM6CgkqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkqIGdzdC9nc3RyZWdpc3RyeS5jOgoJKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3QuYzoKCSAgdmFyaW91cyBjbGVhbnVwcyBhbmQgbWVtbGVhayBwbHVnZ2luZy4gIG1ha2UgdmFsZ3JpbmQgaXMgaGFwcHkgbm93LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdmFyaW91cyBjbGVhbnVwcyBhbmQgbWVtbGVhayBwbHVnZ2luZy4gIG1ha2UgdmFsZ3JpbmQgaXMgaGFwcHkgbm93LgoKMjAwNS0wOS0xOCAyMToyMzoxMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL2dzdC8uZ2l0aWdub3JlOgoJKiBjb21tb246CgkqIHRlc3RzL2NoZWNrL2dzdC8uZ2l0aWdub3JlOgoJICBhZGQgY2hlY2stdmFsZ3JpbmQgdGFyZ2V0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgY2hlY2stdmFsZ3JpbmQgdGFyZ2V0CgoyMDA1LTA5LTE4IDA5OjE1OjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RyZWdpc3RyeS5jOgoJICBsb2FkaW5nIGEgcGx1Z2luIGNhbiByZXR1cm4gTlVMTAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbG9hZGluZyBhIHBsdWdpbiBjYW4gcmV0dXJuIE5VTEwKCjIwMDUtMDktMTggMDc6NDE6MjggKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogUmV2ZXJ0IHRoZSBHT3B0aW9uIGNvZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IFJldmVydCB0aGUgR09wdGlvbiBjb2RlLgoKMjAwNS0wOS0xOCAwNjo1OToyNSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogRml4IGVudmlyb25tZW50IHZhcmlhYmxlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06IEZpeCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCgkgICogY2hlY2svZ3N0L2dzdHBsdWdpbi5jOiBGaXggZm9yIEFQSSBjaGFuZ2VzLgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IEZpeCBmb3IgQVBJIGNoYW5nZXMuCgkgICogdG9vbHMvZ3N0LXhtbGluc3BlY3QuYzogRml4IGZvciBBUEkgY2hhbmdlcy4KCSAgKiBnc3QvZ3N0ZWxlbWVudGZhY3RvcnkuYzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnl4bWwuYzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmQuYzoKCSAgKiBnc3QvZ3N0dHlwZWZpbmRmYWN0b3J5LmM6CgkgICogZ3N0L2luZGV4ZXJzL2dzdGZpbGVpbmRleC5jOgoJICAqIGdzdC9pbmRleGVycy9nc3RtZW1pbmRleC5jOgoJICAqIGdzdC9zY2hlZHVsZXJzL01ha2VmaWxlLmFtOgoJICBDaGFuZ2UgcmVnaXN0cnkgdG8ga2VlcCB0cmFjayBvZiBib3RoIHBsdWdpbnMgYW5kIGZlYXR1cmVzLAoJICByZW1vdmluZyB0aGUgZmVhdHVyZSB0cmFja2luZyBmcm9tIHBsdWdpbnMgdGhlbXNlbHZlcy4KCjIwMDUtMDktMTcgMTg6MTQ6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBhZGQgdmFsZ3JpbmQgdGFyZ2V0OyBkaXNhYmxlIGdzdHBsdWdpbiB1bnRpbCBpdCBwYXNzZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCB2YWxncmluZCB0YXJnZXQ7IGRpc2FibGUgZ3N0cGx1Z2luIHVudGlsIGl0IHBhc3NlcwoKMjAwNS0wOS0xNyAxODoxMToyNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNYWtlZmlsZS5hbToKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNvbW1vbjoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGFkZCB2YWxncmluZCB0YXJnZXQ7IGRpc2FibGUgZ3N0cGx1Z2luIHVudGlsIGl0IHBhc3NlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIHZhbGdyaW5kIHRhcmdldDsgZGlzYWJsZSBnc3RwbHVnaW4gdW50aWwgaXQgcGFzc2VzCgoyMDA1LTA5LTE2IDExOjI0OjEwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RwbHVnaW4uaDoKCSAgYWRkIG1pc2luZyBpbmNsdWRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgbWlzaW5nIGluY2x1ZGUKCjIwMDUtMDktMTYgMDg6MTc6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBzZXQgdGhlIHJpZ2h0IHZhcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgc2V0IHRoZSByaWdodCB2YXIKCjIwMDUtMDktMTYgMDg6MTQ6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkqIHRvb2xzL2dzdC1yZWdpc3Rlci4xLmluOgoJICByZW1vdmUgZ3N0LXJlZ2lzdGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZ3N0LXJlZ2lzdGVyCgoyMDA1LTA5LTE2IDA0OjU0OjI0ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIEdldHRpbmcgdGlyZWQgb2YgZGVidWdnaW5nLiAgRGlzYWJsZWQgYWxsIHRoZSB1bnJlZmZpbmcgb2YgcGx1Z2lucyBhbmQgZmVhdHVyZXMsIHdoaWNoIGZpeGVzIHRoZSBzZWdmYXVsdHMsIGJ1dCBvZiBjby4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5LmM6CgkgIEdldHRpbmcgdGlyZWQgb2YgZGVidWdnaW5nLiAgRGlzYWJsZWQgYWxsIHRoZSB1bnJlZmZpbmcgb2YKCSAgcGx1Z2lucyBhbmQgZmVhdHVyZXMsIHdoaWNoIGZpeGVzIHRoZSBzZWdmYXVsdHMsIGJ1dCBvZgoJICBjb3Vyc2UgbGVha3MgbGlrZSBjcmF6eS4gIEF0IGxlYXN0IHBsYXliaW4gd29ya3MuCgoyMDA1LTA5LTE2IDAzOjQ2OjE0ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGNoZWNrL2dzdC9nc3RwbHVnaW4uYzogTW9yZSB0ZXN0aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RwbHVnaW4uYzogKHJlZ2lzdGVyX2NoZWNrX2VsZW1lbnRzKSwKCSAgKEdTVF9TVEFSVF9URVNUKSwgKHBlZWspLCAoc3VnZ2VzdCksIChnc3RfcGx1Z2luX3N1aXRlKToKCSAgTW9yZSB0ZXN0aW5nCgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiBGaXggcmVmY291bnRpbmcuCgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6CgkgICogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOgoJICAqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuaDoKCjIwMDUtMDktMTYgMDA6Mzc6NTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdHBsdWdpbi5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGx1Z2luLmM6CgkgIHVudmVyYm9zaWZ5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1bnZlcmJvc2lmeQoKMjAwNS0wOS0xNiAwMDowODoxNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICBzb21lIHdoaXRlc3BhY2UgdG8gdHJpZ2dlciBhIGJ1aWxkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzb21lIHdoaXRlc3BhY2UgdG8gdHJpZ2dlciBhIGJ1aWxkCgoyMDA1LTA5LTE2IDAwOjAyOjI3ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RpbmRleC5jOiBnZXQgcmVmY291bnRpbmcgY29ycmVjdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGluZGV4LmM6IGdldCByZWZjb3VudGluZyBjb3JyZWN0LgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBmZWF0dXJlL3BsdWdpbiBpcwoJICBub3QgZm91bmQuCgoyMDA1LTA5LTE1IDIzOjUxOjI0ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGNoZWNrLzogQWRkIHRlc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svZ3N0L2dzdHBsdWdpbi5jOiBBZGQgdGVzdAoJICAqIGdzdC9nc3RwbHVnaW4uYzogRml4IHByb2JsZW1zIG5vdGljZWQgYnkgdGVzdHN1aXRlCgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5jOgoJICAqIGdzdC9nc3RyZWdpc3RyeS5oOgoKMjAwNS0wOS0xNSAyMDo1NjozMCArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IEltcGxlbWVudCBzZW1pLWRlY2VudCByZWNvdW50aW5nIGFuZCBsb2NraW5nIGluIHBsdWdpbnMgYW5kIHBsdWdpbiBmZWF0dXJlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiBJbXBsZW1lbnQgc2VtaS1kZWNlbnQgcmVjb3VudGluZyBhbmQgbG9ja2luZwoJICBpbiBwbHVnaW5zIGFuZCBwbHVnaW4gZmVhdHVyZXMuCgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCjIwMDUtMDktMTUgMTQ6MjE6MDggKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgSW1wbGVtZW50IG1pc3NpbmcgZnVuY3Rpb24uIFRoaXMgaXMgZW5vdWdoIHRvIGdldCB0aGUgYmFzaWNzIG9mIHR5cGVmaW5kaW5nIHdvcmtpbmcgLSBvZ2dkZW11eCBzdWNjZWVkcyBub3cuIGRlY29kZWJpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBJbXBsZW1lbnQgbWlzc2luZyBmdW5jdGlvbi4gVGhpcyBpcyBlbm91Z2ggdG8gZ2V0IHRoZSBiYXNpY3Mgb2YKCSAgdHlwZWZpbmRpbmcgd29ya2luZyAtIG9nZ2RlbXV4IHN1Y2NlZWRzIG5vdy4gZGVjb2RlYmluIGlzIHN0aWxsIGJyb2tlbi4KCjIwMDUtMDktMTUgMDU6NTg6MzcgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgY29uZmlndXJlLmFjOiBBZGQgLW5vLXVuZGVmaW5lZCB0byBHU1RfUExVR0lOX0xERkxBR1MgKGJ1ZyAjMzE2MDc2KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6IEFkZCAtbm8tdW5kZWZpbmVkIHRvIEdTVF9QTFVHSU5fTERGTEFHUyAoYnVnCgkgICMzMTYwNzYpCgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06IEFkZCAtbm8tdW5kZWZpbmVkIHRvIExERkxBR1MgZm9yIGxpYnMKCSAgKiBnc3QvY2hlY2svTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvTWFrZWZpbGUuYW06CgoyMDA1LTA5LTE1IDA1OjQ4OjMwICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIGdldGJpdHMgbGlicmFyeS4gIE5vdGhpbmcgdXNlcyBpdCwgYW5kIGl0IHNob3VsZCBiZSBpbiBzb21ldGhpbmcgbGlrZSBsaWJvaWwgaWYgc29tZW9uZSBkaWQgd2FudC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6IFJlbW92ZSBnZXRiaXRzIGxpYnJhcnkuICBOb3RoaW5nIHVzZXMgaXQsIGFuZAoJICBpdCBzaG91bGQgYmUgaW4gc29tZXRoaW5nIGxpa2UgbGlib2lsIGlmIHNvbWVvbmUgZGlkIHdhbnQKCSAgdG8gdXNlIGl0LgoJICAqIGxpYnMvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2dldGJpdHMvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvZ2V0Yml0cy9nYnRlc3QuYzoKCSAgKiBsaWJzL2dzdC9nZXRiaXRzL2dldGJpdHMuYzoKCSAgKiBsaWJzL2dzdC9nZXRiaXRzL2dldGJpdHMuaDoKCSAgKiBsaWJzL2dzdC9nZXRiaXRzL2dzdGdldGJpdHNfZ2VuZXJpYy5jOgoJICAqIGxpYnMvZ3N0L2dldGJpdHMvZ3N0Z2V0Yml0c19pMzg2LnM6CgkgICogbGlicy9nc3QvZ2V0Yml0cy9nc3RnZXRiaXRzX2lubC5oOgoKMjAwNS0wOS0xNSAwNTo0MjoxMyArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvTWFrZWZpbGUuYW06IERpc3QgZ2xpYi1jb21wYXQuaAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvTWFrZWZpbGUuYW06IERpc3QgZ2xpYi1jb21wYXQuaAoKMjAwNS0wOS0xNSAwMzoyMDo0OSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBjb25maWd1cmUuYWM6IFJlbW92ZSBnc3QvcmVnaXN0cmllcywgc2luY2UgaXQncyBubyBsb25nZXIgdXNlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOiBSZW1vdmUgZ3N0L3JlZ2lzdHJpZXMsIHNpbmNlIGl0J3Mgbm8gbG9uZ2VyIHVzZWQuCgkgICogZ3N0L3JlZ2lzdHJpZXMvTWFrZWZpbGUuYW06CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuYzoKCSAgKiBnc3QvcmVnaXN0cmllcy9nc3RsaWJ4bWxyZWdpc3RyeS5oOgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdHhtbHJlZ2lzdHJ5LmM6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuaDoKCSAgKiBnc3QvcmVnaXN0cmllcy9yZWdpc3RyeXRlc3QuYzoKCjIwMDUtMDktMTUgMDE6Mzg6MzMgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0LzogQ29udmVyZ2VuY2UgaXMgbmVhci4gIFNlcmlvdXNseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dsaWItY29tcGF0Lmg6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6CgkgIENvbnZlcmdlbmNlIGlzIG5lYXIuICBTZXJpb3VzbHkuCgoyMDA1LTA5LTE1IDAxOjM0OjUyICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nbGliLWNvbXBhdC4qOiBBdHRlbXB0ICM0IHRvIGFwcGVhc2UgdGhlIGJ1aWxkYm90cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dsaWItY29tcGF0LmM6IChnX21rZGlyX3dpdGhfcGFyZW50cyksIChnX21rZGlyKSwgKGdfc3RhdCk6CgkgICogZ3N0L2dsaWItY29tcGF0Lmg6CgkgIEF0dGVtcHQgIzQgdG8gYXBwZWFzZSB0aGUgYnVpbGRib3RzLgoKMjAwNS0wOS0xNSAwMToyNjo0MiArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ2xpYi1jb21wYXQuYzogQXR0ZW1wdCAjMy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dsaWItY29tcGF0LmM6IChnX21rZGlyX3dpdGhfcGFyZW50cyksIChnX21rZGlyKSwgKGdfc3RhdCk6CgkgIEF0dGVtcHQgIzMuCgoyMDA1LTA5LTE1IDAxOjIwOjIyICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nbGliLWNvbXBhdC5jOiBBdHRlbXB0ICMyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuYzogKGdfbWtkaXJfd2l0aF9wYXJlbnRzKSwgKGdfbWtkaXIpLCAoZ19zdGF0KToKCSAgQXR0ZW1wdCAjMi4KCjIwMDUtMDktMTUgMDE6MTQ6MTcgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L01ha2VmaWxlLmFtOiBPaCB5ZWFoLCBsaWJnc3RyZWFtZXIuc28gbmVlZHMgdG8gY29udGFpbiB0aGUgbmV3IGZ1bmN0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOiBPaCB5ZWFoLCBsaWJnc3RyZWFtZXIuc28gbmVlZHMgdG8gY29udGFpbgoJICB0aGUgbmV3IGZ1bmN0aW9ucy4KCjIwMDUtMDktMTUgMDE6MTA6NTIgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dsaWItY29tcGF0Lio6IEFkZCBzb21lIGZ1bmN0aW9ucyB0aGF0IGFyZSBpbiBuZXdlciB2ZXJzaW9ucyBvZiBnbGliIHRoYW4gd2UgY2FyZSB0byByZXF1aXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ2xpYi1jb21wYXQuYzogKGdfbWtkaXJfd2l0aF9wYXJlbnRzKSwgKGdfbWtkaXIpLCAoZ19zdGF0KToKCSAgKiBnc3QvZ2xpYi1jb21wYXQuaDogQWRkIHNvbWUgZnVuY3Rpb25zIHRoYXQgYXJlIGluIG5ld2VyIHZlcnNpb25zCgkgIG9mIGdsaWIgdGhhbiB3ZSBjYXJlIHRvIHJlcXVpcmUuCgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IFVzZSB0aGVtLgoKMjAwNS0wOS0xNSAwMDo0ODo0NSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBwby9QT1RGSUxFUy5pbjogcmVtb3ZlIGdzdC1yZWdpc3Rlci5jCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHBvL1BPVEZJTEVTLmluOiByZW1vdmUgZ3N0LXJlZ2lzdGVyLmMKCjIwMDUtMDktMTUgMDA6NDI6MDMgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZG9jcy9nc3QvOiBEb2N1bWVudGF0aW9uIHVwZGF0ZXMgZm9yIHJlZ2lzdHJ5IGNoYW5nZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RwbHVnaW4uc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbmZlYXR1cmUuc2dtbDoKCSAgRG9jdW1lbnRhdGlvbiB1cGRhdGVzIGZvciByZWdpc3RyeSBjaGFuZ2VzLgoKMjAwNS0wOS0xNSAwMDozNToxMSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0cmVnaXN0cnl4bWwuYzogQ29weSBnX21rZGlyX3dpdGhfcGFyZW50KCkgZnJvbSBnbGliLCBiZWNhdXNlIHdlIGRvbid0IHJlcXVpcmUgZ2xpYi0yLjguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RyZWdpc3RyeXhtbC5jOiBDb3B5IGdfbWtkaXJfd2l0aF9wYXJlbnQoKSBmcm9tIGdsaWIsCgkgIGJlY2F1c2Ugd2UgZG9uJ3QgcmVxdWlyZSBnbGliLTIuOC4KCjIwMDUtMDktMTUgMDA6MjA6MTQgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IEFkZGVkLiAgRXNzZW50aWFsbHkgbW92ZWQgb3V0IG9mIHRoZSByZWdpc3RyaWVzIGRpcmVjdG9yeS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5eG1sLmM6IEFkZGVkLiAgRXNzZW50aWFsbHkgbW92ZWQgb3V0IG9mIHRoZQoJICByZWdpc3RyaWVzIGRpcmVjdG9yeS4KCjIwMDUtMDktMTUgMDA6MTM6MjYgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgcmVtb3ZlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL2dlbmVyaWMvc3RhdGVzLmM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0Lmg6CgkgICogZ3N0L2dzdF9wcml2YXRlLmg6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgICogZ3N0L2dzdGluZGV4LmM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdHBsdWdpbi5oOgoJICAqIGdzdC9nc3RwbHVnaW5mZWF0dXJlLmM6CgkgICogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuaDoKCSAgKiBnc3QvZ3N0cmVnaXN0cnlwb29sLmM6IHJlbW92ZQoJICAqIGdzdC9nc3RyZWdpc3RyeXBvb2wuaDogcmVtb3ZlCgkgICogZ3N0L2dzdHR5cGVmaW5kLmM6CgkgICogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5jOgoJICAqIGdzdC9nc3R1cmkuYzoKCSAgKiB0b29scy9NYWtlZmlsZS5hbToKCSAgKiB0b29scy9nc3QtY29tcHByZXAuYzoKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICAqIHRvb2xzL2dzdC1yZWdpc3Rlci5jOiByZW1vdmUKCSAgKiB0b29scy9nc3QteG1saW5zcGVjdC5jOgoJICBSZWdpc3RyeSByZXdyaXRlLiAgQ2hhbmdlcyByZWdpc3RyeSBmcm9tIGJlaW5nIGEgZmlsZSBjcmVhdGVkCgkgIGJ5IGEgdG9vbCBpbnRvIGEgc2ltcGxlIGNhY2hlIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5CgkgIGxpYmdzdHJlYW1lci4gIFJlbW92ZWQgZ3N0LXJlZ2lzdGVyIChiZWNhdXNlIGl0J3Mgbm8gbG9uZ2VyCgkgIG5lZWRlZCkuICBSZW1vdmUgcmVnaXN0cnkgcG9vbHMsIGJlY2F1c2Ugd2Ugb25seSBoYXZlIG9uZQoJICByZWdpc3RyeSBpbXBsZW1lbnRhdGlvbiAoWE1MKS4gIEZpeCB1cCBvdGhlciBzdWJzeXN0ZW1zIGFzCgkgIG5lY2Vzc2FyeS4KCjIwMDUtMDktMTQgMjI6MDU6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbXBsZW1lbnRzaW50ZXJmYWNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5kZXguc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmRleGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmZvLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0b2JqZWN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkdGVtcGxhdGUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwaXBlbGluZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbmZlYXR1cmUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHZhbHVlLnNnbWw6CgkqIGRvY3MvbGlicy90bXBsL2dzdGRhdGFwcm90b2NvbC5zZ21sOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3RnZXRiaXRzLnNnbWw6CgkgIHdob29wcywgd3JvbmcgY29tbWl0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aG9vcHMsIHdyb25nIGNvbW1pdAoKMjAwNS0wOS0xNCAyMjowMTo0NSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGRvY3MvUkVBRE1FOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbXBsZW1lbnRzaW50ZXJmYWNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5kZXguc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmRleGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmZvLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0b2JqZWN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkdGVtcGxhdGUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwaXBlbGluZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbmZlYXR1cmUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHZhbHVlLnNnbWw6CgkqIGRvY3MvbGlicy90bXBsL2dzdGRhdGFwcm90b2NvbC5zZ21sOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3RnZXRiaXRzLnNnbWw6CgkgIG5vdGVzIG9uIGRvY3VtZW50aW5nIGVsZW1lbnRzIGFuZCBwbHVnaW5zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBub3RlcyBvbiBkb2N1bWVudGluZyBlbGVtZW50cyBhbmQgcGx1Z2lucwoKMjAwNS0wOS0xNCAxNToxNjozMyArMDAwMCAgTWljaGFlbCBTbWl0aCA8bXNtaXRoQHhpcGgub3JnPgoKCSogY29tbW9uOgoJKiBnc3QvTWFrZWZpbGUuYW06CgkgIFJlc3Qgb2YgdGhlIGZpeCBmb3IgMzE2MTU1OiBkb24ndCBjb25mdXNlIE1pbkdXIHdoZW4gcnVubmluZyBnbGliLW1rZW51bXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlc3Qgb2YgdGhlIGZpeCBmb3IgMzE2MTU1OiBkb24ndCBjb25mdXNlIE1pbkdXIHdoZW4gcnVubmluZyBnbGliLW1rZW51bXMKCjIwMDUtMDktMTMgMTU6MDM6MDUgKzAwMDAgIFN0ZXZlIExob21tZSA8c3RldmUubGhvbW1lQGZyZWUuZnI+CgoJICBmaWxlIGdzdC10eXBlZmluZC52Y3Byb2ogd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaWxlIGdzdC10eXBlZmluZC52Y3Byb2ogd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgoyMDA1LTA5LTEzIDE0OjQ5OjIzICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSAgRG9uJ3QgdXNlIHdpbmRvd3MgbGlua2luZyBhdHRyaWJ1dGVzIGluIE1pbkdXCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBEb24ndCB1c2Ugd2luZG93cyBsaW5raW5nIGF0dHJpYnV0ZXMgaW4gTWluR1cKCjIwMDUtMDktMTMgMTE6MDA6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2dzdHV0aWxzLmM6IEFwcGFyZW50bHkgcGVvcGxlIHRoaW5rIGl0J3MgYmV0dGVyIGlmIHRoaXMgZnVuY3Rpb24gZG9lc24ndCB0cnkgdG8gc2V0IHRoZSBzdGF0ZSB0byB3aGF0ZXZlciBzdGF0ZSB3Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoc2V0X3N0YXRlX2FzeW5jX3RocmVhZF9mdW5jKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZV9hc3luYyk6CgkgIEFwcGFyZW50bHkgcGVvcGxlIHRoaW5rIGl0J3MgYmV0dGVyIGlmIHRoaXMgZnVuY3Rpb24gZG9lc24ndAoJICB0cnkgdG8gc2V0IHRoZSBzdGF0ZSB0byB3aGF0ZXZlciBzdGF0ZSB3YXMgYXNrZWQgZm9yIG9uIHRoZSBmaXJzdAoJICBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gZm9yIGFueSBvYmplY3QuICBTZXJpb3VzbHkuCgoyMDA1LTA5LTEyIDE4OjE0OjAzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGFkZCBhIGdzdF9lbGVtZW50X3NldF9zdGF0ZV9hc3luYyBtZXRob2QgdGhhdCBzZXRzIHRoZSBzdGF0ZSBhbmQgc3RhcnRzIGEgdGhyZWFkIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGUgY2hhbmdlIGNvbXBsZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1dGlscy5jOiAoc2V0X3N0YXRlX2FzeW5jX3RocmVhZF9mdW5jKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZV9hc3luYyk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIGFkZCBhIGdzdF9lbGVtZW50X3NldF9zdGF0ZV9hc3luYyBtZXRob2QgdGhhdAoJICBzZXRzIHRoZSBzdGF0ZSBhbmQgc3RhcnRzIGEgdGhyZWFkIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGUKCSAgY2hhbmdlIGNvbXBsZXRlcyBhcyBiZXN0IGFzIGl0IGNhbgoKMjAwNS0wOS0xMiAxNzowMToxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0cGlwZWxpbmUuYzoKCSAgY29kaWZ5IGRlc2lnbitiZWhhdmlvdXIgaW4gdGVzdHN1aXRlIGFmdGVyIGRpc2N1c3Npb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNvZGlmeSBkZXNpZ24rYmVoYXZpb3VyIGluIHRlc3RzdWl0ZSBhZnRlciBkaXNjdXNzaW9uCgoyMDA1LTA5LTEyIDE2OjEwOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvOiBhZGQgYSBxdW90ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1xdW90ZXMueG1sOgoJICBhZGQgYSBxdW90ZQoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZXRfc3RhdGUpOgoJICBhZGQgc29tZSBkZWJ1ZwoKMjAwNS0wOS0xMiAxMzo0NTowNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvOiBSZW1vdmUgdGhlIHJlcXVpcmVtZW50IGZvciBzdWItY2xhc3NlcyB0byBjYWxsIHRoZSBwYXJlbnQgaW1wbGVtZW50YXRpb24gb2YgcHJlcGFyZV9vdXRwdXRfYnVmZmVyIHdpdGggYSB3cmFwcGUuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3ByZXBhcmVfb3V0cHV0X2J1ZiksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlcik6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3RyYW5zZm9ybV9pcCksCgkgIChnc3RfY2Fwc2ZpbHRlcl9wcmVwYXJlX2J1Zik6CgkgIFJlbW92ZSB0aGUgcmVxdWlyZW1lbnQgZm9yIHN1Yi1jbGFzc2VzIHRvIGNhbGwgdGhlIHBhcmVudAoJICBpbXBsZW1lbnRhdGlvbiBvZiBwcmVwYXJlX291dHB1dF9idWZmZXIgd2l0aCBhIHdyYXBwZXIgZnVuY3Rpb24uCgkgICogZ3N0L2dzdHRhZ2xpc3QuaDoKCSAgKiBnc3QvZ3N0dGFnc2V0dGVyLmg6CgkgIEZpeCAjZGVmaW5lIHdyYXBwZXIKCjIwMDUtMDktMTEgMTk6MjI6MjMgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6IG1vcmUgZG9jIGNsZWFudXBzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIG1vcmUgZG9jIGNsZWFudXBzCgoyMDA1LTA5LTExIDEzOjA3OjI1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luLnNnbWw6CgkqIGdzdC9nc3RtaW5pb2JqZWN0LmM6CgkqIGdzdC9nc3R2YWx1ZS5oOgoJICBkb2MgYnVpbGQgY2xlYW4sIGh1cnJheQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9jIGJ1aWxkIGNsZWFuLCBodXJyYXkKCjIwMDUtMDktMTEgMTI6NTc6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dHlwZXMuc2dtbDoKCSogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGdzdC9nc3RiaW4uaDoKCSogZ3N0L2dzdGJ1ZmZlci5oOgoJKiBnc3QvZ3N0YnVzLmg6CgkqIGdzdC9nc3RjYXBzLmg6CgkqIGdzdC9nc3RjbG9jay5oOgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJKiBnc3QvZ3N0ZXZlbnQuaDoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogZ3N0L2dzdHBhZC5oOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5Lmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICB2YXJpb3VzIGRvYyBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdmFyaW91cyBkb2MgZml4ZXMKCjIwMDUtMDktMTEgMTI6MDI6MDIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICBmaXggc2lsbHkgYnVnIHRoYXQgY2F1c2VkIGJ1aWxkIHRvIGZhaWwgd2hlbiBjaGVjayBpcyBtaXNzaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggc2lsbHkgYnVnIHRoYXQgY2F1c2VkIGJ1aWxkIHRvIGZhaWwgd2hlbiBjaGVjayBpcyBtaXNzaW5nCgoyMDA1LTA5LTExIDEyOjAxOjEyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGRvY3MvZ3N0LzogcmVhcnJhbmdlIGdzdHZhbHVlIHNlY3Rpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHZhbHVlLnNnbWw6CgkgIHJlYXJyYW5nZSBnc3R2YWx1ZSBzZWN0aW9uCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSk6CgkgIE5PTkUgLT4gVk9JRAoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoX2dzdF92YWx1ZV9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0dmFsdWUuaDoKCSAgZG9jIHVwZGF0ZXMKCjIwMDUtMDktMTEgMTE6NTc6MDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJICBkZWJ1ZyBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGVidWcgZml4ZXMKCjIwMDUtMDktMDkgMjM6NDU6MTUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY2hlY2svZ3N0LWxpYnMvY29udHJvbGxlci5jOiBIZWFkZXIgaW5jbHVkZSBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzoKCSAgSGVhZGVyIGluY2x1ZGUgZml4LgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9kZWZhdWx0X3ByZXBhcmVfYnVmKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIFNvbWUgbW9yZSBiYXNldHJhbnNmb3JtIGNoYW5nZXMgYW5kIGZpeGVzIHRvIGVuYWJsZSBzdWItY2xhc3NlcwoJICB0aGF0IG1vZGlmeSBidWZmZXIgbWV0YWRhdGEgb25seS4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfY2xhc3NfaW5pdCksCgkgIChnc3RfY2Fwc2ZpbHRlcl9pbml0KSwgKGdzdF9jYXBzZmlsdGVyX3RyYW5zZm9ybV9pcCksCgkgIChnc3RfY2Fwc2ZpbHRlcl9wcmVwYXJlX2J1Zik6CgkgIElmIHRoZSBvdXRwdXQgcGFkIGhhcyBmaXhlZCBhbGxvd2VkIGNhcHMgYW5kIGlucHV0IGJ1ZmZlcnMKCSAgZG9uJ3QgaGF2ZSBhbnksIHNldCB0aGUgZml4ZWQgY2FwcyBvbiBvdXRnb2luZyBidWZmZXJzLgoKMjAwNS0wOS0wOSAxODowNTo0MCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkgIG9iamVjdCBkZWJ1Z2dpbmcgaXMgZ29vZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgb2JqZWN0IGRlYnVnZ2luZyBpcyBnb29kCgoyMDA1LTA5LTA5IDE3OjQyOjIwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6IE1ha2UgdGhlIGVycm9yIGEgbGl0dGxlIGNsZWFyZXIgd2hlbiB0aGUgdGVzdCBmYWlscyBiZWNhdXNlIGlkZW50aXR5IG1hZGUgYSBjb3B5IG9mIHRoZSBidS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9lbGVtZW50cy9pZGVudGl0eS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBNYWtlIHRoZSBlcnJvciBhIGxpdHRsZSBjbGVhcmVyIHdoZW4gdGhlIHRlc3QgZmFpbHMgYmVjYXVzZQoJICBpZGVudGl0eSBtYWRlIGEgY29weSBvZiB0aGUgYnVmZmVyLgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgIE5ldyBzeW1ib2xzIGluIGdzdGJhc2V0cmFuc2Zvcm0uaAoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwgKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2RlZmF1bHRfcHJlcGFyZV9idWYpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF91bml0X3NpemUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYW5nZV9zdGF0ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Bhc3N0aHJvdWdoKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2lzX2luX3BsYWNlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIENoYW5nZSBCYXNlVHJhbnNmb3JtIHRvIHNlcGFyYXRlIGluX3BsYWNlIG9wZXJhdGUgZnJvbSBzYW1lX2NhcHMKCSAgb3V0cHV0LiBpbl9wbGFjZSBpbXBsaWVzIHRoYXQgdGhlIGVsZW1lbnQgY2FuIHBlcmZvcm0gdGhlIHRyYW5zZm9ybQoJICBvbiBpbmNvbWluZyBidWZmZXJzIGluLXBsYWNlLCBldmVuIGlmIHRoZSBjYXBzIG9uIHRoZSBvdXRwdXQgYXJlCgkgIGRpZmZlcmVudC4KCSAgU3ViLWNsYXNzIGVsZW1lbnRzIGNhbiBub3cgaW1wbGVtZW50IHNwZWNpYWwgYnVmZmVyIGFsbG9jYXRpb24KCSAgbWV0aG9kcyBmb3Igb3V0Z29pbmcgYnVmZmVycyBpZiB0aGV5IHdpc2ggdG8uCgkgIEJpZyBkb2N1bWVudGF0aW9uIGFkZGl0aW9uLgoJICAqIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl90cmFuc2Zvcm1faXApOgoJICAqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICBDaGFuZ2VzIGZvciBiYXNldHJhbnNmb3JtIG1vZGlmaWNhdGlvbnMuCgkgICogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOiAoZ3N0X2Zkc3JjX2luaXQpLCAoZ3N0X2Zkc3JjX2NyZWF0ZSk6CgkgIENvbXBpbGUgZml4LiBFeHRyYSBkZWJ1ZyBvdXRwdXQuCgoyMDA1LTA5LTA5IDE1OjE5OjI0ICswMDAwICBTdGV2ZSBMaG9tbWUgPHN0ZXZlLmxob21tZUBmcmVlLmZyPgoKCSAgZmlsZSBnc3Rjb250cm9sLnZjcHJvaiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpbGUgZ3N0Y29udHJvbC52Y3Byb2ogd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgoyMDA1LTA5LTA5IDE0OjM0OjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL2dzdC9nc3RwYWQuYzogYWRkIHRlc3RzIGZvciB2YWxpZCBwYWQgbmFtaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKSwgKG5hbWVfaXNfdmFsaWQpLAoJICAoZ3N0X3BhZF9zdWl0ZSk6CgkgIGFkZCB0ZXN0cyBmb3IgdmFsaWQgcGFkIG5hbWluZwoJICAqIGdzdC9jaGVjay9nc3RjaGVjay5jOiAoZ3N0X2NoZWNrX2xvZ19tZXNzYWdlX2Z1bmMpLAoJICAoZ3N0X2NoZWNrX2xvZ19jcml0aWNhbF9mdW5jKToKCSAgYWRkIEFTU0VSVF9XQVJOSU5HCgkgIHJlbW92ZSBwcmludGluZyBvZiBjb2RlLCBpdCBpcyBmcmFnaWxlIHdoZW4gdGhlIGNvZGUgY29udGFpbnMKCSAgJSBhbmQgdGhlIGxpbmUgbnVtYmVyIGlzIGVub3VnaCBpbmZvCgkgICogZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF90ZW1wbGF0ZV9uZXcpOgoJICBmaXggbWVtbGVha3MKCjIwMDUtMDktMDkgMTM6Mjg6MDYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJICBhbmQgdGhlIGNoYW5nZWxvZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYW5kIHRoZSBjaGFuZ2Vsb2cKCjIwMDUtMDktMDkgMTM6MjY6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiBzYXkgd2hhdCBDSEVDSyBmbGFncyB3ZSB1c2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBzYXkgd2hhdCBDSEVDSyBmbGFncyB3ZSB1c2UKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMudHlwZXM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3QtY29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWhlbHBlci5jOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWludGVycG9sYXRpb24uYzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9wbHVnaW5faW5mbyk6CgkgIHdlIGRvbid0IHVzZSBkYXNoZXMgaW4gaGVhZGVyIG5hbWVzCgoyMDA1LTA5LTA5IDEyOjAyOjQxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrLzogYWRkaW5nIGEgdGVzdCBmb3IgcGlwZWxpbmVzIGFuZCBzdGF0ZSBjaGFuZ2VzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICAqIGNoZWNrL2dzdC9nc3RwaXBlbGluZS5jOiAocG9wX21lc3NhZ2VzKSwgKEdTVF9TVEFSVF9URVNUKSwKCSAgKGdzdF9waXBlbGluZV9zdWl0ZSksIChtYWluKToKCSAgYWRkaW5nIGEgdGVzdCBmb3IgcGlwZWxpbmVzIGFuZCBzdGF0ZSBjaGFuZ2VzCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnZXRfc3RhdGVfZnVuYyk6CgkgIGFkZCBzb21lIGRlYnVnZ2luZwoJICAqIGdzdHJlYW1lci5zcGVjLmluOgoJICBmaXggdXAgc3BlYyBmaWxlCgoyMDA1LTA5LTA4IDE3OjIzOjU3ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc3JjLmg6CgkqIGdzdC9nc3RldmVudC5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc3JjLmg6CgkgIFZhcmlvdXMgZml4ZXMgZm9yIHVuc2Vla2FibGUsIHVubW1hcGFibGUsIGFuZCBub24tbm9ybWFsIGZpbGVzLCBzbyB0aGF0IGZhbGxiYWNrIHRvIHJlYWQoKSByYXRoZXIgdGhhbiBtbWFwKCkgd29ya3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBWYXJpb3VzIGZpeGVzIGZvciB1bnNlZWthYmxlLCB1bm1tYXBhYmxlLCBhbmQgbm9uLW5vcm1hbCBmaWxlcywgc28gdGhhdAoJICBmYWxsYmFjayB0byByZWFkKCkgcmF0aGVyIHRoYW4gbW1hcCgpIHdvcmtzLgoJICBBbGxvdyBuZXdzZWdtZW50IGV2ZW50cyB3aXRoIHN0YXJ0ID09IGVuZCwgc28gdGhhdCBjYXNlcyB3aGVyZSB0aGF0J3MKCSAgY29ycmVjdCB3b3JrIChlLmcuIGZpbGVzcmMgb24gYSB6ZXJvLXNpemUgZmlsZSkuCgoyMDA1LTA5LTA4IDExOjQ1OjEyICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBkb2NzL3B3Zy9idWlsZGluZy1zdGF0ZS54bWw6CgkgIFVwZGF0ZSB0aGUgbWFudWFsIHNlY3Rpb24gb24gc3RhdGUgY2hhbmdlcyBmb3Igd2luZ28ncyBuZXcgQVBJCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBVcGRhdGUgdGhlIG1hbnVhbCBzZWN0aW9uIG9uIHN0YXRlIGNoYW5nZXMgZm9yIHdpbmdvJ3MgbmV3IEFQSQoKMjAwNS0wOS0wNyAxNToyMjoyOSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IENhbGwgZ19tb2R1bGVfY2xvc2Ugd2hlbiB3ZSBkb24ndCBsb2FkIHRoZSBtb2R1bGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiAoZ3N0X3BsdWdpbl9sb2FkX2ZpbGUpOgoJICBDYWxsIGdfbW9kdWxlX2Nsb3NlIHdoZW4gd2UgZG9uJ3QgbG9hZCB0aGUgbW9kdWxlCgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuYzoKCSAgKGdzdF94bWxfcmVnaXN0cnlfZ2V0X3Byb3BlcnR5KToKCSAgUG9ydCBsZWFrIGZpeCBmcm9tIDAuOAoKMjAwNS0wOS0wNyAxNDowODo0NiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcG8vUE9URklMRVMuaW46CgkgIG1vcmUgcmVuYW1lIGZpeGluZyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgcmVuYW1lIGZpeGluZyAuLi4KCjIwMDUtMDktMDcgMTM6MjI6MTYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIHJlbmFtZWQgZ3N0dGFnIC0+IGdzdHRhZ2xpc3QsIGdzdHRhZ2ludGVyZmFjZSAtPiBnc3R0YWdzZXR0ZXIgaW5saW5lZCBkb2NzIGZvciBnc3R0cmFjZSwgZ3N0dHJhc2hzdGFjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHRyYWNlLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0cmFzaHN0YWNrLnNnbWw6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3QuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiBnc3QvZ3N0dGFnLmM6CgkgICogZ3N0L2dzdHRhZy5oOgoJICAqIGdzdC9nc3R0YWdpbnRlcmZhY2UuYzoKCSAgKiBnc3QvZ3N0dGFnaW50ZXJmYWNlLmg6CgkgICogZ3N0L2dzdHRhZ2xpc3QuYzoKCSAgKiBnc3QvZ3N0dGFnbGlzdC5oOgoJICAqIGdzdC9nc3R0YWdzZXR0ZXIuYzoKCSAgKiBnc3QvZ3N0dGFnc2V0dGVyLmg6CgkgICogZ3N0L2dzdHRyYWNlLmM6CgkgICogZ3N0L2dzdHRyYWNlLmg6CgkgICogZ3N0L2dzdHRyYXNoc3RhY2suYzoKCSAgcmVuYW1lZCBnc3R0YWcgLT4gZ3N0dGFnbGlzdCwgZ3N0dGFnaW50ZXJmYWNlIC0+IGdzdHRhZ3NldHRlcgoJICBpbmxpbmVkIGRvY3MgZm9yIGdzdHRyYWNlLCBnc3R0cmFzaHN0YWNrCgoyMDA1LTA5LTA3IDEyOjM1OjIzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvOiBzcGxpdHRlZCBnc3R0eXBlZmluZCBpbnRvIGdzdHR5cGVmaW5kLCBnc3R0eXBlZmluZGZhY3RvcnkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9nc3RidWZmZXJzdG9yZS5oOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgICogZ3N0L2dzdC5oOgoJICAqIGdzdC9nc3R0eXBlZmluZC5jOgoJICAqIGdzdC9nc3R0eXBlZmluZC5oOgoJICAqIGdzdC9nc3R0eXBlZmluZGZhY3RvcnkuYzogKGdzdF90eXBlX2ZpbmRfZmFjdG9yeV9nZXRfdHlwZSksCgkgIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfY2xhc3NfaW5pdCksIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfaW5pdCksCgkgIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfZGlzcG9zZSksCgkgIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfdW5sb2FkX3RoeXNlbGYpLAoJICAoZ3N0X3R5cGVfZmluZF9sb2FkX3BsdWdpbiksIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfZ2V0X2xpc3QpLAoJICAoZ3N0X3R5cGVfZmluZF9mYWN0b3J5X2dldF9jYXBzKSwKCSAgKGdzdF90eXBlX2ZpbmRfZmFjdG9yeV9nZXRfZXh0ZW5zaW9ucyksCgkgIChnc3RfdHlwZV9maW5kX2ZhY3RvcnlfY2FsbF9mdW5jdGlvbik6CgkgICogZ3N0L2dzdHR5cGVmaW5kZmFjdG9yeS5oOgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuYzoKCSAgc3BsaXR0ZWQgZ3N0dHlwZWZpbmQgaW50byBnc3R0eXBlZmluZCwgZ3N0dHlwZWZpbmRmYWN0b3J5CgoyMDA1LTA5LTA3IDEwOjA2OjU2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1bGwpOiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZWJ5IHRoZSBwYWQncyB0YXNrIGZ1bmN0aW9uIGlzIGVudGVyZWQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMDcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdWxsKTogRml4IGEgcmFjZQoJICBjb25kaXRpb24gd2hlcmVieSB0aGUgcGFkJ3MgdGFzayBmdW5jdGlvbiBpcyBlbnRlcmVkIGJlZm9yZSB0aGUKCSAgcGFkX21vZGUgdmFyaWFibGUgd2FzIHNldC4KCjIwMDUtMDktMDYgMjI6NTc6MDUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBDYXRjaCBtaXNiZWhhdmluZyBwYWRfYWxsb2MgZnVuY3Rpb25zIHRoYXQgZG9uJ3Qgc2V0IHVwIGNhcHMgYW5kIGRvIGl0IGZvciB0aGVtLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FsbG9jX2J1ZmZlcik6CgkgIENhdGNoIG1pc2JlaGF2aW5nIHBhZF9hbGxvYyBmdW5jdGlvbnMgdGhhdCBkb24ndAoJICBzZXQgdXAgY2FwcyBhbmQgZG8gaXQgZm9yIHRoZW0uCgoyMDA1LTA5LTA2IDIyOjAzOjAxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOiB0ZXN0IGZvciBwaXBlIT1OVUxMCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6IChydW5fcGlwZWxpbmUpOgoJICB0ZXN0IGZvciBwaXBlIT1OVUxMCgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0bWVtY2h1bmsuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHBhcnNlLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0YWdsaXN0LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0YWdzZXR0ZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHR5cGVmaW5kLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0eXBlZmluZGZhY3Rvcnkuc2dtbDoKCSAgKiBnc3QvZ3N0bWVtY2h1bmsuYzoKCSAgKiBnc3QvZ3N0cGFyc2UuYzoKCSAgKiBnc3QvZ3N0dGFnLmM6CgkgICogZ3N0L2dzdHRhZ2ludGVyZmFjZS5jOgoJICAqIGdzdC9nc3R0eXBlZmluZC5jOgoJICAqIGdzdC9nc3R0eXBlZmluZC5oOgoJICBpbmxpbmVkIG1vcmUgZG9jcwoKMjAwNS0wOS0wNiAxODoxODo0OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6CgkgIGFkZCBhIGNoZWNrIGZvciBhIGdob3N0cGFkIHRoYXQgZG9lc24ndCBoYXZlIGEgdGFyZ2V0IGJlaW5nIGxpbmtlZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGEgY2hlY2sgZm9yIGEgZ2hvc3RwYWQgdGhhdCBkb2Vzbid0IGhhdmUgYSB0YXJnZXQgYmVpbmcgbGlua2VkCgoyMDA1LTA5LTA2IDE0OjExOjIxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBoZWFkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIGhlYWQKCj09PSByZWxlYXNlIDAuOS4yID09PQoKMjAwNS0wOS0wNiAxNDowMjoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFQURNRToKCSogUkVMRUFTRToKCSogY29uZmlndXJlLmFjOgoJICByZWxlYXNpbmcgMC45LjIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbGVhc2luZyAwLjkuMgoKMjAwNS0wOS0wNiAxMTo0NTowMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBSRUFETUU6CgkqIGNvbW1vbjoKCSAgdXBkYXRlIHJlYWRtZSB3aXRoIGV4cGxhbmF0aW9uIG9mIG1vZHVsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSByZWFkbWUgd2l0aCBleHBsYW5hdGlvbiBvZiBtb2R1bGVzCgoyMDA1LTA5LTA2IDA5OjUyOjIzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBkb2NzL3JhbmRvbS9DaGFuZ2VMb2ctMC44OgoJICBjaGFuZ2Vsb2cgc3BsaXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNoYW5nZWxvZyBzcGxpdAoKMjAwNS0wOS0wNSAxNzo1NToxMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBhdXRvZ2VuLnNoOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBsdWdpbi5zZ21sOgoJICBtYWludGVuYW5jZSB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtYWludGVuYW5jZSB1cGRhdGVzCgoyMDA1LTA5LTA1IDE3OjUzOjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgYWRkaW5nIC1iYWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZGluZyAtYmFkCgoyMDA1LTA5LTA1IDE2OjU0OjU0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS4qOiBhbmQgdXBkYXRlIHRvIG5ld2VyIEFQSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuaDoKCSAgKiBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS5jOiBhbmQgdXBkYXRlIHRvIG5ld2VyIEFQSS4KCSAgSW5jaWRlbnRhbGx5IHRoZXkgc2hvdWxkIGJlIGEgYml0IGZhc3RlciBub3cgdGhhdCB0aGV5IGRvbid0IGhhdmUKCSAgdG8gcGFyc2UgdGhlIGNhcHMuCgoyMDA1LTA5LTA1IDE2OjUyOjU2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS4qOiBVbS4uLiByZXN1cnJlY3QuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMDUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuaDoKCSAgKiBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS5jOiBVbS4uLiByZXN1cnJlY3QuLi4KCjIwMDUtMDktMDUgMTY6MzY6NDcgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9yZWdpc3RyaWVzL2dzdHhtbHJlZ2lzdHJ5Lio6IFJlbW92ZSBmcm9tIENWUywgdGhleSB3ZXJlIHJlcGxhY2VkIGJ5IHRoZSBsaWJ4bWwgcmVnaXN0cnkgYSB3aGlsZSBiYWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA5LTA1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdHhtbHJlZ2lzdHJ5Lmg6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuYzogUmVtb3ZlIGZyb20gQ1ZTLCB0aGV5IHdlcmUKCSAgcmVwbGFjZWQgYnkgdGhlIGxpYnhtbCByZWdpc3RyeSBhIHdoaWxlIGJhY2sKCjIwMDUtMDktMDUgMTE6NTQ6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ2VuZXJpYy8uZ2l0aWdub3JlOgoJKiBjaGVjay9nc3QvLmdpdGlnbm9yZToKCSogZG9jcy9SRUFETUU6CgkqIGV4YW1wbGVzL3B3Zy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9jaGVjay9nZW5lcmljLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2dzdC8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvcHdnLy5naXRpZ25vcmU6CgkgIG1haW50ZW5hbmNlIHVwZGF0ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1haW50ZW5hbmNlIHVwZGF0ZXMKCjIwMDUtMDktMDUgMDk6Mzg6MzggKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgIFJldmVyIHRvIDEuODAgdmVyc2lvbiBvZiB0aGlzIGZpbGUgYXMgR3N0VXRpbHMgaXMgbm90IGFzIGRlYWQgYXMgaXQgc2VlbWVkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXZlciB0byAxLjgwIHZlcnNpb24gb2YgdGhpcyBmaWxlIGFzIEdzdFV0aWxzIGlzIG5vdCBhcyBkZWFkIGFzIGl0IHNlZW1lZAoKMjAwNS0wOS0wNSAwOToyMzo0NCArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogY29tbW9uOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICByZW1vdmUgR3N0VXRpbHMgbWVudGlvbiBhcyBpdCBpcyBub3cgZ29uZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIEdzdFV0aWxzIG1lbnRpb24gYXMgaXQgaXMgbm93IGdvbmUKCjIwMDUtMDktMDQgMTE6MDE6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNoZWNrLnBjLmluOgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIG5lZWQgdG8gYWRkIC1sY2hlY2sgdG8gdGhlIHBrZ2NvbmZpZyBmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBuZWVkIHRvIGFkZCAtbGNoZWNrIHRvIHRoZSBwa2djb25maWcgZmlsZQoKMjAwNS0wOS0wMyAxNzozNjoyMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0cGx1Z2luLmM6CgkgIGZpeCBmb3IgYSBjcml0aWNhbCB3aGVuIGEgbW9kdWxlIHJldHVybnMgTlVMTCBvbiBvcGVuaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggZm9yIGEgY3JpdGljYWwgd2hlbiBhIG1vZHVsZSByZXR1cm5zIE5VTEwgb24gb3BlbmluZwoKMjAwNS0wOS0wMyAxNzowMDo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luLnNnbWw6CgkqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3RwbHVnaW4uYzoKCSogZ3N0L2dzdHBsdWdpbi5oOgoJKiBnc3QvcmVnaXN0cmllcy9nc3RsaWJ4bWxyZWdpc3RyeS5jOgoJKiBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkgIGFkZCBhIHNvdXJjZSBwbHVnaW4gZGVzY3JpcHRpb24gZmllbGQsIHRvIHJlcHJlc2VudCB0aGUgc291cmNlIG1vZHVsZSB0aGlzIHBsdWdpbiBpcyBhIHBhcnQgb2YuICBCeSBkZWZhdWx0IEdTVF9QTFVHSS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGEgc291cmNlIHBsdWdpbiBkZXNjcmlwdGlvbiBmaWVsZCwgdG8gcmVwcmVzZW50IHRoZSBzb3VyY2UKCSAgbW9kdWxlIHRoaXMgcGx1Z2luIGlzIGEgcGFydCBvZi4gIEJ5IGRlZmF1bHQgR1NUX1BMVUdJTl9ERUZJTkUKCSAgd2lsbCBzZXQgaXQgdG8gUEFDS0FHRSwgd2hpY2ggaXMgYXV0b21ha2UncyBpZGVhIG9mIHRoZSBuYW1lIG9mCgkgIHRoZSBzb3VyY2UgcHJvamVjdC4KCjIwMDUtMDktMDMgMTY6MTY6MTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29tbW9uOgoJKiBkb2NzL2h0bWxpbnN0YWxsLm1hazoKCSAgZml4IGRpc3RjaGVjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGRpc3RjaGVjawoKMjAwNS0wOS0wMyAxNDoyMDoxMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBNYWtlZmlsZS5hbToKCSogZG9jcy9odG1saW5zdGFsbC5tYWs6CgkgIGVuYWJsZSBkb2NzIGJ1aWxkIGZvciBkaXN0Y2hlY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGVuYWJsZSBkb2NzIGJ1aWxkIGZvciBkaXN0Y2hlY2sKCjIwMDUtMDktMDMgMTM6NTQ6MjYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9wbHVnaW5zLy5naXRpZ25vcmU6CgkqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKCSogZG9jcy9wbHVnaW5zL2dzdGRvYy1ta2RiOgoJKiBkb2NzL3BsdWdpbnMvZ3N0ZG9jLW1rdG1wbDoKCSogZG9jcy9wbHVnaW5zL2dzdGRvYy1zY2Fub2JqOgoJKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtZG9jcy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMtc2VjdGlvbnMudHh0OgoJKiBkb2NzL3BsdWdpbnMvZ3N0cmVhbWVyLXBsdWdpbnMudHlwZXMuaW46CgkqIGRvY3MvcGx1Z2lucy90bXBsL2FjM2RlYy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9hYzNwYXJzZS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9hdWRpb3NjYWxlLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2NvYmluLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2R2ZHNyYy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9leGFtcGxlLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdGF2aWVuY29kZXIuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvZ3N0anBlZy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3RqcGVnZGVjLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdGpwZWdlbmMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvZ3N0bXBlZzFlbmNvZGVyLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdG1wZWcyZW5jLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdG1wZWcycGxheS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3RtcGVnX3BsYXkuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvZ3N0bXBlZ2F1ZGlvLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdG1wZzEyMy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3RwYXJzZWF1LnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdHBhcnNlYXZpLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdHBhcnNld2F2LnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdHJlYW1lci1wbHVnaW5zLXVudXNlZC5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3RzcGVjdHJ1bS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3R2NGxzcmMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvZ3N0d2luY29kZWMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvZ3N0d2luZGVjLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL2dzdHdpbmVuYy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3R4YS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9nc3R4aW5nLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL21lZGlhbi5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9tcDF2aWRlb3BhcnNlLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL21wMnZpZGVvcGFyc2Uuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvbXAzcGFyc2Uuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvbXBlZzFwYXJzZS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9tcGVnMnBhcnNlLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL21wZWcyc3VidC5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9ydGpwZWdkZWMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvcnRqcGVnZW5jLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL3Ntb290aC5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9zbW9vdGh3YXZlLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL3NwaW5kZW50aXR5LnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL3N0ZXJlby5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC9zeW5hZXN0aGVzaWEuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvc3lzdGVtX2VuY29kZS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC92Y2RzcmMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvdmlkZW9zY2FsZS5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC92aWRlb3Npbmsuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvdm9sdW1lLnNnbWw6CgkqIGRvY3MvcGx1Z2lucy90bXBsL3ZvcmJpc2RlYy5zZ21sOgoJKiBkb2NzL3BsdWdpbnMvdG1wbC92b3JiaXNlbmMuc2dtbDoKCSogZG9jcy9wbHVnaW5zL3RtcGwvdnVtZXRlci5zZ21sOgoJICByZW1vdmUgb2xkIHBsdWdpbnMgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIG9sZCBwbHVnaW5zIGRvY3MKCjIwMDUtMDktMDMgMTM6NDk6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBNYWtlZmlsZS5hbToKCSogYXV0b2dlbi5zaDoKCSogY29tbW9uOgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvTWFrZWZpbGUuYW06CgkqIGRvY3MvZmFxL01ha2VmaWxlLmFtOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBkb2NzL2h0bWxpbnN0YWxsLm1hazoKCSogZG9jcy9tYW51YWwvTWFrZWZpbGUuYW06CgkqIGRvY3MvcHdnL01ha2VmaWxlLmFtOgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICBjbGVhbiB1cCBkb2NzIGJ1aWxkIGEgbGl0dGxlOyBoYXZlIGRvY2RpciBiZSBhbiBvdmVycmlkYWJsZSBpbnN0YWxsIGxvY2F0aW9uOyBzZXBhcmF0ZSBndGstZG9jIGFuZCBkb2Nib29rIGJpdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNsZWFuIHVwIGRvY3MgYnVpbGQgYSBsaXR0bGU7IGhhdmUgZG9jZGlyIGJlIGFuIG92ZXJyaWRhYmxlIGluc3RhbGwgbG9jYXRpb247IHNlcGFyYXRlIGd0ay1kb2MgYW5kIGRvY2Jvb2sgYml0cwoKMjAwNS0wOS0wMiAyMzozNjoyNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0dXJpLmg6CgkgIHdoaXRlc3BhY2UgY2xlYW51cHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdoaXRlc3BhY2UgY2xlYW51cHMKCjIwMDUtMDktMDIgMjM6MTc6MjYgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBBZGQgY29tbWVudC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcGFkX2J1ZmZlcl9hbGxvYyk6CgkgIEFkZCBjb21tZW50LgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOiAoZ3N0X2Zha2Vfc2lua19pbml0KSwKCSAgKGdzdF9mYWtlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgTWFrZSBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gdGhyZWFkLXNhZmUuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hbGxvY19idWZmZXIpOgoJICBTZXQgb2Zmc2V0IG9uIGdlbmVyaWMgYnVmZmVyIGFsbG9jYXRlZCBieSBmYWxsYmFjay4KCjIwMDUtMDktMDIgMjM6MDM6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHRyYXNoc3RhY2suaDoKCSAgd2hpdGVzcGFjZSBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgd2hpdGVzcGFjZSBmaXhlcwoKMjAwNS0wOS0wMiAyMTozNzo1NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcnVuIHRoZSB3aW5nby1tYWdpYyBzY3JpcHQgYWdhaW5zdCB0aGUgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudC5zZ21sOgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9zZXRfaW50ZXJwb2xhdGlvbl9tb2RlKSwKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X25ldyksCgkgIChnc3RfY29udHJvbGxlcl9maW5kX2NvbnRyb2xsZWRfcHJvcGVydHkpOgoJICBydW4gdGhlIHdpbmdvLW1hZ2ljIHNjcmlwdCBhZ2FpbnN0IHRoZSBkb2NzCgoyMDA1LTA5LTAyIDE4OjM2OjA5ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBkb2NzL2dzdC90bXBsL2dzdHF1ZXVlLnNnbWw6CgkgIHJlbW92ZWQgZmlsZSBhZ2FpbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlZCBmaWxlIGFnYWluCgoyMDA1LTA5LTAyIDE3OjIzOjA2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBtZXJnZWQgZWxlbWVudGRldGFpbHMgZG9jcyBpbnRvIGVsZW1lbnRmYWN0b3J5IGRvY3MgaW5saW5lZCBib3RoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC90bXBsLy5jdnNpZ25vcmU6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50ZGV0YWlscy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudGZhY3Rvcnkuc2dtbDoKCSAgKiBnc3QvZ3N0LmM6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJICBtZXJnZWQgZWxlbWVudGRldGFpbHMgZG9jcyBpbnRvIGVsZW1lbnRmYWN0b3J5IGRvY3MKCSAgaW5saW5lZCBib3RoCgoyMDA1LTA5LTAyIDE2OjQ0OjU3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZWxlbWVudC5oOiBBZGQgbWFnaWNhbCBwaXhpZSBkdXN0IHRvIG1ha2UgZ2xpYi1ta2VudW1zIGNvbnNpZGVyIHRoaXMgZW51bSBhbiBlbnVtIGFuZCBub3QgYSBmbGFncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMDIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGVsZW1lbnQuaDogQWRkIG1hZ2ljYWwgcGl4aWUgZHVzdCB0byBtYWtlIGdsaWItbWtlbnVtcwoJICBjb25zaWRlciB0aGlzIGVudW0gYW4gZW51bSBhbmQgbm90IGEgZmxhZ3MuCgoyMDA1LTA5LTAyIDE2OjE3OjIzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBtb3JlIGRvY3MgaW5saW5lZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGdob3N0cGFkLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RpdGVyYXRvci5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0bWFjcm9zLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RyZWFscGFkLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RyZWdpc3RyeS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0cmVnaXN0cnlwb29sLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RzdHJ1Y3R1cmUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHN5c3RlbWNsb2NrLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0cmFjZS5zZ21sOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOgoJICAqIGdzdC9nc3RtYWNyb3MuaDoKCSAgKiBnc3QvZ3N0bWVtY2h1bmsuYzoKCSAgKiBnc3QvZ3N0bWVtY2h1bmsuaDoKCSAgKiBnc3QvZ3N0cXVldWUuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzoKCSAgKiBnc3QvZ3N0cmVnaXN0cnlwb29sLmM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJICBtb3JlIGRvY3MgaW5saW5lZAoKMjAwNS0wOS0wMiAxNTo0MjowMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuaCAoR3N0U3RhdGUpOiBSZW5hbWVkIGZyb20gR3N0RWxlbWVudFN0YXRlLCBjaGFuZ2VkIHRvIGJlIGEgbm9ybWFsIGVudW0gaW5zdGVhZCBvZiBmbGFncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDktMDIgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGVsZW1lbnQuaCAoR3N0U3RhdGUpOiBSZW5hbWVkIGZyb20gR3N0RWxlbWVudFN0YXRlLAoJICBjaGFuZ2VkIHRvIGJlIGEgbm9ybWFsIGVudW0gaW5zdGVhZCBvZiBmbGFncy4KCSAgKEdzdFN0YXRlQ2hhbmdlUmV0dXJuKTogUmVuYW1lZCBmcm9tIEdzdEVsZW1lbnRTdGF0ZVJldHVybiwgbmFtZXMKCSAgbXVuZ2VkIHRvIGJlIEdTVF9TVEFURV9DSEFOR0VfKi4KCSAgKEdTVF9TVEFURV9DSEFOR0UpOiBSZW5hbWVkIGZyb20gR1NUX1NUQVRFX1RSQU5TSVRJT04sIHVwZGF0ZWQgdG8KCSAgd29yayB3aXRoIHRoZSBuZXcgc3RhdGUgcmVwcmVzZW50YXRpb24uCgkgIChHc3RTdGF0ZUNoYW5nZSk6IE5ldyBlbnVtZXJhdGlvbiBvZiBwb3NzaWJsZSBzdGF0ZSB0cmFuc2l0aW9ucy4KCSAgUmVwbGFjZXMgR1NUX1NUQVRFX0ZPT19UT19CQVIgd2l0aCBHU1RfU1RBVEVfQ0hBTkdFX0ZPT19UT19CQVIuCgkgIChHc3RFbGVtZW50Q2xhc3M6OmNoYW5nZV9zdGF0ZSk6IFBhc3MgdGhlIEdzdFN0YXRlQ2hhbmdlIGFsb25nIGFzCgkgIGFuIGFyZ3VtZW50LiBIZWxwcyBsYW5ndWFnZSBiaW5kaW5ncywgc28gdGhleSBkb24ndCBoYXZlIHRvIHVzZQoJICB0cmlja3kgbG9jay1uZWVkaW5nIG1hY3JvcyBsaWtlIEdTVF9TVEFURV9DSEFOR0UgKCkuCgkgICogc2NyaXB0cy91cGRhdGUtc3RhdGVzIChmaWxlKTogTmV3IHNjcmlwdC4gUnVuIGl0IG9uIGEgZmlsZSB0bwoJICB1cGRhdGUgaXQgZm9yIHN0YXRlIG5hbWluZyBhbmQgQVBJIGNoYW5nZXMuIFVwZGF0ZXMgZmlsZXMgaW4KCSAgcGxhY2UuCgkgICogQWxsIGZpbGVzIHVwZGF0ZWQgZm9yIHRoZSBuZXcgQVBJLgoKMjAwNS0wOS0wMiAxMjoxMTo1NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgY2xlYW4gdXAgc3BlYyBzb21lIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNsZWFuIHVwIHNwZWMgc29tZSBtb3JlCgoyMDA1LTA5LTAyIDEyOjA4OjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC86IGZpeCBhIGJ1bmNoIG9mIHVuY2hlY2tlZCByZXR1cm4gdmFsdWVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0cmFjZS5jOiAoZ3N0X3RyYWNlX2ZsdXNoKSwgKGdzdF90cmFjZV90ZXh0X2ZsdXNoKToKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF91dGlsX3NldF92YWx1ZV9mcm9tX3N0cmluZyksCgkgIChnc3RfdXRpbF9zZXRfb2JqZWN0X2FyZyk6CgkgIGZpeCBhIGJ1bmNoIG9mIHVuY2hlY2tlZCByZXR1cm4gdmFsdWVzCgkgICogdG9vbHMvZ3N0LWNvbXBsZXRlLmM6IChtYWluKToKCSAgKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgY2xlYW4gdXAgYSBsaXR0bGUKCjIwMDUtMDktMDEgMTk6MDY6MzkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRvY3MvZ3N0L3RtcGwvLmdpdGlnbm9yZToKCSogZG9jcy9nc3QvdG1wbC9nc3R0YWdsaXN0LnNnbWw6CgkgIHVwZGF0ZWQgLmN2c2lnbm9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdXBkYXRlZCAuY3ZzaWdub3JlCgoyMDA1LTA5LTAxIDE4OjEyOjE4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuKjogSGFuZGxlIG5ld3NlZ21lbnRzIG1vcmUgY29ycmVjdGx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX2V2ZW50KToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBIYW5kbGUgbmV3c2VnbWVudHMgbW9yZSBjb3JyZWN0bHkuCgkgICogZ3N0L2dzdGJ1cy5jOgoJICBGaXggZG9jcy4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfbmV3c2VnbWVudCk6CgkgIEEgbmV3c2VnbWVudCBjYW5ub3QgaGF2ZSBhIHN0YXJ0X3RpbWUgb2YgLTEKCjIwMDUtMDktMDEgMTY6NTM6MTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICB3aW4zMi9nc3RlbnVtdHlwZXMuKjogVXBkYXRlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHdpbjMyL2dzdGVudW10eXBlcy5jOgoJICAqIHdpbjMyL2dzdGVudW10eXBlcy5oOgoJICBVcGRhdGUKCjIwMDUtMDgtMzEgMjE6MDE6MzUgKzAwMDAgIE1pY2hhZWwgU21pdGggPG1zbWl0aEB4aXBoLm9yZz4KCgkqIGRvY3MvcHdnL2J1aWxkaW5nLWJvaWxlci54bWw6CgkgIFJlbW92ZSBleHRyYW5lb3VzICdjbycgZnJvbSBjdnMgY29tbWFuZCBpbiBQV0csIGFzIHJlcG9ydGVkIG9uIGlyYy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlbW92ZSBleHRyYW5lb3VzICdjbycgZnJvbSBjdnMgY29tbWFuZCBpbiBQV0csIGFzIHJlcG9ydGVkIG9uIGlyYy4KCjIwMDUtMDgtMzEgMTg6NDU6NDEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWNvbnRyb2xsZXIuYzogZml4ZWQgYm9vbGVhbiBhZ2FpbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9zZXRfaW50ZXJwb2xhdGlvbl9tb2RlKSwKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X25ldyk6CgkgIGZpeGVkIGJvb2xlYW4gYWdhaW4KCjIwMDUtMDgtMzEgMTU6Mjc6NTUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOiBhZGQgLWdvb2QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJICBhZGQgLWdvb2QKCSAgKiBnc3QvZ3N0ZXZlbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgcmVtb3ZlIHdyb25nIGRvY3MKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2xpbmtfZmlsdGVyZWQpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBhZGQgZ3N0X2VsZW1lbnRfbGlua19maWx0ZXJlZAoKMjAwNS0wOC0zMSAxNDowODo0NSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgaW5saW5lZCBtb3JlIGRvY3MsIGZpeGVkIGRvdWJsZSBpZC1yZWYKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGVycm9yLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RmaWx0ZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHVyaWhhbmRsZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHVyaXR5cGUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHV0aWxzLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R4bWwuc2dtbDoKCSAgKiBnc3QvZ3N0ZXJyb3IuYzoKCSAgKiBnc3QvZ3N0ZXJyb3IuaDoKCSAgKiBnc3QvZ3N0ZmlsdGVyLmM6CgkgICogZ3N0L2dzdHVyaS5jOgoJICAqIGdzdC9nc3R1cml0eXBlLmM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgICogZ3N0L2dzdHhtbC5jOgoJICBpbmxpbmVkIG1vcmUgZG9jcywgZml4ZWQgZG91YmxlIGlkLXJlZgoKMjAwNS0wOC0zMSAxMzo1MzozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogUGFzc3Rocm91Z2ggZWxlbWVudHMgZG9uJ3QgbmVlZCB0aGUgY2FwcyBhcyB0aGV5IGRvbid0IGNhcmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgUGFzc3Rocm91Z2ggZWxlbWVudHMgZG9uJ3QgbmVlZCB0aGUgY2FwcyBhcyB0aGV5IGRvbid0IGNhcmUuCgoyMDA1LTA4LTMxIDEzOjUwOjQwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBEb24ndCBsZWFrIHJlZmNvdW50cyBvbiBidWZmZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0Y2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pOgoJICBEb24ndCBsZWFrIHJlZmNvdW50cyBvbiBidWZmZXJzLgoKMjAwNS0wOC0zMSAxMzo0MToxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uKjogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBub3QgbmVnb3RpYXRlZCBtb3JlIGdyYWNlZnVsbHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9jb25maWd1cmVfY2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0Y2FwcyksIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlciksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBuZWdvdGlhdGVkIG1vcmUgZ3JhY2VmdWxseS4KCjIwMDUtMDgtMzEgMTI6NTU6NTQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiBTZXQgUkVBRE9OTFkgZmxhZyBvbiBtbWFwJ2VkIGJ1ZmZlcnMsIG90aGVyd2lzZSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUoKSB3b24ndCB3b3JrIHByb3AuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9tbWFwX2J1ZmZlcl9pbml0KSwKCSAgKGdzdF9maWxlX3NyY19tYXBfcmVnaW9uKToKCSAgU2V0IFJFQURPTkxZIGZsYWcgb24gbW1hcCdlZCBidWZmZXJzLCBvdGhlcndpc2UKCSAgZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlKCkgd29uJ3Qgd29yayBwcm9wZXJseSAoIzMxNDcwOCkuCgoyMDA1LTA4LTMxIDEwOjA3OjI0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBwYXNzdGhyb3VnaCBlbGVtZW50cyBjYW4gZXZlbiBkbyBpbnBsYWNlIG9uIG5vbiB3cml0YWJsZSBidWZmZXJzIChhcyB0aGV5IGRvbid0IHRvdWNoIHRoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgcGFzc3Rocm91Z2ggZWxlbWVudHMgY2FuIGV2ZW4gZG8gaW5wbGFjZSBvbiBub24gd3JpdGFibGUKCSAgYnVmZmVycyAoYXMgdGhleSBkb24ndCB0b3VjaCB0aGVtKS4KCjIwMDUtMDgtMzEgMTA6MDA6MDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzogbW9yZSB0ZXN0cyAoaGVoZSBJIGhhdmUgdGhlIG1vc3QpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzogKGdzdF90ZXN0X21vbm9fc291cmNlX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfdGVzdF9tb25vX3NvdXJjZV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X3Rlc3RfbW9ub19zb3VyY2VfY2xhc3NfaW5pdCksIChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIG1vcmUgdGVzdHMgKGhlaGUgSSBoYXZlIHRoZSBtb3N0KQoJICAqIGdzdC9nc3RidXMuYzoKCSAgZGVzY3JpYmUgcG9wcGluZyBtZXNzYWdlcyB3aGVudXNpbmcgbXVsbHRpcGxlIHNvdXJjZXMKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkgIChnc3RfY29udHJvbGxlZF9wcm9wZXJ0eV9zZXRfaW50ZXJwb2xhdGlvbl9tb2RlKSwKCSAgKGdzdF9jb250cm9sbGVkX3Byb3BlcnR5X25ldyk6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3QtY29udHJvbGxlci5oOgoJICAqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWludGVycG9sYXRpb24uYzoKCSAgaW1wbGVtZW50IGJvb2xlYW4gcHJvcGVydGllcwoKMjAwNS0wOC0zMSAwODo1NzoxNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmM6IENhbm5vdCBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgaGFzIHRvIGJlIHBvc2l0aXZlIHNpbmNlIGEgZGlzcG9zZWQgb2JqZWN0IGNhbiBiZSByZXN1cmVjdGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X21pbmlfb2JqZWN0X3JlZik6CgkgIENhbm5vdCBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgaGFzIHRvIGJlIHBvc2l0aXZlCgkgIHNpbmNlIGEgZGlzcG9zZWQgb2JqZWN0IGNhbiBiZSByZXN1cmVjdGVkLgoKMjAwNS0wOC0zMSAwODozODozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogUmV2ZXJ0IGNoYW5nZSwgbmVlZCB0byBmaXJzdCBmaXggYmFkbHkgYmVoYXZpbmcgYXBwcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9pbml0KToKCSAgUmV2ZXJ0IGNoYW5nZSwgbmVlZCB0byBmaXJzdCBmaXggYmFkbHkgYmVoYXZpbmcKCSAgYXBwcy4KCjIwMDUtMDgtMzAgMTk6NDU6MzggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9lbGVtZW50cy86IEFjdGl2YXRlIHBhZHMgYmVmb3JlIHVzaW5nIHRoZW0uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYzogKHNldHVwX2Zha2VzcmMpOgoJICAqIGNoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6IChzZXR1cF9pZGVudGl0eSk6CgkgIEFjdGl2YXRlIHBhZHMgYmVmb3JlIHVzaW5nIHRoZW0uCgoyMDA1LTA4LTMwIDE5OjI5OjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiBGbHVzaGluZyBvdXQgMCBieXRlcyBpcyBvayBmb3IgdGhpcyBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfZmx1c2gpOgoJICBGbHVzaGluZyBvdXQgMCBieXRlcyBpcyBvayBmb3IgdGhpcyBmdW5jdGlvbi4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KToKCSAgbm8gbmV3c2VnbWVudCBnaXZlcyBhIHdhcm5pbmcgYW5kIHNldHMgdGhlIHN0YXJ0L3N0b3AgdG8KCSAgaW52YWxpZC4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2gpOgoJICBTb21lIGRlYnVnIGluZm8uCgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzogKGdzdF9taW5pX29iamVjdF9yZWYpOgoJICBDaGVjayByZWZjb3VudCBoZXJlIHRvby4KCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2luaXQpOgoJICBQYWRzIGFyZSBpbml0aWFsbHkgZmx1c2hpbmcgYW5kIHJlZnVzaW5nIGRhdGEuCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9saW5rX3BhZHNfZmlsdGVyZWQpOgoJICBXaGVuIGFkZGluZyBhIGNhcHNmaWx0ZXIgZWxlbWVudCBtYWtlIHN1cmUgaXQgaGFzIHRoZQoJICBzYW1lIHN0YXRlIGFzIHRoZSBwYXJlbnQgYmluLgoKMjAwNS0wOC0zMCAxNzoyMzoxOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgbW9yZSBkb2NzIGFuZCB0d28gbW9yZSBpbmxpbmVkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGZvcm1hdC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0dmVyc2lvbi5zZ21sOgoJICAqIGdzdC9nc3RidXMuaDoKCSAgKiBnc3QvZ3N0Zm9ybWF0LmM6CgkgICogZ3N0L2dzdGZvcm1hdC5oOgoJICAqIGdzdC9nc3R2ZXJzaW9uLmguaW46CgkgIG1vcmUgZG9jcyBhbmQgdHdvIG1vcmUgaW5saW5lZAoKMjAwNS0wOC0zMCAxNzoxMjozMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiBEb24ndCBzeW5jIHRvIGNsb2NrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfY2xhc3NfaW5pdCk6CgkgIERvbid0IHN5bmMgdG8gY2xvY2suCgoyMDA1LTA4LTMwIDA4OjE3OjQ4ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OiB1bHRyYWwzM3QgZnVuYzEwbnMgZGVzZXJ2ZSB0byBhcHBlYXIgaW4gdGhlIGRvY3MgYWN0dWFseQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICB1bHRyYWwzM3QgZnVuYzEwbnMgZGVzZXJ2ZSB0byBhcHBlYXIgaW4gdGhlIGRvY3MgYWN0dWFseQoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGNvbXBhdC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0Y29uZmlnLnNnbWw6CgkgICogZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkgICogZ3N0L2dzdGNvbXBhdC5oOgoJICAqIGdzdC9nc3Rjb25maWcuaC5pbjoKCSAgaW5saW5lZCBtb3JlIGRvY3MKCjIwMDUtMDgtMjkgMjE6NDE6MDIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGlubGluZWQgYW5kIGV4dGVuZGVkIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0cXVlcnkuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHV0aWxzLnNnbWw6CgkgICogZ3N0L2dzdHF1ZXJ5LmM6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIGlubGluZWQgYW5kIGV4dGVuZGVkIGRvY3MKCjIwMDUtMDgtMjkgMTk6NTk6NTIgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzogbW9yZSB0ZXN0cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgIG1vcmUgdGVzdHMKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHV0aWxzLnNnbWw6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2xpYnMvdG1wbC9nc3RkYXRhcHJvdG9jb2wuc2dtbDoKCSAgaW5jbHVkZSBwYXRoIGZpeGVzCgkgICogZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6IChtYWluKToKCSAgY29udHJvbGxlciBleGFtcGxlIHdvcmtzIG5vdwoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBkb2MgZml4ZXMKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICBzaG93IHBhcmFtIHNwZWMgZmxhZ3MKCjIwMDUtMDgtMjkgMTY6MTA6MzYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jIChnc3RfdXRpbF91aW50NjRfc2NhbGUpOiBOZXcgMzczM3QgZnVuY3QxMG4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA4LTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3R1dGlscy5jIChnc3RfdXRpbF91aW50NjRfc2NhbGUpOiBOZXcgMzczM3QgZnVuY3QxMG4uCgoyMDA1LTA4LTI5IDA5OjUyOjQ0ICswMDAwICBNaWNoYWVsIFNtaXRoIDxtc21pdGhAeGlwaC5vcmc+CgoJKiBkb2NzL2ZhcS9jdnMueG1sOgoJICBNaW5vciB1cGRhdGVzIHRvIGRldmVsb3BlciBjdnMgaW5zdHJ1Y3Rpb25zLCB0byBtb3JlIGNsb3NlbHkgbWF0Y2ggd2hhdCB0aGUgZnJlZWRlc2t0b3AgcGVvcGxlIHdhbnQuIEFsc28sIHRlc3QgbXkgY3YuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE1pbm9yIHVwZGF0ZXMgdG8gZGV2ZWxvcGVyIGN2cyBpbnN0cnVjdGlvbnMsIHRvIG1vcmUgY2xvc2VseSBtYXRjaCB3aGF0CgkgIHRoZSBmcmVlZGVza3RvcCBwZW9wbGUgd2FudC4gQWxzbywgdGVzdCBteSBjdnMgY29tbWl0IGFjY2Vzcy4uLgoKMjAwNS0wOC0yOCAxNzo0NTo1OCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHV0aWxzLmggKEdTVF9CT0lMRVJQTEFURV9GVUxMKTogUHJvdG90eXBlIGluc3RhbmNlX2luaXQgYXMgaGF2aW5nIHR3byBhcmd1bWVudHMgaW5zdGVhZCBvZiBqdXN0IG9uZS4gQWxsb3dzIHN1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA4LTI4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3R1dGlscy5oIChHU1RfQk9JTEVSUExBVEVfRlVMTCk6IFByb3RvdHlwZSBpbnN0YW5jZV9pbml0CgkgIGFzIGhhdmluZyB0d28gYXJndW1lbnRzIGluc3RlYWQgb2YganVzdCBvbmUuIEFsbG93cyBzdXBlcmNsYXNzZXMKCSAgdG8gYWNjZXNzIGluZm9ybWF0aW9uIG9uIHN1YmNsYXNzZXMgLS0gc2VlIHRoZSB0ZXJyaWJsZSBmb3IoKSBsb29wCgkgIGluIGd0eXBlLmM6Z190eXBlX2NyZWF0ZV9pbnN0YW5jZSBmb3IgdGhlIHJlYXNvbiB3aHkuIEFsbCBjYWxsZXJzCgkgIGNoYW5nZWQuCgoyMDA1LTA4LTI3IDEwOjU3OjAwICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LW1lc3NhZ2VzLnR4dDogdXBkYXRlIGluZm8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1tZXNzYWdlcy50eHQ6CgkgIHVwZGF0ZSBpbmZvCgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0Y2Fwcy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0Y2xvY2suc2dtbDoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgIGFkZGVkIGRlc2NyaXB0aW9ucyBmb3IgYnVzIGFuZCBtZXNzYWdlCgkgIGlubGluZSBjYXBzIGFuZCBjbG9jayBkb2NzCgoyMDA1LTA4LTI2IDIyOjMyOjUxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBnc3QvZ3N0bWVzc2FnZS4qOiBkb2MgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBkb2MgZml4ZXMKCjIwMDUtMDgtMjYgMjE6MjM6NTEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogZml4IGRpdi1ieS16ZXJvCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSk6CgkgIGZpeCBkaXYtYnktemVybwoKMjAwNS0wOC0yNiAxNDoyMTo0MyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYyAocnVuX3BpcGVsaW5lKTogQ2hlY2sgZWxlbWVudF9zZXRfc3RhdGUncyByZXR1cm4gdmFsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0yNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jIChydW5fcGlwZWxpbmUpOiBDaGVjawoJICBlbGVtZW50X3NldF9zdGF0ZSdzIHJldHVybiB2YWwuCgkgICh0ZXN0XzJfZWxlbWVudHMpOiBBZGQgdGVzdCB0aGF0J3MgYmVlbiBkaXNhYmxlZCBmb3IgbW9udGhzLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOiBDbGVhbnVwcy4gQWRkIGNhbi1hY3RpdmF0ZS1wdXNoIGFuZAoJICBjYW4tYWN0aXZhdGUtcHVsbCBwcm9wZXJ0aWVzLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IENsZWFudXBzLiBBZGQgY2FuLWFjdGl2YXRlLXB1c2ggYW5kCgkgIGNhbi1hY3RpdmF0ZS1wdWxsIHByb3BlcnRpZXMuIEltcGxlbWVudCBpc19zZWVrYWJsZSBzbyBmYWtlc3JjIGNhbgoJICBvcGVyYXRlIGluIHB1bGwgbW9kZS4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jIChHc3RCYXNlU2luayk6IFJlbW92ZSBoYXMtbG9vcCwgaGFzLWNoYWluCgkgIHByb3BlcnRpZXMuCgkgIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlLCBnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1bGwpCgkgIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1c2gpOiBNYWtlIGFjdGl2YXRpb24gbW9kZSBjaG9vc2luZyB3b3JrLgoJICBDbGVhbnVwcy4KCSAgKGdzdF9iYXNlX3NpbmtfY2hhaW4sIGdzdF9iYXNlX3NpbmtfbG9vcCk6IEFzc2VydCBhY3RpdmF0aW9uIG1vZGUKCSAgaXMgcmlnaHQuIE1ha2UgcHVsbCBtb2RlIHdvcmsuIFBvc3QgYW4gZW9zIGJlZm9yZSBwYXVzaW5nIGluIHB1bGwKCSAgbW9kZS4KCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKTogUGF5IGF0dGVudGlvbiB0byB0aGUgY29yZSdzCgkgIGNoYW5nZV9zdGF0ZSgpIHJldHVybiB2YWwuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChHc3RCYXNlU3JjKTogUmVtb3ZlIGhhcy1sb29wLAoJICBoYXMtZ2V0cmFuZ2UgcHJvcGVydGllcy4gQ2xlYW51cHMuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oIChHc3RCYXNlU3JjKTogUmVtb3ZlIGhhc19sb29wLAoJICBoYXNfZ2V0cmFuZ2UgYW5kIHJlcGxhY2Ugd2l0aCBjYW5fYWN0aXZhdGVfcHVsbCBhbmQKCSAgY2FuX2FjdGl2YXRlX3B1c2guCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaCAoR3N0QmFzZVNpbmspOiBSZWFycmFuZ2UgZmllbGRzLCBhZGQKCSAgbG9ja2luZyBjb21tZW50cy4gUmVtb3ZlIGhhc19sb29wLCBoYXNfY2hhaW4gYW5kIHJlcGxhY2Ugd2l0aAoJICBjYW5fYWN0aXZhdGVfcHVsbCBhbmQgY2FuX2FjdGl2YXRlX3B1c2guCgoyMDA1LTA4LTI2IDEzOjI4OjAxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIEFkZCBtZXRhZGF0YSByZWFkaW5nIGV4YW1wbGUgdGhhdCBsb29wcyBvdmVyIGEgbGlzdCBvZiBmaWxlbmFtZXMsIGR1bXBpbmcgYW55IHRhZ3MgZm91bmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiBleGFtcGxlcy9NYWtlZmlsZS5hbToKCSAgKiBleGFtcGxlcy9tZXRhZGF0YS9NYWtlZmlsZS5hbToKCSAgKiBleGFtcGxlcy9tZXRhZGF0YS9yZWFkLW1ldGFkYXRhLmM6IChtZXNzYWdlX2xvb3ApLAoJICAoaGF2ZV9wYWRfaGFuZGxlciksIChtYWtlX3BpcGVsaW5lKSwgKHByaW50X3RhZyksIChtYWluKToKCSAgQWRkIG1ldGFkYXRhIHJlYWRpbmcgZXhhbXBsZSB0aGF0IGxvb3BzIG92ZXIgYSBsaXN0IG9mIGZpbGVuYW1lcywKCSAgZHVtcGluZyBhbnkgdGFncyBmb3VuZC4KCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX2Rpc3Bvc2UpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9kaXNwb3NlKToKCSAgUmVsZWFzZSBhIGZldyBwb3RlbnRpYWxseS1oZWxkIHJlZmVyZW5jZXMgaW4gZGlzcG9zZS4KCjIwMDUtMDgtMjYgMTM6MjE6NDcgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvZ3N0L3RtcGwvZ3N0bWluaW9iamVjdC5zZ21sOiBkbyAqbm90KiBhZGQgdG1wbC8qLnNnbWwgZmlsZXMgdG8gQ1ZTIQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdG1pbmlvYmplY3Quc2dtbDoKCSAgZG8gKm5vdCogYWRkIHRtcGwvKi5zZ21sIGZpbGVzIHRvIENWUyEKCjIwMDUtMDgtMjYgMTM6MTc6NTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGxpYnMvZ3N0L2J5dGVzdHJlYW0vOiByZW1vdmluZyBvYnNvbGV0ZSBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtLy5jdnNpZ25vcmU6CgkgICogbGlicy9nc3QvYnl0ZXN0cmVhbS9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2FkYXB0ZXIuYzoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2FkYXB0ZXIuaDoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2J5dGVzdHJlYW0uYzoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2J5dGVzdHJlYW0uaDoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2ZpbGVwYWQuYzoKCSAgKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2ZpbGVwYWQuaDoKCSAgcmVtb3Zpbmcgb2Jzb2xldGUgZmlsZXMKCjIwMDUtMDgtMjYgMTI6NDg6MjkgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGRvY3MvOiBkaXNhYmVkIGFkZGl0aW9uYWwgaW5kZXggZW50cmllcyBhZ2FpbiwgYXMgdGhpcyBtYWtlcyBkb2NzLWdlbiBqdXN0IHNsb3cgYW5kIHRoZXkgYXJlbid0IHVzZWZ1bCB5ZXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOgoJICBkaXNhYmVkIGFkZGl0aW9uYWwgaW5kZXggZW50cmllcyBhZ2FpbiwgYXMgdGhpcyBtYWtlcyBkb2NzLWdlbiBqdXN0CgkgIHNsb3cgYW5kIHRoZXkgYXJlbid0IHVzZWZ1bCB5ZXQKCSAgKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJICBsaXR0bGUgLXNlY3Rpb24udHh0IGNsZWFudXAgZm9yIGxpYnMKCjIwMDUtMDgtMjYgMTE6NTY6MTEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0L2Jhc2UvOiBmaXggdXAgc29tZSBkZWJ1Z2dpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9zaXplKSwKCSAgZml4IHVwIHNvbWUgZGVidWdnaW5nCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3VuaXRfc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlcik6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBoYW5kbGUgYW5kIHN0b3JlIHRpbWVkIE5FV1NFR01FTlQgZXZlbnRzIHNvIHRoYXQgc3ViY2xhc3NlcyB0aGF0CgkgIGNhbGN1bGF0ZSB0aW1lIGJ5IGNvdW50aW5nIHNhbXBsZXMgaGF2ZSBhIHNlZ21lbnRfc3RhcnQgdGltZSB0aGV5CgkgIG5lZWQgdG8gYWRkIHRvIHRoZWlyIHRpbWVzdGFtcHMgLSBzZWUgYXVkaW9yZXNhbXBsZQoKMjAwNS0wOC0yNiAxMToxOToyMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjb21tb246CgkqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSogZ3N0L2dzdGJ1ZmZlci5oOgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJICB3aGl0ZXNwYWNlLCBkb2MgYW5kIGRlYnVnIGZpeGluZy9hZGRpdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdoaXRlc3BhY2UsIGRvYyBhbmQgZGVidWcgZml4aW5nL2FkZGl0aW9ucwoKMjAwNS0wOC0yNSAyMzoxNzoxOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZ3N0L2dzdGJpbi5oOiByZW1vdmVkICc7JyBmcm9tIHRoZSBlbmQgb2YgbWFjcm8gZGVmcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmg6CgkgIHJlbW92ZWQgJzsnIGZyb20gdGhlIGVuZCBvZiBtYWNybyBkZWZzCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBnc3QvZ3N0YnVzLmg6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKSwgKGFjdGl2YXRlX3BhZHMpLAoJICAoZ3N0X2VsZW1lbnRfc2F2ZV90aHlzZWxmKToKCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9uZXdfbmV3c2VnbWVudCk6CgkgICogZ3N0L2dzdGV2ZW50Lmg6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmg6CgkgICogZ3N0L2dzdHBhZC5jOgoJICAqIGdzdC9nc3Rwcm9iZS5oOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X3BhZF9xdWVyeV9jb252ZXJ0KToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgZml4ZWQgcGFyYW1ldGVyIG5hbWUgbWlzbWF0Y2hlcyBiZXR3ZWVuIHNvdXJjZSwgaGVhZGVyIGFuZCBkb2NzCgkgIGFkZGVkIHNvbWUgbW9yZSBkb2NzLCByZXNvbHZlZCB0aGUgbGFzdCBiYXRjaCBvZiB1bnVzZWQgZWxlbWVudHMgaW4KCSAgZG9jcyAobm93IHNvbWVvbmUgbmVlZHMgdG8gZG9jIHRoZW0pCgoyMDA1LTA4LTI1IDIwOjUyOjA3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuYzoKCSogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuYzoKCSAgcmVzcGVjdCBvcmRlciBvZiBwbHVnaW4gZGlycyB3aGVuIGxvYWRpbmcgcGxsdWdpbnMgYW5kIHJlYnVpbGRpbmcgcmVnaXN0cnkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlc3BlY3Qgb3JkZXIgb2YgcGx1Z2luIGRpcnMgd2hlbiBsb2FkaW5nIHBsbHVnaW5zIGFuZCByZWJ1aWxkaW5nIHJlZ2lzdHJ5CgoyMDA1LTA4LTI1IDE5OjM2OjA1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS4qOiBDYWNoZSBjYXBzIHVuaXRfc2l6ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9zaXplKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jb25maWd1cmVfY2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3VuaXRfc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgQ2FjaGUgY2FwcyB1bml0X3NpemUuCgkgIE1ha2Ugc3VyZSB3ZSBjYW5ub3QgbmVnb3RpYXRlIHVwIGFuZCBkb3duc3RyZWFtIGF0IHRoZQoJICBzYW1lIHRpbWUuCgoyMDA1LTA4LTI1IDE4OjU1OjM0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2dzdC5jOgoJKiBnc3QvcmVnaXN0cmllcy9nc3RsaWJ4bWxyZWdpc3RyeS5jOgoJKiBnc3QvcmVnaXN0cmllcy9nc3R4bWxyZWdpc3RyeS5jOgoJICBtYWtlIHJlZ2lzdHJ5IHJlc3BlY3Qgb3JkZXIgb2YgR1NUX1BMVUdJTl9QQVRIOyBtYWtlIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24gZ28gbGFzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFrZSByZWdpc3RyeSByZXNwZWN0IG9yZGVyIG9mIEdTVF9QTFVHSU5fUEFUSDsgbWFrZSB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uIGdvIGxhc3QKCjIwMDUtMDgtMjUgMTg6NTQ6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkqIGdzdC9nc3RwYWQuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIGFkZCBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgZG9jcwoKMjAwNS0wOC0yNSAxNjoyNzo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvY2hlY2svZ3N0Y2hlY2suYzoKCSogZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBhIHVpbnQ2NCBjaGVja2luZyBtZXRob2QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBhIHVpbnQ2NCBjaGVja2luZyBtZXRob2QKCjIwMDUtMDgtMjUgMTM6NTI6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IEJlIGEgYml0IG1vcmUgY29uc2VydmF0aXZlIGFib3V0IHRoZSBwb3N0ZWQgbWVzc2FnZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2J1c19oYW5kbGVyKToKCSAgQmUgYSBiaXQgbW9yZSBjb25zZXJ2YXRpdmUgYWJvdXQgdGhlIHBvc3RlZCBtZXNzYWdlLgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfcG9zdCk6CgkgIFNvbWUgY2xlYW51cHMsIHdhcm4gd3JvbmcgcmV0dXJuIHZhbHVlcy4KCjIwMDUtMDgtMjUgMTA6NTE6MTQgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgUmV2ZXJ0IHVucG9wdWxhciBjaGFuZ2UgZm9yIEdTVF9NRVNTQUdFX1NSQyB0byBHT2JqZWN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfZmluYWxpemUpLCAoX2dzdF9tZXNzYWdlX2NvcHkpLAoJICAoZ3N0X21lc3NhZ2VfbmV3KSwgKGdzdF9tZXNzYWdlX25ld19lb3MpLCAoZ3N0X21lc3NhZ2VfbmV3X2Vycm9yKSwKCSAgKGdzdF9tZXNzYWdlX25ld193YXJuaW5nKSwgKGdzdF9tZXNzYWdlX25ld190YWcpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3N0YXRlX2NoYW5nZWQpLCAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9uZXdfY3VzdG9tKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApOgoJICAqIHRvb2xzL2dzdC1tZDVzdW0uYzogKGV2ZW50X2xvb3ApOgoJICBSZXZlcnQgdW5wb3B1bGFyIGNoYW5nZSBmb3IgR1NUX01FU1NBR0VfU1JDIHRvIEdPYmplY3QuCgoyMDA1LTA4LTI1IDEwOjM1OjQ2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RidWZmZXIuaDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgZml4IGRvY3MgYnkgZml4aW5nIGVudW0gdHlwZWRlZgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGRvY3MgYnkgZml4aW5nIGVudW0gdHlwZWRlZgoKMjAwNS0wOC0yNSAxMDoxNjoyMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIHdpbSBmaXhlZCB0aGUgdGFzaywgeWF5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aW0gZml4ZWQgdGhlIHRhc2ssIHlheQoKMjAwNS0wOC0yNSAxMDowMTo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dlbmVyaWMvc3RhdGVzLmM6IENsZWFudXAgY2FuIGJlIGRvbmUgYXQgdGhlIGVuZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgQ2xlYW51cCBjYW4gYmUgZG9uZSBhdCB0aGUgZW5kLgoJICAqIGdzdC9nc3R0YXNrLmM6IChnc3RfdGFza19nZXRfdHlwZSksIChnc3RfdGFza19maW5hbGl6ZSksCgkgIChnc3RfdGFza19mdW5jKSwgKGdzdF90YXNrX2NsZWFudXBfYWxsKSwgKGdzdF90YXNrX3NldF9sb2NrKSwKCSAgKGdzdF90YXNrX2dldF9zdGF0ZSksIChnc3RfdGFza19zdGFydCksIChnc3RfdGFza19wYXVzZSk6CgkgIE9oIGJveS4uIFRoYW5rcyBmb3IgZmluZGluZyB0aGlzLCBUaG9tYXMuCgoyMDA1LTA4LTI0IDIyOjAxOjQxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgIGdybXBmLCBhbm90aGVyIHRyeSB0byBmaXggaXQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGdybXBmLCBhbm90aGVyIHRyeSB0byBmaXggaXQKCjIwMDUtMDgtMjQgMjE6NTc6MDUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSAgYW5vdGhlciBmaXgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFub3RoZXIgZml4CgoyMDA1LTA4LTI0IDIxOjQ1OjEzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6IGFkZGVkIG1pc3NpbmcgdHlwZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJICBhZGRlZCBtaXNzaW5nIHR5cGVzCgoyMDA1LTA4LTI0IDIxOjM1OjQzICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBhZGRlZCBtaWlzc2luZyBjbGFzc2VzIGFuZCBzeW1ib2xzICgxMjMgbW9yZSB0byBnbykgcmVtb3ZlZCByZW1vdmVkIHN5bWJvbHMgZnJvbSBzZWN0aW9uIGZpbGUgZml4ZWQgbWFueSBkb2MtY29tbWVudHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvLmN2c2lnbm9yZToKCSAgKiBnc3QvZ3N0YmluLmM6CgkgICogZ3N0L2dzdGl0ZXJhdG9yLmM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuaDoKCSAgYWRkZWQgbWlpc3NpbmcgY2xhc3NlcyBhbmQgc3ltYm9scyAoMTIzIG1vcmUgdG8gZ28pCgkgIHJlbW92ZWQgcmVtb3ZlZCBzeW1ib2xzIGZyb20gc2VjdGlvbiBmaWxlCgkgIGZpeGVkIG1hbnkgZG9jLWNvbW1lbnRzCgoyMDA1LTA4LTI0IDIwOjQ5OjUzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogTWFrZSBzdXJlIGFsbCB0YXNrcyBhcmUgc3RvcHBlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ2VuZXJpYy9zdGF0ZXMuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSBzdXJlIGFsbCB0YXNrcyBhcmUgc3RvcHBlZC4KCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIFVucmVmIGFmdGVyIHVzYWdlIGZvciBwcm9wZXIgdmFsZ3JpbmRpbmcuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9maW5hbGl6ZSksIChnc3RfcGFkX3N0b3BfdGFzayk6CgkgIFJlYWxseSB3YWl0IGZvciB0aGUgdGFzayB0byBzdG9wIGJlZm9yZSBkZXN0cm95aW5nIHRoZQoJICBtdXRleC4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9zaW5rX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X3F1ZXVlX3NyY19hY3RpdmF0ZV9wdXNoKToKCSAgU21hbGwgY2xlYW51cHMuIERvbid0IHN0b3AgdGhlIHRhc2sgd2hlbiB3ZSBkaWQgbm90IHN0YXJ0CgkgIGl0LgoJICAqIGdzdC9nc3R0YXNrLmM6IChnc3RfdGFza19nZXRfdHlwZSksIChnc3RfdGFza19pbml0KSwKCSAgKGdzdF90YXNrX2Z1bmMpLCAoZ3N0X3Rhc2tfY2xlYW51cF9hbGwpLCAoZ3N0X3Rhc2tfc2V0X2xvY2spLAoJICAoZ3N0X3Rhc2tfZ2V0X3N0YXRlKSwgKGdzdF90YXNrX3N0YXJ0KSwgKGdzdF90YXNrX3BhdXNlKSwKCSAgKGdzdF90YXNrX2pvaW4pOgoJICAqIGdzdC9nc3R0YXNrLmg6CgkgIFByb3RlY3QgdGhlIHN0cmVhbSBsb2NrIHdpdGggdGhlIG9iamVjdCBsb2NrLgoJICBEaXNhbGxvdyBzZXR0aW5nIHRoZSBzdHJlYW0gbG9jayB3aGVuIHJ1bm5pbmcuCgkgIEFkZCBjbGVhbnVwX2FsbCB0byB3YWl0IGZvciB0aGUgdGhyZWFkcG9vbCB0byBmaW5pc2guCgkgIFJlbW92ZSBjb2RlIHRvIGF1dG9hbGxvY2F0ZSBhIG11dGV4IGlmIG5vbmUgd2FzIHByb3ZpZGVkLgoJICBBZGQgX2pvaW4oKSB0byB3YWl0IGZvciBhIHRhc2sgdG8gc3RvcC4KCSAgUHJvdGVjdCB0aGUgdGhyZWFkIHBvb2wgd2l0aCBhIGdsb2JhbCBsb2NrLgoKMjAwNS0wOC0yNCAxNzo1NzozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLio6IEhhbmRsZSBuZXdzZWdtZW50IGV2ZW50cyBjb3JyZWN0bHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19nZXRfdGltZXMpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX2J1ZmZlciksIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgSGFuZGxlIG5ld3NlZ21lbnQgZXZlbnRzIGNvcnJlY3RseS4KCSAgRHJvcCBidWZmZXJzIG91dCBvZiB0aGUgc2VnbWVudCByYW5nZS4KCjIwMDUtMDgtMjQgMTc6MjQ6MjEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBkaXNhYmxlIHRlc3Qgd2hpbGUgd2ltIGlzIGZpeGluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGlzYWJsZSB0ZXN0IHdoaWxlIHdpbSBpcyBmaXhpbmcKCjIwMDUtMDgtMjQgMTY6NDY6MTAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogcGtnY29uZmlnL2dzdHJlYW1lci11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci5wYy5pbjoKCSAgYWRkIHBsdWdpbnNkaXIgdG8gcGtnY29uZmlnIGZpbGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgcGx1Z2luc2RpciB0byBwa2djb25maWcgZmlsZXMKCjIwMDUtMDgtMjQgMTY6NDE6NDUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgY2hhbmdlbG9nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjaGFuZ2Vsb2cKCjIwMDUtMDgtMjQgMTY6MDk6NTAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svOiBhZGQgYSB0ZXN0IHRoYXQgZG9lcyBhIGJ1bmNoIG9mIHN0YXRlIGNoYW5nZXMgb24gZWxlbWVudHMgbmVlZHMgc29tZSBmaXhpbmcgZm9yIHZhbGdyaW5kCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL2dlbmVyaWMvc3RhdGVzLmM6IChHU1RfU1RBUlRfVEVTVCksIChzdGF0ZXNfc3VpdGUpLCAobWFpbik6CgkgIGFkZCBhIHRlc3QgdGhhdCBkb2VzIGEgYnVuY2ggb2Ygc3RhdGUgY2hhbmdlcyBvbiBlbGVtZW50cwoJICBuZWVkcyBzb21lIGZpeGluZyBmb3IgdmFsZ3JpbmQKCSAgKiBjaGVjay9zdGF0ZXMvc2lua3MuYzogKGdzdF9vYmplY3Rfc3VpdGUpOgoJICB3aGl0ZXNwYWNlCgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgYWRkIHByb3RvdHlwZSBmb3IgZ3N0X2NhcHNfaXNfZXF1YWxfZml4ZWQKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6CgkgICogZ3N0L2dzdHJlZ2lzdHJ5cG9vbC5jOgoJICBkb2MgZml4ZXMKCjIwMDUtMDgtMjQgMTU6NDk6MDMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RxdWVyeS5jIChnc3RfcXVlcnlfbmV3X2NvbnZlcnQpOiBTcGV3IGlmIHdlIHRyeSB0byBjb252ZXJ0IGEgbmVnYXRpdmUgdmFsdWUuIERvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLiBNb3N0bHkgdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0yNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cXVlcnkuYyAoZ3N0X3F1ZXJ5X25ld19jb252ZXJ0KTogU3BldyBpZiB3ZSB0cnkgdG8KCSAgY29udmVydCBhIG5lZ2F0aXZlIHZhbHVlLiBEb2Vzbid0IG1ha2UgbXVjaCBzZW5zZS4gTW9zdGx5IHRoaXMgaXMKCSAgaGVyZSB0byBmb3JjZSBjYWxsZXJzIHRvIGVuc3VyZSAtMSBtYXBzIHRvIC0xLgoKMjAwNS0wOC0yNCAxNToxMDo0MSArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL3B3Zy9hZHZhbmNlZC10eXBlcy54bWw6IFdlbGwgZG9uZSB0byBNaWNoYWVsIGZvciBjYXRjaGluZyBteSBkZWxpYmVyYXRlIGludHJvZHVjdGlvbiBvZiB0aGlzIHNwZWxsaW5nIG1pc3Rha2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLXR5cGVzLnhtbDoKCSAgV2VsbCBkb25lIHRvIE1pY2hhZWwgZm9yIGNhdGNoaW5nIG15IGRlbGliZXJhdGUgaW50cm9kdWN0aW9uCgkgIG9mIHRoaXMgc3BlbGxpbmcgbWlzdGFrZS4KCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGJpbl9idXNfaGFuZGxlcik6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgQWRkIEdTVF9FTEVNRU5UX1VOUEFSRU5USU5HIHRvIHByZXZlbnQgcmFjZXMgc28gdGhhdCB3ZSBjYW4KCSAgdW5saW5rIHBhZHMgYmVmb3JlIHJlbW92aW5nIHRoZSBlbGVtZW50IGZyb20gdGhlIGJpbi4KCjIwMDUtMDgtMjQgMTM6NDk6MjEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3QuYyAocGFyc2VfZGVidWdfbGlzdCk6IEFjY2VwdCBlLmcuIEdTVF9ERUJVRz00IHRvIG1lYW4gdGhlIHNhbWUgdGhpbmcgYXMgR1NUX0RFQlVHPSo6NC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDgtMjQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdC5jIChwYXJzZV9kZWJ1Z19saXN0KTogQWNjZXB0IGUuZy4gR1NUX0RFQlVHPTQgdG8gbWVhbgoJICB0aGUgc2FtZSB0aGluZyBhcyBHU1RfREVCVUc9Kjo0LgoJICAocGFyc2VfZGVidWdfbGV2ZWwsIHBhcnNlX2RlYnVnX2NhdGVnb3J5KTogTmV3IGhlbHBlciBwYXJzZXJzLgoKMjAwNS0wOC0yNCAxMzozMzoyMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IHVzZSBnYm9vbGVhbiByZXR1cm4gdmFsdWVzIGFuZCBwb2ludGVycyB0byBzaXplIHNvIHdlIGNhbiB1c2UgdGhlIGZ1bGwgR1NUX0JVRkZFUl9TSVpFIHIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0Y2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0Y2FwcyksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3VuaXRfc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgdXNlIGdib29sZWFuIHJldHVybiB2YWx1ZXMgYW5kIHBvaW50ZXJzIHRvIHNpemUgc28gd2UgY2FuIHVzZSB0aGUKCSAgZnVsbCBHU1RfQlVGRkVSX1NJWkUgcmFuZ2UgKGd1aW50KSBmb3IgYnVmZmVyIHNpemVzCgkgIHVzZSBHc3RQYWREaXJlY3Rpb24gZm9yIHRyYW5zZm9ybV9jYXBzCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICByZW5hbWUgZ2V0X3NpemUgdG8gZ2V0X3VuaXRfc2l6ZSBzaW5jZSB0aGF0J3Mgd2hhdCBpdCBpcwoJICAqIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IChnc3RfY2Fwc2ZpbHRlcl90cmFuc2Zvcm1fY2Fwcyk6CgkgIHVzZSBHc3RQYWREaXJlY3Rpb24gZm9yIHRyYW5zZm9ybV9jYXBzCgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgY2xlYW51cCBhbmQgZGVidWdnaW5nCgoyMDA1LTA4LTI0IDEzOjA0OjMxICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBGaXhlZCBsb25nIHN0YW5kaW5nIG1lbS1sZWFrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9jbGFzc19pbml0KSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSksIChhY3RpdmF0ZV9wYWRzKSwKCSAgKGdzdF9lbGVtZW50X3NhdmVfdGh5c2VsZik6CgkgICogdG9vbHMvZ3N0LWNvbXBwcmVwLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfZWxlbWVudF9wcm9wZXJ0aWVzX2luZm8pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXMpOgoJICBGaXhlZCBsb25nIHN0YW5kaW5nIG1lbS1sZWFrCgoyMDA1LTA4LTI0IDExOjU0OjM3ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIENoYW5nZSBHU1RfTUVTU0FHRV9TUkMgdG8gYmUgYSBHT2JqZWN0IHJhdGhlciB0aGFuIGEgR3N0T2JqZWN0LCBzbyB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gc2Vuc2libHkgcG9zdCBjdXN0b20gbWVzc2FnZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfZmluYWxpemUpLCAoX2dzdF9tZXNzYWdlX2NvcHkpLAoJICAoZ3N0X21lc3NhZ2VfbmV3KSwgKGdzdF9tZXNzYWdlX25ld19lb3MpLCAoZ3N0X21lc3NhZ2VfbmV3X2Vycm9yKSwKCSAgKGdzdF9tZXNzYWdlX25ld193YXJuaW5nKSwgKGdzdF9tZXNzYWdlX25ld190YWcpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3N0YXRlX2NoYW5nZWQpLCAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfbmV3X3NlZ21lbnRfZG9uZSksIChnc3RfbWVzc2FnZV9uZXdfY3VzdG9tKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApOgoJICAqIHRvb2xzL2dzdC1tZDVzdW0uYzogKGV2ZW50X2xvb3ApOgoJICBDaGFuZ2UgR1NUX01FU1NBR0VfU1JDIHRvIGJlIGEgR09iamVjdCByYXRoZXIgdGhhbiBhIEdzdE9iamVjdCwgc28KCSAgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHNlbnNpYmx5IHBvc3QgY3VzdG9tIG1lc3NhZ2VzIHdpdGggcmVmZXJlbmNlcwoJICB0byB0aGVpciBvd24gb2JqZWN0cy4KCjIwMDUtMDgtMjQgMTE6NDQ6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLio6IE1hbnkgZml4ZXMgYW5kIG5ldyBmZWF0dXJlcyBhZGRlZCBieSBUaG9tYXMuIENhbiBub3cgYWxzbyBkbyB0cmFuc2Zvcm1zIHdpdGggdmFyaWFibGUgc2kuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fc2l6ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF9zaXplKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaDoKCSAgTWFueSBmaXhlcyBhbmQgbmV3IGZlYXR1cmVzIGFkZGVkIGJ5IFRob21hcy4gQ2FuIG5vdyBhbHNvIGRvCgkgIHRyYW5zZm9ybXMgd2l0aCB2YXJpYWJsZSBzaXplcyBhbmQgYSBjdXN0b20gZml4YXRlX2NhcHMgZnVuY3Rpb24uCgoyMDA1LTA4LTI0IDExOjM2OjQ5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfZml4YXRlX2NhcHMpOiBDaGVjayBpZiB0aGUgY2FwcyBpcyBmaXhlZCBhbHJlYWR5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0yNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfZml4YXRlX2NhcHMpOiBDaGVjayBpZiB0aGUgY2FwcyBpcyBmaXhlZAoJICBhbHJlYWR5LgoKMjAwNS0wOC0yNCAxMToyMjozMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYzogU29tZSBkZWJ1Z2dpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyk6CgkgIFNvbWUgZGVidWdnaW5nLgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBDYXN0IHRvIENsb2NrVGltZSBiZWZvcmUgZm9ybWF0dGluZyB0byB0aW1lLgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBDbGVhbnVwcy4KCjIwMDUtMDgtMjMgMjE6MzI6MzEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGdyYWNlZnVsbHkgaGFuZGxlIGhlbHBlciBtZXRob2QgY2FsbHMgdG8gb2JqZWN0cyB0aGF0IGFyZSBub3QgYmVlaW5nIGNvbnRyb2xsZWQsIGFkZGVkIHRlc3QgY2FzZSBmb3IgdGhhdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfY29udHJvbGxlcl9zdWl0ZSk6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RjYXBzLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RnaG9zdHBhZC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0cXVlcnkuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHV0aWxzLnNnbWw6CgkgICogbGlicy9nc3QvY29udHJvbGxlci9nc3QtaGVscGVyLmM6IChnc3Rfb2JqZWN0X3NldF9jb250cm9sbGVyKSwKCSAgKGdzdF9vYmplY3Rfc2lua192YWx1ZXMpLCAoZ3N0X29iamVjdF9nZXRfdmFsdWVfYXJyYXlzKSwKCSAgKGdzdF9vYmplY3RfZ2V0X3ZhbHVlX2FycmF5KToKCSAgZ3JhY2VmdWxseSBoYW5kbGUgaGVscGVyIG1ldGhvZCBjYWxscyB0byBvYmplY3RzIHRoYXQgYXJlIG5vdCBiZWVpbmcKCSAgY29udHJvbGxlZCwgYWRkZWQgdGVzdCBjYXNlIGZvciB0aGF0CgoyMDA1LTA4LTIzIDE4OjE3OjAxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGV2ZW50Lio6IFNvbWUgbW9yZSBkZWJ1Z2dpbmcgb3V0cHV0IGFuZCBkb2MgY2xlYW51cHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RldmVudC5jOiAoX2dzdF9ldmVudF9jb3B5KSwgKGdzdF9ldmVudF9uZXdfY3VzdG9tKSwKCSAgKGdzdF9ldmVudF9uZXdfbmV3c2VnbWVudCksIChnc3RfZXZlbnRfcGFyc2VfbmV3c2VnbWVudCksCgkgIChnc3RfZXZlbnRfbmV3X3RhZyksIChnc3RfZXZlbnRfcGFyc2VfdGFnKSwgKGdzdF9ldmVudF9uZXdfcW9zKSwKCSAgKGdzdF9ldmVudF9wYXJzZV9xb3MpLCAoZ3N0X2V2ZW50X25ld19zZWVrKSwKCSAgKGdzdF9ldmVudF9wYXJzZV9zZWVrKToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgU29tZSBtb3JlIGRlYnVnZ2luZyBvdXRwdXQgYW5kIGRvYyBjbGVhbnVwcy4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCk6CgkgIEZpeCBwb3NzaWJsZSBkZWFkbG9jay4KCjIwMDUtMDgtMjMgMTQ6MjU6NTUgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGFkZGVkIGFib3V0IDEwMCBzeW1ib2xzIGZyb20gZ3N0cmVhbWVyLXVudXNlZC50eHQgdG8gdGhlIHJpZ2h0IHNlY3Rpb25zIGZpeGVkIG1vcmUgYnJva2VuIGNvbW1lbnRzIGFkZGVkIEdzdEJ1cyB0byBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGdzdC9nc3RiaW4uaDoKCSAgKiBnc3QvZ3N0YnVzLmM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgYWRkZWQgYWJvdXQgMTAwIHN5bWJvbHMgZnJvbSBnc3RyZWFtZXItdW51c2VkLnR4dCB0byB0aGUgcmlnaHQgc2VjdGlvbnMKCSAgZml4ZWQgbW9yZSBicm9rZW4gY29tbWVudHMKCSAgYWRkZWQgR3N0QnVzIHRvIGRvY3MKCjIwMDUtMDgtMjMgMTE6NTM6NTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGlubGluZWQgbW9yZSBkb2MgY29tbWVudHMsIGFkZGVkIG1pc3NpbmcgY29tbWVudHMgYW5kIGZpeGVkIGNvbW1lbnRzIGZpeGVkIHR5cG9zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvdG1wbC8uY3ZzaWdub3JlOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0YmluLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RidWZmZXIuc2dtbDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9nZXRfdHlwZSksIChnc3RfYmluX2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC4xLmluOgoJICBpbmxpbmVkIG1vcmUgZG9jIGNvbW1lbnRzLCBhZGRlZCBtaXNzaW5nIGNvbW1lbnRzIGFuZCBmaXhlZCBjb21tZW50cwoJICBmaXhlZCB0eXBvcwoKMjAwNS0wOC0yMyAxMTozODoyOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0YnVmZmVyLmM6IHNvbWUgZGVidWdnaW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzogKGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyk6CgkgIHNvbWUgZGVidWdnaW5nCgkgICogZ3N0L2dzdGNhcHMuaDoKCSAgd2hpdGVzcGFjZSBmaXhlcwoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCksIChnc3RfcGFkX2FsbG9jX2J1ZmZlcik6CgkgIG1vcmUgZGVidWdnaW5nCgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X2NhcHNfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9ib29sZWFuKToKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkgIGFkZCBhIGZpeGF0ZSBmdW5jdGlvbiBmb3IgYm9vbGVhbnM7IGFkZCBhIEZJWE1FIHRoYXQgdGhlc2UgZnVuYwoJICBuYW1lcyBzaG91bGQgcHJvYmFibHkgYmUgZ3N0X3N0cnVjdHVyZV9maXhhdGVfKgoKMjAwNS0wOC0yMiAyMTowMzozMyArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgcG9ydGVkIGdzdGNoaWxkcHJveHkgb3ZlciBmcm9tIDAuOCBwb3J0ZWQgZ3N0LWluc3BlY3QgZml4ZXMgYW5kIGVuaGFuY2VtZW50cyBvdmVyIGZyb20gMC44CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9nZXRfdHlwZSksCgkgIChnc3RfYmluX2NoaWxkX3Byb3h5X2dldF9jaGlsZF9ieV9pbmRleCksCgkgIChnc3RfYmluX2NoaWxkX3Byb3h5X2dldF9jaGlsZHJlbl9jb3VudCksCgkgIChnc3RfYmluX2NoaWxkX3Byb3h5X2luaXQpOgoJICAqIGdzdC9nc3RjaGlsZHByb3h5LmM6IChnc3RfY2hpbGRfcHJveHlfZ2V0X2NoaWxkX2J5X25hbWUpLAoJICAoZ3N0X2NoaWxkX3Byb3h5X2dldF9jaGlsZF9ieV9pbmRleCksCgkgIChnc3RfY2hpbGRfcHJveHlfZ2V0X2NoaWxkcmVuX2NvdW50KSwgKGdzdF9jaGlsZF9wcm94eV9sb29rdXApLAoJICAoZ3N0X2NoaWxkX3Byb3h5X2dldF9wcm9wZXJ0eSksIChnc3RfY2hpbGRfcHJveHlfZ2V0X3ZhbGlzdCksCgkgIChnc3RfY2hpbGRfcHJveHlfZ2V0KSwgKGdzdF9jaGlsZF9wcm94eV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2NoaWxkX3Byb3h5X3NldF92YWxpc3QpLCAoZ3N0X2NoaWxkX3Byb3h5X3NldCksCgkgIChnc3RfY2hpbGRfcHJveHlfY2hpbGRfYWRkZWQpLCAoZ3N0X2NoaWxkX3Byb3h5X2NoaWxkX3JlbW92ZWQpLAoJICAoZ3N0X2NoaWxkX3Byb3h5X2Jhc2VfaW5pdCksIChnc3RfY2hpbGRfcHJveHlfZ2V0X3R5cGUpOgoJICAqIGdzdC9nc3RjaGlsZHByb3h5Lmg6CgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOiAocHJpbnRfaW50ZXJmYWNlcyksCgkgIChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyksIChwcmludF9lbGVtZW50X2luZm8pOgoJICBwb3J0ZWQgZ3N0Y2hpbGRwcm94eSBvdmVyIGZyb20gMC44CgkgIHBvcnRlZCBnc3QtaW5zcGVjdCBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzIG92ZXIgZnJvbSAwLjgKCjIwMDUtMDgtMjIgMTk6NDg6NDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEFsc28gY2FsbCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9uIGlmIHdlIGhhdmUgQU5ZIGNhcHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fY2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1faGFuZGxlX2J1ZmZlcik6CgkgIEFsc28gY2FsbCB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9uIGlmIHdlIGhhdmUgQU5ZIGNhcHMuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfc2V0X25ld19zdHJlYW1fdGltZSk6CgkgIEZpeCBkZWJ1ZyBpbmZvLgoKMjAwNS0wOC0yMiAxOToyMjozNCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfZXZlbnRfaGFuZGxlcikKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2V2ZW50X2hhbmRsZXIpCgkgIERvbid0IHByZXRlbmQgdG8gaGFuZGxlIHNlZWsgZXZlbnRzIGlmIHRoZSBzb3VyY2UgaXMgbm90IHNlZWthYmxlCgoyMDA1LTA4LTIyIDE4OjQ4OjQ4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJlbW92ZSBleHRyYSBwYXJhbWV0ZXIgdG8gZGVidWcgb3V0cHV0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpOgoJICBSZW1vdmUgZXh0cmEgcGFyYW1ldGVyIHRvIGRlYnVnIG91dHB1dAoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19zZW5kX2Rpc2NvbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RvX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX2FjdGl2YXRlX3B1c2gpOgoJICBGaXggc2VlayBldmVudCBoYW5kbGluZy4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9xdWV1ZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIERvbid0IHN0YXJ0IHRoZSBzcmMgcGFkIHRhc2sgb24gRkxVU0hfU1RPUCBpZiB0aGUgcGFkCgkgIGlzbid0IGxpbmtlZC4KCSAgRGVidWcgY2hhbmdlcy4KCjIwMDUtMDgtMjIgMTU6MTI6NTYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R1dGlscy5oIChHU1RfQk9JTEVSUExBVEVfV0lUSF9JTlRFUkZBQ0UpOiBOZXcgZ2hldHRvIG1hY3JvLCBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBhbmQgZ3N0aW1wbGVtZW50c2ludGVyZmFjZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0yMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0dXRpbHMuaCAoR1NUX0JPSUxFUlBMQVRFX1dJVEhfSU5URVJGQUNFKTogTmV3IGdoZXR0bwoJICBtYWNybywgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgYW5kIGdzdGltcGxlbWVudHNpbnRlcmZhY2UgZm9yIGEKCSAgbmV3IHR5cGUuCgoyMDA1LTA4LTIyIDE1OjA4OjQ0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGNhcHMuYzogQWRkZWQgY2hlY2sgZm9yIGdzdF9zdGF0aWNfY2Fwc19nZXQoKSByZWZjb3VudGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGNhcHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9jYXBzX3N1aXRlKToKCSAgQWRkZWQgY2hlY2sgZm9yIGdzdF9zdGF0aWNfY2Fwc19nZXQoKSByZWZjb3VudGluZy4KCjIwMDUtMDgtMjIgMTQ6MzU6NDIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBNYWtlIF9zdGF0aWNfY2Fwc19nZXQoKSByZWZjb3VudGluZyBzYW5lLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Y2Fwcy5jOiAoZ3N0X3N0YXRpY19jYXBzX2dldCksIChnc3RfY2Fwc190b19zdHJpbmcpOgoJICBNYWtlIF9zdGF0aWNfY2Fwc19nZXQoKSByZWZjb3VudGluZyBzYW5lLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZXRfc3RhdGUpOgoJICBBZGQgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKSB0byBwcm90ZWN0IGFnYWluc3Qgc2VnZmF1bHRzLgoKMjAwNS0wOC0yMiAxMDozNzowMiArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgaW5saW5lZCByZW1haW5pbmcgZG9jcywgYWRkZWQgbWlzc2luZyBkb2MgY29tbWVudHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RldmVudC5zZ21sOgoJICAqIGdzdC9nc3RldmVudC5jOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBpbmxpbmVkIHJlbWFpbmluZyBkb2NzLCBhZGRlZCBtaXNzaW5nIGRvYyBjb21tZW50cwoKMjAwNS0wOC0yMiAwOToyNTo1MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9nc3QvZ3N0YmluLmM6IHNpbmNlIHdlIGRvbid0IGtub3cgd2hlbiBwcmVyb2xsIGlzIGRvbmUsIHVzZSByZWZjb3VudCByYW5nZSBjaGVjayBmb3IgdGhlIHNpbmsKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICBzaW5jZSB3ZSBkb24ndCBrbm93IHdoZW4gcHJlcm9sbCBpcyBkb25lLCB1c2UgcmVmY291bnQgcmFuZ2UKCSAgY2hlY2sgZm9yIHRoZSBzaW5rCgkgICogZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBtYWNybyBmb3IgY2hlY2tpbmcgcmVmY291bnQgcmFuZ2UKCjIwMDUtMDgtMjEgMTY6NTM6MDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgIGZpZ3VyZSB0aGlzIG91dCBmb3IgSFQgbWFjaGluZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpZ3VyZSB0aGlzIG91dCBmb3IgSFQgbWFjaGluZXMKCjIwMDUtMDgtMjEgMTU6MjE6NDkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YmluLmM6CgkgIHNvbWUgZnVua3kgSFQvbXVsdGljcHUgdnMgc2luZ2xlIGRpZmZlcmVuY2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNvbWUgZnVua3kgSFQvbXVsdGljcHUgdnMgc2luZ2xlIGRpZmZlcmVuY2UKCjIwMDUtMDgtMjEgMTU6MDE6MTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IGNsZWFuIHVwIGVudmlyb25tZW50IGZvciB3aGVuIHJlZ2lzdHJ5IGdldHMgYnVpbHQgdmVyc3VzIHdoZW4gYWN0dWFsIHRlc3RzIGFyZSBydW47IHZhbGdyaW5kIHNlZW1zLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICBjbGVhbiB1cCBlbnZpcm9ubWVudCBmb3Igd2hlbiByZWdpc3RyeSBnZXRzIGJ1aWx0IHZlcnN1cwoJICB3aGVuIGFjdHVhbCB0ZXN0cyBhcmUgcnVuOyB2YWxncmluZCBzZWVtcyB0byBub3QgcmVwb3J0CgkgIGxlYWtzIGlmIEdTVF9QTFVHSU5fUEFUSCBpcyBzZXQgdG8gc29tZSBzcGVjaWZpYyB2YWx1ZXMKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIGFkZCBtb3JlIHJlZmNvdW50aW5nIGNoZWNrczsgbWF5YmUgdGhpcyBleHBvc2VzIGEKCSAgcHJlcm9sbCBsb2NrIGJ1ZyA/CgkgICogY29tbW9uL2NoZWNrLm1hazoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KToKCSAgKiBnc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSAgKiBnc3QvZ3N0YmluLmM6IChiaW5fZWxlbWVudF9pc19zZW1pX3NpbmspLCAoZ3N0X2Jpbl9nZXRfc3RhdGUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWN0aXZhdGVfcHVzaCksIChnc3RfcGFkX2NoYWluKToKCSAgYWRkL2ZpeCBkZWJ1Z2dpbmcvd2hpdGVzcGFjZQoKMjAwNS0wOC0yMSAxMTo0MDo0NCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBjaGVjay9nc3QvZ3N0ZXZlbnQuYzogRXIsIGRvbid0IGNhbGwgZ3N0X2Jpbl93YXRjaF9mb3Jfc3RhdGVfY2hhbmdlIHlvdSBpZGlvdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGV2ZW50LmM6IChldmVudF9wcm9iZSksICh0ZXN0X2V2ZW50KSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgRXIsIGRvbid0IGNhbGwgZ3N0X2Jpbl93YXRjaF9mb3Jfc3RhdGVfY2hhbmdlIHlvdSBpZGlvdC4KCjIwMDUtMDgtMjEgMTE6MTU6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNvbW1vbjoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIHJ1biB2YWxncmluZCB3aXRoIHByb3BlciBlbnYKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJ1biB2YWxncmluZCB3aXRoIHByb3BlciBlbnYKCjIwMDUtMDgtMjEgMTA6NTQ6NDcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IFVzZSBDSEVDS19DRkxBR1MgYW5kIENIRUNLX0xJQlMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIFVzZSBDSEVDS19DRkxBR1MgYW5kIENIRUNLX0xJQlMKCSAgKiBjaGVjay9nc3QvZ3N0ZXZlbnQuYzogKGV2ZW50X3Byb2JlKSwgKHRlc3RfZXZlbnQpLAoJICAoR1NUX1NUQVJUX1RFU1QpOgoJICBEb24ndCBsZWFrIGV2ZW50cy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfc2VuZF9kaXNjb250KSwKCSAgKGdzdF9iYXNlX3NyY19zdGFydCksIChnc3RfYmFzZV9zcmNfc3RvcCksCgkgIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCksIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVsbCksCgkgIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKToKCSAgU3ByaW5rbGUgZ3N0X2Jhc2Vfc3JjX3N0b3AgbGliZXJhbGx5IGFyb3VuZCBlcnJvciBwYXRocyB0byBmaXgKCSAgcHJvYmxlbXMgcmV1c2luZyBhIHNvdXJjZSBhZnRlciBmYWlsZWQgc3RhdGUgY2hhbmdlcy4KCSAgKiBnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOiAoaGVscGVyX2ZpbmRfcGVlayksCgkgIChoZWxwZXJfZmluZF9zdWdnZXN0KSwgKGdzdF90eXBlX2ZpbmRfaGVscGVyKToKCSAgRXh0cmEgZGVidWcgb3V0cHV0LiBEb24ndCBzZWdmYXVsdCBvbiBHU1RfUEFEX0dFVFJBTkdFRlVOQyA9IE5VTEwKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGV2ZW50LnNnbWw6CgkgIE1pZ3JhdGUgcGFydCBvZiB0aGUgZG9jcyBmcm9tIHRoZSBTR01MIGZpbGUuIFdhaXQgZm9yIGVuc29uaWMgdG8KCSAgdGVsbCBtZSBob3cgSSBkaWQgaXQgd3JvbmcgOykKCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuYzogKG1haW4pOgoJICBFeHRyYSByb2J1c3RuZXNzIHRvIHN0YXRlIGNoYW5nZXMgYmV0d2VlbiBmaWxlcy4KCjIwMDUtMDgtMjEgMTA6Mzk6MzkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IGRvbid0IHZhbGdyaW5kIHRoZSBjb250cm9sbGVyIHRlc3QgLSBpdCdzIGxlYWtpbmcgLSBTdGVmYW4sIEhFTFAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIGRvbid0IHZhbGdyaW5kIHRoZSBjb250cm9sbGVyIHRlc3QgLSBpdCdzIGxlYWtpbmcgLSBTdGVmYW4sIEhFTFAKCSAgKiBnc3QvY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19tZXNzYWdlX2Vycm9yKSwKCSAgKGdzdF9jaGVja19jaGFpbl9mdW5jKSwgKGdzdF9jaGVja19zZXR1cF9lbGVtZW50KSwKCSAgKGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50KSwgKGdzdF9jaGVja19zZXR1cF9zcmNfcGFkKSwKCSAgKGdzdF9jaGVja190ZWFyZG93bl9zcmNfcGFkKSwgKGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCksCgkgIChnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQpOgoJICAqIGdzdC9jaGVjay9nc3RjaGVjay5oOgoJICBhZGQgYSBidW5jaCBvZiBtZXRob2RzIHRvIHNldCB1cCBlbGVtZW50cywgYW5kIHNyYyBhbmQgc2luayBwYWRzCgkgICogY2hlY2svZWxlbWVudHMvZmFrZXNyYy5jOiAoc2V0dXBfZmFrZXNyYyksIChjbGVhbnVwX2Zha2VzcmMpOgoJICAqIGNoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6IChzZXR1cF9pZGVudGl0eSksIChjbGVhbnVwX2lkZW50aXR5KSwKCSAgKEdTVF9TVEFSVF9URVNUKToKCSAgdXNlIHRoZW0KCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICAqIGdzdC9nc3R0YWcuaDoKCSAgd2hpdGVzcGFjZS9kb2MgZml4ZXMKCjIwMDUtMDgtMjAgMjA6MzA6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBtYWtlIEdTVF9FTEVNRU5UX0VSUk9SIG5vdCBkbyBHU1RfRVJST1JfT0JKRUNUIC0gdGhlc2UgZXJyb3JzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhbmQgbm90IGFsd2F5cyBwcmkuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1ha2UgR1NUX0VMRU1FTlRfRVJST1Igbm90IGRvIEdTVF9FUlJPUl9PQkpFQ1QgLSB0aGVzZSBlcnJvcnMgc2hvdWxkCgkgIGJlIGhhbmRsZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGFuZCBub3QgYWx3YXlzIHByaW50ZWQgYXMgd2VsbAoKMjAwNS0wOC0yMCAyMDoxNTo1MyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogc2V0IEdTVF9UT09MU19ESVIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIHNldCBHU1RfVE9PTFNfRElSCgkgICogZ3N0L2NoZWNrL2dzdGNoZWNrLmM6IChnc3RfY2hlY2tfbWVzc2FnZV9lcnJvcik6CgkgICogZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBhIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQKCSAgYWRkIGZhaWxfdW5sZXNzIGZvciBlcnJvciBtZXNzYWdlcwoKMjAwNS0wOC0yMCAxNDowMDoxMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiBjaGVjay9nc3Quc3VwcDoKCSogY29tbW9uOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0LnN1cHA6CgkgIGZhY3RvciBvdXQgdGhlIGNvbW1vbiBzdHVmZgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZmFjdG9yIG91dCB0aGUgY29tbW9uIHN0dWZmCgoyMDA1LTA4LTIwIDEzOjE3OjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9NYWtlZmlsZS5hbToKCSAgd29yayBvbiBidWlsZHMgd2l0aG91dCBjaGVjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgd29yayBvbiBidWlsZHMgd2l0aG91dCBjaGVjawoKMjAwNS0wOC0yMCAxMjo0NzowOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIHJlbmFtZWQgdGVzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVuYW1lZCB0ZXN0CgoyMDA1LTA4LTIwIDEyOjQzOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiBjaGVjay9nc3QvZ3N0ZXZlbnQuYzoKCSogY2hlY2svZ3N0L2dzdGV2ZW50cy5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGV2ZW50LmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RldmVudHMuYzoKCSAgcHV0IHNvbWUgbWFrZS11cCBvbiB0aGUgZ3N0ZXZlbnQgdGVzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcHV0IHNvbWUgbWFrZS11cCBvbiB0aGUgZ3N0ZXZlbnQgdGVzdAoKMjAwNS0wOC0yMCAxMjozOTowNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiBjaGVjay9nc3QvZ3N0aXRlcmF0b3IuYzoKCSogY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkqIGNoZWNrL2dzdC9nc3R0YWcuYzoKCSogZ3N0L2dzdGNsb2NrLmM6CgkqIGdzdC9nc3RpdGVyYXRvci5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGl0ZXJhdG9yLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dGFnLmM6CgkgIHZhbGdyaW5kIG1vcmUgdGVzdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHZhbGdyaW5kIG1vcmUgdGVzdHMKCjIwMDUtMDgtMjAgMTI6MTQ6MjggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY2hlY2svZWxlbWVudHMvLmdpdGlnbm9yZToKCSogY2hlY2svZWxlbWVudHMvZmFrZXNyYy5jOgoJKiBjaGVjay9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIGNoZWNrL2VsZW1lbnRzL2lkZW50aXR5LmM6CgkqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzoKCSogY2hlY2svZ3N0LWxpYnMvZ2RwLmM6CgkqIGNoZWNrL2dzdC9nc3QuYzoKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiBjaGVjay9nc3QvZ3N0YnVmZmVyLmM6CgkqIGNoZWNrL2dzdC9nc3RidXMuYzoKCSogY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSogY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6CgkqIGNoZWNrL2dzdC9nc3RpdGVyYXRvci5jOgoJKiBjaGVjay9nc3QvZ3N0bWVzc2FnZS5jOgoJKiBjaGVjay9nc3QvZ3N0bWluaW9iamVjdC5jOgoJKiBjaGVjay9nc3QvZ3N0b2JqZWN0LmM6CgkqIGNoZWNrL2dzdC9nc3RwYWQuYzoKCSogY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiBjaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogY2hlY2svZ3N0L2dzdHRhZy5jOgoJKiBjaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSogY2hlY2svZ3N0Y2hlY2suYzoKCSogY2hlY2svZ3N0Y2hlY2suaDoKCSogY2hlY2svcGlwZWxpbmVzL2NsZWFudXAuYzoKCSogY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYzoKCSogY2hlY2svc3RhdGVzL3NpbmtzLmM6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSogZ3N0L01ha2VmaWxlLmFtOgoJKiBnc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGdzdC9jaGVjay9nc3RjaGVjay5jOgoJKiBnc3QvY2hlY2svZ3N0Y2hlY2suaDoKCSogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSogbGlicy9nc3QvY2hlY2svTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmM6CgkqIGxpYnMvZ3N0L2NoZWNrL2dzdGNoZWNrLmg6CgkqIHBrZ2NvbmZpZy9NYWtlZmlsZS5hbToKCSogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1jaGVjay5wYy5pbjoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VzcmMuYzoKCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9pZGVudGl0eS5jOgoJKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3QuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RpdGVyYXRvci5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWVzc2FnZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWluaW9iamVjdC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0b2JqZWN0LmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZy5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSogdGVzdHMvY2hlY2svZ3N0Y2hlY2suYzoKCSogdGVzdHMvY2hlY2svZ3N0Y2hlY2suaDoKCSogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6CgkqIHRlc3RzL2NoZWNrL2xpYnMvZ2RwLmM6CgkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6CgkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9zaW1wbGUtbGF1bmNoLWxpbmVzLmM6CgkgIG1vdmUgY2hlY2sgc3R1ZmYgdG8gaXRzIG93biBsaWJyYXJ5IHRvIGJlIHVzZWQgYnkgb3RoZXIgbW9kdWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbW92ZSBjaGVjayBzdHVmZiB0byBpdHMgb3duIGxpYnJhcnkgdG8gYmUgdXNlZCBieSBvdGhlciBtb2R1bGVzCgoyMDA1LTA4LTE5IDA5OjU4OjQyICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBlbGltaW5hdGUgYW5vdGhlciB0bXBsIGZpbGUsIGZpeCBzcGVsbGluZyBpbiB0aGUgbG9uZy1kZXNjcmlwdGlvbgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdC5zZ21sOgoJICAqIGdzdC9nc3QuYzoKCSAgZWxpbWluYXRlIGFub3RoZXIgdG1wbCBmaWxlLCBmaXggc3BlbGxpbmcgaW4gdGhlIGxvbmctZGVzY3JpcHRpb24KCjIwMDUtMDgtMTggMTY6NDI6NDkgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGV2ZW50cy5jOiBTaG91bGQgZml4IGJ1aWxkIG9uIDY0LWJpdCBhcmNoJ3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGV2ZW50cy5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZXZlbnRfcHJvYmUpLAoJICAodGVzdF9ldmVudCksICh0aW1lZGlmZiksIChnc3RldmVudHNfc3VpdGUpOgoJICBTaG91bGQgZml4IGJ1aWxkIG9uIDY0LWJpdCBhcmNoJ3MKCjIwMDUtMDgtMTggMTY6MjA6MjQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIE1ha2Ugc3VyZSB0aGF0IHdoZW4gYSBwaXBlbGluZSBnb2VzIHRvIFBMQVlJTkcsIHRoYXQgZGF0YSBoYXMgYWN0dWFsbHkgaGl0IHRoZSBzaW5rLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0xOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgTWFrZSBzdXJlIHRoYXQgd2hlbiBhIHBpcGVsaW5lIGdvZXMgdG8gUExBWUlORywgdGhhdCBkYXRhIGhhcwoJICBhY3R1YWxseSBoaXQgdGhlIHNpbmsuCgkgICogY2hlY2svc3RhdGVzL3NpbmtzLmMgKHRlc3Rfc2luayk6IEEgc2luayB0aGF0IGRvZXNuJ3QgZ2V0IGFueQoJICBkYXRhIHNob3VsZG4ndCByZXR1cm4gU1VDQ0VTUyBmb3IgZ29pbmcgdG8gZWl0aGVyIFBMQVlJTkcgb3IKCSAgUEFVU0VELiBUZXN0IGFsc28gdGhlIHJldHVybiB2YWx1ZXMgb24gdGhlIHdheSBiYWNrIGRvd24uCgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKTogV2hlbiBjaGFuZ2luZyB0aGUKCSAgc3RhdGUgb2YgYW4gZWxlbWVudCBjdXJyZW50bHkgY2hhbmdpbmcgc3RhdGUgYXN5bmNocm9ub3VzbHksIGdvIHRvCgkgIGxvc3Qtc3RhdGUgYWZ0ZXIgY29tbWl0aW5nIHRoZSBwZW5kaW5nIHN0YXRlLiBNYWtlcyBmdXR1cmUgY2FsbHMKCSAgdG8gZ2V0X3N0YXRlIGNvbnRpbnVlIHRvIHJldHVybiBBU1lOQy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZV9zaW5rX2NoYW5nZV9zdGF0ZSk6IFJldHVybgoJICBBU1lOQyB3aGVuIGdvaW5nIHRvIFBMQVlJTkcgaWYgd2Ugc3RpbGwgZG9uJ3QgaGF2ZSBwcmVyb2xsLCBhcyBjYW4KCSAgaGFwcGVuIHdpdGggbGl2ZSBzb3VyY2VzLgoKMjAwNS0wOC0xOCAxNjoxNToyOCArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBkb2NzL3B3Zy9hZHZhbmNlZC10eXBlcy54bWw6IEhhY2sgbG9uZyBwYXJhZ3JhcGggaW50byAyIGNodW5rcyBhcyBhIHdvcmthcm91bmQgZm9yIGJ1Z2d5IGphZGV0ZXggdmVyc2lvbiBpbiBzaWQgYW5kIGIuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOgoJICBIYWNrIGxvbmcgcGFyYWdyYXBoIGludG8gMiBjaHVua3MgYXMgYSB3b3JrYXJvdW5kIGZvciBidWdneQoJICBqYWRldGV4IHZlcnNpb24gaW4gc2lkIGFuZCBicmVlenkgdGhhdCBsb29wcyBpbmZpbml0ZWx5IGFuZAoJICBlYXRzIGFsbCBSQU0uCgoyMDA1LTA4LTE4IDE2OjAwOjM0ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RldmVudHMuYzogUHJvdmlkZSBtb3JlIGVycm9yIG1hcmdpbiBpbiBjbG9jayBtZWFzdXJlbWVudHMgdG8gYWxsb3cgZm9yIGdfZ2V0X2N1cnJlbnRfdGltZSBpbmFjY3VyYWNpZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RldmVudHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGV2ZW50X3Byb2JlKSwKCSAgKHRlc3RfZXZlbnQpLCAodGltZWRpZmYpLCAoZ3N0ZXZlbnRzX3N1aXRlKToKCSAgUHJvdmlkZSBtb3JlIGVycm9yIG1hcmdpbiBpbiBjbG9jayBtZWFzdXJlbWVudHMgdG8gYWxsb3cgZm9yCgkgIGdfZ2V0X2N1cnJlbnRfdGltZSBpbmFjY3VyYWNpZXMuCgoyMDA1LTA4LTE4IDE1OjQ3OjE2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RldmVudHMuYzogRml4IGVycm9yIG1lc3NhZ2Ugb3V0cHV0IHNvIEkgbWlnaHQgYmUgYWJsZSB0byB0ZWxsIHdoeSB0aGUgdGVzdCB3b3JrcyBoZXJlIGJ1dCBmYWlscyBvbiB0aGUgYi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0ZXZlbnRzLmM6IChHU1RfU1RBUlRfVEVTVCksIChldmVudF9wcm9iZSksCgkgICh0ZXN0X2V2ZW50KSwgKHRpbWVkaWZmKSwgKGdzdGV2ZW50c19zdWl0ZSk6CgkgIEZpeCBlcnJvciBtZXNzYWdlIG91dHB1dCBzbyBJIG1pZ2h0IGJlIGFibGUgdG8gdGVsbCB3aHkgdGhlCgkgIHRlc3Qgd29ya3MgaGVyZSBidXQgZmFpbHMgb24gdGhlIGJ1aWxkIGZhcm0uCgoyMDA1LTA4LTE4IDE1OjMxOjI4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGNoZWNrLzogSSB3cm90ZSBhIHRlc3QhCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL2dzdC9nc3RldmVudHMuYzogKEdTVF9TVEFSVF9URVNUKSwgKGV2ZW50X3Byb2JlKSwKCSAgKHRlc3RfZXZlbnQpLCAodGltZWRpZmYpLCAoZ3N0ZXZlbnRzX3N1aXRlKSwgKG1haW4pOgoJICBJIHdyb3RlIGEgdGVzdCEKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXNlZWtpbmcudHh0OgoJICBTcGVsbGluZyBjb3JyZWN0aW9uCgkgICogZG9jcy9nc3QvdG1wbC9nc3RldmVudC5zZ21sOgoJICBEb2NzIHVwZGF0ZXMuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCk6CgkgIFRyZWF0IGEgYnVmZmVyLXdpdGhvdXQtbmV3c2VnbWVudCB0aGUgc2FtZSBhcyBhIHJlY2VpdmluZwoJICBhIG5ld3NlZ21lbnQgbm90IGluIHRpbWUgZm9ybWF0LCBhbmQgZGlzYWJsZSBzeW5jaW5nIHRvIHRoZSBjbG9jawoJICB3aXRoIGEgd2FybmluZy4KCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3NldF9zeW5jX2hhbmRsZXIpOgoJICBBc3NlcnQgaWYgYW55b25lIHRyaWVzIHRvIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHN5bmNfaGFuZGxlciBmb3IgYnVzLAoJICBhcyBvbmx5IHRoZSBvd25lciBzaG91bGQgYmUgc2V0dGluZyBpdC4KCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgSGF2ZSBhIGZpeGVkIHNldCBvZiBjdXN0b20gZXZlbnQgZW51bXMgd2l0aCBldmVudHMgaWRlbnRpZmllZCBieQoJICB0aGVpciBzdHJ1Y3R1cmUgbmFtZSAoYXMgaW4gMC44KSwgcmF0aGVyIHRoYW4gYSBmcmVlLWZvci1hbGwKCSAgYWxsb3dpbmcgY29sbGlzaW9ucyBiZXR3ZWVuIGVudW0gdmFsdWVzIGZyb20gZGlmZmVyZW50IHBsdWdpbnMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9jbGFzc19pbml0KToKCSAgRG9jcyBjaGFuZ2UuCgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpOgoJICBIYW5kbGUgb3V0LW9mLWJhbmQgZG93bnN0cmVhbSBldmVudHMgZnJvbSB0aGUgc2VuZGluZyB0aHJlYWQuCgoyMDA1LTA4LTE3IDE2OjU3OjAxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYyAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSk6IEludGVycHJldCBwbGF5LXRpbWVvdXQ9PTAgdG8gbWVhbiBubyB0aW1lb3V0IGF0IGFsbC4gSW4gdGhhdCBjYXNlLCBkb24uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDgtMTcgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHBpcGVsaW5lLmMgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOiBJbnRlcnByZXQKCSAgcGxheS10aW1lb3V0PT0wIHRvIG1lYW4gbm8gdGltZW91dCBhdCBhbGwuIEluIHRoYXQgY2FzZSwgZG9uJ3QKCSAgYm90aGVyIHdpdGggYSBnZXRfc3RhdGUgb3IgYSB3YXJuaW5nLCBqdXN0IHJldHVybiBkaXJlY3RseSwgZXZlbgoJICBpZiBpdCdzIEFTWU5DLgoKMjAwNS0wOC0xNyAxNjozMzoyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBEZWJ1ZyBjaGFuZ2VzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wOC0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IERlYnVnIGNoYW5nZXMuCgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogZ3N0L2dzdHV0aWxzLmMgKGdzdF9iaW5fd2F0Y2hfZm9yX3N0YXRlX2NoYW5nZSk6IEFkZCBmdW5jdGlvbiB0bwoJICBlbnN1cmUgYmlucyBwb3N0IHN0YXRlIGNoYW5nZSBtZXNzYWdlcy4gQSBiaXQgb2YgYSBoYWNrIGJ1dCBJIGNhbid0CgkgIHRoaW5rIG9mIGEgd2F5IHRvIGF2b2lkIGl0LgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYyAodGVzdF93YXRjaF9mb3Jfc3RhdGVfY2hhbmdlKTogQWRkZWQgdGVzdC4KCjIwMDUtMDgtMTYgMTc6MjM6NTUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGFkYXB0ZXIuKjogTmV3IGZ1bmN0aW9uLCBsaWtlIHBlZWsoKSBidXQgeW91IG93biB0aGUgZGF0YS4gTm90IHRlcnJpYmx5IGVmZmljaWVudCBhdG0uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA4LTE2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgKiBnc3QvYmFzZS9nc3RhZGFwdGVyLmMgKGdzdF9hZGFwdGVyX3Rha2UpOiBOZXcgZnVuY3Rpb24sIGxpa2UKCSAgcGVlaygpIGJ1dCB5b3Ugb3duIHRoZSBkYXRhLiBOb3QgdGVycmlibHkgZWZmaWNpZW50IGF0bS4KCjIwMDUtMDgtMTYgMTY6Mjk6MDQgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9nc3R1dGlscy4qOiBBZGQgdHdvIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB0YWcgaGFuZGxpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfZm91bmRfdGFnc19mb3JfcGFkKSwgKHB1c2hfYW5kX3JlZiksCgkgIChnc3RfZWxlbWVudF9mb3VuZF90YWdzKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgQWRkIHR3byB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGFnIGhhbmRsaW5nLgoKMjAwNS0wOC0xNiAxMjoxNTo0NiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9tYW51YWwvOiBGaXggZG9jcyB0byB1c2UgX2Jpbl9hZGQoKSBiZWZvcmUgX2xpbmsoKSwgd2hpY2ggZml4ZXMgdGhlIGV4YW1wbGVzIHdpdGggcmVjZW50IGNvcmUgdmVyc2lvbnMgKHJlcG9ydGVkLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRhdGFhY2Nlc3MueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1oZWxsb3dvcmxkLnhtbDoKCSAgRml4IGRvY3MgdG8gdXNlIF9iaW5fYWRkKCkgYmVmb3JlIF9saW5rKCksIHdoaWNoIGZpeGVzIHRoZSBleGFtcGxlcwoJICB3aXRoIHJlY2VudCBjb3JlIHZlcnNpb25zIChyZXBvcnRlZCBieSBNYWRoYW4gUmFqIE0KCSAgPHJhal9tYWRhbkByZWRpZmZtYWlsLmNvbT4sICMzMTMxOTkpLgoKMjAwNS0wOC0xNiAwOTo0Mjo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiBBZGRlZCBzdWJ0cmFjdCBjaGVja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3ZhbHVlX3N1aXRlKToKCSAgQWRkZWQgc3VidHJhY3QgY2hlY2tzLgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDoKCSAgU29tZSBtb3JlIGRvY3MgYWJvdXQgbmV3c2VnbWVudAoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2hhbmdlX3N0YXRlKSwgKGJpbl9idXNfaGFuZGxlcik6CgkgIEZpeCBGSVhNRQoJICAqIGdzdC9nc3RjYXBzLmM6IChnc3RfY2Fwc190b19zdHJpbmcpOgoJICBBZGQgY29tbWVudHMsIGNsZWFudXBzLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zYXZlX3RoeXNlbGYpOgoJICBjbGVhbnVwcwoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2NvbGxlY3RfaW50X3JhbmdlKSwKCSAgKGdzdF9zdHJpbmdfdW53cmFwKSwgKGdzdF92YWx1ZV91bmlvbl9pbnRfaW50X3JhbmdlKSwKCSAgKGdzdF92YWx1ZV91bmlvbl9pbnRfcmFuZ2VfaW50X3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9pbnRlcnNlY3RfaW50X2ludF9yYW5nZSksCgkgIChnc3RfdmFsdWVfaW50ZXJzZWN0X2ludF9yYW5nZV9pbnRfcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX2ludGVyc2VjdF9kb3VibGVfZG91YmxlX3JhbmdlKSwKCSAgKGdzdF92YWx1ZV9pbnRlcnNlY3RfZG91YmxlX3JhbmdlX2RvdWJsZV9yYW5nZSksCgkgIChnc3RfdmFsdWVfaW50ZXJzZWN0X2xpc3QpLCAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2ludF9pbnRfcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2ludF9yYW5nZV9pbnQpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2RvdWJsZV9yYW5nZV9kb3VibGUpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2RvdWJsZV9yYW5nZV9kb3VibGVfcmFuZ2UpLAoJICAoZ3N0X3ZhbHVlX3N1YnRyYWN0X2Zyb21fbGlzdCksIChnc3RfdmFsdWVfc3VidHJhY3RfbGlzdCksCgkgIChnc3RfdmFsdWVfY2FuX2NvbXBhcmUpLCAoZ3N0X3ZhbHVlX2NvbXBhcmVfZnJhY3Rpb24pOgoJICBDbGVhbnVwcywgYWRkIGNvbW1lbnRzLCByZW1vdmUgdW5uZWVkZWQgYXNzZXJ0cy4KCjIwMDUtMDgtMTUgMTg6MTU6MzggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvZ3N0YnVzLmM6CgkqIHRvb2xzL2dzdC1sYXVuY2guYzoKCSAgZG9uJ3QgY29udmVydCBOVUxMIHN0cnVjdHVyZXMgdG8gc3RyaW5ncwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9uJ3QgY29udmVydCBOVUxMIHN0cnVjdHVyZXMgdG8gc3RyaW5ncwoKMjAwNS0wOC0xNSAxNjo1NzozNCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDogbWFkZSBzb21lIGRlZmluZXMgcHJpdmF0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBtYWRlIHNvbWUgZGVmaW5lcyBwcml2YXRlCgkgICogZG9jcy9nc3QvdG1wbC9nc3Rjb25maWcuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHF1ZXVlLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0YWdsaXN0LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0dXRpbHMuc2dtbDoKCSAgKiBkb2NzL3B3Zy9hcHBlbmRpeC1wb3J0aW5nLnhtbDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2NsYXNzX2luaXQpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZV9zcmNfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2dzdHhtbC5jOiAoZ3N0X3htbF9jbGFzc19pbml0KToKCSAgZG9jdW1lbnRlZCBhbGwgdW5kb2N1bWVudGVkIHNpZ25hbCBpbmxpbmUKCSAgKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmg6CgkgIGFkZGVkIHBhZGRpbmcKCjIwMDUtMDgtMTUgMDk6NTY6MTkgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGRvY3MvcHdnL2FwcGVuZGl4LXBvcnRpbmcueG1sOiBEb2N1bWVudCBfc2V0X2xpbmtfZnVuY3Rpb24gLT4gX3NldF9zZXRjYXBzX2Z1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hcHBlbmRpeC1wb3J0aW5nLnhtbDoKCSAgRG9jdW1lbnQgX3NldF9saW5rX2Z1bmN0aW9uIC0+IF9zZXRfc2V0Y2Fwc19mdW5jdGlvbi4KCjIwMDUtMDgtMTQgMjI6Mjk6MDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IGFkZCBhIC5jaGVjayB0YXJnZXQgZm9yIHJ1bm5pbmcgdGhlIGNoZWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICBhZGQgYSAuY2hlY2sgdGFyZ2V0IGZvciBydW5uaW5nIHRoZSBjaGVjawoJICAqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgY29zbWV0aWMgZml4dXBzCgkgICogY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X3Rlc3Rfc3VpdGUpOgoJICBjb21wbGV0ZSBjaGVja3MgZm9yIGdzdGJ1ZmZlcjsgd291bGQgYmUgbmljZSBpZiBJIGNvdWxkIGdldCB0aGUKCSAgZ2NvdiBzdHVmZiB0byB3b3JrIHNvIEkgY2FuIHNlZSBpZiBJIGFjdHVhbGx5IGNvbXBsZXRlZCBnc3RidWZmZXIuYwoJICAqIGNoZWNrL2dzdGNoZWNrLmg6CgkgIGFkZCBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UCgoyMDA1LTA4LTEzIDExOjQ1OjUwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHdpbjMyL01BTklGRVNUOgoJICByZW1vdmUgc3BpZGVyIGZyb20gZGlzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIHNwaWRlciBmcm9tIGRpc3QKCjIwMDUtMDgtMTMgMTE6NDM6MTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogd2luMzIvZ3N0c3BpZGVyLnZjcHJvajoKCSAgcmVtb3ZlZCBmcm9tIEhFQUQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZWQgZnJvbSBIRUFECgoyMDA1LTA4LTEzIDEwOjMzOjIyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgQWRkIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSBhcyB3ZSBoYXZlIGluIDAuOCwgYW5kIGRvbid0IHNwZXcgb3V0IGEgd2FybmluZyBpZiBhIHRhZyB0aGF0IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpcyByZS1yLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZ3N0L2dzdHRhZy5jOiAoX2dzdF90YWdfaW5pdGlhbGl6ZSksIChnc3RfdGFnX3JlZ2lzdGVyKToKCSAgKiBnc3QvZ3N0dGFnLmg6CgkgIEFkZCBHU1RfVEFHX0xBTkdVQUdFX0NPREUgYXMgd2UgaGF2ZSBpbiAwLjgsIGFuZCBkb24ndAoJICBzcGV3IG91dCBhIHdhcm5pbmcgaWYgYSB0YWcgdGhhdCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQKCSAgaXMgcmUtcmVnaXN0ZXJlZCwgdW5sZXNzIGl0IGlzIHJlLXJlZ2lzdGVyZWQgd2l0aCBhCgkgIGRpZmZlcmVudCB0eXBlICgjMzA4NDM4KS4KCjIwMDUtMDgtMTIgMTQ6MzA6MzEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBkb2NzL3B3Zy86IEFkZCBzb21lIHBhcmFncmFwaHMgYWJvdXQgc3RhdGUgY2hhbmdlcyBpbiAwLjkgdG8gdGhlIFBXRyBhbmQgdGhlIHBvcnRpbmcgZ3VpZGUsIGluIHBhcnRpY3VsYXIgYWJvdXQgdGhlIG4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctc3RhdGUueG1sOgoJICBBZGQgc29tZSBwYXJhZ3JhcGhzIGFib3V0IHN0YXRlIGNoYW5nZXMgaW4gMC45IHRvIHRoZSBQV0cKCSAgYW5kIHRoZSBwb3J0aW5nIGd1aWRlLCBpbiBwYXJ0aWN1bGFyIGFib3V0IHRoZSBuZXcgbWVhbmluZwoJICBvZiBHU1RfU1RBVEVfUEFVU0VEIGFuZCBob3cgdG8gd3JpdGUgc3RhdGUgY2hhbmdlIGZ1bmN0aW9ucwoJICB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzIGJ5IG11bHRpcGxlIHRocmVhZHMgaW4gbWluZC4KCjIwMDUtMDgtMTEgMTc6Mzk6NDggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtY29udHJvbGxlci5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1oZWxwZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkgIGFkZGVkIGRlcHJlY2F0aW9uIGFuZCBzaW5jZSBpbmRleGVzIGFkZGVkIHNpbmNlIHRhZ3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZGVkIGRlcHJlY2F0aW9uIGFuZCBzaW5jZSBpbmRleGVzCgkgIGFkZGVkIHNpbmNlIHRhZ3MKCjIwMDUtMDgtMTEgMTQ6MjQ6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogQWN0dWFsbHkgaW1wbGVtZW50IChyZSlzZXR0aW5nIHRoZSB0YXJnZXQgb24gYSBnaG9zdHBhZCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9zZXRfdGFyZ2V0X3VubG9ja2VkKSwKCSAgKGdzdF9wcm94eV9wYWRfc2V0X3RhcmdldCksIChnc3RfcHJveHlfcGFkX2dldF90YXJnZXQpLAoJICAoZ3N0X3Byb3h5X3BhZF9kaXNwb3NlKSwgKGdzdF9naG9zdF9wYWRfZG9fYWN0aXZhdGVfcHVzaCksCgkgIChnc3RfZ2hvc3RfcGFkX2RvX2xpbmspLCAoZ3N0X2dob3N0X3BhZF9zZXRfaW50ZXJuYWwpLAoJICAoZ3N0X2dob3N0X3BhZF9uZXdfbm90YXJnZXQpLCAoZ3N0X2dob3N0X3BhZF9nZXRfdGFyZ2V0KSwKCSAgKGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCk6CgkgIEFjdHVhbGx5IGltcGxlbWVudCAocmUpc2V0dGluZyB0aGUgdGFyZ2V0IG9uIGEgZ2hvc3RwYWQKCSAgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2NzLgoKMjAwNS0wOC0xMCAyMToxOTowMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3QuYzogQ2hlY2sgd2hldGhlciBHU1RfREVCVUdfTk9fQ09MT1IgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IGFuZCBkaXNhYmxlIGNvbG91cmVkIGRlYnVnIG91dHB1dCBpZiB0aGF0IGlzIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChnc3RfaW5pdF9jaGVja193aXRoX3BvcHRfdGFibGUpLCAoaW5pdF9wcmUpOgoJICBDaGVjayB3aGV0aGVyIEdTVF9ERUJVR19OT19DT0xPUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcwoJICBzZXQgYW5kIGRpc2FibGUgY29sb3VyZWQgZGVidWcgb3V0cHV0IGlmIHRoYXQgaXMgdGhlIGNhc2UuCgoyMDA1LTA4LTEwIDE1OjA4OjAzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzogVGhlIG1lbW9yeSByZXR1cm5lZCBieSBnc3RfdHlwZV9maW5kX3BlZWsoKSBuZWVkcyB0byBzdGF5IHZhbGlkIHVudGlsIHRoZSBlbmQgb2YgYSB0eXBlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChoZWxwZXJfZmluZF9wZWVrKSwKCSAgKGdzdF90eXBlX2ZpbmRfaGVscGVyKToKCSAgVGhlIG1lbW9yeSByZXR1cm5lZCBieSBnc3RfdHlwZV9maW5kX3BlZWsoKSBuZWVkcyB0bwoJICBzdGF5IHZhbGlkIHVudGlsIHRoZSBlbmQgb2YgYSB0eXBlZmluZCBmdW5jdGlvbiwgYW5kCgkgIHR5cGVmaW5kIGZ1bmN0aW9ucyBtYXkga2VlcCByZXN1bHRzIGZyb20gZGlmZmVyZW50CgkgIG9mZnNldHMgYXJvdW5kLCBzbyB3ZSBjYW4ndCBqdXN0IHVucmVmIHRoZSBidWZmZXIgZnJvbQoJICB0aGUgcHJldmlvdXMgX3BlZWsoKSwgYnV0IGhhdmUgdG8gc2F2ZSBhbGwgYnVmZmVycwoJICByZXR1cm5lZCBieSBfcGVlaygpIHVudGlsIHR5cGVmaW5kaW5nIGlzIGRvbmUgYW5kIG9ubHkKCSAgZnJlZSB0aGVtIHRoZW4uCgoyMDA1LTA4LTA5IDE2OjI1OjQ1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgTmV3IG1hY3JvczogR1NUX1JPVU5EX1VQXzIoKSB0aHJvdWdoIEdTVF9ST1VORF9VUF82NCgpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBOZXcgbWFjcm9zOiBHU1RfUk9VTkRfVVBfMigpIHRocm91Z2ggR1NUX1JPVU5EX1VQXzY0KCkuCgoyMDA1LTA4LTA4IDE2OjAxOjEyICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgZml4IHVwIHNwZWMgZm9yIGxhdGVzdCBDVlMgY2hhbmdlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IHVwIHNwZWMgZm9yIGxhdGVzdCBDVlMgY2hhbmdlcwoKMjAwNS0wOC0wOCAxNTowODoxNCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiBGaXggYSBwcmV0dHkgZ29vZCBtZW1sZWFrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fYnVmZmVyX2FsbG9jKToKCSAgRml4IGEgcHJldHR5IGdvb2QgbWVtbGVhay4KCjIwMDUtMDgtMDggMTM6NTU6MzcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJICBnc3QvZ3N0aXRlcmF0b3IuaDogRml4IHdyb25nIGluY2x1ZGUgYW5kICdtYWtlIGRpc3RjaGVjaycuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpdGVyYXRvci5oOgoJICBGaXggd3JvbmcgaW5jbHVkZSBhbmQgJ21ha2UgZGlzdGNoZWNrJy4KCjIwMDUtMDgtMDggMTM6Mzg6MzQgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogVXNlIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSgpIGluc3RlYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGJpbl9idXNfaGFuZGxlcik6CgkgIFVzZSBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoKSBpbnN0ZWFkLgoKMjAwNS0wOC0wOCAxMzozMTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC86IEFkZCBwYWRkaW5nIHRvIG91ciBiYXNlIGVsZW1lbnRzJyBjbGFzcyBhbmQgaW5zdGFuY2Ugc3RydWN0cyBhbmQgdG8gR3N0SXRlcmF0b3IgKHlvdSB3aWxsIG5lZWQgdG8gcmVidWlsZCBhbGwgcC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RhZGFwdGVyLmg6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkgICogZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5oOgoJICAqIGdzdC9nc3RpdGVyYXRvci5oOgoJICBBZGQgcGFkZGluZyB0byBvdXIgYmFzZSBlbGVtZW50cycgY2xhc3MgYW5kIGluc3RhbmNlIHN0cnVjdHMgYW5kCgkgIHRvIEdzdEl0ZXJhdG9yICh5b3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgYWxsIHBsdWdpbnMgYW5kIGFwcHMhKQoKMjAwNS0wOC0wOCAxMzoxNzowNyArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdGJpbi5jOiBNYWtlIGRlZmF1bHQgbWVzc2FnZSBmb3J3YXJkaW5nIGZyb20gY2hpbGQtPmJ1cyB0byBiaW4tPmJ1cyB0aHJlYWRzYWZlIGFuZCBtYWtlIGl0IG5vdCBlbWl0IHdhcm5pbmdzIGlmLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGJpbl9idXNfaGFuZGxlcik6CgkgIE1ha2UgZGVmYXVsdCBtZXNzYWdlIGZvcndhcmRpbmcgZnJvbSBjaGlsZC0+YnVzIHRvIGJpbi0+YnVzCgkgIHRocmVhZHNhZmUgYW5kIG1ha2UgaXQgbm90IGVtaXQgd2FybmluZ3MgaWYgdGhlIHBhcmVudCBoYXMgbm8gYnVzLgoKMjAwNS0wOC0wOCAxMjoxNDoyMCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogT24gcGF1c2VkLT5yZWFkeSwgc2V0IHBhZC0+Y2FwcyB0byBOVUxMLCBhcyBpcyB0aGUgZG9jdW1lbnRlZCBiZWhhdmlvdXIgaW4gdGhpcyBzdGF0ZSBjaGFuZ2UuIEZpeGVzLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChhY3RpdmF0ZV9wYWRzKToKCSAgT24gcGF1c2VkLT5yZWFkeSwgc2V0IHBhZC0+Y2FwcyB0byBOVUxMLCBhcyBpcyB0aGUgZG9jdW1lbnRlZAoJICBiZWhhdmlvdXIgaW4gdGhpcyBzdGF0ZSBjaGFuZ2UuIEZpeGVzIHBsYXliYWNrIG9mIHNlcmllcyBvZgoJICBtZWRpYSBmaWxlcyB3aGVuIHZpc3VhbGl6YXRpb24gaXMgZW5hYmxlZCBpbiBUb3RlbS4KCjIwMDUtMDgtMDcgMTM6Mzc6MDggKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IEFsbG93IE5VTEwgYXMgZmlsdGVyLWNhcHMgKHdoaWNoIG1lYW5zICJhbnkiKS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX3NldF9wcm9wZXJ0eSk6CgkgIEFsbG93IE5VTEwgYXMgZmlsdGVyLWNhcHMgKHdoaWNoIG1lYW5zICJhbnkiKS4KCjIwMDUtMDgtMDUgMTc6Mjg6MzAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29tbW9uOgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWNvbnRyb2xsZXIuaDoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtaGVscGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuaDoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3RoZWxwZXIuYzoKCSAgYWRkaW5nIG1vcmUgZW50cmllcyB0byB0aGUgZG9jcyBhbmQgZml4IHNtYWxsIGRvYy1idWdzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGRpbmcgbW9yZSBlbnRyaWVzIHRvIHRoZSBkb2NzIGFuZCBmaXggc21hbGwgZG9jLWJ1Z3MKCjIwMDUtMDgtMDUgMTM6NDI6MTAgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNoZWNrL2dzdC1saWJzLy5naXRpZ25vcmU6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvZ3N0L3RtcGwvLmdpdGlnbm9yZToKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc2luay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZha2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmaWxlc2luay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZpbGVzcmMuc2dtbDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiB0ZXN0cy9jaGVjay9saWJzLy5naXRpZ25vcmU6CgkgIG1pZ3JhdGVkIHNvbWUgbW9yZSBkb2NzIHRvIGJlIGlubGluZWQgaW4gdGhlIHNvdXJjZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1pZ3JhdGVkIHNvbWUgbW9yZSBkb2NzIHRvIGJlIGlubGluZWQgaW4gdGhlIHNvdXJjZXMKCjIwMDUtMDgtMDUgMTI6NTk6NDYgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2V0cmFuc2Zvcm0uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc3JjLnNnbWw6CgkqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6CgkqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWNvbnRyb2xsZXIuaDoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtaGVscGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWludGVycG9sYXRpb24uYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0Y29udHJvbGxlci5oOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGhlbHBlci5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGludGVycG9sYXRpb24uYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9saWIuYzoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICBhZGRlZCBsb25nL3Nob3J0IGRlc2MgZm9yIGNvbnRyb2xsZXIgZG9jcyBhZGRlZCBjb2xsZWN0cGFkcyBiYXNlIGNsYXNzIGRvY3MgYWRkZWQgY29ycmVjdCBpbmNsdWRlcyB0byBiYXNlLWNsYXNzIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZGVkIGxvbmcvc2hvcnQgZGVzYyBmb3IgY29udHJvbGxlciBkb2NzCgkgIGFkZGVkIGNvbGxlY3RwYWRzIGJhc2UgY2xhc3MgZG9jcwoJICBhZGRlZCBjb3JyZWN0IGluY2x1ZGVzIHRvIGJhc2UtY2xhc3MgZG9jcwoKMjAwNS0wOC0wNSAxMDowMjo0NCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSogZG9jcy9nc3QvdG1wbC9nc3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNlc2luay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNldHJhbnNmb3JtLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmluLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YnVmZmVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y2Fwcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNsb2NrLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y29tcGF0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y29uZmlnLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnRkZXRhaWxzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlcnJvci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGV2ZW50LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmFrZXNpbmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsZXNpbmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmaWxlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsdGVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Zm9ybWF0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Z2hvc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbXBsZW1lbnRzaW50ZXJmYWNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5kZXguc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmRleGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmZvLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aXRlcmF0b3Iuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RtYWNyb3Muc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RtZW1jaHVuay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdG1pbmlvYmplY3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RvYmplY3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWR0ZW1wbGF0ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBhcnNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGlwZWxpbmUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwbHVnaW4uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwbHVnaW5mZWF0dXJlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cXVlcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RxdWV1ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHJlZ2lzdHJ5LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cmVnaXN0cnlwb29sLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0c3RydWN0dXJlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0c3lzdGVtY2xvY2suc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0YWdsaXN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dGFnc2V0dGVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dHJhY2Uuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0cmFzaHN0YWNrLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dHlwZWZpbmQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlZmluZGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHVyaWhhbmRsZXIuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R1cml0eXBlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dXRpbHMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R2YWx1ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHZlcnNpb24uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R4bWwuc2dtbDoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLWRvY3Muc2dtbDoKCSogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkqIGRvY3MvbGlicy90bXBsL2dzdGdldGJpdHMuc2dtbDoKCSogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGFkYXB0ZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtY29udHJvbGxlci5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1jb250cm9sbGVyLmg6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWhlbHBlci5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkqIHRlc3RzL2NoZWNrL2xpYnMvY29udHJvbGxlci5jOgoJICBtb3JlIHRlc3RzIChhbmQgZml4ZXMpIGZvciB0aGUgY29udHJvbGxlciBtb3JlIGRvY3MgZm9yIHRoZSBjb250cm9sbGVyIGludGVncmF0ZWQgY29tcGFuaWVzIGRvY3MgZm9yIHRoZSBhZGFwdGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3JlIHRlc3RzIChhbmQgZml4ZXMpIGZvciB0aGUgY29udHJvbGxlcgoJICBtb3JlIGRvY3MgZm9yIHRoZSBjb250cm9sbGVyCgkgIGludGVncmF0ZWQgY29tcGFuaWVzIGRvY3MgZm9yIHRoZSBhZGFwdGVyCgoyMDA1LTA4LTA1IDA2OjU3OjI3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC1saWJzL2NvbnRyb2xsZXIuYzoKCSogdGVzdHMvY2hlY2svbGlicy9jb250cm9sbGVyLmM6CgkgIGNvc21ldGljIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjb3NtZXRpYyBmaXhlcwoKMjAwNS0wOC0wNSAwNjo1NTowMyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogZG9jcy9nc3QvdG1wbC9nc3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNlc2luay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNldHJhbnNmb3JtLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmluLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YnVmZmVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y2Fwcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNsb2NrLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y29tcGF0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Y29uZmlnLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnRkZXRhaWxzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlcnJvci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGV2ZW50LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmFrZXNpbmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsZXNpbmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmaWxlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsdGVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Zm9ybWF0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Z2hvc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbXBsZW1lbnRzaW50ZXJmYWNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5kZXguc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmRleGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RpbmZvLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aXRlcmF0b3Iuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RtYWNyb3Muc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RtZW1jaHVuay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdG1pbmlvYmplY3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RvYmplY3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWR0ZW1wbGF0ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBhcnNlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGlwZWxpbmUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwbHVnaW4uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwbHVnaW5mZWF0dXJlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cXVlcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RxdWV1ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHJlZ2lzdHJ5LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cmVnaXN0cnlwb29sLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0c3RydWN0dXJlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0c3lzdGVtY2xvY2suc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0YWdsaXN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dGFnc2V0dGVyLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dHJhY2Uuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0cmFzaHN0YWNrLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dHlwZWZpbmQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlZmluZGZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHVyaWhhbmRsZXIuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R1cml0eXBlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dXRpbHMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R2YWx1ZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHZlcnNpb24uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R4bWwuc2dtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZGF0YXByb3RvY29sLnNnbWw6CgkqIGRvY3MvbGlicy90bXBsL2dzdGdldGJpdHMuc2dtbDoKCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBhZGQgc2l6ZXR5cGUgdGVzdHMgZm9yIGZha2VzcmMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBzaXpldHlwZSB0ZXN0cyBmb3IgZmFrZXNyYwoKMjAwNS0wOC0wNCAxOTo0MDo0MyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogUmVpbXBsZW1lbnQgdXNpbmcgYmFzZXRyYW5zZm9ybSwgZml4ZXMgYnVmZmVyX2FsbG9jIHByb3h5aW5nIGFtb25nIG90aGVyIHRoaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDgtMDQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogUmVpbXBsZW1lbnQgdXNpbmcgYmFzZXRyYW5zZm9ybSwKCSAgZml4ZXMgYnVmZmVyX2FsbG9jIHByb3h5aW5nIGFtb25nIG90aGVyIHRoaW5ncy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBSZXZlcnQgcGF0Y2ggdG8gZ3N0YmFzZXRyYW5zZm9ybSBmcm9tIDctMjggcmVtb3ZpbmcKCSAgZGVsYXlfY29uZmlndXJlLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaCAoR3N0QmFzZVRyYW5zZm9ybUNsYXNzLmdldF9zaXplKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRfc2l6ZSk6CgkgIFNlbWFudGljcyBjaGFuZ2VkLCBzaG91bGQgcmV0dXJuIG5vdCB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcgoJICBidXQgdGhlIGJ5dGUgc2l6ZSBvZiBhIGJ1ZmZlciB3aXRoIGEgZ2l2ZW4gY2Fwcy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRjYXBzKTogQmV0dGVyCgkgIGRlYnVnIG9iamVjdC4KCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jb25maWd1cmVfY2Fwcyk6IERvbid0IHNldCBvdXRfc2l6ZSBoZXJlOiAoaW4sCgkgIG91dCkgYXJlIG5vdCB0aGUgcGFkIGNhcHMgdW50aWwgc2V0Y2FwcyBmaW5pc2hlcy4KCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpOiBQcm94eSB0aGUgYnVmZmVyX2FsbG9jIGZvciB0aGUKCSAgbm90LWluLXBsYWNlIGNhc2UgYXMgd2VsbC4gRGVhbCB3aXRoIGNoYW5naW5nIGZyb20gaW4tcGxhY2UgdG8KCSAgbm90LWluLXBsYWNlIHdpdGhpbiBjYWxsaW5nIHBhZF9hbGxvY19idWZmZXIuIFN0aWxsIGEgYml0CgkgIGNvbmNlcm5lZCBhYm91dCB0aGUgb3ZlcmhlYWQgaGVyZS4uLgoKMjAwNS0wOC0wNCAxMTo1Njo1NyArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGFkYXB0ZXIuaDogQWRkZWQgZ3N0X2FkYXB0ZXJfZ2V0X3R5cGUoKSB0byB0aGUgaGVhZGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuaDoKCSAgQWRkZWQgZ3N0X2FkYXB0ZXJfZ2V0X3R5cGUoKSB0byB0aGUgaGVhZGVyCgoyMDA1LTA4LTAzIDE2OjEwOjA2ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGZpeGVkIGRpc3RjaGVjayBicmVha2FnZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4ZWQgZGlzdGNoZWNrIGJyZWFrYWdlCgoyMDA1LTA4LTAzIDE1OjU5OjExICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiBjaGVjay9nc3QtbGlicy9jb250cm9sbGVyLmM6CgkqIGdzdC9iYXNlL2dzdHB1c2hzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWNvbnRyb2xsZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmM6CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9saWJzL2NvbnRyb2xsZXIuYzoKCSAgYWRkZWQgY2hlY2sgdGVzdCBzdWl0ZSBmb3IgdGhlIGNvbnRyb2xsZXIgZml4ZWQgYSBkb2MgdHlwbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkZWQgY2hlY2sgdGVzdCBzdWl0ZSBmb3IgdGhlIGNvbnRyb2xsZXIKCSAgZml4ZWQgYSBkb2MgdHlwbwoKMjAwNS0wOC0wMyAxMzozMDoxOCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZha2VzcmMuc2dtbDoKCSogZ3N0L2Jhc2UvUkVBRE1FOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJKiBnc3QvYmFzZS9nc3RwdXNoc3JjLmM6CgkqIGdzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSogbGlicy9nc3QvYmFzZS9SRUFETUU6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmg6CgkgIGFkZCBzaG9ydC9sb25nIGRlc2NyaXB0aW9uIGRvY3MgdG8gYmFzZSBjbGFzc2VzIGFkZCBwdXNoc3JjIHRvIHRoZSBkb2NzIHJlbW92ZSBjb25zb2xpZGF0ZWQgZG9jIGZyYWdtZW50cwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIHNob3J0L2xvbmcgZGVzY3JpcHRpb24gZG9jcyB0byBiYXNlIGNsYXNzZXMKCSAgYWRkIHB1c2hzcmMgdG8gdGhlIGRvY3MKCSAgcmVtb3ZlIGNvbnNvbGlkYXRlZCBkb2MgZnJhZ21lbnRzCgoyMDA1LTA4LTAyIDIxOjM5OjM0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNvbnRyb2xsZXItdW5pbnN0YWxsZWQucGMuaW46CgkgIHRoYXQgb25lIHRvbwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdGhhdCBvbmUgdG9vCgoyMDA1LTA4LTAyIDIxOjM4OjE0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWNvbnRyb2xsZXIucGMuaW46CgkgIGFkZGVkIG1pc3NpbmcgcGMgZmlsZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZGVkIG1pc3NpbmcgcGMgZmlsZXMKCjIwMDUtMDgtMDIgMjE6MzU6MzQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL2dzdC90bXBsL2dzdGV2ZW50LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmFrZXNyYy5zZ21sOgoJKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy50eXBlczoKCSogZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkqIGV4YW1wbGVzL2NvbnRyb2xsZXIvLmdpdGlnbm9yZToKCSogZXhhbXBsZXMvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSogZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6CgkqIGxpYnMvZ3N0L01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0LWNvbnRyb2xsZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtY29udHJvbGxlci5oOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdC1oZWxwZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3QtaW50ZXJwb2xhdGlvbi5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2dzdGNvbnRyb2xsZXIuYzoKCSogbGlicy9nc3QvY29udHJvbGxlci9nc3Rjb250cm9sbGVyLmg6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aGVscGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2xsZXIvZ3N0aW50ZXJwb2xhdGlvbi5jOgoJKiBsaWJzL2dzdC9jb250cm9sbGVyL2xpYi5jOgoJKiBwa2djb25maWcvTWFrZWZpbGUuYW06CgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29udHJvbC11bmluc3RhbGxlZC5wYy5pbjoKCSogcGtnY29uZmlnL2dzdHJlYW1lci1jb250cm9sLnBjLmluOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC9leGFtcGxlcy9jb250cm9sbGVyLy5naXRpZ25vcmU6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9jb250cm9sbGVyL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvY29udHJvbGxlci9hdWRpby1leGFtcGxlLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY29udHJvbGxlci8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NvbnRyb2xsZXIvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY29udHJvbGxlci9pbnRlcnBvbGF0b3IuYzoKCSogdGVzdHN1aXRlL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvY29udHJvbGxlci8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvY29udHJvbGxlci9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2NvbnRyb2xsZXIvaW50ZXJwb2xhdG9yLmM6CgkgIGFkZGVkIGNvbnRyb2xsZXIgY29kZSByZW1vdmVkIGRwYXJhbSBwYyBmaWxlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkZWQgY29udHJvbGxlciBjb2RlCgkgIHJlbW92ZWQgZHBhcmFtIHBjIGZpbGVzCgoyMDA1LTA4LTAxIDIxOjE3OjAxICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmM6IEJyb2FkY2FzdCB0aGUgY29uZGl0aW9uIHdoZW4gc2h1dHRpbmcgZG93biwgdG8gbWFrZSBzdXJlIHdlIHdha2UgYWxsIHRocmVhZHMgdXAuIFNodXQgZG93bi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RwYWRzX2ZpbmFsaXplKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19zdG9wKToKCSAgQnJvYWRjYXN0IHRoZSBjb25kaXRpb24gd2hlbiBzaHV0dGluZyBkb3duLCB0byBtYWtlIHN1cmUgd2Ugd2FrZSBhbGwKCSAgdGhyZWFkcyB1cC4gU2h1dCBkb3duIHBhZHMgb24gZmluYWxpemUsIGZvciBzYWZldHkuCgoyMDA1LTA4LTAxIDE3OjI2OjAwICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogSGFuZGxlIFBBVVNFRC0+UkVBRFktPlBBVVNFRCB0cmFuc2l0aW9uIGFmdGVyIG5lZ290aWF0aW9uIG9jY3VycmVkIGFscmVhZHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA4LTAxICBKYW4gU2NobWlkdCAgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jOiAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYW5nZV9zdGF0ZSk6CgkgIEhhbmRsZSBQQVVTRUQtPlJFQURZLT5QQVVTRUQgdHJhbnNpdGlvbiBhZnRlciBuZWdvdGlhdGlvbgoJICBvY2N1cnJlZCBhbHJlYWR5LgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9pbml0KToKCSAgRXh0cmEgcGllY2Ugb2YgZGVidWcgZm9yIG5ldyBtZXNzYWdlcy4KCjIwMDUtMDgtMDEgMTY6NDM6NTggKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRvY3MvbGlicy9NYWtlZmlsZS5hbToKCSAgcmVtb3ZlIGRwYXJhbXMgZGVwcyBmcm9tIHRoZSBkb2NzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgZHBhcmFtcyBkZXBzIGZyb20gdGhlIGRvY3MKCjIwMDUtMDgtMDEgMTY6MTc6MzEgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIENoYW5nZUxvZzoKCSogY29uZmlndXJlLmFjOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZXZlbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Zm9ybWF0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0Z2hvc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RxdWVyeS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHN0cnVjdHVyZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHRhZ2xpc3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R2YWx1ZS5zZ21sOgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtZG9jcy5zZ21sOgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMtc2VjdGlvbnMudHh0OgoJKiBkb2NzL2xpYnMvZ3N0cmVhbWVyLWxpYnMudHlwZXM6CgkqIGxpYnMvZ3N0L01ha2VmaWxlLmFtOgoJKiBsaWJzL2dzdC9jb250cm9sLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2NvbnRyb2wvY29udHJvbC5jOgoJKiBsaWJzL2dzdC9jb250cm9sL2NvbnRyb2wuaDoKCSogbGlicy9nc3QvY29udHJvbC9kcGFyYW0uYzoKCSogbGlicy9nc3QvY29udHJvbC9kcGFyYW0uaDoKCSogbGlicy9nc3QvY29udHJvbC9kcGFyYW1fc21vb3RoLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvZHBhcmFtX3Ntb290aC5oOgoJKiBsaWJzL2dzdC9jb250cm9sL2RwYXJhbWNvbW1vbi5oOgoJKiBsaWJzL2dzdC9jb250cm9sL2RwYXJhbW1hbmFnZXIuYzoKCSogbGlicy9nc3QvY29udHJvbC9kcGFyYW1tYW5hZ2VyLmg6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvZHBsaW5lYXJpbnRlcnAuYzoKCSogbGlicy9nc3QvY29udHJvbC9kcGxpbmVhcmludGVycC5oOgoJKiBsaWJzL2dzdC9jb250cm9sL3VuaXRjb252ZXJ0LmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvdW5pdGNvbnZlcnQuaDoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9keW5wYXJhbXMvLmdpdGlnbm9yZToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9keW5wYXJhbXMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvZHlucGFyYW1zL2RwYXJhbXN0ZXN0LmM6CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2R5bnBhcmFtcy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvZHlucGFyYW1zL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvZHlucGFyYW1zL2RwYXJhbXN0ZXN0LmM6CgkqIHRvb2xzL01ha2VmaWxlLmFtOgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJKiB0b29scy9nc3QteG1saW5zcGVjdC5jOgoJICBkZWFjdGl2YXRlIGFuZCByZW1vdmUgZHBhcmFtcyAobGliZ3N0Y29udHJvbCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRlYWN0aXZhdGUgYW5kIHJlbW92ZSBkcGFyYW1zIChsaWJnc3Rjb250cm9sKQoKMjAwNS0wOC0wMSAxMToxNTo0NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuKjogU2V0IGNhcHMgb24gYWxsIG91dGdvaW5nIGJ1ZmZlcnMsIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYXZlX3R5cGUpLCAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2luaXQpLAoJICAoc3RvcF90eXBlZmluZGluZyksIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfaGFuZGxlX2V2ZW50KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9jaGFpbiksIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfZ2V0cmFuZ2UpOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuaDoKCSAgU2V0IGNhcHMgb24gYWxsIG91dGdvaW5nIGJ1ZmZlcnMsIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUuCgoyMDA1LTA4LTAxIDA5OjEwOjAxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC4qOiBTZXQgY2FwcyBvbiBmaXJzdCBvdXRnb2luZyBidWZmZXIgd2hlbiB3ZSd2ZSBmb3VuZCB0aGUgdHlwZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhdmVfdHlwZSksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hlY2tfc2V0X2J1ZmZlcl9jYXBzKSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9pbml0KSwgKHN0b3BfdHlwZWZpbmRpbmcpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCksCgkgIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW4pLCAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2dldHJhbmdlKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgIFNldCBjYXBzIG9uIGZpcnN0IG91dGdvaW5nIGJ1ZmZlciB3aGVuIHdlJ3ZlIGZvdW5kIHRoZSB0eXBlLgoKMjAwNS0wOC0wMSAwODo1MjozMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvZ3N0LzogUmVtb3ZlIHNvbWUgb2xkIGNydWZ0IGZyb20gZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0c2NoZWR1bGVyLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RzY2hlZHVsZXJmYWN0b3J5LnNnbWw6CgkgIFJlbW92ZSBzb21lIG9sZCBjcnVmdCBmcm9tIGRvY3MuCgoyMDA1LTA3LTMxIDExOjU5OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2dzdHBhZC5oOiBGaXggaW5saW5lIGRvY3MgZm9yIEdzdFBhZExpbmtSZXR1cm4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgRml4IGlubGluZSBkb2NzIGZvciBHc3RQYWRMaW5rUmV0dXJuLgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUpOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJICBOZXcgQVBJOiBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKCkuCgoyMDA1LTA3LTMwIDE1OjAwOjA3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgY29uZmlndXJlLmFjOiBVc2UgQUNfU1lTX0xBUkdFRklMRSwgd2hpY2ggd2lsbCBzZXQgX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgYW5kIF9MQVJHRUZJTEVfU09VUkNFIGluIGNvbmZpZy5oIGFzIHJlcXVpcmVkLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgVXNlIEFDX1NZU19MQVJHRUZJTEUsIHdoaWNoIHdpbGwgc2V0IF9GSUxFX09GRlNFVF9CSVRTPTY0CgkgIGFuZCBfTEFSR0VGSUxFX1NPVVJDRSBpbiBjb25maWcuaCBhcyByZXF1aXJlZC4gRG8gbm90CgkgIGV4cG9ydCB0aG9zZSBmbGFncyBpbiBvdXIgLnBjIGZpbGVzIGFueSBsb25nZXIgKCMxNDIyMDkpLgoJICBSZW1vdmUgdW51c2VkIEdTVF9ESVNBQkxFX09NRUdBX0NPVEhSRUFEUyBzdHVmZi4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzogKGdzdF9maWxlX3NpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfZmlsZV9zaW5rX2RvX3NlZWspLCAoZ3N0X2ZpbGVfc2lua19ldmVudCksCgkgIChnc3RfZmlsZV9zaW5rX2dldF9jdXJyZW50X29mZnNldCksIChnc3RfZmlsZV9zaW5rX3JlbmRlcik6CgkgIFJlZG8gc2Vlay90ZWxsIGNhbGxzIHdpdGggbGFyZ2UgZmlsZSBzdXBwb3J0IGluIG1pbmQ7IGFkZCBzb21lCgkgIGRlYnVnZ2luZyBtZXNzYWdlczsgYWRkIGxvZyBtZXNzYWdlIHRoYXQgdGVsbHMgdXMgd2hlbiBsYXJnZQoJICBmaWxlIHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgb3Igbm90IGVuYWJsZWQgZm9yIHNvbWUgcmVhc29uLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc3JjLmM6IChnc3RfZmlsZV9zcmNfY2xhc3NfaW5pdCk6CgkgIEFkZCBsb2cgbWVzc2FnZSB0aGF0IHRlbGxzIHVzIHdoZW4gbGFyZ2UgZmlsZSBzdXBwb3J0CgkgIGlzIHVuYXZhaWxhYmxlIG9yIG5vdCBlbmFibGVkIGZvciBzb21lIHJlYXNvbi4KCjIwMDUtMDctMjkgMTk6MjI6MjggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogQWRkZWQgdGVzdCBmb3IgcmVtb3ZpbmcgYW4gZWxlbWVudCB3aXRoIGdob3N0cGFkIGZyb20gYSBiaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2dob3N0X3BhZF9zdWl0ZSk6CgkgIEFkZGVkIHRlc3QgZm9yIHJlbW92aW5nIGFuIGVsZW1lbnQgd2l0aCBnaG9zdHBhZCBmcm9tIGEgYmluLgoJICBGaXhlZCB0ZXN0IGFzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyB0aGUgcmlnaHQgdGhpbmcuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2NsYXNzX2luaXQpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19xdWVyeV90eXBlKSwgKGdzdF9wcm94eV9wYWRfZG9fZXZlbnQpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19xdWVyeSksIChnc3RfcHJveHlfcGFkX2RvX2ludGVybmFsX2xpbmspLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19idWZmZXJhbGxvYyksIChnc3RfcHJveHlfcGFkX2RvX2FjdGl2YXRlKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fYWN0aXZhdGVwdWxsKSwgKGdzdF9wcm94eV9wYWRfZG9fYWN0aXZhdGVwdXNoKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fY2hhaW4pLCAoZ3N0X3Byb3h5X3BhZF9kb19nZXRyYW5nZSksCgkgIChnc3RfcHJveHlfcGFkX2RvX2NoZWNrZ2V0cmFuZ2UpLCAoZ3N0X3Byb3h5X3BhZF9kb19nZXRjYXBzKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fYWNjZXB0Y2FwcyksIChnc3RfcHJveHlfcGFkX2RvX2ZpeGF0ZWNhcHMpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19zZXRjYXBzKSwgKGdzdF9wcm94eV9wYWRfc2V0X3RhcmdldCksCgkgIChnc3RfcHJveHlfcGFkX2dldF90YXJnZXQpLCAoZ3N0X3Byb3h5X3BhZF9pbml0KSwKCSAgKGdzdF9wcm94eV9wYWRfZGlzcG9zZSksIChnc3RfcHJveHlfcGFkX2ZpbmFsaXplKSwKCSAgKGdzdF9naG9zdF9wYWRfY2xhc3NfaW5pdCksIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X2dob3N0X3BhZF9kb19saW5rKSwgKGdzdF9naG9zdF9wYWRfZG9fdW5saW5rKSwKCSAgKGdzdF9naG9zdF9wYWRfc2V0X2ludGVybmFsKSwgKGdzdF9naG9zdF9wYWRfZGlzcG9zZSksCgkgIChnc3RfZ2hvc3RfcGFkX25ld19ub3RhcmdldCksIChnc3RfZ2hvc3RfcGFkX25ldyksCgkgIChnc3RfZ2hvc3RfcGFkX2dldF90YXJnZXQpLCAoZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0KToKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuaDoKCSAgQ2xlYW4gdXAgZ2hvc3RwYWRzLCByZW1vdmUgcHJvcGVydGllcyBmb3IgaW50ZXJuYWwgc3R1ZmYuCgkgIE1ha2UgdGhyZWFkc2FmZS4KCSAgRml4IHJlZmNvdW50aW5nLgoJICBQcmVwYXJlIGZvciBzd2l0Y2hpbmcgdGFyZ2V0cywgbm90IGFsbCB1c2UgY2FzZXMgd29yayB5ZXQuCgoyMDA1LTA3LTI5IDE5OjE5OjI5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vcGFydC1nc3RnaG9zdHBhZC50eHQ6IFNtYWxsIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RnaG9zdHBhZC50eHQ6CgkgIFNtYWxsIHVwZGF0ZS4KCSAgKiBnc3QvZ3N0YmluLmM6ICh1bmxpbmtfcGFkcyksIChnc3RfYmluX2FkZF9mdW5jKSwKCSAgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpOgoJICBVbmxpbmtpbmcgcGFkcyB3aGlsZSBob2xkaW5nIHRoZSBiaW4gTE9DSyBpcyBub3QgYSBnb29kCgkgIGlkZWEuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9jbGFzc19pbml0KSwKCSAgKGdzdF9wYWRfbGlua19jaGVja19oaWVyYXJjaHkpLCAoZ3N0X3BhZF9nZXRfY2Fwc191bmxvY2tlZCksCgkgIChnc3RfcGFkX2FjY2VwdF9jYXBzKSwgKGdzdF9wYWRfc2V0X2NhcHMpLCAoZ3N0X3BhZF9zZW5kX2V2ZW50KToKCSAgTm8gcHJvYiBzZXR0aW5nIHRlbXBsYXRlIGFmdGVyIGNyZWF0aW5nIHRoZSBwYWQuCgoyMDA1LTA3LTI5IDE1OjM0OjUyICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9nc3RidXMuYzogZ3N0X2J1c19wb2xsIG1heSBiZSBjYWxsZWQgZnJvbSBvdGhlciB0aHJlYWRzLiBIYW5kbGUgdGhpcyBuaWNlbHkgYnkgbm90IG1ha2luZyBwb2xsX2RhdGEgZGlzYXBwZWFyIG9mZi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3NldF9mbHVzaGluZyksIChnc3RfYnVzX3BvcCksCgkgIChnc3RfYnVzX3BlZWspLCAoZ3N0X2J1c19zb3VyY2VfZGlzcGF0Y2gpLAoJICAoZ3N0X2J1c19hZGRfd2F0Y2hfZnVsbCksIChwb2xsX2hhbmRsZXIpLCAocG9sbF90aW1lb3V0KSwKCSAgKHBvbGxfZGVzdHJveSksIChwb2xsX2Rlc3Ryb3lfdGltZW91dCksIChnc3RfYnVzX3BvbGwpOgoJICBnc3RfYnVzX3BvbGwgbWF5IGJlIGNhbGxlZCBmcm9tIG90aGVyIHRocmVhZHMuIEhhbmRsZQoJICB0aGlzIG5pY2VseSBieSBub3QgbWFraW5nIHBvbGxfZGF0YSBkaXNhcHBlYXIgb2ZmIHRoZQoJICBzdGFjayBvbmNlIGdzdF9idXNfcG9sbCByZXR1cm5zLgoJICBnc3RfYnVzX3BlZWsgbm93IGluY3JlbWVudHMgdGhlIHJlZmNvdW50IG9uIHRoZSByZXR1cm5lZAoJICBtZXNzYWdlLgoKMjAwNS0wNy0yOSAxMToyOTo1MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtZ3N0Z2hvc3RwYWQudHh0OiBPdmVydmlldyBvZiBjdXJyZW50IEdob3N0UGFkIGRhdGFzdHJ1Y3R1cmVzIGFuZCB1c2UgY2FzZXMgZm9yIGNoYW5naW5nIHRoZSB0YXJnZXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0Z2hvc3RwYWQudHh0OgoJICBPdmVydmlldyBvZiBjdXJyZW50IEdob3N0UGFkIGRhdGFzdHJ1Y3R1cmVzIGFuZCB1c2UKCSAgY2FzZXMgZm9yIGNoYW5naW5nIHRoZSB0YXJnZXQuCgoyMDA1LTA3LTI4IDE1OjM4OjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBBZGRlZCBjaGVja3MgZm9yIGhpZXJhcmNoeSBjb25zaXN0ZW5jeSB3aGFuIGFkZGluZyBsaW5rZWQgZWxlbWVudHMgdG8gYmlucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoR1NUX1NUQVJUX1RFU1QpLCAoZ3N0X2Jpbl9zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrcyBmb3IgaGllcmFyY2h5IGNvbnNpc3RlbmN5IHdoYW4gYWRkaW5nIGxpbmtlZAoJICBlbGVtZW50cyB0byBiaW5zLgoJICAqIGNoZWNrL2dzdC9nc3RlbGVtZW50LmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfZWxlbWVudF9zdWl0ZSk6CgkgIEFkZGVkIGNoZWNrIHRvIHRlc3QgZWxlbWVudCBzY2hlZHVsaW5nIHdpdGhvdXQgYmluL3BpcGVsaW5lLgoJICAqIGNoZWNrL3BpcGVsaW5lcy9zaW1wbGVfbGF1bmNoX2xpbmVzLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIEZpcnN0IGFkZCBlbGVtZW50cyB0byBiaW4sIHRoZW4gbGluay4KCSAgKiBnc3QvZ3N0YmluLmM6ICh1bmxpbmtfcGFkcyksIChnc3RfYmluX2FkZF9mdW5jKSwKCSAgKGdzdF9iaW5fcmVtb3ZlX2Z1bmMpOgoJICBVbmxpbmsgcGFkcyBmcm9tIGVsZW1lbnRzIGFkZGVkL3JlbW92ZWQgZnJvbSBiaW4gdG8gbWFpbnRhaW4KCSAgaGllcmFyY2h5IGNvbnNpc3RlbmN5LgoKMjAwNS0wNy0yOCAxMTo0OTo1NiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS4qOiBSZW1vdmUgYnJva2VuIGRlbGF5X2NvbmZpZ3VyZSAoZml4ZXMgcmVuZWdvdGlhdGlvbiBvZiBzb2Z0d2FyZSBzY2FsaW5nIHBpcGVsaW5lcyk7IHJlbW92Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIFJlbW92ZSBicm9rZW4gZGVsYXlfY29uZmlndXJlIChmaXhlcyByZW5lZ290aWF0aW9uIG9mIHNvZnR3YXJlCgkgIHNjYWxpbmcgcGlwZWxpbmVzKTsgcmVtb3ZlIHNvbWUgbGVmdG92ZXIgcHJpbnRmKClzLgoKMjAwNS0wNy0yOCAxMToyNDozMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jOiBBZGRlZCBzb21lIG1vcmUgdGVzdHMgZm9yIHdyb25nIGhpZXJhcmNoeQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzogKEdTVF9TVEFSVF9URVNUKSwgKGdzdF9naG9zdF9wYWRfc3VpdGUpOgoJICBBZGRlZCBzb21lIG1vcmUgdGVzdHMgZm9yIHdyb25nIGhpZXJhcmNoeQoJICAqIGRvY3MvZGVzaWduL3BhcnQtb3ZlcnZpZXcudHh0OgoJICBTb21lIHVwZGF0ZXMuCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX2Rpc3Bvc2UpOgoJICBDbGVhbnVwcy4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcmVtb3ZlX3BhZCksIChnc3RfZWxlbWVudF9zZWVrKSwKCSAgKGdzdF9lbGVtZW50X2Rpc3Bvc2UpOgoJICBTb21lIG1vcmUgY2xlYW51cHMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9saW5rX2NoZWNrX2NvbXBhdGlibGVfdW5sb2NrZWQpLAoJICAoZ3N0X3BhZF9saW5rX2NoZWNrX2hpZXJhcmNoeSksIChnc3RfcGFkX2xpbmtfcHJlcGFyZSksCgkgIChnc3RfcGFkX2dldF9jYXBzX3VubG9ja2VkKSwgKGdzdF9wYWRfYWNjZXB0X2NhcHMpLAoJICAoZ3N0X3BhZF9zZXRfY2FwcyksIChnc3RfcGFkX3NlbmRfZXZlbnQpOgoJICBDaGVjayBmb3IgY29ycmVjdCBoaWVyYXJjaHkgd2hlbiBsaW5raW5nIHBhZHMuIE1vdmluZyB0bwoJICBzdHJpY3QgcmVxdWlyZW1lbnQgZm9yIGdob3N0cGFkcyB3aGVuIGxpbmtpbmcgZWxlbWVudHMgaW4KCSAgZGlmZmVyZW50IGJpbnMuCgkgICogZ3N0L2dzdHBhZC5oOgoJICBDbGVhbiB1cHMuIEFkZGVkIFdST05HX0hJRVJBUkNIWSByZXR1cm4gdmFsdWUuCgoyMDA1LTA3LTI4IDEwOjM4OjAyICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEJldHRlciBkZWJ1ZyBpZiBubyB0cmFuc2Zvcm0gaXMgcG9zc2libGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKToKCSAgQmV0dGVyIGRlYnVnIGlmIG5vIHRyYW5zZm9ybSBpcyBwb3NzaWJsZS4KCjIwMDUtMDctMjcgMjA6MjI6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL3JhbmRvbS93dGF5L25ldHdvcmstdHJhbnNwOiBTb21lIG9sZCBkb2MgSSBoYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcmFuZG9tL3d0YXkvbmV0d29yay10cmFuc3A6CgkgIFNvbWUgb2xkIGRvYyBJIGhhZC4KCjIwMDUtMDctMjcgMTk6MDA6MzYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6IEZpeCBzZXJpYWxpemF0aW9uIG9mIHNlZWsgZXZlbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6IChnc3RfZHBfcGFja2V0X2Zyb21fZXZlbnQpLAoJICAoZ3N0X2RwX2V2ZW50X2Zyb21fcGFja2V0KToKCSAgRml4IHNlcmlhbGl6YXRpb24gb2Ygc2VlayBldmVudHMuCgoyMDA1LTA3LTI3IDE4OjQ3OjQ4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgRml4IGNvbXBpbGF0aW9uIGFuZCBmaXggZXZlbnQgc2VyaWFsaXphdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0LWxpYnMvZ2RwLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZV9zaW5rX2V2ZW50KToKCSAgRml4IGNvbXBpbGF0aW9uIGFuZCBmaXggZXZlbnQgc2VyaWFsaXphdGlvbi4KCjIwMDUtMDctMjcgMTg6MzM6MDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTb21lIGRvY3MgdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBDSEFOR0VTLTAuOToKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDoKCSAgU29tZSBkb2NzIHVwZGF0ZXMKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfYWN0aXZhdGVfcHVzaCksIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1bGwpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19zZW5kX2Rpc2NvbnQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RvX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX2V2ZW50X2hhbmRsZXIpLAoJICAoZ3N0X2Jhc2Vfc3JjX2xvb3ApOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fY2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF9zaXplKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50KSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2gpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2lzX3Bhc3N0aHJvdWdoKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzogKGdzdF9mYWtlX3NpbmtfZXZlbnQpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVfc2lua19ldmVudCk6CgkgIEV2ZW50IHVwZGF0ZXMuCgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICBVc2UgZmFzdGVyIGNhc3RzLgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZWVrKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBVcGRhdGUgZ3N0X2VsZW1lbnRfc2Vlay4KCSAgKiBnc3QvZ3N0ZXZlbnQuYzogKGdzdF9ldmVudF9maW5hbGl6ZSksIChfZ3N0X2V2ZW50X2NvcHkpLAoJICAoZ3N0X2V2ZW50X25ldyksIChnc3RfZXZlbnRfbmV3X2N1c3RvbSksIChnc3RfZXZlbnRfZ2V0X3N0cnVjdHVyZSksCgkgIChnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0YXJ0KSwgKGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcCksCgkgIChnc3RfZXZlbnRfbmV3X2VvcyksIChnc3RfZXZlbnRfbmV3X25ld3NlZ21lbnQpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX25ld3NlZ21lbnQpLCAoZ3N0X2V2ZW50X25ld190YWcpLAoJICAoZ3N0X2V2ZW50X3BhcnNlX3RhZyksIChnc3RfZXZlbnRfbmV3X2ZpbGxlciksIChnc3RfZXZlbnRfbmV3X3FvcyksCgkgIChnc3RfZXZlbnRfcGFyc2VfcW9zKSwgKGdzdF9ldmVudF9uZXdfc2VlayksCgkgIChnc3RfZXZlbnRfcGFyc2Vfc2VlayksIChnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24pOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICBNYWtlIEdzdEV2ZW50IHVzZSBHc3RTdHJ1Y3R1cmUuIEFkZCBwYXJzaW5nIGNvZGUsIG1ha2Ugc3VyZSB0aGUKCSAgQVBJIGlzIHN1ZmZpY2llbnRseSBnZW5lcmljLgoJICBNYXJrIHBvc3NpYmxlIGRpcmVjdGlvbnMgb2YgZXZlbnRzIGFuZCBzZXJpYWxpemF0aW9uLgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9pbml0KSwgKGdzdF9tZXNzYWdlX2ZpbmFsaXplKSwKCSAgKF9nc3RfbWVzc2FnZV9jb3B5KSwgKGdzdF9tZXNzYWdlX25ld19zZWdtZW50X3N0YXJ0KSwKCSAgKGdzdF9tZXNzYWdlX25ld19zZWdtZW50X2RvbmUpLCAoZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSksCgkgIChnc3RfbWVzc2FnZV9wYXJzZV9zZWdtZW50X3N0YXJ0KSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3NlZ21lbnRfZG9uZSk6CgkgIFNtYWxsIGNsZWFudXBzLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZ2V0X2NhcHNfdW5sb2NrZWQpLCAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksCgkgIChnc3RfcGFkX3NldF9jYXBzKSwgKGdzdF9wYWRfc2VuZF9ldmVudCk6CgkgIFVwZGF0ZSBmb3IgbmV3IGV2ZW50cy4KCSAgQ2F0Y2ggZXZlbnRzIHNlbnQgaW4gd3JvbmcgZGlyZWN0aW9ucy4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9saW5rX3NyYyksCgkgIChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLCAoZ3N0X3F1ZXVlX2NoYWluKSwgKGdzdF9xdWV1ZV9sb29wKSwKCSAgKGdzdF9xdWV1ZV9oYW5kbGVfc3JjX3F1ZXJ5KToKCSAgRXZlbnQgdXBkYXRlcy4KCSAgKiBnc3QvZ3N0dGFnLmM6CgkgICogZ3N0L2dzdHRhZy5oOgoJICBSZW1vdmUgZXZlbnQgY29kZSBmcm9tIHRoaXMgZmlsZS4KCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6IChnc3RfZHBfcGFja2V0X2Zyb21fZXZlbnQpLAoJICAoZ3N0X2RwX2V2ZW50X2Zyb21fcGFja2V0KToKCSAgRXZlbnQgdXBkYXRlcy4KCjIwMDUtMDctMjcgMTU6MDU6NDUgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogTWFrZSBkZWJ1Z2dpbmcgYWN0dWFsbHkgdXNlZnVsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0Y2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF9zaXplKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKToKCSAgTWFrZSBkZWJ1Z2dpbmcgYWN0dWFsbHkgdXNlZnVsLgoKMjAwNS0wNy0yNSAxMjozMTowOCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdHBhZC5jOiBJbXBsZW1lbnQgZGVmYXVsdCBmaXhhdGlvbiBvbmNlIGFnYWluLCBzbyB0aGF0IGdzdF9wYWRfZml4YXRlKCkgYWN0dWFsbHkgZG9lcyBhbnl0aGluZyBhdCBhbGwuIFRoaXMgcHJvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGZpeGF0ZV92YWx1ZSksIChnc3RfcGFkX2RlZmF1bHRfZml4YXRlKSwKCSAgKGdzdF9wYWRfZml4YXRlX2NhcHMpOgoJICBJbXBsZW1lbnQgZGVmYXVsdCBmaXhhdGlvbiBvbmNlIGFnYWluLCBzbyB0aGF0IGdzdF9wYWRfZml4YXRlKCkKCSAgYWN0dWFsbHkgZG9lcyBhbnl0aGluZyBhdCBhbGwuIFRoaXMgcHJvYmFibHkgbmVlZHMgdG8gYmUgc29tZQoJICBzb3J0IG9mIGEgbGFzdCByZXNvcnQsIGFuZCB1c2UgcHJvZmlsZS1iYXNlZCBmaXhhdGlvbiBmaXJzdCwgYnV0CgkgIHNpbmNlIHRoYXQgZG9lc24ndCBleGlzdCB5ZXQsIHRoaXMgaXMgdGhlIGJlc3Qgd2UgaGF2ZS4gRml4ZXMKCSAgdmlzdWFsaXphdGlvbiBpbiBUb3RlbS4KCjIwMDUtMDctMjIgMTE6NDc6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6IFNtYWxsIHVwZGF0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICBTbWFsbCB1cGRhdGUuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZV9zaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdXNoKSwKCSAgKGdzdF9iYXNlX3NpbmtfYWN0aXZhdGVfcHVsbCk6CgkgIFNvbWUgbW9yZSBjb21tZW50cy4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2Vfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Zha2Vfc3JjX2NyZWF0ZSk6CgkgIEZpeCBoYW5kb2ZmIG1hcnNoYWxsLgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2NsYXNzX2luaXQpLAoJICAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybV9pcCk6CgkgIFdlJ3JlIGEgcmVhbCBpbnBsYWNlIGVsZW1lbnQuCgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19wb3N0KToKCSAgQWRkZWQgc29tZSBjb21tZW50cy4KCSAgKiB0ZXN0cy9sYXQuYzogKGZha2VzcmMpLCAoZmFrZXNpbmspLCAoc2ltcGxlKSwgKHF1ZXVlKSwgKG1haW4pOgoJICAqIHRlc3RzL211eGluZy9jYXNlMS5jOiAobWFpbik6CgkgICogdGVzdHMvc2NoZWQvZHluYW1pYy1waXBlbGluZS5jOiAobWFpbik6CgkgICogdGVzdHMvc2NoZWQvaW50ZXJydXB0MS5jOiAobWFpbik6CgkgICogdGVzdHMvc2NoZWQvaW50ZXJydXB0Mi5jOiAobWFpbik6CgkgICogdGVzdHMvc2NoZWQvaW50ZXJydXB0My5jOiAobWFpbik6CgkgICogdGVzdHMvc2NoZWQvcnVueG1sLmM6IChtYWluKToKCSAgKiB0ZXN0cy9zY2hlZC9zY2hlZC1zdHJlc3MuYzogKG1haW4pOgoJICAqIHRlc3RzL3NlZWtpbmcvc2Vla2luZzEuYzogKGV2ZW50X3JlY2VpdmVkKSwgKG1haW4pOgoJICAqIHRlc3RzL3RocmVhZHN0YXRlL3RocmVhZHN0YXRlMi5jOiAoYnVzX2hhbmRsZXIpLCAodGltZW91dF9mdW5jKSwKCSAgKG1haW4pOgoJICAqIHRlc3RzL3RocmVhZHN0YXRlL3RocmVhZHN0YXRlMy5jOiAobWFpbik6CgkgICogdGVzdHMvdGhyZWFkc3RhdGUvdGhyZWFkc3RhdGU0LmM6IChtYWluKToKCSAgKiB0ZXN0cy90aHJlYWRzdGF0ZS90aHJlYWRzdGF0ZTUuYzogKG1haW4pOgoJICBGaXggdGhlIHRlc3RzLgoKMjAwNS0wNy0yMSAxNzoyMjoxMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtc2Vla2luZy50eHQ6IFNvbWUgc21hbGwgYWRkaXRpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXNlZWtpbmcudHh0OgoJICBTb21lIHNtYWxsIGFkZGl0aW9ucy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZ2V0X3RpbWVzKSwgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyksCgkgIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1c2gpLCAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdWxsKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBkaXNjb250IHZhbHVlcyBhcmUgZ2ludDY0LCBoYW5kbGUgdGhlIG1hdGggY29ycmVjdGx5LgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19sb29wKToKCSAgTWFrZSB0aGUgYmFzZXNyYyByZXBvcnQgZXJyb3IgaWYgdGhlIHNvdXJjZSBwYWQgaXMgbm90IGxpbmtlZC4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9saW5rX3NyYyksIChnc3RfcXVldWVfY2hhaW4pLAoJICAoZ3N0X3F1ZXVlX2xvb3ApLCAoZ3N0X3F1ZXVlX2hhbmRsZV9zcmNfcXVlcnkpLAoJICAoZ3N0X3F1ZXVlX3NyY19hY3RpdmF0ZV9wdXNoKToKCSAgTWFrZSBxdWV1ZSBjb2xsZWN0IGRhdGEgZXZlbiBpZiB0aGUgc3JjcGFkIGlzIG5vdCBsaW5rZWQuCgkgIFN0YXJ0IHB1c2hpbmcgb3V0IGRhdGEgYXMgc29vbiBhcyBpdCBpcyBsaW5rZWQuCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF91bmxpbmspLCAoZ3N0X2Zsb3dfZ2V0X25hbWUpOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICBBZGRlZCBnc3RfZmxvd19nZXRfbmFtZSgpIHRvIGVhc2UgZXJyb3IgcmVwb3J0aW5nLgoKMjAwNS0wNy0yMCAxODowMjoxMyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RtZXNzYWdlLio6IEFkZGVkIGEgYnVuY2ggb2YgbWVzc2FnZXMgZm9yIGFkdmFuY2VkIHNlZWtpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChnc3RfbWVzc2FnZV9uZXdfc2VnbWVudF9zdGFydCksCgkgIChnc3RfbWVzc2FnZV9uZXdfc2VnbWVudF9kb25lKSwgKGdzdF9tZXNzYWdlX3BhcnNlX3NlZ21lbnRfc3RhcnQpLAoJICAoZ3N0X21lc3NhZ2VfcGFyc2Vfc2VnbWVudF9kb25lKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBBZGRlZCBhIGJ1bmNoIG9mIG1lc3NhZ2VzIGZvciBhZHZhbmNlZCBzZWVraW5nLgoJICAqIGdzdC9wYXJzZS9ncmFtbWFyLnk6CgkgICogbGlicy9nc3QvY29udHJvbC9kcGFyYW1tYW5hZ2VyLmM6IChnc3RfZHBtYW5fc2V0X3BhcmVudCksCgkgIChnc3RfZHBtYW5fc3RhdGVfY2hhbmdlZCk6CgkgIEZpeCBzb21lIG5ldy1wYWQgLT4gcGFkLWFkZGVkIHNpZ25hbHMKCjIwMDUtMDctMjAgMTc6MjI6MjcgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGRvY3MvOiBEb2N1bWVudCBuZXctcGFkL3N0YXRlLWNoYW5nZSBzaWduYWwgcmVuYW1lcyBhbmQgdGhlIEZpeGVkTGlzdCB0eXBlIHJlbmFtZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgIERvY3VtZW50IG5ldy1wYWQvc3RhdGUtY2hhbmdlIHNpZ25hbCByZW5hbWVzIGFuZCB0aGUgRml4ZWRMaXN0CgkgIHR5cGUgcmVuYW1lLgoKMjAwNS0wNy0yMCAxNzoxNjo0NCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgR3N0RWxlbWVudDo6bmV3LXBhZCAtPiBwYWQtYWRkZWQsIEdzdEVsZW1lbnQ6OnN0YXRlLWNoYW5nZSAtPiBzdGF0ZS1jaGFuZ2VkLCBHc3RWYWx1ZUZpeGVkTGlzdCAtPiBHc3RWYWx1ZUFycmF5LCBhZGQgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWF1dG9wbHVnZ2luZy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWhlbGxvd29ybGQueG1sOgoJICAqIGRvY3MvbWFudWFsL2Jhc2ljcy1wYWRzLnhtbDoKCSAgKiBkb2NzL3JhbmRvbS9kcy8wLjktc3VnZ2VzdGVkLWNoYW5nZXM6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpLCAoZ3N0X2VsZW1lbnRfc2Vlayk6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0Zm9ybWF0Lmg6CgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV92YWx1ZV9nZXRfZ2VuZXJpY190eXBlKSwKCSAgKGdzdF9zdHJ1Y3R1cmVfcGFyc2VfYXJyYXkpLCAoZ3N0X3N0cnVjdHVyZV9wYXJzZV92YWx1ZSk6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdHlwZV9pc19maXhlZCksCgkgIChnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlKSwgKGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSksCgkgIChnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSksIChnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUpLAoJICAoZ3N0X3ZhbHVlX3RyYW5zZm9ybV9hcnJheV9zdHJpbmcpLCAoZ3N0X3ZhbHVlX3NlcmlhbGl6ZV9hcnJheSksCgkgIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYXJyYXkpLCAoZ3N0X3ZhbHVlX2ludGVyc2VjdF9hcnJheSksCgkgIChnc3RfdmFsdWVfaXNfZml4ZWQpLCAoX2dzdF92YWx1ZV9pbml0aWFsaXplKToKCSAgKiBnc3QvZ3N0dmFsdWUuaDoKCSAgR3N0RWxlbWVudDo6bmV3LXBhZCAtPiBwYWQtYWRkZWQsIEdzdEVsZW1lbnQ6OnN0YXRlLWNoYW5nZSAtPgoJICBzdGF0ZS1jaGFuZ2VkLCBHc3RWYWx1ZUZpeGVkTGlzdCAtPiBHc3RWYWx1ZUFycmF5LCBhZGQgZm9ybWF0IGFuZAoJICBmbGFncyBhcyB0aGVpciBvd24gYXJndW1lbnRzIGluIGdzdF9lbGVtZW50X3NlZWsoKSAoc2hvdWxkIGltcHJvdmUKCSAgImJpbmRlYWJpbGl0eSIpLCByZW1vdmUgZnVuY3Rpb24gZ2VuZXJhdG9ycyBzaW5jZSB0aGV5IGRvbid0IHdvcmsKCSAgdW5kZXIgYSB3aG9sZSBidW5jaCBvZiBjb21waWxlcnMgKHRoZXkgd2VyZSBkZXByZWNhdGVkIGFscmVhZHkKCSAgYW55d2F5KS4KCjIwMDUtMDctMjAgMTc6MTU6MTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0LnN1cHA6CgkqIGNvbW1vbjoKCSogdGVzdHMvY2hlY2svZ3N0LnN1cHA6CgkgIHBhdGNoIGZyb20gRWRnYXJkIHRvIHByb3Blcmx5IHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwYXRjaCBmcm9tIEVkZ2FyZCB0byBwcm9wZXJseSBzdXBwcmVzcyB0aGVzZSB3YXJuaW5ncwoKMjAwNS0wNy0yMCAxNjoyMDozOSArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdGluZm8uKjogRml4IGlsbGVnYWwgY2FzdCBvbiBzb21lIHBsYXRmb3JtcyAoIzMwOTI1MykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RpbmZvLmM6IChfZ3N0X2RlYnVnX25hbWVvZl9mdW5jcHRyKSwKCSAgKF9nc3RfZGVidWdfcmVnaXN0ZXJfZnVuY3B0cik6CgkgICogZ3N0L2dzdGluZm8uaDoKCSAgRml4IGlsbGVnYWwgY2FzdCBvbiBzb21lIHBsYXRmb3JtcyAoIzMwOTI1MykuCgoyMDA1LTA3LTIwIDExOjM1OjE4ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvZ3N0bWVzc2FnZS4qOiBBZGQgX25ld19jdXN0b20sIG1ha2UgX25ld19hcHBsaWNhdGlvbiBhIG1hY3JvIHRvIF9uZXdfY3VzdG9tLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X2N1c3RvbSk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgQWRkIF9uZXdfY3VzdG9tLCBtYWtlIF9uZXdfYXBwbGljYXRpb24gYSBtYWNybyB0byBfbmV3X2N1c3RvbS4KCjIwMDUtMDctMjAgMTA6NTg6MTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLio6IEFkZCBhIGdib29sZWFuIHRvIGRlY2lkZSB3aGVuIHRvIHB1c2ggb3V0IGEgZGlzY29udC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RvX3NlZWspLCAoZ3N0X2Jhc2Vfc3JjX2xvb3ApLCAoZ3N0X2Jhc2Vfc3JjX3N0YXJ0KToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIEFkZCBhIGdib29sZWFuIHRvIGRlY2lkZSB3aGVuIHRvIHB1c2ggb3V0IGEgZGlzY29udC4KCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksIChnc3RfcXVldWVfY2hhaW4pLAoJICAoZ3N0X3F1ZXVlX2xvb3ApLCAoZ3N0X3F1ZXVlX2hhbmRsZV9zcmNfcXVlcnkpLAoJICAoZ3N0X3F1ZXVlX3NpbmtfYWN0aXZhdGVfcHVzaCksIChnc3RfcXVldWVfc3JjX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X3F1ZXVlX3NldF9wcm9wZXJ0eSksIChnc3RfcXVldWVfZ2V0X3Byb3BlcnR5KToKCSAgU29tZSBjbGVhbnVwcy4KCSAgKiB0ZXN0cy90aHJlYWRzdGF0ZS90aHJlYWRzdGF0ZTEuYzogKG1haW4pOgoJICBNYWtlIGEgdGhyZWFkIHRlc3QgY29tcGlsZSBhbmQgcnVuLi4uIHZlcnkgc2lsbHkuLgoKMjAwNS0wNy0yMCAxMDoxMzo0NiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9tYW51YWwvYXBwZW5kaXgtcG9ydGluZy54bWw6IE1lbnRpb24gcmVtb3ZhbCBvZiBsaWJnc3RnY29uZi0wLjkubGEgYW5kIGV4aXN0ZW5jZSBvZiBnY29uZiBlbGVtZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgIE1lbnRpb24gcmVtb3ZhbCBvZiBsaWJnc3RnY29uZi0wLjkubGEgYW5kIGV4aXN0ZW5jZSBvZiBnY29uZgoJICBlbGVtZW50cy4KCjIwMDUtMDctMjAgMDg6Mjk6MDYgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGRvY3MvcHdnLzogRG9jdW1lbnQgYmFzZSBjbGFzc2VzLCB1cGRhdGUgc2VjdGlvbnMgb2Ygbi10by0xIGFuZCAxLXRvLW4gKG11eGVyLCBmaXggc29tZSBjb2RlIGV4YW1wbGVzIGFuZCBsaW5rcyBhbmQgdS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC1jbG9jay54bWw6CgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgICogZG9jcy9wd2cvaW50cm8tcHJlZmFjZS54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItYmFzZS54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItbWFuYWdlci54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItbnRvbi54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItbnRvb25lLnhtbDoKCSAgKiBkb2NzL3B3Zy9vdGhlci1vbmV0b24ueG1sOgoJICAqIGRvY3MvcHdnL3B3Zy54bWw6CgkgIERvY3VtZW50IGJhc2UgY2xhc3NlcywgdXBkYXRlIHNlY3Rpb25zIG9mIG4tdG8tMSBhbmQgMS10by1uIChtdXhlciwKCSAgZGVtdXhlciksIHJlbW92ZSBuLXRvLW4gKHdhcyBuZXZlciB3cml0dGVuKSwgZml4IHNvbWUgY29kZSBleGFtcGxlcwoJICBhbmQgbGlua3MgYW5kIHVwZGF0ZSB0aGUgcG9ydGluZyBzZWN0aW9uIHRvIGluY2x1ZGUgYWxsIHRoaXMuCgoyMDA1LTA3LTE5IDE3OjQ2OjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHF1ZXVlLio6IFByb3BhZ2F0ZSBHc3RGbG93UmV0dXJuIG1vcmUgaW50ZWxsaWdlbnRseSB1cHN0cmVhbSBhbmQgb3V0cHV0IGFuIEVSUk9SL0VPUyB3aGVuIHN0cmVhbWluZyBzdG9wcGVkIGR1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2luaXQpLCAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9xdWV1ZV9jaGFpbiksIChnc3RfcXVldWVfbG9vcCksIChnc3RfcXVldWVfaGFuZGxlX3NyY19ldmVudCksCgkgIChnc3RfcXVldWVfaGFuZGxlX3NyY19xdWVyeSksIChnc3RfcXVldWVfc2lua19hY3RpdmF0ZV9wdXNoKSwKCSAgKGdzdF9xdWV1ZV9zcmNfYWN0aXZhdGVfcHVzaCksIChnc3RfcXVldWVfY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9xdWV1ZV9nZXRfcHJvcGVydHkpOgoJICAqIGdzdC9nc3RxdWV1ZS5oOgoJICBQcm9wYWdhdGUgR3N0Rmxvd1JldHVybiBtb3JlIGludGVsbGlnZW50bHkgdXBzdHJlYW0gYW5kIG91dHB1dAoJICBhbiBFUlJPUi9FT1Mgd2hlbiBzdHJlYW1pbmcgc3RvcHBlZCBkdWUgdG8gZmF0YWwgZXJyb3IuCgoyMDA1LTA3LTE5IDE0OjUyOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBEb24ndCBibG9jayBmb3JldmVyIGZvciB0aGUgc3RhdGUgY2hhbmdlIHRvIGNvbXBsZXRlLCB0aGUgcGlwZWxpbmUgYWxyZWFkeSBkaWQgd2l0aCBhIHNlbnNpYmxlIHRpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGNoZWNrX2ludHIpLCAoZXZlbnRfbG9vcCksIChtYWluKToKCSAgRG9uJ3QgYmxvY2sgZm9yZXZlciBmb3IgdGhlIHN0YXRlIGNoYW5nZSB0byBjb21wbGV0ZSwgdGhlCgkgIHBpcGVsaW5lIGFscmVhZHkgZGlkIHdpdGggYSBzZW5zaWJsZSB0aW1lb3V0LgoKMjAwNS0wNy0xOSAxMzo0Mzo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogTWFrZSBzdXJlIHdlIG5ldmVyIGNhbGwgdGhlIGNyZWF0ZSBmdW5jdGlvbiBpcyB3ZSBnb3QgZGVhY3RpdmF0ZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpOgoJICBNYWtlIHN1cmUgd2UgbmV2ZXIgY2FsbCB0aGUgY3JlYXRlIGZ1bmN0aW9uIGlzIHdlCgkgIGdvdCBkZWFjdGl2YXRlZC4KCjIwMDUtMDctMTkgMTE6Mjc6MDcgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICB1cGRhdGUgZm9yIGxhdGVzdCBjaGFuZ2VzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgZm9yIGxhdGVzdCBjaGFuZ2VzCgoyMDA1LTA3LTE5IDEwOjQwOjQ5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvcGFyc2UvcGFyc2UubDogQXR0ZW1wdCB0byBzb2x2ZSBidWcgIzE3MjgxNS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDctMTkgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L3BhcnNlL3BhcnNlLmw6IEF0dGVtcHQgdG8gc29sdmUgYnVnICMxNzI4MTUuCgoyMDA1LTA3LTE5IDA5OjE5OjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgU21hbGwgZG9jcyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWNsb2Nrcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kb19zZWVrKToKCSAgU21hbGwgZG9jcyB1cGRhdGVzLgoJICBPbmx5IHVwZGF0ZSB0aGUgc2Vla2luZyB2YWx1ZXMgd2hlbiB3ZSBhcmUgbm90CgkgIGJ1c3kgc3RyZWFtaW5nLgoKMjAwNS0wNy0xOCAxNzo0Mzo1MiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgIE9vcHMsIGlnbm9yZSB0aGUgcmVzdWx0IG9mIGdzdF9wYWRfcHVzaF9ldmVudCBoZXJlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgT29wcywgaWdub3JlIHRoZSByZXN1bHQgb2YgZ3N0X3BhZF9wdXNoX2V2ZW50IGhlcmUuCgoyMDA1LTA3LTE4IDE3OjEyOjM2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogU2VuZCBkaXNjb250IGV2ZW50IGZyb20gdGhlIGxvb3AgZnVuY3Rpb24sIGFzIHBhZHMgYXJlbid0IGFjdGl2YXRlZCB5ZXQgaW4gdGhlIGFjdGl2YXRlX3B1c2ggaC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfbG9vcCksCgkgIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIFNlbmQgZGlzY29udCBldmVudCBmcm9tIHRoZSBsb29wIGZ1bmN0aW9uLCBhcyBwYWRzCgkgIGFyZW4ndCBhY3RpdmF0ZWQgeWV0IGluIHRoZSBhY3RpdmF0ZV9wdXNoIGhhbmRsZXIuCgkgICogZ3N0L2dzdGJpbi5jOiAoYmluX2J1c19oYW5kbGVyKToKCSAgRG9uJ3QgbGVhayBlbGVtZW50IG5hbWUuCgoyMDA1LTA3LTE4IDE0OjQ3OjM5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjb25maWd1cmUuYWM6IFVzZSBBU19MSUJUT09MX1RBR1MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA3LTE4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNvbmZpZ3VyZS5hYzogVXNlIEFTX0xJQlRPT0xfVEFHUy4KCjIwMDUtMDctMTggMTI6NTg6MjcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6IFJlbW92ZSBkZWxldGVkIHR5cGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgIFJlbW92ZSBkZWxldGVkIHR5cGVzLgoKMjAwNS0wNy0xOCAxMjo0OTo1MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBjb25maWd1cmUuYWM6CgkqIGdzdC9NYWtlZmlsZS5hbToKCSogZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0Lmg6CgkqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RiaW4uaDoKCSogZ3N0L2dzdGJ1cy5oOgoJKiBnc3QvZ3N0Y29uZmlnLmguaW46CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5oOgoJKiBnc3QvZ3N0ZXJyb3IuYzoKCSogZ3N0L2dzdGVycm9yLmg6CgkqIGdzdC9nc3RldmVudC5oOgoJKiBnc3QvZ3N0Z2hvc3RwYWQuYzoKCSogZ3N0L2dzdGluZGV4LmM6CgkqIGdzdC9nc3RpbmZvLmM6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkqIGdzdC9nc3RtZXNzYWdlLmg6CgkqIGdzdC9nc3RtaW5pb2JqZWN0Lmg6CgkqIGdzdC9nc3RvYmplY3QuYzoKCSogZ3N0L2dzdG9iamVjdC5oOgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwYWQuaDoKCSogZ3N0L2dzdHBhcnNlLmg6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSogZ3N0L2dzdHBsdWdpbmZlYXR1cmUuaDoKCSogZ3N0L2dzdHF1ZXJ5Lmg6CgkqIGdzdC9nc3RzY2hlZHVsZXIuYzoKCSogZ3N0L2dzdHNjaGVkdWxlci5oOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmg6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrLmg6CgkqIGdzdC9nc3R0eXBlZmluZC5oOgoJKiBnc3QvZ3N0dHlwZXMuaDoKCSogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuYzoKCSogZ3N0L3JlZ2lzdHJpZXMvZ3N0eG1scmVnaXN0cnkuYzoKCSogZ3N0L3NjaGVkdWxlcnMvdGhyZWFkc2NoZWR1bGVyLmM6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvZHBhcmFtbWFuYWdlci5oOgoJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIHRvb2xzL2dzdC1pbnNwZWN0LmM6CgkqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgIFJlbW92ZWQgcGx1Z2FibGUgc2NoZWR1bGVycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIFJlbW92ZWQgcGx1Z2FibGUgc2NoZWR1bGVycy4KCSAgUmVtb3ZlZCBTY2hlZHVsZXIvTWFuYWdlciBmcm9tIGVsZW1lbnRzLgoJICBSZW1vdmVkIGdzdHR5cGVzLmgsIHJlYXJyYW5nZWQgaW5jbHVkZXMuCgkgIFJlbW92ZWQgZGVwZW5kZW5jeSBwYWQ8LT5lbGVtZW50LCBlbGVtZW50PD5waXBlbGluZSwgYW5kCgkgIHZhcmlvdXMgb3RoZXJzLCAgZml4IGluY2x1ZGVzLgoJICBpbXBsZW1lbnQgZ3N0X3BhZF9nZXRfcGFyZW50KCkgd2l0aCBnc3Rfb2JqZWN0X2dldF9wYXJlbnQoKQoJICBNYWtlIEdzdFRhc2sgc2VmY29udGFpbmVkLgoJICBGaXggX2dldF9zdGF0ZSgpIG9uIEdzdEJpbiwgaXQgZGlkIG5vdCByZXR1cm4gQVNZTkMgd2l0aCBhIDAKCSAgdGltZW91dC4KCSAgRml4IGVuZGxlc3MgbG9vcCBpbiBpdGVyYXRvcl9mb2xkX3dpdGhfcmVzeW5jLgoKMjAwNS0wNy0xOCAwOToyMjo1NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFJlbW92ZSBvbGQgZmlsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3RhcmNoLmg6CgkgIFJlbW92ZSBvbGQgZmlsZS4KCjIwMDUtMDctMTggMDg6NTE6MzEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvTWFrZWZpbGUuYW06IE5vIG1vcmUgY290aHJlYWRzLmgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICBObyBtb3JlIGNvdGhyZWFkcy5oCgoyMDA1LTA3LTE4IDA4OjQzOjI3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2NvdGhyZWFkcy4qOiBMZXQncyByZW1vdmUgdGhlc2UuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9jb3RocmVhZHMuYzoKCSAgKiBnc3QvY290aHJlYWRzLmg6CgkgIExldCdzIHJlbW92ZSB0aGVzZS4KCjIwMDUtMDctMTggMDg6Mjg6NDggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IFNvbWUgbW9yZSBkb2NzIGluIHRoZSB3b3Jrcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1keW5hbWljLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1zZWVraW5nLnR4dDoKCSAgU29tZSBtb3JlIGRvY3MgaW4gdGhlIHdvcmtzLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fY2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0Y2FwcyksIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF9zaXplKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zaW5rX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NyY19hY3RpdmF0ZV9wdWxsKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2gpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2lzX3Bhc3N0aHJvdWdoKToKCSAgUmVmY291bnRpbmcgZml4ZXMuCgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19zb3VyY2VfZGlzcGF0Y2gpLCAoZ3N0X2J1c19wb2xsKToKCSAgQ2xlYW51cHMuCgkgICogZ3N0L2dzdGV2ZW50LmM6IChnc3RfZXZlbnRfZmluYWxpemUpOgoJICBTZXQgU1JDIHRvIE5VTEwuCgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF91bmxpbmspLAoJICAoZ3N0X3BhZF9nZXRfcGFyZW50X2VsZW1lbnQpLCAoZ3N0X3BhZF9wcm94eV9nZXRjYXBzKSwKCSAgKGdzdF9wYWRfcHJveHlfc2V0Y2Fwcyk6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIEFkZCBfZ2V0X3BhcmVudF9lbGVtZW50KCkgdG8gZ2V0IGEgcGFkcyBwYXJlbnQgYXMgYW4gZWxlbWVudC4KCjIwMDUtMDctMTcgMjI6NDQ6MDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9nc3QvZ3N0YmluLmM6IFJlbW92ZSBib2d1cyB0ZXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0YmluLmM6IChHU1RfU1RBUlRfVEVTVCk6CgkgIFJlbW92ZSBib2d1cyB0ZXN0LgoKMjAwNS0wNy0xNyAyMjoyNjowMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJlZmNvdW50aW5nIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19wYWRfZ2V0Y2FwcyksCgkgIChnc3RfYmFzZV9zaW5rX3BhZF9zZXRjYXBzKSwgKGdzdF9iYXNlX3NpbmtfcGFkX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZmx1c2gpLCAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhaW4pLCAoZ3N0X2Jhc2Vfc2lua19sb29wKSwKCSAgKGdzdF9iYXNlX3NpbmtfZGVhY3RpdmF0ZSksIChnc3RfYmFzZV9zaW5rX2FjdGl2YXRlX3B1c2gpLAoJICAoZ3N0X2Jhc2Vfc2lua19hY3RpdmF0ZV9wdWxsKSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgUmVmY291bnRpbmcgZml4ZXMuCgkgIEZpeCBsb2dpYyBmb3IgcmV0dXJuaW5nIEFTWU5DIHdoZW4gbm90IHByZXJvbGxlZC4KCjIwMDUtMDctMTcgMjI6MjI6NTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cXVldWUuYzogRml4IG5hc3R5IHJlZmNvdW50IGJ1Zy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpOgoJICBGaXggbmFzdHkgcmVmY291bnQgYnVnLgoKMjAwNS0wNy0xNiAxOToyNTo0MSArMDAwMCAgUGhpbGlwcGUgS2FsYWYgPHBoaWxpcHBlLmthbGFmQGNvbGxhYm9yYS5jby51az4KCgkqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSAgTW92ZWQgZmRzcmMgdG8gZ3N0LXBsdWdpbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBNb3ZlZCBmZHNyYyB0byBnc3QtcGx1Z2lucy4KCjIwMDUtMDctMTYgMTU6NDM6MTAgKzAwMDAgIFBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+CgoJKiBDaGFuZ2VMb2c6CgkgIEZvcmdvdCBjaGFuZ2Vsb2cgZW50cnkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEZvcmdvdCBjaGFuZ2Vsb2cgZW50cnkKCjIwMDUtMDctMTYgMTU6NDE6MDQgKzAwMDAgIFBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+CgoJKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmZHNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZkc3JjLmg6CgkgIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5oIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0xNiBQaGlsaXBwZSBLaGFsYWYgPGJ1cmdlckBzcGVlZHkub3JnPgoJICAqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jCgkgICogZ3N0L2VsZW1lbnRzL2dzdGZkc3JjLmgKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYwoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbQoJICBQb3J0ZWQgZmRzcmMgdG8gMC45LgoKMjAwNS0wNy0xNiAxNDo1MjoxNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IEZpeCBjb21waWxlIGVycm9yLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZG9fc3luYyk6CgkgIEZpeCBjb21waWxlIGVycm9yLgoKMjAwNS0wNy0xNiAxNDo0MToyNSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLio6IFN0b3JlIGFuZCB1c2UgZGlzY29udCB2YWx1ZXMgd2hlbiBzeW5jaW5nIGJ1ZmZlcnMgYXMgZGVzY3JpYmVkIGluIGRlc2lnbiBkb2NzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KSwKCSAgKGdzdF9iYXNlX3NpbmtfZXZlbnQpLCAoZ3N0X2Jhc2Vfc2lua19nZXRfdGltZXMpLAoJICAoZ3N0X2Jhc2Vfc2lua19kb19zeW5jKSwgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICBTdG9yZSBhbmQgdXNlIGRpc2NvbnQgdmFsdWVzIHdoZW4gc3luY2luZyBidWZmZXJzIGFzIGRlc2NyaWJlZAoJICBpbiBkZXNpZ24gZG9jcy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZV9zcmNfc2VuZF9kaXNjb250KSwKCSAgKGdzdF9iYXNlX3NyY19kb19zZWVrKSwgKGdzdF9iYXNlX3NyY19sb29wKSwgKGdzdF9iYXNlX3NyY19zdGFydCksCgkgIChnc3RfYmFzZV9zcmNfYWN0aXZhdGVfcHVzaCk6CgkgIFB1c2ggZGlzY29udCBldmVudCB3aGVuIHN0YXJ0aW5nLgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybSk6CgkgIFNtYWxsIGNsZWFudXBzLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2hhbmdlX3N0YXRlKToKCSAgU21hbGwgY2xlYW51cHMgaW4gYmFzZV90aW1lICBkaXN0cmlidXRpb24uCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3NldF9iYXNlX3RpbWUpLAoJICAoZ3N0X2VsZW1lbnRfZ2V0X2Jhc2VfdGltZSksIChnc3RfZWxlbWVudF9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgIEFkZGVkIG1ldGhvZHMgZm9yIHRoZSBiYXNlX3RpbWUgb2YgdGhlIGVsZW1lbnQuCgkgIFNvbWUgTVQgZml4ZXMuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfc2VuZF9ldmVudCksCgkgIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKSwgKGdzdF9waXBlbGluZV9zZXRfbmV3X3N0cmVhbV90aW1lKSwKCSAgKGdzdF9waXBlbGluZV9nZXRfbGFzdF9zdHJlYW1fdGltZSk6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmg6CgkgIE1UIGZpeGVzLgoJICBIYW5kbGUgc2Vla2luZyBhcyBkZXNjcmliZWQgaW4gZGVzaWduIGRvYywgcmVtb3ZlIHN0cmVhbV90aW1lCgkgIGhhY2suCgkgIENsZWFudXBzIGNsb2NrIGFuZCBzdHJlYW1fdGltZSBzZWxlY3Rpb24gY29kZS4gQWRkZWQgYWNjZXNzb3JzCgkgIGZvciB0aGUgc3RyZWFtX3RpbWUuCgoyMDA1LTA3LTE2IDE0OjA2OjIxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0ZXJyb3IuYyAoX2dzdF9jb3JlX2Vycm9yc19pbml0KTogVXNlIHRoZSBtYWdpYyB3b3JkLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDctMTYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGVycm9yLmMgKF9nc3RfY29yZV9lcnJvcnNfaW5pdCk6IFVzZSB0aGUgbWFnaWMgd29yZC4uCgoyMDA1LTA3LTE2IDEzOjUwOjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBNYWtlIGVsZW1lbnRzIHNpbGVudCBhcyB0aGUgZGVlcF9ub3RpZnkgcmVmcyB0aGUgcGFyZW50LCB3aGljaCBtaWdodCBtYWtlIHRoZSB0ZXN0IGZhaWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKEdTVF9TVEFSVF9URVNUKToKCSAgTWFrZSBlbGVtZW50cyBzaWxlbnQgYXMgdGhlIGRlZXBfbm90aWZ5IHJlZnMgdGhlCgkgIHBhcmVudCwgd2hpY2ggbWlnaHQgbWFrZSB0aGUgdGVzdCBmYWlsLgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X2dob3N0X3BhZF9kb19hY3RpdmF0ZV9wdXNoKToKCSAgRG9uJ3QgaG9sZCB0aGUgbG9jayBmb3IgdG9vIGxvbmcuCgoyMDA1LTA3LTE2IDEyOjMzOjEzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBEb24ndCB1bnJlZiB0aGUgY2FwcyB3ZSBwYXNzZWQgdG8gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSgpIGFmdGVyIHBhc3NpbmcgdGhlbS4gZ3N0X2NhcHNfbWFrZV93Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19kZWZhdWx0X25lZ290aWF0ZSk6CgkgIERvbid0IHVucmVmIHRoZSBjYXBzIHdlIHBhc3NlZCB0byBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlKCkgYWZ0ZXIKCSAgcGFzc2luZyB0aGVtLiBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlKCkgd2lsbCBkbyB0aGF0IGZvciB1cy4KCjIwMDUtMDctMTUgMTY6MTA6NDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RjYXBzLmggKGdzdF9jYXBzX2lzX3NpbXBsZSk6IFJlbW92ZWQgZGVwcmVjYXRlZCBtYWNybyAoIzE1NzMxMSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA3LTE1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RjYXBzLmggKGdzdF9jYXBzX2lzX3NpbXBsZSk6IFJlbW92ZWQgZGVwcmVjYXRlZCBtYWNybwoJICAoIzE1NzMxMSkuCgoyMDA1LTA3LTE1IDE0OjU5OjIyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYyAobWFyc2hhbF9WT0lEX19NSU5JT0JKRUNUKTogV3JpdGUgb3VyIG93biBtYXJzaGFsbGluZyBmdW5jdGlvbiBmb3IgdGhlIGhhbmRvZmYgc2lnbmFsLiBQcm8uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDctMTUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmMgKG1hcnNoYWxfVk9JRF9fTUlOSU9CSkVDVCk6IFdyaXRlIG91cgoJICBvd24gbWFyc2hhbGxpbmcgZnVuY3Rpb24gZm9yIHRoZSBoYW5kb2ZmIHNpZ25hbC4gUHJvcGVybHkgdHlwZSB0aGUKCSAgYnVmZmVyIGFzIGEgYnVmZmVyLiBGaXhlcyBzb21lIHdhcm5pbmdzLiBTaG91bGQgZG8gYSBtb3JlIGdlbmVyYWwKCSAgc29sdXRpb24uCgkgIChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCk6IFBsdWcgaW50byB0aGUgcmlnaHQgbWFyc2hhbGxlci4KCjIwMDUtMDctMTUgMTM6NDQ6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IFVwZGF0ZWQgZG9jcywgbW9zdGx5IERJU0NPTlQgcmVsYXRlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1UT0RPLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWNsb2Nrcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZXZlbnRzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdHBpcGVsaW5lLnR4dDoKCSAgVXBkYXRlZCBkb2NzLCBtb3N0bHkgRElTQ09OVCByZWxhdGVkLgoKMjAwNS0wNy0xNSAxMjo1NTozMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGRvY3MvcHdnL2J1aWxkaW5nLXBhZHMueG1sOiBzL0dTVF9QQURfTElOS19SRUZVU0VEL0ZBTFNFLyBpbiBnc3RfbXlfZmlsdGVyX3NldGNhcHMoKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1wYWRzLnhtbDoKCSAgcy9HU1RfUEFEX0xJTktfUkVGVVNFRC9GQUxTRS8gaW4gZ3N0X215X2ZpbHRlcl9zZXRjYXBzKCkKCjIwMDUtMDctMTUgMTE6MDU6NTIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIHRvb2xzL2dzdC10eXBlZmluZC5jOgoJICByZW1vdmUgaXJyZWxldmFudCBjb2RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgaXJyZWxldmFudCBjb2RlCgoyMDA1LTA3LTE1IDExOjA0OjE4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0b29scy9nc3QtdHlwZWZpbmQuYzogVXBkYXRlLCBhZGQgY29weXJpZ2h0IGJsb2NrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0xNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuYzogVXBkYXRlLCBhZGQgY29weXJpZ2h0IGJsb2NrLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmVnb3RpYXRlKToKCSAgTm9ybWFsaXplIGFuZCB0cnVuY2F0ZSBjYXBzIGJlZm9yZSBmaXhhdGlvbi4KCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3RjYXBzLmMgKGdzdF9jYXBzX3RydW5jYXRlKTogTmV3IGZ1bmN0aW9uLCBkZXN0cnVjdGl2ZWx5CgkgIGRpc2NhcmRzIGFsbCBidXQgdGhlIGZpcnN0IHN0cnVjdHVyZSBmcm9tIGl0cyBhcmd1bWVudC4KCjIwMDUtMDctMTUgMTA6NDE6MzIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLio6IE1ha2UgcGFzc3Rocm91Z2ggd29yayB1c2luZyB0aGUgYnVmZmVycG9vbHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV90cmFuc2Zvcm1fY2FwcyksIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0Y2FwcyksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY29uZmlndXJlX2NhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldF9zaXplKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9idWZmZXJfYWxsb2MpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2dldHJhbmdlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jaGFpbiksIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2gpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2lzX3Bhc3N0aHJvdWdoKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgIE1ha2UgcGFzc3Rocm91Z2ggd29yayB1c2luZyB0aGUgYnVmZmVycG9vbHMuCgkgIENoYW5nZWQgQVBJIGEgYml0LCBzdWJjbGFzc2VzIGhhdmUgdG8gd3JpdGUgaW50byBhIGJ1ZmZlcgoJICBwcm92aWRlZCBieSB0aGUgYmFzZSBjbGFzcy4KCSAgTW9yZSBkZWJ1ZyBpbmZvIGluIG5lZ28gZnVuY3Rpb25zLgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2luaXQpLAoJICAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybSk6CgkgIFBvcnQgdG8gbmV3IGJhc2UgY2xhc3MuCgoyMDA1LTA3LTE1IDEwOjMwOjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgVG90YWxseSBkdW1wIG1lc3NhZ2VzIGluIC1sYXVuY2ggd2l0aCB0aGUgLW0gb3B0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3X3N0YXRlX2NoYW5nZWQpOgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGV2ZW50X2xvb3ApLCAobWFpbik6CgkgIFRvdGFsbHkgZHVtcCBtZXNzYWdlcyBpbiAtbGF1bmNoIHdpdGggdGhlIC1tIG9wdGlvbi4KCSAgRml4IG1lc3NhZ2UgbmFtZSBmb3IgU3RhdGUgbWVzc2FnZXMsCgoyMDA1LTA3LTE0IDE4OjQ1OjUxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBQb3N0IGVycm9yIG1lc3NhZ2VzIG9uIGVycm9ycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2xvb3ApOgoJICBQb3N0IGVycm9yIG1lc3NhZ2VzIG9uIGVycm9ycy4KCjIwMDUtMDctMTQgMTg6MTA6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Y2Fwcy5jOiBSZW1vdmUgZGVidWcgaW5mby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2RvX3NpbXBsaWZ5KToKCSAgUmVtb3ZlIGRlYnVnIGluZm8uCgkgICogZ3N0L2dzdGVycm9yLmg6CgkgIERlZmluZSBlcnJvciBmb3Igc3RyZWFtIHN0b3BwZWQuCgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2RvX2J1ZmZlcmFsbG9jKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fY2hhaW4pLCAoZ3N0X3Byb3h5X3BhZF9kb19nZXRyYW5nZSk6CgkgIERvIHByb3BlciByZXR1cm4gdmFsdWVzLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZ2V0X2NhcHNfdW5sb2NrZWQpLCAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksCgkgIChnc3RfcGFkX3NldF9jYXBzKSwgKGdzdF9wYWRfY2hhaW4pLCAoZ3N0X3BhZF9wdXNoKSwKCSAgKGdzdF9wYWRfZ2V0X3JhbmdlKToKCSAgQmV0dGVyIHJldHVybiB2YWx1ZXMuCgkgICogZ3N0L2dzdHBhZC5oOgoJICBSZW9yZ2FuaXNlIHJldHVybiB2YWx1ZXMsIGFkZCBtYWNybyB0byBjaGVjayBmb3IgZmF0YWwgZXJyb3JzLgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2NoYWluKToKCSAgUmV0dXJuIHByb3BlciBHc3RGbG93UmV0dXJuIHZhbHVlcywKCjIwMDUtMDctMTQgMDk6MzU6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNpbmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNlc3JjLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXRyYW5zZm9ybS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJpbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJ1ZmZlci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNhcHMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RjbG9jay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNvbXBhdC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNvbmZpZy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50ZGV0YWlscy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnRmYWN0b3J5LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZW51bXR5cGVzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZXJyb3Iuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RldmVudC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZha2VzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmFrZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZpbGVzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZpbHRlci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZvcm1hdC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGdob3N0cGFkLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW1wbGVtZW50c2ludGVyZmFjZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGluZGV4LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5kZXhmYWN0b3J5LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0aW5mby5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGl0ZXJhdG9yLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0bWFjcm9zLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0bWVtY2h1bmsuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RtaW5pb2JqZWN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0b2JqZWN0LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGFkdGVtcGxhdGUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RwYXJzZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHBpcGVsaW5lLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luZmVhdHVyZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHF1ZXJ5LnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0cXVldWUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RyZWdpc3RyeS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHJlZ2lzdHJ5cG9vbC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHNjaGVkdWxlci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHNjaGVkdWxlcmZhY3Rvcnkuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RzdHJ1Y3R1cmUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RzeXN0ZW1jbG9jay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHRhZ2xpc3Quc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0YWdzZXR0ZXIuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0cmFjZS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHRyYXNoc3RhY2suc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlZmluZC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHR5cGVmaW5kZmFjdG9yeS5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHR5cGVzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dXJpaGFuZGxlci5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHVyaXR5cGUuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R1dGlscy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHZhbHVlLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0dmVyc2lvbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdHhtbC5zZ21sOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3Rjb250cm9sLnNnbWw6CgkqIGRvY3MvbGlicy90bXBsL2dzdGRhdGFwcm90b2NvbC5zZ21sOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3RkcGFyYW0uc2dtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZHBsaW5pbnQuc2dtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZHBtYW4uc2dtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0ZHBzbW9vdGguc2dtbDoKCSogZG9jcy9saWJzL3RtcGwvZ3N0Z2V0Yml0cy5zZ21sOgoJKiBkb2NzL2xpYnMvdG1wbC9nc3R1bml0Y29udmVydC5zZ21sOgoJKiBnc3QvYmFzZS9nc3RwdXNoc3JjLmM6CgkqIGdzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdHB1c2hzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RwdXNoc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzaW5rLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuaDoKCSAgbW9yZSBhdXRpc3RpYyBjbGVhbmxpbmVzcyBpbiBmdW5jdGlvbnMvbmFtZXMvZGVmaW5lcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbW9yZSBhdXRpc3RpYyBjbGVhbmxpbmVzcyBpbiBmdW5jdGlvbnMvbmFtZXMvZGVmaW5lcwoKMjAwNS0wNy0xMyAxODoyOTo0MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0cXVldWUuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJICBmaXggZGVidWcgaWZkZWYKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBkZWJ1ZyBpZmRlZgoKMjAwNS0wNy0xMyAxNjoyNjowNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZV9zcmNfc3RhcnQpOiBQb3N0IGFuIGVycm9yIGlmIHRoZSBzb3VyY2UgY291bGRuJ3QgbmVnb3RpYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0xMyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmMgKGdzdF9iYXNlX3NyY19zdGFydCk6IFBvc3QgYW4gZXJyb3IgaWYgdGhlCgkgIHNvdXJjZSBjb3VsZG4ndCBuZWdvdGlhdGUuCgoyMDA1LTA3LTEzIDEzOjE0OjU3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL2dzdC5zdXBwOgoJKiB0ZXN0cy9jaGVjay9nc3Quc3VwcDoKCSAgYWRkIGEgc3VwcHJlc3Npb24gZnJvbSBFZGdhcmQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBhIHN1cHByZXNzaW9uIGZyb20gRWRnYXJkCgoyMDA1LTA3LTEzIDEzOjEwOjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIG1vdmUgdHdvIHRlc3RzdWl0ZSBhcHBzIG92ZXIgdG8gdGhlIGNoZWNrIGRpcgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0ZXN0c3VpdGUvY2Fwcy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0c3VpdGUvY2Fwcy92YWx1ZV9jb21wYXJlLmM6CgkgICogdGVzdHN1aXRlL2NhcHMvdmFsdWVfaW50ZXJzZWN0LmM6CgkgICogY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChHU1RfU1RBUlRfVEVTVCksIChnc3RfdmFsdWVfc3VpdGUpOgoJICBtb3ZlIHR3byB0ZXN0c3VpdGUgYXBwcyBvdmVyIHRvIHRoZSBjaGVjayBkaXIKCjIwMDUtMDctMTIgMTc6MTc6MzQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IEFkZGVkIG1vcmUgZGVidWcgaW5mbyBpbiB0aGUgbmVnb3RpYXRlIHByb2Nlc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKToKCSAgQWRkZWQgbW9yZSBkZWJ1ZyBpbmZvIGluIHRoZSBuZWdvdGlhdGUgcHJvY2Vzcy4KCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICBQcmVwYXJlIGZvciBzZWdtZW50IHBsYXliYWNrLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9zZXRfY2Fwcyk6CgkgIEJldHRlciBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgIFNvbWUgbW9yZSBkb2NzLgoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKG1haW4pOgoJICBOVUxMIHBpcGVsaW5lIG9uIGVycm9ycy4KCjIwMDUtMDctMTIgMTc6MDQ6NDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RidWZmZXIuYyAoX2dzdF9idWZmZXJfY29weSk6IENvcHkgdGhlIGJ1ZmZlciB3aGV0aGVyIG9yIG5vdCBpdCBjb21lcyBmcm9tIGEgbWFsbG9jIHJlZ2lvbi4gTWFrZSBzdXJlIG91ciBjb3B5IC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0xMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YnVmZmVyLmMgKF9nc3RfYnVmZmVyX2NvcHkpOiBDb3B5IHRoZSBidWZmZXIgd2hldGhlciBvcgoJICBub3QgaXQgY29tZXMgZnJvbSBhIG1hbGxvYyByZWdpb24uIE1ha2Ugc3VyZSBvdXIgY29weSBnZXRzIGZyZWVkLgoKMjAwNS0wNy0xMiAxNjoyODozNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL2dzdC9nc3RlbGVtZW50LmM6CgkqIGNoZWNrL2dzdC9nc3RtZXNzYWdlLmM6CgkqIGNoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG1lc3NhZ2UuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJICBmaXggcmVmY291bnRpbmcgb2Ygd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCByZWZjb3VudGluZyBvZiB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcwoKMjAwNS0wNy0xMiAxMzoyNjoyMiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIHJlLWVuYWJsZSBsZWFrIGNoZWNraW5nIDopCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZS1lbmFibGUgbGVhayBjaGVja2luZyA6KQoKMjAwNS0wNy0xMiAxMjoyMDowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogYWRkIHBlci10ZXN0IHZhbGdyaW5kIHRhcmdldHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIGFkZCBwZXItdGVzdCB2YWxncmluZCB0YXJnZXRzCgkgICogY2hlY2svZ3N0LWxpYnMvZ2RwLmM6IChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfZGF0YV9wcm90b2NvbF9zdWl0ZSksIChtYWluKToKCSAgY2xlYW4gdXAKCjIwMDUtMDctMTIgMDk6NDE6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IGluc3RhdGUgbW9yZSB2YWxncmluZGFibGUgdGVzdHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDctMTIgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgIDx0aG9tYXMgYXQgYXBlc3RhYXJ0IGRvdCBvcmc+CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgIGluc3RhdGUgbW9yZSB2YWxncmluZGFibGUgdGVzdHMKCSAgKiBjaGVjay9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChjaGFpbl9mdW5jKSwgKGV2ZW50X2Z1bmMpLAoJICAoR1NUX1NUQVJUX1RFU1QpLCAoZmFrZXNyY19zdWl0ZSk6CgkgICogY2hlY2svZ3N0L2dzdHBhZC5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICAqIGNoZWNrL2dzdC9nc3RzdHJ1Y3R1cmUuYzogKEdTVF9TVEFSVF9URVNUKToKCSAgZml4IHRlc3QgbGVha3MKCSAgKiBkb2NzL2dzdC90bXBsL2dzdG1pbmlvYmplY3Quc2dtbDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2ZpbmFsaXplKToKCSAgZml4IHRoZSBzdGF0aWMgbXV0ZXggbGVhawoKMjAwNS0wNy0xMSAxODo0MTo0OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBjaGVjay9NYWtlZmlsZS5hbTogYWRkIHR3byBtb3JlIHRlc3RzIGZvciB2YWxncmluZGluZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgYWRkIHR3byBtb3JlIHRlc3RzIGZvciB2YWxncmluZGluZwoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoR1NUX1NUQVJUX1RFU1QpOgoJICB0ZXN0IHJlZmNvdW50IG9mIGRlc2VyaWFsaXplZCBidWZmZXIsIGZvdW5kIGEgbGVhawoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RtaW5pb2JqZWN0LnNnbWw6CgkgIGFkZCBtaW5pb2JqZWN0IHRvIGRvY3MKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOgoJICBhZGQgc29tZSBkb2NzCgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYnVmZmVyKSwKCSAgKGdzdF9zdHJpbmdfdW53cmFwKToKCSAgZml4IGEgaGFyZC10by1maW5kIGludmFsaWQgd3JpdGUgZm9yIG9uZSBvZiB0aGUgdGVzdHMKCSAgZml4IGEgbGVhayBmb3IgZGVzZXJpYWxpemVkIGJ1ZmZlcnMKCjIwMDUtMDctMTEgMTU6NDE6MDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBkb24ndCB2YWxncmluZCBhcyBwYXJ0IG9mIG1ha2UgY2hlY2sgZm9yIG5vdwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZG9uJ3QgdmFsZ3JpbmQgYXMgcGFydCBvZiBtYWtlIGNoZWNrIGZvciBub3cKCjIwMDUtMDctMTEgMTU6MjI6MjQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBzcGVjaWZ5IHRvb2wKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHNwZWNpZnkgdG9vbAoKMjAwNS0wNy0xMSAxNToxODozMiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9wd2cvOiBSZXdyaXRlIHNjaGVkdWxpbmctY2hhcHRlciBmb3Igc2NoZWR1bGluZyBtb2RlbCBpbiAwLjkuIEFkZCBsb3RzIG9mIGV4YW1wbGUgY29kZSBhbmQgZXhwbGFuYXRpb24gZm9yIHBhZCBhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2FkdmFuY2VkLWV2ZW50cy54bWw6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtcmVxdWVzdC54bWw6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtc2NoZWR1bGluZy54bWw6CgkgICogZG9jcy9wd2cvYXBwZW5kaXgtcG9ydGluZy54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctYm9pbGVyLnhtbDoKCSAgKiBkb2NzL3B3Zy9pbnRyby1wcmVmYWNlLnhtbDoKCSAgKiBkb2NzL3B3Zy9vdGhlci1udG9vbmUueG1sOgoJICBSZXdyaXRlIHNjaGVkdWxpbmctY2hhcHRlciBmb3Igc2NoZWR1bGluZyBtb2RlbCBpbiAwLjkuIEFkZCBsb3RzCgkgIG9mIGV4YW1wbGUgY29kZSBhbmQgZXhwbGFuYXRpb24gZm9yIHBhZCBhY3RpdmF0aW9uLCBsb29wKCkgYW5kCgkgIGdldHJhbmdlKCkgZnVuY3Rpb25zIGFuZCBhIGJpdCBtb3JlLiBSZW1vdmUgb2xkIGNvbW1lbnRzIHBvaW50aW5nCgkgIHRvIGxvb3AtZnVuY3Rpb25zLgoJICAqIGV4YW1wbGVzL3B3Zy9NYWtlZmlsZS5hbToKCSAgQWRkIGxvb3AvZ2V0cmFuZ2UgZXhhbXBsZXMuCgoyMDA1LTA3LTExIDE1OjEwOjQwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNoZWNrL2dzdC5zdXBwOgoJKiBjaGVjay9nc3QvZ3N0LmM6CgkqIGNoZWNrL2dzdC9nc3RidWZmZXIuYzoKCSogY2hlY2svZ3N0L2dzdGRhdGEuYzoKCSogY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6CgkqIGNoZWNrL2dzdC9nc3RtaW5pb2JqZWN0LmM6CgkqIGNvbmZpZ3VyZS5hYzoKCSogZ3N0L2dzdC5jOgoJKiBnc3QvZ3N0Lmg6CgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ3N0LnN1cHA6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3QuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJ1ZmZlci5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZGF0YS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJICB2YWxncmluZCB1bml0IHRlc3RzIGFzIGNoZWNrLWxvY2FsOyBhZGQgZ3N0X2RlaW5pdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgdmFsZ3JpbmQgdW5pdCB0ZXN0cyBhcyBjaGVjay1sb2NhbDsgYWRkIGdzdF9kZWluaXQKCjIwMDUtMDctMTEgMTU6MDY6MjcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RmYWtlc3JjLnNnbWw6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBhZGQgbnVtLWJ1ZmZlcnMgcHJvcGVydHkgdG8gYmFzZXNyYwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG51bS1idWZmZXJzIHByb3BlcnR5IHRvIGJhc2VzcmMKCjIwMDUtMDctMTAgMTI6MDM6MTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNyYy5zZ21sOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSAgbW9yZSBtYWNybyBzcGxpdHRpbmcKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgbWFjcm8gc3BsaXR0aW5nCgoyMDA1LTA3LTEwIDAwOjA3OjUxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9nc3RlbGVtZW50LmM6IGFkZCBkZWJ1ZwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X2J1cyk6CgkgIGFkZCBkZWJ1ZwoJICAqIHRvb2xzL2dzdC1sYXVuY2guYzogKGNoZWNrX2ludHIpLCAoZXZlbnRfbG9vcCk6CgkgIGZpeCBidXMgbGVha3MKCjIwMDUtMDctMDkgMjM6NTI6MDcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHBhZC5jOgoJICBmaXggY2FwcyBsZWFrIGluIGJvdGggY2FzZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBjYXBzIGxlYWsgaW4gYm90aCBjYXNlcwoKMjAwNS0wNy0wOSAyMzo0ODo0NSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIGR1aCwgcmVtb3ZlIHVudXNlZCB2YXIKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGR1aCwgcmVtb3ZlIHVudXNlZCB2YXIKCjIwMDUtMDctMDkgMjM6NDc6MjMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvZ3N0cGFkLmM6CgkgIGZpeCBhIGNhcHMgbGVhawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZml4IGEgY2FwcyBsZWFrCgoyMDA1LTA3LTA5IDIzOjMzOjI0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogYWRkIGZpbmFsaXplIG1ldGhvZCBhbmQgY2xlYW4gdXAgcHJvcGVybHkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2Vfc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2Vfc3JjX2ZpbmFsaXplKToKCSAgYWRkIGZpbmFsaXplIG1ldGhvZCBhbmQgY2xlYW4gdXAgcHJvcGVybHkKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9kaXNwb3NlKToKCSAgYWRkIGRlYnVnCgoyMDA1LTA3LTA5IDIzOjE1OjI3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RiaW4uYzoKCSAgZG9uJ3QgZ2V0IHNyYyBmb3IgYWxsIG1lc3NhZ2VzOyBvbmx5IGZvciBlb3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRvbid0IGdldCBzcmMgZm9yIGFsbCBtZXNzYWdlczsgb25seSBmb3IgZW9zCgoyMDA1LTA3LTA5IDIyOjU0OjI4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL2dzdC9nc3RiaW4uYzogYWRkIG1vcmUgdGhpbmdzIHRvIGNoZWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RiaW4uYzogKHBvcF9tZXNzYWdlcyksIChHU1RfU1RBUlRfVEVTVCksCgkgIChnc3RfYmluX3N1aXRlKToKCSAgYWRkIG1vcmUgdGhpbmdzIHRvIGNoZWNrCgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpLCAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOgoJICBtb3JlIGRlYnVnCgoyMDA1LTA3LTA5IDE2OjM2OjE4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBjaGVjay9nc3QtbGlicy9nZHAuYzoKCSogY2hlY2svZ3N0L2dzdC5jOgoJKiBjaGVjay9nc3QvZ3N0YmluLmM6CgkqIGNoZWNrL2dzdC9nc3RidWZmZXIuYzoKCSogY2hlY2svZ3N0L2dzdGJ1cy5jOgoJKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOgoJKiBjaGVjay9nc3QvZ3N0ZGF0YS5jOgoJKiBjaGVjay9nc3QvZ3N0ZWxlbWVudC5jOgoJKiBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYzoKCSogY2hlY2svZ3N0L2dzdGl0ZXJhdG9yLmM6CgkqIGNoZWNrL2dzdC9nc3RtZXNzYWdlLmM6CgkqIGNoZWNrL2dzdC9nc3RvYmplY3QuYzoKCSogY2hlY2svZ3N0L2dzdHBhZC5jOgoJKiBjaGVjay9nc3QvZ3N0c3RydWN0dXJlLmM6CgkqIGNoZWNrL2dzdC9nc3RzeXN0ZW1jbG9jay5jOgoJKiBjaGVjay9nc3QvZ3N0dGFnLmM6CgkqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOgoJKiBjaGVjay9nc3RjaGVjay5jOgoJKiBjaGVjay9nc3RjaGVjay5oOgoJKiBjaGVjay9waXBlbGluZXMvY2xlYW51cC5jOgoJKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOgoJKiBjaGVjay9zdGF0ZXMvc2lua3MuYzoKCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiB0ZXN0cy9jaGVjay9nZW5lcmljL3NpbmtzLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3QuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0YnVmZmVyLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RidXMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGNhcHMuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGRhdGEuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdGdob3N0cGFkLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RpdGVyYXRvci5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0bWVzc2FnZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0b2JqZWN0LmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RwYWQuYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHRhZy5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSogdGVzdHMvY2hlY2svZ3N0Y2hlY2suYzoKCSogdGVzdHMvY2hlY2svZ3N0Y2hlY2suaDoKCSogdGVzdHMvY2hlY2svbGlicy9nZHAuYzoKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzL2NsZWFudXAuYzoKCSogdGVzdHMvY2hlY2svcGlwZWxpbmVzL3NpbXBsZS1sYXVuY2gtbGluZXMuYzoKCSAgYWRkIGRlYnVnZ2luZyBjYXRlZ29yeSB1c2UgR1NUX1NUQVJUX1RFU1Qgbm93LCBzbyB3ZSBhZGQgYSBkZWJ1ZyBsaW5lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgZGVidWdnaW5nIGNhdGVnb3J5CgkgIHVzZSBHU1RfU1RBUlRfVEVTVCBub3csIHNvIHdlIGFkZCBhIGRlYnVnIGxpbmUKCjIwMDUtMDctMDkgMTU6MTg6NTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svZ3N0L2dzdGJpbi5jOiBhZGQgdGVzdCBmb3Igc3RhdGUgY2hhbmdlIG1lc3NhZ2Ugb24gYSBiaW4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOiAoU1RBUlRfVEVTVCksIChnc3RfYmluX3N1aXRlKToKCSAgYWRkIHRlc3QgZm9yIHN0YXRlIGNoYW5nZSBtZXNzYWdlIG9uIGEgYmluCgkgICogY2hlY2svZ3N0L2dzdGVsZW1lbnQuYzogKFNUQVJUX1RFU1QpLCAoZ3N0X2VsZW1lbnRfc3VpdGUpOgoJICBhZGQgYW5vdGhlciB0ZXN0CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9pbml0KToKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX2luaXQpLCAoZ3N0X2J1c19wb3N0KToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKSwKCSAgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSk6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6IChnc3RfZWxlbWVudF9mYWN0b3J5X2NyZWF0ZSk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX25ldyk6CgkgICogZ3N0L2dzdHNjaGVkdWxlci5jOgoJICB2YXJpb3VzIGRlYnVnZ2luZyBhZGRpdGlvbnMgYW5kIGNsZWFudXBzCgoyMDA1LTA3LTA4IDE2OjQxOjQ1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIGNoZWNrL2dzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZWxlbWVudC5jOgoJICBhZGRpbmcgdGVzdHMgZm9yIGVsZW1lbnRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGRpbmcgdGVzdHMgZm9yIGVsZW1lbnRzCgoyMDA1LTA3LTA4IDE2OjE2OjI5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6IHBsdWcgbW9yZSBsZWFrcy4gIEEgc2ltcGxlIGdzdF9pbml0KCkgbm93IGlzIGxlYWtmcmVlLCB5YXkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6IChsb2FkX2ZlYXR1cmUpOgoJICBwbHVnIG1vcmUgbGVha3MuICBBIHNpbXBsZSBnc3RfaW5pdCgpIG5vdyBpcyBsZWFrZnJlZSwgeWF5LgoKMjAwNS0wNy0wOCAxNjowODoxNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6CgkgIHBsdWcgYW5vdGhlciBtZW1sZWFrIGluIHJlZ2lzdHJ5IGxvYWRpbmcgLSBJIGhhdmUgTk8gaWRlYSB3aHkgdGhpcyB3YXMgcmV0dXJuaW5nIGEgR3N0UGx1Z2luCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwbHVnIGFub3RoZXIgbWVtbGVhayBpbiByZWdpc3RyeSBsb2FkaW5nIC0gSSBoYXZlIE5PIGlkZWEgd2h5IHRoaXMgd2FzIHJldHVybmluZyBhIEdzdFBsdWdpbgoKMjAwNS0wNy0wOCAxNDo1MDo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvcmVnaXN0cmllcy9nc3RsaWJ4bWxyZWdpc3RyeS5jOgoJICBJIG5lZWQgdG8gbGVhcm4gdG8gc3RvcCBkb2luZyB0aGlzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBJIG5lZWQgdG8gbGVhcm4gdG8gc3RvcCBkb2luZyB0aGlzCgoyMDA1LTA3LTA4IDE0OjM5OjAxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzoKCSAgYWRkIHJpZ2h0IHZhcmlhYmxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgcmlnaHQgdmFyaWFibGUKCjIwMDUtMDctMDggMTQ6MzU6NTcgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY29uZmlndXJlLmFjOiB1c2UgR1NUX1NFVF9FUlJPUl9DRkxBR1MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICB1c2UgR1NUX1NFVF9FUlJPUl9DRkxBR1MKCSAgKiBkb2NzL2ZhcS9jdnMueG1sOgoJICBjaGFuZ2UgdG8gRVJST1JfQ0ZMQUdTCgoyMDA1LTA3LTA4IDE0OjAxOjMxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNvbmZpZ3VyZS5hYzogbWFrZSBHU1RfRVJST1JfQ0ZMQUdTIG92ZXJyaWRhYmxlIGFuZCByZS1lbmFibGUgV2Vycm9yCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgbWFrZSBHU1RfRVJST1JfQ0ZMQUdTIG92ZXJyaWRhYmxlIGFuZCByZS1lbmFibGUgV2Vycm9yCgkgICogZG9jcy9mYXEvY3ZzLnhtbDoKCSAgYWRkIGEgbm90ZSBhYm91dCBlcnJvciBDRkxBR1MKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGZha2VzcmMuc2dtbDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBjb21tZW50IG91dCBzb21lIHVudXNlZCBjb2RlCgkgICogZ3N0L2dzdC5jOiAoc3BsaXRfYW5kX2l0ZXJhdGUpOgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6IChsb2FkX3BhZF90ZW1wbGF0ZSksCgkgIChsb2FkX2ZlYXR1cmUpOgoJICBwbHVnIHNvbWUgbWVtbGVha3MKCjIwMDUtMDctMDcgMTU6MDc6MjEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICBtYWtlIGxpYnMgdXNlIHNhbWUgZ3RrLWRvYy5tYWsKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1ha2UgbGlicyB1c2Ugc2FtZSBndGstZG9jLm1hawoKMjAwNS0wNy0wNyAxNDoxNjo0MCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbW1vbjoKCSogZG9jcy9nc3QvTWFrZWZpbGUuYW06CgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSAgZmFjdG9yIG91dCBndGstZG9jCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmYWN0b3Igb3V0IGd0ay1kb2MKCjIwMDUtMDctMDcgMTQ6MDE6NDcgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3Qvc2NoZWR1bGVycy90aHJlYWRzY2hlZHVsZXIuYzogVW5sb2NrIHRoZSBTVFJFQU1fTE9DSyBjb21wbGV0ZWx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3Qvc2NoZWR1bGVycy90aHJlYWRzY2hlZHVsZXIuYzogKGdzdF90aHJlYWRfc2NoZWR1bGVyX2Z1bmMpLAoJICAoZ3N0X3RocmVhZF9zY2hlZHVsZXJfZGlzcG9zZSk6CgkgIFVubG9jayB0aGUgU1RSRUFNX0xPQ0sgY29tcGxldGVseS4KCjIwMDUtMDctMDcgMTM6MTQ6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZXhhbXBsZXMvcHdnLy5naXRpZ25vcmU6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9wd2cvLmdpdGlnbm9yZToKCSAgaWdub3JlIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlnbm9yZSBtb3JlCgoyMDA1LTA3LTA3IDEzOjEyOjQzICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL2luc3RhbnRpYXRlLy5naXRpZ25vcmU6CgkgIGlnbm9yZSBtb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgbW9yZQoKMjAwNS0wNy0wNyAxMTo1OTozNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiBjaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiBjaGVjay9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSAgYWRkaW5nIGFuIGVsZW1lbnQgdGVzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkaW5nIGFuIGVsZW1lbnQgdGVzdAoKMjAwNS0wNy0wNyAxMTowOTozMiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGJ1cy5jIChnc3RfYnVzX2hhdmVfcGVuZGluZyk6IFJlbW92ZSBpbnRlbnNlbHkgaXJyaXRhdGluZyBkZWJ1ZyBtZXNzYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0wNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YnVzLmMgKGdzdF9idXNfaGF2ZV9wZW5kaW5nKTogUmVtb3ZlIGludGVuc2VseSBpcnJpdGF0aW5nCgkgIGRlYnVnIG1lc3NhZ2UuCgoyMDA1LTA3LTA3IDEwOjAzOjA2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICBhbm90aGVyIGRvYyBmaXgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFub3RoZXIgZG9jIGZpeAoKMjAwNS0wNy0wNyAwOToxMDoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL21hbnVhbC9CVUlMRDoKCSogZG9jcy9tYW51YWwvTWFrZWZpbGUuYW06CgkgIG1vcmUgbWFjb3N4IG1hZG5lc3MgZml4aW5nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtb3JlIG1hY29zeCBtYWRuZXNzIGZpeGluZwoKMjAwNS0wNy0wNyAwODo0MzoxNyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RxdWVyeS4qOiBSZW1vdmUgb2xkIHR5cGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RxdWVyeS5jOgoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICBSZW1vdmUgb2xkIHR5cGVzCgoyMDA1LTA3LTA3IDA4OjE2OjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBBbGxvdyBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGVpciBvd24gbmVnb3RpYXRpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19nZXRfcmFuZ2UpLAoJICAoZ3N0X2Jhc2Vfc3JjX2RlZmF1bHRfbmVnb3RpYXRlKSwgKGdzdF9iYXNlX3NyY19uZWdvdGlhdGUpOgoJICBBbGxvdyBzdWJjbGFzc2VzIHRvIGltcGxlbWVudCB0aGVpciBvd24gbmVnb3RpYXRpb24uCgoyMDA1LTA3LTA2IDE3OjE3OjU5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGRvY3MvZGVzaWduLzogVXBkYXRlIGRlc2lnbiBub3RlcyB0byByZWZsZWN0IHRoZSBtb3ZlbWVudCBvZiByZXNwb25zaWJpbGl0eSBmb3IgYnVzIGhhbmRsaW5nIGZyb20gR3N0UGlwZWxpbmUgdG8KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RiaW4udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0cGlwZWxpbmUudHh0OgoJICBVcGRhdGUgZGVzaWduIG5vdGVzIHRvIHJlZmxlY3QgdGhlIG1vdmVtZW50IG9mCgkgIHJlc3BvbnNpYmlsaXR5IGZvciBidXMgaGFuZGxpbmcgZnJvbSBHc3RQaXBlbGluZSB0bwoJICBHc3RCaW4KCjIwMDUtMDctMDYgMTY6NDU6NDUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgY29uZmlndXJlLmFjOiBSZW1vdmUgdW5uZWNlc3NhcnkgcXVldWUyLzMvNCBleGFtcGxlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICBSZW1vdmUgdW5uZWNlc3NhcnkgcXVldWUyLzMvNCBleGFtcGxlcy4KCjIwMDUtMDctMDYgMTY6MjI6NDcgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZXhhbXBsZXMvOiBVcGRhdGUgYSBjb3VwbGUgb2YgdGhlIGV4YW1wbGVzIHRvIHdvcmsgYWdhaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGV4YW1wbGVzL01ha2VmaWxlLmFtOgoJICAqIGV4YW1wbGVzL2hlbGxvd29ybGQvaGVsbG93b3JsZC5jOiAoZXZlbnRfbG9vcCksIChtYWluKToKCSAgKiBleGFtcGxlcy9xdWV1ZS9xdWV1ZS5jOiAoZXZlbnRfbG9vcCksIChtYWluKToKCSAgKiBleGFtcGxlcy9xdWV1ZTIvcXVldWUyLmM6IChtYWluKToKCSAgVXBkYXRlIGEgY291cGxlIG9mIHRoZSBleGFtcGxlcyB0byB3b3JrIGFnYWluLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX3ByZXJvbGxfcXVldWVfZW1wdHkpLAoJICAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX3F1ZXVlX2ZsdXNoKSwgKGdzdF9iYXNlX3NpbmtfaGFuZGxlX2V2ZW50KToKCSAgU3BlbGxpbmcgY29ycmVjdGlvbnMgYW5kIGV4dHJhIGRlYnVnLgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fY2xhc3NfaW5pdCksIChnc3RfYmluX2luaXQpLCAoaXNfZW9zKSwKCSAgKGdzdF9iaW5fYWRkX2Z1bmMpLCAoYmluX2VsZW1lbnRfaXNfc2luayksIChnc3RfYmluX2dldF9zdGF0ZSksCgkgIChnc3RfYmluX2NoYW5nZV9zdGF0ZSksIChnc3RfYmluX2Rpc3Bvc2UpLCAoYmluX2J1c19oYW5kbGVyKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfaW5pdCksIChnc3RfcGlwZWxpbmVfZGlzcG9zZSksCgkgIChnc3RfcGlwZWxpbmVfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSAgTW92ZSB0aGUgYnVzIGhhbmRsZXIgZm9yIGNoaWxkcmVuIHRvIHRoZSBHc3RCaW4sIGFuZCBjcmVhdGUgYQoJICBzZXBhcmF0ZSBidXMgZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBmcm9tIGNoaWxkcmVuIHRvIHRoZSBvbmUgdGhlCgkgIGJ1cyBzZW5kcyAndXB3YXJkcycgb24uCgoyMDA1LTA3LTA2IDEzOjI1OjI2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvOiBNYWtlIGJhc2VzcmMgbmVnb3RpYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9SRUFETUU6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlX3NpbmtfcHJlcm9sbF9xdWV1ZV9lbXB0eSksCgkgIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLCAoZ3N0X2Jhc2Vfc2lua19sb29wKSwKCSAgKGdzdF9iYXNlX3NpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlX3NyY19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlX3NyY19pbml0KSwgKGdzdF9iYXNlX3NyY19zZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3NyY19nZXRjYXBzKSwgKGdzdF9iYXNlX3NyY19sb29wKSwKCSAgKGdzdF9iYXNlX3NyY19kZWZhdWx0X25lZ290aWF0ZSksIChnc3RfYmFzZV9zcmNfbmVnb3RpYXRlKSwKCSAgKGdzdF9iYXNlX3NyY19zdGFydCksIChnc3RfYmFzZV9zcmNfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgIE1ha2UgYmFzZXNyYyBuZWdvdGlhdGUuCgkgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBwcmVyb2xsIGZhaWxzIGluIGJhc2VzaW5rLgoJICBVcGRhdGUgUkVBRE1FLgoKMjAwNS0wNy0wNiAxMzoyMDo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RwYWQuYzogSW1wbGVtZW50IHRoZSBmaXhhdGUgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfZml4YXRlX2NhcHMpLCAoZ3N0X3BhZF9hY2NlcHRfY2Fwcyk6CgkgIEltcGxlbWVudCB0aGUgZml4YXRlIGZ1bmN0aW9uLgoJICBDbGVhbiB1cCBhY2NlcHRjYXBzLgoKMjAwNS0wNy0wNiAxMjoyNDo1MCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9wd2cvOiBSZW1vdmUgbmV2ZXItd3JpdHRlbiBmaWx0ZXItZmFjdG9yeSBjaGFwdGVyOyBJJ2xsIGFkZCB0aGUgdmFyaW91cyBiYXNlIGNsYXNzZXMgdG8gcGFydCA0ICgib3RoZXIgZWxlbWVudCB0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvcHdnL2J1aWxkaW5nLWZpbHRlcmZhY3RvcnkueG1sOgoJICAqIGRvY3MvcHdnL3B3Zy54bWw6CgkgIFJlbW92ZSBuZXZlci13cml0dGVuIGZpbHRlci1mYWN0b3J5IGNoYXB0ZXI7IEknbGwgYWRkIHRoZSB2YXJpb3VzCgkgIGJhc2UgY2xhc3NlcyB0byBwYXJ0IDQgKCJvdGhlciBlbGVtZW50IHR5cGVzIikgbGF0ZXIgb24uCgoyMDA1LTA3LTA2IDEyOjE4OjAwICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBBZGQgYSBjaGFwdGVyIG9uIGNhcHMgbmVnb3RpYXRpb24sIHNpbXBsaWZ5IHRoZSBvcmlnaW5hbCBjb2RlIHNhbXBsZXMgYSBiaXQgdy5yLnQuIGNhcHMgbmVnb3RpYXRpb24sIGFkZCBsaW5rIHRvIHRoZSAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYWR2YW5jZWQtbmVnb3RpYXRpb24ueG1sOgoJICAqIGRvY3MvcHdnL2J1aWxkaW5nLWJvaWxlci54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctcGFkcy54bWw6CgkgICogZG9jcy9wd2cvcHdnLnhtbDoKCSAgKiBleGFtcGxlcy9wd2cvTWFrZWZpbGUuYW06CgkgIEFkZCBhIGNoYXB0ZXIgb24gY2FwcyBuZWdvdGlhdGlvbiwgc2ltcGxpZnkgdGhlIG9yaWdpbmFsIGNvZGUKCSAgc2FtcGxlcyBhIGJpdCB3LnIudC4gY2FwcyBuZWdvdGlhdGlvbiwgYWRkIGxpbmsgdG8gdGhlIGFkdmFuY2VkCgkgIHNlY3Rpb24uIEFkZCBhIGJ1bmNoIG9mIGV4YW1wbGVzIHNob3dpbmcgZGlmZmVyZW50IHVzZSBjYXNlcyBvZgoJICBkaWZmZXJlbnQgdHlwZXMgb2YgY2FwcyBuZWdvdGlhdGlvbi4gVXBzdHJlYW0gcmVuZWdvdGlhdGlvbiBpc24ndAoJICBmdWxseSBkb2N1bWVudGVkIHlldCBzaW5jZSBub2JvZHkga25vd3MgaG93IHRoYXQgd29ya3MuCgoyMDA1LTA3LTA2IDExOjM0OjA2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLXVuaW5zdGFsbGVkLnBjLmluOgoJKiBwa2djb25maWcvZ3N0cmVhbWVyLWRhdGFwcm90b2NvbC5wYy5pbjoKCSAgcGMgZmlsZSBjbGVhbnVwcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcGMgZmlsZSBjbGVhbnVwcwoKMjAwNS0wNy0wNiAxMTozMTo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBpZiBwYWQgaGFzIG5vIHBhcmVudCwgcmV0dXJuIE5VTEwgYXMgbGlzdCBvZiBpbnRlcm5hbCBsaW5rcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0cGFkLmM6CgkgICogY2hlY2svZ3N0Y2hlY2suYzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2dldF9pbnRlcm5hbF9saW5rc19kZWZhdWx0KToKCSAgaWYgcGFkIGhhcyBubyBwYXJlbnQsIHJldHVybiBOVUxMIGFzIGxpc3Qgb2YgaW50ZXJuYWwgbGlua3MKCjIwMDUtMDctMDUgMTY6Mzg6MTMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC86IHMvQkFTRVNSQy9CQVNFX1NSQy9nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkgICogZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5jOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IHMvQkFTRVNSQy9CQVNFX1NSQy9nLgoKMjAwNS0wNy0wNSAxNToyODoxOCArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSogcG8vYWYucG86CgkqIHBvL2F6LnBvOgoJKiBwby9jYS5wbzoKCSogcG8vY3MucG86CgkqIHBvL2RlLnBvOgoJKiBwby9lbl9HQi5wbzoKCSogcG8vZnIucG86CgkqIHBvL2l0LnBvOgoJKiBwby9uYi5wbzoKCSogcG8vbmwucG86CgkqIHBvL3J1LnBvOgoJKiBwby9zcS5wbzoKCSogcG8vc3IucG86CgkqIHBvL3N2LnBvOgoJKiBwby90ci5wbzoKCSogcG8vdWsucG86CgkqIHBvL3ZpLnBvOgoJICB1cGRhdGUgc3BlYyBmaWxlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB1cGRhdGUgc3BlYyBmaWxlCgoyMDA1LTA3LTA1IDEyOjE3OjI0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIE1ha2VmaWxlLmFtOgoJICBiZXR0ZXIgcmVwb3J0IGdlbnJhdGlvbiB0YXJnZXQgKGxjb3YgbmVlZHMgYSBwYXRjaCkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGJldHRlciByZXBvcnQgZ2VucmF0aW9uIHRhcmdldCAobGNvdiBuZWVkcyBhIHBhdGNoKQoKMjAwNS0wNy0wNSAxMDo1ODoyMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2VsZW1lbnRzLCB0ZXN0c3VpdGU6IE51bGwgaWYgd2UgZ290IGl0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA3LTA1ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9lbGVtZW50cywgdGVzdHN1aXRlOiBOdWxsIGlmIHdlIGdvdCBpdC4uLgoKMjAwNS0wNy0wNSAxMDoyMDoxNCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFBvcnRlZCBkYXRhcHJvdG9sIHRvIDAuOS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmM6IChnc3RfZHBfdmFsaWRhdGVfcGFja2V0KToKCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvZGF0YXByb3RvY29sLmg6CgkgICogcGtnY29uZmlnL01ha2VmaWxlLmFtOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLXVuaW5zdGFsbGVkLnBjLmluOgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZGF0YXByb3RvY29sLnBjLmluOgoJICBQb3J0ZWQgZGF0YXByb3RvbCB0byAwLjkuCgkgIEFkZGVkIHBrZ2NvbmZpZyBmaWxlcy4KCjIwMDUtMDctMDUgMDk6MzU6MjIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYyAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpOiBEZWZhdWx0IHRvIHJldHVybmluZyBUUlVFIGZvciB0aGUgY2FzZSB3aGVuIHRyYW5mb3JtX2NhcHMgci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKToKCSAgRGVmYXVsdCB0byByZXR1cm5pbmcgVFJVRSBmb3IgdGhlIGNhc2Ugd2hlbiB0cmFuZm9ybV9jYXBzIHJldHVybnMKCSAgYSBmaXhlZCBjYXBzLCBsaWtlIGZvciBpZGVudGl0eSBvciB2b2x1bWUuCgoyMDA1LTA3LTA1IDA4OjQ3OjQwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay86IEFwcGxpY2F0aW9uIG1lc3NhZ2UgQVBJIGNoYW5nZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDctMDUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY2hlY2svZ3N0L2dzdGJ1cy5jIChwb3VuZF9idXNfd2l0aF9tZXNzYWdlcyk6CgkgICogY2hlY2svZ3N0L2dzdG1lc3NhZ2UuYyAoU1RBUlRfVEVTVCk6CgkgICogY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYyAoZ290X2hhbmRvZmYpOiBBcHBsaWNhdGlvbgoJICBtZXNzYWdlIEFQSSBjaGFuZ2UuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jIChnc3RfYmFzZV90cmFuc2Zvcm1fc2V0Y2Fwcyk6IE1vcmUKCSAgbG9naWMgd2Vha3MgaGVyZTogYWx3YXlzIHJ1biB0cmFuc2Zvcm1fY2FwcywgdHJ5aW5nIHBhc3N0aHJvdWdoCgkgIG9wZXJhdGlvbiBvbmx5IGlmIHRoZSBvcmlnaW5hbCBjYXBzIGludGVyc2VjdHMgd2l0aCB0aGUgdHJhbnNmb3JtLgoJICAqIGdzdC9nc3RwYWQuYyAoZ3N0X3BhZF9saW5rX2NoZWNrX2NvbXBhdGlibGVfdW5sb2NrZWQpOiBEZWJ1ZwoJICBzb3VyY2UgYW5kIHNpbmsgY2Fwcy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRjYXBzKToKCSAgSW50ZXJzZWN0IHRoZSBwZWVyIGNhcHMgd2l0aCB0aGUgcGFkIHRlbXBsYXRlIGJlZm9yZSBnb2luZyBpbnRvCgkgIHRyYW5zZm9ybV9jYXBzLgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3RyYW5zZm9ybV9jYXBzKTogTW9yZSBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdG1lc3NhZ2UuaCAoZ3N0X21lc3NhZ2VfbmV3X2FwcGxpY2F0aW9uKTogVGFrZSBhIEdzdE9iamVjdAoJICBzcmMgYXJndW1lbnQuCgoyMDA1LTA3LTA0IDE1OjA4OjMwICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdHV0aWxzLio6IG5vdyByZXR1cm5zIHRoZSBzaWduYWwgaWQgZm9yIGJldHRlciB3cmFwcGluZyBpbiBiaW5kaW5ncy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHV0aWxzLmM6CgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgIChnc3RfcGFkX2FkZF8qX3Byb2JlKTogbm93IHJldHVybnMgdGhlIHNpZ25hbCBpZCBmb3IgYmV0dGVyIHdyYXBwaW5nCgkgIGluIGJpbmRpbmdzLgoKMjAwNS0wNy0wNCAwOToyMjo1MSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svZ3N0L2dzdHBhZC5jOiBPbmx5IHNldCBleHBsaWNpdCBjYXBzIG9uIHBhZHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA3LTA0ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGNoZWNrL2dzdC9nc3RwYWQuYzogT25seSBzZXQgZXhwbGljaXQgY2FwcyBvbiBwYWRzLgoKMjAwNS0wNy0wMSAxNjo0Njo1OSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvbmV0d29yay1jbG9jay5zY206IENvbW1lbnRhcnkgdXBkYXRlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNy0wMSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9uZXR3b3JrLWNsb2NrLnNjbTogQ29tbWVudGFyeSB1cGRhdGUuCgkgICogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmMgKFBST1BfRFVQTElDQVRFKTogR29uZSBkYWRkeSBnb25lLgoJICBEaWRuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UsIG5vdCBpbXBsZW1lbnRhYmxlIHdpdGggYmFzZXRyYW5zZm9ybSwKCSAgZXRjLgoJICAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybSk6IFVucmVmIGluYnVmIHZpYSBtYWtlX3dyaXRhYmxlLiBGZWVibGUKCSAgYXR0ZW1wdCBhdCBpbXBsZW1lbnRpbmcgdGhlIHN5bmMgcHJvcGVydHksIG5lZWRzIGFuIHVubG9jayBtZXRob2QuCgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5jIChnc3RfYmFzZV90cmFuc2Zvcm1fdHJhbnNmb3JtX2NhcHMpOgoJICBOZXcgZnVuYywgYnkgZGVmYXVsdCByZXR1cm5zIHRoZSBzYW1lIGNhcHMgKHRoZSBpZGVudGl0eQoJICB0cmFuc2Zvcm1hdGlvbikuCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0Y2Fwcyk6IFVzZXMgdHJhbnNmb3JtX2NhcHMgdG8gcmV0dXJuCgkgIHNvbWV0aGluZyBzZW5zaWJsZS4KCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKTogQ29tcGxpY2F0ZWQgbG9naWMgdG8gZ2V0IGNhcHMgb24KCSAgYm90aCBwYWRzLCBldmVuIGlmIHRoZXkgYXJlIGRpZmZlcmVudCwgYW5kIHRvIGNhbGwgc2V0X2NhcHMgb25jZQoJICBmb3IgZXZlcnkgdGltZSBib3RoIHBhZHMgZ2V0IHRoZWlyIGNhcHMgc2V0LgoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpOiBHaXZlIHRoZSByZWYgdG8gdGhlIHRyYW5zZm9ybQoJICBmdW5jdGlvbi4gQWxsb3dzIGluLXBsYWNlIG1vZGlmaWNhdGlvbiBvZiB0aGUgYnVmZmVyLgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaCAodHJhbnNmb3JtX2NhcHMpOiBOZXcgY2xhc3MgbWV0aG9kLgoJICBHaXZlbiBjYXBzIG9uIG9uZSBzaWRlLCB3aGF0IGNhbiBJIGRvIG9uIHRoZSBvdGhlci4KCSAgKHNldF9jYXBzKTogVGFrZSB0d28gY2Fwcywgb25lIGZvciBlYWNoIHNpZGUgb2YgdGhlIGVsZW1lbnQuCgkgICogZ3N0L2dzdHBhZC5oOgoJICAqIGdzdC9nc3RwYWQuYyAoZ3N0X3BhZF9maXhhdGVfY2Fwcyk6IENoYW5nZSBwcm90b3R5cGUgdG8gbW9kaWZ5CgkgIGNhcHMgaW4gcGxhY2UuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHdlIGNhbiBjaGVjayB0aGUgbXV0YWJpbGl0eSBvZgoJICB0aGUgY2FwcywgYW5kIGEgZ29vZCBpZGVhIGJlY2F1c2UgZml4YXRlIGZ1bmN0aW9ucyBhcmUganVzdCBjYWxsZWQKCSAgYXMgYSBtYXR0ZXIgb2YgbGFzdCByZXNvcnQuIChOb3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQuKQoJICAoZ3N0X3BhZF9zZXRfY2Fwcyk6IElmIHRoZSBjYXBzIHdlJ3JlIHNldHRpbmcgaXMgYWN0dWFsbHkgdGhlIHNhbWUKCSAgYXMgdGhlIGV4aXN0aW5nIHBhZCBjYXBzLCBqdXN0IHVwZGF0ZSB0aGUgcG9pbnRlciB3aXRob3V0IGNhbGxpbmcKCSAgc2V0Y2Fwcy4gQXNzZXJ0IHRoYXQgY2FwcyBpcyBlaXRoZXIgTlVMTCBvciBmaXhlZCwgYXMgcGVyIHRoZQoJICBkb2NzLgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiBVcGRhdGUgZm9yIGZpeGF0ZSBjaGFuZ2VzLgoKMjAwNS0wNy0wMSAxNDozNjoxMiArMDAwMCAgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IFB1dCB0aGUgbWluaV9vYmplY3QgaW50byBHVmFsdWUgYXMgYSBtaW5pX29iamVjdCwgbm90IGEgZ3BvaW50ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA3LTAyICBKYW4gU2NobWlkdCAgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9lbWl0X2hhdmVfZGF0YV9zaWduYWwpOgoJICBQdXQgdGhlIG1pbmlfb2JqZWN0IGludG8gR1ZhbHVlIGFzIGEgbWluaV9vYmplY3QsCgkgIG5vdCBhIGdwb2ludGVyLgoKMjAwNS0wNy0wMSAxNDoyMDoxOSArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZXhhbXBsZXMvcHdnL01ha2VmaWxlLmFtOiBGaXggYnVpbGRib3QgYWdhaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGV4YW1wbGVzL3B3Zy9NYWtlZmlsZS5hbToKCSAgRml4IGJ1aWxkYm90IGFnYWluLgoKMjAwNS0wNy0wMSAxMzowMTo0NyArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6IEFkZCBleHRyYSBjaGVjay4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6CgkgIEFkZCBleHRyYSBjaGVjay4KCSAgKiBleGFtcGxlcy9wd2cvTWFrZWZpbGUuYW06CgkgIEZpeCBidWlsZGJvdC4KCjIwMDUtMDctMDEgMTI6NDM6MDMgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIEVuYWJsZSBidWlsZGluZyB0aGUgUFdHIGV4YW1wbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjb25maWd1cmUuYWM6CgkgICogZXhhbXBsZXMvTWFrZWZpbGUuYW06CgkgICogZXhhbXBsZXMvcHdnL01ha2VmaWxlLmFtOgoJICAqIGV4YW1wbGVzL3B3Zy9leHRyYWN0LnBsOgoJICBFbmFibGUgYnVpbGRpbmcgdGhlIFBXRyBleGFtcGxlcy4KCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC1pbnRlcmZhY2VzLnhtbDoKCSAgQWRkIFVSSSBpbnRlcmZhY2Ugc3R1Yi4KCSAgKiBkb2NzL3B3Zy9hZHZhbmNlZC10eXBlcy54bWw6CgkgICogZG9jcy9wd2cvb3RoZXItYXV0b3BsdWdnZXIueG1sOgoJICAqIGRvY3MvcHdnL2FwcGVuZGl4LXBvcnRpbmcueG1sOgoJICAqIGRvY3MvcHdnL3B3Zy54bWw6CgkgIEFkZCBwb3J0aW5nIGd1aWRlIChtb3N0bHkgc3R1YnMpLCByZW1vdmUgYXV0b3BsdWdnaW5nIChzZWUgQURNKS4KCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1ib2lsZXIueG1sOgoJICAqIGRvY3MvcHdnL2J1aWxkaW5nLWNoYWluZm4ueG1sOgoJICAqIGRvY3MvcHdnL2J1aWxkaW5nLXBhZHMueG1sOgoJICAqIGRvY3MvcHdnL2J1aWxkaW5nLXByb3BzLnhtbDoKCSAgKiBkb2NzL3B3Zy9idWlsZGluZy1zdGF0ZS54bWw6CgkgICogZG9jcy9wd2cvYnVpbGRpbmctdGVzdGFwcC54bWw6CgkgIFVwZGF0ZSB0aGUgYnVpbGRpbmctKi54bWwgcGFydHMgZm9yIDAuOSBjaGFuZ2VzLiBBbGwgZXhhbXBsZXMKCSAgY29kZSBibG9ja3MgY29tcGlsZSBpbiBleGFtcGxlcy9wd2cvKi4KCjIwMDUtMDYtMzAgMTI6MzI6MTcgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGRvY3MvbWFudWFsLzogRml4IHBsYXliaW4vZGVjb2RlYmluIGV4YW1wbGVzLCB1cGRhdGUgZG9jcyBhIGJpdCwgbWVudGlvbiBidXMgaW5zdGVhZCBvZiBzaWduYWxzIGluIHZhcmlvdXMgcGxhY2VzLCBtZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1hdXRvcGx1Z2dpbmcueG1sOgoJICAqIGRvY3MvbWFudWFsL2FwcGVuZGl4LWNoZWNrbGlzdC54bWw6CgkgICogZG9jcy9tYW51YWwvYXBwZW5kaXgtaW50ZWdyYXRpb24ueG1sOgoJICAqIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC1jb21wb25lbnRzLnhtbDoKCSAgRml4IHBsYXliaW4vZGVjb2RlYmluIGV4YW1wbGVzLCB1cGRhdGUgZG9jcyBhIGJpdCwgbWVudGlvbiBidXMKCSAgaW5zdGVhZCBvZiBzaWduYWxzIGluIHZhcmlvdXMgcGxhY2VzLCBtZW50aW9uIGttcGxheWVyIGFuZAoJICBrYWZmZWluZSBzaW5jZSB0aGV5IGhhdmUgYSB3b3JraW5nIEdTdHJlYW1lciBiYWNrZW5kIGluIHRoZSBLREUKCSAgc2VjdGlvbi4KCjIwMDUtMDYtMzAgMTI6MjY6MjYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdHF1ZXVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSAgZGVidWcgZGlzYWJsZSBmaXhlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZGVidWcgZGlzYWJsZSBmaXhlcwoKMjAwNS0wNi0zMCAxMjoxODoxOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEFkZGVkIENIQU5HRVMtMC45IGRvYywgdXBkYXRlZCBzdGF0dXMgb2Ygb3RoZXIgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogQ0hBTkdFUy0wLjk6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtZ2hvc3RwYWRzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1wdXNoLXB1bGwudHh0OgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LXF1ZXJ5LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcXVlcnkudHh0OgoJICBBZGRlZCBDSEFOR0VTLTAuOSBkb2MsIHVwZGF0ZWQgc3RhdHVzIG9mIG90aGVyIGRvY3MuCgkgICogZ3N0L2dzdHF1ZXJ5Lmg6CgkgIFJlbW92ZSAiaG1tIiBtYWNybwoKMjAwNS0wNi0zMCAxMjoxNDo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLio6IFNvbWUgdHdlYWtzLCBvbmx5IEVPUyBhbmQgYSBidWZmZXIgY29tcGxldGUgYSBwcmVyb2xsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19wcmVyb2xsX3F1ZXVlX2VtcHR5KSwKCSAgKGdzdF9iYXNlX3NpbmtfcHJlcm9sbF9xdWV1ZV9mbHVzaCksIChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkgIFNvbWUgdHdlYWtzLCBvbmx5IEVPUyBhbmQgYSBidWZmZXIgY29tcGxldGUgYSBwcmVyb2xsLgoKMjAwNS0wNi0zMCAxMTozOTozNCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmMgKGdzdF9naG9zdF9wYWRfZG9fYWN0aXZhdGVfcHVzaCk6IFByb3h5IGFjdGl2YXRlX3B1c2ggZG93biB0byB0aGUgaW50ZXJuYWwgcGFkIGFzIHdlbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTMwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfZ2hvc3RfcGFkX2RvX2FjdGl2YXRlX3B1c2gpOiBQcm94eQoJICBhY3RpdmF0ZV9wdXNoIGRvd24gdG8gdGhlIGludGVybmFsIHBhZCBhcyB3ZWxsLgoKMjAwNS0wNi0zMCAxMDo1OTozNCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdHRhZ2ludGVyZmFjZS5jOiBTb21lIGRvY3VtZW50YXRpb24gZml4ZXMgKCMzMDczOTQgYW5kICMzMDczOTcpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmV2aWV3ZWQgYnk6ICBSb25hbGQgUy4gQnVsdGplICA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoJICAqIGdzdC9nc3R0YWdpbnRlcmZhY2UuYzoKCSAgU29tZSBkb2N1bWVudGF0aW9uIGZpeGVzICgjMzA3Mzk0IGFuZCAjMzA3Mzk3KS4KCjIwMDUtMDYtMzAgMTA6MjM6MTYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0Ly5naXRpZ25vcmU6CgkqIGNoZWNrL3N0YXRlcy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9jaGVjay9nc3QvLmdpdGlnbm9yZToKCSAgaWdub3JlIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlnbm9yZSBtb3JlCgoyMDA1LTA2LTMwIDEwOjIyOjE1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgZ28gYmFjayB0byB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSBmb3Igbm93CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBnbyBiYWNrIHRvIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IGZvciBub3cKCjIwMDUtMDYtMzAgMTA6MTA6MDAgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBGaXggbWVtbGVhayAoIzMwOTEyNSkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXZpZXdlZCBieTogIFJvbmFsZCBTLiBCdWx0amUgIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfaW50ZXJzZWN0X2xpc3QpOgoJICBGaXggbWVtbGVhayAoIzMwOTEyNSkuCgoyMDA1LTA2LTMwIDA5OjU5OjI3ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBkb2NzL21hbnVhbC9hZHZhbmNlZC1kYXRhYWNjZXNzLnhtbDogRml4IGZha2VzcmMgZXhhbXBsZSB0byBjb21waWxlOyBkb2Vzbid0IHdvcmssIGJ1ZyBzb21ld2hlcmUuLi4/CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWRhdGFhY2Nlc3MueG1sOgoJICBGaXggZmFrZXNyYyBleGFtcGxlIHRvIGNvbXBpbGU7IGRvZXNuJ3Qgd29yaywgYnVnIHNvbWV3aGVyZS4uLj8KCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtcGFkcy54bWw6CgkgIEFkZCByZWZlcmVuY2UgZm9yIGZpbHRlcmVkIGNhcHMgdG8gYWJvdmUgY2hhcHRlci4KCjIwMDUtMDYtMzAgMDk6NDE6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YmluLmM6IExhbWUgYXR0ZW1wdCBhdCBtYWtpbmcgdGhlIHN0YXRlIGNoYW5nZSBmdW5jdGlvbiBhIGJpdCBtb3JlIHJlYWRhYmxlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChjbGVhcl9xdWV1ZSksIChyZW1vdmVfYWxsX2Zyb21fcXVldWUpLAoJICAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICBMYW1lIGF0dGVtcHQgYXQgbWFraW5nIHRoZSBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gYSBiaXQKCSAgbW9yZSByZWFkYWJsZS4KCjIwMDUtMDYtMzAgMDk6MzM6NDUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IFNvbWUgbW9yZSB0d2Vla3MgYW5kIGFkZGl0aW9ucyB0byB0aGUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1jbG9ja3MudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZWxlbWVudC1zaW5rLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWV2ZW50cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1wcmVyb2xsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkgIFNvbWUgbW9yZSB0d2Vla3MgYW5kIGFkZGl0aW9ucyB0byB0aGUgZG9jcy4KCjIwMDUtMDYtMzAgMDk6MjM6NTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBSZW1vdmVkIGF0b21pYyBvcGVyYXRpb25zLCB1c2UgZXhpc3RpbmcgTE9DSy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoX2dzdF9kb19wYXNzX2RhdGFfYWNjdW11bGF0b3IpLAoJICAoZGVmYXVsdF9oYXZlX2RhdGEpLCAoZ3N0X3BhZF9jbGFzc19pbml0KSwgKGdzdF9wYWRfaW5pdCksCgkgIChnc3RfcGFkX2VtaXRfaGF2ZV9kYXRhX3NpZ25hbCksIChnc3RfcGFkX2NoYWluKSwgKGdzdF9wYWRfcHVzaCksCgkgIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpLCAoZ3N0X3BhZF9nZXRfcmFuZ2UpLAoJICAoZ3N0X3BhZF9wdWxsX3JhbmdlKSwgKGdzdF9wYWRfcHVzaF9ldmVudCksIChnc3RfcGFkX3NlbmRfZXZlbnQpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9hdG9taWNfaW50X3NldCksIChnc3RfcGFkX2FkZF9kYXRhX3Byb2JlKSwKCSAgKGdzdF9wYWRfYWRkX2V2ZW50X3Byb2JlKSwgKGdzdF9wYWRfYWRkX2J1ZmZlcl9wcm9iZSksCgkgIChnc3RfcGFkX3JlbW92ZV9kYXRhX3Byb2JlKSwgKGdzdF9wYWRfcmVtb3ZlX2V2ZW50X3Byb2JlKSwKCSAgKGdzdF9wYWRfcmVtb3ZlX2J1ZmZlcl9wcm9iZSk6CgkgIFJlbW92ZWQgYXRvbWljIG9wZXJhdGlvbnMsIHVzZSBleGlzdGluZyBMT0NLLgoJICBNb3ZlIGV4Y2VwdGlvbiBoYW5kbGluZyBvdXQgb2YgbWFpbiBjb2RlIHBhdGguCgoyMDA1LTA2LTMwIDA3OjQ1OjU1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgZHJvcCBjaXJjdWxhciByZWZlcmVuY2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGRyb3AgY2lyY3VsYXIgcmVmZXJlbmNlCgoyMDA1LTA2LTI5IDE5OjIwOjA3ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvZ3N0cGFkLmM6IEZpeCBhY2N1bXVsYXRvciwgYWRkIGRlZmF1bHQgdmFsdWUgYnkgdXNpbmcgX2VtaXR2KCkgaW5zdGVhZCBvZiBfZW1pdCgpIGZvciBzaWduYWwgZW1pc3Npb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKF9nc3RfZG9fcGFzc19kYXRhX2FjY3VtdWxhdG9yKSwKCSAgKHNpbGx5X3JldHVybl90cnVlX2Z1bmN0aW9uKSwgKGdzdF9wYWRfY2xhc3NfaW5pdCksCgkgIChnc3RfcGFkX2VtaXRfaGF2ZV9kYXRhX3NpZ25hbCksIChnc3RfcGFkX2NoYWluKSwgKGdzdF9wYWRfcHVzaCksCgkgIChnc3RfcGFkX2dldF9yYW5nZSksIChnc3RfcGFkX3B1bGxfcmFuZ2UpLCAoZ3N0X3BhZF9wdXNoX2V2ZW50KSwKCSAgKGdzdF9wYWRfc2VuZF9ldmVudCk6CgkgIEZpeCBhY2N1bXVsYXRvciwgYWRkIGRlZmF1bHQgdmFsdWUgYnkgdXNpbmcgX2VtaXR2KCkgaW5zdGVhZAoJICBvZiBfZW1pdCgpIGZvciBzaWduYWwgZW1pc3Npb24uCgoyMDA1LTA2LTI5IDE2OjU3OjU5ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBBZGQgcHJvYmUgZXhhbXBsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtZGF0YWFjY2Vzcy54bWw6CgkgICogZXhhbXBsZXMvbWFudWFsL01ha2VmaWxlLmFtOgoJICBBZGQgcHJvYmUgZXhhbXBsZS4KCSAgKiBnc3QvZ3N0cGFkLmM6IChfZ3N0X2RvX3Bhc3NfZGF0YV9hY2N1bXVsYXRvcik6CgkgIE1ha2Ugd29yayAoPz8pLgoKMjAwNS0wNi0yOSAxNjo0NTo1OCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvZ3N0bWluaW9iamVjdC5jOgoJICBmaXggZm9yIHBwYywgaG9wZWZ1bGx5CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXggZm9yIHBwYywgaG9wZWZ1bGx5CgoyMDA1LTA2LTI5IDE2OjExOjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IFNpbXBsaWZ5IGNvZGUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSBzaG9ydCB3cml0ZXMgYW5kIHJldHVybiBHU1RfRkxPV19FUlJPUiBpZiBhLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmaWxlc2luay5jOiAoZ3N0X2ZpbGVzaW5rX3JlbmRlcik6CgkgIFNpbXBsaWZ5IGNvZGUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSBzaG9ydAoJICB3cml0ZXMgYW5kIHJldHVybiBHU1RfRkxPV19FUlJPUiBpZiBhbiBlcnJvciBvY2N1cmVkLgoKMjAwNS0wNi0yOSAxNjowNToyNiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDogUmVtb3ZlIHByb2JlcyBtb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXItZG9jcy5zZ21sOgoJICBSZW1vdmUgcHJvYmVzIG1vcmUuCgoyMDA1LTA2LTI5IDE1OjUxOjI1ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBSZW1vdmUgb2xkIHByb2JlcywgYWRkIG5ldyBnLXNpZ25hbC1iYXNlZCBwcm9iZXMgYW5kIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHByb2JlLnNnbWw6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3RwYWQuYzogKF9nc3RfZG9fcGFzc19kYXRhX2FjY3VtdWxhdG9yKSwKCSAgKGdzdF9wYWRfY2xhc3NfaW5pdCksIChnc3RfcGFkX2luaXQpLCAoZ3N0X3BhZF9jaGFpbiksCgkgIChnc3RfcGFkX3B1c2gpLCAoZ3N0X3BhZF9nZXRfcmFuZ2UpLCAoZ3N0X3BhZF9wdWxsX3JhbmdlKSwKCSAgKGdzdF9wYWRfcHVzaF9ldmVudCksIChnc3RfcGFkX3NlbmRfZXZlbnQpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9wYWRfYWRkX2RhdGFfcHJvYmUpLAoJICAoZ3N0X3BhZF9hZGRfZXZlbnRfcHJvYmUpLCAoZ3N0X3BhZF9hZGRfYnVmZmVyX3Byb2JlKSwKCSAgKGdzdF9wYWRfcmVtb3ZlX2RhdGFfcHJvYmUpLCAoZ3N0X3BhZF9yZW1vdmVfZXZlbnRfcHJvYmUpLAoJICAoZ3N0X3BhZF9yZW1vdmVfYnVmZmVyX3Byb2JlKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgUmVtb3ZlIG9sZCBwcm9iZXMsIGFkZCBuZXcgZy1zaWduYWwtYmFzZWQgcHJvYmVzIGFuZCBzb21lIHV0aWxpdHkKCSAgZnVuY3Rpb25zLgoKMjAwNS0wNi0yOSAxNToxNzoyNSArMDAwMCAgRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBiaWxib2VkLmNvbT4KCgkgIGdzdC86IE1vdmVkIGdzdF9lbGVtZW50X2ZhY3RvcnlfY2FuX1tzaW5rfHNyY11fY2FwcygpIHRvIGdzdHV0aWxzIGFuZCBhZGRlZCB0aGUgZGVmaW5pdGlvbiB0byB0aGUgaGVhZGVyIGZpbGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICAqIGdzdC9nc3R1dGlscy5jOgoJICBNb3ZlZCBnc3RfZWxlbWVudF9mYWN0b3J5X2Nhbl9bc2lua3xzcmNdX2NhcHMoKSB0byBnc3R1dGlscyBhbmQgYWRkZWQKCSAgdGhlIGRlZmluaXRpb24gdG8gdGhlIGhlYWRlciBmaWxlLgoKMjAwNS0wNi0yOSAxNDo1NjowOCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZG9jcy9nc3QvTWFrZWZpbGUuYW0gKHNjYW4tYnVpbGQuc3RhbXApOiBUb3RhbGx5IG9ubHkgY2hlY2sgcGx1Z2lucyBmcm9tIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbSAoc2Nhbi1idWlsZC5zdGFtcCk6IFRvdGFsbHkgb25seSBjaGVjawoJICBwbHVnaW5zIGZyb20gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCgoyMDA1LTA2LTI5IDE0OjUyOjQ0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvdG1wbC86IFNvbWUgZml4aW5ncyBmb3IgYmxhbnRlbnRseSB3cm9uZyB0ZXh0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGJ1ZmZlci5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0Y2xvY2suc2dtbDoKCSAgU29tZSBmaXhpbmdzIGZvciBibGFudGVudGx5IHdyb25nIHRleHQuCgoyMDA1LTA2LTI5IDEyOjQwOjM5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3QuYzoKCSAgbG9naWMgd2FzIHJldmVyc2VkLCBkdWgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGxvZ2ljIHdhcyByZXZlcnNlZCwgZHVoCgoyMDA1LTA2LTI5IDEyOjI1OjA1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGFkZCBBIEdTVF9QTFVHSU5fUEFUSF9PTkxZIGVudiB2YXI7IGlmIGl0IGlzIHNldCwgaXQgd2lsbCBvbmx5IHNjYW4gdGhlIEdTVF9QTFVHSU5fUEFUSCBsb2NhdGlvbnMsIGFuZCBub3QgYWRkIHN5c3RlbS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBnc3QvZ3N0LmM6IChhZGRfcGF0aF9mdW5jKSwgKGluaXRfcHJlKToKCSAgKiBnc3QvZ3N0cmVnaXN0cnkuYzogKGdzdF9yZWdpc3RyeV9hZGRfcGF0aCk6CgkgIGFkZCBBIEdTVF9QTFVHSU5fUEFUSF9PTkxZIGVudiB2YXI7IGlmIGl0IGlzIHNldCwgaXQgd2lsbAoJICBvbmx5IHNjYW4gdGhlIEdTVF9QTFVHSU5fUEFUSCBsb2NhdGlvbnMsIGFuZCBub3QgYWRkCgkgIHN5c3RlbSBsb2NhdGlvbnMKCjIwMDUtMDYtMjkgMTI6MjM6MzUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9nc3RyZWFtZXItc2VjdGlvbnMudHh0OgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbGVtZW50LnNnbWw6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RldmVudC5jOgoJKiBnc3QvZ3N0dXRpbHMuYzoKCSAgZG9jIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkb2MgZml4ZXMKCjIwMDUtMDYtMjkgMTI6MDI6MTMgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGRvY3MvbWFudWFsL2FkdmFuY2VkLWF1dG9wbHVnZ2luZy54bWw6IEZpeCBhdXRvcGx1Z2dpbmcgZXhhbXBsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtYXV0b3BsdWdnaW5nLnhtbDoKCSAgRml4IGF1dG9wbHVnZ2luZyBleGFtcGxlLgoKMjAwNS0wNi0yOSAxMTo0NjoxNiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9tYW51YWwvOiBUcnkgdG8gZ2V0IGF1dG9wbHVnZ2luZyB3b3JraW5nLCBmaXggdHlwZSBkZXRlY3Rpb24uIEZpeCB0ZXh0IGluIGhlbGxvLXdvcmxkIGltYWdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1hdXRvcGx1Z2dpbmcueG1sOgoJICAqIGRvY3MvbWFudWFsL21pbWUtd29ybGQuZmlnOgoJICBUcnkgdG8gZ2V0IGF1dG9wbHVnZ2luZyB3b3JraW5nLCBmaXggdHlwZSBkZXRlY3Rpb24uIEZpeCB0ZXh0CgkgIGluIGhlbGxvLXdvcmxkIGltYWdlLgoKMjAwNS0wNi0yOSAxMToxMDo0NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFNtYWxsIGRlYnVnIGxpbmUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZV9zaW5rX2hhbmRsZV9vYmplY3QpLAoJICAoZ3N0X2Jhc2Vfc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBTbWFsbCBkZWJ1ZyBsaW5lLgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICBtYXAgU0lHTkFMIGFuZCBCUk9BRENBU1QgdG8gdGhlIHJpZ2h0IGZ1bmN0aW9uLgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgUmVtb3ZlIHJlZHVuZGFudCBicmFjZXMuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfY2Fwcyk6CgkgIERvbid0IGNhbGwgc2V0Y2FwcyBmdW5jdGlvbiB3aGVuIHJlc2V0aW5nIGNhcHMgdG8gTlVMTC4KCSAgKiBnc3QvZ3N0c3lzdGVtY2xvY2suYzogKGdzdF9zeXN0ZW1fY2xvY2tfZGlzcG9zZSksCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX2FzeW5jX3RocmVhZCksIChnc3Rfc3lzdGVtX2Nsb2NrX2lkX3dhaXRfYXN5bmMpLAoJICAoZ3N0X3N5c3RlbV9jbG9ja19pZF91bnNjaGVkdWxlKToKCSAgVXNlIEJST0FEQ0FTVCBhcyB0aGlzIGlzIHdoYXQgd2UgZG8uCgoyMDA1LTA2LTI5IDEwOjI0OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogV2UgYXJlIGFjdHVhbGx5IHByZXJvbGxpbmcgYmVmb3JlIGNvbW1pdGluZyB0aGUgc3RhdGUgY2hhbmdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2Vfc2lua19oYW5kbGVfb2JqZWN0KToKCSAgV2UgYXJlIGFjdHVhbGx5IHByZXJvbGxpbmcgYmVmb3JlIGNvbW1pdGluZyB0aGUgc3RhdGUKCSAgY2hhbmdlLgoKMjAwNS0wNi0yOSAwOToyNTo1MSArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9tYW51YWwvOiBVcGRhdGUgKHVudGlsIHRocmVhZHMvc2NoZWR1bGluZykgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgTWFudWFsOyByZW1vdmUgR3N0VGhyZWFkLCBhZGQgR3N0QnVzLCBhZGQgc2ltLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLWNsb2Nrcy54bWw6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtaW50ZXJmYWNlcy54bWw6CgkgICogZG9jcy9tYW51YWwvYWR2YW5jZWQtbWV0YWRhdGEueG1sOgoJICAqIGRvY3MvbWFudWFsL2FkdmFuY2VkLXBvc2l0aW9uLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC1zY2hlZHVsZXJzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hZHZhbmNlZC10aHJlYWRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1wb3J0aW5nLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtYmlucy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWJ1cy54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLWVsZW1lbnRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9iYXNpY3MtaGVsbG93b3JsZC54bWw6CgkgICogZG9jcy9tYW51YWwvYmFzaWNzLXBhZHMueG1sOgoJICAqIGRvY3MvbWFudWFsL2hpZ2hsZXZlbC1jb21wb25lbnRzLnhtbDoKCSAgKiBkb2NzL21hbnVhbC9tYW51YWwueG1sOgoJICAqIGRvY3MvbWFudWFsL3RocmVhZC5maWc6CgkgIFVwZGF0ZSAodW50aWwgdGhyZWFkcy9zY2hlZHVsaW5nKSBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBNYW51YWw7CgkgIHJlbW92ZSBHc3RUaHJlYWQsIGFkZCBHc3RCdXMsIGFkZCBzaW1wbGUgcG9ydGluZyBjaGVja2xpc3QsIGFkZAoJICBkb2N1bWVudGF0aW9uIGZvciB0YWcgd3JpdGluZywgY2xvY2tzLCBtYWtlIGFsbCBleGFtcGxlcyB1bnRpbCB0aGlzCgkgIHBhcnQgY29tcGlsZSBhbmQgcnVuLgoJICAqIGV4YW1wbGVzL21hbnVhbC9NYWtlZmlsZS5hbToKCSAgVXBkYXRlIGZyb20gY2hhbmdlcyB0byBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBNYW51YWw7IGFkZCBidXMKCSAgZXhhbXBsZSwgcmVtb3ZlIHRocmVhZCBleGFtcGxlLgoKMjAwNS0wNi0yOCAxOTo0NToyNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidXMuYzogQWRkIGRlYnVnZ2luZyBtZXNzYWdlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1cy5jOiAoZ3N0X2J1c19wb3N0KSwgKGdzdF9idXNfaGF2ZV9wZW5kaW5nKSwKCSAgKGdzdF9idXNfc2V0X2ZsdXNoaW5nKSwgKGdzdF9idXNfcG9wKSwgKGdzdF9idXNfcGVlayksCgkgIChnc3RfYnVzX3NvdXJjZV9kaXNwYXRjaCk6CgkgIEFkZCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCgkgIE1ha2UgaW50ZXJuYWwgbWV0aG9kcyBzdGF0aWMuCgkgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgYnVzIGlzIGZsdXNoZWQgaW4gdGhlIGhhbmRsZXIuCgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2dldF9idXMpOgoJICBGaXggcmVmY291bnQgaW4gX2dldF9idXMoKTsKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpLAoJICAoZ3N0X3BpcGVsaW5lX2dldF9jbG9ja19mdW5jKToKCSAgQ2xvY2sgcmVmY291bnRpbmcgZml4ZXMuCgkgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBwcmVyb2xsIHRpbWVkIG91dCBtb3JlIGdyYWNlZnVsbHkuCgkgICogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6IChnc3Rfc3lzdGVtX2Nsb2NrX2Rpc3Bvc2UpOgoJICBDbGVhbiB1cCB0aGUgaW50ZXJuYWwgdGhyZWFkIGluIGRpc3Bvc2UuIFRoaXMgaXMgbmVlZGVkCgkgIGZvciBzdWJjbGFzc2VzIHRoYXQgYWN0dWFsbHkgZ2V0IGRpc3Bvc2VkLgoJICAqIGdzdC9zY2hlZHVsZXJzL3RocmVhZHNjaGVkdWxlci5jOgoJICAoZ3N0X3RocmVhZF9zY2hlZHVsZXJfY2xhc3NfaW5pdCksIChnc3RfdGhyZWFkX3NjaGVkdWxlcl9mdW5jKSwKCSAgKGdzdF90aHJlYWRfc2NoZWR1bGVyX2Rpc3Bvc2UpOgoJICBGcmVlIHRocmVhZCBwb29sIGluIGRpc3Bvc2UuCgoyMDA1LTA2LTI4IDE2OjU3OjI3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0ZXN0cy9uZXR3b3JrLWNsb2NrLXV0aWxzLnNjbSAoZGVidWcsIHByaW50LWV2ZW50KTogTmV3IHV0aWxzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9uZXR3b3JrLWNsb2NrLXV0aWxzLnNjbSAoZGVidWcsIHByaW50LWV2ZW50KTogTmV3IHV0aWxzLgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtICgqZGVidWcqLCAqd2l0aC1ncmFwaCopOiBOZXcgcGFyYW1ldGVycy4KCSAgKCpwYWNrZXQtbG9zcyopOiBVbmlmaWVkIGxvc3MgcHJvYmFiaWxpdHkuCgkgIChuZXR3b3JrLXRpbWUpOiBSZXBvcnQgb3V0LW9mLWJhbmQgZXZlbnRzLgoJICAqIHRlc3RzL3Bsb3QtZGF0YTogQWRkIHN1cHBvcnQgZm9yIG91dC1vZi1iYW5kIGV2ZW50cy4gSGFjayBpdAoJICBpbnRvIHRoaXMgc2NyaXB0IGluc3RlYWQgb2YgcGFzc2luZyBpdCBkb3duIHRoZSBwaXBlOyBzaG91bGQgZml4CgkgIHRoaXMgbGF0ZXIuCgoyMDA1LTA2LTI4IDE1OjM2OjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9nc3QvOiBEb2NzIGZpeGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC9nc3RyZWFtZXIudHlwZXM6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RiYXNlc3JjLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSAgRG9jcyBmaXhlcy4KCjIwMDUtMDYtMjggMTM6NDA6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogQ29ycmVjdGx5IHByb3h5IHRoZSBjaGVja19wdWxsX3JhbmdlIGZ1bmN0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogKGdzdF9wcm94eV9wYWRfZG9fYnVmZmVyYWxsb2MpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19jaGVja2dldHJhbmdlKSwgKGdzdF9wcm94eV9wYWRfZG9fYWNjZXB0Y2FwcyksCgkgIChnc3RfcHJveHlfcGFkX2RvX2ZpeGF0ZWNhcHMpOgoJICBDb3JyZWN0bHkgcHJveHkgdGhlIGNoZWNrX3B1bGxfcmFuZ2UgZnVuY3Rpb24uCgoyMDA1LTA2LTI4IDEyOjQ1OjIxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJICBmaXggZmFrZSBlbGVtZW50cyB0b28KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBmYWtlIGVsZW1lbnRzIHRvbwoKMjAwNS0wNi0yOCAxMjowMTo0OSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzaW5rLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgZGlkIHMvYmFzZXMocmMvaW5rKV8vYmFzZV9zKHJjL2luaylfLzsgd2ltIHdhbnRzIHRvIHJlbW92ZSBiYXNlIGNvbXBsZXRlbHksIGJ1dCB0aGF0J3MgZm9yIGxhdGVyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkaWQgcy9iYXNlcyhyYy9pbmspXy9iYXNlX3MocmMvaW5rKV8vOyB3aW0gd2FudHMgdG8gcmVtb3ZlIGJhc2UgY29tcGxldGVseSwgYnV0IHRoYXQncyBmb3IgbGF0ZXIKCjIwMDUtMDYtMjggMTE6NDg6NTcgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRlc3RzL25ldHdvcmstY2xvY2suc2NtOiBSZW1vdmVkIG5lZWQgZm9yIHNsaWIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTI4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtOiBSZW1vdmVkIG5lZWQgZm9yIHNsaWIuCgoyMDA1LTA2LTI4IDExOjM2OjQzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogVGhlIGRlcHJlY2F0ZWQgcGFkIGxvb3AgZnVuY3Rpb24gaXMgcmVtb3ZlZCBub3cuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfc2V0X3BhZF9mdW5jdGlvbnMpLAoJICAoZ3N0X2Jhc2VzaW5rX3ByZXJvbGxfcXVldWVfZmx1c2gpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX3NldF9kYXRhZmxvd19mdW5jcyk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV91cGRhdGVfcGFkX2Z1bmN0aW9ucyk6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2RvX2J1ZmZlcmFsbG9jKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fYWNjZXB0Y2FwcyksIChnc3RfcHJveHlfcGFkX2RvX2ZpeGF0ZWNhcHMpLAoJICAoZ3N0X3Byb3h5X3BhZF9zZXRfcHJvcGVydHkpOgoJICAqIGdzdC9nc3RwYWQuYzoKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaW5pdCk6CgkgIFRoZSBkZXByZWNhdGVkIHBhZCBsb29wIGZ1bmN0aW9uIGlzIHJlbW92ZWQgbm93LgoKMjAwNS0wNi0yOCAxMTozMzoyMiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvbmV0d29yay1jbG9jay5zY20gKCp0aW1lb3V0KiwgKnNlbmQtbG9zcyosICpyZWN2LWxvc3MqKTogTmV3IHBhcmFtZXRlcnMsIHNpbXVsYXRlIG5ldHdvcmsgcGFja2V0IGxvc3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTI4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtICgqdGltZW91dCosICpzZW5kLWxvc3MqLCAqcmVjdi1sb3NzKik6CgkgIE5ldyBwYXJhbWV0ZXJzLCBzaW11bGF0ZSBuZXR3b3JrIHBhY2tldCBsb3NzLgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2stdXRpbHMuc2NtOiBJbml0aWFsaXplIHRoZSBSTkcuCgoyMDA1LTA2LTI4IDExOjAyOjE4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogRmx1c2hpbmcgdGhlIHByZXJvbGwgcXVldWUgYWx3YXlzIG5lZWRzIHRvIHVubG9jayB0aGUgd2FpdGVycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19wcmVyb2xsX3F1ZXVlX2ZsdXNoKSwKCSAgKGdzdF9iYXNlc2lua19ldmVudCksIChnc3RfYmFzZXNpbmtfZGVhY3RpdmF0ZSk6CgkgIEZsdXNoaW5nIHRoZSBwcmVyb2xsIHF1ZXVlIGFsd2F5cyBuZWVkcyB0byB1bmxvY2sgdGhlIHdhaXRlcnMuCgoyMDA1LTA2LTI4IDEwOjQ1OjQ4ICswMDAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmM6IFdoZWVuIGEgc2VlayB3YXMgc3VjY2Vzc2Z1bCBvbiBhIHBpcGVsaW5lLCBzZXQgdGhlIHN0cmVhbV90aW1lIHRvIHRoZSBzZWVrIG9mZnNldCBpbiBvcmRlciB0byBoYXZlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX3NlbmRfZXZlbnQpOgoJICBXaGVlbiBhIHNlZWsgd2FzIHN1Y2Nlc3NmdWwgb24gYSBwaXBlbGluZSwgc2V0IHRoZSBzdHJlYW1fdGltZSB0byB0aGUKCSAgc2VlayBvZmZzZXQgaW4gb3JkZXIgdG8gaGF2ZSBhIHN5bmNocm9uaXplZCBzdHJlYW1fdGltZS4KCjIwMDUtMDYtMjggMTA6Mzc6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0Z2hvc3RwYWQuYzogQ2FsbCB3cmFwcGVyIGZ1bmN0aW9uIGluc3RlYWQgb2YganVzdCBjYWxsaW5nIHRoZSBmdW5jdGlvbiBwb2ludGVycy4gVGhpcyB0YWtlcyBjYXJlIG9mIGFueSBsb2NraW4uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGdob3N0cGFkLmM6IChnc3RfcHJveHlfcGFkX2RvX2J1ZmZlcmFsbG9jKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fZ2V0cmFuZ2UpLCAoZ3N0X3Byb3h5X3BhZF9kb19jaGVja2dldHJhbmdlKSwKCSAgKGdzdF9wcm94eV9wYWRfZG9fZ2V0Y2FwcyksIChnc3RfcHJveHlfcGFkX2RvX2FjY2VwdGNhcHMpLAoJICAoZ3N0X3Byb3h5X3BhZF9kb19maXhhdGVjYXBzKToKCSAgQ2FsbCB3cmFwcGVyIGZ1bmN0aW9uIGluc3RlYWQgb2YganVzdCBjYWxsaW5nIHRoZSBmdW5jdGlvbgoJICBwb2ludGVycy4gVGhpcyB0YWtlcyBjYXJlIG9mIGFueSBsb2NraW5nIGFuZCB3aGF0bW9yZS4KCjIwMDUtMDYtMjggMTA6Mjg6MzEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLio6IENPTk5FQ1RFRCAtPiBMSU5LRUQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWxsb2NfYnVmZmVyKSwgKGdzdF9wYWRfcHVzaCksCgkgIChnc3RfcGFkX3B1bGxfcmFuZ2UpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgQ09OTkVDVEVEIC0+IExJTktFRC4KCjIwMDUtMDYtMjggMDk6NTk6MDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgICouYzogRG9uJ3QgY2FzdCB0byBHU1RfT0JKRUNUIHdoZW4gcmVmZmluZyBvciB1bnJlZmZpbmcuIExhcmdlIHNvdXJjZS1tdW5naW5nIGNvbW1pdCEhIQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiAqLmM6IERvbid0IGNhc3QgdG8gR1NUX09CSkVDVCB3aGVuIHJlZmZpbmcgb3IgdW5yZWZmaW5nLiBMYXJnZQoJICBzb3VyY2UtbXVuZ2luZyBjb21taXQhISEKCjIwMDUtMDYtMjggMDk6MTc6MTQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvdG1wbC9nc3RvYmplY3Quc2dtbDoKCSogZ3N0L2dzdG9iamVjdC5jOgoJKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgIGdzdC9nc3RvYmplY3QuYyAoZ3N0X29iamVjdF91bnJlZiwgZ3N0X29iamVjdF9yZWYpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTI4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RvYmplY3QuYyAoZ3N0X29iamVjdF91bnJlZiwgZ3N0X29iamVjdF9yZWYpCgkgIChnc3Rfb2JqZWN0X3NpbmspOiBUYWtlIGdwb2ludGVyIGFyZ3VtZW50cywgbm90IEdzdE9iamVjdCAtLQoJICBhdm9pZHMgY2FzdHMuIExpa2UgR0xpYi4KCjIwMDUtMDYtMjggMDg6NDE6NDMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfcHJveHlfcGFkX2RvX2FjdGl2YXRlKTogRG9uJ3QgcHJveHkgYWN0aXZhdGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTI4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfcHJveHlfcGFkX2RvX2FjdGl2YXRlKTogRG9uJ3QgcHJveHkKCSAgYWN0aXZhdGUuCgoyMDA1LTA2LTI3IDE4OjM5OjQxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIHNodXQgdXAgZ2NjMwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgc2h1dCB1cCBnY2MzCgoyMDA1LTA2LTI3IDE4OjM1OjA1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jIChnc3RfdHlwZV9maW5kX2hlbHBlcik6IFVucmVmIGFueSByZW1haW5pbmcgYnVmZmVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jIChnc3RfdHlwZV9maW5kX2hlbHBlcik6IFVucmVmIGFueQoJICByZW1haW5pbmcgYnVmZmVyLgoJICAqIGdzdC9nc3R0cmFjZS5jIChnc3RfYWxsb2NfdHJhY2VfbGlzdF9zb3J0ZWQpOiBOZXcgaGVscGVyLAoJICByZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIHRyYWNlIGxpc3QuCgkgIChnc3RfYWxsb2NfdHJhY2VfcHJpbnRfbGl2ZSk6IE5ldyBBUEksIG9ubHkgcHJpbnRzIHRyYWNlcyB3aXRoCgkgIGxpdmUgb2JqZWN0cy4gU29ydCB0aGUgbGlzdC4KCSAgKGdzdF9hbGxvY190cmFjZV9wcmludF9hbGwpOiBTb3J0IHRoZSBsaXN0LgoJICAoZ3N0X2FsbG9jX3RyYWNlX3ByaW50KTogQWxpZ24gY29sdW1ucy4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHR5cGVmaW5kZWxlbWVudC5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkgICogZ3N0L2dzdHF1ZXVlLmM6IEFkYXB0IGZvciBwYWQgYWN0aXZhdGlvbiBjaGFuZ2VzLgoJICAqIGdzdC9nc3RwaXBlbGluZS5jIChnc3RfcGlwZWxpbmVfaW5pdCk6IFVucmVmIGFmdGVyIHBhcmVudGluZwoJICBzY2hlZC4KCSAgKGdzdF9waXBlbGluZV9kaXNwb3NlKTogRHJvcCByZWYgb24gc2NoZWQuCgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX2luaXQpOiBTZXQgdGhlIGRlZmF1bHQgYWN0aXZhdGUgZnVuYy4KCSAgKGdzdF9wYWRfYWN0aXZhdGVfZGVmYXVsdCk6IFB1c2ggbW9kZSBieSBkZWZhdWx0LgoJICAocHJlX2FjdGl2YXRlX3N3aXRjaCwgcG9zdF9hY3RpdmF0ZV9zd2l0Y2gpOiBOZXcgc3R1YnMsIHRoaW5ncyB0bwoJICBkbyBiZWZvcmUgYW5kIGFmdGVyIHN3aXRjaGluZyBhY3RpdmF0aW9uIG1vZGVzIG9uIHBhZHMuCgkgIChnc3RfcGFkX3NldF9hY3RpdmUpOiBUYWtlIGEgYm9vbGVhbiBhbmQgbm90IGEgbW9kZSwgZGlzcGF0Y2ggdG8KCSAgdGhlIHBhZCdzIGFjdGl2YXRlIGZ1bmN0aW9uIHRvIGNob29zZSB3aGljaCBtb2RlIHRvIGFjdGl2YXRlLgoJICBTaG9ydGN1dCBvbiBkZWFjdGl2YXRpb24gYW5kIGNhbGwgdGhlIHJpZ2h0IGZ1bmN0aW9uIGRpcmVjdGx5LgoJICAoZ3N0X3BhZF9hY3RpdmF0ZV9wdWxsKTogTmV3IEFQSSwgKGRlKWFjdGl2YXRlcyBhIHBhZCBpbiBwdWxsCgkgIG1vZGUuCgkgIChnc3RfcGFkX2FjdGl2YXRlX3B1c2gpOiBOZXcgQVBJLCBzYW1lIGZvciBwdXNoIG1vZGUuCgkgIChnc3RfcGFkX3NldF9hY3RpdmF0ZV9mdW5jdGlvbikKCSAgKGdzdF9wYWRfc2V0X2FjdGl2YXRlcHVsbF9mdW5jdGlvbikKCSAgKGdzdF9wYWRfc2V0X2FjdGl2YXRlcHVzaF9mdW5jdGlvbik6IFNldHRlcnMgZm9yIG5ldyBBUEkuCgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYyAoZ3N0X21pbmlfb2JqZWN0X25ldywgZ3N0X21pbmlfb2JqZWN0X2ZyZWUpOgoJICBUcmFjZSBhbGwgbWluaW9iamVjdHMuCgkgIChnc3RfbWluaV9vYmplY3RfbWFrZV93cml0YWJsZSk6IFVucmVmIHRoZSBhcmcgaWYgd2UgY29weSwgbGlrZQoJICBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlLgoJICAqIGdzdC9nc3RtZXNzYWdlLmMgKF9nc3RfbWVzc2FnZV9pbml0aWFsaXplKTogTm8gdHJhY2UgaW5pdC4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYyAoZ3N0X3Byb3h5X3BhZF9kb19hY3RpdmF0ZSkKCSAgKGdzdF9wcm94eV9wYWRfZG9fYWN0aXZhdGVwdWxsLCBnc3RfcHJveHlfcGFkX2RvX2FjdGl2YXRlcHVzaCk6CgkgIEFkYXB0IGZvciBuZXcgcGFkIEFQSS4KCSAgKiBnc3QvZ3N0ZXZlbnQuYyAoX2dzdF9ldmVudF9pbml0aWFsaXplKTogRG9uJ3QgaW5pdGlhbGl6ZSB0cmFjZS4KCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmMgKGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMpCgkgIChnc3RfZWxlbWVudF9pdGVyYXRlX3NpbmtfcGFkcyk6IE5ldyBBUEkgZnVuY3Rpb25zLgoJICAqIGdzdC9nc3RlbGVtZW50LmMgKGl0ZXJhdG9yX2ZvbGRfd2l0aF9yZXN5bmMpOiBOZXcgdXRpbGl0eSwKCSAgc2hvdWxkIGZvbGQgaW50byBnc3RpdGVyYXRvci5jIGluIHNvbWUgZm9ybS4KCSAgKGdzdF9lbGVtZW50X3BhZHNfYWN0aXZhdGUpOiBTaW1wbGlmaWVkIHZpYSB1c2Ugb2YgZm9sZCBhbmQKCSAgZGVsZWdhdGlvbiBvZiBkZWNpc2lvbnMgdG8gZ3N0cGFkLT5hY3RpdmF0ZS4KCSAgKiBnc3QvZ3N0YnVzLmMgKGdzdF9idXNfc291cmNlX2ZpbmFsaXplKTogU2V0IHRoZSBidXMgdG8gTlVMTCwKCSAgaGVscCBpbiBkZWJ1Z2dpbmcuCgkgICogZ3N0L2dzdGJ1ZmZlci5jIChfZ3N0X2J1ZmZlcl9pbml0aWFsaXplKTogUmVmIHRoZSBidWZmZXIgdHlwZQoJICBjbGFzcyBvbmNlIGluIGluaXQsIGxpa2UgZ3N0bWVzc2FnZS4gRGlkbid0IHJ1biBpbnRvIHRoaXMgaXNzdWUKCSAgYnV0IGl0IHNlZW1zIGNvcnJlY3QuIERvbid0IGluaXRpYWxpemUgYSB0cmFjZSwgZ3N0bWluaW9iamVjdCBkb2VzCgkgIHRoYXQuCgkgICogY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYyAodGVzdF9zdG9wX2Zyb21fYXBwKTogTmV3CgkgIHRlc3QsIHJ1bnMgZmFrZXNyYyAhIGZha2VzaW5rLCBzdG9wcGluZyBvbiA6OmhhbmRvZmYgdmlhIGEgbWVzc2FnZQoJICB0byB0aGUgYnVzLgoJICAoYXNzZXJ0X2xpdmVfY291bnQpOiBOZXcgdXRpbCBmdW5jdGlvbiwgdXNlcyBhbGxvYyB0cmFjZXMgdG8gY2hlY2sKCSAgY2xlYW51cC4KCSAgKiBjaGVjay9nc3QvZ3N0Z2hvc3RwYWQuYyAodGVzdF9naG9zdF9wYWRzKTogTW9yZSByZWZjb3VudCBjaGVja3MuCgkgIFRvIGJlIG1vZGlmaWVkIHdoZW4gdW5saW5rIGRyb3BzIHRoZSBpbnRlcm5hbCBwYWQuCgoyMDA1LTA2LTI3IDE4OjExOjI0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBDbGVhbnVwIHRoZSBnZXRfc3RhdGUoKSBmdW5jdGlvbiBhIGxpdHRsZSwgbWFrZSBzdXJlIGl0IGl0ZXJhdGVzIHRoZSBzYW1lIHNldCBvZiBlbGVtZW50cy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9nZXRfc3RhdGUpLCAoZ3N0X2Jpbl9pdGVyYXRlX3N0YXRlX29yZGVyKSwKCSAgKGdzdF9iaW5fY2hhbmdlX3N0YXRlKToKCSAgQ2xlYW51cCB0aGUgZ2V0X3N0YXRlKCkgZnVuY3Rpb24gYSBsaXR0bGUsIG1ha2Ugc3VyZSBpdAoJICBpdGVyYXRlcyB0aGUgc2FtZSBzZXQgb2YgZWxlbWVudHMuCgkgIEFkZGVkIHN0dWIgaXRlcmF0ZV9zdGF0ZV9vcmRlcigpLgoKMjAwNS0wNi0yNyAxNDo0MDowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvZ3N0L2dzdHJlYW1lci50eXBlczoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNlc2luay5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzcmMuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiYXNldHJhbnNmb3JtLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGl0ZXJhdG9yLnNnbWw6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RpdGVyYXRvci5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICBhZGRpbmcgYmFzZXRyYW5zZm9ybSBhbmQgaXRlcmF0b3IgZG9jcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkaW5nIGJhc2V0cmFuc2Zvcm0gYW5kIGl0ZXJhdG9yIGRvY3MKCjIwMDUtMDYtMjcgMTM6MjU6NDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvZGVzaWduL3BhcnQtYWN0aXZhdGlvbi50eHQ6IE5vdGVzIG9uIGhvdyBhY3RpdmF0aW9uIHNob3VsZCB3b3JrIC0tIG5vdCBxdWl0ZSBpbXBsZW1lbnRlZCB5ZXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTI3ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGRvY3MvZGVzaWduL3BhcnQtYWN0aXZhdGlvbi50eHQ6IE5vdGVzIG9uIGhvdyBhY3RpdmF0aW9uIHNob3VsZAoJICB3b3JrIC0tIG5vdCBxdWl0ZSBpbXBsZW1lbnRlZCB5ZXQuCgoyMDA1LTA2LTI3IDA4OjU0OjE2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RyZWdpc3RyeS5zZ21sOgoJICByZW1vdmUgc3R1ZmYgdGhhdCBpc24ndCB0aGVyZSBhbnltb3JlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgc3R1ZmYgdGhhdCBpc24ndCB0aGVyZSBhbnltb3JlCgoyMDA1LTA2LTI3IDA4OjE2OjUxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJpbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3R0eXBlcy5zZ21sOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIGdzdC9nc3RiaW4uYzoKCSogZ3N0L2dzdGJpbi5oOgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgbW9yZSBkb2MgYW5kIHdoaXRlc3BhY2UgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgZG9jIGFuZCB3aGl0ZXNwYWNlIGZpeGVzCgoyMDA1LTA2LTI1IDE5OjUzOjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmM6IEF0IGxlYXN0IGdldCB0aGUgY2hhaW4gZnVuY3Rpb24gY29ycmVjdCwgbmVlZHMgbW9yZSBmaXhpbmcuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jOiAoZ3N0X3Byb3h5X3BhZF9kb19jaGFpbik6CgkgIEF0IGxlYXN0IGdldCB0aGUgY2hhaW4gZnVuY3Rpb24gY29ycmVjdCwgbmVlZHMgbW9yZQoJICBmaXhpbmcuCgoyMDA1LTA2LTI1IDE5OjM3OjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogUmlnaHQsIHR3byBwcm9ibGVtcyBoZXJlOiBnaG9zdHBhZHMgZG9uJ3QgdGFrZSBsb2NrcyBhbmQgZ2xpYiBfcmVjX211dGV4X2xvY2tfZnVsbCgpIHdpdGggZGVwdGg9PTAgc3RpbGwgbG9ja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfcHJlcm9sbF9xdWV1ZV9lbXB0eSksCgkgIChnc3RfYmFzZXNpbmtfaGFuZGxlX29iamVjdCksIChnc3RfYmFzZXNpbmtfZXZlbnQpLAoJICAoZ3N0X2Jhc2VzaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2VzaW5rX2hhbmRsZV9ldmVudCksCgkgIChnc3RfYmFzZXNpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZ3N0dGFzay5oOgoJICBSaWdodCwgdHdvIHByb2JsZW1zIGhlcmU6IGdob3N0cGFkcyBkb24ndCB0YWtlIGxvY2tzIGFuZAoJICBnbGliIF9yZWNfbXV0ZXhfbG9ja19mdWxsKCkgd2l0aCBkZXB0aD09MCBzdGlsbCBsb2Nrcy4KCSAgQ2F0Y2ggaWxsZWdhbCBsb2NraW5nIGFuZCBnX3dhcm4gdGhlbS4KCjIwMDUtMDYtMjUgMTk6MTQ6NTEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay9zdGF0ZXMvc2lua3MuYzogSGF2ZSB0byBjaGVjayBmb3IgY29tcGxldGlvbiBub3cuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svc3RhdGVzL3NpbmtzLmM6IChTVEFSVF9URVNUKSwgKGdzdF9vYmplY3Rfc3VpdGUpOgoJICBIYXZlIHRvIGNoZWNrIGZvciBjb21wbGV0aW9uIG5vdy4uLgoKMjAwNS0wNi0yNSAxOTowOToyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFVubG9jayBTVFJFQU1fTE9DSyB3aGF0ZXZlciB0aGUgcmVjdXJzaW9uIHdhcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19wcmVyb2xsX3F1ZXVlX2VtcHR5KSwKCSAgKGdzdF9iYXNlc2lua19oYW5kbGVfb2JqZWN0KSwgKGdzdF9iYXNlc2lua19ldmVudCksCgkgIChnc3RfYmFzZXNpbmtfZG9fc3luYyksIChnc3RfYmFzZXNpbmtfaGFuZGxlX2V2ZW50KSwKCSAgKGdzdF9iYXNlc2lua19jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgVW5sb2NrIFNUUkVBTV9MT0NLIHdoYXRldmVyIHRoZSByZWN1cnNpb24gd2FzLgoKMjAwNS0wNi0yNSAxNzo1NDo1OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IFJld29ya2VkIHRoZSBiYXNlIHNpbmssIGhhbmRsZSBldmVudCBhbmQgYnVmZmVyIHNlcmlhbGlzYXRpb24gY29ycmVjdGx5IGFuZCByZW1vdmVkIHBvc3NpYmxlIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2VzaW5rX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZXNpbmtfcHJlcm9sbF9xdWV1ZV9lbXB0eSksCgkgIChnc3RfYmFzZXNpbmtfcHJlcm9sbF9xdWV1ZV9mbHVzaCksIChnc3RfYmFzZXNpbmtfaGFuZGxlX29iamVjdCksCgkgIChnc3RfYmFzZXNpbmtfZXZlbnQpLCAoZ3N0X2Jhc2VzaW5rX2RvX3N5bmMpLAoJICAoZ3N0X2Jhc2VzaW5rX2hhbmRsZV9ldmVudCksIChnc3RfYmFzZXNpbmtfaGFuZGxlX2J1ZmZlciksCgkgIChnc3RfYmFzZXNpbmtfY2hhaW4pLCAoZ3N0X2Jhc2VzaW5rX2xvb3ApLCAoZ3N0X2Jhc2VzaW5rX2FjdGl2YXRlKSwKCSAgKGdzdF9iYXNlc2lua19jaGFuZ2Vfc3RhdGUpOgoJICBSZXdvcmtlZCB0aGUgYmFzZSBzaW5rLCBoYW5kbGUgZXZlbnQgYW5kIGJ1ZmZlciBzZXJpYWxpc2F0aW9uCgkgIGNvcnJlY3RseSBhbmQgcmVtb3ZlZCBwb3NzaWJsZSBkZWFkbG9jay4KCSAgSGFuZGxlIEVPUyBjb3JyZWN0bHkuCgoyMDA1LTA2LTI1IDE3OjUxOjEyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWxsb3cgZWxlbWVudHMgdG8gcG9zdCBFT1MgaW4gdGhlIHN0YXRlIGNoYW5nZSBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChpc19lb3MpLCAocGlwZWxpbmVfYnVzX2hhbmRsZXIpLAoJICAoZ3N0X3BpcGVsaW5lX2NoYW5nZV9zdGF0ZSk6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoY2hlY2tfaW50ciksIChldmVudF9sb29wKSwgKG1haW4pOgoJICBBbGxvdyBlbGVtZW50cyB0byBwb3N0IEVPUyBpbiB0aGUgc3RhdGUgY2hhbmdlIGZ1bmN0aW9uLgoJICBGaXggdXAgLWxhdW5jaCwgbWFrZSBpdCBleGl0IHRoZSBwb2xsIGxvb3Agd2hlbiB0aGUKCSAgcGlwZWxpbmUgYWN0dWFsbHkgY2hhbmdlZCBzdGF0ZS4KCSAgRml4IHVwIHdhcm5pbmcgcGFyc2luZyBpbiAtbGF1bmNoLgoKMjAwNS0wNi0yNSAxNzo0NDozOSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzogQ29yZSB0YWtlcyBTVFJFQU1fTE9DSyBmb3IgdXMgbm93LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dGVlLmM6IChnc3RfdGVlX2NoYWluKSwgKGdzdF90ZWVfbG9vcCksCgkgIChnc3RfdGVlX3NpbmtfYWN0aXZhdGUpOgoJICBDb3JlIHRha2VzIFNUUkVBTV9MT0NLIGZvciB1cyBub3cuCgoyMDA1LTA2LTI1IDE3OjQyOjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogS2VlcCB0cmFjayBvZiBjdXJyZW50IHRhcmdldCBzdGF0ZSB3aGlsZSBwZXJmb3JtaW5nIGEgc3RhdGUgY2hhbmdlIHNvIHRoYXQgc3ViY2xhc3NlcyBjYW4gZG8gc29tZXRoaW5nIGludGVyZXN0Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9nZXRfc3RhdGVfZnVuYyksCgkgIChnc3RfZWxlbWVudF9zZXRfc3RhdGUpOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKSwKCSAgKGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcpOgoJICBLZWVwIHRyYWNrIG9mIGN1cnJlbnQgdGFyZ2V0IHN0YXRlIHdoaWxlIHBlcmZvcm1pbmcgYSBzdGF0ZQoJICBjaGFuZ2Ugc28gdGhhdCBzdWJjbGFzc2VzIGNhbiBkbyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuCgkgIEZpeCBwYXJzaW5nIG9mIHdhcm5pbmcvZXJyb3IgbWVzc2FnZXMgd2hlbiBHRXJyb3IgaXMgTlVMTC4KCjIwMDUtMDYtMjQgMTg6MTY6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLWRvY3Muc2dtbDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJhc2VzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0YmFzZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGJpbi5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGNvbXBhdC5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZha2VzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmFrZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGZpbGVzaW5rLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0ZmlsZXNyYy5zZ21sOgoJKiBkb2NzL2dzdC90bXBsL2dzdGluZGV4LnNnbWw6CgkqIGRvY3MvbWFudWFsL2FwcGVuZGl4LXF1b3Rlcy54bWw6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzcmMuaDoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5oOgoJICBzdGFydCBwdWxsaW5nIGluIGJhc2UgY2xhc3NlcyBhbmQgZWxlbWVudHMgZm9yIGRvY3MKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHN0YXJ0IHB1bGxpbmcgaW4gYmFzZSBjbGFzc2VzIGFuZCBlbGVtZW50cyBmb3IgZG9jcwoKMjAwNS0wNi0yNCAwNzo0OTo0MCArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSogZG9jcy9saWJzL01ha2VmaWxlLmFtOgoJICBmaXhlZCBtYWtlIGRpc3RjaGVjayB3aXRoIGd0ay1kb2MgMS4zCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaXhlZCBtYWtlIGRpc3RjaGVjayB3aXRoIGd0ay1kb2MgMS4zCgoyMDA1LTA2LTIzIDE3OjExOjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogV2hlbiB0aGUgc3RhdGUgZGlkIG5vdCBjaGFuZ2UsIGFsc28gcmVwb3J0IE5PX1BSRVJPTEwgd2hlbiBpdCBtYXR0ZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKSwgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIFdoZW4gdGhlIHN0YXRlIGRpZCBub3QgY2hhbmdlLCBhbHNvIHJlcG9ydCBOT19QUkVST0xMCgkgIHdoZW4gaXQgbWF0dGVycy4KCjIwMDUtMDYtMjMgMTc6MDk6MjEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBObyB1bnNhZmUgdGFzayBwYXVzaW5nIHBsZWFzZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0KToKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9sb29wKToKCSAgTm8gdW5zYWZlIHRhc2sgcGF1c2luZyBwbGVhc2UuCgoyMDA1LTA2LTIzIDE3OjA3OjA4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L3NjaGVkdWxlcnMvdGhyZWFkc2NoZWR1bGVyLmM6IFJlZiB0aGUgdGFzayBiZWZvcmUgcHVzaGluZyBpdCBvbiB0aGUgdGhyZWFkcG9vbC4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgd2UgaGF2ZSBhIHJlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9zY2hlZHVsZXJzL3RocmVhZHNjaGVkdWxlci5jOgoJICAoZ3N0X3RocmVhZF9zY2hlZHVsZXJfdGFza19zdGFydCksCgkgIChnc3RfdGhyZWFkX3NjaGVkdWxlcl90YXNrX3BhdXNlKSwgKGdzdF90aHJlYWRfc2NoZWR1bGVyX2Z1bmMpOgoJICBSZWYgdGhlIHRhc2sgYmVmb3JlIHB1c2hpbmcgaXQgb24gdGhlIHRocmVhZHBvb2wuIFRoaXMKCSAgbWFrZXMgc3VyZSB0aGF0IHdlIGhhdmUgYSByZWYgd2hlbiB0aGUgdGhyZWFkZnVuY3Rpb24gaXMKCSAgYWN0dWFsbHkgY2FsbGVkLgoKMjAwNS0wNi0yMyAxNToyNjowOSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZXNyY19nZXRfcmFuZ2UpOiBDaGVjayBpZiB0aGUgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZSdzIHNpemUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoZ3N0X2Jhc2VzcmNfZ2V0X3JhbmdlKTogQ2hlY2sgaWYgdGhlCgkgIG9mZnNldCBpcyBncmVhdGVyIHRoYW4gdGhlIGZpbGUncyBzaXplLgoKMjAwNS0wNi0yMyAxNTowNDo0OCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdG9iamVjdC5oIChHU1RfQ0xBU1NfTE9DSywgR1NUX0NMQVNTX1RSWUxPQ0spIChHU1RfQ0xBU1NfVU5MT0NLLCBHU1RfQ0xBU1NfR0VUX0xPQ0ssIEdzdE9iamVjdENsYXNzKQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yMyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0b2JqZWN0LmggKEdTVF9DTEFTU19MT0NLLCBHU1RfQ0xBU1NfVFJZTE9DSykKCSAgKEdTVF9DTEFTU19VTkxPQ0ssIEdTVF9DTEFTU19HRVRfTE9DSywgR3N0T2JqZWN0Q2xhc3MpCgkgICogZ3N0L2dzdG9iamVjdC5jIChnc3Rfb2JqZWN0X2NsYXNzX2luaXQpOiBNYWtlIHRoZSBjbGFzcyBsb2NrCgkgIHJlY3Vyc2l2ZS4gV2ltIHdvbid0IGxldCBtZSBkcm9wIGRlZXBfbm90aWZ5LiBEZWNvZGViaW4gd29ya3MKCSAgYWdhaW4sIHdob29wZHkgZG9vLgoKMjAwNS0wNi0yMyAxNDoxODoxNSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmMgKG9uX2ludF9ub3RpZnkpOiBDYXRjaGVzIG5vdGlmeTo6Y2FwcyBvbiB0aGUgaW50ZXJuYWwgcGFkLCBhbmQgaGFja3MgYWNjb3JkaW5nbHkuIERvZXNuJ3QgZG8gaXQgb24gLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChvbl9pbnRfbm90aWZ5KTogQ2F0Y2hlcyBub3RpZnk6OmNhcHMgb24gdGhlCgkgIGludGVybmFsIHBhZCwgYW5kIGhhY2tzIGFjY29yZGluZ2x5LiBEb2Vzbid0IGRvIGl0IG9uIHRoZSB0YXJnZXQKCSAgcGFkIGJlY2F1c2Ugd2UgY2hhbmdlIGl0cyBjYXBzLiBQcm9iYWJseSBjYXRjaGVzIGFsbCBjYXNlcyBvZgoJICBpbnRlcmVzdCB0aG8uCgkgIChnc3RfZ2hvc3RfcGFkX3NldF9wcm9wZXJ0eSk6IENvbm5lY3QgdG8gbm90aWZ5OjpjYXBzIGFzCgkgIGFwcHJvcHJpdGF0ZS4KCjIwMDUtMDYtMjMgMTM6MjA6NDQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRlc3RzL25ldHdvcmstY2xvY2suc2NtIChwbG90LXNpbXVsYXRpb24pOiBQaXBlIGRhdGEgdG8gdGhlIGVsaXRlIHB5dGhvbiBza3JpcHQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL25ldHdvcmstY2xvY2suc2NtIChwbG90LXNpbXVsYXRpb24pOiBQaXBlIGRhdGEgdG8gdGhlCgkgIGVsaXRlIHB5dGhvbiBza3JpcHQuCgkgICogdGVzdHMvbmV0d29yay1jbG9jay11dGlscy5zY20gKGRlZmluZS1wYXJhbWV0ZXIpOiBOZXcgbWFjcm8sCgkgIGRlZmluZXMgYSBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgc2V0IHZpYSB0aGUgY29tbWFuZCBsaW5lLgoJICAoc2V0LXBhcmFtZXRlciEsIHBhcnNlLXBhcmFtZXRlci1hcmd1bWVudHMpOiBDb21tYW5kIGxpbmUgYXJncwoJICBwYXJzZXIuCgkgICogdGVzdHMvcGxvdC1kYXRhOiBTaW1wbGUgbWF0cGxvdGxpYi1iYXNlZCBwbG90dGVyLCB0YWtlcyBpbnB1dCBvbgoJICBzdGRpbi4KCjIwMDUtMDYtMjMgMTM6MjA6MDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9tYW51YWwvYXBwZW5kaXgtcXVvdGVzLnhtbDoKCSAgYWRkIG1vcmUgaW1wb3J0YW50IGRvY3VtZW50YXRpb24KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBtb3JlIGltcG9ydGFudCBkb2N1bWVudGF0aW9uCgoyMDA1LTA2LTIzIDExOjQzOjM5ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogRG9uJ3QgcmVzdGFydCB0eXBlZmluZGluZyBvbiBhIGRpc2NvbnQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIzICBKYW4gU2NobWlkdCAgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+CgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCk6CgkgIERvbid0IHJlc3RhcnQgdHlwZWZpbmRpbmcgb24gYSBkaXNjb250LgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9zZXRfc3RhdGUpOgoJICBEZWJ1ZyBzcGVsbGluZyBmaXguCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfYWN0aXZlKSwgKGdzdF9wYWRfc2VuZF9ldmVudCk6CgkgIEFsbG93IGNoYW5naW5nIG1vZGUgb2YgYW4gYWN0aXZlIHBhZC4KCSAgRGVidWcgb3V0cHV0IGZpeGVzLgoJICAqIGdzdC9yZWdpc3RyaWVzL2dzdGxpYnhtbHJlZ2lzdHJ5LmM6IChsb2FkX2ZlYXR1cmUpOgoJICBEb24ndCBjYXN0IGEgc3RhdGljIHBhZCB0ZW1wbGF0ZSB0byBhIG5vcm1hbCBwYWQgdGVtcGxhdGUuCgoyMDA1LTA2LTIzIDExOjI1OjI5ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHJlbW92ZSBnc3Rfc3RydG9sbCBjb21wbGV0ZWx5LCBzaW5jZSBpdCBkaWRuJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgbW9yZSB0aGFuIHdoYXQgZ19hc2NpaV9zdHJ0b3VsbCBhbHJlYWR5IGRvZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoU1RBUlRfVEVTVCksIChnc3RfdmFsdWVfc3VpdGUpOgoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ludF9oZWxwZXIpOgoJICByZW1vdmUgZ3N0X3N0cnRvbGwgY29tcGxldGVseSwgc2luY2UgaXQgZGlkbid0IGFjdHVhbGx5IGRvCgkgIGFueXRoaW5nIG1vcmUgdGhhbiB3aGF0IGdfYXNjaWlfc3RydG91bGwgYWxyZWFkeSBkb2VzLgoJICBjaGVjayBmb3IgcmFuZ2UgZXJyb3JzIHdoZW4gZGVzZXJpYWxpemluZwoJICBkbyBhIGNhc3QgZm9yIHRoZSB1bnNpZ25lZCBjYXNlczsgYnV0IGZ1cnRoZXIgZml4aW5nIG5lZWRzCgkgIGEgZGVjaXNpb24gb24gd2hhdCB0aGUgaW50ZXJwcmV0YXRpb24gb2YgIihpbnQpIiBhbmQKCSAgZGVzZXJpYWxpemF0aW9uIHNob3VsZCBiZSBmb3IgdmFsdWVzIHRoYXQgZmFsbCBvdXRzaWRlIHRoZQoJICB0eXBlJ3MgYm91bmRhcmllcyAoaWUsIHJlZnVzZSwgb3IgaW50ZXJwcmV0IGFzIGNhc3RpbmcpCgoyMDA1LTA2LTIzIDEwOjM3OjA5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY2hlY2svc3RhdGVzL3NpbmtzLmM6CgkqIGRvY3MvZGVzaWduL3BhcnQtbGl2ZS1zb3VyY2UudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3R0eXBlcy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svZ2VuZXJpYy9zaW5rcy5jOgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkgIEFkZGVkIHN1cHBvcnQgZm9yIGxpdmUgc291cmNlcyBhbmQgb3RoZXIgZWxlbWVudHMgdGhhdCBjYW5ub3QgZG8gcHJlcm9sbC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIEFkZGVkIHN1cHBvcnQgZm9yIGxpdmUgc291cmNlcyBhbmQgb3RoZXIgZWxlbWVudHMgdGhhdAoJICBjYW5ub3QgZG8gcHJlcm9sbC4KCSAgVXBkYXRlZCBkZXNpZ24gZG9jcywgYWRkZWQgbGl2ZS1zb3VyY2UgZGVzaWduIGRvYy4KCSAgSW1wbGVtZW50ZWQgbGl2ZSBzb3VyY2UgZnVuY3Rpb25hbGl0eSBpbiBiYXNlc3JjCgkgIEZpeCBlcnJvciBjb25kaXRpb24gaW4gX2Jpbl9nZXRfc3RhdGUoKQoJICBJbXBsZW1lbnQgbGl2ZSBzb3VyY2UgaGFuZGxpbmcgaW4gLWxhdW5jaC4KCSAgQWRkZWQgY2hlY2sgZm9yIGxpdmUgc291cmNlcy4KCSAgRml4ZWQgY2FzZSBpbiBHc3RCaW4gd2hlcmUgZWxlbWVudHMgd2VyZSBjaGFuZ2VkIHN0YXRlCgkgIG11bHRpcGxlIHRpbWVzLgoKMjAwNS0wNi0yMyAwOTo1OTozMyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgY2hlY2svZ3N0L2dzdHBhZC5jICh0ZXN0X2dldF9hbGxvd2VkX2NhcHMsIHRlc3RfcmVmY291bnQpOiBGaXggYm9ya2VuIHJlZmNvdW50aW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yMyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9nc3QvZ3N0cGFkLmMgKHRlc3RfZ2V0X2FsbG93ZWRfY2FwcywgdGVzdF9yZWZjb3VudCk6IEZpeAoJICBib3JrZW4gcmVmY291bnRpbmcuCgoyMDA1LTA2LTIzIDA5OjQxOjQxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiBnc3QvZ3N0cGFkLmM6CgkgIGNvbW1pdCB0aGUgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgY29tbWl0IHRoZSBmaWxlCgoyMDA1LTA2LTIzIDA5OjQxOjA5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2NhcHMpOiBSZW1vdmUgbmVlZGxlc3MgcmVmcywgZ3N0X2NhcHNfcmVwbGFjZSB0YWtlcyBjYXJlIG9mIHRoaXMgZm9yIHVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yMyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0cGFkLmMgKGdzdF9wYWRfc2V0X2NhcHMpOiBSZW1vdmUgbmVlZGxlc3MgcmVmcywKCSAgZ3N0X2NhcHNfcmVwbGFjZSB0YWtlcyBjYXJlIG9mIHRoaXMgZm9yIHVzLgoKMjAwNS0wNi0yMyAwOToyODoyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGdob3N0cGFkLmMgKGdzdF9wcm94eV9wYWRfZG9fc2V0Y2Fwcyk6IENhbGwgdGhlIGZ1bGwgZ3N0X3BhZF9zZXRfY2FwcyBvbiB0aGUgdGFyZ2V0LCBub3QganVzdCBpdHMgc2V0Y2FwcygpIGZ1Li4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIzICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RnaG9zdHBhZC5jIChnc3RfcHJveHlfcGFkX2RvX3NldGNhcHMpOiBDYWxsIHRoZSBmdWxsCgkgIGdzdF9wYWRfc2V0X2NhcHMgb24gdGhlIHRhcmdldCwgbm90IGp1c3QgaXRzIHNldGNhcHMoKSBmdW5jdGlvbi4KCjIwMDUtMDYtMjMgMDA6Mzk6MjYgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRlc3RzLzogQSBuZXR3b3JrIGNsb2NrIHNpbXVsYXRvci4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDYtMjMgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogdGVzdHMvbmV0d29yay1jbG9jay5zY206CgkgICogdGVzdHMvbmV0d29yay1jbG9jay11dGlscy5zY206IEEgbmV0d29yayBjbG9jayBzaW11bGF0b3IuCgkgIFNvbWV0aGluZyBvZiBhbiBhbGdvcml0aG1pYyB0ZXN0YmVkIGJlZm9yZSBkb2luZyBzb21ldGhpbmcgaW4gQy4KCjIwMDUtMDYtMjIgMTk6NTc6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBtYWtlIHN1cmUgY2Fwc2xpc3QuaCBnZXRzIGRpc3RlZAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgbWFrZSBzdXJlIGNhcHNsaXN0LmggZ2V0cyBkaXN0ZWQKCjIwMDUtMDYtMjIgMTk6NDg6NTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZmlsZSBmcm9tc3RyaW5nLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaWxlIGZyb21zdHJpbmcuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCjIwMDUtMDYtMjIgMTk6MjI6MzQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svOiBjb3B5IG92ZXIgZnJvbSAwLjgsIGFuZCBhZGQgdHdvIHdpdGggYml0bWFza3Mgc3BlY2lmaWVkIHdpdGggKGludCkgMHhGRi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBjaGVjay9nc3QvY2Fwc2xpc3QuaDoKCSAgY29weSBvdmVyIGZyb20gMC44LCBhbmQgYWRkIHR3byB3aXRoIGJpdG1hc2tzIHNwZWNpZmllZCB3aXRoCgkgIChpbnQpIDB4RkYuLi4KCSAgKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOiAoU1RBUlRfVEVTVCksIChnc3RfY2Fwc19zdWl0ZSk6CgkgIGFkZCB0ZXN0IHRvIHBhcnNlIGV2ZXJ5dGhpbmcgZnJvbSBjYXBzbGlzdC5oCgkgICogY2hlY2svZ3N0L2dzdHN0cnVjdHVyZS5jOiAoU1RBUlRfVEVTVCksIChnc3RfdmFsdWVfc3VpdGUpLAoJICAobWFpbik6CgkgIGFkZCB0ZXN0IGZvciBzdHJ1Y3R1cmUgZGVzZXJpYWxpemF0aW9uCgkgICogY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChTVEFSVF9URVNUKSwgKGdzdF92YWx1ZV9zdWl0ZSk6CgkgIGFkZCB0ZXN0cyBmb3IgZGVzZXJpYWxpemF0aW9uIG9mIHN0cmluZ3MgdG8gaW50IHR5cGVzCgkgICogZ3N0L2dzdHN0cnVjdHVyZS5jOiAoZ3N0X3N0cnVjdHVyZV9udGhfZmllbGRfbmFtZSk6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5oOgoJICBhZGQgYSB3YXkgdG8gZ2V0IHRoZSBuYW1lIG9mIGEgZmllbGQgcmVmZXJlbmNlZCBieSBpbmRleAoJICAqIGdzdC9nc3R2YWx1ZS5jOiAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ludF9oZWxwZXIpOgoJICBpbnN0ZWFkIG9mIGNoZWNraW5nIGlmIHRoZSByZXN1bHRpbmcgbG9uZyBsb25nIGxpZXMgYmV0d2VlbgoJICBtaW4gYW5kIG1heCwgd2UgY2hlY2sgaWYgdGhlIGxvbmcgbG9uZyB3b3VsZCBmaXQgaW50bwoJICBhIG51bWJlciBvZiBieXRlcyBmb3IgdGhlIGZpbmFsIHR5cGUuCgkgIFRoaXMgZml4ZXMgY2FzZXMgd2hlcmUgYSBzdHJpbmcgcmVwcmVzZW50cyAyXjMyIC0gMSwgd2hpY2gKCSAgd2hlbiBjYXN0IHRvIGludCB3b3VsZCBiZSB0aGUgKHZhbGlkKSAtMSwgYnV0IGlzIGJpZ2dlciB0aGFuCgkgIEdfTUFYSU5UCgoyMDA1LTA2LTIyIDExOjAyOjU3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSAgYWRkIGEgbG9nIGxpbmUgZm9yIHR5cGUgZGVzZXJpYWxpemF0aW9uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgYSBsb2cgbGluZSBmb3IgdHlwZSBkZXNlcmlhbGl6YXRpb24KCjIwMDUtMDYtMjIgMTA6NTI6MTggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgcmV0dXJuIGxvbmcgbG9uZywgbm90IGludCwgc28gZ2ludDY0IGRlc2VyaWFsaXphdGlvbiBhY3R1YWxseSB3b3Jrcy4gIElzIHRoZXJlIGFueSBmbGFnIHRoYXQgbWFrZXMgdGhlIGNvbXBpbGVyIGNoZWNrLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3R2YWx1ZS5jOiAoU1RBUlRfVEVTVCk6CgkgICogZ3N0L2dzdHZhbHVlLmM6IChnc3RfdmFsdWVfZGVzZXJpYWxpemUpOgoJICByZXR1cm4gbG9uZyBsb25nLCBub3QgaW50LCBzbyBnaW50NjQgZGVzZXJpYWxpemF0aW9uIGFjdHVhbGx5CgkgIHdvcmtzLiAgSXMgdGhlcmUgYW55IGZsYWcgdGhhdCBtYWtlcyB0aGUgY29tcGlsZXIgY2hlY2sgdGhpcyA/CgkgIEZpeGVzICMzMDg1NTkKCjIwMDUtMDYtMjIgMDk6NTU6MTYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLmg6IEFkZGVkIGNvbnZlbmllbmNlIG1hY3JvcyBmb3Igc2V0dGluZyBidWZmZXJzIGluIEdWYWx1ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICBBZGRlZCBjb252ZW5pZW5jZSBtYWNyb3MgZm9yIHNldHRpbmcgYnVmZmVycyBpbiBHVmFsdWUuCgoyMDA1LTA2LTIxIDE3OjQxOjM1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL2dzdC86IGFkZCBhIHRlc3QgZGVzZXJpYWxpemluZyBpbnQ2NCwgYW5kIGNvbW1lbnQgcGFydCBvdXQgYmVjYXVzZSBpdCBmYWlscywgeWF5ICEKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0Ly5jdnNpZ25vcmU6CgkgICogY2hlY2svZ3N0L2dzdHZhbHVlLmM6IChTVEFSVF9URVNUKSwgKGdzdF92YWx1ZV9zdWl0ZSk6CgkgIGFkZCBhIHRlc3QgZGVzZXJpYWxpemluZyBpbnQ2NCwgYW5kIGNvbW1lbnQgcGFydCBvdXQgYmVjYXVzZQoJICBpdCBmYWlscywgeWF5ICEKCjIwMDUtMDYtMjEgMTY6NTM6MTQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0L2dzdC5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0LmM6CgkgIGNvbW1pdCBhIGZpbGUgSSBmb3Jnb3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNvbW1pdCBhIGZpbGUgSSBmb3Jnb3QKCjIwMDUtMDYtMjEgMTY6NDg6NDYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY2hlY2svZ3N0L2dzdHZhbHVlLmM6CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0dmFsdWUuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9jYXBzL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2NhcHMvdmFsdWVfc2VyaWFsaXplLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvdGVzdF9nc3RfaW5pdC5jOgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9jYXBzL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvY2Fwcy92YWx1ZV9zZXJpYWxpemUuYzoKCSogdGVzdHN1aXRlL3Rlc3RfZ3N0X2luaXQuYzoKCSAgbW92ZSBvdmVyIGEgdmFsdWVfc2VyaWFsaXplIHRlc3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vdmUgb3ZlciBhIHZhbHVlX3NlcmlhbGl6ZSB0ZXN0CgoyMDA1LTA2LTIwIDE1OjE4OjE3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBTbWFsbCBkb2MgdXBkYXRlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOgoJICBTbWFsbCBkb2MgdXBkYXRlcy4KCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9jb21wYXJlX2J1ZmZlciksCgkgIChnc3RfdmFsdWVfc2VyaWFsaXplX2J1ZmZlciksIChnc3RfdmFsdWVfZGVzZXJpYWxpemVfYnVmZmVyKSwKCSAgKGdzdF92YWx1ZV9jb21wYXJlX2ZsYWdzKSwgKGdzdF92YWx1ZV9zZXJpYWxpemVfZmxhZ3MpLAoJICAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ZsYWdzKSwgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgIEZpeCBzZXJpYWxpc2F0aW9uIG9mIGJ1ZmZlcnMsIHRoZXkgYXJlIG5vdCBib3hlZCB0eXBlcyBhbnltb3JlCgoyMDA1LTA2LTIwIDE1OjE0OjU4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0L2dzdGNhcHMuYzogVGVzdGNhc2UgdG8gc2hvdyBlcnJvciBpbiBidWZmZXItb24tY2FwcyBzZXJpYWxpc2F0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0Y2Fwcy5jOiAoU1RBUlRfVEVTVCksIChnc3RfY2Fwc19zdWl0ZSk6CgkgIFRlc3RjYXNlIHRvIHNob3cgZXJyb3IgaW4gYnVmZmVyLW9uLWNhcHMgc2VyaWFsaXNhdGlvbi4KCjIwMDUtMDYtMjAgMTU6MTM6NDMgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvcmFuZG9tL3dpbmdvL3BvcnRpbmctcGx1Z2lucy10by0wLjk6IEEgcGl0aWZ1bCBkb2N1bWVudCBJIHdpbGwgYmUgYWRkaW5nIHRvIGxhdGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0yMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL3JhbmRvbS93aW5nby9wb3J0aW5nLXBsdWdpbnMtdG8tMC45OiBBIHBpdGlmdWwgZG9jdW1lbnQgSQoJICB3aWxsIGJlIGFkZGluZyB0byBsYXRlci4KCjIwMDUtMDYtMjAgMTE6NDE6MTcgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RzeXN0ZW1jbG9jay5jIChnc3Rfc3lzdGVtX2Nsb2NrX2luaXQpOiBVbmxvY2sgdGhlIGNsb2NrIGlmIGl0cyBzb2NrcyBmaWxsIHdpdGggcm9ja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTIwICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jIChnc3Rfc3lzdGVtX2Nsb2NrX2luaXQpOiBVbmxvY2sgdGhlIGNsb2NrCgkgIGlmIGl0cyBzb2NrcyBmaWxsIHdpdGggcm9ja3MuCgkgIChnc3Rfc3lzdGVtX2Nsb2NrX29idGFpbik6IFNldCB0aGUgbmFtZSBvbiBvYmplY3QgY29uc3RydWN0aW9uLgoJICBBdm9pZCBkb3VibGUtY2hlY2tlZCBsb2NraW5nLgoKMjAwNS0wNi0yMCAxMTozMjoxNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9nc3R1cmkuYzogRml4IHBvdGVudGlhbCBlbmRsZXNzIGxvb3AuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1cmkuYzogKGdzdF9lbGVtZW50X21ha2VfZnJvbV91cmkpOgoJICBGaXggcG90ZW50aWFsIGVuZGxlc3MgbG9vcC4KCjIwMDUtMDYtMjAgMTE6Mjc6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2dob3N0cGFkcy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2dob3N0cGFkcy9NYWtlZmlsZS5hbToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9naG9zdHBhZHMvZ2hvc3RwYWRzLmM6CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2dob3N0cGFkcy8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvZ2hvc3RwYWRzL01ha2VmaWxlLmFtOgoJKiB0ZXN0c3VpdGUvZ2hvc3RwYWRzL2dob3N0cGFkcy5jOgoJICByZW1vdmUgYW5vdGhlciB0ZXN0IHRoYXQncyBvYnNvbGV0ZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGFub3RoZXIgdGVzdCB0aGF0J3Mgb2Jzb2xldGUKCjIwMDUtMDYtMjAgMTE6MjM6NTkgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2Nsb2NrLy5naXRpZ25vcmU6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xvY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xvY2svY2xvY2sxLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xvY2svY2xvY2syLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvY2xvY2svc2lnbmVkbmVzcy5jOgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9jbG9jay8uZ2l0aWdub3JlOgoJKiB0ZXN0c3VpdGUvY2xvY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9jbG9jay9jbG9jazEuYzoKCSogdGVzdHN1aXRlL2Nsb2NrL2Nsb2NrMi5jOgoJKiB0ZXN0c3VpdGUvY2xvY2svc2lnbmVkbmVzcy5jOgoJICByZW1vdmUgY2xvY2sgdGVzdHN1aXRlLCBpbXBvcnRhbnQgc3R1ZmYgYWxyZWFkeSBtb3ZlZCB0byBjaGVjawoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGNsb2NrIHRlc3RzdWl0ZSwgaW1wb3J0YW50IHN0dWZmIGFscmVhZHkgbW92ZWQgdG8gY2hlY2sKCjIwMDUtMDYtMjAgMTE6MTg6NDAgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2JpbnMvLmdpdGlnbm9yZToKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9iaW5zL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2JpbnMvaW50ZXJmYWNlLmM6CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSogdGVzdHN1aXRlL2JpbnMvLmdpdGlnbm9yZToKCSogdGVzdHN1aXRlL2JpbnMvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9iaW5zL2ludGVyZmFjZS5jOgoJICByZW1vdmUgdGVzdCB0aGF0IHdhcyBhbHJlYWR5IG1vdmVkIHRvIGNoZWNrCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgdGVzdCB0aGF0IHdhcyBhbHJlYWR5IG1vdmVkIHRvIGNoZWNrCgoyMDA1LTA2LTE5IDExOjMyOjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL01ha2VmaWxlLmFtOiBhZGQgZ3N0dGFnCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICBhZGQgZ3N0dGFnCgkgICogY2hlY2svZ3N0L2dzdHRhZy5jOiAoY2hlY2tfdGFncyksIChTVEFSVF9URVNUKSwgKGdzdF90YWdfc3VpdGUpLAoJICAobWFpbik6CgkgIG1vdmUgb3ZlciBmcm9tIHRlc3RzdWl0ZSBkaXIgYW5kIGNsZWFuIHVwCgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3R0YWcuYzoKCSAgKiB0ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkgICogdGVzdHN1aXRlL3RhZ3MvLmN2c2lnbm9yZToKCSAgKiB0ZXN0c3VpdGUvdGFncy9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0c3VpdGUvdGFncy9tZXJnZS5jOgoJICByZW1vdmUgdGVzdHN1aXRlL3RhZ3MKCjIwMDUtMDYtMTkgMTA6NTQ6MTIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvdG1wbC9nc3RiaW4uc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RidWZmZXIuc2dtbDoKCSogZG9jcy9nc3QvdG1wbC9nc3RjYXBzLnNnbWw6CgkqIGRvY3MvZ3N0L3RtcGwvZ3N0c3RydWN0dXJlLnNnbWw6CgkqIGdzdC9nc3RiaW4uaDoKCSogZ3N0L2dzdGJ1ZmZlci5oOgoJICBzb21lIG1vcmUgZG9jcyBjbGVhbnVwCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzb21lIG1vcmUgZG9jcyBjbGVhbnVwCgoyMDA1LTA2LTE5IDEwOjMxOjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzoKCSogdGVzdHMvTWFrZWZpbGUuYW06CgkqIHRlc3RzL2J1ZnNwZWVkLy5naXRpZ25vcmU6CgkqIHRlc3RzL2J1ZnNwZWVkL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9idWZzcGVlZC9SRUFETUU6CgkqIHRlc3RzL2J1ZnNwZWVkL2dzdG1lbXBvb2wuYzoKCSogdGVzdHMvYnVmc3BlZWQvZ3N0bWVtcG9vbC5oOgoJKiB0ZXN0cy9idWZzcGVlZC90ZXN0MS5jOgoJKiB0ZXN0cy9idWZzcGVlZC90ZXN0Mi5jOgoJKiB0ZXN0cy9zcGlkZXlfYmVuY2guYzoKCSAgcmVtb3ZlIGJ1ZnNwZWVkIGFuZCBzcGlkZXlfYmVuY2gKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHJlbW92ZSBidWZzcGVlZCBhbmQgc3BpZGV5X2JlbmNoCgoyMDA1LTA2LTE5IDEwOjIyOjQ3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSogZG9jcy9nc3QvdG1wbC9nc3RlbnVtdHlwZXMuc2dtbDoKCSogd2luMzIvZ3N0ZW51bXR5cGVzLmM6CgkgIGNsZWFuIHVwIGRvY3MgYSBsaXR0bGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNsZWFuIHVwIGRvY3MgYSBsaXR0bGUKCjIwMDUtMDYtMTkgMDA6NTI6MzEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svZ3N0Y2hlY2suaDogYWRkIG1hY3JvcyBmb3IgY2hlY2tpbmcgcmVmY291bnRzIG9uIG9iamVjdHMgYW5kIGNhcHMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY2hlY2svZ3N0Y2hlY2suaDoKCSAgYWRkIG1hY3JvcyBmb3IgY2hlY2tpbmcgcmVmY291bnRzIG9uIG9iamVjdHMgYW5kIGNhcHMKCSAgKiBjaGVjay9nc3QvZ3N0cGFkLmM6IChTVEFSVF9URVNUKSwgKGdzdF9wYWRfc3VpdGUpOgoJICBhZGQgc29tZSBtb3JlIHVuaXQgdGVzdHMKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2xpbmtfY2hlY2tfY29tcGF0aWJsZV91bmxvY2tlZCksCgkgIChnc3RfcGFkX2xpbmtfcHJlcGFyZSksIChnc3RfcGFkX2xpbmspLCAoZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzKToKCSAgZml4IGxlYWtlZCByZWZjb3VudHMgKEkgaG9wZSA6KSkgc28gdW5pdHRlc3Qgd29ya3MKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIHdoaXRlc3BhY2UgcmVtb3ZhbAoKMjAwNS0wNi0xOCAyMjozMzoxNCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIE5FV1M6CgkqIFJFTEVBU0U6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgYmFjayB0byBoZWFkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBiYWNrIHRvIGhlYWQKCjIwMDUtMDYtMTcgMTI6MDA6MzUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIENoYW5nZUxvZzoKCSAgY2hhbmdlbG9nCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBjaGFuZ2Vsb2cKCjIwMDUtMDYtMTcgMTE6NTg6NDggKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlc2lua19jaGFpbik6IFJlbW92ZSBib2d1cyBhc3NlcnQ7IGl0J3MgYWx3YXlzIHBvc3NpYmxlIHRoYXQgdGhlIHBhZCBnZXRzIGRlYWN0aXZhdGVkIC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0xNyAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jIChnc3RfYmFzZXNpbmtfY2hhaW4pOiBSZW1vdmUgYm9ndXMKCSAgYXNzZXJ0OyBpdCdzIGFsd2F5cyBwb3NzaWJsZSB0aGF0IHRoZSBwYWQgZ2V0cyBkZWFjdGl2YXRlZCBpbgoJICBiZXR3ZWVuIHRoZSBjaGVja3MgaW4gZ3N0cGFkLmMgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbi4gUmVseSBvbgoJICBmaW5pc2hfcHJlcm9sbCgpIHRvIHJldHVybiBhIEZMVVNISU5HIG9yIHNpbWlsYXIgaW5zdGVhZCBvZiBvbiB0aGUKCSAgYXNzZXJ0LgoKMjAwNS0wNi0xNyAxMTozMzoyNyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYyAoZ3N0X2Jhc2VzaW5rX2V2ZW50KTogT25seSB3YWl0IGZvciB0aGUgY2xvY2sgYW5kIHBvc3QgYW4gRU9TIG1lc3NhZ2UgaWYgd2UgY29tZSBvdXQgb2YgZmluaXNoLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTE3ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmMgKGdzdF9iYXNlc2lua19ldmVudCk6IE9ubHkgd2FpdCBmb3IgdGhlCgkgIGNsb2NrIGFuZCBwb3N0IGFuIEVPUyBtZXNzYWdlIGlmIHdlIGNvbWUgb3V0IG9mIGZpbmlzaF9wcmVyb2xsIGluCgkgIHRoZSBwbGF5aW5nIHN0YXRlLgoKMjAwNS0wNi0xNyAwOTo1ODozOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBSRUFETUU6CgkgIGluY29ycG9yYXRlIHBsdWdpbnMgc3R1ZmYgYW5kIHVuaW5zdGFsbGVkIHN0dWZmCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpbmNvcnBvcmF0ZSBwbHVnaW5zIHN0dWZmIGFuZCB1bmluc3RhbGxlZCBzdHVmZgoKMjAwNS0wNi0xNyAwOTozMjoxOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3QvaW5kZXhlcnMvLmdpdGlnbm9yZToKCSogcGx1Z2lucy9pbmRleGVycy8uZ2l0aWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgaWdub3JlIG1vcmUKCjIwMDUtMDYtMTcgMDk6MTI6MzMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svZ3N0Ly5naXRpZ25vcmU6CgkqIGdzdC9iYXNlLy5naXRpZ25vcmU6CgkqIGdzdC9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiBnc3QvcGFyc2UvLmdpdGlnbm9yZToKCSogZ3N0L3JlZ2lzdHJpZXMvLmdpdGlnbm9yZToKCSogZ3N0L3NjaGVkdWxlcnMvLmdpdGlnbm9yZToKCSogbGlicy9nc3QvYmFzZS8uZ2l0aWdub3JlOgoJKiBsaWJzL2dzdC9ieXRlc3RyZWFtLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2NvbnRyb2wvLmdpdGlnbm9yZToKCSogbGlicy9nc3QvZGF0YXByb3RvY29sLy5naXRpZ25vcmU6CgkqIGxpYnMvZ3N0L2dldGJpdHMvLmdpdGlnbm9yZToKCSogcGx1Z2lucy9lbGVtZW50cy8uZ2l0aWdub3JlOgoJKiB0ZXN0cy9jaGVjay9nc3QvLmdpdGlnbm9yZToKCSogdG9vbHMvLmdpdGlnbm9yZToKCSAgaWdub3JlIG1vcmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlnbm9yZSBtb3JlCgoyMDA1LTA2LTE3IDA4OjU5OjQxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIC5naXRpZ25vcmU6CgkqIENoYW5nZUxvZzoKCSogUkVBRE1FOgoJKiBjaGVjay8uZ2l0aWdub3JlOgoJKiBleGFtcGxlcy9tYW51YWwvLmdpdGlnbm9yZToKCSogZ3N0Ly5naXRpZ25vcmU6CgkqIHRlc3RzL2NoZWNrLy5naXRpZ25vcmU6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9tYW51YWwvLmdpdGlnbm9yZToKCSAgaWdub3JlIG1vcmU7IGZpeCBSRUFETUUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGlnbm9yZSBtb3JlOyBmaXggUkVBRE1FCgoyMDA1LTA2LTE2IDE3OjUwOjE2ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IEFsbG93IE5VTEwgYXMgcG9zc2libGUgdmFsdWUgZm9yIGZpbHRlcl9jYXBzIHByb3BlcnR5LCBpbmRpY2F0aW5nIEdTVF9DQVBTX0FOWS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX2NsYXNzX2luaXQpLAoJICAoZ3N0X2NhcHNmaWx0ZXJfc2V0X3Byb3BlcnR5KTogQWxsb3cgTlVMTCBhcyBwb3NzaWJsZSB2YWx1ZQoJICBmb3IgZmlsdGVyX2NhcHMgcHJvcGVydHksIGluZGljYXRpbmcgR1NUX0NBUFNfQU5ZLgoKMjAwNS0wNi0wOSAxMzozMzowMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiBmaXggZGVidWcgb3V0cHV0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZXNyY19jcmVhdGUpOgoJICBmaXggZGVidWcgb3V0cHV0CgkgICogZ3N0L3NjaGVkdWxlcnMvTWFrZWZpbGUuYW06CgkgIHVzZSBsaWJnc3QgcHJlZml4CgkgICogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIGZpeCBzcGVjIGZvciBpdAoKMjAwNS0wNi0wOSAxMjoyMzowNSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3RyZWFtZXIuc3BlYy5pbjogY2xlYW4gdXAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIGNsZWFuIHVwCgoyMDA1LTA2LTA5IDEyOjA5OjU2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGdzdHJlYW1lci5zcGVjLmluOiBjbGVhbiB1cAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgY2xlYW4gdXAKCjIwMDUtMDYtMDkgMTI6MDM6MDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogVE9ETzoKCSogZG9jcy9yYW5kb20vVE9ETy1wcmUtMC45OgoJICBoYXZlIGEgcmVhbCBUT0RPLCBtb3ZlIG9sZCBUT0RPCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBoYXZlIGEgcmVhbCBUT0RPLCBtb3ZlIG9sZCBUT0RPCgoyMDA1LTA2LTA5IDEyOjAwOjI3ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHBvL2FmLnBvOgoJKiBwby9hei5wbzoKCSogcG8vY2EucG86CgkqIHBvL2NzLnBvOgoJKiBwby9kZS5wbzoKCSogcG8vZW5fR0IucG86CgkqIHBvL2ZyLnBvOgoJKiBwby9pdC5wbzoKCSogcG8vbmIucG86CgkqIHBvL25sLnBvOgoJKiBwby9ydS5wbzoKCSogcG8vc3EucG86CgkqIHBvL3NyLnBvOgoJKiBwby9zdi5wbzoKCSogcG8vdHIucG86CgkqIHBvL3VrLnBvOgoJKiBwby92aS5wbzoKCSAgcG8gdXBkYXRlcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcG8gdXBkYXRlcwoKMjAwNS0wNi0wOSAxMToxMjo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBwby9hZi5wbzoKCSogcG8vYXoucG86CgkqIHBvL2NhLnBvOgoJKiBwby9jcy5wbzoKCSogcG8vZGUucG86CgkqIHBvL2VuX0dCLnBvOgoJKiBwby9mci5wbzoKCSogcG8vaXQucG86CgkqIHBvL25iLnBvOgoJKiBwby9ubC5wbzoKCSogcG8vcnUucG86CgkqIHBvL3NxLnBvOgoJKiBwby9zci5wbzoKCSogcG8vc3YucG86CgkqIHBvL3RyLnBvOgoJKiBwby91ay5wbzoKCSogcG8vdmkucG86CgkgIHVwZGF0ZSB0cmFuc2xhdGlvbnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSB0cmFuc2xhdGlvbnMKCjIwMDUtMDYtMDggMjI6MTY6MjcgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3R1dGlscy5jOiBSUEFEIGZpeGVzIGFsbCBhcm91bmQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA2LTA4ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3R1dGlscy5jOiBSUEFEIGZpeGVzIGFsbCBhcm91bmQuCgkgIChnc3RfZWxlbWVudF9saW5rX3BhZHMpOiBSZWZjb3VudGluZyBmaXhlcy4KCSAgKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgICogcGFyc2UvZ3JhbW1hci55OgoJICAqIGdzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSAgKiBnc3QvZ3N0cXVldWUuYzogUlBBRCBmaXhlcy4KCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuaDoKCSAgKiBnc3QvZ3N0Z2hvc3RwYWQuYzogTmV3IGdob3N0IHBhZCBpbXBsZW1lbnRhdGlvbiBhcyBmdWxsIHByb3h5CgkgIHBhZHMuIFRoZSB0cmlja3kgdGhpbmcgaXMgdGhleSBwcm92aWRlIGJvdGggc291cmNlIGFuZCBzaW5rCgkgIGludGVyZmFjZXMsIHNpbmNlIHRoZXkgcHJveHkgdGhlIGludGVybmFsIHBhZCBmb3IgdGhlIGV4dGVybmFsCgkgIHBhZCwgYW5kIHZpY2UgdmVyc2EuIEltcGxlbWVudCB3aXRoIGxvd2VyLWxldmVsIFByb3h5UGFkIG9iamVjdHMsCgkgIHdpdGggdGhlIGludGVyaW9yIHByb3h5IHBhZCBhcyBhIGNoaWxkIG9mIHRoZSBleHRlcmlvciBnaG9zdCBwYWQuCgkgIFNob3VsZCB3cml0ZSBhIGRvYyBvbiB0aGlzLgoJICAqIGdzdC9nc3RwYWQuaDogcy9SUEFEL1BBRC8sIHMvUmVhbFBhZC9QYWQvLgoJICAoZ3N0X3BhZF9zZXRfbmFtZSwgZ3N0X3BhZF9zZXRfcGFyZW50KTogTWFjcm9zIHJlbW92ZWQsIHVzZQoJICBnc3Rfb2JqZWN0IEFQSS4KCSAgKiBnc3QvZ3N0cGFkLmM6IEJpZyBjaGFuZ2VzLiBObyBtb3JlIHN0dWIgYmFzZSBHc3RQYWQsIG5vdyBhbGwKCSAgcGFkcyBhcmUgcmVhbCBwYWRzLiBObyBnaG9zdCBwYWRzIGluIHRoaXMgZmlsZS4gTm90IGRvY3VtZW50aW5nCgkgIHRoZSBteXJpYWQgcy9SUEFEL1BBRC8gYW5kIFJFQUxJWkUgZml4ZXMuCgkgIChnc3RfcGFkX2NsYXNzX2luaXQpOiBBZGQgcHJvcGVydGllcyBmb3IgImRpcmVjdGlvbiIgYW5kCgkgICJ0ZW1wbGF0ZSIuIEJvdGggYXJlIGNvbnN0cnVjdC1vbmx5LCBzbyB0aGV5IGNhbid0IGNoYW5nZSBkdXJpbmcKCSAgdGhlIGxpZmUgb2YgdGhlIHBhZC4gRml4ZXMgcHJvcGVybHkgZGVyaXZpbmcgZnJvbSBHc3RQYWQuCgkgIChnc3RfcGFkX2N1c3RvbV9uZXcsIGdzdF9wYWRfY3VzdG9tX25ld19mcm9tX3RlbXBsYXRlKTogR29uZS4gRm9yCgkgIGRlcml2ZWQgb2JqZWN0cywganVzdCBzZXQgcHJvcGVydGllcyB3aGVuIGNyZWF0aW5nIHRoZSBvYmplY3RzIHZpYQoJICBnX29iamVjdF9uZXcuCgkgIChnc3RfcGFkX2dldF9wYXJlbnQpOiBJbXBsZW1lbnQgYXMgYSBmdW5jdGlvbiwgcmV0dXJuIE5VTEwgaWYgdGhlCgkgIHBhcmVudCBpcyBub3QgYW4gZWxlbWVudC4KCSAgKGdzdF9wYWRfZ2V0X3JlYWxfcGFyZW50LCBnc3RfcGFkX2FkZF9naG9zdF9wYWQpCgkgIChnc3RfcGFkX3JlbW92ZV9naG9zdF9wYWQsIGdzdF9wYWRfcmVhbGl6ZSk6IFJlbW92ZWQuCgkgICogZ3N0L2dzdG9iamVjdC5jIChnc3Rfb2JqZWN0X2NsYXNzX2luaXQpOiBNYWtlIG5hbWUgYSBjb25zdHJ1Y3QKCSAgcHJvcGVydHkuIERvbid0IHNldCBpdCBpbiB0aGUgb2JqZWN0IGluaXQuCgkgICogZ3N0L2dzdGVsZW1lbnQuYyAoZ3N0X2VsZW1lbnRfYWRkX3BhZCk6IERvbid0IGFsbG93IGFkZGluZyBwYWRzCgkgIHdpdGggVU5LTk9XTiBkaXJlY3Rpb24uCgkgIChnc3RfZWxlbWVudF9hZGRfZ2hvc3RfcGFkKTogUmVtb3ZlIG5vbi1vcnRob2dvbmFsIEFQSS4gUmVwbGFjZQoJICB3aXRoIGdzdF9lbGVtZW50X2FkZF9wYWQgKGUsIGdzdF9naG9zdF9wYWRfbmV3IChuYW1lLCBwYWQpKS4KCSAgKGdzdF9lbGVtZW50X3JlbW92ZV9wYWQpOiBSZW1vdmUgZ2hvc3QtcGFkIHNwZWNpYWwgY2FzZXMuCgkgIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKTogUmVtb3ZlIHJwYWQgY3J1ZnQuCgkgICogZ3N0L2dzdGJpbi5jIChnc3RfYmluX2NoYW5nZV9zdGF0ZSk6IFVzZSBnc3RfcGFkX2dldF9wYXJlbnQgdG8KCSAgY2F0Y2ggdGhlIHBhZCdzLXBhcmVudC1ub3QtYW4tZWxlbWVudCBjYXNlLgoJICAqIGdzdC9nc3QuaDogSW5jbHVkZSBnc3RnaG9zdHBhZC5oLgoJICAqIGdzdC9nc3QuYyAoaW5pdF9wb3N0KTogTm8gbW9yZSByZWFsLCBnaG9zdCBwYWRzLgoJICAqIGdzdC9NYWtlZmlsZS5hbTogQWRkIGdzdGdob3N0cGFkLltjaF0uCgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svZ3N0L2dzdGJpbi5jOgoJICAqIGNoZWNrL2dzdC9nc3RnaG9zdHBhZC5jICh0ZXN0X2dob3N0X3BhZHMpOiBDaGVjayB0aGF0IGxpbmtpbmcKCSAgaW50byBhIGJpbiBjcmVhdGVzIGdob3N0IHBhZHMsIGFuZCB0aGF0IHRoZSByZWZjb3VudHMgYXJlIHJpZ2h0LgoJICBQYXJ0bHkgbW92ZWQgZnJvbSBnc3RiaW4uYy4KCjIwMDUtMDYtMDggMTQ6MDA6MjEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgY2hlY2svOiBpZ25vcmUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QtbGlicy8uY3ZzaWdub3JlOgoJICAqIGNoZWNrL2dzdC8uY3ZzaWdub3JlOgoJICAqIGNoZWNrL3BpcGVsaW5lcy8uY3ZzaWdub3JlOgoJICBpZ25vcmUgbW9yZQoJICAqIGNoZWNrL3BpcGVsaW5lcy9jbGVhbnVwLmM6IChzZXR1cF9waXBlbGluZSksIChydW5fcGlwZWxpbmUpLAoJICAoU1RBUlRfVEVTVCksIChjbGVhbnVwX3N1aXRlKSwgKG1haW4pOgoJICBhZGQgc29tZSB0ZXN0cyByZWxhdGVkIHRvIGNsZWFudXAgYWZ0ZXIgcnVubmluZyBwaXBlbGluZXMKCjIwMDUtMDYtMDggMTM6NTc6MTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9nc3QvZ3N0YnVmZmVyLmM6CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RidWZmZXIuYzoKCSAgYWRkIGEgR3N0QnVmZmVyIHVuaXQgdGVzdAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIGEgR3N0QnVmZmVyIHVuaXQgdGVzdAoKMjAwNS0wNi0wOCAxMzo0NToyNiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkgIHByZXZpb3VzIGNvbW1pdCBhY2NpZGVudGFsbHkgYWxzbyBhZGRlZCByZWZjb3VudCBkZWZpbmVzIGZvciBnc3RtaW5pb2JqZWN0LCBsb2dnaW5nIHRoYXQgbm93CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBwcmV2aW91cyBjb21taXQgYWNjaWRlbnRhbGx5IGFsc28gYWRkZWQgcmVmY291bnQgZGVmaW5lcyBmb3IgZ3N0bWluaW9iamVjdCwgbG9nZ2luZyB0aGF0IG5vdwoKMjAwNS0wNi0wOCAxMzo0Mjo1MiArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogZG9jcy9mYXEvZ3N0LXVuaW5zdGFsbGVkOgoJKiBnc3QvZ3N0bWluaW9iamVjdC5oOgoJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKCSAgYWRkIGEgJ3BsdWdpbnMnIGRpciB0byB0aGUgUExVR0lOX1BBVEggaW4gdGhlIHVuaW5zdGFsbGVkIHNjcmlwdCB0byBkcm9wIHJhbmRvbSBvdGhlciBwbHVnaW4taGF2aW5nIHByb2plY3RzIGluCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgYSAncGx1Z2lucycgZGlyIHRvIHRoZSBQTFVHSU5fUEFUSCBpbiB0aGUgdW5pbnN0YWxsZWQgc2NyaXB0IHRvIGRyb3AgcmFuZG9tIG90aGVyIHBsdWdpbi1oYXZpbmcgcHJvamVjdHMgaW4KCjIwMDUtMDYtMDggMTM6NDE6NDggKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY29uZmlndXJlLmFjOgoJICB3ZSBkaWQgYSBwcmVyZWxlYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3ZSBkaWQgYSBwcmVyZWxlYXNlCgoyMDA1LTA2LTA4IDEzOjQxOjMxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RvYmplY3QuaDoKCSAgT0JKRUNUIGFjdHMgb24gb2JqIG5vdCBjYXBzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBPQkpFQ1QgYWN0cyBvbiBvYmogbm90IGNhcHMKCjIwMDUtMDYtMDggMTM6NDE6MDUgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5LmM6CgkgIGFkZCBhIGRlYnVnIGxpbmUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGFkZCBhIGRlYnVnIGxpbmUKCjIwMDUtMDYtMDggMTM6NDA6NDYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkgIHdoaXRlIHNwYWNlIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3aGl0ZSBzcGFjZSBmaXhlcwoKMjAwNS0wNi0wMyAxODoyNjo1OSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBNYWtlZmlsZS5hbToKCSogY29tbW9uOgoJICBhZGRlZCBzdXBwb3J0IGZvciBodG1sIHVuaXQgdGVzdCBjb3ZlcmFnZSByZXBvcnRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGRlZCBzdXBwb3J0IGZvciBodG1sIHVuaXQgdGVzdCBjb3ZlcmFnZSByZXBvcnRzCgoyMDA1LTA2LTAyIDE1OjQ1OjE2ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IEZyZWUgZXhpc3RpbmcgY2FwcyBpZiB0aGUgY2Fwc2ZpbHRlciBjaGFuZ2VzLiBBZGQgYSBGSVhNRSBhYm91dCBzZXR0aW5nIHRob3NlIGNhcHMgb24gdC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0Y2Fwc2ZpbHRlci5jOiAoZ3N0X2NhcHNmaWx0ZXJfc2V0X3Byb3BlcnR5KToKCSAgRnJlZSBleGlzdGluZyBjYXBzIGlmIHRoZSBjYXBzZmlsdGVyIGNoYW5nZXMuIEFkZCBhIEZJWE1FIGFib3V0CgkgIHNldHRpbmcgdGhvc2UgY2FwcyBvbiB0aGUgcGFkcy4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2dldF9jb21wYXRpYmxlX3BhZCksIChnaG9zdF91cCk6CgkgIEJlZm9yZSBhZGRpbmcgYSBnaG9zdCBwYWQgdG8gYSBwYXJlbnQgYmluLCBjaGVjayB0aGF0IHRoZXJlIGlzbid0CgkgIGFscmVhZHkgb25lIGZvciB0aGUgZWxlbWVudCBvbiB0aGUgYmluLiBQcmV2ZW50cyBpbmZpbml0ZSByZWN1cnNpb24KCSAgd2hlbiB1c2luZyBkZWNvZGViaW4gaW4gcGFyc2UgcGlwZWxpbmVzLiBBbmR5IHNheXMgaGUnbGwgcmV3cml0ZSB0aGUKCSAgd2F5IHRoaXMgd29ya3MgYW55d2F5LCBzbyBpZ25vcmUgdGhlIGhhY2suCgoyMDA1LTA2LTAyIDExOjEyOjM0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmMgKGRvX3B1bGxfdHlwZWZpbmQpOiBRdWVyeSB0aGUgZmlsZSBzaXplLCBwYXNzIGl0IG9uIHRvIHRoZSB0eXBlIGZpbmQgaGVscGVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNi0wMiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmMgKGRvX3B1bGxfdHlwZWZpbmQpOiBRdWVyeSB0aGUKCSAgZmlsZSBzaXplLCBwYXNzIGl0IG9uIHRvIHRoZSB0eXBlIGZpbmQgaGVscGVyLgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYyAoZ3N0X2Jhc2VzcmNfZG9fc2Vlayk6IFNldCB0aGUKCSAgc2VnbWVudF9zdGFydCBhbmQgc2VnbWVudF9lbmQgcHJvcGVybHkgYWNjb3JkaW5nIHRvIHRoZSBzZWVrCgkgIG1ldGhvZC4gU2VnbWVudF9lbmQgaXMgc3RpbGwgYSBiaXQgZmxha3kgYmVjYXVzZSBvZmZzZXQgY2FuIGJlCgkgIG5lZ2F0aXZlIGZvciBDVVIgYW5kIEVORCBjYXNlcywgYnV0IGl0IHRha2VzIC0xIGFzIGFuICJ1bnNldCIKCSAgdmFsdWUuCgoyMDA1LTA2LTAyIDA5OjQyOjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQnVmZmVyYWxsb2M6IHJldHVybiBHc3RGbG93UmV0dXJuIHRvIG1vcmUgYWNjdXJhdGx5IHJlcG9ydCB3aHkgYWxsb2NhdGlvbiBmYWlsZWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfcGFkX2J1ZmZlcl9hbGxvYyksCgkgIChnc3RfYmFzZV9zaW5rX2J1ZmZlcl9hbGxvYyksIChnc3RfYmFzZXNpbmtfcHJlcm9sbF9xdWV1ZV9wdXNoKSwKCSAgKGdzdF9iYXNlc2lua19hY3RpdmF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9saW5rX3ByZXBhcmUpLAoJICAoZ3N0X3BhZF9saW5rKSwgKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLAoJICAoZ3N0X3BhZF9xdWVyeSksIChnc3RfcGFkX3N0YXJ0X3Rhc2spOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9idWZmZXJhbGxvYyksCgkgIChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLCAoZ3N0X3F1ZXVlX2NoYWluKToKCSAgQnVmZmVyYWxsb2M6IHJldHVybiBHc3RGbG93UmV0dXJuIHRvIG1vcmUgYWNjdXJhdGx5IHJlcG9ydAoJICB3aHkgYWxsb2NhdGlvbiBmYWlsZWQuCgoyMDA1LTA2LTAyIDA5OjM5OjIxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmM6IFRha2Ugc25hcHNob3Qgb2Ygc3RhdGUgd2l0aG91dCBibG9ja2luZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfc2VuZF9ldmVudCk6CgkgIFRha2Ugc25hcHNob3Qgb2Ygc3RhdGUgd2l0aG91dCBibG9ja2luZy4KCjIwMDUtMDYtMDIgMDg6MjY6NTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBkb2NzL2Rlc2lnbi86IFNtYWxsIGRvYyB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1jYXBzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWNsb2Nrcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1uZWdvdGlhdGlvbi50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1wcmVyb2xsLnR4dDoKCSAgU21hbGwgZG9jIHVwZGF0ZXMKCjIwMDUtMDUtMzAgMTY6Mjg6NDEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogUHJvdGVjdCBsYXN0X21lc3NhZ2UgcHJvcGVydHkgYXMgaXQgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9ldmVudCksCgkgIChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtKSwgKGdzdF9pZGVudGl0eV9nZXRfcHJvcGVydHkpOgoJICBQcm90ZWN0IGxhc3RfbWVzc2FnZSBwcm9wZXJ0eSBhcyBpdCBpcyBhY2Nlc3NlZCBmcm9tCgkgIG11bHRpcGxlIHRocmVhZHMuCgoyMDA1LTA1LTMwIDE1OjUzOjA0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGVsZW1lbnQuYzogU2xpY2tlciBwYWQgYWN0aXZhdGlvbiBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfaW5pdCksCgkgIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKSwgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIFNsaWNrZXIgcGFkIGFjdGl2YXRpb24gY29kZS4KCjIwMDUtMDUtMzAgMTU6NTE6NDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBNb3ZlIGVsZW1lbnRmYWN0b3J5IG1ldGhvZHMgdG8gc2VwYXJhdGUgLmggZmlsZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9nc3RlbGVtZW50Lmg6CgkgICogZ3N0L2dzdGVsZW1lbnRmYWN0b3J5Lmg6CgkgICogZ3N0L2dzdHR5cGVzLmg6CgkgIE1vdmUgZWxlbWVudGZhY3RvcnkgbWV0aG9kcyB0byBzZXBhcmF0ZSAuaCBmaWxlLgoKMjAwNS0wNS0zMCAxNTo0ODo0NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIFNtYWxsIHR5cG8gZml4ZXMsIGRvYyB1cGRhdGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW92ZXJ2aWV3LnR4dDoKCSAgKiBnc3QvZ3N0c3lzdGVtY2xvY2suaDoKCSAgU21hbGwgdHlwbyBmaXhlcywgZG9jIHVwZGF0ZXMuCgoyMDA1LTA1LTMwIDE1OjQ2OjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdC5jOiBSZW1vdmUgY3B1LW9wdCBmbGFnLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0LmM6IChnc3RfaW5pdF9nZXRfcG9wdF90YWJsZSksIChpbml0X3Bvc3QpLAoJICAoaW5pdF9wb3B0X2NhbGxiYWNrKToKCSAgUmVtb3ZlIGNwdS1vcHQgZmxhZy4KCjIwMDUtMDUtMzAgMTU6NDQ6NTAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0YnVmZmVyLio6IEF2b2lkIHR5cGVjaGVja2luZyBpbiBwbGFjZXMgd2hlcmUgbm90IG5lZWRlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoZ3N0X3N1YmJ1ZmZlcl9maW5hbGl6ZSksCgkgIChnc3RfYnVmZmVyX2NyZWF0ZV9zdWIpLCAoZ3N0X2J1ZmZlcl9pc19zcGFuX2Zhc3QpOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgQXZvaWQgdHlwZWNoZWNraW5nIGluIHBsYWNlcyB3aGVyZSBub3QgbmVlZGVkLgoJICBBZGRlZCBhY2Nlc3NvciBmb3IgbWFsbG9jX2RhdGEuCgoyMDA1LTA1LTMwIDE1OjQxOjU0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBQcm9wYWdhdGUgZXJyb3JzIGZyb20gX3NldF9jYXBzKCkgaW4gY29uZmlndXJlX3NyYy9zaW5rIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIHJldHVybmluZyBUUlVFLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcmVhbF9wYWRfaW5pdCksIChnc3RfcGFkX3NldF9hY3RpdmUpLAoJICAoZ3N0X3BhZF9saW5rX3ByZXBhcmUpLCAoZ3N0X3BhZF9saW5rKSwgKGdzdF9wYWRfYWNjZXB0X2NhcHMpLAoJICAoZ3N0X3BhZF9jb25maWd1cmVfc2luayksIChnc3RfcGFkX2NvbmZpZ3VyZV9zcmMpLAoJICAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLCAoZ3N0X3BhZF9xdWVyeSksIChnc3RfcGFkX3NlbmRfZXZlbnQpLAoJICAoZ3N0X3BhZF9zdGFydF90YXNrKToKCSAgUHJvcGFnYXRlIGVycm9ycyBmcm9tIF9zZXRfY2FwcygpIGluIGNvbmZpZ3VyZV9zcmMvc2luawoJICBmdW5jdGlvbnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgVFJVRS4KCSAgRkxVU0ggZXZlbnRzIGNhbiB0cmF2ZWwgdXAgYW5kIGRvd25zdHJlYW0KCjIwMDUtMDUtMzAgMTU6MzY6MDkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBIYW5kbGUgRU9TIGluIHByZXJvbGwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfcHJlcm9sbF9xdWV1ZV9wdXNoKSwKCSAgKGdzdF9iYXNlc2lua19hY3RpdmF0ZSk6CgkgIEhhbmRsZSBFT1MgaW4gcHJlcm9sbC4KCjIwMDUtMDUtMzAgMTU6MzQ6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cXVldWUuYzogUmVtb3ZlIG9sZCBwaWVjZXMgb2YgY29kZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksIChnc3RfcXVldWVfY2hhaW4pLAoJICAoZ3N0X3F1ZXVlX2xvb3ApLCAoZ3N0X3F1ZXVlX2hhbmRsZV9zcmNfZXZlbnQpOgoJICBSZW1vdmUgb2xkIHBpZWNlcyBvZiBjb2RlCgkgIEZsdXNoaW5nIHRoZSBxdWV1ZSBpbiBhbiB1cHN0cmVhbSBldmVudCBpcyBhIHZlcnkgYmFkIGlkZWEuCgoyMDA1LTA1LTI5IDEzOjU2OjU1ICswMDAwICBCZW5qYW1pbiBPdHRlIDxvdHRlQGdub21lLm9yZz4KCgkgIGZpbGUgZ3N0c2ltcGxlc2NoZWR1bGVyLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUNPTVBBTlkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaWxlIGdzdHNpbXBsZXNjaGVkdWxlci5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEJSQU5DSC1DT01QQU5ZLgoKMjAwNS0wNS0yNyAwOToyODowNSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogQ2hhbmdlTG9nOgoJICByZW1vdmUgY29uZmxpY3QgZG9vYmVycwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcmVtb3ZlIGNvbmZsaWN0IGRvb2JlcnMKCjIwMDUtMDUtMjcgMDk6Mjc6MzUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RtaW5pb2JqZWN0LmMgKGdzdF92YWx1ZV9taW5pX29iamVjdF9jb2xsZWN0KTogVXNlIGdzdF92YWx1ZV9zZXRfbWluaV9vYmplY3Qgc28gYXMgdG8gYWRkIGEgcmVmIG9uIHRoZSBvYmplY3QgKC4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNS0yNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jIChnc3RfdmFsdWVfbWluaV9vYmplY3RfY29sbGVjdCk6IFVzZQoJICBnc3RfdmFsdWVfc2V0X21pbmlfb2JqZWN0IHNvIGFzIHRvIGFkZCBhIHJlZiBvbiB0aGUgb2JqZWN0ICh3aGljaAoJICB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgdmFsdWUgaXMgdW5zZXQpLgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jIChnc3RfZmFrZXNpbmtfY2xhc3NfaW5pdCk6IEZpeCBzaWduYWwKCSAgYXJnIHR5cGUgaW4gOjpoYW5kb2ZmLgoJICAqIGdzdC9nc3RlbGVtZW50LmMgKGdzdF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6IEFsc28gZGVhY3RpdmF0ZQoJICBwYWRzIGluIFJFQURZLT5OVUxMLCBqdXN0IGluIGNhc2UgdGhlIGVsZW1lbnQgZGlkbid0IG1ha2UgaXQgdG8KCSAgUEFVU0VELiBXaW5nbyB0ZXN0ZWQsIFdpbSBhcHByb3ZlZC4KCjIwMDUtMDUtMjYgMTA6NTA6MTIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvZ3N0cGFkLmM6IEEgZmx1c2hpbmcgcGFkIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG9jX2J1ZmZlciBmcm9tLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9saW5rX3ByZXBhcmUpLAoJICAoZ3N0X3BhZF9saW5rKSwgKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLAoJICAoZ3N0X3BhZF9xdWVyeSksIChnc3RfcGFkX3NlbmRfZXZlbnQpLCAoZ3N0X3BhZF9zdGFydF90YXNrKToKCSAgQSBmbHVzaGluZyBwYWQgY2Fubm90IGJlIHVzZWQgdG8gYWxsb2NfYnVmZmVyIGZyb20uCgoyMDA1LTA1LTI2IDEwOjQ4OjUzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1cy4qOiBJbXBsZW1lbnQgYSByZWFsIEdTb3VyY2UgYW5kIHVzZSBnX21haW5fY29udGV4dF93YWtldXAoKSB0byBzaWduYWwgbmV3IG1lc3NhZ2VzIGluc3RlYWQgb2YgdGhlIHNvY2tldHBhaXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidXMuYzogKGdzdF9idXNfaW5pdCksIChnc3RfYnVzX2Rpc3Bvc2UpLCAoZ3N0X2J1c19wb3N0KSwKCSAgKGdzdF9idXNfcG9wKSwgKGdzdF9idXNfc291cmNlX3ByZXBhcmUpLCAoZ3N0X2J1c19zb3VyY2VfY2hlY2spLAoJICAoZ3N0X2J1c19zb3VyY2VfZGlzcGF0Y2gpLCAoZ3N0X2J1c19zb3VyY2VfZmluYWxpemUpLAoJICAoZ3N0X2J1c19jcmVhdGVfd2F0Y2gpLCAoZ3N0X2J1c19hZGRfd2F0Y2hfZnVsbCk6CgkgICogZ3N0L2dzdGJ1cy5oOgoJICBJbXBsZW1lbnQgYSByZWFsIEdTb3VyY2UgYW5kIHVzZSBnX21haW5fY29udGV4dF93YWtldXAoKSB0bwoJICBzaWduYWwgbmV3IG1lc3NhZ2VzIGluc3RlYWQgb2YgdGhlIHNvY2tldHBhaXIuCgoyMDA1LTA1LTI1IDE5OjMzOjM5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogRml4IHN0YXRlIGNoYW5nZXMgZm9yIG5vbiBzaW5rcy4gV2Ugbm93IGNoYW5nZSBzaW5rcywgdGhlbiBlbGVtZW50cyB3aXRoIHVuY29ubmVjdGVkIHNyY3BhZHMsIHRoZW4gdGhlIHJlc3QuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGJpbl9lbGVtZW50X2lzX3NpbmspLCAoaGFzX2FuY2VzdG9yKSwKCSAgKGJpbl9lbGVtZW50X2lzX3NlbWlfc2luayksIChhcHBlbmRfY2hpbGQpLCAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2FjdGl2ZSksIChnc3RfcGFkX2xpbmtfcHJlcGFyZSksCgkgIChnc3RfcGFkX2xpbmspLCAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksIChnc3RfcGFkX3F1ZXJ5KSwKCSAgKGdzdF9wYWRfc2VuZF9ldmVudCksIChnc3RfcGFkX3N0YXJ0X3Rhc2spOgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2luaXQpLCAoZ3N0X3F1ZXVlX2xvY2tlZF9mbHVzaCksCgkgIChnc3RfcXVldWVfaGFuZGxlX3NpbmtfZXZlbnQpLCAoZ3N0X3F1ZXVlX2NoYWluKSwgKGdzdF9xdWV1ZV9sb29wKSwKCSAgKGdzdF9xdWV1ZV9zaW5rX2FjdGl2YXRlKSwgKGdzdF9xdWV1ZV9zcmNfYWN0aXZhdGUpLAoJICAoZ3N0X3F1ZXVlX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2dzdHF1ZXVlLmg6CgkgIEZpeCBzdGF0ZSBjaGFuZ2VzIGZvciBub24gc2lua3MuIFdlIG5vdyBjaGFuZ2Ugc2lua3MsIHRoZW4gZWxlbWVudHMKCSAgd2l0aCB1bmNvbm5lY3RlZCBzcmNwYWRzLCB0aGVuIHRoZSByZXN0LgoJICBNb3JlIGVmZmljaWVudCBxdWV1ZSB1bmxvY2tpbmcgaW4gZmx1c2ggYW5kIHN0YXRlIGNoYW5nZXMuCgkgIFNldCB0aGUgcGFkIGFjdGl2YXRlIG1vZGUgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZlIGFuIGFjdGl2YXRlCgkgIGZ1bmN0aW9uLgoKMjAwNS0wNS0yNSAxNjowOTozNCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50Lmg6CgkgIGhhcHBpZnkgYnVpbGRib3QKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGhhcHBpZnkgYnVpbGRib3QKCjIwMDUtMDUtMjUgMTU6NTc6NTcgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogRG9uJ3QgZ28gaW4gcHVsbCBtb2RlIGZvciBub24tc2Vla2FibGUgc291cmNlcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2VzcmNfYWN0aXZhdGUpOgoJICBEb24ndCBnbyBpbiBwdWxsIG1vZGUgZm9yIG5vbi1zZWVrYWJsZSBzb3VyY2VzLgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzogKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9pbml0KSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9kaXNwb3NlKSwgKGdzdF90eXBlX2ZpbmRfaGFuZGxlX3NyY19xdWVyeSksCgkgIChmcmVlX2VudHJ5KSwgKHN0b3BfdHlwZWZpbmRpbmcpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCksIChmaW5kX3BlZWspLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoYWluKSwgKGRvX3B1bGxfdHlwZWZpbmQpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoYW5nZV9zdGF0ZSk6CgkgIEFsbG93IHR5cGVmaW5kaW5nICh3L28gc2Vla2luZykgaW4gcHVzaC1tb2RlLCBzaW1wbGlmaWVkIHZlcnNpb24KCSAgb2Ygd2hhdCB3YXMgaW4gMC44LgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2J1ZmZlcl9qb2luKToKCSAgKiBnc3QvZ3N0dXRpbHMuaDoKCSAgZ3N0X2J1ZmZlcl9qb2luKCkgZnJvbSAwLjguCgoyMDA1LTA1LTI1IDEzOjU5OjE4ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBEaXNhYmxlIGF0dGVtcHQgYXQgbW9kZSBzd2l0Y2hpbmcgdW50aWwgaXQgaXMgZmlndXJlZCBvdXQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2FjdGl2ZSksIChnc3RfcGFkX2xpbmtfcHJlcGFyZSksCgkgIChnc3RfcGFkX2xpbmspLCAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksIChnc3RfcGFkX3F1ZXJ5KSwKCSAgKGdzdF9wYWRfc2VuZF9ldmVudCksIChnc3RfcGFkX3N0YXJ0X3Rhc2spOgoJICBEaXNhYmxlIGF0dGVtcHQgYXQgbW9kZSBzd2l0Y2hpbmcgdW50aWwgaXQgaXMgZmlndXJlZCBvdXQuCgoyMDA1LTA1LTI1IDExOjUwOjExICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogSW1wbGVtZW50IGdzdF9wYWRfcGF1c2Uvc3RhcnQvc3RvcF90YXNrKCksIHRha2UgU1RSRUFNIGxvY2sgaW4gdGFzayBmdW5jdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5jOiAoZ3N0X2FkYXB0ZXJfcGVlayksIChnc3RfYWRhcHRlcl9mbHVzaCk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19wcmVyb2xsX3F1ZXVlX3B1c2gpLAoJICAoZ3N0X2Jhc2VzaW5rX2ZpbmlzaF9wcmVyb2xsKSwgKGdzdF9iYXNlc2lua19jaGFpbiksCgkgIChnc3RfYmFzZXNpbmtfbG9vcCksIChnc3RfYmFzZXNpbmtfYWN0aXZhdGUpLAoJICAoZ3N0X2Jhc2VzaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2VzcmNfZG9fc2VlayksCgkgIChnc3RfYmFzZXNyY19nZXRfcmFuZ2UpLCAoZ3N0X2Jhc2VzcmNfbG9vcCksCgkgIChnc3RfYmFzZXNyY19hY3RpdmF0ZSk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHRlZS5jOiAoZ3N0X3RlZV9zaW5rX2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2Rpc3Bvc2UpLCAoZ3N0X3JlYWxfcGFkX2NsYXNzX2luaXQpLAoJICAoZ3N0X3JlYWxfcGFkX2luaXQpLCAoZ3N0X3JlYWxfcGFkX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfcmVhbF9wYWRfZ2V0X3Byb3BlcnR5KSwgKGdzdF9wYWRfc2V0X2FjdGl2ZSksCgkgIChnc3RfcGFkX2lzX2FjdGl2ZSksIChnc3RfcGFkX2dldF9xdWVyeV90eXBlcyksIChnc3RfcGFkX3VubGluayksCgkgIChnc3RfcGFkX2xpbmtfcHJlcGFyZSksIChnc3RfcGFkX2xpbmspLCAoZ3N0X3BhZF9nZXRfcmVhbF9wYXJlbnQpLAoJICAoZ3N0X3JlYWxfcGFkX2dldF9jYXBzX3VubG9ja2VkKSwgKGdzdF9wYWRfcGVlcl9nZXRfY2FwcyksCgkgIChnc3RfcGFkX2FjY2VwdF9jYXBzKSwgKGdzdF9wYWRfZ2V0X3BlZXIpLCAoZ3N0X3BhZF9yZWFsaXplKSwKCSAgKGdzdF9wYWRfZXZlbnRfZGVmYXVsdF9kaXNwYXRjaCksIChnc3RfcGFkX2V2ZW50X2RlZmF1bHQpLAoJICAoZ3N0X3BhZF9kaXNwYXRjaGVyKSwgKGdzdF9wYWRfcXVlcnkpLCAoZ3N0X3JlYWxfcGFkX2Rpc3Bvc2UpLAoJICAoZ3N0X3BhZF9zYXZlX3RoeXNlbGYpLCAoaGFuZGxlX3BhZF9ibG9jayksIChnc3RfcGFkX2NoYWluKSwKCSAgKGdzdF9wYWRfcHVzaCksIChnc3RfcGFkX2dldF9yYW5nZSksIChnc3RfcGFkX3B1bGxfcmFuZ2UpLAoJICAoZ3N0X3BhZF9zZW5kX2V2ZW50KSwgKGdzdF9wYWRfc3RhcnRfdGFzayksIChnc3RfcGFkX3BhdXNlX3Rhc2spLAoJICAoZ3N0X3BhZF9zdG9wX3Rhc2spOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9oYW5kbGVfc2lua19ldmVudCksIChnc3RfcXVldWVfY2hhaW4pLAoJICAoZ3N0X3F1ZXVlX2xvb3ApLCAoZ3N0X3F1ZXVlX3NyY19hY3RpdmF0ZSk6CgkgICogZ3N0L2dzdHRhc2suYzogKGdzdF90YXNrX2luaXQpLCAoZ3N0X3Rhc2tfc2V0X2xvY2spLAoJICAoZ3N0X3Rhc2tfZ2V0X3N0YXRlKToKCSAgKiBnc3QvZ3N0dGFzay5oOgoJICAqIGdzdC9zY2hlZHVsZXJzL3RocmVhZHNjaGVkdWxlci5jOgoJICAoZ3N0X3RocmVhZF9zY2hlZHVsZXJfdGFza19zdGFydCksIChnc3RfdGhyZWFkX3NjaGVkdWxlcl9mdW5jKToKCSAgSW1wbGVtZW50IGdzdF9wYWRfcGF1c2Uvc3RhcnQvc3RvcF90YXNrKCksIHRha2UgU1RSRUFNIGxvY2sKCSAgaW4gdGFzayBmdW5jdGlvbi4KCSAgUmVtb3ZlIEFDVElWRSBwYWQgZmxhZywgdXNlIEZMVVNISU5HIGV2ZXJ5d2hlcmUKCSAgQWRkZWQgX3BhZF9jaGFpbigpLCBfcGFkX2dldF9yYW5nZSgpIHRvIGNhbGwgY2hhaW4vZ2V0cmFuZ2UKCSAgZnVuY3Rpb25zLgoJICBBZGQgbG9ja3MgYXJvdW5kIElTX0ZMVVNISU5HIHdoZW4gcmVhZGluZy4KCSAgVGFrZSBTVFJFQU0gbG9jayBpbiBjaGFpbigpLCBnZXRfcmFuZ2UoKSBmdW5jdGlvbnMgc28gcGx1Z2lucwoJICBkb24ndCBuZWVkIHRvIHRha2UgaXQgYW55bW9yZS4KCjIwMDUtMDUtMjUgMTE6MjY6MTQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICB0b29scy9nc3QtbGF1bmNoLmM6IFVucmVmIG1lc3NhZ2UgYWZ0ZXIgdXNpbmcgaXRzIGNvbnRlbnRzIGluc3RlYWQgb2YgYmVmb3JlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChldmVudF9sb29wKToKCSAgVW5yZWYgbWVzc2FnZSBhZnRlciB1c2luZyBpdHMgY29udGVudHMgaW5zdGVhZCBvZgoJICBiZWZvcmUuCgoyMDA1LTA1LTI0IDE2OjQ3OjA2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vOiBEb2NzIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LWdob3N0cGFkcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtcHVzaC1wdWxsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1xdWVyeS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1vdmVydmlldy50eHQ6CgkgIERvY3MgdXBkYXRlcy4KCSAgQWRkZWQgZ2VuZXJhbCBvdmVydmlldyBkb2MuCgkgIEFkZGVkIGRyYWZ0IGdob3N0cGFkIHJlcGxhY2VtZW50IGlkZWEuCgoyMDA1LTA1LTIyIDA0OjI2OjQxICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGRvY3MvZ3N0L3RtcGwvb2xkLzogSSBkaWRuJ3QgaW50ZW5kIHRvIGFkZCB0aGVzZSBvciBjaGVjayB0aGVtIGluLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RCaW4uc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RCdWZmZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RDYXBzLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvR3N0Q2xvY2suc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RDb21wYXQuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3REYXRhLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvR3N0RWxlbWVudC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL0dzdEV2ZW50LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvR3N0SW5kZXguc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RTdHJ1Y3R1cmUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9Hc3RUYWcuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9jb3RocmVhZHMuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9jb3RocmVhZHNfY29tcGF0LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ2V0dGV4dC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dvYmplY3QyZ3RrLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3JhbW1hci50YWIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3QtaTE4bi1hcHAuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3QtaTE4bi1saWIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RfcHJpdmF0ZS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGFnZ3JlZ2F0b3Iuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RhcmNoLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0YXRvbWljX2ltcGwuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RidWZmZXJzdG9yZS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGRhdGFfcHJpdmF0ZS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGRpc2tzaW5rLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0ZGlza3NyYy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGVsZW1lbnRmYWN0b3J5LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0ZXh0cmF0eXBlcy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGZha2VzaW5rLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0ZmFrZXNyYy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGZkc2luay5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGZkc3JjLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0ZmlsZXNpbmsuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RmaWxlc3JjLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0aHR0cHNyYy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdGlkZW50aXR5LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0aW5kZXhmYWN0b3J5LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0bWFyc2hhbC5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdG1kNXNpbmsuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RtdWx0aWRpc2tzcmMuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RtdWx0aWZpbGVzcmMuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RwYWR0ZW1wbGF0ZS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdHBpcGVmaWx0ZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RzY2hlZHVsZXJmYWN0b3J5LnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvZ3N0c2VhcmNoZnVuY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RzaGFwZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RzcGlkZXIuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3RzcGlkZXJpZGVudGl0eS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2dzdHN0YXRpc3RpY3Muc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3R0ZWUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3R0aW1lY2FjaGUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3R0eXBlZmluZGZhY3Rvcnkuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL29sZC9nc3R4bWxyZWdpc3RyeS5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvb2xkL2d0aHJlYWQtY290aHJlYWRzLnNnbWw6CgkgICogZG9jcy9nc3QvdG1wbC9vbGQvdHlwZXMuc2dtbDoKCSAgSSBkaWRuJ3QgaW50ZW5kIHRvIGFkZCB0aGVzZSBvciBjaGVjayB0aGVtIGluLgoKMjAwNS0wNS0yMCAxMjo0NzowNSArMDAwMCAgQ2hyaXN0aWFuIFNjaGFsbGVyIDx1cmFldXNAZ25vbWUub3JnPgoKCSogZ3N0cmVhbWVyLnNwZWMuaW46CgkgIHVwZGF0ZSBzcGVjIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHVwZGF0ZSBzcGVjIGZpbGUKCjIwMDUtMDUtMTkgMTk6NTQ6MDEgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgY29uZmlndXJlLmFjOiBVc2UgLW5vLWNvbW1vbiBldmVyeXdoZXJlLiAgSW4gYSBzYW5lIHdvcmxkLCBpdCB3b3VsZCBiZSB0aGUgZGVmYXVsdCBpbiBsaWJ0b29sLCBiZWNhdXNlIHdpdGhvdXQgaXQsIHlvLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzogVXNlIC1uby1jb21tb24gZXZlcnl3aGVyZS4gIEluIGEgc2FuZSB3b3JsZCwgaXQKCSAgd291bGQgYmUgdGhlIGRlZmF1bHQgaW4gbGlidG9vbCwgYmVjYXVzZSB3aXRob3V0IGl0LCB5b3UgY2FuJ3QKCSAgYnVpbGQgRExMcyBvbiBXaW5kb3dzLgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6IFJlbW92ZSBHc3RDcHUsIEdzdERhdGEsIEdzdFRocmVhZAoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1zZWN0aW9ucy50eHQ6CgkgICogZG9jcy9nc3QvdG1wbC9nc3RjcHUuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGRhdGEuc2dtbDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdHRocmVhZC5zZ21sOgoKMjAwNS0wNS0xOSAxOTo0MToxMiArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZ3N0bWluaW9iamVjdC4qOiBBZGQgR1ZhbHVlIHNldC9nZXQgZnVuY3Rpb25zLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5jOiAoZ3N0X3ZhbHVlX3NldF9taW5pX29iamVjdCksCgkgIChnc3RfdmFsdWVfdGFrZV9taW5pX29iamVjdCksIChnc3RfdmFsdWVfZ2V0X21pbmlfb2JqZWN0KToKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oOiBBZGQgR1ZhbHVlIHNldC9nZXQgZnVuY3Rpb25zLgoKMjAwNS0wNS0xOSAxNjoyNjo1MCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IE1ha2Ugc3ViYnVmZXIgdW5yZWYgdGhlIHBhcmVudCBpbiBmaW5hbGl6ZS4gc29tZSBtb3JlIGRlYnVnZ2luZyBpbmZvLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX2luaXQpLCAoZ3N0X3N1YmJ1ZmZlcl9nZXRfdHlwZSksCgkgIChnc3Rfc3ViYnVmZmVyX2NsYXNzX2luaXQpLCAoZ3N0X3N1YmJ1ZmZlcl9maW5hbGl6ZSksCgkgIChnc3Rfc3ViYnVmZmVyX2luaXQpLCAoZ3N0X2J1ZmZlcl9pc19zcGFuX2Zhc3QpOgoJICAqIGdzdC9nc3RidWZmZXIuaDoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3Bvc3QpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9nZXRfcmFuZG9tX3BhZCk6CgkgICogZ3N0L2dzdG1lc3NhZ2UuYzogKGdzdF9tZXNzYWdlX2luaXQpLCAoZ3N0X21lc3NhZ2VfZmluYWxpemUpOgoJICBNYWtlIHN1YmJ1ZmVyIHVucmVmIHRoZSBwYXJlbnQgaW4gZmluYWxpemUuCgkgIHNvbWUgbW9yZSBkZWJ1Z2dpbmcgaW5mby4KCjIwMDUtMDUtMTkgMTY6MjM6MDQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBEb24ndCBmcmVlIHByZXJvbGwgcXVldWUgdG9vIGVhcmx5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2VzaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Jhc2VzaW5rX2luaXQpLCAoZ3N0X2Jhc2VzaW5rX2ZpbmFsaXplKSwKCSAgKGdzdF9iYXNlc2lua19hY3RpdmF0ZSksIChnc3RfYmFzZXNpbmtfY2hhbmdlX3N0YXRlKToKCSAgRG9uJ3QgZnJlZSBwcmVyb2xsIHF1ZXVlIHRvbyBlYXJseS4KCjIwMDUtMDUtMTkgMTQ6NTI6MTYgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC86IEhpLCBJJ20gb3V0ZGF0ZWQuIFBsZWFzZSBzaG9vdCBtZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L01ha2VmaWxlLmFtOgoJICAqIGdzdC9ST0FETUFQOgoJICBIaSwgSSdtIG91dGRhdGVkLiBQbGVhc2Ugc2hvb3QgbWUuCgoyMDA1LTA1LTE5IDEyOjA3OjM1ICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYzogRG8gbm90IGFjY2VzcyB2YXJpYWJsZXMgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZGVsZXRlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBpcGVsaW5lLmM6IChnc3RfcGlwZWxpbmVfc2VuZF9ldmVudCk6CgkgIERvIG5vdCBhY2Nlc3MgdmFyaWFibGVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGRlbGV0ZWQuCgoyMDA1LTA1LTE5IDA4OjQxOjQyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWluc3BlY3QuYzogQSBwbHVnaW4gZmVhdHVyZSBkb2VzIHVuZm9ydHVuYXRseSBub3QgdXNlIHRoZSBvYmplY3QgbmFtZSB5ZXQuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWluc3BlY3QuYzogKHByaW50X3BsdWdpbl9mZWF0dXJlcyk6CgkgIEEgcGx1Z2luIGZlYXR1cmUgZG9lcyB1bmZvcnR1bmF0bHkgbm90IHVzZSB0aGUKCSAgb2JqZWN0IG5hbWUgeWV0Li4uCgoyMDA1LTA1LTE4IDE3OjM1OjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBQb3J0IF9zcGFuKCkgZnVuY3Rpb25zIHRvIG5ldyBzdWJidWZmZXJzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6IChnc3RfYnVmZmVyX2lzX3NwYW5fZmFzdCksIChnc3RfYnVmZmVyX3NwYW4pOgoJICBQb3J0IF9zcGFuKCkgZnVuY3Rpb25zIHRvIG5ldyBzdWJidWZmZXJzLgoKMjAwNS0wNS0xOCAxMzo0OTowOCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdGJpbi5jOiBGaXggY2xvY2sgc2V0dGVyeSBpbiBiaW5zIHdoZW4gYWRkaW5nIGtpZHMgYWZ0ZXIgdGhlIGNsb2NrIGhhcyBiZWVuIHNlbGVjdGVkLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2FkZF9mdW5jKToKCSAgRml4IGNsb2NrIHNldHRlcnkgaW4gYmlucyB3aGVuIGFkZGluZyBraWRzIGFmdGVyIHRoZSBjbG9jayBoYXMKCSAgYmVlbiBzZWxlY3RlZC4KCjIwMDUtMDUtMTggMTM6MjM6MjQgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiBXb3JrYXJvdW5kIHVudGlsIHNpZ25hbHMgc3VwcG9ydCBHc3RNaW5pT2JqZWN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzogKGdzdF9pZGVudGl0eV9jbGFzc19pbml0KToKCSAgV29ya2Fyb3VuZCB1bnRpbCBzaWduYWxzIHN1cHBvcnQgR3N0TWluaU9iamVjdC4KCjIwMDUtMDUtMTggMTE6MzQ6NDUgKzAwMDAgIEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgoKCSAgZ3N0L2dzdGJ1ZmZlci5jOiBPb3BzLCBmaXggYSB0eXBvIEdTVF9UWVBFX0JVRkZFUiAtPiBHU1RfVFlQRV9TVUJCVUZGRVIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RidWZmZXIuYzoKCSAgT29wcywgZml4IGEgdHlwbyBHU1RfVFlQRV9CVUZGRVIgLT4gR1NUX1RZUEVfU1VCQlVGRkVSLgoKMjAwNS0wNS0xOCAwOTo1NTo0MyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9iYXNlLzogUG9ydGVkIGFuZCBhZGRlZCBhZGFwdGVyIHRvIHRoZSBiYXNlIGNsYXNzZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL01ha2VmaWxlLmFtOgoJICAqIGdzdC9iYXNlL2dzdGFkYXB0ZXIuYzogKGdzdF9hZGFwdGVyX2Jhc2VfaW5pdCksCgkgIChnc3RfYWRhcHRlcl9jbGFzc19pbml0KSwgKGdzdF9hZGFwdGVyX2luaXQpLAoJICAoZ3N0X2FkYXB0ZXJfZGlzcG9zZSksIChnc3RfYWRhcHRlcl9maW5hbGl6ZSksIChnc3RfYWRhcHRlcl9uZXcpLAoJICAoZ3N0X2FkYXB0ZXJfY2xlYXIpLCAoZ3N0X2FkYXB0ZXJfcHVzaCksIChnc3RfYWRhcHRlcl9wZWVrKSwKCSAgKGdzdF9hZGFwdGVyX2ZsdXNoKSwgKGdzdF9hZGFwdGVyX2F2YWlsYWJsZSksCgkgIChnc3RfYWRhcHRlcl9hdmFpbGFibGVfZmFzdCk6CgkgICogZ3N0L2Jhc2UvZ3N0YWRhcHRlci5oOgoJICBQb3J0ZWQgYW5kIGFkZGVkIGFkYXB0ZXIgdG8gdGhlIGJhc2UgY2xhc3Nlcy4KCjIwMDUtMDUtMTcgMTc6NTA6NDEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSAgZ3N0LzogTWFrZSBzdXJlIHRoZSBjbGFzcyBpcyByZWZmZWQvdW5yZWZmZWQgb25jZSBiZWZvcmUgdGhyZWFkcyBjYW4gYmUgdXNlZC4gIEZpeGVzICMzMDQ1NTEuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3QuYzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOgoJICBNYWtlIHN1cmUgdGhlIGNsYXNzIGlzIHJlZmZlZC91bnJlZmZlZCBvbmNlIGJlZm9yZSB0aHJlYWRzIGNhbiBiZQoJICB1c2VkLiAgRml4ZXMgIzMwNDU1MS4KCjIwMDUtMDUtMTcgMTc6Mzc6NDMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBEb24ndCBxdWV1ZSBidWZmZXJzIGluIGJhc2VzaW5rIHdoZW4gd2UgYXJlIGZsdXNoaW5nLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiAoZ3N0X2Jhc2VzaW5rX2ZpbmlzaF9wcmVyb2xsKSwKCSAgKGdzdF9iYXNlc2lua19jaGFpbl91bmxvY2tlZCksIChnc3RfYmFzZXNpbmtfYWN0aXZhdGUpOgoJICAqIGdzdC9nc3RtaW5pb2JqZWN0LmM6IChnc3RfbWluaV9vYmplY3RfZ2V0X3R5cGUpLAoJICAoZ3N0X21pbmlfb2JqZWN0X2ZyZWUpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfYWNjZXB0X2NhcHMpLCAoZ3N0X3BhZF9xdWVyeSksCgkgIChnc3RfcGFkX3B1c2gpLCAoZ3N0X3BhZF9wdXNoX2V2ZW50KToKCSAgKiBnc3QvZ3N0cXVldWUuYzogKGdzdF9xdWV1ZV9jaGFuZ2Vfc3RhdGUpOgoJICBEb24ndCBxdWV1ZSBidWZmZXJzIGluIGJhc2VzaW5rIHdoZW4gd2UgYXJlIGZsdXNoaW5nLgoJICBVbnJlZiBidWZmZXIgd2hlbiBmbHVzaGluZyBpbiBiYXNlc2luay4KCSAgRmx1c2ggcXVldWUgd2hlbiBnb2luZyB0byBSRUFEWQoJICBVbnJlZiBidWZmZXIgd2hlbiBfcHVzaCgpIHJldHVybnMgYW4gZXJyb3IuCgkgIERvbid0IGZyZWUgTWluaU9iamVjdCBpbnN0YW5jZSB3aGVuIHJlZmNvdW50IGlzIGluY3JlbWVudGVkCgkgIGluIF9maW5hbGl6ZSgpIHNvIHRoYXQgd2UgY2FuIHJlY292ZXIgb2JqZWN0cy4KCjIwMDUtMDUtMTcgMTc6MjI6MzEgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiBjb21tb246CgkqIGRvY3MvbWFudWFsL2FkdmFuY2VkLXNjaGVkdWxlcnMueG1sOgoJKiBkb2NzL21hbnVhbC9hcHBlbmRpeC1jaGVja2xpc3QueG1sOgoJKiBkb2NzL3B3Zy9hZHZhbmNlZC1jbG9jay54bWw6CgkqIGRvY3MvcHdnL2FkdmFuY2VkLWludGVyZmFjZXMueG1sOgoJKiBkb2NzL3B3Zy9hZHZhbmNlZC1yZXF1ZXN0LnhtbDoKCSogZG9jcy9wd2cvYWR2YW5jZWQtdHlwZXMueG1sOgoJKiBkb2NzL3B3Zy9pbnRyby1wcmVmYWNlLnhtbDoKCSogZXhhbXBsZXMvcGx1Z2lucy9leGFtcGxlLmM6CgkqIGV4YW1wbGVzL3BsdWdpbnMvZXhhbXBsZS5oOgoJKiB0ZXN0cy9vbGQvZXhhbXBsZXMvcGx1Z2lucy9leGFtcGxlLmM6CgkqIHRlc3RzL29sZC9leGFtcGxlcy9wbHVnaW5zL2V4YW1wbGUuaDoKCSAgc21hbGwgZG9jIGZpeGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBzbWFsbCBkb2MgZml4ZXMKCjIwMDUtMDUtMTcgMTQ6MTE6MzIgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBDbGVhciBxdWV1ZSB3aGVuIGdvaW5nIHRvIFJFQURZLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FjY2VwdF9jYXBzKSwgKGdzdF9wYWRfc2V0X2NhcHMpLAoJICAoZ3N0X3BhZF9hbGxvY19idWZmZXIpLCAoZ3N0X3BhZF9xdWVyeSksIChnc3RfcGFkX3B1c2gpOgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2NoYW5nZV9zdGF0ZSk6CgkgIENsZWFyIHF1ZXVlIHdoZW4gZ29pbmcgdG8gUkVBRFkuCgkgIFJlbW92ZSBJTl9TRVRDQVBTIGZsYWcgdG9vLgoKMjAwNS0wNS0xNyAxNDowMTo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogUmVtb3ZlIGltcGxpY2l0IGNhc3QgZnJvbSBnYm9vbGVhbiB0byBHc3RFbGVtZW50U3RhdGVSZXR1cm47IG1ha2Ugc3VyZSB3ZSBzdGlsbCByZXR1cm4gZmFpbHVyZS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZXNyY19jaGFuZ2Vfc3RhdGUpOgoJICBSZW1vdmUgaW1wbGljaXQgY2FzdCBmcm9tIGdib29sZWFuIHRvIEdzdEVsZW1lbnRTdGF0ZVJldHVybjsKCSAgbWFrZSBzdXJlIHdlIHN0aWxsIHJldHVybiBmYWlsdXJlIGluIHBhdXNlZCA9PiByZWFkeSBjYXNlIGlmCgkgIHRoZSBwYXJlbnQgY2xhc3MgZmFpbHMgdG8gY2hhbmdlIHN0YXRlIGFuZCBvdXIgb3duIHN0b3AKCSAgdmZ1bmMgc3VjY2VlZHMuCgoyMDA1LTA1LTE3IDEwOjQxOjUxICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgdG9vbHMvZ3N0LWxhdW5jaC5jOiBNZXNzYWdlIHdhcyB1bnJlZmZlZCB0b28gc29vbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoZXZlbnRfbG9vcCk6CgkgIE1lc3NhZ2Ugd2FzIHVucmVmZmVkIHRvbyBzb29uLgoKMjAwNS0wNS0xNiAyMToxNzoxNCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGJpbi5jIChzaW5rX2l0ZXJhdG9yX2ZpbHRlcik6IEVyci4uLiB1bS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNS0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0YmluLmMgKHNpbmtfaXRlcmF0b3JfZmlsdGVyKTogRXJyLi4uIHVtLi4uCgkgICogY2hlY2svZ3N0L2dzdGJpbi5jICh0ZXN0X2dob3N0X3BhZHMpOiBOZXcgdGVzdCBmb3IgdGhlCgkgIGdob3N0aW5nLWlmLWVsZW1lbnRzLW5vdC1pbi1zYW1lLWJpbiBiZWhhdmlvci4KCjIwMDUtMDUtMTYgMjE6MDU6MjEgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdG1pbmlvYmplY3QuYzogVXNlIGdfYXRvbWljX2ludF9nZXQoKSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyByZWZjb3VudCBkaXJlY3RseS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzogVXNlIGdfYXRvbWljX2ludF9nZXQoKSBpbnN0ZWFkIG9mCgkgIGFjY2Vzc2luZyByZWZjb3VudCBkaXJlY3RseS4KCjIwMDUtMDUtMTYgMjA6MjE6NTUgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgY2hlY2svTWFrZWZpbGUuYW06IHJlbW92ZSBHc3REYXRhIGNoZWNrcwoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbTogcmVtb3ZlIEdzdERhdGEgY2hlY2tzCgkgICogY2hlY2svZ3N0LWxpYnMvZ2RwLmM6IChTVEFSVF9URVNUKTogZml4IGZvciBBUEkgY2hhbmdlcwoJICAqIGdzdC9NYWtlZmlsZS5hbTogYWRkIG1pbmlvYmplY3QsIHJlbW92ZSBkYXRhCgkgICogZ3N0L2dzdC5oOiBhZGQgbWluaW9iamVjdCwgcmVtb3ZlIGRhdGEKCSAgKiBnc3QvZ3N0ZGF0YS5jOiByZW1vdmUKCSAgKiBnc3QvZ3N0ZGF0YS5oOiByZW1vdmUKCSAgKiBnc3QvZ3N0ZGF0YV9wcml2YXRlLmg6IHJlbW92ZQoJICAqIGdzdC9nc3R0eXBlcy5oOiByZW1vdmUgR3N0RXZlbnQgYW5kIEdzdE1lc3NhZ2UKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlKTogZml4IGZvciBBUEkgY2hhbmdlcwoJICAqIGdzdC9nc3RtYXJzaGFsLmxpc3Q6IGNoYW5nZSBCT1hFRCAtPiBPQkpFQ1QKCSAgSW1wbGVtZW50IEdzdE1pbmlPYmplY3QuCgkgICogZ3N0L2dzdG1pbmlvYmplY3QuYzoKCSAgKiBnc3QvZ3N0bWluaW9iamVjdC5oOgoJICBNb2RpZnkgdG8gYmUgc3ViY2xhc3NlcyBvZiBHc3RNaW5pT2JqZWN0LgoJICAqIGdzdC9nc3RidWZmZXIuYzogKF9nc3RfYnVmZmVyX2luaXRpYWxpemUpLCAoZ3N0X2J1ZmZlcl9nZXRfdHlwZSksCgkgIChnc3RfYnVmZmVyX2NsYXNzX2luaXQpLCAoZ3N0X2J1ZmZlcl9maW5hbGl6ZSksIChfZ3N0X2J1ZmZlcl9jb3B5KSwKCSAgKGdzdF9idWZmZXJfaW5pdCksIChnc3RfYnVmZmVyX25ldyksIChnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MpLAoJICAoZ3N0X3N1YmJ1ZmZlcl9nZXRfdHlwZSksIChnc3Rfc3ViYnVmZmVyX2luaXQpLAoJICAoZ3N0X2J1ZmZlcl9jcmVhdGVfc3ViKSwgKGdzdF9idWZmZXJfaXNfc3Bhbl9mYXN0KSwKCSAgKGdzdF9idWZmZXJfc3Bhbik6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICAqIGdzdC9nc3RldmVudC5jOiAoX2dzdF9ldmVudF9pbml0aWFsaXplKSwgKGdzdF9ldmVudF9nZXRfdHlwZSksCgkgIChnc3RfZXZlbnRfY2xhc3NfaW5pdCksIChnc3RfZXZlbnRfaW5pdCksIChnc3RfZXZlbnRfZmluYWxpemUpLAoJICAoX2dzdF9ldmVudF9jb3B5KSwgKGdzdF9ldmVudF9uZXcpOgoJICAqIGdzdC9nc3RldmVudC5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6IChfZ3N0X21lc3NhZ2VfaW5pdGlhbGl6ZSksCgkgIChnc3RfbWVzc2FnZV9nZXRfdHlwZSksIChnc3RfbWVzc2FnZV9jbGFzc19pbml0KSwKCSAgKGdzdF9tZXNzYWdlX2luaXQpLCAoZ3N0X21lc3NhZ2VfZmluYWxpemUpLCAoX2dzdF9tZXNzYWdlX2NvcHkpLAoJICAoZ3N0X21lc3NhZ2VfbmV3KSwgKGdzdF9tZXNzYWdlX25ld19lcnJvciksCgkgIChnc3RfbWVzc2FnZV9uZXdfd2FybmluZyksIChnc3RfbWVzc2FnZV9uZXdfdGFnKSwKCSAgKGdzdF9tZXNzYWdlX25ld19zdGF0ZV9jaGFuZ2VkKSwgKGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbik6CgkgICogZ3N0L2dzdG1lc3NhZ2UuaDoKCSAgKiBnc3QvZ3N0cHJvYmUuYzogKGdzdF9wcm9iZV9wZXJmb3JtKSwKCSAgKGdzdF9wcm9iZV9kaXNwYXRjaGVyX2Rpc3BhdGNoKToKCSAgKiBnc3QvZ3N0cHJvYmUuaDoKCSAgKiBnc3QvZ3N0cXVlcnkuYzogKF9nc3RfcXVlcnlfaW5pdGlhbGl6ZSksIChnc3RfcXVlcnlfZ2V0X3R5cGUpLAoJICAoZ3N0X3F1ZXJ5X2NsYXNzX2luaXQpLCAoZ3N0X3F1ZXJ5X2ZpbmFsaXplKSwgKGdzdF9xdWVyeV9pbml0KSwKCSAgKF9nc3RfcXVlcnlfY29weSksIChnc3RfcXVlcnlfbmV3KToKCSAgVXBkYXRlIGVsZW1lbnRzIGZvciBHc3REYXRhIC0+IEdzdE1pbmlPYmplY3QgY2hhbmdlcwoJICAqIGdzdC9nc3RxdWVyeS5oOgoJICAqIGdzdC9nc3RxdWV1ZS5jOiAoZ3N0X3F1ZXVlX2ZpbmFsaXplKSwgKGdzdF9xdWV1ZV9sb2NrZWRfZmx1c2gpLAoJICAoZ3N0X3F1ZXVlX2NoYWluKSwgKGdzdF9xdWV1ZV9sb29wKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0YnVmZmVyc3RvcmUuYzoKCSAgKGdzdF9idWZmZXJfc3RvcmVfYWRkX2J1ZmZlcl9mdW5jKSwKCSAgKGdzdF9idWZmZXJfc3RvcmVfY2xlYXJlZF9mdW5jKSwgKGdzdF9idWZmZXJfc3RvcmVfZ2V0X2J1ZmZlcik6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6IChnc3RfZmFrZXNpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfZmFrZXNpbmtfcmVuZGVyKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiAoZ3N0X2Zha2VzcmNfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9tbWFwX2J1ZmZlcl9nZXRfdHlwZSksCgkgIChnc3RfbW1hcF9idWZmZXJfY2xhc3NfaW5pdCksIChnc3RfbW1hcF9idWZmZXJfaW5pdCksCgkgIChnc3RfbW1hcF9idWZmZXJfZmluYWxpemUpLCAoZ3N0X2ZpbGVzcmNfbWFwX3JlZ2lvbiksCgkgIChnc3RfZmlsZXNyY19jcmVhdGVfcmVhZCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X3NyY19ldmVudCksIChmcmVlX2VudHJ5X2J1ZmZlcnMpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2hhbmRsZV9ldmVudCk6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJICAoZ3N0X2RwX2hlYWRlcl9mcm9tX2J1ZmZlcik6CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5oOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kcC1wcml2YXRlLmg6CgoyMDA1LTA1LTE1IDIzOjE4OjQwICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOiBEb24ndCBpbmNsdWRlIGhlYWRlcnMgdGhhdCB3ZXJlIGp1c3QgcmVtb3ZlZC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6IERvbid0IGluY2x1ZGUgaGVhZGVycyB0aGF0IHdlcmUKCSAganVzdCByZW1vdmVkLgoKMjAwNS0wNS0xNSAyMzoxNjoyOSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06IFJlbW92ZSBzb21lIGVsZW1lbnRzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBpbiB0aGUgY29yZSAob3IgZXZlbiBleGlzdCBhdCBhbGwpLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06IFJlbW92ZSBzb21lIGVsZW1lbnRzIHRoYXQgZG9uJ3QKCSAgbmVlZCB0byBiZSBpbiB0aGUgY29yZSAob3IgZXZlbiBleGlzdCBhdCBhbGwpLgoJICAqIGdzdC9lbGVtZW50cy9nc3RhZ2dyZWdhdG9yLmM6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGFnZ3JlZ2F0b3IuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0bWQ1c2luay5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RtZDVzaW5rLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdG11bHRpZmlsZXNyYy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RtdWx0aWZpbGVzcmMuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0cGlwZWZpbHRlci5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RwaXBlZmlsdGVyLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHNoYXBlci5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RzaGFwZXIuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0c3RhdGlzdGljcy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RzdGF0aXN0aWNzLmg6CgkgICogcG8vUE9URklMRVMuaW46IFJlbW92ZSBhYm92ZSBmaWxlcy4KCjIwMDUtMDUtMTQgMTg6MDE6MTIgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RiaW4uYyAoZ3N0X2Jpbl9pdGVyYXRlX3NpbmtzKTogVXNlIHNpbmtfaXRlcmF0b3JfZmlsdGVyIHNvIGFzIHRvIGdldCB0aGUgcmVmcyByaWdodC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDUtMTQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdGJpbi5jIChnc3RfYmluX2l0ZXJhdGVfc2lua3MpOiBVc2Ugc2lua19pdGVyYXRvcl9maWx0ZXIKCSAgc28gYXMgdG8gZ2V0IHRoZSByZWZzIHJpZ2h0LgoJICAoc2lua19pdGVyYXRvcl9maWx0ZXIpOiBOZXcgZnVuY3Rpb24sIHdyYXBzIGJpbl9lbGVtZW50X2lzX3NpbmssCgkgIHVucmVmZmluZyBvYmplY3RzIHRoYXQgZG9uJ3QgcGFzcyB0aGUgZmlsdGVyLgoKMjAwNS0wNS0xNCAxNzoxMjoxMSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHBpcGVsaW5lLmMgKGdzdF9waXBlbGluZV9pbml0KTogRHJvcCByZWYgb24gYnVzIGFmdGVyIGdzdF9lbGVtZW50X3NldF9idXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA1LTE0ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RwaXBlbGluZS5jIChnc3RfcGlwZWxpbmVfaW5pdCk6IERyb3AgcmVmIG9uIGJ1cyBhZnRlcgoJICBnc3RfZWxlbWVudF9zZXRfYnVzLgoJICAoZ3N0X3BpcGVsaW5lX2Rpc3Bvc2UpOiBTZXQgdGhlIGJ1cyBvbiB0aGUgcGlwZWxpbmUgdG8gTlVMTC4gSW4KCSAgbm9ybWFsIGNhc2VzLCB0aGlzIHdpbGwgZGVzdHJveSB0aGUgYnVzLgoJICAqIGdzdC9nc3R1dGlscy5jIChwcmVwYXJlX2xpbmtfbWF5YmVfZ2hvc3RpbmcpOiBEcm9wIHJlZiBvbiByb290CgkgIG9iamVjdC4KCjIwMDUtMDUtMTQgMTU6NTQ6NDkgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9nc3RiaW4uYyAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOiBGaXggc3RhdGUgY2hhbmdlcyBpZiBhIGJpbiBoYXMgbm8gc2lua3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA1LTE0ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGdzdC9nc3RiaW4uYyAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOiBGaXggc3RhdGUgY2hhbmdlcyBpZiBhIGJpbgoJICBoYXMgbm8gc2lua3MuCgoyMDA1LTA1LTE0IDE1OjMyOjM2ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZ3N0dXRpbHMuYyAoZ3N0X2VsZW1lbnRfbGlua19wYWRzKTogSW5zdGVhZCBvZiBjYWxsaW5nIGdzdF9wYWRfbGluaywgY2FsbCBwYWRfbGlua19tYXliZV9naG9zdGluZywKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDUtMTMgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHV0aWxzLmMgKGdzdF9lbGVtZW50X2xpbmtfcGFkcyk6IEluc3RlYWQgb2YgY2FsbGluZwoJICBnc3RfcGFkX2xpbmssIGNhbGwgcGFkX2xpbmtfbWF5YmVfZ2hvc3RpbmcsCgkgIChwYWRfbGlua19tYXliZV9naG9zdGluZyk6IExpbmtzIHBhZHMsIG1ha2luZyBzdXJlIHRoYXQgdGhlCgkgIGVsZW1lbnRzIGJlaW5nIGxpbmtlZCBhcmUgaW4gdGhlIHNhbWUgYmluLgoJICAoZmluZF9jb21tb25fcm9vdCwgb2JqZWN0X2hhc19hbmNlc3RvciwgZ2hvc3RfdXAsIHJlbW92ZV9wYWQpOgoJICBIZWxwZXJzIGZvciBwYWRfbGlua19tYXliZV9naG9zdGluZy4KCjIwMDUtMDUtMTMgMTI6NTM6NDcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgUmVxdWlyZSBHTGliID49IDIuNC4wIChmb3IgdGhlIGdfYXRvbWljXyogZnVuY3MpCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZXF1aXJlIEdMaWIgPj0gMi40LjAgKGZvciB0aGUgZ19hdG9taWNfKiBmdW5jcykKCjIwMDUtMDUtMTMgMTA6MTg6NDEgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBhZGQgbWlzc2luZyAuaCBmaWxlIHRvIHNwZWMgZmlsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIG1pc3NpbmcgLmggZmlsZSB0byBzcGVjIGZpbGUKCjIwMDUtMDUtMTMgMDk6Mjc6MjQgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5uZXQ+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZGVzaWduL3BhcnQtZWxlbWVudC1zb3VyY2UudHh0OgoJICBNZW50aW9uIEdzdFB1c2hTcmMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIE1lbnRpb24gR3N0UHVzaFNyYwoKMjAwNS0wNS0xMiAxOTo0NTo0NCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IElkZW50aWZ5IHNpbmtzIGJ5IHRoZWlyIGZsYWcgdG8gYXZvaWQgb3Zlcmx5IGNvbXBsaWNhdGVkIGNoZWNrcyAoZm93IG5vdykuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfaW5pdCksCgkgIChnc3RfYmFzZXNpbmtfYWN0aXZhdGUpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX3VubG9jayksCgkgIChnc3RfYmFzZXNyY19pc19zZWVrYWJsZSk6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX3JlbW92ZV9mdW5jKSwKCSAgKGJpbl9lbGVtZW50X2lzX3NpbmspLCAoZ3N0X2Jpbl9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9hZGRfcGFkKSwgKGdzdF9lbGVtZW50X3F1ZXJ5KToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICBJZGVudGlmeSBzaW5rcyBieSB0aGVpciBmbGFnIHRvIGF2b2lkIG92ZXJseSBjb21wbGljYXRlZAoJICBjaGVja3MgKGZvdyBub3cpLgoJICBEbyBzdGF0ZSBjaGFuZ2VzIGV2ZW4gZm9yIGVsZW1lbnRzIG5vdCByZWFjaGFibGUgZnJvbSB0aGUKCSAgc2lua3MuCgkgIEJhc2VTaW5rIGlzIGEgc2luayBub3cgOikKCSAgU29tZSBtb3JlIGRlYnVnZ2luZyBpbmZvIGluIHRoZSBiYXNlc3JjLgoKMjAwNS0wNS0xMiAxNTowOToxNyArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0L2dzdGJpbi5jOiBJbXBsZW1lbnQgX3F1ZXJ5IG9uIGEgYmluLCBzaW1pbGFyIHRvIF9zZW5kX2V2ZW50LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpLCAoZ3N0X2Jpbl9xdWVyeSk6CgkgIEltcGxlbWVudCBfcXVlcnkgb24gYSBiaW4sIHNpbWlsYXIgdG8gX3NlbmRfZXZlbnQuCgoyMDA1LTA1LTEyIDEzOjU5OjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIubmV0PgoKCSAgZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiBEaXNjb250IGV2ZW50IG9mZnNldCBmb3JtYXQgc2hvdWxkIGJlIEdTVF9GT1JNQVRfQllURVMsIG5vdCBHU1RfRk9STUFUX1RJTUUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX2RvX3NlZWspOgoJICBEaXNjb250IGV2ZW50IG9mZnNldCBmb3JtYXQgc2hvdWxkIGJlIEdTVF9GT1JNQVRfQllURVMsCgkgIG5vdCBHU1RfRk9STUFUX1RJTUUuCgoyMDA1LTA1LTEyIDEzOjE4OjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdGJpbi5jOiBTYW1lIGZpeCBhcyBSb25hbGQncyBidXQgd2l0aG91dCB0aGUgc2lnbmFsLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5fZ2V0X3N0YXRlKToKCSAgU2FtZSBmaXggYXMgUm9uYWxkJ3MgYnV0IHdpdGhvdXQgdGhlIHNpZ25hbC4KCjIwMDUtMDUtMTIgMTI6Mjc6MDcgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9nc3R1dGlscy5jOiBObywgYW4gZWxlbWVudCBpcyBub3QgYSBwYWQuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfcXVlcnlfcG9zaXRpb24pOgoJICBObywgYW4gZWxlbWVudCBpcyBub3QgYSBwYWQuCgoyMDA1LTA1LTEyIDEyOjE3OjIzICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvZ3N0YmluLmM6IElmIGEgY2hpbGQgaXMgcmVtb3ZlZCBmcm9tIGEgYmluIHdoaWxlIHdlIHJlbW92ZSB0aGUgY2hpbGQgZnJvbSB0aGUgYmluIGFuZCB3aGlsZSB3ZSdyZSByZXRyaWV2aW5nIGl0cyAuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChjYl9wYXJlbnRfdW5zZXQpLAoJICAoZ3N0X2Jpbl9nZXRfc3RhdGUpOgoJICBJZiBhIGNoaWxkIGlzIHJlbW92ZWQgZnJvbSBhIGJpbiB3aGlsZSB3ZSByZW1vdmUgdGhlIGNoaWxkIGZyb20KCSAgdGhlIGJpbiBhbmQgd2hpbGUgd2UncmUgcmV0cmlldmluZyBpdHMgc3RhdGUsIHNpZ25hbCB0aGlzIHRvIHRoZQoJICBnZXRfc3RhdGUgZnVuY3Rpb24gc28gd2UgYWJvcnQgdGhlIHdhaXQgKGluc3RlYWQgb2Ygd2FpdGluZyBmb3IKCSAgYSB0aW1lb3V0KSBhbmQgY2FuIGltbWVkaWF0ZWx5IHJlLWl0ZXJhdGUgb3ZlciBhbGwgb3RoZXIgZWxlbWVudHMuCgoyMDA1LTA1LTEyIDEwOjQzOjE0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2Jhc2UvOiBBZGRlZCBpc19zZWVrYWJsZSB0byBCYXNlU3JjCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL01ha2VmaWxlLmFtOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX2lzX3NlZWthYmxlKSwKCSAgKGdzdF9iYXNlc3JjX3N0YXJ0KToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogZ3N0L2Jhc2UvZ3N0cHVzaHNyYy5jOiAoZ3N0X3B1c2hzcmNfZ2V0X3R5cGUpLAoJICAoZ3N0X3B1c2hzcmNfYmFzZV9pbml0KSwgKGdzdF9wdXNoc3JjX2NsYXNzX2luaXQpLAoJICAoZ3N0X3B1c2hzcmNfaW5pdCksIChnc3RfcHVzaHNyY19jcmVhdGUpOgoJICAqIGdzdC9iYXNlL2dzdHB1c2hzcmMuaDoKCSAgQWRkZWQgaXNfc2Vla2FibGUgdG8gQmFzZVNyYwoJICBBZGRlZCBzaW1wbGUgUHVzaFNyYy4KCjIwMDUtMDUtMTEgMDk6MjE6MjQgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBGaXggcmVmY291bnRpbmcgaW4gdXRpbHMgZnVuY3Rpb24uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9hZGRfcGFkKSwgKGdzdF9lbGVtZW50X3F1ZXJ5KToKCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2dldF9jb21wYXRpYmxlX3BhZF90ZW1wbGF0ZSksCgkgIChnc3RfZWxlbWVudF9saW5rX3BhZHMpLCAoZ3N0X2VsZW1lbnRfcXVlcnlfcG9zaXRpb24pLAoJICAoZ3N0X2VsZW1lbnRfcXVlcnlfY29udmVydCksIChpbnRlcnNlY3RfY2Fwc19mdW5jKSwKCSAgKGdzdF9wYWRfcXVlcnlfcG9zaXRpb24pLCAoZ3N0X3BhZF9xdWVyeV9jb252ZXJ0KToKCSAgRml4IHJlZmNvdW50aW5nIGluIHV0aWxzIGZ1bmN0aW9uLgoJICBObyBwb2ludCBpbiB0cnlpbmcgdG8gYWN0aXZhdGUgYSBwYWQgd2hlbiBpdCdzIGFkZGVkLCBpdCBjb3VsZAoJICBiZSBhZGRlZCBmcm9tIHRoZSBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gYW5kIHRoZW4gd2UgZGVhZGxvY2ssIHRoZQoJICBlbGVtZW50IGhhcyB0byBkZWNpZGUgd2hhdCB0byBkby4KCjIwMDUtMDUtMTEgMDM6Mzc6MTAgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jIChnc3RfZmFrZXNpbmtfcmVuZGVyKTogRXIsIGVtaXQgd2l0aAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNS0xMCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYyAoZ3N0X2Zha2VzaW5rX3JlbmRlcik6IEVyLCBlbWl0IHdpdGgKCSAgKmFsbCogdGhlIGFyZ3VtZW50cy4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCk6IEdyYWIgdGhlCgkgIHN0cmVhbSBsb2NrIGlmIGl0J3MgYSBGTFVTSF9ET05FOyBub3JtYWwgZmx1c2hlcyBkb24ndCBnZXQgdGhlCgkgIGxvY2sgKGFjY29yZGluZyB0byB0aGUgZG9jcyAtLSBpZiB0aGlzIGlzIHdyb25nIGNoYW5nZSB0aGUgZG9jcykuCgkgICogZ3N0L2dzdHBpcGVsaW5lLmMgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOiBTZXQgdGhlIGJ1cyB0bwoJICBmbHVzaCBtZXNzYWdlcyBpbiB0aGUgTlVMTCBzdGF0ZS4KCSAgKiBnc3QvZ3N0YnVzLmMgKGdzdF9idXNfcG9zdCk6IElmIGEgYnVzIGlzIGZsdXNoaW5nLCB1bnJlZiB0aGUKCSAgbWVzc2FnZSBpbW1lZGlhdGVseSBhbmQgcmV0dXJuLgoJICAoZ3N0X2J1c19zZXRfZmx1c2hpbmcpOiBOZXcgZnVuY3Rpb24uIElmIGEgYnVzIGlzIGZsdXNoaW5nLCBpdAoJICBmbHVzaGVzIG91dCBhbnkgcXVldWVkIG1lc3NhZ2VzIGFuZCBpbW1lZGlhdGVseSB1bnJlZnMgbmV3CgkgIG1lc3NhZ2VzLiBUaGlzIGlzIHNvIHdoZW4gYW4gZWxlbWVudCBnb2VzIHRvIE5VTEwsIGFsbCBvZiB0aGUKCSAgdW5oYW5kbGVkIG1lc3NhZ2VzIGNvbWluZyBmcm9tIGl0IGNhbiBiZSBmcmVlZCwgYW5kIHRoZWlyCgkgIHJlZmVyZW5jZXMgdG8gdGhlIGVsZW1lbnQgZHJvcHBlZC4gSW4gb3RoZXIgd29yZHM6IG1lc3NhZ2Ugc291cmNlCgkgIHJlZiBjb25zaWRlcmVkIGhhcm1mdWwgOlAKCSAgKiBnc3QvZ3N0YmluLmMgKGdzdF9iaW5fY2hhbmdlX3N0YXRlKTogVW5yZWYgcGVlciBlbGVtZW50IHdoZW4KCSAgd2UncmUgZmluaXNoZWQgd2l0aCBpdC4KCSAgKiBnc3QvZ3N0bWVzc2FnZS5jIChnc3RfbWVzc2FnZV9uZXdfc3RhdGVfY2hhbmdlZCk6CgoyMDA1LTA1LTEwIDE0OjUxOjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogZ3N0L2dzdHZhbHVlLmM6CgkgIHJlbW92ZSBzdHVwaWQgcHJpbnRmCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmUgc3R1cGlkIHByaW50ZgoKMjAwNS0wNS0xMCAxNDo1MDo1NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3R2YWx1ZS5jOiBBZGRlZCBmbGFncyBzZXJpYWxpemUvZGVzZXJpYWxpemUvY29tcGFyZSBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0dmFsdWUuYzogKGdzdF92YWx1ZV9jb21wYXJlX2ZsYWdzKSwKCSAgKGdzdF92YWx1ZV9zZXJpYWxpemVfZmxhZ3MpLCAoZ3N0X3ZhbHVlX2Rlc2VyaWFsaXplX2ZsYWdzKSwKCSAgKF9nc3RfdmFsdWVfaW5pdGlhbGl6ZSk6CgkgIEFkZGVkIGZsYWdzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZS9jb21wYXJlIGNvZGUuCgoyMDA1LTA1LTA5IDIxOjM3OjU0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcm94eV9nZXRjYXBzKTogSW50ZXJzZWN0IHRoZSBwZWVyJ3MgY2FwcyB3aXRoIG91ciBjYXBzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNS0wOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmMgKGdzdF9iYXNlX3RyYW5zZm9ybV9wcm94eV9nZXRjYXBzKToKCSAgSW50ZXJzZWN0IHRoZSBwZWVyJ3MgY2FwcyB3aXRoIG91ciBjYXBzLgoKMjAwNS0wNS0wOSAxNTo1NDoyNiArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZ3N0LzogSGFuZGxlIG5lZ2F0aXZlIG9mZnNldHMgYmV0dGVyLiBGaXhlcyBkZWNvZGViaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmM6IChoZWxwZXJfZmluZF9wZWVrKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6IChmaW5kX3BlZWspOgoJICBIYW5kbGUgbmVnYXRpdmUgb2Zmc2V0cyBiZXR0ZXIuIEZpeGVzIGRlY29kZWJpbi4KCjIwMDUtMDUtMDkgMTQ6NDc6MTUgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvOiBJbXBsZW1lbnQgYWNjZXB0X2NhcHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9wcm94eV9nZXRjYXBzKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9ldmVudCk6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9hY2NlcHRfY2FwcyksIChnc3RfcGFkX3F1ZXJ5KToKCSAgSW1wbGVtZW50IGFjY2VwdF9jYXBzLgoJICBGaXggc2lsbHkgbG9jay91bmxvY2sgbWlzbWF0Y2ggaW4gYmFzZSBjbGFzcy4KCjIwMDUtMDUtMDkgMTA6NTM6MTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZGVzaWduL2RyYWZ0LXB1c2gtcHVsbC50eHQ6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdGVsZW1lbnQuaDoKCSogZ3N0L2dzdG1lc3NhZ2UuYzoKCSogZ3N0L2dzdG1lc3NhZ2UuaDoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cGFkLmg6CgkqIGdzdC9nc3RxdWVyeS5jOgoJKiBnc3QvZ3N0cXVlcnkuaDoKCSogZ3N0L2dzdHF1ZXJ5dXRpbHMuYzoKCSogZ3N0L2dzdHF1ZXJ5dXRpbHMuaDoKCSogZ3N0L2dzdHF1ZXVlLmM6CgkqIGdzdC9nc3R1dGlscy5jOgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJKiB0b29scy9nc3QteG1saW5zcGVjdC5jOgoJICBSZW1vdmUgb2xkIHF1ZXJ5IGZ1bmN0aW9ucy4gUG9ydGVkIG9sZCBjb2RlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgUmVtb3ZlIG9sZCBxdWVyeSBmdW5jdGlvbnMuIFBvcnRlZCBvbGQgY29kZS4KCSAgQWRkZWQgcG9zaXRpb24vY29udmVydCBoZWxwZXIgZnVuY3Rpb25zIHRvIGdzdHV0aWxzLgoJICBSZW9yZGVyZWQgZ3N0cGFkLmMgY29kZSwgZ3JvdXBpbmcgcmVsZXZhbnQgdGhpbmdzLgoJICBSZW1vdmUgZ3N0X21lc3NhZ2VfbmV3KCksIGFsd2F5cyBuZWVkIHRvIHNwZWZpY3kgYSBzcGVjaWZpYwoJICBtZXNzYWdlLgoKMjAwNS0wNS0wOSAwNjoyMToxMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdGl0ZXJhdG9yLmg6IEFkZCBzb21lIGluY2x1ZGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNS0wOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZ3N0aXRlcmF0b3IuaDogQWRkIHNvbWUgaW5jbHVkZXMuCgkgICogZ3N0L2dzdHF1ZXJ5dXRpbHMuaDogSW5jbHVkZSBtb3JlIGhlYWRlcnMuCgkgICogZ3N0L2dzdHBhZC5oOgoJICAqIGdzdC9nc3RwYWQuYyAoZ3N0X3BhZF9xdWVyeV9wb3NpdGlvbik6IE5ldyByb3V0aW5lLCByZXBsYWNlcwoJICBzb21lIHVzZXMgb2YgZ3N0X3BhZF9xdWVyeS4KCSAgKiBnc3QvZ3N0cXVlcnl1dGlscy5jOiBCdWlsZCBmaXhlcy4gTWFrZSBwYXJzZSBmdW5jdGlvbnMgaWdub3JlCgkgIE5VTEwgb3V0IHBhcmFtZXRlcnMuCgkgIChnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKTogTmV3IHByb2MsIGFsbG9jYXRlcyBhIG5ldyBwb3NpdGlvbgoJICBxdWVyeS4KCSAgKiBnc3QvTWFrZWZpbGUuYW0gKGxpYmdzdHJlYW1lcl9AR1NUX01BSk9STUlOT1JAX2xhX1NPVVJDRVMpOiBBZGQKCSAgZ3N0cXVlcnl1dGlscy5jIHRvIHRoZSBidWlsZC4KCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmMgKGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbGlzdCk6IEltcGxlbWVudCB3aXRoCgkgIHRoZSBnZW5lcmljIEdfVkFMVUVfQ09MTEVDVC4KCjIwMDUtMDUtMDggMTc6MDc6MDUgKzAwMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CgoJICBnc3QvTWFrZWZpbGUuYW06IEFkZGVkIGdzdHF1ZXJ5dXRpbHMuaCB0byB0aGUgbGlzdCBvZiBoZWFkZXJzIHRvIGluc3RhbGwsIHRoYXQgd2FzIGEgJ25hY2h0eScgbW92ZSB3aW5nbyA6KQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvTWFrZWZpbGUuYW06IChnc3RfaGVhZGVycyk6CgkgIEFkZGVkIGdzdHF1ZXJ5dXRpbHMuaCB0byB0aGUgbGlzdCBvZiBoZWFkZXJzIHRvIGluc3RhbGwsIHRoYXQgd2FzCgkgIGEgJ25hY2h0eScgbW92ZSB3aW5nbyA6KQoKMjAwNS0wNS0wNiAyMTo0MToyMiArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgZ3N0L2dzdHF1ZXJ5LmgKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDUtMDYgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2dzdHF1ZXJ5LmgKCSAgKiBnc3QvZ3N0cXVlcnkuYyAoX2dzdF9xdWVyeV9pbml0aWFsaXplKTogRXh0ZW5kIEdzdFF1ZXJ5IGZyb20KCSAgR3N0RGF0YSwgaW5pdCBhIG1lbWNodW5rLgoJICAoc3RhbmRhcmRfZGVmaW5pdGlvbnMpOiBBZGQgYSBmZXcgcXVlcnkgdHlwZXMsIGRlcHJlY2F0ZSBhIGZldy4KCSAgKGdzdF9xdWVyeV9nZXRfdHlwZSk6IE5ldyBwcm9jLgoJICAoX2dzdF9xdWVyeV9jb3B5LCBfZ3N0X3F1ZXJ5X2ZyZWUsIGdzdF9xdWVyeV9uZXcpOiBHc3REYXRhCgkgIGltcGxlbWVudGF0aW9uLgoJICAoZ3N0X3F1ZXJ5X25ld19hcHBsaWNhdGlvbiwgZ3N0X3F1ZXJ5X2dldF9zdHJ1Y3R1cmUpOiBOZXcgcHVibGljCgkgIHByb2NzLgoJICAqIGRvY3MvZGVzaWduL2RyYWZ0LXF1ZXJ5LnR4dDogUmVtb3ZlZCBMSU5LUyBmcm9tIHRoZSBxdWVyeSB0eXBlcywKCSAgYmVjYXVzZSBhbGwgdGhlIHJlc3QgY2FuIGJlIGRpc3BhdGNoZWQgdG8gb3RoZXIgcGFkcyAtLSBzZWVtZWQKCSAgdWdseSB0byBoYXZlIGEgcXVlcnkgdGhhdCBjb3VsZG4ndCBiZSBkaXNwYXRjaGVkLiBpbnRlcm5hbF9saW5rcwoJICBpcyBmaW5lIGFzIGEgcGFkIG1ldGhvZC4KCSAgKiBnc3QvZ3N0cGFkLmg6IEFkZCBxdWVyeTIgYXMgYSBwYWQgbWV0aG9kLCBhZGQgdGhlIG5ldyBmdW5jdGlvbnMKCSAgaW4gZ3N0cGFkLmMsIGJ1dCBtYWludGFpbiBiaW5hcnkgY29tcGF0aWJpbGl0eSBmb3IgdGhlIG1vbWVudC4KCSAgV2lsbCBmaXggYmVmb3JlIDAuOSBpcyBvdXQuCgkgICogZ3N0L2dzdHF1ZXJ5dXRpbHMuYzoKCSAgKiBnc3QvZ3N0cXVlcnl1dGlscy5oOiBOZXcgZmlsZXMsIGltcGxlbWVudCAzIG1ldGhvZHMgZm9yIGVhY2gKCSAgcXVlcnkgdHlwZTogcGFyc2VfcXVlcnksIHBhcnNlX3Jlc3BvbnNlLCBhbmQgc2V0LiBQcm9iYWJseSBuZWVkIGFuCgkgIGFsbG9jYXRvciBhcyB3ZWxsLgoJICAqIGdzdC9nc3QuaDogQWRkIGdzdHF1ZXJ5LmggYW5kIGdzdHF1ZXJ5dXRpbHMuaCB0byB0aGUgbGlzdC4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYyAoZ3N0X2ZpbGVzaW5rX3F1ZXJ5Mik6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZXNyY19xdWVyeTIpOiBSZXBsYWNlIG9sZCBxdWVyeSwKCSAgcXVlcnlfdHlwZXMsIGFuZCBmb3JtYXRzIG1ldGhvZHMuCgkgICogZ3N0L2dzdHBhZC5jIChnc3RfcGFkX3F1ZXJ5MiwgZ3N0X3BhZF9xdWVyeTJfZGVmYXVsdCkKCSAgKGdzdF9wYWRfc2V0X3F1ZXJ5Ml9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbnMuCgkgIChnc3RfcmVhbF9wYWRfaW5pdCk6IFNldCBxdWVyeTJfZGVmYXVsdCBhcyB0aGUgZGVmYXVsdCBxdWVyeTIKCSAgZnVuY3Rpb24uIEJhc2ljYWxseSBqdXN0IGRpc3BhdGNoZXMgdG8gaW50ZXJuYWxseSBsaW5rZWQgcGFkcy4KCSAgTmVlZHMgcmV2aWV3IQoJICAqIGdzdC9nc3RkYXRhX3ByaXZhdGUuaCAoX0dTVF9EQVRBX0lOSVQpOiBTZXQgZGF0YS0+cmVmY291bnQgdG8gMQoJICB3aXRob3V0IHVzaW5nIHRoZSBhdG9taWMgb3BlcmF0aW9ucy4gT25seSBvbmUgdGhyZWFkIGNhbiBwb3NzaWJseQoJICBiZSBhY2Nlc3NpbmcgdGhlIGRhdGEgYXQgdGhpcyBwb2ludC4gQ2hhbmdlZCBzbyBhcyB0byBhdm9pZAoJICBnc3RfYXRvbWljIG9wZXJhdGlvbnMuCgoyMDA1LTA1LTA2IDE5OjUwOjIzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC5jOiBBbHNvIHNldCBjYXBzIGlmIHdlIHVzZSB0aGUgZmFsbGJhY2sgYnVmZmVyIGFsbG9jLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX2FsbG9jX2J1ZmZlciksIChnc3RfcGFkX3B1c2gpOgoJICBBbHNvIHNldCBjYXBzIGlmIHdlIHVzZSB0aGUgZmFsbGJhY2sgYnVmZmVyIGFsbG9jLgoKMjAwNS0wNS0wNiAxNzozMzo1NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLm5ldD4KCgkgIFB1cmdlIEdzdEF0b21pYyBzdHVmZiBmcm9tIGRvY3MgYW5kIHdpbjMyIG1ha2VmaWxlcyBhcyB3ZWxsCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L01ha2VmaWxlLmFtOgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1kb2NzLnNnbWw6CgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLXNlY3Rpb25zLnR4dDoKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGF0b21pYy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0bWVtY2h1bmsuc2dtbDoKCSAgKiB0ZXN0c3VpdGUvZWxlbWVudHMvc3RydWN0X2kzODYuaDoKCSAgKiB3aW4zMi9HU3RyZWFtZXIudmNwcm9qOgoJICAqIHdpbjMyL01ha2VmaWxlOgoJICBQdXJnZSBHc3RBdG9taWMgc3R1ZmYgZnJvbSBkb2NzIGFuZCB3aW4zMiBtYWtlZmlsZXMgYXMgd2VsbAoKMjAwNS0wNS0wNiAxNzoxMDo0OSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEZpeCBnc3RfcGFkX3BlZXJfZ2V0X2NhcHMoKSwgbWFrZSBpdCByZXR1cm4gTlVMTCBpZiBubyBwZWVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fcHJveHlfZ2V0Y2Fwcyk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGNhcHNmaWx0ZXIuYzogKGdzdF9jYXBzZmlsdGVyX2dldGNhcHMpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfcGVlcl9nZXRfY2Fwcyk6CgkgICogZ3N0L2dzdHF1ZXVlLmM6IChnc3RfcXVldWVfaW5pdCksIChnc3RfcXVldWVfZ2V0Y2FwcyksCgkgIChnc3RfcXVldWVfYnVmZmVyYWxsb2MpLCAoZ3N0X3F1ZXVlX2hhbmRsZV9zaW5rX2V2ZW50KSwKCSAgKGdzdF9xdWV1ZV9zcmNfYWN0aXZhdGUpLCAoZ3N0X3F1ZXVlX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2dzdHF1ZXVlLmg6CgkgICogZ3N0L2dzdHV0aWxzLmM6IChnc3RfZWxlbWVudF9nZXRfY29tcGF0aWJsZV9wYWRfdGVtcGxhdGUpLAoJICAoaW50ZXJzZWN0X2NhcHNfZnVuYyk6CgkgIEZpeCBnc3RfcGFkX3BlZXJfZ2V0X2NhcHMoKSwgbWFrZSBpdCByZXR1cm4gTlVMTCBpZiBubyBwZWVyLgoJICBBbHdheXMgdGFrZSBRVUVVRV9MT0NLIGFmdGVyIFNUUkVBTV9MT0NLIG9yIHdlIG1pZ2h0IGRlYWRsb2NrLgoJICBTb21lIGZpeGVzIGZvciB0aGUgcGVlcl9nZXRfY2FwcygpIGNoYW5nZS4KCjIwMDUtMDUtMDYgMTY6MTk6NTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBnc3QvYmFzZS9nc3RiYXNlc2luay5jOiBBY3R1YWxseSBkbyBzb21ldGhpbmcgd2l0aCBlcnJvciBjb2RlcyByZXR1cm5lZCBmcm9tIHRoZSBwdXNoIGZ1bmN0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19wcmVyb2xsX3F1ZXVlX2VtcHR5KSwKCSAgKGdzdF9iYXNlc2lua19oYW5kbGVfYnVmZmVyKSwgKGdzdF9iYXNlc2lua19jaGFpbl91bmxvY2tlZCksCgkgIChnc3RfYmFzZXNpbmtfYWN0aXZhdGUpOgoJICBBY3R1YWxseSBkbyBzb21ldGhpbmcgd2l0aCBlcnJvciBjb2RlcyByZXR1cm5lZCBmcm9tIHRoZSBwdXNoCgkgIGZ1bmN0aW9ucy4KCjIwMDUtMDUtMDYgMDg6MjU6MTkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBTb21lIG1vcmUgZG9jdW1lbnRhdGlvbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1lbGVtZW50LXNpbmsudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZWxlbWVudC1zb3VyY2UudHh0OgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZXNpbmtfZXZlbnQpLCAoZ3N0X2Jhc2VzaW5rX2FjdGl2YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX2luaXQpLCAoZ3N0X2Jhc2VzcmNfdW5sb2NrKSwKCSAgKGdzdF9iYXNlc3JjX2FjdGl2YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmg6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X3BhZHNfYWN0aXZhdGUpOgoJICBTb21lIG1vcmUgZG9jdW1lbnRhdGlvbi4KCSAgRml4ZWQgc2NoZWR1bGluZyBkZWNpc2lvbiBpbiBfcGFkc19hY3RpdmF0ZSgpLgoKMjAwNS0wNS0wNSAyMTo1OTo1MyArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdHBhZC5jOgoJICBmaW5hbCBjcnVmdCBmaXhhZ2UKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpbmFsIGNydWZ0IGZpeGFnZQoKMjAwNS0wNS0wNSAyMTo0NTo1NCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkgIGNydWZ0IHJlbW92YWwKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNydWZ0IHJlbW92YWwKCjIwMDUtMDUtMDUgMjE6NDI6MjQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzoKCSAgcmV2ZXJ0IGNydWZ0CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZlcnQgY3J1ZnQKCjIwMDUtMDUtMDUgMjE6Mzc6MzQgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJICByZXZlcnQgYWNjaWRlbnRhbCBjb21taXQgb2YgY3J1ZnQgLS0gZG9oCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZXZlcnQgYWNjaWRlbnRhbCBjb21taXQgb2YgY3J1ZnQgLS0gZG9oCgoyMDA1LTA1LTA1IDE1OjAyOjQwICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jICh0ZXN0XzJfZWxlbWVudHMpOiAiRml4IiB0aGUgdGVzdCBzdWl0ZS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDUtMDUgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogY2hlY2svcGlwZWxpbmVzL3NpbXBsZV9sYXVuY2hfbGluZXMuYyAodGVzdF8yX2VsZW1lbnRzKTogIkZpeCIKCSAgdGhlIHRlc3Qgc3VpdGUuCgoyMDA1LTA1LTA1IDExOjQzOjA2ICswMDAwICBDaHJpc3RpYW4gU2NoYWxsZXIgPHVyYWV1c0Bnbm9tZS5vcmc+CgoJKiBnc3RyZWFtZXIuc3BlYy5pbjoKCSAgZml4IGJyb2tlbiBzcGVjIGZpbGUKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBicm9rZW4gc3BlYyBmaWxlCgoyMDA1LTA1LTA1IDA5OjMxOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQWRkZWQgb2JqZWN0IHRvIGhlbHAgaW4gbWFraW5nIGNvbGxlY3QgcGFkIGJhc2VkIGVsZW1lbnRzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9NYWtlZmlsZS5hbToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzogKGdzdF9iYXNlc3JjX2luaXQpLAoJICAoZ3N0X2Jhc2VzcmNfc2V0X2RhdGFmbG93X2Z1bmNzKSwgKGdzdF9iYXNlc3JjX3F1ZXJ5KToKCSAgKiBnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5jOiAoZ3N0X2NvbGxlY3RwYWRzX2dldF90eXBlKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19jbGFzc19pbml0KSwgKGdzdF9jb2xsZWN0cGFkc19pbml0KSwKCSAgKGdzdF9jb2xsZWN0cGFkc19maW5hbGl6ZSksIChnc3RfY29sbGVjdHBhZHNfbmV3KSwKCSAgKGdzdF9jb2xsZWN0cGFkc19zZXRfZnVuY3Rpb24pLCAoZ3N0X2NvbGxlY3RwYWRzX2FkZF9wYWQpLAoJICAoZmluZF9wYWQpLCAoZ3N0X2NvbGxlY3RwYWRzX3JlbW92ZV9wYWQpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX2lzX2FjdGl2ZSksIChnc3RfY29sbGVjdHBhZHNfY29sbGVjdCksCgkgIChnc3RfY29sbGVjdHBhZHNfY29sbGVjdF9yYW5nZSksIChnc3RfY29sbGVjdHBhZHNfc3RhcnQpLAoJICAoZ3N0X2NvbGxlY3RwYWRzX3N0b3ApLCAoZ3N0X2NvbGxlY3RwYWRzX3BlZWspLAoJICAoZ3N0X2NvbGxlY3RwYWRzX3BvcCksIChnc3RfY29sbGVjdHBhZHNfYXZhaWxhYmxlKSwKCSAgKGdzdF9jb2xsZWN0cGFkc19yZWFkKSwgKGdzdF9jb2xsZWN0cGFkc19mbHVzaCksCgkgIChnc3RfY29sbGVjdHBhZHNfY2hhaW4pOgoJICAqIGdzdC9iYXNlL2dzdGNvbGxlY3RwYWRzLmg6CgkgICogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOiAoZ3N0X2Zha2VzaW5rX2NsYXNzX2luaXQpLAoJICAoZ3N0X2Zha2VzaW5rX2dldF90aW1lcyksIChnc3RfZmFrZXNpbmtfZXZlbnQpLAoJICAoZ3N0X2Zha2VzaW5rX3ByZXJvbGwpLCAoZ3N0X2Zha2VzaW5rX3JlbmRlcik6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzaW5rLmM6IChnc3RfZmlsZXNpbmtfY2xhc3NfaW5pdCksCgkgIChnc3RfZmlsZXNpbmtfaW5pdCksIChnc3RfZmlsZXNpbmtfc2V0X2xvY2F0aW9uKSwKCSAgKGdzdF9maWxlc2lua19vcGVuX2ZpbGUpLCAoZ3N0X2ZpbGVzaW5rX2Nsb3NlX2ZpbGUpLAoJICAoZ3N0X2ZpbGVzaW5rX3BhZF9xdWVyeSksIChnc3RfZmlsZXNpbmtfZXZlbnQpLAoJICAoZ3N0X2ZpbGVzaW5rX3JlbmRlciksIChnc3RfZmlsZXNpbmtfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuaDoKCSAgQWRkZWQgb2JqZWN0IHRvIGhlbHAgaW4gbWFraW5nIGNvbGxlY3QgcGFkIGJhc2VkIGVsZW1lbnRzLgoJICBQb3J0ZWQgZmlsZXNpbmsuCgkgIE1ha2UgZXZlbnQgZnVuY3Rpb24gaW4gc2luayBiYXNlY2xhc3MgcmV0dXJuIGdib29sZWFuLgoKMjAwNS0wNS0wNSAwOToyODowMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEZpeCBuYW1lIGxvb2t1cCBpbiBHc3RCaW4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fc2VuZF9ldmVudCksIChjb21wYXJlX25hbWUpLAoJICAoZ3N0X2Jpbl9nZXRfYnlfbmFtZSk6CgkgICogZ3N0L2dzdGJ1ZmZlci5oOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2VudHJ5X25ldyksIChnc3RfY2xvY2tfY2xhc3NfaW5pdCksCgkgIChnc3RfY2xvY2tfZmluYWxpemUpOgoJICAqIGdzdC9nc3RkYXRhLmM6IChnc3RfZGF0YV9yZXBsYWNlKToKCSAgKiBnc3QvZ3N0ZGF0YS5oOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9yZXF1ZXN0X3BhZCksCgkgIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0b2JqZWN0LmM6IChnc3Rfb2JqZWN0X2luaXQpLCAoZ3N0X29iamVjdF9yZWYpLAoJICAoZ3N0X29iamVjdF91bnJlZik6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9zZXRfYWN0aXZlKSwgKGdzdF9wYWRfcGVlcl9zZXRfYWN0aXZlKSwKCSAgKGdzdF9wYWRfc2V0X2NoZWNrZ2V0cmFuZ2VfZnVuY3Rpb24pLAoJICAoZ3N0X3BhZF9saW5rX2NoZWNrX2NvbXBhdGlibGVfdW5sb2NrZWQpLCAoZ3N0X3BhZF9zZXRfY2FwcyksCgkgIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpLCAoZ3N0X3BhZF9wdWxsX3JhbmdlKSwKCSAgKGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldF9jYXBzKSwgKGdzdF9wYWRfc3RhcnRfdGFzayksCgkgIChnc3RfcGFkX3BhdXNlX3Rhc2spLCAoZ3N0X3BhZF9zdG9wX3Rhc2spOgoJICAqIGdzdC9nc3R1dGlscy5jOiAoZ3N0X2VsZW1lbnRfZ2V0X2NvbXBhdGlibGVfcGFkX3RlbXBsYXRlKSwKCSAgKGdzdF9lbGVtZW50X3JlcXVlc3RfcGFkKSwgKGdzdF9wYWRfcHJveHlfZ2V0Y2Fwcyk6CgkgIEZpeCBuYW1lIGxvb2t1cCBpbiBHc3RCaW4uCgkgIEFkZGVkIF9kYXRhX3JlcGxhY2UoKSBmdW5jdGlvbiBhbmQgX2J1ZmZlcl9yZXBsYWNlKCkKCSAgVXNlIGZpbmFsaXplIG1ldGhvZCB0byBjbGVhbiB1cCBjbG9jay4KCSAgRml4IHJlZmNvdW50aW5nIG9uIHJlcXVlc3QgcGFkcy4KCSAgRml4IHBhZCBzY2hlZHVsZSBtb2RlIGVycm9yLgoJICBTb21lIG1vcmUgb2JqZWN0IHJlZmNvdW50aW5nIGRlYnVnIGluZm8sCgoyMDA1LTA1LTA0IDIxOjI5OjQ0ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBHQ0MgNCBmaXhlbi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDUtMDQgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2dzdC90bXBsL2dzdGF0b21pYy5zZ21sOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0cGx1Z2luLnNnbWw6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19hY3RpdmF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2VzcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZXNyY19pbml0KSwgKGdzdF9iYXNlc3JjX3NldF9kYXRhZmxvd19mdW5jcyksCgkgIChnc3RfYmFzZXNyY19xdWVyeSksIChnc3RfYmFzZXNyY19zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Jhc2VzcmNfZ2V0X3Byb3BlcnR5KSwgKGdzdF9iYXNlc3JjX2NoZWNrX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZXNyY19hY3RpdmF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uYzogKGdzdF9iYXNlX3RyYW5zZm9ybV9zaW5rX2FjdGl2YXRlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zcmNfYWN0aXZhdGUpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RlbGVtZW50cy5jOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZXNyY19jbGFzc19pbml0KSwKCSAgKGdzdF9mYWtlc3JjX3NldF9wcm9wZXJ0eSksIChnc3RfZmFrZXNyY19nZXRfcHJvcGVydHkpOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzogKGdzdF90ZWVfc2lua19hY3RpdmF0ZSk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOiAoZmluZF9lbGVtZW50X2dldF9sZW5ndGgpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoZWNrZ2V0cmFuZ2UpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX3NhdmVfdGh5c2VsZiksIChnc3RfYmluX3Jlc3RvcmVfdGh5c2VsZik6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX2RvX3NpbXBsaWZ5KSwgKGdzdF9jYXBzX3NhdmVfdGh5c2VsZiksCgkgIChnc3RfY2Fwc19sb2FkX3RoeXNlbGYpOgoJICAqIGdzdC9nc3RlbGVtZW50LmM6IChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKSwKCSAgKGdzdF9lbGVtZW50X3NhdmVfdGh5c2VsZiksIChnc3RfZWxlbWVudF9yZXN0b3JlX3RoeXNlbGYpOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfbG9hZF9hbmRfbGluayksIChnc3RfcGFkX3NhdmVfdGh5c2VsZiksCgkgIChnc3RfZ2hvc3RfcGFkX3NhdmVfdGh5c2VsZiksIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0eG1sLmM6IChnc3RfeG1sX3dyaXRlKSwgKGdzdF94bWxfcGFyc2VfZG9jKSwKCSAgKGdzdF94bWxfcGFyc2VfZmlsZSksIChnc3RfeG1sX3BhcnNlX21lbW9yeSksCgkgIChnc3RfeG1sX2dldF9lbGVtZW50KSwgKGdzdF94bWxfbWFrZV9lbGVtZW50KToKCSAgKiBnc3QvaW5kZXhlcnMvZ3N0ZmlsZWluZGV4LmM6IChnc3RfZmlsZV9pbmRleF9sb2FkKSwKCSAgKF9maWxlX2luZGV4X2lkX3NhdmVfeG1sKSwgKGdzdF9maWxlX2luZGV4X2NvbW1pdCk6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuYzogKHJlYWRfc3RyaW5nKSwgKHJlYWRfdWludCksCgkgIChyZWFkX2VudW0pLCAobG9hZF9wYWRfdGVtcGxhdGUpLCAobG9hZF9mZWF0dXJlKSwgKGxvYWRfcGx1Z2luKSwKCSAgKGxvYWRfcGF0aHMpOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9kYXRhcHJvdG9jb2wuYzogKGdzdF9kcF9wYWNrZXRfZnJvbV9jYXBzKSwKCSAgKGdzdF9kcF9wYWNrZXRfZnJvbV9ldmVudCksIChnc3RfZHBfY2Fwc19mcm9tX3BhY2tldCk6CgkgICogdG9vbHMvZ3N0LWNvbXBsZXRlLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtY29tcHByZXAuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXNfaW5mbyk6CgkgICogdG9vbHMvZ3N0LWxhdW5jaC5jOiAoeG1sbGF1bmNoX3BhcnNlX2NtZGxpbmUpOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChwcmludF9lbGVtZW50X3Byb3BlcnRpZXMpOgoJICBHQ0MgNCBmaXhlbi4KCjIwMDUtMDUtMDQgMTk6NDE6MDUgKzAwMDAgIENocmlzdGlhbiBTY2hhbGxlciA8dXJhZXVzQGdub21lLm9yZz4KCgkqIGdzdHJlYW1lci5zcGVjLmluOgoJICBmaXggdXAgc3BlYyBmaWxlIHRvIHdvcmsgZm9yIDAuOSBicmFuY2gKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCB1cCBzcGVjIGZpbGUgdG8gd29yayBmb3IgMC45IGJyYW5jaAoKMjAwNS0wNS0wMyAxMjo0Njo0NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBnc3QvZ3N0cGx1Z2luLmM6IGFwcGx5IHBhdGNoIGZyb20gIzE3MjUyNiB0byBtYWtlIHJlZ2lzdGVyIHdvcmsgb24gTWFjT1NYCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwbHVnaW4uYzogKGdzdF9wbHVnaW5fY2hlY2tfbW9kdWxlKSwKCSAgKGdzdF9wbHVnaW5fY2hlY2tfZmlsZSksIChnc3RfcGx1Z2luX2xvYWRfZmlsZSk6CgkgIGFwcGx5IHBhdGNoIGZyb20gIzE3MjUyNiB0byBtYWtlIHJlZ2lzdGVyIHdvcmsgb24gTWFjT1NYCgoyMDA1LTA1LTAyIDE2OjUwOjMxICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGZpbGUgLmN2c2lnbm9yZSB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpbGUgLmN2c2lnbm9yZSB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCjIwMDUtMDUtMDIgMTU6MzE6MzYgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogQ2hhbmdlTG9nOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2luZGV4ZXJzL2NhY2hlMS5jOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2luZGV4ZXJzL2luZGV4ZHVtcC5jOgoJKiB0ZXN0c3VpdGUvaW5kZXhlcnMvY2FjaGUxLmM6CgkqIHRlc3RzdWl0ZS9pbmRleGVycy9pbmRleGR1bXAuYzoKCSAgbW9yZSBwcmludCBmb3JtYXQgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG1vcmUgcHJpbnQgZm9ybWF0IGZpeGVzCgoyMDA1LTA1LTAyIDE1OjIwOjMwICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2dzdGNvbmZpZy5oLmluOgoJKiB0ZXN0cy9vbGQvdGVzdHN1aXRlL2RlYnVnL3ByaW50Zl9leHRlbnNpb24uYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9lbGVtZW50cy9wcm9wZXJ0eS5oOgoJKiB0ZXN0c3VpdGUvZGVidWcvcHJpbnRmX2V4dGVuc2lvbi5jOgoJKiB0ZXN0c3VpdGUvZWxlbWVudHMvcHJvcGVydHkuaDoKCSAgbWVyZ2VzIGZyb20gMC44IGZvciA2NCBiaXQgaXNzdWVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBtZXJnZXMgZnJvbSAwLjggZm9yIDY0IGJpdCBpc3N1ZXMKCjIwMDUtMDUtMDIgMTM6NTU6MjEgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBBZGRlZCBkcmFmdCBmb3IgbmV3IHF1ZXJ5IEFQSS4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtcHVzaC1wdWxsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9kcmFmdC1xdWVyeS50eHQ6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2VzcmNfZ2V0X3JhbmdlX3VubG9ja2VkKSwKCSAgKGdzdF9iYXNlc3JjX3N0YXJ0KToKCSAgQWRkZWQgZHJhZnQgZm9yIG5ldyBxdWVyeSBBUEkuCgkgIEFkZGVkIGRyYWZ0IGZvciBiZXR0ZXIgc2VsZWN0aW5nIHNjaGVkdWxpbmcgbWV0aG9kcy4KCSAgTWFrZSBiYXNlc3JjIGlnbm9yZSBsZW5ndGggaWYgdGhlIHN1YmNsYXNzIGRvZXMgbm90IHN1cHBvcnQKCSAgaXQuCgoyMDA1LTA1LTAyIDExOjU0OjMyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L01ha2VmaWxlLmFtOgoJICBhdXRvbWFrZSAxLjUgZml4ZXMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGF1dG9tYWtlIDEuNSBmaXhlcwoKMjAwNS0wNS0wMiAxMTo0NzoxNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGRvY3MvZmFxL01ha2VmaWxlLmFtOgoJKiBkb2NzL21hbnVhbC9NYWtlZmlsZS5hbToKCSogZG9jcy9tYW51YWxzLm1hazoKCSogZG9jcy9wd2cvTWFrZWZpbGUuYW06CgkqIGdzdC9NYWtlZmlsZS5hbToKCSAgcG9zc2libGUgZml4ZXMgZm9yIGF1dG9tYWtlLTEuNQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgcG9zc2libGUgZml4ZXMgZm9yIGF1dG9tYWtlLTEuNQoKMjAwNS0wNC0yOCAxNjoyODoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEJldHRlciBkZWJ1Z2dpbmcgb2YgY2xvY2tpbmcgaW5mby4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2Jhc2VzaW5rX3BhZF9nZXRjYXBzKSwgKGdzdF9iYXNlc2lua19pbml0KSwKCSAgKGdzdF9iYXNlc2lua19kb19zeW5jKToKCSAgKiBnc3QvZ3N0Y2xvY2suYzogKGdzdF9jbG9ja19lbnRyeV9uZXcpOgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X2Rpc2NvbnRfZ2V0X3ZhbHVlKToKCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKHBpcGVsaW5lX2J1c19oYW5kbGVyKSwKCSAgKGdzdF9waXBlbGluZV9jaGFuZ2Vfc3RhdGUpOgoJICAqIGdzdC9nc3RzeXN0ZW1jbG9jay5jOiAoZ3N0X3N5c3RlbV9jbG9ja19pZF93YWl0X3VubG9ja2VkKToKCSAgQmV0dGVyIGRlYnVnZ2luZyBvZiBjbG9ja2luZyBpbmZvLgoJICBBbGxvdyBOVUxMIHZhbHVlcyB3aGVuIGdldHRpbmcgZGlzY29udCB2YWx1ZXMuCgoyMDA1LTA0LTI3IDE0OjE5OjQ2ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svZ3N0LzogSW5jcmVhc2UgdGltZW91dCBmb3IgY2hlY2tzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0b2JqZWN0LmM6IChTVEFSVF9URVNUKSwgKGdzdF9vYmplY3Rfc3VpdGUpOgoJICAqIGNoZWNrL2dzdC9nc3RwYWQuYzogKGdzdF9wYWRfc3VpdGUpOgoJICBJbmNyZWFzZSB0aW1lb3V0IGZvciBjaGVja3MuCgoyMDA1LTA0LTI3IDEzOjUyOjQyICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIGNoZWNrL01ha2VmaWxlLmFtOiBmaXggdGhlIGJyb2tlbiBydWxlIGZvciBjbGVhbnVwLiAgQXBwYXJlbnRseSB0aGlzIHJ1bGUgaXMgb25seSBuZWVkZWQgb24gRkMyLCBzbyBtYXliZSB0aGlzIHdhcnJhbi4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9NYWtlZmlsZS5hbToKCSAgZml4IHRoZSBicm9rZW4gcnVsZSBmb3IgY2xlYW51cC4gIEFwcGFyZW50bHkgdGhpcyBydWxlIGlzCgkgIG9ubHkgbmVlZGVkIG9uIEZDMiwgc28gbWF5YmUgdGhpcyB3YXJyYW50cyBmdXJ0aGVyIGF1dG90b29sCgkgIGluc3BlY3Rpb24uCgoyMDA1LTA0LTI2IDE4OjA3OjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHRyYXNoc3RhY2suaDogT29vaGguIGEgbmFzdHkgb25lISBBZnRlciBoYXZpbmcgYSBmYWlsZWQgcG9wKCkgZnJvbSB0aGUgc3RhY2ssIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgc3RhY2sgaXMgLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3R0cmFzaHN0YWNrLmg6CgkgIE9vb2hoLiBhIG5hc3R5IG9uZSEgQWZ0ZXIgaGF2aW5nIGEgZmFpbGVkIHBvcCgpIGZyb20gdGhlIHN0YWNrLAoJICBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHN0YWNrIGlzIGVtcHR5LiBJbiB0aGF0IGNhc2UsIGRvbid0CgkgIGZvbGxvdyB0aGUgTlVMTCBwb2ludGVyLgoKMjAwNS0wNC0yNSAxMzowMDo0NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFJlbW92ZSBnc3RfbGlicmFyeV9sb2FkIGFzIGl0IGRvZXMgbW9yZSBoYXJtIHRoYW4gZ29vZCB3aXRoIHRoZSBuZXcgZ19tb2R1bGUgZmxhZ3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2FjdGl2ZSksIChnc3RfcGFkX3BlZXJfc2V0X2FjdGl2ZSksCgkgIChnc3RfcGFkX3NldF9jaGVja2dldHJhbmdlX2Z1bmN0aW9uKSwKCSAgKGdzdF9wYWRfbGlua19jaGVja19jb21wYXRpYmxlX3VubG9ja2VkKSwgKGdzdF9wYWRfbGlua19wcmVwYXJlKSwKCSAgKGdzdF9wYWRfY2hlY2tfcHVsbF9yYW5nZSksIChnc3RfcGFkX3B1bGxfcmFuZ2UpLAoJICAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMpLCAoZ3N0X3BhZF9zdGFydF90YXNrKSwKCSAgKGdzdF9wYWRfcGF1c2VfdGFzayksIChnc3RfcGFkX3N0b3BfdGFzayk6CgkgICogZ3N0L2dzdHBsdWdpbi5jOiAoZ3N0X3BsdWdpbl9sb2FkKToKCSAgKiBnc3QvZ3N0cGx1Z2luLmg6CgkgIFJlbW92ZSBnc3RfbGlicmFyeV9sb2FkIGFzIGl0IGRvZXMgbW9yZSBoYXJtIHRoYW4gZ29vZCB3aXRoCgkgIHRoZSBuZXcgZ19tb2R1bGUgZmxhZ3MuCgkgIFJldmVydCBib2d1cyBjYXBzIHRlbXBsYXRlIGNoZWNrIGluIHBhZCBsaW5raW5nLCBwYWQgY2FwcwoJICBhcmUgaW1wb3J0YW50IHdoZW4gbGlua2luZyBub3QgdGhlIHRlbXBsYXRlLCB3aGljaCBpcyBtb3JlCgkgIGdlbmVyYWwgdGhhbiB0aGUgY3VycmVudCBjYXBzLgoKMjAwNS0wNC0yNSAxMTo1MTowOSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiB0ZXN0cy9NYWtlZmlsZS5hbToKCSAgdGhlcmUgaXMgbm8gc3BlZWQuICByZWFsbHkuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB0aGVyZSBpcyBubyBzcGVlZC4gIHJlYWxseS4KCjIwMDUtMDQtMjUgMDk6NTE6MDYgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9hdXRvcGx1Zy86IERpZSwgc3BpZGVyLCBkaWUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9hdXRvcGx1Zy8uY3ZzaWdub3JlOgoJICAqIGdzdC9hdXRvcGx1Zy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvYXV0b3BsdWcvZ3N0c2VhcmNoZnVuY3MuYzoKCSAgKiBnc3QvYXV0b3BsdWcvZ3N0c2VhcmNoZnVuY3MuaDoKCSAgKiBnc3QvYXV0b3BsdWcvZ3N0c3BpZGVyLmM6CgkgICogZ3N0L2F1dG9wbHVnL2dzdHNwaWRlci5oOgoJICAqIGdzdC9hdXRvcGx1Zy9nc3RzcGlkZXJpZGVudGl0eS5jOgoJICAqIGdzdC9hdXRvcGx1Zy9nc3RzcGlkZXJpZGVudGl0eS5oOgoJICAqIGdzdC9hdXRvcGx1Zy9zcGlkZXJ0ZXN0LmM6CgkgIERpZSwgc3BpZGVyLCBkaWUuCgoyMDA1LTA0LTI1IDA5OjQ1OjM1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0L2dzdHBhZC4qOiBBZGRlZCBzdHVicyBmb3IgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfc2V0X2FjdGl2ZSksIChnc3RfcGFkX3BlZXJfc2V0X2FjdGl2ZSksCgkgIChnc3RfcGFkX3NldF9jaGVja2dldHJhbmdlX2Z1bmN0aW9uKSwgKGdzdF9wYWRfY2hlY2tfcHVsbF9yYW5nZSksCgkgIChnc3RfcGFkX3B1bGxfcmFuZ2UpLCAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMpLAoJICAoZ3N0X3BhZF9zdGFydF90YXNrKSwgKGdzdF9wYWRfcGF1c2VfdGFzayksIChnc3RfcGFkX3N0b3BfdGFzayk6CgkgICogZ3N0L2dzdHBhZC5oOgoJICBBZGRlZCBzdHVicyBmb3IgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbnMuCgoyMDA1LTA0LTI1IDAzOjU0OjI4ICswMDAwICBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KCgkgIGZpbGUgcHl0aG9uLWVsZW1lbnRzLnR4dCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpbGUgcHl0aG9uLWVsZW1lbnRzLnR4dCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCjIwMDUtMDQtMjQgMjM6NTM6MDYgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHBhZC5oOiBEaXNhYmxlIHNvbWUgdW5pbXBsZW1lbnRlZCBmdW5jdGlvbnMuICBXaW0sIHBsZWFzZSBmaXguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuaDogRGlzYWJsZSBzb21lIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb25zLiAgV2ltLAoJICBwbGVhc2UgZml4LgoKMjAwNS0wNC0yNCAyMjo0OTo0NSArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBDb252ZXJ0IGV2ZXJ5dGhpbmcgZnJvbSBHc3RBdG9taWNJbnQgdG8gZ19hdG9taWNfaW50XyosIGFuZCByZW1vdmUgZ3N0YXRvbWljLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQ29udmVydCBldmVyeXRoaW5nIGZyb20gR3N0QXRvbWljSW50IHRvIGdfYXRvbWljX2ludF8qLCBhbmQKCSAgcmVtb3ZlIGdzdGF0b21pYy4KCSAgKiBnc3QvTWFrZWZpbGUuYW06CgkgICogZ3N0L2dzdGF0b21pYy5jOgoJICAqIGdzdC9nc3RhdG9taWMuaDoKCSAgKiBnc3QvZ3N0YXRvbWljX2ltcGwuaDoKCSAgKiBnc3QvZ3N0YnVmZmVyLmM6CgkgICogZ3N0L2dzdGNhcHMuYzoKCSAgKiBnc3QvZ3N0Y2Fwcy5oOgoJICAqIGdzdC9nc3RjbG9jay5jOgoJICAqIGdzdC9nc3RjbG9jay5oOgoJICAqIGdzdC9nc3RkYXRhLmM6CgkgICogZ3N0L2dzdGRhdGEuaDoKCSAgKiBnc3QvZ3N0ZGF0YV9wcml2YXRlLmg6CgkgICogZ3N0L2dzdGV2ZW50LmM6CgkgICogZ3N0L2dzdGluZm8uYzoKCSAgKiBnc3QvZ3N0aW5mby5oOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgICogZ3N0L2dzdG9iamVjdC5jOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkgICogZ3N0L2dzdHN0cnVjdHVyZS5oOgoJICAqIGdzdC9nc3R1dGlscy5jOiBBZGQgZ3N0X2F0b21pY19pbnRfc2V0KCkgY29tcGFpdGliaWxpdHkgZnVuY3Rpb24uCgkgICogZ3N0L2dzdHV0aWxzLmg6CgoyMDA1LTA0LTI0IDIyOjQ0OjEzICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGNoZWNrL2dzdC9nc3RwYWQuYzogT2ggeWVhaCwgaXQncyBhbHdheXMgbmljZSB0byBtYWtlIHRoZSByZWdyZXNzaW9ucyB0ZXN0cyB3b3JrLiAgUmVtb3ZlIHNvbWUgY29kZSB0aGF0IGlzIG5vIGxvbmdlci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0cGFkLmM6IChTVEFSVF9URVNUKTogT2ggeWVhaCwgaXQncyBhbHdheXMgbmljZSB0bwoJICBtYWtlIHRoZSByZWdyZXNzaW9ucyB0ZXN0cyB3b3JrLiAgUmVtb3ZlIHNvbWUgY29kZSB0aGF0IGlzIG5vCgkgIGxvbmdlciB0cnVlLgoJICAqIGdzdC9nc3RwYWQuYzogKGdzdF9wYWRfbGlua19jaGVja190ZW1wbGF0ZXNfY29tcGF0aWJsZV91bmxvY2tlZCk6CgkgIERpc2FibGUgd2FybmluZyBmb3IgcGFkcyB3aXRob3V0IHRlbXBsYXRlcy4KCjIwMDUtMDQtMjQgMjE6MTY6NDUgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L2dzdHBhZC5jOiBSZW1vdmUgaGFuZGxpbmcgb2YgZmlsdGVyZWQgY2Fwcy4gIEZpeC9tZXJnZSBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgZmlsdGVyZWQgbGlua3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwYWQuYzogUmVtb3ZlIGhhbmRsaW5nIG9mIGZpbHRlcmVkIGNhcHMuICBGaXgvbWVyZ2UKCSAgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIGZpbHRlcmVkIGxpbmtzLgoJICAqIGdzdC9nc3RwYWQuaDogUmVtb3ZlICdhcHBmaWx0ZXInIGZpZWxkIGFuZCBwcm90b3R5cGVzIG9mCgkgIHJlbW92ZWQgZnVuY3Rpb25zLgoJICAqIGdzdC9nc3R1dGlscy5jOiBGaXgvcmVtb3ZlIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgaGFuZGxlCgkgIGZpbHRlcmVkIGNhcHMuCgkgICogZ3N0L2dzdHV0aWxzLmg6CgkgICogZ3N0L2dzdHZhbHVlLmM6IEFkZCBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvZiBjYXBzCgkgICogZ3N0L3BhcnNlL2dyYW1tYXIueTogSWdub3JlIGZpbHRlcmVkIGNhcHMgd2hlbiBsaW5raW5nLiAgVGhpcwoJICByZXF1aXJlcyBmaXhpbmcgc28gdGhhdCB0aGUgZmlsdGVyIGNhcHMgbm90YXRpb24gY3JlYXRlcwoJICBhIGNhcHNmaWx0ZXIgZWxlbWVudCBhbmQgc2V0cyB0aGUgZmlsdGVyX2NhcHMgcHJvcGVydHkuICBJCgkgIHRoaW5rIGV2ZXJ5b25lIHByb2JhYmx5IHdhbnRzIHRvIGtlZXAgdGhlIHNob3J0aGFuZCBub3RhdGlvbi4KCSAgKiBkb2NzL2dzdC90bXBsL2dzdGVsZW1lbnQuc2dtbDogdXBkYXRlcyBmb3IgQVBJIGNoYW5nZXMuCgkgICogZG9jcy9nc3QvdG1wbC9nc3RwYWQuc2dtbDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzogUmVnaXN0ZXIgY2Fwc2ZpbHRlciBlbGVtZW50LgoJICAqIGdzdC9NYWtlZmlsZS5hbTogZml4IHNwYWNpbmcKCSAgKiBkb2NzL3JhbmRvbS9kcy8wLjktc3VnZ2VzdGVkLWNoYW5nZXM6IHJhbmRvbQoKMjAwNS0wNC0yMyAyMzoyOTo0NyArMDAwMCAgRGF2aWQgU2NobGVlZiA8ZHNAc2NobGVlZi5vcmc+CgoJICBnc3QvZWxlbWVudHMvOiBOZXcgZWxlbWVudCB0aGF0IGFjdHMgbGlrZSBhbiBpZGVudGl0eSwgYnV0IGZpbHRlcnMgY2Fwcy4gIFdpbGwgZXZlbnR1YWxseSByZXBsYWNlIGZpbHRlcmVkIGNhcHMgaW4gcGEuLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9nc3RjYXBzZmlsdGVyLmM6IE5ldyBlbGVtZW50IHRoYXQgYWN0cyBsaWtlIGFuCgkgIGlkZW50aXR5LCBidXQgZmlsdGVycyBjYXBzLiAgV2lsbCBldmVudHVhbGx5IHJlcGxhY2UgZmlsdGVyZWQKCSAgY2FwcyBpbiBwYWQgbGlua2luZy4KCSAgKiBnc3QvZ3N0dXRpbHMuYzogKGdzdF9lbGVtZW50X2NyZWF0ZV9hbGxfcGFkcyk6IE5ldyBmdW5jdGlvbgoJICB0byBjcmVhdGUgYWxsIHRoZSBBTFdBWVMgcGFkcyB0aGF0IGFyZSByZWdpc3RlcmVkIHdpdGggYW4KCSAgZWxlbWVudCBjbGFzcy4gIFRoaXMgZnVuY3Rpb25hbGl0eSBzaG91bGQgZXZlbnR1YWxseSBiZQoJICBtZXJnZWQgaW4gd2l0aCBHc3RFbGVtZW50IGluaXRpYWxpemF0aW9uLgoJICAqIGdzdC9nc3R1dGlscy5oOgoJICAqIHRlc3RzdWl0ZS90cmlnZ2VyL1JFQURNRTogcGFydCBvZiB0cmlnZ2VyIHRlc3QgY29kZSB0aGF0IHNob3VsZAoJICBoYXZlIGJlZW4gY2hlY2tlZCBpbiBhIGxvbmcgdGltZSBhZ28uCgoyMDA1LTA0LTIzIDIzOjI1OjA4ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9NYWtlZmlsZS5hbTogUmVtb3ZlIGFzLWxpYnRvb2wgc3R1ZmYuICBJdCdzIGxpa2VseSBub3QgYW5kIGhhcmQgdG8gY2FycnkgYXJvdW5kLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvTWFrZWZpbGUuYW06IFJlbW92ZSBhcy1saWJ0b29sIHN0dWZmLiAgSXQncyBsaWtlbHkgbm90CgkgIG5lZWRlZCB3aXRoIG5ldyB2ZXJzaW9ucyBvZiBsaWJ0b29sIChub2JvZHkgd2lsbCBjb25maXJtIHRoaXMpLAoJICBhbmQgaGFyZCB0byBjYXJyeSBhcm91bmQuCgkgICogZ3N0L2F1dG9wbHVnL01ha2VmaWxlLmFtOgoJICAqIGdzdC9iYXNlL01ha2VmaWxlLmFtOgoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvaW5kZXhlcnMvTWFrZWZpbGUuYW06CgkgICogZ3N0L3NjaGVkdWxlcnMvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvYnl0ZXN0cmVhbS9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9jb250cm9sL01ha2VmaWxlLmFtOgoJICAqIGxpYnMvZ3N0L2RhdGFwcm90b2NvbC9NYWtlZmlsZS5hbToKCSAgKiBsaWJzL2dzdC9nZXRiaXRzL01ha2VmaWxlLmFtOgoKMjAwNS0wNC0yMSAxNzoxMDowOSArMDAwMCAgU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSAgZmlsZSBNYWtlZmlsZS5hbSB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpbGUgTWFrZWZpbGUuYW0gd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgoyMDA1LTA0LTIxIDA5OjM3OjM0ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZG9jcy9kZXNpZ24vOiBTb21lIG1vcmUgZG9jcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vZHJhZnQtcHVzaC1wdWxsLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LU1ULXJlZmNvdW50aW5nLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LVRPRE8udHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtY2Fwcy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0YnVzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdHBpcGVsaW5lLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LW1lc3NhZ2VzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXB1c2gtcHVsbC50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1xdWVyeS50eHQ6CgkgIFNvbWUgbW9yZSBkb2NzLgoKMjAwNS0wNC0yMSAwOTozMzozMSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFVzZSBwYXJlbnQgcmVmY291bnQgaW4gR3N0TWVzc2FnZSB0byBlbnN1cmUgR3N0U3RydWN0dXJlIGNvbnNpc3RlbmN5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoX2dzdF9tZXNzYWdlX2NvcHkpLCAoX2dzdF9tZXNzYWdlX2ZyZWUpLAoJICAoZ3N0X21lc3NhZ2VfbmV3KSwgKGdzdF9tZXNzYWdlX25ld19lcnJvciksCgkgIChnc3RfbWVzc2FnZV9uZXdfd2FybmluZyksIChnc3RfbWVzc2FnZV9uZXdfdGFnKSwKCSAgKGdzdF9tZXNzYWdlX25ld19zdGF0ZV9jaGFuZ2VkKSwgKGdzdF9tZXNzYWdlX25ld19hcHBsaWNhdGlvbiksCgkgIChnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5oOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfc2V0X3BhcmVudF9yZWZjb3VudCksCgkgIChnc3Rfc3RydWN0dXJlX2NvcHlfY29uZGl0aW9uYWwpOgoJICBVc2UgcGFyZW50IHJlZmNvdW50IGluIEdzdE1lc3NhZ2UgdG8gZW5zdXJlIEdzdFN0cnVjdHVyZQoJICBjb25zaXN0ZW5jeS4KCSAgQ2xlYW5lZCB1cCBoZWFkZXJzIGEgYml0LgoKMjAwNS0wNC0yMCAwOToxMDo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IE1ha2UgZ3N0X2NhcHNfcmVwbGFjZSgpIHdvcmsgbGlrZSBvdGhlciBfcmVwbGFjZSgpIGZ1bmN0aW9ucy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19iYXNlX2luaXQpLAoJICAoZ3N0X2Jhc2VzaW5rX3BhZF9nZXRjYXBzKSwgKGdzdF9iYXNlc2lua19pbml0KSwKCSAgKGdzdF9iYXNlc2lua19jaGFpbl91bmxvY2tlZCk6CgkgICogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzogKGhlbHBlcl9maW5kX3N1Z2dlc3QpLAoJICAoZ3N0X3R5cGVfZmluZF9oZWxwZXIpOgoJICAqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9oYXZlX3R5cGUpLCAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2luaXQpLAoJICAoc3RvcF90eXBlZmluZGluZyksIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfaGFuZGxlX2V2ZW50KSwKCSAgKGZpbmRfc3VnZ2VzdCksIChnc3RfdHlwZV9maW5kX2VsZW1lbnRfY2hhaW4pLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2NoZWNrZ2V0cmFuZ2UpLAoJICAoZ3N0X3R5cGVfZmluZF9lbGVtZW50X2dldHJhbmdlKSwgKGRvX3R5cGVmaW5kKSwKCSAgKGdzdF90eXBlX2ZpbmRfZWxlbWVudF9hY3RpdmF0ZSk6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOiAoX2dzdF9idWZmZXJfc3ViX2ZyZWUpLAoJICAoZ3N0X2J1ZmZlcl9kZWZhdWx0X2ZyZWUpLCAoZ3N0X2J1ZmZlcl9kZWZhdWx0X2NvcHkpLAoJICAoZ3N0X2J1ZmZlcl9zZXRfY2Fwcyk6CgkgICogZ3N0L2dzdGNhcHMuYzogKGdzdF9jYXBzX3JlZiksIChnc3RfY2Fwc191bnJlZiksCgkgIChnc3RfY2Fwc19yZXBsYWNlKToKCSAgKiBnc3QvZ3N0bWVzc2FnZS5jOiAoZ3N0X21lc3NhZ2VfbmV3KSwKCSAgKGdzdF9tZXNzYWdlX25ld19zdGF0ZV9jaGFuZ2VkKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9wZWVyX3NldF9hY3RpdmUpLAoJICAoZ3N0X3BhZF9zZXRfY2hlY2tnZXRyYW5nZV9mdW5jdGlvbiksCgkgIChnc3RfcGFkX2xpbmtfcHJlcGFyZV9maWx0ZXJlZCksIChnc3RfcGFkX3JlbGlua19maWx0ZXJlZCksCgkgIChnc3RfcGFkX3NldF9jYXBzKSwgKGdzdF9wYWRfY2hlY2tfcHVsbF9yYW5nZSksCgkgIChnc3RfcGFkX3B1bGxfcmFuZ2UpLCAoZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMpOgoJICAqIGdzdC9nc3RwYWQuaDoKCSAgKiBnc3QvZ3N0dHlwZWZpbmQuYzogKGdzdF90eXBlX2ZpbmRfcmVnaXN0ZXIpOgoJICBNYWtlIGdzdF9jYXBzX3JlcGxhY2UoKSB3b3JrIGxpa2Ugb3RoZXIgX3JlcGxhY2UoKSBmdW5jdGlvbnMuCgkgIFVzZSBfY2Fwc19yZXBsYWNlKCkgd2hlcmUgcG9zc2libGUuCgkgIE1ha2Ugc3VyZSBfbWVzc2FnZV9uZXcoKSBpbml0aWFsaXNlcyBpdHMgZmllbGQuCgkgIEFkZCBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXRfY2FwcygpCgoyMDA1LTA0LTE4IDA4OjUzOjAyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiBzL0FSR18vUFJPUF8vLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wNC0xOCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOiBzL0FSR18vUFJPUF8vLgoKMjAwNS0wNC0xOCAwODoyNDozMCArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOgoJICBnc3QvYmFzZS9nc3RiYXNlc3JjLmMgKGdzdF9iYXNlc3JjX3NldF9wcm9wZXJ0eSkKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDQtMTggIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jIChnc3RfYmFzZXNyY19zZXRfcHJvcGVydHkpCgkgIChnc3RfYmFzZXNyY19nZXRfcHJvcGVydHkpOiBCTE9DS1NJWkUgaXMgYSBVTE9ORy4gUmVuYW1lIEFSR18uLi4KCSAgdG8gUFJPUF8uLi4uCgoyMDA1LTA0LTE2IDIwOjI3OjU1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIE5FV1M6CgkqIHRlc3RzL01ha2VmaWxlLmFtOgoJICBORVdTIGJ1aWxkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBORVdTIGJ1aWxkCgoyMDA1LTA0LTE2IDIwOjE2OjM4ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkgIHJlbW92ZWQgc29tZSBsaW5lCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICByZW1vdmVkIHNvbWUgbGluZQoKMjAwNS0wNC0xNiAxNjoyODowNyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6CgkgIGFkZCBnc3QtcGx1Z2lucy1iYXNlIHRvIHBrZ2NvbmZpZyBwYXRoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgZ3N0LXBsdWdpbnMtYmFzZSB0byBwa2djb25maWcgcGF0aAoKMjAwNS0wNC0xNCAxNzoxNzozMCArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9mYXEvdXNpbmcueG1sOiBBZGQgbm90ZSBvbiBnc3RyZWFtZXItcHJvcGVydGllcyAoIzE1NDk5NikuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL3VzaW5nLnhtbDoKCSAgQWRkIG5vdGUgb24gZ3N0cmVhbWVyLXByb3BlcnRpZXMgKCMxNTQ5OTYpLgoKMjAwNS0wNC0xMyAxNzo0MToyOSArMDAwMCAgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgoKCSAgZG9jcy9yYW5kb20vYmJiL29wdGlvbmFsLXByb3BlcnRpZXM6IFNvbWUgYW5hbHlzaXMgb24gb3B0aW9uYWwgcHJvcGVydGllcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9yYW5kb20vYmJiL29wdGlvbmFsLXByb3BlcnRpZXM6CgkgIFNvbWUgYW5hbHlzaXMgb24gb3B0aW9uYWwgcHJvcGVydGllcy4KCjIwMDUtMDQtMTIgMTU6MDA6MzAgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIFVzZSBsaWJ4bWwyIGZvciByZWdpc3RyeSBwYXJzaW5nLCB1c2Ugc3RhdGljcGFkdGVtcGxhdGVzIGluIGVsZW1lbnRmYWN0b3JpZXMuIE1ha2VzIGdzdF9pbml0KCkgKy8tIDEweCBmYXN0ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZ3N0L3RtcGwvZ3N0ZWxlbWVudGZhY3Rvcnkuc2dtbDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RlbGVtZW50ZmFjdG9yeS5jOiAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9pbml0KSwKCSAgKGdzdF9lbGVtZW50X2ZhY3RvcnlfY2xlYW51cCksIChnc3RfZWxlbWVudF9yZWdpc3RlciksCgkgIChfX2dzdF9lbGVtZW50X2ZhY3RvcnlfYWRkX3N0YXRpY19wYWRfdGVtcGxhdGUpLAoJICAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfc3RhdGljX3BhZF90ZW1wbGF0ZXMpLAoJICAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jYW5fc3JjX2NhcHMpLAoJICAoZ3N0X2VsZW1lbnRfZmFjdG9yeV9jYW5fc2lua19jYXBzKToKCSAgKiBnc3QvcmVnaXN0cmllcy9NYWtlZmlsZS5hbToKCSAgKiBnc3QvcmVnaXN0cmllcy9nc3RsaWJ4bWxyZWdpc3RyeS5jOiAoZ3N0X3htbF9yZWdpc3RyeV9nZXRfdHlwZSksCgkgIChnc3RfeG1sX3JlZ2lzdHJ5X2NsYXNzX2luaXQpLCAoZ3N0X3htbF9yZWdpc3RyeV9pbml0KSwKCSAgKGdzdF94bWxfcmVnaXN0cnlfbmV3KSwgKGdzdF94bWxfcmVnaXN0cnlfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF94bWxfcmVnaXN0cnlfZ2V0X3Byb3BlcnR5KSwgKGdldF90aW1lKSwgKG1ha2VfZGlyKSwKCSAgKGdzdF94bWxfcmVnaXN0cnlfZ2V0X3Blcm1zX2Z1bmMpLAoJICAocGx1Z2luX3RpbWVzX29sZGVyX3RoYW5fcmVjdXJzZSksIChwbHVnaW5fdGltZXNfb2xkZXJfdGhhbiksCgkgIChnc3RfeG1sX3JlZ2lzdHJ5X29wZW5fZnVuYyksIChnc3RfeG1sX3JlZ2lzdHJ5X2xvYWRfZnVuYyksCgkgIChnc3RfeG1sX3JlZ2lzdHJ5X3NhdmVfZnVuYyksIChnc3RfeG1sX3JlZ2lzdHJ5X2Nsb3NlX2Z1bmMpLAoJICAoYWRkX3RvX2NoYXJfYXJyYXkpLCAocmVhZF9zdHJpbmcpLCAocmVhZF91aW50KSwgKHJlYWRfZW51bSksCgkgIChsb2FkX3BhZF90ZW1wbGF0ZSksIChsb2FkX2ZlYXR1cmUpLCAobG9hZF9wbHVnaW4pLCAobG9hZF9wYXRocyksCgkgIChnc3RfeG1sX3JlZ2lzdHJ5X2xvYWQpLCAoZ3N0X3htbF9yZWdpc3RyeV9sb2FkX3BsdWdpbiksCgkgIChnc3RfeG1sX3JlZ2lzdHJ5X3NhdmVfY2FwcyksIChnc3RfeG1sX3JlZ2lzdHJ5X3NhdmVfcGFkX3RlbXBsYXRlKSwKCSAgKGdzdF94bWxfcmVnaXN0cnlfc2F2ZV9mZWF0dXJlKSwgKGdzdF94bWxfcmVnaXN0cnlfc2F2ZV9wbHVnaW4pLAoJICAoZ3N0X3htbF9yZWdpc3RyeV9zYXZlKSwgKGdzdF94bWxfcmVnaXN0cnlfcmVidWlsZF9yZWN1cnNlKSwKCSAgKGdzdF94bWxfcmVnaXN0cnlfcmVidWlsZCk6CgkgICogZ3N0L3JlZ2lzdHJpZXMvZ3N0bGlieG1scmVnaXN0cnkuaDoKCSAgKiB0b29scy9nc3QtY29tcHByZXAuYzogKG1haW4pOgoJICAqIHRvb2xzL2dzdC1pbnNwZWN0LmM6IChwcmludF9wYWRfdGVtcGxhdGVzX2luZm8pOgoJICAqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6IChwcmludF9lbGVtZW50X2luZm8pOgoJICBVc2UgbGlieG1sMiBmb3IgcmVnaXN0cnkgcGFyc2luZywgdXNlIHN0YXRpY3BhZHRlbXBsYXRlcyBpbgoJICBlbGVtZW50ZmFjdG9yaWVzLiBNYWtlcyBnc3RfaW5pdCgpICsvLSAxMHggZmFzdGVyLgoKMjAwNS0wNC0xMiAxMDo1Mjo1NSArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6CgkqIGdzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuYzoKCSogZ3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaDoKCSogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkqIGdzdC9lbGVtZW50cy9nc3RmaWxlc3JjLmM6CgkqIGdzdC9lbGVtZW50cy9nc3R0eXBlZmluZGVsZW1lbnQuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5oOgoJKiBnc3QvZ3N0cGlwZWxpbmUuYzoKCSogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdGJhc2VzcmMuYzoKCSogbGlicy9nc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5jOgoJKiBsaWJzL2dzdC9iYXNlL2dzdHR5cGVmaW5kaGVscGVyLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvTWFrZWZpbGUuYW06CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZWxlbWVudHMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHR5cGVmaW5kZWxlbWVudC5oOgoJICBBZGRlZCB0eXBlZmluZCBoZWxwZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBBZGRlZCB0eXBlZmluZCBoZWxwZXIuCgkgIFNtYWxsIHByZXJvbGwgZml4IGluIHRoZSBiYXNlIHNpbmsuCgkgIERpc2FibGUgdHlwZWZpbmQgY29kZSBpbiBiYXNlc3JjLgoJICBDcnVkZSBwb3J0IG9mIHR5cGVmaW5kZWxlbWVudC4KCSAgRmFrZXNyYyBjbGVhbnVwcy4KCjIwMDUtMDQtMTIgMDk6MTY6MDAgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBjaGVjay9nc3QvZ3N0ZGF0YS5jOgoJKiB0ZXN0cy9jaGVjay9nc3QvZ3N0ZGF0YS5jOgoJICBJbmNyZWFzZSB0aW1lb3V0IHNvbWUgbW9yZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgSW5jcmVhc2UgdGltZW91dCBzb21lIG1vcmUKCjIwMDUtMDQtMTEgMTI6MDI6MTMgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJICBvbmx5IGRpcnMKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIG9ubHkgZGlycwoKMjAwNS0wNC0xMSAxMTo0MDoxMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkgIGZpeCBkaXN0Y2hlY2sKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGZpeCBkaXN0Y2hlY2sKCjIwMDUtMDQtMTEgMTE6MjQ6NTMgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBjaGVjay86IEZpeCB1cCB0aGUgdGltZW91dCBzbyB0aGF0IHRoZSB0ZXN0IGRvZXMgbm90IGZhaWwuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL2dzdC9nc3RidXMuYzogKGdzdGJ1c19zdWl0ZSk6CgkgICogY2hlY2svZ3N0L2dzdGRhdGEuYzogKHRocmVhZF9yZWYpLCAoZ3N0X2RhdGFfc3VpdGUpOgoJICAqIGNoZWNrL2dzdGNoZWNrLmg6CgkgIEZpeCB1cCB0aGUgdGltZW91dCBzbyB0aGF0IHRoZSB0ZXN0IGRvZXMgbm90IGZhaWwuCgoyMDA1LTA0LTExIDA5OjUzOjQ0ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvTWFrZWZpbGUuYW06CgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbToKCSAgZGlzdCB0cmlnZ2VyCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkaXN0IHRyaWdnZXIKCjIwMDUtMDQtMTAgMjE6NDI6MzIgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSAgd29yayB3aXRoIGRlYnVnIGRpc2FibGVkCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICB3b3JrIHdpdGggZGVidWcgZGlzYWJsZWQKCjIwMDUtMDQtMTAgMjA6Mjk6NDQgKzAwMDAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgoKCSogZ3N0L2dzdG9iamVjdC5jOgoJICB3b3JrIHdpdGggZGVidWcgZGlzYWJsZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIHdvcmsgd2l0aCBkZWJ1ZyBkaXNhYmxlZAoKMjAwNS0wNC0xMCAxODoxOToxOCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBhdXRvZ2VuLnNoOgoJICBpZ25vcmUgYWxyZWFkeSBhcHBsaWVkIHBhdGNoCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBpZ25vcmUgYWxyZWFkeSBhcHBsaWVkIHBhdGNoCgoyMDA1LTA0LTA4IDExOjM0OjE0ICswMDAwICBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJICBmaWxlIGdzdHBhcmVudC5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEJSQU5DSC1HU1RSRUFNRVItMF84LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgZmlsZSBnc3RwYXJlbnQuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBCUkFOQ0gtR1NUUkVBTUVSLTBfOC4KCjIwMDUtMDQtMDggMTE6MzQ6MTQgKzAwMDAgIFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkgIGZpbGUgZ3N0cGFyZW50Lmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggQlJBTkNILUdTVFJFQU1FUi0wXzguCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBmaWxlIGdzdHBhcmVudC5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEJSQU5DSC1HU1RSRUFNRVItMF84LgoKMjAwNS0wNC0wNiAxNzozMDo0OCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IE1vcmUgd29yayBvbiB0aGUgZ2VuZXJpYyBzb3VyY2UgYmFzZSBjbGFzcywgaW1wbGVtZW50IHNlZWtpbmcsIHF1ZXJ5LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9SRUFETUU6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5jOiAoZ3N0X2Jhc2VzcmNfZ2V0X3R5cGUpLAoJICAoZ3N0X2Jhc2VzcmNfaW5pdCksIChnc3RfYmFzZXNyY19nZXRfZm9ybWF0cyksIChnc3RfYmFzZXNyY19xdWVyeSksCgkgIChnc3RfYmFzZXNyY19nZXRfZXZlbnRfbWFzayksIChnc3RfYmFzZXNyY19kb19zZWVrKSwKCSAgKGdzdF9iYXNlc3JjX2V2ZW50X2hhbmRsZXIpLCAoZ3N0X2Jhc2VzcmNfZ2V0X3JhbmdlX3VubG9ja2VkKSwKCSAgKGdzdF9iYXNlc3JjX2NoZWNrX2dldF9yYW5nZSksIChnc3RfYmFzZXNyY19sb29wKSwKCSAgKGdzdF9iYXNlc3JjX3VubG9jayksIChnc3RfYmFzZXNyY19nZXRfc2l6ZSksIChnc3RfYmFzZXNyY19zdGFydCksCgkgIChnc3RfYmFzZXNyY19zdG9wKSwgKGdzdF9iYXNlc3JjX2FjdGl2YXRlKSwKCSAgKGdzdF9iYXNlc3JjX2NoYW5nZV9zdGF0ZSksIChiYXNlc3JjX2ZpbmRfcGVlayksCgkgIChiYXNlc3JjX2ZpbmRfc3VnZ2VzdCksIChnc3RfYmFzZXNyY190eXBlX2ZpbmQpOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzcmMuaDoKCSAgKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOiAoZ3N0X2ZpbGVzcmNfYmFzZV9pbml0KSwKCSAgKGdzdF9maWxlc3JjX2NsYXNzX2luaXQpLCAoZ3N0X2ZpbGVzcmNfaW5pdCksCgkgIChnc3RfZmlsZXNyY19maW5hbGl6ZSksIChnc3RfZmlsZXNyY19zZXRfbG9jYXRpb24pLAoJICAoZ3N0X2ZpbGVzcmNfc2V0X3Byb3BlcnR5KSwgKGdzdF9maWxlc3JjX2dldF9wcm9wZXJ0eSksCgkgIChnc3RfZmlsZXNyY19mcmVlX3BhcmVudF9tbWFwKSwgKGdzdF9maWxlc3JjX21hcF9yZWdpb24pLAoJICAoZ3N0X2ZpbGVzcmNfbWFwX3NtYWxsX3JlZ2lvbiksIChnc3RfZmlsZXNyY19jcmVhdGVfbW1hcCksCgkgIChnc3RfZmlsZXNyY19jcmVhdGVfcmVhZCksIChnc3RfZmlsZXNyY19jcmVhdGUpLAoJICAoZ3N0X2ZpbGVzcmNfZ2V0X3NpemUpLCAoZ3N0X2ZpbGVzcmNfc3RhcnQpLCAoZ3N0X2ZpbGVzcmNfc3RvcCk6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfbG9zdF9zdGF0ZSksIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9wZWVyX3NldF9hY3RpdmUpLAoJICAoZ3N0X3BhZF9zZXRfY2hlY2tnZXRyYW5nZV9mdW5jdGlvbiksIChnc3RfcGFkX2NoZWNrX3B1bGxfcmFuZ2UpLAoJICAoZ3N0X3BhZF9wdWxsX3JhbmdlKToKCSAgKiBnc3QvZ3N0cGFkLmg6CgkgIE1vcmUgd29yayBvbiB0aGUgZ2VuZXJpYyBzb3VyY2UgYmFzZSBjbGFzcywgaW1wbGVtZW50IHNlZWtpbmcsCgkgIHF1ZXJ5LgoJICBNYWtlIGZpbGVzcmMgZXh0ZW5kIHRoZSBiYXNlIHNvdXJjZSBjbGFzcy4KCSAgQWRkZWQgZ3N0X3BhZF9zZXRfY2hlY2tnZXRyYW5nZV9mdW5jdGlvbiB0byBHc3RQYWQuCgoyMDA1LTA0LTA2IDExOjA4OjA3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBwa2djb25maWcvOiBOZXcgZmlsZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTA0LTA2ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFzZS5wYy5pbjoKCSAgKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhc2UtdW5pbnN0YWxsZWQucGMuaW46IE5ldyBmaWxlcy4KCSAgKiBwa2djb25maWcvTWFrZWZpbGUuYW06CgkgICogY29uZmlndXJlLmFjIChBQ19PVVRQVVQpOiBBZGQgZ3N0cmVhbWVyLWJhc2UgcGtnY29uZmlnIGZpbGVzLgoKMjAwNS0wNC0wNSAxNzo0MTo1MSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBkb2NzL2ZhcS9jdnMueG1sOgoJICBhZGQgYSBub3RlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgYSBub3RlCgoyMDA1LTA0LTA1IDA4OjQ0OjIwICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogTWFkZSBiYXNlIHNvdXJjZSBjbGFzcywgbWFrZSBmYWtlc3JjIGV4dGVuZCBpdC4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkgICogZ3N0L2Jhc2UvUkVBRE1FOgoJICAqIGdzdC9iYXNlL2dzdGJhc2VzaW5rLmM6IChnc3RfYmFzZXNpbmtfYmFzZV9pbml0KSwKCSAgKGdzdF9iYXNlc2lua19wYWRfZ2V0Y2FwcyksIChnc3RfYmFzZXNpbmtfcGFkX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VzaW5rX3BhZF9idWZmZXJfYWxsb2MpLCAoZ3N0X2Jhc2VzaW5rX2luaXQpLAoJICAoZ3N0X2Jhc2VzaW5rX2RvX3N5bmMpLCAoZ3N0X2Jhc2VzaW5rX2NoYWluX3VubG9ja2VkKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNlc3JjLmM6IChnc3RfYmFzZXNyY19nZXRfdHlwZSksCgkgIChnc3RfYmFzZXNyY19iYXNlX2luaXQpLCAoZ3N0X2Jhc2VzcmNfY2xhc3NfaW5pdCksCgkgIChnc3RfYmFzZXNyY19pbml0KSwgKGdzdF9iYXNlc3JjX2dldF9mb3JtYXRzKSwKCSAgKGdzdF9iYXNlc3JjX2dldF9xdWVyeV90eXBlcyksIChnc3RfYmFzZXNyY19xdWVyeSksCgkgIChnc3RfYmFzZXNyY19nZXRfZXZlbnRfbWFzayksIChnc3RfYmFzZXNyY19ldmVudF9oYW5kbGVyKSwKCSAgKGdzdF9iYXNlc3JjX3NldF9wcm9wZXJ0eSksIChnc3RfYmFzZXNyY19nZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Jhc2VzcmNfZ2V0X3JhbmdlX3VubG9ja2VkKSwgKGdzdF9iYXNlc3JjX2dldF9yYW5nZSksCgkgIChnc3RfYmFzZXNyY19sb29wKSwgKGdzdF9iYXNlc3JjX2FjdGl2YXRlKSwKCSAgKGdzdF9iYXNlc3JjX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNyYy5oOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmM6IChnc3RfZmFrZXNyY19iYXNlX2luaXQpLAoJICAoZ3N0X2Zha2VzcmNfY2xhc3NfaW5pdCksIChnc3RfZmFrZXNyY19pbml0KSwKCSAgKGdzdF9mYWtlc3JjX2V2ZW50X2hhbmRsZXIpLCAoZ3N0X2Zha2VzcmNfc2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9mYWtlc3JjX2dldF9wcm9wZXJ0eSksIChnc3RfZmFrZXNyY19jcmVhdGUpOgoJICAqIGdzdC9lbGVtZW50cy9nc3RmYWtlc3JjLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzogKGdzdF9maWxlc3JjX2dldHJhbmdlKSwKCSAgKGdzdF9maWxlc3JjX29wZW5fZmlsZSksIChnc3RfZmlsZXNyY19sb29wKSwKCSAgKGdzdF9maWxlc3JjX2FjdGl2YXRlKSwgKGZpbGVzcmNfZmluZF9wZWVrKSwKCSAgKGdzdF9maWxlc3JjX3R5cGVfZmluZCk6CgkgIE1hZGUgYmFzZSBzb3VyY2UgY2xhc3MsIG1ha2UgZmFrZXNyYyBleHRlbmQgaXQuCgkgIEFkZCBjb21tZW50cyB0byBiYXNlc2luayBjbGFzcy4KCSAgU29tZSBmaWxlc3JjIGNsZWFudXAuCgoyMDA1LTA0LTAxIDEwOjE0OjQ1ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiB0ZXN0cy9tZW1jaHVuay9nbWVtY2h1bmt0ZXN0LmM6CgkgIGFkZCBzdXBwb3J0IGZvciBnb29nbGUgbWFsbG9jIGlmIGF2YWlsYWJsZQoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgYWRkIHN1cHBvcnQgZm9yIGdvb2dsZSBtYWxsb2MgaWYgYXZhaWxhYmxlCgoyMDA1LTA0LTAxIDAyOjQxOjM1ICswMDAwICBEYXZpZCBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KCgkgIGdzdC9nc3RwbHVnaW4uYzogU3dpdGNoIHRvIHVzaW5nIEdfTU9EVUxFX0JJTkRfTE9DQUwsIHdoaWNoIG1lYW5zIHBsdWdpbnMgYXJlIG5vdyBleHBlY3RlZCB0byBsaW5rIGFnYWluc3QgbGliZ3N0cmVhbWVyLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0cGx1Z2luLmM6IChnc3RfcGx1Z2luX2NoZWNrX2ZpbGUpLCAoZ3N0X3BsdWdpbl9sb2FkX2ZpbGUpOgoJICBTd2l0Y2ggdG8gdXNpbmcgR19NT0RVTEVfQklORF9MT0NBTCwgd2hpY2ggbWVhbnMgcGx1Z2lucyBhcmUgbm93CgkgIGV4cGVjdGVkIHRvIGxpbmsgYWdhaW5zdCBsaWJnc3RyZWFtZXIuCgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06IGxpbmsgYWdhaW5zdCBsaWJnc3RyZWFtZXIKCSAgKiBnc3QvZWxlbWVudHMvTWFrZWZpbGUuYW06IHNhbWUKCjIwMDUtMDMtMzEgMTU6MDA6MTEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHRlc3RzL2luc3RhbnRpYXRlLzogQWRkIHRlc3QgdG8gdGVzdCBzcGVlZCBvZiBjYXBzIGNvcHkgYW5kIGZyZWUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTAzLTMxICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHRlc3RzL2luc3RhbnRpYXRlL01ha2VmaWxlLmFtOgoJICAqIHRlc3RzL2luc3RhbnRpYXRlL2NhcHMuYzogQWRkIHRlc3QgdG8gdGVzdCBzcGVlZCBvZiBjYXBzIGNvcHkKCSAgYW5kIGZyZWUuCgkgICogdGVzdHMvbWVtY2h1bmsvZ21lbWNodW5rdGVzdC5jIChtYWluKTogVXNlIGFsbG9jIG9ubHkgb24gdGhlCgkgIEdNZW1DaHVuayB0byBiZSBmYWlyLgoJICAqIGdzdC9nc3R0cmFzaHN0YWNrLmg6IFJlbW92ZSB3YXJuaW5nIGFib3V0IHVzaW5nIHRoZSBmYWxsYmFjawoJICB0cmFzaCBzdGFjayBpbXBsZW1lbnRhdGlvbiwgaXQncyBzdGlsbCBmYXN0ZXIgdGhhbiBtYWxsb2MuCgoyMDA1LTAzLTMxIDEwOjEwOjU1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgZ3N0LzogQWRkZWQgc3RhcnQvc3RvcCBtZXRob2RzIHRvIHRyYW5zZm9ybSBiYXNlIGNsYXNzIHNvIHN1YmNsYXNzZXMgZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggc3RhdGUgY2hhbmdlcyBldmVuLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fYmFzZV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9jbGFzc19pbml0KSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9pbml0KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRjYXBzKSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9oYW5kbGVfYnVmZmVyKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRfcHJvcGVydHkpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NpbmtfYWN0aXZhdGUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NyY19hY3RpdmF0ZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmg6CgkgICogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6IChnc3RfaWRlbnRpdHlfY2xhc3NfaW5pdCksCgkgIChnc3RfaWRlbnRpdHlfZXZlbnQpLCAoZ3N0X2lkZW50aXR5X2NoZWNrX3BlcmZlY3QpLAoJICAoZ3N0X2lkZW50aXR5X3RyYW5zZm9ybSksIChnc3RfaWRlbnRpdHlfc3RhcnQpLAoJICAoZ3N0X2lkZW50aXR5X3N0b3ApOgoJICBBZGRlZCBzdGFydC9zdG9wIG1ldGhvZHMgdG8gdHJhbnNmb3JtIGJhc2UgY2xhc3Mgc28gc3ViY2xhc3NlcwoJICBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBzdGF0ZSBjaGFuZ2VzIGV2ZW4uCgoyMDA1LTAzLTMxIDEwOjEwOjIxICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJKiB0ZXN0cy9tZW1jaHVuay9nbWVtY2h1bmt0ZXN0LmM6CgkgIGFkZCBwZXItdGhyZWFkIHN0YXRzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhZGQgcGVyLXRocmVhZCBzdGF0cwoKMjAwNS0wMy0zMSAwOTo0NjoyOCArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IEFkZGVkIHJhdGUgdG8gdGhlIGRpc2NvbnQgZXZlbnQgdG8gcHJlcGFyZSBmb3IgdmFyaWFibGUgc3BlZWQgYW5kIHJldmVyc2UgcGxheWJhY2suCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RldmVudC5jOiAoZ3N0X2V2ZW50X25ld19kaXNjb250aW51b3VzX3ZhbGlzdCksCgkgIChnc3RfZXZlbnRfbmV3X2Rpc2NvbnRpbnVvdXMpLCAoZ3N0X2V2ZW50X2Rpc2NvbnRfZ2V0X3ZhbHVlKToKCSAgKiBnc3QvZ3N0ZXZlbnQuaDoKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9wZWVyX3NldF9hY3RpdmUpLAoJICAoZ3N0X3BhZF9wdWxsX3JhbmdlKToKCSAgQWRkZWQgcmF0ZSB0byB0aGUgZGlzY29udCBldmVudCB0byBwcmVwYXJlIGZvciB2YXJpYWJsZSBzcGVlZAoJICBhbmQgcmV2ZXJzZSBwbGF5YmFjay4KCjIwMDUtMDMtMzAgMTQ6MDk6MDEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkqIHRlc3RzL21lbWNodW5rL2dtZW1jaHVua3Rlc3QuYzoKCSAgQ29tbWl0IG1lbSBjaHVuayB0ZXN0OyBwcm9iYWJseSB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBDb21taXQgbWVtIGNodW5rIHRlc3Q7IHByb2JhYmx5IHdpbGwgYmUgcmVtb3ZlZCBsYXRlci4KCjIwMDUtMDMtMzAgMDM6NTc6MzkgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgQSBsaXR0bGUgZXhhbXBsZSBwcm9ncmFtIHRvIHNob3cgaG93IHRyaWdnZXItYmFzZWQgZWxlbWVudHMgY2FuIHdvcmsuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNvbmZpZ3VyZS5hYzoKCSAgKiB0ZXN0c3VpdGUvdHJpZ2dlci9NYWtlZmlsZS5hbToKCSAgKiB0ZXN0c3VpdGUvdHJpZ2dlci90cmlnZ2VyLmM6IEEgbGl0dGxlIGV4YW1wbGUgcHJvZ3JhbSB0byBzaG93CgkgIGhvdyB0cmlnZ2VyLWJhc2VkIGVsZW1lbnRzIGNhbiB3b3JrLgoKMjAwNS0wMy0yOSAxNjoxODoxMiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC86IFNpbXBsaWZ5IHBhZCBhY3RpdmF0aW9uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvYmFzZS9NYWtlZmlsZS5hbToKCSAgKiBnc3QvYmFzZS9SRUFETUU6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzogKGdzdF9iYXNlc2lua19nZXRfdHlwZSksCgkgIChnc3RfYmFzZXNpbmtfYmFzZV9pbml0KSwgKGdzdF9iYXNlc2lua19jbGFzc19pbml0KSwKCSAgKGdzdF9iYXNlc2lua19wYWRfZ2V0Y2FwcyksIChnc3RfYmFzZXNpbmtfaW5pdCksCgkgIChnc3RfYmFzZXNpbmtfYWN0aXZhdGUpLCAoZ3N0X2Jhc2VzaW5rX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSAgKiBnc3QvYmFzZS9nc3RiYXNldHJhbnNmb3JtLmM6IChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3R5cGUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2Jhc2VfaW5pdCksIChnc3RfYmFzZV90cmFuc2Zvcm1fZmluYWxpemUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NsYXNzX2luaXQpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2luaXQpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3Byb3h5X2dldGNhcHMpLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldGNhcHMpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2V2ZW50KSwgKGdzdF9iYXNlX3RyYW5zZm9ybV9nZXRyYW5nZSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fY2hhaW4pLCAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2hhbmRsZV9idWZmZXIpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9wcm9wZXJ0eSksCgkgIChnc3RfYmFzZV90cmFuc2Zvcm1fZ2V0X3Byb3BlcnR5KSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zaW5rX2FjdGl2YXRlKSwKCSAgKGdzdF9iYXNlX3RyYW5zZm9ybV9zcmNfYWN0aXZhdGUpLAoJICAoZ3N0X2Jhc2VfdHJhbnNmb3JtX2NoYW5nZV9zdGF0ZSk6CgkgICogZ3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oOgoJICAqIGdzdC9lbGVtZW50cy9nc3RpZGVudGl0eS5jOiAoZ3N0X2lkZW50aXR5X2ZpbmFsaXplKSwKCSAgKGdzdF9pZGVudGl0eV9jbGFzc19pbml0KSwgKGdzdF9pZGVudGl0eV9pbml0KSwKCSAgKGdzdF9pZGVudGl0eV9ldmVudCksIChnc3RfaWRlbnRpdHlfY2hlY2tfcGVyZmVjdCksCgkgIChnc3RfaWRlbnRpdHlfdHJhbnNmb3JtKSwgKGdzdF9pZGVudGl0eV9zZXRfcHJvcGVydHkpLAoJICAoZ3N0X2lkZW50aXR5X2dldF9wcm9wZXJ0eSksIChnc3RfaWRlbnRpdHlfY2hhbmdlX3N0YXRlKToKCSAgKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuaDoKCSAgKiBnc3QvZ3N0ZWxlbWVudC5jOiAoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlX2Z1bmMpLAoJICAoZ3N0X2VsZW1lbnRfbG9zdF9zdGF0ZSksIChnc3RfZWxlbWVudF9wYWRzX2FjdGl2YXRlKToKCSAgKiBnc3QvZ3N0cGFkLmM6IChnc3RfcGFkX3NldF9hY3RpdmUpLCAoZ3N0X3BhZF9wZWVyX3NldF9hY3RpdmUpLAoJICAoZ3N0X3BhZF9jaGVja19wdWxsX3JhbmdlKSwgKGdzdF9wYWRfcHVsbF9yYW5nZSk6CgkgICogZ3N0L2dzdHBhZC5oOgoJICBTaW1wbGlmeSBwYWQgYWN0aXZhdGlvbi4KCSAgQWRkZWQgZnVuY3Rpb24gdG8gY2hlY2sgaWYgcHVsbF9yYW5nZSBjYW4gYmUgcGVyZm9ybWVkLgoJICBFcnJvciBvdXQgd2hlbiBwdWxsaW5nIGluYWN0aXZlIG9yIGZsdXNoaW5nIHBhZHMuCgkgIFJlbW92ZWQgY29uc3QgZnJvbSByZWZjb3VudGVkIHR5cGVzIGFzIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UuCgkgIFNpbXBsaWZ5IHBhZCB0ZW1wbGF0ZXMgaW4gYmFzZXNpbmsKCSAgQWRkZWQgYmFzZSBjbGFzcyBmb3Igc2ltcGxlIDEtdG8tMSB0cmFuc2Zvcm1zLgoJICBNYWtlIGlkZW50aXR5IHN1YmNsYXNzIHRoZSBiYXNlIHRyYW5zZm9ybS4KCjIwMDUtMDMtMjkgMTQ6MzQ6NTEgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIGRvY3MvOiBBZGQgdGhlc2UgZmlsZXMgdG8gQ1ZTLiBOb3cgSSByZWFsbHkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24sIGJ1dCBsaWtlIHdoYXRldmVyLiBJIHdhbnQgZ3JlZW4gYnVpbGRib3QhCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTAzLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1vdmVycmlkZXMudHh0OgoJICAqIGRvY3MvZ3N0L2dzdHJlYW1lci1vdmVycmlkZXMudHh0OiBBZGQgdGhlc2UgZmlsZXMgdG8gQ1ZTLiBOb3cgSQoJICByZWFsbHkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24sIGJ1dCBsaWtlIHdoYXRldmVyLiBJIHdhbnQKCSAgZ3JlZW4gYnVpbGRib3QhCgoyMDA1LTAzLTI5IDE0OjEyOjQ4ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBkb2NzLzogRGlzdCB0aGUgb3ZlcnJpZGVzIGZpbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wMy0yOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSAgKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06IERpc3QgdGhlIG92ZXJyaWRlcyBmaWxlcy4KCSAgKiBjaGVjay9NYWtlZmlsZS5hbSAoY2xlYW4tbG9jYWwpOiBSZW1vdmUgLmxpYnMgZGlyZWN0b3JpZXMuCgkgICogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIGFsbCB0aGUgYXR0aWMKCSAgZWxlbWVudHMgdG8gRVhUUkFfRElTVCwgc28gcG8vIGZpbGVzIGFyZSBoYXBweS4KCjIwMDUtMDMtMjkgMTM6MTA6MjUgKzAwMDAgIEFuZHkgV2luZ28gPHdpbmdvQHBvYm94LmNvbT4KCgkgIHBvL1BPVEZJTEVTOiBSZW1vdmUgZ3N0c3BpZGVyLmMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAyMDA1LTAzLTI5ICBBbmR5IFdpbmdvICA8d2luZ29AcG9ib3guY29tPgoJICAqIHBvL1BPVEZJTEVTOiBSZW1vdmUgZ3N0c3BpZGVyLmMuCgkgICogY29uZmlndXJlLmFjIChBQ19PVVRQVVQpOiBBZGQgbWlzc2luZyB0ZXN0c3VpdGUgbWFrZWZpbGVzLgoJICAqIGRvY3MvbGlicy9nc3RyZWFtZXItbGlicy1kb2NzLnNnbWw6CgkgICogZG9jcy9saWJzL2dzdHJlYW1lci1saWJzLXNlY3Rpb25zLnR4dDogUmVtb3ZlIHRoZSBzZWN0aW9uIG9uCgkgIGJ5dGVzdHJlYW0uCgkgICogdGVzdHMvY29tcGxleGl0eS5jIChtYWluKTogU2V0IHRoZSBsZW5ndGggb2YgdGhlIHByZXJvbGwgcXVldWUKCSAgb24gdGhlIHNpbmtzIHRvIHByZXZlbnQgYSBsb2NrdXAuCgoyMDA1LTAzLTI5IDExOjM5OjE3ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvOiBSZW1vdmUgdGVzdCwgaXQncyB0aGUgc2FtZSBhcyB0aGUgb25lIGluIGNoZWNrL2dzdC1saWJzL2dkcC5jLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wMy0yOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBsaWJzL2dzdC9kYXRhcHJvdG9jb2wvTWFrZWZpbGUuYW06CgkgICogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC10ZXN0LmM6IFJlbW92ZSB0ZXN0LCBpdCdzCgkgIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gY2hlY2svZ3N0LWxpYnMvZ2RwLmMuCgoyMDA1LTAzLTI5IDEwOjU1OjM5ICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICBwby8sIGRvY3MvZ3N0LzogQ29tbWl0IGF1dG9tYXRpYyBjaGFuZ2VzIHRvIGRvY3MgYW5kIHBvIGZpbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wMy0yOSAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiBwby8sIGRvY3MvZ3N0LzogQ29tbWl0IGF1dG9tYXRpYyBjaGFuZ2VzIHRvIGRvY3MgYW5kIHBvIGZpbGVzLgoJICAqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbSAobGliZ3N0ZWxlbWVudHNfbGFfTERGTEFHUyk6IExpbmsgdG8KCSAgdGhlIHZlcnNpb25lZCBsaWJnc3RiYXNlLgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOiBEZXBlbmQgb24gYW4gdW52ZXJzaW9uZWQgZ3N0LXJlZ2lzdGVyLCBzZWVtcwoJICB0byBtYWtlIGF1dG9jb25mIGhhcHBpZXIuCgkgICogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06IE1ha2UgbGliZ3N0YmFzZSBhIHZlcnNpb25lZCBsaWIuCgoyMDA1LTAzLTI4IDE0OjU0OjMzICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjb25maWd1cmUuYWM6CgkqIGRvY3MvZGVzaWduL3BhcnQtZ3N0ZWxlbWVudC50eHQ6CgkqIGRvY3MvZGVzaWduL3BhcnQtbmVnb3RpYXRpb24udHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LXByZXJvbGwudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LXNjaGVkdWxpbmcudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YXRlcy50eHQ6CgkqIGdzdC9NYWtlZmlsZS5hbToKCSogZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CgkqIGdzdC9iYXNlL1JFQURNRToKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuaDoKCSogZ3N0L2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZha2VzaW5rLmg6CgkqIGdzdC9nc3RiaW4uYzoKCSogZ3N0L2dzdGVsZW1lbnQuYzoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cGlwZWxpbmUuYzoKCSogbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbToKCSogbGlicy9nc3QvYmFzZS9SRUFETUU6CgkqIGxpYnMvZ3N0L2Jhc2UvZ3N0YmFzZXNpbmsuYzoKCSogbGlicy9nc3QvYmFzZS9nc3RiYXNlc2luay5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuaDoKCSAgQWRkZWQgc3RhdGUgY2hhbmdlIGNvZGUuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBBZGRlZCBzdGF0ZSBjaGFuZ2UgY29kZS4KCSAgQWRkZWQvdXBkYXRlZCBkb2NzLgoJICBBZGRlZCBzaW5rIGJhc2UgY2xhc3MsIG1ha2UgZmFrZXNpbmsgZXh0ZW5kIHRoZSBiYXNlIGNsYXNzLgoJICBTbWFsbCBjbGVhbnVwcyBpbiBHc3RQaXBlbGluZS4KCjIwMDUtMDMtMjYgMjI6MDc6NTMgKzAwMDAgIERhdmlkIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgoKCSAgZ3N0L01ha2VmaWxlLmFtOiByZW1vdmUgZ3N0Y3B1LltjaF0uICBUaGUgZ3N0X2NwdSBmdW5jdGlvbmFsaXR5IGlzIGJyb2tlbiBhbmQgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIGEgZGlmZmVyZW50IGxpLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9NYWtlZmlsZS5hbTogcmVtb3ZlIGdzdGNwdS5bY2hdLiAgVGhlIGdzdF9jcHUgZnVuY3Rpb25hbGl0eQoJICBpcyBicm9rZW4gYW5kIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBhIGRpZmZlcmVudCBsaWJyYXJ5LgoJICAqIGdzdC9nc3QuYzogKGluaXRfcG9zdCk6IGRvbid0IGNhbGwgX2dzdF9jcHVfaW5pdGlhbGl6ZSgpCgkgICogZ3N0L2dzdC5oOiByZW1vdmUgZ3N0Y3B1LmgKCSAgKiBnc3QvZ3N0Y3B1LmM6IHJlbW92ZQoJICAqIGdzdC9nc3RjcHUuaDogcmVtb3ZlCgkgICogZ3N0L01ha2VmaWxlLmFtLmZ1dHVyZTogUmVtb3ZlIHRoaXMgZmlsZS4gIEl0J3MgYW5jaWVudC4KCjIwMDUtMDMtMjUgMDk6NTc6NDIgKzAwMDAgIFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KCgkgIGdzdC9nc3RiaW4uYzogQWRkIGRlZmF1bHQgZXZlbnQvc2V0X21hbmFnZXIgaGFuZGxlcnMuIFRoZSBzZXRfbWFuYWdlciBoYW5kbGVyIHRha2VzIGNhcmUgdGhhdCB0aGUgbWFuYWdlciBpcyBkaXN0cmlidS4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YmluLmM6IChnc3RfYmluX2NsYXNzX2luaXQpLCAoZ3N0X2Jpbl9zZXRfbWFuYWdlciksCgkgIChnc3RfYmluX3NlbmRfZXZlbnQpOgoJICBBZGQgZGVmYXVsdCBldmVudC9zZXRfbWFuYWdlciBoYW5kbGVycy4gVGhlIHNldF9tYW5hZ2VyIGhhbmRsZXIKCSAgdGFrZXMgY2FyZSB0aGF0IHRoZSBtYW5hZ2VyIGlzIGRpc3RyaWJ1dGVkIG92ZXIga2lkcyB0aGF0IHdlcmUKCSAgYWxyZWFkeSBpbiB0aGUgYmluIGJlZm9yZSB0aGUgbWFuYWdlciB3YXMgc2V0LiBUaGUgZXZlbnQgaGFuZGxlcgoJICBpcyBhIHV0aWxpdHkgdmlydHVhbCBmdW5jdGlvbiB0aGF0IHNlbmRzIHRoZSBldmVudCBvdmVyIGFsbCBzaW5rcywKCSAgc28gdGhhdCBnc3RfZWxlbWVudF9zZW5kX2V2ZW50IChiaW4sIGV2ZW50KTsgaGFzIHRoZSBleHBlY3RlZAoJICBiZWhhdmlvdXIuCgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9ldmVudF9kZWZhdWx0KToKCSAgUmUtaW5zdGFsbCBkZWZhdWx0IGV2ZW50IGhhbmRsaW5nIGZvciBkaXNjb250aW51aXRpZXMsIHNvIHRoYXQKCSAgc2Vla2luZyB3b3JrcyB3aXRob3V0IHJlcXVpcmluZyBoYWNrcyBpbiBhcHBsaWNhdGlvbnMgb3IgZXh0cmEKCSAgY29kZSBpbiBzaW5rcy4KCSAgKiBnc3QvZ3N0cGlwZWxpbmUuYzogKGdzdF9waXBlbGluZV9jbGFzc19pbml0KSwKCSAgKGdzdF9waXBlbGluZV9zZW5kX2V2ZW50KToKCSAgSGFsZiBoYWNrLCBoYWxmIHV0aWxpdHk6IHNldCBhIHBpcGVsaW5lIHRvIFBBVVNFRCBmb3Igc2VlayBldmVudHMsCgkgIHNpbmNlIHRoYXQgaXMgdGhlIG9ubHkgd2F5IHdlIGNhbiBndWFyYW50ZWUgYS92IHN5bmMuIE1lYW5zIHRoYXQKCSAgeW91IGNhbiBkbyBnc3RfZWxlbWVudF9zZWVrIChwaXBlbGluZSwgbWV0aG9kLCBwb3MpOyBvbiBhIHBpcGVsaW5lCgkgIGFuZCBpdCAianVzdCB3b3JrcyIuCgoyMDA1LTAzLTI1IDA5OjM1OjAxICswMDAwICBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CgoJICBnc3QvZ3N0cGlwZWxpbmUuYzogTG9jay91bmxvY2sgbWlzbWF0Y2guCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGdzdC9nc3RwaXBlbGluZS5jOiAoZ3N0X3BpcGVsaW5lX3VzZV9jbG9jayk6CgkgIExvY2svdW5sb2NrIG1pc21hdGNoLgoKMjAwNS0wMy0yNSAwMDozNTo0NCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJICBkb2NzL2ZhcS9nc3QtdW5pbnN0YWxsZWQ6IGFkZCBnc3QtcGx1Z2lucy1iYXNlCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZmFxL2dzdC11bmluc3RhbGxlZDoKCSAgYWRkIGdzdC1wbHVnaW5zLWJhc2UKCSAgKiBkb2NzL2dzdC9NYWtlZmlsZS5hbToKCSAgZG9uJ3QgZXJyb3Igb3V0IHVudGlsIGRvY3MgYXJlIGZpeGVkCgkgICogZG9jcy9nc3QvZ3N0cmVhbWVyLnR5cGVzOgoJICByZW1vdmUgdGhyZWFkCgoyMDA1LTAzLTIyIDE0OjIzOjQ5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWN0aXZhdGVkIG1vcmUgdGVzdHMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrL01ha2VmaWxlLmFtOgoJICAqIGNoZWNrL2dzdC9nc3RtZXNzYWdlLmM6IChTVEFSVF9URVNUKSwgKGdzdF9kYXRhX3N1aXRlKSwgKG1haW4pOgoJICAqIGdzdC9nc3RzdHJ1Y3R1cmUuYzogKGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbGlzdCksCgkgIChnc3Rfc3RydWN0dXJlX2NvcHlfY29uZGl0aW9uYWwpOgoJICBBY3RpdmF0ZWQgbW9yZSB0ZXN0cy4KCSAgQWRkZWQgbWVzc2FnZSB0ZXN0LgoJICBBZGRlZCBHX1RZUEVfUE9JTlRFUiB0byBHc3RTdHJ1Y3R1cmUuCgoyMDA1LTAzLTIyIDExOjMyOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgRG9jcyB1cGRhdGVzCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtVE9ETy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1ldmVudHMudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0YmluLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGJ1cy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RwaXBlbGluZS50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1tZXNzYWdlcy50eHQ6CgkgICogZ3N0L2dzdGJ1cy5jOgoJICAqIGdzdC9nc3RtZXNzYWdlLmM6CgkgIERvY3MgdXBkYXRlcwoKMjAwNS0wMy0yMSAxODoxNzo1NyArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RidXMuYzogRml4IGNvcHktYW5kLXBhc3RlIGVycm9yLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0YnVzLmM6IChnc3RfYnVzX3Bvc3QpOgoJICBGaXggY29weS1hbmQtcGFzdGUgZXJyb3IuCgoyMDA1LTAzLTIxIDE3OjM0OjAyICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY29tbW9uOgoJKiBnc3QvTWFrZWZpbGUuYW06CgkqIGdzdC9lbGVtZW50cy9NYWtlZmlsZS5hbToKCSogZ3N0L2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5oOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5Lmg6CgkqIGdzdC9lbGVtZW50cy9nc3R0ZWUuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5oOgoJKiBnc3QvZ3N0LmM6CgkqIGdzdC9nc3QuaDoKCSogZ3N0L2dzdGJpbi5jOgoJKiBnc3QvZ3N0YmluLmg6CgkqIGdzdC9nc3RidXMuYzoKCSogZ3N0L2dzdGJ1cy5oOgoJKiBnc3QvZ3N0Y2Fwcy5oOgoJKiBnc3QvZ3N0ZGF0YS5oOgoJKiBnc3QvZ3N0ZWxlbWVudC5jOgoJKiBnc3QvZ3N0ZWxlbWVudC5oOgoJKiBnc3QvZ3N0ZXZlbnQuYzoKCSogZ3N0L2dzdGV2ZW50Lmg6CgkqIGdzdC9nc3RtZXNzYWdlLmM6CgkqIGdzdC9nc3RtZXNzYWdlLmg6CgkqIGdzdC9nc3RwYWQuYzoKCSogZ3N0L2dzdHBhZC5oOgoJKiBnc3QvZ3N0cGlwZWxpbmUuYzoKCSogZ3N0L2dzdHBpcGVsaW5lLmg6CgkqIGdzdC9nc3Rwcm9iZS5oOgoJKiBnc3QvZ3N0cXVldWUuYzoKCSogZ3N0L2dzdHF1ZXVlLmg6CgkqIGdzdC9nc3RzY2hlZHVsZXIuYzoKCSogZ3N0L2dzdHNjaGVkdWxlci5oOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSogZ3N0L2dzdHRhZ2ludGVyZmFjZS5oOgoJKiBnc3QvZ3N0dGFnc2V0dGVyLmg6CgkqIGdzdC9nc3R0YXNrLmM6CgkqIGdzdC9nc3R0YXNrLmg6CgkqIGdzdC9nc3R0aHJlYWQuYzoKCSogZ3N0L2dzdHRocmVhZC5oOgoJKiBnc3QvZ3N0dHlwZXMuaDoKCSogZ3N0L3NjaGVkdWxlcnMvTWFrZWZpbGUuYW06CgkqIGdzdC9zY2hlZHVsZXJzL2NvdGhyZWFkc19jb21wYXQuaDoKCSogZ3N0L3NjaGVkdWxlcnMvZW50cnlzY2hlZHVsZXIuYzoKCSogZ3N0L3NjaGVkdWxlcnMvZmFpcmNvdGhyZWFkcy5jOgoJKiBnc3Qvc2NoZWR1bGVycy9mYWlyY290aHJlYWRzLmg6CgkqIGdzdC9zY2hlZHVsZXJzL2ZhaXJzY2hlZHVsZXIuYzoKCSogZ3N0L3NjaGVkdWxlcnMvZ3N0YmFzaWNzY2hlZHVsZXIuYzoKCSogZ3N0L3NjaGVkdWxlcnMvZ3N0b3B0aW1hbHNjaGVkdWxlci5jOgoJKiBnc3Qvc2NoZWR1bGVycy9ndGhyZWFkLWNvdGhyZWFkcy5oOgoJKiBnc3Qvc2NoZWR1bGVycy90aHJlYWRzY2hlZHVsZXIuYzoKCSogbGlicy9nc3QvTWFrZWZpbGUuYW06CgkqIGxpYnMvZ3N0L2J5dGVzdHJlYW0vYnl0ZXN0cmVhbS5jOgoJKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2ZpbGVwYWQuYzoKCSogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL01ha2VmaWxlLmFtOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGVsZW1lbnRzLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNyYy5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGlkZW50aXR5Lmg6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0cXVldWUuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5oOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHRlZS5oOgoJKiB0ZXN0cy9iZW5jaG1hcmtzL2NvbXBsZXhpdHkuYzoKCSogdGVzdHMvYmVuY2htYXJrcy9tYXNzLWVsZW1lbnRzLmM6CgkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgoJKiB0ZXN0cy9jb21wbGV4aXR5LmM6CgkqIHRlc3RzL21hc3NfZWxlbWVudHMuYzoKCSogdGVzdHMvb2xkL3Rlc3RzdWl0ZS9zdGF0ZXMvbG9ja2VkLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvc3RhdGVzL3BhcmVudC5jOgoJKiB0ZXN0c3VpdGUvc3RhdGVzL2xvY2tlZC5jOgoJKiB0ZXN0c3VpdGUvc3RhdGVzL3BhcmVudC5jOgoJKiB0b29scy9nc3QtaW5zcGVjdC5jOgoJKiB0b29scy9nc3QtbGF1bmNoLmM6CgkqIHRvb2xzL2dzdC1tZDVzdW0uYzoKCSogdG9vbHMvZ3N0LXR5cGVmaW5kLmM6CgkqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgIE5leHQgYmlnIG1lcmdlLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgTmV4dCBiaWcgbWVyZ2UuCgkgIEFkZGVkIEdzdEJ1cyBmb3IgbWFpbmxvb3AgaW50ZWdyYXRpb24uCgkgIEFkZGVkIEdzdE1lc3NhZ2UgZm9yIHNlbmRpbmcgbm90aWZpY2F0aW9ucyBvbiB0aGUgYnVzLgoJICBBZGRlZCBHc3RUYXNrIGFzIGFuIGFic3RyYWN0aW9uIGZvciBwaXBlbGluZSBlbnRyeSBwb2ludHMuCgkgIFJlbW92ZWQgR3N0VGhyZWFkLgoJICBSZW1vdmVkIFNjaGVkdWxlcnMuCgkgIFNpbXBsaWZpZWQgR3N0UXVldWUgZm9yIG11bHRpdGhyZWFkZWQgY29yZS4KCSAgTWFkZSBfbGluayB0aHJlYWRzYWZlLCByZW1vdmVkIG9sZCBjYXBzbmVnby4KCSAgQWRkZWQgU1RSRUFNX0xPQ0sgYW5kIFBSRVJPTExfTE9DSyBpbiBHc3RQYWQuCgkgIEFkZGVkIHBhZCBibG9ja2luZyBmdW5jdGlvbnMuCgkgIFJld29ya2VkIHNjaGVkdWxpbmcgZnVuY3Rpb25zIGluIEdzdFBhZCB0byBwcmVwYXJlIGZvcgoJICBzY2hlZHVsaW5nIHVwZGF0ZXMgc29vbi4KCSAgTW92ZWQgZXZlbnRzIG91dCBvZiBkYXRhIHN0cmVhbS4KCSAgU2ltcGxpZmllZCBHc3RFdmVudCB0eXBlcy4KCSAgQWRkZWQgcmV0dXJuIHZhbHVlcyB0byBwdXNoL3B1bGwuCgkgIFJlbW92ZWQgY2xvY2tpbmcgZnJvbSBHc3RFbGVtZW50LgoJICBBZGRlZCBwcm90b3R5cGVzIGZvciBzdGF0ZSBjaGFuZ2UgZnVuY3Rpb24gZm9yIG5leHQgbWVyZ2UuCgkgIFJlbW92ZWQgaXRlcmF0ZSBmcm9tIGJpbnMgYW5kIHN0YXRlIGNoYW5nZSBtYW5hZ2VtZW50LgoJICBGaXhlZCBzb21lIGVsZW1lbnRzLCBkaXNhYmxlZCBvdGhlcnMgZm9yIG5vdy4KCSAgRml4ZWQgLWluc3BlY3QgYW5kIC1sYXVuY2guCgkgIEFkZGVkIGNoZWNrIGZvciBHc3RCdXMuCgoyMDA1LTAzLTEwIDEyOjUxOjQ1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgRG9jIHVwZGF0ZXMuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGRvY3MvZGVzaWduL3BhcnQtTVQtcmVmY291bnRpbmcudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtY2xvY2tzLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdGVsZW1lbnQudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtZ3N0b2JqZWN0LnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YW5kYXJkcy50eHQ6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX2FkZCksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5fcmVtb3ZlKToKCSAgKiBnc3QvZ3N0YmluLmg6CgkgICogZ3N0L2dzdGJ1ZmZlci5jOgoJICAqIGdzdC9nc3RjYXBzLmg6CgkgICogdGVzdHN1aXRlL2Nsb2NrL2Nsb2NrMS5jOiAobWFpbik6CgkgICogdGVzdHN1aXRlL2Nsb2NrL2Nsb2NrMi5jOiAoZ3N0X2Nsb2NrX2RlYnVnKSwgKGVsZW1lbnRfd2FpdCksCgkgIChtYWluKToKCSAgKiB0ZXN0c3VpdGUvZGxvcGVuL2xvYWRnc3QuYzogKGRvX3Rlc3QpOgoJICAqIHRlc3RzdWl0ZS9yZWZjb3VudGluZy9iaW4uYzogKGFkZF9yZW1vdmVfdGVzdDEpLAoJICAoYWRkX3JlbW92ZV90ZXN0MiksIChtYWluKToKCSAgKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvZWxlbWVudC5jOiAobWFpbik6CgkgICogdGVzdHN1aXRlL3JlZmNvdW50aW5nL2VsZW1lbnRfcGFkLmM6IChtYWluKToKCSAgKiB0ZXN0c3VpdGUvcmVmY291bnRpbmcvcGFkLmM6IChtYWluKToKCSAgKiB0b29scy9nc3QtbGF1bmNoLmM6IChzaWdpbnRfaGFuZGxlcl9zaWdoYW5kbGVyKToKCSAgKiB0b29scy9nc3QtdHlwZWZpbmQuYzogKG1haW4pOgoJICBEb2MgdXBkYXRlcy4KCSAgQWRkZWQgZG9jIGFib3V0IGNsb2NrLgoJICByZW1vdmVkIGdzdF9iaW5faXRlcmF0ZV9yZWN1cnNlX3VwKCksIG1hcmtlZCBtZXRob2RzCgkgIGZvciByZW1vdmFsLgoJICBGaXggbW9yZSB0ZXN0c3VpdGVzLgoKMjAwNS0wMy0wOSAxNzoyODo1MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIEZpeCBfcGFkX2dldF9kaXJlY3Rpb24gd3J0IGdob3N0cGFkcy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZ3N0L2dzdHBhZC5jOiAoZ3N0X3BhZF9nZXRfZGlyZWN0aW9uKSwKCSAgKF9nc3RfcGFkX2RlZmF1bHRfZml4YXRlX2ZvcmVhY2gpLCAoZ3N0X3BhZF9jb2xsZWN0diksCgkgIChnc3RfcGFkX2NvbGxlY3RfdmFsaXN0KToKCSAgKiB0ZXN0c3VpdGUvYmlucy9pbnRlcmZhY2UuYzogKG1haW4pOgoJICAqIHRlc3RzdWl0ZS9jYXBzL2F1ZGlvc2NhbGUuYzogKHRlc3RfY2Fwcyk6CgkgICogdGVzdHN1aXRlL2NhcHMvY2Fwcy5jOiAodGVzdDEpLCAodGVzdDIpLCAodGVzdDMpOgoJICAqIHRlc3RzdWl0ZS9jYXBzL2Rlc2VyaWFsaXplLmM6IChtYWluKToKCSAgKiB0ZXN0c3VpdGUvY2Fwcy9lbnVtY2Fwcy5jOiAobWFpbik6CgkgICogdGVzdHN1aXRlL2NhcHMvZmlsdGVyY2Fwcy5jOiAobWFpbik6CgkgICogdGVzdHN1aXRlL2NhcHMvaW50ZXJzZWN0Mi5jOiAobWFpbik6CgkgICogdGVzdHN1aXRlL2NhcHMvcmFuZG9tLmM6IChtYWluKToKCSAgKiB0ZXN0c3VpdGUvY2Fwcy9yZW5lZ290aWF0ZS5jOiAobXlfZml4YXRlKSwgKG1haW4pOgoJICAqIHRlc3RzdWl0ZS9jYXBzL3NldHMuYzogKGNoZWNrX2NhcHMpOgoJICAqIHRlc3RzdWl0ZS9jYXBzL3NpbXBsaWZ5LmM6IChjaGVja19jYXBzKSwgKG1haW4pOgoJICAqIHRlc3RzdWl0ZS9jYXBzL3N1YnRyYWN0LmM6IChjaGVja19jYXBzKToKCSAgRml4IF9wYWRfZ2V0X2RpcmVjdGlvbiB3cnQgZ2hvc3RwYWRzLgoJICBGaXggY2FwcyB0ZXN0c3VpdGUuCgoyMDA1LTAzLTA5IDE2OjEwOjU5ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSogQ2hhbmdlTG9nOgoJKiBjaGVjay9NYWtlZmlsZS5hbToKCSogY2hlY2svZ3N0L2dzdGJpbi5jOgoJKiBjaGVjay9nc3QvZ3N0c3lzdGVtY2xvY2suYzoKCSogZ3N0L2dzdGJpbi5jOgoJKiBnc3QvZ3N0YmluLmg6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RpdGVyYXRvci5jOgoJKiBnc3QvZ3N0cGFkLmM6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0dXRpbHMuaDoKCSogZ3N0L3NjaGVkdWxlcnMvZW50cnlzY2hlZHVsZXIuYzoKCSogZ3N0L3NjaGVkdWxlcnMvZ3N0YmFzaWNzY2hlZHVsZXIuYzoKCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CgkqIHRlc3RzL2NoZWNrL2dzdC9nc3RiaW4uYzoKCSogdGVzdHMvY2hlY2svZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkqIHRlc3RzL29sZC90ZXN0c3VpdGUvYmlucy9pbnRlcmZhY2UuYzoKCSogdGVzdHN1aXRlL2JpbnMvaW50ZXJmYWNlLmM6CgkgIEFkZGVkIEdzdEJpbiB0ZXN0LgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgQWRkZWQgR3N0QmluIHRlc3QuCgkgIEFkZGVkIEdzdFN5c3RlbUNsb2NrIHRlc3QuCgkgIEltcGxlbWVudGVkIGNsb2NrIGRpc3RyaWJ1dGlvbiBjb2RlIGluIEdzdEJpbi4KCSAgSW1wbGVtZW50ZWQgaXRlcmF0ZSBzaW5rcyBtZXRob2QgZm9yIGZ1dHVyZSB1c2UuCgkgIFJlYXJyYW5nZWQgZ3N0ZWxlbWVudC5oCgkgIEZpeCBHc3RJdGVyYXRvciBjb21wYXJpc29uIGJ1Zy4KCSAgTW92ZWQgc29tZSBjb2RlIHRvIEdzdFBpcGVsaW5lLCBtb3N0bHkgY2xvY2tpbmcgcmVsYXRlZC4KCjIwMDUtMDMtMDkgMTE6MDg6MTggKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBCdW1wIHZlcnNpb24gbnVtYmVyLCB3ZSdyZSBub3cgMC45LjAKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogY29uZmlndXJlLmFjOgoJICAqIGdzdC9nc3RfcHJpdmF0ZS5oOgoJICAqIGdzdC9nc3RiaW4uYzogKGdzdF9iaW5fYWRkX2Z1bmMpLCAoZ3N0X2Jpbl9hZGQpLAoJICAoZ3N0X2Jpbl9yZW1vdmVfZnVuYyksIChnc3RfYmluX3JlbW92ZSksCgkgIChnc3RfYmluX2dldF9ieV9uYW1lX3JlY3Vyc2VfdXApOgoJICAqIGdzdC9nc3RjbG9jay5jOiAoZ3N0X2Nsb2NrX2lkX3JlZiksIChnc3RfY2xvY2tfaWRfdW5yZWYpLAoJICAoZ3N0X2Nsb2NrX2lkX2NvbXBhcmVfZnVuYyksIChnc3RfY2xvY2tfaWRfd2FpdCksCgkgIChnc3RfY2xvY2tfaWRfd2FpdF9hc3luYyksIChnc3RfY2xvY2tfaW5pdCksCgkgIChnc3RfY2xvY2tfYWRqdXN0X3VubG9ja2VkKSwgKGdzdF9jbG9ja19nZXRfdGltZSk6CgkgICogZ3N0L2dzdGVsZW1lbnQuaDoKCSAgKiBnc3QvZ3N0aW5mby5jOiAoX2dzdF9kZWJ1Z19pbml0KToKCSAgKiBnc3QvZ3N0b2JqZWN0Lmg6CgkgICogZ3N0L2dzdHBhZC5jOiAoX2dzdF9wYWRfZGVmYXVsdF9maXhhdGVfZm9yZWFjaCksCgkgIChnc3RfcGFkX2NvbGxlY3R2KSwgKGdzdF9wYWRfY29sbGVjdF92YWxpc3QpLCAoZ3N0X3BhZF9xdWVyeSk6CgkgICogZ3N0L2dzdHBhZC5oOgoJICBCdW1wIHZlcnNpb24gbnVtYmVyLCB3ZSdyZSBub3cgMC45LjAKCSAgQWRkIGZ1dHVyZSBkZWJ1Z2dpbmcgY2F0ZWdvcnkuCgkgIEZpeCBOVUxMIF91bnJlZigpIGluIF9nZXRfYnlfbmFtZV9yZWN1cnNlX3VwCgkgIFJlYXJyYW5nZSBnc3RwYWQuaC4KCSAgVXBkYXRlIHNvbWUgZG9jcy4KCjIwMDUtMDMtMDggMTc6NDI6MjkgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJKiBDaGFuZ2VMb2c6CgkqIGdzdC9lbGVtZW50cy9nc3RhZ2dyZWdhdG9yLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmYWtlc2luay5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RmZHNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmlsZXNpbmsuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdGlkZW50aXR5LmM6CgkqIGdzdC9lbGVtZW50cy9nc3RtZDVzaW5rLmM6CgkqIGdzdC9lbGVtZW50cy9nc3RtdWx0aWZpbGVzcmMuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHNoYXBlci5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0c3RhdGlzdGljcy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0dGVlLmM6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RxdWV1ZS5jOgoJKiBnc3QvZ3N0dGhyZWFkLmM6CgkqIGdzdC9zY2hlZHVsZXJzL2dzdGJhc2ljc2NoZWR1bGVyLmM6CgkqIGdzdC9zY2hlZHVsZXJzL2dzdG9wdGltYWxzY2hlZHVsZXIuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RhZ2dyZWdhdG9yLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmFrZXNpbmsuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmYWtlc3JjLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzaW5rLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0ZmRzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RmaWxlc2luay5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdG1kNXNpbmsuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RtdWx0aWZpbGVzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RxdWV1ZS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHNoYXBlci5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHN0YXRpc3RpY3MuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3R0ZWUuYzoKCSAgUmVtb3ZlIHRocmVhZHNhZmUgcHJvcGVydGllcy4gRml4IGVsZW1lbnRzIGJlY2F1c2UgR09iamVjdCBjb21wbGFpbnMgd2hlbiBpbnN0YWxsaW5nIGEgcHJvcGVydHkgYmVmb3JlIGRlY2xhcmluZyBhIHNlLi4uCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBSZW1vdmUgdGhyZWFkc2FmZSBwcm9wZXJ0aWVzLiBGaXggZWxlbWVudHMgYmVjYXVzZSBHT2JqZWN0CgkgIGNvbXBsYWlucyB3aGVuIGluc3RhbGxpbmcgYSBwcm9wZXJ0eSBiZWZvcmUgZGVjbGFyaW5nIGEKCSAgc2V0L2dldF9wcm9wZXJ0eSBoYW5kbGVyLgoJICBSZWFycmFuZ2UgZ3N0ZWxlbWVudC5oIGZpbGUsIHVzZSBTVEFURSBtYWNyb3MgZm9yIHN0YXRlIGxvY2tzLgoJICBGcmVlIG11dGV4ZXMgaW4gdGhlIGZpbmFsaXplIG1ldGhvZCBpbnN0ZWFkIG9mIGRpc3Bvc2UuCgoyMDA1LTAzLTA4IDE1OjU3OjE1ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgQWRkZWQgcGFyZW50YWdlIGNoZWNrLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBjaGVjay9nc3QvZ3N0b2JqZWN0LmM6IChTVEFSVF9URVNUKSwgKGdzdF9vYmplY3Rfc3VpdGUpOgoJICAqIGdzdC9nc3R0aHJlYWQuYzogKGdzdF90aHJlYWRfcmVsZWFzZV9jaGlsZHJlbl9sb2Nrcyk6CgkgIEFkZGVkIHBhcmVudGFnZSBjaGVjay4KCSAgRml4IGJ1aWxkIG9nIEdzdFRocmVhZCBhZ2Fpbi4KCjIwMDUtMDMtMDggMTQ6Mzg6MDYgKzAwMDAgIFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+CgoJICBEb2NzIHVwZGF0ZXMsIGNsZWFuIHVwIHNvbWUgaGVhZGVycy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgICogZG9jcy9kZXNpZ24vcGFydC1NVC1yZWZjb3VudGluZy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1jb252ZW50aW9ucy50eHQ6CgkgICogZG9jcy9kZXNpZ24vcGFydC1nc3RvYmplY3QudHh0OgoJICAqIGRvY3MvZGVzaWduL3BhcnQtcmVsYXRpb25zLnR4dDoKCSAgKiBkb2NzL2Rlc2lnbi9wYXJ0LXN0YW5kYXJkcy50eHQ6CgkgICogZ3N0L2dzdGJpbi5jOiAoZ3N0X2Jpbl9hZGRfZnVuYyksIChnc3RfYmluX2FkZCksCgkgIChnc3RfYmluX3JlbW92ZV9mdW5jKSwgKGdzdF9iaW5fcmVtb3ZlKSwgKGdzdF9iaW5faXRlcmF0ZV9yZWN1cnNlKSwKCSAgKGdzdF9iaW5fZ2V0X2J5X25hbWUpLCAoZ3N0X2Jpbl9nZXRfYnlfaW50ZXJmYWNlKSwKCSAgKGdzdF9iaW5faXRlcmF0ZV9hbGxfYnlfaW50ZXJmYWNlKToKCSAgKiBnc3QvZ3N0YnVmZmVyLmg6CgkgICogZ3N0L2dzdGNsb2NrLmg6CgkgICogZ3N0L2dzdGVsZW1lbnQuYzogKGdzdF9lbGVtZW50X2NsYXNzX2luaXQpLAoJICAoZ3N0X2VsZW1lbnRfY2hhbmdlX3N0YXRlKSwgKGdzdF9lbGVtZW50X3NldF9sb29wX2Z1bmN0aW9uKToKCSAgKiBnc3QvZ3N0ZWxlbWVudC5oOgoJICAqIGdzdC9nc3RpdGVyYXRvci5jOgoJICAqIGdzdC9nc3RvYmplY3QuYzogKGdzdF9vYmplY3RfY2xhc3NfaW5pdCksIChnc3Rfb2JqZWN0X3JlZiksCgkgIChnc3Rfb2JqZWN0X3VucmVmKSwgKGdzdF9vYmplY3Rfc2luayksIChnc3Rfb2JqZWN0X2Rpc3Bvc2UpLAoJICAoZ3N0X29iamVjdF9kaXNwYXRjaF9wcm9wZXJ0aWVzX2NoYW5nZWQpLCAoZ3N0X29iamVjdF9zZXRfbmFtZSksCgkgIChnc3Rfb2JqZWN0X3NldF9wYXJlbnQpLCAoZ3N0X29iamVjdF91bnBhcmVudCksCgkgIChnc3Rfb2JqZWN0X2NoZWNrX3VuaXF1ZW5lc3MpOgoJICAqIGdzdC9nc3RvYmplY3QuaDoKCSAgRG9jcyB1cGRhdGVzLCBjbGVhbiB1cCBzb21lIGhlYWRlcnMuCgkgIEZyZWUgaXRlcmF0b3JzIGluIEdzdEJpbi4KCSAgR3N0T2JqZWN0IGlzIG5vdyBsb29raW5nIGdvb2QuCgoyMDA1LTAzLTA3IDE4OjMzOjM3ICswMDAwICBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgoKCSAgY2hlY2svOiBBZGRlZCBjaGVja3MuCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICAqIGNoZWNrLy5jdnNpZ25vcmU6CgkgICogY2hlY2svTWFrZWZpbGUuYW06CgkgICogY2hlY2svZ3N0LWxpYnMvLmN2c2lnbm9yZToKCSAgKiBjaGVjay9nc3QtbGlicy9nZHAuYzogKFNUQVJUX1RFU1QpLCAoZ3N0X29iamVjdF9zdWl0ZSksIChtYWluKToKCSAgKiBjaGVjay9nc3QvLmN2c2lnbm9yZToKCSAgKiBjaGVjay9nc3QvZ3N0YnVzLmM6IChwb3VuZF9idXNfd2l0aF9tZXNzYWdlcyksIChwdWxsX21lc3NhZ2VzKSwKCSAgKFNUQVJUX1RFU1QpLCAoZ3N0YnVzX3N1aXRlKSwgKG1haW4pOgoJICAqIGNoZWNrL2dzdC9nc3RjYXBzLmM6IChTVEFSVF9URVNUKSwgKGdzdF9jYXBzX3N1aXRlKSwgKG1haW4pOgoJICAqIGNoZWNrL2dzdC9nc3RkYXRhLmM6IChTVEFSVF9URVNUKSwgKHRocmVhZF9yZWYpLCAodGhyZWFkX3VucmVmKSwKCSAgKGdzdF9kYXRhX3N1aXRlKSwgKG1haW4pOgoJICAqIGNoZWNrL2dzdC9nc3RpdGVyYXRvci5jOiAobWFrZV9saXN0X29mX2ludHMpLCAoU1RBUlRfVEVTVCksCgkgIChhZGRfZm9sZF9mdW5jKSwgKGdzdGl0ZXJhdG9yX3N1aXRlKSwgKG1haW4pOgoJICAqIGNoZWNrL2dzdC9nc3RvYmplY3QuYzogKGdzdF9mYWtlX29iamVjdF9nZXRfdHlwZSksIChTVEFSVF9URVNUKSwKCSAgKHRocmVhZF9uYW1lX29iamVjdCksICh0aHJlYWRfbmFtZV9vYmplY3RfZGVmYXVsdCksCgkgIChnc3Rfb2JqZWN0X25hbWVfY29tcGFyZSksIChnc3Rfb2JqZWN0X3N1aXRlKSwgKG1haW4pOgoJICAqIGNoZWNrL2dzdC9nc3RwYWQuYzogKFNUQVJUX1RFU1QpLCAodGhyZWFkX2xpbmtfdW5saW5rKSwKCSAgKGdzdF9wYWRfc3VpdGUpLCAobWFpbik6CgkgICogY2hlY2svZ3N0Y2hlY2suYzogKGdzdF9jaGVja19sb2dfbWVzc2FnZV9mdW5jKSwKCSAgKGdzdF9jaGVja19sb2dfY3JpdGljYWxfZnVuYyksIChnc3RfY2hlY2tfaW5pdCk6CgkgICogY2hlY2svZ3N0Y2hlY2suaDoKCSAgKiBjaGVjay9waXBlbGluZXMvc2ltcGxlX2xhdW5jaF9saW5lcy5jOiAoc2V0dXBfcGlwZWxpbmUpLAoJICAocnVuX3BpcGVsaW5lKSwgKFNUQVJUX1RFU1QpLCAoc2ltcGxlX2xhdW5jaF9saW5lc19zdWl0ZSksIChtYWluKToKCSAgQWRkZWQgY2hlY2tzLgoKMjAwNS0wMy0wNyAxODoyOTozNiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkgIGdzdC9nc3RpdGVyYXRvci4qOiBBZGRlZCBtaXNzaW5nIGZpbGVzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgKiBnc3QvZ3N0aXRlcmF0b3IuYzogKGdzdF9pdGVyYXRvcl9pbml0KSwgKGdzdF9pdGVyYXRvcl9uZXcpLAoJICAoZ3N0X2xpc3RfaXRlcmF0b3JfbmV4dCksIChnc3RfbGlzdF9pdGVyYXRvcl9yZXN5bmMpLAoJICAoZ3N0X2xpc3RfaXRlcmF0b3JfZnJlZSksIChnc3RfaXRlcmF0b3JfbmV3X2xpc3QpLAoJICAoZ3N0X2l0ZXJhdG9yX3BvcCksIChnc3RfaXRlcmF0b3JfbmV4dCksIChnc3RfaXRlcmF0b3JfcmVzeW5jKSwKCSAgKGdzdF9pdGVyYXRvcl9mcmVlKSwgKGdzdF9pdGVyYXRvcl9wdXNoKSwgKGZpbHRlcl9uZXh0KSwKCSAgKGZpbHRlcl9yZXN5bmMpLCAoZmlsdGVyX3VuaW5pdCksIChmaWx0ZXJfZnJlZSksCgkgIChnc3RfaXRlcmF0b3JfZmlsdGVyKSwgKGdzdF9pdGVyYXRvcl9mb2xkKSwgKGZvcmVhY2hfZm9sZF9mdW5jKSwKCSAgKGdzdF9pdGVyYXRvcl9mb3JlYWNoKSwgKGZpbmRfY3VzdG9tX2ZvbGRfZnVuYyksCgkgIChnc3RfaXRlcmF0b3JfZmluZF9jdXN0b20pOgoJICAqIGdzdC9nc3RpdGVyYXRvci5oOgoJICBBZGRlZCBtaXNzaW5nIGZpbGVzLgoKMjAwNS0wMy0wNyAxODoyNzo0MiArMDAwMCAgV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KCgkqIENoYW5nZUxvZzoKCSogTWFrZWZpbGUuYW06CgkqIGNvbmZpZ3VyZS5hYzoKCSogZG9jcy9kZXNpZ24vcGFydC1NVC1yZWZjb3VudGluZy50eHQ6CgkqIGRvY3MvZGVzaWduL3BhcnQtY29udmVudGlvbnMudHh0OgoJKiBkb2NzL2Rlc2lnbi9wYXJ0LWdzdG9iamVjdC50eHQ6CgkqIGRvY3MvZGVzaWduL3BhcnQtcmVsYXRpb25zLnR4dDoKCSogZXhhbXBsZXMvbWl4ZXIvbWl4ZXIuYzoKCSogZXhhbXBsZXMvdGhyZWFkL3RocmVhZC5jOgoJKiBnc3QvTWFrZWZpbGUuYW06CgkqIGdzdC9hdXRvcGx1Zy9nc3RzZWFyY2hmdW5jcy5jOgoJKiBnc3QvYXV0b3BsdWcvZ3N0c3BpZGVyLmM6CgkqIGdzdC9hdXRvcGx1Zy9nc3RzcGlkZXJpZGVudGl0eS5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0ZmFrZXNyYy5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0aWRlbnRpdHkuYzoKCSogZ3N0L2VsZW1lbnRzL2dzdHRlZS5jOgoJKiBnc3QvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIGdzdC9nc3QuYzoKCSogZ3N0L2dzdC5oOgoJKiBnc3QvZ3N0YmluLmM6CgkqIGdzdC9nc3RiaW4uaDoKCSogZ3N0L2dzdGJ1ZmZlci5jOgoJKiBnc3QvZ3N0YnVmZmVyLmg6CgkqIGdzdC9nc3RjYXBzLmM6CgkqIGdzdC9nc3RjYXBzLmg6CgkqIGdzdC9nc3RjbG9jay5jOgoJKiBnc3QvZ3N0Y2xvY2suaDoKCSogZ3N0L2dzdGNvbXBhdC5oOgoJKiBnc3QvZ3N0Y3B1LmM6CgkqIGdzdC9nc3RkYXRhLmM6CgkqIGdzdC9nc3RkYXRhLmg6CgkqIGdzdC9nc3RlbGVtZW50LmM6CgkqIGdzdC9nc3RlbGVtZW50Lmg6CgkqIGdzdC9nc3RldmVudC5oOgoJKiBnc3QvZ3N0Zm9ybWF0LmM6CgkqIGdzdC9nc3Rmb3JtYXQuaDoKCSogZ3N0L2dzdGluZGV4LmM6CgkqIGdzdC9nc3RpbmZvLmM6CgkqIGdzdC9nc3RpbmZvLmg6CgkqIGdzdC9nc3RtZW1jaHVuay5jOgoJKiBnc3QvZ3N0b2JqZWN0LmM6CgkqIGdzdC9nc3RvYmplY3QuaDoKCSogZ3N0L2dzdHBhZC5jOgoJKiBnc3QvZ3N0cGFkLmg6CgkqIGdzdC9nc3RwaXBlbGluZS5jOgoJKiBnc3QvZ3N0cGlwZWxpbmUuaDoKCSogZ3N0L2dzdHBsdWdpbi5jOgoJKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5jOgoJKiBnc3QvZ3N0cGx1Z2luZmVhdHVyZS5oOgoJKiBnc3QvZ3N0cHJvYmUuYzoKCSogZ3N0L2dzdHF1ZXJ5LmM6CgkqIGdzdC9nc3RxdWVyeS5oOgoJKiBnc3QvZ3N0cXVldWUuYzoKCSogZ3N0L2dzdHNjaGVkdWxlci5jOgoJKiBnc3QvZ3N0c3RydWN0dXJlLmM6CgkqIGdzdC9nc3RzdHJ1Y3R1cmUuaDoKCSogZ3N0L2dzdHN5c3RlbWNsb2NrLmM6CgkqIGdzdC9nc3RzeXN0ZW1jbG9jay5oOgoJKiBnc3QvZ3N0dGFnLmM6CgkqIGdzdC9nc3R0YWdpbnRlcmZhY2UuYzoKCSogZ3N0L2dzdHRhZ2xpc3QuYzoKCSogZ3N0L2dzdHRhZ3NldHRlci5jOgoJKiBnc3QvZ3N0dGhyZWFkLmM6CgkqIGdzdC9nc3R0cmFzaHN0YWNrLmg6CgkqIGdzdC9nc3R0eXBlZmluZC5jOgoJKiBnc3QvZ3N0dHlwZXMuaDoKCSogZ3N0L2dzdHV0aWxzLmM6CgkqIGdzdC9nc3R1dGlscy5oOgoJKiBnc3QvZ3N0dmFsdWUuYzoKCSogZ3N0L3BhcnNlL2dyYW1tYXIueToKCSogZ3N0L3NjaGVkdWxlcnMvZ3N0YmFzaWNzY2hlZHVsZXIuYzoKCSogZ3N0L3NjaGVkdWxlcnMvZ3N0b3B0aW1hbHNjaGVkdWxlci5jOgoJKiBsaWJzL2dzdC9ieXRlc3RyZWFtL2J5dGVzdHJlYW0uYzoKCSogbGlicy9nc3QvZGF0YXByb3RvY29sL2RhdGFwcm90b2NvbC5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdGZha2VzcmMuYzoKCSogcGx1Z2lucy9lbGVtZW50cy9nc3RpZGVudGl0eS5jOgoJKiBwbHVnaW5zL2VsZW1lbnRzL2dzdHF1ZXVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dGVlLmM6CgkqIHBsdWdpbnMvZWxlbWVudHMvZ3N0dHlwZWZpbmRlbGVtZW50LmM6CgkqIHBvL25iLnBvOgoJKiBwby9ydS5wbzoKCSogdGVzdHMvb2xkL2V4YW1wbGVzL21peGVyL21peGVyLmM6CgkqIHRlc3RzL29sZC9leGFtcGxlcy90aHJlYWQvdGhyZWFkLmM6CgkqIHRlc3RzL3RocmVhZHN0YXRlL3RocmVhZHN0YXRlMi5jOgoJKiB0b29scy9nc3QtY29tcHByZXAuYzoKCSogdG9vbHMvZ3N0LWluc3BlY3QuYzoKCSogdG9vbHMvZ3N0LWxhdW5jaC5jOgoJKiB0b29scy9nc3QtbWQ1c3VtLmM6CgkqIHRvb2xzL2dzdC14bWxpbnNwZWN0LmM6CgkgIEZpcnN0IFRIUkVBREVEIGJhY2twb3J0IGF0dGVtcHQsIGZvY3VzaW5nIG9uIGFkZGluZyBsb2NrcyBhbmQgbWFraW5nIHN1cmUgdGhlIEFQSSBpcyB0aHJlYWRzYWZlLiBOZWVkcyBtb3JlIHdvcmsuIE1vci4uLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgRmlyc3QgVEhSRUFERUQgYmFja3BvcnQgYXR0ZW1wdCwgZm9jdXNpbmcgb24gYWRkaW5nIGxvY2tzIGFuZAoJICBtYWtpbmcgc3VyZSB0aGUgQVBJIGlzIHRocmVhZHNhZmUuIE5lZWRzIG1vcmUgd29yay4gTW9yZSBkb2NzCgkgIGZvbGxvdyB0aGlzIHdlZWsuCgoyMDA1LTAyLTI1IDAwOjEwOjA1ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIGdzdC9nc3RpbmZvLmM6CgkqIGdzdC9nc3RpbmZvLmg6CgkgIGFub3RoZXIgbm8tZGVidWcgYnVpbGQgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBhbm90aGVyIG5vLWRlYnVnIGJ1aWxkIGZpeAoKMjAwNS0wMi0yNCAyMzo0MTo1NyArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3Qvc2NoZWR1bGVycy9mYWlyY290aHJlYWRzLmM6CgkgIGRpc2FibGUgZGVidWcgYnVpbGQgZml4CgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBkaXNhYmxlIGRlYnVnIGJ1aWxkIGZpeAoKMjAwNS0wMi0yNCAxNzoxMjoxOSArMDAwMCAgQW5keSBXaW5nbyA8d2luZ29AcG9ib3guY29tPgoKCSAgdGVzdHMvOiBOZXcgZmlsZXMsIGdvb2QgZm9yIHJ1bm5pbmcgY29tcGxleGl0eSBiZW5jaG1hcmtzLgoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgMjAwNS0wMi0yNCAgQW5keSBXaW5nbyAgPHdpbmdvQHBvYm94LmNvbT4KCSAgKiB0ZXN0cy9iZW5jaC1jb21wbGV4aXR5LnNjbToKCSAgKiB0ZXN0cy9jb21wbGV4aXR5LmdudXBsb3Q6IE5ldyBmaWxlcywgZ29vZCBmb3IgcnVubmluZyBjb21wbGV4aXR5CgkgIGJlbmNobWFya3MuCgoyMDA1LTAyLTI0IDE1OjM2OjIyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0ZXN0cy86IE5ldyB0ZXN0LCBzZXRzIHVwIE4gZWxlbWVudHMsIGF0IGVhY2ggbGV2ZWwgdGVlaW5nIGludG8gTSBzdHJlYW1zIHBlciBlbGVtZW50LiBFZWVlbnRlcmVzdGluZy4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDItMjQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogdGVzdHMvTWFrZWZpbGUuYW06CgkgICogdGVzdHMvY29tcGxleGl0eS5jOiBOZXcgdGVzdCwgc2V0cyB1cCBOIGVsZW1lbnRzLCBhdCBlYWNoIGxldmVsCgkgIHRlZWluZyBpbnRvIE0gc3RyZWFtcyBwZXIgZWxlbWVudC4gRWVlZW50ZXJlc3RpbmcuCgoyMDA1LTAyLTI0IDEyOjMxOjEyICswMDAwICBBbmR5IFdpbmdvIDx3aW5nb0Bwb2JveC5jb20+CgoJICB0ZXN0cy9tYXNzX2VsZW1lbnRzLmdudXBsb3Q6IGdudXBsb3QgZmlsZSBmb3IgdGhlIG1hc3NfZWxlbWVudHMgYmVuY2htYXJrLiBSdW4gYXMgZ251cGxvdCBtYXNzX2VsZW1lbnRzLmdudXBsb3QgPiBmb28uLi4KCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIDIwMDUtMDItMjQgIEFuZHkgV2luZ28gIDx3aW5nb0Bwb2JveC5jb20+CgkgICogdGVzdHMvbWFzc19lbGVtZW50cy5nbnVwbG90OiBnbnVwbG90IGZpbGUgZm9yIHRoZSBtYXNzX2VsZW1lbnRzCgkgIGJlbmNobWFyay4gUnVuIGFzIGdudXBsb3QgbWFzc19lbGVtZW50cy5nbnVwbG90ID4gZm9vLnBzLCBhZnRlcgoJICBydW5uaW5nIGJlbmNoLW1hc3NfZWxlbWVudHMuc2NtLgoJICAqIHRlc3RzL2JlbmNoLW1hc3NfZWxlbWVudHMuc2NtOiBOZXcgc2NyaXB0LCBydW5zIG1hc3NfZWxlbWVudHMKCSAgZm9yIHZhcmlvdXMgbnVtYmVycyBvZiBpZGVudGl0aWVzLCBvdXRwdXR0aW5nIHRoZSByZXN1bHRzIHRvIGEKCSAgZmlsZS4gUmVxdWlyZXMgZ3VpbGUgMS42LiBKdXN0IGZvciB0ZXN0aW5nLgoKMjAwNS0wMi0yMyAxNToxNDowMSArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBnc3Qvc2NoZWR1bGVycy9mYWlyc2NoZWR1bGVyLmM6CgkgIG9uZSBtb3JlIGZpeAoJICBPcmlnaW5hbCBjb21taXQgbWVzc2FnZSBmcm9tIENWUzoKCSAgb25lIG1vcmUgZml4CgoyMDA1LTAyLTIzIDE1OjA2OjM2ICswMDAwICBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KCgkqIENoYW5nZUxvZzoKCSogZ3N0L3NjaGVkdWxlcnMvZmFpcnNjaGVkdWxlci5jOgoJICBjb21waWxlIHdpdGggZGVidWcgZGlzYWJsZWQKCSAgT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBDVlM6CgkgIGNvbXBpbGUgd2l0aCBkZWJ1ZyBkaXNhYmxlZAoKMjAwNS0wMi0yMiAxNjozNDoxMCArMDAwMCAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CgoJKiBDaGFuZ2VMb2c6CgkqIGNvbmZpZ3VyZS5hYzoKCSAgaHVudGluZyBzZWFzb24gb24gMC45IGlzIG5vdyBPUEVOCgkgIE9yaWdpbmFsIGNvbW1pdCBtZXNzYWdlIGZyb20gQ1ZTOgoJICBodW50aW5nIHNlYXNvbiBvbiAwLjkgaXMgbm93IE9QRU4KCg==