PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPgo8dGl0bGU+QWJvdXQgRWNsaXBzZUxpbmsgMi4zPC90aXRsZT4KPC9oZWFkPgo8Ym9keSBsYW5nPSJFTi1VUyI+CjxoMT5FY2xpcHNlTGluayAyLjM8L2gxPgo8aDI+RWNsaXBzZSBJbmRpZ28gc2ltdWx0YW5lb3VzIHJlbGVhc2U8L2gyPgo8cD5Jbml0aWFsIFJlbGVhc2UgRGF0ZSAtIEp1bmUgMjAxMTwvcD4KPGgyPkFib3V0PC9oMj4KPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWNsaXBzZWxpbmsiPkVjbGlwc2VMaW5rPC9hPiBwcm9qZWN0J3MKICBnb2FsIGlzIHRvIHByb3ZpZGUgYSBjb21wbGV0ZSBwZXJzaXN0ZW5jZSBmcmFtZXdvcmsgdGhhdCBpcyBib3RoIGNvbXByZWhlbnNpdmUKICBhbmQgdW5pdmVyc2FsLiBJdCB3aWxsIHJ1biBpbiBhbnkgSmF2YSBlbnZpcm9ubWVudCBhbmQgcmVhZCBhbmQgd3JpdGUgb2JqZWN0cwogIHRvIHZpcnR1YWxseSBhbnkgdHlwZSBvZiBkYXRhIHNvdXJjZSwgaW5jbHVkaW5nIHJlbGF0aW9uYWwgZGF0YWJhc2VzLCBhbmQgWE1MLgogIEVjbGlwc2VMaW5rIHdpbGwgZm9jdXMgb24gcHJvdmlkaW5nIGxlYWRpbmcgZWRnZSBzdXBwb3J0LCBpbmNsdWRpbmcgYWR2YW5jZWQKICBmZWF0dXJlIGV4dGVuc2lvbnMsIGZvciB0aGUgZG9taW5hbnQgcGVyc2lzdGVuY2Ugc3RhbmRhcmRzIGZvciBlYWNoIHRhcmdldCBkYXRhCiAgc291cmNlOyBKYXZhIFBlcnNpc3RlbmNlIEFQSSAoSlBBKSBmb3IgcmVsYXRpb25hbCBkYXRhYmFzZXMsIEphdmEgQVBJIGZvciBYTUwKICBCaW5kaW5nIChKQVhCKSBmb3IgWE1MLCBTZXJ2aWNlIERhdGEgT2JqZWN0cyAoU0RPKSwgYW5kIERhdGFiYXNlIFdlYiBzZXJ2aWNlcwogIChEQldTKS4gPC9wPgoKPHA+Rm9yIHRpcHMgb24gZ2V0dGluZyBzdGFydGVkIHdpdGggRWNsaXBzZUxpbmssIHBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyByZXNvdXJjZXM6CjwvcD4KPHVsPgogIDxsaT4gPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lY2xpcHNlbGluay9yZWxlYXNlcy8yLjMuMC5waHAiPkVjbGlwc2VMaW5rIDIuMyBSZWxlYXNlIE5vdGVzPC9hPjwvbGk+CiAgPGxpPiA8YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9FY2xpcHNlTGluay9Vc2VyTWFudWFsIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgPGxpPiA8YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9FY2xpcHNlTGluay9FeGFtcGxlcyI+RXhhbXBsZXMgYW5kIEhvdyBUbzwvYT48L2xpPgo8L3VsPgo8aDI+TGljZW5zZSA8L2gyPgo8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCZxdW90O0NvbnRlbnQmcXVvdDspLgogICAgVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMKICAgIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspIGFuZAogICAgRWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAok0VETJQpLiBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQKICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj4gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+CiAgICBhbmQgYSBjb3B5IG9mIHRoZSBFREwgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lZGwtdjEwLnBocCI+CiAgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZWRsLXYxMC5waHA8L2E+LiAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIgogICAgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUKICBDb250ZW50IGlzIGJlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykKICBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heSBhcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUKICBpbiB0aGUgQ29udGVudC4gQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3ImIzgyMTc7cyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGgKICB0aGUgQ29udGVudC4gSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gVW5sZXNzIG90aGVyd2lzZQogIGluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgYW5kIEVETCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlCiAgY29kZSBpbiB0aGUgQ29udGVudCBhbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPgo8aDI+VGhpcmQgUGFydHkgQ29udGVudDwvaDI+CjxwPlRoZSBDb250ZW50IGluY2x1ZGVzIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIHNvdXJjZWQgZnJvbSB0aGlyZCBwYXJ0aWVzIGFzIHNldAogIG91dCBiZWxvdy4gSWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLAogIHRoZSBmb2xsb3dpbmcgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vawogIHRvIHRoZSBSZWRpc3RyaWJ1dG9yJiM4MjE3O3MgbGljZW5zZSBmb3IgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLjwvcD4KPHVsPgogIDxsaT5Gb3VuZGF0aW9uIERlcGVuZGVuY2llcwogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iI0FTTSI+QVNNPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPkVjbGlwc2VMaW5rIEpQQQogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iI0FOVExSIj5BTlRMUjwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI0pQQTEiPkphdmEgUGVyc2lzdGVuY2UgQVBJIChKUEEpIDEuMCAtIEVKQiAzLjA8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNKUEEyIj5KYXZhIFBlcnNpc3RlbmNlIEFQSSAoSlBBKSAyLjA8L2E+PC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+RWNsaXBzZUxpbmsgTU9YeQogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iI0pBWEIiPkphdmEgQXJjaGl0ZWN0dXJlIGZvciBYTUwgQmluZGluZyAoSkFYQik8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNNQUlMIj5KYXZhIE1haWw8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNBQ1RJVkFUSU9OIj5KYXZhIEFjdGl2YXRpb24gRnJhbWV3b3JrPC9hPjwvbGk+CiAgICAgIDxsaT48YSBocmVmPSIjU3RBWCI+U3RyZWFtaW5nIEFQSSBmb3IgWE1MIChTdEFYKTwvYT48L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5FY2xpcHNlTGluayBTRE8KICAgIDx1bD4KICAgICAgPGxpPjxhIGhyZWY9IiNTRE8iPlNlcnZpY2UgRGF0YSBPYmplY3RzIChTRE8pPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPkVjbGlwc2VMaW5rIERCV1MKICAgIDx1bD4KICAgICAgPGxpPjxhIGhyZWY9IiNTZXJ2bGV0Ij5KYXZhIFNlcnZsZXQgMi40IChvciBoaWdoZXIpPC9hPjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlV0aWxpdGllcwogICAgPHVsPgogICAgICA8bGk+PGEgaHJlZj0iI0pDQSI+SmF2YSBDb25uZWN0b3I8L2E+PC9saT4KICAgICAgPGxpPjxhIGhyZWY9IiNYRVJDRVMiPlhlcmNlczwvYT48L2xpPgogICAgICA8bGk+PGEgaHJlZj0iI1dTREw0SiI+V1NETDRKIDEuNi4yIDwvYT48L2xpPgogICAgPC91bD4KICA8L2xpPgo8L3VsPgo8aHIgLz4KPGgzPjxhIG5hbWU9IkFTTSIgaWQ9IkFTTSI+PC9hPkFTTSB2My4zLjEgPC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIEVjbGlwc2VMaW5rIFByb2plY3QgaW5jbHVkZXMgQVNNIGZvciB0aGUgcHVycG9zZSBvZgogICAgYnl0ZSBjb2RlIHdlYXZpbmcuIFRoZSBBTVMgbGlicmFyeSBpcyByZS1wYWNrYWdlZCB3aXRoaW4gdGhlIHNvdXJjZSBvZiB0aGUKICAgIHByb2plY3QgKG9yZy5wZXJzaXN0ZW5jZS5lY2xpcHNlLmludGVybmFsLmxpYnJhcmllcy5hc20uKikgdG8gYXZvaWQgdmVyc2lvbgogICAgY29sbGlzaW9ucyB3aXRoIG90aGVyIHVzYWdlIG9mIEFTTS4KICA8L3A+CiAgPHA+VGhlIHNvdXJjZSBjb2RlIGlzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIHByb2plY3QncyBzdWJ2ZXJzaW9uIHJlcG9zaXRvcnkuCiAgICBUaGUgYmluYXJpZXMgYXJlIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGUgZWNsaXBzZWxpbmsuamFyIGFuZCBpbiB0aGUgb3JnLmVjbGlwc2UucGVyc2lzdGVuY2UuYXNtXyouamFyCiAgICBidW5kbGUuIDwvcD4KICA8cD4gPGEgaHJlZj0iaHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2xpY2Vuc2UuaHRtbCI+aHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2xpY2Vuc2UuaHRtbDwvYT48L3A+CiAgPHA+Q29weXJpZ2h0IChjKSAyMDAwLTIwMDUgSU5SSUEsIEZyYW5jZSBUZWxlY29tLCBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICA8cD5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAogICAgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OjwvcD4KICA8b2w+CiAgICA8bGk+IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci48L2xpPgogICAgPGxpPiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uPC9saT4KICAgIDxsaT4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CiAgICAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48L2xpPgogIDwvb2w+CiAgPHA+VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAmcXVvdDtBUwogICAgSVMmcXVvdDtBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAogICAgVE8sIFRIRUlNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgogICAgUFVSUE9TRUFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUwogICAgQkVMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SQ09OU0VRVUVOVElBTAogICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GU1VCU1RJVFVURSBHT09EUyBPUgogICAgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKICAgIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU5DT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKICAgIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSlBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRlRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3A+CjwvYmxvY2txdW90ZT4KPGgzPjxhIG5hbWU9IkFOVExSIiBpZD0iQU5UTFIiPjwvYT5BTlRMUiB2My4wPC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYW50bHIub3JnLyI+QU5UTFIgbGlicmFyeTwvYT4gKDxhIGhyZWY9Imh0dHA6Ly93d3cuYW50bHIub3JnL2xpY2Vuc2UuaHRtbCI+bGljZW5zZTwvYT4pCiAgICBpcyBpbmNsdWRlZCB3aXRoaW4gRWNsaXBzZUxpbmsgUHJvamVjdCB0byBlbmFibGUgcGFyc2luZyBvZiB0aGUgSmF2YSBQZXJzaXN0ZW5jZQogICAgUXVlcnkgbGFuZ3VhZ2UgKEpQIFFMKS4gVGhlIEFOVExSIGxpYnJhcnkgaXMgcmUtcGFja2FnZWQgd2l0aGluIHRoZSBwcm9qZWN0CiAgICBpbiB0aGUgb3JnLmVjbGlwc2UucGVyc2lzdGVuY2UuaW50ZXJuYWwubGlicmFyaWVzLmFudGxyLiogcGFja2FnZXMuIDwvcD4KICA8cD5UaGUgc291cmNlIGlzIGF2YWlsYWJsZSB3aXRoIHRoZSBwcm9qZWN0J3Mgc3VidmVyc2lvbiByZXBvc2l0b3J5LiBUaGUgYmluYXJpZXMKICAgIGFyZSBkaXN0cmlidXRlZCB3aXRoaW4gdGhlIGVjbGlwc2VsaW5rLmphciBhbmQgaW4gdGhlIG9yZy5lY2xpcHNlLnBlcnNpc3RlbmNlLmFudGxyXzIuMi4wLnYqLmphcgogICAgYnVuZGxlLjwvcD4KPC9ibG9ja3F1b3RlPgo8aDM+PGEgbmFtZT0iSkFYQiIgaWQ9IkpBWEIiPjwvYT5KYXZhIEFyY2hpdGVjdHVyZSBmb3IgWE1MIEJpbmRpbmcgKEpBWEIpIHYyLjI8L2gzPgo8YmxvY2txdW90ZT4KICA8cD5UaGUgPGEgaHJlZj0iaHR0cHM6Ly9qYXhiLmRldi5qYXZhLm5ldC8yLjIvIj5KQVhCIGxpYnJhcmllczwvYT4gZGlzdHJpYnV0ZWQKICAgIHVuZGVyIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9wdWJsaWMvQ0RETHYxLjAuaHRtbCI+Q0RETCB2MS4wPC9hPgogICAgYXJlIGluY2x1ZGVkIHdpdGhpbiB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCB0byBlbmFibGUgdGhlIE1PWFkgY29tcG9uZW50J3MKICAgIGltcGxlbWVudGF0aW9uIG9mIEpBWEIuPC9wPgogIDxwPkpBWEIgTGlicmFyaWVzOiA8L3A+CiAgPHVsPgogICAgPGxpPmphdmF4LnhtbC5iaW5kXzIuMi4wLnYyMDEwMDUwODA0MDIuamFyIChqYXhiLWFwaS5qYXIpPC9saT4KICAgIDxsaT5jb20uc3VuLnhtbC5iaW5kXzIuMi4wLnYyMDEwMDQxNDE5NTAuamFyIChqYXhiLWltcGwuamFyKTwvbGk+CiAgICA8bGk+Y29tLnN1bi50b29scy54amNfMi4yLjAuamFyIChqYXhiLnhqYy5qYXIpPC9saT4KICA8L3VsPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJKUEExIiBpZD0iSlBBMSI+PC9hPkphdmEgUGVyc2lzdGVuY2UgKEpQQSkgMS4wIC0gRUpCIDMuMDwvaDM+CjxibG9ja3F1b3RlPgogIDxwPlRoZSBKYXZhIFBlcnNpc3RlbmNlIEFQSSwgaW5jbHVkZWQgd2l0aCBFSkIgMy4wLCBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkCiAgICBmcm9tIHRoZSA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvc291cmNlL2Jyb3dzZS9nbGFzc2Zpc2gvZWpiLWFwaSI+ZWpiLWFwaQogICAgZGlyZWN0b3J5PC9hPiBpbiB0aGUgZ2xhc3NmaXNoIENWUyByZXBvc2l0b3J5Lkl0IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9wdWJsaWMvQ0RETHYxLjAuaHRtbCI+CiAgICBDRERMdjEuMCA8L2E+LiBUaGUgamFyIGlzIGJlaW5nIHNoaXBwZWQgYXMgYW4gT1NHaSBidW5kbGUgYW5kIGlzIHJlcXVpcmVkCiAgICBmb3IgY29tcGlsYXRpb24gb2Ygc29tZSBjb250YWluZXIgYmFzZWQgZnVjdGlvbmFsaXR5LjwvcD4KPC9ibG9ja3F1b3RlPgo8cD48L3A+CjxoMz48YSBuYW1lPSJKUEEyIiBpZD0iSlBBMiI+PC9hPkphdmEgUGVyc2lzdGVuY2UgKEpQQSkgMi4wICA8L2gzPgo8YmxvY2txdW90ZT4KICA8cD5FY2xpcHNlTGluayBpcyB0aGUgSmF2YSBQZXJzaXN0ZW5jZSAoSlBBKSAyLjAgUmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCiAgICAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0zMTciPkpTUiAzMTc8L2E+KS4gIFRoZSBKUEEgMi4wCiAgICBzcGVjaWZpY2F0aW9uIEFQSSBpcyBpbmNsdWRlZCBpbiBFY2xpcHNlTGluayB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPkVQTDwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvb3JnL2RvY3VtZW50cy9lZGwtdjEwLnBocCI+RURMPC9hPiBsaWNlbnNlcy48L3A+CjwvYmxvY2txdW90ZT4KPGgzPjxhIG5hbWU9Ik1BSUwiIGlkPSJNQUlMIj48L2E+SmF2YSBNYWlsIHYxLjQuMDwvaDM+CjxibG9ja3F1b3RlPgogIDxwPlRoZSBKYXZhIE1haWwgbGlicmFyeSAobWFpbC5qYXIpIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gPGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9wcm9kdWN0cy9qYXZhbWFpbC9qYXZhbWFpbC0xXzQuaHRtbCI+amF2YS5zdW4uY29tPC9hPgogICAgdW5kZXIgPGEgaHJlZj0iaHR0cHM6Ly9nbGFzc2Zpc2guZGV2LmphdmEubmV0L3B1YmxpYy9DRERMdjEuMC5odG1sIj5DRERMCiAgICB2MS4wPC9hPiBhbmQgaXMgaW5jbHVkZWQgd2l0aGluIHRoZSBFY2xpcHNlTGluayBQcm9qZWN0IGRpc3RyaWJ1dGlvbgogICAgdG8gc3VwcG9ydCBXZWIgU2VydmljZXMgYXR0YWNobWVudCBoYW5kbGluZyBpbiB0aGUgTU9YeSBjb21wb25lbnQuIEl0IGlzIG9ubHkKICAgIHJlcXVpcmVkIHdoZW4gdXNpbmcgSmF2YSBTRSA1IChKYXZhIE1haWwgaXMgaW5jbHVkZWQgaW4gSmF2YSBTRSA2KS48L3A+CjwvYmxvY2txdW90ZT4KPGgzPjxhIG5hbWU9IkFDVElWQVRJT04iIGlkPSJBQ1RJVkFUSU9OIj48L2E+SmF2YSBBY3RpdmF0aW9uIEZyYW1ld29yayB2MS4xPC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIEphdmEgQWN0aXZhdGlvbiBGcmFtZXdvcmsgKGFjdGl2YXRpb24uamFyKSBpcyBkaXN0cmlidXRlZCB3aXRoIHRoZSA8YSBocmVmPSJodHRwczovL2pheGIuZGV2LmphdmEubmV0LzIuMi8iPkpBWEIKICAgIHYyLjI8L2E+IHVuZGVyIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9wdWJsaWMvQ0RETHYxLjAuaHRtbCI+Q0RETAogICAgdjEuMDwvYT4gYW5kIGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCBkaXN0cmlidXRpb24gdG8gc3VwcG9ydAogICAgV2ViIFNlcnZpY2VzIGF0dGFjaG1lbnQgaGFuZGxpbmcgaW4gdGhlIE1PWHkgY29tcG9uZW50LiBJdCBpcyBvbmx5IHJlcXVpcmVkCiAgICB3aGVuIHVzaW5nIEphdmEgU0UgNSAoVGhlIEphdmEgQWN0aXZhdGlvbiBGcmFtZXdvcmsgaXMgaW5jbHVkZWQgaW4gSmF2YSBTRQogICAgNikuPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJTdEFYIiBpZD0iU3RBWCI+PC9hPlN0cmVhbWluZyBBUEkgZm9yIFhNTCAoU3RBWCkgdjEuMC4xPC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIFN0cmVhbWluZyBBUEkgZm9yIFhNTCAoU3RBWCkgbGlicmFyeSAoanNyMTczXzEuMF9hcGkuamFyKSBpcyBkaXN0cmlidXRlZAogICAgd2l0aCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9qYXhiLmRldi5qYXZhLm5ldC8yLjIvIj5KQVhCIHYyLjI8L2E+IHVuZGVyCiAgICA8YSBocmVmPSJodHRwczovL2dsYXNzZmlzaC5kZXYuamF2YS5uZXQvcHVibGljL0NEREx2MS4wLmh0bWwiPkNEREwgdjEuMDwvYT4KICAgIGFuZCBpcyBpbmNsdWRlZCB3aXRoaW4gdGhlIEVjbGlwc2VMaW5rIFByb2plY3QgZGlzdHJpYnV0aW9uIGFzIGFuIG9wdGlvbmFsCiAgICBYTUwgcHJvY2Vzc2luZyBhcHByb2FjaCBpbiB0aGUgTU9YeSBjb21wb25lbnQuIDwvcD4KPC9ibG9ja3F1b3RlPgo8aDM+PGEgbmFtZT0iU0RPIiBpZD0iU0RPIj48L2E+U2VydmljZSBEYXRhIE9iamVjdHMgKFNETykgdjIuMS4xPC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2Fib3V0SmF2YS9jb21tdW5pdHlwcm9jZXNzL3ByL2pzcjIzNS9pbmRleC5odG1sIj5TZXJ2aWNlCiAgICBEYXRhIE9iamVjdHMgKFNETykgQVBJPC9hPiBpcyBkaXN0cmlidXRlZCB1bmRlciBhIDxhIGhyZWY9Imh0dHBzOi8vZ2xhc3NmaXNoLmRldi5qYXZhLm5ldC9wdWJsaWMvQ0RETHYxLjAuaHRtbCI+IENEREx2MS4wIDwvYT4gYW5kICA8YSBocmVmPSJodHRwOi8vamNwLm9yZy9hYm91dEphdmEvY29tbXVuaXR5cHJvY2Vzcy9wci9qc3IyMzUvaW5kZXguaHRtbCI+Y3VzdG9tCiAgICBsaWNlbnNlPC9hPi4gSXQgcHJvdmlkZXMgdGhlIHN0YW5kYXJkIEFQSSBpbXBsZW1lbnRlZCBieSB0aGUgRWNsaXBzZUxpbmsgUHJvamVjdCdzIFNETyBjb21wb25lbnQuPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJKQ0EiIGlkPSJKQ0EiPjwvYT5KYXZhIENvbm5lY3RvciB2MS41PC9oMz4KPGJsb2NrcXVvdGU+CiAgPHA+VGhlIEpDQSAxLjUgQVBJIGlzIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9nbGFzc2Zpc2guZGV2LmphdmEubmV0L3NvdXJjZS9icm93c2UvZ2xhc3NmaXNoL2Nvbm5lY3Rvci1hcGkiPmNvbm5lY3Rvci1hcGkKICAgIGRpcmVjdG9yeTwvYT4gaW4gdGhlIGdsYXNzZmlzaCBDVlMgcmVwb3NpdG9yeS4gSXQgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgPGEgaHJlZj0iaHR0cHM6Ly9nbGFzc2Zpc2guZGV2LmphdmEubmV0L3B1YmxpYy9DRERMdjEuMC5odG1sIj4KICAgIENEREx2MS4wIDwvYT4uIDwvcD4KICA8cD5UaGlzIGphciBpcyBiZWluZyBzaGlwcGVkIGFuZCByZXF1aXJlZCBieSB0aGUgV29ya2JlbmNoIG9ubHkuIFdoZW4gdXNpbmcKICAgIEVjbGlwc2VMaW5rIGluIGEgY29udGFpbmVyIHdoZXJlIEpDQSBpbnRlZ3JhdGlvbiBpcyByZXF1aXJlZCB0aGF0IGNvbnRhaW5lcgogICAgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgQVBJIGxpYnJhcmllcy48L3A+CjwvYmxvY2txdW90ZT4KPGgzPjxhIG5hbWU9IlhFUkNFUyIgaWQ9IlhFUkNFUyI+PC9hPlhlcmNlcyB2Mi45LjA8L2gzPgo8YmxvY2txdW90ZT4KICA8cD5YZXJjZXMgMi45LjAgaXMgYXZhaWxhYmxlIGZyb20gPGEgaHJlZj0iaHR0cDovL3hlcmNlcy5hcGFjaGUub3JnL3hlcmNlcy1qLyI+CiAgICB0aGUgWGVyY2VzIGhvbWUgcGFnZTwvYT4uIEl0IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIDxhIGhyZWY9Imh0dHA6Ly9hbnQuYXBhY2hlLm9yZy9saWNlbnNlLmh0bWwiPgogICAgQXBhY2hlIDIuMDwvYT4uPC9wPgogIDxwPlRoaXMgamFyIGlzIHNoaXBwZWQgZm9yIHRoZSBXb3JrYmVuY2gncyB1c2Ugb25seSBpbiB0aGUgcmVhZGluZyBhbmQgd3JpdGluZwogICAgb2YgWE1MIGNvbmZpZ3VyYXRpb24gZmlsZXMuPC9wPgo8L2Jsb2NrcXVvdGU+CjxoMz48YSBuYW1lPSJTRVJWTEVUIiBpZD0iU0VSVkxFVCI+PC9hPkphdmEgU2VydmxldCAyLjQ8L2gzPgo8YmxvY2txdW90ZT4KICA8cD5UaGUgPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvYWJvdXRKYXZhL2NvbW11bml0eXByb2Nlc3MvZmluYWwvanNyMTU0L2luZGV4Lmh0bWwiPkphdmEgU2VydmxldCAyLjQgc3BlY2lmaWNhdGlvbjwvYT4KICBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMC5odG1sIj5BcGFjaGUgMi4wIGxpY2Vuc2U8L2E+LiBUaGUgc291cmNlIGNvZGUgaXMgcGFydCBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi90b21jYXQvdHJ1bmsvamF2YS9qYXZheC9zZXJ2bGV0LyI+QXBhY2hlIFRvbWNhdCBwcm9qZWN0PC9hPgogIDxwPlRoaXMgamFyIGlzIG9ubHkgcmVxdWlyZWQgYXQgZGVzaWduIHRpbWUgZm9yIHRoZSBEQldTIEJ1aWxkZXIgdXRpbGl0eS48L3A+CjwvYmxvY2txdW90ZT4KPGgzPjxhIG5hbWU9IldTREw0SiIgaWQ9IldTREw0SiI+PC9hPldTREw0aiB2MS42LjI8L2gzPgo8YmxvY2txdW90ZT4KICA8cD5XU0RMNEogMS42LjIgaXMgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3dzZGw0aiI+d3NkbDRqCiAgICBwcm9qZWN0PC9hPi4gSXQgZGlzdHJpYnV0ZWQgdW5kZXIgPGEgaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi93ZWJzZXJ2aWNlcy93c3M0ai90cnVuay9sZWdhbC9MSUNFTlNFLndzZGw0aiI+CiAgICBDUEx2MS4wIDwvYT4uIDwvcD4KICA8cD5UaGlzIGphciBpcyBvbmx5IHJlcXVpcmVkIGF0IGRlc2lnbiB0aW1lIGZvciB0aGUgREJXUyBCdWlsZGVyIHV0aWxpdHkuPC9wPgo8L2Jsb2NrcXVvdGU+CjxwPjwvcD4KPC9ib2R5Pgo8L2h0bWw+Cg==