LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KcGFja2FnZSBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUudXRpbDsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuKjsKLyoqCiAqIAogKi8KcHVibGljIGFic3RyYWN0IGNsYXNzIFRhc2sgaW1wbGVtZW50cyBJVGFzayB7Cglwcm90ZWN0ZWQgSVRhc2tNb2RlbCBtb2RlbDsKCXByb3RlY3RlZCBTdHJpbmcgbGFiZWw7Cglwcm90ZWN0ZWQgU3RyaW5nIGRlc2NyaXB0aW9uOwoJCglwdWJsaWMgVGFzaygpIHsKCQkvLyBkbyBub3RoaW5nCgl9CgkKCXB1YmxpYyBUYXNrKFN0cmluZyBsYWJlbCwgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CgkJdGhpcy5sYWJlbCA9IGxhYmVsOwoJCXRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKCX0KCQoJcHVibGljIFN0cmluZyBnZXROYW1lKCkgewoJCXJldHVybiBsYWJlbDsKCX0KCglwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgewoJCXJldHVybiBkZXNjcmlwdGlvbjsKCX0KCglwdWJsaWMgSVRhc2tNb2RlbCBnZXRUYXNrTW9kZWwoKSB7CgkJcmV0dXJuIG1vZGVsOwoJfQoJCglwdWJsaWMgdm9pZCBzZXRUYXNrTW9kZWwoSVRhc2tNb2RlbCB0YXNrTW9kZWwpIHsKCQl0aGlzLm1vZGVsID0gdGFza01vZGVsOwoJfQoKCS8qIChub24tSmF2YWRvYykKCSAqIEBzZWUgb3JnLmVjbGlwc2Uud3N0LnNlcnZlci51aS5pbnRlcm5hbC50YXNrLklUYXNrI2NhbkV4ZWN1dGUoKQoJICovCglwdWJsaWMgYm9vbGVhbiBjYW5FeGVjdXRlKCkgewoJCXJldHVybiB0cnVlOwoJfQoJCglwdWJsaWMgYm9vbGVhbiBjYW5VbmRvKCkgewoJCXJldHVybiBmYWxzZTsKCX0KCQoJcHVibGljIHZvaWQgdW5kbygpIHsKCQkvLyBkbyBub3RoaW5nCgl9Cn0=