LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqIKkgMjAxNSBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuIGFuZCBpdHMgc3Vic2lkaWFyaWVzLg0KKiBZb3UgbWF5IHVzZSB0aGlzIHNvZnR3YXJlIGFuZCBhbnkgZGVyaXZhdGl2ZXMgZXhjbHVzaXZlbHkgd2l0aA0KKiBNaWNyb2NoaXAgcHJvZHVjdHMuDQoqIFRISVMgU09GVFdBUkUgSVMgU1VQUExJRUQgQlkgTUlDUk9DSElQICJBUyBJUyIuDQoqIE5PIFdBUlJBTlRJRVMsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIEFQUExZIFRPIFRISVMgU09GVFdBUkUsDQoqIElOQ0xVRElORyBBTlkgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwNCiogQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBJVFMgSU5URVJBQ1RJT04gV0lUSCBNSUNST0NISVANCiogUFJPRFVDVFMsIENPTUJJTkFUSU9OIFdJVEggQU5ZIE9USEVSIFBST0RVQ1RTLCBPUiBVU0UgSU4gQU5ZIEFQUExJQ0FUSU9OLg0KKiBJTiBOTyBFVkVOVCBXSUxMIE1JQ1JPQ0hJUCBCRSBMSUFCTEUgRk9SIEFOWSBJTkRJUkVDVCwgU1BFQ0lBTCwgUFVOSVRJVkUsDQoqIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBMT1NTLCBEQU1BR0UsIENPU1QgT1IgRVhQRU5TRSBPRiBBTlkgS0lORA0KKiBXSEFUU09FVkVSIFJFTEFURUQgVE8gVEhFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCwgRVZFTiBJRiBNSUNST0NISVAgSEFTDQoqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT1IgVEhFIERBTUFHRVMgQVJFIEZPUkVTRUVBQkxFLg0KKiBUTyBUSEUgRlVMTEVTVCBFWFRFTlQgQUxMT1dFRCBCWSBMQVcsIE1JQ1JPQ0hJUCdTIFRPVEFMIExJQUJJTElUWSBPTiBBTEwNCiogQ0xBSU1TIElOIEFOWSBXQVkgUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFIFdJTEwgTk9UIEVYQ0VFRCBUSEUgQU1PVU5UIE9GDQoqIEZFRVMsIElGIEFOWSwgVEhBVCBZT1UgSEFWRSBQQUlEIERJUkVDVExZIFRPIE1JQ1JPQ0hJUCBGT1IgVEhJUyBTT0ZUV0FSRS4NCiogTUlDUk9DSElQIFBST1ZJREVTIFRISVMgU09GVFdBUkUgQ09ORElUSU9OQUxMWSBVUE9OIFlPVVIgQUNDRVBUQU5DRQ0KKiBPRiBUSEVTRSBURVJNUy4NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQpWZXJzaW9uIENvbnRyb2wgSW5mb3JtYXRpb24gKFBlcmZvcmNlKQ0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQokUmV2aXNpb246ICMxICQgDQokRGF0ZVRpbWU6IDIwMTYvMDkvMjIgMDg6MDM6NDkgJCANCiRBdXRob3I6IHByYW1hbnMgJA0KTGFzdCBDaGFuZ2U6CVVwZGF0ZWQgZm9yIHRhYnMNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qKiBAZmlsZSBidGltZXJfcGVycGhsLmMNCiogXGJyaWVmIEJhc2ljIFRpbWVyIFBlcmlwaGVyYWwgU291cmNlIGZpbGUNCiogXGF1dGhvciBqdmFzYW50aA0KKiANCiogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIEJhc2ljIFRpbWVyIFBlcmlwaGVyYWwgZnVuY3Rpb25zICANCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KLyoqIEBkZWZncm91cCBCYXNpY19UaW1lcg0KICogIEB7DQogKi8NCg0KI2luY2x1ZGUgImNvbW1vbl9saWIuaCINCiNpbmNsdWRlICJidGltZXIuaCINCg0KLyoqIEJhc2ljIFRpbWVyIEluc3RhbmNlIGJhc2UgYWRkcmVzc2VzICovDQpzdGF0aWMgVElNRVIwX1R5cGUgKiBjb25zdCBidG1yX2luc3RbQlRJTUVSX01BWF9JTlNUQU5DRV0gPSB7DQogICAgTUVDMjAxNl9USU1FUjAsDQogICAgTUVDMjAxNl9USU1FUjEsDQogICAgTUVDMjAxNl9USU1FUjIsDQogICAgTUVDMjAxNl9USU1FUjMsDQogICAgTUVDMjAxNl9USU1FUjQsDQogICAgTUVDMjAxNl9USU1FUjUNCn07DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8qICAgICAgICAgICBGdW5jdGlvbnMgdG8gc2V0IGFuZCByZWFkIFRpbWVyIENvdW50ZXIgUmVnaXN0ZXIgICAgICAgICAgICAgKi8NCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KLyoqIFNldHMgdGltZXIgY291bnRlcg0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICogQHBhcmFtIGNvdW50CS0gMzItYml0IGNvdW50ZXIgIA0KICovDQp2b2lkIHBfYnRpbWVyX2NvdW50X3NldCh1aW50OF90IGJ0aW1lcl9pZCwgdWludDMyX3QgY291bnQpDQp7DQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPVU5UID0gY291bnQ7CQkJCQkNCn0NCg0KLyoqIFJlYWQgdGhlIHRpbWVyIGNvdW50ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQNCiAqIEByZXR1cm4gY291bnQJLSAzMi1iaXQgY291bnRlciAgDQogKi8NCnVpbnQzMl90IHBfYnRpbWVyX2NvdW50X2dldCh1aW50OF90IGJ0aW1lcl9pZCkNCnsJDQogICAgcmV0dXJuIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT1VOVDsJDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi8qICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uIHRvIHByb2dyYW0gdGhlIFByZWxvYWQgICAgICAgICAgICAgICAgICAgICAgKi8NCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KLyoqIFNldHMgcHJlbG9hZCBmb3IgdGhlIGNvdW50ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQNCiAqIEBwYXJhbSBwcmVsb2FkX2NvdW50CS0gMzItYml0IHByZS1sb2FkIHZhbHVlIA0KICovDQp2b2lkIHBfYnRpbWVyX3ByZWxvYWRfc2V0KHVpbnQ4X3QgYnRpbWVyX2lkLCB1aW50MzJfdCBwcmVsb2FkX2NvdW50KQ0Kew0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5QUkVfTE9BRCA9IHByZWxvYWRfY291bnQ7CQ0KfQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiAgICAgICAgICAgICAgICBGdW5jdGlvbnMgZm9yIGJhc2ljIHRpbWVyIGludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICovDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCi8qKiBSZWFkcyB0aGUgaW50ZXJydXB0IHN0YXR1cyBiaXQgaW4gdGhlIHRpbWVyIGJsb2NrDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICogQHJldHVybiBzdGF0dXMgLSAxIGlmIGludGVycnVwdCBzdGF0dXMgc2V0LCBlbHNlIDANCiAqLw0KdWludDhfdCBwX2J0aW1lcl9pbnRfc3RhdHVzX2dldCh1aW50OF90IGJ0aW1lcl9pZCkNCnsNCiAgICByZXR1cm4gKHVpbnQ4X3QpKGJ0bXJfaW5zdFtidGltZXJfaWRdLT5TVEFUVVMpOw0KfQ0KDQovKiogQ2xlYXJzIGludGVycnVwdCBzdGF0dXMgYml0IGluIHRoZSB0aW1lciBibG9jaw0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRCANCiAqLw0Kdm9pZCBwX2J0aW1lcl9pbnRfc3RhdHVzX2Nscih1aW50OF90IGJ0aW1lcl9pZCkNCnsNCiAgICAvLyBXcml0ZSAxIHRvIGNsZWFyDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPlNUQVRVUyA9IDE7DQp9DQoNCi8qKiBTZXRzIGludGVycnVwdCBlbmFibGUgYml0IGluIHRoZSB0aW1lciBibG9jaw0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRCAgDQogKi8NCnZvaWQgcF9idGltZXJfaW50X2VuYWJsZV9zZXQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+SU5UX0VOID0gMTsNCn0NCg0KLyoqIENsZWFycyBpbnRlcnJ1cHQgZW5hYmxlIGJpdCBmb3IgdGhlIHRpbWVyIGJsb2NrDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEICANCiAqLw0Kdm9pZCBwX2J0aW1lcl9pbnRfZW5hYmxlX2Nscih1aW50OF90IGJ0aW1lcl9pZCkNCnsJCQ0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5JTlRfRU4gPSAwOw0KfQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQovKiAgICAgICAgICAgICAgICBGdW5jdGlvbnMgZm9yIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICovDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCi8qKiBXcml0ZXMgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgMzItYml0cw0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICogQHBhcmFtIHZhbHVlCS0gMzItYml0IHZhbHVlIHRvIHByb2dyYW0NCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX3dyaXRlKHVpbnQ4X3QgYnRpbWVyX2lkLCB1aW50MzJfdCB2YWx1ZSkNCnsJCQ0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLncgPSB2YWx1ZTsNCn0NCg0KLyoqIFJlYWRzIHRoZSBjb250cm9sIHJlZ2lzdGVyIA0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICogQHJldHVybiB1aW50MzJfdAktIDMyLWJpdCB2YWx1ZQ0KICovDQp1aW50MzJfdCBwX2J0aW1lcl9jdHJsX3JlYWQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICB1aW50MzJfdCByZXRWYWw7DQoNCiAgICByZXRWYWwgPSBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC53Ow0KDQogICAgcmV0dXJuIHJldFZhbDsNCn0NCg0KLyoqIFNldHMgZW5hYmxlIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3Rlcg0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfZW5hYmxlX3NldCh1aW50OF90IGJ0aW1lcl9pZCkNCnsJCQ0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLmJbMF0gfD0gQlRJTUVSX0NOVExfRU5BQkxFOw0KfQ0KDQovKiogQ2xlYXJzIGVuYWJsZSBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQNCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX2VuYWJsZV9jbHIodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC5iWzBdICY9IH5CVElNRVJfQ05UTF9FTkFCTEU7DQp9DQoNCi8qKiBTZXRzIGNvdW50ZXIgZGlyZWN0aW9uIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3Rlcg0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfY291bnRlcl9kaXJfc2V0KHVpbnQ4X3QgYnRpbWVyX2lkKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuYlswXSB8PSBCVElNRVJfQ05UTF9DT1VOVF9VUDsNCn0NCg0KLyoqIENsZWFycyBjb3VudGVyIGRpcmVjdGlvbiBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQNCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX2NvdW50ZXJfZGlyX2Nscih1aW50OF90IGJ0aW1lcl9pZCkNCnsJCQ0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLmJbMF0gJj0gfkJUSU1FUl9DTlRMX0NPVU5UX1VQOw0KfQ0KDQovKiogU2V0cyBhdXRvIHJlc3RhcnQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEDQogKi8NCnZvaWQgcF9idGltZXJfY3RybF9hdXRvX3Jlc3RhcnRfc2V0KHVpbnQ4X3QgYnRpbWVyX2lkKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuYlswXSB8PSBCVElNRVJfQ05UTF9BVVRPX1JFU1RBUlQ7DQp9DQoNCi8qKiBDbGVhcnMgYXV0byByZXNldGFydCBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQNCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX2F1dG9fcmVzdGFydF9jbHIodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC5iWzBdICY9IH5CVElNRVJfQ05UTF9BVVRPX1JFU1RBUlQ7DQp9DQoNCi8qKiBTZXRzIHNvZnQgcmVzZXQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfc29mdF9yZXNldF9zZXQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC5iWzBdIHw9IEJUSU1FUl9DTlRMX1NPRlRfUkVTRVQ7DQp9DQoNCi8qKiBSZWFkIFNvZnQgUmVzZXQgYml0IA0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRA0KICogQHJldHVybiAwIGlmIHNvZnQgcmVzZXQgc3RhdHVzIGJpdCBjbGVhcmVkOyBlbHNlIG5vbi16ZXJvIHZhbHVlDQogKi8NCnVpbnQ4X3QgcF9idGltZXJfY3RybF9zb2Z0X3Jlc2V0X3N0c19nZXQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICByZXR1cm4gKGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLmJbMF0gJiBCVElNRVJfQ05UTF9TT0ZUX1JFU0VUKTsNCn0NCg0KLyoqIFNldHMgc3RhcnQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfc3RhcnRfc2V0KHVpbnQ4X3QgYnRpbWVyX2lkKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuYlswXSB8PSBCVElNRVJfQ05UTF9TVEFSVDsNCn0NCg0KLyoqIFJlYWQgc3RhcnQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICogQHJldHVybiAwIGlmIHN0YXJ0IGJpdCBub3Qgc2V0OyBlbHNlIG5vbi16ZXJvIHZhbHVlDQogKi8NCnVpbnQ4X3QgcF9idGltZXJfY3RybF9zdGFydF9nZXQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICByZXR1cm4gKGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLmJbMF0gJiBCVElNRVJfQ05UTF9TVEFSVCk7DQp9DQoNCi8qKiBDbGVhcnMgc3RhcnQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfc3RhcnRfY2xyKHVpbnQ4X3QgYnRpbWVyX2lkKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuYlswXSAmPSB+QlRJTUVSX0NOVExfU1RBUlQ7DQp9DQoNCi8qKiBTZXRzIHJlbG9hZCBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQgDQogKi8NCnZvaWQgcF9idGltZXJfY3RybF9yZWxvYWRfc2V0KHVpbnQ4X3QgYnRpbWVyX2lkKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuYlswXSB8PSBCVElNRVJfQ05UTF9SRUxPQUQ7DQp9DQoNCi8qKiBDbGVhcnMgcmVsb2FkIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3Rlcg0KICogQHBhcmFtIGJ0aW1lcl9pZCBCYXNpYyBUaW1lciBJRCANCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX3JlbG9hZF9jbHIodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC5iWzBdICY9IH5CVElNRVJfQ05UTF9SRUxPQUQ7DQp9DQoNCi8qKiBTZXRzIGhhbHQgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEIA0KICovDQp2b2lkIHBfYnRpbWVyX2N0cmxfaGFsdF9zZXQodWludDhfdCBidGltZXJfaWQpDQp7CQkNCiAgICBidG1yX2luc3RbYnRpbWVyX2lkXS0+Q09OVFJPTC5iWzBdIHw9IEJUSU1FUl9DTlRMX0hBTFQ7DQp9DQoNCi8qKiBDbGVhcnMgaGFsdCBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXINCiAqIEBwYXJhbSBidGltZXJfaWQgQmFzaWMgVGltZXIgSUQgDQogKi8NCnZvaWQgcF9idGltZXJfY3RybF9oYWx0X2Nscih1aW50OF90IGJ0aW1lcl9pZCkNCnsJCQ0KICAgIGJ0bXJfaW5zdFtidGltZXJfaWRdLT5DT05UUk9MLmJbMF0gJj0gfkJUSU1FUl9DTlRMX0hBTFQ7DQp9DQoNCi8qKiBTZXRzIHByZXNjYWxlIHZhbHVlDQogKiBAcGFyYW0gYnRpbWVyX2lkIEJhc2ljIFRpbWVyIElEDQogKiBAcGFyYW0gcHJlc2NhbGVyCS0gMTYtYml0IHByZS1zY2FsZSB2YWx1ZSANCiAqLw0Kdm9pZCBwX2J0aW1lcl9jdHJsX3ByZXNjYWxlX3NldCh1aW50OF90IGJ0aW1lcl9pZCwgdWludDE2X3QgcHJlc2NhbGVyKQ0KewkJDQogICAgYnRtcl9pbnN0W2J0aW1lcl9pZF0tPkNPTlRST0wuaFsxXSA9IHByZXNjYWxlcjsNCn0NCg0KDQovKiBlbmQgYnRpbWVyX3BlcnBobC5jICovDQoNCi8qKiAgIEB9IC8vUGVyaXBoZXJhbCBCYXNpY19UaW1lcg0KICovDQoNCg==