PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgRGV2aWNlIFNvZnR3YXJlIERldmVsb3BtZW50IFBsYXRmb3JtIChEU0RQKSBBbm5vdW5jZXMgVGhyZWUgTWlsZXN0b25lIFJlbGVhc2VzICI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2UsIGRzZHAsIE5vdmVtYmVyLCAyMDA2LCBtaWxlc3RvbmUsIHJlbGVhc2UiOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxzdHJvbmc+U2VyaWVzIG9mIERTRFAgUmVsZWFzZXMgRGVtb25zdHJhdGUgdGhlIEdyb3dpbmcgU2lnbmlmaWNhbmNlIG9mIEVjbGlwc2UgZm9yIERldmljZSBTb2Z0d2FyZSBEZXZlbG9wZXJzPC9zdHJvbmc+PGJyLz4KCQk8cD48c3Ryb25nPk9UVEFXQSwgQ2FuYWRhIJYgTm92ZW1iZXIgMTMsIDIwMDaXIDwvc3Ryb25nPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSBjb21taXR0ZWQgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgdW5pdmVyc2FsIHNvZnR3YXJlIGRldmVsb3BtZW50IHBsYXRmb3JtLCB0b2RheSBhbm5vdW5jZWQgdGhyZWUgbWlsZXN0b25lIHJlbGVhc2VzIHdpdGhpbiB0aGUgRWNsaXBzZSBEZXZpY2UgU29mdHdhcmUgRGV2ZWxvcG1lbnQgUGxhdGZvcm0gKERTRFApLiBGb3VuZGVkIGluIDIwMDUgYXMgYSB0b3AtbGV2ZWwgRWNsaXBzZSBwcm9qZWN0LCB0aGUgbWlzc2lvbiBvZiBEU0RQIGlzIHRvIGNyZWF0ZSBhbiBvcGVuLCBleHRlbnNpYmxlLCBzY2FsYWJsZSBhbmQgc3RhbmRhcmRzLWJhc2VkIGRldmVsb3BtZW50IHBsYXRmb3JtIHRvIGFkZHJlc3MgdGhlIG5lZWRzIG9mIHRoZSBkZXZpY2Ugc29mdHdhcmUgbWFya2V0LiBUaGlzIHNlcmllcyBvZiByZWxlYXNlcyBkZW1vbnN0cmF0ZXMgdGhlIGdyb3dpbmcgbW9tZW50dW0gYW5kIGRpdmVyc2l0eSBvZiBwcm9qZWN0cyBpbiBEU0RQLiAgQ3JlYXRlZCBieSBXaW5kIFJpdmVyLCB0aGUgRFNEUCBwcm9qZWN0IG5vdyBoYXMgb3ZlciBmb3J0eSBjb21taXR0ZXJzIGZyb20gdGVuIGNvbXBhbmllcyBhbmQgY29udGFpbnMgbW9yZSB0aGFuIDU1MCwwMDAgbGluZXMgb2YgY29kZS4KCQk8L3A+CgkJPHA+QmV5b25kIGhpZ2hsaWdodGluZyBtb21lbnR1bSB3aXRoaW4gRFNEUCwgdGhlc2UgbWlsZXN0b25lIHJlbGVhc2VzIGRlbW9uc3RyYXRlIGFuIGluY3JlYXNpbmcgc2lnbmlmaWNhbmNlIG9mIEVjbGlwc2UgdG8gdGhlIGRldmljZSBzb2Z0d2FyZSBtYXJrZXQgb3ZlcmFsbC4gQXMgdGhleSBtb3ZlIGZvcndhcmQsIHRoZSBEU0RQIHByb2plY3RzIGFyZSBhaW1pbmcgdG8gaGVscCBkZXZlbG9wZXJzIGFuZCB2ZW5kb3JzIGNyZWF0ZSBzcGVjaWFsaXplZCwgaW50ZXJvcGVyYWJsZSBzb2x1dGlvbnMgc28gdGhhdCBjdXN0b21lcnMgYW5kIHVzZXJzIG9mIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMgY2FuIGRldmVsb3AgZGV2aWNlIHNvZnR3YXJlIGZhc3RlciwgYmV0dGVyIGFuZCBhdCBsb3dlciBjb3N0LgoJCTwvcD4KCQk8cD48c3Ryb25nPkRTRFAgTWlsZXN0b25lIFJlbGVhc2VzPC9zdHJvbmc+PC9wPgoJCTxwPlRoZSB0aHJlZSBEU0RQIHByb2plY3RzIGFjaGlldmluZyBtaWxlc3RvbmUgcmVsZWFzZXMgaW5jbHVkZToKCQk8b2w+CgkJCTxsaT48Yj48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2RzZHAvdG0vIj5UYXJnZXQgTWFuYWdlbWVudDwvYT4gKFRNKSwgcmVsZWFzZSB2ZXJzaW9uIDEuMDxici8+PC9iPgoJCQkJPGk+TWlzc2lvbjwvaT46IFRoZSBnb2FsIG9mIFRhcmdldCBNYW5hZ2VtZW50IGlzIHRvIGNyZWF0ZSBkYXRhIG1vZGVscyBhbmQgZnJhbWV3b3JrcyB0byBjb25maWd1cmUgYW5kIG1hbmFnZSBlbWJlZGRlZCBzeXN0ZW1zLCB0aGVpciBjb25uZWN0aW9ucyBhbmQgc2VydmljZXMuIFNpbmNlIHRoZXJlIGFyZSBtYW55IGRpZmZlcmVudCB2ZW5kb3JzIGFuZCBzb2x1dGlvbnMgaW4gdGhlIGRldmljZSBzb2Z0d2FyZSBzcGFjZSwgdGhlIG1haW4gY2hhcnRlciBvZiB0YXJnZXQgbWFuYWdlbWVudCBpcyB0byBwcm92aWRlIGRhdGEgbW9kZWxzIGFuZCBmcmFtZXdvcmtzIHRoYXQgYXJlIGZsZXhpYmxlIGFuZCBvcGVuIGVub3VnaCBmb3IgdmVuZG9yLXNwZWNpZmljIGV4dGVuc2lvbnMuIEZvciB0aGUgMS4wIHJlbGVhc2UsIHNhbXBsZSBpbXBsZW1lbnRhdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBmb3IgVENQL0lQIGNvbm5lY3Rpb25zLCBGVFAgZGF0YSB0cmFuc2ZlciBhbmQgR0RCIHJlbW90ZSBsYXVuY2hpbmcgaW4gdGhlIENEVCBlbnZpcm9ubWVudC4gVGhlIGJhc2UgdGVjaG5vbG9neSBmb3IgdGhlIFRNIHByb2plY3QgaXMgYW4gb3Blbi1zb3VyY2UgdmVyc2lvbiBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy0zMDQuaWJtLmNvbS9qY3QwOTAwMmMvaXN2L3JhdGlvbmFsL3JlbW90ZV9zeXN0ZW1fZXhwbG9yZXIuaHRtbCI+SUJNIFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXI8L2E+Ljxici8+PGJyLz4KCQkJCTxpPjEuMCBGZWF0dXJlczwvaT46IFJlbW90ZSBTeXN0ZW0gRXhwbG9yZXIgZnJhbWV3b3JrLCBDRFQgcmVtb3RlIGxhdW5jaCBjYXBhYmlsaXRpZXMgYW5kIGludGVncmF0ZWQgSmFrYXJ0YSBDb21tb25zIE5ldCBsaWJyYXJ5IGZvciBGVFAgYWNjZXNzLjxici8+PGJyLz4KCQkJCTxpPkNvbnRyaWJ1dG9yczwvaT46IFdpbmQgUml2ZXIgKHByb2plY3QgbGVhZCksIElCTSwgTW9udGFWaXN0YSwgUGFsbVNvdXJjZSwgU3ltYmlhbiBhbmQgVHJhZGVzY2FwZS48YnIvPjxici8+CgkJCQk8aT5TdXBwb3J0czwvaT4JOiBXaW5kb3dzLCBTb2xhcmlzLCBMaW51eCBhbmQgTWFjLjxici8+PGJyLz48L2xpPgoKCQkJPGxpPjxiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZXJjcC8iPkVtYmVkZGVkIFJpY2ggQ2xpZW50IFBsYXRmb3JtIChlUkNQKTwvYT4sIHJlbGVhc2UgdmVyc2lvbiAxLjA8YnIvPjwvYj4KCQkJCTxpPk1pc3Npb248L2k+OiBUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gZXh0ZW5kIHRoZSBFY2xpcHNlIFJpY2ggQ2xpZW50IFBsYXRmb3JtIChSQ1ApIHRvIGVtYmVkZGVkIGRldmljZXMuIGVSQ1AgZW5hYmxlcyB0aGUgc2FtZSBFY2xpcHNlIGRldmVsb3BtZW50IG1vZGVsIHVzZWQgdG8gY3JlYXRlIGFwcGxpY2F0aW9ucyBvbiBkZXNrdG9wIG1hY2hpbmVzIHRvIGFsc28gYmUgdXNlZCBvbiBkZXZpY2VzLiAgVGhlIHByb2plY3QgaW5jbHVkZXMgYSBzdWJzZXQgb2YgPGEgaHJlZj0iaHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvaW5kZXgucGhwL1JpY2hfQ2xpZW50X1BsYXRmb3JtIj5SQ1A8L2E+IGNvbXBvbmVudHMgdGFpbG9yZWQgdG8gbW9iaWxlIGRldmljZXMuPGJyLz48YnIvPgoJCQkJPGk+MS4wIEZlYXR1cmVzPC9pPjogVXRpbGl6ZXMgdGhlIGZhbWlsaWFyIEVjbGlwc2UgcHJvZ3JhbW1pbmcgbW9kZWwgb2YgYXBwbGljYXRpb25zIHByb3ZpZGluZyBWaWV3cyB0byBhIHdvcmtiZW5jaCwgcmVkdWNlcyBSQ1AgZm9vdHByaW50IHRvIGZpdCBvbiBjb25zdHJhaW5lZCBkZXZpY2VzLCBwcm92aWRlcyBwYXRjaGVzIHRvIGNvcmUgY29tcG9uZW50cyB0byBlbmFibGUgcnVubmluZyB0aG9zZSBjb21wb25lbnRzIG9uIEpNRSA8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTIxOCI+Q0RDPC9hPi9Gb3VuZGF0aW9uIFByb2ZpbGUgbW9iaWxlIGRldmljZXMsIGFuZCBlbmFibGVzIGFwcGxpY2F0aW9uIGJpbmFyeSBjb21wYXRpYmlsaXR5IGFjcm9zcyBhIHJhbmdlIG9mIGRldmljZXMgd2l0aCBkaWZmZXJlbnQgaW5wdXQgbWVjaGFuaXNtcyBhbmQgc2NyZWVuIHR5cGVzL3NpemVzLjxici8+PGJyLz4KCQkJCTxpPkNvbnRyaWJ1dG9yczwvaT46IElCTSAocHJvamVjdCBsZWFkKSwgTm9raWEgYW5kIE1vdG9yb2xhLjxici8+PGJyLz4KCQkJCTxpPlN1cHBvcnRzPC9pPjogV2luZG93cyBNb2JpbGUgMjAwMy8yMDA1LCBOb2tpYSBTZXJpZXMgODAgYW5kIFM2MC48YnIvPjxici8+PC9saT4KCgkJCTxsaT48Yj48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2RzZHAvbXRqLyI+TW9iaWxlIFRvb2xzIGZvciB0aGUgSmF2YSBQbGF0Zm9ybSAoTVRKKTwvYT4sIHJlbGVhc2UgdmVyc2lvbiAwLjc8YnIvPjwvYj4KCQkJCTxpPk1pc3Npb248L2k+OiBUaGUgZ29hbCBvZiBNVEogaXMgdG8gZXh0ZW5kIHRoZSBFY2xpcHNlIHBsYXRmb3JtIHRvIHN1cHBvcnQgbW9iaWxlIGRldmljZSBKYXZhIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LiBUaGUgcHVycG9zZSBpcyB0byBkZXZlbG9wIGJvdGggZnJhbWV3b3JrcyB0aGF0IGNhbiBiZSBleHRlbmRlZCBieSB0b29sIHZlbmRvcnMgYW5kIHRvb2xzIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhpcmQgcGFydHkgbW9iaWxlIGphdmEgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4gTW9iaWxlIEphdmEgZG9tYWluIGNvbnRhaW5zIHNldmVyYWwgY29tYmluYXRpb25zIGZvciBjb25maWd1cmF0aW9uICg8YSBocmVmPSJodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTEzOSI+Q0xEQzwvYT4gYW5kIENEQykgYW5kIHByb2ZpbGUgKDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTE4Ij5NSURQPC9hPiwgPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0yMTkiPkZvdW5kYXRpb24gUHJvZmlsZTwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MjE2Ij5QZXJzb25hbCBQcm9maWxlPC9hPikuIEN1cnJlbnRseSB0aGUgbW9zdCBjb21tb24gY29tYmluYXRpb24gaXMgQ0xEQytNSURQLjxici8+PGJyLz4gCgkJCQk8aT4wLjcgRmVhdHVyZXM8L2k+OiBBIGRldmljZSBhbmQgZW11bGF0b3IgZnJhbWV3b3JrLCBhIGRlcGxveW1lbnQgZnJhbWV3b3JrLCBnZW5lcmljIGJ1aWxkIHByb2Nlc3NlcyBmb3IgbW9iaWxlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LCBtb2JpbGUgZGV2aWNlIGRlYnVnZ2luZywgYXBwbGljYXRpb24gY3JlYXRpb24gd2l6YXJkcywgVUkgZGVzaWduIHRvb2xzLCBsb2NhbGl6YXRpb24sIG9wdGltaXphdGlvbiBhbmQgc2VjdXJpdHkuPC9pPgoJCQkJPGk+Q29udHJpYnV0b3JzPC9pPjogTm9raWEgKHByb2plY3QgbGVhZCksIElCTSBhbmQgU29ueUVyaWNzc29uLgoJCQkJPGk+U3VwcG9ydHM8L2k+OiBXaW5kb3dzIHRvb2xzLCBNb2JpbGUgZGVwbG95bWVudCAoTm9raWEpLjxici8+PGJyLz48L2xpPgoJCTwvb2w+CgkJCgkJPHA+IlRoZSBEU0RQIHByb2plY3QgaXMgY3J1Y2lhbCB0byBmdWxmaWxsaW5nIEVjbGlwc2WScyBnb2FsIG9mIGNyZWF0aW5nIGEgdW5pdmVyc2FsIGRldmVsb3BtZW50IHBsYXRmb3JtIGZvciBpbmNyZWFzaW5nbHkgY29tcGxleCBzb2Z0d2FyZSwiIHNhaWQgTWlrZSBNaWxpbmtvdmljaCwgZXhlY3V0aXZlIGRpcmVjdG9yIG9mIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24uICJEU0RQIGhhcyBnYWluZWQgcmFwaWQgbW9tZW50dW0sIGFuZCB3aXRoIHRoZXNlIHRocmVlIG1ham9yIHJlbGVhc2VzLCB0aGUgcHJvamVjdCBub3cgcHJvdmlkZXMgYSBicm9hZCBmb3VuZGF0aW9uIGZvciBjb21tZXJjaWFsIGRldmljZSBzb2Z0d2FyZS4iIDwvcD4KCQk8cD4iVGhlc2UgdGhyZWUgcmVsZWFzZXMgYXJlIGltcG9ydGFudCBtaWxlc3RvbmVzIGluIERTRFCScyBwcm9ncmVzcyBhcyBhIHRvcC1sZXZlbCBFY2xpcHNlIHByb2plY3QsIiBzYWlkIERvdWcgR2FmZiwgbGVhZGVyIG9mIHRoZSBEU0RQIFByb2plY3QgTWFuYWdlbWVudCBDb21taXR0ZWUgKFBNQykgZnJvbSBXaW5kIFJpdmVyLiAiV2luZCBSaXZlciBpcyBwYXJ0aWN1bGFybHkgcGxlYXNlZCB0aGF0IGJlY2F1c2Ugb2YgVGFyZ2V0IE1hbmFnZW1lbnSScyBzdWNjZXNzZnVsIHJlbGVhc2UsIGRldmljZSBzb2Z0d2FyZSBkZXZlbG9wZXJzIG5vdyBoYXZlIGFuIG9wZW4gc291cmNlIGZyYW1ld29yayBhbmQgYSBzZXQgb2Ygdmlld3MgZm9yIG1hbmFnaW5nIHJlbW90ZSBlbWJlZGRlZCBzeXN0ZW1zIGZyb20gRWNsaXBzZS4gV2luZCBSaXZlciBwbGFucyB0byBhZG9wdCB0aGUgVGFyZ2V0IE1hbmFnZW1lbnQgdGVjaG5vbG9neSBpbiBvdXIgbmV4dCByZWxlYXNlIG9mIFdpbmQgUml2ZXIgV29ya2JlbmNoLiI8L3A+CgkJPHA+IldpdGggdGhlIGVSQ1AgYW5kIE1USiBwcm9qZWN0IHJlbGVhc2VzLCBtb2JpbGUgSmF2YSBkZXZlbG9wZXJzIGhhdmUgdHdvIG5ldyBvcGVuIHNvdXJjZSBwcm9qZWN0cyB0byBmYWNpbGl0YXRlIHRoZSBkZXZlbG9wbWVudCBhbmQgZXhlY3V0aW9uIG9mIEphdmEgTUUgYXBwbGljYXRpb25zLCIgc2FpZCBEU0RQIFByb2plY3QgTWFuYWdlbWVudCBDb21taXR0ZWUgbWVtYmVyIE1hcmsgUm9nYWxza2kuICJJQk0gaXMgdXNpbmcgdGhlIGVSQ1AgcHJvamVjdCBhcyB0aGUgYmFzZSBydW50aW1lIGZvciBJQk0ncyBMb3R1cyBFeHBlZGl0b3IgQ2xpZW50IGZvciBEZXZpY2VzLiBMb3R1cyBFeHBlZGl0b3IgcHJvdmlkZXMgYSBwcm9ncmFtbWluZyBtb2RlbCB0aGF0IGRlbGl2ZXJzIGEgdW5pdmVyc2FsIGNsaWVudCBleHBlcmllbmNlIGFjcm9zcyB0aGUgTG90dXMgY2xpZW50IHBvcnRmb2xpbywgaW5jbHVkaW5nIFdlYnNwaGVyZSBQb3J0YWwsIExvdHVzIFNhbWV0aW1lIGFuZCB0aGUgbmV3IHZlcnNpb24gb2YgTG90dXMgTm90ZXMgY29kZS1uYW1lZCBIYW5ub3Zlci4gVGhlIExvdHVzIEV4cGVkaXRvciBUb29sa2l0IHBsdWdzIGRpcmVjdGx5IGludG8gRWNsaXBzZSBvciBSYXRpb25hbCBBcHBsaWNhdGlvbiBEZXZlbG9wZXIuIiA8L3A+CgkJPHA+Ik5va2lhIHNlZXMgdGhlIGZpcnN0IEdBIHJlbGVhc2VzIG9mIHRoZXNlIHByb2plY3RzIGFzIG1ham9yIHByb2dyZXNzIGluIGNvbWJpbmluZyB0aGUgcG93ZXIgb2Ygb3BlbiBzb3VyY2UgZGV2ZWxvcG1lbnQgYW5kIGNvbW1lcmNpYWwgcHJvZHVjdHMgZm9yIGRldmVsb3BtZW50IGluIHRoZSBkZXZpY2UgbWFya2V0LCIgc2FpZCBNaWthIEhvaWtrYWxhLCBwcm9qZWN0IGxlYWQgZm9yIE1vYmlsZSBUb29scyBmb3IgdGhlIEphdmEgUGxhdGZvcm0gZnJvbSBOb2tpYS4gIlRob3VnaCBkZXZlbG9wZWQgaW4gb3VyIG9wZW4gc291cmNlIEVjbGlwc2UgcHJvamVjdCBncm91cCwgdGhlIGZyYW1ld29ya3MgZnJvbSBNVEogd2lsbCBwcm92aWRlIGEgZm91bmRhdGlvbiBmb3IgTm9raWGScyBDYXJiaWRlLmogY29tbWVyY2lhbCBtb2JpbGUgZGV2ZWxvcG1lbnQgdG9vbHMuIjwvcD4KCQk8cD48c3Ryb25nPkF2YWlsYWJpbGl0eTwvc3Ryb25nPjwvcD4KCQk8cD5EZXZpY2UgU29mdHdhcmUgRGV2ZWxvcG1lbnQgUGxhdGZvcm0gcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgYXQ6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZHNkcCI+d3d3LmVjbGlwc2Uub3JnL2RzZHA8L2E+LiAKCgkJPHA+PHN0cm9uZz5BYm91dCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJRWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHkgd2hvc2UgcHJvamVjdHMgYXJlIGZvY3VzZWQgb24gcHJvdmlkaW5nIGFuIGV4dGVuc2libGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gYW5kIGFwcGxpY2F0aW9uIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIHNvZnR3YXJlLiBFY2xpcHNlIHByb3ZpZGVzIGV4dGVuc2libGUgdG9vbHMgYW5kIGZyYW1ld29ya3MgdGhhdCBzcGFuIHRoZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBtb2RlbGluZywgbGFuZ3VhZ2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGZvciBKYXZhLCBDL0MrKyBhbmQgb3RoZXJzLCB0ZXN0aW5nIGFuZCBwZXJmb3JtYW5jZSwgYnVzaW5lc3MgaW50ZWxsaWdlbmNlLCByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgYW5kIGVtYmVkZGVkIGRldmVsb3BtZW50LiBBIGxhcmdlLCB2aWJyYW50IGVjb3N5c3RlbSBvZiBtYWpvciB0ZWNobm9sb2d5IHZlbmRvcnMsIGlubm92YXRpdmUgc3RhcnQtdXBzLCB1bml2ZXJzaXRpZXMgYW5kIHJlc2VhcmNoIGluc3RpdHV0aW9ucyBhbmQgaW5kaXZpZHVhbHMgZXh0ZW5kLCBjb21wbGVtZW50IGFuZCBzdXBwb3J0IHRoZSBFY2xpcHNlIFBsYXRmb3JtLjwvcD4KCQk8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGEgbm90LWZvci1wcm9maXQsIG1lbWJlciBzdXBwb3J0ZWQgY29ycG9yYXRpb24gdGhhdCBob3N0cyB0aGUgRWNsaXBzZSBwcm9qZWN0cy4gRnVsbCBkZXRhaWxzIG9mIEVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCQkKCQk8cD48Y2VudGVyPjxpPkFsbCBjb21wYW55L3Byb2R1Y3QgbmFtZXMgYW5kIHNlcnZpY2UgbWFya3MgbWF5IGJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIHRoZWlyIHJlc3BlY3RpdmUgY29tcGFuaWVzLjwvaT48L2NlbnRlcj48L3A+CgkJCgkJPGJyIC8+PGJyIC8+PHN0cm9uZz5QcmVzcyBDb250YWN0PC9zdHJvbmc+PGJyPgkKCQlKb2huIE1vcmFuPGJyPgoJCVNjaHdhcnR6IENvbW11bmljYXRpb25zPGJyPgoJCTc4MS02ODQtMDc3MDxicj4KCQllY2xpcHNlQHNjaHdhcnR6LXByLmNvbSA8YnI+CgkJPGJyIC8+CgkJCgkJQXNoaXNoIFBhdGVsPGJyPgoJCUJpdGUgQ29tbXVuaWNhdGlvbnMgZm9yIFdpbmQgUml2ZXI8YnI+CgkJNDE1LTM2NS0wNDY2PGJyPgoJCWFzaGlzaC5wYXRlbEBiaXRlcHIuY29tPGJyPgoJCTxiciAvPgoJCQoJCTxjZW50ZXI+IyAjICM8L2NlbnRlcj4gCgkJPGJyIC8+CgkJPGJyPgoJCQk8YnI+Cgk8L2Rpdj4KPC9kaXY+CgoKCgoKCQkKCkVPSFRNTDsKCgoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK