LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChjKSAyMDAzIElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiCgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ29tbW9uIFB1YmxpYyBMaWNlbnNlIHYxLjAKICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwKoCoKICogQ29udHJpYnV0b3JzOgogKiAgICBJQk0gLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCnBhY2thZ2Ugb3JnLmVjbGlwc2UuanN0LnNlcnZlci5qMmVlOwoKaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUGF0aDsKCmltcG9ydCBvcmcuZWNsaXBzZS53c3Quc2VydmVyLmNvcmUubW9kZWwuSU1vZHVsZTsKLyoqCiAqIAogKi8KcHVibGljIGludGVyZmFjZSBJRW50ZXJwcmlzZUFwcGxpY2F0aW9uIGV4dGVuZHMgSU1vZHVsZSB7CgkvKioKCSAqIFJldHVybnMgYSB2ZXJzaW9uIG51bWJlciBpbiB0aGUgZm9ybSAieC55LnoiLgoJICogCgkgKiBAcmV0dXJuIGphdmEubGFuZy5TdHJpbmcKCSAqLwoJcHVibGljIFN0cmluZyBnZXRKMkVFU3BlY2lmaWNhdGlvblZlcnNpb24oKTsKCgkvKioKCSAqIFJldHVybnMgdGhlIG1vZHVsZXMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVBUi4KCSAqCgkgKiBAcmV0dXJuIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuajJlZS5JSjJFRU1vZHVsZVtdCgkgKi8KCXB1YmxpYyBJSjJFRU1vZHVsZVtdIGdldE1vZHVsZXMoKTsKCgkvKioKCSAqIFJldHVybnMgdGhlIFVSSSBvZiB0aGUgZ2l2ZW4gSjJFRSBtb2R1bGUgd2l0aGluIHRoaXMKCSAqIGVudGVycHJpc2UgYXBwbGljYXRpb24uCgkgKgoJICogQHBhcmFtIG9yZy5lY2xpcHNlLmpzdC5zZXJ2ZXIuajJlZS5JSjJFRU1vZHVsZQoJICogQHJldHVybiBqYXZhLmxhbmcuU3RyaW5nCgkgKi8KCXB1YmxpYyBTdHJpbmcgZ2V0VVJJKElKMkVFTW9kdWxlIG1vZHVsZSk7CgoJLyoqCgkgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBFQVIgc3VwcG9ydHMgbG9vc2UgbW9kdWxlcy4KCSAqIAoJICogQHJldHVybiBib29sZWFuCgkgKi8KCXB1YmxpYyBib29sZWFuIGNvbnRhaW5zTG9vc2VNb2R1bGVzKCk7CgkKCS8qKgoJICogUmV0dXJucyB0aGUgbG9jYXRpb24gb2YgdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uLiBNYXkKCSAqIHJldHVybiBudWxsIGlmIGlzVW5pdFRlc3QoKSByZXR1cm5zIGZhbHNlLiBUaGlzIHNob3VsZAoJICogYmUgYW4gYWJzb2x1dGUgcGF0aCB0aGF0IGlzIG5vdCB3b3JrYmVuY2ggcmVsYXRpdmUuCgkgKiAKCSAqIEByZXR1cm4gb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQYXRoCgkgKi8KCXB1YmxpYyBJUGF0aCBnZXRMb2NhdGlvbigpOwp9Cg==