PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkVjbGlwc2UgTXlsYXIgSW50cm9kdWNlcyBNYWpvciBOZXcgSW5ub3ZhdGlvbiBmb3IgRGV2ZWxvcGVyIFByb2R1Y3Rpdml0eSI7CgkkcGFnZUtleXdvcmRzCT0gIkVjbGlwc2VDb24sIDIwMDciOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgQWRkIHBhZ2Utc3BlY2lmaWMgTmF2IGJhcnMgaGVyZQoJIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkKCSMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCQoJJGh0bWwgPSA8PDxFT0hUTUwKPGRpdiBpZD0ibWFpbmNvbnRlbnQiPgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+RWNsaXBzZSBNeWxhciBJbnRyb2R1Y2VzIE1ham9yIE5ldyBJbm5vdmF0aW9uPGJyLz4gZm9yIERldmVsb3BlciBQcm9kdWN0aXZpdHk8L2gxPgoJCTxoMj5QcmVzcyBSZWxlYXNlPC9oMj4KCQk8cD48c3Ryb25nPk9UVEFXQSAtIERlY2VtYmVyIDEyLCAyMDA2IC0gPC9zdHJvbmc+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IGNvbW1pdHRlZCB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSB1bml2ZXJzYWwgc29mdHdhcmUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0sIHRvZGF5IGFubm91bmNlZCB0aGUgcmVsZWFzZSBvZiBFY2xpcHNlIE15bGFyIDEuMC4gTXlsYXIgaXMgYSB0YXNrZWQtZm9jdXNlZCB1c2VyIGludGVyZmFjZSB0aGF0IGVuaGFuY2VzIGRldmVsb3BlciBwcm9kdWN0aXZpdHkgYnkgcmVkdWNpbmcgaW5mb3JtYXRpb24gb3ZlcmxvYWQgYW5kIGVuYWJsaW5nIGVhc3kgbXVsdGktdGFza2luZy4gCgkJPC9wPgoJCTxwPlRvZGF5knMgSURFcyBvdmVybG9hZCBkZXZlbG9wZXJzIHdpdGggaW5mb3JtYXRpb24gYnkgcHJlc2VudGluZyB0b28gbWFueSBkZXRhaWxzIG9mIGEgc3lzdGVtknMgY29tcGxleGl0eS4gQXMgYSByZXN1bHQsIGRldmVsb3BlcnMgb2Z0ZW4gd2FzdGUgYW4gaW5vcmRpbmF0ZSBhbW91bnQgb2YgdGltZSBzZWFyY2hpbmcgYW5kIGJyb3dzaW5nIHRocm91Z2ggaHVuZHJlZHMgb2YgZmlsZXMgdG8gZmluZCB0aGUgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHRhc2stYXQtaGFuZC4gTXlsYXIgcHJvdmlkZXMgYSBuZXcgdGFzay1mb2N1c2VkIHVzZXIgaW50ZXJmYWNlIHRoYXQgZmlsdGVycyBFY2xpcHNlIElERSB2aWV3cyB0byBzaG93IG9ubHkgdGhlIGVsZW1lbnRzIHJlbGV2YW50IHRvIGEgc3BlY2lmaWMgdGFzay4gIFRoZXJlYnkgZm9jdXNpbmcgdGhlIGF0dGVudGlvbiBvZiB0aGUgZGV2ZWxvcGVyIGFuZCByZWR1Y2luZyB0aGUgYW1vdW50IG9mIHNjcm9sbGluZyBhbmQgc2VhcmNoaW5nIHJlcXVpcmVkIHRvIGZpeCBhIGJ1ZyBvciBhZGQgYSBuZXcgZmVhdHVyZS48L3A+CgkJCgkJPHA+IlRoZSBrZXkgaW50dWl0aW9uIGJlaGluZCBNeWxhciBpcyB0aGF0IHdoZW4gYSBkZXZlbG9wZXIgZml4ZXMgYSBidWcgb3IgYWRkcyBhIGZlYXR1cmUsIHRoZXkgb25seSBjYXJlIGFib3V0IGEgc3Vic2V0IG9mIHRoZSBzeXN0ZW0sIiBzYXlzIE1payBLZXJzdGVuLCBNeWxhciBwcm9qZWN0IGxlYWRlci4gIk15bGFyknMgaW5ub3ZhdGlvbiBpcyB0byBtYWtlIHRoaXMgc3Vic2V0IGV4cGxpY2l0IGJ5IGF1dG9tYXRpY2FsbHkgbWFuYWdpbmcgdGFzayBjb250ZXh0IG9uIHRoZSBkZXZlbG9wZXJzkiBiZWhhbGYuIFRoZSBlbmQgcmVzdWx0IGlzIHRoYXQgdGhlIGRldmVsb3BlcnMgYXJlIGFibGUgdG8gZm9jdXMgb24gdGhlaXIgcHJvZ3JhbW1pbmcgaW5zdGVhZCBvZiBiZWluZyBmb3JjZWQgdG8gY29uc3RhbnRseSBmaW5kIGFuZCByZS1maW5kIHRoZSBpbmZvcm1hdGlvbiB0aGV5IG5lZWQgdG8gZ2V0IHdvcmsgZG9uZS4iPC9wPgoKCQk8cD5NeWxhciBzaW1wbGlmaWVzIHRoZSB0YXNrIG1hbmFnZW1lbnQgY29tcGxleGl0eSBvZiBhIGRldmVsb3BlcpJzIGRhaWx5IHdvcmsuICBJdCBlbmFibGVzIG11bHRpLXRhc2tpbmcgYnkgcHJvdmlkaW5nIGEgdGFzayBtYW5hZ2VtZW50IHZpZXcgdGhhdCBhbGxvd3MgZGV2ZWxvcGVycyB0byBlYXNpbHkgc3dpdGNoIGJldHdlZW4gdGFza3MgYW5kIHNoYXJlIHRhc2sgY29udGV4dCB3aXRoIG90aGVyIGRldmVsb3BlcnMuICBNeWxhciBhbHNvIHVuaWZpZXMgdGhlIGRpZmZlcmVudCB0YXNrIGxpc3RzIGEgZGV2ZWxvcGVyIHR5cGljYWxseSB1c2VzLCBzdWNoIGFzIGJ1ZyB0cmFja2luZyBhbmQgZS1tYWlsIHN5c3RlbXMsIGJ5IGludGVncmF0aW5nIHRoZXNlIHN5c3RlbXMgaW50byBhIGNvbW1vbiBNeWxhciBUYXNrIExpc3QuICBUaGlzIHVuaWZpZWQgdGFzayBsaXN0IGxldmVyYWdlcyBFY2xpcHNlknMgcmljaCBjbGllbnQgY2FwYWJpbGl0aWVzIHRvIGFsbG93IG9mZmxpbmUgYWNjZXNzIGFuZCBjaGFuZ2Ugbm90aWZpY2F0aW9ucywgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byBzcGVuZCBtb3JlIG9mIHRoZWlyIGRheSBpbiB0aGUgRWNsaXBzZSBJREUgd2hlcmUgdGhleSBhcmUgcHJvZHVjdGl2ZSBpbnN0ZWFkIGJlaW5nIGZvcmNlZCB0byBjb25zdGFudGx5IHN3aXRjaCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBicm93c2VyIGFuZCBlbWFpbCBpbmJveC48L3A+CgkKCQk8cD4iTXlsYXIgaXMgdGhlIG5leHQga2lsbGVyIGZlYXR1cmUgZm9yIGFsbCBJREVzLCIgc2F5cyBXaWxsaWFuIE1pdHN1ZGEsIGRldmVsb3BlciBhdCBJQk9QRSwgYSBsYXJnZSBCcmF6aWxpYW4gbXVsdGluYXRpb25hbCBjb21wYW55LiAgIldoZW4gSSBzdGFydGVkIHVzaW5nIE15bGFyIEkganVzdCBjb3VsZG4ndCBiZWxpZXZlIGhvdyBJIG1hbmFnZWQgdG8gd29yayBvbiBsYXJnZSBwcm9qZWN0IHdpdGhvdXQgaXQuICBUaGlzIGlzIGRlZmluaXRlbHkgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBpbm5vdmF0aW9ucyBzaW5jZSByZWZhY3RvcmluZy4iPC9wPgoKCQk8cD5NeWxhciBhbHJlYWR5IGludGVncmF0ZXMgd2l0aCBpc3N1ZSB0cmFja2luZyBzb2Z0d2FyZSBzdWNoIGFzIEJ1Z3ppbGxhLCBKSVJBIGFuZCBUcmFjLiAgT3JnYW5pemF0aW9ucyBhcmUgYWxzbyBiZWdpbm5pbmcgdG8gaW50ZWdyYXRlIG9yIHBsYW4gdG8gaW50ZWdyYXRlIHN1cHBvcnQgZm9yIE15bGFyIGludG8gdGhlaXIgcHJvZHVjdHMsIGluY2x1ZGluZyAgQ29kZUdlYXIsIENvbGxhYm5ldCBhbmQgTWF2ZW4uIDwvcD4KCQkKCQk8cD4iSW4gSkJ1aWxkZXIgMjAwNyB3ZSBmb2N1c2VkIG9uIG1ha2luZyBpdCBlYXNpZXIgdG8gdmlldywgdW5kZXJzdGFuZCBhbmQgbWFuYWdlIGRhaWx5IHRhc2tzIGJvdGggZnJvbSBhIHRlYW0gYW5kIGFuIGluZGl2aWR1YWwgZGV2ZWxvcGVyJ3MgcGVyc3BlY3RpdmUgYW5kIE15bGFyIGlzIGFuIGltcG9ydGFudCBjb21wb25lbnQgaW4gdGhlIHNvbHV0aW9uLCIgc2FpZCBNaWNoYWVsIFN3aW5kZWxsIFZpY2UgUHJlc2lkZW50IG9mIFByb2R1Y3RzIGFuZCBTdHJhdGVneSBmb3IgQ29kZUdlYXIuICJNeWxhciBwcm92aWRlcyB1cyB3aXRoIGFuIGlubm92YXRpdmUgbWVhbnMgZm9yIHZpZXdpbmcgcHJvamVjdCByZXNwb25zaWJpbGl0aWVzIGFuZCBhIGZvdW5kYXRpb24gb24gd2hpY2ggd2UgY2FuIGludGVncmF0ZSBkaWZmZXJlbnQgbGlmZWN5Y2xlIGNvbXBvbmVudHMgaW50byB0aGUgSkJ1aWxkZXIgZXhwZXJpZW5jZSBhbmQgZmluZSB0dW5lIHRoZSB1c2VyknMgdmlldyBvZiBwcm9qZWN0IGFydGlmYWN0cy4iPC9wPgoJCQoJCTxwPiJNeWxhcidzIGNvbXBlbGxpbmcgbmV3IGFwcHJvYWNoIGFuZCBDb2xsYWJOZXQncyBjb2xsYWJvcmF0aXZlIGRldmVsb3BtZW50IHBsYXRmb3JtIHdpbGwgb3JnYW5pemUgYWxsIGFzcGVjdHMgb2YgdGhlIEVjbGlwc2UgZGV2ZWxvcGVyIGVudmlyb25tZW50LiBUb2dldGhlciB3aXRoIFN1YnZlcnNpb24sIGl0IGNvbm5lY3RzIGRldmVsb3BlcnMgZGlyZWN0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcHJvamVjdCB0ZWFtIGFuZCB0aGUgZGV2ZWxvcG1lbnQgcHJvY2Vzc2VzIHVzZWQgYnkgdGhlaXIgb3JnYW5pemF0aW9uLCIgc2FpZCBKYWNrIFJlcGVubmluZywgYXJjaGl0ZWN0IGF0IENvbGxhYk5ldC48L3A+CgkJCgkJPHA+PHN0cm9uZz5BYm91dCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uPC9zdHJvbmc+PGJyIC8+CgkJRWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHkgd2hvc2UgcHJvamVjdHMgYXJlIGZvY3VzZWQgb24gcHJvdmlkaW5nIGFuIGV4dGVuc2libGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gYW5kIGFwcGxpY2F0aW9uIGZyYW1ld29ya3MgZm9yIGJ1aWxkaW5nIHNvZnR3YXJlLiBFY2xpcHNlIHByb3ZpZGVzIGV4dGVuc2libGUgdG9vbHMgYW5kIGZyYW1ld29ya3MgdGhhdCBzcGFuIHRoZSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBsaWZlY3ljbGUsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBtb2RlbGluZywgbGFuZ3VhZ2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGZvciBKYXZhLCBDL0MrKyBhbmQgb3RoZXJzLCB0ZXN0aW5nIGFuZCBwZXJmb3JtYW5jZSwgYnVzaW5lc3MgaW50ZWxsaWdlbmNlLCByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgYW5kIGVtYmVkZGVkIGRldmVsb3BtZW50LiBBIGxhcmdlLCB2aWJyYW50IGVjb3N5c3RlbSBvZiBtYWpvciB0ZWNobm9sb2d5IHZlbmRvcnMsIGlubm92YXRpdmUgc3RhcnQtdXBzLCB1bml2ZXJzaXRpZXMgYW5kIHJlc2VhcmNoIGluc3RpdHV0aW9ucyBhbmQgaW5kaXZpZHVhbHMgZXh0ZW5kLCBjb21wbGVtZW50IGFuZCBzdXBwb3J0IHRoZSBFY2xpcHNlIFBsYXRmb3JtLjwvcD4KCQk8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGEgbm90LWZvci1wcm9maXQsIG1lbWJlciBzdXBwb3J0ZWQgY29ycG9yYXRpb24gdGhhdCBob3N0cyB0aGUgRWNsaXBzZSBwcm9qZWN0cy4gRnVsbCBkZXRhaWxzIG9mIEVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCQkKCQk8cD48Y2VudGVyPjxpPkFsbCBjb21wYW55L3Byb2R1Y3QgbmFtZXMgYW5kIHNlcnZpY2UgbWFya3MgbWF5IGJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIHRoZWlyIHJlc3BlY3RpdmUgY29tcGFuaWVzLjwvaT48L2NlbnRlcj48L3A+CgkJCgkJPGJyIC8+PGJyIC8+PHN0cm9uZz5QcmVzcyBDb250YWN0PC9zdHJvbmc+PGJyPgkKCQlKb2huIE1vcmFuIG9yIExvcmkgS3JvbGw8YnIvPgoJCVNjaHdhcnR6IENvbW11bmljYXRpb25zPGJyLz4KCQk3ODEtNjg0LTA3NzA8YnIvPgoJCWVjbGlwc2VAc2Nod2FydHotcHIuY29tIDxici8+CgkJPGJyIC8+CgkJCgkJPGNlbnRlcj4jICMgIzwvY2VudGVyPiAKCQk8YnIgLz4KCQk8YnI+CgkJCTxicj4KCTwvZGl2PgoKPC9kaXY+CgoJPGRpdiBpZD0icmlnaHRjb2x1bW4iPgoJPGRpdiBjbGFzcz0ic2lkZWl0ZW0iPgoJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL215bGFyIj5NeWxhciBIb21lcGFnZTwvYT48L2xpPgoJCTwvdWw+Cgk8L2Rpdj4KCTwvZGl2PgoKCQkKCkVPSFRNTDsKCgoJIyBHZW5lcmF0ZSB0aGUgd2ViIHBhZ2UKCSRBcHAtPmdlbmVyYXRlUGFnZSgkdGhlbWUsICRNZW51LCAkTmF2LCAkcGFnZUF1dGhvciwgJHBhZ2VLZXl3b3JkcywgJHBhZ2VUaXRsZSwgJGh0bWwpOwo/PgoK