LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENvbW1vbiBQdWJsaWMgTGljZW5zZSB2MS4wCiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0CiAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sCqAqCiAqIENvbnRyaWJ1dG9yczoKICogICAgSUJNIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuajJlZTsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUuSU1vZHVsZTsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JTW9kdWxlQXJ0aWZhY3Q7CgpwdWJsaWMgY2xhc3MgRUpCQmVhbiBpbXBsZW1lbnRzIElNb2R1bGVBcnRpZmFjdCB7CglwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJRCA9ICJvcmcuZWNsaXBzZS5qc3Quc2VydmVyLmoyZWUuZWpiIjsKCglwcml2YXRlIElNb2R1bGUgbW9kdWxlOwoJcHJpdmF0ZSBTdHJpbmcgam5kaU5hbWU7Cglwcml2YXRlIGJvb2xlYW4gbG9jYWw7Cglwcml2YXRlIGJvb2xlYW4gcmVtb3RlOwoKCS8qKgoJICogQGRlcHJlY2F0ZWQgLSB1c2UgdGhlIG90aGVyIGNvbnN0cnVjdG9yCgkgKiBAcGFyYW0gbW9kdWxlCgkgKiBAcGFyYW0gZWpiTmFtZQoJICovCglwdWJsaWMgRUpCQmVhbihJTW9kdWxlIG1vZHVsZSwgU3RyaW5nIGVqYk5hbWUpIHsKCQl0aGlzLm1vZHVsZSA9IG1vZHVsZTsKCQl0aGlzLmpuZGlOYW1lID0gZWpiTmFtZTsKCX0KCglwdWJsaWMgRUpCQmVhbihJTW9kdWxlIG1vZHVsZSwgU3RyaW5nIGpuZGlOYW1lLCBib29sZWFuIHJlbW90ZSwgYm9vbGVhbiBsb2NhbCkgewoJCXRoaXMubW9kdWxlID0gbW9kdWxlOwoJCXRoaXMuam5kaU5hbWUgPSBqbmRpTmFtZTsKCQl0aGlzLnJlbW90ZSA9IHJlbW90ZTsKCQl0aGlzLmxvY2FsID0gbG9jYWw7Cgl9CgoJLyoKCSAqIEBzZWUgSU1vZHVsZUFydGlmYWN0I2dldElkKCkKCSAqLwoJcHVibGljIFN0cmluZyBnZXRJZCgpIHsKCQlyZXR1cm4gSUQ7Cgl9CgoJLyoKCSAqIEBzZWUgSU1vZHVsZUFydGlmYWN0I2dldE1vZHVsZSgpCgkgKi8KCXB1YmxpYyBJTW9kdWxlIGdldE1vZHVsZSgpIHsKCQlyZXR1cm4gbW9kdWxlOwoJfQoKCXB1YmxpYyBTdHJpbmcgZ2V0Sm5kaU5hbWUoKSB7CgkJcmV0dXJuIGpuZGlOYW1lOwoJfQoKCXB1YmxpYyBib29sZWFuIGhhc1JlbW90ZUludGVyZmFjZSgpIHsKCQlyZXR1cm4gcmVtb3RlOwoJfQoJCglwdWJsaWMgYm9vbGVhbiBoYXNMb2NhbEludGVyZmFjZSgpIHsKCQlyZXR1cm4gbG9jYWw7Cgl9Cn0=