MjAxMC0wNS0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSB0byBHQ0MgMy4zIHZlcnNpb24uCgoyMDAzLTA0LTIyICBSZWxlYXNlIE1hbmFnZXIKCgkqIEdDQyAzLjIuMyBSZWxlYXNlZC4KCjIwMDMtMDItMDUgIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDMuMi4yIFJlbGVhc2VkLgoKMjAwMi0xMS0xOSAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgMy4yLjEgUmVsZWFzZWQuCgoyMDAyLTExLTE5ICBSZWxlYXNlIE1hbmFnZXIKCgkqIEdDQyAzLjIuMSBSZWxlYXNlZC4KCjIwMDItMTEtMTggIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDMuMi4xIFJlbGVhc2VkLgoKMjAwMi0xMS0wMyAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgREogRGVsb3JpZSA8ZGpAcmVkaGF0LmNvbT4KCgkqIGdldG9wdC5oOiAgQXZvaWQgcHJvdG90eXBpbmcgZ2V0b3B0IHdpdGggbm8gYXJndW1lbnRzIGluIEMrKy4KCjIwMDItMDgtMTQgIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDMuMiBSZWxlYXNlZC4KCjIwMDItMDctMjUgIFJlbGVhc2UgTWFuYWdlcgoKCSogR0NDIDMuMS4xIFJlbGVhc2VkLgoKMjAwMi0wNS0xNCAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgMy4xIFJlbGVhc2VkLgoKMjAwMi0wNS0xNCAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgMy4xIFJlbGVhc2VkLgoKMjAwMi0wNC0xNiAgRGF2aWQgUy4gTWlsbGVyICA8ZGF2ZW1AcmVkaGF0LmNvbT4KCgkqIHhyZWdleDIuaCAoX19yZXN0cmljdF9hcnIpOiBEZWZpbmUgdG8gX19yZXN0cmljdCBvbiBHQ0MKCTMuMSBhbmQgbGF0ZXIuICBEbyBub3QgcmVkZWZpbmUuCgoyMDAyLTA0LTAxICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBkeW4tc3RyaW5nLmg6ICBBbHNvIGFsbG93IElOX0dMSUJDUFBfVjMgdG8gcmVkZWZpbmUgbmFtZXMuCgoyMDAyLTAyLTIyICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCUFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgZnVuY3Rpb25zIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKCXNwbGF5IHRyZWUgcm9vdHMgYW5kIG5vZGVzLgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4sIHNwbGF5X3RyZWVfZGVhbGxvY2F0ZV9mbik6CglOZXcgdHlwZXMuCgkoc3BsYXlfdHJlZSk6IE5ldyBmaWVsZHM6IGBhbGxvY2F0ZScsIGBkZWFsbG9jYXRlJywgYW5kCglgYWxsb2NhdGVfZGF0YScuCgkoc3BsYXlfdHJlZV9uZXdfd2l0aF9hbGxvY2F0b3IpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDAyLTAyLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX3YzKTogQWRkICJvcHRpb25zIiBwYXJtLgoJKGNwbHVzX2RlbWFuZ2xlX3YzX3R5cGUpOiBSZW1vdmUgcHJvdG90eXBlLgoJKERNR0xfVkVSQk9TRSk6IE5ldyBtYWNyby4KCShETUdMX1RZUEVTKTogTmV3IG1hY3JvLgoKMjAwMi0wMi0wMiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSk6IE5ldyBwcm90b3R5cGUuCgoyMDAyLTAxLTI4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoQ19hbGxvY2EpOiBBZGQgQVRUUklCVVRFX01BTExPQy4KCjIwMDEtMTItMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZW1hbmdsZS5oIChub19kZW1hbmdsaW5nKTogTmV3LgoJKE5PX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogTmV3LgoKMjAwMS0xMC0yNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogc2FmZS1jdHlwZS5oIChfc2NoX2lzYmFzaWMsIElTX0lTT0JBU0lDKTogTmV3LgoKMjAwMS0xMC0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGhleF9pbml0KTogUmV2ZXJ0IGRlbGV0ZS4KCgkqIGxpYmliZXJ0eS5oIChfaGV4X3ZhbHVlKTogQ29uc3QtaWZ5LgoJKGhleF9pbml0KTogRGVsZXRlLgoKMjAwMS0xMC0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGVyX2VuZ2luZSk6IENvbnN0LWlmeS4KCSogbGliaWJlcnR5LmggKGJ1aWxkYXJndik6IExpa2V3aXNlLgoKMjAwMS0wOS0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKHJlY29uY2F0KTogTmV3IGZ1bmN0aW9uLgoKMjAwMS0wOS0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGNvbmNhdCwgY29uY2F0X2xlbmd0aCwgY29uY2F0X2NvcHksIGNvbmNhdF9jb3B5MiwKCUFDT05DQVQpOiBJbXByb3ZlIGNvbW1lbnRzLgoKMjAwMS0wOS0xOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIG9iamFsbG9jLmggKE9CSkFMTE9DX0FMSUdOKTogRGVmaW5lIHVzaW5nIG9mZnNldG9mLgoKMjAwMS0wOS0xNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGNvbmNhdF9sZW5ndGgsIGNvbmNhdF9jb3B5LCBjb25jYXRfY29weTIsCglsaWJpYmVydHlfY29uY2F0X3B0ciwgQUNPTkNBVCk6IE5ldy4KCgkqIGxpYmliZXJ0eS5oIChBU1RSRFVQKTogTmV3IG1hY3JvLgoJbGliaWJlcnR5X29wdHIsIGxpYmliZXJ0eV9ucHRyLCBsaWJpYmVydHlfbGVuKTogRGVjbGFyZS4KCjIwMDEtMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IFVwZGF0ZSBjb21tZW50cyByZWZsZWN0aW5nIHByZXZpb3VzIGNoYW5nZS4KCjIwMDEtMDgtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKFZBX09QRU4sIFZBX0NMT1NFKTogQWxsb3cgbXVsdGlwbGUgdXNlcy4KCjIwMDEtMDgtMjMgIExhcnMgQnJpbmtob2ZmICA8bGFyc0Bub2NyZXcub3JnPgoKCSogZHluLXN0cmluZy5oLCBmaWJoZWFwLmgsIHBhcnRpdGlvbi5oLCBzb3J0LmgsIHNwbGF5LXRyZWUuaDoKCXJlcGxhY2UgIkdOVSBDQyIgd2l0aCAiR0NDIi4KCjIwMDEtMDgtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBmaWJoZWFwLmg6IFRpZHkgZm9ybWF0dGluZy4KCShmaWJub2RlX3QpOiBMaW1pdCBkZWdyZWUgdG8gMzEgYml0cyB0byBhdm9pZCB3YXJuaW5nLgoKMjAwMS0wOC0yMCAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZC4KCShmbG9hdGZvcm1hdF9hcm1fZXh0X2JpZywgZmxvYXRmb3JtYXRfYXJtX2V4dF9saXR0bGVieXRlX2JpZ3dvcmQpCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9saXR0bGUsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9saXR0bGUpCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9iaWcsIGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9iaWcpCgkoZmxvYXRmb3JtYXRfbTg4MTEwX2hhcnJpc19leHQpOiBEZWNsYXJlLgoKMjAwMS0wOC0yMCAgRGFuaWVsIEJlcmxpbiAgPGRhbkBjZ3NvZnR3YXJlLmNvbT4KCgkqIGZpYmhlYXAuaDogTmV3IGZpbGUuIEZpYm9uYWNjaSBoZWFwLgoKMjAwMS0wOC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2t3QHBhbml4LmNvbT4KCgkqIGFuc2lkZWNsLmg6IFJlb3JnYW5pemUgZm9yIHJlYWRhYmlsaXR5LCByZW1vdmUgZG9jdW1lbnRhdGlvbgoJb2Ygb2Jzb2xldGUgbWFjcm9zLCBkb2N1bWVudCBQQVJBTVMgYW5kIFZQQVJBTVMuICBBZGQgbmV3CgltYWNyb3MgVkFfT1BFTiwgVkFfQ0xPU0UsIGFuZCBWQV9GSVhFREFSRyBmb3IgbmljZXIgdmFyaWFkaWMKCWZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgoKMjAwMS0wOC0xNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuaCAoaHRhYl9oYXNoX3N0cmluZyk6IERlY2xhcmUuCgoyMDAxLTA4LTEwICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGxpYmliZXJ0eS5oIChsYmFzZW5hbWUpOiBDaGFuZ2UgZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gcmV0dXJuIGEKCWNvbnN0IGNoYXIgcG9pbnRlci4KCjIwMDEtMDgtMDIgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogeHJlZ2V4LmggKF9SRUdFWF9SRV9DT01QKTogRGVmaW5lLgoJKHJlX2NvbXApOiBEZWZpbmUgdG8geHJlX2NvbXAuCgkocmVfZXhlYyk6IERlZmluZSB0byB4cmVfZXhlYy4KCjIwMDEtMDctMTggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHhyZWdleDIuaDogUGxhY2UgdW5kZXIgTEdQTCB2ZXJzaW9uIDIuMS4KCjIwMDEtMDctMTAgIEplZmYgSm9obnN0b24gIDxqam9obnN0bkByZWRoYXQuY29tPgoKCSogeHJlZ2V4Lmg6IE5ldyBmaWxlIHRvIHN1cHBvcnQgbGliaWJlcnR5IHJlZ2V4LgoJKiB4cmVnZXgyLmg6IERpdHRvLgoKMjAwMS0wNS0xNiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiBwYXJ0aXRpb24uaDogRml4IG1pc3NwZWxsaW5nIG9mIGBpbXBsZW1lbnRhdGlvbicuCgoyMDAxLTA1LTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChOVUxMX1BUUik6IERlbGV0ZS4KCjIwMDEtMDUtMDcgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBkZW1hbmdsZS5oOiBVc2UgUEFSQU1TIGZvciBhbGwgcHJvdG90eXBlcy4KCSogdGVybmFyeS5oOiBVc2UgUEFSQU1TIGZvciBhbGwgcHJvdG90eXBlcy4gIFVzZSBQVFIsIG5vdCB2b2lkICouCglNYWtlIGFyZ3VtZW50cyBjb25zdGFudCB3aGVyZSBwb3NzaWJsZS4KCjIwMDEtMDUtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfbWF4KTogTmV3IGZ1bmN0aW9uLgoJKHNwbGF5X3RyZWVfbWluKTogTGlrZXdpc2UuCgoyMDAxLTA0LTE1ICBEYW5pZWwgQmVybGluICA8ZGFuQGNnc29mdHdhcmUuY29tPgoKCSogdGVybmFyeS5oOiBOZXcgZmlsZSAtIFRlcm5hcnkgc2VhcmNoIHRyZWUgaGVhZGVyLgoKMjAwMS0wNC0wMyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGFuc2lkZWNsLmg6IEFsbCBsb2dpYyBmcm9tIGdjYy9nYW5zaWRlY2wuaCBtb3ZlZCBoZXJlLgoKMjAwMS0wMy0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5LmggKGFsbG9jYSk6IEhhbmRsZSBzZXR0aW5nIENfQUxMT0NBLgoKMjAwMS0wMy0yMCAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmggKGVudW0gZ251X3YzX2NvbnN0cnVjdG9yX2tpbmRzLAoJaXNfZ251X3YzX21hbmdsZWRfY3RvciwgZW51bSBnbnVfdjNfZGVzdHJ1Y3Rvcl9raW5kcywKCWlzX2dudV92M19tYW5nbGVkX2R0b3IpOiBOZXcgZGVjbGFyYXRpb25zLgoKMjAwMS0wMy0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIGFuc2lkZWNsLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGRlbWFuZ2xlLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGZsb2F0Zm9ybWF0Lmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGZubWF0Y2guaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCSogZ2V0b3B0Lmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIGxpYmliZXJ0eS5oOiBBZGQgRlNGIGNvcHlyaWdodCBub3RpY2UuCgkqIG1kNS5oOiBGaXggY29weXJpZ2h0IGRhdGVzLgoJKiBvYnN0YWNrLmg6IEZpeCBjb3B5cmlnaHQgZGF0ZXMuCgkqIHNwbGF5LXRyZWUuaDogRml4IGNvcHlyaWdodCBkYXRlcy4KCjIwMDEtMDMtMTAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCSAgICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbGliaWJlcnR5Lmg6IEFkZCBsYmFzZW5hbWUuCgoyMDAxLTAzLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogbGliaWJlcnR5Lmg6IFByb3RvdHlwZSBDX2FsbG9jYTsgZGVmaW5lIGFsbG9jYSB0byBlaXRoZXIKCV9fYnVpbHRpbl9hbGxvY2Egb3IgQ19hbGxvY2EgYXMgYXBwcm9wcmlhdGUuCgoyMDAxLTAzLTAxICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogc2FmZS1jdHlwZS5oIChfc2NoX3Rlc3QpOiBDYXN0IGVudW0gYml0IHRvIHVuc2lnbmVkIHNob3J0IGludCBmb3IgcGNjCgljb21wYXRpYmlsaXR5LgoKMjAwMC0xMi0xOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogQ09QWUlORzogVXBkYXRlIHRvIGN1cnJlbnQKCWZ0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvTGljZW5zZXMvQ09QWUlORy0yLjAgKGZpeGVzIHJlZmVyZW5jZXMKCXRvIDE5eXkgYXMgZXhhbXBsZSB5ZWFyIGluIGNvcHlyaWdodCBub3RpY2UpLgoKMjAwMC0xMi0xNiAgSGVybWFuIEEuSi4gdGVuIEJydWdnZSAgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBzYWZlLWN0eXBlLmg6IE1ha2UgY29kZSB3b3JrIG9uIGFsbCB0YXJnZXRzIGFuZCBub3QganVzdCBvbgoJdGFyZ2V0cyB3aGVyZSBhIGNoYXIgaXMgOCBiaXRzLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHNhZmUtY3R5cGUuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTA2ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGdldG9wdC5oIG9ic3RhY2suaDogU3RhbmRhcml6ZSBjb3B5cmlnaHQgc3RhdGVtZW50LgoKMjAwMC0xMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmg6IENoYW5nZSAibmV3X2FiaSIgdG8gInYzIiBldmVyeXdoZXJlLgoKMjAwMC0xMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlICNpbmNsdWRlcyB0byB0b3AuICBQcm90b3R5cGUgeG1hbGxvY19mYWlsZWQuCgoyMDAwLTExLTE1ICBLZW5uZXRoIEJsb2NrICA8a2VubmV0aC5ibG9ja0Bjb21wYXEuY29tPgoKCSogZGVtYW5nbGUuaDogQWRkIGduYXQgYW5kIGphdmEgZGVtYW5nbGUgc3R5bGVzLgoKMjAwMC0xMS0wNCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IEFkZCBtZW1iZXIgcmV0dXJuX2FsbG9jYXRpb25fZmFpbHVyZS4KCShodGFiX3RyeV9jcmVhdGUpOiBOZXcgcHJvdG90eXBlLiAgTWVudGlvbiB3aGljaCBmdW5jdGlvbnMgbWF5CglyZXR1cm4gTlVMTCB3aGVuIHRoaXMgaXMgdXNlZC4KCjIwMDAtMTEtMDMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGhhc2h0YWIuaDogQ2hhbmdlIHZvaWQgKiB0byBQVFIgd2hlcmUgbmVjZXNzYXJ5LgoKMjAwMC0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IERlY2xhcmUuCgoyMDAwLTA5LTA1ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBtZDUuaCAobWQ1X3VpbnQzMik6IENob29zZSB2aWEgSU5UX01BWCBpbnN0ZWFkIG9mIFVJTlRfTUFYLgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaDogQWRqdXN0IGZvcm1hdHRpbmcuIAoJKGR5bl9zdHJpbmdfaW5zZXJ0X2NoYXIpOiBOZXcgbWFjcm8uICBOZXcgZGVjbGFyYXRpb24uCgoyMDAwLTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIG1kNS5oOiBOZXcgZmlsZS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogbGliaWJlcnR5LmggKEFSUkFZX1NJWkUpOiBOZXcgbWFjcm8uCgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2luaXQsIGR5bl9zdHJpbmdfbmV3LAoJZHluX3N0cmluZ19kZWxldGUsIGR5bl9zdHJpbmdfcmVsZWFzZSwgZHluX3N0cmluZ19yZXNpemUsCglkeW5fc3RyaW5nX2NsZWFyLCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nX2R5bl9zdHJpbmdfZXEpOgoJRGVmaW5lIGFzIHNhbWUgbmFtZSB3aXRoIF9fY3hhXyBwcmVwZW5kZWQsIGlmIElOX0xJQkdDQzIuCgkoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBpbnQuCgkKMjAwMC0wNi0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaCAoZGVtYW5nbGluZ19zdHlsZXMpOiBSZW1vdmUgdHJhaWxpbmcgY29tbWEgaW4gZW51bS4KCgkqIGR5bi1zdHJpbmcuaCAoZHluX3N0cmluZ19hcHBlbmRfY2hhcik6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbQoJY2hhciB0byBpbnQuCgoyMDAwLTA2LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oOiBNb3ZlIGhlcmUgZnJvbSBnY2MvZHluLXN0cmluZy5oLiAgQWRkIG5ldyBmdW5jdGlvbnMuCgoJKiBkZW1hbmdsZS5oIChETUdMX0dOVV9ORVdfQUJJKTogTmV3IG1hY3JvLgoJKERNR0xfU1RZTEVfTUFTSyk6IE9yIGluIERNR0xfR05VX05FV19BQkkuIAoJKGN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSk6IEFkZCBnbnVfbmV3X2FiaV9kZW1hbmdsaW5nLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogTmV3IG1hY3JvLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkcpOiBMaWtld2lzZS4KCShjcGx1c19kZW1hbmdsZV9uZXdfYWJpKTogTmV3IGRlY2xhcmF0aW9uLgoJClR1ZSBNYXkgMzAgMTY6NTM6MzQgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoc3RydWN0IGZsb2F0Zm9ybWF0KTogQWRkIGZpZWxkIG5hbWUuCgoyMDAwLTA1LTIzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBnZXRvcHQuaCAoZ2V0b3B0KTogQWxzbyBjaGVjayBIQVZFX0RFQ0xfKiB3aGVuIHByb3RvdHlwaW5nLgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTA1LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgogCSogYW5zaWRlY2wuaDogI2RlZmluZSBfX2V4dGVuc2lvbl9fIHRvIG5vdGhpbmcgaWYKIAlHQ0NfVkVSU0lPTiA8IDIwMDguCgoyMDAwLTA1LTA0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oIChkZW1hbmdsZXJfZW5naW5lKTogQ29uc3RpZnkuCgpUaHUgTWF5ICA0IDE3OjE1OjI2IDIwMDAgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogc29ydC5oIChzeXMvdHlwZXMuaCk6IEZpbGUgaW5jbHVkZWQgdW5jb25kaXRpb25uYWx5LgoJKHN0ZGRlZi5oKTogRmlsZSBpbmNsdWRlIG9ubHkgI2lmZGVmIF9fU1REQ19fLgoKMjAwMC0wNS0wMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogc3ltY2F0Lmg6IFJlbW92ZSAjZW5kaWYgbGFiZWwuCgoyMDAwLTA0LTI4ICBLZW5uZXRoIEJsb2NrICA8YmxvY2tAemszLmRlYy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgogICAgICAgICogZGVtYW5nbGUuaCAobGliaWJlcnR5X2RlbWFuZ2xlcnMpOiBuZXcgdGFibGUgZm9yIGRpZmZlcmVudCBzdHlsZXMuCiAgICAgICAgKGNwbHVzX2RlbWFuZ2xlX3NldF9zdHlsZSk6IE5ldyBmdW5jdGlvbiBmb3Igc2V0dGluZyBzdHlsZS4KICAgICAgICAoY3BsdXNfZGVtYW5nbGVfbmFtZV90b19zdHlsZSk6IE5ldyBmdW5jdGlvbiB0byB0cmFuc2xhdGUgbmFtZS4KCjIwMDAtMDQtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmggKGhhc2hfcG9pbnRlcik6IERlY2xhcmUuCgkoZXFfcG9pbnRlcik6IExpa2V3aXNlLgoKMjAwMC0wNC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNvcnQuaDogTmV3IGZpbGUuCgpUdWUgQXByIDE4IDE2OjIyOjMwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBoYXNodGFiLmggKGVudW0gaW5zZXJ0X29wdGlvbik6IE5ldyB0eXBlLgoJKGh0YWJfZmluZF9zbG90LCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBVc2UgaXQuCgoyMDAwLTA0LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzeW1jYXQuaDogSG9ub3IgYXV0b2NvbmYgbWFjcm8gSEFWRV9TVFJJTkdJWkUuICBBZGQKCWNvbW1lbnRzL2NhdmVhdHMgd2l0aCByZWdhcmQgdG8gdHJhZGl0aW9uYWwgQyBiZWhhdmlvci4KCjIwMDAtMDQtMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfcmVtb3ZlKTogRGVjbGFyZS4KCjIwMDAtMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmggKGhhc2h2YWxfdCk6IE5ldyB0eXBlLgoJKGh0YWJfZmluZF93aXRoX2hhc2gpOiBVc2UgaXQgYXMgYW4gYXJndW1lbnQuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UuCgoyMDAwLTAzLTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGhhc2h0YWIuaCAoaHRhYl90cmF2KTogTW9kaWZ5IHR5cGUgc28gdGhhdCBmaXJzdCBhcmcgaXMgb2YgdHlwZQoJdm9pZCAqKi4KCShodGFiX2ZpbmRfd2l0aF9oYXNoLCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBEZWNsYXJlIG5ldwoJZnVuY3Rpb25zLgoKMjAwMC0wMy0wOSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnRpdGlvbi5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBBZGQgZGVsX2YuCgkoaHRhYl9kZWwpOiBOZXcgdHlwZS4KCShodGFiX2NyZWF0ZSk6IEFkZCBmb3VydGggYXJndW1lbnQuCgoyMDAwLTAzLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmggKGhhc2hfdGFibGVfdCk6IFJlbmFtZSB0byBodGFiX3QuCgkoc3RydWN0IGhhc2hfdGFibGUpOiBSZW5hbWUgdG8gc3RydWN0IGh0YWIuICBTaG9ydGVuIGVsZW1lbnQKCW5hbWVzLiAgUmVvcmRlciBlbGVtZW50cyBieSBzaXplLgoJKGh0YWJfaGFzaCwgaHRhYl9lcSwgaHRhYl90cmF2KTogTmV3IHR5cGVkZWZzIGZvciB0aGUgY2FsbGJhY2sKCWZ1bmN0aW9uIHBvaW50ZXJzLgoJKGhhc2hfdGFibGVfZW50cnlfdCk6IERpc2NhcmQ7IGp1c3QgdXNlIHZvaWQgKiBmb3IgZWxlbWVudAoJdHlwZS4KClNhdCBKYW4gIDEgMTk6MDY6NTIgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogc3ltY2F0LmggKFNUUklOR1gpIFshX19TVERDX18gfHwgQUxNT1NUX1NURENdOiBDaGFuZ2UgIj8iIHRvICJzIgoJdG8gc3RyaW5naWZ5IGFyZ3VtZW50IHMuCgoxOTk5LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX25vZGVfcyk6IC4uLiB0aGlzLgoJKHN0cnVjdCBzcGxheV90cmVlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX3MpOiAuLi4gdGhpcy4KCjE5OTktMTEtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKEFUVFJJQlVURV9NQUxMT0MpOiBOZXcgbWFjcm8uCgoJKiBsaWJpYmVydHkuaCAoYnVpbGRhcmd2LCBkdXBhcmd2LCBjb25jYXQsIGNob29zZV90ZW1wX2Jhc2UsCgltYWtlX3RlbXBfZmlsZSwgeG1hbGxvYywgeGNhbGxvYywgeHN0cmR1cCwgeG1lbWR1cCk6IEFkZAoJQVRUUklCVVRFX01BTExPQy4KCSh4YXRleGl0KTogUmVtb3ZlIF9fR05VQ19fIGNoZWNrLCBhZGQgQVRUUklCVVRFX05PUkVUVVJOLgoKMTk5OS0xMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IEluY2x1ZGUgc3RkYXJnLmggd2hlbiBBTlNJX1BST1RPVFlQRVMgaXMgZGVmaW5lZC4KCShhc3ByaW50ZiwgdmFzcHJpbnRmKTogUHJvdmlkZSBkZWNsYXJhdGlvbnMuCgpXZWQgTm92IDEwIDEyOjQzOjIxIDE5OTkgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoJCQkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IERlZmluZSBhbmQgdGVzdCBgR0NDX1ZFUlNJT04nLCBub3QgYEhBVkVfR0NDX1ZFUlNJT04nLgoKMTk5OS0xMC0yMyAwODo1MSAtMDcwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAYml0bW92ZXIuY29tPgoKCSogaGFzaHRhYi5oOiBHaXZlIGhhc2hfdGFibGVfdCBhIHN0cnVjdCB0YWcuICBBZGQgcHJvdG90eXBlcwoJZm9yIGNsZWFyX2hhc2hfdGFibGVfc2xvdCBhbmQgdHJhdmVyc2VfaGFzaF90YWJsZS4gIENvcnJlY3QKCXByb3RvdHlwZSBvZiBhbGxfaGFzaF90YWJsZV9jb2xsaXNpb25zLgoKRnJpIE9jdCAxNSAwMTo0Nzo1MSAxOTk5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGhhc2h0YWIuaDogTmV3IGZpbGUuCgoxOTk5LTEwLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChIQVZFX0dDQ19WRVJTSU9OKTogTmV3IG1hY3JvLiAgVXNlIGl0IGluc3RlYWQgb2YKCWV4cGxpY2l0bHkgdGVzdGluZyBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18uCgoJKEFUVFJJQlVURV9QUklOVEYpOiBVc2UgYF9fZm9ybWF0X18nLCBub3QgYGZvcm1hdCcuCgoxOTk5LTA5LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAobWFrZV90ZW1wX2ZpbGUpOiAgQWRkIGEgcHJvdG90eXBlLgoKVHVlIFNlcCAxNCAwMDozNTowMiAxOTk5ICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiAgT3BlbkJTRCBoYXMgYSBjb3JyZWN0IHByb3RvdHlwZS4KCSh4cmVhbGxvYyk6ICBSZW1vdmUgb3V0ZGF0ZWQgY29tbWVudC4KCjE5OTktMDktMDcgIEplZmYgR2FyemlrICA8amdhcnppa0Bwb2JveC5jb20+CgoJKiBsaWJpYmVydHkuaCAoeG1lbWR1cCk6IEFkZCBwcm90b3R5cGUgZm9yIG5ldyBmdW5jdGlvbi4KCjE5OTktMDktMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG9ic3RhY2suaCAob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwKTogTW92ZSAoY2hhciopIGNhc3RzCglpbiBjYWxscyB0byBgX29ic3RhY2tfbWVtY3B5JyBmcm9tIGhlcmUgLi4uCgoJKF9vYnN0YWNrX21lbWNweSk6IC4uLiB0byBoZXJlLCBleGNlcHQgaW4gdGhlIF9fU1REQ19fIGNhc2Ugd2hpY2gKCWRvZXNuJ3QgbmVlZCBpdC4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oIChnZXRwd2QpOiBQcm90b3R5cGUuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2luc2VydCk6IFJldHVybiB0aGUgbmV3IG5vZGUuCgoxOTk5LTA3LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGFuc2lkZWNsLmg6IENvcHkgYXR0cmlidXRlIHN1cHBvcnQgbWFjcm9zIGZyb20gZWdjcy4KCjE5OTktMDQtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfY29tcGFyZV9wb2ludGVycyk6IERlY2xhcmUuCgoxOTk5LTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfaW50cyk6IERlY2xhcmUuCgpXZWQgTWFyIDI0IDEyOjQ2OjI5IDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYW15LmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBDeWd3aW57LDMyfSBzaG91bGQgaGF2ZSB0aGUgcHJvdG90eXBlLgoKTW9uIERlYyAxNCAwOTo1MzozMSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBjaGVjayBJTl9HQ0MgYW55bW9yZS4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KClR1ZSBEZWMgIDggMDA6MzA6MzEgMTk5OCAgRWxlbmEgWmFubm9uaSAgPGV6YW5ub25pQGt3aWtlbWFydC5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaDogKERNR0xfRURHKTogbmV3IG1hY3JvIGZvciBLdWNrIGFuZCBBc3NvY2lhdGVzCgkoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgS3VjayBhbmQgQXNzb2Mgc3R5bGUKCShkZW1hbmdsaW5nX3N0eWxlcyk6IGFkZCBuZXcgZWRnX2RlbWFuZ2xpbmcgc3R5bGUKCShFREdfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8KCShFREdfREVNQU5HTElORyk6IG5ldyBtYWNybwoJKERNR0xfSFApOiBuZXcgbWFjcm8sIGZvciBIUC9hQ0MgY29tcGlsZXIuCgkoRE1HTF9TVFlMRV9NQVNLKTogbW9kaWZ5IHRvIGluY2x1ZGUgbmV3IEhQJ3Mgc3R5bGUuCgkoZGVtYW5nbGluZ19zdHlsZXMpOiBhZGQgbmV3IGhwX2RlbWFuZ2xpbmcgdmFsdWUuCgkoSFBfREVNQU5HTElOR19TVFlMRV9TVFJJTkcpOiBuZXcgbWFjcm8uCgkoQVJNX0RFTUFOR0xJTkcpOiBjb2VyY2UgdG8gaW50LgoJKEhQX0RFTUFOR0xJTkcpOiBuZXcgbWFjcm8uCgpGcmkgTm92IDIwIDEzOjE0OjAwIDE5OTggIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBwcm90b3R5cGUgZm9yIEZyZWVCU0QuCgpGcmkgTm92IDEzIDE5OjE5OjExIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBQcm90b3R5cGUgeGNhbGxvYy4KClN1biBOb3YgIDggMTc6NDI6MjUgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYW5zaWRlY2wuaDogV3JhcCBwcm9ibGVtYXRpYyBtYWNyb3Mgd2l0aCAhSU5fR0NDLgoKCSogZGVtYW5nbGUuaDogTmV2ZXIgZGVmaW5lIFBBUkFNUygpLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKU2F0IE5vdiAgNyAxNjowNDowMyAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoJKiBzcGxheS10cmVlLmg6IExpa2V3aXNlLgoKVGh1IE9jdCAyMiAxOTo1ODowMCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBzcGxheS10cmVlLmg6IFdyYXAgZnVuY3Rpb24gcG9pbnRlciBwYXJhbWV0ZXIgZGVjbGFyYXRpb25zIGluCglQQVJBTVMoKSBtYWNyby4KCjE5OTgtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzcGxheS10cmVlLmg6IE5ldyBmaWxlLgoKRnJpIE9jdCAgOSAwMDowMjowMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNZXJnZSBkZXZvIGFuZCBlZ2NzIGluY2x1ZGUgZGlyZWN0b3JpZXMuCgpTYXQgU2VwICA1IDEyOjE2OjMzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZWQgZnJvbSBnY2MuCgoxOTk4LTA4LTAzICBKYXNvbiBNb2xlbmRhICAoanNtQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaCAoeGV4aXQpOiBDaGFuZ2UgZGVjbCB0byB1c2UgbW9kZXJuIEdDQyBhdHRyaWJ1dGUKCXRvIGluZGljYXRlIGV4aXQgZG9lcyBub3QgcmV0dXJuLgoKTW9uIEp1biAgMSAxMzo0ODozMiAxOTk4ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KClR1ZSBGZWIgMjQgMTM6MDU6MDIgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE1lbWJlciBgc3ltYm9sJyByZW5hbWVkIHRvIGBzeW1ib2xzJwoJYW5kIG1hZGUgYW4gImFzeW1ib2wgKioiLiAgTmV3IG1lbWJlciBudW1fc3ltYm9scy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IFVwZGF0ZS4KClR1ZSBGZWIgMTcgMTI6MzI6MTggMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fZmV0Y2hfcmVnaXN0ZXIsIHNpbV9zdG9yZV9yZWdpc3Rlcik6IEFkZAogCXJlZ2lzdGVyIGxlbmd0aCBwYXJhbWV0ZXIuICBGdW5jdGlvbnMgcmV0dXJuIGFjdHVhbCBsZW5ndGggb2YKIAlyZWdpc3Rlci4KClRodSBGZWIgMTIgMTY6Mjk6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZ2V0b3B0Lmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpXZWQgRmViIDExIDE2OjU2OjA2IDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBzeW1jYXQuaDogTmV3IGZpbGUuCgpNb24gRmViICAyIDE3OjEzOjMxIDE5OTggIFN0ZXZlIEhhd29ydGggIDxzdGV2ZUBwbS5jc2Uucm1pdC5FRFUuQVU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljMzApOiBEZWNsYXJlLgoKVGh1IEphbiAyMiAxNjoyMzo1OSAxOTk4ICBGcmVkIEZpc2ggPGZuZkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgZmxhZyBJTlNOX0hBU19SRUxPQyB0byB0ZWxsIGRpc2Fzc2VtYmx5CglmdW5jdGlvbiB0aGVyZSBpcyBhIHJlbG9jIG9uIHRoaXMgbGluZS4KCk1vbiBEZWMgIDggMTE6MjI6MjMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogUmVtb3ZlIHByb3RvdHlwZSBvZiBkaXNhc21fc3ltYWRkcigpIGFzIHRoaXMgZnVuY3Rpb24KCW5vIGxvbmdlciBleGlzdHMuCgpUdWUgRGVjICAyIDEwOjIwOjUzIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2FzbV9zeW1hZGRyKTogTmV3IHByb3RvdHlwZS4KCk1vbiBEZWMgIDEgMjA6MjQ6MTggMTk5NyAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogY29mZi9zaC5oIChSX1NIX1NXSVRDSDgpOiBOZXcuCgpNb24gRGVjICAxIDExOjI5OjM1IDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9TWVNDQUxMKTogQ29tbWVudCBvdXQgYXJnIG5hbWVzIGluIHByb3RvdHlwZXMuCgpXZWQgTm92IDI2IDE2OjQ3OjU4IDE5OTcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbnNpc3RhbnRseSB1c2UgbmFtZXMgZm9yIHByb3RvdHlwZQoJYXJndW1lbnRzLgoKV2VkIE5vdiAyNiAxMTozOTozMCAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENoYW5nZSBieXRlIGNvdW50IGFyZ3VtZW50cyB0bwoJe3JlYWQsd3JpdGV9X21lbSB0byBgaW50Jy4gIE5ldyBtZW1iZXIgYG1hZ2ljJy4KCShDQl9TWVNDQUxMX01BR0lDLENCX1NZU0NBTExfSU5JVCk6IE5ldyBtYWNyb3MuCgpUdWUgTm92IDI1IDAxOjM1OjUyIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IHN0YXQpOiBNb3ZlIGZvcndhcmQgZGVjbCB1cC4KCShob3N0X2NhbGxiYWNrKTogUGFzcyBzdGF0IHN0cnVjdCBwb2ludGVyIHRvIHN0YXQsZnN0YXQuCgkoQ0JfU1lTX25ubik6IFJlb3JnYW5pemUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyBtZW1iZXJzIHAxLHAyLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBEZWxldGUgZm91cnRoIGFyZy4KClNhdCBOb3YgMjIgMjM6MzQ6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcF9yZWFzb24pOiBDbGFyaWZ5IHNpbV9zaWduYWxsZWQgU0lHUkMKIAlhcmd1bWVudC4KCk1vbiBOb3YgMTcgMTQ6MDA6NTEgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BzZWJhLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChDQl9UQVJHRVRfREVGU19NQVApOiBSZW5hbWVkIGZyb20gdGFyZ2V0X2RlZnNfbWFwLgoJKGhvc3RfY2FsbGJhY2spOiBBZGQgc3RhdCwgZnN0YXQsIHN5c2NhbGxfbWFwLCBlcnJub19tYXAsIG9wZW5fbWFwLAoJc2lnbmFsX21hcCwgc3RhdF9tYXAuCgkoZXJybl9tYXAsb3Blbl9tYXApOiBSZW5hbWVkIHRvIGNiX2luaXRfZm9vX21hcC4KCShjYl9ob3N0X3RvX3RhcmdldF9lcnJubyxjYl90YXJnZXRfdG9faG9zdF9vcGVuKTogUmVuYW1lZCBmcm9tCglob3N0X3RvX3RhcmdldF9lcnJubyx0YXJnZXRfdG9faG9zdF9vcGVuLgoJKGNiX3JlYWRfdGFyZ2V0X3N5c2NhbGxfbWFwcyk6IEFkZCBwcm90b3R5cGUuCgkoY2JfdGFyZ2V0X3RvX2hvc3Rfc3lzY2FsbCk6IExpa2V3aXNlLgoJKGNiX2hvc3RfdG9fdGFyZ2V0X3N0YXQpOiBMaWtld2lzZS4KCShjYl9zeXNjYWxsKTogTGlrZXdpc2UuCgkoQ0JfU1lTX3tleGl0LG9wZW4sY2xvc2UscmVhZCx3cml0ZSxsc2Vlayx1bmxpbmssZ2V0cGlkLGtpbGwsZnN0YXQsCglhcmd2bGVuLGFyZ3YsY2hkaXIsc3RhdCxjaG1vZCx1dGltZSx0aW1lfSk6IERlZmluZS4KCShDQl9TWVNDQUxMKTogTmV3IHR5cGUuCgkoQ0JfUkMpOiBOZXcgZW51bS4KCkZyaSBOb3YgIDcgMTA6MzQ6MDkgMTk5NyAgUm9iIFNhdm95ZSAgPHJvYkBkYXJrc3Rhci5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IEFkZCBleHRlcm4gIkMiIHsgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCBDKysKCXByb2dyYW1zLgoJKiByZW1vdGUtc2ltLmg6ICBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KClR1ZSBPY3QgMTQgMTY6MDc6NTEgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQKCSdzeW1ib2xfYXRfYWRkcmVzc19mdW5jJy4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHdpdGgKCWdlbmVyaWNfc3ltYm9sX2F0X2FkZHJlc3MuCgpNb24gT2N0IDEzIDEwOjE3OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogQ2xhcmlmeSBzaW1fcmVhZCwgc2ltX3dyaXRlIE1FTSBhcmd1bWVudC4KCldlZCBTZXAgMjQgMTg6MDM6MTAgMTk5NyAgU3R1IEdyb3NzbWFuICA8Z3Jvc3NtYW5AYmFieWxvbi01LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKFNJTV9SQyk6ICBBZGQgYSBidW5jaCBvZiBuZXcgcmV0dXJuIGNvZGVzIGZvcgoJYnJlYWtwb2ludCBzdHVmZi4KCSogQWRkIGZ1bmN0aW9ucyB0byB0ZWxsIHRoZSBzaW11bGF0b3IgdG8gc2V0L2NsZWFyL2VuYWJsZS9kaXNhYmxlCglpbnRyaW5zaWMgYnJlYWtwb2ludHMuCgpUaHUgQXVnIDI4IDE5OjQxOjQyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChkdXBhcmd2KTogQWRkIHByb3RvdHlwZS4KClR1ZSBBdWcgMjYgMTI6MjU6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fY3JlYXRlX2luZmVyaW9yKTogQWRkIEFCRkQgYXJnLiBEb2N1bWVudC4KCk1vbiBBdWcgMjUgMTA6NTA6NTEgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpGcmkgQXVnICA4IDE2OjQzOjU2IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGFyY19nZXRfZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCldlZCBKdWwgMzAgMTE6Mzk6NTAgMTk5NyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGRlbmViLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChETUdMX0pBVkEpOiAgTmV3IG9wdGlvbiB0byByZXF1ZXN0IEphdmEgZGVtYW5nbGluZy4KClR1ZSBKdWwgMjIgMTc6NTk6NTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBFWEVDVVRFXyopOiBEZWZpbmUuCgkocGV4ZWN1dGUsIHB3YWl0KTogRGVjbGFyZS4KCkZyaSBKdW4gIDYgMTM6MDI6MzMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fa2lsbCk6IE1hcmsgYXMgZGVwcmVjaWF0ZWQuCgpGcmkgTWF5IDIzIDEzOjQzOjQxIDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB0YXNrX2xpbmsgbWVtYmVyLgoKVGh1IE1heSAyMiAxMTozMjo0OSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFJldmlldyBkb2N1bWVudGF0aW9uLiAgQ2xhcmlmeSByZXN0cmljdGlvbnMgb24KIAl3aGVuIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLgoKV2VkIE1heSAyMSAxNjo0Nzo1MyAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9zZXRfcHJvZmlsZV9zaXplKTogQWRkIHByb3RvdHlwZSwgZG9jdW1lbnQgYXMKIAlkZXByZWNpYXRlZC4KClR1ZSBNYXkgMjAgMDk6MzI6MjIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fb3Blbik6IEFkZCBjYWxsYmFjayBzdHJ1Y3QuCgkoc2ltX3NldF9jYWxsYmFja3MpOiBEcm9wIFNJTV9ERVNDIGFyZ3VtZW50LiBEb2N1bWVudC4KCShzaW1fc2l6ZSk6IFJlbW92ZSByZWNlbnRseSBhZGRlZCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgpNb24gTWF5IDE5IDE5OjE0OjQ0IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaDogUGFzcyBTRCBpbnRvIHNpbV9zaXplLgoKVGh1IE1heSAxNSAwMToyNDoxNiAxOTk3ICBNYXJrIEFsZXhhbmRlciAgPG1hcmthQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfc3BlY2lmeV9hbGxvY2F0aW9uX3dpdGhfYXJnLCBvYnN0YWNrX2NodW5rZnVuLAoJb2JzdGFja19mcmVlZnVuKTogRWxpbWluYXRlIGNvbXBpbGUgd2FybmluZ3MgaW4gZ2RiLgoKVHVlIE1heSAxMyAxMDoyMToxNCAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi9hcm0uaCAoY29uc3RhbnRzKTogICBBZGRlZCBuZXcgZmxhZyBiaXRzIEZfQVBDU18yNiBhbmQKCUZfQVBDU19TRVQgZm9yIHRoZSBmX2ZsYWdzIGZpZWxkIG9mIHRoZSBmaWxlaGRyIHN0cnVjdHVyZS4gIEFkZGVkIG5ldwoJZmxhZ3M6IEZfQVBDUzI2LCBGX0FSTV8yLCBGX0FSTV8zLCBGX0FSTV83LCBGX0FSTV83VCB0byBzdG9yZQoJaW5mb3JtYXRpb24gaW4gdGhlIGZsYWdzIGZpZWxkIG9mIHRoZSBpbnRlcm5hbF9mIHN0cnVjdHVyZSB1c2VkIGJ5IEJGRAoJcm91dGluZXMuCgpUdWUgQXByIDIyIDEwOjI0OjM0IDE5OTcgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogZmxvYXRmb3JtYXQuaCAoZmxvYXRmb3JtYXRfYnl0ZW9yZGVycyk6IEFkZCBjb21tZW50cyBmb3IgcHJldmlvdXMKCWZvcm1hdHMgYW5kIGFkZCBmbG9hdGZvcm1hdF9saXR0bGVieXRlX2JpZ3dvcmQsIHByaW1hcmlseSBmb3IgQVJNLgoJQWRkIGRlY2xhcmF0aW9uIGZvciBmbG9hdGZvcm1hdF9pZWVlX2RvdWJsZV9saXR0bGVieXRlX2JpZ3dvcmQuCgpGcmkgQXByIDE4IDEzOjA0OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3ApOiBOZXcgaW50ZXJmYWNlIC0gYXN5bmNocm9ub3VzCiAJbm90aWZpY2F0aW9uIG9mIGEgcmVxdWVzdCB0byBzdG9wIC8gc3VzcGVuZCB0aGUgcnVubmluZwogCXNpbXVsYXRpb24uCgoJKiByZW1vdGUtc2ltLmggKGVudW0gc2ltX3N0b3ApOiBBZGQgc2ltX3J1bm5pbmcgYW5kIHNpbV9wb2xsaW5nIGFzCiAJc3RhdGVzIGZvciB1c2UgaW50ZXJuYWwgdG8gc2ltdWxhdG9ycy4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnV0KTogUHV0IGEgbWFnaWMgbnVtYmVyIGF0CiAJdGhlIGVuZCBvZiB0aGUgc3RydWN0IHRvIGFsbG93IGJhc2ljIGNoZWNraW5nLgoJKHN0cnVjdCBob3N0X2NhbGxiYWNrX3N0cnVjdCApOiBBZGQgcG9sbF9xdWl0IC0gc28KIAl0aGF0IHRoZSBjb25zb2xlIGV0YyBjYW4gYmUgcG9sbGVkIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzLgoKVGh1IEFwciAxNyAwMjoxNzoxMiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzdHJ1Y3QgX2JmZCk6IERlY2xhcmUuCgkoc2ltX2xvYWQpOiBSZXR1cm4gU0lNX1JDLiAgTmV3IGFyZyBgYWJmZCcuCgkoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IFJldHVybiBTSU1fUkMuICBEZWxldGUgYXJnIGBzdGFydF9hZGRyZXNzJy4KCldlZCBBcHIgIDIgMTc6MDk6MTIgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSwgc2ltX3NpemUpOiBNYWtlIHRoZXNlIGdsb2JhbC4gIFRoZXkKIAl3aWxsIGdvIGF3YXkgc2hvcnRseS4KCldlZCBBcHIgIDIgMTU6MjM6NDkgMTk5NyAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoU0lNX09QRU5fS0lORCwgU0lNX1JDKTogTmV3IGVudW1zLgoJKHNpbV9vcGVuKTogTmV3IGFyZ3VtZW50IGBraW5kJy4KCldlZCBBcHIgIDIgMTQ6NDU6NTEgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogQ09QWUlORzogVXBkYXRlIEZTRiBhZGRyZXNzLgoKRnJpIE1hciAyOCAxNToyOTo1NCAxOTk3ICBNaWtlIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHRvcCBsZXZlbCk6IEluY2x1ZGUgc3RkYXJnLmggb3IgdmFyYXJncy5oIGlmCgl2YV9zdGFydCBpcyBub3QgZGVmaW5lZC4KCShob3N0X2NhbGxiYWNrX3N0cnVjdCk6IE1ha2UgeyxlfXZwcmludGZfZmlsdGVyZWQgdGFrZSBhIHZhX2xpc3QKCWluc3RlYWQgb2Ygdm9pZCAqLCBzaW5jZSB2YV9saXN0IG1pZ2h0IGJlIGFuIGFycmF5IG9yIHN0cnVjdHVyZQoJdHlwZS4KCkZyaSBNYXIgMjggMTU6NDQ6NDEgMTk5NyAgSC5KLiBMdSAgPGhqbEBnbnUuYWkubWl0LmVkdT4KCgkqIGxpYmliZXJ0eS5oIChiYXNlbmFtZSk6IEFkZCBwcm90b3R5cGUgZm9yIGdsaWJjIGFuZCBsaW51eC4KCk1vbiBNYXIgMTcgMTk6MjI6MTIgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JqYWxsb2MuaDogTmV3IGZpbGUuCgpNb24gTWFyIDE3IDE0OjU3OjU1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBOZXcgZmlsZSwgY29waWVkIGluIGZyb20gZ2RiL3JlbW90ZS1zaW0uaC4gIE9uZQogCWRheSB0aGlzIHdpbGwgYmUgcGxhY2VkIGluIGEgZGlyZWN0b3J5IG9mIGl0cyBvd24uCgpTYXQgTWFyIDE1IDE5OjAwOjE0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9ic3RhY2suaDogVXBkYXRlIHRvIGN1cnJlbnQgRlNGIHZlcnNpb24uCgpUaHUgTWFyICA2IDE1OjQ2OjU5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAa3JlbXZheC5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0KTogQWRkIGNhbGxiYWNrcyAtCiAJZmx1c2hfc3Rkb3V0LCB3cml0ZV9zdGRlcnIsIGZsdXNoX3N0ZGVyciwgdnByaW50Zl9maWx0ZXJlZCwKIAlldnByaW50Zl9maWx0ZXJlZC4gIERlbGV0ZSByZWR1bmRhbnQgY2FsbGJhY2tzIC0gcHJpbnRmX2ZpbHRlcmVkLgoKVGh1IEZlYiAyNyAyMzoxODoyNyAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIGxwcmVmaXggYW5kIGxwcmVmaXhfbGVuCglmaWVsZHMuCgpUdWUgRmViIDI1IDAwOjEwOjQ5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplCglieXRlc19wZXJfY2h1bmsgYW5kIGRpc3BsYXlfZW5kaWFuLgoKTW9uIEZlYiAyNCAxNzo0NzowMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJRnJvbSBFcmljIFlvdW5nZGFsZSA8ZXJpY0BhbmRhbnRlLmppYy5jb20+OgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZXhwcik6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX2RlcHMpOiBEZWZpbmUuCgkoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlKTogRGVmaW5lLgoKVGh1IEZlYiAgNiAxNDoyMDowMSAxOTk3ICBNYXJ0aW4gTS4gSHVudCAgPGh1bnRAcGl6emEuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogKGRpc2Fzc2VtYmxlX2luZm8pOiAgQWRkIG5ldyBmaWVsZHMKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4gdG8gY29udHJvbCB0aGUKCWRpc3BsYXkgb2YgcmF3IGluc3RydWN0aW9ucy4KClN1biBEZWMgIDggMTc6MTE6MTIgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKGhvc3RfY2FsbGJhY2spOiBOZXcgbWVtYmVyIGBlcnJvcicuCgpXZWQgTm92IDIwIDAwOjQwOjIzIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oOiBOZXcgZmlsZSwgbW92ZWQgaGVyZSBmcm9tIGdkYi4KCk1vbiBOb3YgMTggMTY6MzQ6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IENoZWNraW4gYWdhaW47IGxhc3QgY2hlY2tpbiBmYWlsZWQgZHVlIHRvIHN0aWNreSB0YWcuCgpXZWQgTm92IDEzIDA4OjIyOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZXZlcnQgbGFzdCBjb21taXQgZHVlIHRvIGNvbmZsaWN0cyB3aXRoIGhwdXgKCXN5c3RlbSBoZWFkZXJzLgoKVHVlIE5vdiAxMiAxNjozMTowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogTW92ZSBwcm90b3R5cGVzIGZyb20gYXJndi5jIGhlcmUuCgpUaHUgT2N0IDMxIDE0OjU2OjE4IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBhbnNpZGVjbC5oIChWUEFSQU1TLFZBX1NUQVJUKTogRGVmaW5lLgoKRnJpIE9jdCAyNSAxMjowODowNCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgYnl0ZXNfcGVyX2xpbmUgZmllbGQuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXplIGJ5dGVzX3Blcl9saW5lIGZpZWxkLgoKVGh1IE9jdCAyNCAxNzoxMDowMSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKGRpc2Fzc2VtYmxlX2luZm8pOiBBZGQgc3ltYm9sIGZpZWxkLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBzeW1ib2wgZmllbGQuCgpUaHUgT2N0IDE3IDExOjE3OjQwIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbTMycik6IERlY2xhcmUuCgpNb24gT2N0IDE0IDIzOjU2OjUyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHBhcmFtZXRlciB0eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHJlYWxsb2MuCgpUaHUgT2N0ICAzIDEzOjQ1OjI3IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZubWF0Y2guaDogTmV3IGZpbGUuCgpUaHUgT2N0ICAzIDEwOjMzOjE0IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbjEweDAwKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fbW4xMDIwMCwgcHJpbnRfaW5zbl9tbjEwMzAwKTogRGVjbGFyZS4KCldlZCBPY3QgIDIgMjE6MjQ6NDMgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX21uMTB4MDApOiBEZWNsYXJlLgoKTW9uIFNlcCAzMCAxMzo1NjoxMSAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBSZW1vdmUgI2lmbmRlZiBQUklWQVRFX1hNQUxMT0MuCgpTYXQgQXVnIDMxIDEzOjI3OjA2IDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl92ODUwKTogRGVjbGFyZS4KClR1ZSBBdWcgMTMgMTY6MTA6MzAgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIENoYW5nZSBiY29weSB0byBtZW1jcHkuICBXb3JrcyBiZXR0ZXIgb24gUG9zaXgKCXN5c3RlbXMsIHdoaWNoIGdlbmVyYWxseSBsYWNrIGJjb3B5LgoKTW9uIEF1ZyAxMiAxNzowMzoxOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIENoYW5nZSBXSU4zMiB0byBfV0lOMzIuCgpGcmkgSnVsIDI2IDEzOjU4OjE4IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIGZsYXZvdXIgZmllbGQuCgkocHJpbnRfaW5zbl9hbHBoYSk6IERlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRG9uJ3QgZGVjbGFyZS4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIGZsYXZvdXIgZmllbGQuCgpUdWUgSnVsIDIzIDE3OjM3OjU4IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKFBSSVZBVEVfWE1BTExPQyk6IEVuY2xvc2UgeG1hbGxvYy94cmVhbGxvYwoJZGVmaW5pdGlvbnMgaW5zaWRlICNpZm5kZWYgc28gdGhhdCBwcm9ncmFtcyB0aGF0IHdhbnQgdG8KCWNhbiBkZWZpbmUgUFJJVkFURV9YTUFMTE9DIGFuZCB0aGVuIGRlZmluZSB4bWFsbG9jIGFuZAoJeHJlYWxsb2MgYW55d2F5IHRoZXkgd2FudC4KCShiYXNlbmFtZSk6IERvY3VtZW50IGluIHNvdXJjZSB0aGF0IHdlIGNhbid0IGRlY2xhcmUgdGhlCiAJcGFyYW1ldGVyIHR5cGUgYmVjYXVzZSBpdCBpcyBkZWNsYXJlZCBpbmNvbnNpc3RlbnRseSBhY3Jvc3MKCWRpZmZlcmVudCBzeXN0ZW1zLgoKTW9uIEp1bCAyMiAxMzoxNjoxMyAxOTk2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEB0YW11LmVkdT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hbHBoYSk6IERvbid0IGRlY2xhcmUuCgkocHJpbnRfaW5zbl9hbHBoYV9vc2YsIHByaW50X2luc25fYWxwaGFfdm1zKTogRGVjbGFyZS4KCldlZCBKdWwgMTcgMTQ6NDU6MTIgMTk5NiAgTWFydGluIE0uIEh1bnQgIDxodW50QHBpenphLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IChwcmludF9pbnNuX2QxMHYpOiBEZWNsYXJlLgoKTW9uIEp1bCAxNSAxNjo1NTozOCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgR2V0IHJpZCBvZiBkZWNscyBmb3IgcHJpbnRfaW5zbl9pODA4NiwKCXByaW50X2luc25fc3BhcmM2NCBhbmQgcHJpbnRfaW5zbl9zcGFyY2xpdGUuCgkqIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiAgU3BsaXQgaW50byB0d28gcGllY2VzLiAgT25lLAoJSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0ggaW5pdHMgZXZlcnl0aGluZyBleGNlcHQgZm9yIGVuZGlhbiwKCW1hY2gsIGFuZCBhcmNoLgoKRnJpIEp1bCAxMiAxMDoxOToyNyAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2k4MDg2KTogIERlY2xhcmUuCgpXZWQgSnVsICAzIDE2OjAyOjM5IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmNsaXRlKTogIERlY2xhcmUuCgpUdWUgSnVuIDE4IDE2OjAyOjQ2IDE5OTYgIEplZmZyZXkgQS4gTGF3ICA8bGF3QHJ0bC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwcyk6IERlY2xhcmUuCgpUdWUgSnVuIDE4IDE1OjExOjMzIDE5OTYgIEtsYXVzIEthZW1wZiAgPGtrYWVtcGZAcHJvZ2lzLmRlPgoKCSogZm9wZW4tdm1zLmg6IE5ldyBmaWxlLgoKVHVlIEp1biAgNCAxODo1ODoxNiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5vdGljZV9hbGwgZmllbGQuCgpGcmkgQXByIDI2IDEwOjMzOjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oICgjaWZkZWYgSU5fR0NDKTogI2luY2x1ZGUgImdhbnNpZGVjbC5oIi4KCShQUk9UTyxQVFIsY29uc3QpOiBEZWxldGUuCgpNb24gQXByIDIyIDE3OjI3OjQyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdHJhZGl0aW9uYWxfZm9ybWF0IGZpZWxkLgoKTW9uIEFwciAxNSAxNToxNjo1NiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGNob29zZV90ZW1wX2Jhc2UpOiBBZGQgcHJvdG90eXBlLgoKVHVlIE1hciAxMiAxNzoyOTo0NiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF93cmFwcGVkX2xpbmtfaGFzaF9sb29rdXApOiBEZWNsYXJlLgoJKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHdyYXBfaGFzaCBmaWVsZC4KCldlZCBGZWIgMTQgMTY6NDk6MTcgMTk5NiAgTWFydGluIEFuYW50aGFyYW1hbiAgPG1hcnRpbkBtYWlsLmltZWNoLnVuaS1kdWlzYnVyZy5kZT4KCgkqIGllZWUuaCAoaWVlZV9yZWNvcmRfZW51bV90eXBlKTogRGVmaW5lCglpZWVlX2V4dGVybmFsX3JlZmVyZW5jZV9pbmZvX2VudW0uCgpGcmkgRmViICAyIDE3OjA5OjI1IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChESVNBU01fUkFXX0lOU04pOiBEZWxldGUuCgpUdWUgSmFuIDIzIDA5OjIxOjQ3IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBTZXQgZW5kaWFuIHRvIEJGRF9FTkRJQU5fVU5LTk9XTi4KCU5ldyBhcmd1bWVudCBGUFJJTlRGX0ZVTkMuCgpNb24gSmFuIDIyIDE2OjM3OjU5IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTmV3IG1lbWJlcnMgYXJjaCwgbWFjaCwgZW5kaWFuLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GTyk6IEluaXRpYWxpemUgdGhlbS4KCShESVNBU01fUkFXX0lOU057LEZMQUd9KTogRGVmaW5lLgoKVGh1IEphbiAxOCAxMTozMjozOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBDaGFuZ2Ugb3BuYW1lIHBhcmFtZXRlciB0bwoJY29uc3QgY2hhciAqLgoJKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgYW5kIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCkZyaSBKYW4gIDUgMDA6MDE6MjIgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogaWVlZS5oIChlbnVtIGllZWVfcmVjb3JkKTogQWRkIGllZWVfYXNuX3JlY29yZF9lbnVtLAoJaWVlZV9hdF9yZWNvcmRfZW51bSwgaWVlZV90eV9yZWNvcmRfZW51bSwgaWVlZV9hdG5fcmVjb3JkX2VudW0sCglpZWVlX2JiX3JlY29yZF9lbnVtLCBhbmQgaWVlZV9iZV9yZWNvcmRfZW51bS4KCldlZCBKYW4gIDMgMTM6MTI6MDkgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBvYnN0YWNrLmg6IFVwZGF0ZSBjb3B5cmlnaHQgdG8gMTk5Ni4KCShfb2JzdGFja19tZW1vcnlfdXNlZCk6IERlY2xhcmUuCgkob2JzdGFja19tZW1vcnlfdXNlZCk6IERlZmluZSBtYWNyby4KClRodSBEZWMgMjggMTE6NDI6MTIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKHhzdHJkdXApOiBEZWNsYXJlLgoKVGh1IERlYyAyMSAxNDo0NzoxNyAxOTk1ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiB3YWl0Lmg6IFByb3RlY3QgYWxsIG1hY3JvcyB3aXRoICNpZm5kZWYuCgpUdWUgT2N0IDI0IDIxOjQ1OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgc3RhdGljX2xpbmsgZmllbGQuCgpUdWUgU2VwIDEyIDE2OjI4OjA0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBzeW1ib2wgcGFyYW1ldGVyIHRvCgl3YXJuaW5nIGNhbGxiYWNrLgoKRnJpIFNlcCAgMSAxMzoxMTo1MSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2Ugd2FybmluZyBjYWxsYmFjawoJdG8gdGFrZSBCRkQsIHNlY3Rpb24sIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KClRodSBBdWcgMzEgMTY6NDU6MTIgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpUdWUgQXVnIDIyIDAzOjE4OjIzIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBrci1sYXB0b3AuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBEZWNsYXJlIHhzdHJlcnJvci4gIEZyb20gUGF0IFJhbmtpbi4KCk1vbiBBdWcgMjEgMTg6MTE6MzYgMTk5NSAgc3RldmUgY2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgUEUgc3R1ZmYuCgpXZWQgQXVnICAyIDA4OjE0OjEyIDE5OTUgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fc3BhcmM2NCk6IERlY2xhcmUuCgpNb24gSnVsIDEwIDEzOjI2OjQ5IDE5OTUgIEVyaWMgWW91bmdkYWxlICA8ZXJpY0BhaWIuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgc3ltYm9saWMuCgpTdW4gSnVsICAyIDE3OjQ4OjQwIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBDaGFuZ2UgdHlwZSBvZiBiYXNlX2ZpbGUgdG8KCVBUUi4KClRodSBKdW4gMjkgMDA6MDI6NDUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGRlZCBiYXNlX2ZpbGUgbWVtYmVyLgoKVHVlIEp1biAyMCAxNjo0MDowNCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogYW5zaWRlY2wuaDogd2luMzJzIGlzIEFOU0kgZW5vdWdoLgoKVGh1IE1heSAxOCAwNDoyNTo1MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJV2VkIE1heSAxMCAxNDoyODoxNiAxOTk1IFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybWx0ZC5jby51aykKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9hcm0pOiBEZWxldGUgZGVjbGFyYXRpb24uCgkocHJpbnRfaW5zbl97bGl0dGxlLGJpZ31fYXJtKTogTmV3IGRlY2xhcmF0aW9ucy4KCgkqIGZsb2F0Zm9ybWF0LmggKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEZWNsYXJlLgoKU2F0IE1heSAxMyAxMDoxNDowOCAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogY29mZi9wZS5oOiBOZXcgZmlsZS4KCSogYmZkbGluay5oIChzdWJzeXRlbSwgc3RhY2tfaGVhcF9wYXJhbWV0ZXJzKTogTmV3LgoJKiBjb2ZmL2kzODYuaCAoTlRfU0VDVElPTl9BTElHTk1FTlQsIE5UX0ZJTEVfQUxJR05NRU5ULAoJTlRfREVGX1JFU0VSVkUsIE5UX0RFRl9DT01NSVQpOiBOZXcuCgkqIGNvZmYvaW50ZXJuYWwuaCAoaW50ZXJuYWxfZmlsZWhkcik6ICBOZXcgZmllbGRzIGZvciBQRS4KCShJTUFHRV9EQVRBX0RJUkVDVE9SWSk6IE5ldy4KCShpbnRlcm5hbF9hb3V0aGRyKTogTmV3IGZpZWxkcyBmb3IgUEUuCgpUaHUgTWF5ICA0IDE0OjM2OjQyIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBhbnNpZGVjbC5oIGlmIElOX0dDQy4KClR1ZSBGZWIgMjEgMDA6Mzc6MjggMTk5NSAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogRG9uJ3QgdXNlIGJpdGZpZWxkIGVudW1lcmF0aW9ucywgdGhlIEhQIEMgY29tcGlsZXIKCWRvZXMgbm90IGhhbmRsZSB0aGVtIGNvcnJlY3RseS4KClRodSBGZWIgIDkgMTQ6MjA6MjcgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogRG9uJ3QgZGVjbGFyZSBwYXJhbWV0ZXIgdHlwZTsgc29tZQoJc3lzdGVtcyBoYXZlIHRoaXMgaW4gdGhlaXIgaGVhZGVyIGZpbGVzLgoKV2VkIEZlYiAgOCAxNzozNTozOCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIGZvcm1hdCBvZiBjb21tb24KCXN5bWJvbCBpbmZvcm1hdGlvbiwgdG8gcmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBtYXhpbXVtIHNpemUgYW5kCglhbGlnbm1lbnQgcG93ZXIsIGJ5IHVzaW5nIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBpbnN0ZWFkLgoKTW9uIEZlYiAgNiAxNDo1NTozMiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfaGFzaF90eXBlKTogUmVuYW1lIGJmZF9saW5rX2hhc2hfd2VhawoJdG8gYmZkX2xpbmtfaGFzaF91bmRlZndlYWsuICBBZGQgYmZkX2xpbmtfaGFzaF9kZWZ3ZWFrLgoKTW9uIEphbiAxNiAyMTowMDoyMyAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKEdEQl9JTklUX0RJU0FTU0VNQkxFX0lORk8sIGV0Yyk6IFJlbW92ZSBhbGwKCUdEQi1zcGVjaWZpYyBkZWZpbml0aW9ucy4KClN1biBKYW4gMTUgMTg6Mzk6MzUgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc3BsYXQ+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdzY1KTogRGVjbGFyZS4KClRodSBKYW4gMTIgMTc6NTE6MTcgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN1am8uY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChoZXhfcCk6IEZpeCBzZW5zZSBvZiB0ZXN0LgoKV2VkIEphbiAxMSAyMjozNjo0MCAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKF9oZXhfYXJyYXlfc2l6ZSwgX2hleF9iYWQsIF9oZXhfdmFsdWUsIGhleF9pbml0LAoJaGV4X3AsIGhleF92YWx1ZSk6IE5ldyBtYWNyb3MgYW5kIGRlY2xhcmF0aW9ucywgZm9yIGhleC5jLgoKRnJpIEphbiAgNiAxNzo0NDoxNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IE1ha2UgaWRlbXBvdGVudC4KCldlZCBEZWMgMTQgMTM6MDg6NDMgMTk5NCAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogcHJvZ3Jlc3MuaDogTmV3IGZpbGUsIGVtcHR5IGRlZmluaXRpb25zIGZvciBwcm9ncmVzcyBtYWNyb3MuCgpGcmkgTm92IDI1IDAwOjE0OjA1IDE5OTQgIEplZmYgTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogaHAtc3ltdGFiLmg6IE5ldyBmaWxlIGRlc2NyaWJpbmcgdGhlIGRlYnVnIHN5bWJvbHMgZW1pdHRlZAoJYnkgdGhlIEhQIEMgY29tcGlsZXJzLgoKRnJpIE5vdiAxMSAxNTo0ODozNyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGZyb20gMjQKCXRvIDI2IGJpdHMsIGFuZCBjaGFuZ2UgdS5jLmFsaWdubWVudF9wb3dlciBmcm9tIDggdG8gNiBiaXRzLiAgNgoJYml0IGluIHRoZSBhbGlnbm1lbnQgcG93ZXIgaXMgZW5vdWdoIGZvciBhIDY0IGJpdCBhZGRyZXNzIHNwYWNlLgoKTW9uIE9jdCAzMSAxMzowMjo1MSAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19tYW5nbGVfb3BuYW1lKTogRGVjbGFyZS4KClR1ZSBPY3QgMjUgMTE6Mzg6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBzYW5ndWluZS5jeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogRml4IGNvbW1lbnRzIGZvcgoJbXVsdGlwbGVfY29tbW9uIGZpZWxkLgoKU3VuIFNlcCAwNCAxNzo1ODoxMCAxOTk0ICBSaWNoYXJkIEVhcm5zaGF3IChyd2VAcGVnYXN1cy5lc3ByaXQuZWMub3JnKQoKCSogYW91dC9hb3V0NjQuaDogT25seSBkZWZpbmUgUU1BR0lDIGlmIGl0IGlzbid0IGFscmVhZHkgZGVmaW5lZC4KCgkqIGRpcy1hc20uaDogQWRkIHN1cHBvcnQgZm9yIHRoZSBBUk0uCgpXZWQgQXVnIDEwIDEyOjUxOjQxIDE5OTQgIERvdWcgRXZhbnMgIChkamVAY2FudWNrLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaCAoc3Ryc2lnbmFsKTogRG9jdW1lbnQgaXRzIGV4aXN0ZW5jZSBldmVuIGlmIHdlCgljYW4ndCBkZWNsYXJlIGl0LgoKVHVlIEF1ZyAgMiAxNDo0MDowMyAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogUmVtb3ZlIHVfaW50MTYsIHVfaW50MzIsIGFuZCBvd25lcl9pZCB0eXBlZGVmcyBhbmQKCWV4cGFuZCB0aGVpciB1c2VzLiAgVGhvc2UgbmFtZXMgY29uZmxpY3Qgd2l0aCBNYWNoIGhlYWRlcnMuCgpGcmkgSnVsIDIyIDE0OjE3OjEyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgaW50byBhCgliaXRmaWVsZC4gIEFkZCBmaWVsZCB1LmMuYWxpZ25tZW50X3Bvd2VyLgoKU3VuIEp1bCAxMCAwMDoyNjozOSAxOTk0ICBJYW4gRGFsbCAgKGRhbGxAaGZyZC5kc3RvLmdvdi5hdSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fbnMzMmsgZGVjbGFyYXRpb24uCgpNb24gSnVuIDIwIDE3OjEzOjI5IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfaGFzaF90YWJsZSk6IE1ha2UgY3JlYXRvciBhIGNvbnN0IHBvaW50ZXIuCgpTYXQgSnVuIDE4IDE2OjA5OjMyIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSk6IERlY2xhcmUuCgpUaHUgSnVuIDE2IDE1OjE5OjAzIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHNoYXJlZC4KCk1vbiBKdW4gIDYgMTQ6Mzk6NDQgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IFJlbW92ZSB3cml0dGVuIGZpZWxkOgoJbm90IG5lZWRlZCBmb3IgYWxsIGJhY2tlbmRzLgoKVGh1IEFwciAyOCAxOTowNjo1MCAxOTk0ICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXIpOiBEZWNsYXJlLgoKRnJpIEFwciAgMSAwMDozODoxNyAxOTk0ICBKaW0gV2lsc29uICAod2lsc29uQG1vbGUuZ251LmFpLm1pdC5lZHUpCgoJKiBvYnN0YWNrLmg6IERlbGV0ZSB1c2Ugb2YgSU5fR0NDIHRvIGNvbnRyb2wgd2hldGhlcgoJc3RkZGVmLmggb3IgZ3N0ZGRlZi5oIGlzIGluY2x1ZGVkLgoKVHVlIE1hciAyMiAxMzowNjowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfZGF0YV9saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCBkYXRhIGZpZWxkIHRvIHVuaW9uLgoKTW9uIE1hciAyMSAxODo0NToyNiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBDaGFuZ2UgYml0c2l6ZSBhcmd1bWVudAoJdG8gYWRkX3RvX3NldCB0byByZWxvYy4gIFJlbW92ZSBiaXRzaXplIGFyZ3VtZW50IGZyb20gY29uc3RydWN0b3IuCglDb21tZW50IHRoYXQgcmVsb2Nfb3ZlcmZsb3csIHJlbG9jX2Rhbmdlcm91cyBhbmQgdW5hdHRhY2hlZF9yZWxvYwoJbXVzdCBoYW5kbGUgTlVMTCBwb2ludGVycyBmb3IgcmVsb2MgbG9jYXRpb24uCgkoZW51bSBiZmRfbGlua19vcmRlcl90eXBlKTogQWRkIGJmZF9zZWN0aW9uX3JlbG9jX2xpbmtfb3JkZXIgYW5kCgliZmRfc3ltYm9sX3JlbG9jX2xpbmtfb3JkZXIuCgkoc3RydWN0IGJmZF9saW5rX29yZGVyKTogQWRkIHJlbG9jIGZpZWxkIHRvIHVuaW9uLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcl9yZWxvYyk6IERlZmluZS4KCk1vbiBNYXIgMTQgMTI6Mjc6NTAgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogaWVlZS1mbG9hdC5oOiBSZW1vdmVkOyBubyBsb25nZXIgdXNlZC4KClR1ZSBNYXIgIDEgMTg6MTA6NDkgMTk5NCAgS3VuZyBIc3UgIChrdW5nQG1leGljYW4uY3lnbnVzLmNvbSkKCgkqIG9zOWsuaDogb3M5MDAwIHRhcmdldCBzcGVjaWZpYyBoZWFkZXIgZmlsZSwgdGhlIGhlYWRlciBvZiB0aGUKCW9iamVjdCBmaWxlIGlzIHVzZWQgbm93LgoKU3VuIEZlYiAyNyAyMTo1MjoyNiAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0Lmg6IE5ldyBmaWxlLCBpbnRlbmRlZCB0byByZXBsYWNlIGllZWUtZmxvYXQuaC4KClN1biBGZWIgMjAgMTc6MTU6NDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBhbnNpZGVjbC5oIChBTlNJX1BST1RPVFlQRVMpOiBEZWZpbmUgaWYgdXNpbmcgQU5TSSBwcm90b3R5cGVzLgoKV2VkIEZlYiAxNiAwMTowNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogRG9uJ3QgZGVjbGFyZSBzdHJzaWduYWwsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoCglTb2xhcmlzIHN5c3RlbSBoZWFkZXIgZmlsZXMuCgpTYXQgRmViIDEyIDIyOjExOjMyIDE5OTQgIEplZmZyZXkgQS4gTGF3ICAobGF3QHNuYWtlLmNzLnV0YWguZWR1KQoKCSogbGliaWJlcnR5LmggKHhleGl0KTogVXNlIF9fdm9sYXRpbGVfXyB0byBhdm9pZCBsb3NpbmcgaWYKCWNvbXBpbGluZyB3aXRoIGdjYyAtdHJhZGl0aW9uYWwuCgpUaHUgRmViIDEwIDE0OjA1OjQxIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oOiBOZXcgZmlsZS4gIERlY2xhcmVzIGZ1bmN0aW9ucyBwcm92aWRlZCBieQoJbGliaWJlcnR5LgoKVHVlIEZlYiAgOCAwNToxOTo1MiAxOTk0ICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJSGFuZGxlIG9ic3RhY2tfY2h1bmtfYWxsb2MgcmV0dXJuaW5nIE5VTEwuICBUaGlzIGFsbG93cwoJb2JzdGFja3MgdG8gYmUgdXNlZCBieSBsaWJyYXJpZXMsIHdpdGhvdXQgZm9yY2luZyB0aGVtCgl0byBjYWxsIGV4aXQgb3IgbG9uZ2ptcC4KCSogb2JzdGFjay5oIChzdHJ1Y3Qgb2JzdGFjayk6IEFkZCBhbGxvY19mYWlsZWQgZmxhZy4KCV9vYnN0YWNrX2JlZ2luLCBfb2JzdGFja19iZWdpbl8xKTogRGVjbGFyZSB0byByZXR1cm4gaW50LCBub3Qgdm9pZC4KCShvYnN0YWNrX2ZpbmlzaCk6IElmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIE5VTEwuCgkob2JzdGFja19iYXNlLCBvYnN0YWNrX25leHRfZnJlZSwgb2Jqc3RhY2tfb2JqZWN0X3NpemUpOgoJSWYgYWxsb2NfZmFpbGVkLCByZXR1cm4gMC4KCShvYnN0YWNrX2dyb3csIG9ic3RhY2tfZ3JvdzAsIG9ic3RhY2tfMWdyb3csIG9ic3RhY2tfcHRyX2dyb3csCglvYnN0YWNrX2ludF9ncm93LCBvYnN0YWNrX2JsYW5rKTogSWYgYWxsb2NfZmFpbGVkLCBkbyBub3RoaW5nIHRoYXQKCWNvdWxkIGNvcnJ1cHQgdGhlIG9ic3RhY2suCgpNb24gSmFuIDI0IDE1OjA2OjA1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBuYW1lLCByZWxvY19uYW1lIGFuZAoJYWRkZW5kIGFyZ21lbnRzIHRvIHJlbG9jX292ZXJmbG93IGNhbGxiYWNrLgoKRnJpIEphbiAyMSAxOToxMzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYmlnX3Bvd2VycGMsIHByaW50X2luc25fbGl0dGxlX3Bvd2VycGMsCglwcmludF9pbnNuX3JzNjAwMCk6IERlY2xhcmUuCgpUaHUgSmFuICA2IDE0OjE1OjU1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2NhbGxiYWNrcyk6IEFkZCBiaXRzaXplIGFyZ3VtZW50IHRvCglhZGRfdG9fc2V0IGZpZWxkLiAgQWRkIG5ldyBjYWxsYmFjayBuYW1lZCBjb25zdHJ1Y3Rvci4KClRodSBEZWMgMzAgMTA6NDQ6MDYgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBydGwuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaDogTmV3IGZpbGUgZm9yIG5ldyBCRkQgbGlua2VyIGJhY2tlbmQgcm91dGluZXMuCgpNb24gTm92IDI5IDEwOjQzOjU3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZW51bSBkaXNfaW5zbl90eXVwZSk6IFJlbW92ZSBub24tQU5TSSB0cmFpbGluZyBjb21tYS4KClNhdCBPY3QgIDIgMjA6NDI6MjYgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IE1vdmUgY29tbWVudCB0byByaWdodCBwbGFjZS4KCk1vbiBBdWcgIDkgMTk6MDM6MzUgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oIChvYnN0YWNrX2NodW5rZnVuLCBvYnN0YWNrX2ZyZWVmdW4pOiBBZGQgZGVmbnMgZnJvbQoJcHJldmlvdXMgdmVyc2lvbi4gIEFyZSB0aGVzZSBDeWdudXMgbG9jYWwgY2hhbmdlcz8KCkZyaSBBdWcgIDYgMTc6MDU6NDcgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCk1vbiBBdWcgIDIgMTY6Mzc6MTQgMTk5MyAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGNvZmYvaTM4Ni5oOiAgQWRkIEx5bnggbWFnaWMgbnVtYmVyLgoKTW9uIEF1ZyAgMiAxNDo0NToyOSAxOTkzICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIE1vdmUgZW51bSBvdXRzaWRlIG9mIHN0cnVjdCBkZWZuIHRvIGF2b2lkIHdhcm5pbmdzLgoKTW9uIEF1ZyAgMiAwODo0OTozMCAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXRVhJVFNUQVRVUywgV1NUT1BTSUcpOiBNYXNrIGRvd24gdG8gOCBiaXRzLiAgVGhpcyBpcwoJZm9yIHN5c3RlbXMgdGhhdCBzdG9yZSBzdHVmZiBpbnRvIHRoZSBoaWdoIDE2IGJpdHMgb2YgYSB3YWl0CglzdGF0dXMuCgpGcmkgSnVsIDMwIDE4OjM4OjAyIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgQWRkIG5ldyBmaWVsZHMgaW5zbl9pbmZvX3ZhbGlkLCBicmFuY2hfZGVsYXlfaW5zbnMsCglkYXRhX3NpemUsIGluc25fdHlwZSwgdGFyZ2V0LCB0YXJnZXQyLiAgVGhlc2UgYXJlIHVzZWQgdG8gcmV0dXJuCglpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbnN0cnVjdGlvbiBkZWNvZGVycyBiYWNrIHRvIHRoZSBjYWxsaW5nCglwcm9ncmFtLiAgQWRkIGNvbW1lbnRzLCBtYWtlIG1vcmUgcmVhZGFibGUuCgpNb24gSnVsIDE5IDIyOjE0OjE0IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBkZW5lYi5jeWdudXMuY29tKQoKCSogbmxtOiAgTmV3IGRpcmVjdG9yeSBjb250YWluaW5nIE5MTS9OZXRXYXJlIGluY2x1ZGVzLgoKVGh1IEp1bCAxNSAxMjoxMDowNCAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY2FtYnJpZGdlLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkIGFwcGxpY2F0aW9uX2RhdGEuCgpUaHUgSnVsIDE1IDEyOjQxOjE1IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkZWQgZGVjbGFyYXRpb24gb2YgcHJpbnRfaW5zbl9tODhrLgoKVGh1IEp1bCAgOCAwOTowNToyNiAxOTkzICBEb3VnIEV2YW5zICAoZGplQGNhbnVjay5jeWdudXMuY29tKQoKCSogb3Bjb2RlL2g4MzAwLmg6IExvdHMgb2YgbGl0dGxlIGZpeGVzIGZvciB0aGUgaDgvMzAwaC4KCkZyaSBKdWwgIDIgMTA6MzE6NTkgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgbWFjcm9zIGlmIF9fbWlwcyBhbmQgX1NZU1RZUEVfU1ZSNCBhcmUKCWRlZmluZWQsIHNpbmNlIFJJU0MvT1MgY2MgaGFuZGxlcyBBTlNJIGRlY2xhcmF0aW9ucyBpbiBTVlI0IG1vZGUKCWJ1dCBkb2VzIG5vdCBkZWZpbmUgX19TVERDX18uCgpTdW4gSnVuIDIwIDE4OjI3OjUyIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBwb3NlaWRvbi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBEb24ndCBuZWVkIHRvIGluY2x1ZGUgYW5zaWRlY2wuaCBhbnkgbW9yZS4KCkZyaSBKdW4gMTggMDM6MjI6MTAgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBvYXN5cy5oOiAgRWxpbWluYXRlICJpbnQ4X3R5cGUiLCAiaW50MTZfdHlwZSIsICJpbnQzMl90eXBlIiwgYW5kCgl0aGVpciB2YXJpYW50cy4gIFRoZXNlIGNoYW5nZXMgYXJlIGNvb3JkaW5hdGVkIHdpdGggY29ycmVzcG9uZGluZwoJY2hhbmdlcyBpbiAuLi9iZmQvb2FzeXMuYy4KCldlZCBKdW4gMTYgMTA6NDM6MDggMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBiZmQuaDogIE5vdGUgdGhhdCBpdCBoYXMgYmVlbiByZW1vdmVkLgoKVHVlIEp1biAgOCAxMjoxNjowMyAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0BwaHlkZWF1eC5jeWdudXMuY29tKQoKCSBTdXBwb3J0IGZvciBIOC8zMDAtSAoJKiBkaXMtYXNtLmggKHByaW50X2luc25faDgzMDAsIHByaW50X2luc25faDgzMDBoKTogRGVjbGFyZSBpdC4KCSogY29mZi9oODMwMC5oOiBOZXcgbWFnaWMgbnVtYmVyLgoJKiBjb2ZmL2ludGVybmFsLmg6IE5ldyByZWxvY2F0aW9ucy4KCSogb3Bjb2RlL2g4MzAwLmg6IExvdHMgb2YgbmV3IG9wY29kZXMuCgpUdWUgSnVuICAxIDA3OjM1OjAzIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBrci1wYy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoY29uc3QpOiBEb24ndCBkZWZpbmUgaXQgaWYgaXQncyBhbHJlYWR5IGRlZmluZWQuCgpUaHUgTWF5IDI3IDE4OjE5OjUxIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9ocHBhKTogRGVjbGFyZSBpdC4KCgkqIGJmZC5oOiBNb3ZlZCB0byBiZmQgZGlyZWN0b3J5LiAgU21hbGwgc3R1YiBoZXJlIGluY2x1ZGVzIGl0Cgl3aXRob3V0IHJlcXVpcmluZyAiLUkuLi9iZmQiLgoKVGh1IEFwciAyOSAxMjowNjoxMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggQlNGX0ZVTkNUSU9OLgoKTW9uIEFwciAyNiAxODoxNTo1MCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBkaXMtYXNtLmg6IFVwZGF0ZWQgd2l0aCBIaXRhY2hpIFNILgoKRnJpIEFwciAyMyAxODo0MTozOCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggYWxwaGEgY2hhbmdlcy4KCSogZGlzLWFzbS5oOiBBZGRlZCBhbHBoYS4KCkZyaSBBcHIgMTYgMTc6MzU6MzAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBzaWduZWQgYmZkXypnZXRfKi4KClRodSBBcHIgMTUgMDk6MjQ6MjEgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgZmlsZV90cnVuY2F0ZWQgZXJyb3IuCgpUaHUgQXByICA4IDEwOjUzOjQ3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IElmIG5vIEFOU0ksIGRlZmluZSBjb25zdCB0byBiZSBlbXB0eS4KClRodSBBcHIgIDEgMDk6MDA6MTAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IERlY2xhcmUgYTI5ayBhbmQgaTk2MCBwcmludF9pbnNuXyouCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9hZGRyZXNzX2Z1bmMgYW5kIHJlbGF0ZWQgc3R1ZmYuCgoJKiBkaXMtYXNtLmggKGRpc19hc21fcmVhZF9tZW1vcnkpOiBGaXggcHJvdG90eXBlLgoKV2VkIE1hciAzMSAxNzo0MDoxNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fc3BhcmMuCgpXZWQgTWFyIDMxIDE3OjUxOjQyIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZvciBCRkRfUkVMT0NfTUlQU19HUFJFTCBhbmQgYmZkX1tnc11ldF9ncF9zaXplCglwcm90b3R5cGVzLgoKV2VkIE1hciAzMSAxNjozNToxMiAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBGaXggdHlwbyBpbiBwcm90b3R5cGUgb2YKCWRpc19hc21fbWVtb3J5X2Vycm9yKCkuCgpUdWUgTWFyIDMwIDE5OjA5OjIzIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXJfaW5mbyk6IEFkZCByZWFkX21lbW9yeV9mdW5jLAoJbWVtb3J5X2Vycm9yX2Z1bmMsIGJ1ZmZlciwgYW5kIGxlbmd0aC4KCSh7R0RCXyx9SU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IHRoZW0uCglwcmludF9pbnNuXyo6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgpUdWUgTWFyIDMwIDE0OjQ4OjU1IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbG1hIGZpZWxkIG9mIHNlY3Rpb24uCgpUdWUgTWFyIDMwIDEyOjIyOjU1IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgdmVyc2lvbnMgb24gQUlYIHJlZ2FyZGxlc3Mgb2YgX19TVERDX18uCgpGcmkgTWFyIDE5IDE0OjQ5OjQ5IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGQgaDg1MDAuCgpUaHUgTWFyIDE4IDEzOjQ5OjA5IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogIE1vdmVkIGZyb20gLi4vZ2RiLgoJKiBkaXMtYXNtLmg6ICBOZXcgZmlsZS4gIEludGVyZmFjZSB0byBkaXMtYXNzZW1ibGVyLgoKVGh1IE1hciAxMSAxMDo1Mjo1NyAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKERNR0xfTk9fT1BUUyk6ICBBZGQgZGVmaW5lIChzZXQgdG8gMCkgdG8gdXNlCglpbiBwbGFjZSBvZiBiYXJlIDAsIGZvciByZWFkYWJpbGl0eSByZWFzb25zLgoKVHVlIE1hciAgMiAxNzo1MDoxMSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIGNmcm9udCB3aXRoIEFSTS4KClR1ZSBGZWIgMjMgMTI6MjE6MTQgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbmV3IGVsZW1lbnRzIGluIEpVTVBfVEFCTEUuCgpUdWUgRmViIDE2IDAwOjUxOjMwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgZm9yIEJGRF9WRVJTSU9OIDIuMS4KClR1ZSBKYW4gMjYgMTE6NDk6MjAgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgU0VDX0lTX0NPTU1PTiBmbGFnLgoKVHVlIEphbiAxOSAxMjoyNToxMiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBiZmRfYXN5bWJvbF92YWx1ZSBidWcgZml4LgoKRnJpIEphbiAgOCAxNjozNzoxOCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIHRvIGluY2x1ZGUgRUNPRkYgdGRhdGEgYW5kIHRhcmdldF9mbGF2b3VyLgoKU3VuIERlYyAyNyAxNzo1MjozMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgQWRkIGRlY2xhcmF0aW9uIGZvciBiZmRfZ2V0X3NpemUoKS4KClR1ZSBEZWMgMjIgMjI6NDI6NDYgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUHJvdGVjdCBmaWxlIGZyb20gbXVsdGlwbGUgaW5jbHVzaW9ucyB3aXRoCgkjaWYgIWRlZmluZWQoREVNQU5HTEVfSCkuLi4jZGVmaW5lIERFTUFOR0xFX0guLi4jZW5kaWYuCgpNb24gRGVjIDIxIDIxOjI1OjUwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgaHBwYV9jb3JlX3N0cnVjdCBmcm9tIGJmZC5jLgoKVGh1IERlYyAxNyAwMDo0MjozNSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIGdldCB0ZWtoZXggdGRhdGEgbmFtZSBjaGFuZ2UgZnJvbSBiZmQuCgpNb24gTm92ICA5IDIzOjU1OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIFVwZGF0ZSBjb21tZW50cyB0byBkaXNjb3VyYWdlIHVzZSBvZiBFWEZVTi4KClRodSBOb3YgIDUgMTY6MzU6NDQgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBicmluZyBpbiBTRUNfU0hBUkVEX0xJQlJBUlkuCgpUaHUgTm92ICA1IDAzOjIxOjMyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggRVhGVU4sIGJmZF9zZWNsZXRfc3RydWN0LCBhbmQgU0RFRgoJY2xlYW51cHMgaW4gYmZkLgoKV2VkIE5vdiAgNCAwNzoyODowNSAxOTkyICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3lnbnVzLmNvbSkKCgkqIGJvdXQuaCAoTl9DQUxMTkFNRSwgTl9CQUxOQU1FKTogRGVmaW5lIGFzIGNoYXItdHlwZSB2YWx1ZXMsIHNvCgl3aWRlbmluZyB3b3JrcyBjb25zaXN0ZW50bHkuCgpGcmkgT2N0IDE2IDAzOjE3OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6ICBVcGRhdGUgdG8gUmV2aXNlZCBTdGFuZGFyZCBGU0YgVmVyc2lvbi4KClRodSBPY3QgMTUgMjE6NDM6MjIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHNlbmRhaS5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmggKHN0cnVjdCBvcHRpb24pOiB1c2UgdGhlIHByb3ZpZGVkIGVudW0gZm9yIGhhc19hcmcuCgoJKiBkZW1hbmdsZS5oIChBVVRPX0RFTUFOR0xJTkcsIEdOVV9ERU1BTkdMSU5HLAoJICBMVUNJRF9ERU1BTkdMSU5HKTogdWx0cml4IGNvbXBpbGVycyByZXF1aXJlIGVudW1zIHRvIGJlCgkgIGVudW1zIGFuZCBpbnRzIHRvIGJlIGludHMgYW5kIGNhc3RzIHdoZXJlIHRoZXkgbWVldC4gIGNhc3Qgc29tZQoJICBlbnVtcyBpbnRvIGludHMuCgpUaHUgT2N0IDE1IDA0OjM1OjUxIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgYWZ0ZXIgY29tbWVudCBjaGFuZ2VzLgoKVGh1IE9jdCAgOCAwOTowMzowMiAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBuZXcgbWFjcm8gZm9yIGdldHRpbmcgaW4geHZlYwoKVGh1IFNlcCAgMyAwOToxMDo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggKHN0cnVjdCByZWxvY19ob3d0b19zdHJ1Y3QpOiAgc2l6ZSBuZWVkcyB0byBiZSBzaWduZWQgaWYKCWl0J3MgZ29pbmcgdG8gaG9sZCBuZWdhdGl2ZSB2YWx1ZXMuCgpTdW4gQXVnIDMwIDE3OjUwOjI3IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBOZXcgZmlsZSwgbW92ZWQgZnJvbSAuLi9nZGIuICBNYWRlIGluZGVwZW5kZW50CglvZiBnZGIuICBBbGxvdyBkZW1hbmdsaW5nIHN0eWxlIG9wdGlvbiB0byBiZSBwYXNzZWQgYXMgYQoJcGFyYW1ldGVyIHRvIGNwbHVzX2RlbWFuZ2xlKCksIGJ1dCB1c2luZyB0aGUKCWN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSBnbG9iYWwgYXMgdGhlIGRlZmF1bHQuCgpTYXQgQXVnIDI5IDEwOjA3OjU1IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgTWVyZ2UgY29tbWVudCBjaGFuZ2UgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IEF1ZyAyNyAxMjo1OToyOSAxOTkyICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IGFkZCB3ZTMyawoKVHVlIEF1ZyAyNSAxNTowNzo0NyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgWjgwMDAgc3R1ZmYKCk1vbiBBdWcgMTcgMDk6MDE6MjMgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogUmVnZW5lcmF0ZWQgYWZ0ZXIgcGFnZS9zZWdtZW50IHNpemUgY2hhbmdlcy4KClNhdCBBdWcgIDEgMTM6NDY6MzEgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IE1lcmdlIGNoYW5nZXMgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKTW9uIEp1bCAyMCAyMTowNjoyMyAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAoYXJlYV9pZCwgZmxhZ3MpOiAgUmVtb3ZlLCByZXBsYWNlIHdpdGggZXh0cmFfYXJnLAoJdXNlX2V4dHJhX2FyZywgYW5kIG1heWJlX2VtcHR5X29iamVjdC4KCSogb2JzdGFjay5oIChPQlNUQUNLX01BWUJFX0VNUFRZX09CSkVDVCwgT0JTVEFDS19NTUFMTE9DX0xJS0UpOgoJUmVtb3ZlLCByZXBsYWNlZCBieSBtYXliZV9lbXB0eV9vYmplY3QgYW5kIHVzZV9leHRyYV9hcmcgYml0ZmllbGRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZnVsbF9iZWdpbiwgX29ic3RhY2tfYmVnaW4pOiAgUmVtb3ZlIGFyZWFfaWQKCWFuZCBmbGFncyBhcmd1bWVudHMuCgkqIG9ic3RhY2suaCAob2JzdGFja19hbGxvY19hcmcpOiAgTmV3IG1hY3JvIHRvIHNldCBleHRyYV9hcmcuCgpUaHUgSnVsIDE2IDA4OjEyOjQ0IDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IG5ldyBhZnRlciBhZGRpbmcgQkZEX0lTX1JFTEFYQUJMRQoKU2F0IEp1bCAgNCAwMzoyMjoyMyAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVnZW4gYWZ0ZXIgYWRkaW5nIEJTRl9GSUxFLgoKTW9uIEp1biAyOSAxNDoxODozNiAxOTkyICBGcmVkIEZpc2ggIChmbmYgYXQgc3VuZmlzaCkKCgkqIG9ic3RhY2suaDogIENvbnZlcnQgYmNvcHkoKSB1c2UgdG8gbWVtY3B5KCksIHdoaWNoIGlzIG1vcmUKCXBvcnRhYmxlLCBtb3JlIHN0YW5kYXJkLCBhbmQgY2FuIHRha2UgYWR2YW50YWdlIG9mIGdjYydzIGJ1aWx0aW4KCWZ1bmN0aW9ucyBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLgoKVGh1IEp1biAyNSAwNDo0NjowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKFBBUkFNUyk6ICBJbmNvcnBvcmF0ZSB0aGlzIG1hY3JvIGZyb20gZ2RiJ3MgZGVmcy5oLgoJSXQncyBhIGNsZWFuZXIgd2F5IHRvIGZvcndhcmQtZGVjbGFyZSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKRnJpIEp1biAxOSAxNTo0NjozMiAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBIUFBBIG1lcmdlLgoKVHVlIEp1biAxNiAyMTozMDo1NiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBncmF0dWl0b3VzIHdoaXRlIHNwYWNlIGNoYW5nZXMgbWVyZ2VkIGZyb20gb3RoZXIgcHJlcAoJICByZWxlYXNlcy4KClRodSBKdW4gMTEgMDE6MTA6NTUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuJ2QgZnJvbSBiZmQuYyBhZnRlciByZW1vdmluZyBlbGZfY29yZV90ZGF0YV9zdHJ1Y3QuCgpNb24gTWF5IDE4IDE3OjI5OjAzIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gbWFrZS0zLjYyLjExLgoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gZ3JlcC0xLjYgKGFscGhhKS4KCkZyaSBNYXkgIDggMTQ6NTM6MzIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBiaXNvbi0xLjE4LgoKU2F0IE1hciAxNCAxNzoyNToyMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCAiYXJlYV9pZCIgYW5kICJmbGFncyIgbWVtYmVycyB0byBvYnN0YWNrCglzdHJ1Y3R1cmUuICBBZGQgb2JzdGFja19jaHVua2Z1bigpIGFuZCBvYnN0YWNrX2ZyZWVmdW4oKSB0bwoJc2V0IGZ1bmN0aW9ucyBleHBsaWNpdGx5LiAgQ29udmVydCBtYXliZV9lbXB0eV9vYmplY3QgdG8KCWEgYml0IGluICJmbGFncyIuCgpUaHUgRmViIDI3IDIyOjAxOjAyIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXSUZTVE9QUEVEKTogIEFkZCBJQk0gcnM2MDAwLXNwZWNpZmljIHZlcnNpb24uCgpGcmkgRmViIDIxIDIwOjQ5OjIwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQWRkIG9ic3RhY2tfZnVsbF9iZWdpbi4KCSogYmZkLmgsIG9ic3RhY2suaDogIFByb3RvbGludC4KClRodSBKYW4gMzAgMDE6MTg6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlbW92ZSBjb21tYSBmcm9tIGVudW0gZGVjbGFyYXRpb24uCgpNb24gSmFuIDI3IDIyOjAxOjEzIDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCA6IG5ldyB0YXJnZXQgZW50ciwgYmZkX3JlbGF4X3NlY3Rpb24KCldlZCBEZWMgMTggMTc6MTk6NDQgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBpZWVlLmgsIG9wY29kZS9tNjhrLmgsIG9wY29kZS9zcGFyYy5oOiAgQU5TSWZ5IGVudW1zLgoKVGh1IERlYyAxMiAyMDo1OTo1NiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGZvcGVuLXNhbWUuaCwgZm9wZW4tYmluLmg6ICBOZXcgZmlsZXMgZm9yIGNvbmZpZ3VyaW5nCgl3aGV0aGVyIGZvcGVuIGRpc3Rpbmd1aXNoZXMgYmluYXJ5IGZpbGVzIG9yIG5vdC4gIEZvciB1c2UKCWJ5IGhvc3QtZGVwZW5kZW50IGNvbmZpZyBmaWxlcy4KClNhdCBOb3YgMzAgMjA6NDY6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCgoJKiBiZmQuaDogY2hhbmdlIHRoZSBkb2N1bWVudGF0aW9uIGZvcm1hdC4KCgkqIGNyZWF0ZWQgY29mZiwgZWxmIGFuZCBvcGNvZGUgYW5kIGFvdXQgZGlyZWN0b3JpZXMuIE1vdmVkOgoKCWFvdXQ2NC5oCT09PiBhb3V0L2FvdXQ2NC5oCglhci5oCQk9PT4gYW91dC9hci5oCglhLm91dC5lbmNhcC5oCT09PiBhb3V0L2VuY2FwLmgKCWEub3V0Lmhvc3QuaAk9PT4gYW91dC9ob3N0LmgKCWEub3V0LmhwLmgJPT0+IGFvdXQvaHAuaAoJYS5vdXQuc3VuNC5oCT09PiBhb3V0L3N1bjQuaAoJcmFubGliLmgJPT0+IGFvdXQvcmFubGliLmgKCXJlbG9jLmgJCT09PiBhb3V0L3JlbG9jLmgKCXN0YWIuZGVmCT09PiBhb3V0L3N0YWIuZGVmCglzdGFiLmdudS5oCT09PiBhb3V0L3N0YWJfZ251LmgKCgljb2ZmLWEyOWsuaAk9PT4gY29mZi9hMjlrLmgKCWNvZmYtaDgzMDAuaAk9PT4gY29mZi9oODMwMC5oCgljb2ZmLWkzODYuaAk9PT4gY29mZi9pMzg2LmgKCWNvZmYtaTk2MC5oCT09PiBjb2ZmL2k5NjAuaAoJaW50ZXJuYWxjb2ZmLmgJPT0+IGNvZmYvaW50ZXJuYWwuaAoJY29mZi1tNjhrLmgJPT0+IGNvZmYvbTY4ay5oCgljb2ZmLW04OGsuaAk9PT4gY29mZi9tODhrLmgKCWNvZmYtbWlwcy5oCT09PiBjb2ZmL21pcHMuaAoJY29mZi1yczYwMDAuaAk9PT4gY29mZi9yczYwMDAuaAoKCWVsZi1jb21tb24uaAk9PT4gZWxmL2NvbW1vbi5oCglkd2FyZi5oCQk9PT4gZWxmL2R3YXJmLmgKCWVsZi1leHRlcm5hbC5oCT09PiBlbGYvZXh0ZXJuYWwuaAoJZWxmLWludGVybmFsLmggID09PiBlbGYvaW50ZXJuYWwuaAoKCWEyOWstb3Bjb2RlLmgJPT0+IG9wY29kZS9hMjlrLmgKCWFybS1vcGNvZGUuaAk9PT4gb3Bjb2RlL2FybS5oCgloODMwMC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2g4MzAwLmgKCWkzODYtb3Bjb2RlLmgJPT0+IG9wY29kZS9pMzg2LmgKCWk4NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pODYwLmgKCWk5NjAtb3Bjb2RlLmgJPT0+IG9wY29kZS9pOTYwLmgKCW02OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tNjhrLmgKCW04OGstb3Bjb2RlLmgJPT0+IG9wY29kZS9tODhrLmgKCW1pcHMtb3Bjb2RlLmgJPT0+IG9wY29kZS9taXBzLmgKCW5wMS1vcGNvZGUuaAk9PT4gb3Bjb2RlL25wMS5oCgluczMyay1vcGNvZGUuaAk9PT4gb3Bjb2RlL25zMzJrLmgKCXBuLW9wY29kZS5oCT09PiBvcGNvZGUvcG4uaAoJcHlyLW9wY29kZS5oCT09PiBvcGNvZGUvcHlyLmgKCXNwYXJjLW9wY29kZS5oCT09PiBvcGNvZGUvc3BhcmMuaAoJdGFob2Utb3Bjb2RlLmgJPT0+IG9wY29kZS90YWhvZS5oCgl2YXgtb3Bjb2RlLmgJPT0+IG9wY29kZS92YXguaAoKCgpXZWQgTm92IDI3IDEwOjM4OjMxIDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IChpbnRlcm5hbF9zY25oZHIpIHRvb2sgb3V0ICNkZWYgZGVwZW5kZW5jeSwgbm93CglzX25yZWxvYyBhbmQgc19ubG5ubyBhcmUgYWx3YXlzIGxvbmcuIAkoaW50ZXJuYWxfcmVsb2MpOiBhbGx3YXlzCgloYXMgYW4gb2Zmc2V0IGZpZWxkIG5vdy4KCkZyaSBOb3YgMjIgMDg6MTI6NTggMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBjb2ZmLXJzNjAwMC5oOiAgTGludDsgdXNlIHVuc2lnbmVkIGNoYXJzIGZvciBleHRlcm5hbCBmaWVsZHMuCgkqIGludGVybmFsY29mZi5oOiAgTGludDsgY2FzdCBzdG9yYWdlIGNsYXNzZXMgdG8gc2lnbmVkIGNoYXIuCgpUaHUgTm92IDIxIDIxOjAxOjA1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3RhYi5kZWY6IFJlbW92ZSB0aGUgR05VIGV4dGVuZGVkIHR5cGUgY29kZXMgKGUuZy4gTl9TRVRUKS4KCSogYW91dDY0Lmg6ICBUaGUgaGV1cmlzdGljIGZvciBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuCglzdW5vcy1zdHlsZSBhbmQgYnNkLXN0eWxlIFpNQUdJQyBmaWxlcyAod3J0LiB3aGVyZSB0aGUKCXRleHQgc2VnbWVudCBzdGFydHMpIGlzIG1vdmVkIGludG8gKHRoZSBkZWZhdWx0IGRlZmluaXRpb24gb2YpCgl0aGUgbWFjcm8gTl9IRUFERVJfSU5fVEVYVC4gIFRoaXMgZGVmaW5pdGlvbiBpcyBvbmx5IHVzZWQKCWlmIG5vIG90aGVyIGRlZmluaXRpb24gaXMgdXNlZCAtIGUuZy4gYmZkL25ld3NvczMuYyBkZWZpbmVzCglOX0hFQURFUl9JTl9URVhUKHgpIHRvIGJlIGFsd2F5cyAwIChhcyBiZWZvcmUpLgoKVGh1IE5vdiAyMSAxMTo1MzowMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oIChOX1RYVEFERFIsIE5fVFhUT0ZGLCBOX1RYVFNJWkUpOiAgTmV3IGRlZmluaXRpb25zCgl0aGF0IHNob3VsZCBoYW5kbGUgYWxsIHVzZXMuICBMT0dJQ0FMXyB2ZXJzaW9ucyBkZWxldGVkLgoJRWxpbWluYXRlIE5fSEVBREVSX0lOX1RFWFQsIHVzaW5nIGFfZW50cnkgdG8gZGV0ZXJtaW5lIHdoaWNoCglraW5kIG9mIHptYWdpYyBhLm91dCBmaWxlIHdlIGFyZSBsb29raW5nIGF0LgoJKiBjb2ZmLXJzNjAwMC5oOiAgVHlwby4KClR1ZSBOb3YgMTkgMTg6NDM6MzcgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKE5vdGU6ICBUaGlzIGlzIGEgcmV2aXNlZCBlbnRyeSwgYXMgd2FzIGFvdXQ2NC5oLikKCSogYW91dDY0Lmg6ICBTb21lIGNsZWFudXBzIG9mIE5fVFhUQUREUiBhbmQgTl9UWFRPRkY6CglXaWxsIG5vdyB3b3JrIGZvciBib3RoIG9sZC0gYW5kIG5ldy1zdHlsZSBaTUFHSUMgZmlsZXMsCglkZXBlbmRpbmcgb24gTl9IRUFERVJfSU5fVEVYVCBtYWNyby4KCUFkZCBMT0dJQ0FMX1RYVEFERFIsIExPSUNBTF9UWFRPRkYgYW5kIExPR0lDQUxfVFhUU0laRQoJdGhhdCBkb24ndCBjb3VudCB0aGUgZXhlYyBoZWFkZXIgYXMgcGFydAoJb2YgdGhlIHRleHQgc2VnbWVudCwgdG8gYmUgY29uc2lzdGVudCB3aXRoIGJmZC4KCSogYS5vdXQuc3VuNC5oOiAgU2ltcGxpZmllZC9maXhlZCBmb3IgcHJldmlvdXMgY2hhbmdlLgoKTW9uIE5vdiAxOCAwMDowMjowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6ICBVcGRhdGUgdG8gRFdBUkYgZHJhZnQgNSB2ZXJzaW9uIGZyb20gZ2NjMi4KClRodSBOb3YgMTQgMTk6NDQ6NTkgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogIEFkZGVkIGRlZnMgZm9yIGV4dGVuZGVkIEdOVSBzeW1ib2wgdHlwZXMsCglzdWNoIGFzIE5fU0VUVC4gIFRoZXNlIGFyZSBub3JtYWxseSBpZmRlZidkIG91dCAoYmVjYXVzZQoJb2YgY29uZmxpY3RzIHdpdGggYS5vdXQuZ251LmgpLCBidXQgYXJlIHVzZWQgYnkgYmZiX3N0YWJfbmFtZSgpLgoKVGh1IE5vdiAxNCAxOToxNzowMyAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1jb21tb24uaDogIEFkZCBkZWZpbmVzIHRvIHN1cHBvcnQgRUxGIHN5bWJvbCB0YWJsZSBjb2RlLgoKTW9uIE5vdiAxMSAxOTowMTowNiAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGVsZi1pbnRlcm5hbC5oLCBlbGYtZXh0ZXJuYWwuaCwgZWxmLWNvbW1vbi5oOiAgQWRkIHN1cHBvcnQgZm9yCglub3RlIHNlY3Rpb25zLCB3aGljaCBhcmUgdXNlZCBpbiBFTEYgY29yZSBmaWxlcyB0byBob2xkIGNvcGllcwoJb2YgdmFyaW91cyAvcHJvYyBzdHJ1Y3R1cmVzLgoKVGh1IE5vdiAgNyAwODo1ODoyNiAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBjeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmg6IHRvb2sgb3V0IHRoZSBNODggZGVwZW5kZW5jeSBpbiB0aGUgbGluZW5vCglzdHJ1Y3QuCgkqIGNvZmYtbTg4ay5oOiBkZWZpbmVzIEdFVF9MSU5FTk9fTE5OTyBhbmQgUFVUX0xJTkVOT19MTk5PIHRvIHVzZQoJMzJiaXQgbGlubm8gZW50cmllcy4KCSogYTI5ay1vcGNvZGUuaDogZml4ZWQgZW5jb2Rpbmcgb2YgbXRhY2MKClN1biBOb3YgIDMgMTE6NTQ6MjIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmcm9tIC4uL2JmZC9iZmQtaW4uaCAocS52KS4KCkZyaSBOb3YgIDEgMTE6MTM6NTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCB4X2NzZWN0IGRlZmluZXMuCgpGcmkgT2N0IDI1IDAzOjE4OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogUmVuYW1lIENPRkYtcmVsYXRlZCBmaWxlcyBpbiBgY29mZi1BUkNILmgnIGZvcm0uCgljb2ZmLWEyOWsuaCwgY29mZi1pMzg2LmgsIGNvZmYtaTk2MC5oLCBjb2ZmLW02OGsuaCwgY29mZi1tODhrLmgsCgljb2ZmLW1pcHMuaCwgY29mZi1yczYwMDAuaCB0byBiZSBleGFjdC4KClRodSBPY3QgMjQgMjI6MTE6MTEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJUlMvNjAwMCBzdXBwb3J0LCBieSBNZXRpbiBHLiBPemlzaWssIE1pbWkgUGj79G5nLVRo5W8gVvUsIGFuZAoJSm9obiBHaWxtb3JlLgoKCSogYS5vdXQuZ251Lmg6ICBVcGRhdGUgc2xpZ2h0bHkuCgkqIGJmZC5oOiAgQWRkIG5ldyBlcnJvciBjb2RlLCBmaXggZG9jLCBhZGQgYmZkX2FyY2hfcnM2MDAwLgoJKiBpbnRlcm5hbGNvZmYuaDogIEFkZCBtb3JlIEZfIGNvZGVzIGZvciBmaWxlaGRyLiAgQWRkCglycy82MDAwLWRlcGVuZGVudCBmaWVsZHMgdG8gYW91dGhkci4gIEFkZCBzdG9yYWdlIGNsYXNzZXMKCXRvIHN5bWVudHMuICBBZGQgNjAwMC1zcGVjaWZpYyBhdXhlbnQuICBBZGQgcl9zaXplIGluIHJlbG9jLgoJKiByczYwMDBjb2ZmLmM6ICBOZXcgZmlsZS4KClRodSBPY3QgMjQgMDQ6MTM6MjAgMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBkd2FyZi5oOiBOZXcgZmlsZSBmb3IgZHdhcmYgc3VwcG9ydC4gIENvcGllZCBmcm9tIGdjYzIKCWRpc3RyaWJ1dGlvbi4KCldlZCBPY3QgMTYgMTM6MzE6NDUgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhb3V0NjQuaDogIFJlbW92ZSBQQUdFX1NJWkUgZGVmaW5lczsgdGhleSBhcmUgdGFyZ2V0LWRlcGVuZGVudC4KCUFkZCBOX0ZOX1NFUSBmb3IgTl9GTiBzeW1ib2wgdHlwZSB1c2VkIG9uIFNlcXVlbnQgbWFjaGluZXMuCgkqIHN0YWIuZGVmOiAgSW5jbHVkZSBOX0ZOX1NFUSBpbiB0YWJsZS4KCSogYm91dC5oOiAgRXh0ZXJuYWwgZm9ybWF0cyBvZiBzdHJ1Y3R1cmVzIHVzZSB1bnNpZ25lZCBjaGFycy4KCkZyaSBPY3QgMTEgMTI6NDA6NDMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzdGV2ZSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6dXBncmFkZSBmcm9tIGJmZC5jCgkqIGludGVybmFsY29mZi5oOiBhZGQgbl9uYW1lLCBuX3plcm9lcyBhbmQgbl9vZmZzZXQgbWFjcm9zCgkqIGFtZGNvZmYuaDogRGVmaW5lIE9NQUdJQyBhbmQgQU9VVEhEUlNaLgoKRnJpIE9jdCAxMSAxMDo1ODowNiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0Lmhvc3QuaDogQ2hhbmdlIFNFR01FTlRfU0laRSB0byAweDEwMDAgZm9yIFNvbnkuCgkqIGJmZC5oIChhbGlnbl9wb3dlcik6IEFkZCAoYWN0dWFsbHkgbW92ZSkgY29tbWVudC4KClR1ZSBPY3QgIDggMTU6Mjk6MzIgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1ydGJzZC5oOiBEZWZpbmUgTUlTU0lOR19WRlBSSU5UIChmb3IgYmludXRpbHMvYnVjb21tLmMpLgoKU3VuIE9jdCAgNiAxOToyNDozOSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgTW92ZSBzdHJ1Y3QgaW50ZXJuYWxfZXhlYyB0byAuLi9iZmQvbGliYW91dC5oIHNvCglpdCBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBgYS5vdXQtZmFtaWx5JyBjb2RlLiAgUmVuYW1lCglFWFRFUk5BTF9MSVNUX1NJWkUgdG8gRVhURVJOQUxfTkxJU1RfU0laRS4gIFVzZSBiYXNpYyB0eXBlcwoJZm9yIG5saXN0IG1lbWJlcnMsIGFuZCBtYWtlIHN0cnggaW50ZWdyYWwgcmF0aGVyIHRoYW4gcG9pbnRlci4KCU1vcmUgY29tbWVudGFyeSBvbiBuX3R5cGUgdmFsdWVzLgoJKiBib3V0Lmg6ICBQcm92aWRlIGEgc3RydWN0IGV4dGVybmFsX2V4ZWMgcmF0aGVyIHRoYW4gYW4KCWludGVybmFsX2V4ZWMuCgkqIG02OGtjb2ZmLmg6ICBSZW1vdmUgYHRhZ2VudHJpZXMnIHdoaWNoIHNudWNrIGluIGZyb20gdGhlIGk5NjAKCUNPRkYgcG9ydC4KCkZyaSBPY3QgIDQgMDE6MjU6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBoODMwMC1vcGNvZGUuaDogIFJlbW92ZSBgX2VudW0nIGZyb20gdGhlIHR5cGVkZWYgZm9yIGFuIGVudW0uCgkqIGJmZC5oOiAgVXBkYXRlIHRvIG1hdGNoIGJmZCBjaGFuZ2VzLgoKCSogc3lzL2gtaTM4Nm1hY2guaCwgc3lzZGVwLmg6ICBBZGQgMzg2IE1hY2ggaG9zdCBzdXBwb3J0LgoKVHVlIE9jdCAgMSAwNDo1ODo0MiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBlbGYtY29tbW9uLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtaW50ZXJuYWwuaDoKCUFkZCBwcmVsaW1pbmFyeSBFTEYgc3VwcG9ydCwgc3VmZmljaWVudCBmb3IgR0RCLCBmcm9tIEZyZWQgRmlzaC4KCSogc3lzZGVwLmgsIHN5cy9oLWFtaXguaDogIFN1cHBvcnQgQW1pZ2EgU1ZSNC4KCgkqIHN5cy9oLXZheHVsdC5oOiAgTWFrZSBpdCB3b3JrLiAgKERhdmlkIFRheWxvciA8dGF5bG9yQHRoaW5rLmNvbT4pCgkqIGEub3V0LnZheC5oOiAgUmVtb3ZlIHVudXNlZCBhbmQgY29uZnVzaW5nIGZpbGUuCgpNb24gU2VwIDMwIDEyOjUyOjM1IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogc3lzZGVwLmg6IERlZmluZSBORVdTT1MzX1NZUywgYW5kIHVzZSBpdC4KCkZyaSBTZXAgMjAgMTM6Mzg6MjEgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBJdHMgdmFsdWUgKnJlYWxseSBpcyogMHgxRi4KCUZpeCBpdCwgYW5kIGFkZCBjb21tZW50cyB3YXJuaW5nIGFib3V0IG9yLWluZyBOX0VYVCB3aXRoIGl0CglhbmQvb3IgTl9XQVJOSU5HLgoJKiBhb3V0NjQuaCAoTl9GTik6ICBGaXggdmFsdWUsIGFkZCBjb21tZW50cyBhYm91dCBOX0VYVC4KCSogc3RhYi5kZWYgKHRhYmxlIGF0IGVuZCk6ICBVcGRhdGUgdG8gc2hvdyBhbGwgdGhlIHR5cGUKCXZhbHVlcyA8MHgyMCwgaW5jbHVkaW5nIGxvdyBvcmRlciBiaXRzLiAgTW92ZSBOX0ZOIHRvCglpdHMgcmlnaHRmdWwgcGxhY2UuCgpUdWUgU2VwIDE3IDE3OjQxOjM3IDE5OTEgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBzeXMvaC1pcml4My5oOiAgc2dpL2lyaXggc3VwcG9ydC4KClR1ZSBTZXAgMTcgMDc6NTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogc3RhYi5kZWYgKE5fREVGRCk6ICBBZGQgR05VIE1vZHVsYS0yIGRlYnVnIHN0YWIsIGZyb20gQW5kcmV3CglCZWVycy4KClRodSBTZXAgMTIgMTQ6MTI6NTkgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaW50ZXJuYWxjb2ZmLmggKFNZTU5NTEVOLCBGSUxOTUxFTiwgRElNTlVNKTogIERlZmluZSB0aGVzZQoJZm9yIGludGVybmFsY29mZiwgc2VwYXJhdGVseSBmcm9tIHRoZSB2YXJpb3VzIGV4dGVybmFsIGNvZmYncy4KCSogYW1kY29mZi5oLCBiY3M4OGtjb2ZmLmgsIGkzODZjb2ZmLmgsIGludGVsLWNvZmYuaCwgbTY4a2NvZmYuaCwKCW04OGstYmNzLmg6IFByZWZpeCBTWU1OTUxFTiwgRklMTk1MRU4sIGFuZCBESU1OVU0gd2l0aCBFXydzIGZvcgoJdGhlIGV4dGVybmFsIHN0cnVjdCBkZWZpbml0aW9ucy4KCSogZWNvZmYuaDogUmVtb3ZlIHRoZXNlICNkZWZpbmUncywga2x1ZGdlIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzeXMvaC11bHRyYTMuaDogIEFkZCBuZXcgVWx0cmFjb21wdXRlciBob3N0LgoJKiBzeXNkZXAuaDogIEFkZCBVTFRSQTNfU1lNMV9TWVMgYW5kIHVzZSBpdC4KClR1ZSBTZXAgMTAgMTA6MTE6NDYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogaTM4NmNvZmYuaCAoTElORVNaKTogIEFsd2F5cyA2LCBub3QgYmFzZWQgb24gc2l6ZW9mKCkuCgkoRml4IGZyb20gUGV0ZXIgU2NoYXVlciA8cGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+LikKCldlZCBTZXAgIDQgMDg6NTg6MzcgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogYS5vdXQuZ251LmgsIGFvdXQ2NC5oOiAgQWRkIE5fV0FSTklORy4gIENoYW5nZSBOX0ZOIHRvIDB4MEUsCgl0byBtYXRjaCBTdW5PUyBhbmQgQlNELiAgQWRkIE5fQ09NTSBhcyAweDEyIGZvciBTdW5PUyBzaGFyZWQgbGliCglzdXBwb3J0LgoJKiBzdGFiLmRlZjogIEFkZCBOX0NPTU0gdG8gdGFibGUsIGZpeCBvdmVybGFwIGNvbW1lbnQuCgpUdWUgU2VwICAzIDA2OjI5OjIwIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCglNZXJnZSB3aXRoIGxhdGVzdCBGU0YgdmVyc2lvbnMgb2YgdGhlc2UgZmlsZXMuCgoJKiBzdGFiLmdudS5oOiAgQWRkIExBU1RfVU5VU0VEX1NUQUJfQ09ERS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgdG8gR1BMMi4gIE1vdmUgTl9XQVJOSU5HIG91dCwgc2luY2Ugbm90IGEKCWRlYnVnIHN5bWJvbC4gIENoYW5nZSBjb21tZW50cywgYW5kIHJlb3JkZXIgdGFibGUgdG8gbnVtZXJpYwoJb3JkZXIuICBVcGRhdGUgZmluYWwgdGFibGUgY29tbWVudC4KCShOX0RTTElORSwgTl9CU0xJTkUpOiAgUmVudW1iZXIgZnJvbSAweDY2IGFuZCAweDY4LCB0byAweDQ2IGFuZCAweDQ4LgoKCSogb2JzdGFjay5oOiAgR1BMMi4gIE1lcmdlLgoKRnJpIEF1ZyAyMyAwMTo1NDoyMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYS5vdXQuc3VuNC5oOiAgTWFrZSBTRUdNRU5UX1NJWkUgYWJsZSB0byBkZXBlbmQKCW9uIHRoZSBwYXJ0aWN1bGFyIGEub3V0IGJlaW5nIGV4YW1pbmVkLgoJKiBhLm91dC5zdW40Lmg6ICBEZWZpbmUgc2VnbWVudCBzaXplcyBmb3IgU3VuLTMncyBhbmQgU3VuLTQncy4KCSogRklYTUU6ICBhLm91dC5nbnUuaCBpcyBhbG1vc3Qgb2Jzb2xldGUuCgkqIEZJWE1FOiAgYS5vdXQuc3VuNC5oIHNob3VsZCBiZSByZW5hbWVkIGEub3V0LnN1bi5oIG5vdy4KCldlZCBBdWcgMjEgMjA6MzI6MTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogU3RhcnQgYSBDaGFuZ2VMb2cgZm9yIHRoZSBpbmNsdWRlcyBkaXJlY3RvcnkuCgoJKiBhLm91dC5nbnUuaCAoTl9GTik6ICBGaXggdmFsdWUgLS0gd2FzIDE1LCBzaG91bGQgYmUgMHgxRS4KCSogc3RhYi5kZWY6ICBVcGRhdGUgYWxsb2NhdGlvbiB0YWJsZSBpbiBjb21tZW50cyBhdCBlbmQsCgl0byByZWZsZWN0IHJlYWxpdHkgYXMgSSBrbm93IGl0LgoKDApMb2NhbCBWYXJpYWJsZXM6Cm1vZGU6IGNoYW5nZS1sb2cKbGVmdC1tYXJnaW46IDgKZmlsbC1jb2x1bW46IDc0CnZlcnNpb24tY29udHJvbDogbmV2ZXIKRW5kOgo=