MjAwMi0wMi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICAgICAqIGRvY3MvQ0hBTkdFUzogdXBkYXRpbmcgZm9yIDIuMC44CgogICAgICAgICogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBzZXR0aW5nIFBBVENIX0xFVkVMIHRvIDggYW5kCiAgICAgICAgcmVtb3ZpbmcgRlRfR2V0X05leHRfQ2hhciBmcm9tIHRoZSBBUEkgKHRlbXBvcmFyaWx5KQoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBBZGRpbmcgY29tbWVudHMgdG8gRlRfR2V0X05leHRfQ2hhcjsKCW5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG1pZ2h0IHRlbXBvcmFyaWx5IGJlIHJlbW92ZWQgZm9yIHRoZSAyLjAuOAoJcmVsZWFzZS4KCjIwMDItMDItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogUmVtb3ZlZCBpbW1hdHVyZSBzdXBwb3J0IG9mCgl0aGUgQVZFUkFHRV9XSURUSCBwcm9wZXJ0eS4KCjIwMDItMDItMDYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNpbmNlIG1hbnkgZm9udHMgZW1iZWRkZWQgaW4KCVBERiBkb2N1bWVudHMgZG8gbm90IGluY2x1ZGUgJ2NtYXAnLCAncG9zdCcgYW5kICduYW1lJyB0YWJsZXMsIHRoZQoJU0ZOVCBmYWNlIGxvYWRlciBoYXMgYmVlbiBjaGFuZ2VkIHRvIG5vdCBpbW1lZGlhdGVseSByZXBvcnQgYW4KCWVycm9yIGlmIHRoZXNlIGFyZSBub3QgcHJlc2VudC4KCglOb3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gX3JlcXVpcmVzXyB0aGVzZSB0YWJsZXMsIGJ1dCBBZG9iZQoJc2VlbXMgdG8gaWdub3JlIGl0IGNvbXBsZXRlbHkuCgoJKiBzcmMvc2ZudC90dGNtYXAuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3JlYWRfVE9DKTogVXNlIEZUX1VJbnQuCgkocGNmX3BhcnNlX21ldHJpYywgcGNmX3BhcnNlX2NvbXByZXNzZWRfbWV0cmljKTogUmVtb3ZlZC4gIENvZGUKCWlzIG5vdyBpbiAuLi4KCShwY2ZfZ2V0X21ldHJpYyk6IEhlcmUuCgkocGNmU2Vla1RvVHlwZSk6IFJlbmFtZWQgdG8gLi4uCgkocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZkhhc1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9oYXNfdGFibGVfdHlwZSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKGZpbmRfcHJvcGVydHkpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9maW5kX3Byb3BlcnR5KTogVGhpcy4KCVVzZSBGVF9JbnQuCgkocGNmX2dldF9iaXRtYXBzLCBwY2ZfZ2V0X2VuY29kaW5ncyk6IEhhbmRsZSBpbnZhbGlkIFBDRiBmb250cwoJYmV0dGVyIChkZWxheWluZyBmb3JtYXQgY2hlY2tzIG91dCBvZiBGVF9BY2Nlc3NfRnJhbWUgLi4KCUZUX0ZvcmdldF9GcmFtZSBibG9ja3MgdG8gYXZvaWQgbGVhdmluZyB0aGUgc3RyZWFtIGluIGFuIGluY29ycmVjdAoJc3RhdGUgd2hlbiBlbmNvdW50ZXJpbmcgYW4gaW52YWxpZCBQQ0YgZm9udCkuCgkKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoUENGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfSW5pdCk6IFRoaXMuCgkoUENGX0dldF9DaGFyX0luZGV4KTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBUaGlzLgoJKFBDRl9HZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfTmV4dCk6IFRoaXMuCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkKCSogc3JjL3BjZi9wY2YuaCAoUENGX0RvbmVfRmFjZSk6IFJlbW92ZWQuCgoyMDAyLTAyLTA2ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoRlRfRG9uZV9GYWNlKTogRml4ZWQgc21hbGwgbWVtb3J5IGxlYWsuCiAgICAgICAgCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogTm93IGhhbmRsZXMgdGhlICJBVkVSQUdFX1dJRFRIIgoJcHJvcGVydHkgdG8gcmV0dXJuIGNvcnJlY3QgY2hhcmFjdGVyIHBpeGVsICh3aWR0aC9oZWlnaHQpIHBhaXJzIGZvcgoJZW1iZWRkZWQgYml0bWFwcy4KCjIwMDItMDItMDQgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCglBZGRpbmcgdGhlIGZ1bmN0aW9uIGBGVF9HZXRfTmV4dF9DaGFyJywgZG9pbmcgdGhlIG9idmlvdXMgdGhpbmcKCXcuci50LiB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkIHByb3RvdHlwZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oOiBBZGQgYEZURHJpdmVyX2dldE5leHRDaGFyJwoJdHlwZWRlZi4KCShGVF9Ecml2ZXJfQ2xhc3MpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgYFBTX05leHRfVW5pY29kZV9GdW5jJwoJdHlwZWRlZi4KCShQU05hbWVzX0ludGVyZmFjZSk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZCBgVFRfQ2hhck5leHRfRnVuYycKCXR5cGVkZWYuCgkoVFRfQ01hcFRhYmxlKTogVXNlIGl0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24sIGltcGxlbWVudGluZwoJaGlnaC1sZXZlbCBBUEkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uZXh0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MWNpZF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX05leHRfVW5pY29kZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX2ludGVyZmFjZSk6IEFkZCBpdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDAsIGNvZGVfdG9fbmV4dDIsIGNvZGVfdG9fbmV4dDQsCgljb2RlX3RvX25leHQ2LCBjb2RlX3RvX25leHRfOF8xMiwgY29kZV90b19uZXh0XzEwKTogTmV3IGF1eGlsaWFyeQoJZnVuY3Rpb25zLgoJKFRUX0NoYXJNYXBfTG9hZCk6IFVzZSB0aGVtLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0dF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3dpbmZudC93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRm9yIG5vdywgcmVwb3J0IFVuaWNvZGUgZm9yCglVbmljb2RlIGFuZCBMYXRpbiAxIGVuY29kaW5ncy4KCjIwMDItMDItMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogQWRkIG1pc3NpbmcgYGZpJy4KCgoJKiBWZXJzaW9uIDIuMC43IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW5jcmVhc2luZyBGUkVFVFlQRV9QQVRDSCB0byA3Cglmb3IgdGhlIG5ldyByZWxlYXNlLgoKMjAwMi0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBSRUFETUUuVU5YLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJMi4wLjcgcmVsZWFzZS4KCjIwMDItMDEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEw6IE1vdmVkIHRvIC4uLgoJKiBkb2NzL0lOU1RBTEw6IEhlcmUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlICJpbnN0YWxsIiBzY3JpcHQgb24KCVdpbmRvd3MsIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGRvZXNuJ3QgcHJlc2VydmUgY2FzZS4KCjIwMDItMDEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGNvbmZpZ3VyZTogRml4ZWQgdGhlIHNjcmlwdC4gIEl0IHByZXZpb3VzbHkgZGlkbid0IGFjY2VwdCBtb3JlCgl0aGFuIG9uZSBhcmd1bWVudCBjb3JyZWN0bHkuICBGb3IgZXhhbXBsZSwgd2hlbiB0eXBpbmc6CgoJICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS1ubHMKCgl0aGUgIi0tZGlzYWJsZS1ubHMiIHdhcyBpbmNvcnJlY3RseSBzZW50IHRvIHRoZSAibWFrZSIgcHJvZ3JhbS4KCjIwMDItMDEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRS5VTlg6IEZpeCB0eXBvLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rICh1bmluc3RhbGwpOiBGaXggbGlicmFyeSBuYW1lIGZvciBsaWJ0b29sLgoKMjAwMi0wMS0yOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBGaXggaW5jb3JyZWN0IGRlc3RydWN0aW9uIG9mCgl0aGUgZmFjZSBvYmplY3QgKGZhY2UtPnRvYy50YWJsZXMsIGZhY2UtPnJvb3QuZmFtaWx5X25hbWUsCglmYWNlLT5yb290LmF2YWlsYWJsZV9zaXplLCBmYWNlLT5jaGFyc2V0X2VuY29kaW5nLAoJZmFjZS0+Y2hhcnNldF9yZWdpc3RyeSBhcmUgbm93IGZyZWVkKS4gIFRoYW5rcyB0byBOaWVscyBNb3NlbGV5LgoKMjAwMi0wMS0yOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogU2V0IGBsb2FkZXItPm51bV9jaGFycycuCgoyMDAyLTAxLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBjb3B5CglvZiBgYmFzZScgc3RyaW5nIGZvciBkZWNyeXB0aW5nIHRvIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGRhdGEuCglCYXNlZCBvbiBhIHBhdGNoIGJ5IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC5vcmcucGw+LgoKMjAwMi0wMS0yNyAgR2l1bGlhbm8gUG9jaGluaSAgPHBvY2hpbmlAc2hpbnkuaXQ+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUpOiBGaXggYnVnIHdoaWNoIGNhdXNlZAoJYmFkIHJlbmRlcmluZyBvZiB0aGluIGxpbmVzIChsZXNzIHRoYW4gb25lIHBpeGVsIHRoaWNrKS4KCjIwMDItMDEtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTWFrZSBsYXN0IHBhdGNoIHdvcmsKCWFjdHVhbGx5LgoKMjAwMi0wMS0yNSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kb25lLCBmdGNfbm9kZV9kZXN0cm95KTogRml4Cgljb21waWxhdGlvbiB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgYGZ0bW0ub2JqJy4KCSogc3JjL2NhY2hlL2Rlc2NyaXAubW1zIChmdGNhY2hlLm9iaik6IERlcGVuZGVuY2llcyBhZGRlZC4KCjIwMDItMDEtMjUgIFdBTkcgWWkgIDx3YW5neWlAZm91bmRlci5jb20uY24+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IEZpeCBkZWFsbG9jYXRpb24gYnVnLgoKMjAwMi0wMS0yMSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogVHlwbyBmaXhlZCAodGhhbmtzIHRvIERldGxlZiAiSGF3a2V5ZSIgV/xya25lcikgaW4KCXRoZSBVUkwgZm9yIHRoZSBvbmxpbmUgcmVzb3VyY2UuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogTmV3IGZpbGUuCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYzogVXBkYXRlZCBmb3IgQW1pZ2FPUyAzLjkuCgkqIGJ1aWxkcy9hbWlnYS9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBUaGUgc2NyaXB0IHdhcyBzdGlsbCBidWdneS4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNYWtlIGl0IHJlYWxseSB3b3JrIGZvciBhbnkgaW5zdGFsbAoJcHJlZml4LgoKMjAwMi0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBGaXggc29tZSBzZXJpb3VzIGJ1Z3MuCgoyMDAyLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEJ1aWxkIHRvcC1sZXZlbCBKYW1maWxlLgoKMjAwMi0wMS0wOSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfbGluZSk6IFNtYWxsIG9wdGltaXphdGlvbiB0bwoJdGhlIHNtb290aCBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgdGhhdCBkZWFscyB3aXRoIHZlcnRpY2FsIHNlZ21lbnRzLgoJVGhpcyByZXN1bHRzIGluIGEgNS03JSBzcGVlZHVwIGluIHJlbmRlcmluZyBzcGVlZC4KCjIwMDItMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzb21lIHdyYXBwZXIgc2NyaXB0cyB0byBtYWtlIHRoZSBpbnN0YWxsYXRpb24gbW9yZQoJVW5peC1mcmllbmRseS4KCgkqIGNvbmZpZ3VyZSwgaW5zdGFsbDogTmV3IGZpbGVzLgoKCSogSU5TVEFMTCwgUkVBRE1FLlVOWDogVXBkYXRlZCBpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlvbiB0byB1c2UgdGhlCgluZXcgJ2NvbmZpZ3VyZScgYW5kICdpbnN0YWxsJyBzY3JpcHRzLgoKMjAwMi0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjYgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogZG9jcy9CVUdTLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIDIuMC42IHJlbGVhc2UuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEZpeGVkIEhUTUwgcXVvdGluZyBpbiBzb3VyY2VzLgoJKGh0bWxfZm9ybWF0KTogUmVwbGFjZWQgd2l0aCAuLi4KCShodG1sX3F1b3RlKTogTmV3IGZ1bmN0aW9uLgoJKGh0bWxfcXVvdGUwKTogTmV3IGZ1bmN0aW9uLgoJKERvY0NvZGU6OmR1bXBfaHRtbDogU21hbGwgaW1wcm92ZW1lbnQuCgkoRG9jUGFyYWdyYXBoOjpkdW1wLCBEb2NCbG9jazo6aHRtbCk6IFVzZSBodG1sX3F1b3RlMCBhbmQgaHRtbF9xdW90ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFNldHRpbmcgZGVmYXVsdCBvcHRpb25zIGZvcgoJYSByZWxlYXNlIGJ1aWxkIChkZWJ1Z2dpbmcgb2ZmLCBieXRlY29kZSBpbnRlcnByZXRlciBvZmYpLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b3V0bG4uYywgc3JjL2NhY2hlL2Z0Y2NtYXAuYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRzYml0LmM6IFJlbW92aW5nIHNtYWxsIGNvbXBpbGVyCgl3YXJuaW5ncyAoaW4gcGVkYW50aWMgY29tcGlsYXRpb24gbW9kZXMpLgoKMjAwMi0wMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE1vZGlmaWVkIGNvbXB1dGF0aW9uCglvZiBhdXRvLWhpbnRlZCBzdGVtIHdpZHRoczsgdGhpcyBhdm9pZHMgY29sb3IgZnJpbmdlcyBpbgoJIkNsZWFyVHlwZS1saWtlIiByZW5kZXJpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoX0hlYWRlciwKCVRUX0xvYWRfU2ltcGxlX0dseXBoLCBUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCwgbG9hZF90cnVldHlwZV9nbHlwaCk6CglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIG1ha2UgaXQgbW9yZSBwYXJhbm9pZDsgdGhpcyBhdm9pZHMKCW5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhlIGNhc2Ugb2YgaW52YWxpZCBnbHlwaCBkYXRhIChhcwoJZW5jb3VudGVyZWQgaW4gdGhlIG91dHB1dCBvZiBzb21lIGJ1Z2d5IGZvbnQgY29udmVydGVycykuCgoyMDAyLTAxLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBBZGRlZCBzcGVjaWFsIFJFQURNRSBmaWxlIGZvciBVbml4IHVzZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEZpeGVkIHR5cG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogQWRkZWQgI2luY2x1ZGUgRlRfT1VUTElORV9IIHRvIGdldCByaWQKCW9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX0NoZWNrKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTAxLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEFkZCBjYXN0IHRvIGF2b2lkIGNvbXBpbGVyCgl3YXJuaW5nLgoKMjAwMi0wMS0wMyAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEFkZGVkIGEgZml4IHRvIGVuc3VyZSB0aGF0CglhbGwgRnJlZVR5cGUgaW5wdXQgc3RyZWFtcyBhcmUgY2xvc2VkIGluIGNoaWxkIHByb2Nlc3NlcyBvZiBhICJmb3JrIgoJb24gVW5peCBzeXN0ZW1zLiAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgKHBvdGVudGlhbCkgYWNjZXNzCgljb250cm9sIGlzc3Vlcy4KCjIwMDItMDEtMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogRml4ZWQgYSBidWcgdGhhdCBjcmFzaGVkIHRoZQoJbGlicmFyeSB3aGVuIGRlYWxpbmcgd2l0aCBjZXJ0YWluIHdlaXJkIGZvbnRzIGxpa2UgIlN0YWxpbmdyYWQiLCBpbgoJInNhZG4ucGZiIiAodGhpcyBmb250IGhhcyBubyBmdWxsIGZvbnQgbmFtZSBlbnRyeSkuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PdXRsaW5lX0NoZWNrKToKCU5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGUgY29uc2lzdGVuY3kgb2Ygb3V0bGluZSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVc2UgYEZUX091dGxpbmVfQ2hlY2snIHRvCgllbnN1cmUgdGhhdCBsb2FkZWQgZ2x5cGhzIGFyZSB2YWxpZC4gIFRoaXMgYWxsb3dzIGNlcnRhaW4gZm9udHMgbGlrZQoJInR0MTA5NW1fLnR0ZiIgdG8gYmUgbG9hZGVkIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdGhleSBjb250YWluCglyZWFsbHkgZnVua3kgZ2x5cGhzLgoKCVRoZXJlIHN0aWxsIGlzIGEgYnVnIHRoZXJlLCB0aG91Z2guCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCjIwMDEtMTItMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBGaXggYWR2YW5jZSB3aWR0aAoJY29tcHV0YXRpb24gb2YgYXV0by1oaW50ZWQgZ2x5cGhzLiAgVGhpcyBub3RpY2VhYmx5IGltcHJvdmVzIHRoZQoJc3BhY2luZyBvZiBsZXR0ZXJzIGluIEtERSBhbmQgR25vbWUuCgoyMDAxLTEyLTI1ICBBbnRvaW5lIExlY2EgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQ29ycmVjdGluZyB0aGUgb3JkZXIgZm9yIEJvcmxhbmQgY29tcGlsZXJzOgoJMTYtYml0IGJjYyB3YXMgbmV2ZXIgc2VsZWN0ZWQsIGFsd2F5cyBvdmVycmlkZGVuIGJ5IDMyLWJpdCBiY2MzMi4KCjIwMDEtMTItMjIgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGZjL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEhhbmRsZSBwcm9wZXJ0eSBgUE9JTlRfU0laRScKCWFuZCBmaXggaW5jb3JyZWN0IGNvbXB1dGF0aW9uIG9mIGBhdmFpbGFibGVfc2l6ZXMnLgoKMjAwMS0xMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEF1dG8taGludGVkIGdseXBocyBoYWQgYW4KCWluY29ycmVjdCBnbHlwaCBhZHZhbmNlIGluIHRoZSBjYXNlIG9mIG1vbm8td2lkdGggZm9udHMgKGxpa2UKCUNvdXJpZXIsIEFuZGFsZSBNb25vLCBhbmQgb3RoZXJzKS4KCjIwMDEtMTItMjIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRhcHRhdGlvbnMgdG8gbGF0ZXN0IGNoYW5nZXMuCglTdXBwb3J0IGFkZGVkIGZvciBNb3JwaE9TLgoKMjAwMS0xMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChGVF9DT01QT05FTlQpOiBSZWRlZmluZSB0byBgdHJhY2VfcHNocmVjJy4KCShwc19tYXNrX3RhYmxlX21lcmdlLCBwc19oaW50c19vcGVuLCBwc19oaW50c19zdGVtLAoJcHNfaGludHNfdDFzdGVtMywgcHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOiBGaXgKCUZUX0VSUk9SIG1lc3NhZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzEnLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzInLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBVcGRhdGVkLgoKCSogZG9jcy9tb2R1bGVzLnR4dDogTmV3IGZpbGUuCgoyMDAxLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX3QybWFzaywgcHNfaGludHNfdDJjb3VudGVyKToKCUlnbm9yZSBpbnZhbGlkICJoaW50bWFzayIgYW5kICJjbnRybWFzayIgb3BlcmF0b3JzIChpbnN0ZWFkIG9mCglyZXR1cm5pbmcgYW4gZXJyb3IpLiAgR2x5cGggMjAyOCBvZiB0aGUgQ0ZGIGZvbnQgIk1TdW5nLUxpZ2h0LUFjcm8iCgljb3VsZG4ndCBiZSByZW5kZXJlZCBvdGhlcndpc2UgKGl0IHNlZW1zIGl0cyBjaGFyc3RyaW5nIGlzIGJ1Z2d5LAoJdGhvdWdoIHRoaXMgcmVxdWlyZXMgbW9yZSBhbmFseXNpcykuCgkoRlRfQ09NUE9ORU5UKTogRGVmaW5lLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpLCBzcmMvcHNhdXgvdDFkZWNvZGUuYwoJKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoKiksIEZpeGVkIGEKCWJ1ZyB3aGVyZSB0aGUgWCBhbmQgWSBheGlzIHdoZXJlIGludmVyc2VkIGluIHRoZSBwb3N0c2NyaXB0IGhpbnRlci4gCglUaGlzIGNhdXNlZCBwcm9ibGVtIHdoZW4gZGlzcGxheWluZyBvbiBub24tc3F1YXJlIHN1cmZhY2VzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IHMvdmVydGljYWwvZGltZW5zaW9uLy4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IFJlcGxhY2VkIGEgZmxvYXRpbmcKCXBvaW50IGNvbnN0YW50IHdpdGggYSBmaXhlZC1mbG9hdCBlcXVpdmFsZW50LiAgRm9yIHNvbWUgcmVhc29ucyBub3QKCWFsbCBjb21waWxlcnMgYXJlIGNhcGFibGUgb2YgZGlyZWN0bHkgY29tcHV0aW5nIGEgZmxvYXRpbmcgcG9pbnRlcgoJY29uc3RhbnQgY2FzdGVkIHRvIEZUX0ZpeGVkLCBhbmQgd2lsbCBsaW5rIGEgbWF0aCBsaWJyYXJ5IGluc3RlYWQuCgoyMDAxLTEyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSwgZnRjX2NhY2hlX2xvb2t1cCk6IEZpeAoJdHJhY2luZyBzdHJpbmdzLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfQ2hlY2spOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IERpdHRvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0xMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIFBvc3RTY3JpcHQgaGludGVyIHN1cHBvcnQgdG8gdGhlIENGRiBhbmQgQ0lEIGRyaXZlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9Gb250KTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Jbml0X0J1aWxkZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9CdWlsZGVyX0luaXQpOiBUaGlzLgoJQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfRG9uZV9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9EZWNvZGVyKTogQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgdnN0ZW0gc3VwcG9ydC4KCShDRkZfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKGNmZl9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUpOiBVc2UgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZygpLgoJKGNmZl9hcmd1bWVudF9jb3VudHMpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywgQ0ZGX1NpemVfRG9uZSwgQ0ZGX1NpemVfSW5pdCwKCUNGRl9TaXplX1Jlc2V0LCBDRkZfR2x5cGhTbG90X0RvbmUsIENGRl9HTHlwaFNsb3RfSW5pdCk6IE5ldwoJZnVuY3Rpb25zLgoJKENGRl9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0luaXQpOiBUaGlzLgoJQWRkIGhpbnRlciBzdXBwb3J0LgoJKENGRl9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0RvbmUpOiBUaGlzLgoJKENGRl9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDRkZfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKENJRF9GYWNlUmVjKTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfTG9hZF9HbHlwaCk6IEFkZCBoaW50ZXIgc3VwcG9ydC4KCSogc3JjL2NpZC9jaWRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENJRF9HbHlwaFNsb3RfRG9uZSwgQ0lEX0dseXBoU2xvdF9Jbml0LCBDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywKCUNJRF9TaXplX0RvbmUsIENJRF9TaXplX0luaXQsIENJRF9TaXplX1Jlc2V0KTogTmV3IGZ1bmN0aW9ucy4KCShDSURfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Eb25lKTogVGhpcy4KCShDSURfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50aW5nIHN1cHBvcnQuCgkoQ0lEX0luaXRfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDSURfRHJpdmVyX0luaXQpOiBUaGlzLgoJKENJRF9Eb25lX0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Eb25lKTogVGhpcy4KCSogc3JjL2NpZC9jaWRvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9jaWRyaXZlci5jOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jICh0Ml9oaW50X3N0ZW1zKTogRml4ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9MaWJyYXJ5KTogRml4ZWQgYSBzdHVwaWQgYnVnIHRoYXQKCWNyYXNoZWQgdGhlIGxpYnJhcnkgb24gZXhpdC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBFbmFibGUgZm9udCBtYXRyaXgKCXRyYW5zZm9ybWF0aW9uIG9mIGhpbnRlZCBnbHlwaHMuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0RvbmUpOiBGaXhlZCBhIG1lbW9yeSBsZWFrOyB0aGUgc3VicnMKCXJvdXRpbmVzIHdlcmUgbmV2ZXIgcmVsZWFzZWQgd2hlbiBDSUQgZmFjZXMgd2VyZSBkZXN0cm95ZWQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuYzogVXBkYXRlZAoJdG8gbW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBlbmNvZGluZyB0YWJsZXMgYmFjayB3aXRoaW4gImNmZmxvYWQuYyIKCWluc3RlYWQgb2YgbWFraW5nIHRoZW0gcGFydCBvZiBhIHNoYXJlZCBoZWFkZXIgKGNhdXNpbmcgcHJvYmxlbXMgaW4KCSJtdWx0aSIgYnVpbGRzKS4gIFRoaXMgcmV2ZXJ0cyBjaGFuZ2UgMjAwMS0wOC0wOC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZCBmb3IgMi4wLjYgcmVsZWFzZS4KCSogZG9jcy9UT0RPOiBBZGRlZCAic3RlbTMgYW5kIGNvdW50ZXIgaGludHMgc3VwcG9ydCIgdG8gdGhlIFRPRE8KCWxpc3QgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4KCSogZG9jcy9CVUdTOiBDbG9zZWQgdGhlIEFVVE9ISU5ULU5PLVNCSVRTIGJ1Zy4KCjIwMDEtMTItMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjYWNoZS5oOiBBZGRlZCBjb21tZW50cyB0byBpbmRpY2F0ZSB0aGF0Cglzb21lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMKCXRoYXQgbmVlZCB0byBpbXBsZW1lbnQgY3VzdG9tIGNhY2hlIHR5cGVzLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoY3VyX3RvX29yZywgb3JnX3RvX2N1cik6IEZpeGVkIGEgbmFzdHkgYnVnCgl0aGF0IHByZXZlbnRlZCBjb21wb3NpdGVzIGZyb20gbG9hZGluZyBjb3JyZWN0bHksIGR1ZSB0byBtaXNzaW5nCglwYXJlbnRoZXNlcyBhcm91bmQgbWFjcm8gcGFyYW1ldGVycy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IE1ha2UgdGhlICJwb3N0IiBhbmQgIm5hbWUiCgl0YWJsZXMgb3B0aW9uYWwgdG8gbG9hZCBQQ0wgZm9udHMgcHJvcGVybHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9Mb2FkX0dseXBoKSwgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9MT0FEX1NCSVRTX09OTFkpOgoJIkZpeGVkIiB0aGUgYnVnIHRoYXQgcHJldmVudGVkIGVtYmVkZGVkIGJpdG1hcHMgdG8gYmUgbG9hZGVkIHdoZW4KCXRoZSBhdXRvLWhpbnRlciBpcyB1c2VkLiAgVGhpcyBhY3R1YWxseSBpcyBhIGhhY2sgYnV0IHdpbGwgYmUgZW5vdWdoCgl1bnRpbCB0aGUgaW50ZXJuYWwgcmUtZGVzaWduIHNjaGVkdWxlZCBmb3IgRnJlZVR5cGUgMi4xLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBvdXRsaW5lCglzaGlmdGluZyBidWcgaW4gdGhlIG1vbm9jaHJvbWUgcmVuZGVyZXIuCgoJKiBSRUFETUU6IFVwZGF0ZWQgdmVyc2lvbiBudW1iZXJzIHRvIDIuMC42LgoKMjAwMS0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCB0ZXN0IGZvciBpbnZhbGlkCglnbHlwaCBoZWFkZXIuCgoyMDAxLTEyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRDX05vZGVfVW5yZWYpOiBSZW1vdmVkLiAgSXQgaXMKCWFscmVhZHkgaW4gZnRjbWFuYWcuaC4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBnZmFtJy4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCgkqIGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmg6IFVwZGF0ZWQuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95KTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX25vZGVfaW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBjZmFtJy4KCVJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogRGl0dG8uCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gODowOjIuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZC4KCjIwMDEtMTItMTQgIFNjb3R0IExvbmcgIDxzY290dEBzd2lmdHZpZXcuY29tPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGluZyBjcmFzaCB3aGVuCglkZWFsaW5nIHdpdGggaW52YWxpZCBmb250cyAoaS5lLiBnbHlwaCBzaXplIDwgMTAgYnl0ZXMpLgoKMjAwMS0xMi0xNCAgU2FtIExhdGluZ2EgPHNsb3VrZW5AZGV2b2x1dGlvbi5jb20+CgoJKiBidWlsZHMvbWFjL2ZyZWV0eXBlLm1ha2U6IEEgbmV3IE1ha2VmaWxlIHRvIGJ1aWxkIHdpdGggTVBXIG9uCglNYWNPUyBjbGFzc2ljLgoKMjAwMS0xMi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCksIHNyYy90eXBlMS90MWdsb2FkLmMKCShUMV9Mb2FkX0dseXBoKSwgc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfTG9hZF9HbHlwaCksCglzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Mb2FkX0dseXBoKTogRml4ZWQgYSBzZXJpb3VzIGJ1ZyBjb21tb24gdG8KCWFsbCBmb250IGRyaXZlcnMgKHRoZSBhZHZhbmNlIHdpZHRoIHdhcyBuZXZlciBoaW50ZWQgd2hlbiBpdAoJc2hvdWxkKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfUEFUQ0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGRlYnVnX21lbV9kdW1teSkgWyFGVF9ERUJVR19NRU1PUlldOiBEb24ndAoJdXNlIGBleHRlcm4nIGtleXdvcmQuCgoyMDAxLTEyLTEyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50L3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzLCBwc2hfYmx1ZXNfc25hcF9zdGVtCglwc2hfZ2xvYmFsc19uZXcpOiBBZGRpbmcgY29ycmVjdCBCbHVlU2NhbGUvQmx1ZVNoaWZ0IHN1cHBvcnQsIHBsdXMKCWZhbWlseSBibHVlcyBwcm9jZXNzaW5nLgoJKiBzcmMvcHNoaW50L3BzaGdsb2IuaCAoUFNIX0JsdWVzUmVjKTogVXBkYXRlZC4KCglTdGFydGVkIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgUG9zdHNjcmlwdCBoaW50ZXIgaW4gdGhlIENGRiBtb2R1bGUuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEltcGxlbWVudCBpdC4KCSogc3JjL2NmZi9jZmZnbG9hZC5oOiBVcGRhdGVkLgoKMjAwMS0xMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBTb21lIHBvcnRhYmlsaXR5IGZpeGVzLgoKMjAwMS0xMi0xMSAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgZnRkZWJ1Zy5vYmouCgoyMDAxLTEyLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9HZW5lcmljX0hlYWRlcik6IFR5cG9zLgoKMjAwMS0xMi0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNb2RpZmllZCB0aGUgc2NyaXB0IHRvIHByZXZlbnQKCXBhc3NpbmcgIi1ML3Vzci9saWIiIHRvIGdjYy4KCgkqIGRvY3MvRlRMLlRYVDogU2ltcGxlIGZpeCAoY2hhbmdlICJMSUNFTlNFLlRYVCIgdG8gIkZUTC5UWFQiKS4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogTmV3IGZpbGUgZm9yIGNoZWNraW5nIGNvbmZpZ3VyZSBwYXRocy4KCVdlIG5lZWQgdG8gaW5zdGFsbCBpdCBpbiAkKHByZWZpeCkvc2hhcmUvYWNsb2NhbC9mcmVldHlwZTIubTQgYnV0IEkKCWRpZG4ndCBtb2RpZnkgYnVpbGRzL3VuaXgvaW5zdGFsbC5tayB5ZXQuCgoJKiBJTlNUQUxMOiBVcGRhdGVkIHRoZSBpbnN0cnVjdGlvbnMgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyB3aXRoCglKYW0uICBUaGV5IHdlcmUgc2ltcGx5IHdyb25nLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQ29zKTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdCBjYXVzZWQKCXNsaWdodGx5IGltcHJvcGVyIHJlc3VsdHMgZm9yIGBGVF9Db3MnIGFuZCBgRlRfU2luJyAoZXhhbXBsZToKCUZUX1NpbigwKSA9PSAtMSEpLgoKMjAwMS0xMi0xMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoR0VUX0xvbmdMRSwgR0VUX1VMb25nTEUpOgoJRml4ZWQgaW5jb3JyZWN0IGFyZ3VtZW50IHR5cGVzLgoKMjAwMS0xMi0xMCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Jbml0X0ZhY2UpOiBBbGxvdyBYZnQgdG8gdXNlIFBDRiBmb250cwoJYnkgc2V0dGluZyB0aGUgImZhY2UtPm1ldHJpY3MubWF4X2FkdmFuY2UiIGNvcnJlY3RseS4KCjIwMDEtMTItMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY21hcC5oLCBzcmMvY2FjaGUvZnRjY21hcC5jOiBBZGRlZCBuZXcKCWNoYXJtYXAgY2FjaGUuCgkqIHNyYy9jYWNoZS9mdGNhY2hlLmM6IFVwZGF0ZWQuCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogcy9VTlVTRUQvRlRfVU5VU0VELy4KCjIwMDEtMTItMDYgIExlb25hcmQgUm9zZW50aG9sICA8bGVvbmFyZHJAbGF6ZXJ3YXJlLmNvbT4KCglBZGRlZCBzdXBwb3J0IGZvciByZWFkaW5nIC5kZm9udCBmaWxlcyBvbiBNYWMgT1MgWC4gIEFsc28gYWRkZWQgYQoJbmV3IHJvdXRpbmUgd2hpY2ggbG9va3MgdXAgYSBnaXZlbiBmb250IGJ5IG5hbWUgaW4gdGhlIE1hYyBPUyBhbmQKCXJldHVybnMgdGhlIGRpc2sgZmlsZSB3aGVyZSBpdCByZXNpZGVzLgoKCSogc3JjL2Jhc2UvZnRtYWMuYzogSW5jbHVkZSA8RmlsZXMuaD4gYW5kIDxUZXh0VXRpbHMuaD4uCgkoaXNfZGZvbnQpOiBOZXcgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlX0Zyb21fZGZvbnQpOiBOZXcgZnVuY3Rpb24uCgkoRlRfR2V0RmlsZV9Gcm9tX01hY19OYW1lKTogTmV3IGV4cG9ydGVkIGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL0phbWZpbGUsIHNyYy9jYWNoZS9ydWxlcy5tazogVXBkYXRlZC4KCjIwMDEtMTItMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IFNtYWxsIHVwZGF0ZS4KCjIwMDEtMTItMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogUmUtb3JkZXJlZCBjb2RlIGZvcgoJZGVidWdnaW5nIHB1cnBvc2VzLgoJQ29tbWVudCBvdXQgdXNlIG9mIGBvcmlnaW4nLgoKCSogc3JjL3Ntb290aC9mdHNtb290aC5jIChmdF9zbW9vdGhfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBoaWRkZW4gYnVnCgl3aGVyZSBvdXRsaW5lIHNoaWZ0aW5nIHdhc24ndCBjb3JyZWN0bHkgdW5kb25lIGFmdGVyIGJpdG1hcAoJcmFzdGVyaXphdGlvbi4gIFRoaXMgY3JlYXRlZCBwcm9ibGVtcyB3aXRoIGNlcnRhaW4gZ2x5cGhzIChsaWtlICciJwoJb2YgY2VydGFpbiBmb250cykgYW5kIHRoZSBjYWNoZSBzeXN0ZW0uCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHNoMV9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KTogRml4IHR5cG8uCgkocHMyX2hpbnRzX2FwcGx5KTogU21hbGwgZml4LgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9pbml0KSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKiwgc3JjL2NhY2hlLyo6CglZZXQgYW5vdGhlciBtYXNzaXZlIHJld3JpdGUgb2YgdGhlIGNhY2hpbmcgc3ViLXN5c3RlbSBpbiBvcmRlciB0bwoJYm90aCBpbmNyZWFzZSBwZXJmb3JtYW5jZSBhbmQgYWxsb3cgc2ltcGxlciBjYWNoZSBzdWItY2xhc3NpbmcuICBBcwoJYW4gZXhhbXBsZSwgdGhlIGNvZGUgZm9yIHRoZSBpbWFnZSBhbmQgc2JpdCBjYWNoZXMgaXMgbm93IG11Y2gKCXNpbXBsZXIuCgoJSSBzdGlsbCBuZWVkIHRvIHVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBpbgoJd3d3L2ZyZWV0eXBlMi9kb2NzL2NhY2hlLmh0bWwgdG8gcmVmbGVjdCB0aGUgbmV3IGRlc2lnbiB0aG91Z2guCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9DQUNIRV9DSEFSTUFQX0gpOiBOZXcKCW1hY3JvLgoJKEZUX0NBQ0hFX0lOVEVSTkFMX0NBQ0hFX0gpOiBVcGRhdGVkLgoKMjAwMS0xMi0wNSAgRGF2aWQgS3JhdXNlICA8ZnJlZXR5cGVAZGF2aWRrcmF1c2UuY29tPgoKCSogZG9jcy9saWNlbnNlLnR4dDogcy9YIFdpbmRvd3MvWCBXaW5kb3cgU3lzdGVtLy4KCjIwMDEtMTItMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogRml4IGRlZmluaXRpb24gY29uZGl0aW9uIG9mIE1FTV9TZXQoKS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKE1fWSk6IENoYW5nZSB2YWx1ZSB0byAxOTIuCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4IHByaW50ZigpIHBhcmFtZXRlci4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChmdGNfaW1hZ2Vfbm9kZV9pbml0LAoJZnRjX2ltYWdlX25vZGVfY29tcGFyZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV93ZWlnaHQpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZS4KCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChNRU1fU2V0KTogTW92ZSBkZWZpbml0aW9uIGRvd24gdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UgVU5VU0VEKCkgdG8KCWF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAodGFibGVOYW1lcyk6IFVzZSBgY29uc3QnLgoJKHBjZl9yZWFkX1RPQyk6IENoYW5nZSBjb3VudGVyIG5hbWUgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCVVzZSBgY29uc3QnLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX2Nsb3NlKTogUmVtb3ZlIHJlZHVuZGFudAoJZGVjbGFyYXRpb24uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IFJlbmFtZSB2YXJpYWJsZXMKCXRvIGF2b2lkIHNoYWRvd2luZy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKHBzaDJfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuaDogUmVtb3ZlIGRvdWJsZSBkZWNsYXJhdGlvbnMgb2YgYFQxX1NpemVfSW5pdCgpJwoJYW5kIGBUMV9TaXplX0RvbmUoKScuCgoyMDAxLTExLTIwICBBbnRvaW5lIExlY2EgIDxhbnRvaW5lbGVjYUBtdWx0aW1hbmlhLmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQWRkZWQgc29tZSBuZXcgTWljcm9zb2Z0IGxhbmd1YWdlCgljb2RlcyBhbmQgTENJRHMgYXMgZm91bmQgaW4gTVNETiAoUGFzc3BvcnQgU0RLKS4gIEFsc28gYWRkZWQKCWNvbW1lbnRzIGFib3V0IHRoZSBtZWFuaW5nIG9mIGJpdCA1NyBvZiB0aGUgYE9TLzInIHRhYmxlCgkoVFRfVUNSX1NVUlJPR0FURVMpIHdoaWNoICh3aXRoIE9wZW5UeXBlIHYuMS4zKSBub3cgbWVhbnMgInRoZXJlIGlzCglhIGNoYXJhY3RlciBiZXlvbmQgMHhGRkZGIGluIHRoaXMgZm9udCIuICBUaGFua3MgdG8gRGV0bGVmIFf8cmtuZXIKCTxUZXRpU29mdEBhcGcubGFobi5kZT4gZm9yIG5vdGljaW5nIHRoaXMuCgoyMDAxLTExLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIve3BzaGFsZ28yLmMsIHBzaGFsZ28xLmN9OiBGaXhlZCBzdHVwaWQgYnVnIGluIHNvcnRpbmcKCXJvdXRpbmUgdGhhdCBjcmVhdGVkIG5hc3R5IGFsaWdubWVudCBhcnRlZmFjdHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHRlc3RzL2d2aWV3LmM6IERlYnVnZ2luZyB1cGRhdGVzLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IERlLWFjdGl2YXRlZCBleHBlcmltZW50YWwgZ2FtbWEgc3VwcG9ydC4KCUFwcGFyZW50bHksIGBvcHRpbWFsJyBnYW1tYSB0YWJsZXMgZGVwZW5kIG9uIHRoZSBtb25pdG9yIHR5cGUsCglyZXNvbHV0aW9uIGFuZCBnZW5lcmFsIGthcm1hLCBzbyBpdCdzIGJldHRlciB0byBjb21wdXRlIHRoZW0gb3V0c2lkZQoJb2YgdGhlIHJhc3Rlcml6ZXIgaXRzZWxmLgoJKGdyYXlfY29udmVydF9nbHlwaCk6IFVzZSBgdm9sYXRpbGUnIGtleXdvcmQuCgoyMDAxLTEwLTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGV4cGVyaW1lbnRhbCBgZ2FtbWEnIHN1cHBvcnQuICBUaGlzIHByb2R1Y2VzIHNtb290aGVyIGdseXBocwoJYXQgc21hbGwgc2l6ZXMgZm9yIHZlcnkgbGl0dGxlIGNvc3QuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfaW5pdF9nYW1tYSk6IE5ldyBmdW5jdGlvbi4KCShncmF5X3Jhc3Rlcl9uZXcpOiBVc2UgaXQuCgoJVmFyaW91cyBmaXhlcyB0byB0aGUgYXV0by1oaW50ZXIuICBUaGV5IG1lcmVseSBpbXByb3ZlIHRoZSBvdXRwdXQgb2YKCXNhbnMtc2VyaWYgZm9udHMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHN0aWxsIHByb2JsZW1zIHdpdGggc2VyaWZlZAoJZm9udHMgYW5kIGNvbXBvc2l0ZXMgKGFjY2VudGVkIGNoYXJhY3RlcnMpLgoKCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkLAoJYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX291dGxpbmVfc2F2ZSwgYWhfb3V0bGluZV9jb21wdXRlX3NlZ21lbnRzKTogRml4IHR5cG9zLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2FsaWduX3NlcmlmX2VkZ2UpOiBOZXcgYXJndW1lbnQKCWB2ZXJ0aWNhbCcuICBJbXBsZW1lbnQgaW1wcm92ZW1lbnQuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfaGludF9lZGdlcyk6IEltcGxlbWVudCBpdC4KCUZpeCB0eXBvcy4KCShhaF9oaW50ZXJfYWxpZ25fc3Ryb25nX3BvaW50cywgYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogRml4Cgl0eXBvcy4KCShhaF9oaW50ZXJfbG9hZCk6IFNldCBgYWhfZGVidWdfaGludGVyJyBpZiBERUJVR19ISU5URVIgaXMgZGVmaW5lZC4KCSogc3JjL2F1dG9oaW50L2FobW9kdWxlLmM6IEltcGxlbWVudCBzdXBwb3J0IGZvciBERUJVR19ISU5URVIgbWFjcm8uCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmg6IERpdHRvLgoJKEFIX0hpbnRlcik6IFJlbW92ZSBgZGlzYWJsZV9ob3J6X2VkZ2VzJyBhbmQgYGRpc2FibGVfdmVydF9lZGdlcycKCShtYWtpbmcgdGhlbSBnbG9iYWwgYXMgYGFoX2RlYnVnX2Rpc2FibGVfaG9yeicgYW5kCglgYWhfZGVidWdfZGlzYWJsZV92ZXJ0JykuCglGaXggdHlwb3MuCgoJKiB0ZXN0cy9ndmlldy5jOiBVcGRhdGVkIHRoZSBkZWJ1Z2dpbmcgZ2x5cGggdmlld2VyIHRvIHNob3cgdGhlCgloaW50cyBnZW5lcmF0ZWQgYnkgdGhlICJhdXRvaGludCIgbW9kdWxlLgoKMjAwMS0xMC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NodW5rLmMgKGZ0Y19jaHVua19jYWNoZV9sb29rdXApOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb25zaWRlcmFibHkgbG93ZXJlZCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFic3RyYWN0IGNodW5rIGNhY2hlLgoKMjAwMS0xMC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNhY2hlLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oLAoJc3JjL2NhY2hlLyouYzogTWFqb3IgcmUtZGVzaWduIG9mIHRoZSBjYWNoZSBzdWItc3lzdGVtIHRvIHByb3ZpZGUKCWJldHRlciBwZXJmb3JtYW5jZSBhcyB3ZWxsIGFzIGFuICJBY3F1aXJlIi8iUmVsZWFzZSIgQVBJLiAgU2VlbXMgdG8KCXdvcmsgd2VsbCBoZXJlLCBidXQgcHJvYmFibHkgbmVlZHMgYSBiaXQgbW9yZSB0ZXN0aW5nLgoKMjAwMS0xMC0yNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9SRUFETUU6IFVwZGF0ZWQgdG8gcmVmbGVjdCBteSB0YWtpbmcgb3ZlciB0aGUgcHJvamVjdAoJYW5kIHRoYXQgaXMgbm93IGJlaW5nIGFjdGl2ZWx5IG1haW50YWluZWQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jIChwYXJzZV9mb25kKTogQXBwbGllZCBwYXRjaGVzIGZyb20gUGF1bCBNaWxsZXIKCTxwYXVsbUBwcm9mb3VuZGVmZmVjdHMuY29tPiB0byBzdXBwb3J0IGxvYWRpbmcgYSBmYWNlIG90aGVyIHRoYW4gdGhlCglmaXJzdCBmcm9tIGEgRk9ORCByZXNvdXJjZS4KCShGVF9OZXdfRmFjZV9Gcm9tX0ZPTkQpOiBVcGRhdGVkLgoKMjAwMS0xMC0yNSAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCSogYnVpbGRzL21hYy9mdGxpYi5wcmo6IFVwZGF0ZSBvZiBDb2RlV2FycmlvciBwcm9qZWN0IGZpbGUgZm9yIE1hYwoJT1MgZm9yIGxhdGVzdCB2ZXJzaW9uICg3KSBvZiBDV1BybyBhbmQgZm9yIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBGVAoJc291cmNlIHRyZWUuCgoyMDAxLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVcGRhdGVkIGNvbW1lbnRzIHRvIGV4cGxhaW4KCXByZWNpc2VseSBob3cgdG8gdXNlIHByb2plY3Qtc3BlY2lmaWMgbWFjcm8gZGVmaW5pdGlvbnMgd2l0aG91dAoJbW9kaWZ5aW5nIHRoaXMgZmlsZSBtYW51YWxseS4KCgkoRlRfQ09ORklHX0ZPUkNFX0lOVDY0KTogRGVmaW5lLgoKCShGVF9ERUJVR19NRU1PUlkpOiBOZXcgbWFjcm8uCgoyMDAxLTEwLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSk6IEFkZGVkIGEgbWlzc2luZyBgeycuCgoyMDAxLTEwLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsIHNyYy9iYXNlL2Z0ZGJnbWVtLmM6CglJbXByb3ZlbWVudHMgdG8gdGhlIG1lbW9yeSBkZWJ1Z2dlciB0byByZXBvcnQgbW9yZSBpbmZvcm1hdGlvbiBpbgoJY2FzZSBvZiBlcnJvcnMuICBBbHNvLCBzb21lIGFsbG9jYXRpb25zIHRoYXQgb2NjdXJlZCB0aHJvdWdoIFJFQUxMT0MKCWNvdWxkbid0IGJlIHByZXZpb3VzbHkgY2F0Y2hlZCBjb3JyZWN0bHkuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMsCglhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpLCBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKGZ0X2JsYWNrX25ldyksCglzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9yYXN0ZXJfbmV3KTogUmVwbGFjZWQKCWxpYmVyYWwgdXNlcyBvZiBtZW1zZXQoKSBieSB0aGUgTUVNX1NldCgpIG1hY3JvLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChVcGRhdGUpOiBSZW1vdmVkIHRvIGJlIGlubGluZWQgaW4gLi4uCgkoU29ydCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvdm1zL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCWJ1aWxkcy9hbWlnYS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglzcmMvYmFzZS9mdGRiZ21lbS5jOiBVcGRhdGVkIHRoZSBtZW1vcnkgZGVidWdnZXIgYW5kCglwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYGZ0c3lzdGVtJyBpbiBvcmRlciB0byBiZSBhYmxlCgl0byBkZWJ1ZyBtZW1vcnkgYWxsb2NhdGlvbnMgb24gVW5peCwgVk1TIGFuZCBBbWlnYSB0b28hCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrKTogUmVtb3ZlZAoJc29tZSBib2d1cyB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCU1vZGlmaWVkIHRoZSBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIgdG8gcmVwb3J0IHRoZSBsb2NhdGlvbiAoc291cmNlCglmaWxlIG5hbWUgKyBsaW5lIG51bWJlcikgd2hlcmUgbGVha2VkIG1lbW9yeSBibG9ja3MgYXJlIGFsbG9jYXRlZCBpbgoJdGhlIHNvdXJjZSBmaWxlLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYzogTmV3IGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlci4gIFlvdSBtdXN0CglkZWZpbmUgdGhlIEZUX0RFQlVHX01FTU9SWSBtYWNybyBpbiAiZnRvcHRpb24uaCIgdG8gZW5hYmxlIGl0LiAgSXQKCXdpbGwgcmVjb3JkIGV2ZXJ5IG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYW5kIHJlcG9ydCBzaW1wbGUgZXJyb3JzCglsaWtlIG1lbW9yeSBsZWFrcyBhbmQgZG91YmxlIGRlbGV0ZXMuCgoJKiBzcmMvYmFzZS9KYW1maWxlOiBJbmNsdWRlIGZ0ZGJnbWVtLgoJKiBzcmMvYmFzZS9ydWxlcy5tazogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0YmFzZS5jOiBJbmNsdWRlIGZ0ZGJnbWVtLmMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBBZGRlZCB0aGUgRlRfREVCVUdfTUVNT1JZCgltYWNybyBkZWZpbml0aW9uLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpOiBNb2RpZmllZCB0aGUKCWJhc2UgY29tcG9uZW50IHRvIHVzZSB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHdoZW4gdGhlIG1hY3JvCglGVF9ERUJVR19NRU1PUlkgaXMgZGVmaW5lZC4KCjIwMDEtMTAtMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0RvbmVfRm9udCk6IEZyZWUgc3ViZm9udHMgYXJyYXkgb25seSBpZgoJd2UgYXJlIHdvcmtpbmcgd2l0aCBhIENJRCBrZXllZCBDRkYgZm9udC4gIE90aGVyd2lzZSwgYSB2YXJpYWJsZQoJdGhhdCB3YXMgbmV2ZXIgYWxsb2NhdGVkIG1lbW9yeSBtaWdodCBmcmVlZC4gIFRoaXMgaXMgYSBjb3JyZWN0aW9uCgl0byB0aGUgcHJldmlvdXMgcGF0Y2ggZm9yIGZyZWVpbmcgc3ViZm9udHMuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHRoZSBzdWJmb250cyBhcnJheSB0bwoJYXZvaWQgYSBtZW1vcnkgbGVhay4KCjIwMDEtMTAtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzCgkoaW4gbXVsdGktb2JqZWN0IGNvbXBpbGF0aW9uIG1vZGUsIG1haW5seSkuCgoyMDAxLTEwLTIwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEFkZCBhIHRlc3QgdG8gbWFrZSBzdXJlCgl0aGF0IGN1c3RvbSBlbmNvZGluZ3MgKGkuZS4sIG5laXRoZXIgU3RhbmRhcmRFbmNvZGluZyBub3IKCUV4cGVydEVuY29kaW5nKSBhcmUgbm90IGxvYWRlZCB0d2ljZSB3aGVuIHRoZSBUeXBlIDEgZm9udCBpcwoJc3ludGhldGljLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X25hbWUsIHBhcnNlX3N1YnJzKTogQWRkZWQgYSB0ZXN0Cglmb3Igd2hlbiBsb2FkaW5nIHN5bnRoZXRpYyBmb250cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZm9udCBuYW1lCglhbmQgc3Vicm90dWluZXMgYXJlIG5vdCBsb2FkZWQgdHdpY2UuICBUaGlzIGlzIHRvIHJlbW92ZSBhIG1lbW9yeQoJbGVhayB0aGF0IG9jY3VyZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgbWVtb3J5IGJsb2NrcyBmb3IgdGhlc2UKCW9iamVjdHMgd2VyZSBub3QgZGVhbGxvY2F0ZWQgd2hlbiB0aGUgb2JqZWN0cyB3ZXJlIHBhcnNlZCB0aGUKCXNlY29uZCB0aW1lLgoKMjAwMS0xMC0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgsCglzcmMvcHNoaW50ZXIvcHNocmVjLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jOiBHZXR0aW5nIHJpZCBvZgoJY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvcHNoaW50ZXIvbW9kdWxlLm1rLCBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IEFkZGluZyBjb250cm9sCglmaWxlcyB0byBidWlsZCB0aGUgUG9zdFNjcmlwdCBoaW50ZXIgd2l0aCB0aGUgIm9sZCIgYnVpbGQgc3lzdGVtLgoKMjAwMS0xMC0xOSAgSmFjb2IgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGRlc2NyaXAubW1zLCBzcmMvcHNoaW50ZXIvZGVzY3JpcC5tbXM6IFVwZGF0ZXMgdG8gdGhlIFZNUyBidWlsZAoJZmlsZXMuCgoyMDAxLTEwLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oLCBzcmMvdG9vbHMvZ2xuYW1lcy5weTogUmV3cm90ZSB0aGUKCSJnbG5hbWVzLnB5IiBzY3JpcHQgdXNlZCB0byBnZW5lcmF0ZSB0aGUgInBzdGFibGVzLmgiIGhlYWRlciBmaWxlLgoJVGhlIG9sZCBvbmUgY29udGFpbmVkIGEgc2VyaW91cyBidWcgdGhhdCBtYWRlIEZyZWVUeXBlIHJldHVybgoJaW5jb3JyZWN0IGdseXBoIG5hbWVzIGZvciBjZXJ0YWluIGdseXBocy4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IENoYW5naW5nIGNvbXB1dGF0aW9uIG9mCglwaXhlbCBzaXplIGZyb20gY2hhcmFjdGVyIHNpemUgdG8gdXNlIHJvdW5kaW5nLiAgVGhpcyBpcyBhbgoJZXhwZXJpbWVudCB0byBzZWUgd2hldGhlciB0aGlzIGdpdmVzIHZhbHVlcyBzaW1pbGFyIHRvIFdpbmRvd3MgZm9yCglzY2FsZWQgYXNjZW50L2Rlc2NlbnQvZXRjLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdjY0YnkzMik6IENoYW5nZWQgdGhlIGltcGxlbWVudGF0aW9uCglzbGlnaHRseSBzaW5jZSB0aGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzLWNvbXBpbGVkIG9uIE1hYyBtYWNoaW5lcwoJdXNpbmcgdGhlIE1QVyBDIGNvbXBpbGVyLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlYWxsb2MpOiBXaGVuIGEgbWVtb3J5IGJsb2NrIHdhcyBncm93bgoJdGhyb3VnaCBGVF9SZWFsbG9jKCksIHRoZSBuZXcgYnl0ZXMgd2VyZSBub3Qgc2V0IHRvIDAsIHdoaWNoIGNyZWF0ZWQKCXNvbWUgc3RyYW5nZSBidWdzIGluIHRoZSBQb3N0U2NyaXB0IGhpbnRlci4KCShkZXN0cm95X2ZhY2UpOiBEb24ndCBkZWFsbG9jYXRlIHVuY29uZGl0aW9uYWxseS4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0NvbXB1dGVfTWF4X0FkdmFuY2UsIENJRF9Mb2FkX0dseXBoKToKCUFkZGluZyBzdXBwb3J0IHRvIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNnbG9iYWwuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL3BzaGludGVyL0phbWZpbGUsCglzcmMvcHNoaW50ZXIvcHNoYWxnby5oLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuaCwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuaCwKCXNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYywgc3JjL3BzaGludGVyL3BzaGludGVyLmMsCglzcmMvcHNoaW50ZXIvcHNobW9kLmMsIHNyYy9wc2hpbnRlci9wc2htb2QuaCwgc3JjL3BzaGludGVyL3BzaHJlYy5jLAoJc3JjL3BzaGludGVyL3BzaHJlYy5oOiBBZGRpbmcgbmV3IFBvc3RTY3JpcHQgaGludGVyIG1vZHVsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCwgc3JjL3BzYXV4L3Bzb2Jqcy5jLAoJc3JjL3BzYXV4L3Bzb2Jqcy5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmMsCglzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5oOiBVcGRhdGVzIHRvIHVzZSB0aGUgbmV3IFBvc3RTY3JpcHQgaGludGVyLgoKCSogdGVzdHMvSmFtZmlsZSwgdGVzdHMvZ3ZpZXcuYzogQWRkaW5nIGEgbmV3IGdseXBoIGhpbnRpbmcKCXZpZXdlci9kZWJ1Z2dlciB0byB0aGUgc291cmNlIHRyZWUuICBOb3RlIHRoYXQgeW91IHdpbGwgX25vdF8gYmUKCWFibGUgdG8gY29tcGlsZSBpdCBzaW5jZSBpdCBkZXBlbmRzIG9uIGFuIHVuYXZhaWxhYmxlIGdyYXBoaWNzCglsaWJyYXJ5IG5hbWVkICJOaXJ2YW5hIiB0byByZW5kZXIgdmVjdG9yIGltYWdlcy4KCjIwMDEtMTAtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMC41IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9pbnRlcm5hbC9mdG9ianMuaCwKCXNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYzogQWRkaW5nIGEgbmV3IGZ1bmN0aW9uIG5hbWVkCgknRlRfR2V0X1Bvc3RzY3JpcHRfTmFtZScgdG8gcmV0cmlldmUgdGhlIFBvc3RTY3JpcHQgbmFtZSBvZiBhIGdpdmVuCglmb250LiAgU2hvdWxkIHdvcmsgd2l0aCBhbGwgZm9ybWF0cyBleGNlcHQgcHVyZSBDRkYvQ0VGIGZvbnRzICh0aGlzCgl3aWxsIGJlIGFkZGVkIHNvb24pLgoKCSogc3JjL2NpZC9jaWRyaXZlciAoY2lkX2dldF9wb3N0c2NyaXB0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoQ0lEX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKFNGTlRfR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X3BzX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogVXBkYXRlZCBmb3IgMi4wLjUgcmVsZWFzZS4KCjIwMDEtMTAtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCBhIGJ1ZyBpbiBgZ2xuYW1lcy5weScgdGhhdCBwcmV2ZW50ZWQgaXQgZnJvbSBnZW5lcmF0aW5nCgljb3JyZWN0IGdseXBoIG5hbWVzIHRhYmxlcy4gIFRoaXMgcmVzdWx0ZWQgaW4gdGhlIHVuYXZhaWxhYmlsaXR5IG9mCgljZXJ0YWluIGdseXBocyBsaWtlIGBDYWN1dGUnLCBgY2FjdXRlJyBhbmQgYGxzbGFzaCcgaW4gVW5pY29kZQoJY2hhcm1hcHMsIGV2ZW4gaWYgdGhlc2Ugd2VyZSBwcmVzZW50IGluIHRoZSBmb250IChjYXVzaW5nIHByb2JsZW1zCglmb3IgUG9saXNoIHVzZXJzKS4KCgkqIHNyYy90b29scy9nbG5hbWVzLnB5IChtYWNfc3RhbmRhcmRfbmFtZXMpOiBGaXhlZC4KCSh0MV9zdGFuZGFyZF9zdHJpbmdzKTogU29tZSBmaXhlcyBhbmQgcmVuYW1lZCB0byAuLi4KCShzaWRfc3RhbmRhcmRfbmFtZXMpOiBUaGlzLgoJKHQxX2V4cGVydF9lbmNvZGluZyk6IEZpeGVkLgoJKHRoZV9hZG9iZV9nbHlwaF9saXN0KTogUmVuYW1lZCB0byAuLi4KCShhZG9iZV9nbHlwaF9uYW1lcyk6IFRoaXMuCgkodGhlX2Fkb2JlX2dseXBocyk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfdmFsdWVzKTogVGhpcy4KCShkdW1wX21hY19pbmRpY2VzLCBkdW1wX2dseXBoX2xpc3QsIGR1bXBfdW5pY29kZV92YWx1ZXMsIG1haW4pOgoJVXBkYXRlZC4KCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogUmVnZW5lcmF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX1VuaWNvZGVfVmFsdWUpOiBGaXggb2Zmc2V0LgoJRml4IHJldHVybiB2YWx1ZS4KCVVzZSBgc2lkX3N0YW5kYXJkX3RhYmxlJyBhbmQgYHBzX25hbWVzX3RvX3VuaWNvZGUnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnIGFuZCBgbmFtZXNfdG9fdW5pY29kZScuCgkoUFNfTWFjaW50b3NoX05hbWUpOiBVc2UgYHBzX2dseXBoX25hbWVzJyBpbnN0ZWFkIG9mCglgc3RhbmRhcmRfZ2x5cGhfbmFtZXMnLgoJKFBTX1N0YW5kYXJkX1N0cmluZ3MpOiBVc2UgYHNpZF9zdGFuZGFyZF9uYW1lcycgaW5zdGVhZCBvZgoJYHQxX3N0YW5kYXJkX2dseXBocycuCgoJKiBkb2MvQlVHUywgZG9jL1RPRE86IE5ldyBkb2N1bWVudHMuCgoyMDAxLTEwLTA3ICBSaWNoYXJkIEJhcmJlciAgPHJpY2hAc29sdXRpb251ay5jb20+CgoJKiBzcmMvY2FjaGUvZnRscnUuYyAoRlRfTHJ1X0xvb2t1cF9Ob2RlKTogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQKCWNvcnJlY3QgTFJVIGJlaGF2aW91ci4KCjIwMDEtMTAtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglzZXRqbXAoKSBhbmQgbG9uZ2ptcCgpIGFyZSBub3cgdXNlZCBmb3Igcm9sbGJhY2sgKGkuZS4gd2hlbiBtZW1vcnkKCXBvb2wgb3ZlcmZsb3cgb2NjdXJzKS4KCglGdW5jdGlvbiBuYW1lcyBhcmUgbm93IGFsbCB1bmlmb3JtbHkgcHJlZml4ZWQgd2l0aCBgZ3JheV8nLgoKCSogc3JjL3Ntb290aC9mdGdyYXlzLmM6IEluY2x1ZGUgPHNldGptcC5oPi4KCShFcnJSYXN0ZXJfTWVtb3J5T3ZlcmZsb3cpOiBOZXcgbWFjcm8uCgkoVEFyZWEpOiBOZXcgdHlwZSB0byBzdG9yZSBhcmVhIHZhbHVlcyBpbiBlYWNoIGNlbGwgKHVzaW5nIGBpbnQnIHdhcwoJdG9vIHNtYWxsIG9uIDE2LWJpdCBzeXN0ZW1zKS4gIDxsaW1pdHMuaD4gaXMgaW5jbHVkZWQgdG8gcHJvcGVybHkKCWdldCB0aGUgbmVlZGVkIGRhdGEgdHlwZS4KCShUQ2VsbCwgVFJhc3Rlcik6IFVzZSBpdC4KCShUUmFzdGVyKTogTmV3IGVsZW1lbnQgYGp1bXBfYnVmZmVyJy4KCShncmF5X2NvbXB1dGVfY2JveCk6IFVzZSBgUkFTX0FSRycgYXMgdGhlIG9ubHkgcGFyYW1ldGVyIGFuZCBnZXQKCWBvdXRsaW5lJyBmcm9tIGl0LgoJKGdyYXlfcmVjb3JkX2NlbGwpOiBVc2UgbG9uZ2ptcCgpLgoJKGdyYXlfc2V0X2NlbGwpOiBVc2UgZ3JheV9yZWNvcmRfY2VsbCgpIGZvciBlcnJvciBoYW5kbGluZy4KCShncmF5X3JlbmRlcl9saW5lLCBncmF5X3JlbmRlcl9jb25pYywgZ3JheV9yZW5kZXJfY3ViaWMpOiBTaW1wbGlmeS4KCShncmF5X2NvbnZlcnRfZ2x5cGhfaW5uZXIpOiBOZXcgZnVuY3Rpb24sIHVzaW5nIHNldGptcCgpLgoJKGdyYXlfY29udmVydF9nbHlwaCk6IFVzZSBpdC4KCjIwMDEtMTAtMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglQcm92aWRlIGEgcHVibGljIEFQSSB0byBtYW5hZ2UgbXVsdGlwbGUgc2l6ZSBvYmplY3RzIGZvciBhIGdpdmVuCglGVF9GYWNlIGluIHRoZSBuZXcgaGVhZGVyIGZpbGUgYGZ0c2l6ZXMuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c2l6ZXMuaDogTmV3IGhlYWRlciBmaWxlLAoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBVc2UgaXQuCglSZW1vdmUgZGVjbGFyYXRpb25zIG9mIEZUX05ld19TaXplIGFuZCBGVF9Eb25lX1NpemUgKG1vdmVkIHRvCglmdHNpemVzLmgpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TSVpFU19IKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfQWN0aXZhdGVfU2l6ZSk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmM6IEluY2x1ZGUgZnRzaXplcy5oLgoJKGZ0Y19tYW5hZ2VyX2luaXRfc2l6ZSwgZnRjX21hbmFnZXJfZmx1c2hfc2l6ZSk6IFVzZQoJRlRfQWN0aXZhdGVfU2l6ZS4KCjIwMDEtMDktMjAgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRkZWQgcG9ydCB0byBBbWlnYSB3aXRoIHRoZSBTQVMvQyBjb21waWxlci4KCjIwMDEtMDktMTUgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfRG9uZV9BRk0pOiBGcmVlIGBhZm0nLgoKMjAwMS0wOS0xMCAgWWFvIFpoYW5nICA8eXpoYW5nQHNoYXJlbWVkaWEuY29tPgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9faW5kZXgyKTogSGFuZGxlIGNvZGUgdmFsdWVzIHdpdGgKCWhpLWJ5dGUgPT0gMCBjb3JyZWN0bHkuCgoyMDAxLTA5LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbGluay1zdGQubWsgKCQoUFJPSkVDVF9MSUJSQVJZKSk6IEZpeCB0eXBvLgoKMjAwMS0wOC0zMCAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBIG5ldyB3YXkgdG8gY29tcHV0ZSB0aGUKCXVuaXRzIHBlciBFTSB3aXRoIGdyZWF0ZXIgYWNjdXJhY3kgKGltcG9ydGFudCBmb3IgZW1iZWRkZWQgVDEgZm9udHMKCWluIFBERiBkb2N1bWVudHMgdGhhdCB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gVHJ1ZVR5cGUKCW9uZXMpLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19hbHBoYSk6IE5vdyBzdXBwb3J0cyAiKyIgaW4gZm9udCBuYW1lczsKCXRoaXMgaXMgdXNlZCBpbiBlbWJlZGRlZCBmb250cy4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoUFNfVGFibGVfQWRkKTogRml4ZWQgYSByZWFsbG9jYXRpb24gYnVnIHRoYXQKCWdlbmVyYXRlZCBhIGRhbmdsaW5nIHBvaW50ZXIgcmVmZXJlbmNlLgoKMjAwMS0wOC0zMCAgQW50aG9ueSBGZWlrICA8YWZlaWNrQGhvdG1haWwuY29tPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX1JlYWRfQWZtKTogTm93IGNvcnJlY3RseSBzZXRzIHRoZSBmbGFnCglGVF9GQUNFX0ZMQUdfS0VSTklORyB3aGVuIGFwcHJvcHJpYXRlIGZvciBUeXBlMSArIEFGTSBmaWxlcy4KCjIwMDEtMDgtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0NNYXApOiBGaXggZnJhbWUgbGVuZ3RoIG9mCglgY21hcF9yZWNfZmllbGRzJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCBbIUZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlNdOgoJVW5kZWZpbmUgRlRfRVJSX0JBU0UgYmVmb3JlIGRlZmluaW5nIGFnYWluLgoKMjAwMS0wOC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmg6IEZpeCBwcm90b3R5cGUgb2YgVFRfTW92ZV9GdW5jLgoKMjAwMS0wOC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Rvcy9kb3MtZGVmLm1rIChOT19PVVRQVVQpOiBEb24ndCB1c2UgYCY+JyBidXQgYD4nLgoKMjAwMS0wOC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogQ2hhbmdlZCB0aGUgZGVmYXVsdCBzZXR0aW5nCglmb3IgRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUyB0byB1bmRlZmluZWQsIHNpbmNlIGl0IGJyZWFrcwoJc291cmNlIGNvbXBhdGliaWxpdHkgaW4gYSBmZXcgY2FzZXMuICBVcGRhdGVkIHRoZSBjb21tZW50IHRvIGV4cGxhaW4KCXRoYXQgdG9vLgoKMjAwMS0wOC0xNyAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBGaXhlZCBzZXJpb3VzIHR5cG8uCgoyMDAxLTA4LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXBkYXRpbmcgdG8gT3BlblR5cGUgMS4zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0NNYXAwLCBUVF9DTWFwMiwgVFRfQ01hcDQsCglUVF9DTWFwNik6IEFkZGluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJKFRUX0NNYXBUYWJsZSk6IFJlbW92aW5nIGZpZWxkIGBsYW5ndWFnZScuCglUeXBlIG9mIGBsZW5ndGgnIGZpZWxkIGNoYW5nZWQgdG8gRlRfVUxvbmcuCglBZGRpbmcgZmllbGRzIGZvciBjbWFwcyBmb3JtYXQgOCwgMTAsIGFuZCAxMi4KCShUVF9DTWFwR3JvdXApOiBOZXcgYXV4aWxpYXJ5IHN0cnVjdHVyZS4KCShUVF9DTWFwOF8xMiwgVFRfQ01hcDEwKTogTmV3IHN0cnVjdHVyZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoVFRfSG9yaUhlYWRlciwgVFRfVmVydEhlYWRlcik6CglSZW1vdmVkIGxhc3QgZWxlbWVudCBvZiBgUmVzZXJ2ZWQnIGFycmF5LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmggKFRUX1BMQVRGT1JNX0NVU1RPTSwgVFRfTVNfSURfVUNTXzQsCglUVF9OQU1FX0lEX0NJRF9GSU5ERk9OVF9OQU1FKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChUVF9DaGFyTWFwX0xvYWQpOiBVcGRhdGVkIGxvYWRpbmcgb2YgYGxhbmd1YWdlJwoJZmllbGQgdG8gdGhlIG5ldyBzdHJ1Y3R1cmVzLgoJRml4ZWQgZnJlZWluZyBvZiBhcnJheXMgaW4gY2FzZSBvZiB1bnN1Y2Nlc3NmdWwgbG9hZHMuCglBZGRlZCBzdXBwb3J0IGZvciBsb2FkaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyIGNtYXBzLgoJKFRUX0NoYXJNYXBfRnJlZSk6IEFkZGVkIHN1cHBvcnQgZm9yIGZyZWVpbmcgZm9ybWF0IDgsIDEwLCBhbmQgMTIKCWNtYXBzLgoJKGNvZGVfdG9faW5kZXg0KTogU21hbGwgaW1wcm92ZW1lbnQuCgkoY29kZV90b19pbmRleDYpOiBEaXR0by4KCShjb2RlX3RvX2luZGV4OF8xMiwgY29kZV90b19pbmRleDEwKTogTmV3IGZ1bmN0aW9ucy4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWV0cmljc19IZWFkZXIpOiBVcGRhdGVkIHRvIG5ldwoJc3RydWN0dXJlLgoJKFRUX0xvYWRfQ01hcCk6IERpdHRvLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2VuY29kaW5ncyk6IEFkZCBNUyBVQ1M0IHRhYmxlIChiZWZvcmUgTVMKCVVuaWNvZGUpLgoKMjAwMS0wOC0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAxLTA4LTA5ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChnZXRfY2ZmX2dseXBoX25hbWUpOiBSZW5hbWVkIHRvCgljZmZfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKCShjZmZfZ2V0X2dseXBoX2luZGV4KTogTWlub3IgZG9jdW1lbnRhdGlvbiBjaGFuZ2UuCgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24gdXNlZCBpbgoJR2V0X0ludGVyZmFjZSBhcyB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgd2hlbiB0aGUgIm5hbWVfaW5kZXgiCglmdW5jdGlvbiBpcyByZXF1ZXN0ZWQuCgoJKGdldF90MV9nbHlwaF9uYW1lKTogUmVuYW1lZCB0byB0MV9nZXRfZ2x5cGhfbmFtZSBmb3IgY29uc2lzdGVuY3kuCgoyMDAxLTA4LTA4ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmM6IFJlbW92ZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzIHRvIGNmZmxvYWQuaC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGRlZCBkZWZpbml0aW9ucyBvZiBjZmZfaXNvYWRvYmVfY2hhcnNldCwKCWNmZl9leHBlcnRfY2hhcnNldCwgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBjZmZfc3RhbmRhcmRfZW5jb2RpbmcsCglhbmQgY2ZmX2V4cGVydF9lbmNvZGluZyBhcnJheXMuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IE5ldyBmdW5jdGlvbiwgcmV0dXJuZWQKCXdoZW4gYGNmZl9nZXRfaW50ZXJmYWNlJyBpcyBjYWxsZWQgd2l0aCBhIHJlcXVlc3QgZm9yIHRoZQoJIm5hbWVfaW5kZXgiIGZ1bmN0aW9uLgoKCShjZmZfZ2V0X2ludGVyZmFjZSk6IE1vZGlmaWVkIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUgZnVuY3Rpb24KCWBjZmZfZ2V0X25hbWVfaW5kZXgnIHdoZW4gdGhlICJuYW1lX2luZGV4IiBmdW5jdGlvbiBpcyByZXF1ZXN0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2V0X05hbWVfSW5kZXgpOiBOZXcgZnVuY3Rpb24sIHVzZWQgdG8KCXJldHVybiBhIGdseXBoIGluZGV4IGZvciBhIGdpdmVuIGdseXBoIG5hbWUgb25seSBpZiB0aGUgZHJpdmVyCglzdXBwb3J0cyBnbHlwaCBuYW1lcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX05hbWVfSW5kZXhfUmVxdWVzdGVyKToKCU5ldyBmdW5jdGlvbiBwb2ludGVyIHR5cGUgZGVmaW50aW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uCglGVF9HZXRfTmFtZV9JbmRleC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfR2V0X05hbWVfSW5kZXgpOiBBZGRlZAoJZG9jdW1lbnRhdGlvbiBhbmQgcHJvdG90eXBlLgoKMjAwMS0wNy0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi8qOiBSZW1vdmVkLiAgVXNlIHRoZSB1bml4IHN0dWZmIGluc3RlYWQuCgoyMDAxLTA3LTI2ICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBidWlsZHMvdm1zL2Z0Y29uZmlnLmggKEZUX0NBTExCQUNLX0RFRik6IFVwZGF0ZWQgdG8gY2hhbmdlIGRhdGVkCgkyMDAxLTA2LTI3LgoKMjAwMS0wNy0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU19UYWJsZSk6IFVzZSBGVF9PZmZzZXQgZm9yCglgY3Vyc29yJyBhbmQgYGNhcGFjaXR5Jy4KCSogc3JjL3BzYXV4L3Bzb2JqYy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogVXNlIEZUX0xvbmcgZm9yIHNlY29uZAoJcGFyYW1ldGVyLgoJKFBTX1RhYmxlX0FkZCk6IFVzZSBGVF9PZmZzZXQgZm9yIGBuZXdfc2l6ZScuCgoJQWRkIHN1cHBvcnQgZm9yIHZlcnNpb24gMC41IG1heHAgdGFibGVzLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWF4UHJvZmlsZSk6IEltcGxlbWVudCBpdC4KCShUVF9Mb2FkX09TMik6IEluaXRpYWxpemUgc29tZSB2YWx1ZXMuCgoyMDAxLTA3LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN5bnRoLmM6IEluY2x1ZGUgZnRjYWxjLmggdW5jb25kaXRpb25hbGx5LgoKMjAwMS0wNy0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMsIHNyYy9wY2YvcGNmcmVhZDoKCVJlbW92ZWQgcGVkYW50aWMgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaXMKCWNvbXBpbGVkIGluLgoKMjAwMS0wNy0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBSZW1vdmUKCXVudXNlZCB2YXJpYWJsZSBgZWRnZXMnLgoJKGFoX2hpbnRlcl9sb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYG9sZF93aWR0aCcgYW5kCglgbmV3X3dpZHRoJy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogVXNlIGBVJyBmb3IgY29uc3RhbnQgKGFnYWluKS4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9EZWNyeXB0KTogRGl0dG8uCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBEaXR0by4KCjIwMDEtMDYtMjggIERhdmlkIFR1cm5lciA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9pbnRlcm5hbC9mdHN0cmVhbS5oOiBNb2RpZmllZCB0aGUgZGVmaW5pdGlvbnMKCW9mIHRoZSBGVF9HRVRfWFhYWCBhbmQgTkVYVF9YWFhYIG1hY3JvcyBmb3IgMTYtYml0IGNvcnJlY3RuZXNzLgoKMjAwMS0wNi0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9jaWQvY2lkbG9hZC5oIChjaWRfZGVjcnlwdCk6IFVzZSBGVF9PZmZzZXQKCWluc3RlYWQgb2YgRlRfSW50IGFzIHR5cGUgZm9yIGBsZW5ndGgnIHBhcmFtZXRlci4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChQU0F1eF9JbnRlcmZhY2UpOiBVcGRhdGVkLgoKMjAwMS0wNi0yNyAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oIChUMV9EZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoKCgkqIFZlcnNpb24gMi4wLjQgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNi0yNyAgRGF2aWQgVHVybmVyIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb25maWcuaCwgc3JjLyovKi5jOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIGFuZAoJdXNlIG9mIHRoZSBGVF9DQUxMQkFDS19ERUYgbWFjcm8gaW4gb3JkZXIgdG8gc3VwcG9ydCAxNi1iaXQKCWNvbXBpbGVycy4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHRoZQoJRlRfQ0FMTEJBQ0tfREVGIG1hY3JvLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFRoZSBrZXJuIHRhYmxlIGxvYWRlciBub3cgZW5zdXJlcwoJdGhhdCB0aGUga2VybmluZyB0YWJsZSBpcyBjb3JyZWN0bHkgc29ydGVkIChzb21lIHByb2JsZW0gZm9udHMgZG9uJ3QKCWhhdmUgYSBjb3JyZWN0IGtlcm4gdGFibGUpLgoKMjAwMS0wNi0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX09GRjNfTEUpOiBGaXggdHlwby4KCjIwMDEtMDYtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChmdF9kaXY2NGJ5MzIpOiBGaXhlZCB0aGUgc291cmNlIHRvIHdvcmsKCWNvcnJlY3RseSBvbiAxNi1iaXQgc3lzdGVtcy4KCjIwMDEtMDYtMjMgIEFudGhvbnkgRm9rICA8Zm9rQGRlYmlhbi5vcmc+CgoJKiBkZWJpYW4vKjogQWRkZWQgRGViaWFuIHBhY2thZ2UgYnVpbGQgZGlyZWN0b3J5IGZvciAyLjAuNC4KCjIwMDEtMDYtMjIgIERhdmlkIFR1cm5lciA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9QQVRFTlRTOiBBZGRlZCBwYXRlbnRzIGRpc2NsYWltZXIuICBUaGlzIG9uZSB3YXMgbWlzc2luZyEKCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy90b2RvOiBVcGRhdGVkIGZvciB0aGUgdXBjb21pbmcgMi4wLjQgcmVsZWFzZS4KCjIwMDEtMDYtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IEFkZCB0d28gbW9yZSBgTCdzIHRvCgljb25zdGFudHMuCglBZGQgbWlzc2luZyBzZW1pY29sb25zLgoKCSogYnVpbGRzL3RvcGxldmVsLm1rOiBEbyBzaW1pbGFyIGNoYW5nZSBhcyBmb3IKCWJ1aWxkcy91bml4L2RldGVjdC5tay4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyB2ZXJzaW9uIHRvIG1ha2UgaXQKCWVhc2llciB0byByZWRlZmluZS4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX0lNQUdFX1RBRyk6IERpdHRvLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9nZXRfZW5jb2RpbmdzKTogQWRkIGNhc3QuCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsIGJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWw6CglVcGRhdGVkIHRoZSBWaXN1YWwgQysrIHByb2plY3QgKGZvciB0aGUgMi4wLjQgcmVsZWFzZSkuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IEFkZGVkIHJ1bGUgZm9yIEFJWCBkZXRlY3Rpb24gKHdoaWNoIHVzZXMKCS91c3Ivc2Jpbi9pbml0IGluc3RlYWQgb2YgL3NiaW4vaW5pdCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmgsIHNyYy8qLyplcnIqLmg6IFVwZGF0ZWQgc29tZSBvZiB0aGUKCWVycm9yIG1hY3JvcyB0byBzaW1wbGlmeSBoYW5kbGluZyBvZiBuZXcgZXJyb3Igc2NoZW1lLgoKMjAwMS0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0VSUk9SX01PRFVMRSk6IE5ldyBtYWNyby4KCjIwMDEtMDYtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglSZW1vdmluZyBfbG90c18gb2YgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiB0aGUgbW9zdCBwZWRhbnRpYyB3YXJuaW5nCglsZXZlbHMgb2YgVmlzdWFsIEMrKyBhbmQgQm9ybGFuZCBDKysgYXJlIHVzZWQuICBUb28gbWFueSBmaWxlcyB0byBiZQoJbGlzdGVkIGhlcmUsIGJ1dCBGVDIgbm93IGNvbXBpbGVzIHdpdGhvdXQgd2FybmluZ3Mgd2l0aCBWQysrIGFuZCB0aGUKCSIvVzQiIHdhcm5pbmcgbGV2ZWwgKGxpbnQtc3R5bGUpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9OZXdfTWVtb3J5X0ZhY2UpOiBVcGRhdGVkCglkb2N1bWVudGF0aW9uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfQk9PTCk6IE5ldyBtYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IEFkZCAjcHJhZ21hIGZvciBWaXN1YWwgQysrCgl0byBzdXBwcmVzcyB3YXJuaW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmggKEZUX0dFVF9TSE9SVF97QkUsTEV9LAoJRlRfR0VUX09GRjNfe0JFLExFfSwgRlRfR0VUX0xPTkdfe0JFLExFfSk6IE5ldyBtYWNyb3MuCgkoTkVYVF8qKTogVXNlIHRoZW0uCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0RFQlVHX0guCgkoRlRfTmV3X01lbW9yeV9GYWNlKTogQWRkIGBjb25zdCcgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWlub3IgY2xlYW51cHMgdG8gcmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNtYW5hZy5oIChGVENfTUFYX0JZVEVTX0RFRkFVTFQpOiBVc2UKCWBMJyBmb3IgY29uc3RhbnQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX1JFTkRFUl9QT09MX1NJWkUpOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdik6IFVzZSBgTCcgZm9yIGNvbnN0YW50LgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0dldF9DQm94KTogUmVtb3ZlIGBlcnJvcicgdmFyaWFibGUuCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmMgKGZ0X3RyaWdfYXJjdGFuX3RhYmxlKTogVXNlIGBMJyBmb3IgY29uc3RhbnRzLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9TaXplKTogRml4IHJldHVybiB2YWx1ZS4KCShGVF9TZXRfQ2hhcl9TaXplLCBGVF9TZXRfUGl4ZWxfU2l6ZXMsIEZUX0dldF9LZXJuaW5nKTogUmVtb3ZlCgl1bnVzZWQgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX2dldF9vcmllbnRhdGlvbik6IFVzZSBgTCcgZm9yIGNvbnN0YW50LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMywKCWFoX2hpbnRlcl9hbGlnbl9lZGdlX3BvaW50cyk6IFJlbW92ZSB1bnVzZWQgYGJlZm9yZScgYW5kIGBhZnRlcicKCXZhcmlhYmxlcy4KCShhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBlZGdlX2xpbWl0JyB2YXJpYWJsZS4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgYG5ld19hZHZhbmNlJywgYHN0YXJ0X2NvbnRvdXInLAoJYW5kIGBtZXRyaWNzJyB2YXJpYWJsZXMuCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9FbmNvZGluZyk6IFJlbW92ZSBkZWFkIGNvZGUgdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogUmVtb3ZlIHVudXNlZCBgYmFzZV9vZmZzZXQnCgl2YXJpYWJsZS4KCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBSZW1vdmUgdW51c2VkCglgb3V0bGluZScgdmFyaWFibGUuCgkoY2ZmX2NvbXB1dGVfYmlhcyk6IFVzZSBgVScgZm9yIGNvbnN0YW50LgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChUMV9EZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJTdHJpbmdzKTogRGl0dG8uCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0tlcm4pOiBSZW1vdmUgdW51c2VkIGB2ZXJzaW9uJwoJdmFyaWFibGUuCgkqIHNyYy9zZm50L3R0c2JpdC5jIChUVF9Mb2FkX1NCaXRfSW1hZ2UpOiBSZW1vdmUgdW51c2VkIGB0b3AnCgl2YXJpYWJsZS4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IFJlbW92ZSB1bnVzZWQKCWBudW1fY29udG91cnMnIGFuZCBgaW5zX29mZnNldCcgdmFyaWFibGVzLgoJKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFJlbW92ZSB1bnVzZWQgYFRvcCcgYW5kIGB4X3NjYWxlJwoJdmFyaWFibGVzLgoJKFRUX0xvYWRfR2x5cGgpOiBSZW1vdmUgdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheXNfcmFzdGVyX3JlbmRlcik6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCjIwMDEtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIHRoZSBuZXcgZXJyb3Igc2NoZW1lIHNvdXJjZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgRlQgdmVyc2lvbnMKCWJ5IGludHJvZHVjaW5nIGFub3RoZXIgbGF5ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggKEZUX0VSUk9SREVGXywgRlRfTk9FUlJPUkRFRl8pOiBOZXcKCW1hY3Jvcy4KCShGVF9OT0VSUk9SREVGKTogUmVtb3ZlZC4KCSogaW5jbHVkZS8qLyplcnIqLmg6IFVzZSBGVF9FUlJPUkRFRl8gYW5kIEZUX05PRVJST1JERUZfLgoKMjAwMS0wNi0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNfVEFHKTogTmV3IG1hY3JvLgoJKEZUX0VuY29kaW5nXyk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmggKEZUX0lNQUdFX1RBRyk6IERlZmluZSBpdAoJY29uZGl0aW9uYWxseS4KCjIwMDEtMDYtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgaW50ZXJwcmV0ZXIgdG8gbGV0IGl0IHVzZSB0aGUgbmV3Cgl0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyBwcm92aWRlZCBpbiAiZnR0cmlnb24uaCIuICBUaGlzIGdldHMgcmlkIG9mCglzb21lIG9sZCA2NC1iaXQgY29tcHV0YXRpb24gcm91dGluZXMsIGFzIHdlbGwgYXMgbWFueSB3YXJuaW5ncyB3aGVuCgljb21waWxpbmcgdGhlIGxpYnJhcnkgd2l0aCB0aGUgImxvbmcgbG9uZyIgNjQtYml0IGludGVnZXIgdHlwZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFVuZGVmaW5lCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogUmVhcnJhbmdlIHVzZSBvZgoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jOiBBZGQgZGVjbGFyYXRpb24gb2YgRlRfSW50NjQgaWYKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTIGlzbid0IGRlZmluZWQuCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jOiBVc2UgRlRfVFJJR09OT01FVFJZX0guCgkoTm9ybSk6IEFkZCBhIHNwZWNpYWwgdmVyc2lvbiBpZiBGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndAoJZGVmaW5lZC4KCShDdXJyZW50X1JhdGlvLCBOb3JtYWxpemUpOiBTaW1wbGlmeSBjb2RlLgoKMjAwMS0wNi0xMSAgTWlrZSBPd2VucyAgPE1Pd2Vuc0BhbXRkYXRhc291dGguY29tPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdiwgRlRfRGl2Rml4LCBGVF9TcXJ0NjQpOiBSZW1vdmUKCWNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNi0wOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluOiBSZW5hbWVkIHRvIC4uLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IFRoaXMgdG8gbWFrZSBzdXJlIHRoYXQgYXV0b2NvbmYgMi41MCBpcwoJbmVlZGVkLgoJUnVuIGBhdXRvdXBkYXRlJyBvbiBpdC4KCUluY3JlYXNlIGB2ZXJzaW9uX2luZm8nIHRvIDc6MDoxLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZF9nbHlwaCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNvcnJ1cHRlZCB0cmFuc2Zvcm1lZCBnbHlwaHMgdGhhdCB3ZXJlIGF1dG8taGludGVkICh0aGUgdHJhbnNmb3JtCgl3YXMgYXBwbGllZCB0d2ljZSkuCgoJRml4ZWQgYSBidWcgdGhhdCByZXR1cm5lZCBhbiBpbnZhbGlkIGxpbmVhciB3aWR0aCBmb3IgY29tcG9zaXRlCglUcnVlVHlwZSBnbHlwaHMuCgoJKiBpbmNsdWRlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTG9hZGVyXyk6IFR3byBuZXcgZWxlbWVudHMgYGxpbmVhcicKCWFuZCBgbGluZWFyX2RlZicuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgsCgljb21wdXRlX2dseXBoX21ldHJpY3MpOiBVc2UgaXQuCgoJKiBpbmNsdWRlL2Z0dHlwZXMuaCAoRlRfRVJST1JfQkFTRSk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSwgRlRfUmVuZGVyX0dseXBoX0ludGVybmFsKTogVXNlIGl0Cgl0byBtYWtlIHNvdXJjZSBjb2RlIHdvcmsgd2l0aCB0aGUgbmV3IGVycm9yIHNjaGVtZSBpbXBsZW1lbnRlZCBieQoJV2VybmVyLgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfUmVuZGVyKTogRGl0dG8uCgoyMDAxLTA2LTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXBkYXRpbmcgdG8gbGlidG9vbCAxLjQuMCBhbmQgYXV0b2NvbmYgMi41MC4KCgkqIGJ1aWxkcy91bml4L2x0Y29uZmlnOiBSZW1vdmVkLgoJKiBidWlsZHMvdW5peC9sdG1haW4uc2gsIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbiwKCWJ1aWxkcy91bml4L2FjbG9jYWwubTQ6IFVwZGF0ZWQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTA2LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQ29tcGxldGUgcmVkZXNpZ24gb2YgZXJyb3IgY29kZXMuICBQbGVhc2UgY2hlY2sgZnRtb2RlcnIuaCBmb3IgbW9yZQoJZGV0YWlscy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dGVycm9ycy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MWVycm9ycy5oOiBSZW1vdmVkLiAgUmVwbGFjZWQgd2l0aCBmaWxlcwoJbG9jYWwgdG8gdGhlIG1vZHVsZS4gIEFsbCBleHRyYSBlcnJvciBjb2RlcyBoYXZlIGJlZW4gbW92ZWQgdG8KCWBmdGVycm9ycy5oJy4KCgkqIHNyYy9zZm50L3R0cG9zdC5oOiBNb3ZlIGVycm9yIGNvZGVzIHRvIGBmdGVycm9ycy5oJy4KCgkqIHNyYy9hdXRvaGludC9haGVycm9ycy5oLCBzcmMvY2FjaGUvZnRjZXJyb3IuaCwgc3JjL2NmZi9jZmZlcnJzLmgsCglzcmMvY2lkL2NpZGVycnMuaCwgc3JjL3BjZi9wY2ZlcnJvci5oLCBzcmMvcHNhdXgvcHNhdXhlcnIuaCwKCXNyYy9wc25hbWVzL3BzbmFtZXJyLmgsIHNyYy9yYXN0ZXIvcmFzdGVycnMuaCwgc3JjL3NmbnQvc2ZlcnJvcnMuaCwKCXNyYy9zbW9vdGgvZnRzbWVycnMuaCwgc3JjL3RydWV0eXBlL3R0ZXJyb3JzLmgsCglzcmMvdHlwZTEvdDFlcnJvcnMuaCwgc3JjL3dpbmZvbnRzL2ZudGVycnMuaDogTmV3IGZpbGVzIGRlZmluaW5nIHRoZQoJZXJyb3IgbmFtZXMgZm9yIHRoZSBtb2R1bGUgaXQgYmVsb25ncyB0by4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogTmV3IGZpbGUsIGRlZmluaW5nIHRoZSBtb2R1bGUgZXJyb3IKCW9mZnNldHMuICBJdHMgc3RydWN0dXJlIGlzIHNpbWlsYXIgdG8gYGZ0ZXJyb3JzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9OT0VSUk9SREVGKTogTmV3IG1hY3JvLgoJKEZUX0VSUk9SREVGKTogUmVkZWZpbmVkIHRvIHVzZSBtb2R1bGUgZXJyb3Igb2Zmc2V0cy4KCUFsbCBpbnRlcm5hbCBlcnJvciBjb2RlcyBhcmUgbm93IHB1YmxpYzsgdW51c2VkIGVycm9yIGNvZGVzIGhhdmUKCWJlZW4gcmVtb3ZlZCwgc29tZSBhcmUgbmV3LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfTU9EVUxFX0VSUk9SU19IKTogTmV3CgltYWNyby4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMpOiBOZXcgbWFjcm8uCgoJQWxsIG90aGVyIHNvdXJjZSBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBlcnJvciBjb2RlczsKCXNvbWUgYWxyZWFkeSBleGlzdGluZyAoaW50ZXJuYWwpIGVycm9yIGNvZGVzIGxvY2FsIHRvIGEgbW9kdWxlIGhhdmUKCWJlZW4gcmVuYW1lZCB0byBnaXZlIHRoZW0gdGhlIHNhbWUgbmFtZSBhcyBpbiB0aGUgYmFzZSBtb2R1bGUuCgoJQWxsIG1ha2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gaW5jbHVkZSB0aGUgbG9jYWwgZXJyb3IgZmlsZXMuCgoyMDAxLTA2LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZHRva2Vucy5oOiBSZXBsYWNlZCB3aXRoLi4uCgkqIHNyYy9jaWQvY2lkdG9rZW4uaDogVGhpcyBmaWxlIGZvciA4KzMgY29uc2lzdGVuY3kuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmM6IFVzZSBtYWNyb3MgZm9yIGhlYWRlciBmaWxlIG5hbWVzLgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvdHR0YWJsZXMuaCAoVFRfSG9yaUhlYWRlcl8sIFRUX1ZlcnRIZWFkZXJfKToKCUZpeCBsZW5ndGggb2YgYFJlc2VydmVkJyBhcnJheS4gIE5vdGUgdGhhdCB0aGlzIGlzbid0IHRoZSByZWFsIGZpeAoJc2luY2UgcmVjZW50IE9wZW5UeXBlIHNwZWNzIGhhdmUgaW50cm9kdWNlZCBhIGBDYXJldE9mZnNldCcgZmllbGQKCWluc3RlYWQgb2YgdGhlIGZpcnN0IHJlc2VydmVkIGJ5dGUuCgoyMDAxLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBJTlNUQUxMOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC4zIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDUtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEwsIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDEtMDUtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNb3ZlZCBzZXZlcmFsIGRvY3VtZW50cyBmcm9tIHRoZSB0b3AtbGV2ZWwgdG8gdGhlICJkb2NzIiBkaXJlY3RvcnkuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogU21hbGwgZml4IHRvIHJldHVybiB2YWx1ZS4KCjIwMDEtMDUtMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyBpbiB0aGUKCWNvbXBvc2l0ZSBsb2FkZXIuICBTcG90dGVkIGJ5IEtlaXRoIFBhY2thcmQuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HbHlwaExvYWRlcl9DaGVja19Qb2ludHMsCglGVF9HbHlwaExvYWRlcl9DaGVja19TdWJnbHlwaHMpOiBEaXR0by4KCjIwMDEtMDUtMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglGaXhlZCB0aGUgaW5jb3JyZWN0IGJsdWUgem9uZSBjb21wdXRhdGlvbnMsIGFuZCBpbXByb3ZlZCB0aGUKCWNvbXBvc2l0ZSBzdXBwb3J0LiAgTm90ZSB0aGF0IHRoZXNlIGNoYW5nZXMgcmVzdWx0IGluIGltcHJvdmVkCglyZW5kZXJpbmcsIHdoaWxlIHNvbWV0aW1lcyBpbnRyb2R1Y2luZyB0aGVpciBvd24gYXJ0ZWZhY3RzLiAgVGhpcyBpcwoJcHJvYmFibHkgdGhlIGxhc3QgYmlnIGNoYW5nZSB0byB0aGUgYXV0b2hpbnRlciBiZWZvcmUgdGhlCglpbnRyb2R1Y3Rpb24gb2YgYSBjb21wbGV0ZSByZXBsYWNlbWVudC4KCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChzb3J0X3ZhbHVlcyk6IEZpeCBsb29wLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBSZW1vdmVkIHNvbWUgb2Jzb2xldGUgY29kZS4KCShhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpOiBNb2RpZnkgY29kZSB0byBzZXQgdGhlIGFoX2VkZ2Vfcm91bmQKCWZsYWcuCgkoYWhfb3V0bGluZV9jb21wdXRlX2JsdWVfZWRnZXMpOiBBZGQgY29kZSB0byBjb21wdXRlIGFjdGl2ZSBibHVlCgl6b25lcy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfZ2x5cGhfbG9hZCk6IENoYW5nZSBsb2FkX2ZsYWdzCgl2YWx1ZS4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXZGaXgpOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgNjQtYml0IGNvZGUgdGhhdAoJY3JlYXRlZCBpbmNvcnJlY3Qgc2NhbGUgZmFjdG9ycyEKCShGVF9Sb3VuZF9GaXgsIEZUX0NlaWxGaXgsIEZUX0Zsb29yRml4KTogTWlub3IgaW1wcm92ZW1lbnRzLgoKMjAwMS0wNS0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJib3guaDogRlRCQk9YX0ggLT4gX19GVEJCT1hfSF9fLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmg6IF9fRlRfVFJJR09OT01FVFJZX0hfXyAtPgoJX19GVFRSSUdPTl9IX18uCglJbmNsdWRlIEZUX0ZSRUVUWVBFX0guCglCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgkqIHNyYy9iYXNlL2Z0dHJpZ29uLmM6IEJlYXV0aWZpZWQ7IGFkZGVkIGNvcHlyaWdodC4KCjIwMDEtMDUtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KSwgc3JjL2NpZC9jaWRsb2FkLmMKCShwYXJzZV9mb250X21hdHJpeCksIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBGaXhlZAoJdGhlIGluY29ycmVjdCBFTSBzaXplIGNvbXB1dGF0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oLCBzcmMvYmFzZS9mdHRyaWdvbi5jOiBOZXcgZmlsZXMsCglhZGRpbmcgdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgdG8gdGhlIGNvcmUgQVBJICh1c2luZyBDb3JkaWMKCWFsZ29yaXRobXMpLgoJKiBzcmMvYmFzZS9mdGJhc2UuYywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6IFVzZSB0aGVtLgoKCSogYnVpbGRzL25ld2xpbmU6IE5ldyBmaWxlLgoJKiBidWlsZHMvdG9wX2xldmVsLm1rLCBidWlsZHMvZGV0ZWN0Lm1rOiBVc2UgaXQuICBUaGlzIGZpeGVzCglwcm9ibGVtcyB3aXRoIE1ha2Ugb24gV2luZG93cyAyMDAwLCBhcyB3ZWxsIGFzIHByb2JsZW1zIHdoZW4gIm1ha2UKCWRpc3RjbGVhbiIgaXMgaW52b2tlZCBvbiBhIG5vbi1Vbml4IHBsYXRmb3JtIHdoZW4gdGhlcmUgaXMgbm8KCSJjb25maWcubWsiIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCgkqIGJ1aWxkcy9mcmVldHlwZS5tazogRml4ZWQgYSBwcm9ibGVtIHdpdGggb2JqZWN0IGRlbGV0aW9ucyB1bmRlcgoJRG9zL1dpbmRvd3MvT1MvMiBzeXN0ZW1zLgoKCUFkZGVkIG5ldyBkaXJlY3RvcnkgdG8gaG9sZCB0b29scyBhbmQgdGVzdCBwcm9ncmFtcy4KCgkqIGRvY3MvZG9jbWFrZXIucHksIGRvY3MvZ2xuYW1lcy5weTogTW92ZWQgdG8uLi4KCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5LCBzcmMvdG9vbHMvZ2xuYW1lcy5weTogVGhpcyBwbGFjZS4KCSogc3JjL3Rvb2xzL2NvcmRpYy5weTogTmV3IGZpbGUgdXNlZCB0byBjb21wdXRlIGFyY3RhbmdlbnQgdGFibGUKCW5lZWRlZCBieSBmdHRyaWdvbi5jLgoJKiBzcmMvdG9vbHMvdGVzdF9iYm94LmMsIHNyYy90b29scy90ZXN0X3RyaWcuYzogTmV3IHRlc3QgZmlsZXMuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEltcHJvdmVkIHRoZSBzY3JpcHQgdG8gYWRkIHRoZSBjdXJyZW50IGRhdGUKCWF0IHRoZSBmb290ZXIgb2YgZWFjaCB3ZWIgcGFnZSAodXNlZnVsIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KCXZlcnNpb25zKS4KCgkqIEphbWZpbGU6IEZpeGVkIGluY29ycmVjdCBIRFJNQUNSTyBhcmd1bWVudC4KCgkqIFRPRE86IFJlbW92ZWQgdGhlIGN1YmljIGFyYyBiYm94IGNvbXB1dGF0aW9uIG5vdGUsIHNpbmNlIGl0IGhhcyBiZWVuCglmaXhlZCByZWNlbnRseS4KCSogc3JjL2Jhc2UvZnRiYm94LmMgKHRlc3RfY3ViaWNfemVybyk6IFJlbmFtZWQgdG8uLi4KCSh0ZXN0X2N1YmljX2V4dHJlbWEpOiBUaGlzIGZ1bmN0aW9uLiAgVXNlIGBVTCcgZm9yIHVuc2lnbmVkIGxvbmcKCWNvbnN0YW50cy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCwgaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDoKCUZvcm1hdHRpbmcuCgoyMDAxLTA1LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlKTogRml4ZWQgYSBzbWFsbCBtZW1vcnkgbGVhawoJd2hpY2ggaGFwcGVuZWQgd2hlbiB0cnlpbmcgdG8gb3BlbiAwLXNpemUgZm9udCBmaWxlcyEKCjIwMDEtMDUtMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IE1vdmUgZGVjbGFyYXRpb24gb2YKCUZUX1NxcnRGaXhlZCgpIG91dCBvZiBgI2lmZGVmIEZUX0xPTkc2NCcuCgoyMDAxLTA1LTA4ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZmRyaXZlci5jIChQQ0ZfTG9hZF9HbHlwaCk6IEZpeGVkIGluY29ycmVjdCBiaXRtYXAgd2lkdGgKCWNvbXB1dGF0aW9uLgoKMjAwMS0wNS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogVXBkYXRlZCB0aGUgRG9jTWFrZXIgc2NyaXB0IGluIG9yZGVyIHRvIGFkZAoJY29tbWFuZCBsaW5lIG9wdGlvbnMgKC0tb3V0cHV0LC0tcHJlZml4LC0tdGl0bGUpLCBmaXggdGhlIGVycm9uZW91cwoJbGluZSBudW1iZXJzIHJlcG9ydGVkIGR1cmluZyBlcnJvcnMgYW5kIHdhcm5pbmdzLCBhbmQgb3RoZXIKCWZvcm1hdHRpbmcgaXNzdWVzLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdiwgRlRfTXVsRml4LCBGVF9EaXZGaXgpOiBWYXJpb3VzIHRpbnkKCWZpeGVzIHJlbGF0ZWQgdG8gcm91bmRpbmcgaW4gNjQtYml0cyByb3V0aW5lcyBhbmQKCXBzZXVkby0ib3B0aW1pemF0aW9ucyIuCgoyMDAxLTA0LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9DdWJpY19DaGVjayk6IEZpeGVkIHRoZSBjb2VmZmljaWVudAoJbm9ybWFsaXphdGlvbiBhbGdvcml0aG0gKGludmFsaWQgZmluYWwgYml0IHBvc2l0aW9uLCBhbmQgaW52YWxpZAoJc2hpZnQgY29tcHV0YXRpb24pLgoKMjAwMS0wNC0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIHRvCglsYXRlc3QgdmVyc2lvbnMgZnJvbSBnbnUub3JnLgoKCSogYnVpbGRzL2NvbXBpbGVyL2djYy1kZXYubWs6IEFkZCBgLVduby1sb25nLWxvbmcnIGZsYWcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBEZWZpbmUgRlRfU3FydEZpeGVkKCkKCXVuY29kaXRpb25hbGx5LgoJKiBzcmMvYmFzZS9mdGJib3guYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9DQUxDX0guCglGaXggY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jOiBGaXggKHBvdGVudGlhbCkgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTA0LTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfU3FydEZpeGVkKTogQ29ycmVjdGVkL29wdGltaXplZCB0aGUgMzItYml0CglmaXhlZC1wb2ludCBzcXVhcmUgcm9vdCBjb21wdXRhdGlvbi4gIEl0IGlzIG5vdyB1c2VkIGV2ZW4gd2l0aAoJNjQtYml0cyBpbnRlZ2VycywgYXMgaXQgaXMgX211Y2hfIGZhc3RlciB0aGFuIGNhbGxpbmcgRlRfU3FydDY0IDotKQoKCSogc3JjL2Jhc2UvZnRiYm94LmM6IFJlbW92ZWQgaW52YWxpZCAiI2luY2x1ZGUgRlRfQkVaSUVSX0giIGxpbmUuCgoyMDAxLTA0LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGJib3guYyAoQkJveF9DdWJpY19DaGVjayk6IFJld3JvdGUgZnVuY3Rpb24gdG8gdXNlCglkaXJlY3QgY29tcHV0YXRpb25zIHdpdGggMTYuMTYgdmFsdWVzIGluc3RlYWQgb2Ygc3ViLWRpdmlzaW9ucy4gIEl0CglpcyBub3cgc2xvd2VyLCBidXQgcHJvdmVzIGEgcG9pbnQgOi0pCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMsIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvYmFzZS9mdGJib3guYzoKCUZpeGVkIHRoZSBiZXppZXIgc3RhY2sgZGVwdGhzLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bEZpeCk6IE1pbm9yIHJvdW5kaW5nIGZpeC4KCgkqIGJ1aWxkcy9iZW9zOiBBZGRlZCBCZU9TLXNwZWNpZmljIGZpbGVzIHRvIHRoZSBvbGQgYnVpbGQgc3lzdGVtCgkobm8gY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSB0byBzdXBwb3J0IEJlT1MgaW4gdGhlIEphbWZpbGUgdGhvdWdoKS4KCjIwMDEtMDQtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGZ0Y29uZmlnLmgsIGZ0b3B0aW9uLmg6IFVwZGF0ZWQgImZ0Y29uZmlnLmgiIHRvIGRldGVjdCA2NC1iaXQgaW50Cgl0eXBlcyBvbiBwbGF0Zm9ybXMgd2hlcmUgQXV0b2NvbmYgaXMgbm90IGF2YWlsYWJsZSkuICBBbHNvIHJlbW92ZWQKCUZUQ0FMQ19VU0VfTE9OR19MT05HIGFuZCByZXBsYWNlZCBpdCB3aXRoCglGVF9DT05GSUdfT1BUSU9OX0ZPUkNFX0lOVDY0LgoKCSogYnVpbGRzL3dpbjMyL2ZyZWV0eXBlLmRzcDogVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IGZpbGUuCglEb2Vzbid0IGNyZWF0ZSBhIERMTCB5ZXQuCgoJKiBjZmZnbG9hZC5jOiBSZW1vdmVkIGEgY29tcGlsYXRpb24gd2FybmluZy4KCjIwMDEtMDQtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiB0MWxvYWQuYyAocGFyc2VfY2hhcnN0cmluZ3MpOiBDaGFuZ2VkIGNvZGUgZm9yIHBsYWNpbmcgLm5vdGRlZgoJZ2x5cGggaW50byBzbG90IDAgc28gdGhhdCB3ZSBubyBsb25nZXIgaGF2ZSBhIG1lbW9yeSBhY2Nlc3MKCXZpb2xhdGlvbi4KCgkqIHQxbG9hZC5oOiBJbiBzdHJ1Y3R1cmUgVDFfTG9hZGVyLCBhZGRlZCBzd2FwX3RhYmxlIChvZiB0eXBlCglQU19UYWJsZSkgdG8gZmFjaWxpdGF0ZSBwbGFjaW5nIHRoZSAubm90ZGVmIGdseXBoIGludG8gc2xvdCAwLgoKMjAwMS0wNC0xMCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfQ2hhcl9JbmRleCk6IEZpeCByZXR1cm4gdmFsdWUuCgoyMDAxLTA0LTA5ICBMYXVyZW5jZSBXaXRoZXJzICA8bHdpdGhlcnNAbHdpdGhlcnMuZGVtb24uY28udWs+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQWRkIHN1cHBvcnQgZm9yIGJhc2guCgoyMDAxLTA0LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvb3MyLyoubWs6IFRoZXNlIGZpbGVzIGhhdmUgYmVlbiBmb3Jnb3R0ZW4gdG8gdXBkYXRlIHRvCgl0aGUgc3RydWN0dXJlIG9mIHNpbWlsYXIgbWFrZWZpbGVzLgoJKiBidWlsZHMvZG9zLyoubWs6IERpdHRvLgoJKiBidWlsZHMvYW5zaS8qLm1rOiBEaXR0by4KCgkqIGJ1aWxkcy93aW4zMi93aW4zMi1kZWYubWsgKEJVSUxEKTogRml4IHR5cG8uCgoJKiBidWlsZHMvY29tcGlsZXIvKi5tayAoQ0xFQU5fTElCUkFSWSk6IERvbid0IHVzZSBOT19PVVRQVVQuCglUaGlzIGlzIGFscmVhZHkgdXNlZCBpbiB0aGUgbGlua18qLm1rIGZpbGVzLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjLyovSmFtZmlsZTogU2xpZ2h0IGNoYW5nZXMJdG8gbWFrZSBmaWxlcyBtb3JlIGNyeXB0aWMuCgoyMDAxLTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBKYW1maWxlLCBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogRm9ybWF0dGVkLiAgU2xpZ2h0IGNoYW5nZXMKCXRvIGdpdmUgZmlsZXMgaWRlbnRpY2FsIHN0cnVjdHVyZS4KCjIwMDEtMDQtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIENIQU5HRVM6IFJlZm9ybWF0dGVkLCBtaW5vciBmaXhlcy4KCSogVE9ETzogVXBkYXRlZC4KCSogUkVBRE1FOiBGb3JtYXR0aW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEZvcm1hdHRpbmcuCgoJKiBKYW1maWxlOiBGaXggdHlwby4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYzogTW92ZSBlcnJvciBjb2RlICNkZWZpbmVzIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oOiBUaGlzIGZpbGUuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZXBsYWNlZAoJYEZUX0Vycl8qJyB3aXRoIGBDRkZfRXJyXyonLgoJKiBzcmMvY2lkL2NpZHBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jOiBEaXR0by4KCSogc3JjL3NmbnQvc2ZvYmNzLmMsIHNyYy9zZm50L3R0bG9hZC5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGgKCWBUVF9FcnJfKicuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dG9ianMuYzogRGl0dG8uCgkqIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jLAoJc3JjL3R5cGUxL3QxcGFyc2UuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoIGBUMV9FcnJfKicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogQWRkCglgQ0ZGX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MWVycm9ycy5oOiBBZGQKCWBUMV9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaDogQWRkCglgVFRfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoKCSogc3JjL2NmZi9jZmZsb2FkLmg6IEFkZCBgY2ZmXypfZW5jb2RpbmcnIGFuZCBgY2ZmXypfY2hhcnNldCcKCXJlZmVyZW5jZXMuCgkqIHNyYy9wc2F1eC9wc29ianMuYzogSW5jbHVkZSBgRlRfSU5URVJOQUxfVFlQRTFfRVJST1JTX0gnLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UsIENGRl9Eb25lX0ZhY2UpOiBVc2UKCUZUX0xPQ0FMX0RFRi4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9Eb25lX0RyaXZlcik6IERpdHRvLgoJKiBzcmMvdHJ1dHlwZS90dG9ianMuYyAoVFRfSW5pdF9GYWNlLCBUVF9Eb25lX0ZhY2UsIFRUX0luaXRfU2l6ZSk6CglEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Eb25lX0RyaXZlcik6IERpdHRvLgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfRG9uZV9GYWNlKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmLmg6IFVzZSBGVF9MT0NBTCBmb3IgYFBDRl9Eb25lX0ZhY2UnLgoKMjAwMS0wNC0wMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3MpOiBGaXggYW4gaW1wcm9wZXIgcG9pbnRlcgoJZGVyZWZlcmVuY2UuICBTdWJtaXR0ZWQgYnkgSGVyYmVydCBEdWVyciA8ZHVlcnJAc3VuLmNvbT4KCjIwMDEtMDMtMjYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBDaGFuZ2VkIGhleGFkZWNpbWFsCgljb25zdGFudHMgdG8gdXNlIHN1ZmZpeCBVIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggSFAtVVgncyBjODkKCWNvbXBpbGVyLiAgU3VibWl0dGVkIGJ5IEcuVy4gTHVjYXMgPGdsdWNhc0Bzb25hbHlzdHMuY29tPgoKMjAwMS0wMy0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIEphbXJ1bGVzLCBKYW1maWxlLCBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogQWRkaW5nIGphbWZpbGVzIHRvCgl0aGUgc291cmNlIHRyZWUuICBTZWUgd3d3LmZyZWV0eXBlLm9yZy9qYW0vaW5kZXguaHRtbCBmb3IgZGV0YWlscy4KCgoJKiBWZXJzaW9uIDIuMC4yIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDMtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IEZpeCAuUEhPTlkgdGFyZ2V0IGZvciBJbnRlbCBjb21waWxlci4KCjIwMDEtMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmg6CglSZW5hbWVkICJmdG5hbWVzLmgiIHRvICJmdHNuYW1lcy5oIiwgYW5kIEZUX05BTUVTX0ggdG8KCUZUX1NGTlRfTkFNRVNfSC4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGdlbmVyYXRpb24gb2YgSU5ERVggbGluayBpbiB0YWJsZSBvZgoJY29udGVudHMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBVcGRhdGVkIGRvY3VtZW50YXRpb24gdG8gaW5kaWNhdGUgdGhhdCB0aGUKCWNvbXBpbGF0aW9uIHByb2Nlc3MgaGFzIGNoYW5nZWQgc2xpZ2h0bHkgKG5vIG1vcmUgYHNyYycgcmVxdWlyZWQgaW4KCXRoZSBpbmNsdWRlIHBhdGgpLgoKCSogYnVpbGRzLyovKi1kZWYubWs6IENoYW5nZWQgdGhlIG9iamVjdHMgZGlyZWN0b3J5IGZyb20gIm9iaiIgdG8KCSJvYmpzIi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmg6IFJlbW92ZWQgb2Jzb2xldGUgbWFjcm9zIGxpa2UKCUZUX1NPVVJDRV9GSUxFLCBldGMuIGFuZCBhZGRlZCBjYWNoZS1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB0aGF0Cgl3ZXJlIHByZXZpb3VzbHkgZGVmaW5lZCBpbiA8ZnJlZXR5cGUvZnRjYWNoZS5oPi4gIEFkZGVkIGNvbW1lbnRzIHRvCgliZSBpbmNsdWRlZCBpbiBhIG5ldyBBUEkgUmVmZXJlbmNlIHNlY3Rpb24uCgoJKiBzcmMvKi8qOiBSZW1vdmVkIHRoZSB1c2Ugb2YgRlRfU09VUkNFX0ZJTEUsIGV0Yy4gIE5vdywgZWFjaAoJY29tcG9uZW50IG5lZWRzIHRvIGFkZCBpdHMgb3duIGRpcmVjdG9yeSB0byB0aGUgaW5jbHVkZSBwYXRoIGF0Cgljb21waWxlIHRpbWUuICBNb2RpZmllZCBhbGwgInJ1bGVzLm1rIiBhbmQgImRlc2NyaXAubW1zIgoJYWNjb3JkaW5nbHkuCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IEFkZCAkZnRfdmVyc2lvbi4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCjIwMDEtMDMtMTkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQXNzaWduIHRoZSB1bml0cyBwZXIgZW0KCXZhbHVlIGFuIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBmaXJzdCBieSBzaGlmdGluZyByaWdodCAxNiBiaXRzLAoJdGhlbiBieSBjYXN0aW5nIHRoZSByZXN1bHRzIHRvIEZUX1VTaG9ydC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfYmJveCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoyMDAxLTAzLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMsIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCXNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBBZGRlZCBhIGZldyBjYXN0cyB0byByZW1vdmUKCWNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzLgoKCSogaW5jbHVkZS9jb25maWcvZnQyYnVpbGQuaCwgaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogVGhlIGZpbGUKCSJmdDJidWlsZC5oIiB3YXMgcmVuYW1lZCB0byAiZnRoZWFkZXIuaCIgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlCgl0b3AtbGV2ZWwgPGZ0MmJ1aWxkLmg+LgoKCSogaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogQWRkZWQgbmV3IHNlY3Rpb24gZGVzY3JpYmluZyB0aGUgI2luY2x1ZGUKCW1hY3Jvcy4KCjIwMDEtMDMtMTcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBPYnRhaW4gcm91bmRlZCBGVF9GaXhlZAoJdmFsdWVzIGZvciB0aGUgYm91bmRpbmcgYm94IG51bWJlcnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFdoZW4gcHJvY2Vzc2luZyBhIENGRi9DRUYgZm9udCwKCXNldCBgcm9vdC0+YXNjZW5kZXInIChgcm9vdC0+ZGVzY2VuZGVyJykgdG8gdGhlIGludGVnZXIgcGFydCBvZgoJYHJvb3QtPmJib3gueU1heCcgKGByb290LT5iYm94LnlNaW4nLCByZXNwZWN0aXZlbHkpLgoKMjAwMS0wMy0xNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogIE5ldyBmdW5jdGlvbi4gIFVzZWQgaW4KCWNmZl9nZXRfaW50ZXJmYWNlIHRvIGZhY2lsaXRhdGUgZ2V0dGluZyBhIGdseXBoIG5hbWUgZm9yIGdseXBoIGluZGV4Cgl2aWEgRlRfR2V0X0dseXBoX05hbWUoKS4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBBZGRlZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSB2aWEgdGhlCgkiZ2x5cGhfbmFtZSIgbW9kdWxlIGludGVyZmFjZS4gIFVzZXMgdGhlIG5ldyBmdW5jdGlvbgoJZ2V0X2NmZl9nbHlwaF9uYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBMb2dpY2FsIG9yIHRoZSBmYWNlIGZsYWdzIHdpdGgKCUZUX0ZBQ0VfRkxBR19HTFlQSF9OQU1FUyBvbmx5IGlmIEZUX0NPTkZJR19PUFRJT05fTk9fR0xZUEhfTkFNRVMgaXMKCW5vdCBkZWZpbmVkLiAgVGhpcyBpcyB0byBhZGQgc3VwcG9ydCBmb3IgZ2V0dGluZyBhIGdseXBoIG5hbWUgZnJvbSBhCglnbHlwaCBpbmRleCB2aWEgRlRfR2V0X0dseXBoX05hbWUoKS4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEFkZGVkIHN1cHBvcnQgZm9yCglkZXByZWNhdGVkIG9wZXJhdG9yICJkb3RzZWN0aW9uIi4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+CgoyMDAxLTAzLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEZpeCBlcnJvcgoJbWVzc2FnZXMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzguMSBvciBuZXdlci4KCjIwMDEtMDMtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6ICBDaGFuZ2VkIHRoZSBsZW5JViBtZW1iZXIgb2YKCXRoZSBUMV9EZWNvZGVyXyBzdHJ1Y3QgdG8gYmUgYW4gRlRfSW50IGluc3RlYWQgb2YgYW4gRlRfVUludC4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogIEFkanVzdAoJZm9yIGxlbklWIHNlZWQgYnl0ZXMgYXQgdGhlIHN0YXJ0IG9mIGEgZGVjcnlwdGVkIHN1YnJvdXRpbmUuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBEZWNyeXB0IHN1YnJvdXRpbmVzIG9ubHkKCWlmIGxlbklWID49IDAuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogRGVjcnlwdCBjaGFyc3RyaW5ncyBvbmx5CglpZiBsZW5JViA+PSAwLgoKMjAwMS0wMy0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogVE9ETzogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBQdXQgUkVBRF9GaWVsZHMoKSBhbHdheXMgaW4gYSBjb25kaXRpb25hbCB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTAzLTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogVE9ETzogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEFkZGVkIHByb3RvdHlwZXMgYW5kIG5vdGVzIGZvcgoJdGhyZWUgbmV3IGZ1bmN0aW9uczogRlRfUm91bmRGaXgsIEZUX0NlaWxGaXgsIGFuZCBGVF9GbG9vckZpeC4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IEFkZGVkCglpbXBsZW1lbnRhdGlvbiBjb2RlLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9Jbml0X0ZhY2UpOiBVc2UgY2FsY3VsYXRlZCB1bml0c19wZXJfRU0sCglhbmQgaWYgdGhhdCBpcyBub3QgYXZhaWxhYmxlLCBkZWZhdWx0IHRvIDEwMDAgdW5pdHMgcGVyIEVNLiAgQ2hhbmdlZAoJYXNzaWdubWVudCBjb2RlIGZvciBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIHZhbHVlcy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgdW5pdHNfcGVyX0VNCglwcm9jZXNzaW5nLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkIG51bWJlciBoYW5kbGluZy4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQ2hhbmdlZCB0aGUgYXNzaWdubWVudCBjb2RlCglmb3IgYXNjZW5kZXIsIGRlc2NlbmRlciwgYW5kIG1heF9hZHZhbmNlX3dpZHRoLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkCgludW1iZXIgaGFuZGxpbmcuCgoyMDAxLTAzLTEwICBIZW5yaWsgR3J1YmJzdHL2bSAgPGdydWJiYUByb3hlbi5jb20+CgoJKiBzcmMvKi8qLmM6IEFkZGVkIG1hbnkgY2FzdHMgdG8gbWFrZSBjb2RlIG1vcmUgNjRiaXQtc2FmZS4KCjIwMDEtMDMtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFdlIG5lZWQgR05VIG1ha2UgMy43OCBvciBuZXdlci4KCjIwMDEtMDMtMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IE1pbm9yIGNvcnJlY3Rpb246IFdlIG11c3Qgd2FpdAoJdW50aWwgcGFyc2VfZm9udF9iYm94IGlzIGNoYW5nZWQgYmVmb3JlIHdlIHVzZSBsb2dpY2FsIHNoaWZ0IHJpZ2h0cwoJaW4gdGhlIGFzc2lnbm1lbnRzIG9mIGByb290LT5hc2NlbmRlcicsIGByb290LT5kZXNjZW5kZXInLCBhbmQKCWByb290LT5tYXhfYWR2YW5jZV93aWR0aCcuCgoJKFQxX0RvbmVfRmFjZSk6IEZyZWUgYGNoYXJfbmFtZScgdGFibGUgdG8gYXZvaWQgYSBtZW1vcnkgbGVhay4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKMjAwMS0wMy0wNSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMiBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAzLTA0ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQ29ycmVjdCBhIHN0dXBpZCB0eXBvIHdoaWNoIHByZXZlbnRlZAoJY29ycmVjdCBjb21waWxhdGlvbiAoVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VUSElPUElBIGFwcGVhcmVkIHR3aWNlKS4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlcik6IEFkZCBlbGVtZW50cwoJYGRpc2FibGVfaG9yel9lZGdlcycsIGBkaXNhYmxlX3ZlcnRfZWRnZXMnLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UKCXRoZW0gKGFuZCByZW1vdmUgc3RhdGljIHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIG5hbWVzKS4KCSogc3JjL3BjZi9wY2Z1dGlsLmMgKEJpdE9yZGVySW52ZXJ0KTogQWRkIGBjb25zdCcuCgkqIGRvY3MvZ2xuYW1lcy5weTogVXBkYXRlZCB0byBsYXRlc3QgcHN0YWJsZXMuaCBjaGFuZ2VzLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGQgdGVzdCBmb3IgSHVyZC4KCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBSZW1vdmVkLgoKMjAwMS0wMy0wNCAgU2FuZGVyIHZhbiBkZXIgV2FsICA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IEFkZCBtb3JlIGBjb25zdCcuCgkqIHNyYy9wY2YvcGNmdXRpbC5jOiBEaXR0by4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4aW5nIHR5cG8KCShGVF9HbHlwaF9Eb25lIC0+IEZUX0RvbmVfR2x5cGgpLgoKMjAwMS0wMy0wMSAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE9mZmljZSBYcC4KCjIwMDEtMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvaHVyZC9kZXRlY3QubWs6IE5ldyBmaWxlLiAgQWRkZWQgc3VwcG9ydCB0byBkZXRlY3QgdGhlIEdOVQoJSHVyZCBvcGVyYXRpbmcgc3lzdGVtIGFzIFVuaXgtbGlrZS4gIEZpeCBzdWJtaXR0ZWQgYnkgQW50aG9ueSBGb2sKCTxmb2thQGRlYmlhbi5vcmc+LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFNldCBnbHlwaCBjb250cm9sIGRhdGEgdG8gdGhlCgl0aGUgVHlwZSAxIGdseXBoIGNoYXJzdHJpbmcgKHVzZWQgYnkgY29udmVyc2lvbiBwcm9ncmFtcykuCglTdWJtaXR0ZWQgYnkgSGEgU2hhbyA8aGFzaGFvQGNoaW5lc2UuY29tPi4KCjIwMDEtMDItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdyYXlzLmMgKGdyYXlzX3N3ZWVwKTogVGhlIGZ1bmN0aW9uIGRpZG4ndCBleGl0CglpbW1lZGlhdGVseSBpZiBgbnVtX2NlbGxzJyB3YXMgMCBhcyBpdCBzaG91bGQuICBUaGFua3MgdG8gQm9yaXMgZm9yCglmaW5kaW5nIHRoaXMgb3V0LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBGaXhlZCBtZW1vcnkgbGVhayB3aGVuCgliaXRtYXAgcmVuZGVyaW5nIGZhaWxzICh0aGFua3MgdG8gR3JhaGFtIEFzaGVyKS4KCjIwMDEtMDItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHkgKERvY1NlY3Rpb246OmFkZF9lbGVtZW50KTogVXNlCglgc2VsZi5wcmludF9lcnJvcigpJy4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy57Z3Vlc3Msc3VifTogVXBkYXRlZCAoZnJvbSBmdHAuZ251Lm9yZykuCgoyMDAxLTAyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weSwgaW5jbHVkZS9mcmVldHlwZS8qLmg6IFVwZGF0ZWQgdGhlIERvY01ha2VyCglzY3JpcHQgdG8gc3VwcG9ydCBjaGFwdGVycyBhbmQgc2VjdGlvbiBibG9jayBvcmRlcmluZy4gIFVwZGF0ZWQgdGhlCglwdWJsaWMgaGVhZGVyIGZpbGVzIGFjY29yZGluZ2x5LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Db3B5KTogQWR2YW5jZSB3aWR0aCBhbmQgZ2x5cGggZm9ybWF0Cgl3ZXJlIG5vdCBjb3JyZWN0bHkgY29waWVkLgoKMjAwMS0wMi0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogUmVtb3ZlZCBhbgoJdW5uZWNlc3NhcnkgZnByaW50Ziggc3RkZXJyLCAuLi4gKS4KCjIwMDEtMDItMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IEFkZGVkIGNvZGUgdG8gZ2V0IHRoZQoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIHZhbHVlIGFzc2lnbmVkIGluIHBhcnNlX2ZvbnRfbWF0cml4LCBpZgoJYXZhaWxhYmxlLiAgRGVmYXVsdCB0byAxMDAwIGlmIG5vdCBhdmFpbGFibGUuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGxvZ2ljIHRvIGdldAoJdGhlIHVuaXRzX3Blcl9FTSBmcm9tIHRoZSBGb250TWF0cml4LgoKCShjZmZfcGFyc2VfZml4ZWRfdGhvdXNhbmQpOiBOZXcgZnVuY3Rpb24uIEdldHMgYSByZWFsIG51bWJlciBmcm9tCgl0aGUgQ0ZGIGZvbnQsIGJ1dCBtdWx0aXBsaWVzIGJ5IDEwMDAgKHRoaXMgaXMgdG8gYXZvaWQgcm91bmRpbmcKCWVycm9ycyB3aGVuIHBsYWNpbmcgdGhpcyByZWFsIG51bWJlciBpbnRvIGEgMTYuMTYgZml4ZWQgbnVtYmVyKS4KCgkoY2ZmX3BhcnNlX3JlYWwpOiBBZGRlZCBjb2RlIHNvIHRoYXQgdGhlIGludGVnZXIgcGFydCBpcyBtb3ZlZAoJaW50byB0aGUgaGlnaCBzaXh0ZWVuIGJpdHMgb2YgdGhlIDE2LjE2IGZpeGVkIG51bWJlci4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogQWRkZWQgbG9naWMgdG8gZ2V0IHRoZSB1bml0cwoJcGVyIEVNIGZyb20gdGhlIENGRiBkaWN0aW9uYXJ5LCBpZiBhdmFpbGFibGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IEluIHN0cnVjdCBDRkZfRm9udF9EaWN0XywKCWFkZGVkIGEgdW5pdHNfcGVyX2VtIG1lbWJlciB0byBmYWNpbGl0YXRlIHBhc3Npbmcgb2YgdW5pdHNfcGVyX2VtCglmcm9tIGZ1bmN0aW9uIGNmZl9wYXJzZV9mb250X21hdHJpeC4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBNYWtlIGAtJyBhIGxlZ2FsIGFscGhhbnVtZXJpYwoJY2hhcmFjdGVyLiAgVGhpcyBpcyBzbyB0aGF0IGZvbnQgbmFtZXMgd2l0aCBgLScgYXJlIGZ1bGx5IHBhcnNlZCwKCWV0Yy4uLgoKMjAwMS0wMi0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChzaGlmdF9lbGVtZW50cyk6IFJlbW92ZSBpZiBjbGF1c2UgKHdoaWNoIGlzCglvYnNvbGV0ZSBub3cpLgoKCShyZWFsbG9jYXRlX3QxX3RhYmxlLCBQU19UYWJsZV9Eb25lKTogUmVwbGFjZSBSRUFMTE9DKCkgd2l0aCBBTExPQygpCgkrIE1FTV9Db3B5KCkgdG8gYXZvaWQgYSBtZW1vcnkgYnVnLgoKMjAwMS0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHRoZSBpbmRleCBzb3J0aW5nIHJvdXRpbmUgdG8gcGxhY2UKCWNhcGl0YWwgbGV0dGVycyBiZWZvcmUgc21hbGwgb25lcy4gIEFkZGVkIHRoZSAiPG9yZGVyPiIgbWFya2VyIHRvCglzZWN0aW9uIGJsb2NrcyBpbiBvcmRlciB0byBnaXZlIHRoZSBvcmRlciBvZiBibG9ja3MuCgoyMDAxLTAxLTMwICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogTGF0ZXN0IHVwZGF0ZXMgdG8gTWljcm9zb2Z0IGxhbmd1YWdlCglJRCBjb2Rlcy4KCjIwMDEtMDEtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGhldXJpc3RpYyB0byBnZXQKCXVuaXRzX3Blcl9FTSBmcm9tIHRoZSBmb250IG1hdHJpeC4KCgkocGFyc2VfZGljdCk6IERlbGV0ZWQgdGVzdCB0byBzZWUgd2hldGhlciB0aGUgRm9udEluZm8ga2V5d29yZCBoYXMKCWJlZW4gc2Vlbi4gIERlbGV0aW9uIG9mIHRoaXMgdGVzdCBhbGxvd3MgZm9udHMgd2l0aG91dCBGb250SW5mbwoJZGljdGlvbmFyaWVzIHRvIGJlIHBhcnNlZCBieSB0aGUgVHlwZSAxIGRyaXZlci4KCgkoVDFfT3Blbl9GYWNlKTogRGVsZXRlZCBlbXB0eSBzdWJyb3V0aW5lcyBhcnJheSB0ZXN0IHRvIG1ha2Ugc3VyZQoJZm9udHMgd2l0aCBubyBzdWJyb3V0aW5lcyBzdGlsbCBhcmUgcGFyc2VkLgoKMjAwMS0wMS0xNyAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8ZnJhbmNlc2NvLnphcHBhLm5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2ZyZWFkLmMgKHBjZl9nZXRfcHJvcGVydGllcywgcGNmX2dldF9tZXRyaWNzLAoJcGNmX2dldF9iaXRtYXBzKTogRml4IGNvbXBpbGVyIGVycm9ycy4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYzogUmVtb3ZlZCBzb21lIGNvbXBpbGF0aW9uIHdhcm5pbmdzIHJlbGF0ZWQKCXRvIGNvbXBhcmlzb24gb2Ygc2lnbmVkIHZzLiB1bnNpZ25lZCBpbnRlZ2Vycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBDaGFuZ2VkIHRoZSBkZWJ1ZyB0cmFjZQoJY29uc3RhbnRzIGZyb20gdHJhY2VfdDJ4eHh4IHRvIHRyYWNlX2NmZnh4eHggdG8gYmUgYWJsZSB0byBjb21waWxlCgl0aGUgQ0ZGIGRyaXZlciBpbiBkZWJ1ZyBtb2RlLgoKMjAwMS0wMS0xMSAgTWF0dGhldyBDcm9zYnkgIDxtY3Jvc2J5QG1hcnRob24ub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBGaXggcHJvYmxlbXMgd2l0aCBzZXBhcmF0ZQoJLS1wcmVmaXggYW5kIC0tZXhlYy1wcmVmaXguCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgY3Jvc3MtcmVmZXJlbmNlcyBnZW5lcmF0aW9uIGFzIHdlbGwgYXMKCW1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIHBhdGhuYW1lIHdpbGRjYXJkIG1hdGNoaW5nLgoKMjAwMS0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogTWlub3IgaW1wcm92ZW1lbnRzIHRvIHJlZHVjZSB1bndhbnRlZCBzcGFjZXMKCWFuZCBlbXB0eSBsaW5lcyBpbiBvdXRwdXQuCgoyMDAxLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgc2NyaXB0IHRvIGdlbmVyYXRlIHRhYmxlIG9mIGNvbnRlbnRzCglhbmQgaW5kZXggcGFnZXMuICBJdCBhbHNvIHN1cHBvcnRzIHdpbGRjYXJkcyBvbiBub24gVW5peCBzeXN0ZW1zLgoKCSogaW5jbHVkZS9mcmVldHlwZS8qLmgsIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvKi5oOiBVcGRhdGVkIGNvbW1lbnRzCgl0byBpbmNsdWRlIHNlY3Rpb24gZGVmaW5pdGlvbnMvZGVsaW1pdGF0aW9ucyBmb3IgdGhlIEFQSSBSZWZlcmVuY2UKCWdlbmVyYXRvci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogTW92ZWQgZGVjbGFyYXRpb24gb2YKCWBGVF9HZW5lcmljX0ZpbmFsaXplcicgYW5kIHRoZSBgRlRfR2VuZXJpYycgc3RydWN0dXJlIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oOiBoZXJlLgoKMjAwMS0wMS0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGVkIFVuaWNvZGUgY29kZSByYW5nZSBjb21tZW50cy4KCjIwMDEtMDEtMDMgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3J1bGVzLm1rOiBVc2UgY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBDaGFuZ2VkIHRvIHVzZSBjZmZ0eXBlcy5oCgkoY2ZmZXJycy5oKSBpbnN0ZWFkIG9mIHQydHlwZXMuaCAodDJlcnJvcnMuaCwgcmVzcGVjdGl2ZWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogTWVyZ2VkIGluIGNoYW5nZXMgZnJvbQoJdDJ0eXBlcy5oIGFuZCBtYWRlIHRoaXMgdGhlIGNhbm9uaWNhbCBgdHlwZXMnIGhlYWRlciBmb3IgdGhlIENGRgoJZHJpdmVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MnR5cGVzLmg6IFRoaXMgZmlsZSB3YXMgbWVyZ2VkIHdpdGgKCWNmZnR5cGVzLmggYW5kIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QyZXJyb3JzLmg6CVJlbmFtZWQgdG8gY2ZmZXJycy5oLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvY2ZmbG9hZC5jLAoJc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IENoYW5nZWQgdG8gdXNlCgljZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uICBBbGwgb2NjdXJlbmNlcyBvZiB0Ml8KCShUMl8pIHdlcmUgcmVwbGFjZWQgd2l0aCBjZmZfIChDRkZfLCByZXNwZWN0aXZlbHkpLgoKCSogc3JjL2NmZi90Mmdsb2FkLmg6IFJlbmFtZWQgY2ZmZ2xvYWQuaC4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jOiBSZW5hbWVkIGNmZmdsb2FkLmMKCjIwMDAtMDEtMDIgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXM6IFN1cHBvcnQgZmlsZXMgZm9yIFZNUyBhcmNoaXRlY3R1cmUgYWRkZWQuCgkqIGRlc2NyaXAubW1zLCBzcmMvKi9kZXNjcmlwLm1tczogVk1TIG1ha2VmaWxlcyBhZGRlZC4KCSogUkVBRE1FLlZNUzogTmV3IGZpbGUuCgoyMDAwLTAxLTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+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=