PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHRlbXBsYXRlLnBocAoJIwoJIyBBdXRob3I6IAkJTWFydGluIE9iZXJodWJlcgoJIyBEYXRlOgkJCTIwMDYtMDItMDEKCSMKCSMgRGVzY3JpcHRpb246IENvbnRyaWJ1dG9ycywgQ29tbWl0dGVycyBhbmQgTGVhZCBvZiBUYXJnZXQgTWFuYWdlbWVudCBQcm9qZWN0CgkjCgkjCgkjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCgkjCgkjIEJlZ2luOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzLiAgQ2hhbmdlIHRoZXNlLiAKCSRwYWdlVGl0bGUgCQk9ICJEU0RQLVRNIFByb2plY3QgQ29udHJpYnV0b3JzIjsKCSRwYWdlS2V5d29yZHMJPSAiZGV2aWNlLCB0YXJnZXQsIGNvbnRyaWJ1dG9yLCBjb21taXR0ZXIsIGxlYWQsIGF1dGhvciwgZGV2ZWxvcGVyIjsKCSRwYWdlQXV0aG9yCQk9ICJNYXJ0aW4gT2Jlcmh1YmVyIjsKCQoJIyBBZGQgcGFnZS1zcGVjaWZpYyBOYXYgYmFycyBoZXJlCgkjIEZvcm1hdCBpcyBMaW5rIHRleHQsIGxpbmsgVVJMIChjYW4gYmUgaHR0cDovL3d3dy5zb21lb3RoZXJzaXRlLmNvbS8pLCB0YXJnZXQgKF9zZWxmLCBfYmxhbmspLCBsZXZlbCAoMSwgMiBvciAzKQoJIyAkTmF2LT5hZGROYXZTZXBhcmF0b3IoIk15IFBhZ2UgTGlua3MiLCAJImRvd25sb2Fkcy5waHAiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiLCAzKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiLCAzKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCQoJIyBQYXN0ZSB5b3VyIEhUTUwgY29udGVudCBiZXR3ZWVuIHRoZSBFT0hUTUwgbWFya2VycyEJCgkkaHRtbCA9IDw8PEVPSFRNTAoKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPGRpdiBjbGFzcz0iaG9tZWl0ZW0zY29sIj4KCQk8aDM+VGFyZ2V0IE1hbmFnZW1lbnQgTGVhZDwvaDM+CgkJPGxpPjxiPk1hcnRpbiBPYmVyaHViZXIsIFdpbmQgUml2ZXIgU3lzdGVtczwvYj4gKG1hcnRpbi5vYmVyaHViZXIgYXQgd2luZHJpdmVyLmNvbSk8YnIvPgoJCQlNYXJ0aW4gaXMgdGhlIG92ZXJhbGwgcHJvamVjdCBsZWFkIGZvciB0aGUgVGFyZ2V0IE1hbmFnZW1lbnQgUHJvamVjdCwKCQkJYW5kIGluIHRoaXMgcm9sZSBoZSBhbHNvIHNlcnZlcyBvbiB0aGUgRFNEUCBQcm9qZWN0IE1hbmFnZW1lbnQgQ291bmNpbCAoUE1DKS4KCQkJQXMgYSBzb2Z0d2FyZSBkZXZlbG9wZXIgYW5kIGFyY2hpdGVjdCwgTWFydGluIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUKCQkJY3VycmVudCBUYXJnZXQgTWFuYWdlciBjb21wb25lbnQgaW4gV2luZCBSaXZlciBXb3JrYmVuY2guPGJyLz4KCQkJTWFydGluIGhvbGRzIGFuIE1TIGRlZ3JlZSBpbiBUZWxlbWF0aWNzIGZyb20gdGhlIFVuaXZlcnNpdHkKCQkJb2YgVGVjaG5vbG9neSBHcmF6L0F1c3RyaWEsIGFuZCBoYXMgYmVlbiB3b3JraW5nIG9uIHNvdXJjZSBjb2RlIGFuYWx5c2lzCgkJCWFuZCB0b29scyBkZXZlbG9wbWVudCBzaW5jZSAxOTk5Ljxici8+CgkJCTxhIGhyZWY9Imh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL1VzZXI6TW9iZXJodWJlciI+bW9yZSBhYm91dCBNYXJ0aW4gT2Jlcmh1YmVyICZyYXF1bzs8L2E+CgkJCTwvbGk+CgkJPGxpPjxiPkRhdmlkIER5a3N0YWwsIElCTTwvYj4gKGRhdmlkX2R5a3N0YWwgYXQgdXMuaWJtLmNvbSk8YnIvPgoJCSAJRGF2aWQgaXMgdGhlIFByb2plY3QgTGVhZCBmb3IgdGhlIElCTSBSZW1vdGUgU3lzdGVtIEV4cGxvcmVyLAoJCSAJYW5kIHRodXMgcGxheXMgYSBrZXkgcm9sZSBpbiBhbGwgYWN0aXZpdGllcyBhcm91bmQgUlNFLjxici8+CgkJIAlEYXZpZCBoYXMgd29ya2VkIGVpdGhlciBmb3Igb3Igd2l0aCBJQk0gZm9yIG92ZXIgMjggeWVhcnMsCgkJIAlpbmNsdWRpbmcgYSBzaWduaWZpY2FudCBzdGludCB3aXRoIE9iamVjdCBUZWNobm9sb2d5IEludGVybmF0aW9uYWwuCgkJIAlEYXZlIGhhcyB3b3JrZWQgb24gY29tcGlsZXJzLCB1c2VyIGludGVyZmFjZXMsIGRhdGFiYXNlIHRvb2xzLCBhbmQgSURFJiMzOTtzLgkJCgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImhvbWVpdGVtM2NvbCI+CgkJPGgzPkNvbW1pdHRlcnMgKGluIGFscGhhYmV0aWNhbCBvcmRlcik8L2gzPgoJCTx1bCBjbGFzcz0ibWlkbGlzdCI+CgkJCTxsaT48Yj5YdWFuIENoZW48L2I+LCBJQk08L2xpPgoJCQk8bGk+PGI+S2V2aW4gRG95bGU8L2I+LCBJQk08L2xpPgoJCQk8bGk+PGI+RGF2aWQgRHlrc3RhbDwvYj4sIElCTTwvbGk+CgkJCTxsaT48Yj5EYXZpZCBNY0tuaWdodDwvYj4sIElCTTwvbGk+CgkJCTxsaT48Yj5KYXZpZXIgTW9udGFsdm8tT3L6czwvYj4sIFN5bWJpYW48L2xpPgoJCQk8bGk+PGI+S3VzaGFsIE11bmlyPC9iPiwgSUJNPC9saT4KCQkJPGxpPjxiPk1hcnRpbiBPYmVyaHViZXI8L2I+LCBXaW5kIFJpdmVyPC9saT4KCQkJPGxpPjxiPk1pY2hhZWwgU2NoYXJmPC9iPiwgV2luZCBSaXZlcjwvbGk+CgkJCTxsaT48Yj5Vd2UgU3RpZWJlcjwvYj4sIFdpbmQgUml2ZXI8L2xpPgoJCQk8bGk+PGI+VGVkIFdpbGxpYW1zPC9iPiwgV2luZCBSaXZlcjwvbGk+CgkJPC91bD4KCQk8L2Rpdj4KCgkJPGRpdiBjbGFzcz0iaG9tZWl0ZW0zY29sIj4KCQk8aDM+Q29udHJpYnV0b3JzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpPC9oMz4KCQlUaGlzIGlzIHRoZSBsaXN0IG9mIHBlb3BsZSB3aG8gaGF2ZSBtYWRlIGNvZGUgY29udHJpYnV0aW9ucyB0byB0aGUgCgkJVE0gUHJvamVjdCBvbiBCdWd6aWxsYSBzbyBmYXIsIHdpdGggdGhlaXIgY29kZSBhY3R1YWxseSBiZWluZyAKCQltZXJnZWQgaW50byB0aGUgVE0gY29kZWJhc2UgaW4gQ1ZTLiBUaGUgbGlzdCBpcyBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkKCQlieSBsYXN0IG5hbWU6CgkJPHVsIGNsYXNzPSJtaWRsaXN0Ij4KCQkJPGxpPjxiPk1pY2hhZWwgQmVyZ2VyPC9iPiwgSUJNPC9saT4KCQkJPGxpPjxiPkZlbGl4IEJ1cnRvbjwvYj4sIFdpbmQgUml2ZXI8L2xpPgoJCQk8bGk+PGI+U2hlbGRvbiBEJmFjdXRlO1NvdXphPC9iPiwgQ2VsdW5pdGU8L2xpPgoJCQk8bGk+PGI+2Hl2aW5kIEhhcmJvZTwvYj4sIFp5bGluPC9saT4KCQkJPGxpPjxiPlJvYiBIYXNzZWxiYXVtPC9iPiwgQkVaIFN5c3RlbXMsIEluYzwvbGk+CgkJCTxsaT48Yj5NaWtoYWlsIEthbHVnaW48L2I+LCBYb3JlZCBTb2Z0d2FyZTwvbGk+CgkJCTxsaT48Yj5ZdS1GZW4gS3VvPC9iPiwgTW9udGF2aXN0YTwvbGk+CgkJCTxsaT48Yj5SdXBlbiBNYXJkaXJvc3NpYW48L2I+LCBJQk08L2xpPgoJCQk8bGk+PGI+RXdhIE1hdGVqc2thPC9iPiwgQUNDRVNTIFN5c3RlbXMgKGZvcm1lcmx5IFBhbG1Tb3VyY2UpPC9saT4KCQkJPGxpPjxiPldpbGxpYW4gTWl0c3VkYTwvYj4sIChwcml2YXRlKTwvbGk+CgkJCTxsaT48Yj5CZW5qYW1pbiBNdXNrYWxsYTwvYj4sIElubm9vcHJhY3Q8L2xpPgoJCQk8bGk+PGI+VG9iaWFzIFNjaHdhcno8L2I+LCBXaW5kIFJpdmVyPC9saT4KCQkJPGxpPjxiPlJlbXkgQ2hpIEppYW4gU3VlbjwvYj4sIElCTTwvbGk+CgkJCTxsaT48Yj5FdWdlbmUgVGFyYXNzb3Y8L2I+LCBXaW5kIFJpdmVyPC9saT4KCQkJPGxpPjxiPk9saXZpZXIgVGhvbWFubjwvYj4sIElCTTwvbGk+CgkJCTxsaT48Yj5Mb3RoYXIgV2VyemluZ2VyPC9iPiwgVHJhZGVzY2FwZSBJbmMuPC9saT4KICAJCTwvdWw+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9ImhvbWVpdGVtM2NvbCI+CgkJPGgzPk90aGVyIGludGVyZXN0ZWQgcGFydGllczwvaDM+CgkJVGhpcyBpcyB0aGUgbGlzdCBvZiBjb21wYW5pZXMgYW5kIHBlb3BsZSB3aG8gaGF2ZSBiZWVuIGFjdGl2ZQoJCWluIHRoZSBUTSBmYWNlLXRvLWZhY2UgbWVldGluZ3MgYW5kIHBob25lIGNvbmZlcmVuY2VzIHNvIGZhci4KCQlUaGUgbGlzdCBpcyBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgY29tcGFueSBmaXJzdCwgdGhlbiBieSBsYXN0IG5hbWU6CgkJPHVsIGNsYXNzPSJtaWRsaXN0Ij4KCQkJPGxpPjxiPkFjY2VsZXJhdGVkIFRlY2hub2xvZ3k8L2I+OgoJCQkgIE1hcmsgQm96ZW1hbiwgR2VvcmdlIENsYXJrLCBBYXJvbiBTcGVhcjwvbGk+CgkJCTxsaT48Yj5DdXJ0aXNzLVdyaWdodCBDb250cm9sczwvYj46IE1hcmsgTGl0dGxlZmllbGQsIERhcmlhbiBXb25nPC9saT4KCQkJPGxpPjxiPkRpZ2k8L2I+OiBKb2huIExlaWVyPC9saT4KCQkJPGxpPjxiPkZyZWVTY2FsZTwvYj46IEtpcmsgQmVpdHosIEpvaG4gQ29ydGVsbCwgRGF5bW9uIFJvZ2VyczwvbGk+CgkJCTxsaT48Yj5JQk0gRGlzdHJpYnV0ZWQgRGVidWdnZXI8L2I+OiBBbGFuIEJveGFsbDwvbGk+CgkJCTxsaT48Yj5JbnRlbDwvYj46IFBldGVyIExhY2huZXI8L2xpPgoJCQk8bGk+PGI+TEFOTDwvYj46IEdyZWcgV2F0c29uPC9saT4KCQkJPGxpPjxiPk1vbnRhdmlzdGE8L2I+OiBKb2UgR3JlZW4sIFBpZXJyZS1BbGV4YW5kcmUgTWFzc2U8L2xpPgoJCQk8bGk+PGI+UU5YPC9iPjogRGF2aWQgSW5nbGlzLCBEb3VnIFNjaGFlZmVyPC9saT4KCQkJPGxpPjxiPlN0YXIgQnJpZGdlIFN5c3RlbXM8L2I+OiBNYXR0aGV3IFNjYXJwaW5vPC9saT4gCgkJCTxsaT48Yj5TeW1iaWFuPC9iPjogVmljdG9yIFBhbGF1LCBOZWlsIFRheWxvcjwvbGk+CgkJCTxsaT48Yj5USTwvYj46IFBhdWwgR2luZ3JpY2g8L2xpPiAKCQkJPGxpPjxiPlRVIE11bmljaDwvYj46IFRpYW5jaGFvIExpPC9saT4gCgkJCTxsaT48Yj5XaW5kIFJpdmVyPC9iPjogTWFydGluIEd1dHNjaGVsaG9mZXIsIEJyaWFuIE5ldHRsZXRvbjwvbGk+CgkJCTxsaT48Yj5aZW5kIFRlY2hub2xvZ2llczwvYj46IFlvc3NpIExlb24sIFlhcm9uIE1hem9yPC9saT4gCiAgCQk8L3VsPgoJCTwvZGl2PgoJPC9kaXY+Cgk8ZGl2IGlkPSJyaWdodGNvbHVtbiI+CgkJPGRpdiBjbGFzcz0ic2lkZWl0ZW0iPgoJCQk8aDY+R2V0dGluZyBzdGFydGVkPC9oNj4KCQkJPHVsPgkJCQkKCQkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2Rvd25sb2Fkcy9kb3dubG9hZC5waHA/ZmlsZT0vZHNkcC90bS9wcmVzZW50YXRpb25zLzIwMDYtOS0yOV9TdW1taXRFdXJvcGVfVE1PdmVydmlldy5wZGYiCgkJCQkJdGFyZ2V0PSJfc2VsZiI+VE0gT3ZlcnZpZXcgU2xpZGVzPC9hPjwvbGk+CgkJCQk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9kb3dubG9hZHMvZG93bmxvYWQucGhwP2ZpbGU9L2RzZHAvdG0vcHJlc2VudGF0aW9ucy9UTV8yLjBfUmVsZWFzZV9SZXZpZXcucHB0IiB0YXJnZXQ9Il9zZWxmIj4KCQkJCSAgICBUTSAyLjAgUmVsZWFzZSBSZXZpZXcgU2xpZGVzPC9hPjwvbGk+CgkJCSAgICA8bGk+PGEgaHJlZj0iaHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvRFNEUCIgCgkJCSAgICAJdGFyZ2V0PSJfc2VsZiI+RFNEUCBPdmVydmlldyBEaWFncmFtczwvYT48L2xpPgkJCQkKCQkJCTxsaT48YQoJCQkJCWhyZWY9Ii9kc2RwL3RtL2RvYy9EU0RQVE1fVXNlX0Nhc2VzX3YxLjFjLnBkZiIKCQkJCQl0YXJnZXQ9Il9zZWxmIj5UTSBVc2UgQ2FzZXMgRG9jdW1lbnQ8L2E+PC9saT4KCQkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmRldmVsb3Blci5pYm0uY29tL2lzdi9yYXRpb25hbC9yc2VfcHJlcy5wZGYiCgkJCQkJdGFyZ2V0PSJfc2VsZiI+SUJNIFJTRSBQcmVzZW50YXRpb248L2E+PC9saT4KCQkJCTwhLS0gPGxpPjxhIGhyZWY9Ii9kc2RwL3RtL2RldmVsb3BtZW50L2luZGV4LnBocCI+RGV2ZWxvcGVyIFJlc291cmNlczwvYT48L2xpPiAtLT4KCQkJCTxsaT48YSBocmVmPSIvZHNkcC90bS9kb2MvaW5kZXgucGhwIj5EZXZlbG9wZXIgRG9jdW1lbnRzPC9hPjwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+CgoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cg==