LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmU7CgppbXBvcnQgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci5jb3JlLm1vZGVsLklNb2R1bGVPYmplY3Q7CmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZU9iamVjdEFkYXB0ZXJEZWxlZ2F0ZTsKLyoqCiAqIEEgbW9kdWxlIG9iamVjdCBhZGFwdGVyIGNvbnZlcnRzIGZyb20gc29tZSB2aWV3J3MgbW9kZWwKICogb2JqZWN0IGludG8gYSBtb2R1bGUgb2JqZWN0IHRoYXQgaXMgcmVjb2duaXplZCBieSB0aGUKICogc2VydmVyLgogKiAKICogPHA+VGhpcyBpbnRlcmZhY2UgaXMgbm90IGludGVuZGVkIHRvIGJlIGltcGxlbWVudGVkIGJ5IGNsaWVudHMuPC9wPgogKi8KcHVibGljIGludGVyZmFjZSBJTW9kdWxlT2JqZWN0QWRhcHRlciB7CgkvKioKCSAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBhZGFwdGVyLgoJICoKCSAqIEByZXR1cm4gamF2YS5sYW5nLlN0cmluZwoJICovCglwdWJsaWMgU3RyaW5nIGdldElkKCk7CgkKCS8qKgoJICogUmV0dXJucyB0aGUgKHN1cGVyKSBjbGFzcyBuYW1lIHRoYXQgdGhpcyBhZGFwdGVyIGNhbiB3b3JrIHdpdGguCgkgKgoJICogQHJldHVybiBqYXZhLmxhbmcuU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0T2JqZWN0Q2xhc3NOYW1lKCk7CgkKCS8qKgoJICogUmV0dXJucyB0cnVlIGlmIHRoZSBwbHVnaW4gdGhhdCBsb2FkZWQgdGhpcyBjbGFzcyBoYXMgYmVlbiBsb2FkZWQuCgkgKgoJICogQHJldHVybiBib29sZWFuCgkgKi8KCXB1YmxpYyBib29sZWFuIGlzUGx1Z2luQWN0aXZhdGVkKCk7CQoKCS8qKgoJICogUmV0dXJucyB0aGUgZGVsZWdhdGUgZm9yIHRoaXMgbW9kdWxlIG9iamVjdCBhZGFwdGVyLgoJICogCgkgKiBAcmV0dXJuIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5tb2RlbC5JTW9kdWxlT2JqZWN0QWRhcHRlckRlbGVnYXRlCgkgKi8KCXB1YmxpYyBJTW9kdWxlT2JqZWN0QWRhcHRlckRlbGVnYXRlIGdldERlbGVnYXRlKCk7CgoJLyoqCgkgKiBDb252ZXJ0cyBmcm9tIGEgbW9kZWwgb2JqZWN0IHRvIGFuIElNb2R1bGVPYmplY3QuCgkgKiAKCSAqIEBwYXJhbSBvYmogamF2YS5sYW5nLk9iamVjdAoJICogQHJldHVybiBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZU9iamVjdAoJICovCglwdWJsaWMgSU1vZHVsZU9iamVjdCBnZXRNb2R1bGVPYmplY3QoT2JqZWN0IG9iaik7Cn0K