PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KCjw/cGhwICAJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlyZXF1aXJlX29uY2UoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvZWNsaXBzZS5vcmctY29tbW9uL3N5c3RlbS9hcHAuY2xhc3MucGhwIik7CXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL25hdi5jbGFzcy5waHAiKTsgCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL21lbnUuY2xhc3MucGhwIik7IAkkQXBwIAk9IG5ldyBBcHAoKTsJJE5hdgk9IG5ldyBOYXYoKTsJJE1lbnUgCT0gbmV3IE1lbnUoKTsJCWluY2x1ZGUoJEFwcC0+Z2V0UHJvamVjdENvbW1vbigpKTsgICAgIyBBbGwgb24gdGhlIHNhbWUgbGluZSB0byB1bmNsdXR0ZXIgdGhlIHVzZXIncyBkZXNrdG9wJwoKCSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJIwoJIyBpbmRleC5waHAKCSMKCSMgQXV0aG9yOiAJCQoJIyBEYXRlOgkJCTIwMTAtMDUtMzEKCSMKCSMgRGVzY3JpcHRpb246IEVjbGlwc2UgcHJvamVjdCBkZXZlbG9wbWVudCBtYWluIHBhZ2UKCSMKCSMKCSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgMy42IEFja25vd2xlZGdlbWVudHMiOwoJJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlLCAzLjYgYWNrbm93bGVkZ2VtZW50cywgdGhhbmtzIjsKCSRwYWdlQXV0aG9yCQk9ICIiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCgkjICROYXYtPmFkZE5hdlNlcGFyYXRvcigiTXkgUGFnZSBMaW5rcyIsIAkiZG93bmxvYWRzLnBocCIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIsIDMpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDMpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIG1hcmtlcnMhCQpvYl9zdGFydCgpOwo/PgkJCgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCgo8ZGl2IGNsYXNzPSJob21laXRlbTNjb2wiPgo8aDM+RWNsaXBzZSAzLjYgQWNrbm93bGVkZ2VtZW50czwvaDM+CgoKPHA+ClRoZSBFY2xpcHNlIGFuZCBSVCBFcXVpbm94IHByb2plY3QgY29tbWl0dGVycyBhbHdheXMgcmVjZWl2ZSBhIHRyZW1lbmRvdXMgYW1vdW50IG9mIHN1cHBvcnQgZnJvbSB0aGUgY29tbXVuaXR5IGR1cmluZyBldmVyeQpyZWxlYXNlLiAgVGhlIDMuNiByZWxlYXNlIGN5Y2xlIGlzIG5vIGV4Y2VwdGlvbi4gIFdlIHdvdWxkIGxpa2UgdG8gdGhhbmsgdGhlIGZvbGxvd2luZyBwZW9wbGUgZm9yIHRoZWlyIGVmZm9ydHMgb3BlbmluZyBidWcgcmVwb3J0cywgCnByb3ZpZGluZyBwYXRjaGVzLCB0ZXN0aW5nLCBjb25zdW1pbmcgdGhlIGxhdGVzdCBidWlsZHMgYW5kIHBhcnRpY2lwYXRpbmcgaW4gZGlzY3Vzc2lvbnMgdGhhdCByZXN1bHRlZCBpbiBhIGJldHRlciBIZWxpb3MgcmVsZWFzZS4KPC9wPgoKPHA+ClRoZSBQbGF0Zm9ybSBhbmQgSkRUIFRleHQgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIGV2ZXJ5b25lIHdobyBmaWxlZCBnb29kIGJ1ZyByZXBvcnRzIGFuZCBlbmhhbmNlbWVudCByZXF1ZXN0cy4gU3BlY2lhbCB0aGFua3MgZ28gdG86PGJyPgpUb20gSG9mbWFubiwgU3RlcGhhbiBXYWhsYnJpbmssIEFudG9uIExlaGVyYmF1ZXIsIEZhYmlvIFphZHJvem55LCBEb3VnIFNhdGNod2VsbCBhbmQgS2ltIE1vaXIgZm9yIGFsbCBoZXIgcmVsZW5nIHdvcmsuCjwvcD4KCjxwPgpKRFQgVUkgc2VuZHMgdGhhbmtzIHRvOjxicj4KQmVuamFtaW4gTXVza2FsbGEsIENocmlzIFdlc3QgKEZhdXgpLCBSb2JlcnQgS29uaWdzYmVyZywgQ2Fyc3RlbiBQZmVpZmZlciwgQWNoaW0gRGVtZWx0IGFuZCBLaW0gTW9pciBmb3IgdGhlIHBvZW1zIHNoZSBzZW5kcyBhbG9uZyB3aXRoIHRoZSBtaWxlc3RvbmVzLgo8L3A+Cgo8cD4KVGhlIFVzZXIgQXNzaXN0YW5jZSB0ZWFtIHdvdWxkIGxpa2UgdG8gdGhhbmsgZXZlcnlvbmUgd2hvIG1hZGUgY29udHJpYnV0aW9ucyBvciBmaWxlZCBidWcKcmVwb3J0cywgYW5kIGluIHBhcnRpY3VsYXIgSGFvIFpoYW5nIGZvciB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBjcml0ZXJpYSBmZWF0dXJlLAphbmQgQ2hyaXMgQXVzdGluIGFuZCBKaW0gUGVycnkgZm9yIHRoZWlyIGVuaGFuY2VtZW50cyB0byByZW1vdGUgaGVscC4KPC9wPgoKPHA+ClRoZSBQbGF0Zm9ybSBVSSB0ZWFtIHdvdWxkIGxpa2UgdG8gdGhhbmsgZXZlcnlvbmUgd2hvIGZpbGVkIGJ1Z3MsIGFza2VkIGFuZCBhbnN3ZXJlZCBuZXdzZ3JvdXAgcXVlc3Rpb25zLAphbmQgY29udHJpYnV0ZWQgcGF0Y2hlcy4gRm9yIDMuNiwgd2UgaGF2ZSBpbmNsdWRlZCBjb250cmlidXRpb25zIGZyb206CkFuZHJlYXMgQmpvcnUsIEFudG9uIExlaGVyYmF1ZXIsIEJhbHRhc2FyIEJlbHlhdnNreSwgQ2hyaXMgSG9ybmVjaywgRGF2aWQgR3JlZW4sIERpbmEgU2F5ZWQsCkV1Z2VuZSBPc3Ryb3VraG92LCBGcmFuY2lzIEx5bmNoLCBGcmFuY2sgTWFuZ2luLCBIYW5uZXMgRXJ2ZW4sIEhlbGVuYSBIYWxwZXJpbiwgSmFtZXMgQmxhY2tidXJuLApKb2huIENvcnRlbGwsIE1hcmMgUi4gSG9mZm1hbm4sIE1hcmt1cyBTY2hvcm4sIE1heWFuayBLdW1hciwgTWlja2FlbCBJc3RyaWEsIE1pbiBJZHplbGlzLApNb2hhbWVkIFRhcmllZiwgUGF1bCBBZGFtcywgUGF3ZWwgUG9nb3J6ZWxza2ksIFJhbGYgRWJlcnQsIFNlbWlvbiBDaGljaGVsbml0c2t5LCBTaGF3biBNaW50bywKU2ltb24gQ2hlbW91aWwsIFNpbW9uIE11c2NoZWwsIFN0ZXBoYW4gSGVycm1hbm4sIGFuZCBXb2pjaWVjaCBHYWxhbmNpYWsuIFRoYW5rIHlvdSEKPC9wPgoKPHA+ClRoZSBQbHVnLWluIERldmVsb3BtZW50IEVudmlyb25tZW50IHRlYW0gd291bGQgbGlrZSB0byB0aGFuayBldmVyeW9uZSB3aG8gaGFzIGhlbHBlZCB0byBpbXByb3ZlIG91ciB1c2VyJ3MgZXhwZXJpZW5jZS4gIFdlIGFwcHJlY2lhdGUgCnRoZSBnb29kIGJ1Z3MgYW5kIHBhdGNoZXMgZnJvbSB0aGUgY29tbXVuaXR5IGFuZCBhIHNwZWNpYWwgdGhhbmtzIGdvZXMgb3V0IHRvIExhcnMgVm9nZWwsIEVra2VoYXJkIEdlbnR6LCBSYWxmIEViZXJ0IGFuZCBldmVyeW9uZSBlbHNlIHdobyBoYXMgCnBvc3RlZCB0dXRvcmlhbHMsIGJsb2dzLCBmYXFzIGFuZCBtb3JlLgo8L3A+Cgo8cD4KVGhlIFBsYXRmb3JtIGFuZCBKRFQgRGVidWcgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIGV2ZXJ5b25lIHdobyBmaWxlZCBidWdzLCBhc2tlZCBhbmQgYW5zd2VyZWQgbmV3c2dyb3VwIHF1ZXN0aW9ucywKYW5kIGNvbnRyaWJ1dGVkIHBhdGNoZXMuIFNwZWNpYWwgdGhhbmtzIGdvZXMgdG8gUGF0cmljayBDaHVvbmcsIERhbmllbCBGcmllZGVyaWNoLCBNYXJjIEtob3V6YW0sIERhdmlkIEdyZWVuLApKb2huIENvcnRlbGwsIGFuZCBSYWxmIEViZXJ0Lgo8L3A+Cgo8cD4KVGhlIFBsYXRmb3JtIFJ1bnRpbWUvV29ya3NwYWNlIHRlYW0gd291bGQgbGlrZSB0byB0aGFuayB0aGUgZm9sbG93aW5nIGZvciB0aGVpcgpjb2RlIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyByZWxlYXNlOgpBbnRvbiBMZWhlcmJhdWVyLCBGcmFuY2lzIEx5bmNoLCBKYW1lcyBCbGFja2J1cm4sIE1hcmlvIFdpbnRlcmVyLCBNYXJrdXMgU2Nob3JuLCBhbmQgTWluIElkemVsaXMuCkNyZWRpdCBhbHNvIGdvZXMgdG8gU2VyZ2UgQmVhdWNoYW1wIGZvciB0aGUgd29yayBoZSBjb250cmlidXRlZCBpbiB0aGUgYXJlYSBvZiBGbGV4aWJsZSBSZXNvdXJjZXMgYmVmb3JlIGhlIGdvdCBoaXMgY29tbWl0IHJpZ2h0cwphbmQgdG8gRGFuaSBNZWdlcnQgd2hvIGhhcyBiZWVuIGhlbHBpbmcgdG8gaW1wcm92ZSBXb3Jrc3BhY2UgY29tcG9uZW50cy4KPC9wPgoKPHA+ClRoZSBTV1QgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIGV2ZXJ5b25lIHdobyBmaWxlZCBidWdzIGFuZCBoZWxwZWQgaW1wcm92ZSB0aGUgdG9vbGtpdC4gU3BlY2lhbCB0aGFua3MgZ28gdG86CkFuZHJldyBPdmVyaG9sdCwgQ2hyaXN0b3BoZXIgRGVja2VycywgRGFuaSBNZWdlcnQsIERhdmlkIEdyZWVuLCBNYXJrdXMgS2VsbGVyLCBNYXJ0aW4gT2Jlcmh1YmVyLCBNY1EsIE1pa2UgU2NocmFnLApQZWkgTmEsIFJlbXkgU3VlbiwgU2hhd24gTWludG8sIGFuZCBTdGVmZmVuIFBpbmdlbC4gIEFsc28sIHNwZWNpYWwgdGhhbmtzIHRvIHRob3NlIHdob3NlIGFzc2lzdGFuY2UgYW5kCmZlZWRiYWNrIG1hZGUgU1dUJ3MgYWNjZXNzaWJpbGl0eSBlbmhhbmNlbWVudHMgcG9zc2libGU6IEdsZW4gR29yZG9uLCBKYW1lcyBUZWgsIEpvYW5tYXJpZSBEaWdncywKSm9zZSBWaWxtYXIgRXN0YWNpbyBkZSBTb3V6YSwgTGFycnkgV2Vpc3MsIFBldGUgQnJ1bmV0LCBhbmQgUmljaGFyZCBTY2h3ZXJkdGZlZ2VyLgo8L3A+Cgo8cD4KVGhlIHBsYXRmb3JtIHJlbGVuZyB0ZWFtIChLaW0gTW9pcikgd291bGQgbGlrZSB0byB0aGFuayBBbmRyZXcgTmllZmVyLCBESiBIb3VnaHRvbiwgSm9obiBBcnRob3JuZSBhbmQgUGFzY2FsIFJhcGljYXVsdCBmb3IgdGhlaXIKYWR2aWNlIG9uIGJ1aWxkIGFuZCBwMiBpc3N1ZXMuIEknZCBhbHNvIGxpa2UgdG8gdGhhbmsgRnLpZOlyaWMgRnVzaWVyIGltcHJvdmluZyB0aGUgcGVyZm9ybWFuY2UgZnJhbWV3b3JrIGFuZCB2ZXJpZnlpbmcgCnRoZSBwZXJmb3JtYW5jZSByZXN1bHRzLiBXZSdkIGFsc28gbGlrZSB0byB0aGFuayB0aGUgY29tcGFuaWVzIHRoYXQgZG9uYXRlZCBuZXcgaGFyZHdhcmUgdG8gdGhlIEVjbGlwc2UgZm91bmRhdGlvbiAKKElCTSwgSW50ZWwsIEdvb2dsZSkgd2hpY2ggc2lnbmlmaWNhbnRseSBzcGVkIHVwIG91ciBidWlsZCBwcm9jZXNzLiAgS2VlcCB0aG9zZSBoYXJkd2FyZSBkb25hdGlvbnMgY29taW5nISBJJ2QgYWxzbyBsaWtlIHRvIAp0aGFuayBEZW5pcyBSb3kgYW5kIE1hdHQgV2FyZCBmb3IgdGhlaXIgc3VwZXJiIHdvcmsga2VlcGluZyB0aGUgZWNsaXBzZS5vcmcgaW5mcmFzdHJ1Y3R1cmUgdXAgYW5kIHJ1bm5pbmcsIGFuZCBpbnRlZ3JhdGluZwpuZXcgc2VydmljZXMgYW5kIGhhcmR3YXJlLiAgSSdkIGFsc28gbGlrZSB0byB0aGFuayBEYXZpZCBXaWxsaWFtcyBmb3IgYWxsIGhpcyB0aW1lIGtlZXBpbmcgdGhlIEhlbGlvcyB0cmFpbiBvbiB0cmFjayBpbiB0aGUgZmFjZQpvZiBmcmVxdWVudCBkZXJhaWxtZW50cyBhbmQgYnVtcHMgaW4gdGhlIHJvYWQuCjwvcD4KCjxwPgpUaGUgSkRUL0NvcmUgdGVhbSB3b3VsZCBsaWtlIHRvIHRoYW5rIGV2ZXJ5b25lIHdobyBmaWxlZCBidWdzLCBhc2tlZCBhbmQgYW5zd2VyZWQgbmV3c2dyb3VwIHF1ZXN0aW9ucywKYW5kIGNvbnRyaWJ1dGVkIHBhdGNoZXMuIFNwZWNpYWwgdGhhbmtzIHRvIFN0ZXBoYW4gSGVycm1hbm4gZm9yIGNvbnRpbnVvdXMgZmVlZGJhY2tzLCBoaWdoLXF1YWxpdHkgYnVnIHJlcG9ydHMgYW5kIGV4Y2VsbGVudCBwYXRjaGVzLAp0byBLYXJlbiBNb29yZSBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIHByb3ZpZGUgYSByZXByb2R1Y2FibGUgdGVzdCBjYXNlIGZvciBhIG5hc3R5IGJ1ZywgdG8gS2VudCBKb2huc29uIHdobyBsZWZ0IHRoZSB0ZWFtIGFmdGVyIHNvIG1hbnkKeWVhcnMgb2YgZXhjZWxsZW50IHdvcmsgYW5kIHRvIEF5dXNobWFuIEphaW4gYW5kIFNhdHlhbSBLYW5kdWxhIHdobyBjb250cmlidXRlZCBhIGxvdCBiZWZvcmUgdGhleSBnb3QgdGhlaXIgY29tbWl0IHJpZ2h0cy4KPC9wPgoKPC9kaXY+CiAgPC9kaXY+Cgo8P3BocAoJJGh0bWwgPSBvYl9nZXRfY29udGVudHMoKTsKCW9iX2VuZF9jbGVhbigpOwoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==