MjAwMy0xMS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjcgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA3LgoKCSogYnVpbGRzL3VuaXgvZnQydW5peC5oOiBGaXggY29tbWVudHMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogU3luY2hyb25pemVkIHdpdGggQU5TSSB2ZXJzaW9uLgoJVXNlIGAjdW5kZWYnIGluIHRlbXBsYXRlcyBhcyByZWNvbW1lbmRlZCBpbiB0aGUgYXV0b2NvbmYKCWRvY3VtZW50YXRpb24uCglTaW5jZSByZWFsIGAjdW5kZWYnIGxpbmVzIGRvbid0IHN1cnZpdmUgZHVyaW5nIGNvbmZpZ3VyYXRpb24sIHVzZQoJYC91bmRlZicgaW5zdGVhZDsgdGhlIHBvc3Rwcm9jZXNzaW5nIGZhY2lsaXR5IG9mIHRoZQoJQUNfQ09ORklHX0hFQURFUlMgYXV0b2NvbmYgbWFjcm8gY29udmVydHMgdGhlbSB0byBgI3VuZGVmJy4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBJbnN0YWxsIFVuaXggdmVyc2lvbiBvZgoJYGZ0Y29uZmlnLmgnLgoKCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoQ0ZMQUdTKTogU2V0IEZUX0NPTkZJR19DT05GSUdfSCBtYWNybwoJdG8gaW5jbHVkZSB0aGUgY29ycmVjdCBgZnRjb25maWcuaCcgZmlsZS4KCgkqIGJ1aWxkcy91bml4L2Z0LW11bm1hcC5tNCAoRlRfTVVOTUFQX0RFQ0wpOiBSZW1vdmVkLgoJKEZUX01VTk1BUF9QQVJBTSk6IFVwZGF0ZWQgc3ludGF4IHRvIGF1dG9jb25mIDIuNTkuCgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IFVwZGF0ZWQgc3ludGF4IHRvIGF1dG9jb25mIDIuNTkuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFVzZSBBQ19DT05GSUdfSEVBREVSUyBpbnN0ZWFkIG9mCglBQ19DT05GSUdfSEVBREVSIHRvIGNyZWF0ZSBmdGNvbmZpZy5oLCBhbmQgdXNlIHNlY29uZCBhcmd1bWVudAoJdG8gcmVwbGFjZSBgL3VuZGVmJyB3aXRoIGAjdW5kZWYnLgoJRG9uJ3QgdXNlIEZUX01VTk1BUF9ERUNMIGJ1dCBBQ19DSEVDS19ERUNMUyB0byBjaGVjayBmb3IgbXVubWFwLgoJVXNlIEFTX0hFTFBfU1RSSU5HIGluIEFDX0FSR19XSVRILgoJVXBkYXRlIHN5bnRheCB0byBhdXRvY29uZiAyLjU5LgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNS4KCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogUmVnZW5lcmF0ZWQgd2l0aCBgYWNsb2NhbCAtSSAuJyBmcm9tCglhdXRvbWFrZSAxLjcuOC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCB3aXRoIGF1dG9jb25mIDIuNTkuCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCBmcm9tCglgY29uZmlnJyBDVlMgbW9kdWxlIGF0IHN1YnZlcnNpb25zLmdudS5vcmcKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgdGV4aW5mbycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oOiBTeW5jaHJvbml6ZWQgd2l0aCBBTlNJIHZlcnNpb24uCgoJKiBkb2NzL0NVU1RPTUlaRTogRml4IGRvY3VtZW50YXRpb24gZXJyb3IuCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTCwgZG9jcy9yZWxlYXNlOiBVcGRhdGVkLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBVcGRhdGVkIC0tdGl0bGUuCgoyMDAzLTExLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbnN0YWxsOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoyMDAzLTExLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfU0ZOVF9ILgoJKHNmbnRfc2VydmljZV9zZm50X3RhYmxlKTogTmV3IHNlcnZpY2UuCgkoc2ZudF9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBkb2NzL2xpY2Vuc2UudHh0OiBSZXdvcmRlZC4KCjIwMDMtMTEtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvKjogQWRkIGEgZ3VhcmQgdG8gYWxsIHB1YmxpYyBoZWFkZXIgZmlsZXMgd2hpY2gKCWxvYWQgRlRfRlJFRVRZUEVfSCB0byByZWplY3QgZnJlZXR5cGUuaCBmcm9tIEZyZWVUeXBlIDEuCgoyMDAzLTExLTAyICBQYXRyaWNrIFdlbGNoZSAgPHBybHcxQG5ld24uY2FtLmFjLnVrPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00LCBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQ6IFByb3RlY3QKCWZpcnN0IGFyZ3VtZW50IG9mIEFDX0RFRlVOIHdpdGggYnJhY2tldHMgdG8gYXZvaWQgcG9zc2libGUKCWV4cGFuc2lvbi4KCjIwMDMtMTEtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaDogRG9uJ3QgaW5jbHVkZSBzdGRkZWYuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4IGNoZWNrIGZvciBmdDJidWlsZC5oLgoKMjAwMy0xMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDaGVjayB0aGF0IGZ0MmJ1aWxkLmggaGFzIGJlZW4KCWxvYWRlZCBmaXJzdC4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IEZpeCBpbmNvcnJlY3RseSBhcHBsaWVkCglwYXRjaC4KCjIwMDMtMTAtMzEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0dldF9QU19Gb250X0luZm8sIEZUX0hhc19QU19HbHlwaF9OYW1lcyk6CglGaXggcGFyYW1ldGVyIG9yZGVyIGluIGNhbGxzIHRvIEZUX0ZBQ0VfRklORF9TRVJWSUNFLgoKMjAwMy0xMC0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaAoJKEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19IKTogUmVtb3ZlZC4gIFVudXNlZC4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX3NlcnZpY2VzKTogVXBkYXRlZC4KCjIwMDMtMTAtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaDogUmVtb3ZlZC4gIE9ic29sZXRlLgoJKiBzcmMvYmFzZS9mdGJkZi5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBNb3ZlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnR5cGVzLmg6IFRoaXMgcGxhY2Ugc2luY2Ugbm8gb3RoZXIgbW9kdWxlIG5lZWRzIHRvCglrbm93IGFib3V0IHRob3NlIHR5cGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oOiBNb3ZlZCB0by4uLgoJKiBzcmMvdHlwZTQyL3Q0MnR5cGVzLmg6IFRoaXMgcGxhY2Ugc2luY2Ugbm8gb3RoZXIgbW9kdWxlIG5lZWRzIHRvCglrbm93IGFib3V0IHRob3NlIHR5cGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdmJkZi5oOiBJbmNsdWRlIEZUX0JERl9ILgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzbmFtZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwc2NtYXAuaDogVGhpcy4KCVVwZGF0ZWQgYEZUX1NlcnZpY2VfUHNOYW1lcycgLT4gYEZUX1NlcnZpY2VfUHNDTWFwcycgYW5kCglgUE9TVFNDUklQVF9OQU1FUycgLT4gYFBPU1RTQ1JJUFRfQ01BUFMnIGV2ZXJ5d2hlcmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNpbmZvLmg6IE5ldyBmaWxlLCBwcm92aWRpbmcKCVBvc3RTY3JpcHQgaW5mbyBzZXJ2aWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9QT1NUU0NSSVBUX0NNQVBTX0gsCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19IKTogTmV3IG1hY3JvcyBmb3Igc3Zwc2NtYXAuaCBhbmQKCXN2cHNpbmZvLmguCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0gsCglGVF9JTlRFUk5BTF9DRkZfVFlQRVNfSCwgRlRfSU5URVJOQUxfQkRGX1RZUEVTX0gpOiBSZW1vdmVkLgoKCSogc3JjL2Jhc2UvZnR0eXBlMS5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1RZUEUxX1RZUEVTX0ggYW5kCglGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSCBidXQgRlRfSU5URVJOQUxfU0VSVklDRV9IIGFuZAoJRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCShGVF9HZXRfUFNfRm9udF9JbmZvLCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpOiBVc2UgbmV3CglQT1NUU0NSSVBUX0lORk8gc2VydmljZS4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfSU5GT19ILgoJKGNmZl9wc19oYXNfZ2x5cGhfbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoJKGNmZl9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuaDogRG9uJ3QKCWluY2x1ZGUgRlRfSU5URVJOQUxfQ0ZGX1RZUEVTX0ggYnV0IGNmZnR5cGVzLmggZGlyZWN0bHkuCgoJKiBzcmMvY2lmL2NpZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCShjaWRfcHNfZ2V0X2ZvbnRfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCShjaWRfc2VydmljZV9wc19pbmZvKTogTmV3IHNlcnZpY2UuCgkoY2lkX3NlcnZpY2VzKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9JTkZPX0guCgkodDFfcHNfZ2V0X2ZvbnRfaW5mbywgdDFfcHNfaGFzX2dseXBoX25hbWVzKTogTmV3IGZ1bmN0aW9ucy4KCSh0MV9zZXJ2aWNlX3BzX2luZm8pOiBOZXcgc2VydmljZS4KCSh0MV9zZXJ2aWNlcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX0lORk9fSC4KCSh0NDJfcHNfZ2V0X2ZvbnRfaW5mbywgdDQyX3BzX2hhc19nbHlwaF9uYW1lcyk6IE5ldyBmdW5jdGlvbnMuCgkodDQyX3NlcnZpY2VfcHNfaW5mbyk6IE5ldyBzZXJ2aWNlLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0gKCWJ1dCB0NDJ0eXBlcy5oIGRpcmVjdGx5LgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNuYW1lc19pbnRlcmZhY2UsIHBzbmFtZXNfc2VydmljZXMpOgoJUmVuYW1lZCB0by4uLgoJKHBzY21hcHNfaW50ZXJmYWNlLCBwc2NtYXBzX3NlcnZpY2VzKTogVGhpcy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoKCgkqIHNyYy9nemlwL2luZmJsb2NrLmMgKGluZmxhdGVfYmxvY2tzKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAzLTEwLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogSGFuZGxlIGAvRW5jb2RpbmcgWyAuLi4gXScuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogVGVzdCB3aGV0aGVyIGBlZXhlYycKCWlzIHJlYWwuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IEltcHJvdmUgYm91bmRhcnkKCWNoZWNraW5nIHdoaWxlIHBhcnNpbmcuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTEwLTIxICBKb3NzZWxpbiBNb3VldHRlICA8am9zc0BkZWJpYW4ub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZvbnRSZWMpOiBgcGFpbnRfdHlwZScKCWFuZCBgc3Ryb2tlX3dpZHRoJyBhcmVuJ3QgcG9pbnRlcnMuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfRG9uZSksIHNyYy90eXBlMS90MW9ianMuYwoJKFQxX0ZhY2VfRG9uZSk6IERvbid0IGZyZWUgYHBhaW50X3R5cGUnIGFuZCBgc3Ryb2tlX3dpZHRoJy4KCjIwMDMtMTAtMjAgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoZm50X2NtYXBfY2xhc3MpOiBGaXggcG9zaXRpb24gb2YgYGNvbnN0Jy4KCjIwMDMtMTAtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBQYXRjaCBmcm9tCgkyMDAzLTA4LTE4IGludHJvZHVjZWQgYSBzZXZlcmUgYnVnIChGVF9SZW5kZXJfR2x5cGggd2FzIGNhbGxlZAoJdHdpY2UgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLCBjYXVzaW5nIHN0cmFuZ2UgcmVzdWx0cykuICBUaGlzCglpcyBmaXhlZCBub3cgYnkgY2xlYXJpbmcgdGhlIEZUX0xPQURfUkVOREVSIGJpdCBvZiBgbG9hZF9mbGFncycuCgoJKiBzcmMvYmFzZS9mdHBmci5jIChGVF9HZXRfUEZSX01ldHJpY3MpOiBJbml0aWFsaXplIGBlcnJvcicuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfdG9ieXRlcyk6IEluaXRpYWxpemUgYG4nLgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9zZm50cyk6IEluaXRpYWxpemUgYHN0cmluZ19zaXplJy4KCjIwMDMtMTAtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZWx5IHJldmlzZWQgVHlwZSA0MiBwYXJzZXIuICBJdCBub3cgaGFuZGxlcyBib3RoIGZvbnRzCglwcm9kdWNlZCB3aXRoIHR0ZnRvdDQyICh0ZXN0ZWQgdmVyc2lvbiAwLjMuMSkgYW5kCglUcnVlVHlwZVRvVHlwZTQyLnBzICh0ZXN0ZWQgdmVyc2lvbiBNYXkgMjAwMTsgaXQgaXMgbmVjZXNzYXJ5IHRvCglmaXggdGhlIGJyb2tlbiBoZWFkZXIgY29tbWVudCB0byBiZSBgJSFQUy1UcnVlVHlwZUZvbnQuLi4nKS4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfR2x5cGhTbG90X0xvYWQpOiBDaGFuZ2UgZm91cnRoCglwYXJhbWV0ZXIgdG8gYEZUX1VJbnQnLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuaCAoVDQyX1BhcnNlclJlYyk6IENoYW5nZSB0eXBlIG9mIGBpbl9tZW1vcnknCgl0byBGVF9Cb29sLgoJKFQ0Ml9Mb2FkZXIpOiBDaGFuZ2UgdHlwZSBvZiBgbnVtX2NoYXJzJyBhbmQgYG51bV9nbHlwaHMnIHRvCglGVF9VSW50LgoJQWRkIGBzd2FwX3RhYmxlJyBlbGVtZW50LgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKFQ0Ml9LRVlXT1JEX0NPVU5ULCBUMV9Ub0ZpeGVkLAoJVDFfVG9Db29yZEFycmF5LCBUMV9Ub1Rva2VuQXJyYXkpOiBSZW1vdmVkLgoJKFQxX1RvQnl0ZXMpOiBOZXcgbWFjcm8uCgkodDQyX2lzX2FscGhhLCB0NDJfaGV4dmFsKTogUmVtb3ZlZC4KCSh0NDJfaXNfc3BhY2UpOiBIYW5kbGUgYFwwJy4KCSh0NDJfcGFyc2VfZW5jb2RpbmcpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCglIYW5kbGUgYC9FbmNvZGluZyBbIC4uLiBdJyBhbHNvLgoJKFQ0Ml9Mb2FkX1N0YXR1cyk6IE5ldyBlbnVtZXJhdGlvbi4KCSh0NDJfcGFyc2Vfc2ZudHMpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCgkodDQyX3BhcnNlX2NoYXJzdHJpbmdzKTogVXBkYXRlZCB0byB1c2UgbmV3IFBvc3RTY3JpcHQgcGFyc2VyCglyb3V0aW5lcyBmcm9tIHBzYXV4LgoJSGFuZGxlIGAvQ2hhclN0cmluZ3MgPDwgLi4uID4+JyBhbHNvLgoJRG9uJ3QgZXhwZWN0IHRoYXQgLy5ub3RkZWYgaXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gZGljdGlvbmFyeS4gIENvcHkKCWNvZGUgZnJvbSB0eXBlMSBtb2R1bGUgdG8gaGFuZGxlIHRoaXMuCgkodDQyX3BhcnNlX2RpY3QpOiBVcGRhdGVkIHRvIHVzZSBuZXcgUG9zdFNjcmlwdCBwYXJzZXIgcm91dGluZXMKCWZyb20gcHNhdXguCglSZW1vdmUgY29kZSBmb3Igc3ludGhldGljIGZvbnRzICh3aGljaCBjYW4ndCBvY2N1ciBpbiBUeXBlIDQyCglmb250cykuCgkodDQyX2xvYWRlcl9kb25lKTogUmVsZWFzZSBgc3dhcF90YWJsZScuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHNraXBfc3RyaW5nKTogSW5jcmVhc2UgYGN1cicgcHJvcGVybHkuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogTWFrZSB0ZXN0IGZvciBgLm5vdGRlZicKCWZhc3Rlci4KCjIwMDMtMTAtMTUgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChibHVlX2NoYXJzKSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkoZm50X2NtYXBfY2xhc3NfcmVjLCBmbnRfY21hcF9jbGFzcyksIHNyYy9iZGYvYmRmbGliLmMgKGVtcHR5LAoJX251bV9iZGZfcHJvcGVydGllcyksIHNyYy9nemlwL2luZnV0aWwuYyAoaW5mbGF0ZV9tYXNrKSwKCXNyYy9nemlwL2luZmZpeGVkLmggKGZpeGVkX2JsLCBmaXhlZF9iZCwgZml4ZWRfdGwsIGZpeGVkX3RkKSwKCXNyYy9nemlwL2luZnRyZWVzLmggKGluZmxhdGVfdHJlZXNfZml4ZWQpLCBzcmYvZ3ppcC9pbmZ0cmVlcy5jCgkoaW5mbGF0ZV90cmVlc19maXhlZCk6IERlY29yYXRlIHdpdGggbW9yZSBgY29uc3QnIHRvIGF2b2lkCgl3cml0YWJsZSBnbG9iYWwgdmFyaWFibGVzIHdoaWNoIGFyZSBkaXNhbGxvd2VkIG9uIEFSTS4KCjIwMDMtMTAtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgsIHBhcnNlX2NoYXJzdHJpbmdzKTogUmVtb3ZlCgljb2RlIHNwZWNpYWxseSBmb3Igc3ludGhldGljIGZvbnRzOyB0aGlzIGlzIGhhbmRsZWQgZWxzZXdoZXJlLgoJKHBhcnNlX2VuY29kaW5nKTogUmVtb3ZlIGNvZGUgc3BlY2lhbGx5IGZvciBzeW50aGV0aWMgZm9udHM7IHRoaXMgaXMKCWhhbmRsZWQgZWxzZXdoZXJlLgoJSW1wcm92ZSBib3VuZGFyeSBjaGVja2luZyB3aGlsZSBwYXJzaW5nLgoJKHBhcnNlX2RpY3QpOiBJbXByb3ZlIGJvdW5kYXJ5IGNoZWNraW5nIHdoaWxlIHBhcnNpbmcuCglVc2UgZnRfbWVtY21wIHRvIHNpbXBsaWZ5IGNvZGUuCgoyMDAzLTEwLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9kaWN0KTogSGFuZGxlIHN5bnRoZXRpYwoJZm9udHMgcHJvcGVybHkuCgkocGFyc2VfY2hhcnN0cmluZ3MpOiBDb3B5IGNvcnJlY3QgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50bwoJYG5hbWVfdGFibGUnLgoKMjAwMy0xMC0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUhlYXZ5IG1vZGlmaWNhdGlvbiBvZiB0aGUgUFMgcGFyc2VyIHRvIGhhbmRsZSBjb21tZW50cyBhbmQgc3RyaW5ncwoJY29ycmVjdGx5LiAgVGhpcyBkb2Vzbid0IHNsb3cgZG93biB0aGUgbG9hZGluZyBvZiBQUyBmb250cwoJc2lnbmlmaWNhbnRseSBzaW5jZSBjaGFyc3RyaW5ncyBhcmVuJ3QgYWZmZWN0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF94ZGlnaXQpOiBSZW5hbWVkIHRvLi4uCgkoZnRfaXN4ZGlnaXQpOiBUaGlzLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCShmdF9pc2RpZ2l0KTogTmV3IGFsaWFzIHRvIGBpc2RpZ2l0Jy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfUGFyc2VyX0Z1bmNzUmVjKTogUmVuYW1lZAoJYHNraXBfYWxwaGEnIHRvIGBza2lwX1BTX3Rva2VuJy4KCUFkZCBwYXJhbWV0ZXIgdG8gYHRvX2J5dGVzJyBhbmQgY2hhbmdlIHNvbWUgYXJndW1lbnQgdHlwZXMuCgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYyAocHNfcGFyc2VyX2Z1bmNzKTogVXBkYXRlZC4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChmdF9jaGFyX3RhYmxlKTogTmV3IGFycmF5IHRvIG1hcCBjaGFyYWN0ZXIKCWNvZGVzIChBU0NJSSBhbmQgRUJDRElDKSBvZiBkaWdpdHMgdG8gbnVtYmVycy4KCShPUCk6IE5ldyBhdXhpbGlhcnkgbWFjcm8gaG9sZGluZyBlaXRoZXIgYD49JyBvciBgPCcgZGVwZW5kaW5nIG9uCgl0aGUgY2hhcmFjdGVyIGVuY29kaW5nLgoJKHNraXBfY29tbWVudCk6IE5ldyBmdW5jdGlvbi4KCShza2lwX3NwYWNlcyk6IFVzZSBpdC4KCShza2lwX2FscGhhKTogUmVtb3ZlZC4KCShza2lwX2xpdGVyYWxfc3RyaW5nLCBza2lwX3N0cmluZyk6IE5ldyBmdW5jdGlvbnMuCgkocHNfcGFyc2VyX3NraXBfUFNfdG9rZW4pOiBOZXcgZnVuY3Rpb24uICBUaGlzIGlzIGEgYmV0dGVyCglyZXBsYWNlbWVudCBvZi4uLgoJKHBzX3BhcnNlcl9za2lwX2FscGhhKTogUmVtb3ZlZC4KCShwc19wYXJzZXJfdG9fdG9rZW4sIHBzX3BhcnNlcl90b190b2tlbl9hcnJheSk6IFVwZGF0ZWQuCgkoVDFSYWRpeCk6IFJld3JpdHRlbiwgdXNpbmcgYGZ0X2NoYXJfdGFibGUnLgoJKHQxX3RvaW50KTogUmVuYW1lZCB0by4uLgoJKHBzX3RvaW50KTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkocHNfdG9ieXRlcyk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlIGRlbGltaXRlcnMgYW5kIGNoYW5nZSBzb21lCglhcmd1bWVudCB0eXBlcy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkodDFfdG9maXhlZCk6IFJlbmFtZWQgdG8uLi4KCShwc190b2ZpeGVkKTogVGhpcy4gIFVwZGF0ZSBhbGwgY2FsbGVycy4KCVVzZSBgZnRfY2hhcl90YWJsZScuCgkodDFfdG9jb29yZGFycmF5KTogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKHBzX3RvY29vcmRhcnJheSk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkodDFfdG9maXhlZGFycmF5KTogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKHBzX3RvZml4ZWRhcnJheSk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkodDFfdG9ib29sKTogUmVuYW1lZCB0by4uLgoJKHBzX3RvYm9vbCk6IFRoaXMuICBVcGRhdGUgYWxsIGNhbGxlcnMuCgkocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBVcGRhdGVkLgoJKHBzX3BhcnNlcl9sb2FkX2ZpZWxkX3RhYmxlKTogVXNlIGBUMV9NQVhfVEFCTEVfRUxFTUVOVFMnCglldmVyeXdoZXJlLgoJKHBzX3BhcnNlcl90b19pbnQsIHBzX3BhcnNlcl90b19maXhlZCwgcHNfcGFyc2VyX3RvX2Nvb3JkX2FycmF5LAoJcHNfcGFyc2VyX3RvX2ZpeGVkX2FycmF5KTogU2tpcCBzcGFjZXMuICBVcGRhdGVkLgoJKHBzX3BhcnNlcl90b19ieXRlcyk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlIGRlbGltaXRlcnMgYW5kIGNoYW5nZQoJc29tZSBhcmd1bWVudCB0eXBlcy4gIFVwZGF0ZWQuCgkqIHNyYy9wc2F1eC9wc29ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcGFyc2VfZGljdCk6IFVwZGF0ZWQuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoY2lkX3BhcnNlcl9uZXcpOiBDaGVjayB3aGV0aGVyIHRoZSBgU3RhcnREYXRhJwoJdG9rZW4gd2FzIHJlYWxseSBmb3VuZC4KCSogc3JjL2NpZC9jaWRwYXJzZS5oIChjaWRfcGFyc2VyX3NraXBfYWxwaGEpOiBVcGRhdGVkIGFuZCByZW5hbWVkCgl0by4uLgoJKGNpZF9wYXJzZXJfc2tpcF9QU190b2tlbik6IFRoaXMuCgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5oIChUMV9QYXJzZXJSZWMpOiBVc2UgYEZUX0Jvb2wnIGZvciBib29sZWFuCglmaWVsZHMuCgkoVDFfU2tpcF9BbHBoYSk6IFJlcGxhY2VkIHdpdGguLi4KCShUMV9Ta2lwX1BTX1Rva2VuKTogVGhpcyBuZXcgbWFjcm8uCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKGhleGFfdmFsdWUpOiBSZW1vdmVkLgoJKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBVc2UgYGZ0X2lzeGRpZ2l0JyBhbmQKCWBwc2F1eC0+cHNfcGFyc2VyX2Z1bmNzX3RvX2J5dGVzJyBmb3IgaGFuZGxpbmcgQVNDSUkgaGV4YWRlY2ltYWwKCWVuY29kaW5nLgoJQWZ0ZXIgZGVjcnlwdGluZywgcmVwbGFjZSB0aGUgZm91ciByYW5kb20gYnl0ZXMgYXQgdGhlIGJlZ2lubmluZwoJd2l0aCB3aGl0ZXNwYWNlLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHQxX2FsbG9jYXRlX2JsZW5kKTogVXNlIHByb3BlciBlcnJvciB2YWx1ZXMuCgkocGFyc2VyX2JsZW5kX2Rlc2lnbl9wb3NpdGlvbnMsIHBhcnNlX2JsZW5kX2Rlc2lnbl9tYXAsCglwYXJzZV93ZWlnaHRfdmVjdG9yKTogVXBkYXRlZC4KCShpc19zcGFjZSk6IEhhbmRsZSBgXGYnIGFsc28uCgkoaXNfbmFtZV9jaGFyKTogUmVtb3ZlZC4KCShyZWFkX2JpbmFyeV9kYXRhKTogVXBkYXRlZC4KCShwYXJzZV9lbmNvZGluZyk6IFVzZSBgZnRfaXNkaWdpdCcuCglVcGRhdGVkLgoJKHBhcnNlX3N1YnJzKTogVXBkYXRlZC4KCShUQUJMRV9FWFRFTkQpOiBOZXcgbWFjcm8uCgkocGFyc2VfY2hhcnN0cmluZ3MpOiBVcGRhdGVkLgoJUHJvdmlkZSBhIHdvcmthcm91bmQgZm9yIGJ1Z2d5IGZvbnRzIHdoaWNoIGhhdmUgbW9yZSBlbnRyaWVzIGluIHRoZQoJL0NoYXJTdHJpbmdzIGRpY3Rpb25hcnkgdGhlbiBleHBlY3RlZDsgdGhlIGZ1bmN0aW9uIG5vdyBhZGRzIHNvbWUKCXNsb3RzIGFuZCBza2lwcyBlbnRyaWVzIHdoaWNoIHN0aWxsIGV4Y2VlZCB0aGUgbmV3IGxpbWl0LgoJKHBhcnNlX2RpY3QpOiBVcGRhdGVkLgoJVGVybWluYXRlIG9uIHRoZSB0b2tlbiBgY2xvc2VmaWxlJy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAoVDFfU2tpcF9BbHBoYSk6IFJlcGxhY2VkIHdpdGguLi4KCShUMV9Ta2lwX1BTX1Rva2VuKTogVGhpcyBuZXcgbWFjcm8uICBVcGRhdGVkIGFsbCBjYWxsZXJzLgoJKHQ0Ml9wYXJzZV9lbmNvZGluZyk6IFVzZSBgZnRfaXNkaWdpdCcuCgoKCSogc3JjL2Jhc2UvZnRtbS5jIChmdF9mYWNlX2dldF9tbV9zZXJ2aWNlKTogUmV0dXJuIEZUX0Vycl9PSyBpZgoJc3VjY2Vzcy4KCjIwMDMtMTAtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2R1bGUuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmg6IFRoaXMgdG8gYXZvaWQgZHVwbGljYXRlIGZpbGUgbmFtZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9IKTogVXBkYXRlZC4KCjIwMDMtMTAtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3JpZW50YXRpb25FeHRyZW11bVJlYywKCUZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKTogVHJpdmlhbCB0eXBvIGZpeGVzIHRvIG1ha2UgaXQgY29tcGlsZS4KCjIwMDMtMTAtMDIgIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyICA8bWFya3VzQG9iZXJodW1lci5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZUX1dpbkZOVF9IZWFkZXJSZWMpOiBgY29sb3JfdGFibGVfb2Zmc2V0JwoJaGFzIGZvdXIgYnl0ZXMsIG5vdCB0d28uCglGaXggYWxsIHVzZXJzLgoJKGZudF9mb250X2xvYWQsIEZOVF9Mb2FkX0dseXBoKTogQWRkIG1vcmUgZm9udCB2YWxpZGl0eSB0ZXN0cy4KCjIwMDMtMTAtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvZml0Lyo6IEFkZGluZyBmaXJzdCBzb3VyY2UgZmlsZXMgb2YgdGhlIG5ldyBtdWx0aS1zY3JpcHQKCWBhdXRvLWZpdHRlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3JpZW50YXRpb24pOiBOZXcgZW51bWVyYXRpb24uCgkoRlRfT3V0bGluZV9HZXRfT3JpZW50YXRpb24pOiBOZXcgZGVjbGFyYXRpb24uCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX09yaWVudGF0aW9uRXh0cmVtdW1SZWMpOiBOZXcgc3RydWN0dXJlLgoJKGZ0X29yaWVudGF0aW9uX2V4dHJlbXVtX2NvbXB1dGUpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uKTogTmV3IGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGZpbGwKCW9yaWVudGF0aW9uIG9mIGEgZ2l2ZW4gZ2x5cGggb3V0bGluZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfTE9PS1VQX1NFUlZJQ0UpOiBGaXhlZAoJdHJpdmlhbCBidWcgd2hpY2ggY291bGQgY3Jhc2ggdGhlIGZvbnQgZW5naW5lIHdoZW4gYSBjYWNoZWQgc2VydmljZQoJcG9pbnRlciB3YXMgcmV0cmlldmVkLgoKMjAwMy0wOS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9wYXJzZV9kaWN0KTogU2tpcCB0b2tlbiBpZiBubyBrZXl3b3JkIGlzCglmb3VuZC4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKElTX1QxX1dISVRFU1BBQ0UsIElTX1QxX0xJTkVTUEFDRSwKCUlTX1QxX1NQQUNFKTogUmVtb3ZlZC4KCShQRkJfVGFnKTogUmVtb3ZlZC4KCShyZWFkX3BmYl90YWcpOiBEb24ndCB1c2UgUEZCX1RhZy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX2lzX3NwYWNlKTogSGFuZGxlIGBcZicgYWxzby4KCSh0NDJfcGFyc2VfZW5jb2RpbmcpOiBIYW5kbGUgc3ludGhldGljIGZvbnRzLgoKMjAwMy0wOS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmg6IERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX09CSkVDVFNfSCBidXQgRlRfSU5URVJOQUxfU0VSVklDRV9ILgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERvbid0IGluY2x1ZGUKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoKMjAwMy0wOS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIG5ldyBzZXJ2aWNlIHRvIGhhbmRsZSBnbHlwaCBuYW1lIGRpY3Rpb25hcmllcywgcmVwbGFjaW5nIHRoZQoJb2xkIGludGVybmFsIGhlYWRlciBuYW1lZCBgcHNuYW1lcy5oJyBieSBgc2VydmljZXMvc3Zwc25hbWUuaCcuCglOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBgc2VydmljZXMvc3Zwb3N0bm0uaCcgd2hpY2ggb25seQoJaGFuZGxlcyB0aGUgcmV0cmlldmFsIG9mIFBvc3RTY3JpcHQgZm9udCBuYW1lcyBmb3IgYSBnaXZlbiBmYWNlLgoJKFNob3VsZCB3ZSBtZXJnZSB0aGVzZSB0d28gc2VydmljZXMgaW50byBhIHNpbmdsZSBoZWFkZXI/KQoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc25hbWVzLmg6IFJlbW92ZWQuICBNb3N0IG9mIGl0cwoJY29udGVudHMgaXMgbW92ZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzbmFtZS5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaAoJKEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9OQU1FKTogUmVwbGFjZWQgd2l0aC4uLgoJKEZUX1NFUlZJQ0VfSURfUE9TVFNDUklQVF9GT05UX05BTUUpOiBOZXcgbWFjcm8uCgkoUHNOYW1lKTogU2VydmljZSBuYW1lZCBjaGFuZ2VkIHRvLi4uCgkoUHNGb250TmFtZSk6IFRoaXMuCglVcGRhdGVkIGBGVF9TZXJ2aWNlX1BzTmFtZScgLT4gYEZUX1NlcnZpY2VfUHNGb250TmFtZScgYW5kCglgUE9TVFNDUklQVF9OQU1FJyAtPiBgUE9TVFNDUklQVF9GT05UX05BTUUnIGV2ZXJ5d2hlcmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmgKCShGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0gpOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6IEluY2x1ZGUKCUZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKFQxX0RlY29kZXJSZWMpOiBVcGRhdGVkIHR5cGUgb2YgYHBzbmFtZXMnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaDogRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCUluY2x1ZGUgRlRfSU5URVJOQUxfT0JKRUNUU19ILgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmg6IERvbid0IGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0ZhY2VSZWMpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UpOiBDaGFuZ2VkCglvcmRlciBvZiBwYXJhbWV0ZXJzLiAgQWxsIGNhbGxlcnMgdXBkYXRlZC4KCShGVF9GQUNFX0ZJTkRfR0xPQkFMX1NFUlZJQ0UpOiBOZXcgbWFjcm8gdG8gbG9vayB1cCBhIHNlcnZpY2UKCWdsb2JhbGx5LCBjaGVja2luZyBhbGwgbW9kdWxlcy4KCShGVF9TZXJ2aWNlQ2FjaGVSZWMpOiBVcGRhdGVkLgoJKEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19IKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcKCWBzdnBzbmFtZS5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoZnRfbW9kdWxlX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKGNmZl9nZXRfZ2x5cGhfbmFtZSwgY2ZmX2dldF9uYW1lX2luZGV4KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTCglzZXJ2aWNlLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pY29kZV9pbml0KTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2ZmX2ZhY2VfaW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgoJKiBzcmMvY2lkL2NpZG9ianMuYzogIERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ICglidXQgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVTX0guCgkoY2lkX2ZhY2VfaW5pdCk6IFVzZSBuZXcgUE9TVFNDUklQVF9OQU1FUyBzZXJ2aWNlLgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IERvbid0IGluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19ILgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX3N0ZF9pbml0LCB0MV9jbWFwX3VuaWNvZGVfaW5pdCk6IFVzZQoJbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmggKHQxX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSwKCXQxX2RlY29kZV9pbml0KTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9wc2F1eC90MWNtYXAuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmg6IERvbnQnIGluY2x1ZGUKCUZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmM6ICBEb24ndCBpbmNsdWRlCglGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX05BTUVTX0ggYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHBzX2J1aWxkX3VuaWNvZGVfdGFibGUpOiBSZW5hbWVkIHRvLi4uCgkocHNfdW5pY29kZXNfaW5pdCk6IFRoaXMuCgkocHNfbG9va3VwX3VuaWNvZGUpOiBSZW5hbWVkIHRvLi4uCgkocHNfdW5pY29kZXNfY2hhcl9pbmRleCk6IFRoaXMuCgkocHNfbmV4dF91bmljb2RlKTogUmVuYW1lZCB0by4uLgoJKHBzX3VuaWNvZGVzX2NoYXJfbmV4dCk6IFRoaXMuCgkocHNuYW1lc19pbnRlcmZhY2UpOiBVcGRhdGVkLgoJKHBzbmFtZXNfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShwc25hbWVzX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoJKHBzbmFtZXNfbW9kdWxlX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHNmbnRfaW5pdF9mYWNlKTogVXNlIG5ldyBQT1NUU0NSSVBUX05BTUVTIHNlcnZpY2UuCgkqIHNyYy9zZm50L3R0cG9zdC5jOiBEb24ndCBpbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfTkFNRVNfSAoJYnV0IEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FU19ILgoJKHR0X2ZhY2VfZ2V0X3BzX25hbWUpOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCShUMV9GYWNlX0luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMgc2VydmljZS4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX2dldF9wc19uYW1lKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9nZXRfcHNfZm9udF9uYW1lKTogVGhpcy4KCSh0NDJfc2VydmljZV9wc19uYW1lKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9zZXJ2aWNlX3BzX2ZvbnRfbmFtZSk6IFRoaXMuCgkodDQyX3NlcnZpY2VzKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBVc2UgbmV3IFBPU1RTQ1JJUFRfTkFNRVMKCXNlcnZpY2UuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiAgRG9uJ3QgaW5jbHVkZQoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9OQU1FU19IIGJ1dCBGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRVNfSC4KCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dldF9HbHlwaCk6IERvbid0IGFjY2VzcyBgc2xvdCcgYmVmb3JlCgl0ZXN0aW5nIGl0cyB2YWxpZGl0eS4gIFJlcG9ydGVkIGJ5IEhlbnJ5IE1hZGRvY2tzCgk8bWFkZG9ja3NAbWV0c2VydmljZS5jb20+LgoKMjAwMy0wOS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UpOgoJRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgKHMvcHB0ci9QcHRyLykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BGUl9ILAoJRlRfSU5URVJOQUxfRk5UX1RZUEVTX0gpOiBSZW1vdmVkLgoKMjAwMy0wOS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1pZ3JhdGluZyB0aGUgUEZSIGFuZCBXSU5GTlQgZHJpdmVycyB0byB0aGUgbmV3IHNlcnZpY2UtYmFzZWQKCWludGVybmFsIEFQSS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogUmVtb3ZlZC4gIE1vc3Qgb2YgaXRzIGRhdGEKCWFyZSBtb3ZlZCB0byB3aW5mbnQuaCBhbmQuLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdndpbmZudC5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGZyLmg6IFJlbW92ZWQuICBNb3N0IG9mIGl0cyBkYXRhIGFyZQoJbW92ZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBmci5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX0ZBQ0VfRklORF9TRVJWSUNFLAoJRlRfRkFDRV9MT09LVVBfU0VSVklDRSk6IFNpbXBsaWZ5IGZpeCBvZiAyMDAzLTA5LTE2IGJ5IHJlbW92aW5nCglwb2ludGVyIHR5cGUgYXJndW1lbnQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoJVXBkYXRlIG1hY3JvIG5hbWVzIG9mIHNlcnZpY2VzIGhlYWRlciBmaWxlcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCk6IFNpbXBsaWZpZWQgY29kZS4KCgkqIHNyYy9iYXNlL2Z0cGZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QRlJfSCBpbnN0ZWFkIG9mCglGVF9JTlRFUk5BTF9QRlJfSC4KCShmdF9wZnJfY2hlY2ssIEZUX0dldF9QRlJfTWV0cmljcywgRlRfR2V0X1BGUl9LZXJuaW5nLAoJRlRfR2V0X1BGUl9BZHZhbmNlKTogVXNlIHNlcnZpY2VzIHByb3ZpZGVkIGluIGBQRlJfTUVUUklDUycuCgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfV0lORk5UX0ggaW5zdGVhZCBvZgoJRlRfSU5URVJOQUxfRk5UX1RZUEVTX0guCgkoRlRfR2V0X1dpbkZOVF9IZWFkZXIpOiBVc2Ugc2VydmljZSBwcm92aWRlZCBpbiBgV0lORk5UJy4KCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1BGUl9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCBpbnN0ZWFkIG9mIEZUX0lOVEVSTkFMX1BGUl9ILgoJKHBmcl9zZXJ2aWNlX2JkZik6IFVwZGF0ZWQuCgkocGZyX3NlcnZpY2VzKTogTmV3IHNlcnZpY2VzIGxpc3QuCgkocGZyX2dldF9zZXJ2aWNlKTogTmV3IGZ1bmN0aW9uLgoJKHBmcl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfV0lORk5UX0ggYW5kCglGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IIGluc3RlYWQgb2YgRlRfSU5URVJOQUxfRk5UX1RZUEVTX0guCgkod2luZm50X2dldF9oZWFkZXIsIHdpbmZudF9nZXRfc2VydmljZSk6IE5ldyBmdW5jdGlvbnMuCgkod2luZm50X3NlcnZpY2VfcmVjKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgV0lORk5UIHNlcnZpY2VzLgoJKHdpbmZudF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvd2luZm9udHMvd2luZm50Lmg6IEFkZCBtb3N0IG9mIHRoZSByZW1vdmVkIGZudHR5cGVzLmggZGF0YS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfc2VydmljZV9wc19uYW1lKTogRml4IHR5cG8uCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfc2VydmljZV9wc19uYW1lKTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NpZC9jaWRvYmpzLmMsIHNyYy9wZnIvcGZyc2JpdC5jLAoJc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYzogUmVtb3ZpbmcgdmFyaW91cyBjb21waWxlcgoJd2FybmluZ3MuCgoyMDAzLTA5LTE5ICBEYXZpZCBCZXZhbiAgPGRiZXZhbkBlbXRleC5jb20+CgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChwZmJfdGFnX2ZpZWxkcyk6IFJlbW92ZWQuCgkocmVhZF9wZmJfdGFnKTogRml4IGNvZGUgc28gdGhhdCBpdCBkb2Vzbid0IGZhaWwgb24gZW5kLW9mLWZpbGUKCWluZGljYXRvciAoMHg4MDAzKS4KCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMy0wOS0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfRkFDRV9GSU5EX1NFUlZJQ0UsCglGVF9GQUNFX0xPT0tVUF9TRVJWSUNFKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIHBvaW50ZXIgdHlwZS4KCVVnbHksIEkga25vdywgYnV0IHRoaXMgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiB3aXRoIEMrKyAtLQoJbWF5YmUgc29tZW9uZSBrbm93cyBhIGJldHRlciBzb2x1dGlvbj8KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05hbWVfSW5kZXgsIEZUX0dldF9HbHlwaF9OYW1lKTogUmVtb3ZlCglDKysgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYmFzZS9mdGJkZi5jIChGVF9HZXRfQkRGX0NoYXJzZXRfSUQsIEZUX0dldF9CREZfUHJvcGVydHkpOgoJRml4IG9yZGVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gRlRfRkFDRV9GSU5EX1NFUlZJQ0UuCgoyMDAzLTA5LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQXZvaWQgaGVhZGVyIGZpbGVzIHdpdGggaWRlbnRpY2FsIG5hbWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9iZGYuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2YmRmLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9nbHlmZGljdC5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZnbGRpY3QuaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL211bHRtYXN0Lmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdm1tLmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCUFkZCBGVF9CRUdJTl9IRUFERVIgYW5kIEZUX0VORF9IRUFERVIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc2ZudC5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZzZm50Lmg6IFRoaXMuCglBZGQgY29weXJpZ2h0IG5vdGljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9wb3N0bmFtZS5oOiBSZW5hbWVkIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3Zwb3N0bm0uaDogVGhpcy4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3hmODZuYW1lLmg6IFJlbmFtZWQgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnhmODZubS5oOiBUaGlzLgoJQWRkIGNvcHlyaWdodCBub3RpY2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c2Vydi5oOiBBZGQgRlRfQkVHSU5fSEVBREVSIGFuZAoJRlRfRU5EX0hFQURFUi4KCUFkZCBjb3B5cmlnaHQgbm90aWNlLgoJVXBkYXRlIG1hY3JvIG5hbWVzIG9mIHNlcnZpY2VzIGhlYWRlciBmaWxlcy4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoU0VSVklDRVNfRElSKTogTmV3IHZhcmlhYmxlLgoJKEJBU0VfSCk6IEFkZCBzZXJ2aWNlcyBoZWFkZXIgZmlsZXMuCgoyMDAzLTA5LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdG9wbGV2ZWwubWsgKGRpc3RjbGVhbik6IFJlbW92ZSBgYnVpbGRzL3VuaXgvZnJlZXR5cGUyLnBjJy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogRG9uJ3QgbG9hZCBoZWFkZXJzIHR3aWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9TRk5UX0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfU0ZOVF9ILgoKCSogc3JjL2NmZi9jZmZjbWFwLmM6IEluY2x1ZGUgYGNmZmVycnMuaCcuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYzogSW5jbHVkZSBgcGZyZXJyb3IuaCcuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgYHNmZXJyb3JzLmgnLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmg6IEFkZCBkZWNsYXJhdGlvbiBmb3IgYHBzX3BhcnNlcl90b19ieXRlcycuCgoyMDAzLTA5LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJSW50cm9kdWNpbmcgdGhlIGNvbmNlcHQgb2YgYG1vZHVsZSBzZXJ2aWNlcycuICBUaGlzIGlzIHRoZSBmaXJzdAoJc3RlcCB0b3dhcmRzIGEgbWFzc2l2ZSBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgZW5naW5lJ3MgaW50ZXJuYWxzLCBpbgoJb3JkZXIgdG8gZ2V0IHJpZCBvZiB2YXJpb3VzIG51bWJlcnMgb2YgaGFja3MuCgoJTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgd2lsbCBicmVhayBzb3VyY2UgJiBiaW5hcnkgY29tcGF0aWJpbGl0eSBmb3IKCWF1dGhvcnMgb2YgZXh0ZXJuYWwgZm9udCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCAoRlRfQkVHSU5fU1RNTlQsIEZUX0VORF9TVE1OVCwKCUZUX0RVTU1ZX1NUTU5UKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2Lmg6IE5ldyBmaWxlLCBjb250YWluaW5nIHRoZSBuZXcKCXN0cnVjdHVyZXMgYW5kIG1hY3JvcyB0byBwcm92aWRlIGBzZXJ2aWNlcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0VYVEVOU0lPTl9ILAoJRlRfSU5URVJOQUxfRVhURU5EX0gsIEZUX0lOVEVSTkFMX0hBU0hfSCwgRlRfSU5URVJOQUxfT0JKRUNUX0gpOgoJUmVtb3ZlZCwgb2Jzb2xldGUuCgkoRlRfSU5URVJOQUxfU0VSVklDRV9IKTogTmV3IG1hY3JvIGZvciBgZnRzZXJ2LmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9iZGYuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvZ2x5ZmRpY3QuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvcG9zdG5hbWUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMveGY4Nm5hbWUuaDogTmV3IGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1tLmggKEZUX0dldF9NTV9GdW5jLCBGVF9TZXRfTU1fRGVzaWduX0Z1bmMsCglGVF9TZXRfTU1fQmxlbmRfRnVuYyk6IEZ1bmN0aW9uIHBvaW50ZXJzIG1vdmVkIChpbiBtb2RpZmllZCBmb3JtKQoJdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9tdWx0bWFzdC5oOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oIChTRk5UX0ludGVyZmFjZSk6IGBnZXRfaW50ZXJmYWNlJwoJaXMgbm93IG9mIHR5cGUgYEZUX01vZHVsZV9SZXF1ZXN0ZXInLgoJKFNGTlRfR2V0X0ludGVyZmFjZV9GdW5jLCBTRk5UX0xvYWRfVGFibGVfRnVuYyk6IEZ1bmN0aW9uIHBvaW50ZXJzCgltb3ZlZCAoaW4gbW9kaWZpZWQgZm9ybSkgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWVzL3NmbnQuaDogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKEZUX0dldF9TZm50X1RhYmxlX0Z1bmMpOiBGdW5jdGlvbgoJcG9pbnRlciBtb3ZlZCAoaW4gbW9kaWZpZWQgZm9ybSkgdG8gYHNlcnZpY2VzL3NmbnQuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKEZUX01vZHVsZV9JbnRlcmZhY2UpOiBNYWtlIGl0IGEKCWEgdHlwZWRlZiB0byBgRlRfUG9pbnRlcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYyk6IEFkZAoJYHBvc3RzY3JpcHRfbmFtZScuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpOiBSZW1vdmUKCWBwb3N0c2NyaXB0X25hbWUnLgoJQWRkIGBzZXJ2aWNlcycgZWxlbWVudC4KCShGVF9MaWJyYXJ5UmVjKTogUmVtb3ZlIGBtZXRhX2NsYXNzJy4KCgkqIHNyYy9iYXNlL2Z0YmRmLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9CREZfSC4KCSh0ZXN0X2ZvbnRfdHlwZSk6IFJlbW92ZWQuCgkoRlRfR2V0X0JERl9DaGFyc2V0X0lELCBGVF9HZXRfQkRGX1Byb3BlcnR5KTogVXNlIHNlcnZpY2VzCglwcm92aWRlZCBpbiBgRlRfU0VSVklDRV9JRF9CREYnLgoKCSogc3JjL2Jhc2UvZnRtbS5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfTVVMVElQTEVfTUFTVEVSU19ILgoJKGZ0X2ZhY2VfZ2V0X21tX3NlcnZpY2UpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uIHRvIGdldCBzZXJ2aWNlcwoJZnJvbSBgRlRfU0VSVklDRV9JRF9NVUxUSV9NQVNURVJTJy4KCShGVF9HZXRfTXVsdGlfTWFzdGVyLCBGVF9TZXRfTU1fRGVzaWduX0Nvb3JkaW5hdGVzLAoJRlRfU2V0X01NX0JsZW5kX0Nvb3JkaW5hdGVzKTogVXNlIGBmdF9mYWNlX2dldF9tbV9zZXJ2aWNlJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0ggYW5kCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSC4KCShmdF9zZXJ2aWNlX2xpc3RfbG9va3VwKTogTmV3IGZ1bmN0aW9uIHRvIGdldCBhIHNwZWNpZmljIHNlcnZpY2UuCgkoZGVzdHJveV9mYWNlKTogVXBkYXRlZC4KCShNYWNfUmVhZF9QT1NUX1Jlc291cmNlKTogU2ltcGxpZnkgc29tZSBjb2RlLgoJKElzTWFjUmVzb3VyY2UpOiBGaXggd2FybmluZ3MuCgkoRlRfR2V0X05hbWVfSW5kZXgsIEZUX0dldF9HbHlwaF9OYW1lKTogVXNlIHNlcnZpY2VzIHByb3ZpZGVkIGluCglgRlRfU0VSVklDRV9JRF9HTFlQSF9ESUNUJy4KCShGVF9HZXRfUG9zdHNjcmlwdF9OYW1lKTogVXNlIHNlcnZpY2UgcHJvdmlkZWQgaW4KCWBGVF9TRVJWSUNFX0lEX1BPU1RTQ1JJUFRfTkFNRScuCgkoRlRfR2V0X1NmbnRfVGFibGUsIEZUX0xvYWRfU2ZudF9UYWJsZSk6IFVzZSBzZXJ2aWNlcyBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfU0ZOVF9UQUJMRScuCgoJKiBzcmMvYmFzZS9mdHhmODYuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9ILgoJKEZUX0dldF9YMTFfRm9udF9Gb3JtYXQpOiBVc2Ugc2VydmljZSBwcm92aWRlZCBpbgoJYEZUX1NFUlZJQ0VfSURfWEY4Nl9OQU1FJy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX0JERl9IIGFuZAoJRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCShiZGZfZ2V0X2NoYXJzZXRfaWQpOiBOZXcgZnVuY3Rpb24uCgkoYmRmX3NlcnZpY2VfYmRmKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgQkRGIHNlcnZpY2VzLgoJKGJkZl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKGJkZl9kcml2ZXJfcmVxdWVzdGVyKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1hGUkVFODZfTkFNRV9IIGFuZAoJRlRfU0VSVklDRV9HTFlQSF9ESUNUX0guCgkoY2ZmX3NlcnZpY2VfZ2x5cGhfZGljdCk6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIENGRiBzZXJ2aWNlcy4KCShjZmZfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShjZmZfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9QT1NUU0NSSVBUX05BTUVfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkoY2lkX3NlcnZpY2VfcHNfbmFtZSk6IE5ldyBzdHJ1Y3R1cmUgcHJvdmlkaW5nIENJRCBzZXJ2aWNlcy4KCShjaWRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShjaWRfZ2V0X2ludGVyZmFjZSk6IFVzZSBgZnRfc2VydmljZV9saXN0X2xvb2t1cCcuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9CREZfSCBhbmQKCUZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0guCgkocGNmX3NlcnZpY2VfYmRmKTogTmV3IHN0cnVjdHVyZSBwcm92aWRpbmcgUENGIHNlcnZpY2VzLgoJKHBjZl9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHBjZl9kcml2ZXJfcmVxdWVzdGVyKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9HTFlQSF9ESUNUX0ggYW5kCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9ILgoJKGdldF9zZm50X2dseXBoX25hbWUpOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF9nZXRfZ2x5cGhfbmFtZSk6IFRoaXMuCgkoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfZ2V0X3BzX25hbWUpOiBUaGlzLgoJVXBkYXRlZC4KCShzZm50X3NlcnZpY2VfZ2x5cGhfZGljdCwgc2ZudF9zZXJ2aWNlX3BzX25hbWUpOiBOZXcgc3RydWN0dXJlcwoJcHJvdmlkaW5nIHNlcnZpY2VzLgoJKHNmbnRfc2VydmljZXMpOiBOZXcgc2VydmljZXMgbGlzdC4KCShzZm50X2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSC4KCSh0dF9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKHR0X2dldF9pbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEluY2x1ZGUgRlRfU0VSVklDRV9NVUxUSVBMRV9NQVNURVJTX0gsCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSCwgRlRfU0VSVklDRV9YRlJFRTg2X05BTUVfSCwgYW5kCglGVF9TRVJWSUNFX1BPU1RTQ1JJUFRfTkFNRV9ILgoJKHQxX3NlcnZpY2VfZ2x5cGhfZGljdCwgdDFfc2VydmljZV9wc19uYW1lLAoJdDFfc2VydmljZV9tdWx0aV9tYXN0ZXJzKTogTmV3IHN0cnVjdHVyZXMgcHJvdmlkaW5nIFR5cGUgMSBzZXJ2aWNlcy4KCSh0MV9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKEdldF9JbnRlcmZhY2UpOiBVc2UgYGZ0X3NlcnZpY2VfbGlzdF9sb29rdXAnLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBJbmNsdWRlIEZUX1NFUlZJQ0VfWEZSRUU4Nl9OQU1FX0gsCglGVF9TRVJWSUNFX0dMWVBIX0RJQ1RfSCwgYW5kIEZUX1NFUlZJQ0VfUE9TVFNDUklQVF9OQU1FX0guCgkodDQyX3NlcnZpY2VfZ2x5cGhfZGljdCwgdDQyX3NlcnZpY2VfcHNfbmFtZSk6IE5ldyBzdHJ1Y3VyZXMKCXByb3ZpZGluZyBUeXBlIDQyIHNlcnZpY2VzLgoJKHQ0Ml9zZXJ2aWNlcyk6IE5ldyBzZXJ2aWNlcyBsaXN0LgoJKFQ0Ml9HZXRfSW50ZXJmYWNlKTogVXNlIGBmdF9zZXJ2aWNlX2xpc3RfbG9va3VwJy4KCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGZvciAyLjEuNiwgYW5kCglyZW1vdmluZyBvYnNvbGV0ZSB3YXJuaW5ncyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA2LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjU6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjb3JlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXhjZXB0LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oOiBSZW1vdmVkLiAgT2Jzb2xldGUuCgoyMDAzLTA5LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIFBGUiBrZXJuaW5nIHN1cHBvcnQuICBUaGUgdGFibGVzIHdpdGhpbiB0aGUgZm9udCBmaWxlIGNvbnRhaW4KCShjaGFyY29kZSxjaGFyY29kZSkga2VybmluZyBwYWlycywgd2UgbmVlZCB0byBjb252ZXJ0IHRoZW0gdG8KCShnaW5kZXgsZ2luZGV4KS4KCgkqIHNyYy9iYXNlL2Z0cGZyLmMgKGZ0X3Bmcl9jaGVjayk6IEZpeCBzZXJpb3VzIHR5cG8uCgkqIHNyYy9wZnIvcHJmbG9hZC5jOiBSZW1vdmUgZGVhZCBjb2RlLgoJKHBmcl9nZXRfZ2luZGV4LCBwZnJfY29tcGFyZV9rZXJuX3BhaXJzLCBwZnJfc29ydF9rZXJuaW5nX3BhaXJzKToKCU5ldyBmdW5jdGlvbnMuCgkocGZyX3BoeV9mb250X2RvbmUpOiBGcmVlIGBrZXJuX3BhaXJzJy4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IENhbGwgYHBmcl9zb3J0X2tlcm5pbmdfcGFpcnMnLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBGaXgga2VybmluZyBleHRyYWN0aW9uLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LRVJOX1BBSVJfSU5ERVgpOiBOZXcgbWFjcm8uCgkoUEZSX0tlcm5QYWlyUmVjKTogTWFrZSBga2VybmluZycgYW4gRlRfSW50LgoJKFBGUl9QaHlGb250UmVjKTogTmV3IGVsZW1lbnQgYGtlcm5fcGFpcnMnLgoJKFBGUl9LZXJuRmxhZ3MpOiBWYWx1ZXMgb2YgUEZSX0tFUk5fMkJZVEVfQ0hBUiBhbmQKCVBGUl9LRVJOXzJCWVRFX0FESiB3ZXJlIGVycm9uZW91c2x5IHJldmVyc2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG9wdGlvbi5oOiBDb21tZW50aW5nIG91dCB0aGUgbWFjcm8KCVRUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVIuCgoyMDAzLTA5LTAyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAzLTA4LTMxICBNYW5pc2ggU2luZ2ggIDx5b3NoQGdpbXAub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogRG9uJ3QgdXNlIEZUX01FTV9DT1BZIGJ1dAoJRlRfTUVNX01PVkUuCgoyMDAzLTA4LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ09ESU5HX1NKSVMsIEZUX0VOQ09ESU5HX0dCMjMxMiwKCUZUX0VOQ09ESU5HX0JJRzUsIEZUX0VOQ09ESU5HX1dBTlNVTkcsIEZUX0VOQ09ESU5HX0pPSEFCKTogTmV3CgllbnVtZXJhdGlvbnMgb2YgRlRfRW5jb2RpbmcuICBUaGUgRlRfRU5DT0RJTkdfTVNfKiB2YXJpYW50cyBleGNlcHQKCUZUX0VOQ09ESU5HX01TX1NZTUJPTCBhcmUgbm93IGRlcHJlY2F0ZWQuCglVcGRhdGVkIGFsbCB1c2Vycy4KCSogZG9jcy9DSEFOR0VTOiBEb2N1bWVudCBpdC4KCjIwMDMtMDgtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IEFjY2VwdCBsb3dlcmNhc2UgY2hhcmFjdGVycwoJZm9yIHNwYWNpbmcuCgoyMDAzLTA4LTI3ICBNaWtlIEZBQklBTiAgPG1mYWJpYW5Ac3VzZS5kZT4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KSwgc3JjL2JkZi9iZGZkcml2ci5jCgkoQkRGX0ZhY2VfSW5pdCk6IEFjY2VwdCBsb3dlcmNhc2UgY2hhcmFjdGVycyBmb3Igc2xhbnQgYW5kIHdlaWdodC4KCjIwMDMtMDgtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERpc2FibGluZyBUcnVlVHlwZSBieXRlY29kZQoJaW50ZXJwcmV0ZXIgdW50aWwgdGhlIFVOUEFURU5URURfSElOVElORyB3b3JrcyBhcyBhZHZlcnRpc2VkLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IFVzZSBgfCcgZm9yCglzZXR0aW5nIGBsb2FkX2ZsYWdzJy4KCgkqIEphbWZpbGU6IEFkZGluZyB0aGUgYHJlZmRvYycgdGFyZ2V0IHRvIHRoZSBKYW1maWxlIGluIG9yZGVyIHRvCglidWlsZCB0aGUgQVBJIFJlZmVyZW5jZSBpbiBgZG9jcy9yZWZlcmVuY2UnIGF1dG9tYXRpY2FsbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvUmVjKSwgc3JjL2NpZC9jaWR0b2tlbi5oLAoJc3JjL3R5cGUxL3QxdG9rZW5zLmgsIHNyYy90eXBlNDIvdDQycGFyc2UuYzogUmVzZXR0aW5nIHRoZSB0eXBlcyBvZgoJYGl0YWxpY19hbmdsZScsIGB1bmRlcmxpbmVfcG9zaXRpb24nLCBhbmQgYHVuZGVybGluZV90aGlja25lc3MnIHRvCgl0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGkuZS4sIGxvbmcsIHNob3J0LCBhbmQgdXNob3J0KSBpbiBvcmRlciB0bwoJYXZvaWQgYnJlYWtpbmcgYmluYXJ5IGNvbXBhdGliaWxpdHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dW5wYXQuaDogRml4aW5nIGRvY3VtZW50YXRpb24gY29tbWVudC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIGRldmVsL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORyk6IFJlcGxhY2VkCgl3aXRoLi4uCgkoVFRfQ09ORklHX09QVElPTl9VTlBBVEVOVEVEX0hJTlRJTkcpOiBUaGlzLiAgVXBkYXRlZCBhbGwgdXNlcnMuCgkoVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBSZW1vdmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfREVCVUdfSE9PS19UWVBFMSk6IFJlbW92ZWQuCgkoRlRfREVCVUdfSE9PS19VTlBBVEVOVEVEX0hJTlRJTkcpOiBOZXcgbWFjcm8uICBVc2UgdGhpcyB3aXRoCglgRlRfU2V0X0RlYnVnX0hvb2snIHRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhlIHJlbW92ZWQKCVRUX0NPTkZJR19PUFRJT05fRk9SQ0VfVU5QQVRFTlRFRF9ISU5USU5HLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jICh0dF9mYWNlX2luaXQpOiBVc2UKCWBGVF9ERUJVR19IT09LX1VOUEFURU5URURfSElOVElORycuCgoyMDAzLTA4LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKSwgc3JjL2NmZi9jZmZnbG9hZC5jCgkoY2ZmX3Nsb3RfbG9hZCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IEZpeAoJcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0wOC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCksIHNyYy9jZmYvY2ZmZ2xvYWQuYwoJKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBBcHBseQoJZm9udCBtYXRyaXggdG8gYWR2YW5jZSB3aWR0aCBhbHNvLgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAzLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjQ6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dseXBoU2xvdCk6IENoYW5nZSAyMDAzLTA2LTE2CglhbHNvIGJyZWFrcyBiaW5hcnkgY29tcGF0aWJpbGl0eS4gIFJlaW50cm9kdWNlIGFuIHVuc2lnbmVkIGludGVnZXIKCWF0IHRoZSBvbGQgcG9zaXRpb24gb2YgYGZsYWdzJyBjYWxsZWQgYHJlc2VydmVkJy4KCjIwMDMtMDctMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIEFQSSByZWZlcmVuY2UgdmFsaWQgSFRNTCA0LjAxIHRyYW5zaXRpb25hbC4KCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHkgKGh0bWxfaGVhZGVyXzEpOiBBZGQgZG9jdHlwZQoJYW5kIGNoYXJzZXQuCgkoaHRtbF9oZWFkZXJfMik6IEZpeCBzdHlsZSBlbGVtZW50cyBhbmQgYWRkIHNvbWUgbW9yZS4KCUZpeCBzeW50YXguCgkoYmxvY2tfaGVhZGVyLCBibG9ja19mb290ZXIsIGRlc2NyaXB0aW9uX2hlYWRlciwgZGVzY3JpcHRpb25fZm9vdGVyLAoJbWFya2VyX2hlYWRlciwgbWFya2VyX2Zvb3Rlciwgc291cmNlX2hlYWRlciwgc291cmNlX2Zvb3RlciwKCWNoYXB0ZXJfaGVhZGVyKTogRG9uJ3QgdXNlIDxjZW50ZXI+Li4uPC9jZW50ZXI+IGJ1dCBgYWxpZ249Y2VudGVyJwoJdGFibGUgYXR0cmlidXRlLgoJKGNoYXB0ZXJfaW50ZXIsIGNoYXB0ZXJfZm9vdGVyKTogQWRkIDxsaT4gYW5kIHVzZSBzcGVjaWFsIDx1bD4KCWNsYXNzLgoJVXNlIGRvdWJsZSBxdW90ZXMgYXJvdW5kIHRhYmxlIHdpZHRocyBnaXZlbiBpbiBwZXJjZW50LgoJKGtleXdvcmRfcHJlZml4LCBrZXl3b3JkX3N1ZmZpeCk6IERvbid0IGNoYW5nZSBmb250IGNvbG91ciBkaXJlY3RseQoJYnV0IHVzZSBhIG5ldyA8c3Bhbj4gY2xhc3MuCgkoc2VjdGlvbl9zeW5vcHNpc19oZWFkZXIsIHNlY3Rpb25fc3lub3BzaXNfZm9vdGVyKTogRG9uJ3QgY2hhbmdlCgljb2xvdXIuCgkoY29kZV9oZWFkZXIsIGNvZGVfZm9vdGVyKTogRG9uJ3QgY2hhbmdlIGZvbnQgY29sb3VyIGRpcmVjdGx5IGJ1dAoJdXNlIGEgc3BlY2lhbCA8cHJlPiBjbGFzcy4KCShwcmludF9odG1sX2ZpZWxkKTogPHRyPiBnZXRzIHRoZSBgdmFsaWduJyBhdHRyaWJ1dGUsIG5vdCA8dGFibGU+LgoJKHByaW50X2h0bWxfZmllbGRfbGlzdCk6IERpdHRvLgoJKGluZGV4X2V4aXQpOiBEb24ndCB1c2UgPGNlbnRlcj4uLi48L2NlbnRlcj4gYnV0IGBhbGlnbj1jZW50ZXInCgl0YWJsZSBhdHRyaWJ1dGUuCgkoc2VjdGlvbl9lbnRlcik6IERpdHRvLgoJKHRvY19leGl0KTogRG9uJ3QgZW1pdCA8L3RhYmxlPi4KCShibG9ja19lbnRlcik6IFVzZSA8aDQ+PGE+LCBub3QgPGE+PGg0Pi4KCShfX2luaXRfXyk6IEZpeCB0YWcgb3JkZXIgaW4gc2VsZi5odG1sX2Zvb3Rlci4KCjIwMDMtMDctMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglUaGlzIGNoYW5nZSByZWltcGxlbWVudHMgZml4IGZyb20gMjAwMy0wNS0zMCB3aXRob3V0IGJyZWFraW5nCgliaW5hcnkgY29tcGF0aWJpbGl0eS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfRm9udEluZm9SZWMpOiBgaXRhbGljX2FuZ2xlJywKCWBpc19maXhlZF9waXRjaCcsIGB1bmRlcmxpbmVfcG9zaXRpb24nLCBgdW5kZXJsaW5lX3RoaWNrbmVzcycgYXJlCglyZXZlcnRlZCB0byBiZSBub3JtYWwgdmFsdWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9GaWVsZFR5cGUpOiBSZW1vdmUKCWBUMV9GSUVMRF9UWVBFX0JPT0xfUCcsIGBUMV9GSUVMRF9UWVBFX0lOVEVHRVJfUCcsCglgVDFfRklFTERfVFlQRV9GSVhFRF9QJywgYFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMF9QJy4KCShUMV9GSUVMRF9UWVBFX0JPT0xfUCwgVDFfRklFTERfTlVNX1AsIFQxX0ZJRUxEX0ZJWEVEX1AsCglUMV9GSUVMRF9GSVhFRF8xMDAwX1ApOiBSZW1vdmVkLgoJKFQxX0ZJRUxEX1RZUEVfQk9PTCk6IFJlbmFtZWQgdG8uLi4KCShUMV9GSUVMRF9CT09MKTogTmV3IG1hY3JvLiAgVXBkYXRlZCBhbGwgY2FsbGVycy4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogYGl0YWxpY19hbmdsZScsIGBpc19maXhlZF9waXRjaCcsCglgdW5kZXJsaW5lX3Bvc2l0aW9uJywgYHVuZGVybGluZV90aGlja25lc3MnLCBgcGFpbnRfdHlwZScsCglgc3Ryb2tlX3dpZHRoJyBhcmUgcmV2ZXJ0ZWQgdG8gYmUgbm9ybWFsIHZhbHVlcy4KCShUNDJfS0VZV09SRF9DT1VOVCk6IE5ldyBtYWNyby4KCSh0NDJfcGFyc2VfZGljdCk6IE5ldyBhcnJheSBga2V5d29yZF9mbGFncycgdG8gbWFyayB0aGF0IGEgdmFsdWUgaGFzCglhbHJlYWR5IGJlZW4gYXNzaWduZWQgdG8gYSBkaWN0aW9uYXJ5IGVudHJ5LgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCwgVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJyBhcmUgcmV2ZXJ0ZWQgdG8gYmUKCW5vcm1hbCB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9kb25lLCBjaWRfZmFjZV9pbml0KTogVXBkYXRlZC4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IGBpdGFsaWNfYW5nbGUnLCBgaXNfZml4ZWRfcGl0Y2gnLAoJYHVuZGVybGluZV9wb3NpdGlvbicsIGB1bmRlcmxpbmVfdGhpY2tuZXNzJywgYHBhaW50X3R5cGUnLAoJYHN0cm9rZV93aWR0aCcgYXJlIHJldmVydGVkIHRvIGJlIG5vcm1hbCB2YWx1ZXMuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Eb25lLCBUMV9GYWNlX0luaXQpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX0ZJRUxEX0NPVU5UKTogTmV3IG1hY3JvLgoJKHBhcnNlX2RpY3QpOiBBZGQgcGFyYW1ldGVyIGZvciBrZXl3b3JkIGZsYWdzLgoJUmVjb3JkIG9ubHkgZmlyc3QgaW5zdGFuY2Ugb2YgYSBmaWVsZC4KCShUMV9PcGVuX0ZhY2UpOiBOZXcgYXJyYXkgYGtleXdvcmRfZmxhZ3MnLgoKMjAwMy0wNy0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byA1LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byAxMDowOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBGaXggLS10aXRsZS4KCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTCwgUkVBRE1FOiBVcGRhdGVkLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL3NvdXJjZXMucHkgKHJlX2Nyb3NzcmVmKTogRml4IHJlZ3VsYXIKCWV4cHJlc3Npb24gdG8gaGFuZGxlIHRyYWlsaW5nIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuCgkqIHNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHkgKG1ha2VfaHRtbF93b3JkKTogVXBkYXRlZC4KCgkqIGRvY3MvcmVsZWFzZTogTmV3IGZpbGUuCgoyMDAzLTA3LTIzICBZQU1BTk8tVUNISSBIaWRldG9zaGkgIDxtZXJAZGluLm9yLmpwPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU19QYXJzZXJfRnVuY3NSZWMpOiBOZXcKCW1lbWJlciBmdW5jdGlvbiBgdG9fYnl0ZXMnLgoKCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHBzX3BhcnNlcl9mdW5jcyk6IE5ldyBtZW1iZXIKCWBwc19wYXJzZXJfdG9fYnl0ZXMnLgoJKHBzYXV4X21vZHVsZV9jbGFzcyk6IEluY3JlYXNlIHZlcnNpb24gdG8gMHgyMDAwMEwuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKElTX1QxX0xJTkVTUEFDRSk6IEFkZCBcZi4KCShJU19UMV9OVUxMU1BBQ0UpOiBOZXcgbWFjcm8uCgkoSVNfVDFfU1BBQ0UpOiBBZGQgaXQuCgkoc2tpcF9zcGFjZXMsIHNraXBfYWxwaGEpOiBOZXcgZnVuY3Rpb25zLgoJKHBzX3BhcnNlcl9za2lwX3NwYWNlcywgcHNfcGFyc2VyX3NraXBfYWxwaGEpOiBVc2UgdGhlbS4KCShwc190b2J5dGVzLCBwc19wYXJzZXJfdG9fYnl0ZXMpOiBOZXcgZnVuY3Rpb25zLgoKMjAwMy0wNy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChET0NfRElSKTogTmV3IHZhcmlhYmxlLgoJKHJlZmRvYyk6IFVzZSAqX0RJUiB2YXJpYWJsZXMuCgkoZGlzdGNsZWFuKTogUmVtb3ZlIGRvY3VtZW50YXRpb24gZmlsZXMuCgoJKiBidWlsZHMvZGV0ZWN0Lm1rIChzdGRfc2V0dXAsIGRvc19zZXR1cCk6IE1lbnRpb24gYG1ha2UgcmVmZG9jJy4KCgkqIGNvbmZpZ3VyZTogU2V0IERPQ19ESVIgdmFyaWFibGUuCgoyMDAzLTA3LTA3ICBQYXRyaWsgSORnZ2x1bmQgIDxwYXRyaWsuaGFnZ2x1bmRAYnJlZGJhbmQubmV0PgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChyZWZkb2MpOiBOZXcgdGFyZ2V0IHRvIGJ1aWxkIHRoZQoJZG9jdW1lbnRhdGlvbi4KCSguUEhPTlkpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgRlRfQ2hhck1hcC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLGg6IEZpeCBkb2N1bWVudGF0aW9uIG9mIEZUX09VVExJTkVfRkxBR1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaDogRG9jdW1lbnQgRlRfU2ZudF9UYWcuCgoyMDAzLTA3LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpLCBzcmMvcGNmL3BjZnJlYWQuYwoJKHBjZl9sb2FkX2ZvbnQpOiBGaXggY29tcHV0YXRpb24gb2YgaGVpZ2h0IGlmIFBJWEVMX1NJWkUgcHJvcGVydHkgaXMKCW1pc3NpbmcuCgoyMDAzLTA3LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9jb21wYXJlKTogT25seSBhZGQgYHNpemUnIGlmCgl0aGVyZSBpcyBubyBlcnJvci4gIFJlcG9ydGVkIGJ5IEtudXQgU3QuIE9zbXVuZHNlbgoJPGJpcmQtZnJlZXR5cGVAYW5kdWluLm5ldD4uCgoyMDAzLTA2LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQSBuZXcgdHJ5IHRvIHN5bmNocm9uaXplIGJpdG1hcCBmb250IGFjY2Vzcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfQml0bWFwX1NpemUpOiBgaGVpZ2h0JyBpcyBub3cKCWRlZmluZWQgdG8gcmV0dXJuIHRoZSBiYXNlbGluZS10by1iYXNlbGluZSBkaXN0YW5jZS4gIFRoaXMgd2FzCglhbHJlYWR5IHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQkRGIGFuZCBQQ0YgZHJpdmVycy4KCglUaGUgYHdpZHRoJyBmaWVsZCBub3cgZ2l2ZXMgdGhlIGF2ZXJhZ2Ugd2lkdGguICBJIHdhc24ndCBhYmxlIHRvCglmaW5kIHNvbWV0aGluZyBiZXR0ZXIuICBJdCBzaG91bGQgYmUgdGFrZW4gYXMgaW5mb3JtYXRpdmUgb25seS4KCglOZXcgZmllbGRzIGBzaXplJywgYHhfcHBlbScsIGFuZCBgeV9wcGVtJy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCURvIHByb3BlciByb3VuZGluZyBhbmQgY29udmVyc2lvbiBmcm9tIDcyLjI3IHRvIDcyIHBvaW50cy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IFVwZGF0ZWQgdG8gcHJvcGVybHkgZmlsbAoJRlRfQml0bWFwX1NpemUuCglEbyBwcm9wZXIgcm91bmRpbmcgYW5kIGNvbnZlcnNpb24gZnJvbSA3Mi4yNyB0byA3MiBwb2ludHMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBVcGRhdGVkIHRvIHByb3Blcmx5IGZpbGwKCUZUX0JpdG1hcF9TaXplLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogVXBkYXRlZCB0byBwcm9wZXJseSBmaWxsCglGVF9CaXRtYXBfU2l6ZS4KCjIwMDMtMDYtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglSZWRlc2lnbmluZyB0aGUgRk5UIGRyaXZlciB0byByZXR1cm4gbXVsdGlwbGUgZmFjZXMsIG5vdCBtdWx0aXBsZQoJc3RyaWtlcy4gIEF0IGxlYXN0IG9uZSBmb250IChhcHA4NTAuZm9uIGZyb20gV2luTUUpIGNvbnRhaW5zCglkaWZmZXJlbnQgRk5UIGNoYXJtYXBzIGZvciBpdHMgc3ViZm9udHMuICBDb25zZXF1ZW50bHksIHRoZSBwcmV2aW91cwoJZGVzaWduIG9mIGhhdmluZyBtdWx0aXBsZSBiaXRtYXAgc3RyaWtlcyBpbiBhIHNpbmdsZSBmb250IGZhY2UgZmFpbHMKCXNpbmNlIHdlIGhhdmUgb25seSBvbmUgY2hhcm1hcCBwZXIgZmFjZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCAoRk5UX1NpemVfUmVjKTogUmVtb3ZlZC4KCShGTlRfRmFjZVJlYyk6IFJlbW92ZSBgbnVtX2ZvbnRzJyBmaWVsZCBhbmQgcmVwbGFjZSBgZm9udHMnIHdpdGgKCWBmb250Jy4KCgkqIHNyYy9iYXNlL2Z0d2luZm50LmMgKEZUX0dldF9XaW5GTlRfSGVhZGVyKTogVXBkYXRlZC4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoZm50X2ZvbnRfbG9hZCk6IERvbid0IHNldCBwaXhlbF93aWR0aCBlcXVhbAoJdG8gcGl4ZWxfaGVpZ2h0LgoJKGZudF9mYWNlX2RvbmVfZm9udHMpOiBSZW1vdmVkLgoJKGZudF9mYWNlX2dldF9kbGxfZm9udHMpOiBSZW5hbWVkIHRvLi4uCgkoZm50X2ZhY2VfZ2V0X2RsbF9mb250KTogVGhpcy4gIEFkZCBzZWNvbmQgZnVuY3Rpb24gYXJndW1lbnQgdG8KCXNlbGVjdCBmYWNlIGluZGV4LgoJVXBkYXRlZCB0byBsb2FkIGp1c3Qgb25lIHN1YmZvbnQuCgkoZm50X2ZvbnRfZG9uZSwgRk5UX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoRk5UX0ZhY2VfSW5pdCk6IEhhbmRsZSBgZmFjZV9pbmRleCcuCglVcGRhdGVkLgoJKEZOVF9TaXplX1NldF9QaXhlbHMpOiBTaW1wbGlmaWVkOyBzaW1pbGFyIHRvIEJERiBhbmQgUENGLCB0aGUKCWJpdG1hcCB3aWR0aCBpcyBub3cgaWdub3JlZC4KCShGTlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglGaXggZ2x5cGggaW5kZXggY29tcHV0YXRpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAzLTA2LTI1ICBPd2VuIFRheWxvciAgPG90YXlsb3JAcmVkaGF0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfaGRteCk6IERvbid0IGFzc2lnbgoJbnVtX3JlY29yZHMgdW50aWwgd2UgYWN0dWFsbHkgZGVjaWRlIHRvIGxvYWQgdGhlIHRhYmxlLAoJb3RoZXJ3aXNlLCB3ZSdsbCBzZWdmYXVsdCBpbiB0dF9mYWNlX2ZyZWVfaGRteC4KCjIwMDMtMDYtMjQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9nbHlwaF9uYW1lKTogUHJvdGVjdCBhZ2FpbnN0IHplcm8KCWdseXBoIG5hbWUgcG9pbnRlci4gIFJlcG9ydGVkIGJ5IE1pa2V5IEFuYmFyeSA8bWFuYmFyeUB2aXpydC5jb20+LgoKMjAwMy0wNi0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gQUdMIDIuMC4KCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogUmVnZW5lcmF0ZWQuCgoyMDAzLTA2LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmgsIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCwKCXNyYy9iYXNlL2Z0Y2FsYy5jLCBzcmMvYmFzZS9mdHRyaWdvbi5jLCBzcmMvY2ZmL2NmZmdsb2FkLmMsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6CglEZWNvcmF0ZSBjb25zdGFudHMgd2l0aCBgVScgYW5kIGBMJyBpZiBhcHByb3ByaWF0ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogVXBkYXRlZCB0byBpbmNsdWRlIHJlY2VudCBtb2R1bGUKCWFkZGl0aW9ucy4KCgkqIHNyYy9wc2hpbnRlci9wc2hudGVyci5oIChGVF9FUlJfQkFTRSk6IERlZmluZSBhcwoJYEZUX01vZF9FcnJfUFNoaW50ZXInLgoJKiBzcmMvdHlwZTQyL3Q0MmVycm9yLmggKEZUX0VSUl9CQVNFKTogRGVmaW5lIGFzCglgRlRfTW9kX0Vycl9UeXBlNDInLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5oIChQU19ISU5UU19NQUdJQyk6IFJlbW92ZWQuICBOb3QgdXNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmggW19fTVdFUktTX19dOiBEZWZpbmUgRlRfTE9ORzY0CglhbmQgRlRfSU5UNjQuCgoyMDAzLTA2LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogVXNlIGZpcnN0X2NoYXIgaW4KCWNvbXB1dGF0aW9uIG9mIGdseXBoX2luZGV4LgoJKEZOVF9TaXplX1NldF9QaXhlbHMpOiBUbyBmaW5kIGEgc3RyaWtlLCBmaXJzdCBjaGVjayBwaXhlbF9oZWlnaHQKCW9ubHksIHRoZW4gdHJ5IHRvIGZpbmQgYSBiZXR0ZXIgaGl0IGJ5IGNvbXBhcmluZyBwaXhlbF93aWR0aCBhbHNvLgoJV2l0aG91dCB0aGlzIGZpeCBpdCBpc24ndCBwb3NzaWJsZSB0byBhY2Nlc3MgYWxsIHN0cmlrZXMuCglBbHNvIGNvbXB1dGUgbWV0cmljcy5tYXhfYWR2YW5jZSB0byBiZSBpbiBzeW5jIHdpdGggb3RoZXIgYml0bWFwCglkcml2ZXJzLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NldF9DaGFyX1NpemUpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgkoRlRfU2V0X1BpeGVsX1NpemUpOiBBc3NpZ24gdmFsdWUgdG8gYG1ldHJpY3MnIGFmdGVyIHZhbGlkYXRpb24gb2YKCWFyZ3VtZW50cy4KCjIwMDMtMDYtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglTeW5jaHJvbml6ZSBjb21wdXRhdGlvbiBvZiBoZWlnaHQgYW5kIHdpZHRoIGZvciBiaXRtYXAgc3RyaWtlcy4gIFRoZQoJYHdpZHRoJyBmaWVsZCBpbiB0aGUgRlRfQml0bWFwX1NpemUgc3RydWN0dXJlIGlzIG5vdyBvbmx5IHVzZWZ1bCB0bwoJZW51bWVyYXRlIGRpZmZlcmVudCBzdHJpa2VzLiAgVGhlIGBtYXhfYWR2YW5jZScgZmllbGQgb2YgdGhlCglGVF9TaXplX01ldHJpY3Mgc3RydWN0dXJlIHNob3VsZCBiZSB1c2VkIHRvIGdldCB0aGUgKG1heGltdW0pIHdpZHRoCglvZiBhIHN0cmlrZS4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IERvbid0IHVzZSBBVkVSQUdFX1dJRFRIIGZvcgoJY29tcHV0aW5nIGBhdmFpbGFibGVfc2l6ZXMtPndpZHRoJyBidXQgbWFrZSBpdCBhbHdheXMgZXF1YWwgdG8KCWBhdmFpbGFibGVfc2l6ZXMtPmhlaWdodCcuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IERvbid0IHVzZSBSRVNPTFVUSU9OX1ggZm9yCgljb21wdXRpbmcgYGF2YWlsYWJsZV9zaXplcy0+d2lkdGgnIGJ1dCBtYWtlIGl0IGFsd2F5cyBlcXVhbCB0bwoJYGF2YWlsYWJsZV9zaXplcy0+aGVpZ2h0Jy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfUGl4ZWxfU2l6ZXMpOiBQYXNzIG9ubHkgc2luZ2xlCglhcmd1bWVudCB0byBmdW5jdGlvbi4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUpOiBIYW5kbGUgYC4nIGFmdGVyCglgdW5pWFhYWCcgYW5kIGB1WFhYWFtYW1hdXScuCgoyMDAzLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IHMvRlRfRXJyXy9CREZfRXJyLy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsIHNyYy9jYWNoZS9mdGNzYml0cy5jLCBzcmMvY2FjaGUvZnRscnUuYzoKCXMvRlRfRXJyXy9GVENfRXJyXy8uCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBzL0ZUX0Vycl8vQ0ZGX0Vycl8vLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IHMvRlRfRXJyXy9QQ0ZfRXJyXy8uCgkqIHNyYy9wc2F1eC90MWNtYXAuYzogSW5jbHVkZSBwc2F1eGVyci5oLgoJcy9GVF9FcnJfL1BTYXV4X0Vycl8vLgoJKiBzcmMvcHNoaW50ZXIvcHNobnRlcnIuaDogTmV3IGZpbGUuCgkqIHNyYy9wc2hpbnRlci9ydWxlcy5tazogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uYywgc3JjL3BzaGludGVyL3BzaHJlYy5jOiBJbmNsdWRlIHBzaG50ZXJyLmguCglzL0ZUX0Vycl8vUFNIX0Vycl8vLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMsIHNyYy9wZnIvcGZyb2Jqcy5jLCBzcmMvcGZyL3BmcnNiaXQuYzoKCXMvRlRfRXJyXy9QRlJfRXJyXy8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsCglzcmMvc2ZudC90dGxvYWQuYzogcy9GVF9FcnJfL1NGTlRfRXJyXy8uCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IHMvRlRfRXJyXy9UVF9FcnJfLy4KCSogc3JjL2d6aXAvZnRnemlwLmM6IExvYWQgRlRfTU9EVUxFX0VSUk9SU19IIGFuZCBkZWZpbmUKCUZUX0VSUl9QUkVGSVggYW5kIEZUX0VSUl9CQVNFLgoJcy9GVF9FcnJfL0d6aXBfRXJyXy8uCgoyMDAzLTA2LTE5ICBEaXJjayBCbGFza2V5ICA8bGlzdHRhcmdldEBkYW5iYWxhLmNvbT4KCgkqIHNyYy9jZmYvY2ZmbG9hZCAoY2ZmX2VuY29kaW5nX2xvYWQpOiBgbmxlZnQnIG11c3QgYmUgRlRfVUludCwKCW90aGVyd2lzZSBhZGRpbmcgMSBtaWdodCB3cmFwIHRoZSByZXN1bHQuCgoyMDAzLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2RlX3ZhbHVlKTogQWRkIHN1cHBvcnQgdG8KCXJlY29nbml6ZSBgdVhYWFhbWFtYXV0nIGdseXBoIG5hbWVzLgoJRG9uJ3QgaGFuZGxlIGdseXBoIG5hbWVzIHN0YXJ0aW5nIHdpdGggYHVuaScgd2hpY2ggaGF2ZSBtb3JlIHRoYW4KCWZvdXIgZGlnaXRzLgoKMjAwMy0wNi0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9PcGVuX0ZsYWdzKTogUmVwbGFjZWQgd2l0aAoJI2RlZmluZXMgZm9yIHRoZSBjb25zdGFudHMuCgkoRlRfT3Blbl9BcmdzKTogQ2hhbmdlIHR5cGUgb2YgYGZsYWdzJyB0byBGVF9VSW50LgoJKEZUX0dseXBoU2xvdCk6IE1vdmUgYGZsYWdzJyB0byBGVF9TbG90X0ludGVybmFsLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX091dGxpbmVfRmxhZ3MsIEZUX1Jhc3Rlcl9GbGFnKToKCVJlcGxhY2VkIHdpdGggI2RlZmluZXMgZm9yIHRoZSBjb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9TbG90X0ludGVybmFsKTogTmV3CglmaWVsZCBgZmxhZ3MnIChmcm9tIEZUX0dseXBoU2xvdCkuCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBzb3VyY2UgZmlsZXMuCgkoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IE5ldyBtYWNybyAoZnJvbSBmdGdsb2Fkci5oKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IE1vdmVkCgl0byBmdG9ianMuaC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogVXNlIGR1bW15CglGVF9HbHlwaFNsb3RfSW50ZXJuYWwgb2JqZWN0LgoKMjAwMy0wNi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2NvbXBpbGVyL2djYy5taywgYnVpbGRzL2NvbXBpbGVyL2djYy1kZXYubWsgKENGTEFHUyk6CglBZGQgLWZuby1zdHJpY3QtYWxpYXNpbmcgdG8gZ2V0IHJpZCBvZiB6aWxsaW9uIHdhcm5pbmdzIGZyb20gZ2NjCgl2ZXJzaW9uIDMuMy4KCjIwMDMtMDYtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oIChmdF9nbHlwaF9iYm94X3Vuc2NhbGVkLAoJZnRfZ2x5cGhfYmJveF9zdWJwaXhlbHMsIGZ0X2dseXBoX2Jib3hfZ3JpZGZpdCwKCWZ0X2dseXBoX2Jib3hfdHJ1bmNhdGUsIGZ0X2dseXBoX2Jib3hfcGl4ZWxzKTogUmVwbGFjZWQgd2l0aAoJRlRfR0xZUEhfQkJPWF9VTlNDQUxFRCwgRlRfR0xZUEhfQkJPWF9TVUJQSVhFTFMsCglGVF9HTFlQSF9CQklYX0dSSURGSVQsIEZUX0dMWVBIX0JCT1hfVFJVTkNBVEUsIEZUX0dMWVBIX0JCT1hfUElYRUxTLgoJVGhlIGxvd2VyY2FzZSB2YXJpYW50cyBhcmUgbm93IChkZXByZWNhdGVkIGFsaWFzZXMpIHRvIHRoZSB1cHBlcmNhc2UKCXZlcnNpb25zLgoJVXBkYXRlZCBhbGwgb3RoZXIgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKGZ0X21vZHVsZV9mb250X2RyaXZlciwKCWZ0X21vZHVsZV9yZW5kZXJlciwgZnRfbW9kdWxlX2hpbnRlciwgZnRfbW9kdWxlX3N0eWxlciwKCWZ0X21vZHVsZV9kcml2ZXJfc2NhbGFibGUsIGZ0X21vZHVsZV9kcml2ZXJfbm9fb3V0bGluZXMsCglmdF9tb2R1bGVfZHJpdmVyX2hhc19oaW50ZXIpOiBSZXBsYWNlZCB3aXRoIEZUX01PRFVMRV9GT05UX0RSSVZFUiwKCUZUX01PRFVMRV9SRU5ERVJFUiwgRlRfTU9EVUxFX0hJTlRFUiwgRlRfTU9EVUxFX1NUWUxFUiwKCUZUX01PRFVMRV9EUklWRVJfU0NBTEFCTEUsIEZUX01PRFVMRV9EUklWRVJfTk9fT1VUTElORVMsCglGVF9NT0RVTEVfRFJJVkVSX0hBU19ISU5URVIuCglUaGUgbG93ZXJjYXNlIHZhcmlhbnRzIGFyZSBub3cgKGRlcHJlY2F0ZWQgYWxpYXNlcykgdG8gdGhlIHVwcGVyY2FzZQoJdmVyc2lvbnMuCglVcGRhdGVkIGFsbCBvdGhlciBmaWxlcy4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfR2V0X0NCb3gpOiBIYW5kbGUgYmJveF9tb2RlIGJldHRlcgoJYXMgZW51bWVyYXRpb24uCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmMgKHBjZl9kcml2ZXJfY2xhc3MpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCSh3aW5mbnRfZHJpdmVyX2NsYXNzKSwgc3JjL2JkZi9iZGZkcml2ci5jIChiZGZfZHJpdmVyX2NsYXNzKTogQWRkCgl0aGUgRlRfTU9EVUxFX0RSSVZFUl9OT19PVVRMSU5FUyBmbGFnLgoKMjAwMy0wNi0xMyAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogQXBwbHkgZm9udCBtYXRyaXguCgoyMDAzLTA2LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogVGVzdCBub3Qgb25seSBmb3IgYERvcycgYnV0IGZvciBgRE9TJyBhbHNvLgoKCSogYnVpbGRzL2Rvcy9kb3MtZW14Lm1rLCBidWlsZHMvY29tcGlsZXIvZW14Lm1rOiBOZXcgZmlsZXMgZm9yCglFTVggZ2NjIGNvbXBpbGVyLgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQWRkIHRhcmdldCBgZW14Jy4KCgkqIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWsgKExJTktfTElCUkFSWSk6IEdOVSBNYWtlIGZvciBET1MgZG9lc24ndAoJbGlrZSBhIHRyYWlsaW5nIHNlbWljb2xvbjsgYWRkIGEgZHVtbXkgY29tbWFuZC4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jOiBSZW1vdmUgcGFyc2VfZm9udF9iYm94IGNvZGUgKGFscmVhZHkgZW5jbG9zZWQKCXdpdGggI2lmIDAgLi4uICNlbmRpZikuCgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogSGFuZGxlIC9Gb250TmFtZS4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X25hbWUpOiBSZW1vdmVkLgoJUmVtb3ZlIHBhcnNlX2ZvbnRfYmJveCBjb2RlIChhbHJlYWR5IGVuY2xvc2VkIHdpdGggI2lmIDAgLi4uCgkjZW5kaWYpLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2VfZm9udF9uYW1lKTogUmVtb3ZlZC4KCVJlbW92ZSB0NDJfcGFyc2VfZm9udF9iYm94IGNvZGUgKGFscmVhZHkgZW5jbG9zZWQgd2l0aCAjaWYgMCAuLi4KCSNlbmRpZikuCgkodDQyX2tleXdvcmRzKTogSGFuZGxlIC9Gb250TmFtZSB3aXRoIFQxX0ZJRUxEX0tFWS4KCjIwMDMtMDYtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglUMV9GSUVMRF9UWVBFX0tFWS4KCShUMV9GSUVMRF9LRVkpOiBOZXcgbWFjcm8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAocHNfcGFyc2VyX2xvYWRfZmllbGQpOiBIYW5kbGUKCVQxX0ZJRUxEX1RZUEVfS0VZLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBVc2UgVDFfRklFTERfS0VZIGZvciAvQ0lERm9udE5hbWUuCgoyMDAzLTA2LTExICBBbGV4YW5kZXIgTWFsbWJlcmcgIDxhbGV4YW5kZXJAbWFsbWJlcmcub3JnPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydUxpc3RfUmVtb3ZlX1NlbGVjdGlvbik6IERlY3JlYXNlCgludW1iZXIgb2Ygbm9kZXMuCgkoRlRfTHJ1TGlzdF9Mb29rdXApOiBGaXggYXNzZXJ0aW9uIGZvciBvdXQtb2YtbWVtb3J5IGNhc2UuCgoyMDAzLTA2LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBSZW1vdmVkLgoJKGNpZF9yZWFkX3N1YnJzKTogVXNlIHQxX2RlY3J5cHQgZnJvbSBwc2F1eCBtb2R1bGUuCgkqIHNyYy9jaWQvY2lkbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogVXNlIHQxX2RlY3J5cHQgZnJvbSBwc2F1eAoJbW9kdWxlLgoKMjAwMy0wNi0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmM6IEFwcGx5IGNoYW5nZSAyMDAzLTA1LTMxIGZyb20gPFJvbi5EZXZAZ214LmRlPi4KCUNvbXB1dGUgc3R5bGUgZmxhZ3MuCglGaXggY29tcHV0YXRpb24gb2Ygcm9vdC0+aGVpZ2h0LgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IEhhbmRsZSBGb250QkJveC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9sb2FkX2tleXdvcmQpOiBIYW5kbGUKCVQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkocGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCShjaWRfZmllbGRfcmVjb3JkKTogQ29tbWVudCBvdXQgZWxlbWVudCBmb3IgcGFyc2luZyBGb250QkJveC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYyAodDQyX3BhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkodDQyX2tleXdvcmRzKTogSGFuZGxlIEZvbnRCQm94IHdpdGggVDFfRklFTERfQkJPWCwgbm90IHdpdGgKCVQxX0ZJRUxEX0NBTExCQUNLLgoJKHQ0Ml9wYXJzZV9mb250X2Jib3gpOiBDb21tZW50ZWQgb3V0LgoJKHQ0Ml9sb2FkX2tleXdvcmQpOiBIYW5kbGUgVDFfRklFTERfTE9DQVRJT05fQkJPWC4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBBcHBseSBjaGFuZ2UgMjAwMy0wNS0zMQoJZnJvbSA8Um9uLkRldkBnbXguZGU+LgoKMjAwMy0wNi0wOSAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoU2V0U3VwZXJSb3VuZCkgPDB4MzA+OiBGb2xsb3cgQXBwbGUncwoJVHJ1ZVR5cGUgc3BlY2lmaWNhdGlvbi4KCShJbnNfTURSUCwgSW5zX01JUlApOiBGaXggc2luZ2xlIHdpZHRoIGN1dC1pbiB0ZXN0LgoKMjAwMy0wNi0wOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jOiAoaW5mbGF0ZV9tYXNrKTogUmVwbGFjZWQgd2l0aC4uLgoJKE5PX0lORkxBVEVfTUFTSyk6IFRoaXMuCgkqIHNyYy9nemlwL2luZnV0aWwuaDogRGVjbGFyZSBgaW5mbGF0ZV9tYXNrJyBjb25kaXRpb25hbGx5IGJ5CglOT19JTkZMQVRFX01BU0suCgoyMDAzLTA2LTA5ICBBbGV4aXMgUy4gTC4gQ2FydmFsaG8gIDxhbGV4aXNAY2VjbS51c3AuYnI+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2ZpbGxfb3V0cHV0KTogSGFuZGxlIFpfU1RSRUFNX0VORAoJY29ycmVjdGx5LgoKMjAwMy0wNi0wOSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IENoYW5nZSBjYWxjdWxhdGlvbiBvZgoJZGltLT5zdGR3LmNvdW50IHRvIGF2b2lkIGNvbXBpbGVyIHByb2JsZW0uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX1NpbXBsZV9HbHlwaCk6IE1vdmUgdGhlIGJsb2NrCgl2YXJpYWJsZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgY29tcGlsZXIKCXByb2JsZW1zLgoJQWRkIGNhc3RzIG5lY2Vzc2FyeSBmb3IgMTZiaXQgY29tcGlsZXJzLgoKMjAwMy0wNi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Bmci9ydWxlcy5tayAoUEZSX0RSVl9TUkMpOiBBZGQgcGZyc2JpdC5jLgoJKFBGUl9EUlZfSCk6IEFkZCBwZnJ0eXBlcy5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogcy9fX01XS1NfXy9fX01XRVJLU19fLy4KCjIwMDMtMDYtMDggIEthcmwgU2NodWx0eiAgPGtzY2h1bHR6QHJzaW5jLmNvbT4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jIChwZnJfYml0d3JpdGVyX2luaXQpOiBDaGFuZ2UgdHlwZSBvZiB0aGlyZAoJYXJndW1lbnQgdG8gRlRfQm9vbC4KCShwZnJfbG9va3VwX2JpdG1hcF9kYXRhKTogQ2hhbmdlIHR5cGUgb2YgdGhpcmQgYW5kIGZvdXJ0aCBhcmd1bWVudAoJdG8gRlRfVUludC4gIFVwZGF0ZWQgY2FsbGVyLgoJKHBmcl9sb2FkX2JpdG1hcF9iaXRzKTogQ2hhbmdlIHR5cGUgb2YgZm91cnRoIGFyZ3VtZW50IHRvIEZUX0Jvb2wuCgoyMDAzLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQ29tcGxldGVseSByZXZpc2VkIEZyZWVUeXBlJ3MgbWFrZSBtYW5hZ2VtZW50LgoKCS4gSW4gYWxsIG1ha2VmaWxlcyBgLycgaXMgdXNlZCBhcyB0aGUgcGF0aCBzZXBhcmF0b3IuICBUaGUKCSAgY29udmVyc2lvbiB0byB0aGUgcmVhbCBwYXRoIHNlcGFyYXRvcnMgaXMgZG9uZSBhcyBsYXRlIGFzCgkgIHBvc3NpYmxlIHVzaW5nICQoc3Vic3QgLi4uKS4KCgkuICQoSE9TVFNFUCkgbm8gbG9uZ2VyIGV4aXN0cy4gIE5vdywgJChTRVApIGdpdmVzIHRoZSBwYXRoIHNlcGFyYXRvcgoJICBmb3IgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCB0aGUgbmV3ICQoQ09NUElMRVJfU0VQKSB0aGUgcGF0aAoJICBzZXBhcmF0b3IgZm9yIHRoZSBjb21waWxlciB0b29scy4KCgkuICQoQlVJTEQpIGhhcyBiZWVuIHJlbmFtZWQgdG8gJChCVUlMRF9ESVIpLiAgSW4gZ2VuZXJhbCwgYWxsCgkgIGRpcmVjdG9yeSB2YXJpYWJsZXMgZW5kIHdpdGggYF9ESVInLiAgVGhlIHZhcmlhbnRzIGVuZGluZyBpbiBgXycKCSAgKGxpa2UgYEJBU0VfJyBoYXZlIGJlZW4gcmVtb3ZlZCkuCgoJVGhlIGZvbGxvd2luZyBDaGFuZ2VMb2cgZW50cmllcyBvbmx5IGRlc2NyaWJlIGNoYW5nZXMgd2hpY2ggYXJlCglub3QgcmVsYXRlZCB0byB0aGUgcmVkZXNpZ24uCgoJKiBidWlsZHMvYmVvcy9iZW9zLWRlZi5tayAoQlVJTERfRElSKTogRml4IHR5cG8uCgkqIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWsgKExJTktfTElCUkFSWSk6IEZpeCBsaW5rZXIgY2FsbCB0byBhdm9pZAoJb3ZlcmxvbmcgYXJndW1lbnRzIGFzIHN1Z2dlc3RlZCBieSBKLiBBbGkgSGFybG93Cgk8YWxpQGF2cmMuY2l0eS5hYy51az4uCgkqIGJ1aWxkcy9kb3MvZG9zLXdhdC5tazogTmV3IGZpbGUuCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRlJFRVRZUEVfSCk6IEluY2x1ZGUgaGVhZGVyIGZpbGVzIGZyb20gdGhlCglgZGV2ZWwnIHN1YmRpcmVjdG9yeS4KCgkqIGJ1aWxkcy9vczIvb3MyLWRldi5taywgYnVpbGRzL3VuaXgvdW5peGRkZWYubWssCglidWlsZHMvdW5peC91bml4ZGRlZi5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1kZXYubWsgKEJVSUxEX0RJUik6IEZpeCBwYXRoLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBidWlsZHMvdW5pYy9jb25maWd1cmU6IFVwZGF0ZWQuCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChESVNUQ0xFQU4pOiBBZGQgYGZyZWV0eXBlMi5wYycuCgoyMDAzLTA2LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG1hYy5jIChGVF9OZXdfRmFjZV9Gcm9tX1NGTlQpOiBzL3JsZW4vc2ZudF9zaXplLyB0bwoJbWFrZSBpdCBjb21waWxlLgoKCSogZGV2ZWwvZnRvcHRpb24uaDogVXBkYXRlZC4KCjIwMDMtMDYtMDcgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy90cnVldHlwZS90dGdsb2FkLmg6CglzL2luZGV4L2lkeC8gdG8gZml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVXNlIG1vcmUgYHZvbGF0aWxlJyB0bwoJZml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoQlVJTERGSVhFRCk6IFJlbW92ZWQuCgkqIHNyYy9nemlwL2luZnRyZWVzLmMgKGluZmxhdGVfdHJlZXNfZml4ZWQpIFshQlVJTERGSVhFRF06IFVzZQoJRlRfVU5VU0VEIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMy0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN0cm9rZXIuaDogUmVuYW1lZCB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlLmg6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYzogUmVuYW1lZCB0by4uLgoJKiBzcmMvYmFzZS9mdHN0cm9rZS5jOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU1RST0tFUl9IKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazoKCVVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jOiBSZW5hbWVkIHRvLi4uCgkqIHNyYy9wY2YvcGNmZHJpdnIuYzogVGhpcy4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuaDogUmVuYW1lZCB0by4uLgoJKiBzcmMvcGNmL3BjZmRyaXZyLmg6IFRoaXMuCgoJKiBzcmMvcGNmL0phbWZpbGUsIHNyYy9wY2YvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAzLTA2LTA1ICBXZW5saW4gSW5zdGl0dXRlIChUb20gQmlzaG9wKSAgPHdlbmxpbkB3ZW5saW4uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoZmlsZV9zcGVjX2Zyb21fcGF0aCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06CglBZGQgYCNpZiAhZGVmaW5lZChfX01XRVJLU19fKScuCgoyMDAzLTA2LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJVDFfRklFTERfVFlQRV9GSVhFRF8xMDAwIGFuZCBUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDBfUC4KCShUMV9GSUVMRF9GSVhFRF8xMDAwLCBUMV9GSUVMRF9GSVhFRF8xMDAwX1ApOiBOZXcgbWFjcm9zLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlCglUMV9GSUVMRF9UWVBFX0ZJWEVEXzEwMDAgYW5kIFQxX0ZJRUxEX1RZUEVfRklYRURfMTAwMF9QLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfa2luZF9maXhlZF90aG91c2FuZCk6IE5ldyBlbnVtZXJhdGlvbi4KCShDRkZfRklFTERfRklYRURfMTAwMCk6IE5ldyBtYWNyby4KCShjZmZfcGFyc2VyX3J1bik6IEhhbmRsZSBjZmZfa2luZF9maXhlZF90aG91c2FuZC4KCSogc3JjL2NmZi9jZmZ0b2tlbi5oOiBVc2UgQ0ZGX0ZJRUxEX0ZJWEVEXzEwMDAgZm9yIGJsdWVfc2NhbGUuCgkqIHNyYy9jZmYvY2ZmbG9hZCAoY2ZmX3N1YmZvbnRfbG9hZCk6IEZpeCBkZWZhdWx0IHZhbHVlcyBvZgoJZXhwYW5zaW9uX2ZhY3RvciBhbmQgYmx1ZV9zY2FsZS4KCgkqIHNyYy9jaWYvY2lkdG9rZW4uaCwgc3JjL3R5cGUxL3QxdG9rZW5zLmg6IFVzZSBUMV9GSUVMRF9GSVhFRF8xMDAwCglmb3IgYmx1ZV9zY2FsZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeCBkZWZhdWx0IHZhbHVlIG9mCglibHVlX3NjYWxlLgoKMjAwMy0wNi0wNCAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9jaWQvY2lkZ2xvYWQuYywKCXNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmMsIHNyYy9wc2F1eC9wc29ianMuaCwKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28uYywKCXNyYy9wc25hbWVzL3BzbW9kdWxlLmMsIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsCglzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL3Ntb290aC9mdHNtb290aC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3R5cGUxL3QxYWZtLmMsCglzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFnbG9hZC5oLCBzcmMvdHlwZTEvdDFsb2FkLmMsCglzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlNDIvdDQycGFyc2UuYywgc3JjL3R5cGU0Mi90NDJwYXJzZS5oOgoJTWFueSBjYXN0cyBhbmQgc2xpZ2h0IGFyZ3VtZW50IHR5cGUgY2hhbmdlcyB0byBtYWtlIGl0IHdvcmsgd2l0aAoJYSAxNmJpdCBjb21waWxlci4KCjIwMDMtMDYtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERlZmluaW5nCglUVF9DT05GSUdfT1BUSU9OX0ZPUkNFX1VOUEFURU5URURfSElOVElORyBieSBkZWZhdWx0IGlzIGEgYmFkIGlkZWEKCXNpbmNlIHNvbWUgZm9udHMgKGUuZy4gQXJpYWwpIHByb2R1Y2Ugd29yc2UgcmVzdWx0cyB0aGFuIHdpdGhvdXQKCWhpbnRpbmcuICBSZXZlcnRlZC4KCjIwMDMtMDYtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IENhbGwKCUZUX0dseXBoTG9hZGVyX0NoZWNrUG9pbnRzIGJlZm9yZSBhZGRpbmcgcGhhbnRvbSBwb2ludHMuICBUaGlzIGZpeGVzCglhIHNlZ2ZhdWx0IGJ1ZyB3aXRoIGZvbnRzIChlLmcuIGh0c3QzLnR0Zikgd2hpY2ggaGF2ZSBuZXN0ZWQKCXN1YmdseXBocyBtb3JlIHRoYW4gb25lIGxldmVsIGRlZXAuICBSZXBvcnRlZCBieSBBbnRob255IEZvay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IERlZmluZQoJVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiwKCVRUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkcsIGFuZAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcgdG8gbWFrZSBpdCB0aGUgbmV3CglkZWZhdWx0LgoKMjAwMy0wNi0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IFJlbW92ZWQuICBKdXN0IGEKCXdyYXBwZXIgZm9yIGFoX2hpbnRfZWRnZXMuCgkoYWhfaGludF9lZGdlcyk6IFJlbmFtZWQgdG8uLi4KCShhaF9oaW50ZXJfaGludF9lZGdlcyk6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBSZW1vdmVkLiAgVW51c2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyksCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJSZWMpLAoJc3JjL2NmZi9jZmZnbG9hZC5oIChDRkZfQnVpbGRlcik6IFJlbW92ZSBgaGludF9mbGFncycgZmllbGQuCglVbnVzZWQuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9idWlsZGVyX2luaXQpOiBVcGRhdGVkLgoJKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKSA8Y2ZmX29wX2VuZGNoYXI+OiBDYWxsIGhpbnRlci0+YXBwbHkKCXdpdGggZGVjb2Rlci0+aGludF9tb2RlIGluc3RlYWQgb2YgYnVpbGRlci0+aGludF9mbGFncy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYyAoZnRfc3Ryb2tlX2JvcmRlcl9leHBvcnQpOiBzL2luZGV4L2lkeC8uCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9sb2FkX2ZhY2UpOiBDb21tZW50ZWQgb3V0IGNvZGUgd2hpY2gKCWluY3JlYXNlZCByb290LT5oZWlnaHQgYnkgMTUlIGlmIHRoZSBsaW5lIGdhcCB3YXMgemVyby4gIFRoZXJlIGV4aXN0Cglmb250cyAoY29udGFpbmluZyBlLmcuIGZvcm0gZHJhd2luZyBjaGFyYWN0ZXJzKSB3aGljaCBpbnRlbnRpb25hbGx5CgloYXZlIGEgemVybyBsaW5lIGdhcCB2YWx1ZS4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChGcmVlX1Byb2plY3QsIENVUl9GdW5jX2ZyZWVQcm9qKToKCVJlbW92ZWQuICBVbnVzZWQuCglVcGRhdGVkIGFsbCBjYWxsZXJzLgoKMjAwMy0wNi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBVc2Ugc3ltYm9saWMgbmFtZXMgZm9yCglBZG9iZSBzcGVjaWZpYyBlbmNvZGluZyBJRHMgKHRoZXJlIHdhcyBhIHdyb25nIEVJRCB2YWx1ZSBmb3IgY3VzdG9tCgllbmNvZGluZykuCgoJKiBzcmMvY2ZmL2NmZmNtYXAuaCAoQ0ZGX0NNYXBTdGRSZWMpOiBSZW1vdmUgYGNvdW50Jy4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX2VuY29kaW5nX2luaXQsCgljZmZfY21hcF9lbmNvZGluZ19kb25lKTogVXBkYXRlZC4KCShjZmZfY21hcF9lbmNvZGluZ19jaGFyX2luZGV4LCBjZmZfY21hcF9lbmNvZGluZ19jaGFyX25leHQpOiBVc2UKCTI1NiBhcyBsaW1pdCBmb3IgY2hhcmFjdGVyIGNvZGUuCgoyMDAzLTA2LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKTogUmV2ZXJ0IGNoYW5nZSBmcm9tCgkyMDAzLTAzLTIwLgoKMjAwMy0wNS0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oIChGVF9WZWN0b3JfTm9ybWFsaXplKTogUmVtb3ZlZC4KCjIwMDMtMDUtMzEgICAgPFJvbi5EZXZAZ214LmRlPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBJbXByb3ZlIGFsZ29yaXRobSBmb3IgZ3Vlc3NpbmcKCXRoZSBmb250IHN0eWxlIGJ5IGlnbm9yaW5nIHNwYWNlcyBhbmQgaHlwaGVucy4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5pbjogRml4IGBWZXJzaW9uJyBmaWVsZC4KCjIwMDMtMDUtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBdm9pZCBvdmVyd3JpdGluZyBvZiBudW1lcmljIGZvbnQgZGljdGlvbmFyeSBlbnRyaWVzIGZvciBzeW50aGV0aWMKCWZvbnRzLiAgQWRkaXRpb25hbGx5LCBzb21lIGVudHJpZXMgd2VyZSBoYW5kbGVkIGFzIGBpbnRlZ2VyJyBpbnN0ZWFkCglvZiBgbnVtYmVyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglUMV9GSUVMRF9UWVBFX0JPT0xfUCwgVDFfRklFTERfVFlQRV9JTlRFR0VSX1AsIGFuZAoJVDFfRklFTERfVFlQRV9GSVhFRF9QLgoJKFQxX0ZJRUxEX0JPT0xfUCwgVDFfRklFTERfTlVNX1AsIFQxX0ZJRUxEX0ZJWEVEX1ApOiBOZXcgbWFjcm9zLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3BhcnNlcl9sb2FkX2ZpZWxkKTogSGFuZGxlIG5ldyBmaWVsZCB0eXBlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnRSZWNEaWN0KSwKCXNyYy9jZmYvY2ZmdG9rZW4uaDogQ2hhbmdlIHR5cGUgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZAoJdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBGVF9GaXhlZC4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9zdWJmb250X2xvYWQpOiBGaXggZGVmYXVsdCB2YWx1ZXMgb2YKCXVuZGVybGluZV9wb3NpdGlvbiBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcy4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBTZXQgdW5kZXJsaW5lX3Bvc2l0aW9uCglhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyBpbiBgcm9vdCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRm9udCk6IENoYW5nZSBwb2ludF90eXBlCglhbmQgc3Ryb2tlX3dpZHRoIHRvIHBvaW50ZXJzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKFBTX0ZvbnRJbmZvKTogQ2hhbmdlIGl0YWxpY19hbmdsZSwKCWlzX2ZpeGVkX3BpdGNoLCB1bmRlcmxpbmVfcG9zaXRpb24sIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzIHRvCglwb2ludGVycy4KCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IENoYW5nZSBpdGFsaWNfYW5nbGUsIGlzX2ZpeGVkX3BpdGNoLAoJdW5kZXJsaW5lX3Bvc2l0aW9uLCBhbmQgdW5kZXJsaW5lX3RoaWNrbmVzcyB0byBwb2ludGVycy4gIENoYW5nZQoJdGhlIHR5cGUgb2YgdGhlIGxhdHRlciB0d28gdG8gYGZpeGVkJy4KCUNoYW5nZSB0eXBlIG9mIHN0cm9rZV93aWR0aCB0byBgZml4ZWQnIGFuZCBtYWtlIGl0IGEgcG9pbnRlci4KCUNoYW5nZSBwYWludF90eXBlIHRvIHBvaW50ZXIuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Eb25lKTogVXBkYXRlZC4KCShUMV9GYWNlX0luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoKCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UKCXRoZSB0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJy4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKGNpZF9mYWNlX2RvbmUpOiBVcGRhdGVkLgoJKGNpZF9mYWNlX2luaXQpOiBVcGRhdGVkLgoJRml4IGFzc2lnbm1lbnQgb2YgdW5kZXJsaW5lX3Bvc2l0aW9uIGFuZCB1bmRlcmxpbmVfdGhpY2tuZXNzLgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jOiBDaGFuZ2UgaXRhbGljX2FuZ2xlLCBpc19maXhlZF9waXRjaCwKCXVuZGVybGluZV9wb3NpdGlvbiwgYW5kIHVuZGVybGluZV90aGlja25lc3MgdG8gcG9pbnRlcnMuICBDaGFuZ2UgdGhlCgl0eXBlIG9mIHRoZSBsYXR0ZXIgdHdvIHRvIGBmaXhlZCcuCglDaGFuZ2UgdHlwZSBvZiBzdHJva2Vfd2lkdGggdG8gYGZpeGVkJyBhbmQgbWFrZSBpdCBhIHBvaW50ZXIuCglDaGFuZ2UgcGFpbnRfdHlwZSB0byBwb2ludGVyLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0ZhY2VfSW5pdCk6IFVwZGF0ZWQuCglGaXggYXNzaWdubWVudCBvZiB1bmRlcmxpbmVfcG9zaXRpb24gYW5kIHVuZGVybGluZV90aGlja25lc3MuCgkoVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlX2Zyb21fYnVmZmVyKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgKCShwc2hfZ2xvYmFsc19zZXRfc2NhbGUpOiBNYWtlIGl0IGEgbG9jYWwgZnVuY3Rpb24uCgoJKiB0ZXN0L2d2aWV3LmM6IEZpeCByZW5hbWluZyBwczMtPnBzIHR5cG8uCglGb3JtYXR0aW5nLgoKMjAwMy0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLltjaF0sIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5bY2hdOiBSZW1vdmVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5oOiBSZW1vdmVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLltjaF06IFJlbmFtZWQgdG8uLi4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28uW2NoXTogTmV3IGZpbGVzLgoJcy9QU0gzL1BTSC8uCglzL3BzaDMvcHNoLy4KCXMvcHMzL3BzLy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGludGVyLmM6IFVwZGF0ZWQuCgkqIHNyYy9wc2hpbnRlci9ydWxlcy5taywgc3JjL3BzaGludGVyL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5bY2hdIChwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgpOiBDb21tZW50ZWQKCW91dC4KCgkqIHRlc3RzL2d2aWV3LmM6IFJlbW92ZSBjb2RlIGZvciBwc2hhbGdvMSBhbmQgcHNoYWxnbzIuCglVcGRhdGVkLgoKMjAwMy0wNS0yOCAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHZtc19tYWtlLmNvbTogUmV3b3JrZWQgc3VwcG9ydCBmb3Igc2hhcmVhYmxlIGltYWdlcyBvbiBWTVMuICBUaGUKCWZpcnN0IHZlcnNpb24gd2FzIGtpbmQgb2YgYSBoYWNrOyB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKCXByb2NlZHVyZSB0byBleHRyYWN0IHRoZSByZXF1aXJlZCBzeW1ib2xzIGlzIG11Y2ggY2xlYW5lci4KCglSZXdvcmtlZCBjcmVhdGlvbiBvZiBNTVMgZmlsZXMsIGF2b2lkaW5nIGEgbnVtYmVyIG9mIHRlbXBvcmFyeSBmaWxlcwoJd2hpY2ggd2VyZSBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uLgoKCUZ1cnRoZXIgd29yayBvbiBjcmVhdGluZyBkZXNjcmlwLm1tcyBmaWxlcyBvbiB0aGUgZmx5LgoKCSogYnVpbGRzL3Ztcy9kZXNjcmlwLm1tcywgc3JjL2F1dG9oaW50L2Rlc2NyaXAubW1zLAoJc3JjL3R5cGUxL2Rlc2NyaXAubW1zOiBSZW1vdmVkLgoKMjAwMy0wNS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hKTogU2tpcAoJY29udG91cnMgd2l0aCBvbmx5IGEgc2luZ2xlIHBvaW50IHRvIGF2b2lkIHNlZ2ZhdWx0LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBBY3RpdmF0ZSBjb2RlIGZvcgoJaGFuZGxpbmcgYG9yaWdpbicuCgoyMDAzLTA1LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9PUFRJT05fTk9fU1RST05HX0lOVEVSUE9MQVRJT04pOgoJUmVtb3ZlZCBzaW5jZSB1bnVzZWQuCgoyMDAzLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zdHJjYXQpOiBOZXcgd3JhcHBlciBtYWNybwoJZm9yIHN0cmNhdC4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKGNyZWF0ZV9sd2ZuX25hbWUpOiBzL2lzdXBwZXIvZnRfaXN1cHBlci8uCgkocGFyc2VfZm9udCk6IHMvbWVtY3B5L2Z0X21lbWNweS8uCgkoaXNfZGZvbnQpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBzL21lbWNtcC9mdF9tZW1jbXAvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAobG9hZF9tYWNfZmFjZSkgW0ZUX01BQ0lOVE9TSF06CglzL3N0cmxlbi9mdF9zdHJsZW4vLgoJcy9zdHJjYXQvZnRfc3RyY2F0Ly4KCXMvc3RyY3B5L2Z0X3N0cmNweS8uCgkqIHNyYy9nemlwL3p1dGlsLmg6IHMvbWVtc2V0L2Z0X21lbXNldC8uCglzL21lbWNtcC9mdF9tZW1jbXAvLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9GYWNlX0luaXQpOiBUZXN0IGZvciBjaGFyc2V0IHJlZ2lzdHJ5IGNhc2UtaW5zZW5zaXRpdmVseS4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbF9pbyk6IFJldmVydCBjaGFuZ2UgZnJvbSB5ZXN0ZXJkYXk7CglpdCBoYXMgYWxyZWFkeSBiZWVuIGZpeGVkIGRpZmZlcmVudGx5LgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKERPX1NGVlRMKTogQWRkIG1pc3NpbmcgYnJhY2VzIGFyb3VuZAoJaWYtY2xhdXNlLgoKMjAwMy0wNS0yMSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHQxbG9hZC5jIChwYXJzZV9ibGVuZF9heGlzX3R5cGVzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoJKiBkZXNjcmlwLm1tczogUmVtb3ZlZC4gIE5vdyBjcmVhdGVkIGJ5Li4uCgoJKiB2bXNfbWFrZS5jb206IE5ldyBmaWxlLgoKMjAwMy0wNS0yMSAgV2VpcWkgR2FvICA8d2VpcWlnYW9AbmV0d29ya3VzYS5uZXQ+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2lvKTogQXZvaWQgemVybyB2YWx1ZSBvZiBgZGVsdGEnCgl0byBwcmV2ZW50IGluZmluaXRlIGxvb3AuCgoyMDAzLTA1LTIxICBMYXJzIENsYXVzZW4gIDxscmNsYXVzZUBjcy51aXVjLmVkdT4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFByb3ZpZGUgYmV0dGVyIGF1dG9jb25mIHNuaXBwZXQgdG8gY2hlY2sKCUZyZWVUeXBlIHZlcnNpb24uCgoyMDAzLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogRnJlZSBgaW50ZXJuYWwnIG5vdAoJYGZhY2UtPmludGVybmFsJyBpbiBjYXNlIG9mIGVycm9yIHRvIGF2b2lkIHBvc3NpYmxlIHNlZ2ZhdWx0LgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IENoZWNrIHdoZXRoZXIgd2UKCWFjdHVhbGx5IGhhdmUgYW4gb3V0bGluZS4KCjIwMDMtMDUtMjAgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwczNfaGludHNfYXBwbHkpOiBUcnkgdG8gb3B0aW1pemUKCXlfc2NhbGUgc28gdGhhdCB0aGUgdG9wIG9mIG5vbi1jYXBpdGFsIGxldHRlcnMgaXMgYWxpZ25lZCBvbiBhIHBpeGVsCglib3VuZGFyeSB3aGVuZXZlciBwb3NzaWJsZS4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlcyk6IE1ha2Ugc3VyZSB0aGF0IGxvd2VyY2FzZQoJbSdzIG1haW50YWluIHRoZWlyIHN5bW1ldHJ5LgoKMjAwMy0wNS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IE9vcHMhICBEYXZpZCdzCglwYXRjaCBmcm9tIHllc3RlcmRheSBoYXMgYmVlbiByZXNvbHZlZCBhbHJlYWR5IGluIGEgZGlmZmVyZW50Cgl3YXkuICBSZXZlcnRlZC4KCjIwMDMtMDUtMTkgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBEb24ndCBzY2FsZQoJeV9zY2FsZSBsb2NhbGx5IGJ1dCBmYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUuCgoyMDAzLTA1LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfbmV4dCk6IFNlbGVjdCBwcm9wZXIgc3RhcnQKCXZhbHVlIGZvciBgaGknIHRvIGF2b2lkIGluZmluaXRlIGxvb3AuCgoyMDAzLTA1LTE4ICBZb25nIFN1biAgPHN1bnlvbmdAbmpzdGFyLmNvbT4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoSW5zZXJ0X1lfVHVybik6IEZpeCBvdmVyZmxvdyB0ZXN0LgoKMjAwMy0wNS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCBbRlRfQ09ORklHX09QVElPTl9NQUNfRk9OVFNdOgoJTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYzogVXNlIGl0IHRvIGNvbnRyb2wgbWFjIGZvbnQgc3VwcG9ydCBvbiBub24tbWFjCglwbGF0Zm9ybXMuCgoyMDAzLTA1LTE3ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglJbXBsZW1lbnQgcGFydGlhbCBzdXBwb3J0IG9mIE1hYyBmb250cyBvbiBub24tTWFjIHBsYXRmb3Jtcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChtZW1vcnlfc3RyZWFtX2Nsb3NlLCBuZXdfbWVtb3J5X3N0cmVhbSwKCW9wZW5fZmFjZV9mcm9tX2J1ZmZlciwgTWFjX1JlYWRfUE9TVF9SZXNvdXJjZSwKCU1hY19SZWFkX3NmbnRfUmVzb3VyY2UsIElzTWFjUmVzb3VyY2UsIElzTWFjQmluYXJ5LCBsb2FkX21hY19mYWNlKQoJWyFGVF9NQUNJTlRPU0hdOiBOZXcgZnVuY3Rpb25zLgoJKEZUX09wZW5fRmFjZSkgWyFGVF9NQUNJTlRPU0hdOiBVc2UgbG9hZF9tYWNfZmFjZS4KCjIwMDMtMDUtMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogU2NhbGUgbGluZWFyIGFkdmFuY2Ugd2lkdGggb25seQoJaWYgRlRfRkFDRV9GTEFHX1NDQUxBQkxFIGlzIHNldCAob3RoZXJ3aXNlIHdlIGhhdmUgYSBkaXZpc2lvbiBieQoJemVybyBzaW5jZSBGTlQgYW5kIGZyaWVuZHMgZG9uJ3QgZGVmaW5lIGBmYWNlLT51bml0c19wZXJfRU0nKS4KCjIwMDMtMDUtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9Sb3RhdGUpOiBBdm9pZCByb3VuZGluZyBlcnJvcnMKCWZvciBzbWFsbCB2YWx1ZXMuCgoyMDAzLTA1LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9Qb2ludFJlYyk6IFJlbW92ZSB1bnVzZWQgYGluX2FuZ2xlJwoJYW5kIGBvdXRfYW5nbGUnIGZpZWxkcy4KCjIwMDMtMDUtMTQgIEdlb3JnZSBXaWxsaWFtcyAgPGd3d0BzaWxjb20uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogSGFuZGxlIENGRiBmaWxlcyBhbHNvLgoKMjAwMy0wNS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXggdHlwbyBpbiBjb21tZW50CgkoRlRfSEFTX0ZJWEVEX1NJWkVTKS4KCjIwMDMtMDUtMTAgIERhbiBXaWxsaWFtcyAgPGRhbkBiaWd3Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IENvbW1lbnQgb3V0IGRlZmluaXRpb24gb2YKCWBhbGxvd191bmRlZmluZWRfZmxhZycgZm9yIERhcndpbiAxLjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQWRkIG9wdGlvbiAtLXdpdGgtb2xkLW1hYy1mb250cy4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBGaXggdmVyc2lvbiBudW1iZXJpbmcgZm9yIERhcndpbiAxLjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBGaXggY29uZGl0aW9ucyBmb3IgZGVmaW5pbmcKCWBGVF9NQUNJTlRPU0gnLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBgZnRtYWMuYycgY29uZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRtYWMuYzogSGFuZGxlIF9fR05VQ19fLgoKMjAwMy0wNS0wNyAgWUFNQU5PLVVDSEkgSGlkZXRvc2hpICA8bWVyQGRpbi5vci5qcD4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChpc19hbHBoYSk6IFJlbW92ZWQuCgkoY2lkX3BhcnNlX2RpY3QpOiBVc2UgYGNpZF9wYXJzZXJfc2tpcF9hbHBoYScgaW5zdGVhZCBvZiBgaXNfYWxwaGEnLgoKMjAwMy0wNS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2Fob3B0aW0uYywgc3JjL2F1dG9oaW50L2Fob3B0aW0uaDogT2Jzb2xldGUsIHJlbW92ZWQuCgoyMDAzLTA1LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9zZXR1cF91dik6IEV4Y2hhbmdlIGBmb3InIGxvb3AgYW5kCglgc3dpdGNoJyBzdGF0ZW1lbnQgdG8gbWFrZSBpdCBydW4gZmFzdGVyLgoJKGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cyk6IFJlc2V0IGBzZWdtZW50LT5zY29yZScgYW5kCglgc2VnbWVudC0+bGluaycuCgkoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogUHJvdmlkZSBhbHRlcm5hdGl2ZSBjb2RlIHdoaWNoIGRvZXMKCXRoZSBzYW1lIGJ1dCBydW5zIG11Y2ggZmFzdGVyLgoJSGFuZGxlIG1ham9yIGRpcmVjdGlvbiBhbHNvLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IFNjYWxlIGBlZGdlX2Rpc3RhbmNlX3RocmVzaG9sZCcgZG93bgoJYWZ0ZXIgcm91bmRpbmcgaW5zdGVhZCBvZiBzY2FsaW5nIGNvbXBhcmlzb24gdmFsdWUgaW4gbG9vcC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3N0b25nX3BvaW50cyk6IFByb3ZpZGUKCWFsdGVybmF0aXZlIGNvZGUgd2hpY2ggcnVucyBmYXN0ZXIuCglIYW5kbGUgYGJlZm9yZS0+c2NhbGUgPT0gMCcuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9TZWdtZW50UmVjKTogTW92ZSBzb21lIGZpZWxkcyBkb3duLgoJKEFIX0VkZ2VSZWMpOiBNb3ZlIHNvbWUgZmllbGRzIGluIHN0cnVjdHVyZS4KCU5ldyBmaWVsZCBgc2NhbGUnLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX25leHQpOiBVc2UgYmluYXJ5IHNlYXJjaC4KCjIwMDMtMDUtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haG9wdGltLmMgKExPRyk6IFJlbmFtZWQgdG8uLi4KCShBSF9PUFRJTV9MT0cpOiBUaGlzLgoJKEFIX0R1bXBfU3ByaW5ncyk6IEZpeCBsb2cgbWVzc2FnZSBmb3JtYXQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMyk6IFJlbmFtZWQgdG8uLi4KCShhaF9oaW50X2VkZ2VzKTogVGhpcy4KCjIwMDItMDUtMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX1NldF9QaXhlbF9TaXplKTogSW5pdGlhbGl6ZSBgbWF4X2FkdmFuY2UnLgoKMjAwMy0wNS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfdGVzdF9leHRyZW1hKTogUmVuYW1lZCB0by4uLgoJKGFoX3Rlc3RfZXh0cmVtdW0pOiBUaGlzLgoKMjAwMy0wNC0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBHZW5lcmF0ZSBgZnJlZXR5cGUucGMnIGZyb20KCWBmcmVldHlwZS5pbicuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSBgZnJlZXR5cGUucGMnLgoKMjAwMy0wNC0yOCAgR3VzdGF2byBKLiBBLiBNLiBDYXJuZWlybyAgPGdqY0BpbmVzY3BvcnRvLnB0PgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluOiBOZXcgZmlsZS4gIENvbnRhaW5zIGJ1aWxkaW5nIGluZm9ybWF0aW9uCglmb3IgdGhlIGBwa2ctY29uZmlnJyBwYWNrYWdlLgoKMjAwMy0wNC0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBGaXggYm91bmRhcnkgY2hlY2sgZm9yCglgZ2x5cGhfaW5kZXgnLgoKMjAwMy0wNC0yNTogIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglBZGRlZCB0aGUgb3B0aW9uYWwgdW5wYXRlbnRlZCBoaW50aW5nIHN5c3RlbSBmb3IgVHJ1ZVR5cGUuICBJdAoJYWxsb3dzIHR5cGVmYWNlcyB3aGljaCBuZWVkIGhpbnRpbmcgdG8gcHJvZHVjZSBjb3JyZWN0IGdseXBoIGZvcm1zCgkoZS5nLiwgQ2hpbmVzZSB0eXBlZmFjZXMgZnJvbSBEeW5hbGFiKSB0byB3b3JrIGFjY2VwdGFibHkgd2l0aG91dAoJaW5mcmluZ2luZyBBcHBsZSBwYXRlbnRzLiAgVGhpcyBzeXN0ZW0gaXMgY29tcGlsZWQgb25seSBpZgoJVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElORyBpcyBkZWZpbmVkIGluCglmdG9wdGlvbi5oLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHVucGF0Lmg6IE5ldyBmaWxlLiAgRGVmaW5lcwoJRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1RSVUVUWVBFX1VOUEFURU5URURfSCk6IE5ldwoJbWFjcm8gdG8gdXNlIHdoZW4gaW5jbHVkaW5nIHR0dW5wYXQuaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkcpOiBOZXcgY29uZmlndXJhdGlvbiBtYWNyb3MKCShub3QgZGVmaW5lZCwgYnV0IGluIGNvbW1lbnRzKSBmb3IgdGhlIHVucGF0ZW50ZWQgaGludGluZyBzeXN0ZW0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYykKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogTmV3IGVsZW1lbnQgIkZUX0Jvb2wKCXVucGF0ZW50ZWRfaGludGluZyIuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoTk9fQVBQTEVfUEFURU5ULCBBUFBMRV9USFJFU0hPTEQpOgoJUmVtb3ZlZC4KCShHVUVTU19WRUNUT1IpOiBOZXcgbWFjcm8uCgkoVFRfUnVuX0NvbnRleHQpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXToKCVNldCBgYm90aF94X2F4aXMnLgoJKHR0X2RlZmF1bHRfZ3JhcGhpY3Nfc3RhdGUpCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IFVwZGF0ZWQuCgkoQ3VycmVudF9SYXRpbykgW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOgoJSGFuZGxlIGB1bnBhdGVudGVkX2hpbnRpbmcnLgoJKERpcmVjdF9Nb3ZlKSBbTk9fQVBQTEVfUEFURU5UXTogUmVtb3ZlZC4KCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW5zZXJ0IGFzc2VydGlvbi4KCShQcm9qZWN0LCBGcmVlUHJvamVjdCkKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogSW5zZXJ0IGFzc2VydGlvbi4KCShDb21wdXRlX0Z1bmNzKSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglJbXBsZW1lbnQgdW5wYXRlbnRlZCBoaW50aW5nLgoJKERPX1NQVlRDQSwgRE9fU0ZWVENBLCBET19TUFZUTCwgRE9fU0ZWVEwsIERPX1NQVkZTLCBET19TRlZGUywKCUluc19TRFBWVEwpOiBDYWxsIGBHVUVTU19WRUNUT1InLgoJKERPX0dQViwgRE9fR0ZWKSBbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106CglIYW5kbGUgYHVucGF0ZW50ZWRfaGludGluZycuCgkoQ29tcHV0ZV9Qb2ludF9EaXNwbGFjZW1lbnQpIFtOT19BUFBMRV9QQVRFTlRdOiBSZW1vdmVkLgoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbXBsZW1lbnQgdW5wYXRlbnRlZAoJaGludGluZy4KCShNb3ZlX1pwMl9Qb2ludCwgSW5zX1NIUElYLCBJbnNfREVMVEFQLCBJbnNfREVMVEFDKQoJW1RUX0NPTkZJR19PUFRJT05fQ09NUElMRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBJbXBsZW1lbnQgdW5wYXRlbnRlZAoJaGludGluZy4KCShUVF9SdW5JbnMpOiBVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jCglbVFRfQ09ORklHX09QVElPTl9DT01QSUxFX1VOUEFURU5URURfSElOVElOR106IEluY2x1ZGUKCUZUX1RSVUVUWVBFX1VOUEFURU5URURfSC4KCSh0dF9mYWNlX2luaXQpIFtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HLAoJVFRfQ09ORklHX09QVElPTl9GT1JDRV9VTlBBVEVOVEVEX0hJTlRJTkddOiBDaGVjawoJRlRfUEFSQU1fVEFHX1VOUEFURU5URURfSElOVElORy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCAoVFRfR3JhcGhpY3NTdGF0ZSkKCVtUVF9DT05GSUdfT1BUSU9OX0NPTVBJTEVfVU5QQVRFTlRFRF9ISU5USU5HXTogQWRkIGBib3RoX3hfYXhpcycuCgoyMDAzLTA0LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChoYXNoX2J1Y2tldCwgaGFzaF9sb29rdXApOiBVc2UgYGNvbnN0JyBmb3IgZmlyc3QKCWFyZ3VtZW50LgoJKGJkZl9nZXRfZm9udF9wcm9wZXJ0eSk6IFVzZSBgY29uc3QnIGZvciB0aGlyZCBhcmd1bWVudC4KCVVwZGF0ZWQgYWxsIGNhbGxlcnMuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCk6IFNldCBwaXhlbCB3aWR0aCBhbmQgaGVpZ2h0CglzaW1pbGFyIHRvIHRoZSBQQ0YgZHJpdmVyLgoJKiBzcmMvYmRmL2JkZi5oIChfaGFzaG5vZGUpOiBVc2UgYGNvbnN0JyBmb3IgYGtleScuCglVcGRhdGVkLgoKCSogc3JjL2d6aXAvZnRnemlwLmM6IEMrKyBkb2Vzbid0IGxpa2UgdGhhdCB0aGUgYXJyYXkgYGluZmxhdGVfbWFzaycKCWlzIGRlY2xhcmVkIHR3aWNlLiAgSXQgaXMgcGVyaGFwcyBiZXR0ZXIgdG8gbW9kaWZ5IHRoZSB6bGliIHNvdXJjZQoJZmlsZXMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGlzIGhhY2suCgkoemNhbGxvYywgemZyZWUsIGZ0X2d6aXBfc3RyZWFtX2Nsb3NlLCBmdF9nemlwX3N0cmVhbV9pbyk6IEFkZCBjYXN0cwoJdG8gbWFrZSBidWlsZCB3aXRoIGcrKyBzdWNjZXNzZnVsLgoKMjAwMy0wNC0yNCAgTWFuaXNoIFNpbmdoICA8eW9zaEBnaW1wLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9pbml0KSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Jbml0KSwgc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBTcGxpdCBvbiBgLScKCWFsc28gZm9yIHNlYXJjaGluZyB0aGUgc3R5bGUgbmFtZS4KCjIwMDMtMDQtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRml4ZWQgdGhlIGNvbXB1dGF0aW9uIG9mCglmYWNlLT5udW1fZ2x5cGhzLiAgV2UgbXVzdCBpbmNyZWFzZSB0aGUgdmFsdWUgYnkgMSB0byByZXNwZWN0IHRoZQoJY29udmVudGlvbiB0aGF0IGdseXBoIGluZGV4IDAgYWx3YXlzIGNvcnJlc3BvbmRzIHRvIHRoZSAibWlzc2luZwoJZ2x5cGgiLgoKMjAwMy0wNC0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoQ0ZMQUdTKTogQWRkIEBDUFBGTEFHU0AuCgoyMDAzLTA0LTI0ICBEaWV0ZXIgQmFyb24gIDxkaWxsb0BuZXRic2Qub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluIChjZmxhZ3MpOiBFbWl0IEZyZWVUeXBlIDIncyBpbmNsdWRlCglmaWxlcyBmaXJzdC4gIE90aGVyd2lzZSB0aGVyZSBhcmUgY29uZmxpY3RzIHdpdGggRnJlZVR5cGUgMQoJaW5zdGFsbGVkIHNpbXVsdGFuZW91c2x5LgoKMjAwMy0wNC0yMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeGluZyBidWdzIHJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KCgkqIHNyYy9iYXNlL2Z0c3Ryb2tlci5jIChGVF9TdHJva2VyX1BhcnNlT3V0bGluZSk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlIGBpbl9wYXRoJy4KCgkqIHNyYy9iYXNlL2Z0b2JqcyAoZnRfZ2x5cGhzbG90X3NldF9iaXRtYXApOiBDaGFuZ2UgdHlwZSBvZgoJc2Vjb25kIGFyZ3VtZW50IHRvIGBGVF9CeXRlKicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGByZXMnLgoJKF9iZGZfcGFyc2VfZ2x5cGhzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmV4dCcuCglNYXJrIGBjYWxsX2RhdGEnIGFzIHVudXNlZC4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVMaXN0X0xvb2t1cCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBwbGFzdCcuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFNsaWdodCByZWNvZGluZyB0bwoJYWN0dWFsbHkgdXNlIGBlcnJvcicuCgkocGNmX2xvYWRfZm9udCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGF2Z3cnLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBgdm9pZCcuCglNYXJrIGBlcnJvcicgYXMgdW51c2VkLgoJKiBzcmMvcGZyL3Bmcm9ianMuaDogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJkcml2ci5jIChwZnJfZ2V0X2tlcm5pbmcpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGZvcm1hdF90YWcnLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNl92YWxpZGF0ZSwgdHRfY21hcDEwX3ZhbGlkYXRlKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYHN0YXJ0Jy4KCSh0dF9jbWFwMTBfY2hhcl9uZXh0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgcmVzdWx0JwoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBNYXJrIGBlcnJvcicgYXMgdW51c2VkLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogTWFyayBgZXJyb3InIGFzCgl1bnVzZWQuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBwc2hpbnRlcicuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogVXNlIGBnbHlwaF9kYXRhX2xvYWRlZCcKCW9ubHkgZm9yIEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwuCgoyMDAzLTA0LTIzICBBa2l0byBIaXJhaSAgPGFraXRvQGtkZS5nci5qcD4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBQcm92aWRlIGEgd2VhayB2YXJpYW50CglvZiB0aGUgZ2x5cGggSUQgYm91bmRpbmcgY2hlY2sgaWYgRlRfVkFMSURBVEVfVElHSFQgaXMgbm90IGFjdGl2ZS4KCVdpdGhvdXQgdGhpcyBjaGFuZ2UsIG1hbnkgQ0pLIGZvbnRzIGZyb20gRHluYWxhYiBhcmUgcmVqZWN0ZWQuCgoyMDAzLTA0LTIzICBKb2UgTWFyY3VzIENsYXJrZSAgPG1hcmN1c0BGcmVlQlNELm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmRmLmMgKEZUX0dldF9CREZfUHJvcGVydHkpOiBDaGVjayBmb3IgdmFsaWQKCWBnZXRfaW50ZXJmYWNlJy4KCjIwMDMtMDQtMjMgIFBhdWwgTWlsbGVyICA8cGF1bG1AcHJvZm91bmRlZmZlY3RzLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHBhcnNlX2ZvbmQpOiBGaXggaGFuZGxpbmcgb2Ygc3R5bGUgbmFtZXMuCgoyMDAzLTA0LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9mb250X2lkKTogVXNlIEZUX1B0ckRpc3QKCWluc3RlYWQgb2YgRlRfVWludCBmb3IgYGxlbicuCgoyMDAzLTA0LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoemNhbGxvYykgWyFGVF9DT05GSUdfT1BUSU9OX1NZU1RFTV9aTElCXToKCUNvbnZlcnQgSyZSIGZvcm1hdCB0byBtb2Rlcm4gQyB1c2FnZS4KCShGVF9TdHJlYW1fT3Blbkd6aXApOiBVc2UgbG9uZyBjb25zdGFudC4KCjIwMDMtMDQtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfbG9va3VwKTogUmVtb3ZlIHNoYWRvdyBkZWNsYXJhdGlvbgoJb2YgYG1hbmFnZXInLgoKMjAwMy0wNC0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jL0lOU1RBTEwuVU5YOiBDbGVhbmVkIHVwLgoKMjAwMy0wNC0wOSAgVG9ycmV5IEx5b25zICA8dG9ycmV5QG1yY2xhLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFJlbW92ZWQgYSBkb3VibGUtZnJlZQoJYnVnIHRoYXQgaGFkIG5hc3R5IGNvbnNlcXVlbmNlcyB3aGVuIHRyeWluZyB0byBvcGVuIGFuICJpbnZhbGlkIgoJZm9udCBvbiBhIE1hYy4KCjIwMDMtMDQtMDkgIE1pa2UgRmFiaWFuICA8bWZhYmlhbkBzdXNlLmRlPgoKCSogc3JjL2JkZi9iZGZkcml2ci5oIChCREZfZW5jb2RpbmdfZWwpLCBzcmMvcGNmL3BjZi5oCgkoUENGX0VuY29kaW5nUmVjKTogQ2hhbmdlZCBGVF9TaG9ydCB0byBGVF9VU2hvcnQgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gYWNjZXNzIG1vcmUgdGhhbiAzMjc2OCBnbHlwaHMgaW4gZm9udHMuCgoyMDAzLTA0LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuNCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAzLTA0LTAzICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBGaXhlZCB0aGUgY29kZSB0byBtYWtlIGl0CgloYW5kbGUgc3BlY2lhbCBjYXNlcyB3aGVyZSBhIGZvbnQgb25seSBjb250YWlucyBhICIubm90ZGVmIiBnbHlwaAoJKGhhcHBlbnMgaW4gUERGLWVtYmVkZGVkIGZvbnRzKS4gIE90aGVyd2lzZSwgRlRfUGFuaWMgd2FzIGNhbGxlZC4KCjIwMDMtMDMtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRTogVWRwYXRlZC4KCgkqIFJFQURNRS5VTlg6IFJlbW92ZWQgKG5vdyByZXBsYWNlZCBieSBkb2NzL0lOU1RBTEwuVU5YKS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiBUaGUgaGludGVyIG5vdyBwZXJmb3JtcyBhcyBpbiAyLjEuMyBhbmQKCXdpbGwgaWdub3JlIHN0ZW0gcXVhbnRpemF0aW9uIG9ubHkgd2hlbiBGVF9MT0FEX1RBUkdFVF9TTU9PVEggaXMKCXVzZWQuCgkocHNoM19kaW1lbnNpb25fcXVhbnRpemVfbGVuKTogRW5hYmxlZC4KCShwc2gzX2hpbnRfYWxpZ24pOiBFbmFibGUgY29tbWVudGVkIGNvZGUuCgkocHNoM19oaW50X2FsaWduX2xpZ2h0KTogQ29tbWVudGVkIG91dC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfQ2hhcl9TaXplKTogQ2hhbmdlZCB0aGUgZGVmYXVsdAoJY29tcHV0YXRpb25zIHRvIGluY2x1ZGUgcm91bmRpbmcgaW4gYWxsIGNhc2VzOyB0aGlzIGlzIHJlcXVpcmVkIHRvCglwcm92aWRlIGFjY3VyYXRlIGtlcm5pbmcgZGF0YSB3aGVuIG5hdGl2ZSBUcnVlVHlwZSBoaW50aW5nIGlzCgllbmFibGVkLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19uYW1lX2NoYXIpOiBUaGUgVHlwZSAxIGxvYWRlciBub3cgYWNjZXB0cwoJbW9yZSBnZW5lcmFsIG5hbWVzIGFjY29yZGluZyB0byB0aGUgUG9zdFNjcmlwdCBzcGVjaWZpY2F0aW9uICh0aGUKCXByZXZpb3VzIG9uZSB3YXMgdG9vIHJlc3RyaWN0aXZlKS4KCShwYXJzZV9mb250X25hbWUsIHBhcnNlX2VuY29kaW5nLCBwYXJzZV9jaGFyc3RyaW5ncywgcGFyc2VfZGljdCk6CglVc2UgYGlzX25hbWVfY2hhcicuCgkocGFyc2Vfc3VicnMpOiBIYW5kbGUgZW1wdHkgYXJyYXlzLgoKMjAwMy0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNlcmlvdXMgcmV3cml0aW5nIG9mIHRoZSBkb2N1bWVudGF0aW9uLgoKCSogZG9jcy9CVUdTLCBkb2NzL0JVSUxEOiBSZW1vdmVkLgoJKiBkb2NzL0RFQlVHLlRYVDogUmVuYW1lZCB0by4uLgoJKiBkb2NzL0RFQlVHOiBUaGlzLgoJKiBkb2NzL0NVU1RPTUlaRSwgZG9jcy9UUlVFVFlQRSwgZG9jcy9VUEdSQURFLlVOWDogTmV3IGZpbGVzLgoJKiBkb2NzL0lOU1RBTEwuQU5ZLCBkb2NzL0lOU1RBTEwuVU5YLCBkb2NzL0lOU1RBTEwuR05VIE5ldyBmaWxlcywKCWNvbnRhaW5pbmcgcGxhdGZvcm0gc3BlY2lmaWMgaW5mb3JtYXRpb24gcHJldmlvdXNseSBpbiBJTlNUQUxMLgoJKiBkb2NzL3JlYWRtZS52bXM6IFJlbmFtZWQgdG8uLi4KCSogZG9jcy9JTlNUQUxMLlZNUzogVGhpcy4KCgkqIGRvY3MvKjogVXBkYXRlZC4KCglJbnRyb2R1Y2VkIHRocmVlIG5ldyBmdW5jdGlvbnMgdG8gZGVhbCB3aXRoIGdseXBoIGJpdG1hcHMgd2l0aGluCglGVF9HbHlwaFNsb3Qgb2JqZWN0czoKCgkgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcAoJICBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwCgkgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwCgoJVGhlc2UgZnVuY3Rpb25zIGFyZSBtdWNoIG1vcmUgY29udmVuaWVudCB0byB1c2UgdGhhbiBtYW5hZ2luZyB0aGUKCUZUX0dMWVBIX09XTl9CSVRNQVAgZmxhZyBtYW51YWxseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcCwKCWZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAsIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwKTogTmV3IGZ1bmN0aW9ucy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEltcGxlbWVudCB0aGVtLgoJKGZ0X2dseXBoc2xvdF9kb25lKTogVXNlIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcC4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0dseXBoX0xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJVXNlIGBmdF9nbHlwaHNsb3RfKicgZnVuY3Rpb25zLgoJRG9uJ3Qgc2V0IGBGVF9HTFlQSF9PV05fQklUTUFQJy4KCgkqIHNyYy9wZnIvcGZyc2JpdC5jIChwZnJfc2xvdF9sb2FkX2JpdG1hcCk6IFVzZQoJYGZ0X2dseXBoc2xvdF9hbGxvY19iaXRtYXAnLgoKCSogc3JjL3NmbnQvdHRzYml0LmMgKExvYWRfU0JpdF9JbWFnZSk6IENoYW5nZSA1dGggYXJndW1lbnQgdG8gdHlwZQoJYEZUX0dseXBoU2xvdCcuCglBZGRpbmcgYXJndW1lbnQgYGRlcHRoJyB0byBoYW5kbGUgcmVjdXJzaXZlIGNhbGxzLgoJVXNlIGBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwJy4KCSh0dF9mYWNlX2xvYWRfc2JpdF9pbWFnZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglEb24ndCBoYW5kbGUgYEZUX0dMWVBIX09XTl9CSVRNQVAnLgoJVXBkYXRlIGNhbGwgdG8gTG9hZF9TQml0X0ltYWdlLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfZ2x5cGhzbG90X2NsZWFyKTogVGhpcy4gIFVwZGF0ZWQgY2FsbGVyLgoJQ2FsbCBgZnRfZ2x5cGhzbG90X2ZyZWVfYml0bWFwJy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBVc2UKCWBmdF9nbHlwaHNsb3Rfc2V0X2JpdG1hcCcuCglEb24ndCBoYW5kbGUgYEZUX0dMWVBIX09XTl9CSVRNQVAnLgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydUxpc3RfTG9va3VwKTogRml4ZWQgYW4gaW52YWxpZCBhc3NlcnRpb24KCWNoZWNrLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkKTogQWRkIHR3byBzY2FsaW5nCglhcmd1bWVudHMuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmg6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYWhfaGludGVyX2NvbXB1dGVfd2lkdGhzKTogVXBkYXRlZC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfZmFtaWx5X2RvbmUpOiBGaXhlZCBzbWFsbCBidWcgdGhhdCBjb3VsZAoJY3Jhc2ggdGhlIGNhY2hlIGluIHJhcmUgY2lyY3Vtc3RhbmNlcyAobW9zdGx5IHdpdGggYnJva2VuIGZvbnRzKS4KCjIwMDMtMDMtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IEZpeGVkIGEgc21hbGwgcm91bmRpbmcKCWJ1Zy4gIEFjdHVhbGx5LCBpdCBzZWVtcyB0aGF0IHByZXZpb3VzIHZlcnNpb25zIG9mIEZyZWVUeXBlIGRpZG4ndAoJcGVyZm9ybSBUcnVlVHlwZSByb3VuZGluZyBleGFjdGx5IGFzIGFwcHJvcHJpYXRlLgoKMjAwMy0wMy0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogRml4aW5nIHRoZSBzbWFsbAoJVHJ1ZVR5cGUgbmF0aXZlIHJlbmRlcmluZyBnbGl0Y2hlczsgdGhleSBjYW1lIGZyb20gYSBzbWFsbCByb3VuZGluZwoJZXJyb3IuCgoyMDAzLTAzLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBjb250cm9sIG1lbW9yeSBkZWJ1Z2dpbmcgd2l0aAoJRnJlZVR5cGUuICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mICJGVDJfREVCVUdfTUVNT1JZIiwKCSJGVDJfQUxMT0NfVE9UQUxfTUFYIiBhbmQgIkZUMl9BTExPQ19DT1VOVF9NQVgiIGluIERFQlVHLlRYVC4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKEZUX01lbVRhYmxlUmVjKTogQWRkIGBhbGxvY19jb3VudCcsCglgYm91bmRfdG90YWwnLCBgYWxsb2NfdG90YWxfbWF4JywgYGJvdW5kX2NvdW50JywgYGFsbG9jX2NvdW50X21heCcuCgkoZnRfbWVtX2RlYnVnX2FsbG9jKTogSGFuZGxlIG5ldyB2YXJpYWJsZXMuCgkoZnRfbWVtX2RlYnVnX2luaXQpOiBzL0ZUX0RFQlVHX01FTU9SWS9GVDJfREVCVUdfTUVNT1JZLy4KCUhhbmRsZSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGVzLgoJKiBkb2NzL0RFQlVHLlRYVDogVXBkYXRlZC4KCglGaXhlZCB0aGUgY2FjaGUgc3ViLXN5c3RlbSB0byBjb3JyZWN0bHkgZGVhbCB3aXRoIG91dC1vZi1tZW1vcnkKCWNvbmRpdGlvbnMuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IENvbW1lbnQgb3V0IGdlbmVyaWMKCWNoZWNrLgoJKGZ0Y19jYWNoZV9sb29rdXApOiBJbXBsZW1lbnQgbG9vcC4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYzogRGVmaW5lIEZUX0NPTVBPTkVOVC4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEhhbmRsZQoJRlRfRXJyX091dF9PZl9NZW1vcnkuCgkqIHNyYy9jYWNoZS9mdGxydS5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0RFQlVHX0guCgkoRlRfTHJ1TGlzdF9Mb29rdXApOiBJbXBsZW1lbnQgbG9vcC4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9kb25lKTogRml4IG1lbW9yeSBsZWFrLgoJKHBmcl9mYWNlX2luaXQpOiBGaXhpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBGaXhlZCBhIGJ1ZyAobWVtb3J5CglsZWFrKSB0aGF0IG9ubHkgaGFwcGVuZWQgd2hlbiBhIHRyeSB0byByZXNpemUgYW4gYXJyYXkgd291bGQgZW5kIGluCglhbiBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbi4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X2NvbnZlcnRfZ2x5cGgpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncyAvIHZvbGF0aWxlIGJ1Zy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfZ2x5cGh6b25lX2RvbmUpOiBSZW1vdmVkIHNlZ21lbnRhdGlvbgoJZmF1bHQgdGhhdCBoYXBwZW5lZCBpbiB0aWdodCBtZW1vcnkgZW52aXJvbm1lbnRzLgoKMjAwMy0wMi0yOCAgUGl4ZWwgIDxwaXhlbEBtYW5kcmFrZXNvZnQuY29tPgoKCSogc3JjL2d6aXAvZnRnemlwLmMgKGZ0X2d6aXBfZmlsZV9kb25lKTogRml4ZWQgbWVtb3J5IGxlYWs6IFRoZSBaTGliCglzdHJlYW0gd2FzIG5vdCBwcm9wZXJseSBmaW5hbGl6ZWQuCgoyMDAzLTAyLTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEluY2x1ZGUgRlRfVFJVRVRZUEVfSURTX0guCgkoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBUaGUgY21hcCBjYWNoZSBub3cKCXN1cHBvcnRzIFVDUy00IGNoYXJtYXBzIHdoZW4gYXZhaWxhYmxlIGluIEFzaWFuIGZvbnRzLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBDaGFuZ2VkICJhc2lhbiIgdG8gIkFzaWFuIgoJaW4gY29tbWVudHMuCgoyMDAzLTAyLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYyAoZnRfZ3ppcF9maWxlX2ZpbGxfb3V0cHV0KTogRml4ZWQgYSBidWcgdGhhdAoJY2F1c2VkIEZyZWVUeXBlIHRvIGxvb3AgZW5kbGVzc2x5IHdoZW4gdHJ5aW5nIHRvIHJlYWQgY2VydGFpbgoJY29tcHJlc3NlZCBnemlwIGZpbGVzLiAgVGhlIGZvbGxvd2luZyB0ZXN0IHJldmVhbHMgdGhlIGJ1ZzoKCgkgIHRvdWNoIDAxMjM0NTY3ODkgOyBnemlwIDAxMjM0NTY3ODkgOyBmdGR1bXAgMDEyMzQ1Njc4OS5negoKCVNldmVyYWwgZml4ZXMgdG8gdGhlIFBGUiBmb250IGRyaXZlcjoKCgktIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBlbWJlZGRlZCBiaXRtYXBzIHdhcyBub3QgY29ycmVjdGx5IHNldCBpbgoJICB0aGUgcm9vdCBGVF9GYWNlUmVjIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBmYWNlLgoKCS0gVGhlIGdseXBoIGxvYWRlciBhbHdheXMgdHJpZWQgdG8gbG9hZCB0aGUgb3V0bGluZXMgd2hlbgoJICBGVF9MT0FEX1NCSVRTX09OTFkgd2FzIHNwZWNpZmllZC4KCgktIFRoZSB0YWJsZSBsb2FkZWQgbm93IHNjYW5zIGZvciAqdW5kb2N1bWVudGVkKiBlbGVtZW50cyBvZiBhCgkgIHBoeXNpY2FsIGZvbnQncyBhdXhpbGlhcnkgZGF0YSByZWNvcmQuICBUaGlzIGlzIG5lY2Vzc2FyeSB0bwoJICByZXRyaWV2ZSB0aGUgInJlYWwiIGZhbWlseSBhbmQgc3R5bGUgbmFtZXMuCgoJTk9URSBUSEFUIFRIRVNFIENIQU5HRVMgVEhFIEZBTUlMWSBOQU1FIE9GIE1BTlkgUEZSIEZPTlRTIQoKCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9hdXhfbmFtZV9sb2FkKTogTmV3IGZ1bmN0aW9uLgoJKHBmcl9waHlfZm9udF9kb25lKTogRnJlZSBgZmFtaWx5X25hbWUnIGFuZCBgc3R5bGVfbmFtZScgYWxzby4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKHBmcl9waHlfZm9udF9sb2FkKTogRXh0cmFjdCB1c2VmdWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgYXV4aWxpYXJ5CglieXRlcy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9kb25lKTogU2V0IHBvaW50ZXJzIHRvIE5VTEwuCgkocGZyX2ZhY2VfaW5pdCk6IFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIGZvciBgZmFtaWx5X25hbWUnIGFuZAoJYHN0eWxlX25hbWUnLgoJSGFuZGxlIHN0cmlrZXMuCgkocGZyX3Nsb3RfbG9hZCk6IEhhbmRsZSBGVF9MT0FEX1NCSVRTX09OTFkuCgkqIHNyYy9wZnIvcGZydHlwZXMuaCAoUEZSX1BoeUZvbnRSZWMpOiBBZGQgZmllbGRzIGBhc2NlbnQnLAoJYGRlc2NlbnQnLCBgbGVhZGluZycsIGBmYW1pbHlfbmFtZScsIGFuZCBgc3R5bGVfbmFtZScuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBGaXhlZCBhIHJvdW5kaW5nIGJ1ZwoJd2hlbiBjb21wdXRpbmcgdGhlIHNjYWxlIGZhY3RvcnMgZm9yIGEgZ2l2ZW4gY2hhcmFjdGVyIHNpemUgaW4KCXBvaW50cyB3aXRoIHJlc29sdXRpb24uCgoJKiBkZXZlbC9mdDJidWlsZC5oLCBkZXZlbC9mdG9wdGlvbi5oOiBOZXcgZmlsZXMgKGluIGEgbmV3IGRpcmVjdG9yeSkKCXdoaWNoIGFyZSBzcGVjaWFsIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIGluY2x1ZGUvZnQyYnVpbGQuaCBhbmQKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIHJlc3BlY3RpdmVseS4KCjIwMDMtMDItMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhpbmcgdGhlIHNsaWdodCBkaXN0b3J0aW9uIHByb2JsZW0gdGhhdCBvY2N1cnJlZCBkdWUgdG8gdGhlIGxhdGVzdAoJYXV0by1oaW50ZXIgY2hhbmdlcy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmdF9yZWNvbXB1dGVfc2NhbGVkX21ldHJpY3MpOiBGaXggcm91bmRpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBOZXcgdmFyaWFibGUgYG1ldHJpY3MyJy4KCVshVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFJlbW92ZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKFRUX1NpemVSZWMpOiBOZXcgZmllbGQgYG1ldHJpY3MnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFJlc2V0X091dGxpbmVfU2l6ZSk6IEZpeCBpbml0aWFsaXphdGlvbiBvZgoJYG1ldHJpY3MnLgoJW0ZUX0NPTkZJR19DSEVTVEVSX0FTQ0VOREVSXTogQ29kZSByZW1vdmVkLgoJKFJlc2V0X1NCaXRfU2l6ZSk6IEZpeCBpbml0aWFsaXphdGlvbiBvZiBgbWV0cmljcycuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoVFRfTG9hZF9Db250ZXh0KTogRml4IGluaXRpYWxpemF0aW9uIG9mCglgZXhlYy0+bWV0cmljcycuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogRGlzYWJsZWQgdGhlIGFkdmFuY2Ugd2lkdGgKCSJjb3JyZWN0aW9uIiB3aGljaCBzZWVtZWQgdG8gcHJvdmlkZSBtb3JlIHRyb3VibGUgdGhhbiBiZW5lZml0cy4KCjIwMDMtMDItMTMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglDaGFuZ2VkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZSBpbiBhIHdheSB0aGF0IG1ha2VzIGl0CglzaW1wbGVyIGFuZCBhbGxvd3MgZ2x5cGggbWV0cmljcyB0byBiZSBjaGFuZ2VkIChlLmcuLCBieSBhZGRpbmcgYQoJY29uc3RhbnQsIGFzIHJlcXVpcmVkIGJ5IENGRiBmb250cykgcmF0aGVyIHRoYW4ganVzdCBvdmVycmlkZGVuLgoJVGhpcyB3YXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgR2hvc3RTY3JpcHQtdG8tRnJlZVR5cGUgYnJpZGdlIHdvcmsuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUFsbG93IG1ldHJpY3MgdG8gYmUgb3ZlcnJpZGRlbi4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJRGl0dG8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBTaW1wbGlmeS4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQ29kZSBibG9jawoJbW92ZWQgZG93bi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmg6IFVwZGF0ZWQuCgoyMDAzLTAxLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvVkVSU0lPTi5ETEwsIGRvY3MvVE9ETzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbgoJZm9yIHRoZSAyLjEuNCByZWxlYXNlLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLAoJYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDogVXBkYXRpbmcgdGhlIHByb2plY3QgZmlsZSBmb3IKCTIuMS40LgoKCSogc3JjL2d6aXAvYWRsZXIzMi5jLCBzcmMvZ3ppcC9mdGd6aXAuYywgc3JjL2d6aXAvaW5mYmxvY2suYywKCXNyYy9nemlwL2luZmNvZGVzLmMsIHNyYy9nemlwL2luZmxhdGUuYywgc3JjL2d6aXAvaW5mdHJlZXMuYywKCXNyYy9nemlwL2luZnV0aWwuYzogUmVtb3ZlZCBvbGQtc3R5bGUgKEsmUilmdW5jdGlvbiBkZWZpbml0aW9ucy4KCVRoaXMgYXZvaWRzIHdhcm5pbmdzIHdpdGggVmlzdWFsIEMrKyBhdCBpdHMgbW9zdCBwZWRhbnRpYyBtb2RlLgoKCSogc3JjL3Bmci9wZnJzYml0LmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCk6IENoYW5nZWQgYW4gRlRfRVJST1IKCWludG8gYW4gRlRfVFJBQ0UxIHNpbmNlIGl0IGNhdXNlZCAiZnR2aWV3IiBhbmQgb3RoZXJzIHRvIGR1bXAgdG9vCgltdWNoIGp1bmsgd2hlbiB0cnlpbmcgdG8gZGlzcGxheSBhIHdhdGVyZmFsbCB3aXRoIGEgZm9udCB3aXRob3V0IGEKCVVuaWNvZGUgY2hhcm1hcCAoZS5nLiAgU1lNQk9MLlRURikuCgoJSW1wbGVtZW50ZWQgRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRSwgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdAoJcGF0Y2ggZnJvbSBEYXZpZCBDaGVzdGVyLCBidXQgd2l0aCBhIG11Y2ggc2ltcGxlciAoYW5kIHNhbmVyKQoJaW1wbGVtZW50YXRpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19DSEVTVEVSX0JMVUVfU0NBTEVdOiBUcnkgdG8gb3B0aW1pemUgdGhlIHlfc2NhbGUgc28gdGhhdAoJdGhlIHRvcCBvZiBub24tY2FwaXRhbCBsZXR0ZXJzIGlzIGFsaWduZWQgb24gYSBwaXhlbCBib3VuZGFyeQoJd2hlbmV2ZXIgcG9zc2libGUuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9CTFVFX1NDQUxFXTogUm91bmQgZGlmZmVyZW50bHkuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcykKCVtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXTogRG8gc29tZSByb3VuZGluZyBvbmx5CglpZiB0aGlzIG1hY3JvIGlzIGRlZmluZWQuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFJlc2V0X091dGxpbmVfU2l6ZSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9BU0NFTkRFUl06IFJvdW5kIGRpZmZlcmVudGx5LgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmM6IEltcHJvdmVkIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4gIEdldHRpbmcKCXJpZCBvZiBzdGVtIHNuYXBwaW5nIHNlZW1zIHRvIHdvcmsgd2VsbCBoZXJlICh0aG91Z2ggdGhlIHN0ZW1zIGFyZQoJc3RpbGwgc2xpZ2h0bHkgbW92ZWQgdG8gaW5jcmVhc2UgY29udHJhc3QpLgoJKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IENvbW1lbnRlZCBvdXQuCgkocHNoM19oaW50X2FsaWduX2xpZ2h0KTogTmV3IGZ1bmN0aW9uLgoJKHBzaDNfaGludF9hbGlnbik6IENvbW1lbnQgb3V0IHNvbWUgY29kZS4KCglUSElTIElNUFJPVkVTIEFOVEktQUxJQVNFRCBSRU5ERVJJTkcsIEJVVCBNT05PQ0hST01FIEFORCBMQ0QgTU9ERVMKCVNUSUxMIFNVQ0suCgoyMDAzLTAxLTIyICBEYXZpZCBDaGVzdGVyICA8ZGF2aWRjaGVzdGVyQHFteC5uZXQ+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IFNtYWxsIGZpeCB0byB0aGUKCXN0ZW0gd2lkdGggb3B0aW1pemF0aW9uLgoKMjAwMy0wMS0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBhIG5ldyBBUEkgYEZUX0dldF9CREZfUHJvcGVydHknIHRvIHJldHJpZXZlIHRoZSBCREYKCXByb3BlcnRpZXMgb2YgYSBnaXZlbiBQQ0Ygb3IgQkRGIGZvbnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmggKEZUX1Byb3BlcnR5VHlwZSk6IE5ldyBlbnVtZXJhdGlvbi4KCShCREZfUHJvcGVydHksIEJERl9Qcm9wZXJ0eVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCglGVF9HZXRfQkRGX1Byb3BlcnR5KTogTmV3IGZ1bmN0aW9uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IEluY2x1ZGUgRlRfQkRGX0guCgkoQkRGX0dldFByb3BlcnR5RnVuYyk6IE5ldyBmdW5jdGlvbiBwb2ludGVyLgoKCSogc3JjL2Jhc2UvZnRiZGYuYyAodGVzdF9mb250X3R5cGUpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgoJKEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IFVzZSBgdGVzdF9mb250X3R5cGUnLgoJKEZUX0dldF9CREZfUHJvcGVydHkpOiBOZXcgZnVuY3Rpb24uCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IEluY2x1ZGUgRlRfQkRGX0guCgkoYmRmX2dldF9iZGZfcHJvcGVydHksIGJkZl9kcml2ZXJfcmVxdWVzdGVyKTogTmV3IGZ1bmN0aW9ucy4KCShiZGZfZHJpdmVyX2NsYXNzKTogVXNlIGBiZGZfZHJpdmVyX3JlcXVlc3RlcicuCgoJKiBzcmMvcGNmL3BjZmRyaXZyLmM6IEluY2x1ZGUgRlRfQkRGX0guCgkocGNmX2dldF9iZGZfcHJvcGVydHksIHBkY19kcml2ZXJfcmVxdWVzdGVyKTogTmV3IGZ1bmN0aW9ucwoJKHBjZl9kcml2ZXJfY2xhc3MpOiBVc2UgYHBjZl9kcml2ZXJfcmVxdWVzdGVyJy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBJbmNsdWRlIGBwY2ZyZWFkLmgnLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogRGVjb3JhdGUgaXQgd2l0aCBGVF9MT0NBTF9ERUYuCgkqIHNyYy9wY2YvcGNmcmVhZC5oOiBOZXcgZmlsZSwgcHJvdmlkaW5nIGBwY2ZfZmluZF9wcm9wZXJ0eScuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBSZWxheGVkIHRoZSAiaGVhZCIgdGFibGUgc2l6ZQoJdmVyaWZpY2F0aW9uIHRvIGFjY2VwdCBhIGZldyBicm9rZW4gZm9udHMgd2hvIHBhZCB0aGUgc2l6ZQoJaW5jb3JyZWN0bHkgKHRoZSB0YWJsZSBzaG91bGQgYmUgcGFkZGVkLCBidXQgaXRzICJzaXplIiBmaWVsZAoJc2hvdWxkbid0IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbikuCgoyMDAzLTAxLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2g6IFJlZ2VuZXJhdGVkIHdpdGggYGxpYnRvb2xpemUgLS1mb3JjZQoJLS1jb3B5JyBmcm9tIGxpYnRvb2wgMS40LjMuCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFJlZ2VuZXJhdGVkIHdpdGggYGFjbG9jYWwgLUkgLicgZnJvbQoJYXV0b21ha2UgMS43LjEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQgd2l0aCBhdXRvY29uZiAyLjU0LgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgZnJvbQoJYGNvbmZpZycgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLXNoLCBidWlsZHMvdW5peC9ta2luc3RhbGxkaXJzOiBVcGRhdGVkIGZyb20KCWBhdXRvbWFrZScgQ1ZTIG1vZHVsZSBhdCBzdWJ2ZXJzaW9ucy5nbnUub3JnLgoKMjAwMy0wMS0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXhlZCBkb2N1bWVudGF0aW9uIGZvcgoJRlRfU2l6ZV9NZXRyaWNzLgoKMjAwMy0wMS0xNSAgSmFtZXMgU3UgIDxzdXpoZUB0dXJib2xpbnV4LmNvbS5jbj4KCgkqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2NoZWNrX2hlYWRlcik6IEJ1Z2ZpeDogY291bGRuJ3QgcmVhZAoJY2VydGFpbiBnemlwLWVkIGZvbnQgZmlsZXMgKHR5cG86IGAmJicgLT4gYCYnKS4KCjIwMDMtMDEtMTUgIEh1dyBEIE0gRGF2aWVzICA8aC5kYXZpZXMxQHBoeXNpY3Mub3guYWMudWs+CgoJQWRkZWQgYSBXaW5kb3dzIC5GTlQgc3BlY2lmaWMgQVBJIChtb3N0bHkgZm9yIFdpbmUpLiAgQWxzbyBmaXhlZCBhCgluYXN0eSBidWcgaW4gdGhlIGhlYWRlciBsb2FkZXIgd2hpY2ggd291bGQgY2F1c2UgaW52YWxpZCBtZW1vcnkKCW92ZXJ3cml0ZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9XSU5GT05UU19IKTogTmV3IG1hY3JvCglmb3IgZnR3aW5mbnQuaC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oOiBJbmNsdWRlIEZUX1dJTkZPTlRTX0guCgkoRk5UX0ZvbnRSZWMpOiBVcGRhdGVkLgoJTW92ZSBXaW5kb3dzIEZOVCBkZWZpbml0aW9uIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaDogVGhpcyBuZXcgZmlsZS4KCShGVF9XaW5GTlRfSGVhZGVyUmVjKTogUmVuYW1lIGByZXNlcnZlZDInIHRvIGByZXNlcnZlZDEnLgoJKiBzcmMvYmFzZS9mdHdpbmZudC5jOiBOZXcgZmlsZSwgcHJvdmlkaW5nIGBGVF9HZXRfV2luRk5UX0hlYWRlcicuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAod2luZm50X2hlYWRlcl9maWVsZHMpOiBVcGRhdGVkLgoJUmVuYW1lIGByZXNlcnZlZDInIHRvIGByZXNlcnZlZDEnLgoJKGZudF9mb250X2xvYWQpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvZGVzY3JpcC5tbXMsIHNyYy9iYXNlL3J1bGVzLm1rOgoJVXBkYXRlZC4KCjIwMDMtMDEtMTQgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnbHlwaC5oLCBzcmMvYmFzZS9mdGdseXBoLmM6IEFkZGVkIGBjb25zdCcgdG8KCXRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCB0byBGVF9NYXRyaXhfTXVsdGlwbHksIHdoaWNoIGlzbid0CgljaGFuZ2VkIC0tIHRoaXMgYWRkcyBkb2N1bWVudGF0aW9uIGFuZCBjb252ZW5pZW5jZS4KCjIwMDMtMDEtMTMgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbWV0cmljcykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVHJ1ZVR5cGUgdHlwZWZhY2VzIHdpdGhvdXQKCWhvcml6b250YWwgbWV0cmljcyAod2l0aG91dCB0aGUgYGhtdHgnIHRhYmxlKSBhcmUgbm93IHRvbGVyYXRlZCBpZgoJYW4gaW5jcmVtZW50YWwgaW50ZXJmYWNlIGhhcyBiZWVuIHNwZWNpZmllZCB0aGF0IGhhcyBhCglnZXRfZ2x5cGhfbWV0cmljcyBmdW5jdGlvbiwgaW1wbHlpbmcgdGhhdCBtZXRyaWNzIHdpbGwgYmUgc3VwcGxpZWQKCWZyb20gb3V0c2lkZS4gIFRoaXMgaGFwcGVucyBmb3IgY2VydGFpbiBUeXBlIDQyIGZvbnRzIHBhc3NlZCBmcm9tCglHaG9zdFNjcmlwdC4KCjIwMDMtMDEtMTEgIERhdmlkIENoZXN0ZXIgIDxkYXZpZGNoZXN0ZXJAcW14Lm5ldD4KCglQYXRjaGVzIHRvIHRoZSBhdXRvLWhpbnRlciBpbiBvcmRlciB0byBzbGlnaHRseSBpbXByb3ZlIHRoZSBvdXRwdXQuCglOb3RlIHRoYXQgZXZlcnl0aGluZyBpcyBjb250cm9sbGVkIHRocm91Z2ggdGhlIG5ldwoJRlRfQ09ORklHX09QVElPTl9DSEVTVEVSX0hJTlRTIGRlZmluZWQgaW4gImZ0b3B0aW9uLmgiLiAgVGhlcmUgYXJlCglhbHNvIGluZGl2aWR1YWwgRlRfQ09ORklHX0NIRVNURVJfWFhYIG1hY3JvcyB0byBjb250cm9sIGluZGl2aWR1YWwKCSJmZWF0dXJlcyIuCgoJTm90ZSB0aGF0IGFsbCBpbXByb3ZlbWVudHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZQoJdHdlYWtlZCBmb3Igb3B0aW1pemF0aW9uIGFuZCB0ZXN0aW5nIHB1cnBvc2VzLiAgVGhlIGNvbmZpZ3VyYXRpb24KCW1hY3JvcyB3aWxsIG1vc3QgbGlrZWx5IGRpc2FwcGVhciBpbiB0aGUgc2hvcnQgZnV0dXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UUyk6IE5ldyBtYWNyby4KCShGVF9DT05GSUdfQ0hFU1RFUl97U01BTExfRixBU0NFTkRFUixTRVJJRixTVEVNLEJMVUVfU0NBTEV9KQoJW0ZUX0NPTkZJR19PUFRJT05fQ0hFU1RFUl9ISU5UU106IE5ldyBtYWNyb3MgdG8gY29udHJvbCBpbmRpdmlkdWFsCglmZWF0dXJlcy4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChibHVlX2NoYXJzKSBbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06CglBZGQgYmx1ZSB6b25lIGZvciBgZmlqa2RiaCcuCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5oIChBSF9JU19UT1BfQkxVRSkKCVtGVF9DT05GSUdfQ0hFU1RFUl9TTUFMTF9GXTogVXNlIGBBSF9CTFVFX1NNQUxMX0ZfVE9QJy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKQoJW0ZUX0NPTkZJR19DSEVTVEVSX1NFUklGXTogVXNlIGBBSF9FREdFX1NFUklGJy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfYmx1ZV9lZGdlcykgW0ZUX0NPTkZJR19DSEVTVEVSX1NNQUxMX0ZdOgoJSW5jcmVhc2UgdGhyZXNob2xkIGZvciBgYmVzdF9kaXN0Jy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpCglbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBQcm92aWRlIG5ldyB2ZXJzaW9uIGZvciBpbXByb3ZlZCBzZXJpZgoJaGFuZGxpbmcuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpIFtGVF9DT05GSUdfQ0hFU1RFUl9TRVJJRl06IFVzZSBzcGVjaWFsCgl2ZXJzaW9uIG9mIGBhaF9jb21wdXRlX3N0ZW1fd2lkdGgnLgoJKGFoX2hpbnRfZWRnZXNfMykgW0ZUX0NPTkZJR19DSEVTVEVSX1NURU1dOiBBIG5ldyBhbGdvcml0aG0gZm9yIHN0ZW0KCWFsaWdubWVudCB3aGVuIHN0ZW0gd2lkdGhzIGFyZSBsZXNzIHRoYW4gMS41IHBpeGVscyB3aWRlIGNlbnRlcnMgdGhlCglzdGVtIHNsaWdodGx5IG9mZi1jZW50ZXIgb2YgdGhlIGNlbnRlciBvZiBhIHBpeGVsICh0aGlzIGluY3JlYXNlcwoJc2hhcnBuZXNzIGFuZCBjb25zaXN0ZW5jeSkuCglbRlRfQ09ORklHX0NIRVNURVJfU0VSSUZdOiBVc2Ugc3BlY2lhbCB2ZXJzaW9uIG9mCglgYWhfY29tcHV0ZV9zdGVtX3dpZHRoJy4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCBbRlRfQ09ORklHX0NIRVNURVJfU01BTExfRl06IEFkZAoJYEFIX0JMVUVfU01BTExfRl9UT1AnLgoKMjAwMy0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oIChXaW5GTlRfSGVhZGVyUmVjKTogSW5jcmVhc2UKCXNpemUgb2YgYHJlc2VydmVkMicgdG8gYXZvaWQgbWVtb3J5IG92ZXJ3cml0ZXMuCgoyMDAzLTAxLTA4ICBIdXcgRGF3aWVzICA8aHV3QGNvZGV3ZWF2ZXJzLmNvbT4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAod2luZm50X2hlYWRlcl9maWVsZHMpOiBSZWFkIDE2IGJ5dGVzIGludG8KCSJyZXNlcnZlZDIiLCBub3QgInJlc2VydmVkIi4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmaW5kX3VuaWNvZGVfY2hhcm1hcCk6IEZpeGVkIHRoZSBlcnJvciBjb2RlCglyZXR1cm5lZCB3aGVuIHRoZSBmb250IGRvZXNuJ3QgY29udGFpbiBhIFVuaWNvZGUgY2hhcm1hcC4gIFRoaXMKCWFsbG93cyBGVDIgdG8gbG9hZCAic3ltYm9sLnR0ZiIgYW5kIGEgZmV3IG90aGVycyBjb3JyZWN0bHkgc2luY2UgdGhlCglsYXN0IHJlbGVhc2UuCgkob3Blbl9mYWNlKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDMtMDEtMDggIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCUltcGxlbWVudGVkIHRoZSBGVF9SRU5ERVJfTU9ERV9MSUdIVCBoaW50aW5nIG1vZGUgaW4gdGhlIGF1dG8gYW5kCglwb3N0c2NyaXB0IGhpbnRlcnMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXJSZWMpOiBBZGQgYGRvX3N0ZW1fYWRqdXN0Jy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBIYW5kbGUKCWhpbnRlci0+ZG9fc3RlbV9hZGp1c3QuCgkoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBTZXQgaGludGVyLT5kb19zdGVtX2FkanVzdC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogQWRkIGBkb19zdGVtX2FkanVzdCcuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBVc2UgYGRvX3N0ZW1fYWRqdXN0Jy4KCShwczNfaGludHNfYXBwbHkpOiBIYW5kbGUgRlRfUkVOREVSX01PREVfTElHSFQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1JlbmRlcl9Nb2RlKTogQWRkCglGVF9SRU5ERVJfTU9ERV9MSUdIVC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IEZpeGluZyB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIGhhbmRsZQoJaW52YWxpZCBjb21wb3NpdGVzIGNvcnJlY3RseSBieSBsaW1pdGluZyB0aGUgcmVjdXJzaW9uIGRlcHRoLgoJKFRUX01BWF9DT01QT1NJVEVfUkVDVVJTRSk6IE5ldyBtYWNyby4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogQWRkIGFyZ3VtZW50IGByZWN1cnNlX2NvdW50Jy4KCUxvYWQgYSBjb21wb3NpdGUgb25seSBpZiB0aGUgbnVtYmVycyBvZiBjb250b3VycyBpcyAtMSwgZW1pdCBlcnJvcgoJb3RoZXJ3aXNlLgoJKFRUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKMjAwMy0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSmFtcnVsZXMsIEphbWZpbGUsIEphbWZpbGUuaW4sIHNyYy8qL0phbWZpbGU6IFNtYWxsIGNoYW5nZXMgdG8KCXN1cHBvcnQgdGhlIGNvbXBpbGF0aW9uIG9mIEZyZWVUeXBlIDIgYXMgcGFydCBvZiBsYXJnZXIgcHJvamVjdHMKCXdpdGggdGhlaXIgb3duIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAob25seSB3aXRoIEphbSkuCgoyMDAzLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYzogUHJvYmFibHkgdGhlIGxhc3QgYnVnLWZpeGVzIHRvIHRoZSBzdHJva2VyOwoJdGhlIEFQSSBpcyBsaWtlbHkgdG8gY2hhbmdlLCBob3dldmVyLgoJKGZ0X3N0cm9rZV9ib3JkZXJfY2xvc2UpOiBEb24ndCByZWNvcmQgZW1wdHkgcGF0aHMuCgkoZnRfc3Ryb2tlX2JvcmRlcl9nZXRfY291bnRzKTogSW5jcmVhc2UgYG51bV9wb2ludHMnIGFsc28gaW4gZm9yIGxvb3AuCgkoZnRfc3Ryb2tlX2JvcmRlcl9leHBvcnQpOiBEb24ndCBpbmNyZWFzZSBgd3JpdGUnIHR3aWNlIGluIGZvciBsb29wcy4KCShmdF9zdHJva2VyX291dHNpZGUpOiBIYW5kbGUgYHBoaScgdG9nZXRoZXIgd2l0aCBgdGhldGEnLgoJKEZUX1N0cm9rZXJfUGFyc2VPdXRsaW5lKTogTmV3IGZ1bmN0aW9uLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQW5nbGVfRGlmZik6IEZpeGluZyBmdW5jdGlvbjogSXQgcmV0dXJuZWQKCWludmFsaWQgdmFsdWVzIGZvciBsYXJnZSBuZWdhdGl2ZSBhbmdsZSBkaWZmZXJlbmNlcyAocmVzdWx0aW5nIGluCglpbmNvcnJlY3Qgc3Ryb2tlciBjb21wdXRhdGlvbnMsIGFtb25nIG90aGVyIHRoaW5ncykuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmspOiBSZW1vdmluZyBpbmNvcnJlY3QKCWFzc2VydGlvbiwgYW5kIGNoYW5naW5nIGNvZGUgdG8gYXZvaWQgaGFzaCB0YWJsZSBzaXplIGNvbnRyYWN0aW9uLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWssIHNyYy9iYXNlL2Rlc2NyaXAubW1zOiBBZGRpbmcKCSJmdHN0cm9rZXIiIHRvIGRlZmF1bHQgYnVpbGQsIGFzIG9wdGlvbmFsIGNvbXBvbmVudC4KCjIwMDItMTItMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9nemlwL2FkbGVyMzIuYywgc3JjL2d6aXAvaW5mYmxvY2suYywgc3JjL2d6aXAvaW5mbGF0ZS5jLAoJc3JjL2d6aXAvaW5mdHJlZXMuYywgc3JjL2d6aXAvemNvbmYuaCwgc3JjL2d6aXAvemxpYi5oLAoJc3JjL2d6aXAvenV0aWwuaDogVXBkYXRlcyB0byBhbGxvdyBjb21waWxhdGlvbiB3aXRob3V0IGNvbXBpbGVyCgl3YXJuaW5ncyB3aXRoIExDQy1XaW4zMi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBTZXQgdG8gNC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBJbmNyZWFzZWQgdG8gOTozOjMuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0ZWQuCgoyMDAyLTEyLTIzICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoTElOS19MSUJSQVJZKSwKCWJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChTWVNURU1fWkxJQik6IFNtYWxsIGZpeCB0byBjb25maWd1cmUKCXN1Yi1zeXN0ZW0gb24gVW5peCB0byBhbGxvdyBvdGhlciBwcm9ncmFtcyB0byBjb3JyZWN0bHkgbGluayB3aXRoCgl6bGliIHdoZW4gbmVlZGVkLgoKMjAwMi0xMi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFNGTlRfTG9hZF9UYWJsZV9GdW5jKTogTmV3CglmdW5jdGlvbiBwb2ludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChGVF9Mb2FkX1NmbnRfVGFibGUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBJbXBsZW1lbnQgaXQuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2dldF9pbnRlcmZhY2UpOiBIYW5kbGUgYGxvYWRfc2ZudCcKCW1vZHVsZSByZXF1ZXN0LgoKMjAwMi0xMi0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZpbmRfdW5pY29kZV9jaGFybWFwKTogQWRkZWQgc29tZSBjb21tZW50cyB0bwoJYmV0dGVyIGV4cGxhaW4gd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4KCShvcGVuX2ZhY2UpOiBJbmNsdWRlZCBHcmFoYW0gQXNoZXIncyBmaXggdG8gcHJldmVudCBmYWNlcyB3aXRob3V0CglVbmljb2RlIGNoYXJtYXBzIGZyb20gbG9hZGluZy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogSW5jbHVkZWQgR2VvcmdlIFdpbGxpYW1zJ3MgZml4IHRvIHN1cHBvcnQKCXZlcnNpb24gMiBmb250cyBjb3JyZWN0bHkuCgkod2luZm50X2hlYWRlcl9maWVsZHMpOiBVcGRhdGVkLgoJKGZudF9mb250X2xvYWQpOiBIYW5kbGUgdmVyc2lvbiAyIGZvbnRzLgoJKEZOVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCjIwMDItMTItMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0aW5nIGRvY3VtZW50IHRvIGJldHRlciBleHBsYWluIHRoZQoJZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdGhyZWUgdmVyc2lvbiBudW1iZXJzIGJlaW5nIHVzZWQgb24gVW5peCwgYXMKCXdlbGwgYXMgcHJvdmlkaW5nIGFuIGF1dG9jb25mIGZyYWdtZW50IHByb3ZpZGVkIGJ5IExhcnMgQ2xhdXNlbi4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9jb25pYyk6IEZpeGVkIHNtYWxsIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgYmV6aWVyIGFyY3Mgd2l0aCBuZWdhdGl2ZSB2ZXJ0aWNhbCBjb29yZGluYXRlcyB0byBiZQoJcmVuZGVyZWQgYXBwcm9wcmlhdGVseS4KCjIwMDItMTItMDIgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYzogTW9kaWZpZWQgdGhlIGxvZ2ljIHRvIGdldCBVbmljb2RlIGNoYXJtYXBzLgoJTm93IGl0IGxvYWRzIFVDUy00IGNoYXJtYXBzIHdoZW4gdGhlcmUgaXMgb25lLgoJKGZpbmRfdW5pY29kZV9jaGFybWFwKTogTmV3IGZ1bmN0aW9uLgoJKG9wZW5fZmFjZSk6IFJlZmVyIHRvIHRoZSBhYm92ZSBvbmUuCgkoRlRfU2VsZWN0X0NoYXJtYXApOiBJZGVtLgoKMjAwMi0xMS0yOSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmg6IENvcnJlY3QgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nCgltYWNybyAod2FzIF9fRlRYRjg2X0hfXyAuLi4pLgoKMjAwMi0xMS0yNyAgVmluY2VudCBDYXJvbiAgPHYuY2Fyb25AemVyb2RldXgubmV0PgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4sIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbiwKCWJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYywgc3JjL2d6aXAvcnVsZXMubWssIHNyYy9nemlwL2Z0Z3ppcC5jCglbRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQl06IEFkZGluZyBzdXBwb3J0IGZvciBzeXN0ZW0gemxpYgoJaW5zdGFsbGF0aW9ucyBpZiBhdmFpbGFibGUgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSAoVW5peCBvbmx5KS4KCjIwMDItMTEtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfY2hhcnNldF9sb2FkLCBjZmZfZW5jb2RpbmdfbG9hZCk6IE1vZGlmaWVkCgljaGFyc2V0IGxvYWRlciB0byBhY2NlcHQgcHJlLWRlZmluZWQgY2hhcnNldHMsIGV2ZW4gd2hlbiB0aGUgZm9udAoJY29udGFpbnMgZmV3ZXIgZ2x5cGhzLiAgQWxzbyBlbmZvcmNlZCBtb3JlIGNoZWNrcyB0byBlbnN1cmUgdGhhdCB3ZQoJbmV2ZXIgb3ZlcmZsb3cgdGhlIGNoYXJhY3RlciBjb2RlcyBhcnJheSBpbiB0aGUgZW5jb2RpbmcuCgoyMDAyLTExLTIyICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGVkIHRvIGxhdGVzdCBPcGVuVHlwZQoJc3BlY2lmaWNhdGlvbi4KCjIwMDItMTEtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4zIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMTEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNzYml0LmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQKCWNhdXNlZCBwcm9ibGVtcyB3aXRoIGVtYmVkZGVkIGJpdG1hcHMuCgoJKiBzcmMvb3RsYXlvdXQvb3RsYXlvdXQuaCwgc3JjL290bHlhb3V0L290bGNvbmYuaCwKCXNyYy9vdGxheW91dC9vdGxnc3ViLmMsIHNyYy9vdGxheW91dC9vdGxnc3ViLmgsCglzcmMvb3RsYXlvdXQvb3RscGFyc2UuYywgc3JjL290bGF5b3V0L290bHBhcnNlLmgsCglzcmMvb3RsYXlvdXQvb3RsdXRpbHMuaDogVXBkYXRpbmcgdGhlIE9wZW5UeXBlIExheW91dCBjb2RlLCBhZGRpbmcKCXN1cHBvcnQgZm90IHRoZSBmaXJzdCBHU1VCIGxvb2t1cHMuICBOb3RoaW5nIHRoYXQgcmVhbGx5IGNvbXBpbGVzCglmb3Igbm93IHRob3VnaC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IERpc2FibGVkIHNlcmlmIHN0ZW0KCXdpZHRoIHF1YW50aXphdGlvbi4gIEl0IHByb2R1Y2VzIHNsaWdodGx5IGJldHRlciBzaGFwZXMgdGhvdWdoIHRoaXMKCWlzIG5vdCBkaXN0aW5ndWlzaGFibGUgd2l0aCBtYW55IGZvbnRzLgoJUmVtb3ZlIG90aGVyIGRlYWQgY29kZS4KCgkqIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBTaW1wbGlmaWVkLgoJVXNlICQoRlQyX1NSQ19ESVIpLgoKMjAwMi0xMS0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9MT0FEX1RBUkdFVF9MSUdIVCk6IE5ldyBtYWNyby4KCShGVF9MT0FEX1RBUkdFVCwgRlRfTE9BRF9UQVJHRVRfTU9ERSk6IFVzZSBgJiAxNScgaW5zdGVhZCBvZiBgJiA3Jy4KCjIwMDItMTEtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOiBBZGRlZAoJc3VwcG9ydCBmb3IgdGhlIEZUX0NPTkZJR19PUFRJT05fU1lTVEVNX1pMSUIgb3B0aW9uLCB1c2VkIHRvIHNwZWNpZnkKCXRoZSB1c2Ugb2Ygc3lzdGVtLXdpZGUgemxpYi4KCglOb3RlIHRoYXQgdGhpcyBtYWNybywgYXMgd2VsbCBhcwoJRlRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUiwgaXMgbm90ICN1bmRlZi1lZCBhbnltb3JlLgoJVGhpcyBhbGxvd3MgdGhlIGJ1aWxkIHN5c3RlbSB0byBkZWZpbmUgdGhlbSBkZXBlbmRpbmcgb24gdGhlCgljb25maWd1cmF0aW9uICh0eXBpY2FsbHkgYnkgYWRkaW5nIC1EIGZsYWdzIGF0IGNvbXBpbGUgdGltZSkuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBSZW1vdmVkIGNvbXBpbGVyCgl3YXJuaW5ncyBpbiBvcHRpbWl6ZWQgbW9kZSByZWxhdGl2ZSB0byB0aGUgInZvbGF0aWxlIiBsb2NhbAoJdmFyaWFibGVzLiAgVGhpcyB3YXMgbm90IGEgY29tcGlsZXIgYnVnIGFmdGVyIGFsbCwgYnV0IHRoZSBmYWN0IHRoYXQKCWEgcG9pbnRlciB0byBhIHZvbGF0aWxlIHZhcmlhYmxlIGlzIG5vdCB0aGUgc2FtZSBhcyBhIHZvbGF0aWxlCglwb2ludGVyIHRvIGEgdmFyaWFibGUgOi0pCgoJVGhlIGZpeCB3YXMgdG8gY2hhbmdlCgkgIGB2b2xhdGlsZSBGVF9CeXRlKiBwJwoJaW50bwoJICBgRlRfQnl0ZSogdm9sYXRpbGUgcCcuCgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX3BoeV9mb250X2xvYWQpLCBzcmMvcGZyL3BmcmRyaXZyLmMKCShwZnJfZ2V0X21ldHJpY3MpLCBzcmMvZ3ppcC9pbmZ0cmVlcy5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzIGluCglvcHRpbWl6ZWQgbW9kZXMuCgoJKiBzcmMvZ3ppcC8qLltoY106IE1vZGlmaWVkIG91ciB6bGliIGNvcHkgaW4gb3JkZXIgdG8gcHJldmVudAoJZXhwb3J0aW5nIGFueSB6bGliIGZ1bmN0aW9uIG5hbWVzIG91dHNpZGUgb2YgdGhlIGNvbXBvbmVudC4gIFRoaXMKCXByZXZlbnRzIGxpbmtpbmcgcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMsIHdoZW4gYXBwbGljYXRpb25zIHdhbnQKCXRvIGxpbmsgRnJlZVR5cGUgX2FuZF8gemxpYiB0b2dldGhlci4KCjIwMDItMTEtMDUgIEp1bGl1c3ogIDxqY2hAcHBzLmp1c3NpZXUuZnI+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHBzX3RhYmxlX2FkZCk6IE1vZGlmaWVkIGluY3JlbWVudCBsb29wIGluCglvcmRlciB0byBpbXBsZW1lbnQgZXhwb25lbnRpYWwgYmVoYXZpb3VyLgoKMjAwMi0xMS0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIFBGUi1zcGVjaWZpYyBwdWJsaWMgQVBJLiAgRml4ZWQgdGhlIGtlcm5pbmcgcmV0cmlldmVsIHJvdXRpbmUKCShpdCByZXR1cm5lZCBpbnZhbGlkIHZhbHVlcyB3aGVuIHRoZSBvdXRsaW5lIGFuZCBtZXRyaWNzIHJlc29sdXRpb24KCWRpZmZlcikuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cGZyLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGZyLmg6IE5ldwoJZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BGUl9IKTogTmV3CgltYWNybyBmb3IgcGZyLmguCgoJKiBzcmMvYmFzZS9mdHBmci5jOiBOZXcgZmlsZS4KCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgoJKiBzcmMvcGZyL3BmcmRyaXZyLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUEZSX0guCgkocGZyX2dldF9rZXJuaW5nLCBwZnJfZ2V0X2FkdmFuY2UsIHBmcl9nZXRfbWV0cmljcyk6IE5ldyBmdW5jdGlvbnMuCgkocGZyX3NlcnZpY2VfcmVjKTogTmV3IGZvcm1hdCBpbnRlcmZhY2UuCgkocGZyX2RyaXZlcl9jbGFzcyk6IFVzZSBgcGZyX3NlcnZpY2VfcmVjJy4KCVJlcGxhY2UgYHBmcl9mYWNlX2dldF9rZXJuaW5nJyB3aXRoIGBwZnJfZ2V0X2tlcm5pbmcnLgoJKiBzcmMvcGZyL3Bmcm9ianMuYzogUmVtb3ZlIGRlYWQgY29kZS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChmdF9nbHlwaHNsb3RfY2xlYXIpOiBTbWFsbCBpbnRlcm5hbCBmaXggdG8KCWJldHRlciBzdXBwb3J0IGJpdG1hcC1iYXNlZCBmb250IGZvcm1hdHMuCgoJKiBzcmMvYmFzZS9mdHN5bnRoLmMgKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IEZpeCBoYW5kbGluZyBvZgoJYHNjYWxlJy4KCUZpeCBhcmd1bWVudHMgdG8gYEZUX1ZlY3Rvcl9Gcm9tX1BvbGFyJy4KCjIwMDItMTAtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGQgc3VwcG9ydCBmb3IgYXV0b21hdGljIGhhbmRsaW5nIG9mIGd6aXAtY29tcHJlc3NlZCBQQ0YgZmlsZXMuCgoJKiBzcmMvZ3ppcC8qOiBOZXcgZmlsZXMsIHRha2VuIGZyb20gdGhlIHpsaWIgcGFja2FnZSAoZXhjZXB0CglmdGd6aXAuYykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z3ppcC5oLCBzcmMvZ3ppcC9mdGd6aXAuYzogTmV3IGZpbGVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9HWklQX0gpOiBOZXcgbWFjcm8gZm9yCglgZnRnemlwLmgnLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYzogSW5jbHVkZSBGVF9HWklQX0ggYW5kIEZUX0VSUk9SU19ILgoJKFBDRl9GYWNlX0luaXQpOiBJZiBub3JtYWwgb3BlbiBmYWlscywgdHJ5IHRvIG9wZW4gZ3ppcCBzdHJlYW0uCgkoUENGX0ZhY2VfRG9uZSk6IENsb3NlIGd6aXAgc3RyZWFtLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wY2Z0eXBlcy5oIChQQ0ZfUHVibGljX0ZhY2VSZWMpLAoJc3JjL3BjZi9wY2YuaCAoUENGX0ZhY2VSZWMpOiBBZGQgYGd6aXBfc3RyZWFtJyBhbmQgYGd6aXBfc291cmNlJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fVVNFX1pMSUIpOgoJTmV3IG1hY3JvLgoJKFQxX0NPTkZJR19PUFRJT05fRElTQUJMRV9ISU5URVIsIEZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTCglGVF9DT05GSUdfT1BUSU9OX05PX0NPTlZFTklFTkNFX0ZVTkNTLAoJRlRfQ09ORklHX09QVElPTl9BTFRFUk5BVEVfR0xZUEhfRk9STUFUUyk6IFJlbW92ZWQuCgoJKEZUX0VYUE9SVCwgRlRfRVhQT1JUX0RFRiwgRlRfREVCVUdfTEVWRUxfRVJST1IsCglGVF9ERUJVR19MRVZFTF9UUkFDRSwgRlRfREVCVUdfTUVNT1JZKTogQ29tbWVudCBvdXQgZGVmaW5pdGlvbnMgc28KCXRoYXQgcGxhdGZvcm0gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBvdmVycmlkZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaDogSW5jbHVkZSBGVF9TWVNURU1fSC4KCjIwMDItMTAtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEZyZWVUeXBlIDIuMS4zcmMzIHJlbGVhc2VkLgoKMjAwMi0xMC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUX1BPSU5URVJfVE9fVUxPTkcpOiBOZXcgbWFjcm8uCgkoRlRDX0ZBQ0VfSURfSEFTSCk6IFJld3JpdHRlbiwgdXNpbmcgRlRfUE9JTlRFUl9UT19VTE9ORy4KCjIwMDItMTAtMjIgIEdpdXNlcHBlIEdoaWLyICA8Z2hpYm9AbWFuZHJha2Vzb2Z0LmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRW5jb2RpbmcpOiBGaXggZW50cnkgZm9yIGxhdGluLTIuCgoyMDAyLTEwLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX09wZW5fRmFjZSk6IFVzZSBgY29uc3QnIGZvciBgYXJncycKCShzdWdnZXN0ZWQgYnkgR3JhaGFtKS4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IFVwZGF0ZWQuCgkoZnRfaW5wdXRfc3RyZWFtX25ldyk6IERpdHRvLgoKMjAwMi0xMC0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBzdXBwb3J0IGZvciBlbWJlZGRlZCBiaXRtYXBzIHRvIHRoZSBQRlIgZHJpdmVyLCBhbmQgcmV3cml0aW5nCglpdHMga2VybmluZyBsb2FkZXIvaGFuZGxlciB0byB1c2UgYWxsIGtlcm5pbmcgcGFpcnMgaW4gYSBwaHlzaWNhbAoJZm9udCAoYW5kIG5vdCBqdXN0IHRoZSBmaXJzdCBpdGVtKS4KCgkqIHNyYy9wZnIvcGZyLmM6IEluY2x1ZGUgYHBmcnNiaXQuYycuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyk6IFJld3JpdHRlbi4KCShwZnJfcGh5X2ZvbnRfZG9uZSwgcGZyX3BoeV9mb250X2xvYWQpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ia3MuYzogSW5jbHVkZSBgcGZyc2JpdC5oJy4KCShwZnJfZmFjZV9pbml0KTogSGFuZGxlIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkocGZyX3Nsb3RfbG9hZCk6IExvYWQgZW1iZWRkZWQgYml0bWFwcy4KCShQRlJfS0VSTl9JTkRFWCk6IFJlbW92ZWQuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBSZXdyaXR0ZW4uCgkqIHNyYy9wZnIvcGZyc2JpdC5jLCBzcmMvcGZyL3BmcnNiaXQuaDogTmV3IGZpbGVzLgoJKiBzcmMvcGZyL3BmcnR5cGVzLmggKFBGUl9LZXJuSXRlbVJlYyk6IE5ldyBzdHJ1Y3R1cmUuCgkoUEZSX0tFUk5fSU5ERVgpOiBOZXcgbWFjcm8uCgkoUEZSX1BoeUZvbnRSZWMpOiBBZGQgaXRlbXMgZm9yIGtlcm5pbmcgYW5kIGVtYmVkZGVkIGJpdG1hcHMuCgkqIHNyYy9wZnIvSmFtZmlsZSAoX3NvdXJjZXMpIFtGVDJfTVVMVEldOiBBZGQgYHBmcnNiaXQnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBEb24ndCBsb2FkIGJpdG1hcCBmb250cyBpZgoJRlRfTE9BRF9OT19SRUNVUlNFIGlzIHNldC4KCUxvYWQgZW1iZWRkZWQgYml0bWFwcyBvbmx5IGlmIEZUX0xPQURfTk9fQklUTUFQIGlzbid0IHNldC4KCgkqIHNyYy90b29scy9kb2NtYWtlci9jb250ZW50LnB5LCBzcmMvdG9vbHMvZG9jbWFrZXIvc291cmNlcy5weSwKCXNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IEZpeGluZyBhIGZldyBuYXN0eSBidWdzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IFRoZSB2YWxpZGF0b3IgZm9yIGZvcm1hdCA0CglzdWItdGFibGVzIGlzIG5vdyBjYXBhYmxlIG9mIGRlYWxpbmcgd2l0aCBpbnZhbGlkICJsZW5ndGgiIGZpZWxkcyBhdAoJdGhlIHN0YXJ0IG9mIHRoZSBzdWItdGFibGUuICBUaGlzIGFsbG93cyBmb250cyBsaWtlICJtZ19fX19fXy50dGYiCgkoaS5lLiAgTWFycmlhZ2UpIHRvIHJldHVybiBhY2N1cmF0ZSBjaGFybWFwcy4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDItMTAtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChTVUJQSVhFTFMpOiBBZGQgY2FzdCB0byBgVFBvcycuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoVFJVTkMpOiBBZGQgY2FzdCB0byBgVENvb3JkJy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShUUmFzdGVyKTogVXNlIGBUUG9zJyBmb3IgbWluX2V4LCBtYXhfZXgsIG1pbl9leSwgbWF4X2V5LCBhbmQKCWxhc3RfZXkuCglVcGRhdGUgYWxsIGNhc3RzLgoJKGdyYXlfcmVuZGVyX2xpbmUpOiBGaXggY2FzdHMgZm9yIGBwJyBhbmQgYGZpcnN0Jy4KCjIwMDItMTAtMDIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChiZGZfbG9hZF9mb250KTogQWxsb2NhdGUgdGhlIF9iZGZfcGFyc2VfdAoJc3RydWN0dXJlIHdpdGggRlRfQUxMT0MgaW5zdGVhZCBvZiB1c2luZyB0aGUgc3RhY2suCgoyMDAyLTA5LTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKG51bV9zYml0X3N0cmlrZXMsCgludW1fc2JpdF9zY2FsZXMpOiBVc2UgYEZUX1VMb25nJy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlZCBhY2NvcmRpbmdseS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKHR0X2ZhY2Vfc2V0X3NiaXRfc3RyaWtlKTogRGl0dG8uCgkoZmluZF9zYml0X2ltYWdlKTogUmVtb3ZlIGNhc3QuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeCBjYXN0LgoKMjAwMi0wOS0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbmFtZXMpOiBVc2UgY2FzdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDIpOiBVc2UgbG9uZyBjb25zdGFudC4KCShjb2RlX3RvX2luZGV4NCk6IFVzZSBjYXN0LgoJKGNvZGVfdG9faW5kZXg4XzEyKTogRml4IGNhc3QuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9uZXh0LCB0dF9jbWFwOF9jaGFyX2luZGV4LAoJdHRfY21hcDEyX2NoYXJfaW5kZXgpOiBVc2UgY2FzdCBmb3IgYHJlc3VsdCcuCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFVzZSBjYXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfbmFtZV9lbnRyeV9hc2NpaV9mcm9tX3VjczQpOiBVc2UgY2FzdCBmb3IKCWBjb2RlJy4KCShzZm50X2xvYWRfZmFjZSk6IFVzZSBGVF9JbnQzMiBmb3IgYGZsYWdzJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSwgZ3JheV9yZW5kZXJfbGluZSwKCWdyYXlfY29tcHV0ZV9jYm94LCBncmF5X2NvbnZlcnRfZ2x5cGgsIGdyYXlfcmFzdGVyX3Jlc2V0KTogQWRkIGNhc3RzCgl0byBgVENvb3JkJyBhbmQgYGludCcuCglNb3JlIDE2Yml0IGZpeGVzLgoJcy9GVF9Qb3MvVFBvcy8uCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQWRkIGNhc3RzLgoKMjAwMi0wOS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRwb3N0LmMgKGxvYWRfcG9zdF9uYW1lcywgdHRfZmFjZV9mcmVlX3BzX25hbWVzLAoJdHRfZmFjZV9nZXRfcHNfbmFtZSk6IFJlcGxhY2Ugc3dpdGNoIHN0YXRlbWVudCB3aXRoIGlmIGNsYXVzZXMgdG8KCW1ha2UgaXQgbW9yZSBwb3J0YWJsZS4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfZmFjZV9pbml0KTogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kdWxlLmggKEZUX01vZHVsZV9DbGFzcyk6IFVzZSBgRlRfTG9uZycgZm9yCglgbW9kdWxlX3NpemUnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmggKEZUX0dseXBoX0NsYXNzXyk6IFVzZSBgRlRfTG9uZycgZm9yCglgZ2x5cGhfc2l6ZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVuZGVyX0dseXBoKTogQ2hhbmdlIHNlY29uZCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgkoRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogQ2hhbmdlIHRoaXJkIHBhcmFtZXRlciB0bwoJYEZUX1JlbmRlcl9Nb2RlJy4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBDaGFuZ2Ugc2Vjb25kIHBhcmFtZXRlcgoJdG8gYEZUX1JlbmRlcl9Nb2RlJy4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IENoYW5nZSB0aGlyZCBwYXJhbWV0ZXIKCXRvIGBGVF9SZW5kZXJfTW9kZScuCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsCglmdF9zbW9vdGhfcmVuZGVyX2xjZF92KTogRGl0dG8uCgkoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogQ2hhbmdlIHRoaXJkIGFuZCBmaWZ0aCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0Z2x5cGguaDogVXBkYXRlZC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoTG9hZF9HbHlwaCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfR2x5cGhfTG9hZCksIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKSwKCXNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpLCBzcmMvdDQyL3Q0Mm9ianMuYwoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCksIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpOiBDaGFuZ2UKCWZvdXJ0aCBwYXJhbWV0ZXIgdG8gYEZUX0ludDMyJy4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogQWRkIHR3byBtaXNzaW5nIHBhcmFtZXRlcnMKCWFuZCBkZWNsYXJlIHRoZW0gYXMgdW51c2VkLgoKCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfUGFyc2VyKTogVXNlIEZUX0xvbmcgZm9yIGBwb3N0c2NyaXB0X2xlbicuCgoJKiBzcmMvcHNuYW1lcy9wc25hbWVzLmggKFBTX1VuaWNvZGVfVmFsdWVfRnVuYyk6IENoYW5nZSByZXR1cm4KCXZhbHVlIHRvIEZUX1VJbnQzMi4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZV92YWx1ZSwgcHNfYnVpbGRfdW5pY29kZV90YWJsZSk6CglVcGRhdGVkIGFjY29yZGluZ2x5LgoKMjAwMi0wOS0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoR2V0X0tlcm5pbmcpOiBVc2UgRlRfTG9uZyBmb3IgYG1pZGRsZScuCgkoY2ZmX2dldF9nbHlwaF9uYW1lKTogVXNlIGNhc3QgZm9yIHJlc3VsdCBvZiBmdF9zdHJsZW4uCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX3JlYWwpOiBVc2VyIGNhc3QgZm9yIGFzc2lnbmluZwoJYGV4cCcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzKTogVXNlIEZUX1VMb25nIGZvcgoJc29tZSBsb2NhbCB2YXJpYWJsZXMuCgkoY2ZmX2NoYXJzZXRfbG9hZCwgY2ZmX2VuY29kaW5nX2xvYWQpOiBVc2UgY2FzdHMgdG8gRlRfVUludCBmb3Igc29tZQoJc3dpdGNoIHN0YXRlbWVudHMuCgkoY2ZmX2ZvbnRfbG9hZCk6IFVzZSBjYXN0IGluIGNhbGwgdG8gQ0ZGX0xvYWRfRkRfU2VsZWN0LgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX3NpemVfaW5pdCk6IFVzZSBtb3JlIGNhc3RzLgoJKGNmZl9mYWNlX2luaXQpOiBVc2UgRlRfSW50MzIgZm9yIGBmbGFncycuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX29wZXJhdG9yX3NlYWMpOiBVc2UgY2FzdCBmb3IgYXNzaWduaW5nCglgYWR4JyBhbmQgYGFkeScuCgkoY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgRlRfVUxvbmcgZm9yIHRoaXJkIHBhcmFtZXRlci4KCVVzZSBtb3JlIGNhc3RzLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pY29kZV9pbml0KTogVXNlIGNhc3QgZm9yIGBjb3VudCcuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBVc2UgRlRfVUxvbmcgZm9yIGBsZW4nLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogQWRkIG1pc3NpbmcgY2FzdCBmb3IKCWBjaWRfZ2V0X29mZnNldCcuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncykgPDE4PjogVXNlCgljYXN0IGZvciBgbnVtX3BvaW50cycuCgkodDFfZGVjb2Rlcl9pbml0KTogVXNlIGNhc3QgZm9yIGFzc2lnbmluZyBgZGVjb2Rlci0+bnVtX2dseXBocycuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBVc2UgRlRfSW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX1Nsb3RfTG9hZEZ1bmMpOiBVc2UKCWBGVF9JbnQzMicgZm9yIGZvdXJ0aCBwYXJhbWV0ZXIuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBVc2UgY2FzdCBmb3IgY2FsbGluZwoJY2xhenotPmluaXRfZmFjZS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoU2V0X0hpZ2hfUHJlY2lzaW9uKTogVXNlIGAxJyBpbnN0ZWFkIG9mCglgMUwnLgoJKEZpbmFsaXplX1Byb2ZpbGVfVGFibGUsIExpbmVfVXAsIGZ0X2JsYWNrX2luaXQpOiBVc2UgY2FzdHMuCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IERpdHRvLgoKCSogc3JjL3NmbnQvc2ZudF9kaXJfY2hlY2s6IENvbXBhcmUgYG1hZ2ljJyB3aXRoIHVuc2lnbmVkIGxvbmcKCWNvbnN0YW50LgoKMjAwMi0wOS0yNiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkLgoKMjAwMi0wOS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSElOVF9NRVRSSUNTKTogRGlzYWJsaW5nIG1ldHJpY3MKCWhpbnRpbmcgaW4gdGhlIGF1dG8taGludGVyLiAgVGhpcyBwcm9kdWNlcyBtdWNoIGJldHRlciBhbnRpLWFsaWFzZWQKCXRleHQuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIHRoZSBjaGFuZ2VzIGRvY3VtZW50YXRpb24uCgoyMDAyLTA5LTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUsIHR0X2NtYXA0X2NoYXJfaW5kZXgsCgl0dF9jbWFwNF9jaGFyX25leHQpOiBBZGRlZCBzdXBwb3J0IGZvciBvcGVuc19fXy50dGYgKGl0IGNvbnRhaW5zIGEKCWNoYXJtYXAgdGhhdCB1c2VzIG9mZnNldD0weEZGRkZVIGluc3RlYWQgb2YgMHgwMDAwIHRvIGluZGljYXRlIGEKCW1pc3NpbmcgZ2x5cGgpLgoKMjAwMi0wOS0yMSAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChMb2FkX0dseXBoKTogRm91cnRoIHBhcmFtZXRlciBtdXN0IGJlCglGVF9JbnQzMi4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuaCAoVFRfTG9hZF9HbHlwaCk6CglEaXR0by4KCjIwMDItMDktMTkgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJTW9yZSAxNmJpdCBmaXhlcy4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChzb3J0X3ZhbHVlcyk6IFVzZSBGVF9Qb3MgZm9yIGBzd2FwJy4KCShhaF9oaW50ZXJfY29tcHV0ZV93aWR0aHMpOiBVc2UgRlRfUG9zIGZvciBgZGlzdCcuCglVc2UgQUhfTUFYX1dJRFRIUy4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9zY2FsZV9ibHVlX2VkZ2VzKTogVXNlIEZUX1BvcwoJZm9yIGBkZWx0YScuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogUmVwbGFjZSBzb21lIGludHMgd2l0aCBGVF9JbnQgYW5kCglGVF9Qb3MuCgkoYWhfdGVzdF9leHRyZW1hKTogQ2xlYW4gdXAgY29kZS4KCShhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgNCBGVF9JbnQgdmFyaWFibGVzIGluc3RlYWQgb2YgRlRfQkJveCB0bwoJaG9sZCBpbmRpY2VzLgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9TZWdtZW50UmVjKTogQ2hhbmdlIHR5cGUgb2YgYHNjb3JlJwoJdG8gRlRfUG9zLgoKMjAwMi0wOS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoyMDAyLTA5LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTGlicmFyeV9WZXJzaW9uKTogQnVnZml4LgoKCSogRnJlZVR5cGUgMi4xLjNyYzIgKHJlbGVhc2UgY2FuZGlkYXRlIDIpIGlzIHJlbGVhc2VkIQoKMjAwMi0wOS0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNpby5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLCBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0aW5nCgl0aGUgaW4tc291cmNlIGRvY3VtZW50YXRpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBVcGRhdGluZyB0aGUgSFRNTCBmb3JtYXR0ZXIgaW4gdGhlCglEb2NNYWtlciB0b29sLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBSZW1vdmVkLgoKMjAwMi0wOS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1vcmUgMTZiaXQgZml4ZXMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3IKCXNlY29uZCBwYXJhbWV0ZXIuCgoyMDAyLTA5LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJMTZiaXQgZml4ZXMgZnJvbSBXb2xmZ2FuZyBEb21y9nNlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaCAoVDFfUGFyc2VyUmVjKTogQ2hhbmdlIHR5cGUgb2YgYGJhc2VfbGVuJwoJYW5kIGBwcml2YXRlX2xlbicgdG8gRlRfTG9uZy4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IFJlbW92ZSBjYXN0IGZvcgoJYHByaXZhdGVfbGVuJy4KCSogc3JjL3R5cGUxL3QxbG9hZC5jOiBVc2UgRlRfSW50IGNhc3QgZm9yIG1vc3QgY2FsbHMgb2YgVDFfVG9JbnQuCglVc2UgRlRfUHRyRGlzdCB3aGVyZSBhcHByb3ByaWF0ZS4KCShwYXJzZV9lbmNvZGluZyk6IFVzZSBGVF9Mb25nIGZvciBgY291bnQnIGFuZCBgbicuCgkocmVhZF9iaW5hcnlfZGF0YSk6IFVzZSBGVF9Mb25nKiBmb3Igc2Vjb25kIHBhcmFtZXRlci4KCSogc3JjL3R5cGUxL3QxYWZtLmMgKGFmbV9hdG9pbmRleCk6IFVzZSBGVF9QdHJEaXN0LgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgbGFiZWwuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwMi0wOS0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2luZyBmdGdyYXlzLmMgY29tcGlsZSBzdGFuZC1hbG9uZSBhZ2Fpbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBJbmNsdWRlIGZ0MmJ1aWxkLmggb25seSBpZiBfU1RBTkRBTE9ORV8KCWlzbid0IGRlZmluZWQuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIFtfU1RBTkRBTE9ORV9dOiBEZWZpbmUgZnRfbWVtc2V0LAoJRlRfQkVHSU5fSEVBREVSLCBGVF9FTkRfSEVBREVSLgoJKEZUX01FTV9aRVJPKTogRGVmaW5lLgoJKFRSYXN0ZXIpIFtHUkFZU19VU0VfR0FNTUFdOiBVc2UgYHVuc2lnbmVkIGNoYXInIGluc3RlYWQgb2YgRlRfQnl0ZS4KCShncmF5X3JlbmRlcl9zcGFuLCBncmF5X2luaXRfZ2FtbWEpOiBEb24ndCB1c2UgYEZUX1VJbnQnLgoJRG9uJ3QgY2FzdCB3aXRoIGBGVF9CeXRlJy4KCShncmF5c19pbml0X2dhbW1hKTogRG9uJ3QgdXNlIGBGVF9VSW50Jy4KCjIwMDItMDktMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9BZGRfRGVmYXVsdF9Nb2R1bGVzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRmFjZV9Eb25lKTogSW1wcm92ZSB0cmFjaW5nIG1lc3NhZ2UuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9NT0RVTEVTKTogSW5jcmVhc2VkCgl0byAzMi4KCjIwMDItMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYyAodmVyc2lvbl9pbmZvKTogU2V0IHRvIDk6MjozLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoJKiBkb2NzL1ZFUlNJT04uRExMOiBVcGRhdGVkLgoKMjAwMi0wOS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfZ2x5cGhfZmluZF9zdHJvbmdfcG9pbnRzKSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEFkZGluZyBmaXgKCXRvIHByZXZlbnQgc2VnIGZhdWx0IHdoZW4gaGludHMgYXJlIHByb3ZpZGVkIGluIGFuIGVtcHR5IGdseXBoLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmkgKEdFTl9DQUNIRV9MT09LVVApIFtGVF9ERUJVR19MRVZFTF9FUlJPUl06CglSZW1vdmVkIGNvbmRpdGlvbmFsIGNvZGUuICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb21waWxhdGlvbiBpbiBkZWJ1ZyBtb2RlIG9mIHRlbXBsYXRlIGluc3RhbnRpYXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogUmVtb3ZlZCBpbmNvcnJlY3QgInpmdF8iIGRlZmluaXRpb25zCglhbmQgdXBkYXRlZCBjb25zdGFudHMgZG9jdW1lbnRhdGlvbiBjb21tZW50cy4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlcl9ydW4pOiBGaXhlZCB0aGUgQ0ZGIHRhYmxlIGxvYWRlci4KCUl0IGRpZG4ndCBhY2NlcHQgZW1wdHkgYXJyYXlzLCBhbmQgdGhpcyBwcmV2ZW50ZWQgdGhlIGxvYWRpbmcgb2YKCWNlcnRhaW4gZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0ZhY2VSZWMpOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uCgljb21tZW50LiAgVGhlICJkZXNjZW5kZXIiIHZhbHVlIGlzIGFsd2F5cyAqbmVnYXRpdmUqLCBub3QgcG9zaXRpdmUuCgoyMDAyLTA5LTA5ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HbHlwaF9Mb2FkKTogRml4aW5nIGluY29ycmVjdCBjb21wdXRhdGlvbgoJb2YgYml0bWFwIG1ldHJpY3MuCgoyMDAyLTA5LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVmFyaW91cyB1cGRhdGVzIHRvIGNvcnJlY3RseSBzdXBwb3J0IHN1Yi1waXhlbCByZW5kZXJpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGQgdHdvIHJlbmRlcmVycyBmb3IgTENELgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyX2xjZCwKCWZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOiBTZXQgRlRfUElYRUxfTU9ERV9MQ0QgYW5kCglGVF9QSVhFTF9NT0RFX0xDRF9WLCByZXNwZWN0aXZlbHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2ltYWdlLmggKEZUQ19JbWFnZVR5cGVSZWMpOiBOZXcKCXN0cnVjdHVyZS4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JbWFnZURlc2MpOiBSZW1vdmVkLgoJKEZUQ19JbWFnZUNhY2hlX0xvb2t1cCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgbm93IG9mIHR5cGUKCWBGVENfSW1hZ2VUeXBlJy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoJKEZUQ19JTUFHRV9ERVNDX0NPTVBBUkUpOiBVcGRhdGVkIGFuZCByZW5hbWVkIHRvLi4uCgkoRlRDX0lNQUdFX1RZUEVfQ09NUEFSRSk6IFRoaXMuCgkoRlRDX0lNQUdFX0RFU0NfSEFTSCk6IFVwZGF0ZWQgYW5kIHJlbmFtZWQgdG8uLi4KCShGVENfSU1BR0VfVFlQRV9IQVNIKTogVGhpcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCAoRlRDX1NCaXRSZWMpOiBGaWVsZCBgbnVtX2dyYXlzJwoJcmVwbGFjZWQgd2l0aCBgbWF4X2dyYXlzJy4KCWBwaXRjaCcgaXMgbm93IEZUX1Nob3J0LgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogU2Vjb25kIHBhcmFtZXRlciBpcyBub3cgb2YgdHlwZQoJYEZUQ19JbWFnZVR5cGUnLgoJVXBkYXRlZCBhbGwgdXNlcnMuCgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlUXVlcnlSZWMsIEZUQ19JbWFnZUZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19pbWFnZV9ub2RlX2luaXQpOiBVcGRhdGVkLgoJTW92ZWQgY29kZSB0byBjb252ZXJ0IHR5cGUgZmxhZ3MgdG8gbG9hZCBmbGFncyB0by4uLgoJKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoJKGZ0Y19pbWFnZV9mYW1pbHlfaW5pdCk6IFVwZGF0ZWQuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChGVENfU0JpdFF1ZXJ5UmVjLCBGVENfU0JpdEZhbWlseVJlYyk6CglVcGRhdGVkLgoJKGZ0Y19zYml0X25vZGVfbG9hZCk6IFVwZGF0ZWQuCglNb3ZlZCBjb2RlIHRvIGNvbnZlcnQgdHlwZSBmbGFncyB0byBsb2FkIGZsYWdzIHRvLi4uCgkoRlRDX1NCaXRDYWNoZV9Mb29rdXApOiBUaGlzIGZ1bmN0aW9uLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyUmVjKTogUmVwbGFjZSBgbm9fKl9oaW50cycgd2l0aAoJYGRvXypfc25hcHBpbmcnLgoJVXBkYXRlIGFsbCB1c2VycyAod2l0aCBuZWdhdGlvbikuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfY29tcHV0ZV9zdGVtX3dpZHRoKTogRml4IHRocmVzaG9sZCBmb3IKCWBkaXN0JyBmb3IgYGRlbHRhJyA8IDQwLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBSZXBsYWNlIGBub18qX2hpbnRzJyB3aXRoCglgZG9fKl9zbmFwcGluZycuCglVcGRhdGUgYWxsIHVzZXJzICh3aXRoIG5lZ2F0aW9uKS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZGltZW5zaW9uX3F1YW50aXplX2xlbik6IE5ldwoJZnVuY3Rpb24uCgkocHNoM19oaW50X2FsaWduKTogVXNlIGl0LgoJSW1wcm92ZSBoaW50aW5nIGNvZGUuCglbU1RST05HRVJdOiBSZW1vdmVkLgoJKFNUUk9OR0VSKTogUmVtb3ZlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfU2V0X0hpbnRfRmxhZ3MsIEZUX0hJTlRfKik6CglSZW1vdmVkLgoKMjAwMi0wOS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9TaXplX0luaXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfaW5pdCk6IFRoaXMuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfQnVpbGRlcl9BZGRfUG9pbnQxKTogUmVuYW1lZCB0by4uLgoJKHQxX2J1aWxkZXJfYWRkX3BvaW50MSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2hpbnRfYWxpZ24pOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBEaXR0by4KCjIwMDItMDktMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQ29ycmVjdGVkIHRoZSBkZWZpbml0aW9uIG9mCglmdF9lbmNvZGluZ19zeW1ib2wgdG8gYmUgRlRfRU5DT0RJTkdfTVNfU1lNQk9MIChpbnN0ZWFkIG9mCgl0aGUgZXJyb25lb3VzIEZUX0VOQ09ESU5HX1NZTUJPTCkuCgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiAoZGF0YWRpcik6IEluaXRpYWxpemUgaXQgKHRoYW5rcyB0bwoJQW50aG9ueSBGb2spLgoKMjAwMi0wOC0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNsaWdodCBtb2RpZmljYXRpb24gdG8gdGhlIFBvc3RzY3JpcHQgaGludGVyIHRvIHNsaWdodGx5IGluY3JlYXNlCgl0aGUgY29udHJhc3Qgb2Ygc21vb3RoIGhpbnRpbmcuICBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byB3aGF0IHRoZQoJYXV0by1oaW50ZXIgZG9lcyB3aGVuIGl0IGNvbWVzIHRvIHN0ZW0gd2lkdGggY29tcHV0YXRpb25zLiAgSG93ZXZlciwKCWl0IHByb2R1Y2VzIGJldHRlciByZXN1bHRzIHdpdGggd2VsbC1oaW50ZWQgZm9udHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJfRnVuY3NSZWMpOiBBZGQgaGludAoJbW9kZSB0byBgaW5pdCcgbWVtYmVyIGZ1bmN0aW9uLgoJKFQxX0RlY29kZXJSZWMpOiBBZGQgaGludCBtb2RlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMgKFQxX0hpbnRzX0FwcGx5RnVuYywKCVQyX0hpbnRzX0FwcGx5RnVuYyk6IFBhc3MgYGhpbnRfbW9kZScsIG5vdCBgaGludF9mbGFncycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jICh0MV9kZWNvZGVyX2luaXQpOiBBZGQgaGludCBtb2RlIGFyZ3VtZW50LgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogUGFzcyBoaW50IG1vZGUsIG5vdAoJaGludCBmbGFncy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogRGl0dG8uCgkoU1RST05HRVIpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduLCBwc2gzX2hpbnRfdGFibGVfYWxpZ25faGludHMpOiBQYXNzIGBnbHlwaCcgaW5zdGVhZAoJb2YgYGhpbnRfZmxhZ3MnLgoJSW1wbGVtZW50IGFubm91bmNlZCBjaGFuZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19HbHlwaFJlYyk6IEFkZCBmbGFncyB0byBjb250cm9sCgl2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBoaW50cyBhbmQgc25hcHBpbmcuCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIHRoZSAyLjEuMyByZWxlYXNlLgoKMjAwMi0wOC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogTWFzc2l2ZSByZS1mb3JtYXR0aW5nIGNoYW5nZXMgdG8gbWFueSwgbWFueSBzb3VyY2UgZmlsZXMuICBJIGRvbid0Cgl3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZS4gIFRoZSBvcGVyYXRpb25zIHBlcmZvcm1lZCB3ZXJlIGFsbAoJbG9naWNhbCB0cmFuc2Zvcm1hdGlvbnMgb2YgdGhlIHNvdXJjZXM6CgoJLSB0cnlpbmcgdG8gY29udmVydCBhbGwgZW51bXMgYW5kIGNvbnN0YW50cyB0byBDQVBJVEFMSVpFRF9TVFlMRSwKCSAgI3dpdGggZGVmaW5lIGRlZmluaXRpb25zIGxpa2UKCgkgICAgI2RlZmluZSBteV9vbGRfY29uc3RhbnRzICAgTVlfTkVXX0NPTlNUQU5UCgoJLSBiaWcsIGJpZyB1cGRhdGUgb2YgdGhlIGRvY3VtZW50YXRpb24gY29tbWVudHMKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgc3JjL2Jhc2UvZnRvYmpzLmMsCglzcmMvc21vb3RoL2Z0c21vb3RoLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBBZGRpbmcgc3VwcG9ydAoJZm9yIExDRC1vcHRpbWl6ZWQgcmVuZGVyaW5nIHRob3VnaCB0aGUgbmV3IGNvbnN0YW50cy9lbnVtczoKCgkgIEZUX1JFTkRFUl9NT0RFX0xDRCwgRlRfUkVOREVSX01PREVfTENEX1YKCSAgRlRfUElYRUxfTU9ERV9MQ0QsICBGVF9QSVhFTF9NT0RFX0xDRF9WCgoJVGhpcyBpcyBzdGlsbCB3b3JrIGluIHByb2dyZXNzLCBkb24ndCBleHBlY3QgZXZlcnl0aGluZyB0byB3b3JrCgljb3JyZWN0bHkgdGhvdWdoIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KCgkqIEFkZGluZyBuZXcgRlRfTE9BRF9YWFggZmxhZ3MsIHVzZWQgdG8gc3BlY2lmeSBib3RoIGhpbnRpbmcgYW5kCglyZW5kZXJpbmcgdGFyZ2V0czoKCgkgIEZUX0xPQURfVEFSR0VUX05PUk1BTCA6OiBhbnRpLWFsaWFzZWQgaGludGluZyAmIHJlbmRlcmluZwoJICBGVF9MT0FEX1RBUkdFVF9NT05PICAgOjogbW9ub2Nocm9tZSBiaXRtYXBzCgkgIEZUX0xPQURfVEFSR0VUX0xDRCAgICA6OiBob3Jpem9udGFsIFJHQi9CR1IgZGVjaW1hdGVkCgkgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50aW5nICYgcmVuZGVyaW5nCgkgIEZUX0xPQURfVEFSR0VUX0xDRF9WICA6OiB2ZXJ0aWNhbCBSR0IvQkdSIGRlY2ltYXRlZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludGluZyAmIHJlbmRlcmluZwoKCU5vdGUgdGhhdCBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgaXMgMCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGVmYXVsdAoJYmVoYXZpb3VyIG9mIHRoZSBmb250IGVuZ2luZSBpcyBfdW5jaGFuZ2VkXy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvX0Z1bmMpOiBSZW5hbWVkIHRvLi4uCgkoRlRfT3V0bGluZV97TW92ZSxMaW5lLENvbmljLEN1YmljfVRvRnVuYyk6IFRoaXMuCgkoRlRfUmFzdGVyX1NwYW5fRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfU3BhbkZ1bmMpOiBUaGlzLgoJKEZUX1Jhc3Rlcl97TmV3LERvbmUsUmVzZXQsU2V0X01vZGUsUmVuZGVyfV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShGVF9SYXN0ZXJfe05ldyxEb25lLFJlc2V0LFNldE1vZGUsUmVuZGVyfUZ1bmN9OiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0cmVuZGVyLmgKCShGVF9HbHlwaF97SW5pdCxEb25lLFRyYW5zZm9ybSxCQm94LENvcHksUHJlcGFyZX1fRnVuYyk6IFJlbmFtZWQKCXRvIC4uLgoJKEZUX0dseXBoX3tJbml0LERvbmUsVHJhbnNmb3JtLEdldEJCb3gsQ29weSxQcmVwYXJlfUZ1bmMpOiBUaGlzLgoJKEZUUmVuZGVyZXJfe3JlbmRlcix0cmFuc2Zvcm0sZ2V0Q0JveCxzZXRNb2RlfSk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfUmVuZGVyZXJfe1JlbmRlckZ1bmMsVHJhbnNmb3JtRnVuYyxHZXRDQm94RnVuYyxTZXRlTW9kZUZ1bmN9KToKCVRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX1BvaW50LCBBSF9TZWdtZW50LCBBSF9FZGdlLCBBSF9HbG9iYWxzLAoJQUhfRmFjZV9HbG9iYWxzLCBBSF9PdXRsaW5lLCBBSF9IaW50ZXIpOiBUaGVzZSB0eXBlZGVmcyBhcmUgbm93Cglwb2ludGVycyB0byB0aGUgY29ycmVzcG9uZGluZyBgKlJlYycgc3RydWN0dXJlcy4gIEFsbCBzb3VyY2UgZmlsZXMKCWhhdmUgYmVlbiB1cGRhdGVkIGFjY29yZGluZ2x5LgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZGVjb2Rlcl9pbml0KTogQWRkIGhpbnQgbW9kZSBhcyBwYXJhbWV0ZXIuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0RlY29kZXIpOiBBZGQgYGhpbnRfbW9kZScgZWxlbWVudC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2ZhY2VfY29tcHV0ZV9tYXhfYWR2YW5jZSk6IFRoaXMuCgkoQ0lEX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3Nsb3RfbG9hZF9nbHlwaCk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChDSURfT3Blbl9GYWNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX29wZW4pOiBUaGlzLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0dseXBoU2xvdF97RG9uZSxJbml0fSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfc2xvdF97ZG9uZSxpbml0fSk6IFRoaXMuCgkoQ0lEX1NpemVfe0dldF9HbG9iYWxzX0Z1bmNzLERvbmUsUmVzZXQpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3NpemVfe2dldF9nbG9iYWxzX2Z1bmNzLGRvbmUscmVzZXQpOiBUaGlzLgoJKENJRF9GYWNlX3tEb25lLEluaXR9KTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX3tkb25lLGluaXR9KTogVGhpcy4KCShDSURfRHJpdmVyX3tEb25lLEluaXR9OiBSZW5hbWVkIHRvLi4uCgkoY2lkX2RyaXZlcl97ZG9uZSxpbml0fTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jIChDSURfe05ldyxEb25lfV9QYXJzZXIpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl97bmV3LGRvbmV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRwYXJzZS5oIChDSURfU2tpcF97U3BhY2VzLEFscGhhfSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX3NraXBfe3NwYWNlcyxhbHBoYX0pOiBUaGlzLgoJKENJRF9Ub3tJbnQsRml4ZWQsQ29vcmRBcnJheSxGaXhlZEFycmF5LFRva2VuLFRva2VuQXJyYXl9KTogUmVuYW1lZAoJdG8uLi4KCShjaWRfcGFyc2VyX3RvX3tpbnQsZml4ZWQsY29vcmRfYXJyYXksZml4ZWRfYXJyYXksdG9rZW4sdG9rZW5fYXJyYXl9KToKCVRoaXMuCgkoQ0lEX0xvYWRfe0ZpZWxkLEZpZWxkX1RhYmxlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfbG9hZF97ZmllbGQsZmllbGRfdGFibGV9KTogVGhpcy4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDSURfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZ2V0X2ludGVyZmFjZSk6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfKik6IFJlbmFtZWQgdG8uLi4KCShwc190YWJsZV8qKTogVGhpcy4KCShUMV9CdWlsZGVyXyopOiBSZW5hbWVkIHRvLi4uCgkodDFfYnVpbGRlcl8qKTogVGhpcy4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfKik6IFJlbmFtZWQgdG8uLi4KCSh0MV9kZWNvZGVyXyopOiBUaGlzLgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfKik6IFJlbmFtZWQgdG8uLi4KCShwc18qKTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIgKFNGTlRfR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShzZm50X2dldF9pbnRlcmZhY2UpOiBUaGlzLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF8qKTogUmVuYW1lZCB0by4uLgoJKHNmbnRfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChUVF9DaGFyTWFwX3tMb2FkLEZyZWV9KTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2Vfe2xvYWQsZnJlZX1fY2hhcm1hcCk6IFRoaXMuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9idWlsZF9jbWFwcyk6IFRoaXMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0cG9zdC5jIChUVF9Qb3N0X0RlZmF1bHRfTmFtZXMpOiBSZW5hbWVkIHRvLi4uCgkodHRfcG9zdF9kZWZhdWx0X25hbWVzKTogVGhpcy4KCShMb2FkXyopOiBSZW5hbWVkIHRvLi4uCgkobG9hZF8qKTogVGhpcy4KCShUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChUVF8qKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfKik6IFRoaXMuCgkoe0ZpbmQsTG9hZCxDcm9wfV8qKTogUmVuYW1lZCB0by4uLgoJKHtmaW5kLGxvYWQsY3JvcH1fKik6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcik6IFJlbmFtZWQgdG8uLi4KCShmdF9zbW9vdGhfcmVuZGVyX2dlbmVyaWMpOiBUaGlzLgoJTWFrZSBmdW5jdGlvbiBtb3JlIGdlbmVyaWMgYnkgYWRkaW5nIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYWxpbmcKCWZhY3RvcnMuCgkoZnRfc21vb3RoX3JlbmRlciwgZnRfc21vb3RoX3JlbmRlcl9sY2QsIGZ0X3Ntb290aF9yZW5kZXJfbGNkX3YpOgoJTmV3IGZ1bmN0aW9ucy4KCgkoZnRfc21vb3RoX2xvY2RfcmVuZGVyZXJfY2xhc3MsIGZ0X3Ntb290aF9sY2R2X3JlbmRlcmVyX2NsYXNzKTogTmV3CgljbGFzc2VzLgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF97RG9uZSxOZXd9X0dseXBoWm9uZSk6IFJlbmFtZWQgdG8uLi4KCSh0dF9nbHlwaHpvbmVfe2RvbmUsbmV3fSk6IFRoaXMuCgkoVFRfe0ZhY2UsU2l6ZSxEcml2ZXJ9XyopOiBSZW5hbWVkIHRvLi4uCgkodHRfe2ZhY2Usc2l6ZSxkcml2ZXJ9XyopOiBUaGlzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRwbG9hZC5jIChUVF9Mb2FkX0xvY2F0aW9ucyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfbG9jYSk6IFRoaXMuCgkoVFRfTG9hZF9Qcm9ncmFtcyk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX2xvYWRfZnBnbSk6IFRoaXMuCgkoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoKMjAwMi0wOC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9WRVJTSU9OLkRMTDogTmV3IGZpbGUuCgoyMDAyLTA4LTIzICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBJbmNyZW1lbnRhbCBmb250cyAoYWN0dWFsbHkgbm90CglpbmNyZW1lbnRhbCBpbiB0aGUgY2FzZSBvZiBDRkYgYnV0IGp1c3QgdXNpbmcgY2FsbGJhY2tzIHRvIGdldCBnbHlwaAoJcmVjaXBlcykgcGFzcyB0aGUgY2hhcmFjdGVyIGNvZGUsIG5vdCB0aGUgZ2x5cGggaW5kZXgsIHRvIHRoZQoJZ2V0X2dseXBoX2RhdGEgZnVuY3Rpb247IHRoZXkgaGF2ZSBubyB2YWxpZCBjaGFyc2V0IHRhYmxlLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9mb250X2xvYWQpOiBSZW1vdmVkIHNwZWNpYWwgY2FzZXMgZm9yCglGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMLCB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeTsgQ0ZGCglmb250cyBwcm92aWRlZCB2aWEgdGhlIGluY3JlbWVudGFsIGludGVyZmFjZSBub3cgaGF2ZSB0byBjb25mb3JtCgltb3JlIGNsb3NlbHkgdG8gdGhlIENGRiBmb250IGZvcm1hdC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oIChjZmZfZm9udF9sb2FkKTogUmVtb3ZlZCBhcmd1bWVudCBub3cgdW5uZWVkZWQuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IENoYW5nZWQgY2FsbCB0byBjZmZfZm9udF9sb2FkCgl0byBjb25mb3JtIHdpdGggbmV3IHNpZ25hdHVyZS4KCjIwMDItMDgtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2JqZWN0LmMsIHNyYy9iYXNlL2Z0c3ludGguYywgc3JjL2Jhc2UvZnRzdHJva2VyLmMsCglzcmMvYmRmL2JkZmRyaXZyLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9jb21wdXRlX2luZmxlY3Rpb25zLAoJcHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEsIHBzaDNfaGludF90YWJsZV9maW5kX3N0cm9uZ19wb2ludCk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MgYW5kIHJlc29sdmUgc2hhZG93aW5nIG9mIGxvY2FsIHZhcmlhYmxlcy4KCjIwMDItMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglUaGUgYXV0b21hdGljIGFuZCBQb3N0c2NyaXB0IGhpbnRlciBub3cgYXV0b21hdGljYWxseSBkZXRlY3QKCWluZmxlY3Rpb24gcG9pbnRzIGluIGdseXBoIG91dGxpbmVzIGFuZCB0cmVhdHMgdGhlbSBzcGVjaWFsbHkuICBUaGlzCglpcyB2ZXJ5IHVzZWZ1bCB0byBwcmV2ZW50IG5hc3R5IGVmZmVjdCBsaWtlIHRoZSBkaXNhcHBlYXJpbmcKCWRpYWdvbmFscyBvZiAiUyIgYW5kICJzIiBpbiBtYW55LCBtYW55IGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoYWhfZmxhZ19pbmZsZWN0aW9uKTogTmV3IG1hY3JvLgoJKiBzcmMvYXV0b2hpbnQvYWhhbmdsZXMuYyAoYWhfYW5nbGVfZGlmZik6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2F1dG9oaW50L2FoYW5nbGVzLmg6IFVwZGF0ZWQuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9pbmZsZWN0aW9ucyk6IE5ldwoJZnVuY3Rpb24uCgkoYWhfb3V0bGluZV9kZXRlY3RfZmVhdHVyZXMpOiBVc2UgaXQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3N0cm9uZ19wb2ludHMpCglbIUFIX09QVElPTl9OT19XRUFLX0lOVEVSUE9MQVRJT05dOiBIYW5kbGUgaW5mbGVjdGlvbi4KCgkqIHNyYy90b29scy9kb2NtYWtlci9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2RvY21ha2VyL3V0aWxzLnB5LAoJc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogVXBkYXRpbmcgdGhlIERvY01ha2VyIHRvb2wuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENoYW5naW5nIHRoZSB0eXBlIG9mIHRoZSAibG9hZF9mbGFncyIKCXBhcmFtZXRlciBmcm9tICJGVF9JbnQiIHRvICJGVF9JbnQzMiIsIHRoaXMgaW4gb3JkZXIgdG8gc3VwcG9ydCBtb3JlCglvcHRpb25zLiAgVGhpcyBzaG91bGQgb25seSBicmVhayBiaW5hcnkgYW5kL29yIHNvdXJjZSBjb21wYXRpYmlsaXR5CglvbiAxNi1iaXQgcGxhdGZvcm1zIChBdGFyaT8pLgoJKEZUX0xPQURfTk9fQVVUT0hJTlQpOiBOZXcgbWFjcm8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglIYW5kbGUgRlRfTE9BRF9OT19BVVRPSElOVC4KCShGVF9Mb2FkX0NoYXIpOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdG9iamVjdC5jLAoJc3JjL2F1dG9oaW50L2FoZ2x5cGguYywgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGaXhpbmcgdHlwb3MKCWFuZCByZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDgtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0dldF9NZXRyaWNzKTogQWRkIGd1YXJkIGZvciBrID0gMC4KCjIwMDItMDgtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9hdXRvaGludC9haG1vZHVsZS5jIFtERUJVR19ISU5URVJdOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncwoJKG9ubHkgdXNlZCBpbiBkZXZlbG9wbWVudCBidWlsZHMgYW55d2F5KS4KCglJbXByb3ZlIHN1cHBvcnQgb2YgbG9jYWwgZXh0cmVtYSBhbmQgc3RlbSBlZGdlIHBvaW50cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0hpbnRfVGFibGVSZWMpOiBVc2UgUFNIM19ab25lUmVjCglmb3IgYHpvbmVzJy4KCShQU0gzX0RJUl9VUCwgUFNIM19ESVJfRE9XTik6IEV4Y2hhbmdlIHZhbHVlcy4KCShQU0gzX0RJUl9IT1JJWk9OVEFMLCBQU0gzX0RJUl9WRVJUSUNBTCk6IE5ldyBtYWNyb3MuCgkoUFNIM19ESVJfQ09NUEFSRSwgUFNIM19ESVJfSVNfSE9SSVpPTlRBTCwgUFNIM19JU19WRVJUSUNBTCk6IE5ldwoJbWFjcm9zLgoJKFBTSDNfUE9JTlRfSU5GTEVYKTogTmV3IGVudW0uCgkocHNoM19wb2ludF97aXMsc2V0fV97b2ZmLGluZmxleH0pOiBOZXcgbWFjcm9zLgoJKFBTSDNfUE9JTlRfe0VYVFJFTVVNLFBPU0lUSVZFLE5FR0FUSVZFLEVER0VfTUlOLEVER0VfTUFYKTogTmV3CgllbnVtIHZhbHVlcy4KCShwc2gzX3BvaW50X3tpcyxzZXR9X3tleHRyZW11bSxwb3NpdGl2ZSxuZWdhdGl2ZSxlZGdlX21pbixlZGdlX21heH0pOgoJTmV3IG1hY3Jvcy4KCShQU0gzX1BvaW50UmVjKTogTmV3IG1lbWJlcnMgYGZsYWdzMicgYW5kIGBvcmdfdicuCgkoUFNIM19QT0lOVF9FUVVBTF9BUkcsIFBTSDNfUE9JTlRfQU5HTEUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgW0RFQlVHX0hJTlRFUl06IFJlbW92aW5nIGNvbXBpbGVyCgl3YXJuaW5ncy4KCShDT01QVVRFX0lORkxFWFMpOiBOZXcgbWFjcm8uCgkocHNoM19oaW50X2FsaWduKTogU2ltcGxpZnkgc29tZSBiYXNpYyBhcml0aG1ldGljIGNvbXB1dGF0aW9ucy4KCShwc2gzX3BvaW50X2lzX2V4dHJlbXVtKTogUmVtb3ZlZC4KCShwc2gzX2dseXBoX2NvbXB1dGVfaW5mbGVjdGlvbnMpIFtDT01QVVRFX0lORkxFWFNdOiBOZXcgZnVuY3Rpb24uCgkocHNoM19nbHlwaF9pbml0KSBbQ09NUFVURV9JTkZMRVhTXTogVXNlIGl0LgoJKHBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hKTogTmV3IGZ1bmN0aW9uLgoJKFBTSDNfU1RST05HX1RIUkVTSE9MRCk6IEluY3JlYXNlZCB0byAzMC4KCShwc2gzX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBJbXByb3ZlZC4KCShwc2gzX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cywKCXBzaDNfZ2x5cGhfaW50ZXJwb2xhdGVfc3Ryb25nX3BvaW50cyk6IFVwZGF0ZWQuCgkocHNoM19oaW50c19hcHBseSk6IFVzZSBwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYS4KCgkqIHRlc3QvZ3ZpZXcuYyAoZHJhd19wczNfaGludCwgcHMzX2RyYXdfY29udHJvbF9wb2ludHMpOiBOZXcKCWZ1bmN0aW9ucy4KCU90aGVyIHNtYWxsIHVwZGF0ZXMuCgoJKiBKYW1maWxlOiBTbWFsbCB1cGRhdGVzLgoKMjAwMi0wOC0xOCAgQXJrYWRpdXN6IE1pc2tpZXdpY3ogIDxtaXNpZWtAcGxkLk9SRy5QTD4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEFkZCAkKERFU1RESVIpIHRvCgltYWtlIGxpZmUgZWFzaWVyIGZvciBwYWNrYWdlIG1haW50YWluZXJzLgoKMjAwMi0wOC0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dseXBoX0xvYWQpOiBGaXggY29tcHV0YXRpb24gb2YKCWhvcmlCZWFyaW5nWC4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhMb2FkKTogRml4IGNvbXB1dGF0aW9uIG9mCglob3JpQmVhcmluZ1kuCgoyMDAyLTA4LTE2ICBHZW9yZ2UgV2lsbGlhbXMgIDxnd3dAc2lsY29tLmNvbT4KCglBZGQgc3VwcG9ydCBmb3IgQXBwbGUgY29tcG9zaXRlIGdseXBocy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShUVF9DT05GSUdfT1BUSU9OX0NPTVBPTkVOVF9PRkZTRVRfU0NBTEVEKTogTmV3IG1hY3JvLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoT1ZFUkxBUF9DT01QT1VORCwgU0NBTEVEX0NPTVBPTkVOVF9PRkZTRVQsCglVTlNDQUxFRF9DT01QT05FTlRfT0ZGU0VUKTogTmV3IG1hY3JvcyBmb3IgYWRkaXRpb25hbCBPcGVuVHlwZQoJZ2x5cGggbG9hZGluZyBmbGFncy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogSW1wbGVtZW50IGl0LgoKMjAwMi0wOC0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZnJlZV9nbHlwaF9kYXRhKSwKCXNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogVXNlIEZUX1VOVVNFRC4KCjIwMDItMDgtMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogSW5pdGlhbGl6ZSBgZXJyb3InLgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDgtMTUgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglJbXBsZW1lbnRlZCB0aGUgaW5jcmVtZW50YWwgZm9udCBsb2FkaW5nIHN5c3RlbSBmb3IgdGhlIENGRiBkcml2ZXIuCglUZXN0ZWQgdXNpbmcgdGhlIEdob3N0U2NyaXB0LXRvLUZyZWVUeXBlIGJyaWRnZSAodW5kZXIgZGV2ZWxvcG1lbnQpLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZ2V0X2dseXBoX2RhdGEsIGNmZl9mcmVlX2dseXBoX2RhdGEpOiBOZXcKCWZ1bmN0aW9ucy4KCShjZmZfb3BlcmF0b3Jfc2VhYywgY2ZmX2NvbXB1dGVfbWF4X2FkdmFuY2UsIGNmZl9zbG90X2xvYWQpOiBVc2UKCXRoZW0uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogQWRkIGBmYWNlJyBwYXJhbWV0ZXIuCglMb2FkIGNoYXJzZXQgYW5kIGVuY29kaW5nIG9ubHkgaWYgdGhlcmUgYXJlIGdseXBocy4KCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW5jcmVtZW50YWwgZm9udHMgZG9uJ3QgbmVlZAoJY2hhcmFjdGVyIHJlY2lwZXMuCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZm9ianMuYzogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENvcnJlY3RlZCB0aGUgaW5jcmVtZW50YWwgZm9udAoJbG9hZGluZyBpbXBsZW1lbnRhdGlvbiB0byB1c2UgdGhlIG5ldyBzeXN0ZW0gaW50cm9kdWNlZCBvbgoJMjAwMi0wOC0wMS4KCjIwMDItMDgtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jLCBzcmMvY2FjaGUvZnRjY2FjaGUuaSwKCXNyYy9wZnIvcGZybG9hZC5jLCBzcmMvcGZyL3Bmcmdsb2FkLmM6IHMvaW5kZXgvaWR4Ly4KCSogc3JjL2NmZi9jZmZsb2FkLmM6IHMvc2VsZWN0L2Zkc2VsZWN0Ly4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBzL3dhaXQvd2FpdGluZy8uCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IFRvbGVyYXRlIGEgZmFjZSB3aXRoIG5vCgljaGFyc3RyaW5ncyBpZiB0aGVyZSBpcyBhbiBpbmNyZW1lbnRhbCBsb2FkaW5nIGludGVyZmFjZS4gIFR5cGUgMQoJZmFjZXMgc3VwcGxpZWQgYnkgUG9zdFNjcmlwdCBpbnRlcnByZXRlcnMgbGlrZSBHaG9zdFNjcmlwdCB3aWxsCgl0eXBpY2FsbHkgbm90IHByb3ZpZGUgYW55IGNoYXJzdHJpbmdzIGF0IGxvYWQgdGltZSwgc28gdGhpcyBpcwoJZXNzZW50aWFsIGlmIHRoZXkgYXJlIHRvIHdvcmsuCgoyMDAyLTA4LTAxICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJTW9kaWZpZWQgaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UgdG8gYmUgY2xvc2VyIHRvIERhdmlkJ3MKCXByZWZlcmVuY2VzLiAgVGhlIGhlYWRlciBmcmVldHlwZS5oIGlzIG5vdCBub3cgYWZmZWN0ZWQsIHRoZQoJaW50ZXJmYWNlIGlzIHNwZWNpZmllZCB2aWEgYW4gRlRfUGFyYW1ldGVyLCB0aGUgcG9pbnRlciB0byB0aGUKCWludGVyZmFjZSBpcyBoaWRkZW4gaW4gYW4gaW50ZXJuYWwgcGFydCBvZiB0aGUgZmFjZSByZWNvcmQsIGFuZCBhbGwKCXRoZSBkZWZpbml0aW9ucyBhcmUgaW4gZnRpbmNyZW0uaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUluY2x1ZGUgRlRfSU5DUkVNRU5UQUxfSC4KCShGVF9GYWNlX0ludGVybmFsUmVjKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZAoJYGluY3JlbWVudGFsX2ludGVyZmFjZScuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlLCBGVF9PcGVuX0ZhY2UpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJVXBkYXRlZC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCglGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcywgVFRfTG9hZF9HbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9GYWNlX0luaXQpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9QYXJzZV9HbHlwaF9BbmRfR2V0X0NoYXJfU3RyaW5nKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKFQxX1BhcnNlX0dseXBoKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCglGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoJKFQxX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBGcmVlIGxvYWRlZCBnbHlwaCBkYXRhIHByb3Blcmx5LgoKMjAwMi0wNy0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oOiBBZGRpbmcgbmV3IGV4cGVyaW1lbnRhbCBoZWFkZXIgZmlsZQoJdG8gZGVtb25zdHJhdGUgYSAiY2xlYW5lciIgQVBJIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgZm9udCBsb2FkaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfSU5DUkVNRU5UQUxfSCk6IE5ldyBtYWNyby4KCgkqIHNyYy90b29scy9kb2NtYWtlci8qOiBBZGRpbmcgbmV3IChtb3JlIGFkdmFuY2VkKSB2ZXJzaW9uIG9mCgl0aGUgRG9jTWFrZXIgdG9vbCwgdXNpbmcgUHl0aG9uJ3Mgc29waGlzdGljYXRlZCByZWdleHBzLgoKMjAwMi0wNy0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCXMvZnRfbWVtc2V0L0ZUX01FTV9TRVQvLgoJcy9GVF9NRU1fU0VUL0ZUX01FTV9aRVJPLyB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDItMDctMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IE1ha2UgaXQgd29yayB3aXRoIFRUQ3MuCgoyMDAyLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBzL21lbXNldC9mdF9tZW1zZXQvLgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKGNmZl9lbmNvZGluZ19sb2FkKTogUmVtb3ZlIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfZW5jb2RpbmdfaW5pdCk6IFJlbW92ZSBgcHNuYW1lcycKCXZhcmlhYmxlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIHN0YXRlbWVudAoJd2l0aG91dCBlZmZlY3QuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlciAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW1vdmVkLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfaGludF90YWJsZV9yZWNvcmQsCglwc2gzX2hpbnRfdGFibGVfaW5pdCwgcHNoM19oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBGaXggZXJyb3IKCW1lc3NhZ2UuCgoyMDAyLTA3LTI0ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IEZpeCBmb3IgYnVnIHJlcG9ydGVkIGJ5IFN2ZW4gTmV1bWFubgoJW3N2ZW5AZ2ltcC5vcmddIG9uIHRoZSBGcmVlVHlwZSBkZXZlbG9wbWVudCBmb3J1bTogIklmCglGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMIGlzIHVuZGVmaW5lZCAodGhpcyBpcyB0aGUgZGVmYXVsdCksIHRoZQoJVHJ1ZVR5cGUgbG9hZGVyIGNyYXNoZXMgaW4gbGluZSA4NTIgb2Ygc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyB3aGVuCglpdCB0cmllcyB0byBhY2Nlc3MgZmFjZS0+Z2x5cGhfbG9jYXRpb25zLiIKCjIwMDItMDctMTggIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCglBZGRlZCB0eXBlcyBhbmQgc3RydWN0dXJlcyB0byBzdXBwb3J0IGluY3JlbWVudGFsIHR5cGVmYWNlIGxvYWRpbmcuCglUaGUgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlIHN0cnVjdHVyZSwgZGVmaW5lZCBpbiBmcmVldHlwZS5oLCBpcwoJZGVzaWduZWQgdG8gYmUgcGFzc2VkIHRvIEZUX09wZW5fRmFjZSB0byBwcm92aWRlIGNhbGxiYWNrIGZ1bmN0aW9ucwoJdG8gb2J0YWluIGdseXBoIHJlY2lwZXMgYW5kIG1ldHJpY3MsIGZvciBmb250cyBsaWtlIHRob3NlIHBhc3NlZAoJZnJvbSBQb3N0U2NyaXB0IHRoYXQgZG8gbm90IG5lY2Vzc2FyaWx5IHByb3ZpZGUgYWxsLCBvciBhbnksIGdseXBoCglpbmZvcm1hdGlvbiwgd2hlbiBmaXJzdCBvcGVuZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMKToKCU5ldyBjb25maWd1cmF0aW9uIG1hY3JvIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBmYWNlIGxvYWRpbmcuICBCeQoJZGVmYXVsdCBpdCBpcyBub3QgZGVmaW5lZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfQmFzaWNfR2x5cGhfTWV0cmljcywKCUZUX0dldF9HbHlwaF9EYXRhX0Z1bmMsIEZUX0dldF9HbHlwaF9NZXRyaWNzX0Z1bmMsCglGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2VfRnVuY3MsIEZUX0luY3JlbWVudGFsX0ludGVyZmFjZSkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3LgoJKEZUX09wZW5fQXJncywgRlRfRmFjZVJlYykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcgZmllbGQKCWBpbmNyZW1lbnRhbF9pbnRlcmZhY2UnLgoJKEZUX09wZW5fRmxhZ3MpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogTmV3IGVudW0KCWBmdF9vcGVuX2luY3JlbWVudGFsJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oOiBJbmNsdWRlIEZUX0NPTkZJR19DT05GSUdfSC4KCShGVF9EYXRhKTogTmV3IHN0cnVjdHVyZSB0byByZXByZXNlbnQgYmluYXJ5IGRhdGEuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglBZGQgcGFyYW1ldGVyIGZvciBpbmNyZW1lbnRhbCBsb2FkaW5nLgoJKEZUX09wZW5fRmFjZSkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVc2UgaW5jcmVtZW50YWwKCWludGVyZmFjZS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIHN5c3RlbQoJZm9yIHRoZSBUcnVlVHlwZSBkcml2ZXIuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogUmV0dXJuIEZUX0Vycm9yLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBDaGVjayBmb3Igb3ZlcnJpZGluZyBtZXRyaWNzLgoJKFRUX0xvYWRfR2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogRG9uJ3QgbG9vayBmb3IKCXRoZSBnbHlwaCB0YWJsZSB3aGlsZSBoYW5kbGluZyBhbiBpbmNyZW1lbnRhbCBmb250LgoJR2V0IGdseXBoIG9mZnNldC4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfRmFjZV9Jbml0KQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DT1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcKCXN5c3RlbSBmb3IgdGhlIFRydWVUeXBlIGRyaXZlci4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHRoZSBpbmNyZW1lbnRhbCBsb2FkaW5nIHN5c3RlbQoJZm9yIHRoZSBDSUQgZHJpdmVyLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglDaGFuZ2VzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgVHlwZSA0MiBmb250czogQXNzdW1lIGEgZm9udCBoYXMKCWdseXBocyBpZiBpdCBoYXMgYW4gaW5jcmVtZW50YWwgaW50ZXJmYWNlIG9iamVjdC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpOiBUaGlzLgoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBBZGRlZCBzdXBwb3J0IGZvciBpbmNyZW1lbnRhbGx5Cglsb2FkZWQgVHlwZSAxIGZhY2VzLgoJKFQxX1BhcnNlX0dseXBoKTogTmV3IGZ1bmN0aW9uLgoJKFQxX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoKMjAwMi0wNy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUNsZWFuaW5nIHVwIHRoZSBjYWNoZSBzdWItc3lzdGVtIGNvZGU7IGxpbmVhciBoYXNoaW5nIGlzIG5vdyB0aGUKCWRlZmF1bHQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmgsIHNyYy9jYWNoZS9mdGNjYWNoZS5pLAoJc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgWyFGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogUmVtb3ZlZC4KCShGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HOiBSZW1vdmVkIGFsc28uCgoJRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFMgaXMgbm93IHRoZSBkZWZhdWx0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIChGVF9Ecml2ZXJfQ2xhc3NSZWMpOiBSZW1vdmUKCWBnZXRfY2hhcl9pbmRleCcgYW5kIGBnZXRfbmV4dF9jaGFyJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwgc3JjL2Jhc2UvZnRvYmpzLmMsCglzcmMvYmRmL2JkZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvcGNmL3BjZmRyaXZyLmMsCglzcmMvcGZyL3BmcmRyaXZyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsCglzcmMvc2ZudC90dGNtYXAwLmgsIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTQyL3Q0Mm9ianMuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5jCglbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogUmVtb3ZlZC4gIFRoZSBuZXcgY21hcCBjb2RlIGlzIG5vdwoJdGhlIGRlZmF1bHQuCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAoVDQyX0NNYXBfQ2hhckluZGV4LCBUNDJfQ01hcF9DaGFyTmV4dCk6CglSZW1vdmVkLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogVXBkYXRlZC4KCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoQ2lkX0dldF9DaGFyX0luZGV4LCBDaWRfR2V0X05leHRfQ2hhcik6CglSZW1vdmVkLgoJKHQxX2NpZF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAodHRfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogUmVtb3ZlZAoJKHQxX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYyAodDQyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogU2VsZWN0IFVuaWNvZGUgY21hcCBieSBkZWZhdWx0LgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfU0ZOVF9IZWFkZXIpOiBGaXhlZCBhIHJlY2VudCBidWcgdGhhdAoJcHJldmVudGVkIE9wZW5UeXBlIGZvbnRzIHRvIGJlIHJlY29nbml6ZWQgYnkgRnJlZVR5cGUuCgoyMDAyLTA3LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQ2hhbmdpbmcgdGhlIFNGTlQgbG9hZGVyIHRvIGNoZWNrIGZvciBTRk5ULWJhc2VkIGZvbnQgZmlsZXMKCWRpZmZlcmVudGx5LiAgV2Ugbm93IGlnbm9yZSB0aGUgcmFuZ2UgImhlbHBlciIgZmllbGRzIGFuZCBjaGVjayB0aGUKCSJoZWFkIiB0YWJsZSdzIG1hZ2ljIG51bWJlciBpbnN0ZWFkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFNGTlRfSGVhZGVyUmVjKTogQWRkIGBvZmZzZXQnCglmaWVsZC4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChzZm50X2Rpcl9jaGVjayk6IE5ldyBmdW5jdGlvbi4KCShUVF9Mb2FkX1NGTlRfSGVhZGVyUmVjKTogUmVuYW1lZCB0by4uLgoJKFRUX0xvYWRfU0ZOVF9IZWFkZXIpOiBUaGlzLgoJSW1wbGVtZW50IG5ldyBmdW5jdGlvbmFsaXR5LgoJKiBzcmMvc2ZudC90dGxvYWQuaDogVXBkYXRlZC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9pbnRlcmZhY2UpOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmplY3QuYywgc3JjL2Jhc2UvZnRoYXNoLmM6IFVwZGF0ZWQgb2JqZWN0IHN1Yi1zeXN0ZW0KCWFuZCBkeW5hbWljIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gKHN0aWxsIGV4cGVyaW1lbnRhbCwgZG9uJ3QKCXVzZSkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRoYXNoLmg6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0xpYnJhcnlSZWMpOiBOZXcgbWVtYmVyCglgbWV0YV9jbGFzcycuCgoJRml4aW5nIGEgYnVnIGluIHRoZSBUeXBlIDEgbG9hZGVyIHRoYXQgcHJldmVudGVkIHZhbGlkIGZvbnQgYm91bmRpbmcKCWJveGVzIHRvIGJlIGxvYWRlZCBmcm9tIG11bHRpcGxlIG1hc3RlciBmb250cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAoUFNfQmxlbmRSZWMpOiBBZGQgYGJib3hlcycgZmllbGQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0ZpZWxkVHlwZSk6IEFkZAoJYFQxX0ZJRUxEX1RZUEVfQkJPWCcuCgkoVDFfRmllbGRMb2NhdGlvbik6IEFkZCBgVDFfRklFTERfTE9DQVRJT05fQkJPWCcuCgkoVDFfRklFTERfQkJPWCk6IE5ldyBtYWNyby4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfUGFyc2VyX0xvYWRGaWVsZCk6IEhhbmRsZSBUMV9GSUVMRF9UWVBFX0JCT1guCgkqIHNyYy90eXBlMS90MWxvYWQuYyAodDFfYWxsb2NhdGVfYmxlbmQpOiBDcmVhdGUgYmxlbmQtPmJib3hlcy4KCShUMV9Eb25lX0JsZW5kKTogRnJlZSBibGVuZC0+YmJveGVzLgoJKHQxX2xvYWRfa2V5d29yZCk6IEhhbmRsZSBUMV9GSUVMRF9MT0NBVElPTl9CQk9YLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENvbW1lbnRlZCBvdXQuCgkodDFfa2V5d29yZHMpOiBDb21tZW50IG91dCBgcGFyc2VfZm9udF9iYm94Jy4KCSogc3JjL3R5cGUxL3QxdG9rZW5zLmg6IERlZmluZSBgRm9udEJCb3gnIGZpZWxkLgoKMjAwMi0wNy0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZvYmpzLmM6IFNtYWxsIGZpeCB0byBzZWxlY3QgdGhlIFVuaWNvZGUgY2hhcm1hcCBieQoJZGVmYXVsdCB3aGVuIG5lZWRlZC4KCVNtYWxsIGZpeCB0byBhbGxvdyBPcGVuVHlwZSBmb250cyB0byBzdXBwb3J0IEFkb2JlIGNoYXJtYXBzIHdoZW4KCW5lZWRlZC4KCgkqIHNyYy9jZmYvY2ZmY21hcC5jLCBzcmMvY2ZmL2NmZmNtYXAuaDogTmV3IGZpbGVzIHRvIHN1cHBvcnQKCWNoYXJtYXBzIGZvciBDRkYgZm9udHMuCgoJKiBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL0phbWZpbGUsIHNyYy9jZmYvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9FbmNvZGluZ1JlYyk6IFVzZQoJZml4ZWQtbGVuZ3RoIGFycmF5cyBmb3IgYHNpZHMnIGFuZCBgY29kZXMnLiAgQWRkIGBjb3VudCcgbWVtYmVyLgoJKENGRl9Gb250UmVjKTogQWRkIGBwc25hbWVzJyBtZW1iZXIuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaCwKCXNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5jLAoJc3JjL2NmZnBhcnNlLmgsIHNyYy9jZmYvY2ZmZ2xvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5oOiBBZGRpbmcKCXN1cHBvcnQgZm9yIENGRiBjaGFybWFwcywgcmVmb3JtYXR0aW5nIHRoZSBzb3VyY2VzLCBhbmQgcmVtb3ZpbmcKCXNvbWUgYnVncyBpbiB0aGUgRW5jb2RpbmcgYW5kIENoYXJzZXQgbG9hZGVycy4KCU1hbnkgZm9udHMgcmVuYW1lZCB0byB1c2UgbG93ZXJjYXNlIG9ubHk6CgoJICBDRkZfQnVpbGRlcl9Jbml0IC0+IGNmZl9idWlsZGVyX2luaXQKCSAgQ0ZGX0J1aWxkZXJfRG9uZSAtPiBjZmZfYnVpbGRlcl9kb25lCgkgIENGRl9Jbml0X0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfaW5pdAoJICBDRkZfUGFyc2VfQ2hhclN0cmluZ3MgLT4gY2ZmX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MKCSAgQ0ZGX0xvYWRfR2x5cGggLT4gY2ZmX3Nsb3RfbG9hZAoJICBDRkZfSW5pdF9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX2luaXQKCSAgQ0ZGX1ByZXBhcmVfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9wcmVwYXJlCgkgIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcgLT4gY2ZmX2dldF9zdGFuZGFyZF9lbmNvZGluZwoJICBDRkZfQWNjZXNzX0VsZW1lbnQgLT4gY2ZmX2luZGV4X2FjY2Vzc19lbGVtZW50CgkgIENGRl9Gb3JnZXRfRWxlbWVudCAtPiBjZmZfaW5kZXhfZm9yZ2V0X2VsZW1lbnQKCSAgQ0ZGX0dldF9OYW1lIC0+IGNmZl9pbmRleF9nZXRfbmFtZQoJICBDRkZfR2V0X1N0cmluZyAtPiBjZmZfaW5kZXhfZ2V0X3NpZF9zdHJpbmcKCSAgQ0ZGX0dldF9GRCAtPiBjZmZfZmRfc2VsZWN0X2dldAoJICBDRkZfRG9uZV9DaGFyc2V0IC0+IGNmZl9jaGFyc2V0X2RvbmUKCSAgQ0ZGX0xvYWRfQ2hhcnNldCAtPiBjZmZfY2hhcnNldF9sb2FkCgkgIENGRl9Eb25lX0VuY29kaW5nIC0+IGNmZl9lbmNvZGluZ19kb25lCgkgIENGRl9Mb2FkX0VuY29kaW5nIC0+IGNmZl9lbmNvZGluZ19sb2FkCgkgIENGRl9Eb25lX1N1YkZvbnQgLT4gY2ZmX3N1YmZvbnRfZG9uZQoJICBDRkZfTG9hZF9Gb250IC0+IGNmZl9mb250X2xvYWQKCSAgQ0ZGX0RvbmVfRm9udCAtPiBjZmZfZm9udF9kb25lCgkgIENGRl9TaXplX0dldF9HbG9iYWxfRnVuY3MgLT4gY2ZmX3NpemVfZ2V0X2dsb2JhbF9mdW5jcwoJICBDRkZfU2l6ZV9Eb25lIC0+IGNmZl9zaXplX2RvbmUKCSAgQ0ZGX1NpemVfSW5pdCAtPiBjZmZfc2l6ZV9pbml0CgkgIENGRl9TaXplX1Jlc2V0IC0+IGNmZl9zaXplX3Jlc2V0CgkgIENGRl9HbHlwaFNsb3RfRG9uZSAtPiBjZmZfc2xvdF9kb25lCgkgIENGRl9HbHlwaFNsb3RfSW5pdCAtPiBjZmZfc2xvdF9pbml0CgkgIENGRl9TdHJDb3B5IC0+IGNmZl9zdHJjcHkKCSAgQ0ZGX0ZhY2VfSW5pdCAtPiBjZmZfZmFjZV9pbml0CgkgIENGRl9GYWNlX0RvbmUgLT4gY2ZmX2ZhY2VfZG9uZQoJICBDRkZfRHJpdmVyX0luaXQgLT4gY2ZmX2RyaXZlcl9pbml0CgkgIENGRl9Ecml2ZXJfRG9uZSAtPiBjZmZfZHJpdmVyX2RvbmUKCSAgQ0ZGX1BhcnNlcl9Jbml0IC0+IGNmZl9wYXJzZXJfaW5pdAoJICBDRkZfUGFyc2VyX1J1biAtPiBjZmZfcGFyc2VyX3J1bgoKCSAgYWRkX3BvaW50IC0+IGNmZl9idWlsZGVyX2FkZF9wb2ludAoJICBhZGRfcG9pbnQxIC0+IGNmZl9idWlsZGVyX2FkZF9wb2ludDEKCSAgYWRkX2NvbnRvdXIgLT4gY2ZmX2J1aWxkZXJfYWRkX2NvbnRvdXIKCSAgY2xvc2VfY29udG91ciAtPiBjZmZfYnVpbGRlcl9jbG9zZV9jb250b3VyCgkgIGNmZl9leHBsaWNpdF9pbmRleCAtPiBjZmZfaW5kZXhfZ2V0X3BvaW50ZXJzCgoyMDAyLTA3LTA5ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IEZpeGVkIGEgYnVnIHRoYXQKCXByZXZlbnRlZCB0aGUgaGludGVyIGZyb20gdXNpbmcgY29ycmVjdCBzdGFuZGFyZCB3aWR0aCBhbmQgaGVpZ2h0Cgl2YWx1ZXMsIHJlc3VsdGluZyBpbiBoaW50aW5nIGJ1Z3Mgd2l0aCBjZXJ0YWluIGZvbnRzIChlLmcuIFV0b3BpYSkuCgoyMDAyLTA3LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEFkZGVkIGNvZGUgdG8gcmV0dXJuCglzdWNjZXNzZnVsbHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBiaXRtYXAgZ2x5cGggKHRoZQoJcHJldmlvdXMgY29kZSBzaW1wbHkgcmV0dXJuZWQgd2l0aCBhbiBlcnJvcikuCgoJKiBkb2NzL0RFQlVHLlRYVDogQWRkaW5nIGRlYnVnZ2luZyBzdXBwb3J0IGRvY3VtZW50YXRpb24uCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jCgkoZnRfZGVidWdfaW5pdCksIGJ1aWxkcy9hbWlnYS9zcmMvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KTogQ2hhbmdlZAoJdGhlIHN5bnRheCBvZiB0aGUgRlQyX0RFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlIHVzZWQgdG8gY29udHJvbAoJZGVidWdnaW5nIG91dHB1dCAoaS5lLiBsb2dnaW5nIGFuZCBlcnJvciBtZXNzYWdlcykuICBJdCBtdXN0IG5vdwoJbG9vayBsaWtlOgoKCSAgYW55OjYgbWVtb3J5OjQgaW86MyAgIG9yCgkgIGFueTo2LG1lbW9yeTo0LGlvOjMgICBvcgoJICBhbnk6NjttZW1vcnk6NDtpbzozCgoyMDAyLTA3LTA3ICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zbmFwX3N0ZW0pOiBBZGRpbmcgc3VwcG9ydCBmb3IKCWJsdWUgZnV6ei4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVzUmVjKTogQWRkIGBibHVlX2Z1enonIGZpZWxkLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKFQxX09wZW5fRmFjZSk6IEluaXRpYWxpemUgYGJsdWVfZnV6eicuCgoJQWRkaW5nIHN1cHBvcnQgZm9yIGhpbnRlci1zcGVjaWZpYyBiaXQgZmxhZ3MsIGFuZCB0aGUgbmV3CglGVF9TZXRfSGludF9GbGFncyBoaWdoLWxldmVsIEFQSS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkoRlRfSElOVF9OT19JTlRFR0VSX1NURU0sIEZUX0hJTlRfTk9fSFNURU1fQUxJR04sCglGVF9ISU5UX05PX1ZTVEVNX0FMSUdOKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX0ZhY2VfSW50ZXJuYWxSZWMpOiBBZGQKCWBoaW50X2ZsYWdzJyBtZW1iZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0hpbnRfRmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0RlY29kZXJSZWMpOiBBZGQgYGhpbnRfZmxhZ3MnCgltZW1iZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCAoVDFfSGludHNfQXBwbHlGdW5jLAoJVDJfSGludHNfQXBwbHlGdW5jKTogQWRkIHBhcmFtZXRlciB0byBwYXNzIGhpbnQgZmxhZ3MuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncywKCVQxX0RlY29kZXJfSW5pdCk6IFVzZSBkZWNvZGVyLT5oaW50X2ZsYWdzLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmggKENGRl9CdWlsZGVyKTogQWRkIGBoaW50X2ZsYWdzJyBmaWVsZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfQnVpbGRlcl9Jbml0KTogU2V0IGJ1aWxkZXItPmhpbnRfZmxhZ3MuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzMV9oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzICh1bnVzZWQpLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuaDogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzICh1bnVzZWQpLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuaDogVXBkYXRlZC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlCgloaW50IGZsYWdzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaDogVXBkYXRlZC4KCjIwMDItMDctMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfc2xvdF9sb2FkKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdCByZXR1cm5lZAoJaW5jb3JyZWN0IGFkdmFuY2VzIHdoZW4gdGhlIG91dGxpbmUgcmVzb2x1dGlvbiB3YXMgZGlmZmVyZW50IGZyb20KCXRoZSBtZXRyaWNzIHJlc29sdXRpb24uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogcy9GVF9NRU1fU0VUL0ZUX1pFUk8vIHdoZXJlIGFwcHJvcHJpYXRlLgoJKGFoX291dGxpbmVfbGlua19zZWdtZW50cyk6IFNsaWdodCBpbXByb3ZlbWVudHMgdG8gdGhlIHNlcmlmCglkZXRlY3Rpb24gY29kZS4gIE1vcmUgd29yayBpcyBuZWVkZWQgdGhvdWdoLgoKMjAwMi0wNy0wMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVNtYWxsIGltcHJvdmVtZW50cyB0byB0aGUgYXV0b21hdGljIGhpbnRlci4gIFVuZXZlbiBzdGVtLXdpZHRocyBoYXZlCglub3cgZGlzYXBwZWFyZWQgYW5kIGV2ZXJ5dGhpbmcgbG9va3MgbXVjaCBiZXR0ZXIsIGV2ZW4gaWYgdGhlcmUgYXJlCglzdGlsbCBpc3N1ZXMgd2l0aCBzZXJpZmVkIGZvbnRzLgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfR2xvYmFscyk6IEFkZGVkIGBzdGRzJyBhcnJheS4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChPUFRJTV9TVEVNX1NOQVApOiBOZXcgI2RlZmluZS4KCShhaF9zbmFwX3dpZHRoKTogQ29tbWVudGVkIG91dC4KCShhaF9hbGlnbl9saW5rZWRfZWRnZSk6IFJlbmFtZWQgdG8uLi4KCShhaF9jb21wdXRlX3N0ZW1fd2lkdGgpOiBUaGlzLgoJRG9uJ3QgYWxsb3cgdW5ldmVuIHN0ZW0td2lkdGhzLgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogTmV3IGZ1bmN0aW9uLgoJKGFoX2FsaWduX3NlcmlmZWRfZWRnZSk6IERvbid0IHN0cmVuZ3RoZW4gc2VyaWZzLgoJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX3NjYWxlX2dsb2JhbHMpOiBVcGRhdGVkLgoKMjAwMi0wNy0wMyAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJQWRkaW5nIG5ldyBhbGdvcml0aG0gYmFzZWQgb24gT3dlbiBUYXlsb3IncyByZWNlbnQgd29yay4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaDogTmV3IGZpbGVzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnby5oOiBVcGRhdGVkLgoJVXNlIHBzaGFsZ28zIGJ5IGRlZmF1bHQuCgkqIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jOiBJbmNsdWRlIHBzaGFsZ28zLmMuCgoJKiBzcmMvcHNoaW50ZXIvSmFtZmlsZSwgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMi0wNy0wMSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpOiBGaXggYSBidWcKCXdoZXJlLCBpZiBhIGdseXBoIGhhcyBtb3JlIHRoYW4gaGludCBtYXNrLCB0aGUgc2Vjb25kIG1hc2sgZ2V0cwoJYXBwbGllZCB0byBwb2ludHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNvdmVyZWQgYnkgdGhlIGZpcnN0IG1hc2suCgoyMDAyLTA3LTAxICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA4X2NoYXJfbmV4dCwgdHRfY21hcDEyX2NoYXJfbmV4dCk6CglGaXhpbmcgdGhlIGNtYXAgOCBhbmQgMTIgcGFyc2luZyByb3V0aW5lcy4KCjIwMDItMDctMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYzogSW5jbHVkZSBGVF9UUklHT05PTUVUUllfSC4KCShGVF9PdXRsaW5lX0VtYm9sZGVuKTogUmVuYW1lZCB0by4uLgoJKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IFRoaXMuCglVcGRhdGVkIHRvIG5ldyB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucy4KCShGVF9PdXRsaW5lX09ibGlxdWUpOiBSZW5hbWVkIHRvLi4uCgkoRlRfR2x5cGhTbG90X09ibGlxdWUpOiBUaGlzLgoJKGZ0X25vcm0pOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3ludGguaDogVXBkYXRlZC4KCjIwMDItMDYtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaDogVXBkYXRpbmcgdGhlIG9iamVjdAoJc3ViLXN5c3RlbSBkZWZpbml0aW9ucyAoc3RpbGwgZXhwZXJpbWVudGFsKS4KCgkqIHNyYy9iYXNlL2Z0aGFzaC5jIChmdF9oYXNoX3JlbW92ZSk6IEZpeGluZyBhIHNtYWxsIHJlYWxsb2NhdGlvbgoJYnVnLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX0Zyb21fUG9sYXIsIEZUX0FuZ2xlX0RpZmYpOiBOZXcKCWZ1bmN0aW9ucy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBVcGRhdGVkLgoKCglBZGRpbmcgcGF0aCBzdHJva2VyIGNvbXBvbmVudCAod29yayBpbiBwcm9ncmVzcykuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlci5oLCBzcmMvYmFzZS9mdHN0cm9rZXIuYzogTmV3IGZpbGVzLgoJKiBzcmMvYmFzZS9KYW1maWxlOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU1RST0tFUl9IKTogTmV3IG1hY3JvLgoKCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfQ29tcG9zaXRlX0dseXBoKSwKCXNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfVmVjdG9yX1RyYW5zZm9ybSk6IEZpeGVkIFdlcm5lcidzIGxhdGVzdCBmaXguCglGVF9WZWN0b3JfVHJhbnNmb3JtIHdhc24ndCBidWdneSwgdGhlIFRydWVUeXBlIGNvbXBvc2l0ZSBsb2FkZXIgd2FzLgoKMjAwMi0wNi0yNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IFNldCB0byAzLgoKMjAwMi0wNi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjIgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNi0yMSAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90NDJ0eXBlcy5oIChUNDJfRm9udCk6IFJlbW92ZWQgc2luY2UKCWl0IGlzIGFscmVhZHkgaW4gdDQyb2Jqcy5oLgoJKFQ0Ml9GYWNlKTogVXNlIFQxX0ZvbnRSZWMuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0dldF9QU19Gb250X0luZm8pOiBVcGRhdGVkLgoJKEZUX0hhc19QU19HbHlwaF9OYW1lcyk6IENoZWNrIGZvciB0eXBlNDIgZHJpdmVyIG5hbWUgYWxzby4KCSogc3JjL3R5cGU0Mi90NDJvYmpzLmg6IEluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0guCgkoVDQyX0ZhY2UpOiBSZW1vdmVkIHNpbmNlIGl0IGlzIGFscmVhZHkgaW4gdDQydHlwZXMuaC4KCjIwMDItMDYtMjEgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyZ2xvYWQuYyAocGZyX2dseXBoX2xvYWRfY29tcG91bmQpOiBGaXggbG9hZGluZyBvZiBjb21wb3NpdGUKCWdseXBocy4KCjIwMDItMDYtMjEgIFN2ZW4gTmV1bWFubiAgPHN2ZW5AY29udmVyZ2VuY2UuZGU+CgoJKiBzcmMvcHJmL3BmcnR5cGVzLmggKFBGUl9LZXJuUGFpcik6IE5ldyBzdHJ1Y3R1cmUuCgkoUEZSX1BoeUZvbnQpOiBVc2UgaXQuCgkoUEZSX0tlcm5GbGFncyk6IE5ldyBlbnVtZXJhdGlvbi4KCSogc3JjL3Bmci9wZnJsb2FkLmMgKHBmcl9leHRyYV9pdGVtX2xvYWRfa2VybmluZ19wYWlycyk6IE5ldwoJZnVuY3Rpb24uCgkocGZyX3BoeV9mb250X2V4dHJhX2l0ZW1zKTogVXNlIGl0LgoJKHBmcl9waHlfZm9udF9kb25lKTogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBTZXQga2VybmluZyBmbGFnIGNvbmRpdGlvbmFsbHkuCgkocGZyX2ZhY2VfZ2V0X2tlcm5pbmcpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9wZnIvcGZyb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3BmcmRyaXZyLmMgKHBmcl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMi0wNi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFByZXBhcmluZyB0aGUgMi4xLjIgcmVsZWFzZS4KCjIwMDItMDYtMTkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmFzZS9mdHR5cGUxLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTQyX1RZUEVTX0guCgkodDFfZmFjZV9jaGVja19jYXN0KTogUmVtb3ZlZC4KCShGVF9HZXRfUFNfRm9udF9JbmZvKTogTWFrZSBpdCB3b3JrIHdpdGggQ0lEIGFuZCBUeXBlIDQyIGRyaXZlcnMKCWFsc28uCgoyMDAyLTA2LTE5ICBTZWJhc3RpZW4gQkFSUkUgIDxzZWJhc3RpZW5AYmFycmUubm9tLmZyPgoKCSogc3JjL3R5cGU0Mi90NDJwYXJzZS5jICh0NDJfcGFyc2Vfc2ZudHMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfVmVjdG9yX1RyYW5zZm9ybSk6IEZpeCBzZXJpb3VzIHR5cG8KCSh4eSA8LT4geXgpLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVwbGFjZSBgfCcgd2l0aAoJYHx8JyB0byBtYWtlIGNvZGUgZWFzaWVyIHRvIHJlYWQuCgoyMDAyLTA2LTE4ICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuYyAodDQyX2NoZWNrX3NpemVfY2hhbmdlKTogUmVtb3ZlZC4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVXNlIEZUX0FjdGl2YXRlX1NpemUKCWluc3RlYWQuCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogUmVtb3ZlIGNhbGwgdG8gdDQyX2NoZWNrX3NpemVfY2hhbmdlLgoKMjAwMi0wNi0xOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wc2F1eC90MWNtYXAuYyAodDFfY21hcF9jdXN0b21fY2hhcl9pbmRleCwKCXQxX2NtYXBfY3VzdG9tX2NoYXJfbmV4dCk6IEZpeCBpbmRleCBjb21wdXRhdGlvbiAtLSBpbmRpY2VzIHN0YXJ0Cgl3aXRoIDAgYW5kIG5vdCB3aXRoIGNtYXAtPmZpcnN0LgoKCVByb3ZpZGUgZGVmYXVsdCBjaGFybWFwcy4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0ZhY2VfSW5pdCksIHNyYy9wY2YvcGNmZHJpdmVyLmMKCShQQ0ZfRmFjZV9Jbml0KSwgc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpLAoJc3JjL3R5cGUxL3Qxb2JqcyAoVDFfRmFjZV9Jbml0KSwgc3JjL3dpbmZvbnRzL3dpbmZudC5jCgkoRk5UX0ZhY2VfSW5pdCk6IEltcGxlbWVudCBpdC4KCjIwMDItMDYtMTcgIFN2ZW4gTmV1bWFubiAgPHN2ZW5AZ2ltcC5vcmc+CgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEZpeCB0eXBvLgoKMjAwMi0wNi0xNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCVVwZGF0ZWQgV2luMzIvVkMrKyBwcm9qZWN0cyB0byBpbmNsdWRlIHRoZSBuZXcgUEZSIGRyaXZlci4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDYtMTYgIEFudGhvbnkgRm9rICA8Zm9rQGRlYmlhbi5vcmc+CgoJSW5zdGFsbCBmcmVldHlwZTIubTQuCgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBIYW5kbGUgaXQuCgoyMDAyLTA2LTE2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCVNhbWUgZml4IGZvciBQRlIgZHJpdmVyLgoKCSogc3JjL3Bmci9wZnJjbWFwLmMgKHBmcl9jbWFwX2NoYXJfaW5kZXgsIHBmcl9jbWFwX2NoYXJfbmV4dCk6CglJbmNyZWFzZSByZXR1cm4gdmFsdWUgYnkgMS4KCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoKMjAwMi0wNi0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglGaXggZ2x5cGggaW5kaWNlcyB0byBtYWtlIGluZGV4IHplcm8gYWx3YXlzIHRoZSB1bmRlZmluZWQgZ2x5cGguCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9jbWFwX2luaXQpOiBEb24ndCBkZWNyZWFzZQoJY21hcC0+bnVtX2VuY29kaW5ncy4KCShiZGZfY21hcF9jaGFyX2luZGV4LCBiZGZfY21hcF9jaGFyX25leHQsIEJERl9HZXRfQ2hhcl9JbmRleCk6CglJbmNyZWFzZSByZXN1bHQgYnkgMSBmb3Igbm9ybWFsIGNhc2VzLgoJKEJERl9HbHlwaF9Mb2FkKTogRGVjcmVhc2UgaW5kZXggYnkgMS4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKHBjZl9jbWFwX2NoYXJfaW5kZXgsIHBjZl9jbWFwX2NoYXJfbmV4dCwKCVBDRl9DaGFyX0dldF9JbmRleCk6IEluY3JlYXNlIHJlc3VsdCBieSAxIGZvciBub3JtYWwgY2FzZXMuCgkoUENGX0dseXBoX0xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2dldF9lbmNvZGluZ3MpOiBEb24ndCBkZWNyZWFzZSBqIGZvcgoJYWxsb2NhdGluZyBgZW5jb2RpbmcnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgsIEZUX0dldF9HbHlwaF9OYW1lKTogRml4Cglib3VuZGluZyB0ZXN0cy4KCjIwMDItMDYtMTQgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJQWRkIG5ldyBjbWFwIHN1cHBvcnQgdG8gQkRGIGRyaXZlci4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0NNYXBSZWMpIFtGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106CglOZXcgc3RydWN0dXJlLgoJKGJkZl9jbWFwX2luaXQsIGJkZl9jbWFwX2RvbmUsIGJkZl9jbWFwX2NoYXJfaW5kZXgsCgliZGZfY21hcF9jaGFyX25leHQpIFtGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106IE5ldyBmdW5jdGlvbnMuCgkoQkRGX0dldF9DaGFyX0luZGV4KSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogVXNlIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgkoQkRGX0ZhY2VfSW5pdCk6IEhhbmRsZSBgQVZFUkFHRV9XSURUSCcgYW5kIGBQT0lOVF9TSVpFJyBrZXl3b3Jkcy4KCUltcGxlbWVudCBuZXcgY21hcCBoYW5kbGluZy4KCShiZGZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCjIwMDItMDYtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLCBjb25maWd1cmUsICovKi5taywgYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4sCglkb2NzL0NIQU5HRVMsIGRvY3MvSU5TVEFMTDogcy9UT1AvVE9QX0RJUi8uCgoyMDAyLTA2LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBzL0ZUX1Nob3J0L3Nob3J0LyBmb3IgY29uc2lzdGVuY3kuCgoyMDAyLTA2LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jOiBBZGRlZCBhIG1pc3NpbmcgI2VuZGlmLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCVJlbW92ZWQgdGhlIGJ1ZyBpbiBUeXBlIDQyIGRyaXZlciB0aGF0IHByZXZlbnRlZCB1bi1oaW50ZWQgb3V0bGluZXMKCXRvIGJlIGxvYWRlZC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfRmFjZV9Jbml0KTogQ2FsbCBGVF9Eb25lX1NpemUuCgkoVDQyX1NpemVfSW5pdCk6IENhbGwgRlRfQWN0aXZhdGVfU2l6ZS4KCSh0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UpOiBOZXcgZnVuY3Rpb24uCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFVzZSBpdC4KCShmdF9nbHlwaHNsb3RfY2xlYXIpOiBSZXBsYWNlIEZUX01FTV9TRVQgd2l0aCBGVF9aRVJPLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFVzZSB0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UuCglJbml0aWFsaXplIG1vcmUgZmllbGRzIG9mIGBnbHlwaCcuCgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTA2LTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA2LTA4ICBKdWxpdXN6IENocm9ib2N6ZWsgIDxqY2hAcHBzLmp1c3NpZXUuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3Ntb290aC9mdGdyYXlzLmM6IERvbid0Cgl1c2UgYHNldGptcCcsIGBsb25nam1wJywgYW5kIGBqbXBfYnVmJyBidXQgYGZ0X3NldGptcCcsIGBmdF9sb25nam1wJywKCWFuZCBgZnRfam1wX2J1ZicuCglSZW1vdmVkIGRpcmVjdCByZWZlcmVuY2VzIHRvIDxzdGRpby5oPiBhbmQgPHNldGptcC5oPiB3aGVuCglhcHByb3ByaWF0ZSwgdG8gZXZlbnR1YWxseSByZXBsYWNlIHRoZW0gd2l0aCBhCglGVF9DT05GSUdfU1RBTkRBUkRfTElCUkFSWV9ILiAgVXNlZnVsIGZvciB0aGUgWEZyZWU4NiBGb250IFNlcnZlcgoJYmFja2VuZCBiYXNlZCBvbiBGVDIuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmMgKEZUX0hhc19QU19HbHlwaF9OYW1lcyk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAyLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChwY2ZfY21hcF9jaGFyX25leHQpOiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZAoJdGhlIGZ1bmN0aW9uIHRvIHJldHVybiBpbnZhbGlkIHZhbHVlcy4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pOiBSZW1vdmluZyBhIHR5cG8gdGhhdCBwcmV2ZW50ZWQKCXRoZSBzb3VyY2UncyBjb21waWxhdGlvbi4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9oYXNoX3VubGluayk6IEZpeGVkIGEKCWJ1ZyB0aGF0IGNhdXNlZCBuYXN0eSBtZW1vcnkgb3ZlcndyaXRlcy4gIFRoZSBoYXNoIHRhYmxlJ3MKCWJ1Y2tldHMgYXJyYXkgd2Fzbid0IGNvcnJlY3RseSByZXNpemVkIHdoZW4gc2hyaW5rZWQuCgoyMDAyLTA2LTA4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL3NtYWtlZmlsZSwgYnVpbGRzL2FtaWdhL21ha2VmaWxlOiBVcGRhdGVkLgoKMjAwMi0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rLCBmdGNfbm9kZV9oYXNoX2xpbmspCglbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IEZpeCByZXR1cm5lZCBlcnJvciBjb2RlLgoJRml4IGRlYnVnZ2luZyBtZXNzYWdlcy4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmkgKEdFTl9DQUNIRV9MT09LVVApOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglgZmFtaWx5JyBhbmQgYGhhc2gnIHVwIHRvIG1ha2UgaXQgY29tcGlsYWJsZSB3aXRoIGcrKy4KCgkqIHNyYy90eXBlNDIvdDQyZXJyb3IuaDogTmV3IGZpbGUuCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYywgc3JjL3R5cGU0Mi90NDJvYmpzLmMsCglzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFVzZSB0NDIgZXJyb3IgY29kZXMuCgkqIHNyYy90eXBlNDIvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfU1RSRUFNX0guCgoyMDAyLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBHRU5fQ0FDSEVfRkFNSUxZX0NPTVBBUkUsCglHRU5fQ0FDSEVfTk9ERV9DT01QQVJFLCBHRU5fQ0FDSEVfTE9PS1VQKSBbRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOgoJTmV3IG1hY3Jvcy4KCShmdGNfY21hcF9jYWNoZV9sb29rdXApIFshRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOiBUeXBlZGVmIHRvCglmdGNfY2FjaGVfbG9va3VwLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogVXBkYXRlZC4KCglBZGRpbmcgdmFyaW91cyBleHBlcmltZW50YWwgb3B0aW1pemF0aW9ucyB0byB0aGUgY2FjaGUgbWFuYWdlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCAoRlRDX0NBQ0hFX1VTRV9JTkxJTkUsCglGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HKTogTmV3IG9wdGlvbnMuCgkoRlRDX0NhY2hlUmVjKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IE5ldyBlbGVtZW50cyBgcCcsCglgbWFzaycsIGFuZCBgc2xhY2snLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKEZUQ19IQVNIX01BWF9MT0FELCBGVENfSEFTSF9NSU5fTE9BRCwKCUZUQ19IQVNIX1NVQl9MT0FEKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElORywKCUZUQ19IQVNIX0lOSVRJQUxfU0laRV06IE5ldyBtYWNyb3MuCgkoZnRjX25vZGVfbXJ1X2xpbmssIGZ0Y19ub2RlX21ydV91cCk6IE9wdGltaXplZC4KCShmdGNfbm9kZV9oYXNoX3VubGluaywgZnRjX25vZGVfaGFzaF9saW5rKQoJW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBOZXcgdmFyaWFudHMuCgkoRlRDX1BSSU1FU19NSU4sIEZUQ19QUklNRVNfTUFYLCBmdGNfcHJpbWVzLCBmdGNfcHJpbWVfY2xvc2VzdCwKCUZUQ19DQUNIRV9SRVNJWkVfVEVTVCwgZnRjX2NhY2hlX3Jlc2l6ZSkKCVshRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IERlZmluZSBpdCBjb25kaXRpb25hbGx5LgoJKGZ0Y19jYWNoZV9pbml0LCBmdGNfY2FjaGVfY2xlYXIpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXToKCVVwZGF0ZWQuCgkoZnRjX2NhY2hlX2xvb2t1cCkgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBJbXBsZW1lbnQgaXQuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaTogTmV3IGZpbGUuCgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoR0VOX0NBQ0hFX0ZBTUlMWV9DT01QQVJFLAoJR0VOX0NBQ0hFX05PREVfQ09NUEFSRSwgR0VOX0NBQ0hFX0xPT0tVUCkgW0ZUQ19DQUNIRV9VU0VfSU5MSU5FXToKCU5ldyBtYWNyb3MuCgkoZnRjX3NiaXRfY2FjaGVfbG9va3VwKSBbIUZUQ19DQUNIRV9VU0VfSU5MSU5FXTogVHlwZWRlZiB0bwoJZnRjX2NhY2hlX2xvb2t1cC4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmM6IFJlbW92aW5nIGR1cGxpY2F0ZSBmdW5jdGlvbi4KCjIwMDItMDYtMDcgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBDaGFuZ2VkIGRlZmluaXRpb24KCWZyb20gRlRfRVhQT1JUX0RFRiB0byBGVF9CQVNFX0RFRi4KCjIwMDItMDYtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCB0aGUgYnVnIHRoYXQgcHJldmVudGVkIHRoZSBjb3JyZWN0IGRpc3BsYXkgb2YgZm9udHMgd2l0aAoJImZ0dmlldyIuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IFNwbGl0IGludG8uLi4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5oLCBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMsCglzcmMvdHlwZTQyL3Q0MnBhcnNlLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5oLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYywKCXNyYy90eXBlNDIvdHlwZTQyLmM6IE5ldyBmaWxlcy4KCgkodDQyX2dldF9nbHlwaF9uYW1lLCB0NDJfZ2V0X3BzX25hbWUsIHQ0Ml9nZXRfbmFtZV9pbmRleCk6IFVzZQoJYGZhY2UtPnR5cGUxJy4KCgkoR2V0X0ludGVyZmFjZSk6IFJlbmFtZWQgdG8uLi4KCShUNDJfR2V0X0ludGVyZmFjZSk6IFRoaXMuCglVcGRhdGVkLgoJKFQ0Ml9PcGVuX0ZhY2UsIFQ0Ml9GYWNlX0RvbmUpOiBVcGRhdGVkLgoJKFQ0Ml9GYWNlX0luaXQpOiBBZGQgbmV3IGNtYXAgc3VwcG9ydC4KCVVwZGF0ZWQuCgkoVDQyX0RyaXZlcl9Jbml0LCBUNDJfRHJpdmVyX0RvbmUsIFQ0Ml9TaXplX0luaXQsIFQ0Ml9TaXplX0RvbmUsCglUNDJfR2x5cGhTbG90X0luaXQsIFQ0Ml9HbHlwaFNsb3RfRG9uZSk6IFVwZGF0ZWQuCgkoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0NNYXBfQ2hhckluZGV4LCBUNDJfQ01hcF9DaGFyTmV4dCk6IFRoaXMuCglVcGRhdGVkLgoJKFQ0Ml9DaGFyX1NpemUsIFQ0Ml9QaXhlbF9TaXplKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBUaGlzLgoJKFQ0Ml9Mb2FkX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9HbHlwaFNsb3RfTG9hZCk6IFRoaXMuCgoJKHQ0Ml9pbml0X2xvYWRlciwgdDQyX2RvbmVfbG9hZGVyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9sb2FkZXJfaW5pdCwgdDQyX2xvYWRlcl9kb25lKTogVGhpcy4KCShUNDJfTmV3X1BhcnNlciwgVDQyX0ZpbmFsaXplX1BhcnNlcik6IFJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VyX2luaXQsIHQ0Ml9wYXJzZXJfZG9uZSk6IFRoaXMuCgkocGFyc2VfZGljdCk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfcGFyc2VfZGljdCk6IFRoaXMuCgkoaXNfYWxwaGEsIGlzX3NwYWNlLCBoZXh2YWwpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2lzX2FscGhhLCB0NDJfaXNfc3BhY2UsIHQ0Ml9oZXh2YWwpOiBUaGlzLgoJKHBhcnNlX2ZvbnRfbmFtZSwgcGFyc2VfZm9udF9iYm94LCBwYXJzZV9mb250X21hdHJpeCwKCXBhcnNlX2VuY29kaW5nLCBwYXJzZV9zZm50cywgcGFyc2VfY2hhcnN0cmluZ3MsIHBhcnNlX2RpY3QpOgoJUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZV9mb250X25hbWUsIHQ0Ml9wYXJzZV9mb250X2Jib3gsIHQ0Ml9wYXJzZV9mb250X21hdHJpeCwKCXQ0Ml9wYXJzZV9lbmNvZGluZywgdDQyX3BhcnNlX3NmbnRzLCB0NDJfcGFyc2VfY2hhcnN0cmluZ3MsCgl0NDJfcGFyc2VfZGljdCk6IFRoaXMuCglVcGRhdGVkLgoKCSh0NDJfa2V5d29yZHMpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi9KYW1maWxlLCBzcmMvdHlwZTQyL2Rlc2NyaXAubW1zOiBVcGRhdGVkLgoKMjAwMi0wNi0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZCA4YnBwIHN1cHBvcnQgdG8gQkRGIGRyaXZlci4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2Vfc3RhcnQpOiBIYW5kbGUgOGJwcC4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfR2x5cGhfTG9hZCk6IERpdHRvLgoJKiBzcmMvYmRmL1JFQURNRTogVXBkYXRlZC4KCjIwMDItMDYtMDIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX3BoeV9mb250X2RvbmUpOiBGcmVlIGBibHVlX3ZhbHVlcycgYXJyYXkuCgoyMDAyLTA1LTI5ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9yZWFkc3RyZWFtKTogQWxsb2NhdGUgYGJ1ZicgZHluYW1pY2FsbHkuCgkoX2JkZl9wYXJzZV9nbHlwaHMpOiBVc2UgY29ycmVjdCBzaXplIGZvciBhbGxvY2F0aW5nCglgZm9udC0+dW5lbmNvZGVkJy4KCShiZGZfbG9hZF9mb250KTogRnJlZSBhcnJheSBjb25kaXRpb25hbGx5LgoJUmV0dXJuIHByb3BlciBlcnJvciBjb2RlIGluIGNhc2Ugb2YgZmFpbHVyZS4KCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KTogTWFrZSBpdCBtb3JlIHJvYnVzdCBhZ2FpbnN0Cgl1bnVzdWFsIGZvbnRzLgoKMjAwMi0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2JkZi9kZXNjcmlwLm1tcywgc3JjL3R5cGU0Mi9kZXNjcmlwLm1tczogTmV3IGZpbGVzLgoJKiBkZXNjcmlwLm1tcyAoYWxsKTogVXBkYXRlZC4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2VfZ2x5cGhzKTogRml4IHR5cG8gd2hpY2ggcHJldmVudGVkCgljb21waWxhdGlvbi4KCSogc3JjL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA1LTI4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL21ha2VmaWxlLCBidWlsZHMvYW1pZ2Evc21ha2VmaWxlLAoJYW1pZ2EvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogVXBkYXRlZCB0byBpbmNsdWRlCglzdXBwb3J0IGZvciBCREYgYW5kIFR5cGU0MiBkcml2ZXJzLgoKCSogZG9jcy9tb2R1bGVzLnR4dDogVXBkYXRlZC4KCjIwMDUtMDUtMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZmlsZSBmb3IgbmV4dCByZWxlYXNlICgyLjEuMSkuCgoJKiBzcmMvYmRmL2JkZmxpYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR4Zjg2LmgsIHNyYy9iYXNlL2Z0eGY4Ni5jOiBOZXcgZmlsZXMuCglUaGV5IHByb3ZpZGUgYSBuZXcgQVBJIChGVF9HZXRfWDExX0ZvbnRfRm9ybWF0KSB0byByZXRyaWV2ZSBhbgoJWDExLWNvbXBhdGlibGUgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGZvbnQgZm9ybWF0IG9mIGEgZ2l2ZW4gZmFjZS4KCVRoaXMgd2FzIHB1dCBpbiBhIG5ldyBvcHRpb25hbCBiYXNlIHNvdXJjZSBmaWxlLCBjb3JyZXNwb25kaW5nIHRvIGEKCW5ldyBwdWJsaWMgaGVhZGVyIChuYW1lZCBGVF9YRlJFRTg2X0ggc2luY2UgdGhpcyBmdW5jdGlvbiBzaG91bGQKCW9ubHkgYmUgdXNlZCB3aXRoaW4gdGhlIFhGcmVlODYgZm9udCBzZXJ2ZXIgSU1PKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1hGUkVFODZfSCk6IE5ldyBtYWNybyAobm90Cglkb2N1bWVudGVkIHlldCkuCgoJKiBzcmMvYmFzZS9mdHR5cGUxLmM6IE5ldyBmaWxlLCBwcm92b2RpbmcgdHdvIG5ldyBBUEkgZnVuY3Rpb25zCgkoRlRfR2V0X1BTX0ZvbnRfSW5mbyBhbmQgRlRfSGFzX1BTX0dseXBoX05hbWVzKS4KCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWssIHNyYy9iYXNlL2Rlc2NyaXAubW1zOgoJVXBkYXRpbmcgYnVpbGQgY29udHJvbCBmaWxlcyBmb3IgdGhlIG5ldyBmaWxlcyAiZnR4Zjg2LmMiIGFuZAoJImZ0dHlwZTEuYyIgaW4gc3JjL2Jhc2UuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXhlZCBhIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgZmFtaWx5IGJsdWUgem9uZXMgc3Vic3RpdHV0aW9uIGZyb20gaGFwZW5uaW5nIGNvcnJlY3RseS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiZGYuaCBGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBBZGRpbmcKCWRvY3VtZW50YXRpb24gY29tbWVudC4KCjIwMDItMDUtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IERvbid0IHVzZSBGVF9TVFJFQU1fUkVBRF9BVAoJYnV0IEZUX1NUUkVBTV9SRUFELgoJRGVjbGFyZSBgc3RyZWFtJyB2YXJpYWJsZS4KCgkqIHNyYy9iZGYvYmRmbGliLmMgKF9iZGZfcGFyc2VfZ2x5cGhzKTogUmVwbGFjZSBmbG9hdGluZyBwb2ludCBtYXRoCgl3aXRoIGNhbGxzIHRvIGBGVF9NdWxEaXYnLgoKMjAwMi0wNS0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGluZyB0aGUgU0ZOVCBuYW1lIHRhYmxlIGxvYWRlciB0byBzdXBwb3J0IHZhcmlvdXMgYnVnZ3kgZm9udHMuCglJdCBub3cgaWdub3JlcyBlbXB0eSBuYW1lIGVudHJpZXMsIGVudHJpZXMgd2l0aCBpbnZhbGlkIHBvaW50ZXIKCU9mZnNldHMgYW5kIGNlcnRhaW4gZm9udHMgY29udGFpbmluZyB0YWJsZXMgd2l0aCBicm9rZW4KCSJzdG9yYWdlT2Zmc2V0IiBmaWVsZHMuCgoJTmFtZSBzdHJpbmdzIGFyZSBub3cgbG9hZGVkIG9uIGRlbWFuZCwgd2hpY2ggcmVkdWNlcyB0aGUgbWVtb3J5CglyZXF1aXJlbWVudHMgZm9yIGEgZ2l2ZW4gRlRfRmFjZSB0cmVtZW5kb3VzbHkgKGZvciBleGFtcGxlLCB0aGUgbmFtZQoJdGFibGUgb2YgQXJpYWwudHRmIGlzIGFib3V0IDEwS2IgYW5kIGNvbnRhaW5zIDcwIG5hbWVzKS4KCglUaGlzIGlzIGEgdGVtcG9yYXJ5IGZpeC4gIFRoZSB3aG9sZSBuYW1lIHRhYmxlIGxvYWRlciBhbmQgaW50ZXJmYWNlCgl3aWxsIGJlIHJld3JpdHRlbiBpbiBhIG11Y2ggbW9yZSBjbGVhbmx5IHdheSBzaG9ydGx5LCBvbmNlIENTRUggaGF2ZQoJYmVlbiBpbnRyb2R1Y2VkIGluIHRoZSBzb3VyY2VzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX05hbWVFbnRyeVJlYyk6IENoYW5nZQoJdHlwZSBvZiBgc3RyaW5nT2Zmc2V0JyB0byBGVF9VTG9uZy4KCShUVF9OYW1lVGFibGVSZWMpOiBDaGFuZ2UgdHlwZSBvZiBgbnVtTmFtZVJlY29yZHMnIGFuZAoJYHN0b3JhZ2VPZmZzZXQnIHRvIEZUX1VJbnQuCglSZXBsYWNlIGBzdG9yYWdlJyB3aXRoIGBzdHJlYW0nLgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBMb2FkIG5hbWUgb24gZGVtYW5kLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBEaXR0by4KCU1ha2UgY29kZSBtb3JlIHJvYnVzdC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFRUX05hbWVFbnRyeV9Db252ZXJ0RnVuYyk6IE5ldyB0eXBlZGVmLgoJKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgaXQuCglNYWtlIGNvZGUgbW9yZSByb2J1c3QuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogVXNlIGBzdGF0aWMnIGZvciBhcnJheXMuCglIYW5kbGUgaW52YWxpZCBgc3RvcmFnZU9mZnNldCcgZGF0YSBiZXR0ZXIuCglTZXQgbGVuZ3RoIGZpZWxkcyB0byB6ZXJvIGZvciBpbnZhbGlkIG9yIGlnbm9yZWQgZGF0YS4KCVJlbW92ZSBjb2RlIHdpdGhpbiBGVF9ERUJVR19MRVZFTF9UUkFDRS4KCShUVF9GcmVlX05hbWVzKTogVXBkYXRlZC4KCjIwMDItMDUtMjQgIFRpbSBNb29uZXkgIDxlbmNoYW50ZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogYnVpbGRzL3VuaXgvZnQtbXVubWFwLm00OiBOZXcgZmlsZSwgZXh0cmFjdGVkIEZUX01VTk1BUF9ERUNMIGFuZAoJRlRfTVVOTUFQX1BBUkFNIGZyb20gYWNsb2NhbC5tNCBpbnRvIGhlcmUsIHNvIGFjbG9jYWwubTQgY2FuIGJlCglyZWJ1aWx0IGZyb20gc291cmNlcy4gIFNldCBtYWNybyBzZXJpYWwgdG8gMSwgYW5kIHVzZSB0aGlyZCBhcmd1bWVudAoJdG8gQUNfREVGSU5FIGZvciBvdXIgdHdvIGN1c3RvbSBzeW1ib2xzLCBzbyBmdGNvbmZpZy5pbiBjb3VsZCBvbmUgZGF5CgliZSByZWJ1aWx0IHdpdGggYXV0b2hlYWRlciAobm90IHJlY29tbWVuZGVkIG5vdywgZnRjb25maWcuaW4gaXMgYQoJY3VzdG9tIHNvdXJjZSBmaWxlKQoKMjAwMi0wNS0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfQkVaSUVSX0gpOiBSZW1vdmVkLgoJKEZUX0JERl9IKTogTmV3IG1hY3JvIGZvciBhY2Nlc3NpbmcgYGZ0YmRmLmgnLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jIChoZXh2YWwpOiBGaXggdHlwby4KCjIwMDItMDUtMjEgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxUmFkaXgpOiBOZXcgZnVuY3Rpb24uCgkodDFfdG9pbnQpOiBVc2UgaXQgdG8gaGFuZGxlIG51bWJlcnMgaW4gcmFkaXggZm9ybWF0LgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBBZGQgZHVtbXkKCWZvciB1bmRvY3VtZW50ZWQsIG9ic29sZXRlIG9wY29kZSAxNS4KCjIwMDItMDUtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92ZWQgY29tcGlsZXIgd2FybmluZywgYW5kIGNoYW5nZWQgYWxsIHRhYmxlcwoJdG8gdGhlICJzdGF0aWMgY29uc3QiIHN0b3JhZ2Ugc3BlY2lmaWVyIChpbnN0ZWFkIG9mIHNpbXBseQoJYHN0YXRpYycpLgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jIChoZXh2YWwpOiBVc2UgbW9yZSBlZmZpY2llbnQgY29kZS4KCVJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGJkZi5oLCBzcmMvYmFzZS9mdGJkZi5jLAoJc3JjL2Jhc2UvZGVzY3JpcC5tbXMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rCgkoRlRfR2V0X0JERl9DaGFyc2V0X0lEKTogTmV3IEFQSSB0byByZXRyaWV2ZSBCREYtc3BlY2lmaWMgc3RyaW5ncwoJZnJvbSBhIGZhY2UuICBUaGlzIGlzIG11Y2ggY2xlYW5lciB0aGFuIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgdHlwZXMKCSJCREZfUHVibGljX0ZhY2UiIGRlZmluZWQgaW4gRlRfSU5URVJOQUxfQkRGX1RZUEVTX0guCgoyMDAyLTA1LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL1JFQURNRTogTWVudGlvbiBNaWNyb3NvZnQncyBTQklUIHRvb2wuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jaWQvY2lkcml2ZXIuYywgc3JjL3BjZi9wY2Zkcml2ZXIuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywKCXNyYy93aW5mb250cy93aW5mbnQuYywgc3JjL3R5cGU0Mi90NDJkcml2ci5jLCBzcmMvYmRmL2JkZmRyaXZyLmMKCVtGVF9DT05GSUdfT1BUSU9OX0RZTkFNSUNfRFJJVkVSU106IENvbXBsZXRlbHkgcmVtb3ZlZC4gIEl0IGhhcwoJYmVlbiBuZXZlciB1c2VkLgoKMjAwMi0wNS0yMSAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+LgoKCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBzL1Q0Ml9FTkNPRElOR19UWVBFXy9UMV9FTkNPRElOR19UWVBFXy8uCgkocGFyc2VfZm9udF9tYXRyaXgpOiBSZW1vdmUgdW5uZWNlc3NhcnkgY29kZS4KCShwYXJzZV9zZm50cyk6IEluaXRpYWxpemUgc29tZSB2YXJpYWJsZXMuCgkodDQyX2RyaXZlcl9jbGFzcykgW1RUX0NPTkZJR19PUFRJT05fQllURUNPREVfSU5URVJQUkVURVJdOiBVc2UKCWZ0X21vZHVsZV9kcml2ZXJfaGFzX2hpbnRlciBjb25kaXRpb25hbGx5LgoJTW92ZWQgc29tZSB0eXBlIDQyIHNwZWNpZmljIHN0cnVjdHVyZSBkZWZpbml0aW9ucyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1Q0Ml9UWVBFU19IKToKCU5ldyBtYWNyby4KCjIwMDItMDUtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjc2JpdHMuaCAoRlRDX1NCaXQpOiBBZGRlZCBhIG5ldyBmaWVsZAoJYG51bV9ncmF5cycgZm9yIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiB1c2VkIGdyYXkgbGV2ZWxzLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogSW5pdGlhbGl6ZSBpdC4KCjIwMDItMDUtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgYSBkcml2ZXIgZm9yIEJERiBmb250cyB3cml0dGVuIGJ5IEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaQoJPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+LiAgSGVhdmlseSBtb2RpZmllZCBieSBtZSB0bwoJYmV0dGVyIGFkYXB0IGl0IHRvIEZyZWVUeXBlLCByZW1vdmluZyB1bm5lZWRlZCBzdHVmZi4gIEFkZGl0aW9uYWxseSwKCWl0IG5vdyBzdXBwb3J0cyBNYXJrIExlaXNoZXIncyBCREYgZXh0ZW5zaW9uIGZvciBhbnRpLWFsaWFzZWQKCWJpdG1hcCBnbHlwaHMgd2l0aCAyIGFuZCA0IGJwcC4KCgkqIHNyYy9iZGYvKjogTmV3IGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9iZGZ0eXBlcy5oOiBOZXcgZmlsZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZGVkIEJERiBkcml2ZXIgY29tcG9uZW50cy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycmRlZi5oOiBBZGRlZCBlcnJvciBjb2RlcyBmb3IgQkRGIGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL0phbWZpbGU6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfQkRGX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfc3ByaW50Zik6IE5ldyBhbGlhcyBmb3IKCXNwcmludGYuCgoyMDAyLTA1LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgVHlwZSA0MiBkcml2ZXIKCWNvbXBvbmVudC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jOiBVc2UgaXQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX1BDRl9UWVBFU19IKToKCU5ldyBtYWNyby4KCjIwMDItMDUtMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlNDIvSmFtZmlsZTogTmV3IGZpbGUuCgoyMDAyLTA1LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkaW5nIGEgZHJpdmVyIGZvciBUeXBlNDIgZm9udHMgd3JpdHRlbiBieSBSb2JlcnRvIEFsYW1lZGEKCTxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyLyo6IE5ldyBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9KYW1maWxlOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF94ZGlnaXQsIGZ0X21lbWNtcCwKCWZ0X2F0b2kpOiBOZXcgYWxpYXNlcyBmb3IgeGRpZ2l0LCBtZW1jbXAsIGFuZCBhdG9pLCByZXNwZWN0aXZlbHkuCgoyMDAyLTA1LTEyICBPd2VuIFRheWxvciAgPG90YXlsb3JAcmVkaGF0LmNvbT4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb29rVXBfVGFibGUpOiBQcm90ZWN0IGFnYWluc3QgdGFibGVzCgl3aXRoIGEgemVybyBsZW5ndGggdmFsdWUuCgoyMDAyLTA1LTEyICBNaWNoYWVsIFBmZWlmZmVyICA8bWljaGFlbC5wZmVpZmZlckB1dGFuZXQuYXQ+CgoJKiBidWlsZHMvYmVvcy9iZW9zLm1rOiBJbmNsdWRlIGBsaW5rLXN0ZC5taycuCgoyMDAyLTA1LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmggKFQxX0xvYWRlcik6IFJlbmFtZWQgdG8uLi4KCShUMV9Mb2FkZXJSZWMpOiBUaGlzLgoJKFQxX0xvYWRlcik6IE5vdyBwb2ludGVyIHRvIFQxX0xvYWRlclJlYy4KCSogc3JjL3R5cGUxL3QxbG9hZC5jOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy90eXBlMS90MWxvYWQuYywKCXNyYy90eXBlMS90MW9ianMuYzoKCXMvVDFfRU5DT0RJTkdfVFlQRV9FWFBPUlQvVDFfRU5DT0RJTkdfVFlQRV9FWFBFUlQvLgoKMjAwMi0wNS0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBBZGQgYSBub3RlIHJlZ2FyZGluZyBsaWJ0dGYgdnMuIGxpYmZyZWV0eXBlLgoKMjAwMi0wNS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZyZWVUeXBlIDIgY2FuIG5vdyBiZSBidWlsdCBpbiBhbiBleHRlcm5hbCBkaXJlY3Rvcnkgd2l0aCB0aGUKCWNvbmZpZ3VyZSBzY3JpcHQgYWxzby4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoSU5DTFVERVMpOiBBZGQgYE9CSl9ESVInLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rIChoYXZlX21rKTogTmV3IHZhcmlhYmxlIHRvIHRlc3QgZm9yCglleHRlcm5hbCBidWlsZC4KCSh1bml4LWRlZi5tayk6IERlZmluZWQgYWNjb3JkaW5nIHRvIHZhbHVlIG9mIGBoYXZlX21rJy4KCSogYnVpbGRzL3VuaXgvdW5peC5tayAoaGF2ZV9tayk6IE5ldyB2YXJpYWJsZSB0byB0ZXN0IGZvcgoJZXh0ZXJuYWwgYnVpbGQuCglTZWxlY3QgaW5jbHVkZSBwYXRocyBmb3IgdW5peC1kZWYubWsgYW5kIHVuaXgtY2MubWsgYWNjb3JkaW5nCgl0byB2YWx1ZSBvZiBgaGF2ZV9taycuCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluIChPQkpfQlVJTEQpOiBOZXcgdmFyaWFibGUuCgkoRElTVENMRUFOKTogVXNlIGl0LgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChMSUJUT09MKTogRGVmaW5lIGRlZmF1bHQgdmFsdWUgb25seQoJaWYgbm90IHlldCBkZWZpbmVkLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsKTogVXNlIGBPQkpfQlVJTEQnIGZvciBpbnN0YWxsaW5nCglmcmVldHlwZS1jb25maWcuCgoJKiBjb25maWd1cmU6IERvbid0IGRlcGVuZCBvbiBiYXNoIGZlYXR1cmVzLgoJKGZ0Ml9kaXIsIGFic19jdXJyX2RpciwgYWJzX2Z0Ml9kaXIpOiBOZXcgdmFyaWFibGVzIChjb2RlCglwYXJ0aWFsbHkgdGFrZW4gZnJvbSBBdXRvY29uZikuCglCdWlsZCBhIGR1bW15IE1ha2VmaWxlIGlmIG5vdCBidWlsZGluZyBpbiBzb3VyY2UgdHJlZS4KCgkqIGRvY3MvSU5TVEFMTDogRG9jdW1lbnQgaXQuCgoyMDAyLTA1LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKTogRmluYWxseSBmaXhpbmcgdGhlIGxhc3QKCWJ1ZyB0aGF0IHByZXZlbnRlZCBGcmVlVHlwZSAyLnggYW5kIEZyZWVUeXBlIDEueCB0byBwcm9kdWNlCgliaXQtYnktYml0IGlkZW50aWNhbCBtb25vY2hyb21lIGdseXBoIGJpdG1hcHMgd2l0aCBuYXRpdmUgVHJ1ZVR5cGUKCWhpbnRpbmcuICBUaGUgY3VscHJpdCB3YXMgYSBzaW5nbGUtYml0IGZsYWcgdGhhdCB3YXNuJ3Qgc2V0Cgljb3JyZWN0bHkgYnkgdGhlIFRydWVUeXBlIGdseXBoIGxvYWRlci4KCgkqIHNyYy9vdGxheW91dC9vdGxheW91dC5oLCBzcmMvb3RsYXlvdXQvb3RsYmFzZS5jLAoJc3JjL290bGF5b3V0L290bGJhc2UuaCwgc3JjL290bGF5b3V0L290bGNvbmYuaCwKCXNyYy9vdGxheW91dC9vdGxnZGVmLmMsIHNyYy9vdGxheW91dC9vdGxnZGVmLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5jLCBzcmMvb3RsYXlvdXQvb3RsZ3Bvcy5oLAoJc3JjL290bGF5b3V0L290bGdzdWIuYywgc3JjL290bGF5b3V0L290bGdzdWIuaCwKCXNyYy9vdGxheW91dC9vdGxqc3RmLmMsIHNyYy9vdGxheW91dC9vdGxqc3RmLmgsCglzcmMvb3RsYXlvdXQvb3RsdGFibGUuYywgc3JjL290bGF5b3V0L290bHRhYmxlLmgsCglzcmMvb3RsYXlvdXQvb3RsdGFncy5oOiBOZXcgT3BlblR5cGUgTGF5b3V0IHNvdXJjZSBmaWxlcy4gIFRoZQoJbW9kdWxlIGlzIHN0aWxsIGluY29tcGxldGUuCgoyMDAyLTA1LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfaW5kZXgpOiBGaXggc2VyaW91cyB0eXBvCgkoMHhGRkZVIC0+IDB4RkZGRlUpLgoKMjAwMi0wNS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9JTlNUQUxMOiBGaXggVVJMIG9mIG1ha2VwcC4KCjIwMDItMDUtMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9mYWNlX2dldF9uYW1lKTogRml4aW5nIGEgYnVnIHRoYXQgY2F1c2VkCglGcmVlVHlwZSB0byBjcmFzaCB3aGVuIGNlcnRhaW4gYnJva2VuIGZvbnRzIChlLmcuICJoeWE2Z2IudHRmIikKCXdlcmUgb3BlbmVkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBBcHBsaWVkIGEgc21hbGwgd29yay1hcm91bmQgdG8KCW1hbmFnZSBmb250cyBjb250YWluaW5nIGEgYnJva2VuIG5hbWUgdGFibGUgKGUuZy4gImh5YTZnYi50dGYiKS4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBGaXhlZCBvdmVyLXJlc3RyaWN0aXZlCgl2YWxpZGF0aW9uIHRlc3QuICBUaGUgY2hhcm1hcCB2YWxpZGF0b3Igbm93IGFjY2VwdHMgb3ZlcmxhcHBpbmcKCXJhbmdlcyBpbiBmb3JtYXQgNCBjaGFybWFwcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9pbmRleCk6IFN3aXRjaGVkIHRvIGEgYmluYXJ5CglzZWFyY2ggYWxnb3JpdGhtLiAgQ2VydGFpbiBmb250cyBjb250YWluIG1vcmUgdGhhbiAxNzAgZGlzdGluY3QKCXNlZ21lbnRzIQoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaDogQWRkaW5nIGFuIGFsaWFzIGZvciB0aGUgYGV4aXQnCglmdW5jdGlvbi4gIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSBuZWFyIGZ1dHVyZSB0byBwYW5pYyBpbiBjYXNlIG9mCgl1bmV4cGVjdGVkIGV4Y2VwdGlvbiAod2hpY2ggc2hvdWxkbid0IGhhcHBlbiBpbiB0aGVvcnkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaCwgc3JjL2Jhc2UvZnRoYXNoLmM6IE5ldyBmaWxlcy4KCVRoaXMgaXMgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiBkeW5hbWljIGhhc2ggdGFibGVzIHVzaW5nIGEgbGluZWFyCglhbGdvcml0aG0gKHRvIGdldCByaWQgb2YgYHN0YWxscycgZHVyaW5nIHJlc2l6ZXMpLiAgSW4gdGhlIGZ1dHVyZQoJdGhpcyB3aWxsIGJlIHVzZWQgaW4gYXQgbGVhc3QgdGhyZWUgcGFydHMgb2YgdGhlIGxpYnJhcnk6IHRoZSBjYWNoZQoJc3ViLXN5c3RlbSwgdGhlIG9iamVjdCBzdWItc3lzdGVtLCBhbmQgdGhlIG1lbW9yeSBkZWJ1Z2dlci4KCgkqIHNyYy9iYXNlL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmggKEZUX0lOVEVSTkFMX0hBU0hfSCwKCUZUX0lOVEVSTkFMX09CSkVDVF9IKTogTmV3IG1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjb3JlLmg6IE5ldyBmaWxlIHRvIGdyb3VwIGFsbCBuZXcKCWRlZmluaXRpb25zIHJlbGF0ZWQgdG8gZXhjZXB0aW9uIGhhbmRsaW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4gIEl0CglpcyB2ZXJ5IGxpa2VseSB0aGF0IHRoaXMgZmlsZSB3aWxsIGRpc2FwcGVhciBvciBiZSByZW5hbWVkIGluIHRoZQoJZnV0dXJlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzbWVtLmg6CglBZGRpbmcgY29tbWVudHMgdG8gYmV0dGVyIGV4cGxhaW4gdGhlIG9iamVjdCBzdWItc3lzdGVtIGFzIHdlbGwgYXMKCXRoZSBuZXcgbWVtb3J5IG1hbmFnZXIgaW50ZXJmYWNlLgoKMjAwMi0wNC0zMCAgV2VubGluIEluc3RpdHV0ZSAoVG9tIEJpc2hvcCkgIDx3ZW5saW5Ad2VubGluLmNvbT4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHAyY19zdHIpOiBSZW1vdmVkLgoJKGZpbGVfc3BlY19mcm9tX3BhdGgpIFtUQVJHRVRfQVBJX01BQ19DQVJCT05dOiBBZGRlZCBzdXBwb3J0IGZvcgoJT1MgWC4KCShpc19kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IERlZmluZSBvbmx5IGZvciBPUyBYLgoJSGFuZGxlIGBuYW1lTGVuJyA8PSA2IGFsc28uCgkocGFyc2VfZm9uZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG5hbWVfdGFibGUnLgoJVXNlIGZ1bmN0aW9uYWxpdHkgb2Ygb2xkIHAyY19zdHIgZGlyZWN0bHkuCglBZGQgc2FmZXR5IGNoZWNrcy4KCShyZWFkX2x3Zm4pOiBJbml0aWFsaXplIGBzaXplX3AnLgoJQ2hlY2sgZm9yIHNpemVfcCA9PSBOVUxMLgoJKG5ld19tZW1vcnlfc3RyZWFtLCBvcGVuX2ZhY2VfZnJvbV9idWZmZXIpOiBVcGRhdGVkIHRvIEZyZWVUeXBlIDIuMS4KCShGVF9OZXdfRmFjZV9Gcm9tX0xXRk4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBtZW1vcnknLgoJUmVtb3ZlIHNvbWUgZGVhZCBjb2RlLgoJKEZUX05ld19GYWNlX0Zyb21fU0ZOVCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYHN0cmVhbScuCgkoRlRfTmV3X0ZhY2VfRnJvbV9kZm9udCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IERlZmluZSBvbmx5IGZvcgoJT1MgWC4KCShGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBlcnJvcicuCgkoUmVzb3VyY2VGb3JrU2l6ZSk6IE5ldyBmdW5jdGlvbi4KCShGVF9OZXdfRmFjZSk6IFVzZSBpdC4KCUhhbmRsZSBlbXB0eSByZXNvdXJjZSBmb3Jrcy4KCUNvbmRpdGlvbmFsaXplIHNvbWUgY29kZSBmb3IgT1MgWC4KCUFkZCBjb2RlIHRvIGNhbGwgbm9ybWFsIGxvYWRlciBhcyBhIGZhbGxiYWNrLgoKMjAwMi0wNC0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCWBpbnRlcmZhY2UnIGlzIHJlc2VydmVkIG9uIHRoZSBNYWMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmgsCglzcmMvYmFzZS9mdG91dGxuLmM6IHMvaW50ZXJmYWNlL2Z1bmNfaW50ZXJmYWNlLy4KCSogc3JjL2Jhc2UvZnRiYm94LmMgKEZUX091dGxpbmVfR2V0X0JCb3gpOgoJcy9pbnRlcmZhY2UvYmJveF9pbnRlcmZhY2UvLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmM6IHMvaW50ZXJmYWNlL21vZHVsZV9pbnRlcmZhY2UvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZsb2FkLmg6CglzL2ludGVyZmFjZS9wc25hbWVzX2ludGVyZmFjZS8uCgkqIHNyYy9jaWQvY2lkcml2ZXIuYzogcy9pbnRlcmZhY2UvY2lkX2ludGVyZmFjZS8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IHMvaW50ZXJmYWNlL21vZHVsZV9pbnRlcmZhY2UvLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogcy9pbnRlcmZhY2UvZnVuY19pbnRlcmZhY2UvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYzogcy9pbnRlcmZhY2UvdHRfaW50ZXJmYWNlLy4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmM6IHMvaW50ZXJmYWNlL3QxX2ludGVyZmFjZS8uCgoJU29tZSBtb3JlIHZhcmlhYmxlIHJlbmFtZXMgdG8gYXZvaWQgdHJvdWJsZXMgb24gdGhlIE1hYy4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzoKCXMvVW5rbm93bnxBc2NlbmRpbmd8RGVzY2VuZGluZ3xGbGF0L1wxX1N0YXRlLy4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IHMvVFNjYW4vVENvb3JkLy4KCglPdGhlciBjaGFuZ2VzIGZvciB0aGUgTWFjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogRGVmaW5lIEZUX01BQ0lOVE9TSCBmb3IKCU1hYyBwbGF0Zm9ybXMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBzL21hY2ludG9zaC9GVF9NQUNJTlRPU0gvLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogTWFrZSBgcGl0Y2gnIGFsd2F5cwoJYW4gZXZlbiBudW1iZXIuCgoyMDAyLTA0LTI5ICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcyAoYWxsKTogQWRkIHBmciBkcml2ZXIuCgoyMDAyLTA0LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmVycm9yLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IEFkZCBQRlIgZXJyb3IgY29kZXMuCgkqIHNyYy9wZnIvcGZyZ2xvYWQuYzogSW5jbHVkZSBwZnJlcnJvci5oLgoJVXNlIFBDRiBlcnJvciBjb2Rlcy4KCShwZnJfZXh0cmFfaXRlbV9sb2FkX3N0ZW1fc25hcHMpOiBGaXggZGVidWcgbWVzc2FnZS4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9leHRyYV9pdGVtX2xvYWRfYml0bWFwX2luZm8sIHBmcl9nbHlwaF9sb2FkX3NpbXBsZSwKCXBmcl9nbHlwaF9sb2FkX2NvbXBvdW5kKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9mYWNlX2luaXQpOiBSZXR1cm4gUEZSX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0LgoJKiBzcmMvcGZyL3J1bGVzLm1rIChQRlJfRFJWX0gpOiBJbmNsdWRlIHBmcmVycm9yLmguCgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRmFjZV9Jbml0KSBbIUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCWByb290JyAtPiBgZmFjZS0+cm9vdCcuCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJUmVtb3ZlZC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBEZWNsYXJlIFRUX0J1aWxkX0NNYXBzIG9ubHkgZm9yCglGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUy4KCjIwMDItMDQtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfbG9va3VwKSwKCXNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX2ZhbWlseV9pbml0KSwKCXNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jKSwKCXNyYy9jYWNoZS9mdGNzYml0cy5jIChGVENfU0JpdF9DYWNoZV9Mb29rdXApOiBVc2UgRlRDX0Vycl8qLgoJc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApOiBVc2UgRlRDX0Vycl8qLgoJKEZUQ19JbWFnZUNhY2hlX0xvb2t1cCk6IEZpeCBoYW5kbGluZyBvZiBpbnZhbGlkIGFyZ3VtZW50cy4KCjIwMDItMDQtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogU2V0IGB2ZXJzaW9uX2luZm8nIHRvIDk6MTozIChGVDIKCXZlcnNpb24gMi4wLjkgaGFzIDk6MDozKS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZCAodXNpbmcgYXV0b2NvbmYgMi41MykuCgoyMDAyLTA0LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1zX2ZhcnNlKTogRml4IGRlYnVnIG1lc3NhZ2UuCgkocGZyX3BoeV9mb250X2xvYWQpOiBzL3NpemUvU2l6ZS8gZm9yIGxvY2FsIHZhcmlhYmxlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKHBmcl9zbG90X2xvYWQpOiBSZW1vdmUgcmVkdW5kYW50IGxvY2FsIHZhcmlhYmxlLgoKMjAwMi0wNC0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBhIFBGUiBmb250IGRyaXZlciB0byB0aGUgRnJlZVR5cGUgc291cmNlcy4gIE5vdGUgdGhhdCBpdAoJZG9lc24ndCBzdXBwb3J0IGVtYmVkZGVkIGJpdG1hcHMgb3Iga2VybmluZyB0YWJsZXMgeWV0LgoKCXNyYy9wZnIvKjogTmV3IGZpbGVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oLCBzcmMvSmFtZWZpbGU6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5oIChUMV9Mb2FkX0dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYwoJKFQxX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgcGFyYW1ldGVyIHNpZ24tbmVzcyBpbiBjYWxsYmFjawoJZnVuY3Rpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX01FTV9aRVJPLCBGVF9aRVJPKTogTmV3CgltYWNyb3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX05FWFRfT0ZGMywgRlRfTkVYVF9VT0ZGMywKCUZUX05FWFRfT0ZGM19MRSwgRlRfTkVYVF9VT0ZGM19MRSk6IE5ldyBtYWNyb3MgdG8gcGFyc2UgaW4tbWVtb3J5CgkyNC1iaXQgaW50ZWdlcnMuCgoyMDAyLTA0LTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYywKCWJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmM6IFZlcnNpb24gMi4xLjAgY291bGRuJ3QgYmUgbGlua2VkCglhZ2FpbnN0IGFwcGxpY2F0aW9ucyBpbiBXaW4zMiBhbmQgQW1pZ2EgYnVpbGRzIGR1ZSB0byBjaGFuZ2VzIHRvCgkic3JjL2Jhc2UvZnRkZWJ1Zy5jIiB0aGF0IHdlcmUgbm90IHByb3Blcmx5IHByb3BhZ2F0ZWQgdG8KCSJidWlsZHMvd2luMzIiIGFuZCAiYnVpbGRzL2FtaWdhIi4gIFRoaXMgaGFzIGJlZW4gZml4ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXhjZXB0LmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzeXNpby5oLCBzcmMvYmFzZS9mdHN5c21lbS5jLCBzcmMvYmFzZS9mdHN5c2lvLmM6CglOZXcgZXhwZXJpbWVudGFsIGZpbGVzLgoKMjAwMi0wNC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4xLjAgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wNC0xNyAgTWljaGFlbCBKYW5zc29uICA8bWphbkBlbTItc29sdXRpb25zLmNvbT4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0NvbXB1dGVfTWF4X0FkdmFuY2UpOiBGaXhlZCBhIHNtYWxsIGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZS4KCjIwMDItMDQtMTYgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZnJlYWQgKHBjZl9nZXRfYWNjZWxsKTogRml4IHBhcnNpbmcgb2YgYWNjZWxlcmF0b3IKCXRhYmxlcy4KCjIwMDItMDQtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvRlRMLnR4dDogRm9ybWF0dGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUKCXJlbmRlciBwb29sIGZyb20gMzJrQnl0ZSB0byAxNmtCeXRlLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBSZW1vdmUgY29tcGlsZXIKCXdhcm5pbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9NQVhfRVhURU5TSU9OUyk6IFJlbW92ZWQuCgoJKiBkb2NzL0NIQU5HRVM6IFByZXBhcmluZyAyLjEuMCByZWxlYXNlLgoKMjAwMi0wNC0xMyAgV2VybmVyIExFTUJFUkcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBzL3JhbmQvUmFuZC8gdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA0LTEyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBVcGRhdGVkIHRoZSBVbml4LXNwZWNpZmljIHF1aWNrLWNvbXBpbGF0aW9uIGd1aWRlIHRvCgl3YXJuIGFib3V0IHRoZSBHTlUgTWFrZSByZXF1aXJlbWVudCBhdCBjb21waWxlIHRpbWUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoKCXNyYy9hdXRvaGludC9haG9wdGltLmMsCgoJc3JjL2Jhc2UvZnRkYmdtZW0uYywgc3JjL2Jhc2UvZnRkZWJ1Zy5jLCBzcmMvYmFzZS9mdG1hYy5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0c3lzdGVtLmMsCgoJc3JjL2NhY2hlL2Z0Y2ltYWdlLmMsIHNyYy9jYWNoZS9mdGNzYml0cy5jLAoKCXNyYy9jZmYvY2ZmZHJpdmVyLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywKCglzcmMvY2lkL2NpZGxvYWQuYywgc3JjL2NpZC9jaWRwYXJzZS5jLCBzcmMvY2lkL2NpZHJpdmVyLmMsCgoJc3JjL3BjZi9wY2Zkcml2ZXIuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCgoJc3JjL3BzYXV4L3QxY21hcC5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywKCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsCgoJc3JjL3BzbmFtZXMvcHNtb2R1bGUuYywKCglzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsCgoJc3JjL3NmbnQvc2Zkcml2ZXIuYywgc3JjL3NmbnQvdHRsb2FkLmMsCgoJc3JjL3Ntb290aC9mdGdyYXlzLmMsCgoJc3JjL3R5cGUxL3QxYWZtLmMsIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFnbG9hZC5jLAoJc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlMS90MXBhcnNlLmMsCgoJYnVpbGRzL3VuaXgvZnRjb25maWcuaW4sIGJ1aWxkcy92bXMvZnRjb25maWcuaCwKCglidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jOgoKCUFkZGVkIHRoZSBuZXcgY29uZmlndXJhdGlvbiBmaWxlICJmdHN0ZGxpYi5oIiB1c2VkIHRvIGRlZmluZQoJYWxpYXNlcyBmb3IgYWxsIElTTyBDIGxpYnJhcnkgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIGVuZ2luZQoJKGUuZy4gc3RybGVuLCBxc29ydCwgc2V0am1wLCBldGMuKS4KCglUaGlzIGVhc2VzIHRoZSBwb3J0aW5nIG9mIEZyZWVUeXBlIDIgdG8gZW52aXJvbm1lbnRzIGxpa2UKCVhGcmVlODYgbW9kdWxlcy9leHRlbnNpb25zLgoKCUFsc28gcmVtb3ZlZCBtYW55ICNpbmNsdWRlIDxzdHJpbmcuaD4sICNpbmNsdWRlIDxzdGRsaWIuaD4sIGV0Yy4KCWZyb20gdGhlIGVuZ2luZSdzIHNvdXJjZXMgd2hlcmUgdGhleSBhcmUgbm90IG5lZWRlZC4KCgkqIHNyYy9zZm50L3R0cG9zdC5jOiBVc2UgbWFjcm8gbmFtZSBmb3IgcHNuYW1lcy5oLgoKMjAwMi0wNC0xMiAgVmluY2VudCBDYXJvbiAgPHYuY2Fyb25AemVyb2RldXgubmV0PgoKCSogY29uZmlndXJlLCBidWlsZHMvZGV0ZWN0Lm1rOiBVcGRhdGVkIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJpbnQKCWEgd2FybmluZyBtZXNzYWdlIGluIGNhc2UgR05VIE1ha2UgaXNuJ3QgdXNlZCB0byBidWlsZCB0aGUgbGlicmFyeS4KCjIwMDItMDQtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTLCBKYW1maWxlLmluOiBVcGRhdGVzIGZvciB0aGUgMi4xLjAgcmVsZWFzZS4KCgkqIGRvY3MvRlRMLnR4dDogVXBkYXRlZCBsaWNlbnNlIHRleHQgdG8gcHJvdmlkZSBhIHByZWZlcnJlZAoJZGlzY2xhaW1lciBhbmQgYWRqdXN0IGNvcHlyaWdodCBkYXRlcy9leHRlbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oOiBSZW1vdmluZyBvYnNvbGV0ZSAoYW5kCgljb25mdXNpbmcpIGNvbW1lbnQuCgoJKiBKYW1maWxlLmluOiBOZXcgZmlsZS4KCjIwMDItMDQtMTEgIE1heGltIFNoZW1hbmFyZXYgIDxtY3NlZW1hZ2dAeWFob28uY29tPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfaGxpbmUpOiBNaW5vciBvcHRpbWl6YXRpb24uCgoyMDAyLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRml4ZXMgZnJvbSB0aGUgc3RhYmxlIGJyYW5jaDoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTKToKCVJlbW92ZWQuCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oLCBzcmMvYmFzZS9mdGNhbGMuYwoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZC4KCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKEZUX1ZlY3Rvcl9MZW5ndGgpOiBDaGFuZ2UgYWxnb3JpdGhtIHRvIG1hdGNoCglvdXRwdXQgb2YgRnJlZVR5cGUgMS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX3NjYWxlX3dpZHRocyk6IEZpeGVkIGEgc21hbGwKCWJ1ZyB0aGF0IGNyZWF0ZWQgdW4tZXZlbiBzdGVtIHdpZHRocyB3aGVuIGhpbnRpbmcgUG9zdHNjcmlwdCBmb250cy4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFwYXJzZS5jOiAxNmJpdCBmaXhlcy4KCjIwMDItMDQtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IDE2Yml0IGZpeGVzLgoJKFRUX0xvYWRfU2ltcGxlX0dseXBoKTogSW1wcm92ZSBkZWJ1ZyBtZXNzYWdlcy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IDE2Yml0IGZpeGVzLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCXNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvcHNhdXgvcHNvYmpzLmgsIHNyYy90cnVldHlwZS90dGludGVycC5bY2hdLAoJc3JjL3NmbnQvdHRwb3N0Lmg6IHMvaW5kZXgvaWR4Ly4KCjIwMDItMDMtMzEgIFlhbyBaaGFuZyAgPHlhb3pAdmlkYXIubmlhYWEubmloLmdvdj4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfU2l6ZV9Jbml0KTogRml4IHR5cG8uCgoyMDAyLTAzLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvb3RsYXlvdXQvb3RsY29tbW4uYywgc3JjL290bGF5b3V0L290bGNvbW1uLmg6IHMvaW5kZXgvaWR4Ly4KCSogc3JjL3BzYXV4L3QxY21hcC5jOiBEaXR0by4KCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBEaXR0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFRUX0dvdG9fVGFibGVfRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoVFRfTG9hZGVyX0dvdG9UYWJsZUZ1bmMpOiBUaGlzLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEZpeCBkZWJ1ZwoJbWVzc2FnZXMuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzbmFtZXNfaW50ZXJmYWNlKQoJWyFGVF9DT05GSUdfT1BUSU9OX0FET0JFX0dMWVBIX0xJU1RdOiBGaXggdHlwby4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfdGFibGUpOiAxNmJpdCBmaXguCgkqIHNyYy9zZm50L3R0Y21hcC5jOiAxNmJpdCBmaXhlcyAoMHhGRkZGIC0+IDB4RkZGRlUpLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IDE2Yml0IGZpeGVzLgoJKFRUX0J1aWxkX0NNYXBzKTogU2ltcGxpZnkgZGVidWcgbWVzc2FnZXMuCgkodHRfY21hcDEyX2NoYXJfbmV4dCk6IEZpeCBvZmZzZXQuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzLCBUVF9Mb2FkX0NNYXApOiBGaXggZGVidWcKCW1lc3NhZ2VzLgoJKFRUX0xvYWRfT1MyKTogMTZiaXQgZml4LgoKMjAwMi0wMy0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZGluZyBjb21tZW50cyB0byBzb21lIG9mCgl0aGUgVFRfRmFjZVJlYyBmaWVsZHMuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9uYW1lX2VudHJ5X2FzY2lpX2Zyb21fe3V0ZjE2LHVjczQsb3RoZXJ9OgoJTmV3IGZ1bmN0aW9ucy4KCSh0dF9mYWNlX2dldF9uYW1lKTogVXNlIHRoZW0gdG8gcHJvcGVybHkgZXh0cmFjdCBhbiBhc2NpaSBmb250IG5hbWUuCgoyMDAyLTAzLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmggKHQxX2JsZW5kX21heCk6IEZpeCB0eXBvLgoJKiBzcmMvYmFzZS9mdHN0cmVhbS5jOiBTaW1wbGlmeSBGVF9FUlJPUiBjYWxscy4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X2dseXBoX25hbWUpOiBGaXggZGVidWcgbWVzc2FnZS4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfRHJpdmVyX0luaXQsIENGRl9Ecml2ZXJfRG9uZSkKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBSZW1vdmVkLgoJKiBzcmMvY2ZmL3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSkKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBEaXR0by4KCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X0RyaXZlciwgVFRfRG9uZV9Ecml2ZXIpCglbVFRfQ09ORklHX09QVElPTl9FWFRFTkRfRU5HSU5FXTogRGl0dG8uCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5oOiBSZW5hbWluZyBkcml2ZXIgZnVuY3Rpb25zIHRvIHRoZQoJRlRfPFN1YmplY3Q+XzxBY3Rpb24+IHNjaGVtZToKCgkgIFRUX0luaXRfRHJpdmVyID0+IFRUX0RyaXZlcl9Jbml0CgkgIFRUX0RvbmVfRHJpdmVyID0+IFRUX0RyaXZlcl9Eb25lCgkgIFRUX0luaXRfRmFjZSAgID0+IFRUX0ZhY2VfSW5pdAoJICBUVF9Eb25lX0ZhY2UgICA9PiBUVF9GYWNlX0RvbmUKCSAgVFRfSW5pdF9TaXplICAgPT4gVFRfU2l6ZV9Jbml0CgkgIFRUX0RvbmVfU2l6ZSAgID0+IFRUX1NpemVfRG9uZQoJICBUVF9SZXNldF9TaXplICA9PiBUVF9TaXplX1Jlc2V0CgoyMDAyLTAzLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdm1zL2Z0Y29uZmlnLmg6IFJlbmFtZSBMT0NBTF9ERUYgYW5kIExPQ0FMX0ZVTkMgdG8KCUZUX0xPQ0FMIGFuZCBGVF9MT0NBTF9ERUYsIHJlc3BlY3RpdmVseSwgYXMgd2l0aCBvdGhlciBmdGNvbmZpZy5oCglmaWxlcy4KCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IEFkZCBhcmd1bWVudCB0byBGVF9MT0NBTCBhbmQKCUZUX0xPQ0FMX0RFRi4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IHMvRlRfQXNzZXJ0L0ZUX0FTU0VSVC8uCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVGVtcG9yYXJpbHkgZGVhY3RpdmF0ZSBjcmVhdGlvbiBvZgoJLi4vLi4vSmFtZmlsZS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoKMjAwMi0wMy0yOCAgS1VTQU5PIFRha2F5dWtpICA8QUU1VC1LU05AYXNhaGktbmV0Lm9yLmpwPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4IHNlcmlvdXMgdHlwb3MuCgoyMDAyLTAzLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTQXV4X1NlcnZpY2VSZWMpOiBGaXgKCWNvbXBpbGVyIHdhcm5pbmdzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRmFjZVJlYyk6IFVzZSBgY29uc3QnIGZvcgoJc29tZSBtZW1iZXJzLgoJKiBzcmMvYmFzZS9mdGFwaS5jIChGVF9OZXdfTWVtb3J5X1N0cmVhbSk6IEZpeCB0eXBvcy4KCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX3N0ZF9pbml0LCB0MV9jbWFwX3VuaWNvZGVfaW5pdCk6IEFkZAoJY2FzdC4KCSh0MV9jbWFwX3tzdGFuZGFyZCxleHBlcnQsY3VzdG9tLHVuaWNvZGV9X2NsYXNzX3JlYyk6IFVzZQoJYEZUX0NBTExCQUNLX1RBQkxFX0RFRicuCgkqIHNyYy9wc2F1eC90MWNtYXAuaDogVXBkYXRlZC4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcyk6IFVzZSBgZnRfZW5jb2Rpbmdfbm9uZScKCWluc3RlYWQgb2YgemVyby4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBVc2UgY2FzdHMuCgoyMDAyLTAzLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC9zZm9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jOgoJRml4ZWQgYSBzbWFsbCBidWcgaW4gdGhlIEZUX0NNYXBzIHN1cHBvcnQgY29kZS4KCjIwMDItMDMtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChOb3JtKTogUmVwbGFjZWQgd2l0aC4uLgoJKFRUX1ZlY0xlbik6IFRoaXMuCgkoVFRfTXVsRml4MTQsIFRUX0RvdEZpeDE0KTogTmV3IGZ1bmN0aW9ucy4KCShQcm9qZWN0LCBEdWFsX1Byb2plY3QsIEZyZWVfUHJvamVjdCwgQ29tcHV0ZV9Qb2ludF9EaXNwbGFjZW1lbnQsCglJbnNfU0hQSVgsIEluc19NSUFQLCBJbnNfTUlSUCk6IFVzZSB0aGVtLgoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTXTogUmVtb3ZlZCBhbGwgY29kZS4KCjIwMDItMDMtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy90eXBlMS90MW9ianMuYzoKCVZhcmlvdXMgZml4ZXMgdG8gbWFrZSB0aGUgRlRfQ01hcHMgc3VwcG9ydCB3b3JrIGNvcnJlY3RseSAobW9yZQoJdGVzdHMgYXJlIHN0aWxsIG5lZWRlZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvc2ZudC9KYW1maWxlLAoJc3JjL3NmbnQvcnVsZXMubWssIHNyYy9zZm50L3NmbnQuYywgc3JjL3NmbnQvc2ZvYmpzLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc2ZudC90dGNtYXAwLmg6IFVwZGF0ZWQKCXRoZSBTRk5UIGNoYXJtYXAgc3VwcG9ydCB0byB1c2UgRlRfQ01hcHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IEluY2x1ZGUgaXQuICBJdCBjb250YWlucyBhbGwgZXJyb3IKCWNvZGVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9FUlJPUl9ERUZJTklUSU9OU19IKTogTmV3CgltYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgYW5kIGEgbG90IG9mIG90aGVyIGZpbGVzOgoJQ2hhbmdlZCB0aGUgbmFtZXMgb2YgbWVtb3J5IG1hY3Jvcy4gIEV4YW1wbGVzOgoKCSAgTUVNX1NldCAgID0+IEZUX01FTV9TRVQKCSAgTUVNX0NvcHkgID0+IEZUX01FTV9DT1BZCgkgIE1FTV9Nb3ZlICA9PiBGVF9NRU1fTU9WRQoKCSAgQUxMT0MgICAgID0+IEZUX0FMTE9DCgkgIEZSRUUgICAgICA9PiBGVF9GUkVFCgkgIFJFQUxMT0MgICA9ID5GVF9SRUFMTE9DCgoJRlRfTkVXIHdhcyBpbnRyb2R1Y2VkIHRvIGFsbG9jYXRlIGEgbmV3IG9iamVjdCBmcm9tIGEgX3R5cGVkXwoJcG9pbnRlci4KCglOb3RlIHRoYXQgQUxMT0NfQVJSQVkgYW5kIFJFQUxMT0NfQVJSQVkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5CglGVF9ORVdfQVJSQVkgYW5kIEZUX1JFTkVXX0FSUkFZIHdoaWNoIHRha2UgX3R5cGVkXyBwb2ludGVyCglhcmd1bWVudHMuCgoJVGhpcyByZXN1bHRzIGluIF9sb3RzXyBvZiBzb3VyY2VzIGJlaW5nIGNoYW5nZWQsIGJ1dCBtYWtlcyB0aGUgY29kZQoJbW9yZSBnZW5lcmljIGFuZCBsZXNzIGVycm9yLXByb25lLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oLCBzcmMvYmFzZS9mdHN0cmVhbS5jLAoJc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9wY2YvcGNmcmVhZC5jLCBzcmMvc2ZudC90dGNtYXAuYywKCXNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0cG9zdC5jLAoJc3JjL3NmbnQvdHRzYml0LmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dHBsb2FkLmMsCglzcmMvd2luZm9udHMvd2luZm50LmM6IENoYW5nZWQgdGhlIGRlZmluaXRpb25zIG9mIHN0cmVhbSBtYWNyb3MuCglFeGFtcGxlczoKCgkgIE5FWFRfQnl0ZSAgICAgPT4gRlRfTkVYVF9CWVRFCgkgIE5FWFRfU2hvcnQgICAgPT4gRlRfTkVYVF9TSE9SVAoJICBORVhUX1VTaG9ydExFID0+IEZUX05FWFRfVVNIT1JUX0xFCgkgIFJFQURfU2hvcnQgICAgPT4gRlRfUkVBRF9TSE9SVAoJICBHRVRfTG9uZyAgICAgID0+IEZUX0dFVF9MT05HCgkgIGV0Yy4KCglBbHNvIGludHJvZHVjZWQgdGhlIEZUX1BFRUtfWFhYWCBmdW5jdGlvbnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0J1aWxkX1VuaWNvZGVfQ2hhcm1hcCk6IFJlbW92ZWQgY29tbWVudGVkCglvdXQgZnVuY3Rpb24uCgkoZmluZF9lbmNvZGluZyk6IFJlbW92ZWQuCgkoQ0ZGX0ZhY2VfSW5pdCk6IFJlbW92ZSBjaGFybWFwIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUywKCVRUX0NPTkZJR19DTUFQX0ZPUk1BVHswLDIsNCw2LDgsMTAsMTJ9KTogTmV3IG1hY3JvcyB0byBmaW5lLXR1bmUKCXN1cHBvcnQgb2YgY21hcHMuCgoyMDAyLTAzLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL3BjZi9wY2Zkcml2ZXIuYywgc3JjL3BjZi9wY2ZyZWFkLmM6IFVwZGF0ZWQKCXRvIG5ldyBGVF9DTWFwIGRlZmluaXRpb25zLgoKCSogc3JjL3BzYXV4L3QxY21hcC5oLCBzcmMvcHNhdXgvdDFjbWFwLmMsIHNyYy90eXBlMS90MWNtYXAuaCwKCXNyYy90eXBlMS90MWNtYXAuYzogVXBkYXRpbmcgYW5kIG1vdmluZyB0aGUgVHlwZSAxIEZUX0NNYXAgc3VwcG9ydAoJZnJvbSAic3JjL3R5cGUxIiB0byAic3JjL3BzYXV4IiBzaW5jZSBpdCBpcyBnb2luZyB0byBiZSBzaGFyZWQgYnkKCXRoZSBUeXBlIDEgYW5kIENJRCBmb250IGRyaXZlcnMuCgoJKiBzcmMvcHNhdXgvSmFtZmlsZSwgc3JjL3BzYXV4L3BzYXV4LmMsIHNyYy9wc2F1eC9wc2F1eG1vZC5jLAoJc3JjL3BzYXV4L3J1bGVzLm1rLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6IEFkZGVkIHN1cHBvcnQKCWZvciBUeXBlIDEgRlRfQ01hcHMuCgoyMDAyLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jIChGVF9HbHlwaExvYWRlcl9DaGVja1N1YkdseXBocyk6IEZpeGVkIGEKCW1lbW9yeSBhbGxvY2F0aW9uIGJ1ZyB0aGF0IHdhcyBkdWUgdG8gdW4tY2FyZWZ1bCByZW5hbWluZyBvZiB0aGUKCUZUX1N1YkdseXBoIHR5cGUuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfZGVzdHJveSk6IEZpeGVkIGEgc21hbGwgYnVnIHRoYXQKCWNhdXNlZCB0aGUgbGlicmFyeSB0byBjcmFzaCB3aXRoIEVsZWN0cmljIEZlbmNlIHdoZW4gbWVtb3J5CglkZWJ1Z2dpbmcgaXMgdXNlZC4KCgkqIFJlbmFtaW5nIHN0cmVhbSBtYWNyb3MuICBFeGFtcGxlczoKCgkgIEZJTEVfU2tpcCAgICA9PiBGVF9TVFJFQU1fU0tJUAoJICBGSUxFX1JlYWQgICAgPT4gRlRfU1RSRUFNX1JFQUQKCSAgQUNDRVNTX0ZyYW1lID0+IEZUX0ZSQU1FX0VOVEVSCgkgIEZPUkdFVF9GcmFtZSA9PiBGVF9GUkFNRV9FWElUCgkgIGV0Yy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIG1lbW9yeSBsZWFrLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogQ2hhbmdpbmcgdGhlIGRlZmluaXRpb24gb2YKCUZUX0NNYXBfQ2hhck5leHRGdW5jIHNsaWdodGx5LgoKCSogc3JjL2NmZi8qLmM6IFVwZGF0aW5nIENGRiB0eXBlIGRlZmluaXRpb25zLgoKMjAwMi0wMy0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9hdXRvaGludC5oLCBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYywKCXNyYy9iYXNlL2Z0YXBpLmMsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBVcGRhdGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucwoJZm9yIHRoZSBhdXRvLWhpbnRlciBtb2R1bGUuCgoJICBGVF9BdXRvSGludGVyX0ludGVyZmFjZSAgPT4gRlRfQXV0b0hpbnRlcl9TZXJ2aWNlUmVjCgkgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlKiA9PiBGVF9BdXRvSGludGVyX1NlcnZpY2UKCSAgZXRjLgoKCSAgRlRfQXV0b0hpbnRlcl9HZXRfR2xvYmFsX0Z1bmMgID0+IEZUX0F1dG9IaW50ZXJfR2xvYmFsR2V0RnVuYwoJICBGVF9BdXRvSGludGVyX0RvbmVfR2xvYmFsX0Z1bmMgPT4gRlRfQXV0b0hpbnRlcl9HbG9iYWxEb25lRnVuYwoJICBldGMuCgoJKiBhaGxvYWRlci5oIFtfU1RBTkRBTE9ORV9dOiBSZW1vdmVkIGFsbCBjb25kaXRpb25hbCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oLCBzcmMvY2ZmLyouYzogVXBkYXRpbmcgdGhlCgl0eXBlIGRlZmluaXRpb25zIG9mIHRoZSBDRkYgZm9udCBkcml2ZXIuCgoJICBDRkZfRm9udCAgPT4gQ0ZGX0ZvbnRSZWMKCSAgQ0ZGX0ZvbnQqID0+IENGRl9Gb250CgkgIGV0Yy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaCwgc3JjL3dpbmZvbnRzLyouYzogVXBkYXRpbmcKCXR5cGUgZGVmaW5pdGlvbnMgb2YgdGhlIFdpbmRvd3MgRk5UIGZvbnQgZHJpdmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRhcGkuYywKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmZHJpdnIuaCwKCXNyYy9jaWQvY2lkcml2ZXIuYywgc3JjL2NpZC9jaWRyaXZlci5oLCBzcmMvcGNmL3BjZmRyaXZlci5jLAoJc3JjL3BjZi9wY2Zkcml2ZXIuaCwgc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsCglzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuaCwgc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWRyaXZlci5oLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jLCBzcmMvd2luZm9udHMvd2luZm50Lmg6IFVwZGF0aW5nIHR5cGUKCWRlZmluaXRpb25zIGZvciBmb250IGRyaXZlcnMuCgoJICBGVERyaXZlcl9pbml0RmFjZSAgICAgID0+IEZUX0ZhY2VfSW5pdEZ1bmMKCSAgRlREcml2ZXJfaW5pdEdseXBoU2xvdCA9PiBGVF9TbG90X0luaXRGdW5jCgkgIGV0Yy4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Jbml0KTogUmVtb3ZlIGRlYWQgY29kZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jOiBVcGRhdGVkIGEKCWZldyBmYWNlIG1ldGhvZCBkZWZpbml0aW9uczoKCgkgIEZUX1BTTmFtZV9SZXF1ZXN0ZXIgICAgID0+IEZUX0ZhY2VfR2V0UG9zdHNjcmlwdE5hbWVGdW5jCgkgIEZUX0dseXBoX05hbWVfUmVxdWVzdGVyID0+IEZUX0ZhY2VfR2V0R2x5cGhOYW1lRnVuYwoJICBGVF9OYW1lX0luZGV4X1JlcXVlc3RlciA9PiBGVF9GYWNlX0dldEdseXBoTmFtZUluZGV4RnVuYwoKCSogc3JjL2Jhc2UvZnRhcGkuYzogTmV3IGZpbGUuICBJdCBjb250YWlucyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQoJZnVuY3Rpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBzcmMvY2lkL2NpZGxvYWQuYywKCXNyYy9jaWR0b2tlbi5oLCBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC9wc29ianMuaCwKCXNyYy9wc2F1eC90MWRlY29kZS5jLCBzdGMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MXRva2Vucy5oOgoJVXBkYXRlZCBjb21tb24gUG9zdFNjcmlwdCB0eXBlIGRlZmluaXRpb25zLgoJUmVuYW1lZCBhbGwgZW51bWVyYXRpb24gdmFsdWVzIGxpa2UgdG8gdXBwZXJjYXNlIHZhcmlhbnRzOgoKCSAgdDFfdG9rZW5fYW55ICAgICAgPT4gVDFfVE9LRU5fVFlQRV9BTlkKCSAgdDFfZmllbGRfY2lkX2luZm8gPT4gVDFfRklFTERfTE9DQVRJT05fQ0lEX0lORk8KCSAgZXRjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbHMuaDogUmVtb3ZlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmg6CglVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwgc3JjL2Jhc2UvZnRuYW1lcy5jLAoJc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvc2ZudC8qLmMsIHNyYy90cnVldHlwZS8qLmM6IFVwZGF0ZWQKCVNGTlQvVHJ1ZVR5cGUgdHlwZSBkZWZpbml0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGdsb2Fkci5oOgoJVXBkYXRpbmcgdHlwZSBkZWZpbnRpaW9ucyBmb3IgdGhlIGdseXBoIGxvYWRlci4KCjIwMDItMDMtMTMgIEFudG9pbmUgTGVjYSAgPGFudG9pbmVAb3Jpb2xuZXQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQ2hhbmdlZCB0aGUgYXV0b21hdGljCglkZXRlY3Rpb24gb2YgTWljcm9zb2Z0IEMgY29tcGlsZXJzIHRvIGF1dG9tYXRpY2FsbHkgc3VwcG9ydCA2NC1iaXQKCWludGVnZXJzIG9ubHkgc2luY2UgcmV2aXNpb24gOS4wMCAoaS5lLiA+PSBWaXN1YWwgQysrIDIuMCkuCgoyMDAyLTAzLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHV0aWwuYyAoRlRfUmVhbGxvYyk6IFVzZSBNRU1fU2V0IGluc3RlYWQgb2YgbWVtc2V0LgoKMjAwMi0wMy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX3Jlc2l6ZSwgZnRfbWVtX3RhYmxlX25ldywKCWZ0X21lbV90YWJsZV9zZXQsIGZ0X21lbV9kZWJ1Z19hbGxvYywgZnRfbWVtX2RlYnVnX2ZyZWUsCglmdF9tZW1fZGVidWdfcmVhbGxvYywgZnRfbWVtX2RlYnVnX2RvbmUsIEZUX0FsbG9jX0RlYnVnLAoJRlRfUmVhbGxvY19EZWJ1ZywgRlRfRnJlZV9EZWJ1Zyk6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bEZpeCk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX1NpemVfR2V0X0dsb2JhbF9GdW5jcywgQ0ZGX1NpemVfSW5pdCwKCUNGRl9HbHlwaFNsb3RfSW5pdCk6IERpdHRvLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0dseXBoU2xvdF9Jbml0LAoJQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MpOiBEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLCBUMV9HbHlwaFNsb3RfSW5pdCk6CglEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaG1vZC5jIChwc2hpbnRlcl9pbnRlcmZhY2UpOiBVc2UgYHN0YXRpYyBjb25zdCcuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFQxX0J1aWxkZXJfRnVuY3MpOiBSZW5hbWVkCgl0by4uLgoJKFQxX0J1aWxkZXJfRnVuY3NSZWMpOiBUaGlzLgoJKFQxX0J1aWxkZXJfRnVuY3MpOiBOZXcgdHlwZWRlZi4KCShQU0F1eF9JbnRlcmZhY2UpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jICh0MV9idWlsZGVyX2Z1bmNzKSwgc3JjL3BzYXV4L3Bzb2Jqcy5oCgkodDFfYnVpbGRlcl9mdW5jcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZV9BbGlnbik6IFJlcGxhY2VkIHdpdGggLi4uCgkoUFNIX0JMVUVfQUxJR05fe05PTkUsVE9QLEJPVH0pOiBOZXcgZGVmaW5lcy4KCShQU0hfQWxpZ25tZW50UmVjKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoR0VUX0NoYXIsIEdFVF9CeXRlKTogRml4Cgl0eXBvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmggKEZUX1N1YkdseXBoKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0c3RyZWFtIChGVF9HZXRfQ2hhcik6IFJlbmFtZSB0by4uLgoJKEZUX1N0cmVhbV9HZXRfQ2hhcik6IFRoaXMuCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWUpOiBzL2luZGV4L2lkeC8gLS0gYGluZGV4JyBpcwoJYSBidWlsdC1pbiBmdW5jdGlvbiBpbiBnY2MsIGNhdXNpbmcgd2FybmluZyBtZXNzYWdlcyB3aXRoIGdjYyAzLjAuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfbG9hZCk6IERpdHRvLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoYWhfaGludGVyX2NvbXB1dGVfYmx1ZXMpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0RvbmUsIEZUQ19NYW5hZ2VyX1JlZ2lzdGVyX0NhY2hlKToKCURpdHRvLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX25ld19pbmRleCwgY2ZmX2RvbmVfaW5kZXgsCgljZmZfZXhwbGljaXRfaW5kZXgsIENGRl9BY2Nlc3NfRWxlbWVudCwgQ0ZGX0ZvcmdldF9FbGVtZW50LAoJQ0ZGX0dldF9OYW1lLCBDRkZfR2V0X1N0cmluZywgQ0ZGX0xvYWRfU3ViRm9udCwgQ0ZGX0xvYWRfRm9udCwKCUNGRl9Eb25lX0ZvbnQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9BZGQsIFBTX1BhcnNlcl9Mb2FkRmllbGQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19tYXNrX3Rlc3RfYml0LCBwc19tYXNrX2NsZWFyX2JpdCwKCXBzX21hc2tfc2V0X2JpdCwgcHNfZGltZW5zaW9uX2FkZF90MXN0ZW0sIHBzX2hpbnRzX3Qxc3RlbTMsCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoMV9oaW50X3RhYmxlX3JlY29yZF9tYXNrLCBwc2gxX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX3JlY29yZCwKCXBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzaywgcHNoMl9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3NmbnQvdHRwb3N0LmMgKExvYWRfRm9ybWF0XzIwLCBMb2FkX0Zvcm1hdF8yNSwKCVRUX0dldF9QU19OYW1lKTogRGl0dG8uCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0dldF9NZXRyaWNzLCBHZXRfSE1ldHJpY3MsCglsb2FkX3RydWV0eXBlX2dseXBoKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIFQxX09wZW5fRmFjZSk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfR2V0X0tlcm5pbmcpOiBEaXR0by4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oIChmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBEaXR0by4KCjIwMDItMDMtMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMKCShDSURfRmFjZV9Jbml0KTogRml4ZWQgYW5vdGhlciBidWcgcmVsYXRlZCB0byB0aGUKCWFzY2VuZGVyL2Rlc2NlbmRlci90ZXh0IGhlaWdodCBvZiBQb3N0c2NyaXB0IGZvbnRzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDJfcHJpbnRfem9uZSk6IFRoaXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gxX3ByaW50X3pvbmUpOiBUaGlzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJc3JjL2Jhc2UvZnRvYmpzLmM6IEFkZGluZyB0aGUgbmV3IEZUX0xpYnJhcnlfVmVyc2lvbiBBUEkgdG8gcmV0dXJuCgl0aGUgbGlicmFyeSdzIGN1cnJlbnQgdmVyc2lvbiBpbiBkeW5hbWljIGxpbmtzLgoJKiBzcmMvYmFzZS9mdGluaXQuYyAoRlRfSW5pdF9GcmVlVHlwZSk6IFVwZGF0ZWQuCgoyMDAyLTAzLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfRGltZW5zaW9uUmVjKTogcy9zdGQvc3Rkdy8uCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxfc2NhbGVfd2lkdGhzLAoJcHNoX2RpbWVuc2lvbl9zbmFwX3dpZHRoLCBwc2hfZ2xvYmFsc19kZXN0cm95LCBwc2hfZ2xvYmFsc19uZXcpOgoJRGl0dG8uCgoyMDAyLTAzLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCksIHNyYy9jZmYvY2Zmb2Jqcy5jCgkoQ0ZGX0ZhY2VfSW5pdCksIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Jbml0KTogUmVtb3ZpbmcgdGhlIGJ1ZwoJdGhhdCByZXR1cm5lZCBnbG9iYWwgQkJveCB2YWx1ZXMgaW4gMTYuMTYgZml4ZWQgZm9ybWF0IChpbnN0ZWFkIG9mCglpbnRlZ2VyIGZvbnQgdW5pdHMpLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChjaWRfZ2V0X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIGEgYnVnIHRoYXQKCWNhdXNlZCB0aGUgQ0lEIGRyaXZlciB0byByZXR1cm4gUG9zdHNjcmlwdCBmb250IG5hbWVzIHdpdGggYSBsZWFkaW5nCglzbGFzaCAoIi8iKSBhcyBpbiAiL01PRUthaS1SZWd1bGFyIi4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKSwgc3JjL3NmbnQvc2ZvYmpzLmMgKEdldF9OYW1lKSwKCXNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IEZpeGVkIHRoZSBsb2FkZXIgc28KCXRoYXQgaXQgYWNjZXB0cyBicm9rZW4gZm9udHMgbGlrZSAiZm94anVtcC50dGYiLCB3aGljaCBtYWRlIEZyZWVUeXBlCgljcmFzaCB3aGVuIHRyeWluZyB0byBsb2FkIHRoZW0uCgoJQWxzbyBpbXByb3ZlZCB0aGUgbmFtZSB0YWJsZSBwYXJzZXIgdG8gYmUgYWJsZSB0byBsb2FkCglXaW5kb3dzLWVuY29kZWQgZW50cmllcyBiZWZvcmUgTWFjaW50b3NoIG9yIFVuaWNvZGUgb25lcywgc2luY2UgaXQKCXNlZW1zIHNvbWUgZm9udHMgZG9uJ3QgaGF2ZSByZWxpYWJsZSB2YWx1ZXMgaGVyZSBhbnl3YXkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzbmFtZXMuaDogQWRkIHR5cGVkZWYgZm9yCglgUFNOYW1lc19TZXJ2aWNlJy4KCjIwMDItMDMtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2FjbG9jYWwubTQsIGJ1aWxkcy91bml4L2x0bWFpbi5zaDogVXBkYXRlIHRvIGxpYnRvb2wKCTEuNC4yLgoJQXBwbHkgYSBzbWFsbCBwYXRjaCBmb3IgQUlYIHRvIG1ha2Ugc2hhcmVkIGxpYnJhcmllcyB3b3JrICh0aGlzCglwYXRjaCBpcyBhbHJlYWR5IGluIHRoZSBDVlMgdmVyc2lvbiBvZiBsaWJ0b29sKS4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5zdWIsIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzczogVXBkYXRlZCB0bwoJcmVjZW50IHZlcnNpb25zLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBGaXggdHlwbwoJKEFDX0NPTkZJR19GSUxFLT5BQ19DT05GSUdfRklMRVMpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDItMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb25maWcuaDogQ2hhbmdlZCBgRlRfTE9DQUwgeHh4eCcgdG8KCWBGVF9MT0NBTCggeHh4eCApJyBldmVyeXdoZXJlIGluIHRoZSBzb3VyY2UuICBUaGUgc2FtZSBnb2VzIGZvcgoJYEZUX0xPQ0FMX0RFRiB4eHh4JyB3aGljaCBpcyB0cmFuc2xhdGVkIHRvIGBGVF9MT0NBTF9ERUYoIHh4eHh4ICknLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9NSU5PUiwgRlJFRVRZUEVfUEFUQ0gpOgoJQ2hhbmdpbmcgdmVyc2lvbiB0byAyLjEuMCB0byBpbmRpY2F0ZSBhbiB1bnN0YWJsZSBicmFuY2guCglBZGRlZCB0aGUgZGVjbGFyYXRpb25zIG9mIEZUX0dldF9GaXJzdF9DaGFyIGFuZCBGVF9HZXRfTmV4dF9DaGFyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEltcGxlbWVudCBGVF9HZXRfRmlyc3RfQ2hhciBhbmQKCUZUX0dldF9OZXh0X0NoYXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmg6IFJlbmFtaW5nIHN0cnVjdHVyZSB0eXBlcy4gIFRoaXMKCgkgIHR5cGVkZWYgIFQxX1N0cnVjdF8KCSAgewoJICB9IFQxX1N0cnVjdDsKCgliZWNvbWVzCgoJICB0eXBlZGVmICBQU19TdHJ1Y3RSZWNfCgkgIHsKCSAgfSBQU19TdHJ1Y3RSZWMsICpQU19TdHJ1Y3Q7CgoJICB0eXBlZGVmIFBTX1N0cnVjdFJlYyAgVDFfU3RydWN0OyAgLyogYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgKi8KCglIZW5jZSwgd2UgaW5jcmVhc2UgdGhlIGNvaGVyZW5jeSBvZiB0aGUgc291cmNlIGNvZGUgYnkgZWZmZWN0aXZlbHkKCXVzaW5nIHRoZSBgUmVjJyBwcmVmaXggZm9yIHN0cnVjdHVyZSB0eXBlcy4KCjIwMDItMDItMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX05hbWVzKTogU2ltcGxpZnlpbmcgYW5kIHNlY3VyaW5nIHRoZQoJbmFtZXMgdGFibGUgbG9hZGVyLiAgSW52YWxpZCBpbmRpdmlkdWFsIG5hbWUgZW50cmllcyBhcmUgbm93IGhhbmRsZWQKCWNvcnJlY3RseS4gIFRoaXMgYWxsb3dzIHRoZSBsb2FkaW5nIG9mIHZlcnkgYnVnZ3kgZm9udHMgbGlrZQoJImZveGp1bXAudHRmIiB3aXRob3V0IGFsbG9jYXRpbmcgdG9ucyBvZiBtZW1vcnkgYW5kIGNhdXNpbmcgY3Jhc2hlcy4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tb24uaCwgc3JjL290bGF5b3V0L290bGNvbW1vbi5jOiBBZGRpbmcgKHN0aWxsCglleHBlcmltZW50YWwpIGNvZGUgZm9yIE9wZW5UeXBlIExheW91dCB0YWJsZXMgdmFsaWRhdGlvbiBhbmQKCXBhcnNpbmcuCgoJKiBzcmMvdHlwZTEvdDFjbWFwLmgsIHNyYy90eXBlMS90MWNtYXAuYzogQWRkaW5nIChzdGlsbAoJZXhwZXJpbWVudGFsKSBjb2RlIGZvciBUeXBlIDEgY2hhcm1hcCBwcm9jZXNzaW5nLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jOiBOZXcgZmlsZS4gIEl0IGNvbnRhaW5zIGEgbmV3LCBzdGlsbAoJZXhwZXJpbWVudGFsIFNGTlQgY2hhcm1hcCBwcm9jZXNzaW5nIHN1cHBvcnQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBBZGRpbmcgdmFsaWRhdGlvbiBzdXBwb3J0IGFzCgl3ZWxsIGFzIGludGVybmFsIGNoYXJtYXAgb2JqZWN0IGRlZmluaXRpb25zIChGVF9DTWFwICE9IEZUX0NoYXJNYXApLgoKMjAwMi0wMi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUmVuYW1pbmcgc3RyZWFtIGZ1bmN0aW9ucyB0byB0aGUgRlRfPFN1YmplY3Q+XzxBY3Rpb24+IHNjaGVtZToKCgkgIEZUX1NlZWtfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9TZWVrCgkgIEZUX1NraXBfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9Ta2lwCgkgIEZUX1JlYWRfU3RyZWFtICAgID0+IEZUX1N0cmVhbV9SZWFkCgkgIEZUX1JlYWRfU3RyZWFtX0F0ID0+IEZUX1N0cmVhbV9SZWFkX0F0CgkgIEZUX0FjY2Vzc19GcmFtZSAgID0+IEZUX1N0cmVhbV9FbnRlcl9GcmFtZQoJICBGVF9Gb3JnZXRfRnJhbWUgICA9PiBGVF9TdHJlYW1fRXhpdF9GcmFtZQoJICBGVF9FeHRyYWN0X0ZyYW1lICA9PiBGVF9TdHJlYW1fRXh0cmFjdF9GcmFtZQoJICBGVF9SZWxlYXNlX0ZyYW1lICA9PiBGVF9TdHJlYW1fUmVsZWFzZV9GcmFtZQoJICBGVF9HZXRfWFhYWCAgICAgICA9PiBGVF9TdHJlYW1fR2V0X1hYWFgKCSAgRlRfUmVhZF9YWFhYICAgICAgPT4gRlRfU3RyZWFtX1JlYWRfWFhYWAoKCSAgRlRfTmV3X1N0cmVhbSggZmlsZW5hbWUsIHN0cmVhbSApID0+CgkgICAgRlRfU3RyZWFtX09wZW4oIHN0cmVhbSwgZmlsZW5hbWUgKQoKCSAgICAoVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY3JlYXRlIHRoZSBGVF9TdHJlYW0gc3RydWN0dXJlLCBpdCBzaW1wbHkKCSAgICBpbml0aWFsaXplcyBpdCBmb3IgcmVhZGluZy4pCgoJICBGVF9OZXdfTWVtb3J5X1N0cmVhbSggbGlicmFyeSwgRlRfQnl0ZSogIGJhc2UsIHNpemUsIHN0cmVhbSApID0+CgkgICAgRlRfU3RyZWFtX09wZW5fTWVtb3J5KCBzdHJlYW0sIGNvbnN0IEZUX0J5dGUqIGJhc2UsIHNpemUgKQoKCSAgRlRfRG9uZV9TdHJlYW0gID0+IEZUX1N0cmVhbV9DbG9zZQoJICBGVF9TdHJlYW1fSU8gICAgPT4gRlRfU3RyZWFtX0lPRnVuYwoJICBGVF9TdHJlYW1fQ2xvc2UgPT4gRlRfU3RyZWFtX0Nsb3NlRnVuYwoKCSAgZnRfY2xvc2Vfc3RyZWFtID0+IGZ0X2Fuc2lfc3RyZWFtX2Nsb3NlIChpbiBiYXNlL2Z0c3lzdGVtLmMgb25seSkKCSAgZnRfaW9fc3RyZWFtICAgID0+IGZ0X2Fuc2lfc3RyZWFtX2lvICAgIChpbiBiYXNlL2Z0c3lzdGVtLmMgb25seSkKCgkqIHNyYy9iYXNlL2Z0dXRpbC5jOiBOZXcgZmlsZS4gIENvbnRhaW5zIGFsbCBtZW1vcnkgYW5kIGxpc3QKCW1hbmFnZW1lbnQgY29kZSAocHJldmlvdXNseSBpbiAiZnRvYmpzLmMiIGFuZCAiZnRsaXN0LmMiLAoJcmVzcGVjdGl2ZWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IE1vdmluZyBhbGwgY29kZSByZWxhdGVkIHRvCglnbHlwaCBsb2FkZXJzIHRvIC4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlLyJpbnRlcm5hbC9mdGdsb2Fkci5oOiBUaGlzIG5ldyBmaWxlLgoJIkZUX0dseXBoTG9hZGVyIiBpcyBub3cgYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUKCSJGVF9HbHlwaExvYWRlclJlYyIuCgkoZnRfZ2x5cGhfb3duX2JpdG1hcCk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfR0xZUEhfT1dOX0JJVE1BUCk6IFRoaXMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBNb3ZpbmcgYWxsIGNvZGUgcmVsYXRlZCB0byBnbHlwaCBsb2FkZXJzCgl0byAuLi4KCSogc3JjL2Jhc2UvZnRnbG9hZHIuYzogVGhpcyBuZXcgZmlsZS4KCjIwMDItMDItMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFJlbW92ZSBjb21tYSBpbgoJZW51bSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDItMDItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb2RpZmllZCB0aGUgZGVidWcgc3ViLXN5c3RlbSBpbml0aWFsaXphdGlvbi4gIFRyYWNlIGxldmVscyBjYW4gbm93CgliZSBzcGVjaWZpZWQgd2l0aGluIHRoZSAiRlQyX0RFQlVHIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFNlZSB0aGUKCWNvbW1lbnRzIHdpdGhpbiAiZnRkZWJ1Zy5jIiBmb3IgbW9yZSBkZXRhaWxzLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jOiAoRlRfU2V0VHJhY2VMZXZlbCk6IFJlbW92ZWQuCgkoZnRfZGVidWdfaW5pdCk6IE5ldyBmdW5jdGlvbi4KCShmdF9kZWJ1Z19kdW1teSk6IFJlbW92ZWQuCglVcGRhdGVkIHRvIGNoYW5nZXMgaW4gZnRkZWJ1Zy5oCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQWx3YXlzIGRlZmluZQoJRlRfREVCVUdfTEVWRUxfRVJST1IgaWYgRlRfREVCVUdfTEVWRUxfVFJBQ0UgaXMgZGVmaW5lZC4KCShGVF9Bc3NlcnQpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX0FTU0VSVCk6IFRoaXMuCglTb21lIHN0dWZmIGZyb20gZnRkZWJ1Zy5oIGhhcyBiZWVuIG1vdmVkIHRvIC4uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IE5ldyBmaWxlLCB0byBkZWZpbmUgdGhlIHRyYWNlCglsZXZlbHMgdXNlZCBmb3IgZGVidWdnaW5nLiAgSXQgaXMgdXNlZCBib3RoIHRvIGRlZmluZSBlbnVtcyBhbmQKCXRvZ2dsZSBuYW1lcyBmb3IgRlQyX0RFQlVHLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBVcGRhdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0c3RyZWFtLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZXh0ZW5kLmgsIHNyYy9iYXNlL2Z0ZXh0ZW5kLmM6CglSZW1vdmVkLiAgQm90aCBmaWxlcyBhcmUgbm93IGNvbXBsZXRlbHkgb2Jzb2xldGUuCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oOiBBZGRpbmcgIiN1bmRlZiBGVF9FUlJfQ0FUIiBhbmQKCWAjdW5kZWYgRlRfRVJSX1hDQVQiIHRvIGF2b2lkIHdhcm5pbmdzIHdpdGggY2VydGFpbiBjb21waWxlcnMgKGxpa2UKCUxDQykuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMl9wcmludF96b25lKTogVGhpcyB0byBhdm9pZCBlcnJvcnMgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGRlYnVnCglsaWJyYXJ5LgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKEZUX0NPTVBPTkVOVCk6IENoYW5nZSBkZWZpbml0aW9uIHRvIGFzCglgdHJhY2Vfc21vb3RoJy4KCjIwMDItMDItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRTogQWRkaW5nICJkZXZlbEBmcmVldHlwZS5vcmciIGFkZHJlc3MgZm9yIGJ1ZyByZXBvcnRzLgoKMjAwMi0wMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoY2hlY2spOiBOZXcgZHVtbXkgdGFyZ2V0LgoJKC5QSE9OWSk6IEFkZCBpdC4KCjIwMDItMDItMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRlRfQ0ZMQUdTKTogVXNlICQoSU5DTFVERV9GTEFHUykgZmlyc3QuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX2NhY2hlX3Jlc2l6ZSk6IE1hcmsgYGVycm9yJyBhcyB1bnVzZWQKCXRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0cmluZyk6IERpdHRvLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX1N0ckNvcHkpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9Eb25lKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2Zfc2Vla190b190YWJsZV90eXBlKTogRGl0dG8uCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IERpdHRvLgoJKHBjZl9nZXRfYml0bWFwcyk6IFRoZSBzYW1lIGZvciBgc2l6ZWJpdG1hcHMnLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2RlX1BhcnNlX0NoYXJzdHJpbmdzKTogVGhlIHNhbWUgZm9yCglgb3JpZ195Jy4KCSh0MW9wZXJhdG9yX3NlYWMpOiBDb21tZW50IG91dCBtb3JlIGRlYWQgY29kZS4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzMl9oaW50c19hcHBseSk6IEFkZCBgREVCVUdfSElOVEVSJwoJY29uZGl0aW9uYWwuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX1Byb2Nlc3NfU2ltcGxlX0dseXBoLAoJbG9hZF90cnVldHlwZV9nbHlwaCk6IEFkZCBgVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUicKCWNvbmRpdGlvbmFsLgoKMjAwMi0wMi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogUmVtb3ZlIHVudXNlZAoJdmFyaWFibGVzLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBVc2UgRlRfVU5VU0VEIGluc3RlYWQKCW9mIFVOVVNFRC4KCSogc3JjL2F1dG9oaW50L2FobW9kdWxlLmMgKGZ0X2F1dG9oaW50ZXJfcmVzZXQpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19tYXNrX3RhYmxlX21lcmdlKTogRml4IHR5cG8gaW4gdmFyaWFibGUKCXN3YXBwaW5nIGNvZGUuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlX0FsaWduKTogQWRkIFBTSF9CTFVFX0FMSUdOX05PTkUuCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zbmFwX3N0ZW0pOiBVc2UgaXQuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfb3B0aW1pemUpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF9hbGlnbik6IERpdHRvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChVTlVTRUQpOiBSZW1vdmVkLgoKMjAwMi0wMi0xMCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJQWRkIHN1cHBvcnQgZm9yIElTT0xhdGluMSBQUyBlbmNvZGluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoZnRfZW5jb2RpbmdfbGF0aW5fMSk6IE5ldyB0YWcKCShgbGF0MScpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoVDFfRW5jb2RpbmdfVHlwZSk6IEFkZAoJYHQxX2VuY29kaW5nX2lzb2xhdGluMScuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IEhhbmRsZQoJZnRfZW5jb2RpbmdfbGF0aW5fMS4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEhhbmRsZSBgSVNPTGF0aW4xRW5jb2RpbmcnLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEhhbmRsZSBgdDFfZW5jb2RpbmdfaXNvbGF0aW4xJy4KCjIwMDItMDItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRTogRml4IHR5cG8uCgkqIGRvY3MvQ0hBTkdFUzogTWlub3IgZml4ZXMuCgoKCSogVmVyc2lvbiAyLjAuOCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTAyLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGZvciAyLjAuOC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogU2V0dGluZyBgUEFUQ0hfTEVWRUwnIHRvIDggYW5kCglyZW1vdmluZyBgRlRfR2V0X05leHRfQ2hhcicgZnJvbSB0aGUgQVBJICh0ZW1wb3JhcmlseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEFkZGluZyBjb21tZW50cyB0byBGVF9HZXRfTmV4dF9DaGFyOwoJbm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gbWlnaHQgdGVtcG9yYXJpbHkgYmUgcmVtb3ZlZCBmb3IgdGhlIDIuMC44CglyZWxlYXNlLgoKMjAwMi0wMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBSZW1vdmVkIGltbWF0dXJlIHN1cHBvcnQgb2YKCXRoZSBBVkVSQUdFX1dJRFRIIHByb3BlcnR5LgoKMjAwMi0wMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogU2luY2UgbWFueSBmb250cyBlbWJlZGRlZCBpbgoJUERGIGRvY3VtZW50cyBkbyBub3QgaW5jbHVkZSAnY21hcCcsICdwb3N0JyBhbmQgJ25hbWUnIHRhYmxlcywgdGhlCglTRk5UIGZhY2UgbG9hZGVyIGhhcyBiZWVuIGNoYW5nZWQgdG8gbm90IGltbWVkaWF0ZWx5IHJlcG9ydCBhbgoJZXJyb3IgaWYgdGhlc2UgYXJlIG5vdCBwcmVzZW50LgoKCU5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbiBfcmVxdWlyZXNfIHRoZXNlIHRhYmxlcywgYnV0IEFkb2JlCglzZWVtcyB0byBpZ25vcmUgaXQgY29tcGxldGVseS4KCgkqIHNyYy9zZm50L3R0Y21hcC5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfcmVhZF9UT0MpOiBVc2UgRlRfVUludC4KCShwY2ZfcGFyc2VfbWV0cmljLCBwY2ZfcGFyc2VfY29tcHJlc3NlZF9tZXRyaWMpOiBSZW1vdmVkLiAgQ29kZQoJaXMgbm93IGluIC4uLgoJKHBjZl9nZXRfbWV0cmljKTogSGVyZS4KCShwY2ZTZWVrVG9UeXBlKTogUmVuYW1lZCB0byAuLi4KCShwY2Zfc2Vla190b190YWJsZV90eXBlKTogVGhpcy4KCVVzZSBGVF9JbnQuCgkocGNmSGFzVHlwZSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX2hhc190YWJsZV90eXBlKTogVGhpcy4KCVVzZSBGVF9JbnQuCgkoZmluZF9wcm9wZXJ0eSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX2ZpbmRfcHJvcGVydHkpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShwY2ZfZ2V0X2JpdG1hcHMsIHBjZl9nZXRfZW5jb2RpbmdzKTogSGFuZGxlIGludmFsaWQgUENGIGZvbnRzCgliZXR0ZXIgKGRlbGF5aW5nIGZvcm1hdCBjaGVja3Mgb3V0IG9mIEZUX0FjY2Vzc19GcmFtZSAuLgoJRlRfRm9yZ2V0X0ZyYW1lIGJsb2NrcyB0byBhdm9pZCBsZWF2aW5nIHRoZSBzdHJlYW0gaW4gYW4gaW5jb3JyZWN0CglzdGF0ZSB3aGVuIGVuY291bnRlcmluZyBhbiBpbnZhbGlkIFBDRiBmb250KS4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9GYWNlX0RvbmUpOiBUaGlzLgoJKFBDRl9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKFBDRl9GYWNlX0luaXQpOiBUaGlzLgoJKFBDRl9HZXRfQ2hhcl9JbmRleCk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0NoYXJfR2V0X0luZGV4KTogVGhpcy4KCShQQ0ZfR2V0X05leHRfQ2hhcik6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0NoYXJfR2V0X05leHQpOiBUaGlzLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2YuaCAoUENGX0RvbmVfRmFjZSk6IFJlbW92ZWQuCgoyMDAyLTAyLTA2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoRlRfRG9uZV9GYWNlKTogRml4ZWQgc21hbGwgbWVtb3J5IGxlYWsuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IE5vdyBoYW5kbGVzIHRoZSAiQVZFUkFHRV9XSURUSCIKCXByb3BlcnR5IHRvIHJldHVybiBjb3JyZWN0IGNoYXJhY3RlciBwaXhlbCAod2lkdGgvaGVpZ2h0KSBwYWlycyBmb3IKCWVtYmVkZGVkIGJpdG1hcHMuCgoyMDAyLTAyLTA0ICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJQWRkaW5nIHRoZSBmdW5jdGlvbiBgRlRfR2V0X05leHRfQ2hhcicsIGRvaW5nIHRoZSBvYnZpb3VzIHRoaW5nCgl3LnIudC4gdGhlIHNlbGVjdGVkIGNoYXJtYXAuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEFkZCBwcm90b3R5cGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkcml2ZXIuaDogQWRkIGBGVERyaXZlcl9nZXROZXh0Q2hhcicKCXR5cGVkZWYuCgkoRlRfRHJpdmVyX0NsYXNzKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzbmFtZXMuaDogQWRkIGBQU19OZXh0X1VuaWNvZGVfRnVuYycKCXR5cGVkZWYuCgkoUFNOYW1lc19JbnRlcmZhY2UpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oOiBBZGQgYFRUX0NoYXJOZXh0X0Z1bmMnCgl0eXBlZGVmLgoJKFRUX0NNYXBUYWJsZSk6IFVzZSBpdC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLCBpbXBsZW1lbnRpbmcKCWhpZ2gtbGV2ZWwgQVBJLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmV4dF9jaGFyKTogTmV3IGZ1bmN0aW9uLgoJKGNmZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoQ2lkX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkodDFjaWRfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCShwY2ZfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU19OZXh0X1VuaWNvZGUpOiBOZXcgZnVuY3Rpb24uCgkocHNuYW1lc19pbnRlcmZhY2UpOiBBZGQgaXQuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX25leHQwLCBjb2RlX3RvX25leHQyLCBjb2RlX3RvX25leHQ0LAoJY29kZV90b19uZXh0NiwgY29kZV90b19uZXh0XzhfMTIsIGNvZGVfdG9fbmV4dF8xMCk6IE5ldyBhdXhpbGlhcnkKCWZ1bmN0aW9ucy4KCShUVF9DaGFyTWFwX0xvYWQpOiBVc2UgdGhlbS4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKEdldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkodHRfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MV9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy93aW5mbnQvd2luZm50LmMgKEZOVF9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHdpbmZudF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEZvciBub3csIHJlcG9ydCBVbmljb2RlIGZvcgoJVW5pY29kZSBhbmQgTGF0aW4gMSBlbmNvZGluZ3MuCgoyMDAyLTAyLTAyICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEFkZCBtaXNzaW5nIGBmaScuCgoKCSogVmVyc2lvbiAyLjAuNyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEluY3JlYXNpbmcgRlJFRVRZUEVfUEFUQ0ggdG8gNwoJZm9yIHRoZSBuZXcgcmVsZWFzZS4KCjIwMDItMDEtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRSwgUkVBRE1FLlVOWCwgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUKCTIuMC43IHJlbGVhc2UuCgoyMDAyLTAxLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMOiBNb3ZlZCB0byAuLi4KCSogZG9jcy9JTlNUQUxMOiBIZXJlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSAiaW5zdGFsbCIgc2NyaXB0IG9uCglXaW5kb3dzLCB3aGVyZSB0aGUgZmlsZXN5c3RlbSBkb2Vzbid0IHByZXNlcnZlIGNhc2UuCgoyMDAyLTAxLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBjb25maWd1cmU6IEZpeGVkIHRoZSBzY3JpcHQuICBJdCBwcmV2aW91c2x5IGRpZG4ndCBhY2NlcHQgbW9yZQoJdGhhbiBvbmUgYXJndW1lbnQgY29ycmVjdGx5LiAgRm9yIGV4YW1wbGUsIHdoZW4gdHlwaW5nOgoKCSAgLi9jb25maWd1cmUgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtbmxzCgoJdGhlICItLWRpc2FibGUtbmxzIiB3YXMgaW5jb3JyZWN0bHkgc2VudCB0byB0aGUgIm1ha2UiIHByb2dyYW0uCgoyMDAyLTAxLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUUuVU5YOiBGaXggdHlwby4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAodW5pbnN0YWxsKTogRml4IGxpYnJhcnkgbmFtZSBmb3IgbGlidG9vbC4KCjIwMDItMDEtMjggIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogRml4IGluY29ycmVjdCBkZXN0cnVjdGlvbiBvZgoJdGhlIGZhY2Ugb2JqZWN0IChmYWNlLT50b2MudGFibGVzLCBmYWNlLT5yb290LmZhbWlseV9uYW1lLAoJZmFjZS0+cm9vdC5hdmFpbGFibGVfc2l6ZSwgZmFjZS0+Y2hhcnNldF9lbmNvZGluZywKCWZhY2UtPmNoYXJzZXRfcmVnaXN0cnkgYXJlIG5vdyBmcmVlZCkuICBUaGFua3MgdG8gTmllbHMgTW9zZWxleS4KCjIwMDItMDEtMjggIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IFNldCBgbG9hZGVyLT5udW1fY2hhcnMnLgoKMjAwMi0wMS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgcGFyc2VfY2hhcnN0cmluZ3MpOiBVc2UgY29weQoJb2YgYGJhc2UnIHN0cmluZyBmb3IgZGVjcnlwdGluZyB0byBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBkYXRhLgoJQmFzZWQgb24gYSBwYXRjaCBieSBKYWt1YiBCb2d1c3ogPHFib29zaEBwbGQub3JnLnBsPi4KCjIwMDItMDEtMjcgIEdpdWxpYW5vIFBvY2hpbmkgIDxwb2NoaW5pQHNoaW55Lml0PgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NjYW5saW5lKTogRml4IGJ1ZyB3aGljaCBjYXVzZWQKCWJhZCByZW5kZXJpbmcgb2YgdGhpbiBsaW5lcyAobGVzcyB0aGFuIG9uZSBwaXhlbCB0aGljaykuCgoyMDAyLTAxLTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IE1ha2UgbGFzdCBwYXRjaCB3b3JrCglhY3R1YWxseS4KCjIwMDItMDEtMjUgIE1hcnRpbiBaaW5zZXIgIDx6aW5zZXJAZGVjdXMuZGU+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZG9uZSwgZnRjX25vZGVfZGVzdHJveSk6IEZpeAoJY29tcGlsYXRpb24gd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Rlc2NyaXAubW1zIChPQkpTKTogQWRkIGBmdG1tLm9iaicuCgkqIHNyYy9jYWNoZS9kZXNjcmlwLm1tcyAoZnRjYWNoZS5vYmopOiBEZXBlbmRlbmNpZXMgYWRkZWQuCgoyMDAyLTAxLTI1ICBXQU5HIFlpICA8d2FuZ3lpQGZvdW5kZXIuY29tLmNuPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBGaXggZGVhbGxvY2F0aW9uIGJ1Zy4KCjIwMDItMDEtMjEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBkb2NzL1BBVEVOVFM6IFR5cG8gZml4ZWQgKHRoYW5rcyB0byBEZXRsZWYgIkhhd2tleWUiIFf8cmtuZXIpIGluCgl0aGUgVVJMIGZvciB0aGUgb25saW5lIHJlc291cmNlLgoKMjAwMi0wMS0xOCAgSWFuIEJyb3duICA8aWFuLmJyb3duQHByaW50c29mdC5kZT4KCgkqIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmM6IE5ldyBmaWxlLgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0c3lzdGVtLmM6IFVwZGF0ZWQgZm9yIEFtaWdhT1MgMy45LgoJKiBidWlsZHMvYW1pZ2EvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMi0wMS0xOCAgSWFuIEJyb3duICA8aWFuLmJyb3duQHByaW50c29mdC5kZT4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5hNDogVGhlIHNjcmlwdCB3YXMgc3RpbGwgYnVnZ3kuCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogTWFrZSBpdCByZWFsbHkgd29yayBmb3IgYW55IGluc3RhbGwKCXByZWZpeC4KCjIwMDItMDEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5hNDogRml4IHNvbWUgc2VyaW91cyBidWdzLgoKMjAwMi0wMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBCdWlsZCB0b3AtbGV2ZWwgSmFtZmlsZS4KCjIwMDItMDEtMDkgIE1heGltIFNoZW1hbmFyZXYgIDxtY3NlZW1hZ2dAeWFob28uY29tPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX2xpbmUpOiBTbWFsbCBvcHRpbWl6YXRpb24gdG8KCXRoZSBzbW9vdGggYW50aS1hbGlhc2VkIHJlbmRlcmVyIHRoYXQgZGVhbHMgd2l0aCB2ZXJ0aWNhbCBzZWdtZW50cy4KCVRoaXMgcmVzdWx0cyBpbiBhIDUtNyUgc3BlZWR1cCBpbiByZW5kZXJpbmcgc3BlZWQuCgoyMDAyLTAxLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgc29tZSB3cmFwcGVyIHNjcmlwdHMgdG8gbWFrZSB0aGUgaW5zdGFsbGF0aW9uIG1vcmUKCVVuaXgtZnJpZW5kbHkuCgoJKiBjb25maWd1cmUsIGluc3RhbGw6IE5ldyBmaWxlcy4KCgkqIElOU1RBTEwsIFJFQURNRS5VTlg6IFVwZGF0ZWQgaW5zdGFsbGF0aW9uIGRvY3VtZW50YXRpb24gdG8gdXNlIHRoZQoJbmV3ICdjb25maWd1cmUnIGFuZCAnaW5zdGFsbCcgc2NyaXB0cy4KCjIwMDItMDEtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC42IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGRvY3MvQlVHUywgZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBkb2N1bWVudGF0aW9uIGZvciAyLjAuNiByZWxlYXNlLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBGaXhlZCBIVE1MIHF1b3RpbmcgaW4gc291cmNlcy4KCShodG1sX2Zvcm1hdCk6IFJlcGxhY2VkIHdpdGggLi4uCgkoaHRtbF9xdW90ZSk6IE5ldyBmdW5jdGlvbi4KCShodG1sX3F1b3RlMCk6IE5ldyBmdW5jdGlvbi4KCShEb2NDb2RlOjpkdW1wX2h0bWw6IFNtYWxsIGltcHJvdmVtZW50LgoJKERvY1BhcmFncmFwaDo6ZHVtcCwgRG9jQmxvY2s6Omh0bWwpOiBVc2UgaHRtbF9xdW90ZTAgYW5kIGh0bWxfcXVvdGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBTZXR0aW5nIGRlZmF1bHQgb3B0aW9ucyBmb3IKCWEgcmVsZWFzZSBidWlsZCAoZGVidWdnaW5nIG9mZiwgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgb2ZmKS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvYmFzZS9mdG91dGxuLmMsIHNyYy9jYWNoZS9mdGNjbWFwLmMsCglzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLAoJc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy9zZm50L3R0c2JpdC5jOiBSZW1vdmluZyBzbWFsbCBjb21waWxlcgoJd2FybmluZ3MgKGluIHBlZGFudGljIGNvbXBpbGF0aW9uIG1vZGVzKS4KCjIwMDItMDEtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBNb2RpZmllZCBjb21wdXRhdGlvbgoJb2YgYXV0by1oaW50ZWQgc3RlbSB3aWR0aHM7IHRoaXMgYXZvaWRzIGNvbG9yIGZyaW5nZXMgaW4KCSJDbGVhclR5cGUtbGlrZSIgcmVuZGVyaW5nLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaF9IZWFkZXIsCglUVF9Mb2FkX1NpbXBsZV9HbHlwaCwgVFRfTG9hZF9Db21wb3NpdGVfR2x5cGgsIGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGxvYWRlciB0byBtYWtlIGl0IG1vcmUgcGFyYW5vaWQ7IHRoaXMgYXZvaWRzCgluYXN0eSBidWZmZXIgb3ZlcmZsb3dzIGluIHRoZSBjYXNlIG9mIGludmFsaWQgZ2x5cGggZGF0YSAoYXMKCWVuY291bnRlcmVkIGluIHRoZSBvdXRwdXQgb2Ygc29tZSBidWdneSBmb250IGNvbnZlcnRlcnMpLgoKMjAwMi0wMS0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLlVOWDogQWRkZWQgc3BlY2lhbCBSRUFETUUgZmlsZSBmb3IgVW5peCB1c2Vycy4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19TdHJlYW0pOiBGaXhlZCB0eXBvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmM6IEFkZGVkICNpbmNsdWRlIEZUX09VVExJTkVfSCB0byBnZXQgcmlkCglvZiBjb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9DaGVjayk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wMS0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpOiBBZGQgY2FzdCB0byBhdm9pZCBjb21waWxlcgoJd2FybmluZy4KCjIwMDItMDEtMDMgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19TdHJlYW0pOiBBZGRlZCBhIGZpeCB0byBlbnN1cmUgdGhhdAoJYWxsIEZyZWVUeXBlIGlucHV0IHN0cmVhbXMgYXJlIGNsb3NlZCBpbiBjaGlsZCBwcm9jZXNzZXMgb2YgYSAiZm9yayIKCW9uIFVuaXggc3lzdGVtcy4gIFRoaXMgaXMgaW1wb3J0YW50IHRvIGF2b2lkIChwb3RlbnRpYWwpIGFjY2VzcwoJY29udHJvbCBpc3N1ZXMuCgoyMDAyLTAxLTAzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEZpeGVkIGEgYnVnIHRoYXQgY3Jhc2hlZCB0aGUKCWxpYnJhcnkgd2hlbiBkZWFsaW5nIHdpdGggY2VydGFpbiB3ZWlyZCBmb250cyBsaWtlICJTdGFsaW5ncmFkIiwgaW4KCSJzYWRuLnBmYiIgKHRoaXMgZm9udCBoYXMgbm8gZnVsbCBmb250IG5hbWUgZW50cnkpLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9DaGVjayk6CglOZXcgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGNvbnNpc3RlbmN5IG9mIG91dGxpbmUgZGF0YS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXNlIGBGVF9PdXRsaW5lX0NoZWNrJyB0bwoJZW5zdXJlIHRoYXQgbG9hZGVkIGdseXBocyBhcmUgdmFsaWQuICBUaGlzIGFsbG93cyBjZXJ0YWluIGZvbnRzIGxpa2UKCSJ0dDEwOTVtXy50dGYiIHRvIGJlIGxvYWRlZCBldmVuIHRob3VnaCBpdCBhcHBlYXJzIHRoZXkgY29udGFpbgoJcmVhbGx5IGZ1bmt5IGdseXBocy4KCglUaGVyZSBzdGlsbCBpcyBhIGJ1ZyB0aGVyZSwgdGhvdWdoLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCBlcnJvciBjb25kaXRpb24uCgoyMDAxLTEyLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogRml4IGFkdmFuY2Ugd2lkdGgKCWNvbXB1dGF0aW9uIG9mIGF1dG8taGludGVkIGdseXBocy4gIFRoaXMgbm90aWNlYWJseSBpbXByb3ZlcyB0aGUKCXNwYWNpbmcgb2YgbGV0dGVycyBpbiBLREUgYW5kIEdub21lLgoKMjAwMS0xMi0yNSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBDb3JyZWN0aW5nIHRoZSBvcmRlciBmb3IgQm9ybGFuZCBjb21waWxlcnM6CgkxNi1iaXQgYmNjIHdhcyBuZXZlciBzZWxlY3RlZCwgYWx3YXlzIG92ZXJyaWRkZW4gYnkgMzItYml0IGJjYzMyLgoKMjAwMS0xMi0yMiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wZmMvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogSGFuZGxlIHByb3BlcnR5IGBQT0lOVF9TSVpFJwoJYW5kIGZpeCBpbmNvcnJlY3QgY29tcHV0YXRpb24gb2YgYGF2YWlsYWJsZV9zaXplcycuCgoyMDAxLTEyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkKTogQXV0by1oaW50ZWQgZ2x5cGhzIGhhZCBhbgoJaW5jb3JyZWN0IGdseXBoIGFkdmFuY2UgaW4gdGhlIGNhc2Ugb2YgbW9uby13aWR0aCBmb250cyAobGlrZQoJQ291cmllciwgQW5kYWxlIE1vbm8sIGFuZCBvdGhlcnMpLgoKMjAwMS0xMi0yMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGFwdGF0aW9ucyB0byBsYXRlc3QgY2hhbmdlcy4KCVN1cHBvcnQgYWRkZWQgZm9yIE1vcnBoT1MuCgoyMDAxLTEyLTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKEZUX0NPTVBPTkVOVCk6IFJlZGVmaW5lIHRvIGB0cmFjZV9wc2hyZWMnLgoJKHBzX21hc2tfdGFibGVfbWVyZ2UsIHBzX2hpbnRzX29wZW4sIHBzX2hpbnRzX3N0ZW0sCglwc19oaW50c190MXN0ZW0zLCBwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6IEZpeAoJRlRfRVJST1IgbWVzc2FnZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMScuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChGVF9DT01QT05FTlQpOiBEZWZpbmUgYXMKCWB0cmFjZV9wc2hhbGdvMicuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IFVwZGF0ZWQuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBOZXcgZmlsZS4KCjIwMDEtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOgoJSWdub3JlIGludmFsaWQgImhpbnRtYXNrIiBhbmQgImNudHJtYXNrIiBvcGVyYXRvcnMgKGluc3RlYWQgb2YKCXJldHVybmluZyBhbiBlcnJvcikuICBHbHlwaCAyMDI4IG9mIHRoZSBDRkYgZm9udCAiTVN1bmctTGlnaHQtQWNybyIKCWNvdWxkbid0IGJlIHJlbmRlcmVkIG90aGVyd2lzZSAoaXQgc2VlbXMgaXRzIGNoYXJzdHJpbmcgaXMgYnVnZ3ksCgl0aG91Z2ggdGhpcyByZXF1aXJlcyBtb3JlIGFuYWx5c2lzKS4KCShGVF9DT01QT05FTlQpOiBEZWZpbmUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyksIHNyYy9wc2F1eC90MWRlY29kZS5jCgkoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyksIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jICgqKSwgRml4ZWQgYQoJYnVnIHdoZXJlIHRoZSBYIGFuZCBZIGF4aXMgd2hlcmUgaW52ZXJzZWQgaW4gdGhlIHBvc3RzY3JpcHQgaGludGVyLgoJVGhpcyBjYXVzZWQgcHJvYmxlbSB3aGVuIGRpc3BsYXlpbmcgb24gbm9uLXNxdWFyZSBzdXJmYWNlcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBzL3ZlcnRpY2FsL2RpbWVuc2lvbi8uCgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jIChwc2hfZ2xvYmFsc19uZXcpOiBSZXBsYWNlZCBhIGZsb2F0aW5nCglwb2ludCBjb25zdGFudCB3aXRoIGEgZml4ZWQtZmxvYXQgZXF1aXZhbGVudC4gIEZvciBzb21lIHJlYXNvbnMgbm90CglhbGwgY29tcGlsZXJzIGFyZSBjYXBhYmxlIG9mIGRpcmVjdGx5IGNvbXB1dGluZyBhIGZsb2F0aW5nIHBvaW50ZXIKCWNvbnN0YW50IGNhc3RlZCB0byBGVF9GaXhlZCwgYW5kIHdpbGwgbGluayBhIG1hdGggbGlicmFyeSBpbnN0ZWFkLgoKMjAwMS0xMi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3ksIGZ0Y19jYWNoZV9sb29rdXApOiBGaXgKCXRyYWNpbmcgc3RyaW5ncy4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCglmdGNfZmFtaWx5X3RhYmxlX2ZyZWUsIEZUQ19NYW5hZ2VyX0NoZWNrKTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBEaXR0by4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMTItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBQb3N0U2NyaXB0IGhpbnRlciBzdXBwb3J0IHRvIHRoZSBDRkYgYW5kIENJRCBkcml2ZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oIChDRkZfRm9udCk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfSW5pdF9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Jbml0KTogVGhpcy4KCUFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX0RvbmVfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRGVjb2Rlcik6IEFkZGVkIG5ldyBhcmd1bWVudCBgaGludGluZycuCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IHZzdGVtIHN1cHBvcnQuCgkoQ0ZGX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShjZmZfbG9va3VwX2dseXBoX2J5X3N0ZGNoYXJjb2RlKTogVXNlIENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcoKS4KCShjZmZfYXJndW1lbnRfY291bnRzKTogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIENGRl9TaXplX0RvbmUsIENGRl9TaXplX0luaXQsCglDRkZfU2l6ZV9SZXNldCwgQ0ZGX0dseXBoU2xvdF9Eb25lLCBDRkZfR0x5cGhTbG90X0luaXQpOiBOZXcKCWZ1bmN0aW9ucy4KCShDRkZfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50ZXIgc3VwcG9ydC4KCShDRkZfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRmFjZV9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0ZGX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2ZmL2NmZm9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChDSURfRmFjZVJlYyk6IE5ldyBtZW1iZXIKCWBwc2hpbnRlcicuCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpOiBBZGQgaGludGVyIHN1cHBvcnQuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDSURfR2x5cGhTbG90X0RvbmUsIENJRF9HbHlwaFNsb3RfSW5pdCwgQ0lEX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsCglDSURfU2l6ZV9Eb25lLCBDSURfU2l6ZV9Jbml0LCBDSURfU2l6ZV9SZXNldCk6IE5ldyBmdW5jdGlvbnMuCgkoQ0lEX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0lEX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKENJRF9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDSURfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2lkcml2ZXIuYzogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAodDJfaGludF9zdGVtcyk6IEZpeGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IEZpeGVkIGEgc3R1cGlkIGJ1ZyB0aGF0CgljcmFzaGVkIHRoZSBsaWJyYXJ5IG9uIGV4aXQuCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogRW5hYmxlIGZvbnQgbWF0cml4Cgl0cmFuc2Zvcm1hdGlvbiBvZiBoaW50ZWQgZ2x5cGhzLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRmFjZV9Eb25lKTogRml4ZWQgYSBtZW1vcnkgbGVhazsgdGhlIHN1YnJzCglyb3V0aW5lcyB3ZXJlIG5ldmVyIHJlbGVhc2VkIHdoZW4gQ0lEIGZhY2VzIHdlcmUgZGVzdHJveWVkLgoKCSogc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmM6IFVwZGF0ZWQKCXRvIG1vdmUgdGhlIGRlZmluaXRpb24gb2YgZW5jb2RpbmcgdGFibGVzIGJhY2sgd2l0aGluICJjZmZsb2FkLmMiCglpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIHBhcnQgb2YgYSBzaGFyZWQgaGVhZGVyIChjYXVzaW5nIHByb2JsZW1zIGluCgkibXVsdGkiIGJ1aWxkcykuICBUaGlzIHJldmVydHMgY2hhbmdlIDIwMDEtMDgtMDguCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC42IHJlbGVhc2UuCgkqIGRvY3MvVE9ETzogQWRkZWQgInN0ZW0zIGFuZCBjb3VudGVyIGhpbnRzIHN1cHBvcnQiIHRvIHRoZSBUT0RPCglsaXN0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIuCgkqIGRvY3MvQlVHUzogQ2xvc2VkIHRoZSBBVVRPSElOVC1OTy1TQklUUyBidWcuCgoyMDAxLTEyLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2FjaGUuaDogQWRkZWQgY29tbWVudHMgdG8gaW5kaWNhdGUgdGhhdAoJc29tZSBvZiB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgYXBwbGljYXRpb25zCgl0aGF0IG5lZWQgdG8gaW1wbGVtZW50IGN1c3RvbSBjYWNoZSB0eXBlcy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGN1cl90b19vcmcsIG9yZ190b19jdXIpOiBGaXhlZCBhIG5hc3R5IGJ1ZwoJdGhhdCBwcmV2ZW50ZWQgY29tcG9zaXRlcyBmcm9tIGxvYWRpbmcgY29ycmVjdGx5LCBkdWUgdG8gbWlzc2luZwoJcGFyZW50aGVzZXMgYXJvdW5kIG1hY3JvIHBhcmFtZXRlcnMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBNYWtlIHRoZSAicG9zdCIgYW5kICJuYW1lIgoJdGFibGVzIG9wdGlvbmFsIHRvIGxvYWQgUENMIGZvbnRzIHByb3Blcmx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy9iYXNlL2Z0b2Jqcy5jCgkoRlRfTG9hZF9HbHlwaCksIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTE9BRF9TQklUU19PTkxZKToKCSJGaXhlZCIgdGhlIGJ1ZyB0aGF0IHByZXZlbnRlZCBlbWJlZGRlZCBiaXRtYXBzIHRvIGJlIGxvYWRlZCB3aGVuCgl0aGUgYXV0by1oaW50ZXIgaXMgdXNlZC4gIFRoaXMgYWN0dWFsbHkgaXMgYSBoYWNrIGJ1dCB3aWxsIGJlIGVub3VnaAoJdW50aWwgdGhlIGludGVybmFsIHJlLWRlc2lnbiBzY2hlZHVsZWQgZm9yIEZyZWVUeXBlIDIuMS4KCgkqIHNyYy9yYXN0ZXIvZnRyZW5kMS5jIChmdF9yYXN0ZXIxX3JlbmRlcik6IEZpeGVkIGEgbmFzdHkgb3V0bGluZQoJc2hpZnRpbmcgYnVnIGluIHRoZSBtb25vY2hyb21lIHJlbmRlcmVyLgoKCSogUkVBRE1FOiBVcGRhdGVkIHZlcnNpb24gbnVtYmVycyB0byAyLjAuNi4KCjIwMDEtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggdGVzdCBmb3IgaW52YWxpZAoJZ2x5cGggaGVhZGVyLgoKMjAwMS0xMi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmggKEZUQ19Ob2RlX1VucmVmKTogUmVtb3ZlZC4gIEl0IGlzCglhbHJlYWR5IGluIGZ0Y21hbmFnLmguCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgZ2ZhbScuCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJKiBmdGNfZmFtaWx5X3RhYmxlX2ZyZWUpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oOiBVcGRhdGVkLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9ub2RlX2luaXQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCglgY2ZhbScuCglSZW1vdmUgY29tcGlsZXIgd2FybmluZy4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCShmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDg6MDoyLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQuCgoyMDAxLTEyLTE0ICBTY290dCBMb25nICA8c2NvdHRAc3dpZnR2aWV3LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhpbmcgY3Jhc2ggd2hlbgoJZGVhbGluZyB3aXRoIGludmFsaWQgZm9udHMgKGkuZS4gZ2x5cGggc2l6ZSA8IDEwIGJ5dGVzKS4KCjIwMDEtMTItMTQgIFNhbSBMYXRpbmdhICA8c2xvdWtlbkBkZXZvbHV0aW9uLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnJlZXR5cGUubWFrZTogQSBuZXcgTWFrZWZpbGUgdG8gYnVpbGQgd2l0aCBNUFcgb24KCU1hY09TIGNsYXNzaWMuCgoyMDAxLTEyLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYwoJKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Mb2FkX0dseXBoKSwKCXNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBGaXhlZCBhIHNlcmlvdXMgYnVnIGNvbW1vbiB0bwoJYWxsIGZvbnQgZHJpdmVycyAodGhlIGFkdmFuY2Ugd2lkdGggd2FzIG5ldmVyIGhpbnRlZCB3aGVuIGl0CglzaG91bGQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZGVidWdfbWVtX2R1bW15KSBbIUZUX0RFQlVHX01FTU9SWV06IERvbid0Cgl1c2UgYGV4dGVybicga2V5d29yZC4KCjIwMDEtMTItMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcywgcHNoX2JsdWVzX3NuYXBfc3RlbQoJcHNoX2dsb2JhbHNfbmV3KTogQWRkaW5nIGNvcnJlY3QgQmx1ZVNjYWxlL0JsdWVTaGlmdCBzdXBwb3J0LCBwbHVzCglmYW1pbHkgYmx1ZXMgcHJvY2Vzc2luZy4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVzUmVjKTogVXBkYXRlZC4KCglTdGFydGVkIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIgaW4gdGhlIENGRiBtb2R1bGUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEltcGxlbWVudCBpdC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoKMjAwMS0xMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBTb21lIHBvcnRhYmlsaXR5IGZpeGVzLgoKMjAwMS0xMi0xMSAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgZnRkZWJ1Zy5vYmouCgoyMDAxLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9HZW5lcmljX0hlYWRlcik6IFR5cG9zLgoKMjAwMS0xMi0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNb2RpZmllZCB0aGUgc2NyaXB0IHRvIHByZXZlbnQKCXBhc3NpbmcgIi1ML3Vzci9saWIiIHRvIGdjYy4KCgkqIGRvY3MvRlRMLlRYVDogU2ltcGxlIGZpeCAoY2hhbmdlICJMSUNFTlNFLlRYVCIgdG8gIkZUTC5UWFQiKS4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogTmV3IGZpbGUgZm9yIGNoZWNraW5nIGNvbmZpZ3VyZSBwYXRocy4KCVdlIG5lZWQgdG8gaW5zdGFsbCBpdCBpbiAkKHByZWZpeCkvc2hhcmUvYWNsb2NhbC9mcmVldHlwZTIubTQgYnV0IEkKCWRpZG4ndCBtb2RpZnkgYnVpbGRzL3VuaXgvaW5zdGFsbC5tayB5ZXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIHRoZSBpbnN0cnVjdGlvbnMgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyB3aXRoCglKYW0uICBUaGV5IHdlcmUgc2ltcGx5IHdyb25nLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQ29zKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdCBjYXVzZWQKCXNsaWdodGx5IGltcHJvcGVyIHJlc3VsdHMgZm9yIGBGVF9Db3MnIGFuZCBgRlRfU2luJyAoZXhhbXBsZToKCUZUX1NpbigwKSA9PSAtMSEpLgoKMjAwMS0xMi0xMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoR0VUX0xvbmdMRSwgR0VUX1VMb25nTEUpOgoJRml4ZWQgaW5jb3JyZWN0IGFyZ3VtZW50IHR5cGVzLgoKMjAwMS0xMi0xMCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Jbml0X0ZhY2UpOiBBbGxvdyBYZnQgdG8gdXNlIFBDRiBmb250cwoJYnkgc2V0dGluZyB0aGUgImZhY2UtPm1ldHJpY3MubWF4X2FkdmFuY2UiIGNvcnJlY3RseS4KCjIwMDEtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY21hcC5oLCBzcmMvY2FjaGUvZnRjY21hcC5jOiBBZGRlZCBuZXcKCWNoYXJtYXAgY2FjaGUuCgkqIHNyYy9jYWNoZS9mdGNhY2hlLmM6IFVwZGF0ZWQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogcy9VTlVTRUQvRlRfVU5VU0VELy4KCjIwMDEtMTItMDYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCglBZGRlZCBzdXBwb3J0IGZvciByZWFkaW5nIC5kZm9udCBmaWxlcyBvbiBNYWMgT1MgWC4gIEFsc28gYWRkZWQgYQoJbmV3IHJvdXRpbmUgd2hpY2ggbG9va3MgdXAgYSBnaXZlbiBmb250IGJ5IG5hbWUgaW4gdGhlIE1hYyBPUyBhbmQKCXJldHVybnMgdGhlIGRpc2sgZmlsZSB3aGVyZSBpdCByZXNpZGVzLgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogSW5jbHVkZSA8RmlsZXMuaD4gYW5kIDxUZXh0VXRpbHMuaD4uCgkoaXNfZGZvbnQpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpOiBOZXcgZnVuY3Rpb24uCgkoRlRfR2V0RmlsZV9Gcm9tX01hY19OYW1lKTogTmV3IGV4cG9ydGVkIGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL0phbWZpbGUsIHNyYy9jYWNoZS9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDEtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IFNtYWxsIHVwZGF0ZS4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogUmUtb3JkZXJlZCBjb2RlIGZvcgoJZGVidWdnaW5nIHB1cnBvc2VzLgoJQ29tbWVudCBvdXQgdXNlIG9mIGBvcmlnaW4nLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBoaWRkZW4gYnVnCgl3aGVyZSBvdXRsaW5lIHNoaWZ0aW5nIHdhc24ndCBjb3JyZWN0bHkgdW5kb25lIGFmdGVyIGJpdG1hcAoJcmFzdGVyaXphdGlvbi4gIFRoaXMgY3JlYXRlZCBwcm9ibGVtcyB3aXRoIGNlcnRhaW4gZ2x5cGhzIChsaWtlICciJwoJb2YgY2VydGFpbiBmb250cykgYW5kIHRoZSBjYWNoZSBzeXN0ZW0uCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkocHMyX2hpbnRzX2FwcGx5KTogU21hbGwgZml4LgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKiwgc3JjL2NhY2hlLyo6CglZZXQgYW5vdGhlciBtYXNzaXZlIHJld3JpdGUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBpbiBvcmRlciB0bwoJYm90aCBpbmNyZWFzZSBwZXJmb3JtYW5jZSBhbmQgYWxsb3cgc2ltcGxlciBjYWNoZSBzdWItY2xhc3NpbmcuICBBcwoJYW4gZXhhbXBsZSwgdGhlIGNvZGUgZm9yIHRoZSBpbWFnZSBhbmQgc2JpdCBjYWNoZXMgaXMgbm93IG11Y2gKCXNpbXBsZXIuCgoJSSBzdGlsbCBuZWVkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbgoJd3d3L2ZyZWV0eXBlMi9kb2NzL2NhY2hlLmh0bWwgdG8gcmVmbGVjdCB0aGUgbmV3IGRlc2lnbiB0aG91Z2guCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9DQUNIRV9DSEFSTUFQX0gpOiBOZXcKCW1hY3JvLgoJKEZUX0NBQ0hFX0lOVEVSTkFMX0NBQ0hFX0gpOiBVcGRhdGVkLgoKMjAwMS0xMi0wNSAgRGF2aWQgS3JhdXNlICA8ZnJlZXR5cGVAZGF2aWRrcmF1c2UuY29tPgoKCSogZG9jcy9saWNlbnNlLnR4dDogcy9YIFdpbmRvd3MvWCBXaW5kb3cgU3lzdGVtLy4KCjIwMDEtMTItMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogRml4IGRlZmluaXRpb24gY29uZGl0aW9uIG9mIE1FTV9TZXQoKS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKE1fWSk6IENoYW5nZSB2YWx1ZSB0byAxOTIuCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4IHByaW50ZigpIHBhcmFtZXRlci4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChmdGNfaW1hZ2Vfbm9kZV9pbml0LAoJZnRjX2ltYWdlX25vZGVfY29tcGFyZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV93ZWlnaHQpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZS4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChNRU1fU2V0KTogTW92ZSBkZWZpbml0aW9uIGRvd24gdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UgVU5VU0VEKCkgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAodGFibGVOYW1lcyk6IFVzZSBgY29uc3QnLgoJKHBjZl9yZWFkX1RPQyk6IENoYW5nZSBjb3VudGVyIG5hbWUgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCVVzZSBgY29uc3QnLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX2Nsb3NlKTogUmVtb3ZlIHJlZHVuZGFudAoJZGVjbGFyYXRpb24uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbmFtZSB2YXJpYWJsZXMKCXRvIGF2b2lkIHNoYWRvd2luZy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuaDogUmVtb3ZlIGRvdWJsZSBkZWNsYXJhdGlvbnMgb2YgYFQxX1NpemVfSW5pdCgpJwoJYW5kIGBUMV9TaXplX0RvbmUoKScuCgoyMDAxLTExLTIwICBBbnRvaW5lIExlY2EgIDxhbnRvaW5lbGVjYUBtdWx0aW1hbmlhLmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQWRkZWQgc29tZSBuZXcgTWljcm9zb2Z0IGxhbmd1YWdlCgljb2RlcyBhbmQgTENJRHMgYXMgZm91bmQgaW4gTVNETiAoUGFzc3BvcnQgU0RLKS4gIEFsc28gYWRkZWQKCWNvbW1lbnRzIGFib3V0IHRoZSBtZWFuaW5nIG9mIGJpdCA1NyBvZiB0aGUgYE9TLzInIHRhYmxlCgkoVFRfVUNSX1NVUlJPR0FURVMpIHdoaWNoICh3aXRoIE9wZW5UeXBlIHYuMS4zKSBub3cgbWVhbnMgInRoZXJlIGlzCglhIGNoYXJhY3RlciBiZXlvbmQgMHhGRkZGIGluIHRoaXMgZm9udCIuICBUaGFua3MgdG8gRGV0bGVmIFf8cmtuZXIKCTxUZXRpU29mdEBhcGcubGFobi5kZT4gZm9yIG5vdGljaW5nIHRoaXMuCgoyMDAxLTExLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIve3BzaGFsZ28yLmMsIHBzaGFsZ28xLmN9OiBGaXhlZCBzdHVwaWQgYnVnIGluIHNvcnRpbmcKCXJvdXRpbmUgdGhhdCBjcmVhdGVkIG5hc3R5IGFsaWdubWVudCBhcnRlZmFjdHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHRlc3RzL2d2aWV3LmM6IERlYnVnZ2luZyB1cGRhdGVzLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IERlLWFjdGl2YXRlZCBleHBlcmltZW50YWwgZ2FtbWEgc3VwcG9ydC4KCUFwcGFyZW50bHksIGBvcHRpbWFsJyBnYW1tYSB0YWJsZXMgZGVwZW5kIG9uIHRoZSBtb25pdG9yIHR5cGUsCglyZXNvbHV0aW9uIGFuZCBnZW5lcmFsIGthcm1hLCBzbyBpdCdzIGJldHRlciB0byBjb21wdXRlIHRoZW0gb3V0c2lkZQoJb2YgdGhlIHJhc3Rlcml6ZXIgaXRzZWxmLgoJKGdyYXlfY29udmVydF9nbHlwaCk6IFVzZSBgdm9sYXRpbGUnIGtleXdvcmQuCgoyMDAxLTEwLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGV4cGVyaW1lbnRhbCBgZ2FtbWEnIHN1cHBvcnQuICBUaGlzIHByb2R1Y2VzIHNtb290aGVyIGdseXBocwoJYXQgc21hbGwgc2l6ZXMgZm9yIHZlcnkgbGl0dGxlIGNvc3QuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfaW5pdF9nYW1tYSk6IE5ldyBmdW5jdGlvbi4KCShncmF5X3Jhc3Rlcl9uZXcpOiBVc2UgaXQuCgoJVmFyaW91cyBmaXhlcyB0byB0aGUgYXV0by1oaW50ZXIuICBUaGV5IG1lcmVseSBpbXByb3ZlIHRoZSBvdXRwdXQgb2YKCXNhbnMtc2VyaWYgZm9udHMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHN0aWxsIHByb2JsZW1zIHdpdGggc2VyaWZlZAoJZm9udHMgYW5kIGNvbXBvc2l0ZXMgKGFjY2VudGVkIGNoYXJhY3RlcnMpLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkLAoJYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX291dGxpbmVfc2F2ZSwgYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzKTogRml4IHR5cG9zLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBOZXcgYXJndW1lbnQKCWB2ZXJ0aWNhbCcuICBJbXBsZW1lbnQgaW1wcm92ZW1lbnQuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfaGludF9lZGdlcyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cywgYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogRml4Cgl0eXBvcy4KCShhaF9oaW50ZXJfbG9hZCk6IFNldCBgYWhfZGVidWdfaGludGVyJyBpZiBERUJVR19ISU5URVIgaXMgZGVmaW5lZC4KCSogc3JjL2F1dG9oaW50L2FobW9kdWxlLmM6IEltcGxlbWVudCBzdXBwb3J0IGZvciBERUJVR19ISU5URVIgbWFjcm8uCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmg6IERpdHRvLgoJKEFIX0hpbnRlcik6IFJlbW92ZSBgZGlzYWJsZV9ob3J6X2VkZ2VzJyBhbmQgYGRpc2FibGVfdmVydF9lZGdlcycKCShtYWtpbmcgdGhlbSBnbG9iYWwgYXMgYGFoX2RlYnVnX2Rpc2FibGVfaG9yeicgYW5kCglgYWhfZGVidWdfZGlzYWJsZV92ZXJ0JykuCglGaXggdHlwb3MuCgoJKiB0ZXN0cy9ndmlldy5jOiBVcGRhdGVkIHRoZSBkZWJ1Z2dpbmcgZ2x5cGggdmlld2VyIHRvIHNob3cgdGhlCgloaW50cyBnZW5lcmF0ZWQgYnkgdGhlICJhdXRvaGludCIgbW9kdWxlLgoKMjAwMS0xMC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NodW5rLmMgKGZ0Y19jaHVua19jYWNoZV9sb29rdXApOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb25zaWRlcmFibHkgbG93ZXJlZCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFic3RyYWN0IGNodW5rIGNhY2hlLgoKMjAwMS0xMC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oLAoJc3JjL2NhY2hlLyouYzogTWFqb3IgcmUtZGVzaWduIG9mIHRoZSBjYWNoZSBzdWItc3lzdGVtIHRvIHByb3ZpZGUKCWJldHRlciBwZXJmb3JtYW5jZSBhcyB3ZWxsIGFzIGFuICJBY3F1aXJlIi8iUmVsZWFzZSIgQVBJLiAgU2VlbXMgdG8KCXdvcmsgd2VsbCBoZXJlLCBidXQgcHJvYmFibHkgbmVlZHMgYSBiaXQgbW9yZSB0ZXN0aW5nLgoKMjAwMS0xMC0yNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQgdG8gcmVmbGVjdCBteSB0YWtpbmcgb3ZlciB0aGUgcHJvamVjdAoJYW5kIHRoYXQgaXMgbm93IGJlaW5nIGFjdGl2ZWx5IG1haW50YWluZWQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwYXJzZV9mb25kKTogQXBwbGllZCBwYXRjaGVzIGZyb20gUGF1bCBNaWxsZXIKCTxwYXVsbUBwcm9mb3VuZGVmZmVjdHMuY29tPiB0byBzdXBwb3J0IGxvYWRpbmcgYSBmYWNlIG90aGVyIHRoYW4gdGhlCglmaXJzdCBmcm9tIGEgRk9ORCByZXNvdXJjZS4KCShGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yNSAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9mdGxpYi5wcmo6IFVwZGF0ZSBvZiBDb2RlV2FycmlvciBwcm9qZWN0IGZpbGUgZm9yIE1hYwoJT1MgZm9yIGxhdGVzdCB2ZXJzaW9uICg3KSBvZiBDV1BybyBhbmQgZm9yIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBGVAoJc291cmNlIHRyZWUuCgoyMDAxLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVcGRhdGVkIGNvbW1lbnRzIHRvIGV4cGxhaW4KCXByZWNpc2VseSBob3cgdG8gdXNlIHByb2plY3Qtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgd2l0aG91dAoJbW9kaWZ5aW5nIHRoaXMgZmlsZSBtYW51YWxseS4KCgkoRlRfQ09ORklHX0ZPUkNFX0lOVDY0KTogRGVmaW5lLgoKCShGVF9ERUJVR19NRU1PUlkpOiBOZXcgbWFjcm8uCgoyMDAxLTEwLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSk6IEFkZGVkIGEgbWlzc2luZyBgeycuCgoyMDAxLTEwLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglJbXByb3ZlbWVudHMgdG8gdGhlIG1lbW9yeSBkZWJ1Z2dlciB0byByZXBvcnQgbW9yZSBpbmZvcm1hdGlvbiBpbgoJY2FzZSBvZiBlcnJvcnMuICBBbHNvLCBzb21lIGFsbG9jYXRpb25zIHRoYXQgb2NjdXJyZWQgdGhyb3VnaCBSRUFMTE9DCgljb3VsZG4ndCBiZSBwcmV2aW91c2x5IGNhdGNoZWQgY29ycmVjdGx5LgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzLAoJYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKSwgc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChmdF9ibGFja19uZXcpLAoJc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlfcmVuZGVyX3NwYW4sIGdyYXlfcmFzdGVyX25ldyk6IFJlcGxhY2VkCglsaWJlcmFsIHVzZXMgb2YgbWVtc2V0KCkgYnkgdGhlIE1FTV9TZXQoKSBtYWNyby4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoVXBkYXRlKTogUmVtb3ZlZCB0byBiZSBpbmxpbmVkIGluIC4uLgoJKFNvcnQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL3Ztcy9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvYW1pZ2EvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJc3JjL2Jhc2UvZnRkYmdtZW0uYzogVXBkYXRlZCB0aGUgbWVtb3J5IGRlYnVnZ2VyIGFuZAoJcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG9mIGBmdHN5c3RlbScgaW4gb3JkZXIgdG8gYmUgYWJsZQoJdG8gZGVidWcgbWVtb3J5IGFsbG9jYXRpb25zIG9uIFVuaXgsIFZNUyBhbmQgQW1pZ2EgdG9vIQoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9yZWNvcmRfbWFzayk6IFJlbW92ZWQKCXNvbWUgYm9ndXMgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglNb2RpZmllZCB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHRvIHJlcG9ydCB0aGUgbG9jYXRpb24gKHNvdXJjZQoJZmlsZSBuYW1lICsgbGluZSBudW1iZXIpIHdoZXJlIGxlYWtlZCBtZW1vcnkgYmxvY2tzIGFyZSBhbGxvY2F0ZWQgaW4KCXRoZSBzb3VyY2UgZmlsZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6IE5ldyBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIuICBZb3UgbXVzdAoJZGVmaW5lIHRoZSBGVF9ERUJVR19NRU1PUlkgbWFjcm8gaW4gImZ0b3B0aW9uLmgiIHRvIGVuYWJsZSBpdC4gIEl0Cgl3aWxsIHJlY29yZCBldmVyeSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGFuZCByZXBvcnQgc2ltcGxlIGVycm9ycwoJbGlrZSBtZW1vcnkgbGVha3MgYW5kIGRvdWJsZSBkZWxldGVzLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogSW5jbHVkZSBmdGRiZ21lbS4KCSogc3JjL2Jhc2UvcnVsZXMubWs6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGJhc2UuYzogSW5jbHVkZSBmdGRiZ21lbS5jLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQWRkZWQgdGhlIEZUX0RFQlVHX01FTU9SWQoJbWFjcm8gZGVmaW5pdGlvbi4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KTogTW9kaWZpZWQgdGhlCgliYXNlIGNvbXBvbmVudCB0byB1c2UgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB3aGVuIHRoZSBtYWNybwoJRlRfREVCVUdfTUVNT1JZIGlzIGRlZmluZWQuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHN1YmZvbnRzIGFycmF5IG9ubHkgaWYKCXdlIGFyZSB3b3JraW5nIHdpdGggYSBDSUQga2V5ZWQgQ0ZGIGZvbnQuICBPdGhlcndpc2UsIGEgdmFyaWFibGUKCXRoYXQgd2FzIG5ldmVyIGFsbG9jYXRlZCBtZW1vcnkgbWlnaHQgZnJlZWQuICBUaGlzIGlzIGEgY29ycmVjdGlvbgoJdG8gdGhlIHByZXZpb3VzIHBhdGNoIGZvciBmcmVlaW5nIHN1YmZvbnRzLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSB0aGUgc3ViZm9udHMgYXJyYXkgdG8KCWF2b2lkIGEgbWVtb3J5IGxlYWsuCgoyMDAxLTEwLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jOiBSZW1vdmluZyBjb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2RlcwoJKGluIG11bHRpLW9iamVjdCBjb21waWxhdGlvbiBtb2RlLCBtYWlubHkpLgoKMjAwMS0xMC0yMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZQoJdGhhdCBjdXN0b20gZW5jb2RpbmdzIChpLmUuLCBuZWl0aGVyIFN0YW5kYXJkRW5jb2Rpbmcgbm9yCglFeHBlcnRFbmNvZGluZykgYXJlIG5vdCBsb2FkZWQgdHdpY2Ugd2hlbiB0aGUgVHlwZSAxIGZvbnQgaXMKCXN5bnRoZXRpYy4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9zdWJycyk6IEFkZGVkIGEgdGVzdAoJZm9yIHdoZW4gbG9hZGluZyBzeW50aGV0aWMgZm9udHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgbmFtZQoJYW5kIHN1YnJvdHVpbmVzIGFyZSBub3QgbG9hZGVkIHR3aWNlLiAgVGhpcyBpcyB0byByZW1vdmUgYSBtZW1vcnkKCWxlYWsgdGhhdCBvY2N1cnJlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBtZW1vcnkgYmxvY2tzIGZvciB0aGVzZQoJb2JqZWN0cyB3ZXJlIG5vdCBkZWFsbG9jYXRlZCB3aGVuIHRoZSBvYmplY3RzIHdlcmUgcGFyc2VkIHRoZQoJc2Vjb25kIHRpbWUuCgoyMDAxLTEwLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IEdldHRpbmcgcmlkIG9mCgljb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9wc2hpbnRlci9tb2R1bGUubWssIHNyYy9wc2hpbnRlci9ydWxlcy5tazogQWRkaW5nIGNvbnRyb2wKCWZpbGVzIHRvIGJ1aWxkIHRoZSBQb3N0U2NyaXB0IGhpbnRlciB3aXRoIHRoZSAib2xkIiBidWlsZCBzeXN0ZW0uCgoyMDAxLTEwLTE5ICBKYWNvYiBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogZGVzY3JpcC5tbXMsIHNyYy9wc2hpbnRlci9kZXNjcmlwLm1tczogVXBkYXRlcyB0byB0aGUgVk1TIGJ1aWxkCglmaWxlcy4KCjIwMDEtMTAtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmgsIHNyYy90b29scy9nbG5hbWVzLnB5OiBSZXdyb3RlIHRoZQoJImdsbmFtZXMucHkiIHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSAicHN0YWJsZXMuaCIgaGVhZGVyIGZpbGUuCglUaGUgb2xkIG9uZSBjb250YWluZWQgYSBzZXJpb3VzIGJ1ZyB0aGF0IG1hZGUgRnJlZVR5cGUgcmV0dXJuCglpbmNvcnJlY3QgZ2x5cGggbmFtZXMgZm9yIGNlcnRhaW4gZ2x5cGhzLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogQ2hhbmdpbmcgY29tcHV0YXRpb24gb2YKCXBpeGVsIHNpemUgZnJvbSBjaGFyYWN0ZXIgc2l6ZSB0byB1c2Ugcm91bmRpbmcuICBUaGlzIGlzIGFuCglleHBlcmltZW50IHRvIHNlZSB3aGV0aGVyIHRoaXMgZ2l2ZXMgdmFsdWVzIHNpbWlsYXIgdG8gV2luZG93cyBmb3IKCXNjYWxlZCBhc2NlbnQvZGVzY2VudC9ldGMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2NjRieTMyKTogQ2hhbmdlZCB0aGUgaW1wbGVtZW50YXRpb24KCXNsaWdodGx5IHNpbmNlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtaXMtY29tcGlsZWQgb24gTWFjIG1hY2hpbmVzCgl1c2luZyB0aGUgTVBXIEMgY29tcGlsZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVhbGxvYyk6IFdoZW4gYSBtZW1vcnkgYmxvY2sgd2FzIGdyb3duCgl0aHJvdWdoIEZUX1JlYWxsb2MoKSwgdGhlIG5ldyBieXRlcyB3ZXJlIG5vdCBzZXQgdG8gMCwgd2hpY2ggY3JlYXRlZAoJc29tZSBzdHJhbmdlIGJ1Z3MgaW4gdGhlIFBvc3RTY3JpcHQgaGludGVyLgoJKGRlc3Ryb3lfZmFjZSk6IERvbid0IGRlYWxsb2NhdGUgdW5jb25kaXRpb25hbGx5LgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfQ29tcHV0ZV9NYXhfQWR2YW5jZSwgQ0lEX0xvYWRfR2x5cGgpOgoJQWRkaW5nIHN1cHBvcnQgdG8gbmV3IFBvc3RTY3JpcHQgaGludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvcHNoaW50ZXIvSmFtZmlsZSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvLmgsIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYywKCXNyYy9wc2hpbnRlci9wc2htb2QuYywgc3JjL3BzaGludGVyL3BzaG1vZC5oLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvcHNoaW50ZXIvcHNocmVjLmg6IEFkZGluZyBuZXcgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLCBzcmMvcHNhdXgvcHNvYmpzLmMsCglzcmMvcHNhdXgvcHNvYmpzLmgsIHNyYy9wc2F1eC90MWRlY29kZS5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywKCXNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFvYmpzLmg6IFVwZGF0ZXMgdG8gdXNlIHRoZSBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiB0ZXN0cy9KYW1maWxlLCB0ZXN0cy9ndmlldy5jOiBBZGRpbmcgYSBuZXcgZ2x5cGggaGludGluZwoJdmlld2VyL2RlYnVnZ2VyIHRvIHRoZSBzb3VyY2UgdHJlZS4gIE5vdGUgdGhhdCB5b3Ugd2lsbCBfbm90XyBiZQoJYWJsZSB0byBjb21waWxlIGl0IHNpbmNlIGl0IGRlcGVuZHMgb24gYW4gdW5hdmFpbGFibGUgZ3JhcGhpY3MKCWxpYnJhcnkgbmFtZWQgIk5pcnZhbmEiIHRvIHJlbmRlciB2ZWN0b3IgaW1hZ2VzLgoKMjAwMS0xMC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjUgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ludGVybmFsL2Z0b2Jqcy5oLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy90eXBlMS90MWRyaXZlci5jOiBBZGRpbmcgYSBuZXcgZnVuY3Rpb24gbmFtZWQKCSdGVF9HZXRfUG9zdHNjcmlwdF9OYW1lJyB0byByZXRyaWV2ZSB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIGEgZ2l2ZW4KCWZvbnQuICBTaG91bGQgd29yayB3aXRoIGFsbCBmb3JtYXRzIGV4Y2VwdCBwdXJlIENGRi9DRUYgZm9udHMgKHRoaXMKCXdpbGwgYmUgYWRkZWQgc29vbikuCgoJKiBzcmMvY2lkL2NpZHJpdmVyIChjaWRfZ2V0X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShDSURfR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoU0ZOVF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfcHNfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShHZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkIGZvciAyLjAuNSByZWxlYXNlLgoKMjAwMS0xMC0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIGEgYnVnIGluIGBnbG5hbWVzLnB5JyB0aGF0IHByZXZlbnRlZCBpdCBmcm9tIGdlbmVyYXRpbmcKCWNvcnJlY3QgZ2x5cGggbmFtZXMgdGFibGVzLiAgVGhpcyByZXN1bHRlZCBpbiB0aGUgdW5hdmFpbGFiaWxpdHkgb2YKCWNlcnRhaW4gZ2x5cGhzIGxpa2UgYENhY3V0ZScsIGBjYWN1dGUnIGFuZCBgbHNsYXNoJyBpbiBVbmljb2RlCgljaGFybWFwcywgZXZlbiBpZiB0aGVzZSB3ZXJlIHByZXNlbnQgaW4gdGhlIGZvbnQgKGNhdXNpbmcgcHJvYmxlbXMKCWZvciBQb2xpc2ggdXNlcnMpLgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHkgKG1hY19zdGFuZGFyZF9uYW1lcyk6IEZpeGVkLgoJKHQxX3N0YW5kYXJkX3N0cmluZ3MpOiBTb21lIGZpeGVzIGFuZCByZW5hbWVkIHRvIC4uLgoJKHNpZF9zdGFuZGFyZF9uYW1lcyk6IFRoaXMuCgkodDFfZXhwZXJ0X2VuY29kaW5nKTogRml4ZWQuCgkodGhlX2Fkb2JlX2dseXBoX2xpc3QpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX25hbWVzKTogVGhpcy4KCSh0aGVfYWRvYmVfZ2x5cGhzKTogUmVuYW1lZCB0byAuLi4KCShhZG9iZV9nbHlwaF92YWx1ZXMpOiBUaGlzLgoJKGR1bXBfbWFjX2luZGljZXMsIGR1bXBfZ2x5cGhfbGlzdCwgZHVtcF91bmljb2RlX3ZhbHVlcywgbWFpbik6CglVcGRhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBSZWdlbmVyYXRlZC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfVW5pY29kZV9WYWx1ZSk6IEZpeCBvZmZzZXQuCglGaXggcmV0dXJuIHZhbHVlLgoJVXNlIGBzaWRfc3RhbmRhcmRfdGFibGUnIGFuZCBgcHNfbmFtZXNfdG9fdW5pY29kZScgaW5zdGVhZCBvZgoJYHQxX3N0YW5kYXJkX2dseXBocycgYW5kIGBuYW1lc190b191bmljb2RlJy4KCShQU19NYWNpbnRvc2hfTmFtZSk6IFVzZSBgcHNfZ2x5cGhfbmFtZXMnIGluc3RlYWQgb2YKCWBzdGFuZGFyZF9nbHlwaF9uYW1lcycuCgkoUFNfU3RhbmRhcmRfU3RyaW5ncyk6IFVzZSBgc2lkX3N0YW5kYXJkX25hbWVzJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJy4KCgkqIGRvYy9CVUdTLCBkb2MvVE9ETzogTmV3IGRvY3VtZW50cy4KCjIwMDEtMTAtMDcgIFJpY2hhcmQgQmFyYmVyICA8cmljaEBzb2x1dGlvbnVrLmNvbT4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfTG9va3VwX05vZGUpOiBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZAoJY29ycmVjdCBMUlUgYmVoYXZpb3VyLgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCXNldGptcCgpIGFuZCBsb25nam1wKCkgYXJlIG5vdyB1c2VkIGZvciByb2xsYmFjayAoaS5lLiB3aGVuIG1lbW9yeQoJcG9vbCBvdmVyZmxvdyBvY2N1cnMpLgoKCUZ1bmN0aW9uIG5hbWVzIGFyZSBub3cgYWxsIHVuaWZvcm1seSBwcmVmaXhlZCB3aXRoIGBncmF5XycuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogSW5jbHVkZSA8c2V0am1wLmg+LgoJKEVyclJhc3Rlcl9NZW1vcnlPdmVyZmxvdyk6IE5ldyBtYWNyby4KCShUQXJlYSk6IE5ldyB0eXBlIHRvIHN0b3JlIGFyZWEgdmFsdWVzIGluIGVhY2ggY2VsbCAodXNpbmcgYGludCcgd2FzCgl0b28gc21hbGwgb24gMTYtYml0IHN5c3RlbXMpLiAgPGxpbWl0cy5oPiBpcyBpbmNsdWRlZCB0byBwcm9wZXJseQoJZ2V0IHRoZSBuZWVkZWQgZGF0YSB0eXBlLgoJKFRDZWxsLCBUUmFzdGVyKTogVXNlIGl0LgoJKFRSYXN0ZXIpOiBOZXcgZWxlbWVudCBganVtcF9idWZmZXInLgoJKGdyYXlfY29tcHV0ZV9jYm94KTogVXNlIGBSQVNfQVJHJyBhcyB0aGUgb25seSBwYXJhbWV0ZXIgYW5kIGdldAoJYG91dGxpbmUnIGZyb20gaXQuCgkoZ3JheV9yZWNvcmRfY2VsbCk6IFVzZSBsb25nam1wKCkuCgkoZ3JheV9zZXRfY2VsbCk6IFVzZSBncmF5X3JlY29yZF9jZWxsKCkgZm9yIGVycm9yIGhhbmRsaW5nLgoJKGdyYXlfcmVuZGVyX2xpbmUsIGdyYXlfcmVuZGVyX2NvbmljLCBncmF5X3JlbmRlcl9jdWJpYyk6IFNpbXBsaWZ5LgoJKGdyYXlfY29udmVydF9nbHlwaF9pbm5lcik6IE5ldyBmdW5jdGlvbiwgdXNpbmcgc2V0am1wKCkuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGl0LgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVByb3ZpZGUgYSBwdWJsaWMgQVBJIHRvIG1hbmFnZSBtdWx0aXBsZSBzaXplIG9iamVjdHMgZm9yIGEgZ2l2ZW4KCUZUX0ZhY2UgaW4gdGhlIG5ldyBoZWFkZXIgZmlsZSBgZnRzaXplcy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzaXplcy5oOiBOZXcgaGVhZGVyIGZpbGUsCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IFVzZSBpdC4KCVJlbW92ZSBkZWNsYXJhdGlvbnMgb2YgRlRfTmV3X1NpemUgYW5kIEZUX0RvbmVfU2l6ZSAobW92ZWQgdG8KCWZ0c2l6ZXMuaCkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NJWkVTX0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9BY3RpdmF0ZV9TaXplKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYzogSW5jbHVkZSBmdHNpemVzLmguCgkoZnRjX21hbmFnZXJfaW5pdF9zaXplLCBmdGNfbWFuYWdlcl9mbHVzaF9zaXplKTogVXNlCglGVF9BY3RpdmF0ZV9TaXplLgoKMjAwMS0wOS0yMCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGRlZCBwb3J0IHRvIEFtaWdhIHdpdGggdGhlIFNBUy9DIGNvbXBpbGVyLgoKMjAwMS0wOS0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9Eb25lX0FGTSk6IEZyZWUgYGFmbScuCgoyMDAxLTA5LTEwICBZYW8gWmhhbmcgIDx5emhhbmdAc2hhcmVtZWRpYS5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19pbmRleDIpOiBIYW5kbGUgY29kZSB2YWx1ZXMgd2l0aAoJaGktYnl0ZSA9PSAwIGNvcnJlY3RseS4KCjIwMDEtMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9saW5rLXN0ZC5tayAoJChQUk9KRUNUX0xJQlJBUlkpKTogRml4IHR5cG8uCgoyMDAxLTA4LTMwICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEEgbmV3IHdheSB0byBjb21wdXRlIHRoZQoJdW5pdHMgcGVyIEVNIHdpdGggZ3JlYXRlciBhY2N1cmFjeSAoaW1wb3J0YW50IGZvciBlbWJlZGRlZCBUMSBmb250cwoJaW4gUERGIGRvY3VtZW50cyB0aGF0IHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBUcnVlVHlwZQoJb25lcykuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTm93IHN1cHBvcnRzICIrIiBpbiBmb250IG5hbWVzOwoJdGhpcyBpcyB1c2VkIGluIGVtYmVkZGVkIGZvbnRzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9BZGQpOiBGaXhlZCBhIHJlYWxsb2NhdGlvbiBidWcgdGhhdAoJZ2VuZXJhdGVkIGEgZGFuZ2xpbmcgcG9pbnRlciByZWZlcmVuY2UuCgoyMDAxLTA4LTMwICBBbnRob255IEZlaWsgIDxhZmVpY2tAaG90bWFpbC5jb20+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfUmVhZF9BZm0pOiBOb3cgY29ycmVjdGx5IHNldHMgdGhlIGZsYWcKCUZUX0ZBQ0VfRkxBR19LRVJOSU5HIHdoZW4gYXBwcm9wcmlhdGUgZm9yIFR5cGUxICsgQUZNIGZpbGVzLgoKMjAwMS0wOC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfQ01hcCk6IEZpeCBmcmFtZSBsZW5ndGggb2YKCWBjbWFwX3JlY19maWVsZHMnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIFshRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SU106CglVbmRlZmluZSBGVF9FUlJfQkFTRSBiZWZvcmUgZGVmaW5pbmcgYWdhaW4uCgoyMDAxLTA4LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaDogRml4IHByb3RvdHlwZSBvZiBUVF9Nb3ZlX0Z1bmMuCgoyMDAxLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZG9zL2Rvcy1kZWYubWsgKE5PX09VVFBVVCk6IERvbid0IHVzZSBgJj4nIGJ1dCBgPicuCgoyMDAxLTA4LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBkZWZhdWx0IHNldHRpbmcKCWZvciBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIHRvIHVuZGVmaW5lZCwgc2luY2UgaXQgYnJlYWtzCglzb3VyY2UgY29tcGF0aWJpbGl0eSBpbiBhIGZldyBjYXNlcy4gIFVwZGF0ZWQgdGhlIGNvbW1lbnQgdG8gZXhwbGFpbgoJdGhhdCB0b28uCgoyMDAxLTA4LTE3ICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdik6IEZpeGVkIHNlcmlvdXMgdHlwby4KCjIwMDEtMDgtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBPcGVuVHlwZSAxLjMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfQ01hcDAsIFRUX0NNYXAyLCBUVF9DTWFwNCwKCVRUX0NNYXA2KTogQWRkaW5nIGZpZWxkIGBsYW5ndWFnZScuCgkoVFRfQ01hcFRhYmxlKTogUmVtb3ZpbmcgZmllbGQgYGxhbmd1YWdlJy4KCVR5cGUgb2YgYGxlbmd0aCcgZmllbGQgY2hhbmdlZCB0byBGVF9VTG9uZy4KCUFkZGluZyBmaWVsZHMgZm9yIGNtYXBzIGZvcm1hdCA4LCAxMCwgYW5kIDEyLgoJKFRUX0NNYXBHcm91cCk6IE5ldyBhdXhpbGlhcnkgc3RydWN0dXJlLgoJKFRUX0NNYXA4XzEyLCBUVF9DTWFwMTApOiBOZXcgc3RydWN0dXJlcy4KCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyLCBUVF9WZXJ0SGVhZGVyKToKCVJlbW92ZWQgbGFzdCBlbGVtZW50IG9mIGBSZXNlcnZlZCcgYXJyYXkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCAoVFRfUExBVEZPUk1fQ1VTVE9NLCBUVF9NU19JRF9VQ1NfNCwKCVRUX05BTUVfSURfQ0lEX0ZJTkRGT05UX05BTUUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKFRUX0NoYXJNYXBfTG9hZCk6IFVwZGF0ZWQgbG9hZGluZyBvZiBgbGFuZ3VhZ2UnCglmaWVsZCB0byB0aGUgbmV3IHN0cnVjdHVyZXMuCglGaXhlZCBmcmVlaW5nIG9mIGFycmF5cyBpbiBjYXNlIG9mIHVuc3VjY2Vzc2Z1bCBsb2Fkcy4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZm9ybWF0IDgsIDEwLCBhbmQgMTIgY21hcHMuCgkoVFRfQ2hhck1hcF9GcmVlKTogQWRkZWQgc3VwcG9ydCBmb3IgZnJlZWluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMgoJY21hcHMuCgkoY29kZV90b19pbmRleDQpOiBTbWFsbCBpbXByb3ZlbWVudC4KCShjb2RlX3RvX2luZGV4Nik6IERpdHRvLgoJKGNvZGVfdG9faW5kZXg4XzEyLCBjb2RlX3RvX2luZGV4MTApOiBOZXcgZnVuY3Rpb25zLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzX0hlYWRlcik6IFVwZGF0ZWQgdG8gbmV3CglzdHJ1Y3R1cmUuCgkoVFRfTG9hZF9DTWFwKTogRGl0dG8uCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZW5jb2RpbmdzKTogQWRkIE1TIFVDUzQgdGFibGUgKGJlZm9yZSBNUwoJVW5pY29kZSkuCgoyMDAxLTA4LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X25hbWVfaW5kZXgpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMDgtMDkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8KCWNmZl9nZXRfZ2x5cGhfbmFtZSBmb3IgY29uc2lzdGVuY3kuCgoJKGNmZl9nZXRfZ2x5cGhfaW5kZXgpOiBNaW5vciBkb2N1bWVudGF0aW9uIGNoYW5nZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IE5ldyBmdW5jdGlvbiB1c2VkIGluCglHZXRfSW50ZXJmYWNlIGFzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCB3aGVuIHRoZSAibmFtZV9pbmRleCIKCWZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkoZ2V0X3QxX2dseXBoX25hbWUpOiBSZW5hbWVkIHRvIHQxX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCjIwMDEtMDgtMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogUmVtb3ZlZCBkZWZpbml0aW9ucyBvZiBjZmZfaXNvYWRvYmVfY2hhcnNldCwKCWNmZl9leHBlcnRfY2hhcnNldCwgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBjZmZfc3RhbmRhcmRfZW5jb2RpbmcsCglhbmQgY2ZmX2V4cGVydF9lbmNvZGluZyBhcnJheXMgdG8gY2ZmbG9hZC5oLgoKCSogc3JjL2NmZi9jZmZsb2FkLmg6IEFkZGVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uLCByZXR1cm5lZAoJd2hlbiBgY2ZmX2dldF9pbnRlcmZhY2UnIGlzIGNhbGxlZCB3aXRoIGEgcmVxdWVzdCBmb3IgdGhlCgkibmFtZV9pbmRleCIgZnVuY3Rpb24uCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogTW9kaWZpZWQgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBmdW5jdGlvbgoJYGNmZl9nZXRfbmFtZV9pbmRleCcgd2hlbiB0aGUgIm5hbWVfaW5kZXgiIGZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCk6IE5ldyBmdW5jdGlvbiwgdXNlZCB0bwoJcmV0dXJuIGEgZ2x5cGggaW5kZXggZm9yIGEgZ2l2ZW4gZ2x5cGggbmFtZSBvbmx5IGlmIHRoZSBkcml2ZXIKCXN1cHBvcnRzIGdseXBoIG5hbWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTmFtZV9JbmRleF9SZXF1ZXN0ZXIpOgoJTmV3IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBkZWZpbnRpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24KCUZUX0dldF9OYW1lX0luZGV4LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HZXRfTmFtZV9JbmRleCk6IEFkZGVkCglkb2N1bWVudGF0aW9uIGFuZCBwcm90b3R5cGUuCgoyMDAxLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luLyo6IFJlbW92ZWQuICBVc2UgdGhlIHVuaXggc3R1ZmYgaW5zdGVhZC4KCjIwMDEtMDctMjYgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaCAoRlRfQ0FMTEJBQ0tfREVGKTogVXBkYXRlZCB0byBjaGFuZ2UgZGF0ZWQKCTIwMDEtMDYtMjcuCgoyMDAxLTA3LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1RhYmxlKTogVXNlIEZUX09mZnNldCBmb3IKCWBjdXJzb3InIGFuZCBgY2FwYWNpdHknLgoJKiBzcmMvcHNhdXgvcHNvYmpjLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3Igc2Vjb25kCglwYXJhbWV0ZXIuCgkoUFNfVGFibGVfQWRkKTogVXNlIEZUX09mZnNldCBmb3IgYG5ld19zaXplJy4KCglBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiAwLjUgbWF4cCB0YWJsZXMuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NYXhQcm9maWxlKTogSW1wbGVtZW50IGl0LgoJKFRUX0xvYWRfT1MyKTogSW5pdGlhbGl6ZSBzb21lIHZhbHVlcy4KCjIwMDEtMDctMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYzogSW5jbHVkZSBmdGNhbGMuaCB1bmNvbmRpdGlvbmFsbHkuCgoyMDAxLTA3LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYywgc3JjL3BjZi9wY2ZyZWFkOgoJUmVtb3ZlZCBwZWRhbnRpYyBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBieXRlY29kZSBpbnRlcnByZXRlciBpcwoJY29tcGlsZWQgaW4uCgoyMDAxLTA3LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBlZGdlcycuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBgb2xkX3dpZHRoJyBhbmQKCWBuZXdfd2lkdGgnLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBVc2UgYFUnIGZvciBjb25zdGFudCAoYWdhaW4pLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IERpdHRvLgoKMjAwMS0wNi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBNb2RpZmllZCB0aGUgZGVmaW5pdGlvbnMKCW9mIHRoZSBGVF9HRVRfWFhYWCBhbmQgTkVYVF9YWFhYIG1hY3JvcyBmb3IgMTYtYml0IGNvcnJlY3RuZXNzLgoKMjAwMS0wNi0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9jaWQvY2lkbG9hZC5oIChjaWRfZGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU0F1eF9JbnRlcmZhY2UpOiBVcGRhdGVkLgoKMjAwMS0wNi0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oIChUMV9EZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoKCgkqIFZlcnNpb24gMi4wLjQgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNi0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y29uZmlnLmgsIHNyYy8qLyouYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBhbmQKCXVzZSBvZiB0aGUgRlRfQ0FMTEJBQ0tfREVGIG1hY3JvIGluIG9yZGVyIHRvIHN1cHBvcnQgMTYtYml0Cgljb21waWxlcnMuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBUaGUga2VybiB0YWJsZSBsb2FkZXIgbm93IGVuc3VyZXMKCXRoYXQgdGhlIGtlcm5pbmcgdGFibGUgaXMgY29ycmVjdGx5IHNvcnRlZCAoc29tZSBwcm9ibGVtIGZvbnRzIGRvbid0CgloYXZlIGEgY29ycmVjdCBrZXJuIHRhYmxlKS4KCjIwMDEtMDYtMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9PRkYzX0xFKTogRml4IHR5cG8uCgoyMDAxLTA2LTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoZnRfZGl2NjRieTMyKTogRml4ZWQgdGhlIHNvdXJjZSB0byB3b3JrCgljb3JyZWN0bHkgb24gMTYtYml0IHN5c3RlbXMuCgoyMDAxLTA2LTIzICBBbnRob255IEZvayAgPGZva0BkZWJpYW4ub3JnPgoKCSogZGViaWFuLyo6IEFkZGVkIERlYmlhbiBwYWNrYWdlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgMi4wLjQuCgoyMDAxLTA2LTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL1BBVEVOVFM6IEFkZGVkIHBhdGVudHMgZGlzY2xhaW1lci4gIFRoaXMgb25lIHdhcyBtaXNzaW5nIQoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL3RvZG86IFVwZGF0ZWQgZm9yIHRoZSB1cGNvbWluZyAyLjAuNCByZWxlYXNlLgoKMjAwMS0wNi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQWRkIHR3byBtb3JlIGBMJ3MgdG8KCWNvbnN0YW50cy4KCUFkZCBtaXNzaW5nIHNlbWljb2xvbnMuCgoJKiBidWlsZHMvdG9wbGV2ZWwubWs6IERvIHNpbWlsYXIgY2hhbmdlIGFzIGZvcgoJYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNfVEFHKTogTmV3IHZlcnNpb24gdG8gbWFrZSBpdAoJZWFzaWVyIHRvIHJlZGVmaW5lLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGl0dG8uCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2dldF9lbmNvZGluZ3MpOiBBZGQgY2FzdC4KCjIwMDEtMDYtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwgYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDoKCVVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCAoZm9yIHRoZSAyLjAuNCByZWxlYXNlKS4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkZWQgcnVsZSBmb3IgQUlYIGRldGVjdGlvbiAod2hpY2ggdXNlcwoJL3Vzci9zYmluL2luaXQgaW5zdGVhZCBvZiAvc2Jpbi9pbml0KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCwgc3JjLyovKmVyciouaDogVXBkYXRlZCBzb21lIG9mIHRoZQoJZXJyb3IgbWFjcm9zIHRvIHNpbXBsaWZ5IGhhbmRsaW5nIG9mIG5ldyBlcnJvciBzY2hlbWUuCgoyMDAxLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfRVJST1JfTU9EVUxFKTogTmV3IG1hY3JvLgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVJlbW92aW5nIF9sb3RzXyBvZiBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBtb3N0IHBlZGFudGljIHdhcm5pbmcKCWxldmVscyBvZiBWaXN1YWwgQysrIGFuZCBCb3JsYW5kIEMrKyBhcmUgdXNlZC4gIFRvbyBtYW55IGZpbGVzIHRvIGJlCglsaXN0ZWQgaGVyZSwgYnV0IEZUMiBub3cgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5ncyB3aXRoIFZDKysgYW5kIHRoZQoJIi9XNCIgd2FybmluZyBsZXZlbCAobGludC1zdHlsZSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX05ld19NZW1vcnlfRmFjZSk6IFVwZGF0ZWQKCWRvY3VtZW50YXRpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9CT09MKTogTmV3IG1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQWRkICNwcmFnbWEgZm9yIFZpc3VhbCBDKysKCXRvIHN1cHByZXNzIHdhcm5pbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX1NIT1JUX3tCRSxMRX0sCglGVF9HRVRfT0ZGM197QkUsTEV9LCBGVF9HRVRfTE9OR197QkUsTEV9KTogTmV3IG1hY3Jvcy4KCShORVhUXyopOiBVc2UgdGhlbS4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfREVCVUdfSC4KCShGVF9OZXdfTWVtb3J5X0ZhY2UpOiBBZGQgYGNvbnN0JyB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDEtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNaW5vciBjbGVhbnVwcyB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKEZUQ19NQVhfQllURVNfREVGQVVMVCk6IFVzZQoJYEwnIGZvciBjb25zdGFudC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfUkVOREVSX1BPT0xfU0laRSk6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfR2V0X0NCb3gpOiBSZW1vdmUgYGVycm9yJyB2YXJpYWJsZS4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoZnRfdHJpZ19hcmN0YW5fdGFibGUpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX1NpemUpOiBGaXggcmV0dXJuIHZhbHVlLgoJKEZUX1NldF9DaGFyX1NpemUsIEZUX1NldF9QaXhlbF9TaXplcywgRlRfR2V0X0tlcm5pbmcpOiBSZW1vdmUKCXVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfZ2V0X29yaWVudGF0aW9uKTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zLAoJYWhfaGludGVyX2FsaWduX2VkZ2VfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgYmVmb3JlJyBhbmQgYGFmdGVyJwoJdmFyaWFibGVzLgoJKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZSB1bnVzZWQgYGVkZ2VfbGltaXQnIHZhcmlhYmxlLgoJKGFoX2hpbnRlcl9sb2FkKTogUmVtb3ZlIHVudXNlZCBgbmV3X2FkdmFuY2UnLCBgc3RhcnRfY29udG91cicsCglhbmQgYG1ldHJpY3MnIHZhcmlhYmxlcy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0VuY29kaW5nKTogUmVtb3ZlIGRlYWQgY29kZSB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBSZW1vdmUgdW51c2VkIGBiYXNlX29mZnNldCcKCXZhcmlhYmxlLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IFJlbW92ZSB1bnVzZWQKCWBvdXRsaW5lJyB2YXJpYWJsZS4KCShjZmZfY29tcHV0ZV9iaWFzKTogVXNlIGBVJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhclN0cmluZ3MpOiBEaXR0by4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFJlbW92ZSB1bnVzZWQgYHZlcnNpb24nCgl2YXJpYWJsZS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKFRUX0xvYWRfU0JpdF9JbWFnZSk6IFJlbW92ZSB1bnVzZWQgYHRvcCcKCXZhcmlhYmxlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIHVudXNlZAoJYG51bV9jb250b3VycycgYW5kIGBpbnNfb2Zmc2V0JyB2YXJpYWJsZXMuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogUmVtb3ZlIHVudXNlZCBgVG9wJyBhbmQgYHhfc2NhbGUnCgl2YXJpYWJsZXMuCgkoVFRfTG9hZF9HbHlwaCk6IFJlbW92ZSB1bnVzZWQgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19yYXN0ZXJfcmVuZGVyKTogVXNlIGBMJyBmb3IgY29uc3RhbnRzLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2UgdGhlIG5ldyBlcnJvciBzY2hlbWUgc291cmNlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBGVCB2ZXJzaW9ucwoJYnkgaW50cm9kdWNpbmcgYW5vdGhlciBsYXllci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfRVJST1JERUZfLCBGVF9OT0VSUk9SREVGXyk6IE5ldwoJbWFjcm9zLgoJKEZUX05PRVJST1JERUYpOiBSZW1vdmVkLgoJKiBpbmNsdWRlLyovKmVyciouaDogVXNlIEZUX0VSUk9SREVGXyBhbmQgRlRfTk9FUlJPUkRFRl8uCgoyMDAxLTA2LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgbWFjcm8uCgkoRlRfRW5jb2RpbmdfKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGVmaW5lIGl0Cgljb25kaXRpb25hbGx5LgoKMjAwMS0wNi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBpbnRlcnByZXRlciB0byBsZXQgaXQgdXNlIHRoZSBuZXcKCXRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHByb3ZpZGVkIGluICJmdHRyaWdvbi5oIi4gIFRoaXMgZ2V0cyByaWQgb2YKCXNvbWUgb2xkIDY0LWJpdCBjb21wdXRhdGlvbiByb3V0aW5lcywgYXMgd2VsbCBhcyBtYW55IHdhcm5pbmdzIHdoZW4KCWNvbXBpbGluZyB0aGUgbGlicmFyeSB3aXRoIHRoZSAibG9uZyBsb25nIiA2NC1iaXQgaW50ZWdlciB0eXBlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVW5kZWZpbmUKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBSZWFycmFuZ2UgdXNlIG9mCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEFkZCBkZWNsYXJhdGlvbiBvZiBGVF9JbnQ2NCBpZgoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QgZGVmaW5lZC4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IFVzZSBGVF9UUklHT05PTUVUUllfSC4KCShOb3JtKTogQWRkIGEgc3BlY2lhbCB2ZXJzaW9uIGlmIEZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTIGlzbid0CglkZWZpbmVkLgoJKEN1cnJlbnRfUmF0aW8sIE5vcm1hbGl6ZSk6IFNpbXBsaWZ5IGNvZGUuCgoyMDAxLTA2LTExICBNaWtlIE93ZW5zICA8TU93ZW5zQGFtdGRhdGFzb3V0aC5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9EaXZGaXgsIEZUX1NxcnQ2NCk6IFJlbW92ZQoJY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IFJlbmFtZWQgdG8gLi4uCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVGhpcyB0byBtYWtlIHN1cmUgdGhhdCBhdXRvY29uZiAyLjUwIGlzCgluZWVkZWQuCglSdW4gYGF1dG91cGRhdGUnIG9uIGl0LgoJSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gNzowOjEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogRml4ZWQgYSBidWcgdGhhdAoJY29ycnVwdGVkIHRyYW5zZm9ybWVkIGdseXBocyB0aGF0IHdlcmUgYXV0by1oaW50ZWQgKHRoZSB0cmFuc2Zvcm0KCXdhcyBhcHBsaWVkIHR3aWNlKS4KCglGaXhlZCBhIGJ1ZyB0aGF0IHJldHVybmVkIGFuIGludmFsaWQgbGluZWFyIHdpZHRoIGZvciBjb21wb3NpdGUKCVRydWVUeXBlIGdseXBocy4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9Mb2FkZXJfKTogVHdvIG5ldyBlbGVtZW50cyBgbGluZWFyJwoJYW5kIGBsaW5lYXJfZGVmJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCwKCWNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnR0eXBlcy5oIChGVF9FUlJPUl9CQVNFKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlLCBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBVc2UgaXQKCXRvIG1ha2Ugc291cmNlIGNvZGUgd29yayB3aXRoIHRoZSBuZXcgZXJyb3Igc2NoZW1lIGltcGxlbWVudGVkIGJ5CglXZXJuZXIuCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9SZW5kZXIpOiBEaXR0by4KCjIwMDEtMDYtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBsaWJ0b29sIDEuNC4wIGFuZCBhdXRvY29uZiAyLjUwLgoKCSogYnVpbGRzL3VuaXgvbHRjb25maWc6IFJlbW92ZWQuCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaCwgYnVpbGRzL3VuaXgvY29uZmlndXJlLmluLAoJYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogVXBkYXRlZC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZSByZWRlc2lnbiBvZiBlcnJvciBjb2Rlcy4gIFBsZWFzZSBjaGVjayBmdG1vZGVyci5oIGZvciBtb3JlCglkZXRhaWxzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IFJlbW92ZWQuICBSZXBsYWNlZCB3aXRoIGZpbGVzCglsb2NhbCB0byB0aGUgbW9kdWxlLiAgQWxsIGV4dHJhIGVycm9yIGNvZGVzIGhhdmUgYmVlbiBtb3ZlZCB0bwoJYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL3NmbnQvdHRwb3N0Lmg6IE1vdmUgZXJyb3IgY29kZXMgdG8gYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL2F1dG9oaW50L2FoZXJyb3JzLmgsIHNyYy9jYWNoZS9mdGNlcnJvci5oLCBzcmMvY2ZmL2NmZmVycnMuaCwKCXNyYy9jaWQvY2lkZXJycy5oLCBzcmMvcGNmL3BjZmVycm9yLmgsIHNyYy9wc2F1eC9wc2F1eGVyci5oLAoJc3JjL3BzbmFtZXMvcHNuYW1lcnIuaCwgc3JjL3Jhc3Rlci9yYXN0ZXJycy5oLCBzcmMvc2ZudC9zZmVycm9ycy5oLAoJc3JjL3Ntb290aC9mdHNtZXJycy5oLCBzcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaCwKCXNyYy90eXBlMS90MWVycm9ycy5oLCBzcmMvd2luZm9udHMvZm50ZXJycy5oOiBOZXcgZmlsZXMgZGVmaW5pbmcgdGhlCgllcnJvciBuYW1lcyBmb3IgdGhlIG1vZHVsZSBpdCBiZWxvbmdzIHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBOZXcgZmlsZSwgZGVmaW5pbmcgdGhlIG1vZHVsZSBlcnJvcgoJb2Zmc2V0cy4gIEl0cyBzdHJ1Y3R1cmUgaXMgc2ltaWxhciB0byBgZnRlcnJvcnMuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggKEZUX05PRVJST1JERUYpOiBOZXcgbWFjcm8uCgkoRlRfRVJST1JERUYpOiBSZWRlZmluZWQgdG8gdXNlIG1vZHVsZSBlcnJvciBvZmZzZXRzLgoJQWxsIGludGVybmFsIGVycm9yIGNvZGVzIGFyZSBub3cgcHVibGljOyB1bnVzZWQgZXJyb3IgY29kZXMgaGF2ZQoJYmVlbiByZW1vdmVkLCBzb21lIGFyZSBuZXcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9NT0RVTEVfRVJST1JTX0gpOiBOZXcKCW1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUyk6IE5ldyBtYWNyby4KCglBbGwgb3RoZXIgc291cmNlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbmV3IGVycm9yIGNvZGVzOwoJc29tZSBhbHJlYWR5IGV4aXN0aW5nIChpbnRlcm5hbCkgZXJyb3IgY29kZXMgbG9jYWwgdG8gYSBtb2R1bGUgaGF2ZQoJYmVlbiByZW5hbWVkIHRvIGdpdmUgdGhlbSB0aGUgc2FtZSBuYW1lIGFzIGluIHRoZSBiYXNlIG1vZHVsZS4KCglBbGwgbWFrZSBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBsb2NhbCBlcnJvciBmaWxlcy4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkdG9rZW5zLmg6IFJlcGxhY2VkIHdpdGguLi4KCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBUaGlzIGZpbGUgZm9yIDgrMyBjb25zaXN0ZW5jeS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogVXNlIG1hY3JvcyBmb3IgaGVhZGVyIGZpbGUgbmFtZXMuCgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyXywgVFRfVmVydEhlYWRlcl8pOgoJRml4IGxlbmd0aCBvZiBgUmVzZXJ2ZWQnIGFycmF5LiAgTm90ZSB0aGF0IHRoaXMgaXNuJ3QgdGhlIHJlYWwgZml4CglzaW5jZSByZWNlbnQgT3BlblR5cGUgc3BlY3MgaGF2ZSBpbnRyb2R1Y2VkIGEgYENhcmV0T2Zmc2V0JyBmaWVsZAoJaW5zdGVhZCBvZiB0aGUgZmlyc3QgcmVzZXJ2ZWQgYnl0ZS4KCjIwMDEtMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IE1pbm9yIGZpeGVzLgoKCgkqIFZlcnNpb24gMi4wLjMgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTCwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMS0wNS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vdmVkIHNldmVyYWwgZG9jdW1lbnRzIGZyb20gdGhlIHRvcC1sZXZlbCB0byB0aGUgImRvY3MiIGRpcmVjdG9yeS4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXZGaXgpOiBTbWFsbCBmaXggdG8gcmV0dXJuIHZhbHVlLgoKMjAwMS0wNS0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGVkIGEgYnVnIGluIHRoZQoJY29tcG9zaXRlIGxvYWRlci4gIFNwb3R0ZWQgYnkgS2VpdGggUGFja2FyZC4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrX1BvaW50cywKCUZUX0dseXBoTG9hZGVyX0NoZWNrX1N1YmdseXBocyk6IERpdHRvLgoKMjAwMS0wNS0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBpbmNvcnJlY3QgYmx1ZSB6b25lIGNvbXB1dGF0aW9ucywgYW5kIGltcHJvdmVkIHRoZQoJY29tcG9zaXRlIHN1cHBvcnQuICBOb3RlIHRoYXQgdGhlc2UgY2hhbmdlcyByZXN1bHQgaW4gaW1wcm92ZWQKCXJlbmRlcmluZywgd2hpbGUgc29tZXRpbWVzIGludHJvZHVjaW5nIHRoZWlyIG93biBhcnRlZmFjdHMuICBUaGlzIGlzCglwcm9iYWJseSB0aGUgbGFzdCBiaWcgY2hhbmdlIHRvIHRoZSBhdXRvaGludGVyIGJlZm9yZSB0aGUKCWludHJvZHVjdGlvbiBvZiBhIGNvbXBsZXRlIHJlcGxhY2VtZW50LgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKHNvcnRfdmFsdWVzKTogRml4IGxvb3AuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmM6IFJlbW92ZWQgc29tZSBvYnNvbGV0ZSBjb2RlLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IE1vZGlmeSBjb2RlIHRvIHNldCB0aGUgYWhfZWRnZV9yb3VuZAoJZmxhZy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfYmx1ZV9lZGdlcyk6IEFkZCBjb2RlIHRvIGNvbXB1dGUgYWN0aXZlIGJsdWUKCXpvbmVzLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9nbHlwaF9sb2FkKTogQ2hhbmdlIGxvYWRfZmxhZ3MKCXZhbHVlLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IEZpeGVkIGEgYnVnIGluIHRoZSA2NC1iaXQgY29kZSB0aGF0CgljcmVhdGVkIGluY29ycmVjdCBzY2FsZSBmYWN0b3JzIQoJKEZUX1JvdW5kX0ZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBNaW5vciBpbXByb3ZlbWVudHMuCgoyMDAxLTA1LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmJveC5oOiBGVEJCT1hfSCAtPiBfX0ZUQkJPWF9IX18uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaDogX19GVF9UUklHT05PTUVUUllfSF9fIC0+CglfX0ZUVFJJR09OX0hfXy4KCUluY2x1ZGUgRlRfRlJFRVRZUEVfSC4KCUJlYXV0aWZpZWQ7IGFkZGVkIGNvcHlyaWdodC4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYzogQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoKMjAwMS0wNS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvY2lkL2NpZGxvYWQuYwoJKHBhcnNlX2ZvbnRfbWF0cml4KSwgc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEZpeGVkCgl0aGUgaW5jb3JyZWN0IEVNIHNpemUgY29tcHV0YXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgsIHNyYy9iYXNlL2Z0dHJpZ29uLmM6IE5ldyBmaWxlcywKCWFkZGluZyB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyB0byB0aGUgY29yZSBBUEkgKHVzaW5nIENvcmRpYwoJYWxnb3JpdGhtcykuCgkqIHNyYy9iYXNlL2Z0YmFzZS5jLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazogVXNlIHRoZW0uCgoJKiBidWlsZHMvbmV3bGluZTogTmV3IGZpbGUuCgkqIGJ1aWxkcy90b3BfbGV2ZWwubWssIGJ1aWxkcy9kZXRlY3QubWs6IFVzZSBpdC4gIFRoaXMgZml4ZXMKCXByb2JsZW1zIHdpdGggTWFrZSBvbiBXaW5kb3dzIDIwMDAsIGFzIHdlbGwgYXMgcHJvYmxlbXMgd2hlbiAibWFrZQoJZGlzdGNsZWFuIiBpcyBpbnZva2VkIG9uIGEgbm9uLVVuaXggcGxhdGZvcm0gd2hlbiB0aGVyZSBpcyBubwoJImNvbmZpZy5tayIgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBGaXhlZCBhIHByb2JsZW0gd2l0aCBvYmplY3QgZGVsZXRpb25zIHVuZGVyCglEb3MvV2luZG93cy9PUy8yIHN5c3RlbXMuCgoJQWRkZWQgbmV3IGRpcmVjdG9yeSB0byBob2xkIHRvb2xzIGFuZCB0ZXN0IHByb2dyYW1zLgoKCSogZG9jcy9kb2NtYWtlci5weSwgZG9jcy9nbG5hbWVzLnB5OiBNb3ZlZCB0by4uLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHksIHNyYy90b29scy9nbG5hbWVzLnB5OiBUaGlzIHBsYWNlLgoJKiBzcmMvdG9vbHMvY29yZGljLnB5OiBOZXcgZmlsZSB1c2VkIHRvIGNvbXB1dGUgYXJjdGFuZ2VudCB0YWJsZQoJbmVlZGVkIGJ5IGZ0dHJpZ29uLmMuCgkqIHNyYy90b29scy90ZXN0X2Jib3guYywgc3JjL3Rvb2xzL3Rlc3RfdHJpZy5jOiBOZXcgdGVzdCBmaWxlcy4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIHNjcmlwdCB0byBhZGQgdGhlIGN1cnJlbnQgZGF0ZQoJYXQgdGhlIGZvb3RlciBvZiBlYWNoIHdlYiBwYWdlICh1c2VmdWwgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJdmVyc2lvbnMpLgoKCSogSmFtZmlsZTogRml4ZWQgaW5jb3JyZWN0IEhEUk1BQ1JPIGFyZ3VtZW50LgoKCSogVE9ETzogUmVtb3ZlZCB0aGUgY3ViaWMgYXJjIGJib3ggY29tcHV0YXRpb24gbm90ZSwgc2luY2UgaXQgaGFzIGJlZW4KCWZpeGVkIHJlY2VudGx5LgoJKiBzcmMvYmFzZS9mdGJib3guYyAodGVzdF9jdWJpY196ZXJvKTogUmVuYW1lZCB0by4uLgoJKHRlc3RfY3ViaWNfZXh0cmVtYSk6IFRoaXMgZnVuY3Rpb24uICBVc2UgYFVMJyBmb3IgdW5zaWduZWQgbG9uZwoJY29uc3RhbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOgoJRm9ybWF0dGluZy4KCjIwMDEtMDUtMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBGaXhlZCBhIHNtYWxsIG1lbW9yeSBsZWFrCgl3aGljaCBoYXBwZW5lZCB3aGVuIHRyeWluZyB0byBvcGVuIDAtc2l6ZSBmb250IGZpbGVzIQoKMjAwMS0wNS0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogTW92ZSBkZWNsYXJhdGlvbiBvZgoJRlRfU3FydEZpeGVkKCkgb3V0IG9mIGAjaWZkZWYgRlRfTE9ORzY0Jy4KCjIwMDEtMDUtMDggIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmZHJpdmVyLmMgKFBDRl9Mb2FkX0dseXBoKTogRml4ZWQgaW5jb3JyZWN0IGJpdG1hcCB3aWR0aAoJY29tcHV0YXRpb24uCgoyMDAxLTA1LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBVcGRhdGVkIHRoZSBEb2NNYWtlciBzY3JpcHQgaW4gb3JkZXIgdG8gYWRkCgljb21tYW5kIGxpbmUgb3B0aW9ucyAoLS1vdXRwdXQsLS1wcmVmaXgsLS10aXRsZSksIGZpeCB0aGUgZXJyb25lb3VzCglsaW5lIG51bWJlcnMgcmVwb3J0ZWQgZHVyaW5nIGVycm9ycyBhbmQgd2FybmluZ3MsIGFuZCBvdGhlcgoJZm9ybWF0dGluZyBpc3N1ZXMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9NdWxGaXgsIEZUX0RpdkZpeCk6IFZhcmlvdXMgdGlueQoJZml4ZXMgcmVsYXRlZCB0byByb3VuZGluZyBpbiA2NC1iaXRzIHJvdXRpbmVzIGFuZAoJcHNldWRvLSJvcHRpbWl6YXRpb25zIi4KCjIwMDEtMDQtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogRml4ZWQgdGhlIGNvZWZmaWNpZW50Cglub3JtYWxpemF0aW9uIGFsZ29yaXRobSAoaW52YWxpZCBmaW5hbCBiaXQgcG9zaXRpb24sIGFuZCBpbnZhbGlkCglzaGlmdCBjb21wdXRhdGlvbikuCgoyMDAxLTA0LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8KCWxhdGVzdCB2ZXJzaW9ucyBmcm9tIGdudS5vcmcuCgoJKiBidWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tazogQWRkIGAtV25vLWxvbmctbG9uZycgZmxhZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IERlZmluZSBGVF9TcXJ0Rml4ZWQoKQoJdW5jb2RpdGlvbmFsbHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0NBTENfSC4KCUZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEZpeCAocG90ZW50aWFsKSBjb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDQtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9TcXJ0Rml4ZWQpOiBDb3JyZWN0ZWQvb3B0aW1pemVkIHRoZSAzMi1iaXQKCWZpeGVkLXBvaW50IHNxdWFyZSByb290IGNvbXB1dGF0aW9uLiAgSXQgaXMgbm93IHVzZWQgZXZlbiB3aXRoCgk2NC1iaXRzIGludGVnZXJzLCBhcyBpdCBpcyBfbXVjaF8gZmFzdGVyIHRoYW4gY2FsbGluZyBGVF9TcXJ0NjQgOi0pCgoJKiBzcmMvYmFzZS9mdGJib3guYzogUmVtb3ZlZCBpbnZhbGlkICIjaW5jbHVkZSBGVF9CRVpJRVJfSCIgbGluZS4KCjIwMDEtMDQtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogUmV3cm90ZSBmdW5jdGlvbiB0byB1c2UKCWRpcmVjdCBjb21wdXRhdGlvbnMgd2l0aCAxNi4xNiB2YWx1ZXMgaW5zdGVhZCBvZiBzdWItZGl2aXNpb25zLiAgSXQKCWlzIG5vdyBzbG93ZXIsIGJ1dCBwcm92ZXMgYSBwb2ludCA6LSkKCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywgc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9iYXNlL2Z0YmJveC5jOgoJRml4ZWQgdGhlIGJlemllciBzdGFjayBkZXB0aHMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogTWlub3Igcm91bmRpbmcgZml4LgoKCSogYnVpbGRzL2Jlb3M6IEFkZGVkIEJlT1Mtc3BlY2lmaWMgZmlsZXMgdG8gdGhlIG9sZCBidWlsZCBzeXN0ZW0KCShubyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgQmVPUyBpbiB0aGUgSmFtZmlsZSB0aG91Z2gpLgoKMjAwMS0wNC0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZnRjb25maWcuaCwgZnRvcHRpb24uaDogVXBkYXRlZCAiZnRjb25maWcuaCIgdG8gZGV0ZWN0IDY0LWJpdCBpbnQKCXR5cGVzIG9uIHBsYXRmb3JtcyB3aGVyZSBBdXRvY29uZiBpcyBub3QgYXZhaWxhYmxlKS4gIEFsc28gcmVtb3ZlZAoJRlRDQUxDX1VTRV9MT05HX0xPTkcgYW5kIHJlcGxhY2VkIGl0IHdpdGgKCUZUX0NPTkZJR19PUFRJT05fRk9SQ0VfSU5UNjQuCgoJKiBidWlsZHMvd2luMzIvZnJlZXR5cGUuZHNwOiBVcGRhdGVkIHRoZSBWaXN1YWwgQysrIHByb2plY3QgZmlsZS4KCURvZXNuJ3QgY3JlYXRlIGEgRExMIHlldC4KCgkqIGNmZmdsb2FkLmM6IFJlbW92ZWQgYSBjb21waWxhdGlvbiB3YXJuaW5nLgoKMjAwMS0wNC0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHQxbG9hZC5jIChwYXJzZV9jaGFyc3RyaW5ncyk6IENoYW5nZWQgY29kZSBmb3IgcGxhY2luZyAubm90ZGVmCglnbHlwaCBpbnRvIHNsb3QgMCBzbyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgbWVtb3J5IGFjY2VzcwoJdmlvbGF0aW9uLgoKCSogdDFsb2FkLmg6IEluIHN0cnVjdHVyZSBUMV9Mb2FkZXIsIGFkZGVkIHN3YXBfdGFibGUgKG9mIHR5cGUKCVBTX1RhYmxlKSB0byBmYWNpbGl0YXRlIHBsYWNpbmcgdGhlIC5ub3RkZWYgZ2x5cGggaW50byBzbG90IDAuCgoyMDAxLTA0LTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9DaGFyX0luZGV4KTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDEtMDQtMDkgIExhdXJlbmNlIFdpdGhlcnMgIDxsd2l0aGVyc0Bsd2l0aGVycy5kZW1vbi5jby51az4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBBZGQgc3VwcG9ydCBmb3IgYmFzaC4KCjIwMDEtMDQtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9vczIvKi5tazogVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGZvcmdvdHRlbiB0byB1cGRhdGUgdG8KCXRoZSBzdHJ1Y3R1cmUgb2Ygc2ltaWxhciBtYWtlZmlsZXMuCgkqIGJ1aWxkcy9kb3MvKi5tazogRGl0dG8uCgkqIGJ1aWxkcy9hbnNpLyoubWs6IERpdHRvLgoKCSogYnVpbGRzL3dpbjMyL3dpbjMyLWRlZi5tayAoQlVJTEQpOiBGaXggdHlwby4KCgkqIGJ1aWxkcy9jb21waWxlci8qLm1rIChDTEVBTl9MSUJSQVJZKTogRG9uJ3QgdXNlIE5PX09VVFBVVC4KCVRoaXMgaXMgYWxyZWFkeSB1c2VkIGluIHRoZSBsaW5rXyoubWsgZmlsZXMuCgoyMDAxLTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvKi9KYW1maWxlOiBTbGlnaHQgY2hhbmdlcwl0byBtYWtlIGZpbGVzIG1vcmUgY3J5cHRpYy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIEphbWZpbGUsIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBGb3JtYXR0ZWQuICBTbGlnaHQgY2hhbmdlcwoJdG8gZ2l2ZSBmaWxlcyBpZGVudGljYWwgc3RydWN0dXJlLgoKMjAwMS0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogQ0hBTkdFUzogUmVmb3JtYXR0ZWQsIG1pbm9yIGZpeGVzLgoJKiBUT0RPOiBVcGRhdGVkLgoJKiBSRUFETUU6IEZvcm1hdHRpbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRm9ybWF0dGluZy4KCgkqIEphbWZpbGU6IEZpeCB0eXBvLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBNb3ZlIGVycm9yIGNvZGUgI2RlZmluZXMgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IFRoaXMgZmlsZS4KCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZsb2FkLmM6IFJlcGxhY2VkCglgRlRfRXJyXyonIHdpdGggYENGRl9FcnJfKicuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoIGBUMV9FcnJfKicuCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmM6IERpdHRvLgoJKiBzcmMvc2ZudC9zZm9iY3MuYywgc3JjL3NmbnQvdHRsb2FkLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aAoJYFRUX0Vycl8qJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oOiBBZGQKCWBDRkZfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IEFkZAoJYFQxX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dGVycm9ycy5oOiBBZGQKCWBUVF9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkIGBjZmZfKl9lbmNvZGluZycgYW5kIGBjZmZfKl9jaGFyc2V0JwoJcmVmZXJlbmNlcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jOiBJbmNsdWRlIGBGVF9JTlRFUk5BTF9UWVBFMV9FUlJPUlNfSCcuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSwgQ0ZGX0RvbmVfRmFjZSk6IFVzZQoJRlRfTE9DQUxfREVGLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy90cnV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X0ZhY2UsIFRUX0RvbmVfRmFjZSwgVFRfSW5pdF9TaXplKToKCURpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBEaXR0by4KCSogc3JjL3BjZi9wY2YuaDogVXNlIEZUX0xPQ0FMIGZvciBgUENGX0RvbmVfRmFjZScuCgoyMDAxLTA0LTAyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWV0cmljcyk6IEZpeCBhbiBpbXByb3BlciBwb2ludGVyCglkZXJlZmVyZW5jZS4gIFN1Ym1pdHRlZCBieSBIZXJiZXJ0IER1ZXJyIDxkdWVyckBzdW4uY29tPi4KCjIwMDEtMDMtMjYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBDaGFuZ2VkIGhleGFkZWNpbWFsCgljb25zdGFudHMgdG8gdXNlIHN1ZmZpeCBVIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSFAtVVgncyBjODkKCWNvbXBpbGVyLiAgU3VibWl0dGVkIGJ5IEcuVy4gTHVjYXMgPGdsdWNhc0Bzb25hbHlzdHMuY29tPi4KCjIwMDEtMDMtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBKYW1ydWxlcywgSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEFkZGluZyBqYW1maWxlcyB0bwoJdGhlIHNvdXJjZSB0cmVlLiAgU2VlIHd3dy5mcmVldHlwZS5vcmcvamFtL2luZGV4Lmh0bWwgZm9yIGRldGFpbHMuCgoKCSogVmVyc2lvbiAyLjAuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvd2luMzIvZGV0ZWt0Lm1rOiBGaXggLlBIT05ZIHRhcmdldCBmb3IgSW50ZWwgY29tcGlsZXIuCgoyMDAxLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHNuYW1lcy5oOgoJUmVuYW1lZCAiZnRuYW1lcy5oIiB0byAiZnRzbmFtZXMuaCIsIGFuZCBGVF9OQU1FU19IIHRvCglGVF9TRk5UX05BTUVTX0guCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBnZW5lcmF0aW9uIG9mIElOREVYIGxpbmsgaW4gdGFibGUgb2YKCWNvbnRlbnRzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHRvIGluZGljYXRlIHRoYXQgdGhlCgljb21waWxhdGlvbiBwcm9jZXNzIGhhcyBjaGFuZ2VkIHNsaWdodGx5IChubyBtb3JlIGBzcmMnIHJlcXVpcmVkIGluCgl0aGUgaW5jbHVkZSBwYXRoKS4KCgkqIGJ1aWxkcy8qLyotZGVmLm1rOiBDaGFuZ2VkIHRoZSBvYmplY3RzIGRpcmVjdG9yeSBmcm9tICJvYmoiIHRvCgkib2JqcyIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oOiBSZW1vdmVkIG9ic29sZXRlIG1hY3JvcyBsaWtlCglGVF9TT1VSQ0VfRklMRSwgZXRjLiBhbmQgYWRkZWQgY2FjaGUtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgdGhhdAoJd2VyZSBwcmV2aW91c2x5IGRlZmluZWQgaW4gPGZyZWV0eXBlL2Z0Y2FjaGUuaD4uICBBZGRlZCBjb21tZW50cyB0bwoJYmUgaW5jbHVkZWQgaW4gYSBuZXcgQVBJIFJlZmVyZW5jZSBzZWN0aW9uLgoKCSogc3JjLyovKjogUmVtb3ZlZCB0aGUgdXNlIG9mIEZUX1NPVVJDRV9GSUxFLCBldGMuICBOb3csIGVhY2gKCWNvbXBvbmVudCBuZWVkcyB0byBhZGQgaXRzIG93biBkaXJlY3RvcnkgdG8gdGhlIGluY2x1ZGUgcGF0aCBhdAoJY29tcGlsZSB0aW1lLiAgTW9kaWZpZWQgYWxsICJydWxlcy5tayIgYW5kICJkZXNjcmlwLm1tcyIKCWFjY29yZGluZ2x5LgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBBZGQgJGZ0X3ZlcnNpb24uCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogVXNlIGl0LgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAxLTAzLTE5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKMjAwMS0wMy0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYzogQWRkZWQgYSBmZXcgY2FzdHMgdG8gcmVtb3ZlCgljb21waWxlciB3YXJuaW5ncyBpbiBwZWRhbnRpYyBtb2Rlcy4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0MmJ1aWxkLmgsIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IFRoZSBmaWxlCgkiZnQyYnVpbGQuaCIgd2FzIHJlbmFtZWQgdG8gImZ0aGVhZGVyLmgiIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZQoJdG9wLWxldmVsIDxmdDJidWlsZC5oPi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0aGVhZGVyLmg6IEFkZGVkIG5ldyBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlICNpbmNsdWRlCgltYWNyb3MuCgoyMDAxLTAzLTE3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogT2J0YWluIHJvdW5kZWQgRlRfRml4ZWQKCXZhbHVlcyBmb3IgdGhlIGJvdW5kaW5nIGJveCBudW1iZXJzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBXaGVuIHByb2Nlc3NpbmcgYSBDRkYvQ0VGIGZvbnQsCglzZXQgYHJvb3QtPmFzY2VuZGVyJyAoYHJvb3QtPmRlc2NlbmRlcicpIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YKCWByb290LT5iYm94LnlNYXgnIChgcm9vdC0+YmJveC55TWluJywgcmVzcGVjdGl2ZWx5KS4KCjIwMDEtMDMtMTYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6ICBOZXcgZnVuY3Rpb24uICBVc2VkIGluCgljZmZfZ2V0X2ludGVyZmFjZSB0byBmYWNpbGl0YXRlIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZvciBnbHlwaCBpbmRleAoJdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogQWRkZWQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgdmlhIHRoZQoJImdseXBoX25hbWUiIG1vZHVsZSBpbnRlcmZhY2UuICBVc2VzIHRoZSBuZXcgZnVuY3Rpb24KCWdldF9jZmZfZ2x5cGhfbmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IExvZ2ljYWwgb3IgdGhlIGZhY2UgZmxhZ3Mgd2l0aAoJRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTIG9ubHkgaWYgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUyBpcwoJbm90IGRlZmluZWQuICBUaGlzIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSBmcm9tIGEKCWdseXBoIGluZGV4IHZpYSBGVF9HZXRfR2x5cGhfTmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHN1cHBvcnQgZm9yCglkZXByZWNhdGVkIG9wZXJhdG9yICJkb3RzZWN0aW9uIi4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKMjAwMS0wMy0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiBGaXggZXJyb3IKCW1lc3NhZ2VzLgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4LjEgb3IgbmV3ZXIuCgoyMDAxLTAzLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oOiAgQ2hhbmdlZCB0aGUgbGVuSVYgbWVtYmVyIG9mCgl0aGUgVDFfRGVjb2Rlcl8gc3RydWN0IHRvIGJlIGFuIEZUX0ludCBpbnN0ZWFkIG9mIGFuIEZUX1VJbnQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6ICBBZGp1c3QKCWZvciBsZW5JViBzZWVkIGJ5dGVzIGF0IHRoZSBzdGFydCBvZiBhIGRlY3J5cHRlZCBzdWJyb3V0aW5lLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogRGVjcnlwdCBzdWJyb3V0aW5lcyBvbmx5CglpZiBsZW5JViA+PSAwLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IERlY3J5cHQgY2hhcnN0cmluZ3Mgb25seQoJaWYgbGVuSVYgPj0gMC4KCjIwMDEtMDMtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFRPRE86IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUHV0IFJFQURfRmllbGRzKCkgYWx3YXlzIGluIGEgY29uZGl0aW9uYWwgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wMy0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIFRPRE86IE5ldyBmaWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRlZCBwcm90b3R5cGVzIGFuZCBub3RlcyBmb3IKCXRocmVlIG5ldyBmdW5jdGlvbnM6IEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBhbmQgRlRfRmxvb3JGaXguCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBBZGRlZAoJaW1wbGVtZW50YXRpb24gY29kZS4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfSW5pdF9GYWNlKTogVXNlIGNhbGN1bGF0ZWQgdW5pdHNfcGVyX0VNLAoJYW5kIGlmIHRoYXQgaXMgbm90IGF2YWlsYWJsZSwgZGVmYXVsdCB0byAxMDAwIHVuaXRzIHBlciBFTS4gIENoYW5nZWQKCWFzc2lnbm1lbnQgY29kZSBmb3IgYXNjZW5kZXIgYW5kIGRlc2NlbmRlciB2YWx1ZXMuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIHVuaXRzX3Blcl9FTQoJcHJvY2Vzc2luZy4KCShwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZCBudW1iZXIgaGFuZGxpbmcuCgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENoYW5nZWQgdGhlIGFzc2lnbm1lbnQgY29kZQoJZm9yIGFzY2VuZGVyLCBkZXNjZW5kZXIsIGFuZCBtYXhfYWR2YW5jZV93aWR0aC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X2Jib3gpOiBDaGFuZ2VkIHRvIHVzZSBGVF9GaXhlZAoJbnVtYmVyIGhhbmRsaW5nLgoKMjAwMS0wMy0xMCAgSGVucmlrIEdydWJic3Ry9m0gIDxncnViYmFAcm94ZW4uY29tPgoKCSogc3JjLyovKi5jOiBBZGRlZCBtYW55IGNhc3RzIHRvIG1ha2UgY29kZSBtb3JlIDY0Yml0LXNhZmUuCgoyMDAxLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzggb3IgbmV3ZXIuCgoyMDAxLTAzLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBNaW5vciBjb3JyZWN0aW9uOiBXZSBtdXN0IHdhaXQKCXVudGlsIHBhcnNlX2ZvbnRfYmJveCBpcyBjaGFuZ2VkIGJlZm9yZSB3ZSB1c2UgbG9naWNhbCBzaGlmdCByaWdodHMKCWluIHRoZSBhc3NpZ25tZW50cyBvZiBgcm9vdC0+YXNjZW5kZXInLCBgcm9vdC0+ZGVzY2VuZGVyJywgYW5kCglgcm9vdC0+bWF4X2FkdmFuY2Vfd2lkdGgnLgoKCShUMV9Eb25lX0ZhY2UpOiBGcmVlIGBjaGFyX25hbWUnIHRhYmxlIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCjIwMDEtMDMtMDUgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDIgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMy0wNCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IENvcnJlY3QgYSBzdHVwaWQgdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvcnJlY3QgY29tcGlsYXRpb24gKFRUX01TX0xBTkdJRF9USUdSSUdOQV9FVEhJT1BJQSBhcHBlYXJlZCB0d2ljZSkuCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9IaW50ZXIpOiBBZGQgZWxlbWVudHMKCWBkaXNhYmxlX2hvcnpfZWRnZXMnLCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogVXNlCgl0aGVtIChhbmQgcmVtb3ZlIHN0YXRpYyB2YXJpYWJsZXMgd2l0aCB0aGUgc2FtZSBuYW1lcykuCgkqIHNyYy9wY2YvcGNmdXRpbC5jIChCaXRPcmRlckludmVydCk6IEFkZCBgY29uc3QnLgoJKiBkb2NzL2dsbmFtZXMucHk6IFVwZGF0ZWQgdG8gbGF0ZXN0IHBzdGFibGVzLmggY2hhbmdlcy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkIHRlc3QgZm9yIEh1cmQuCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogUmVtb3ZlZC4KCjIwMDEtMDMtMDQgIFNhbmRlciB2YW4gZGVyIFdhbCAgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBBZGQgbW9yZSBgY29uc3QnLgoJKiBzcmMvcGNmL3BjZnV0aWwuYzogRGl0dG8uCgoyMDAxLTAzLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGluZyB0eXBvCgkoRlRfR2x5cGhfRG9uZSAtPiBGVF9Eb25lX0dseXBoKS4KCjIwMDEtMDMtMDEgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBPZmZpY2UgWHAuCgoyMDAxLTAyLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBOZXcgZmlsZS4gIEFkZGVkIHN1cHBvcnQgdG8gZGV0ZWN0IHRoZSBHTlUKCUh1cmQgb3BlcmF0aW5nIHN5c3RlbSBhcyBVbml4LWxpa2UuICBGaXggc3VibWl0dGVkIGJ5IEFudGhvbnkgRm9rCgk8Zm9rYUBkZWJpYW4ub3JnPi4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMSBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAyLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRncmF5cy5jIChncmF5c19zd2VlcCk6IFRoZSBmdW5jdGlvbiBkaWRuJ3QgZXhpdAoJaW1tZWRpYXRlbHkgaWYgYG51bV9jZWxscycgd2FzIDAgYXMgaXQgc2hvdWxkLiAgVGhhbmtzIHRvIEJvcmlzIGZvcgoJZmluZGluZyB0aGlzIG91dC4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4ZWQgbWVtb3J5IGxlYWsgd2hlbgoJYml0bWFwIHJlbmRlcmluZyBmYWlscyAodGhhbmtzIHRvIEdyYWhhbSBBc2hlcikuCgoyMDAxLTAyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5IChEb2NTZWN0aW9uOjphZGRfZWxlbWVudCk6IFVzZQoJYHNlbGYucHJpbnRfZXJyb3IoKScuCgoJKiBidWlsZHMvdW5peC9jb25maWcue2d1ZXNzLHN1Yn06IFVwZGF0ZWQgKGZyb20gZnRwLmdudS5vcmcpLgoKMjAwMS0wMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGluY2x1ZGUvZnJlZXR5cGUvKi5oOiBVcGRhdGVkIHRoZSBEb2NNYWtlcgoJc2NyaXB0IHRvIHN1cHBvcnQgY2hhcHRlcnMgYW5kIHNlY3Rpb24gYmxvY2sgb3JkZXJpbmcuICBVcGRhdGVkIHRoZQoJcHVibGljIGhlYWRlciBmaWxlcyBhY2NvcmRpbmdseS4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfQ29weSk6IEFkdmFuY2Ugd2lkdGggYW5kIGdseXBoIGZvcm1hdAoJd2VyZSBub3QgY29ycmVjdGx5IGNvcGllZC4KCjIwMDEtMDItMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZWQgYW4KCXVubmVjZXNzYXJ5IGZwcmludGYoIHN0ZGVyciwgLi4uICkuCgoyMDAxLTAyLTA3ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBBZGRlZCBjb2RlIHRvIGdldCB0aGUKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSB2YWx1ZSBhc3NpZ25lZCBpbiBwYXJzZV9mb250X21hdHJpeCwgaWYKCWF2YWlsYWJsZS4gIERlZmF1bHQgdG8gMTAwMCBpZiBub3QgYXZhaWxhYmxlLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBsb2dpYyB0byBnZXQKCXRoZSB1bml0c19wZXJfRU0gZnJvbSB0aGUgRm9udE1hdHJpeC4KCgkoY2ZmX3BhcnNlX2ZpeGVkX3Rob3VzYW5kKTogTmV3IGZ1bmN0aW9uLiAgR2V0cyBhIHJlYWwgbnVtYmVyIGZyb20KCXRoZSBDRkYgZm9udCwgYnV0IG11bHRpcGxpZXMgYnkgMTAwMCAodGhpcyBpcyB0byBhdm9pZCByb3VuZGluZwoJZXJyb3JzIHdoZW4gcGxhY2luZyB0aGlzIHJlYWwgbnVtYmVyIGludG8gYSAxNi4xNiBmaXhlZCBudW1iZXIpLgoKCShjZmZfcGFyc2VfcmVhbCk6IEFkZGVkIGNvZGUgc28gdGhhdCB0aGUgaW50ZWdlciBwYXJ0IGlzIG1vdmVkCglpbnRvIHRoZSBoaWdoIHNpeHRlZW4gYml0cyBvZiB0aGUgMTYuMTYgZml4ZWQgbnVtYmVyLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBBZGRlZCBsb2dpYyB0byBnZXQgdGhlIHVuaXRzCglwZXIgRU0gZnJvbSB0aGUgQ0ZGIGRpY3Rpb25hcnksIGlmIGF2YWlsYWJsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogSW4gc3RydWN0IENGRl9Gb250X0RpY3RfLAoJYWRkZWQgYSB1bml0c19wZXJfZW0gbWVtYmVyIHRvIGZhY2lsaXRhdGUgcGFzc2luZyBvZiB1bml0c19wZXJfZW0KCWZyb20gZnVuY3Rpb24gY2ZmX3BhcnNlX2ZvbnRfbWF0cml4LgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19hbHBoYSk6IE1ha2UgYC0nIGEgbGVnYWwgYWxwaGFudW1lcmljCgljaGFyYWN0ZXIuICBUaGlzIGlzIHNvIHRoYXQgZm9udCBuYW1lcyB3aXRoIGAtJyBhcmUgZnVsbHkgcGFyc2VkLAoJZXRjLi4uCgoyMDAxLTAyLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHNoaWZ0X2VsZW1lbnRzKTogUmVtb3ZlIGlmIGNsYXVzZSAod2hpY2ggaXMKCW9ic29sZXRlIG5vdykuCgoJKHJlYWxsb2NhdGVfdDFfdGFibGUsIFBTX1RhYmxlX0RvbmUpOiBSZXBsYWNlIFJFQUxMT0MoKSB3aXRoIEFMTE9DKCkKCSsgTUVNX0NvcHkoKSB0byBhdm9pZCBhIG1lbW9yeSBidWcuCgoyMDAxLTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIGluZGV4IHNvcnRpbmcgcm91dGluZSB0byBwbGFjZQoJY2FwaXRhbCBsZXR0ZXJzIGJlZm9yZSBzbWFsbCBvbmVzLiAgQWRkZWQgdGhlICI8b3JkZXI+IiBtYXJrZXIgdG8KCXNlY3Rpb24gYmxvY2tzIGluIG9yZGVyIHRvIGdpdmUgdGhlIG9yZGVyIG9mIGJsb2Nrcy4KCjIwMDEtMDEtMzAgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBMYXRlc3QgdXBkYXRlcyB0byBNaWNyb3NvZnQgbGFuZ3VhZ2UKCUlEIGNvZGVzLgoKMjAwMS0wMS0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgaGV1cmlzdGljIHRvIGdldAoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIGZvbnQgbWF0cml4LgoKCShwYXJzZV9kaWN0KTogRGVsZXRlZCB0ZXN0IHRvIHNlZSB3aGV0aGVyIHRoZSBGb250SW5mbyBrZXl3b3JkIGhhcwoJYmVlbiBzZWVuLiAgRGVsZXRpb24gb2YgdGhpcyB0ZXN0IGFsbG93cyBmb250cyB3aXRob3V0IEZvbnRJbmZvCglkaWN0aW9uYXJpZXMgdG8gYmUgcGFyc2VkIGJ5IHRoZSBUeXBlIDEgZHJpdmVyLgoKCShUMV9PcGVuX0ZhY2UpOiBEZWxldGVkIGVtcHR5IHN1YnJvdXRpbmVzIGFycmF5IHRlc3QgdG8gbWFrZSBzdXJlCglmb250cyB3aXRoIG5vIHN1YnJvdXRpbmVzIHN0aWxsIGFyZSBwYXJzZWQuCgoyMDAxLTAxLTE3ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZnJlYWQuYyAocGNmX2dldF9wcm9wZXJ0aWVzLCBwY2ZfZ2V0X21ldHJpY3MsCglwY2ZfZ2V0X2JpdG1hcHMpOiBGaXggY29tcGlsZXIgZXJyb3JzLgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBSZW1vdmVkIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MgcmVsYXRlZAoJdG8gY29tcGFyaXNvbiBvZiBzaWduZWQgdnMuIHVuc2lnbmVkIGludGVnZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IENoYW5nZWQgdGhlIGRlYnVnIHRyYWNlCgljb25zdGFudHMgZnJvbSB0cmFjZV90Mnh4eHggdG8gdHJhY2VfY2ZmeHh4eCB0byBiZSBhYmxlIHRvIGNvbXBpbGUKCXRoZSBDRkYgZHJpdmVyIGluIGRlYnVnIG1vZGUuCgoyMDAxLTAxLTExICBNYXR0aGV3IENyb3NieSAgPG1jcm9zYnlAbWFydGhvbi5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEZpeCBwcm9ibGVtcyB3aXRoIHNlcGFyYXRlCgktLXByZWZpeCBhbmQgLS1leGVjLXByZWZpeC4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBjcm9zcy1yZWZlcmVuY2VzIGdlbmVyYXRpb24gYXMgd2VsbCBhcwoJbW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgcGF0aG5hbWUgd2lsZGNhcmQgbWF0Y2hpbmcuCgoyMDAxLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBNaW5vciBpbXByb3ZlbWVudHMgdG8gcmVkdWNlIHVud2FudGVkIHNwYWNlcwoJYW5kIGVtcHR5IGxpbmVzIGluIG91dHB1dC4KCjIwMDEtMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCBzY3JpcHQgdG8gZ2VuZXJhdGUgdGFibGUgb2YgY29udGVudHMKCWFuZCBpbmRleCBwYWdlcy4gIEl0IGFsc28gc3VwcG9ydHMgd2lsZGNhcmRzIG9uIG5vbiBVbml4IHN5c3RlbXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlLyouaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmg6IFVwZGF0ZWQgY29tbWVudHMKCXRvIGluY2x1ZGUgc2VjdGlvbiBkZWZpbml0aW9ucy9kZWxpbWl0YXRpb25zIGZvciB0aGUgQVBJIFJlZmVyZW5jZQoJZ2VuZXJhdG9yLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBNb3ZlZCBkZWNsYXJhdGlvbiBvZgoJYEZUX0dlbmVyaWNfRmluYWxpemVyJyBhbmQgdGhlIGBGVF9HZW5lcmljJyBzdHJ1Y3R1cmUgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IGhlcmUuCgoyMDAxLTAxLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0ZWQgVW5pY29kZSBjb2RlIHJhbmdlIGNvbW1lbnRzLgoKMjAwMS0wMS0wMyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvcnVsZXMubWs6IFVzZSBjZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIGNmZnR5cGVzLmgKCShjZmZlcnJzLmgpIGluc3RlYWQgb2YgdDJ0eXBlcy5oICh0MmVycm9ycy5oLCByZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBNZXJnZWQgaW4gY2hhbmdlcyBmcm9tCgl0MnR5cGVzLmggYW5kIG1hZGUgdGhpcyB0aGUgY2Fub25pY2FsIGB0eXBlcycgaGVhZGVyIGZvciB0aGUgQ0ZGCglkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaDogVGhpcyBmaWxlIHdhcyBtZXJnZWQgd2l0aAoJY2ZmdHlwZXMuaCBhbmQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJlcnJvcnMuaDoJUmVuYW1lZCB0byBjZmZlcnJzLmguCgoJKiBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuYywKCXNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9jZmZsb2FkLmMsCglzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuaDogQ2hhbmdlZCB0byB1c2UKCWNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4gIEFsbCBvY2N1cnJlbmNlcyBvZiB0Ml8KCShUMl8pIHdlcmUgcmVwbGFjZWQgd2l0aCBjZmZfIChDRkZfLCByZXNwZWN0aXZlbHkpLgoKCSogc3JjL2NmZi90Mmdsb2FkLmg6IFJlbmFtZWQgY2ZmZ2xvYWQuaC4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jOiBSZW5hbWVkIGNmZmdsb2FkLmMKCjIwMDAtMDEtMDIgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXM6IFN1cHBvcnQgZmlsZXMgZm9yIFZNUyBhcmNoaXRlY3R1cmUgYWRkZWQuCgkqIGRlc2NyaXAubW1zLCBzcmMvKi9kZXNjcmlwLm1tczogVk1TIG1ha2VmaWxlcyBhZGRlZC4KCSogUkVBRE1FLlZNUzogTmV3IGZpbGUuCgoyMDAwLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBMSUNFTlNFLlRYVDogQWRkZWQgaW5mbyBhYm91dCBQQ0YgZHJpdmVyIGxpY2Vuc2UuCgoyMDAxLTAxLTAxICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi8qOiBOZXcgZHJpdmVyIG1vZHVsZSBmb3IgUENGIGZvbnQgZm9ybWF0ICh1c2VkIGluCglYIFdpbmRvdyBTeXN0ZW0pLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBBZGRlZCB2YWx1ZXMgZm9yCglQQ0YgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BjZnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGRlZCBQQ0YgZHJpdmVyIG1vZHVsZS4KCjIwMDEtMDEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0dldF9DaGFyX0luZGV4KTogRml4IHBhcmFtZXRlciB0eXBlLgoKMjAwMC0xMi0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21vZHVsZXMubWsgKGNsZWFuX21vZHVsZV9saXN0KTogRml4ZWQgZGVsZXRpb24gb2YgbW9kdWxlCglmaWxlIGluIGNhc2UgYG1ha2UgbWFrZV9tb2R1bGVfbGlzdCcgaXMgY2FsbGVkIGJlZm9yZSBgbWFrZSBzZXR1cCcuCgoyMDAwLTEyLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfQ2hhcnNldCk6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2VzLgoJKENGRl9Mb2FkX0NoYXJzZXQsIENGRl9Mb2FkX0VuY29kaW5nKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHZhcmlhYmxlCglkZWZpbml0aW9uLgoKMjAwMC0xMi0zMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJ0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBDaGFuZ2VkIHRoZSBzdHJ1Y3R1cmVzIGZvcgoJQ0ZGX0VuY29kaW5nIGFuZCBDRkZfRW5jb2RpbmcgZm9yIHRoZSBuZXcgaW1wbGVtZW50YXRpb25zIG9mIHRoZQoJY2hhcnNldCBhbmQgZW5jb2RpbmcgcGFyc2VycyBpbiB0aGUgQ0ZGIGRyaXZlci4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jICh0Ml9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUsCgl0Ml9vcGVyYXRvcl9zZWFjKTogQWRkZWQgdGhlc2UgZnVuY3Rpb25zIGZvciB1c2UgaW4gaW1wbGVtZW50aW5nIHRoZQoJc2VhYyBlbXVsYXRpb24gcHJvdmlkZWQgYnkgdGhlIFR5cGUgMiBlbmRjaGFyIG9wZXJhdG9yLgoJKFQyX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgc2VhYyBlbXVsYXRpb24gZm9yIHRoZSBlbmRjaGFyCglvcGVyYXRvci4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9FbmNvZGluZywgQ0ZGX0xvYWRfQ2hhcnNldCwKCUNGRl9Eb25lX0VuY29kaW5nLCBDRkZfRG9uZV9DaGFyc2V0KTogRXh0ZW5kZWQgdG8gbG9hZCBhbmQgcGFyc2UgdGhlCgljaGFyc2V0L2VuY29kaW5nIHRhYmxlcywgYW5kIGZyZWUgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZW0gd2hlbiB0aGUKCUNGRiBkcml2ZXIgaXMgZmluaXNoZWQgd2l0aCB0aGVtLiAgQWRkZWQgdGFibGVzCgoJICAgIGNmZl9pc29hZG9iZV9jaGFyc2V0CgkgICAgY2ZmX2V4cGVydF9jaGFyc2V0CgkgICAgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0CgkgICAgY2ZmX3N0YW5kYXJkX2VuY29kaW5nCgkgICAgY2ZmX2V4cGVydF9lbmNvZGluZwoKCXNvIHRoYXQgdGhlIGVuY29kaW5nL2NoYXJzZXQgcGFyc2VyIGNhbiBoYW5kbGUgcHJlZGVmaW5lZCBlbmNvZGluZ3MgYW5kCgljaGFyc2V0cy4KCjIwMDAtMTItMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAoVDJfTG9hZF9HbHlwaCk6IEFkZGVkIGNvZGUJc28gdGhhdCB0aGUgZm9udAoJdHJhbnNmb3JtIGlzIGFwcGxpZWQuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGNvZGUgc28gdGhhdAoJdGhlIGZvbnQgbWF0cml4IG51bWJlcnMJYXJlIHNjYWxlZCBieSAxLyhtYXRyaXgtPnl5KS4gIEFsc28sIHRoZQoJb2Zmc2V0IHZlY3RvciBub3cgY29udGFpbnMgaW50ZWdlciB2YWx1ZXMgaW5zdGVhZCBvZiAxNi4xNiBmaXhlZAoJbnVtYmVycy4KCjIwMDAtMTItMjIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCVJlbW92ZWQgdW5uZWNlc3NhcnkgY29tbWVudHMgYW5kIGNvbW1lbnRlZC1vdXQgY29kZS4KCjIwMDAtMTItMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2lkL2NpZGFmbS5jLCBzcmMvY2lkL2NpZGFmbS5oOiByZW1vdmVkIHVuLW5lZWRlZCBmaWxlcywKCXdlJ2xsIHdvcmsgb24gc3VwcG9ydGluZyBDSUQgQUZNIGZpbGVzIGxhdGVyIEkgZ3Vlc3MgOi0pCgoyMDAwLTEyLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCwgYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJQ2hhbmdlZCBzbyB0aGF0IGZvbnRzIHdpdGggYSBub24tc3RhbmRhcmQgRm9udE1hdHJpeCByZW5kZXIKCWNvcnJlY3RseS4gIFByZXZpb3VzbHksIHRoZSBmaXJzdCBnbHlwaCByZW5kZXJlZCBmcm9tIHN1Y2ggYQoJZm9udCBkaWQgbm90IGhhdmUgdGhlIHRyYW5mb3JtYXRpb24gbWF0cml4IGFwcGxpZWQuCgoyMDAwLTEyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiAqLm1rOiBBZGRlZCBsb3RzIG9mIGAuUEhPTlknIHRhcmdldHMuCgoyMDAwLTEyLTE3ICBLYXJzdGVuIEZsZWlzY2hlciAgPGtmbGVpc2MxQGZvcmQuY29tPgoKCSogKi5tazogSW1wbGVtZW50ZWQgYHBsYXRmb3JtJyB0YXJnZXQgdG8gZGlzYWJsZSBhdXRvLWRldGVjdGlvbi4KCjIwMDAtMTItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZGVzaWduL21vZHVsZXMuaHRtbDogUmVtb3ZlZC4gIENvdmVyZWQgYnkgZGVzaWduLSouaHRtbC4KCgkqIElOU1RBTEw6IEFkZGVkIGluZm8gYWJvdXQgbWFrZXBwLgoKMjAwMC0xMi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzdXBwb3J0IGZvciBjbGlwcGVkIGRpcmVjdCByZW5kZXJpbmcgaW4gdGhlIHNtb290aCByZW5kZXJlci4KCVRoaXMgc2hvdWxkIG5vdCBicmVhayBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleGlzdGluZyBhcHBsaWNhdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IE1vdmUKCWRlZmluaXRpb24gb2YgdGhlIEZUX0JCb3ggc3RydWN0dXJlIGZyb20gdGhlIGZvcm1lciB0byB0aGUgbGF0dGVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogQWRkIGBmdF9yYXN0ZXJfZmxhZ19jbGlwJyB2YWx1ZSB0bwoJRlRfUmFzdGVyX0ZsYWcgZW51bWVyYXRpb24uCglBZGQgYGNsaXBfYm94JyBlbGVtZW50IHRvIEZUX1Jhc3Rlcl9QYXJhbXMgc3RydWN0dXJlLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfY29udmVydF9nbHlwaCk6IEltcGxlbWVudCBpdC4KCgkqIElOU1RBTEw6IFVwZGF0ZWQgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBvbiBXaW4zMiwgbGlzdGluZyB0aGUKCW5ldyAibWFrZSBzZXR1cCBsaXN0IiB0YXJnZXQgdXNlZCB0byBsaXN0IHN1cHBvcnRlZAoJY29tcGlsZXJzL3RhcmdldHMuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKGZ0X2JsYWNrX3JlbmRlcik6IFRlc3QgZm9yIHVuc3VwcG9ydGVkCglkaXJlY3QgcmVuZGVyaW5nIGJlZm9yZSB0ZXN0aW5nIGFyZ3VtZW50cy4KCjIwMDAtMTItMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBGaXhlZCBoZWFkZXIgaW5jbHVzaW9uIG1hY3JvcwoJdG8gdXNlIGRpcmVjdCBkZWZpbml0aW9ucy4gIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGRvIHRoZXNlIHRoaW5ncwoJaW4gYSBwb3J0YWJsZSB3YXkgOi0oICBUaGUgcmVzdCBvZiB0aGUgY29kZSBzaG91bGQgZm9sbG93IHNob3J0bHkKCXRob3VnaCBldmVyeXRoaW5nIGNvbXBpbGVzIG5vdy4KCgkqIGJ1aWxkcy9jb21waWxlci9pbnRlbGMubWssIGJ1aWxkcy9jb21waWxlci93YXRjb20ubWs6IE5ldyBmaWxlcy4KCgkqIGJ1aWxkcy93aW4zMi9kZXRlY3QubWs6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbnRlbCBDL0MrKwoJY29tcGlsZXIsIGFzIHdlbGwgYXMgX3ByZWxpbWluYXJ5XyAocmVhZDogZG9lc24ndCB3b3JrISkgc3VwcG9ydCBmb3IKCVdhdGNvbS4gIEFsc28gYWRkZWQgYSBuZXcgc2V0dXAgdGFyZ2V0LiAgVHlwZSAibWFrZSBzZXR1cCBsaXN0IiBmb3IKCWEgbGlzdCBvZiBzdXBwb3J0ZWQgY29tbWFuZC1saW5lIGNvbXBpbGVycyBvbiBXaW4zMi4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYzogQWRkZWQgZHVtbXkgc3ltYm9sIHRvIGF2b2lkIGVtcHR5IGZpbGUgaWYKCWNvbmRpdGlvbmFscyBhcmUgb2ZmLgoKMjAwMC0xMi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYzogRml4ZWQgdHlwb3MuICBGaXhlZCBpbmNsdXNpb24gb2Ygd3JvbmcKCWZ0Y29uZmlnLmggZmlsZS4KCjIwMDAtMTItMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmggKEZUMl9ST09ULCBGVDJfQ09ORklHX1JPT1QpOgoJUmVtb3ZlZC4gIEFOU0kgQyBkb2Vzbid0IChleHBsaWNpdGx5KSBhbGxvdyBtYWNybyBleHBhbnNpb24gaW4KCWFyZ3VtZW50cyB1c2luZyBgIyMnLgoJKEZUMl9QVUJMSUNfRklMRSwgRlQyX0NPTkZJR19GSUxFLCBGVDJfSU5URVJOQUxfRklMRSk6IFVzZSBkaXJlY3RvcnkKCW5hbWVzIGRpcmVjdGx5LiAgTWFrZSB0aGVtIGNvbmZpZ3VyYWJsZS4gIFVzZSBgIyMnIHRvIHN0cmlwIGxlYWRpbmcKCWFuZCB0cmFpbGluZyBzcGFjZXMgZnJvbSBhcmd1bWVudHMuCgoJKiBidWlsZHMvdW5peC9mdDJ1bml4Lmg6IEFkYXB0ZWQuCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChmdF9hbGxvYywgZnRfcmVhbGxvYywgZnRfZnJlZSwgZnRfaW9fc3RyZWFtLAoJZnRfY2xvc2Vfc3RyZWFtKTogVXNlIEZUX0NBTExCQUNLX0RFRi4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmM6IFVzZSBuZXcgaGVhZGVyIHNjaGVtZS4KCShGVF9Eb25lX01lbW9yeSk6IFVzZSBmcmVlKCkgZnJvbSBGVF9NZW1vcnkgc3RydWN0dXJlLgoKCSogc3JjL2Jhc2UvZnRpbml0LmMsIHNyYy9iYXNlL2Z0bWFjLmM6IEhlYWRlciBzY2hlbWUgZml4ZXMuCgoyMDAwLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdDJidWlsZC5oIChGVDJfQ09ORklHX1JPT1QsCglGVDJfUFVCTElDX0ZJTEUsIEZUMl9DT05GSUdfRklMRSwgRlQyX0lOVEVSTkFMX0ZJTEUsCglGVF9TT1VSQ0VfRklMRSk6IFVzZSBgIyMnIG9wZXJhdG9yIHRvIGJlIHJlYWxseSBBTlNJIEMgY29tcGxpYW50LgoKMjAwMC0xMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBSZW1vdmUgdW51c2VkIFVTRV9DRkxBR1MgdmFyaWFibGUuCgoyMDAwLTEyLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiAqLyouaDogQ2hhbmdlZCBib2R5IGluY2x1c2lvbiBtYWNybyBuYW1lcyB0byBzdGFydCBhbmQgZW5kIHdpdGgKCWBfXycgKHRob3NlIHdoaWNoIGhhdmVuJ3QgY29udmVydGVkIHlldCkuICBGaXhlZCBtaW5vciBjb252ZXJzaW9uCglpc3N1ZXMuCgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFVwZGF0ZWQgdG8gbmV3IGhlYWRlciBpbmNsdXNpb24gc2NoZW1lLgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IFJlbW92ZSB1bnVzZWQgQ0FMQ19MZW5ndGgoKSBtYWNyby4KCjIwMDAtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiAqLyouW2NoXTogQ2hhbmdlZCBzb3VyY2UgZmlsZXMgdG8gYWRoZXJlIHRvIHRoZSBuZXcKCWhlYWRlciBpbmNsdXNpb24gc2NoZW1lLiAgTm90IGNvbXBsZXRlbHkgdGVzdGVkIGJ1dCB3b3JrcyBmb3Igbm93CgloZXJlLgoKCSogc3JjL2NmZi90MmRyaXZlci5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJkcml2ZXIuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QybG9hZC5jOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmxvYWQuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJvYmpzLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZvYmpzLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3Qyb2Jqcy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnBhcnNlLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZwYXJzZS5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MnRva2Vucy5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmdG9rZW4uaDogTmV3IGZpbGUuCgoJKiBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMC0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfRG9uZSk6IEZpeGVkIG1lbW9yeSBsZWFrLgoKMjAwMC0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL21vZHVsZS5tazogUmVwbGFjZWQgYHh4eCAjJyB3aXRoIGB4eHgkKHNwYWNlKS4KCSogYnVpbGRzL29zMi9kZXRla3QubWssIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IE1vdmVkIGNvbW1lbnQgdG8KCWF2b2lkIHRyYWlsaW5nIHNwYWNlcyBpbiB2YXJpYWJsZS4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBVc2UgJChEKSBpbnN0ZWFkIG9mICREIHRvIG1ha2Ugc3RhdGVtZW50IG1vcmUKCXJlYWRhYmxlLgoKCSogZG9jcy9kb2NtYWtlci5weTogRm9ybWF0dGluZy4KCjIwMDAtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNhdXhtb2QuYzogRml4ZWQgYSBicm9rZW4gaW5jbHVzaW9uIG9mIGNvbXBvbmVudAoJaGVhZGVyIGZpbGVzIChhbiBGVF9GTEFUX0NPTVBJTEUgdGVzdCB3YXMgbWlzc2luZykuCgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfRG9uZSk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCglhbiBvY2Nhc2lvbmFsIGNyYXNoIHdoZW4gdGhlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgKGR1ZSB0byBhIGRhbmdsaW5nCglwb2ludGVyKS4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX0RvbmVfTWVtb3J5KTogRml4ZWQgYW4gb2J2aW91cyBidWc6CglUaGUgQU5TSSAiZnJlZSgpIiBmdW5jdGlvbiB3YXMgY2FsbGVkIGluc3RlYWQgb2YgIm1lbW9yeS0+ZnJlZSgpIi4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIHNlY3Rpb24gZmlsdGVyaW5nLCBtdWx0aS1wYWdlIGdlbmVyYXRpb24KCShpbmRleCBwYWdlIGdlbmVyYXRpb24gaXMgc3RpbGwgbWlzc2luZyB0aG91Z2gpLgoKMjAwMC0xMi0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWssIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogVGhlIGZpbGUgImZ0MnVuaXguaCIKCWlzIG5vdyBpbnN0YWxsZWQgYXMgPGZ0MmJ1aWxkLmg+IGZvciBVbml4IHN5c3RlbXMuICBOb3RlIHRoYXQgd2UKCXN0aWxsIHVzZSB0aGUgImZyZWV0eXBlMi9mcmVldHlwZSIgaW5zdGFsbGF0aW9uIHBhdGggZm9yIG5vdy4KCgkqICovKi5bY2hdOiBOb3cgdXNpbmcgPGZ0MmJ1aWxkLmg+IGFzIHRoZSBkZWZhdWx0IGJ1aWxkIGFuZCBzZXR1cAoJY29uZmlndXJhdGlvbiBmaWxlIGluIGFsbCBwdWJsaWMgaGVhZGVycy4gIEludGVybmFsIHNvdXJjZSBmaWxlcwoJc3RpbGwgbmVlZCBzb21lIGNoYW5nZXMgdGhvdWdoLgoKCSogYnVpbGRzL2RldmVsL2Z0MmJ1aWxkLmgsIGJ1aWxkcy9kZXZlbC9mdG9wdGlvbi5oOiBDcmVhdGVkIGEgbmV3CglkaXJlY3RvcnkgdG8gaG9sZCBhbGwgZGV2ZWxvcG1lbnQgb3B0aW9ucyBmb3IgYm90aCB0aGUgVW5peCBhbmQKCVdpbjMyIGRldmVsb3BlciBidWlsZHMuCgoJKiBidWlsZHMvd2luMzIvZGV0ZWN0Lm1rLCBidWlsZHMvd2luMzIvdzMyLWJjY2QubWssCglidWlsZHMvd2luMzIvdzMyLWRldi5tazogQ2hhbmdlZCB0aGUgZGV2ZWxvcGVyIGJ1aWxkIHRhcmdldHMgdG8KCSJkZXZlbC1nY2MiIGFuZCAiZGV2ZWwtYmNjIiBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGRldmVsb3Agd2l0aCB0aGUKCUJvcmxhbmQgQysrIGNvbXBpbGVyLgoKMjAwMC0xMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC4xIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbiwgYnVpbGRzL3VuaXgvY29uZmlndXJlLAoJYnVpbGRzL2N5Z3dpbi9jb25maWd1cmUuaW4sIGJ1aWxkcy9jeWd3aW4vY29uZmlndXJlOiBTZXR0aW5nCgkidmVyc2lvbl9pbmZvIiB0byA2OjE6MCBmb3IgdGhlIDIuMC4xIHJlbGVhc2UuCgoJKiBDSEFOR0VTOiBBZGRlZCBhIHN1bW1hcnkgb2YgY2hhbmdlcyBiZXR3ZWVuIDIuMC4xIGFuZCAyLjAuCgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL2N5Z3dpbi9mdGNvbmZpZy5pbjogQ2hhbmdlcwoJdG8gYWxsb3cgY29tcGlsYXRpb24gdW5kZXIgVW5peCB3aXRoIHRoZSBVbml4LXNwZWNpZmljIGNvbmZpZwoJZmlsZXMuCgoyMDAwLTEyLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBSZXZpc2VkLgoJKiBidWlsZHMvY29tcGlsZXIvYmNjLWRldi5taywgYnVpbGRzL2NvbXBpbGVyL3Zpc3VhbGFnZS5taywKCWJ1aWxkcy9jb21waWxlci9iY2MubWssIGJ1aWxkcy93aW4zMi93MzItYmNjLm1rLAoJYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rOiBSZXZpc2VkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGJ1aWxkLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IFJldmlzZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBVcGRhdGVkIHRvIG5ldyBoZWFkZXIgaW5jbHVzaW9uIHNjaGVtZS4KCjIwMDAtMTEtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tayAoLlBIT05ZKTogQWRkaW5nIGBkaXN0Y2xlYW4nLgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWsgKC5QSE9OWSk6IEFkZGluZyBgZGV2ZWwnLCBgdW5peCcsIGBsY2MnLAoJYHNldHVwJy4KCjIwMDAtMTEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vZ3I+CgoJKiBJTlNUQUxMOiBTbGlnaHRseSB1cGRhdGVkIHRoZSBxdWljayBzdGFydGVyIGRvY3VtZW50YXRpb24gdG8KCWluY2x1ZGUgSURFIGNvbXBpbGF0aW9uLCBwcmV2ZW50IGFnYWluc3QgQlNEIE1ha2UsIGFuZCBzcGVjaWZ5ICJtYWtlCglzZXR1cCIgaW5zdGVhZCBvZiBhIHNpbmdsZSAibWFrZSIgZm9yIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgoJKiBpbmNsdWRlL2NvbmZpZy9mdGJ1aWxkLmgsIGluY2x1ZGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogQWRkZWQgbmV3Cgljb25maWd1cmF0aW9uIGZpbGVzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiBhbGwgcHVibGljLAoJY29uZmlndXJhdGlvbiwgYW5kIGludGVybmFsIGhlYWRlciBmaWxlcyBmb3IgRnJlZVR5cGUgMi4gIE1vZGlmaWVkCglhbGwgaGVhZGVycyB1bmRlciAiaW5jbHVkZS9mcmVldHlwZSIgdG8gcmVmbGVjdCB0aGlzIGNoYW5nZS4gIE5vdGUKCXRoYXQgd2Ugc3RpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGxpYnJhcnkgc291cmNlIGZpbGVzIHRoZW1zZWx2ZXMKCXRob3VnaC4KCgkqIGJ1aWxkcy9jb21waWxlci9iY2MubWssIGJ1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rLAoJYnVpbGRzL3dpbjMyL3czMi1iY2MubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi9kZXRlY3QubWs6IEFkZGVkIG5ldyBmaWxlcyB0byBzdXBwb3J0IGNvbXBpbGF0aW9uIHdpdGgKCXRoZSBmcmVlIEJvcmxhbmQgQysrIGNvbW1hbmQtbGluZSBjb21waWxlci4gIE1vZGlmaWVkIHRoZSBkZXRlY3Rpb24KCXJ1bGVzIHRvIHJlY29nbml6ZSB0aGUgbmV3ICJiY2MzMiIgdGFyZ2V0IGluICJtYWtlIHNldHVwIGJjYzMyIi4KCgkqIHNyYy9zZm50L3R0Y21hcC5jLCBzcmMvc2ZudC90dHBvc3QuYywgc3JjL3NmbnQvdHRzYml0LmMsCglzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsCglzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogRml4ZWQgYSBmZXcgY29tcGFyaXNvbnMgdGhhdCBCb3JsYW5kIEMrKwoJZGlkbid0IHJlYWxseSBsaWtlLiAgQmFzaWNhbGx5LCB0aGlzIGNvbXBpbGVyIGNvbXBsYWlucyB3aGVuIEZUX1VJbnQKCWlzIGNvbXBhcmVkIHRvIEZUX1VTaG9ydCAoYXBwYXJlbnRseSwgaXQgcHJvbW90ZXMgYFVTaG9ydCcgdG8gYEludCcKCWluIHRoZXNlIGNhc2VzKS4KCjIwMDAtMTEtMzAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiB0Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogQWRkZWQgY2FsY3VsYXRpb24gb2YgYGZhY2UtPmhlaWdodCcgZm9yCglwdXJlIENGRiBmb250cy4KCgkqIHQxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBGaXhlZCBjb21wdXRhdGlvbiBvZiBgZmFjZS0+aGVpZ2h0Jy4KCjIwMDAtMTEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9Db25pY19DaGVjayk6IEZpeGVkIGEgcmVhbGx5IHN0dXBpZAoJYnVnIGluIHRoZSBmb3JtdWxhIHVzZWQgdG8gY29tcHV0ZSB0aGUgY29uaWMgQul6aWVyIGV4dHJlbWEKCW9mIG5vbi1tb25vdG9ub3VzIGFyY3MuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfU3FydEZpeGVkKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9TZXRfUmVuZGVyZXIpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZV9DYWNoZV9Mb29rdXApLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKEZUQ19NYW5hZ2VyX0RvbmUsIEZUQ19NYW5hZ2VyX1Jlc2V0LAoJRlRDX01hbmFnZXJfTG9va3VwX0ZhY2UsIEZUQ19NYW5hZ2VyX0xvb2t1cF9TaXplLAoJRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpLCBzcmMvY2FjaGUvZnRjc2JpdHMuYwoJKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IERpdHRvLgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjZ2x5cGguaCAoRlRDX0dseXBoTm9kZV9Jbml0KSwKCXNyYy9pbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmggKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVzZSBGVF9FWFBPUlQuCgoyMDAwLTExLTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jOiBJbmNsdWRlIHR0c2JpdC5oIGFuZCB0dHBvc3QuaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzLCBTZXRfUGl4ZWxfU2l6ZXMpOiBTZXQKCWBzaXplLT5zdHJpa2VfaW5kZXgnIG9ubHkgY29uZGl0aW9uYWxseS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6IEluY2x1ZGUgdDFhZm0uaCBvbmx5Cgljb25kaXRpb25hbGx5LgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5oOiBNb3ZlIGFsbCB0eXBlIGRlZmluaXRpb25zIHRvLi4uCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IE5ldyBmaWxlLgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFVzZSBpdC4KCjIwMDAtMTEtMjkgID8/PyA/Pz8gIDxkYXJpbkBlYXplbC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogUmVwbGFjZWQgRlRfQ0FUIGFuZCBGVF9YQ0FUCgl3aXRoIGEgZGlyZWN0IHNvbHV0aW9uICh3aGljaCBhbHNvIHNhdGlmaWVzIHBpY2t5IGNvbXBpbGVycykuCgoyMDAwLTExLTI4ICBZQU1BTk8tVUNISSBIaWRldG9zaGkgIDxtZXJAZGluLm9yLmpwPgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X1NpemUpOiBGaXggI2lmZGVmJ3MgdG8gd29yayB3aXRoCglkaXNhYmxlZCBpbnRlcnByZXRlciBhbHNvLgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lX0NvdW50KTogRml4IGluY29ycmVjdAoJcGFyZW50aGVzZXMuCgoyMDAwLTExLTI2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKFQyX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgbG9naWMgdG8gZ2x5cGgKCXdpZHRoIHNldHRpbmcgY29kZSB0byB0YWtlIGludG8gYWNjb3VudCBldmVuL29kZCBhcmd1bWVudCBjb3VudHMKCWFuZCBnbHlwaCB3aWR0aCBvcGVyYW5kIGJlZm9yZSBlbmRjaGFyL2htb3ZldG8vdm1vdmV0by4KCjIwMDAtMTEtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9hbnNpL2Fuc2kubWs6IEZpeCBpbmNsdXNpb24gb3JkZXIgb2YgZmlsZXMuCgoyMDAwLTExLTI2ICBLZWl0aCBQYWNrYXJkICA8a2VpdGhwQGtlaXRocC5jb20+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IENvbXB1dGUgc3R5bGUgZmxhZ3MuCgoyMDAwLTExLTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY29tcGlsZXIvYW5zaS1jYy5tayAoQ0xFQU5fTElCUkFSWSk6IEZpeCBydWxlIGFuZAoJY29uZGl0aW9uYWwuCgoyMDAwLTExLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBkZWNyeXB0CglmdW5jdGlvbiBmcm9tIFBTQXV4IG1vZHVsZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0RvbmVfUGFyc2UpOiBSZW5hbWVkIHRvLi4uCgkoVDFfRmluYWxpemVfUGFyc2VyKTogTmV3IGZ1bmN0aW9uICh0byBhdm9pZCBuYW1lIGNsYXNoIHdpdGggYQoJZnVuY3Rpb24gaW4gdGhlIFBTQXV4IG1vZHVsZSkuCgkoVDFfRGVjcnlwdCk6IFJlbW92ZWQgc2luY2UgaXQgaXMgZHVwbGljYXRlZCBpbiB0aGUgUFNBdXggbW9kdWxlLgoJKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBBZGRlZCBgcHNhdXgnIGFzIG5ldyBwYXJhbWV0ZXI7IHVzZSBkZWNyeXB0CglmdW5jdGlvbiBmcm9tIFBTQXV4IG1vZHVsZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmg6IEFkYXB0ZWQuCgoyMDAwLTExLTIyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90Mm9ianMuYyAoVDJfSW5pdF9GYWNlKTogRm9yIHB1cmUgQ0ZGIGZvbnRzLCBzZXQKCWByb290LT5udW1fZmFjZXMnIHRvIGBjZmYtPm51bV9mYWNlcycgYW5kIHNldCBgdW5pdHNfcGVyX0VNJwoJdG8gMTAwMC4KCgkqIHNyYy9jZmYvdDJwYXJzZS5jIChwYXJzZV90Ml9yZWFsKTogRml4ZWQgcmVhbCBudW1iZXIgcGFyc2luZwoJbG9vcC4KCgkqIHNyYy9jZmYvdDJsb2FkLmMgKFQyX0dldF9TdHJpbmcpOiBDYWxsZWQgVDJfR2V0X05hbWUgd2l0aCBhCglzaWQgdGhhdCB3YXMgb2ZmIGJ5IG9uZS4KCjIwMDAtMTEtMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlcik6IEFkZGVkIG5ldyBmaWVsZHMgdG8gY29udHJvbAoJYXV0by1oaW50aW5nIG9mIHN5bnRoZXRpYyBUeXBlIDEgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkLCBhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglBZGRlZCBhdXRvLWhpbnRpbmcgc3VwcG9ydCBvZiBzeW50aGV0aWMgVHlwZSAxIGZvbnRzLgoKMjAwMC0xMS0xMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb29rVXBfVGFibGUsIFRUX0xvYWRfR2VuZXJpY19UYWJsZSk6IENoYW5nZQoJdHJhY2luZyBvdXRwdXQuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTZXQgYm9vbGVhbiB2YXJpYWJsZQoJYGhhcy1vdXRsaW5lJyB0byB0cnVlIG9ubHkgaWYgdGhlIGZvbnQgaGFzIGEgYGdseWYnIG9yIGBDRkYgJyB0YWJsZS4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogRml4IHJhc3RlcjEtPnJhc3RlciBhbmQKCXR5cGUxei0+dHlwZTEuCgoyMDAwLTExLTExICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluLCBidWlsZHMvY3lnd2luL2ZyZWV0eXBlLWNvbmZpZy5pbjoKCUFkZGVkIGEgLS1saWJ0b29sIG9wdGlvbi4gIFdoZW4gZnJlZXR5cGUtY29uZmlnIC0tbGlidG9vbCBpcwoJaW52b2tlZCwgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeQoJaXMgcmV0dXJuZWQuCgoyMDAwLTExLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luL2N5Z3dpbi1kZWYuaW46IFNhbWUgZml4IGFzIHByZXZpb3VzLgoKMjAwMC0xMS0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluOiBBZGQKCgkgICAgSU5TVEFMTF9QUk9HUkFNIDo9IEBJTlNUQUxMX1BST0dSQU1ACgkgICAgSU5TVEFMTF9TQ1JJUFQgIDo9IEBJTlNUQUxMX1NDUklQVEAKCglzbyB0aGF0IGluc3RhbGxhdGlvbiBvZiBmcmVldHlwZS1jb25maWcgZG9lcyBub3QgZmFpbC4KCjIwMDAtMTEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vZnJlZXR5cGUtY29uZmlnLmluLCBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46CglNb3ZlIHRlc3QgZG93biBmb3IgZW1wdHkgLS1leGVjLXByZWZpeC4KCUZpeCAtLXZlcnNpb24uCgoJKiBidWlsZHMvY3lnd2luL2luc3RhbGwubWssIGJ1aWxkcy91bml4L2luc3RhbGwubWs6IFVzZQoJJChJTlNUQUxMX1NDUklQVCkgZm9yIGluc3RhbGxhdGlvbiBvZiBmcmVldHlwZS1jb25maWcuCgoJKiBidWlsZHMvY3lnd2luL2luc3RhbGwubWs6IEZpeCBjbGVhbiB0YXJnZXQgbmFtZXMuCgoyMDAwLTExLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PQoKCkxvY2FsIFZhcmlhYmxlczoKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpjb2Rpbmc6IGxhdGluLTEKRW5kOgo=