LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAogKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAqgKiAKICogQ29udHJpYnV0b3JzOgogKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpwYWNrYWdlIG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5pbnRlcm5hbDsKCmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVN0YXR1czsKaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5qb2JzLkpvYjsKaW1wb3J0IG9yZy5lY2xpcHNlLndzdC5zZXJ2ZXIuY29yZS5JU2VydmVyOwovKioKICogQSBKb2IgdGhhdCBpcyBwb3RlbnRpYWxseSBkZXBlbmRhbnQgb24gdGhlIGNvbXBsZXRpb24gb2YgYW5vdGhlciBKb2IuCiAqLwpwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRGVwZW5kYW50Sm9iIGV4dGVuZHMgSm9iIHsKCXByb3RlY3RlZCBJU2VydmVyIHNlcnZlcjsKCXByb3RlY3RlZCBKb2IgZGVwZW5kYW50Sm9iOwoKCS8qKgoJICogQ3JlYXRlIGEgbmV3IGRlcGVuZGFudCBqb2IuCgkgKiAKCSAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBqb2IKCSAqIEBwYXJhbSBzZXJ2ZXIgdGhlIHNlcnZlciB0byBwdWJsaXNoIHRvCgkgKi8KCXB1YmxpYyBEZXBlbmRhbnRKb2IoU3RyaW5nIG5hbWUsIElTZXJ2ZXIgc2VydmVyKSB7CgkJc3VwZXIobmFtZSk7CgkJdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7Cgl9CgoJLyoqCgkgKiBAc2VlIEpvYiNzaG91bGRSdW4oKQoJICovCglwdWJsaWMgYm9vbGVhbiBzaG91bGRSdW4oKSB7CgkJaWYgKGRlcGVuZGFudEpvYiAhPSBudWxsKSB7CgkJCUlTdGF0dXMgc3RhdHVzID0gZGVwZW5kYW50Sm9iLmdldFJlc3VsdCgpOwoJCQlpZiAoIXN0YXR1cy5pc09LKCkpCgkJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCXJldHVybiB0cnVlOwoJfQoKCS8qKgoJICogU2V0IHRoZSBqb2IgdGhhdCB0aGlzIGpvYiBpcyBkZXBlbmRhbnQgb24gY29tcGxldGlvbiBmb3IuCgkgKiAKCSAqIEBwYXJhbSBqb2IgYSBqb2IKCSAqLwoJcHVibGljIHZvaWQgc2V0RGVwZW5kYW50Sm9iKEpvYiBqb2IpIHsKCQlkZXBlbmRhbnRKb2IgPSBqb2I7Cgl9Cn0=