LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudXRpbDsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLklTZXJ2ZXJMaXN0ZW5lcjsKLyoqCiAqIEhlbHBlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGFsbCBvZiB0aGUgSVNlcnZlckxpc3RlbmVyCiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMuCiAqLwpwdWJsaWMgY2xhc3MgU2VydmVyQWRhcHRlciBpbXBsZW1lbnRzIElTZXJ2ZXJMaXN0ZW5lciB7CgkvKioKCSAqIFNlcnZlckFkYXB0ZXIgY29uc3RydWN0b3IgY29tbWVudC4KCSAqLwoJcHVibGljIFNlcnZlckFkYXB0ZXIoKSB7CgkJc3VwZXIoKTsKCX0KCgkvKioKCSAqIENhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbidzIHN5bmMgc3RhdGUgY2hhbmdlcy4KCSAqCgkgKiBAcGFyYW0gc2VydmVyIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIubW9kZWwuSVNlcnZlcgoJICovCglwdWJsaWMgdm9pZCBjb25maWd1cmF0aW9uU3luY1N0YXRlQ2hhbmdlKElTZXJ2ZXIgc2VydmVyKSB7CgkJLy8gZG8gbm90aGluZwoJfQoKCS8qKgoJICogQ2FsbGVkIHdoZW4gdGhlIHNlcnZlciBpc1Jlc3RhcnROZWVkZWQoKSBwcm9wZXJ0eSBjaGFuZ2VzLgoJICoKCSAqIEBwYXJhbSBzZXJ2ZXIgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5tb2RlbC5JU2VydmVyCgkgKi8KCXB1YmxpYyB2b2lkIHJlc3RhcnRTdGF0ZUNoYW5nZShJU2VydmVyIHNlcnZlcikgewoJCS8vIGRvIG5vdGhpbmcKCX0KCgkvKioKCSAqIE5vdGlmaWNhdGlvbiB3aGVuIHRoZSBzZXJ2ZXIgc3RhdGUgaGFzIGNoYW5nZWQuCgkgKgoJICogQHBhcmFtIHNlcnZlciBvcmcuZWNsaXBzZS53c3Quc2VydmVyLm1vZGVsLklTZXJ2ZXIKCSAqLwoJcHVibGljIHZvaWQgc2VydmVyU3RhdGVDaGFuZ2UoSVNlcnZlciBzZXJ2ZXIpIHsKCQkvLyBkbyBub3RoaW5nCgl9CgoJLyoqCgkgKiBOb3RpZmljYXRpb24gd2hlbiB0aGUgc3RhdGUgb2YgYSBtb2R1bGUgaGFzIGNoYW5nZWQuCgkgKgoJICogQHBhcmFtIHNlcnZlciBvcmcuZWNsaXBzZS53c3Quc2VydmVyLm1vZGVsLklTZXJ2ZXIKCSAqLwoJcHVibGljIHZvaWQgbW9kdWxlU3RhdGVDaGFuZ2UoSVNlcnZlciBzZXJ2ZXIsIElNb2R1bGUgbW9kdWxlKSB7CgkJLy8gZG8gbm90aGluZwoJfQoKCXB1YmxpYyB2b2lkIG1vZHVsZXNDaGFuZ2VkKElTZXJ2ZXIgc2VydmVyKSB7CgkJLy8gZG8gbm90aGluZwoJfQoJCgkvKiAobm9uLUphdmFkb2MpCgkgKiBAc2VlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JUHVibGlzaExpc3RlbmVyI21vZHVsZVN0YXRlQ2hhbmdlKG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyMiwgamF2YS51dGlsLkxpc3QsIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlKQoJICovCglwdWJsaWMgdm9pZCBtb2R1bGVTdGF0ZUNoYW5nZShJU2VydmVyIHNlcnZlciwgSU1vZHVsZVtdIHBhcmVudHMsIElNb2R1bGUgbW9kdWxlKSB7CgkJLy8gZG8gbm90aGluZwoJfQoKfQ==