PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkJhbmRpdCBhbmQgSGlnZ2lucyBQcm9qZWN0cyBCcmlkZ2UgTXVsdGlwbGUgSWRlbnRpdHkgU3lzdGVtcyB0byBQcm92aWRlIGEgQ29uc2lzdGVudCBFeHBlcmllbmNlIG9mIElkZW50aXR5IjsKCSRwYWdlS2V5d29yZHMJPSAiSGlnZ2lucywgQmFuZGl0LCBtaWxlc3RvbmUiOwoJJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgkKCSMgZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxoMT4kcGFnZVRpdGxlPC9oMT4KCQk8cD48aT5Db2xsYWJvcmF0aW9uIGVuYWJsZXMgbXVsdGktcGxhdGZvcm0sIG11bHRpLXByb3RvY29sIG9wZW4gc291cmNlIGlkZW50aXR5IHNlcnZpY2VzIHRoYXQgaW50ZWdyYXRlIHdpdGggTWljcm9zb2Z0IENhcmRTcGFjZSBhbmQgTGliZXJ0eSBBbGxpYW5jZS1lbmFibGVkIHByb2R1Y3RzPC9pPjwvcD4KCQk8cD48c3Ryb25nPldBTFRIQU0sIE1hc3MuLCBhbmQgT1RUQVdBLCBDYW5hZGEgLSBKYW51YXJ5IDI5LCAyMDA3IC0gPC9zdHJvbmc+LSBUaGUgQmFuZGl0mSBhbmQgRWNsaXBzZSBIaWdnaW5zIFByb2plY3RzIHRvZGF5IGFubm91bmNlZCB0aGUgYWNoaWV2ZW1lbnQgb2YgYSBrZXkgbWlsZXN0b25lIGluIHRoZSBkZXZlbG9wbWVudCBvZiBvcGVuIHNvdXJjZSBpZGVudGl0eSBzZXJ2aWNlcy4gIEJhc2VkIG9uIHdvcmtpbmcgY29kZSBmcm9tIHRoZSB0d28gcHJvamVjdHMgYW5kIHRoZSBsYXJnZXIgY29tbXVuaXR5IG9mIG9wZW4gc291cmNlIGRldmVsb3BlcnMsIHRoZSB0ZWFtcyBoYXZlIGNyZWF0ZWQgYSByZWZlcmVuY2UgYXBwbGljYXRpb24gdGhhdCBzaG93Y2FzZXMgb3BlbiBzb3VyY2UgaWRlbnRpdHkgc2VydmljZXMgdGhhdCBhcmUgaW50ZXJvcGVyYWJsZSB3aXRoIE1pY3Jvc29mdJJzIFdpbmRvd3MqIENhcmRTcGFjZSogaWRlbnRpdHkgbWFuYWdlbWVudCBzeXN0ZW0gYW5kIGVuYWJsZSBMaWJlcnR5IEFsbGlhbmNlLWJhc2VkIGlkZW50aXR5IGZlZGVyYXRpb24gdmlhIE5vdmVsbK4gQWNjZXNzIE1hbmFnZXIuICBUaGlzIHJlZmVyZW5jZSBhcHBsaWNhdGlvbiBpcyBhIGZpcnN0LW9mLWl0cy1raW5kIG9wZW4gc291cmNlIGlkZW50aXR5IHN5c3RlbSB0aGF0IGZlYXR1cmVzIGludGVyb3BlcmFiaWxpdHkgd2l0aCBsZWFkaW5nIHBsYXRmb3JtcyBhbmQgcHJvdG9jb2xzLiAgVGhpcyBncm91bmQtYnJlYWtpbmcgd29yayB3aWxsIGJlIGRlbW9uc3RyYXRlZCBhdCB0aGUgdXBjb21pbmcgUlNBIENvbmZlcmVuY2UgaW4gU2FuIEZyYW5jaXNjby4gCgkJPC9wPgoJCTxwPiJUaGVyZSBhcmUgdHdvIGJhc2ljIHJlcXVpcmVtZW50cyBmb3IgdHJhbnNsYXRpbmcgdGhlIHBvdGVudGlhbCBvZiByZWNlbnQgaWRlbnRpdHkgaW5mcmFzdHJ1Y3R1cmUgZGV2ZWxvcG1lbnRzIGludG8gcmVhbC13b3JsZCBiZW5lZml0cyBmb3IgdXNlcnM6IGludGVyb3BlcmFiaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWFucyBvZiBkZXZlbG9waW5nIGlkZW50aXR5LWF3YXJlIGFwcGxpY2F0aW9ucywiIHNhaWQgSmFtaWUgTGV3aXMsIENFTyBhbmQgcmVzZWFyY2ggY2hhaXIgb2YgQnVydG9uIEdyb3VwLiAiRmlyc3QsIHZlbmRvcnMgbXVzdCBkZWxpdmVyIG9uIHRoZWlyIHByb21pc2UgdG8gZW5hYmxlIGludGVyb3BlcmFiaWxpdHkgYmV0d2VlbiBkaWZmZXJlbnQgaWRlbnRpdHkgc3lzdGVtcyBzZXJ2aW5nIGRpZmZlcmVudCBuZWVkcy4gU2Vjb25kLCBkZXZlbG9wZXJzIG5lZWQgYSBjb25zaXN0ZW50IG1lYW5zIG9mIGNyZWF0aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGxldmVyYWdlIGlkZW50aXR5IHdoaWxlIG1hc2tpbmcgbWFueSBvZiB0aGUgdW5kZXJseWluZyBkaWZmZXJlbmNlcyBpbiB0aG9zZSBzeXN0ZW1zIGZyb20gdGhlIHByb2dyYW1tZXIuIFRoZSBCYW5kaXQgYW5kIEVjbGlwc2UgSGlnZ2lucyBpbnRlcm9wZXJhYmlsaXR5IGRlbW9uc3RyYXRpb24gc2hvd3MgcHJvZ3Jlc3Mgb24gdGhlIHBhdGggdG93YXJkIHRoZXNlIGdvYWxzLiBBbmQgdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSBvcGVuIHNvdXJjZSBzb2Z0d2FyZSBwcm9qZWN0cyBpbmNyZWFzZXMgdGhlIHBvdGVudGlhbCB0aGF0IHRoZSBpZGVudGl0eSBpbmZyYXN0cnVjdHVyZSB3aWxsIGVtZXJnZSBhcyBhIGNvbW1vbiwgb3BlbiBzeXN0ZW0gZm9yIHRoZSBJbnRlcm5ldC4iPC9wPgoJCTxwPlRoZSBCYW5kaXQgYW5kIEhpZ2dpbnMgcHJvamVjdHMgYXJlIGRldmVsb3Bpbmcgb3BlbiBzb3VyY2UgaWRlbnRpdHkgc2VydmljZXMgdG8gaGVscCBpbmRpdmlkdWFscyBhbmQgb3JnYW5pemF0aW9ucyBieSBwcm92aWRpbmcgYSBjb25zaXN0ZW50IGFwcHJvYWNoIHRvIG1hbmFnaW5nIGRpZ2l0YWwgaWRlbnRpdHkgaW5mb3JtYXRpb24gcmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2d5LiAgVGhpcyByZWZlcmVuY2UgYXBwbGljYXRpb24gbGV2ZXJhZ2VzIHRoZSBpbmZvcm1hdGlvbiBjYXJkIG1ldGFwaG9yIHRoYXQgYWxsb3dzIGFuIGluZGl2aWR1YWwgdG8gdXNlIGRpZmZlcmVudCBkaWdpdGFsIGlkZW50aXR5IJFJLUNhcmRzkiB0byBnYWluIGFjY2VzcyB0byBvbmxpbmUgc2l0ZXMgYW5kIHNlcnZpY2VzLiBUaGlzIGlzIHRoZSBtZXRhcGhvciB1c2VkIGluIHRoZSBXaW5kb3eScyBDYXJkU3BhY2UgaWRlbnRpdHkgbWFuYWdlbWVudCBzeXN0ZW0gdGhhdCBzaGlwcyB3aXRoIHRoZSBWaXN0YSogb3BlcmF0aW5nIHN5c3RlbS48L3A+CgoJCTxwPpNXaW5kb3dzIENhcmRTcGFjZSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNaWNyb3NvZnSScyB2aXNpb24gb2YgYW4gaWRlbnRpdHkgbWV0YXN5c3RlbSwgd2hpY2ggd2UgaGF2ZSBwcm9tb3RlZCBhcyBhIG1vZGVsIGZvciBpZGVudGl0eSBpbnRlcm9wZXJhYmlsaXR5LJQgc2FpZCBLaW0gQ2FtZXJvbiwgYXJjaGl0ZWN0IGZvciBpZGVudGl0eSBhbmQgYWNjZXNzIGF0IE1pY3Jvc29mdC4gIJNJdJJzIHJld2FyZGluZyB0byBzZWUgdGhlIEJhbmRpdCBhbmQgSGlnZ2lucyBwcm9qZWN0cywgYXMgd2VsbCBhcyB0aGUgbGFyZ2VyIG9wZW4gc291cmNlIGNvbW11bml0eSwgZW1icmFjaW5nIHRoaXMgY29uY2VwdCBhbmQgZGVsaXZlcmluZyBvbiB0aGUgcHJvbWlzZSBvZiBpZGVudGl0eSBpbnRlcm9wZXJhYmlsaXR5LpQgPC9wPgoJCgkJPHA+VGhlIG9wZW4gc291cmNlIHRlY2hub2xvZ3kgZGV2ZWxvcGVkIGJ5IEJhbmRpdCBhbmQgSGlnZ2lucyBlbmFibGVzIGluaXRpYWwgaW50ZWdyYXRpb24gYmV0d2VlbiBhIG5vbi1MaWJlcnR5IEFsbGlhbmNlIGlkZW50aXR5IHN5c3RlbSBhbmQgYSBMaWJlcnR5IEFsbGlhbmNlIGJhc2VkIGZlZGVyYXRlZCBpZGVudGl0eSBzeXN0ZW0gcHJvdmlkZWQgYnkgTm92ZWxsIEFjY2VzcyBNYW5hZ2VyLiAgU3BlY2lmaWNhbGx5LCB0aGVzZSB0ZWNobm9sb2dpZXMgZW5hYmxlIE5vdmVsbCBBY2Nlc3MgTWFuYWdlciB0byBhdXRoZW50aWNhdGUgYSB1c2VyIHZpYSBhIE1pY3Jvc29mdCBpbmZvY2FyZCAoQ2FyZFNwYWNlKSBhbmQgY29uc3VtZSBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIGFuIGV4dGVybmFsIGlkZW50aXR5IHN5c3RlbS4gSXQgd2lsbCBmdXJ0aGVyIHNob3cgdGhhdCBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIE5vdmVsbCBBY2Nlc3MgTWFuYWdlciBjYW4gYmUgdXNlZCB3aXRoaW4gYW4gaW5mb2NhcmQgc3lzdGVtLiBUaGlzIGlzIGEgc2lnbmlmaWNhbnQgc3RlcCBmb3J3YXJkIGluIHRoZSBpbnRlZ3JhdGlvbiBvZiBzZXBhcmF0ZSBpZGVudGl0eSBzeXN0ZW1zIHRvIGRlbGl2ZXIgYSBzZWFtbGVzcyBleHBlcmllbmNlIGZvciB0aGUgdXNlciBhcyBkZW1vbnN0cmF0ZWQgYnkgdGhlIHJlZmVyZW5jZSBhcHBsaWNhdGlvbi48L3A+CgkJCgkJPHA+k1RoZSBMaWJlcnR5IEFsbGlhbmNlIHByb2plY3QgZnVsbHkgc3VwcG9ydHMgdGhlIGRldmVsb3BtZW50IG9mIG9wZW4gc291cmNlIGlkZW50aXR5IHNlcnZpY2VzIHRoYXQgYWR2YW5jZSB0aGUgZGVwbG95bWVudCBvZiBMaWJlcnR5LWVuYWJsZWQgZmVkZXJhdGlvbiBhbmQgV2ViIFNlcnZpY2VzIGFzIHBhcnQgb2YgdGhlIGJyb2FkZXIgSW50ZXJuZXQgaWRlbnRpdHkgbGF5ZXIslCBzYWlkIEJyZXR0IE1jRG93ZWxsLCBleGVjdXRpdmUgZGlyZWN0b3Igb2YgdGhlIExpYmVydHkgQWxsaWFuY2UuICCTVGhlIG9wZW4gc291cmNlIGNvbW11bml0eZJzIGVtYnJhY2Ugb2YgTGliZXJ0eSBBbGxpYW5jZSBwcm90b2NvbHMgaXMgdmFsaWRhdGlvbiBvZiB0aGUgYmVuZWZpdHMgdGhpcyB0ZWNobm9sb2d5IHByb3ZpZGVzLCBhbmQgd2Ugc2FsdXRlIHRoZSBCYW5kaXQgYW5kIEhpZ2dpbnMgdGVhbXMgZm9yIHRoZWlyIHJvbGUgaW4gbWFraW5nIHRoZSB0ZWNobm9sb2d5IG1vcmUgYnJvYWRseSBhY2Nlc3NpYmxlLpQ8L3A+CgkJCgkJPHA+SGlnZ2lucyBpcyBhbiBvcGVuIHNvdXJjZSBzb2Z0d2FyZSBwcm9qZWN0IHRoYXQgaXMgZGV2ZWxvcGluZyBhbiBleHRlbnNpYmxlLCBwbGF0Zm9ybS1pbmRlcGVuZGVudCwgaWRlbnRpdHkgcHJvdG9jb2wtaW5kZXBlbmRlbnQgc29mdHdhcmUgZnJhbWV3b3JrIHRvIHN1cHBvcnQgZXhpc3RpbmcgYW5kIG5ldyBhcHBsaWNhdGlvbnMgdGhhdCBnaXZlIHVzZXJzIG1vcmUgY29udmVuaWVuY2UsIHByaXZhY3kgYW5kIGNvbnRyb2wgb3ZlciB0aGVpciBpZGVudGl0eSBpbmZvcm1hdGlvbi4gIFRoZSByZWZlcmVuY2UgYXBwbGljYXRpb24gbGV2ZXJhZ2VzIHNldmVyYWwgcGFydHMgb2YgSGlnZ2lucyBpbmNsdWRpbmcgYW4gaWRlbnRpdHkgYWJzdHJhY3Rpb24gbGF5ZXIgY2FsbGVkIHRoZSBJZGVudGl0eSBBdHRyaWJ1dGUgU2VydmljZSAoSWRBUykuICBUbyBzdXBwb3J0IGEgZHluYW1pYyBlbnZpcm9ubWVudCB3aGVyZSBzb3VyY2VzIG9mIGlkZW50aXR5IGluZm9ybWF0aW9uIG1heSBjaGFuZ2UsIGl0IGlzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGEgY29tbW9uIG1lYW5zIHRvIGFjY2VzcyBpZGVudGl0eSBhbmQgYXR0cmlidXRlIGluZm9ybWF0aW9uIGZyb20gYWNyb3NzIG11bHRpcGxlIGlkZW50aXR5IHJlcG9zaXRvcmllcy4gVGhlIElkQVMgdmlydHVhbGl6ZXMgaWRlbnRpdHkgc291cmNlcyBhbmQgcHJvdmlkZXMgYSB1bmlmaWVkIHZpZXcgb2YgaWRlbnRpdHkgaW5mb3JtYXRpb24uICBEaWZmZXJlbnQgaWRlbnRpdHkgc3RvcmVzIG9yIGlkZW50aXR5IG1hbmFnZW1lbnQgc3lzdGVtcyBjYW4gY29ubmVjdCB0byB0aGUgSWRBUyB2aWEgk2NvbnRleHQgcHJvdmlkZXJzlCBhbmQgdGh1cyBwcm92aWRlIGludGVyb3BlcmFiaWxpdHkgYW1vbmcgbXVsdGlwbGUgc3lzdGVtcy48L3A+CgkJCgkJPHA+k01hbnkgZ3JvdXBzIGhhdmUgYmVlbiB3b3JraW5nIHRvd2FyZHMgdGhlIGdvYWxzIG9mIEludGVybmV0IGlkZW50aXR5IGludGVyb3BlcmFiaWxpdHkslCBzYWlkIFBhdWwgVHJldml0aGljaywgdGVjaG5vbG9neSBsZWFkIGZvciB0aGUgSGlnZ2lucyBwcm9qZWN0LiAgk1RoaXMgbWlsZXN0b25lIHJlcHJlc2VudHMgYSBtYWpvciBzdGVwIGluIGhhdmluZyBtdWx0aXBsZSBvcGVuIHNvdXJjZSBwcm9qZWN0cyB3b3JrIHRvZ2V0aGVyIHRvIHN1cHBvcnQgbXVsdGktcHJvdG9jb2wgaW50ZXJvcGVyYWJpbGl0eS6UIDwvcD4KCQkKCQk8cD5UaGUgQmFuZGl0IHByb2plY3QsIHNwb25zb3JlZCBieSBOb3ZlbGwsIGlzIGZvY3VzZWQgb24gZGVsaXZlcmluZyBhIGNvbnNpc3RlbnQgYXBwcm9hY2ggdG8gZW50ZXJwcmlzZSBpZGVudGl0eSBtYW5hZ2VtZW50IGNoYWxsZW5nZXMsIGluY2x1ZGluZyBzZWN1cmUgYWNjZXNzIGFuZCBjb21wbGlhbmNlIHJlcG9ydGluZy4gIFRoZSBCYW5kaXQgdGVhbZJzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHJlZmVyZW5jZSBhcHBsaWNhdGlvbiBpbmNsdWRlIHRoZSBkZXZlbG9wbWVudCBvZiBtdWx0aXBsZSCTY29udGV4dCBwcm92aWRlcnOUIHRoYXQgcGx1ZyBpbnRvIHRoZSBIaWdnaW5zIElkZW50aXR5IEF0dHJpYnV0ZSBTZXJ2aWNlIChJZEFTKSBhYnN0cmFjdGlvbiBsYXllciB0byBwcm92aWRlIGFjY2VzcyB0byBpZGVudGl0eSBpbmZvcm1hdGlvbiBhY3Jvc3MgZGlzcGFyYXRlIGlkZW50aXR5IHN0b3Jlcy4gIEl0IGFsc28gc2hvd2Nhc2VzIHRoZSByb2xlIGVuZ2luZSBhbmQgYXVkaXQgcmVwb3J0aW5nIGNhcGFiaWxpdGllcyBpbiBkZXZlbG9wbWVudCBieSB0aGUgQmFuZGl0IGNvbW11bml0eS48L3A+CgkJCgkJPHA+k1RoZSBkZXZlbG9wbWVudCBvZiB0aGlzIHJlZmVyZW5jZSBhcHBsaWNhdGlvbiB3b3VsZCBub3QgaGF2ZSBiZWVuIHBvc3NpYmxlIHdpdGhvdXQgdGhlIGNvbGxhYm9yYXRpb24gYW5kIGNvbnRyaWJ1dGlvbiBvZiB0aGUgd2lkZXIgSW50ZXJuZXQgaWRlbnRpdHkgY29tbXVuaXR5LJQgc2FpZCBEYWxlIE9sZHMsIEJhbmRpdCBwcm9qZWN0IGxlYWQgYW5kIGRpc3Rpbmd1aXNoZWQgZW5naW5lZXIgZm9yIE5vdmVsbC4gIJNUaGlzIGlzIHRoZSBmaXJzdCBvZiBtYW55IG1pbGVzdG9uZXMgd2UgYXJlIHdvcmtpbmcgdG93YXJkcyBhcyBib3RoIHRoZSBCYW5kaXQgYW5kIEhpZ2dpbnMgY29tbXVuaXRpZXMgc3RyaXZlICB0byBlbmFibGUgaW50ZXJvcGVyYWJsZSwgb3BlbiBzb3VyY2UgaWRlbnRpdHkgc2VydmljZXMulDwvcD4KCQkKCQk8cD48Yj5Nb3JlIEluZm9ybWF0aW9uPC9iPjxici8+CgkJVGhlIHJlZmVyZW5jZSBhcHBsaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQ6IDxhIGhyZWY9Imh0dHA6Ly93d3cuYmFuZGl0LXByb2plY3Qub3JnL2luZGV4LnBocC9SZWZlcmVuY2VfQXBwbGljYXRpb24iPmh0dHA6Ly93d3cuYmFuZGl0LXByb2plY3Qub3JnL2luZGV4LnBocC9SZWZlcmVuY2VfQXBwbGljYXRpb248L2E+LiAgSXQgd2lsbCBiZSBkZW1vbnN0cmF0ZWQgYXQgdGhlIExpYmVydHkgQWxsaWFuY2UgV29ya3Nob3Agb24gRmVicnVhcnkgNXRoIGZyb20gMTowMCB0byAzOjAwIHBtIFBhY2lmaWMgZm9yIHJlZ2lzdGVyZWQgYXR0ZW5kZWVzIG9mIHRoZSBSU0EgU2VjdXJpdHkgY29uZmVyZW5jZSBhdCB0aGUgTW9zY29uZSBDZW50ZXIgaW4gU2FuIEZyYW5jaXNjby4gIEludGVyZXN0ZWQgcGFydGllcyBjYW4gcmVnaXN0ZXIgZnJlZSBvZiBjaGFyZ2UgYXQ6IDxhIGhyZWY9Imh0dHBzOi8vY20ucnNhY29uZmVyZW5jZS5jb20vVVMwNy9wb3J0YWwvbmV3cmVnLnd3Ij5odHRwczovL2NtLnJzYWNvbmZlcmVuY2UuY29tL1VTMDcvcG9ydGFsL25ld3JlZy53dzwvYT4uIHVzaW5nIHJlZ2lzdHJhdGlvbiBjb2RlIDE0N0xJQkFFWC4gVGhpcyBpbmNsdWRlcyBhIGZyZWUgZXhwbyBwYXNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXR0ZW5kIHRoZSB0cmFkZXNob3cgcG9ydGlvbiBvZiB0aGUgY29uZmVyZW5jZSBUdWVzZGF5IHRocm91Z2ggVGh1cnNkYXkuICBUaGUgcmVmZXJlbmNlIGFwcGxpY2F0aW9uIGFuZCBwcm9qZWN0IGV4cGVydHMgd2lsbCBhbHNvIGJlIGF2YWlsYWJsZSB0aHJvdWdob3V0IHRoZSBSU0EgQ29uZmVyZW5jZSBpbiBOb3ZlbGyScyBib290aCAjMTkzNy4KCQk8L3A+CgkJCgkJPHA+PGI+QWJvdXQgQmFuZGl0PC9iPjxici8+CgkJQmFuZGl0IGlzIGFuIG9wZW4gc291cmNlIHByb2plY3QsIHNwb25zb3JlZCBieSBOb3ZlbGwsIHRoYXQgaXMgZGV2ZWxvcGluZyBvcGVuIHNvdXJjZSBpZGVudGl0eSBzZXJ2aWNlcyB0aGF0IHdpbGwgcHJvdmlkZSBvcmdhbml6YXRpb25zIHdpdGggYSBjb25zaXN0ZW50IGFwcHJvYWNoIHRvIGVudGVycHJpc2UgaWRlbnRpdHkgbWFuYWdlbWVudCBjaGFsbGVuZ2VzIHN1Y2ggYXMgc2VjdXJlLCByb2xlLWJhc2VkIGFjY2VzcyBhbmQgcmVndWxhdG9yeSBjb21wbGlhbmNlIHJlcG9ydGluZy4gIEFzIGFuIG9wZW4gc291cmNlIHByb2plY3QsIGl0IGlzIGFsc28gYSBjb21tdW5pdHkgb2YgZGV2ZWxvcGVycyCWIHBhcnQgb2YgYSBsYXJnZXIgaWRlbnRpdHkgYW5kIHNlY3VyaXR5IGNvbW11bml0eSCWIHRoYXQgb3JnYW5pemVzIGFuZCBzdGFuZGFyZGl6ZXMgaWRlbnRpdHktcmVsYXRlZCB0ZWNobm9sb2dpZXMgaW4gYW4gb3BlbiB3YXksIHByb21vdGluZyBpbnRlcm9wZXJhYmlsaXR5LCBjb2xsYWJvcmF0aW9uIGFuZCBmdXJ0aGVyIGlubm92YXRpb24uICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpc2l0OiA8YSBocmVmPSJodHRwOi8vd3d3LmJhbmRpdC1wcm9qZWN0Lm9yZy8iPmh0dHA6Ly93d3cuYmFuZGl0LXByb2plY3Qub3JnLzwvYT4KCQkKCQkKCQk8cD48c3Ryb25nPkFib3V0IEhpZ2dpbnMvRWNsaXBzZTwvc3Ryb25nPjxiciAvPgoJCVRoZSBIaWdnaW5zIHByb2plY3QgaXMgYW4gRWNsaXBzZSBGb3VuZGF0aW9uIHByb2plY3QuICBFY2xpcHNlIGlzIGFuIG9wZW4gc291cmNlIGNvbW11bml0eSB3aG9zZSBwcm9qZWN0cyBhcmUgZm9jdXNlZCBvbiBwcm92aWRpbmcgYW4gZXh0ZW5zaWJsZSBkZXZlbG9wbWVudCBwbGF0Zm9ybSBhbmQgYXBwbGljYXRpb24gZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50IGxpZmVjeWNsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIG1vZGVsaW5nLCBsYW5ndWFnZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgZm9yIEphdmEsIEMvQysrIGFuZCBvdGhlcnMsIHRlc3RpbmcgYW5kIHBlcmZvcm1hbmNlLCBidXNpbmVzcyBpbnRlbGxpZ2VuY2UsIHJpY2ggY2xpZW50IGFwcGxpY2F0aW9ucyBhbmQgZW1iZWRkZWQgZGV2ZWxvcG1lbnQuIEEgbGFyZ2UsIHZpYnJhbnQgZWNvc3lzdGVtIG9mIG1ham9yIHRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQgdGhlIEVjbGlwc2UgUGxhdGZvcm0uPC9wPgoJCTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgYSBub3QtZm9yLXByb2ZpdCwgbWVtYmVyIHN1cHBvcnRlZCBjb3Jwb3JhdGlvbiB0aGF0IGhvc3RzIHRoZSBFY2xpcHNlIHByb2plY3RzLiBGdWxsIGRldGFpbHMgb2YgRWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBhcmUgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPnd3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgoJCQoJCTxwPjxjZW50ZXI+PGk+Tm92ZWxsIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgYW5kIEJhbmRpdCBpcyBhIHRyYWRlbWFyayBvZiBOb3ZlbGwsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMgYW5kIG90aGVyIGNvdW50cmllcy4gICpBbGwgdGhpcmQtcGFydHkgdHJhZGVtYXJrcyBhcmUgdGhlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgb3duZXJzPC9pPjwvY2VudGVyPjwvcD4KCQkKCQk8YnIgLz48YnIgLz48c3Ryb25nPlByZXNzIENvbnRhY3Q8L3N0cm9uZz48YnI+CQoJCUpvaG4gTW9yYW4gb3IgTG9yaSBLcm9sbDxici8+CgkJU2Nod2FydHogQ29tbXVuaWNhdGlvbnMgZm9yIHRoZSBFY2xpcHNlIEZvdW5kYXRpb248YnIvPgoJCTc4MS02ODQtMDc3MDxici8+CgkJZWNsaXBzZUBzY2h3YXJ0ei1wci5jb20gPGJyLz4KCQk8YnIgLz4KCQk8YnIvPgoJCUNoYXJsb3R0ZSBCZXR0ZXJseTxici8+CgkJTm92ZWxsPGJyLz4KCQk3ODEtNDY0LTgyNTM8YnIvPgoJCWNiZXR0ZXJseUBub3ZlbGwuY29tPGJyLz4KCQkKCQk8Y2VudGVyPiMgIyAjPC9jZW50ZXI+IAoJCTxiciAvPgoJCTxicj4KCQkJPGJyPgoJPC9kaXY+Cgo8L2Rpdj4KCgoJCQoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=