LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQ6CiAqCiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogT3JpZ2luYWxseSBkZXZlbG9wZWQgYW5kIGNvbnRyaWJ1dGVkIGJ5IEl0dGlhbSBTeXN0ZW1zIFB2dC4gTHRkLCBCYW5nYWxvcmUKKi8KLyoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBAZmlsZQoqICBpaDI2NF9kZWJsa190YWJsZXMuYwoqCiogQGJyaWVmCiogIENvbnRhaW5zIHRhYmxlcyB1c2VkIGZvciBkZWJsb2NraW5nCioKKiBAYXV0aG9yCiogIEl0dGlhbQoqCiogQHBhciBMaXN0IG9mIFRhYmxlczoKKiAgLSBndWNfaWgyNjRfcXBfc2NhbGVfY3JbXQoqICAtIGd1Y19paDI2NF9hbHBoYV90YWJsZVtdCiogIC0gZ3VjX2loMjY0X2JldGFfdGFibGVbXQoqICAtIGd1Y19paDI2NF9jbGlwX3RhYmxlW11bXQoqCiogQHJlbWFya3MKKiAgTm9uZQoqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyogRmlsZSBJbmNsdWRlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBTeXN0ZW0gaW5jbHVkZSBmaWxlcyAqLwojaW5jbHVkZSA8c3RkaW8uaD4KCi8qIFVzZXIgaW5jbHVkZSBmaWxlcyAqLwojaW5jbHVkZSAiaWgyNjRfdHlwZWRlZnMuaCIKI2luY2x1ZGUgImloMjY0X2RlYmxrX3RhYmxlcy5oIgoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiBFeHRlcm4gZ2xvYmFsIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIEBicmllZiAgYWxwaGEgJiBiZXRhIHRhYmxlcyBmb3IgZGVibG9ja2luZwogKiBpbnB1dCAgIDogaW5kZXhBIFswLTUxXSAmIGluZGV4QiBbMC01MV0KICogb3V0cHV0ICA6IGFscGhhICYgYmV0YQogKgogKiBAcmVtYXJrcyBUYWJsZSA4LTE2IJYgaW4gSDI2NCBTcGVjaWZpY2F0aW9uLAogKiBEZXJpdmF0aW9uIG9mIG9mZnNldCBkZXBlbmRlbnQgdGhyZXNob2xkIHZhcmlhYmxlcwogKiAgYWxwaGEgYW5kIGJldGEgZnJvbSBpbmRleEEgYW5kIGluZGV4QgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpjb25zdCBVV09SRDggZ3UxX2loMjY0X2FscGhhX3RhYmxlWzUyXSA9CnsKICAgICAvKiBpbmRleEEgOjogMC01MSBpbmNsdXNpdmUgKi8KICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICA0LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKICAgIDEyLCAgICAxMywgICAgMTUsICAgIDE3LCAgICAyMCwgICAgMjIsICAgIDI1LCAgICAyOCwKICAgIDMyLCAgICAzNiwgICAgNDAsICAgIDQ1LCAgICA1MCwgICAgNTYsICAgIDYzLCAgICA3MSwKICAgIDgwLCAgICA5MCwgICAxMDEsICAgMTEzLCAgIDEyNywgICAxNDQsICAgMTYyLCAgIDE4MiwKICAgMjAzLCAgIDIyNiwgICAyNTUsICAgMjU1LAp9OwoKY29uc3QgVVdPUkQ4IGd1MV9paDI2NF9iZXRhX3RhYmxlWzUyXSA9CnsKICAgICAvKiBpbmRleEIgOjogMC01MSBpbmNsdXNpdmUgKi8KICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgNCwKICAgICA0LCAgICAgNCwgICAgIDYsICAgICA2LCAgICAgNywgICAgIDcsICAgICA4LCAgICAgOCwKICAgICA5LCAgICAgOSwgICAgMTAsICAgIDEwLCAgICAxMSwgICAgMTEsICAgIDEyLCAgICAxMiwKICAgIDEzLCAgICAxMywgICAgMTQsICAgIDE0LCAgICAxNSwgICAgMTUsICAgIDE2LCAgICAxNiwKICAgIDE3LCAgICAxNywgICAgMTgsICAgIDE4LAp9OwoKLyoqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQGJyaWVmICB0J0MwIHRhYmxlIGZvciBkZWJsb2NraW5nCiAqIGlucHV0ICAgOiBpbmRleEEgWzAtNTFdIGFuZCBiUyBbMSwzXQogKiBvdXRwdXQgIDogdCdDMAogKgogKiBAcmVtYXJrcyBUYWJsZSA4LTE3IJYgaW4gSDI2NCBTcGVjaWZpY2F0aW9uLAogKiBWYWx1ZSBvZiB2YXJpYWJsZSB0J0MwIGFzIGEgZnVuY3Rpb24gb2YgaW5kZXhBIGFuZCBiUwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwpjb25zdCBVV09SRDggZ3UxX2loMjY0X2NsaXBfdGFibGVbNTJdWzRdID0KewogICAgLyogaW5kZXhBIDo6IDAtNTEgaW5jbHVzaXZlICovCiAgICB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LAogICAgeyAwLCAwLCAwLCAwfSwgeyAwLCAwLCAwLCAwfSwgeyAwLCAwLCAwLCAwfSwgeyAwLCAwLCAwLCAwfSwKICAgIHsgMCwgMCwgMCwgMH0sIHsgMCwgMCwgMCwgMH0sIHsgMCwgMCwgMCwgMH0sIHsgMCwgMCwgMCwgMH0sCiAgICB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LCB7IDAsIDAsIDAsIDB9LAogICAgeyAwLCAwLCAwLCAwfSwgeyAwLCAwLCAwLCAxfSwgeyAwLCAwLCAwLCAxfSwgeyAwLCAwLCAwLCAxfSwKICAgIHsgMCwgMCwgMCwgMX0sIHsgMCwgMCwgMSwgMX0sIHsgMCwgMCwgMSwgMX0sIHsgMCwgMSwgMSwgMX0sCiAgICB7IDAsIDEsIDEsIDF9LCB7IDAsIDEsIDEsIDF9LCB7IDAsIDEsIDEsIDF9LCB7IDAsIDEsIDEsIDJ9LAogICAgeyAwLCAxLCAxLCAyfSwgeyAwLCAxLCAxLCAyfSwgeyAwLCAxLCAxLCAyfSwgeyAwLCAxLCAyLCAzfSwKICAgIHsgMCwgMSwgMiwgM30sIHsgMCwgMiwgMiwgM30sIHsgMCwgMiwgMiwgNH0sIHsgMCwgMiwgMywgNH0sCiAgICB7IDAsIDIsIDMsIDR9LCB7IDAsIDMsIDMsIDV9LCB7IDAsIDMsIDQsIDZ9LCB7IDAsIDMsIDQsIDZ9LAogICAgeyAwLCA0LCA1LCA3fSwgeyAwLCA0LCA1LCA4fSwgeyAwLCA0LCA2LCA5fSwgeyAwLCA1LCA3LDEwfSwKICAgIHsgMCwgNiwgOCwxMX0sIHsgMCwgNiwgOCwxM30sIHsgMCwgNywxMCwxNH0sIHsgMCwgOCwxMSwxNn0sCiAgICB7IDAsIDksMTIsMTh9LCB7IDAsMTAsMTMsMjB9LCB7IDAsMTEsMTUsMjN9LCB7IDAsMTMsMTcsMjV9LAp9Owo=