LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqCioqICAgSVRVLVQgRy43MjIuMSAoMjAwNS0wNSkgLSBGaXhlZCBwb2ludCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFpbiBib2R5IGFuZCBBbm5leCBDCioqICAgPiBTb2Z0d2FyZSBSZWxlYXNlIDIuMSAoMjAwOC0wNikKKiogICAgIChTaW1wbGUgcmVwYWNrYWdpbmc7IG5vIGNoYW5nZSBmcm9tIDIwMDUtMDUgUmVsZWFzZSAyLjAgY29kZSkKKioKKiogICCpIDE5OTkgUGljdHVyZVRlbCBDb3BvcmF0aW9uCioqICAgICAgICAgIEFuZG92ZXIsIE1BLCBVU0EgIAoqKgoqKgkgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKioKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBGaWxlbmFtZTogICAgdGFibGVzLmggICAgCgogIFB1cnBvc2U6ICAgICBDb250YWlucyB0YWJsZSBkZWZpbml0aW9ucyB1c2VkIGJ5IEcuNzIyLjEgQW5uZXggQwoJCQogIERlc2lnbiBOb3RlczoKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBJbmNsdWRlIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgUkVHSU9OX1BPV0VSX1RBQkxFX1NJWkUgNjQKI2RlZmluZSBOVU1fQ0FURUdPUklFUyAgICAgICAgICA4CiNkZWZpbmUgRENUX0xFTkdUSCAgICAgICAgICAgICAgMzIwCiNkZWZpbmUgTUFYX0RDVF9MRU5HVEggICAgICAgICAgNjQwCgpleHRlcm4gV29yZDE2IGludF9yZWdpb25fc3RhbmRhcmRfZGV2aWF0aW9uX3RhYmxlW1JFR0lPTl9QT1dFUl9UQUJMRV9TSVpFXTsKZXh0ZXJuIFdvcmQxNiBzdGFuZGFyZF9kZXZpYXRpb25faW52ZXJzZV90YWJsZVtSRUdJT05fUE9XRVJfVEFCTEVfU0laRV07CmV4dGVybiBXb3JkMTYgc3RlcF9zaXplX2ludmVyc2VfdGFibGVbTlVNX0NBVEVHT1JJRVNdOwpleHRlcm4gV29yZDE2IHZlY3Rvcl9kaW1lbnNpb25bTlVNX0NBVEVHT1JJRVNdOwpleHRlcm4gV29yZDE2IG51bWJlcl9vZl92ZWN0b3JzW05VTV9DQVRFR09SSUVTXTsKLyogVGhlIGxhc3QgY2F0ZWdvcnkgaXNuJ3QgcmVhbGx5IGNvZGVkIHdpdGggc2NhbGFyIHF1YW50aXphdGlvbi4gKi8KZXh0ZXJuIFdvcmQxNiBtYXhfYmluW05VTV9DQVRFR09SSUVTXTsKZXh0ZXJuIFdvcmQxNiBtYXhfYmluX3BsdXNfb25lX2ludmVyc2VbTlVNX0NBVEVHT1JJRVNdOwpleHRlcm4gV29yZDE2IGludF9kZWFkX3pvbmVbTlVNX0NBVEVHT1JJRVNdOwpleHRlcm4gV29yZDE2IHNhbXBsZXNfdG9fcm1sdF93aW5kb3dbRENUX0xFTkdUSF07CmV4dGVybiBXb3JkMTYgcm1sdF90b19zYW1wbGVzX3dpbmRvd1tEQ1RfTEVOR1RIXTsKCi8qIEFkZCBuZXh0IGxpbmUgaW4gUmVsZWFzZSAxLjIgKi8KZXh0ZXJuIFdvcmQxNiBpbnRfZGVhZF96b25lX2xvd19iaXRzW05VTV9DQVRFR09SSUVTXTsKCmV4dGVybiBXb3JkMTYgbWF4X3NhbXBsZXNfdG9fcm1sdF93aW5kb3dbTUFYX0RDVF9MRU5HVEhdOwpleHRlcm4gV29yZDE2IG1heF9ybWx0X3RvX3NhbXBsZXNfd2luZG93W01BWF9EQ1RfTEVOR1RIXTsK