LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6CiAqCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogT3JpZ2luYWxseSBkZXZlbG9wZWQgYW5kIGNvbnRyaWJ1dGVkIGJ5IEl0dGlhbSBTeXN0ZW1zIFB2dC4gTHRkLCBCYW5nYWxvcmUKKi8KCi8qKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBAZmlsZSBpaDI2NF9jYXZsY190YWJsZXMuaAoqCiogQGJyaWVmCiogIFRoaXMgZmlsZSBjb250YWlucyBlbnVtZXJhdGlvbnMsIG1hY3JvcyBhbmQgZXh0ZXJuIGRlY2xhcmF0aW9ucyBvZiBIMjY0CiogIGNhdmxjIHRhYmxlcwoqCiogQGF1dGhvcgoqICBJdHRpYW0KKgoqICBAcmVtYXJrcwoqICAgbm9uZQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KCiNpZm5kZWYgSUgyNjRfQ0FWTENfVEFCTEVTX0hfCiNkZWZpbmUgSUgyNjRfQ0FWTENfVEFCTEVTX0hfCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIENvbnN0YW50IE1hY3JvcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICBAYnJpZWYgIG1heGltdW0gemVyb3MgbGVmdAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCiNkZWZpbmUgTUFYX1pFUk9fTEVGVCA2CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qIEV4dGVybiBnbG9iYWwgZGVjbGFyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICBBc3NpZ25tZW50IG9mIGNicCB0byBhIGNvZGVudW0gZm9yIGludHJhIGFuZCBpbnRlciBwcmVkaWN0aW9uIG1vZGVzCiAqIGNocm9tYSBmb3JtYXQgaWRjICE9IDAKICogaW5wdXQgIDogY2JwLCBpbnRyYSAtIDAvaW50ZXIgLSAxCiAqIG91dHB1dCA6IGNvZGVudW0KICogQHJlbWFya3MgVGFibGUgOS00IJYgQXNzaWdubWVudCBvZiBjb2RlTnVtIHRvIHZhbHVlcyBvZiBjb2RlZF9ibG9ja19wYXR0ZXJuCiAqIGZvciBtYWNyb2Jsb2NrIHByZWRpY3Rpb24gbW9kZXMgaW4gSDI2NCBzcGVjCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmV4dGVybiBjb25zdCBVV09SRDggZ3UxX2NicF9tYXBfdGFibGVzWzQ4XVsyXTsKCi8qKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEBicmllZiAgdG90YWwgbm9uLXplcm8gY29lZmZpY2llbnRzIGFuZCBudW1iZXJzIG9mIHRyYWlsaW5nIG9uZXMgb2YgYSByZXNpZHVhbAogKiBibG9jayBhcmUgbWFwcGVkIHRvIGNvZWZmdG9rZW4gdXNpbmcgdGhlIHRhYmxlcyBnaXZlbiBiZWxvdy4KICogaW5wdXQgIDogVkxDLU51bSAgfCBUcmFpbGluZyBvbmVzIHwgVG90YWwgY29lZmZzCiAqIG91dHB1dCA6IGNvZWZmX3Rva2VuIChjb2RlIHdvcmQsIHNpemUgb2YgdGhlIGNvZGUgd29yZCkKICogQHJlbWFya3MgVGFibGUtOS01IGNvZWZmX3Rva2VuIG1hcHBpbmcgdG8gVG90YWxDb2VmZiggY29lZmZfdG9rZW4gKQogKiBhbmQgVHJhaWxpbmdPbmVzKCBjb2VmZl90b2tlbiApIGluIEgyNjQgc3BlYwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpleHRlcm4gY29uc3QgVVdPUkQ4IGd1MV9jb2RlX2NvZWZmX3Rva2VuX3RhYmxlWzNdWzRdWzE2XTsKZXh0ZXJuIGNvbnN0IFVXT1JEOCBndTFfc2l6ZV9jb2VmZl90b2tlbl90YWJsZVszXVs0XVsxNl07CmV4dGVybiBjb25zdCBVV09SRDggZ3UxX2NvZGVfY29lZmZfdG9rZW5fdGFibGVfY2hyb21hWzRdWzRdOwpleHRlcm4gY29uc3QgVVdPUkQ4IGd1MV9zaXplX2NvZWZmX3Rva2VuX3RhYmxlX2Nocm9tYVs0XVs0XTsKCi8qKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEBicmllZiAgVGhyZXNob2xkcyBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0byBpbmNyZW1lbnQgTGV2ZWwgdGFibGUgbnVtYmVyLgogKiBpbnB1dCAgOiBzdWZmaXhfbGVuZ3RoCiAqIG91dHB1dCA6IHRocmVzaG9sZAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpleHRlcm4gY29uc3QgVVdPUkQ4IGd1MV90aHJlc2hvbGRfdmxjX2xldmVsWzZdOwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICB0YWJsZSBmb3IgZW5jb2RpbmcgdG90YWwgbnVtYmVyIG9mIHplcm9zCiAqIGlucHV0ICA6IGNvZWZmX3Rva2VuLCB0b3RhbCB6ZXJvcwogKiBvdXRwdXQgOiBjb2RlIHdvcmQsIHNpemUgb2YgdGhlIGNvZGUgd29yZAogKiBAcmVtYXJrcyBUYWJsZS05LTcsIDktOCAgdG90YWxfemVyb3MgdGFibGVzIGZvciA0eDQgYmxvY2tzIHdpdGgKICogVG90YWxDb2VmZiggY29lZmZfdG9rZW4gKSBpbiBIMjY0IHNwZWMKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KZXh0ZXJuIGNvbnN0IFVXT1JEOCBndTFfc2l6ZV96ZXJvX3RhYmxlWzEzNV07CmV4dGVybiBjb25zdCBVV09SRDggZ3UxX2NvZGVfemVyb190YWJsZVsxMzVdOwpleHRlcm4gY29uc3QgVVdPUkQ4IGd1MV9zaXplX3plcm9fdGFibGVfY2hyb21hWzldOwpleHRlcm4gY29uc3QgVVdPUkQ4IGd1MV9jb2RlX3plcm9fdGFibGVfY2hyb21hWzldOwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICBpbmRleCB0byBhY2Nlc3MgemVybyB0YWJsZSAoZm9yIHNwZWVkKQogKiBpbnB1dCAgOiBUb3RhbENvZWZmKCBjb2VmZl90b2tlbiApCiAqIG91dHB1dCA6IGluZGV4IHRvIGFjY2VzcyB6ZXJvIHRhYmxlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmV4dGVybiBjb25zdCBVV09SRDggZ3UxX2luZGV4X3plcm9fdGFibGVbMTVdOwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICB0YWJsZSBmb3IgZW5jb2RpbmcgcnVucyBvZiB6ZXJvcyBiZWZvcmUKICogaW5wdXQgIDogemVyb3MgbGVmdCwgcnVucyBvZiB6ZXJvcyBiZWZvcmUKICogb3V0cHV0IDogY29kZSB3b3JkLCBzaXplIG9mIHRoZSBjb2RlIHdvcmQKICogQHJlbWFya3MgVGFibGUtOS0xMCAgdGFibGUgZm9yIHJ1bl9iZWZvcmUgaW4gSDI2NCBzcGVjCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCmV4dGVybiBjb25zdCBVV09SRDggZ3UxX3NpemVfcnVuX3RhYmxlWzQyXTsKZXh0ZXJuIGNvbnN0IFVXT1JEOCBndTFfY29kZV9ydW5fdGFibGVbNDJdOwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICBpbmRleCB0byBhY2Nlc3MgcnVuIHRhYmxlIChsb29rIHVwKQogKiBpbnB1dCAgOiB6ZXJvcyBsZWZ0CiAqIG91dHB1dCA6IGluZGV4IHRvIGFjY2VzcyBydW4gdGFibGUKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KZXh0ZXJuIGNvbnN0IFVXT1JEOCBndTFfaW5kZXhfcnVuX3RhYmxlWzddOwoKI2VuZGlmIC8qIElIMjY0X0NBVkxDX1RBQkxFU19IXyAqLwo=