LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogLS0gVGFzazogW09LLTIxMF0gSW4gdGFibGUgdGJsX25vdGlmaWNhdGlvbiwgbWFrZSB0aGVzZSBmb3JlaWduLWtleXMgbnVsbGFibGU6ICAgICAgCiAtLSAqIGZrX3JlZl9icmFuY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tICogZmtfcmVmX2dyaWRfdGVycml0b3J5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0gQWRkIGFuIGFkbWluIGZsYWcgdG8gZGlzdGluZ3Vpc2ggaW5zdHJ1Y3Rpb25zIGZyb20gcHVyZSBub3RpZmljYXRpb25zICAgICAgICAgICAgCiAtLSBBZGFwdCB2aWV3LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KCgovKiAqKiogMS4gTWFrZSBmb3JlaWduIGtleXMgbnVsbGFibGUgKioqICovCgpBTFRFUiBUQUJMRSBwdWJsaWMudGJsX25vdGlmaWNhdGlvbiAKICBBTFRFUiBDT0xVTU4gZmtfcmVmX2JyYW5jaCBEUk9QIE5PVCBOVUxMOwogIApBTFRFUiBUQUJMRSBwdWJsaWMudGJsX25vdGlmaWNhdGlvbiAKICBBTFRFUiBDT0xVTU4gZmtfcmVmX2dyaWRfdGVycml0b3J5IERST1AgTk9UIE5VTEw7CiAKLyogKioqIDIuIEFkZCBhZG1pbiBmbGFnICoqKiAqLwoKQUxURVIgVEFCTEUgcHVibGljLnRibF9ub3RpZmljYXRpb24KICBBREQgQ09MVU1OIGFkbWluX2ZsYWcgQk9PTEVBTiBOT1QgTlVMTCBERUZBVUxUIEZBTFNFOyAKIAoKLyogKioqIDMuIEFkYXB0IHZpZXcgYWNjb3JkaW5nIHRvIHRoZSBuZXcgYWRtaW4gZmxhZyAqKiogKi8KCi0tIFZpZXc6IHB1YmxpYy52aWV3X2FjdGl2ZV9ub3RpZmljYXRpb24KLS0gRFJPUCBWSUVXIHB1YmxpYy52aWV3X2FjdGl2ZV9ub3RpZmljYXRpb247CgotLSBFcnN0ZWxsdCBlaW5lIFZpZXcsIGRpZSBkaWUgamV3ZWlscyBo9mNoc3RlIFZlcnNpb24gZWluZXIgTm90aWZpY2F0aW9uIGF1cyB0Ymxfbm90aWZpY2F0aW9uIGVudGjkbHQuCkNSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnZpZXdfYWN0aXZlX25vdGlmaWNhdGlvbiBBUwogU0VMRUNUIHMuaWQsCiAgICBzLmluY2lkZW50X2lkLAogICAgcy52ZXJzaW9uLAogICAgcy5ma19yZWZfYnJhbmNoLAogICAgcy5ub3RpZmljYXRpb25fdGV4dCwKICAgIHMuZnJlZV90ZXh0LAogICAgcy5mcmVlX3RleHRfZXh0ZW5kZWQsCiAgICBzLmZrX3JlZl9ub3RpZmljYXRpb25fc3RhdHVzLAogICAgcy5yZXNwb25zaWJpbGl0eV9mb3J3YXJkaW5nLAogICAgcy5yZW1pbmRlcl9kYXRlLAogICAgcy5leHBlY3RlZF9maW5pc2hlZF9kYXRlLAogICAgcy5yZXNwb25zaWJpbGl0eV9jb250cm9sX3BvaW50LAogICAgcy5iZWdpbl9kYXRlLAogICAgcy5maW5pc2hlZF9kYXRlLAogICAgcy5jcmVhdGVfdXNlciwKICAgIHMuY3JlYXRlX2RhdGUsCiAgICBzLm1vZF91c2VyLAogICAgcy5tb2RfZGF0ZSwKICAgIHMuZmtfcmVmX2dyaWRfdGVycml0b3J5LAogICAgcy5hZG1pbl9mbGFnCiAgIEZST00gKCBTRUxFQ1QgdGJsX25vdGlmaWNhdGlvbi5pZCwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5pbmNpZGVudF9pZCwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi52ZXJzaW9uLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmZrX3JlZl9icmFuY2gsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3RleHQsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uZnJlZV90ZXh0LAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmZyZWVfdGV4dF9leHRlbmRlZCwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5ma19yZWZfbm90aWZpY2F0aW9uX3N0YXR1cywKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5yZXNwb25zaWJpbGl0eV9mb3J3YXJkaW5nLAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLnJlbWluZGVyX2RhdGUsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uZXhwZWN0ZWRfZmluaXNoZWRfZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5yZXNwb25zaWJpbGl0eV9jb250cm9sX3BvaW50LAogICAgICAgICAgICB0Ymxfbm90aWZpY2F0aW9uLmJlZ2luX2RhdGUsCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uZmluaXNoZWRfZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5jcmVhdGVfdXNlciwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5jcmVhdGVfZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5tb2RfdXNlciwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5tb2RfZGF0ZSwKICAgICAgICAgICAgdGJsX25vdGlmaWNhdGlvbi5ma19yZWZfZ3JpZF90ZXJyaXRvcnksCiAgICAgICAgICAgIHRibF9ub3RpZmljYXRpb24uYWRtaW5fZmxhZywKICAgICAgICAgICAgcmFuaygpIE9WRVIgKFBBUlRJVElPTiBCWSB0Ymxfbm90aWZpY2F0aW9uLmluY2lkZW50X2lkIE9SREVSIEJZIHRibF9ub3RpZmljYXRpb24udmVyc2lvbiBERVNDKSBBUyByYW5rCiAgICAgICAgICAgRlJPTSB0Ymxfbm90aWZpY2F0aW9uKSBzCiAgV0hFUkUgcy5yYW5rID0gMTsKCkFMVEVSIFRBQkxFIHB1YmxpYy52aWV3X2FjdGl2ZV9ub3RpZmljYXRpb24KICAgIE9XTkVSIFRPIGJ0YnNlcnZpY2U7Cg==