LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA0IEV0ZXJhdGlvbiBCaWxpc2ltIEEuUy4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4goCBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCiAqIAogKiBDb250cmlidXRvcnM6CiAqICAgICBOYWNpIE0uIERhaSAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKiAKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTRUQgT1IgSU1QTElFRAogKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwogKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogKiBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgRVRFUkFUSU9OIEEuUy4gT1IKICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAogKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YKICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgogKiBTVUNIIERBTUFHRS4KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICoKICogVGhpcyBzb2Z0d2FyZSBjb25zaXN0cyBvZiB2b2x1bnRhcnkgY29udHJpYnV0aW9ucyBtYWRlIGJ5IG1hbnkKICogaW5kaXZpZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBFdGVyYXRpb24gQmlsaXNpbSBBLlMuICBGb3IgbW9yZQogKiBpbmZvcm1hdGlvbiBvbiBldGVyYXRpb24sIHBsZWFzZSBzZWUKICogPGh0dHA6Ly93d3cuZXRlcmF0aW9uLmNvbS8+LgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKcGFja2FnZSBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMudGVzdHM7CgppbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3Q7CmltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlOwoKcHVibGljIGNsYXNzIEFsbEdlbmVyaWNTZXJ2ZXJUZXN0cyB7CgogICAgcHVibGljIHN0YXRpYyBUZXN0IHN1aXRlKCkgewogICAgICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBUZXN0U3VpdGUoCiAgICAgICAgICAgICJUZXN0IGZvciBvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmdlbmVyaWMudGVzdHMiKTsKICAgICAgICAvLyRKVW5pdC1CRUdJTiQKICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoU2VydmVyRGVmaW5pdGlvblR5cGVUZXN0LmNsYXNzKTsKICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoR2VuZXJpY1NlcnZlckNsYXNzcGF0aFJ1bnRpbWVIYW5kbGVyVGVzdC5jbGFzcyk7CiAgICAgICAgc3VpdGUuYWRkVGVzdFN1aXRlKFBsdWdpbkludGVncml0eVRlc3QuY2xhc3MpOwogICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShTZXJ2ZXJDcmVhdGlvblRlc3QuY2xhc3MpOwogICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShTZXJ2ZXJUeXBlRGVmaW5pdGlvbk1vZGVsVGVzdC5jbGFzcyk7CiAgICAgICAgc3VpdGUuYWRkVGVzdFN1aXRlKEdlbmVyaWNTZXJ2ZXJSdW50aW1lVGVzdC5jbGFzcyk7CiAgICAgICAgc3VpdGUuYWRkVGVzdFN1aXRlKEdlbmVyaWNTZXJ2ZXJUZXN0LmNsYXNzKTsKICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoWE1MVXRpbHNUZXN0LmNsYXNzKTsKICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoU2VydmVyVHlwZURlZmluaXRpb25NYW5hZ2VyVGVzdC5jbGFzcyk7CiAgICAgICAgLy8kSlVuaXQtRU5EJAogICAgICAgIHJldHVybiBzdWl0ZTsKICAgIH0KfQo=