From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <erik.g.carrillo@intel.com>
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by dpdk.org (Postfix) with ESMTP id 6606C1B39F
 for <dev@dpdk.org>; Thu, 21 Mar 2019 02:02:01 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga008.jf.intel.com ([10.7.209.65])
 by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 20 Mar 2019 18:02:01 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.60,250,1549958400"; d="scan'208";a="127242089"
Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201])
 by orsmga008.jf.intel.com with ESMTP; 20 Mar 2019 18:02:00 -0700
Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by
 FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Wed, 20 Mar 2019 18:02:00 -0700
Received: from fmsmsx115.amr.corp.intel.com ([169.254.4.62]) by
 fmsmsx156.amr.corp.intel.com ([169.254.13.6]) with mapi id 14.03.0415.000;
 Wed, 20 Mar 2019 18:02:00 -0700
From: "Carrillo, Erik G" <erik.g.carrillo@intel.com>
To: "Sanford, Robert" <rsanford@akamai.com>
CC: "thomas@monjalon.net" <thomas@monjalon.net>, "dev@dpdk.org"
 <dev@dpdk.org>, "nhorman@tuxdriver.com" <nhorman@tuxdriver.com>
Thread-Topic: [PATCH v4 1/2] timer: allow timer management in shared memory
Thread-Index: AQHU3yQ9aN4Jx/BLnUGtubMFuhQZvaYVRRfS
Date: Thu, 21 Mar 2019 01:01:59 +0000
Message-ID: <D926C980-58E3-4476-9FA9-D9180C6863A2@intel.com>
References: <1544739996-26011-1-git-send-email-erik.g.carrillo@intel.com>
 <1551892822-23967-1-git-send-email-erik.g.carrillo@intel.com>
 <1551892822-23967-2-git-send-email-erik.g.carrillo@intel.com>,
 <40792313-7864-470F-B188-9AA1A0F072B8@akamai.com>
In-Reply-To: <40792313-7864-470F-B188-9AA1A0F072B8@akamai.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH v4 1/2] timer: allow timer management in
	shared memory
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 21 Mar 2019 01:02:03 -0000

SGkgUm9iZXJ0LA0KDQpUaGFua3MgZm9yIHRoZSByZXZpZXcgYW5kIHN1Z2dlc3Rpb25zLiAgSeKA
mW0gb3V0IG9mIHRoZSBvZmZpY2Ugb24gYm9uZGluZyBsZWF2ZSBmb3IgdGhlIG5leHQgZmV3IHdl
ZWtzLCBidXQgSeKAmWxsIHVwZGF0ZSB0aGUgcGF0Y2ggdG8gYWRkcmVzcyB5b3VyIHBvaW50cyBi
ZWxvdyB3aGVuIEkgcmV0dXJuLg0KDQpUaGFua3MsDQpFcmlrDQoNCj4gT24gTWFyIDIwLCAyMDE5
LCBhdCA4OjUzIEFNLCBTYW5mb3JkLCBSb2JlcnQgPHJzYW5mb3JkQGFrYW1haS5jb20+IHdyb3Rl
Og0KPiANCj4gSGkgRXJpaywNCj4gDQo+IEkgaGF2ZSBhIGZldyBxdWVzdGlvbnMgYW5kIGNvbW1l
bnRzIG9uIHRoaXMgcGF0Y2ggc2VyaWVzLg0KPiANCj4gMS4gRG9uJ3QgeW91IHRoaW5rIHdlIG5l
ZWQgbmV3IHRlc3RzIChpbiB0ZXN0L3Rlc3QvKSB0byB2ZXJpZnkgdGhlIHNlY29uZGFyeS1wcm9j
ZXNzIEFQSXM/DQo+IDIuIEkgc3VnZ2VzdCB3ZSBkZWZpbmUgZGVmYXVsdF9kYXRhX2lkIGFzIGNv
bnN0LCBhbmQgZXhwbGljaXRseSBzZXQgaXQgdG8gMC4NCj4gMy4gVGhlIG91dGVyIGZvci1sb29w
IGluIHJ0ZV90aW1lcl9hbHRfbWFuYWdlKCkgdG91Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiBwb2xs
X2xjb3Jlc1tdLiBJIHN1Z2dlc3QgYSBjaGFuZ2UgbGlrZSB0aGlzOg0KPiANCj4gLSAgICAgICBm
b3IgKGkgPSAwLCBwb2xsX2xjb3JlID0gcG9sbF9sY29yZXNbaV07IGkgPCBuYl9wb2xsX2xjb3Jl
czsNCj4gLSAgICAgICAgICAgIHBvbGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1srK2ldKSB7DQo+ICsg
ICAgICAgZm9yIChpID0gMDsgSSA8IG5iX3BvbGxfbGNvcmVzOyBpKyspIHsNCj4gKyAgICAgICAg
ICAgIHBvbGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1tpXTsNCj4gDQo+IDQuIFNhbWUgcHJvYmxlbSAo
YXMgIzMpIGluIHRoZSBmb3ItbG9vcCBpbiBydGVfdGltZXJfc3RvcF9hbGwoKSwgaW4gcGF0Y2gg
djQgMi8yLg0KPiA1LiBUaGVyZSBzZWVtcyB0byBiZSBubyBkaWZmZXJlbmNlIGJldHdlZW4gInR5
cGVkZWYgdm9pZCAoKnJ0ZV90aW1lcl9jYl90KShzdHJ1Y3QgcnRlX3RpbWVyICosIHZvaWQgKiki
IGFuZCAidHlwZWRlZiB2b2lkICgqcnRlX3RpbWVyX3N0b3BfYWxsX2NiX3QpKHN0cnVjdCBydGVf
dGltZXIgKnRpbSwgdm9pZCAqYXJnKSIsIHdoeSBhZGQgcnRlX3RpbWVyX3N0b3BfYWxsX2NiX3Q/
DQo+IDYuIENhbiB5b3UgcHJvdmlkZSBhIHVzZSBjYXNlIG9yIGNvZGUgc25pcHBldCB0aGF0IHNo
b3dzIGhvdyB3ZSB3aWxsIHVzZSBydGVfdGltZXJfYWx0X21hbmFnZSgpPw0KPiA3LiBXaHkgbm90
IG1ha2UgdGhlIGFyZ3VtZW50IHRvIHJ0ZV90aW1lcl9hbHRfbWFuYWdlX2NiX3QgYSAic3RydWN0
IHJ0ZV90aW1lciAqIiwgaW5zdGVhZCBvZiBhICJ2b2lkICoiLCBzaW5jZSB3ZSBwYXNzIGEgcG9p
bnRlci10by10aW1lciB3aGVuIHdlIGludm9rZSB0aGUgZnVuY3Rpb24/DQo+IA0KPiAtLQ0KPiBS
ZWdhcmRzLA0KPiBSb2JlcnQgU2FuZm9yZA0KPiANCj4gDQo+IO+7v09uIDMvNi8xOSwgMTI6MjAg
UE0sICJFcmlrIEdhYnJpZWwgQ2FycmlsbG8iIDxlcmlrLmcuY2FycmlsbG9AaW50ZWwuY29tPiB3
cm90ZToNCj4gDQo+IEN1cnJlbnRseSwgdGhlIHRpbWVyIGxpYnJhcnkgdXNlcyBhIHBlci1wcm9j
ZXNzIHRhYmxlIG9mIHN0cnVjdHVyZXMgdG8NCj4gbWFuYWdlIHNraXBsaXN0cyBvZiB0aW1lcnMg
cHJlc3VtYWJseSBiZWNhdXNlIHRpbWVycyBjb250YWluIGFyYml0cmFyeQ0KPiBmdW5jdGlvbiBw
b2ludGVycyB3aG9zZSB2YWx1ZSBtYXkgbm90IHJlc29sdmUgcHJvcGVybHkgaW4gb3RoZXINCj4g
cHJvY2Vzc2VzLg0KPiANCj4gSG93ZXZlciwgaWYgdGhlIHNhbWUgY2FsbGJhY2sgaXMgdXNlZCBo
YW5kbGUgYWxsIHRpbWVycywgYW5kIHRoYXQNCj4gY2FsbGJhY2sgaXMgb25seSBpbnZva2VkIGlu
IG9uZSBwcm9jZXNzLCB0aGVuIGl0IHdvdWQgYmUgc2FmZSB0byBhbGxvdw0KPiB0aGUgZGF0YSBz
dHJ1Y3R1cmVzIHRvIGJlIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVtb3J5LCBhbmQgdG8gYWxsb3cN
Cj4gc2Vjb25kYXJ5IHByb2Nlc3NlcyB0byBtb2RpZnkgdGhlIHRpbWVyIGxpc3RzLiAgVGhpcyB3
b3VsZCBsZXQgdGltZXJzIGJlDQo+IHVzZWQgaW4gbW9yZSBtdWx0aS1wcm9jZXNzIHNjZW5hcmlv
cy4NCj4gDQo+IFRoZSBsaWJyYXJ5J3MgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgd3JhcHBlZCB3aXRo
IGEgc3RydWN0LCBhbmQgYW4gYXJyYXkNCj4gb2YgdGhlc2Ugc3RydWN0dXJlcyBpcyBjcmVhdGVk
IGluIHNoYXJlZCBtZW1vcnkuICBUaGUgb3JpZ2luYWwgQVBJcw0KPiBhcmUgdXBkYXRlZCB0byBy
ZWZlcmVuY2UgdGhlIHplcm90aCBlbnRyeSBpbiB0aGUgYXJyYXkuIFRoaXMgbWFpbnRhaW5zDQo+
IHRoZSBvcmlnaW5hbCBiZWhhdmlvciBmb3IgYm90aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgcHJv
Y2Vzc2VzIHNpbmNlDQo+IHRoZSBzZXQgaW50ZXJzZWN0aW9uIG9mIHRoZWlyIGNvcmVtYXNrcyBz
aG91bGQgYmUgZW1wdHkgWzFdLiAgTmV3IEFQSXMNCj4gYXJlIGludHJvZHVjZWQgdG8gZW5hYmxl
IHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBvZiBvdGhlciBlbnRyaWVzDQo+IGluIHRoZSBh
cnJheS4NCj4gDQo+IE5ldyB2YXJpYW50cyBvZiB0aGUgQVBJcyB1c2VkIHRvIHN0YXJ0IGFuZCBz
dG9wIHRpbWVycyBhcmUgaW50cm9kdWNlZDsNCj4gdGhleSBhbGxvdyBhIGNhbGxlciB0byBzcGVj
aWZ5IHdoaWNoIGFycmF5IGVudHJ5IHNob3VsZCBiZSB1c2VkIHRvDQo+IGxvY2F0ZSB0aGUgdGlt
ZXIgbGlzdCB0byBpbnNlcnQgaW50byBvciBkZWxldGUgZnJvbS4NCj4gDQo+IEZpbmFsbHksIGEg
bmV3IHZhcmlhbnQgb2YgcnRlX3RpbWVyX21hbmFnZSgpIGlzIGludHJvZHVjZWQsIHdoaWNoDQo+
IGFsbG93cyBhIGNhbGxlciB0byBzcGVjaWZ5IHdoaWNoIGFycmF5IGVudHJ5IHNob3VsZCBiZSB1
c2VkIHRvIGxvY2F0ZQ0KPiB0aGUgdGltZXIgbGlzdHMgdG8gcHJvY2VzczsgaXQgY2FuIGFsc28g
cHJvY2VzcyBtdWx0aXBsZSB0aW1lciBsaXN0cyBwZXINCj4gaW52b2NhdGlvbi4NCj4gDQo+IFsx
XSBodHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlkZS9tdWx0aV9wcm9jX3N1cHBv
cnQuaHRtbCNtdWx0aS1wcm9jZXNzLWxpbWl0YXRpb25zDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBF
cmlrIEdhYnJpZWwgQ2FycmlsbG8gPGVyaWsuZy5jYXJyaWxsb0BpbnRlbC5jb20+DQo+IC0tLQ0K
PiBsaWIvbGlicnRlX3RpbWVyL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArDQo+IGxpYi9s
aWJydGVfdGltZXIvcnRlX3RpbWVyLmMgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLQ0KPiBsaWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5oICAgICAgICAg
ICB8IDIyNiArKysrKysrKysrKysrLQ0KPiBsaWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lcl92ZXJz
aW9uLm1hcCB8ICAyMiArKw0KPiA0IGZpbGVzIGNoYW5nZWQsIDcyMyBpbnNlcnRpb25zKCspLCA0
NSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3RpbWVyL01ha2Vm
aWxlIGIvbGliL2xpYnJ0ZV90aW1lci9NYWtlZmlsZQ0KPiBpbmRleCA0ZWJkNTI4Li44ZWM2M2Y0
IDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX3RpbWVyL01ha2VmaWxlDQo+ICsrKyBiL2xpYi9s
aWJydGVfdGltZXIvTWFrZWZpbGUNCj4gQEAgLTYsNiArNiw3IEBAIGluY2x1ZGUgJChSVEVfU0RL
KS9tay9ydGUudmFycy5taw0KPiAjIGxpYnJhcnkgbmFtZQ0KPiBMSUIgPSBsaWJydGVfdGltZXIu
YQ0KPiANCj4gK0NGTEFHUyArPSAtREFMTE9XX0VYUEVSSU1FTlRBTF9BUEkNCj4gQ0ZMQUdTICs9
ICQoV0VSUk9SX0ZMQUdTKSAtSSQoU1JDRElSKSAtTzMNCj4gTERMSUJTICs9IC1scnRlX2VhbA0K
PiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmMgYi9saWIvbGli
cnRlX3RpbWVyL3J0ZV90aW1lci5jDQo+IGluZGV4IDMwYzdiMGEuLjJiZDQ5ZDAgMTAwNjQ0DQo+
IC0tLSBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV90
aW1lci9ydGVfdGltZXIuYw0KPiBAQCAtNSw2ICs1LDcgQEANCj4gI2luY2x1ZGUgPHN0cmluZy5o
Pg0KPiAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1
ZGUgPHN0ZGJvb2wuaD4NCj4gI2luY2x1ZGUgPGludHR5cGVzLmg+DQo+ICNpbmNsdWRlIDxhc3Nl
cnQuaD4NCj4gI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPg0KPiBAQCAtMjEsMTEgKzIyLDE1IEBADQo+
ICNpbmNsdWRlIDxydGVfc3BpbmxvY2suaD4NCj4gI2luY2x1ZGUgPHJ0ZV9yYW5kb20uaD4NCj4g
I2luY2x1ZGUgPHJ0ZV9wYXVzZS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tZW16b25lLmg+DQo+ICsj
aW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4NCj4gDQo+
ICNpbmNsdWRlICJydGVfdGltZXIuaCINCj4gDQo+IC1MSVNUX0hFQUQocnRlX3RpbWVyX2xpc3Qs
IHJ0ZV90aW1lcik7DQo+IC0NCj4gKy8qKg0KPiArICogUGVyLWxjb3JlIGluZm8gZm9yIHRpbWVy
cy4NCj4gKyAqLw0KPiBzdHJ1Y3QgcHJpdl90aW1lciB7DQo+ICAgIHN0cnVjdCBydGVfdGltZXIg
cGVuZGluZ19oZWFkOyAgLyoqPCBkdW1teSB0aW1lciBpbnN0YW5jZSB0byBoZWFkIHVwIGxpc3Qg
Ki8NCj4gICAgcnRlX3NwaW5sb2NrX3QgbGlzdF9sb2NrOyAgICAgICAvKio8IGxvY2sgdG8gcHJv
dGVjdCBsaXN0IGFjY2VzcyAqLw0KPiBAQCAtNDgsMjUgKzUzLDg0IEBAIHN0cnVjdCBwcml2X3Rp
bWVyIHsNCj4gI2VuZGlmDQo+IH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gDQo+IC0vKiogcGVy
LWxjb3JlIHByaXZhdGUgaW5mbyBmb3IgdGltZXJzICovDQo+IC1zdGF0aWMgc3RydWN0IHByaXZf
dGltZXIgcHJpdl90aW1lcltSVEVfTUFYX0xDT1JFXTsNCj4gKyNkZWZpbmUgRkxfQUxMT0NBVEVE
ICAgICgxIDw8IDApDQo+ICtzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgew0KPiArICAgIHN0cnVjdCBw
cml2X3RpbWVyIHByaXZfdGltZXJbUlRFX01BWF9MQ09SRV07DQo+ICsgICAgdWludDhfdCBpbnRl
cm5hbF9mbGFnczsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgUlRFX01BWF9EQVRBX0VMUyA2NA0K
PiArc3RhdGljIHN0cnVjdCBydGVfdGltZXJfZGF0YSAqcnRlX3RpbWVyX2RhdGFfYXJyOw0KPiAr
c3RhdGljIHVpbnQzMl90IGRlZmF1bHRfZGF0YV9pZDsNCj4gK3N0YXRpYyB1aW50MzJfdCBydGVf
dGltZXJfc3Vic3lzdGVtX2luaXRpYWxpemVkOw0KPiArDQo+ICsvKiBGb3IgbWFpbnRhaW5pbmcg
b2xkZXIgaW50ZXJmYWNlcyBmb3IgYSBwZXJpb2QgKi8NCj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Rp
bWVyX2RhdGEgZGVmYXVsdF90aW1lcl9kYXRhOw0KPiANCj4gLyogd2hlbiBkZWJ1ZyBpcyBlbmFi
bGVkLCBzdG9yZSBzb21lIHN0YXRpc3RpY3MgKi8NCj4gI2lmZGVmIFJURV9MSUJSVEVfVElNRVJf
REVCVUcNCj4gLSNkZWZpbmUgX19USU1FUl9TVEFUX0FERChuYW1lLCBuKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICBcDQo+ICsjZGVmaW5lIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgbmFt
ZSwgbikgZG8geyAgICAgICAgICAgIFwNCj4gICAgICAgIHVuc2lnbmVkIF9fbGNvcmVfaWQgPSBy
dGVfbGNvcmVfaWQoKTsgICAgICAgICAgICBcDQo+ICAgICAgICBpZiAoX19sY29yZV9pZCA8IFJU
RV9NQVhfTENPUkUpICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICBwcml2X3RpbWVyW19f
bGNvcmVfaWRdLnN0YXRzLm5hbWUgKz0gKG4pOyAgICBcDQo+ICAgIH0gd2hpbGUoMCkNCj4gI2Vs
c2UNCj4gLSNkZWZpbmUgX19USU1FUl9TVEFUX0FERChuYW1lLCBuKSBkbyB7fSB3aGlsZSgwKQ0K
PiArI2RlZmluZSBfX1RJTUVSX1NUQVRfQUREKHByaXZfdGltZXIsIG5hbWUsIG4pIGRvIHt9IHdo
aWxlICgwKQ0KPiAjZW5kaWYNCj4gDQo+IC0vKiBJbml0IHRoZSB0aW1lciBsaWJyYXJ5LiAqLw0K
PiArc3RhdGljIGlubGluZSBpbnQNCj4gK3RpbWVyX2RhdGFfdmFsaWQodWludDMyX3QgaWQpDQo+
ICt7DQo+ICsgICAgcmV0dXJuICEhKHJ0ZV90aW1lcl9kYXRhX2FycltpZF0uaW50ZXJuYWxfZmxh
Z3MgJiBGTF9BTExPQ0FURUQpOw0KPiArfQ0KPiArDQo+ICsvKiB2YWxpZGF0ZSBJRCBhbmQgcmV0
cmlldmUgdGltZXIgZGF0YSBwb2ludGVyLCBvciByZXR1cm4gZXJyb3IgdmFsdWUgKi8NCj4gKyNk
ZWZpbmUgVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJSX1JFVChpZCwgdGltZXJfZGF0YSwgcmV0
dmFsKSBkbyB7ICAgIFwNCj4gKyAgICBpZiAoaWQgPj0gUlRFX01BWF9EQVRBX0VMUyB8fCAhdGlt
ZXJfZGF0YV92YWxpZChpZCkpICAgICAgICBcDQo+ICsgICAgICAgIHJldHVybiByZXR2YWw7ICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHRpbWVyX2RhdGEgPSAmcnRlX3RpbWVyX2Rh
dGFfYXJyW2lkXTsgICAgICAgICAgICAgICAgXA0KPiArfSB3aGlsZSAoMCkNCj4gKw0KPiAraW50
IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2RhdGFfYWxsb2ModWludDMyX3QgKmlk
X3B0cikNCj4gK3sNCj4gKyAgICBpbnQgaTsNCj4gKyAgICBzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEg
KmRhdGE7DQo+ICsNCj4gKyAgICBpZiAoIXJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQp
DQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsgICAgZm9yIChpID0gMDsgaSA8
IFJURV9NQVhfREFUQV9FTFM7IGkrKykgew0KPiArICAgICAgICBkYXRhID0gJnJ0ZV90aW1lcl9k
YXRhX2FycltpXTsNCj4gKyAgICAgICAgaWYgKCEoZGF0YS0+aW50ZXJuYWxfZmxhZ3MgJiBGTF9B
TExPQ0FURUQpKSB7DQo+ICsgICAgICAgICAgICBkYXRhLT5pbnRlcm5hbF9mbGFncyB8PSBGTF9B
TExPQ0FURUQ7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmIChpZF9wdHIpDQo+ICsgICAgICAgICAg
ICAgICAgKmlkX3B0ciA9IGk7DQo+ICsNCj4gKyAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAg
ICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIC1FTk9TUEM7DQo+ICt9DQo+ICsN
Cj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9kYXRhX2RlYWxsb2ModWlu
dDMyX3QgaWQpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRh
Ow0KPiArICAgIFRJTUVSX0RBVEFfVkFMSURfR0VUX09SX0VSUl9SRVQoaWQsIHRpbWVyX2RhdGEs
IC1FSU5WQUwpOw0KPiArDQo+ICsgICAgdGltZXJfZGF0YS0+aW50ZXJuYWxfZmxhZ3MgJj0gfihG
TF9BTExPQ0FURUQpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gdm9pZA0K
PiAtcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0KHZvaWQpDQo+ICtydGVfdGltZXJfc3Vic3lzdGVt
X2luaXRfdjIwKHZvaWQpDQo+IHsNCj4gICAgdW5zaWduZWQgbGNvcmVfaWQ7DQo+ICsgICAgc3Ry
dWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIgPSBkZWZhdWx0X3RpbWVyX2RhdGEucHJpdl90aW1l
cjsNCj4gDQo+ICAgIC8qIHNpbmNlIHByaXZfdGltZXIgaXMgc3RhdGljLCBpdCdzIHplcm9lZCBi
eSBkZWZhdWx0LCBzbyBvbmx5IGluaXQgc29tZQ0KPiAgICAgKiBmaWVsZHMuDQo+IEBAIC03Niw2
ICsxNDAsNzYgQEAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0KHZvaWQpDQo+ICAgICAgICBwcml2
X3RpbWVyW2xjb3JlX2lkXS5wcmV2X2xjb3JlID0gbGNvcmVfaWQ7DQo+ICAgIH0NCj4gfQ0KPiAr
VkVSU0lPTl9TWU1CT0wocnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0LCBfdjIwLCAyLjApOw0KPiAr
DQo+ICsvKiBJbml0IHRoZSB0aW1lciBsaWJyYXJ5LiBBbGxvY2F0ZSBhbiBhcnJheSBvZiB0aW1l
ciBkYXRhIHN0cnVjdHMgaW4gc2hhcmVkDQo+ICsgKiBtZW1vcnksIGFuZCBhbGxvY2F0ZSB0aGUg
emVyb3RoIGVudHJ5IGZvciB1c2Ugd2l0aCBvcmlnaW5hbCB0aW1lcg0KPiArICogQVBJcy4gU2lu
Y2UgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgc2V0cyBvZiBsY29yZSBpZHMgaW4gcHJpbWFyeSBh
bmQNCj4gKyAqIHNlY29uZGFyeSBwcm9jZXNzZXMgc2hvdWxkIGJlIGVtcHR5LCB0aGUgemVyb3Ro
IGVudHJ5IGNhbiBiZSBzaGFyZWQgYnkNCj4gKyAqIG11bHRpcGxlIHByb2Nlc3Nlcy4NCj4gKyAq
Lw0KPiAraW50DQo+ICtydGVfdGltZXJfc3Vic3lzdGVtX2luaXRfdjE5MDUodm9pZCkNCj4gK3sN
Cj4gKyAgICBjb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16Ow0KPiArICAgIHN0cnVjdCBydGVf
dGltZXJfZGF0YSAqZGF0YTsNCj4gKyAgICBpbnQgaSwgbGNvcmVfaWQ7DQo+ICsgICAgc3RhdGlj
IGNvbnN0IGNoYXIgKm16X25hbWUgPSAicnRlX3RpbWVyX216IjsNCj4gKw0KPiArICAgIGlmIChy
dGVfdGltZXJfc3Vic3lzdGVtX2luaXRpYWxpemVkKQ0KPiArICAgICAgICByZXR1cm4gLUVBTFJF
QURZOw0KPiArDQo+ICsgICAgaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgIT0gUlRFX1BST0Nf
UFJJTUFSWSkgew0KPiArICAgICAgICBteiA9IHJ0ZV9tZW16b25lX2xvb2t1cChtel9uYW1lKTsN
Cj4gKyAgICAgICAgaWYgKG16ID09IE5VTEwpDQo+ICsgICAgICAgICAgICByZXR1cm4gLUVFWElT
VDsNCj4gKw0KPiArICAgICAgICBydGVfdGltZXJfZGF0YV9hcnIgPSBtei0+YWRkcjsNCj4gKw0K
PiArICAgICAgICBydGVfdGltZXJfZGF0YV9hcnJbZGVmYXVsdF9kYXRhX2lkXS5pbnRlcm5hbF9m
bGFncyB8PQ0KPiArICAgICAgICAgICAgRkxfQUxMT0NBVEVEOw0KPiArDQo+ICsgICAgICAgIHJ0
ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQgPSAxOw0KPiArDQo+ICsgICAgICAgIHJldHVy
biAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIG16ID0gcnRlX21lbXpvbmVfcmVzZXJ2ZV9hbGln
bmVkKG16X25hbWUsDQo+ICsgICAgICAgICAgICBSVEVfTUFYX0RBVEFfRUxTICogc2l6ZW9mKCpy
dGVfdGltZXJfZGF0YV9hcnIpLA0KPiArICAgICAgICAgICAgU09DS0VUX0lEX0FOWSwgMCwgUlRF
X0NBQ0hFX0xJTkVfU0laRSk7DQo+ICsgICAgaWYgKG16ID09IE5VTEwpDQo+ICsgICAgICAgIHJl
dHVybiAtRU5PTUVNOw0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfYXJyID0gbXotPmFkZHI7
DQo+ICsNCj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgUlRFX01BWF9EQVRBX0VMUzsgaSsrKSB7DQo+
ICsgICAgICAgIGRhdGEgPSAmcnRlX3RpbWVyX2RhdGFfYXJyW2ldOw0KPiArDQo+ICsgICAgICAg
IGZvciAobGNvcmVfaWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhfTENPUkU7IGxjb3JlX2lkKysp
IHsNCj4gKyAgICAgICAgICAgIHJ0ZV9zcGlubG9ja19pbml0KA0KPiArICAgICAgICAgICAgICAg
ICZkYXRhLT5wcml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KPiArICAgICAgICAgICAg
ZGF0YS0+cHJpdl90aW1lcltsY29yZV9pZF0ucHJldl9sY29yZSA9IGxjb3JlX2lkOw0KPiArICAg
ICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfYXJyW2RlZmF1bHRf
ZGF0YV9pZF0uaW50ZXJuYWxfZmxhZ3MgfD0gRkxfQUxMT0NBVEVEOw0KPiArDQo+ICsgICAgcnRl
X3RpbWVyX3N1YnN5c3RlbV9pbml0aWFsaXplZCA9IDE7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsN
Cj4gK30NCj4gK01BUF9TVEFUSUNfU1lNQk9MKGludCBydGVfdGltZXJfc3Vic3lzdGVtX2luaXQo
dm9pZCksDQo+ICsgICAgICAgICAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YxOTA1KTsNCj4g
K0JJTkRfREVGQVVMVF9TWU1CT0wocnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0LCBfdjE5MDUsIDE5
LjA1KTsNCj4gKw0KPiArdm9pZCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9zdWJz
eXN0ZW1fZmluYWxpemUodm9pZCkNCj4gK3sNCj4gKyAgICBpZiAocnRlX3RpbWVyX2RhdGFfYXJy
KQ0KPiArICAgICAgICBydGVfZnJlZShydGVfdGltZXJfZGF0YV9hcnIpOw0KPiArDQo+ICsgICAg
cnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0aWFsaXplZCA9IDA7DQo+ICt9DQo+IA0KPiAvKiBJbml0
aWFsaXplIHRoZSB0aW1lciBoYW5kbGUgdGltIGZvciB1c2UgKi8NCj4gdm9pZA0KPiBAQCAtOTUs
NyArMjI5LDggQEAgcnRlX3RpbWVyX2luaXQoc3RydWN0IHJ0ZV90aW1lciAqdGltKQ0KPiAgKi8N
Cj4gc3RhdGljIGludA0KPiB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHN0cnVjdCBydGVfdGltZXIg
KnRpbSwNCj4gLSAgICAgICAgICAgICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgKnJldF9wcmV2
X3N0YXR1cykNCj4gKyAgICAgICAgICAgICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgKnJldF9w
cmV2X3N0YXR1cywNCj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3Rp
bWVyKQ0KPiB7DQo+ICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1
czsNCj4gICAgaW50IHN1Y2Nlc3MgPSAwOw0KPiBAQCAtMjA3LDcgKzM0Miw3IEBAIHRpbWVyX2dl
dF9za2lwbGlzdF9sZXZlbCh1bnNpZ25lZCBjdXJyX2RlcHRoKQ0KPiAgKi8NCj4gc3RhdGljIHZv
aWQNCj4gdGltZXJfZ2V0X3ByZXZfZW50cmllcyh1aW50NjRfdCB0aW1lX3ZhbCwgdW5zaWduZWQg
dGltX2xjb3JlLA0KPiAtICAgICAgICBzdHJ1Y3QgcnRlX3RpbWVyICoqcHJldikNCj4gKyAgICAg
ICAgICAgICAgIHN0cnVjdCBydGVfdGltZXIgKipwcmV2LCBzdHJ1Y3QgcHJpdl90aW1lciAqcHJp
dl90aW1lcikNCj4gew0KPiAgICB1bnNpZ25lZCBsdmwgPSBwcml2X3RpbWVyW3RpbV9sY29yZV0u
Y3Vycl9za2lwbGlzdF9kZXB0aDsNCj4gICAgcHJldltsdmxdID0gJnByaXZfdGltZXJbdGltX2xj
b3JlXS5wZW5kaW5nX2hlYWQ7DQo+IEBAIC0yMjYsMTMgKzM2MSwxNSBAQCB0aW1lcl9nZXRfcHJl
dl9lbnRyaWVzKHVpbnQ2NF90IHRpbWVfdmFsLCB1bnNpZ25lZCB0aW1fbGNvcmUsDQo+ICAqLw0K
PiBzdGF0aWMgdm9pZA0KPiB0aW1lcl9nZXRfcHJldl9lbnRyaWVzX2Zvcl9ub2RlKHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdW5zaWduZWQgdGltX2xjb3JlLA0KPiAtICAgICAgICBzdHJ1Y3QgcnRl
X3RpbWVyICoqcHJldikNCj4gKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3RpbWVyICoqcHJl
diwNCj4gKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJpdl90aW1lciAqcHJpdl90aW1lcikNCj4g
ew0KPiAgICBpbnQgaTsNCj4gKw0KPiAgICAvKiB0byBnZXQgYSBzcGVjaWZpYyBlbnRyeSBpbiB0
aGUgbGlzdCwgbG9vayBmb3IganVzdCBsb3dlciB0aGFuIHRoZSB0aW1lDQo+ICAgICAqIHZhbHVl
cywgYW5kIHRoZW4gaW5jcmVtZW50IG9uIGVhY2ggbGV2ZWwgaW5kaXZpZHVhbGx5IGlmIG5lY2Vz
c2FyeQ0KPiAgICAgKi8NCj4gLSAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKHRpbS0+ZXhwaXJl
IC0gMSwgdGltX2xjb3JlLCBwcmV2KTsNCj4gKyAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKHRp
bS0+ZXhwaXJlIC0gMSwgdGltX2xjb3JlLCBwcmV2LCBwcml2X3RpbWVyKTsNCj4gICAgZm9yIChp
ID0gcHJpdl90aW1lclt0aW1fbGNvcmVdLmN1cnJfc2tpcGxpc3RfZGVwdGggLSAxOyBpID49IDA7
IGktLSkgew0KPiAgICAgICAgd2hpbGUgKHByZXZbaV0tPnNsX25leHRbaV0gIT0gTlVMTCAmJg0K
PiAgICAgICAgICAgICAgICBwcmV2W2ldLT5zbF9uZXh0W2ldICE9IHRpbSAmJg0KPiBAQCAtMjQ3
LDE0ICszODQsMTUgQEAgdGltZXJfZ2V0X3ByZXZfZW50cmllc19mb3Jfbm9kZShzdHJ1Y3QgcnRl
X3RpbWVyICp0aW0sIHVuc2lnbmVkIHRpbV9sY29yZSwNCj4gICogdGltZXIgbXVzdCBub3QgYmUg
aW4gYSBsaXN0DQo+ICAqLw0KPiBzdGF0aWMgdm9pZA0KPiAtdGltZXJfYWRkKHN0cnVjdCBydGVf
dGltZXIgKnRpbSwgdW5zaWduZWQgaW50IHRpbV9sY29yZSkNCj4gK3RpbWVyX2FkZChzdHJ1Y3Qg
cnRlX3RpbWVyICp0aW0sIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+ICsgICAgICBzdHJ1Y3Qg
cHJpdl90aW1lciAqcHJpdl90aW1lcikNCj4gew0KPiAgICB1bnNpZ25lZCBsdmw7DQo+ICAgIHN0
cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NLSVBMSVNUX0RFUFRIKzFdOw0KPiANCj4gICAgLyog
ZmluZCB3aGVyZSBleGFjdGx5IHRoaXMgZWxlbWVudCBnb2VzIGluIHRoZSBsaXN0IG9mIGVsZW1l
bnRzDQo+ICAgICAqIGZvciBlYWNoIGRlcHRoLiAqLw0KPiAtICAgIHRpbWVyX2dldF9wcmV2X2Vu
dHJpZXModGltLT5leHBpcmUsIHRpbV9sY29yZSwgcHJldik7DQo+ICsgICAgdGltZXJfZ2V0X3By
ZXZfZW50cmllcyh0aW0tPmV4cGlyZSwgdGltX2xjb3JlLCBwcmV2LCBwcml2X3RpbWVyKTsNCj4g
DQo+ICAgIC8qIG5vdyBhc3NpZ24gaXQgYSBuZXcgbGV2ZWwgYW5kIGFkZCBhdCB0aGF0IGxldmVs
ICovDQo+ICAgIGNvbnN0IHVuc2lnbmVkIHRpbV9sZXZlbCA9IHRpbWVyX2dldF9za2lwbGlzdF9s
ZXZlbCgNCj4gQEAgLTI4NCw3ICs0MjIsNyBAQCB0aW1lcl9hZGQoc3RydWN0IHJ0ZV90aW1lciAq
dGltLCB1bnNpZ25lZCBpbnQgdGltX2xjb3JlKQ0KPiAgKi8NCj4gc3RhdGljIHZvaWQNCj4gdGlt
ZXJfZGVsKHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdW5pb24gcnRlX3RpbWVyX3N0YXR1cyBwcmV2
X3N0YXR1cywNCj4gLSAgICAgICAgaW50IGxvY2FsX2lzX2xvY2tlZCkNCj4gKyAgICAgIGludCBs
b2NhbF9pc19sb2NrZWQsIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyKQ0KPiB7DQo+ICAg
IHVuc2lnbmVkIGxjb3JlX2lkID0gcnRlX2xjb3JlX2lkKCk7DQo+ICAgIHVuc2lnbmVkIHByZXZf
b3duZXIgPSBwcmV2X3N0YXR1cy5vd25lcjsNCj4gQEAgLTMwNCw3ICs0NDIsNyBAQCB0aW1lcl9k
ZWwoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1bmlvbiBydGVfdGltZXJfc3RhdHVzIHByZXZfc3Rh
dHVzLA0KPiAgICAgICAgICAgICAgICAoKHRpbS0+c2xfbmV4dFswXSA9PSBOVUxMKSA/IDAgOiB0
aW0tPnNsX25leHRbMF0tPmV4cGlyZSk7DQo+IA0KPiAgICAvKiBhZGp1c3QgcG9pbnRlcnMgZnJv
bSBwcmV2aW91cyBlbnRyaWVzIHRvIHBvaW50IHBhc3QgdGhpcyAqLw0KPiAtICAgIHRpbWVyX2dl
dF9wcmV2X2VudHJpZXNfZm9yX25vZGUodGltLCBwcmV2X293bmVyLCBwcmV2KTsNCj4gKyAgICB0
aW1lcl9nZXRfcHJldl9lbnRyaWVzX2Zvcl9ub2RlKHRpbSwgcHJldl9vd25lciwgcHJldiwgcHJp
dl90aW1lcik7DQo+ICAgIGZvciAoaSA9IHByaXZfdGltZXJbcHJldl9vd25lcl0uY3Vycl9za2lw
bGlzdF9kZXB0aCAtIDE7IGkgPj0gMDsgaS0tKSB7DQo+ICAgICAgICBpZiAocHJldltpXS0+c2xf
bmV4dFtpXSA9PSB0aW0pDQo+ICAgICAgICAgICAgcHJldltpXS0+c2xfbmV4dFtpXSA9IHRpbS0+
c2xfbmV4dFtpXTsNCj4gQEAgLTMyNiwxMSArNDY0LDEzIEBAIHN0YXRpYyBpbnQNCj4gX19ydGVf
dGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+ICAg
ICAgICAgIHVpbnQ2NF90IHBlcmlvZCwgdW5zaWduZWQgdGltX2xjb3JlLA0KPiAgICAgICAgICBy
dGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZywNCj4gLSAgICAgICAgICBpbnQgbG9jYWxfaXNf
bG9ja2VkKQ0KPiArICAgICAgICAgIGludCBsb2NhbF9pc19sb2NrZWQsDQo+ICsgICAgICAgICAg
c3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhKQ0KPiB7DQo+ICAgIHVuaW9uIHJ0ZV90
aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1czsNCj4gICAgaW50IHJldDsNCj4gICAgdW5z
aWduZWQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4gKyAgICBzdHJ1Y3QgcHJpdl90aW1l
ciAqcHJpdl90aW1lciA9IHRpbWVyX2RhdGEtPnByaXZfdGltZXI7DQo+IA0KPiAgICAvKiByb3Vu
ZCByb2JpbiBmb3IgdGltX2xjb3JlICovDQo+ICAgIGlmICh0aW1fbGNvcmUgPT0gKHVuc2lnbmVk
KUxDT1JFX0lEX0FOWSkgew0KPiBAQCAtMzQ4LDExICs0ODgsMTEgQEAgX19ydGVfdGltZXJfcmVz
ZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+IA0KPiAgICAvKiB3
YWl0IHRoYXQgdGhlIHRpbWVyIGlzIGluIGNvcnJlY3Qgc3RhdHVzIGJlZm9yZSB1cGRhdGUsDQo+
ICAgICAqIGFuZCBtYXJrIGl0IGFzIGJlaW5nIGNvbmZpZ3VyZWQgKi8NCj4gLSAgICByZXQgPSB0
aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVzKTsNCj4gKyAgICByZXQgPSB0
aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVzLCBwcml2X3RpbWVyKTsNCj4g
ICAgaWYgKHJldCA8IDApDQo+ICAgICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICAgIF9fVElNRVJf
U1RBVF9BREQocmVzZXQsIDEpOw0KPiArICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwg
cmVzZXQsIDEpOw0KPiAgICBpZiAocHJldl9zdGF0dXMuc3RhdGUgPT0gUlRFX1RJTUVSX1JVTk5J
TkcgJiYNCj4gICAgICAgIGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSkgew0KPiAgICAgICAgcHJp
dl90aW1lcltsY29yZV9pZF0udXBkYXRlZCA9IDE7DQo+IEBAIC0zNjAsOCArNTAwLDggQEAgX19y
dGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+
IA0KPiAgICAvKiByZW1vdmUgaXQgZnJvbSBsaXN0ICovDQo+ICAgIGlmIChwcmV2X3N0YXR1cy5z
dGF0ZSA9PSBSVEVfVElNRVJfUEVORElORykgew0KPiAtICAgICAgICB0aW1lcl9kZWwodGltLCBw
cmV2X3N0YXR1cywgbG9jYWxfaXNfbG9ja2VkKTsNCj4gLSAgICAgICAgX19USU1FUl9TVEFUX0FE
RChwZW5kaW5nLCAtMSk7DQo+ICsgICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZfc3RhdHVzLCBs
b2NhbF9pc19sb2NrZWQsIHByaXZfdGltZXIpOw0KPiArICAgICAgICBfX1RJTUVSX1NUQVRfQURE
KHByaXZfdGltZXIsIHBlbmRpbmcsIC0xKTsNCj4gICAgfQ0KPiANCj4gICAgdGltLT5wZXJpb2Qg
PSBwZXJpb2Q7DQo+IEBAIC0zNzYsOCArNTE2LDggQEAgX19ydGVfdGltZXJfcmVzZXQoc3RydWN0
IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+ICAgIGlmICh0aW1fbGNvcmUgIT0g
bGNvcmVfaWQgfHwgIWxvY2FsX2lzX2xvY2tlZCkNCj4gICAgICAgIHJ0ZV9zcGlubG9ja19sb2Nr
KCZwcml2X3RpbWVyW3RpbV9sY29yZV0ubGlzdF9sb2NrKTsNCj4gDQo+IC0gICAgX19USU1FUl9T
VEFUX0FERChwZW5kaW5nLCAxKTsNCj4gLSAgICB0aW1lcl9hZGQodGltLCB0aW1fbGNvcmUpOw0K
PiArICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgcGVuZGluZywgMSk7DQo+ICsgICAg
dGltZXJfYWRkKHRpbSwgdGltX2xjb3JlLCBwcml2X3RpbWVyKTsNCj4gDQo+ICAgIC8qIHVwZGF0
ZSBzdGF0ZTogYXMgd2UgYXJlIGluIENPTkZJRyBzdGF0ZSwgb25seSB1cyBjYW4gbW9kaWZ5DQo+
ICAgICAqIHRoZSBzdGF0ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHVzZSBjbXBzZXQoKSBoZXJlICov
DQo+IEBAIC0zOTQsOSArNTM0LDkgQEAgX19ydGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1l
ciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+IA0KPiAvKiBSZXNldCBhbmQgc3RhcnQgdGhlIHRp
bWVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGltZXIgaGFuZGxlIHRpbSAqLw0KPiBpbnQNCj4gLXJ0
ZV90aW1lcl9yZXNldChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVpbnQ2NF90IHRpY2tzLA0KPiAt
ICAgICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIHRpbV9sY29yZSwNCj4g
LSAgICAgICAgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpDQo+ICtydGVfdGltZXJfcmVz
ZXRfdjIwKHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICsgICAgICAg
ICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+
ICsgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZykNCj4gew0KPiAgICB1
aW50NjRfdCBjdXJfdGltZSA9IHJ0ZV9nZXRfdGltZXJfY3ljbGVzKCk7DQo+ICAgIHVpbnQ2NF90
IHBlcmlvZDsNCj4gQEAgLTQxMiw3ICs1NTIsNDggQEAgcnRlX3RpbWVyX3Jlc2V0KHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICAgICAgICBwZXJpb2QgPSAwOw0KPiAN
Cj4gICAgcmV0dXJuIF9fcnRlX3RpbWVyX3Jlc2V0KHRpbSwgIGN1cl90aW1lICsgdGlja3MsIHBl
cmlvZCwgdGltX2xjb3JlLA0KPiAtICAgICAgICAgICAgICBmY3QsIGFyZywgMCk7DQo+ICsgICAg
ICAgICAgICAgIGZjdCwgYXJnLCAwLCAmZGVmYXVsdF90aW1lcl9kYXRhKTsNCj4gK30NCj4gK1ZF
UlNJT05fU1lNQk9MKHJ0ZV90aW1lcl9yZXNldCwgX3YyMCwgMi4wKTsNCj4gKw0KPiAraW50DQo+
ICtydGVfdGltZXJfcmVzZXRfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0
aWNrcywNCj4gKyAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLCB1bnNpZ25l
ZCBpbnQgdGltX2xjb3JlLA0KPiArICAgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZv
aWQgKmFyZykNCj4gK3sNCj4gKyAgICByZXR1cm4gcnRlX3RpbWVyX2FsdF9yZXNldChkZWZhdWx0
X2RhdGFfaWQsIHRpbSwgdGlja3MsIHR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgdGltX2xj
b3JlLCBmY3QsIGFyZyk7DQo+ICt9DQo+ICtNQVBfU1RBVElDX1NZTUJPTChpbnQgcnRlX3RpbWVy
X3Jlc2V0KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpLA0KPiArICAgICAgICAgIHJ0ZV90aW1l
cl9yZXNldF92MTkwNSk7DQo+ICtCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9yZXNldCwg
X3YxOTA1LCAxOS4wNSk7DQo+ICsNCj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90
aW1lcl9hbHRfcmVzZXQodWludDMyX3QgdGltZXJfZGF0YV9pZCwgc3RydWN0IHJ0ZV90aW1lciAq
dGltLA0KPiArICAgICAgICAgICAgdWludDY0X3QgdGlja3MsIGVudW0gcnRlX3RpbWVyX3R5cGUg
dHlwZSwNCj4gKyAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsIHJ0ZV90aW1lcl9j
Yl90IGZjdCwgdm9pZCAqYXJnKQ0KPiArew0KPiArICAgIHVpbnQ2NF90IGN1cl90aW1lID0gcnRl
X2dldF90aW1lcl9jeWNsZXMoKTsNCj4gKyAgICB1aW50NjRfdCBwZXJpb2Q7DQo+ICsgICAgc3Ry
dWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9W
QUxJRF9HRVRfT1JfRVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsN
Cj4gKw0KPiArICAgIGlmICh1bmxpa2VseSgodGltX2xjb3JlICE9ICh1bnNpZ25lZCBpbnQpTENP
UkVfSURfQU5ZKSAmJg0KPiArICAgICAgICAgICAgIShydGVfbGNvcmVfaXNfZW5hYmxlZCh0aW1f
bGNvcmUpIHx8DQo+ICsgICAgICAgICAgICAgIHJ0ZV9sY29yZV9oYXNfcm9sZSh0aW1fbGNvcmUs
IFJPTEVfU0VSVklDRSkpKSkNCj4gKyAgICAgICAgcmV0dXJuIC0xOw0KPiArDQo+ICsgICAgaWYg
KHR5cGUgPT0gUEVSSU9ESUNBTCkNCj4gKyAgICAgICAgcGVyaW9kID0gdGlja3M7DQo+ICsgICAg
ZWxzZQ0KPiArICAgICAgICBwZXJpb2QgPSAwOw0KPiArDQo+ICsgICAgcmV0dXJuIF9fcnRlX3Rp
bWVyX3Jlc2V0KHRpbSwgIGN1cl90aW1lICsgdGlja3MsIHBlcmlvZCwgdGltX2xjb3JlLA0KPiAr
ICAgICAgICAgICAgICAgICBmY3QsIGFyZywgMCwgdGltZXJfZGF0YSk7DQo+IH0NCj4gDQo+IC8q
IGxvb3AgdW50aWwgcnRlX3RpbWVyX3Jlc2V0KCkgc3VjY2VlZCAqLw0KPiBAQCAtNDI2LDIxICs2
MDcsMjIgQEAgcnRlX3RpbWVyX3Jlc2V0X3N5bmMoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50
NjRfdCB0aWNrcywNCj4gICAgICAgIHJ0ZV9wYXVzZSgpOw0KPiB9DQo+IA0KPiAtLyogU3RvcCB0
aGUgdGltZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aW1lciBoYW5kbGUgdGltICovDQo+IC1pbnQN
Cj4gLXJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gK3N0YXRpYyBpbnQN
Cj4gK19fcnRlX3RpbWVyX3N0b3Aoc3RydWN0IHJ0ZV90aW1lciAqdGltLCBpbnQgbG9jYWxfaXNf
bG9ja2VkLA0KPiArICAgICAgICAgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhKQ0K
PiB7DQo+ICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1czsNCj4g
ICAgdW5zaWduZWQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4gICAgaW50IHJldDsNCj4g
KyAgICBzdHJ1Y3QgcHJpdl90aW1lciAqcHJpdl90aW1lciA9IHRpbWVyX2RhdGEtPnByaXZfdGlt
ZXI7DQo+IA0KPiAgICAvKiB3YWl0IHRoYXQgdGhlIHRpbWVyIGlzIGluIGNvcnJlY3Qgc3RhdHVz
IGJlZm9yZSB1cGRhdGUsDQo+ICAgICAqIGFuZCBtYXJrIGl0IGFzIGJlaW5nIGNvbmZpZ3VyZWQg
Ki8NCj4gLSAgICByZXQgPSB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVz
KTsNCj4gKyAgICByZXQgPSB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVz
LCBwcml2X3RpbWVyKTsNCj4gICAgaWYgKHJldCA8IDApDQo+ICAgICAgICByZXR1cm4gLTE7DQo+
IA0KPiAtICAgIF9fVElNRVJfU1RBVF9BREQoc3RvcCwgMSk7DQo+ICsgICAgX19USU1FUl9TVEFU
X0FERChwcml2X3RpbWVyLCBzdG9wLCAxKTsNCj4gICAgaWYgKHByZXZfc3RhdHVzLnN0YXRlID09
IFJURV9USU1FUl9SVU5OSU5HICYmDQo+ICAgICAgICBsY29yZV9pZCA8IFJURV9NQVhfTENPUkUp
IHsNCj4gICAgICAgIHByaXZfdGltZXJbbGNvcmVfaWRdLnVwZGF0ZWQgPSAxOw0KPiBAQCAtNDQ4
LDggKzYzMCw4IEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gDQo+
ICAgIC8qIHJlbW92ZSBpdCBmcm9tIGxpc3QgKi8NCj4gICAgaWYgKHByZXZfc3RhdHVzLnN0YXRl
ID09IFJURV9USU1FUl9QRU5ESU5HKSB7DQo+IC0gICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZf
c3RhdHVzLCAwKTsNCj4gLSAgICAgICAgX19USU1FUl9TVEFUX0FERChwZW5kaW5nLCAtMSk7DQo+
ICsgICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZfc3RhdHVzLCBsb2NhbF9pc19sb2NrZWQsIHBy
aXZfdGltZXIpOw0KPiArICAgICAgICBfX1RJTUVSX1NUQVRfQUREKHByaXZfdGltZXIsIHBlbmRp
bmcsIC0xKTsNCj4gICAgfQ0KPiANCj4gICAgLyogbWFyayB0aW1lciBhcyBzdG9wcGVkICovDQo+
IEBAIC00NjEsNiArNjQzLDMzIEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRp
bSkNCj4gICAgcmV0dXJuIDA7DQo+IH0NCj4gDQo+ICsvKiBTdG9wIHRoZSB0aW1lciBhc3NvY2lh
dGVkIHdpdGggdGhlIHRpbWVyIGhhbmRsZSB0aW0gKi8NCj4gK2ludA0KPiArcnRlX3RpbWVyX3N0
b3BfdjIwKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gK3sNCj4gKyAgICByZXR1cm4gX19ydGVf
dGltZXJfc3RvcCh0aW0sIDAsICZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KPiArfQ0KPiArVkVSU0lP
Tl9TWU1CT0wocnRlX3RpbWVyX3N0b3AsIF92MjAsIDIuMCk7DQo+ICsNCj4gK2ludA0KPiArcnRl
X3RpbWVyX3N0b3BfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltKQ0KPiArew0KPiArICAgIHJl
dHVybiBydGVfdGltZXJfYWx0X3N0b3AoZGVmYXVsdF9kYXRhX2lkLCB0aW0pOw0KPiArfQ0KPiAr
TUFQX1NUQVRJQ19TWU1CT0woaW50IHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRp
bSksDQo+ICsgICAgICAgICAgcnRlX3RpbWVyX3N0b3BfdjE5MDUpOw0KPiArQklORF9ERUZBVUxU
X1NZTUJPTChydGVfdGltZXJfc3RvcCwgX3YxOTA1LCAxOS4wNSk7DQo+ICsNCj4gK2ludCBfX3J0
ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9hbHRfc3RvcCh1aW50MzJfdCB0aW1lcl9kYXRh
X2lkLCBzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1l
cl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1Jf
RVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCj4gKw0KPiArICAg
IHJldHVybiBfX3J0ZV90aW1lcl9zdG9wKHRpbSwgMCwgdGltZXJfZGF0YSk7DQo+ICt9DQo+ICsN
Cj4gLyogbG9vcCB1bnRpbCBydGVfdGltZXJfc3RvcCgpIHN1Y2NlZWQgKi8NCj4gdm9pZA0KPiBy
dGVfdGltZXJfc3RvcF9zeW5jKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gQEAgLTQ3Nyw3ICs2
ODYsOCBAQCBydGVfdGltZXJfcGVuZGluZyhzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQo+IH0NCj4g
DQo+IC8qIG11c3QgYmUgY2FsbGVkIHBlcmlvZGljYWxseSwgcnVuIGFsbCB0aW1lciB0aGF0IGV4
cGlyZWQgKi8NCj4gLXZvaWQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKQ0KPiArc3RhdGljIHZvaWQN
Cj4gK19fcnRlX3RpbWVyX21hbmFnZShzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKnRpbWVyX2RhdGEp
DQo+IHsNCj4gICAgdW5pb24gcnRlX3RpbWVyX3N0YXR1cyBzdGF0dXM7DQo+ICAgIHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgKm5leHRfdGltOw0KPiBAQCAtNDg2LDExICs2OTYsMTIgQEAgdm9pZCBy
dGVfdGltZXJfbWFuYWdlKHZvaWQpDQo+ICAgIHN0cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NL
SVBMSVNUX0RFUFRIICsgMV07DQo+ICAgIHVpbnQ2NF90IGN1cl90aW1lOw0KPiAgICBpbnQgaSwg
cmV0Ow0KPiArICAgIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyID0gdGltZXJfZGF0YS0+
cHJpdl90aW1lcjsNCj4gDQo+ICAgIC8qIHRpbWVyIG1hbmFnZXIgb25seSBydW5zIG9uIEVBTCB0
aHJlYWQgd2l0aCB2YWxpZCBsY29yZV9pZCAqLw0KPiAgICBhc3NlcnQobGNvcmVfaWQgPCBSVEVf
TUFYX0xDT1JFKTsNCj4gDQo+IC0gICAgX19USU1FUl9TVEFUX0FERChtYW5hZ2UsIDEpOw0KPiAr
ICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgbWFuYWdlLCAxKTsNCj4gICAgLyogb3B0
aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHBlci1jcHUgbGlzdCBpcyBlbXB0eSAqLw0KPiAgICBp
ZiAocHJpdl90aW1lcltsY29yZV9pZF0ucGVuZGluZ19oZWFkLnNsX25leHRbMF0gPT0gTlVMTCkN
Cj4gICAgICAgIHJldHVybjsNCj4gQEAgLTUxOCw3ICs3MjksNyBAQCB2b2lkIHJ0ZV90aW1lcl9t
YW5hZ2Uodm9pZCkNCj4gICAgdGltID0gcHJpdl90aW1lcltsY29yZV9pZF0ucGVuZGluZ19oZWFk
LnNsX25leHRbMF07DQo+IA0KPiAgICAvKiBicmVhayB0aGUgZXhpc3RpbmcgbGlzdCBhdCBjdXJy
ZW50IHRpbWUgcG9pbnQgKi8NCj4gLSAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKGN1cl90aW1l
LCBsY29yZV9pZCwgcHJldik7DQo+ICsgICAgdGltZXJfZ2V0X3ByZXZfZW50cmllcyhjdXJfdGlt
ZSwgbGNvcmVfaWQsIHByZXYsIHByaXZfdGltZXIpOw0KPiAgICBmb3IgKGkgPSBwcml2X3RpbWVy
W2xjb3JlX2lkXS5jdXJyX3NraXBsaXN0X2RlcHRoIC0xOyBpID49IDA7IGktLSkgew0KPiAgICAg
ICAgaWYgKHByZXZbaV0gPT0gJnByaXZfdGltZXJbbGNvcmVfaWRdLnBlbmRpbmdfaGVhZCkNCj4g
ICAgICAgICAgICBjb250aW51ZTsNCj4gQEAgLTU2Myw3ICs3NzQsNyBAQCB2b2lkIHJ0ZV90aW1l
cl9tYW5hZ2Uodm9pZCkNCj4gICAgICAgIC8qIGV4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb24gd2l0
aCBsaXN0IHVubG9ja2VkICovDQo+ICAgICAgICB0aW0tPmYodGltLCB0aW0tPmFyZyk7DQo+IA0K
PiAtICAgICAgICBfX1RJTUVSX1NUQVRfQUREKHBlbmRpbmcsIC0xKTsNCj4gKyAgICAgICAgX19U
SU1FUl9TVEFUX0FERChwcml2X3RpbWVyLCBwZW5kaW5nLCAtMSk7DQo+ICAgICAgICAvKiB0aGUg
dGltZXIgd2FzIHN0b3BwZWQgb3IgcmVsb2FkZWQgYnkgdGhlIGNhbGxiYWNrDQo+ICAgICAgICAg
KiBmdW5jdGlvbiwgd2UgaGF2ZSBub3RoaW5nIHRvIGRvIGhlcmUgKi8NCj4gICAgICAgIGlmIChw
cml2X3RpbWVyW2xjb3JlX2lkXS51cGRhdGVkID09IDEpDQo+IEBAIC01ODAsMjQgKzc5MSwyMjIg
QEAgdm9pZCBydGVfdGltZXJfbWFuYWdlKHZvaWQpDQo+ICAgICAgICAgICAgLyoga2VlcCBpdCBp
biBsaXN0IGFuZCBtYXJrIHRpbWVyIGFzIHBlbmRpbmcgKi8NCj4gICAgICAgICAgICBydGVfc3Bp
bmxvY2tfbG9jaygmcHJpdl90aW1lcltsY29yZV9pZF0ubGlzdF9sb2NrKTsNCj4gICAgICAgICAg
ICBzdGF0dXMuc3RhdGUgPSBSVEVfVElNRVJfUEVORElORzsNCj4gLSAgICAgICAgICAgIF9fVElN
RVJfU1RBVF9BREQocGVuZGluZywgMSk7DQo+ICsgICAgICAgICAgICBfX1RJTUVSX1NUQVRfQURE
KHByaXZfdGltZXIsIHBlbmRpbmcsIDEpOw0KPiAgICAgICAgICAgIHN0YXR1cy5vd25lciA9IChp
bnQxNl90KWxjb3JlX2lkOw0KPiAgICAgICAgICAgIHJ0ZV93bWIoKTsNCj4gICAgICAgICAgICB0
aW0tPnN0YXR1cy51MzIgPSBzdGF0dXMudTMyOw0KPiAgICAgICAgICAgIF9fcnRlX3RpbWVyX3Jl
c2V0KHRpbSwgdGltLT5leHBpcmUgKyB0aW0tPnBlcmlvZCwNCj4gLSAgICAgICAgICAgICAgICB0
aW0tPnBlcmlvZCwgbGNvcmVfaWQsIHRpbS0+ZiwgdGltLT5hcmcsIDEpOw0KPiArICAgICAgICAg
ICAgICAgIHRpbS0+cGVyaW9kLCBsY29yZV9pZCwgdGltLT5mLCB0aW0tPmFyZywgMSwNCj4gKyAg
ICAgICAgICAgICAgICB0aW1lcl9kYXRhKTsNCj4gICAgICAgICAgICBydGVfc3BpbmxvY2tfdW5s
b2NrKCZwcml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KPiAgICAgICAgfQ0KPiAgICB9
DQo+ICAgIHByaXZfdGltZXJbbGNvcmVfaWRdLnJ1bm5pbmdfdGltID0gTlVMTDsNCj4gfQ0KPiAN
Cj4gK3ZvaWQNCj4gK3J0ZV90aW1lcl9tYW5hZ2VfdjIwKHZvaWQpDQo+ICt7DQo+ICsgICAgX19y
dGVfdGltZXJfbWFuYWdlKCZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KPiArfQ0KPiArVkVSU0lPTl9T
WU1CT0wocnRlX3RpbWVyX21hbmFnZSwgX3YyMCwgMi4wKTsNCj4gKw0KPiAraW50DQo+ICtydGVf
dGltZXJfbWFuYWdlX3YxOTA1KHZvaWQpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1lcl9k
YXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJS
X1JFVChkZWZhdWx0X2RhdGFfaWQsIHRpbWVyX2RhdGEsIC1FSU5WQUwpOw0KPiArDQo+ICsgICAg
X19ydGVfdGltZXJfbWFuYWdlKHRpbWVyX2RhdGEpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+
ICt9DQo+ICtNQVBfU1RBVElDX1NZTUJPTChpbnQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKSwgcnRl
X3RpbWVyX21hbmFnZV92MTkwNSk7DQo+ICtCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9t
YW5hZ2UsIF92MTkwNSwgMTkuMDUpOw0KPiArDQo+ICtpbnQgX19ydGVfZXhwZXJpbWVudGFsDQo+
ICtydGVfdGltZXJfYWx0X21hbmFnZSh1aW50MzJfdCB0aW1lcl9kYXRhX2lkLA0KPiArICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCAqcG9sbF9sY29yZXMsDQo+ICsgICAgICAgICAgICAgaW50IG5i
X3BvbGxfbGNvcmVzLA0KPiArICAgICAgICAgICAgIHJ0ZV90aW1lcl9hbHRfbWFuYWdlX2NiX3Qg
ZikNCj4gK3sNCj4gKyAgICB1bmlvbiBydGVfdGltZXJfc3RhdHVzIHN0YXR1czsNCj4gKyAgICBz
dHJ1Y3QgcnRlX3RpbWVyICp0aW0sICpuZXh0X3RpbSwgKipwcHJldjsNCj4gKyAgICBzdHJ1Y3Qg
cnRlX3RpbWVyICpydW5fZmlyc3RfdGltc1tSVEVfTUFYX0xDT1JFXTsNCj4gKyAgICB1bnNpZ25l
ZCBpbnQgcnVubGlzdF9sY29yZV9pZHNbUlRFX01BWF9MQ09SRV07DQo+ICsgICAgdW5zaWduZWQg
aW50IHRoaXNfbGNvcmUgPSBydGVfbGNvcmVfaWQoKTsNCj4gKyAgICBzdHJ1Y3QgcnRlX3RpbWVy
ICpwcmV2W01BWF9TS0lQTElTVF9ERVBUSCArIDFdOw0KPiArICAgIHVpbnQ2NF90IGN1cl90aW1l
Ow0KPiArICAgIGludCBpLCBqLCByZXQ7DQo+ICsgICAgaW50IG5iX3J1bmxpc3RzID0gMDsNCj4g
KyAgICBzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKmRhdGE7DQo+ICsgICAgc3RydWN0IHByaXZfdGlt
ZXIgKnByaXZwOw0KPiArICAgIHVpbnQzMl90IHBvbGxfbGNvcmU7DQo+ICsNCj4gKyAgICBUSU1F
Ul9EQVRBX1ZBTElEX0dFVF9PUl9FUlJfUkVUKHRpbWVyX2RhdGFfaWQsIGRhdGEsIC1FSU5WQUwp
Ow0KPiArDQo+ICsgICAgLyogdGltZXIgbWFuYWdlciBvbmx5IHJ1bnMgb24gRUFMIHRocmVhZCB3
aXRoIHZhbGlkIGxjb3JlX2lkICovDQo+ICsgICAgYXNzZXJ0KHRoaXNfbGNvcmUgPCBSVEVfTUFY
X0xDT1JFKTsNCj4gKw0KPiArICAgIF9fVElNRVJfU1RBVF9BREQoZGF0YS0+cHJpdl90aW1lciwg
bWFuYWdlLCAxKTsNCj4gKw0KPiArICAgIGlmIChwb2xsX2xjb3JlcyA9PSBOVUxMKSB7DQo+ICsg
ICAgICAgIHBvbGxfbGNvcmVzID0gKHVuc2lnbmVkIGludCBbXSl7cnRlX2xjb3JlX2lkKCl9Ow0K
PiArICAgICAgICBuYl9wb2xsX2xjb3JlcyA9IDE7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZm9y
IChpID0gMCwgcG9sbF9sY29yZSA9IHBvbGxfbGNvcmVzW2ldOyBpIDwgbmJfcG9sbF9sY29yZXM7
DQo+ICsgICAgICAgICBwb2xsX2xjb3JlID0gcG9sbF9sY29yZXNbKytpXSkgew0KPiArICAgICAg
ICBwcml2cCA9ICZkYXRhLT5wcml2X3RpbWVyW3BvbGxfbGNvcmVdOw0KPiArDQo+ICsgICAgICAg
IC8qIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBwZXItY3B1IGxpc3QgaXMgZW1wdHkgKi8N
Cj4gKyAgICAgICAgaWYgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4dFswXSA9PSBOVUxMKQ0K
PiArICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgIGN1cl90aW1lID0gcnRlX2dldF90
aW1lcl9jeWNsZXMoKTsNCj4gKw0KPiArI2lmZGVmIFJURV9BUkNIXzY0DQo+ICsgICAgICAgIC8q
IG9uIDY0LWJpdCB0aGUgdmFsdWUgY2FjaGVkIGluIHRoZSBwZW5kaW5nX2hlYWQuZXhwaXJlZCB3
aWxsDQo+ICsgICAgICAgICAqIGJlIHVwZGF0ZWQgYXRvbWljYWxseSwgc28gd2UgY2FuIGNvbnN1
bHQgdGhhdCBmb3IgYSBxdWljaw0KPiArICAgICAgICAgKiBjaGVjayBoZXJlIG91dHNpZGUgdGhl
IGxvY2sNCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIGlmIChsaWtlbHkocHJpdnAtPnBlbmRp
bmdfaGVhZC5leHBpcmUgPiBjdXJfdGltZSkpDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4g
KyNlbmRpZg0KPiArDQo+ICsgICAgICAgIC8qIGJyb3dzZSBvcmRlcmVkIGxpc3QsIGFkZCBleHBp
cmVkIHRpbWVycyBpbiAnZXhwaXJlZCcgbGlzdCAqLw0KPiArICAgICAgICBydGVfc3BpbmxvY2tf
bG9jaygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsNCj4gKyAgICAgICAgLyogaWYgbm90aGluZyB0
byBkbyBqdXN0IHVubG9jayBhbmQgcmV0dXJuICovDQo+ICsgICAgICAgIGlmIChwcml2cC0+cGVu
ZGluZ19oZWFkLnNsX25leHRbMF0gPT0gTlVMTCB8fA0KPiArICAgICAgICAgICAgcHJpdnAtPnBl
bmRpbmdfaGVhZC5zbF9uZXh0WzBdLT5leHBpcmUgPiBjdXJfdGltZSkgew0KPiArICAgICAgICAg
ICAgcnRlX3NwaW5sb2NrX3VubG9jaygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsgICAgICAgICAg
ICBjb250aW51ZTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8qIHNhdmUgc3RhcnQg
b2YgbGlzdCBvZiBleHBpcmVkIHRpbWVycyAqLw0KPiArICAgICAgICB0aW0gPSBwcml2cC0+cGVu
ZGluZ19oZWFkLnNsX25leHRbMF07DQo+ICsNCj4gKyAgICAgICAgLyogYnJlYWsgdGhlIGV4aXN0
aW5nIGxpc3QgYXQgY3VycmVudCB0aW1lIHBvaW50ICovDQo+ICsgICAgICAgIHRpbWVyX2dldF9w
cmV2X2VudHJpZXMoY3VyX3RpbWUsIHBvbGxfbGNvcmUsIHByZXYsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEtPnByaXZfdGltZXIpOw0KPiArICAgICAgICBmb3IgKGogPSBwcml2cC0+
Y3Vycl9za2lwbGlzdF9kZXB0aCAtIDE7IGogPj0gMDsgai0tKSB7DQo+ICsgICAgICAgICAgICBp
ZiAocHJldltqXSA9PSAmcHJpdnAtPnBlbmRpbmdfaGVhZCkNCj4gKyAgICAgICAgICAgICAgICBj
b250aW51ZTsNCj4gKyAgICAgICAgICAgIHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4dFtqXSA9
DQo+ICsgICAgICAgICAgICAgICAgcHJldltqXS0+c2xfbmV4dFtqXTsNCj4gKyAgICAgICAgICAg
IGlmIChwcmV2W2pdLT5zbF9uZXh0W2pdID09IE5VTEwpDQo+ICsgICAgICAgICAgICAgICAgcHJp
dnAtPmN1cnJfc2tpcGxpc3RfZGVwdGgtLTsNCj4gKw0KPiArICAgICAgICAgICAgcHJldltqXS0+
c2xfbmV4dFtqXSA9IE5VTEw7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvKiB0cmFu
c2l0aW9uIHJ1bi1saXN0IGZyb20gUEVORElORyB0byBSVU5OSU5HICovDQo+ICsgICAgICAgIHJ1
bl9maXJzdF90aW1zW25iX3J1bmxpc3RzXSA9IHRpbTsNCj4gKyAgICAgICAgcnVubGlzdF9sY29y
ZV9pZHNbbmJfcnVubGlzdHNdID0gcG9sbF9sY29yZTsNCj4gKyAgICAgICAgcHByZXYgPSAmcnVu
X2ZpcnN0X3RpbXNbbmJfcnVubGlzdHNdOw0KPiArICAgICAgICBuYl9ydW5saXN0cysrOw0KPiAr
DQo+ICsgICAgICAgIGZvciAoIDsgdGltICE9IE5VTEw7IHRpbSA9IG5leHRfdGltKSB7DQo+ICsg
ICAgICAgICAgICBuZXh0X3RpbSA9IHRpbS0+c2xfbmV4dFswXTsNCj4gKw0KPiArICAgICAgICAg
ICAgcmV0ID0gdGltZXJfc2V0X3J1bm5pbmdfc3RhdGUodGltKTsNCj4gKyAgICAgICAgICAgIGlm
IChsaWtlbHkocmV0ID09IDApKSB7DQo+ICsgICAgICAgICAgICAgICAgcHByZXYgPSAmdGltLT5z
bF9uZXh0WzBdOw0KPiArICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAv
KiBhbm90aGVyIGNvcmUgaXMgdHJ5aW5nIHRvIHJlLWNvbmZpZyB0aGlzIG9uZSwNCj4gKyAgICAg
ICAgICAgICAgICAgKiByZW1vdmUgaXQgZnJvbSBsb2NhbCBleHBpcmVkIGxpc3QNCj4gKyAgICAg
ICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAqcHByZXYgPSBuZXh0X3RpbTsNCj4g
KyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8qIHVwZGF0ZSB0
aGUgbmV4dCB0byBleHBpcmUgdGltZXIgdmFsdWUgKi8NCj4gKyAgICAgICAgcHJpdnAtPnBlbmRp
bmdfaGVhZC5leHBpcmUgPQ0KPiArICAgICAgICAgICAgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xf
bmV4dFswXSA9PSBOVUxMKSA/IDAgOg0KPiArICAgICAgICAgICAgcHJpdnAtPnBlbmRpbmdfaGVh
ZC5zbF9uZXh0WzBdLT5leHBpcmU7DQo+ICsNCj4gKyAgICAgICAgcnRlX3NwaW5sb2NrX3VubG9j
aygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLyogTm93IHByb2Nl
c3MgdGhlIHJ1biBsaXN0cyAqLw0KPiArICAgIHdoaWxlICgxKSB7DQo+ICsgICAgICAgIGJvb2wg
ZG9uZSA9IHRydWU7DQo+ICsgICAgICAgIHVpbnQ2NF90IG1pbl9leHBpcmUgPSBVSU5UNjRfTUFY
Ow0KPiArICAgICAgICBpbnQgbWluX2lkeCA9IDA7DQo+ICsNCj4gKyAgICAgICAgLyogRmluZCB0
aGUgbmV4dCBvbGRlc3QgdGltZXIgdG8gcHJvY2VzcyAqLw0KPiArICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgbmJfcnVubGlzdHM7IGkrKykgew0KPiArICAgICAgICAgICAgdGltID0gcnVuX2ZpcnN0
X3RpbXNbaV07DQo+ICsNCj4gKyAgICAgICAgICAgIGlmICh0aW0gIT0gTlVMTCAmJiB0aW0tPmV4
cGlyZSA8IG1pbl9leHBpcmUpIHsNCj4gKyAgICAgICAgICAgICAgICBtaW5fZXhwaXJlID0gdGlt
LT5leHBpcmU7DQo+ICsgICAgICAgICAgICAgICAgbWluX2lkeCA9IGk7DQo+ICsgICAgICAgICAg
ICAgICAgZG9uZSA9IGZhbHNlOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsN
Cj4gKyAgICAgICAgaWYgKGRvbmUpDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
ICAgICB0aW0gPSBydW5fZmlyc3RfdGltc1ttaW5faWR4XTsNCj4gKyAgICAgICAgcHJpdnAgPSAm
ZGF0YS0+cHJpdl90aW1lcltydW5saXN0X2xjb3JlX2lkc1ttaW5faWR4XV07DQo+ICsNCj4gKyAg
ICAgICAgLyogTW92ZSBkb3duIHRoZSBydW5saXN0IGZyb20gd2hpY2ggd2UgcGlja2VkIGEgdGlt
ZXIgdG8NCj4gKyAgICAgICAgICogZXhlY3V0ZQ0KPiArICAgICAgICAgKi8NCj4gKyAgICAgICAg
cnVuX2ZpcnN0X3RpbXNbbWluX2lkeF0gPSBydW5fZmlyc3RfdGltc1ttaW5faWR4XS0+c2xfbmV4
dFswXTsNCj4gKw0KPiArICAgICAgICBwcml2cC0+dXBkYXRlZCA9IDA7DQo+ICsgICAgICAgIHBy
aXZwLT5ydW5uaW5nX3RpbSA9IHRpbTsNCj4gKw0KPiArICAgICAgICAvKiBDYWxsIHRoZSBwcm92
aWRlZCBjYWxsYmFjayBmdW5jdGlvbiAqLw0KPiArICAgICAgICBmKHRpbSk7DQo+ICsNCj4gKyAg
ICAgICAgX19USU1FUl9TVEFUX0FERChwcml2cCwgcGVuZGluZywgLTEpOw0KPiArDQo+ICsgICAg
ICAgIC8qIHRoZSB0aW1lciB3YXMgc3RvcHBlZCBvciByZWxvYWRlZCBieSB0aGUgY2FsbGJhY2sN
Cj4gKyAgICAgICAgICogZnVuY3Rpb24sIHdlIGhhdmUgbm90aGluZyB0byBkbyBoZXJlDQo+ICsg
ICAgICAgICAqLw0KPiArICAgICAgICBpZiAocHJpdnAtPnVwZGF0ZWQgPT0gMSkNCj4gKyAgICAg
ICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgIGlmICh0aW0tPnBlcmlvZCA9PSAwKSB7
DQo+ICsgICAgICAgICAgICAvKiByZW1vdmUgZnJvbSBkb25lIGxpc3QgYW5kIG1hcmsgdGltZXIg
YXMgc3RvcHBlZCAqLw0KPiArICAgICAgICAgICAgc3RhdHVzLnN0YXRlID0gUlRFX1RJTUVSX1NU
T1A7DQo+ICsgICAgICAgICAgICBzdGF0dXMub3duZXIgPSBSVEVfVElNRVJfTk9fT1dORVI7DQo+
ICsgICAgICAgICAgICBydGVfd21iKCk7DQo+ICsgICAgICAgICAgICB0aW0tPnN0YXR1cy51MzIg
PSBzdGF0dXMudTMyOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgLyoga2Vl
cCBpdCBpbiBsaXN0IGFuZCBtYXJrIHRpbWVyIGFzIHBlbmRpbmcgKi8NCj4gKyAgICAgICAgICAg
IHJ0ZV9zcGlubG9ja19sb2NrKA0KPiArICAgICAgICAgICAgICAgICZkYXRhLT5wcml2X3RpbWVy
W3RoaXNfbGNvcmVdLmxpc3RfbG9jayk7DQo+ICsgICAgICAgICAgICBzdGF0dXMuc3RhdGUgPSBS
VEVfVElNRVJfUEVORElORzsNCj4gKyAgICAgICAgICAgIF9fVElNRVJfU1RBVF9BREQoZGF0YS0+
cHJpdl90aW1lciwgcGVuZGluZywgMSk7DQo+ICsgICAgICAgICAgICBzdGF0dXMub3duZXIgPSAo
aW50MTZfdCl0aGlzX2xjb3JlOw0KPiArICAgICAgICAgICAgcnRlX3dtYigpOw0KPiArICAgICAg
ICAgICAgdGltLT5zdGF0dXMudTMyID0gc3RhdHVzLnUzMjsNCj4gKyAgICAgICAgICAgIF9fcnRl
X3RpbWVyX3Jlc2V0KHRpbSwgdGltLT5leHBpcmUgKyB0aW0tPnBlcmlvZCwNCj4gKyAgICAgICAg
ICAgICAgICB0aW0tPnBlcmlvZCwgdGhpc19sY29yZSwgdGltLT5mLCB0aW0tPmFyZywgMSwNCj4g
KyAgICAgICAgICAgICAgICBkYXRhKTsNCj4gKyAgICAgICAgICAgIHJ0ZV9zcGlubG9ja191bmxv
Y2soDQo+ICsgICAgICAgICAgICAgICAgJmRhdGEtPnByaXZfdGltZXJbdGhpc19sY29yZV0ubGlz
dF9sb2NrKTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIHByaXZwLT5ydW5uaW5nX3Rp
bSA9IE5VTEw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
LyogZHVtcCBzdGF0aXN0aWNzIGFib3V0IHRpbWVycyAqLw0KPiAtdm9pZCBydGVfdGltZXJfZHVt
cF9zdGF0cyhGSUxFICpmKQ0KPiArc3RhdGljIHZvaWQNCj4gK19fcnRlX3RpbWVyX2R1bXBfc3Rh
dHMoc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhIF9fcnRlX3VudXNlZCwgRklMRSAq
ZikNCj4gew0KPiAjaWZkZWYgUlRFX0xJQlJURV9USU1FUl9ERUJVRw0KPiAgICBzdHJ1Y3QgcnRl
X3RpbWVyX2RlYnVnX3N0YXRzIHN1bTsNCj4gICAgdW5zaWduZWQgbGNvcmVfaWQ7DQo+ICsgICAg
c3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIgPSB0aW1lcl9kYXRhLT5wcml2X3RpbWVyOw0K
PiANCj4gICAgbWVtc2V0KCZzdW0sIDAsIHNpemVvZihzdW0pKTsNCj4gICAgZm9yIChsY29yZV9p
ZCA9IDA7IGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRTsgbGNvcmVfaWQrKykgew0KPiBAQCAtNjE1
LDMgKzEwMjQsMzEgQEAgdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpmKQ0KPiAgICBm
cHJpbnRmKGYsICJObyB0aW1lciBzdGF0aXN0aWNzLCBSVEVfTElCUlRFX1RJTUVSX0RFQlVHIGlz
IGRpc2FibGVkXG4iKTsNCj4gI2VuZGlmDQo+IH0NCj4gKw0KPiArdm9pZA0KPiArcnRlX3RpbWVy
X2R1bXBfc3RhdHNfdjIwKEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgX19ydGVfdGltZXJfZHVtcF9z
dGF0cygmZGVmYXVsdF90aW1lcl9kYXRhLCBmKTsNCj4gK30NCj4gK1ZFUlNJT05fU1lNQk9MKHJ0
ZV90aW1lcl9kdW1wX3N0YXRzLCBfdjIwLCAyLjApOw0KPiArDQo+ICtpbnQNCj4gK3J0ZV90aW1l
cl9kdW1wX3N0YXRzX3YxOTA1KEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgcmV0dXJuIHJ0ZV90aW1l
cl9hbHRfZHVtcF9zdGF0cyhkZWZhdWx0X2RhdGFfaWQsIGYpOw0KPiArfQ0KPiArTUFQX1NUQVRJ
Q19TWU1CT0woaW50IHJ0ZV90aW1lcl9kdW1wX3N0YXRzKEZJTEUgKmYpLA0KPiArICAgICAgICAg
IHJ0ZV90aW1lcl9kdW1wX3N0YXRzX3YxOTA1KTsNCj4gK0JJTkRfREVGQVVMVF9TWU1CT0wocnRl
X3RpbWVyX2R1bXBfc3RhdHMsIF92MTkwNSwgMTkuMDUpOw0KPiArDQo+ICtpbnQgX19ydGVfZXhw
ZXJpbWVudGFsDQo+ICtydGVfdGltZXJfYWx0X2R1bXBfc3RhdHModWludDMyX3QgdGltZXJfZGF0
YV9pZCBfX3J0ZV91bnVzZWQsIEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1l
cl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1Jf
RVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCj4gKw0KPiArICAg
IF9fcnRlX3RpbWVyX2R1bXBfc3RhdHModGltZXJfZGF0YSwgZik7DQo+ICsNCj4gKyAgICByZXR1
cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmgg
Yi9saWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5oDQo+IGluZGV4IDliOTVjZDIuLmJlZTE2NzYg
MTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmgNCj4gKysrIGIvbGli
L2xpYnJ0ZV90aW1lci9ydGVfdGltZXIuaA0KPiBAQCAtMzksNiArMzksNyBAQA0KPiAjaW5jbHVk
ZSA8c3RkZGVmLmg+DQo+ICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ICNpbmNsdWRlIDxydGVf
Y29uZmlnLmg+DQo+ICsjaW5jbHVkZSA8cnRlX3NwaW5sb2NrLmg+DQo+IA0KPiAjaWZkZWYgX19j
cGx1c3BsdXMNCj4gZXh0ZXJuICJDIiB7DQo+IEBAIC0xMzIsMTIgKzEzMyw2OCBAQCBzdHJ1Y3Qg
cnRlX3RpbWVyDQo+ICNlbmRpZg0KPiANCj4gLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIg
RVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+
ICsgKg0KPiArICogQWxsb2NhdGUgYSB0aW1lciBkYXRhIGluc3RhbmNlIGluIHNoYXJlZCBtZW1v
cnkgdG8gdHJhY2sgYSBzZXQgb2YgcGVuZGluZw0KPiArICogdGltZXIgbGlzdHMuDQo+ICsgKg0K
PiArICogQHBhcmFtIGlkX3B0cg0KPiArICogICBQb2ludGVyIHRvIHZhcmlhYmxlIGludG8gd2hp
Y2ggdG8gd3JpdGUgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFsbG9jYXRlZA0KPiArICogICB0aW1l
ciBkYXRhIGluc3RhbmNlLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNj
ZXNzDQo+ICsgKiAgIC0gLUVOT1NQQzogbWF4aW11bSBudW1iZXIgb2YgdGltZXIgZGF0YSBpbnN0
YW5jZXMgYWxyZWFkeSBhbGxvY2F0ZWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4cGVyaW1lbnRh
bCBydGVfdGltZXJfZGF0YV9hbGxvYyh1aW50MzJfdCAqaWRfcHRyKTsNCj4gKw0KPiArLyoqDQo+
ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl
IHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogRGVhbGxvY2F0ZSBhIHRpbWVyIGRh
dGEgaW5zdGFuY2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGlkDQo+ICsgKiAgIElkZW50aWZpZXIg
b2YgdGhlIHRpbWVyIGRhdGEgaW5zdGFuY2UgdG8gZGVhbGxvY2F0ZS4NCj4gKyAqDQo+ICsgKiBA
cmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FSU5WQUw6IGludmFsaWQg
dGltZXIgZGF0YSBpbnN0YW5jZSBpZGVudGlmaWVyDQo+ICsgKi8NCj4gK2ludCBfX3J0ZV9leHBl
cmltZW50YWwgcnRlX3RpbWVyX2RhdGFfZGVhbGxvYyh1aW50MzJfdCBpZCk7DQo+ICsNCj4gKy8q
Kg0KPiAgKiBJbml0aWFsaXplIHRoZSB0aW1lciBsaWJyYXJ5Lg0KPiAgKg0KPiAgKiBJbml0aWFs
aXplcyBpbnRlcm5hbCB2YXJpYWJsZXMgKGxpc3QsIGxvY2tzIGFuZCBzbyBvbikgZm9yIHRoZSBS
VEUNCj4gICogdGltZXIgbGlicmFyeS4NCj4gICovDQo+IC12b2lkIHJ0ZV90aW1lcl9zdWJzeXN0
ZW1faW5pdCh2b2lkKTsNCj4gK3ZvaWQgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YyMCh2b2lk
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBJbml0aWFsaXplIHRoZSB0aW1lciBsaWJyYXJ5Lg0KPiAr
ICoNCj4gKyAqIEluaXRpYWxpemVzIGludGVybmFsIHZhcmlhYmxlcyAobGlzdCwgbG9ja3MgYW5k
IHNvIG9uKSBmb3IgdGhlIFJURQ0KPiArICogdGltZXIgbGlicmFyeS4NCj4gKyAqDQo+ICsgKiBA
cmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FRVhJU1Q6IFJldHVybmVk
IGluIHNlY29uZGFyeSBwcm9jZXNzIHdoZW4gcHJpbWFyeSBwcm9jZXNzIGhhcyBub3QNCj4gKyAq
ICAgICAgeWV0IGluaXRpYWxpemVkIHRoZSB0aW1lciBzdWJzeXN0ZW0NCj4gKyAqICAgLSAtRU5P
TUVNOiBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IG5lZWRlZCB0byBpbml0aWFsaXplIHRpbWVy
DQo+ICsgKiAgICAgIHN1YnN5c3RlbQ0KPiArICovDQo+ICtpbnQgcnRlX3RpbWVyX3N1YnN5c3Rl
bV9pbml0X3YxOTA1KHZvaWQpOw0KPiAraW50IHJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdCh2b2lk
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0
aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogRnJl
ZSB0aW1lciBzdWJzeXN0ZW0gcmVzb3VyY2VzLg0KPiArICovDQo+ICt2b2lkIF9fcnRlX2V4cGVy
aW1lbnRhbCBydGVfdGltZXJfc3Vic3lzdGVtX2ZpbmFsaXplKHZvaWQpOw0KPiANCj4gLyoqDQo+
ICAqIEluaXRpYWxpemUgYSB0aW1lciBoYW5kbGUuDQo+IEBAIC0xOTMsNiArMjUwLDEyIEBAIHZv
aWQgcnRlX3RpbWVyX2luaXQoc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gICogICAtIDA6IFN1
Y2Nlc3M7IHRoZSB0aW1lciBpcyBzY2hlZHVsZWQuDQo+ICAqICAgLSAoLTEpOiBUaW1lciBpcyBp
biB0aGUgUlVOTklORyBvciBDT05GSUcgc3RhdGUuDQo+ICAqLw0KPiAraW50IHJ0ZV90aW1lcl9y
ZXNldF92MjAoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNrcywNCj4gKyAgICAg
ICAgICAgIGVudW0gcnRlX3RpbWVyX3R5cGUgdHlwZSwgdW5zaWduZWQgaW50IHRpbV9sY29yZSwN
Cj4gKyAgICAgICAgICAgIHJ0ZV90aW1lcl9jYl90IGZjdCwgdm9pZCAqYXJnKTsNCj4gK2ludCBy
dGVfdGltZXJfcmVzZXRfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNr
cywNCj4gKyAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLCB1bnNpZ25lZCBp
bnQgdGltX2xjb3JlLA0KPiArICAgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQg
KmFyZyk7DQo+IGludCBydGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50
NjRfdCB0aWNrcywNCj4gICAgICAgICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2ln
bmVkIHRpbV9sY29yZSwNCj4gICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFy
Zyk7DQo+IEBAIC0yNTIsOSArMzE1LDEwIEBAIHJ0ZV90aW1lcl9yZXNldF9zeW5jKHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICAqICAgLSAwOiBTdWNjZXNzOyB0aGUg
dGltZXIgaXMgc3RvcHBlZC4NCj4gICogICAtICgtMSk6IFRoZSB0aW1lciBpcyBpbiB0aGUgUlVO
TklORyBvciBDT05GSUcgc3RhdGUuDQo+ICAqLw0KPiAraW50IHJ0ZV90aW1lcl9zdG9wX3YyMChz
dHJ1Y3QgcnRlX3RpbWVyICp0aW0pOw0KPiAraW50IHJ0ZV90aW1lcl9zdG9wX3YxOTA1KHN0cnVj
dCBydGVfdGltZXIgKnRpbSk7DQo+IGludCBydGVfdGltZXJfc3RvcChzdHJ1Y3QgcnRlX3RpbWVy
ICp0aW0pOw0KPiANCj4gLQ0KPiAvKioNCj4gICogTG9vcCB1bnRpbCBydGVfdGltZXJfc3RvcCgp
IHN1Y2NlZWRzLg0KPiAgKg0KPiBAQCAtMjkyLDcgKzM1NiwyNSBAQCBpbnQgcnRlX3RpbWVyX3Bl
bmRpbmcoc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gICogZnVuY3Rpb24uIEhvd2V2ZXIsIHRo
ZSBtb3JlIG9mdGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBtb3JlDQo+ICAqIENQVSBy
ZXNvdXJjZXMgaXQgd2lsbCB1c2UuDQo+ICAqLw0KPiAtdm9pZCBydGVfdGltZXJfbWFuYWdlKHZv
aWQpOw0KPiArdm9pZCBydGVfdGltZXJfbWFuYWdlX3YyMCh2b2lkKTsNCj4gKw0KPiArLyoqDQo+
ICsgKiBNYW5hZ2UgdGhlIHRpbWVyIGxpc3QgYW5kIGV4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb25z
Lg0KPiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5
IGZyb20gRUFMIGxjb3Jlcw0KPiArICogbWFpbl9sb29wKCkuIEl0IGJyb3dzZXMgdGhlIGxpc3Qg
b2YgcGVuZGluZyB0aW1lcnMgYW5kIHJ1bnMgYWxsDQo+ICsgKiB0aW1lcnMgdGhhdCBhcmUgZXhw
aXJlZC4NCj4gKyAqDQo+ICsgKiBUaGUgcHJlY2lzaW9uIG9mIHRoZSB0aW1lciBkZXBlbmRzIG9u
IHRoZSBjYWxsIGZyZXF1ZW5jeSBvZiB0aGlzDQo+ICsgKiBmdW5jdGlvbi4gSG93ZXZlciwgdGhl
IG1vcmUgb2Z0ZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIG1vcmUNCj4gKyAqIENQVSBy
ZXNvdXJjZXMgaXQgd2lsbCB1c2UuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6
IFN1Y2Nlc3MNCj4gKyAqICAgLSAtRUlOVkFMOiB0aW1lciBzdWJzeXN0ZW0gbm90IHlldCBpbml0
aWFsaXplZA0KPiArICovDQo+ICtpbnQgcnRlX3RpbWVyX21hbmFnZV92MTkwNSh2b2lkKTsNCj4g
K2ludCBydGVfdGltZXJfbWFuYWdlKHZvaWQpOw0KPiANCj4gLyoqDQo+ICAqIER1bXAgc3RhdGlz
dGljcyBhYm91dCB0aW1lcnMuDQo+IEBAIC0zMDAsNyArMzgyLDE0MyBAQCB2b2lkIHJ0ZV90aW1l
cl9tYW5hZ2Uodm9pZCk7DQo+ICAqIEBwYXJhbSBmDQo+ICAqICAgQSBwb2ludGVyIHRvIGEgZmls
ZSBmb3Igb3V0cHV0DQo+ICAqLw0KPiAtdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpm
KTsNCj4gK3ZvaWQgcnRlX3RpbWVyX2R1bXBfc3RhdHNfdjIwKEZJTEUgKmYpOw0KPiArDQo+ICsv
KioNCj4gKyAqIER1bXAgc3RhdGlzdGljcyBhYm91dCB0aW1lcnMuDQo+ICsgKg0KPiArICogQHBh
cmFtIGYNCj4gKyAqICAgQSBwb2ludGVyIHRvIGEgZmlsZSBmb3Igb3V0cHV0DQo+ICsgKiBAcmV0
dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FSU5WQUw6IHRpbWVyIHN1YnN5
c3RlbSBub3QgeWV0IGluaXRpYWxpemVkDQo+ICsgKi8NCj4gK2ludCBydGVfdGltZXJfZHVtcF9z
dGF0c192MTkwNShGSUxFICpmKTsNCj4gK2ludCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpm
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0
aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBydGVfdGltZXJfcmVzZXQoKSwgZXhjZXB0IHRoYXQg
aXQgYWxsb3dzIGENCj4gKyAqIGNhbGxlciB0byBzcGVjaWZ5IHRoZSBydGVfdGltZXJfZGF0YSBp
bnN0YW5jZSBjb250YWluaW5nIHRoZSBsaXN0IHRvIHdoaWNoDQo+ICsgKiB0aGUgdGltZXIgc2hv
dWxkIGJlIGFkZGVkLg0KPiArICoNCj4gKyAqIEBzZWUgcnRlX3RpbWVyX3Jlc2V0KCkNCj4gKyAq
DQo+ICsgKiBAcGFyYW0gdGltZXJfZGF0YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGlj
YXRpbmcgd2hpY2ggaW5zdGFuY2Ugb2YgdGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4g
KyAqICAgdGhpcyBvcGVyYXRpb24uDQo+ICsgKiBAcGFyYW0gdGltDQo+ICsgKiAgIFRoZSB0aW1l
ciBoYW5kbGUuDQo+ICsgKiBAcGFyYW0gdGlja3MNCj4gKyAqICAgVGhlIG51bWJlciBvZiBjeWNs
ZXMgKHNlZSBydGVfZ2V0X2hwZXRfaHooKSkgYmVmb3JlIHRoZSBjYWxsYmFjaw0KPiArICogICBm
dW5jdGlvbiBpcyBjYWxsZWQuDQo+ICsgKiBAcGFyYW0gdHlwZQ0KPiArICogICBUaGUgdHlwZSBj
YW4gYmUgZWl0aGVyOg0KPiArICogICAtIFBFUklPRElDQUw6IFRoZSB0aW1lciBpcyBhdXRvbWF0
aWNhbGx5IHJlbG9hZGVkIGFmdGVyIGV4ZWN1dGlvbg0KPiArICogICAgIChyZXR1cm5zIHRvIHRo
ZSBQRU5ESU5HIHN0YXRlKQ0KPiArICogICAtIFNJTkdMRTogVGhlIHRpbWVyIGlzIG9uZS1zaG90
LCB0aGF0IGlzLCB0aGUgdGltZXIgZ29lcyB0byBhDQo+ICsgKiAgICAgU1RPUFBFRCBzdGF0ZSBh
ZnRlciBleGVjdXRpb24uDQo+ICsgKiBAcGFyYW0gdGltX2xjb3JlDQo+ICsgKiAgIFRoZSBJRCBv
ZiB0aGUgbGNvcmUgd2hlcmUgdGhlIHRpbWVyIGNhbGxiYWNrIGZ1bmN0aW9uIGhhcyB0byBiZQ0K
PiArICogICBleGVjdXRlZC4gSWYgdGltX2xjb3JlIGlzIExDT1JFX0lEX0FOWSwgdGhlIHRpbWVy
IGxpYnJhcnkgd2lsbA0KPiArICogICBsYXVuY2ggaXQgb24gYSBkaWZmZXJlbnQgY29yZSBmb3Ig
ZWFjaCBjYWxsIChyb3VuZC1yb2JpbikuDQo+ICsgKiBAcGFyYW0gZmN0DQo+ICsgKiAgIFRoZSBj
YWxsYmFjayBmdW5jdGlvbiBvZiB0aGUgdGltZXIuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBOVUxM
IGlmIChhbmQNCj4gKyAqICAgb25seSBpZikgcnRlX3RpbWVyX2FsdF9tYW5hZ2UoKSB3aWxsIGJl
IHVzZWQgdG8gbWFuYWdlIHRoaXMgdGltZXIuDQo+ICsgKiBAcGFyYW0gYXJnDQo+ICsgKiAgIFRo
ZSB1c2VyIGFyZ3VtZW50IG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4NCj4gKyAqIEByZXR1cm4N
Cj4gKyAqICAgLSAwOiBTdWNjZXNzOyB0aGUgdGltZXIgaXMgc2NoZWR1bGVkLg0KPiArICogICAt
ICgtMSk6IFRpbWVyIGlzIGluIHRoZSBSVU5OSU5HIG9yIENPTkZJRyBzdGF0ZS4NCj4gKyAqICAg
LSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFfaWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4
cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2FsdF9yZXNldCh1aW50MzJfdCB0aW1lcl9kYXRhX2lk
LCBzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sDQo+ICsgICAgICAgICAgICB1aW50NjRfdCB0aWNrcywg
ZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KPiArICAgICAgICAgICAgdW5zaWduZWQgaW50IHRp
bV9sY29yZSwgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpOw0KPiArDQo+ICsvKioNCj4g
KyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ug
d2l0aG91dCBwcmlvciBub3RpY2UNCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBz
YW1lIGFzIHJ0ZV90aW1lcl9zdG9wKCksIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBhDQo+ICsgKiBj
YWxsZXIgdG8gc3BlY2lmeSB0aGUgcnRlX3RpbWVyX2RhdGEgaW5zdGFuY2UgY29udGFpbmluZyB0
aGUgbGlzdCBmcm9tIHdoaWNoDQo+ICsgKiB0aGlzIHRpbWVyIHNob3VsZCBiZSByZW1vdmVkLg0K
PiArICoNCj4gKyAqIEBzZWUgcnRlX3RpbWVyX3N0b3AoKQ0KPiArICoNCj4gKyAqIEBwYXJhbSB0
aW1lcl9kYXRhX2lkDQo+ICsgKiAgIEFuIGlkZW50aWZpZXIgaW5kaWNhdGluZyB3aGljaCBpbnN0
YW5jZSBvZiB0aW1lciBkYXRhIHNob3VsZCBiZSB1c2VkIGZvcg0KPiArICogICB0aGlzIG9wZXJh
dGlvbi4NCj4gKyAqIEBwYXJhbSB0aW0NCj4gKyAqICAgVGhlIHRpbWVyIGhhbmRsZS4NCj4gKyAq
IEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNzOyB0aGUgdGltZXIgaXMgc3RvcHBlZC4NCj4g
KyAqICAgLSAoLTEpOiBUaGUgdGltZXIgaXMgaW4gdGhlIFJVTk5JTkcgb3IgQ09ORklHIHN0YXRl
Lg0KPiArICogICAtIC1FSU5WQUw6IGludmFsaWQgdGltZXJfZGF0YV9pZA0KPiArICovDQo+ICtp
bnQgX19ydGVfZXhwZXJpbWVudGFsDQo+ICtydGVfdGltZXJfYWx0X3N0b3AodWludDMyX3QgdGlt
ZXJfZGF0YV9pZCwgc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBD
YWxsYmFjayBmdW5jdGlvbiB0eXBlIGZvciBydGVfdGltZXJfYWx0X21hbmFnZSgpLg0KPiArICov
DQo+ICt0eXBlZGVmIHZvaWQgKCpydGVfdGltZXJfYWx0X21hbmFnZV9jYl90KSh2b2lkICopOw0K
PiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMg
QVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4gKyAqDQo+ICsgKiBNYW5hZ2Ug
YSBzZXQgb2YgdGltZXIgbGlzdHMgYW5kIGV4ZWN1dGUgdGhlIHNwZWNpZmllZCBjYWxsYmFjayBm
dW5jdGlvbiBmb3INCj4gKyAqIGFsbCBleHBpcmVkIHRpbWVycy4gVGhpcyBmdW5jdGlvbiBpcyBz
aW1pbGFyIHRvIHJ0ZV90aW1lcl9tYW5hZ2UoKSwgZXhjZXB0DQo+ICsgKiB0aGF0IGl0IGFsbG93
cyBhIGNhbGxlciB0byBzcGVjaWZ5IHRoZSB0aW1lcl9kYXRhIGluc3RhbmNlIHRoYXQgc2hvdWxk
DQo+ICsgKiBiZSBvcGVyYXRlZCBvbiwgYXMgd2VsbCBhcyBhIHNldCBvZiBsY29yZSBJRHMgaWRl
bnRpZnlpbmcgd2hpY2ggdGltZXIgbGlzdHMNCj4gKyAqIHNob3VsZCBiZSBwcm9jZXNzZWQuICBD
YWxsYmFjayBmdW5jdGlvbnMgb2YgaW5kaXZpZHVhbCB0aW1lcnMgYXJlIGlnbm9yZWQuDQo+ICsg
Kg0KPiArICogQHNlZSBydGVfdGltZXJfbWFuYWdlKCkNCj4gKyAqDQo+ICsgKiBAcGFyYW0gdGlt
ZXJfZGF0YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGljYXRpbmcgd2hpY2ggaW5zdGFu
Y2Ugb2YgdGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4gKyAqICAgdGhpcyBvcGVyYXRp
b24uDQo+ICsgKiBAcGFyYW0gcG9sbF9sY29yZXMNCj4gKyAqICAgQW4gYXJyYXkgb2YgbGNvcmUg
aWRzIGlkZW50aWZ5aW5nIHRoZSB0aW1lciBsaXN0cyB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQu
DQo+ICsgKiAgIE5VTEwgaXMgYWxsb3dlZCAtIGlmIE5VTEwsIHRoZSB0aW1lciBsaXN0IGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGxjb3JlDQo+ICsgKiAgIGNhbGxpbmcgdGhpcyByb3V0aW5lIGlzIHBy
b2Nlc3NlZCAoc2FtZSBhcyBydGVfdGltZXJfbWFuYWdlKCkpLg0KPiArICogQHBhcmFtIG5fcG9s
bF9sY29yZXMNCj4gKyAqICAgVGhlIHNpemUgb2YgdGhlIHBvbGxfbGNvcmVzIGFycmF5LiBJZiAn
cG9sbF9sY29yZXMnIGlzIE5VTEwsIHRoaXMgcGFyYW1ldGVyDQo+ICsgKiAgIGlzIGlnbm9yZWQu
DQo+ICsgKiBAcGFyYW0gZg0KPiArICogICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggc2hv
dWxkIGJlIGNhbGxlZCBmb3IgYWxsIGV4cGlyZWQgdGltZXJzLg0KPiArICogQHJldHVybg0KPiAr
ICogICAtIDA6IHN1Y2Nlc3MNCj4gKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFf
aWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2FsdF9t
YW5hZ2UodWludDMyX3QgdGltZXJfZGF0YV9pZCwgdW5zaWduZWQgaW50ICpwb2xsX2xjb3JlcywN
Cj4gKyAgICAgICAgICAgICBpbnQgbl9wb2xsX2xjb3JlcywgcnRlX3RpbWVyX2FsdF9tYW5hZ2Vf
Y2JfdCBmKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVO
VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiAr
ICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBydGVfdGltZXJfZHVtcF9zdGF0cygpLCBl
eGNlcHQgdGhhdCBpdCBhbGxvd3MNCj4gKyAqIHRoZSBjYWxsZXIgdG8gc3BlY2lmeSB0aGUgcnRl
X3RpbWVyX2RhdGEgaW5zdGFuY2UgdGhhdCBzaG91bGQgYmUgdXNlZC4NCj4gKyAqDQo+ICsgKiBA
c2VlIHJ0ZV90aW1lcl9kdW1wX3N0YXRzKCkNCj4gKyAqDQo+ICsgKiBAcGFyYW0gdGltZXJfZGF0
YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGljYXRpbmcgd2hpY2ggaW5zdGFuY2Ugb2Yg
dGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4gKyAqICAgdGhpcyBvcGVyYXRpb24uDQo+
ICsgKiBAcGFyYW0gZg0KPiArICogICBBIHBvaW50ZXIgdG8gYSBmaWxlIGZvciBvdXRwdXQNCj4g
KyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBzdWNjZXNzDQo+ICsgKiAgIC0gLUVJTlZBTDogaW52
YWxpZCB0aW1lcl9kYXRhX2lkDQo+ICsgKi8NCj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4g
K3J0ZV90aW1lcl9hbHRfZHVtcF9zdGF0cyh1aW50MzJfdCB0aW1lcl9kYXRhX2lkLCBGSUxFICpm
KTsNCj4gDQo+ICNpZmRlZiBfX2NwbHVzcGx1cw0KPiB9DQo+IGRpZmYgLS1naXQgYS9saWIvbGli
cnRlX3RpbWVyL3J0ZV90aW1lcl92ZXJzaW9uLm1hcCBiL2xpYi9saWJydGVfdGltZXIvcnRlX3Rp
bWVyX3ZlcnNpb24ubWFwDQo+IGluZGV4IDliMmU0YjguLmMyZTU4MzYgMTAwNjQ0DQo+IC0tLSBh
L2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9saWJy
dGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24ubWFwDQo+IEBAIC0xMywzICsxMywyNSBAQCBEUERL
XzIuMCB7DQo+IA0KPiAgICBsb2NhbDogKjsNCj4gfTsNCj4gKw0KPiArRFBES18xOS4wNSB7DQo+
ICsgICAgZ2xvYmFsOg0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2R1bXBfc3RhdHM7DQo+ICsgICAg
cnRlX3RpbWVyX21hbmFnZTsNCj4gKyAgICBydGVfdGltZXJfcmVzZXQ7DQo+ICsgICAgcnRlX3Rp
bWVyX3N0b3A7DQo+ICsgICAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0Ow0KPiArfSBEUERLXzIu
MDsNCj4gKw0KPiArRVhQRVJJTUVOVEFMIHsNCj4gKyAgICBnbG9iYWw6DQo+ICsNCj4gKyAgICBy
dGVfdGltZXJfYWx0X2R1bXBfc3RhdHM7DQo+ICsgICAgcnRlX3RpbWVyX2FsdF9tYW5hZ2U7DQo+
ICsgICAgcnRlX3RpbWVyX2FsdF9yZXNldDsNCj4gKyAgICBydGVfdGltZXJfYWx0X3N0b3A7DQo+
ICsgICAgcnRlX3RpbWVyX2RhdGFfYWxsb2M7DQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfZGVhbGxv
YzsNCj4gKyAgICBydGVfdGltZXJfc3Vic3lzdGVtX2ZpbmFsaXplOw0KPiArfTsNCj4gLS0gDQo+
IDIuNi40DQo+IA0KPiANCg==

From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by dpdk.space (Postfix) with ESMTP id DCB7BA00E6
	for <public@inbox.dpdk.org>; Thu, 21 Mar 2019 02:02:04 +0100 (CET)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 1491E1B3A3;
	Thu, 21 Mar 2019 02:02:04 +0100 (CET)
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by dpdk.org (Postfix) with ESMTP id 6606C1B39F
 for <dev@dpdk.org>; Thu, 21 Mar 2019 02:02:01 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga008.jf.intel.com ([10.7.209.65])
 by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 20 Mar 2019 18:02:01 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.60,250,1549958400"; d="scan'208";a="127242089"
Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201])
 by orsmga008.jf.intel.com with ESMTP; 20 Mar 2019 18:02:00 -0700
Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by
 FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Wed, 20 Mar 2019 18:02:00 -0700
Received: from fmsmsx115.amr.corp.intel.com ([169.254.4.62]) by
 fmsmsx156.amr.corp.intel.com ([169.254.13.6]) with mapi id 14.03.0415.000;
 Wed, 20 Mar 2019 18:02:00 -0700
From: "Carrillo, Erik G" <erik.g.carrillo@intel.com>
To: "Sanford, Robert" <rsanford@akamai.com>
CC: "thomas@monjalon.net" <thomas@monjalon.net>, "dev@dpdk.org"
 <dev@dpdk.org>, "nhorman@tuxdriver.com" <nhorman@tuxdriver.com>
Thread-Topic: [PATCH v4 1/2] timer: allow timer management in shared memory
Thread-Index: AQHU3yQ9aN4Jx/BLnUGtubMFuhQZvaYVRRfS
Date: Thu, 21 Mar 2019 01:01:59 +0000
Message-ID: <D926C980-58E3-4476-9FA9-D9180C6863A2@intel.com>
References: <1544739996-26011-1-git-send-email-erik.g.carrillo@intel.com>
 <1551892822-23967-1-git-send-email-erik.g.carrillo@intel.com>
 <1551892822-23967-2-git-send-email-erik.g.carrillo@intel.com>,
 <40792313-7864-470F-B188-9AA1A0F072B8@akamai.com>
In-Reply-To: <40792313-7864-470F-B188-9AA1A0F072B8@akamai.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH v4 1/2] timer: allow timer management in
	shared memory
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>
Message-ID: <20190321010159.ZO26IHSCNoIIVK693bEvvkUoqx17Z-TY2vrqABYDQa0@z>

SGkgUm9iZXJ0LA0KDQpUaGFua3MgZm9yIHRoZSByZXZpZXcgYW5kIHN1Z2dlc3Rpb25zLiAgSeKA
mW0gb3V0IG9mIHRoZSBvZmZpY2Ugb24gYm9uZGluZyBsZWF2ZSBmb3IgdGhlIG5leHQgZmV3IHdl
ZWtzLCBidXQgSeKAmWxsIHVwZGF0ZSB0aGUgcGF0Y2ggdG8gYWRkcmVzcyB5b3VyIHBvaW50cyBi
ZWxvdyB3aGVuIEkgcmV0dXJuLg0KDQpUaGFua3MsDQpFcmlrDQoNCj4gT24gTWFyIDIwLCAyMDE5
LCBhdCA4OjUzIEFNLCBTYW5mb3JkLCBSb2JlcnQgPHJzYW5mb3JkQGFrYW1haS5jb20+IHdyb3Rl
Og0KPiANCj4gSGkgRXJpaywNCj4gDQo+IEkgaGF2ZSBhIGZldyBxdWVzdGlvbnMgYW5kIGNvbW1l
bnRzIG9uIHRoaXMgcGF0Y2ggc2VyaWVzLg0KPiANCj4gMS4gRG9uJ3QgeW91IHRoaW5rIHdlIG5l
ZWQgbmV3IHRlc3RzIChpbiB0ZXN0L3Rlc3QvKSB0byB2ZXJpZnkgdGhlIHNlY29uZGFyeS1wcm9j
ZXNzIEFQSXM/DQo+IDIuIEkgc3VnZ2VzdCB3ZSBkZWZpbmUgZGVmYXVsdF9kYXRhX2lkIGFzIGNv
bnN0LCBhbmQgZXhwbGljaXRseSBzZXQgaXQgdG8gMC4NCj4gMy4gVGhlIG91dGVyIGZvci1sb29w
IGluIHJ0ZV90aW1lcl9hbHRfbWFuYWdlKCkgdG91Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiBwb2xs
X2xjb3Jlc1tdLiBJIHN1Z2dlc3QgYSBjaGFuZ2UgbGlrZSB0aGlzOg0KPiANCj4gLSAgICAgICBm
b3IgKGkgPSAwLCBwb2xsX2xjb3JlID0gcG9sbF9sY29yZXNbaV07IGkgPCBuYl9wb2xsX2xjb3Jl
czsNCj4gLSAgICAgICAgICAgIHBvbGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1srK2ldKSB7DQo+ICsg
ICAgICAgZm9yIChpID0gMDsgSSA8IG5iX3BvbGxfbGNvcmVzOyBpKyspIHsNCj4gKyAgICAgICAg
ICAgIHBvbGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1tpXTsNCj4gDQo+IDQuIFNhbWUgcHJvYmxlbSAo
YXMgIzMpIGluIHRoZSBmb3ItbG9vcCBpbiBydGVfdGltZXJfc3RvcF9hbGwoKSwgaW4gcGF0Y2gg
djQgMi8yLg0KPiA1LiBUaGVyZSBzZWVtcyB0byBiZSBubyBkaWZmZXJlbmNlIGJldHdlZW4gInR5
cGVkZWYgdm9pZCAoKnJ0ZV90aW1lcl9jYl90KShzdHJ1Y3QgcnRlX3RpbWVyICosIHZvaWQgKiki
IGFuZCAidHlwZWRlZiB2b2lkICgqcnRlX3RpbWVyX3N0b3BfYWxsX2NiX3QpKHN0cnVjdCBydGVf
dGltZXIgKnRpbSwgdm9pZCAqYXJnKSIsIHdoeSBhZGQgcnRlX3RpbWVyX3N0b3BfYWxsX2NiX3Q/
DQo+IDYuIENhbiB5b3UgcHJvdmlkZSBhIHVzZSBjYXNlIG9yIGNvZGUgc25pcHBldCB0aGF0IHNo
b3dzIGhvdyB3ZSB3aWxsIHVzZSBydGVfdGltZXJfYWx0X21hbmFnZSgpPw0KPiA3LiBXaHkgbm90
IG1ha2UgdGhlIGFyZ3VtZW50IHRvIHJ0ZV90aW1lcl9hbHRfbWFuYWdlX2NiX3QgYSAic3RydWN0
IHJ0ZV90aW1lciAqIiwgaW5zdGVhZCBvZiBhICJ2b2lkICoiLCBzaW5jZSB3ZSBwYXNzIGEgcG9p
bnRlci10by10aW1lciB3aGVuIHdlIGludm9rZSB0aGUgZnVuY3Rpb24/DQo+IA0KPiAtLQ0KPiBS
ZWdhcmRzLA0KPiBSb2JlcnQgU2FuZm9yZA0KPiANCj4gDQo+IO+7v09uIDMvNi8xOSwgMTI6MjAg
UE0sICJFcmlrIEdhYnJpZWwgQ2FycmlsbG8iIDxlcmlrLmcuY2FycmlsbG9AaW50ZWwuY29tPiB3
cm90ZToNCj4gDQo+IEN1cnJlbnRseSwgdGhlIHRpbWVyIGxpYnJhcnkgdXNlcyBhIHBlci1wcm9j
ZXNzIHRhYmxlIG9mIHN0cnVjdHVyZXMgdG8NCj4gbWFuYWdlIHNraXBsaXN0cyBvZiB0aW1lcnMg
cHJlc3VtYWJseSBiZWNhdXNlIHRpbWVycyBjb250YWluIGFyYml0cmFyeQ0KPiBmdW5jdGlvbiBw
b2ludGVycyB3aG9zZSB2YWx1ZSBtYXkgbm90IHJlc29sdmUgcHJvcGVybHkgaW4gb3RoZXINCj4g
cHJvY2Vzc2VzLg0KPiANCj4gSG93ZXZlciwgaWYgdGhlIHNhbWUgY2FsbGJhY2sgaXMgdXNlZCBo
YW5kbGUgYWxsIHRpbWVycywgYW5kIHRoYXQNCj4gY2FsbGJhY2sgaXMgb25seSBpbnZva2VkIGlu
IG9uZSBwcm9jZXNzLCB0aGVuIGl0IHdvdWQgYmUgc2FmZSB0byBhbGxvdw0KPiB0aGUgZGF0YSBz
dHJ1Y3R1cmVzIHRvIGJlIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVtb3J5LCBhbmQgdG8gYWxsb3cN
Cj4gc2Vjb25kYXJ5IHByb2Nlc3NlcyB0byBtb2RpZnkgdGhlIHRpbWVyIGxpc3RzLiAgVGhpcyB3
b3VsZCBsZXQgdGltZXJzIGJlDQo+IHVzZWQgaW4gbW9yZSBtdWx0aS1wcm9jZXNzIHNjZW5hcmlv
cy4NCj4gDQo+IFRoZSBsaWJyYXJ5J3MgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgd3JhcHBlZCB3aXRo
IGEgc3RydWN0LCBhbmQgYW4gYXJyYXkNCj4gb2YgdGhlc2Ugc3RydWN0dXJlcyBpcyBjcmVhdGVk
IGluIHNoYXJlZCBtZW1vcnkuICBUaGUgb3JpZ2luYWwgQVBJcw0KPiBhcmUgdXBkYXRlZCB0byBy
ZWZlcmVuY2UgdGhlIHplcm90aCBlbnRyeSBpbiB0aGUgYXJyYXkuIFRoaXMgbWFpbnRhaW5zDQo+
IHRoZSBvcmlnaW5hbCBiZWhhdmlvciBmb3IgYm90aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgcHJv
Y2Vzc2VzIHNpbmNlDQo+IHRoZSBzZXQgaW50ZXJzZWN0aW9uIG9mIHRoZWlyIGNvcmVtYXNrcyBz
aG91bGQgYmUgZW1wdHkgWzFdLiAgTmV3IEFQSXMNCj4gYXJlIGludHJvZHVjZWQgdG8gZW5hYmxl
IHRoZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiBvZiBvdGhlciBlbnRyaWVzDQo+IGluIHRoZSBh
cnJheS4NCj4gDQo+IE5ldyB2YXJpYW50cyBvZiB0aGUgQVBJcyB1c2VkIHRvIHN0YXJ0IGFuZCBz
dG9wIHRpbWVycyBhcmUgaW50cm9kdWNlZDsNCj4gdGhleSBhbGxvdyBhIGNhbGxlciB0byBzcGVj
aWZ5IHdoaWNoIGFycmF5IGVudHJ5IHNob3VsZCBiZSB1c2VkIHRvDQo+IGxvY2F0ZSB0aGUgdGlt
ZXIgbGlzdCB0byBpbnNlcnQgaW50byBvciBkZWxldGUgZnJvbS4NCj4gDQo+IEZpbmFsbHksIGEg
bmV3IHZhcmlhbnQgb2YgcnRlX3RpbWVyX21hbmFnZSgpIGlzIGludHJvZHVjZWQsIHdoaWNoDQo+
IGFsbG93cyBhIGNhbGxlciB0byBzcGVjaWZ5IHdoaWNoIGFycmF5IGVudHJ5IHNob3VsZCBiZSB1
c2VkIHRvIGxvY2F0ZQ0KPiB0aGUgdGltZXIgbGlzdHMgdG8gcHJvY2VzczsgaXQgY2FuIGFsc28g
cHJvY2VzcyBtdWx0aXBsZSB0aW1lciBsaXN0cyBwZXINCj4gaW52b2NhdGlvbi4NCj4gDQo+IFsx
XSBodHRwczovL2RvYy5kcGRrLm9yZy9ndWlkZXMvcHJvZ19ndWlkZS9tdWx0aV9wcm9jX3N1cHBv
cnQuaHRtbCNtdWx0aS1wcm9jZXNzLWxpbWl0YXRpb25zDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBF
cmlrIEdhYnJpZWwgQ2FycmlsbG8gPGVyaWsuZy5jYXJyaWxsb0BpbnRlbC5jb20+DQo+IC0tLQ0K
PiBsaWIvbGlicnRlX3RpbWVyL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArDQo+IGxpYi9s
aWJydGVfdGltZXIvcnRlX3RpbWVyLmMgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0tLQ0KPiBsaWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5oICAgICAgICAg
ICB8IDIyNiArKysrKysrKysrKysrLQ0KPiBsaWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lcl92ZXJz
aW9uLm1hcCB8ICAyMiArKw0KPiA0IGZpbGVzIGNoYW5nZWQsIDcyMyBpbnNlcnRpb25zKCspLCA0
NSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3RpbWVyL01ha2Vm
aWxlIGIvbGliL2xpYnJ0ZV90aW1lci9NYWtlZmlsZQ0KPiBpbmRleCA0ZWJkNTI4Li44ZWM2M2Y0
IDEwMDY0NA0KPiAtLS0gYS9saWIvbGlicnRlX3RpbWVyL01ha2VmaWxlDQo+ICsrKyBiL2xpYi9s
aWJydGVfdGltZXIvTWFrZWZpbGUNCj4gQEAgLTYsNiArNiw3IEBAIGluY2x1ZGUgJChSVEVfU0RL
KS9tay9ydGUudmFycy5taw0KPiAjIGxpYnJhcnkgbmFtZQ0KPiBMSUIgPSBsaWJydGVfdGltZXIu
YQ0KPiANCj4gK0NGTEFHUyArPSAtREFMTE9XX0VYUEVSSU1FTlRBTF9BUEkNCj4gQ0ZMQUdTICs9
ICQoV0VSUk9SX0ZMQUdTKSAtSSQoU1JDRElSKSAtTzMNCj4gTERMSUJTICs9IC1scnRlX2VhbA0K
PiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmMgYi9saWIvbGli
cnRlX3RpbWVyL3J0ZV90aW1lci5jDQo+IGluZGV4IDMwYzdiMGEuLjJiZDQ5ZDAgMTAwNjQ0DQo+
IC0tLSBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV90
aW1lci9ydGVfdGltZXIuYw0KPiBAQCAtNSw2ICs1LDcgQEANCj4gI2luY2x1ZGUgPHN0cmluZy5o
Pg0KPiAjaW5jbHVkZSA8c3RkaW8uaD4NCj4gI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1
ZGUgPHN0ZGJvb2wuaD4NCj4gI2luY2x1ZGUgPGludHR5cGVzLmg+DQo+ICNpbmNsdWRlIDxhc3Nl
cnQuaD4NCj4gI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPg0KPiBAQCAtMjEsMTEgKzIyLDE1IEBADQo+
ICNpbmNsdWRlIDxydGVfc3BpbmxvY2suaD4NCj4gI2luY2x1ZGUgPHJ0ZV9yYW5kb20uaD4NCj4g
I2luY2x1ZGUgPHJ0ZV9wYXVzZS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tZW16b25lLmg+DQo+ICsj
aW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9jb21wYXQuaD4NCj4gDQo+
ICNpbmNsdWRlICJydGVfdGltZXIuaCINCj4gDQo+IC1MSVNUX0hFQUQocnRlX3RpbWVyX2xpc3Qs
IHJ0ZV90aW1lcik7DQo+IC0NCj4gKy8qKg0KPiArICogUGVyLWxjb3JlIGluZm8gZm9yIHRpbWVy
cy4NCj4gKyAqLw0KPiBzdHJ1Y3QgcHJpdl90aW1lciB7DQo+ICAgIHN0cnVjdCBydGVfdGltZXIg
cGVuZGluZ19oZWFkOyAgLyoqPCBkdW1teSB0aW1lciBpbnN0YW5jZSB0byBoZWFkIHVwIGxpc3Qg
Ki8NCj4gICAgcnRlX3NwaW5sb2NrX3QgbGlzdF9sb2NrOyAgICAgICAvKio8IGxvY2sgdG8gcHJv
dGVjdCBsaXN0IGFjY2VzcyAqLw0KPiBAQCAtNDgsMjUgKzUzLDg0IEBAIHN0cnVjdCBwcml2X3Rp
bWVyIHsNCj4gI2VuZGlmDQo+IH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gDQo+IC0vKiogcGVy
LWxjb3JlIHByaXZhdGUgaW5mbyBmb3IgdGltZXJzICovDQo+IC1zdGF0aWMgc3RydWN0IHByaXZf
dGltZXIgcHJpdl90aW1lcltSVEVfTUFYX0xDT1JFXTsNCj4gKyNkZWZpbmUgRkxfQUxMT0NBVEVE
ICAgICgxIDw8IDApDQo+ICtzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgew0KPiArICAgIHN0cnVjdCBw
cml2X3RpbWVyIHByaXZfdGltZXJbUlRFX01BWF9MQ09SRV07DQo+ICsgICAgdWludDhfdCBpbnRl
cm5hbF9mbGFnczsNCj4gK307DQo+ICsNCj4gKyNkZWZpbmUgUlRFX01BWF9EQVRBX0VMUyA2NA0K
PiArc3RhdGljIHN0cnVjdCBydGVfdGltZXJfZGF0YSAqcnRlX3RpbWVyX2RhdGFfYXJyOw0KPiAr
c3RhdGljIHVpbnQzMl90IGRlZmF1bHRfZGF0YV9pZDsNCj4gK3N0YXRpYyB1aW50MzJfdCBydGVf
dGltZXJfc3Vic3lzdGVtX2luaXRpYWxpemVkOw0KPiArDQo+ICsvKiBGb3IgbWFpbnRhaW5pbmcg
b2xkZXIgaW50ZXJmYWNlcyBmb3IgYSBwZXJpb2QgKi8NCj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3Rp
bWVyX2RhdGEgZGVmYXVsdF90aW1lcl9kYXRhOw0KPiANCj4gLyogd2hlbiBkZWJ1ZyBpcyBlbmFi
bGVkLCBzdG9yZSBzb21lIHN0YXRpc3RpY3MgKi8NCj4gI2lmZGVmIFJURV9MSUJSVEVfVElNRVJf
REVCVUcNCj4gLSNkZWZpbmUgX19USU1FUl9TVEFUX0FERChuYW1lLCBuKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICBcDQo+ICsjZGVmaW5lIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgbmFt
ZSwgbikgZG8geyAgICAgICAgICAgIFwNCj4gICAgICAgIHVuc2lnbmVkIF9fbGNvcmVfaWQgPSBy
dGVfbGNvcmVfaWQoKTsgICAgICAgICAgICBcDQo+ICAgICAgICBpZiAoX19sY29yZV9pZCA8IFJU
RV9NQVhfTENPUkUpICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICBwcml2X3RpbWVyW19f
bGNvcmVfaWRdLnN0YXRzLm5hbWUgKz0gKG4pOyAgICBcDQo+ICAgIH0gd2hpbGUoMCkNCj4gI2Vs
c2UNCj4gLSNkZWZpbmUgX19USU1FUl9TVEFUX0FERChuYW1lLCBuKSBkbyB7fSB3aGlsZSgwKQ0K
PiArI2RlZmluZSBfX1RJTUVSX1NUQVRfQUREKHByaXZfdGltZXIsIG5hbWUsIG4pIGRvIHt9IHdo
aWxlICgwKQ0KPiAjZW5kaWYNCj4gDQo+IC0vKiBJbml0IHRoZSB0aW1lciBsaWJyYXJ5LiAqLw0K
PiArc3RhdGljIGlubGluZSBpbnQNCj4gK3RpbWVyX2RhdGFfdmFsaWQodWludDMyX3QgaWQpDQo+
ICt7DQo+ICsgICAgcmV0dXJuICEhKHJ0ZV90aW1lcl9kYXRhX2FycltpZF0uaW50ZXJuYWxfZmxh
Z3MgJiBGTF9BTExPQ0FURUQpOw0KPiArfQ0KPiArDQo+ICsvKiB2YWxpZGF0ZSBJRCBhbmQgcmV0
cmlldmUgdGltZXIgZGF0YSBwb2ludGVyLCBvciByZXR1cm4gZXJyb3IgdmFsdWUgKi8NCj4gKyNk
ZWZpbmUgVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJSX1JFVChpZCwgdGltZXJfZGF0YSwgcmV0
dmFsKSBkbyB7ICAgIFwNCj4gKyAgICBpZiAoaWQgPj0gUlRFX01BWF9EQVRBX0VMUyB8fCAhdGlt
ZXJfZGF0YV92YWxpZChpZCkpICAgICAgICBcDQo+ICsgICAgICAgIHJldHVybiByZXR2YWw7ICAg
ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHRpbWVyX2RhdGEgPSAmcnRlX3RpbWVyX2Rh
dGFfYXJyW2lkXTsgICAgICAgICAgICAgICAgXA0KPiArfSB3aGlsZSAoMCkNCj4gKw0KPiAraW50
IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2RhdGFfYWxsb2ModWludDMyX3QgKmlk
X3B0cikNCj4gK3sNCj4gKyAgICBpbnQgaTsNCj4gKyAgICBzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEg
KmRhdGE7DQo+ICsNCj4gKyAgICBpZiAoIXJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQp
DQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsgICAgZm9yIChpID0gMDsgaSA8
IFJURV9NQVhfREFUQV9FTFM7IGkrKykgew0KPiArICAgICAgICBkYXRhID0gJnJ0ZV90aW1lcl9k
YXRhX2FycltpXTsNCj4gKyAgICAgICAgaWYgKCEoZGF0YS0+aW50ZXJuYWxfZmxhZ3MgJiBGTF9B
TExPQ0FURUQpKSB7DQo+ICsgICAgICAgICAgICBkYXRhLT5pbnRlcm5hbF9mbGFncyB8PSBGTF9B
TExPQ0FURUQ7DQo+ICsNCj4gKyAgICAgICAgICAgIGlmIChpZF9wdHIpDQo+ICsgICAgICAgICAg
ICAgICAgKmlkX3B0ciA9IGk7DQo+ICsNCj4gKyAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAg
ICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIC1FTk9TUEM7DQo+ICt9DQo+ICsN
Cj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9kYXRhX2RlYWxsb2ModWlu
dDMyX3QgaWQpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRh
Ow0KPiArICAgIFRJTUVSX0RBVEFfVkFMSURfR0VUX09SX0VSUl9SRVQoaWQsIHRpbWVyX2RhdGEs
IC1FSU5WQUwpOw0KPiArDQo+ICsgICAgdGltZXJfZGF0YS0+aW50ZXJuYWxfZmxhZ3MgJj0gfihG
TF9BTExPQ0FURUQpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gdm9pZA0K
PiAtcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0KHZvaWQpDQo+ICtydGVfdGltZXJfc3Vic3lzdGVt
X2luaXRfdjIwKHZvaWQpDQo+IHsNCj4gICAgdW5zaWduZWQgbGNvcmVfaWQ7DQo+ICsgICAgc3Ry
dWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIgPSBkZWZhdWx0X3RpbWVyX2RhdGEucHJpdl90aW1l
cjsNCj4gDQo+ICAgIC8qIHNpbmNlIHByaXZfdGltZXIgaXMgc3RhdGljLCBpdCdzIHplcm9lZCBi
eSBkZWZhdWx0LCBzbyBvbmx5IGluaXQgc29tZQ0KPiAgICAgKiBmaWVsZHMuDQo+IEBAIC03Niw2
ICsxNDAsNzYgQEAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0KHZvaWQpDQo+ICAgICAgICBwcml2
X3RpbWVyW2xjb3JlX2lkXS5wcmV2X2xjb3JlID0gbGNvcmVfaWQ7DQo+ICAgIH0NCj4gfQ0KPiAr
VkVSU0lPTl9TWU1CT0wocnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0LCBfdjIwLCAyLjApOw0KPiAr
DQo+ICsvKiBJbml0IHRoZSB0aW1lciBsaWJyYXJ5LiBBbGxvY2F0ZSBhbiBhcnJheSBvZiB0aW1l
ciBkYXRhIHN0cnVjdHMgaW4gc2hhcmVkDQo+ICsgKiBtZW1vcnksIGFuZCBhbGxvY2F0ZSB0aGUg
emVyb3RoIGVudHJ5IGZvciB1c2Ugd2l0aCBvcmlnaW5hbCB0aW1lcg0KPiArICogQVBJcy4gU2lu
Y2UgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgc2V0cyBvZiBsY29yZSBpZHMgaW4gcHJpbWFyeSBh
bmQNCj4gKyAqIHNlY29uZGFyeSBwcm9jZXNzZXMgc2hvdWxkIGJlIGVtcHR5LCB0aGUgemVyb3Ro
IGVudHJ5IGNhbiBiZSBzaGFyZWQgYnkNCj4gKyAqIG11bHRpcGxlIHByb2Nlc3Nlcy4NCj4gKyAq
Lw0KPiAraW50DQo+ICtydGVfdGltZXJfc3Vic3lzdGVtX2luaXRfdjE5MDUodm9pZCkNCj4gK3sN
Cj4gKyAgICBjb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16Ow0KPiArICAgIHN0cnVjdCBydGVf
dGltZXJfZGF0YSAqZGF0YTsNCj4gKyAgICBpbnQgaSwgbGNvcmVfaWQ7DQo+ICsgICAgc3RhdGlj
IGNvbnN0IGNoYXIgKm16X25hbWUgPSAicnRlX3RpbWVyX216IjsNCj4gKw0KPiArICAgIGlmIChy
dGVfdGltZXJfc3Vic3lzdGVtX2luaXRpYWxpemVkKQ0KPiArICAgICAgICByZXR1cm4gLUVBTFJF
QURZOw0KPiArDQo+ICsgICAgaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgIT0gUlRFX1BST0Nf
UFJJTUFSWSkgew0KPiArICAgICAgICBteiA9IHJ0ZV9tZW16b25lX2xvb2t1cChtel9uYW1lKTsN
Cj4gKyAgICAgICAgaWYgKG16ID09IE5VTEwpDQo+ICsgICAgICAgICAgICByZXR1cm4gLUVFWElT
VDsNCj4gKw0KPiArICAgICAgICBydGVfdGltZXJfZGF0YV9hcnIgPSBtei0+YWRkcjsNCj4gKw0K
PiArICAgICAgICBydGVfdGltZXJfZGF0YV9hcnJbZGVmYXVsdF9kYXRhX2lkXS5pbnRlcm5hbF9m
bGFncyB8PQ0KPiArICAgICAgICAgICAgRkxfQUxMT0NBVEVEOw0KPiArDQo+ICsgICAgICAgIHJ0
ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQgPSAxOw0KPiArDQo+ICsgICAgICAgIHJldHVy
biAwOw0KPiArICAgIH0NCj4gKw0KPiArICAgIG16ID0gcnRlX21lbXpvbmVfcmVzZXJ2ZV9hbGln
bmVkKG16X25hbWUsDQo+ICsgICAgICAgICAgICBSVEVfTUFYX0RBVEFfRUxTICogc2l6ZW9mKCpy
dGVfdGltZXJfZGF0YV9hcnIpLA0KPiArICAgICAgICAgICAgU09DS0VUX0lEX0FOWSwgMCwgUlRF
X0NBQ0hFX0xJTkVfU0laRSk7DQo+ICsgICAgaWYgKG16ID09IE5VTEwpDQo+ICsgICAgICAgIHJl
dHVybiAtRU5PTUVNOw0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfYXJyID0gbXotPmFkZHI7
DQo+ICsNCj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgUlRFX01BWF9EQVRBX0VMUzsgaSsrKSB7DQo+
ICsgICAgICAgIGRhdGEgPSAmcnRlX3RpbWVyX2RhdGFfYXJyW2ldOw0KPiArDQo+ICsgICAgICAg
IGZvciAobGNvcmVfaWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhfTENPUkU7IGxjb3JlX2lkKysp
IHsNCj4gKyAgICAgICAgICAgIHJ0ZV9zcGlubG9ja19pbml0KA0KPiArICAgICAgICAgICAgICAg
ICZkYXRhLT5wcml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KPiArICAgICAgICAgICAg
ZGF0YS0+cHJpdl90aW1lcltsY29yZV9pZF0ucHJldl9sY29yZSA9IGxjb3JlX2lkOw0KPiArICAg
ICAgICB9DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfYXJyW2RlZmF1bHRf
ZGF0YV9pZF0uaW50ZXJuYWxfZmxhZ3MgfD0gRkxfQUxMT0NBVEVEOw0KPiArDQo+ICsgICAgcnRl
X3RpbWVyX3N1YnN5c3RlbV9pbml0aWFsaXplZCA9IDE7DQo+ICsNCj4gKyAgICByZXR1cm4gMDsN
Cj4gK30NCj4gK01BUF9TVEFUSUNfU1lNQk9MKGludCBydGVfdGltZXJfc3Vic3lzdGVtX2luaXQo
dm9pZCksDQo+ICsgICAgICAgICAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YxOTA1KTsNCj4g
K0JJTkRfREVGQVVMVF9TWU1CT0wocnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0LCBfdjE5MDUsIDE5
LjA1KTsNCj4gKw0KPiArdm9pZCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9zdWJz
eXN0ZW1fZmluYWxpemUodm9pZCkNCj4gK3sNCj4gKyAgICBpZiAocnRlX3RpbWVyX2RhdGFfYXJy
KQ0KPiArICAgICAgICBydGVfZnJlZShydGVfdGltZXJfZGF0YV9hcnIpOw0KPiArDQo+ICsgICAg
cnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0aWFsaXplZCA9IDA7DQo+ICt9DQo+IA0KPiAvKiBJbml0
aWFsaXplIHRoZSB0aW1lciBoYW5kbGUgdGltIGZvciB1c2UgKi8NCj4gdm9pZA0KPiBAQCAtOTUs
NyArMjI5LDggQEAgcnRlX3RpbWVyX2luaXQoc3RydWN0IHJ0ZV90aW1lciAqdGltKQ0KPiAgKi8N
Cj4gc3RhdGljIGludA0KPiB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHN0cnVjdCBydGVfdGltZXIg
KnRpbSwNCj4gLSAgICAgICAgICAgICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgKnJldF9wcmV2
X3N0YXR1cykNCj4gKyAgICAgICAgICAgICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgKnJldF9w
cmV2X3N0YXR1cywNCj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3Rp
bWVyKQ0KPiB7DQo+ICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1
czsNCj4gICAgaW50IHN1Y2Nlc3MgPSAwOw0KPiBAQCAtMjA3LDcgKzM0Miw3IEBAIHRpbWVyX2dl
dF9za2lwbGlzdF9sZXZlbCh1bnNpZ25lZCBjdXJyX2RlcHRoKQ0KPiAgKi8NCj4gc3RhdGljIHZv
aWQNCj4gdGltZXJfZ2V0X3ByZXZfZW50cmllcyh1aW50NjRfdCB0aW1lX3ZhbCwgdW5zaWduZWQg
dGltX2xjb3JlLA0KPiAtICAgICAgICBzdHJ1Y3QgcnRlX3RpbWVyICoqcHJldikNCj4gKyAgICAg
ICAgICAgICAgIHN0cnVjdCBydGVfdGltZXIgKipwcmV2LCBzdHJ1Y3QgcHJpdl90aW1lciAqcHJp
dl90aW1lcikNCj4gew0KPiAgICB1bnNpZ25lZCBsdmwgPSBwcml2X3RpbWVyW3RpbV9sY29yZV0u
Y3Vycl9za2lwbGlzdF9kZXB0aDsNCj4gICAgcHJldltsdmxdID0gJnByaXZfdGltZXJbdGltX2xj
b3JlXS5wZW5kaW5nX2hlYWQ7DQo+IEBAIC0yMjYsMTMgKzM2MSwxNSBAQCB0aW1lcl9nZXRfcHJl
dl9lbnRyaWVzKHVpbnQ2NF90IHRpbWVfdmFsLCB1bnNpZ25lZCB0aW1fbGNvcmUsDQo+ICAqLw0K
PiBzdGF0aWMgdm9pZA0KPiB0aW1lcl9nZXRfcHJldl9lbnRyaWVzX2Zvcl9ub2RlKHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdW5zaWduZWQgdGltX2xjb3JlLA0KPiAtICAgICAgICBzdHJ1Y3QgcnRl
X3RpbWVyICoqcHJldikNCj4gKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3RpbWVyICoqcHJl
diwNCj4gKyAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJpdl90aW1lciAqcHJpdl90aW1lcikNCj4g
ew0KPiAgICBpbnQgaTsNCj4gKw0KPiAgICAvKiB0byBnZXQgYSBzcGVjaWZpYyBlbnRyeSBpbiB0
aGUgbGlzdCwgbG9vayBmb3IganVzdCBsb3dlciB0aGFuIHRoZSB0aW1lDQo+ICAgICAqIHZhbHVl
cywgYW5kIHRoZW4gaW5jcmVtZW50IG9uIGVhY2ggbGV2ZWwgaW5kaXZpZHVhbGx5IGlmIG5lY2Vz
c2FyeQ0KPiAgICAgKi8NCj4gLSAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKHRpbS0+ZXhwaXJl
IC0gMSwgdGltX2xjb3JlLCBwcmV2KTsNCj4gKyAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKHRp
bS0+ZXhwaXJlIC0gMSwgdGltX2xjb3JlLCBwcmV2LCBwcml2X3RpbWVyKTsNCj4gICAgZm9yIChp
ID0gcHJpdl90aW1lclt0aW1fbGNvcmVdLmN1cnJfc2tpcGxpc3RfZGVwdGggLSAxOyBpID49IDA7
IGktLSkgew0KPiAgICAgICAgd2hpbGUgKHByZXZbaV0tPnNsX25leHRbaV0gIT0gTlVMTCAmJg0K
PiAgICAgICAgICAgICAgICBwcmV2W2ldLT5zbF9uZXh0W2ldICE9IHRpbSAmJg0KPiBAQCAtMjQ3
LDE0ICszODQsMTUgQEAgdGltZXJfZ2V0X3ByZXZfZW50cmllc19mb3Jfbm9kZShzdHJ1Y3QgcnRl
X3RpbWVyICp0aW0sIHVuc2lnbmVkIHRpbV9sY29yZSwNCj4gICogdGltZXIgbXVzdCBub3QgYmUg
aW4gYSBsaXN0DQo+ICAqLw0KPiBzdGF0aWMgdm9pZA0KPiAtdGltZXJfYWRkKHN0cnVjdCBydGVf
dGltZXIgKnRpbSwgdW5zaWduZWQgaW50IHRpbV9sY29yZSkNCj4gK3RpbWVyX2FkZChzdHJ1Y3Qg
cnRlX3RpbWVyICp0aW0sIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+ICsgICAgICBzdHJ1Y3Qg
cHJpdl90aW1lciAqcHJpdl90aW1lcikNCj4gew0KPiAgICB1bnNpZ25lZCBsdmw7DQo+ICAgIHN0
cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NLSVBMSVNUX0RFUFRIKzFdOw0KPiANCj4gICAgLyog
ZmluZCB3aGVyZSBleGFjdGx5IHRoaXMgZWxlbWVudCBnb2VzIGluIHRoZSBsaXN0IG9mIGVsZW1l
bnRzDQo+ICAgICAqIGZvciBlYWNoIGRlcHRoLiAqLw0KPiAtICAgIHRpbWVyX2dldF9wcmV2X2Vu
dHJpZXModGltLT5leHBpcmUsIHRpbV9sY29yZSwgcHJldik7DQo+ICsgICAgdGltZXJfZ2V0X3By
ZXZfZW50cmllcyh0aW0tPmV4cGlyZSwgdGltX2xjb3JlLCBwcmV2LCBwcml2X3RpbWVyKTsNCj4g
DQo+ICAgIC8qIG5vdyBhc3NpZ24gaXQgYSBuZXcgbGV2ZWwgYW5kIGFkZCBhdCB0aGF0IGxldmVs
ICovDQo+ICAgIGNvbnN0IHVuc2lnbmVkIHRpbV9sZXZlbCA9IHRpbWVyX2dldF9za2lwbGlzdF9s
ZXZlbCgNCj4gQEAgLTI4NCw3ICs0MjIsNyBAQCB0aW1lcl9hZGQoc3RydWN0IHJ0ZV90aW1lciAq
dGltLCB1bnNpZ25lZCBpbnQgdGltX2xjb3JlKQ0KPiAgKi8NCj4gc3RhdGljIHZvaWQNCj4gdGlt
ZXJfZGVsKHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdW5pb24gcnRlX3RpbWVyX3N0YXR1cyBwcmV2
X3N0YXR1cywNCj4gLSAgICAgICAgaW50IGxvY2FsX2lzX2xvY2tlZCkNCj4gKyAgICAgIGludCBs
b2NhbF9pc19sb2NrZWQsIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyKQ0KPiB7DQo+ICAg
IHVuc2lnbmVkIGxjb3JlX2lkID0gcnRlX2xjb3JlX2lkKCk7DQo+ICAgIHVuc2lnbmVkIHByZXZf
b3duZXIgPSBwcmV2X3N0YXR1cy5vd25lcjsNCj4gQEAgLTMwNCw3ICs0NDIsNyBAQCB0aW1lcl9k
ZWwoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1bmlvbiBydGVfdGltZXJfc3RhdHVzIHByZXZfc3Rh
dHVzLA0KPiAgICAgICAgICAgICAgICAoKHRpbS0+c2xfbmV4dFswXSA9PSBOVUxMKSA/IDAgOiB0
aW0tPnNsX25leHRbMF0tPmV4cGlyZSk7DQo+IA0KPiAgICAvKiBhZGp1c3QgcG9pbnRlcnMgZnJv
bSBwcmV2aW91cyBlbnRyaWVzIHRvIHBvaW50IHBhc3QgdGhpcyAqLw0KPiAtICAgIHRpbWVyX2dl
dF9wcmV2X2VudHJpZXNfZm9yX25vZGUodGltLCBwcmV2X293bmVyLCBwcmV2KTsNCj4gKyAgICB0
aW1lcl9nZXRfcHJldl9lbnRyaWVzX2Zvcl9ub2RlKHRpbSwgcHJldl9vd25lciwgcHJldiwgcHJp
dl90aW1lcik7DQo+ICAgIGZvciAoaSA9IHByaXZfdGltZXJbcHJldl9vd25lcl0uY3Vycl9za2lw
bGlzdF9kZXB0aCAtIDE7IGkgPj0gMDsgaS0tKSB7DQo+ICAgICAgICBpZiAocHJldltpXS0+c2xf
bmV4dFtpXSA9PSB0aW0pDQo+ICAgICAgICAgICAgcHJldltpXS0+c2xfbmV4dFtpXSA9IHRpbS0+
c2xfbmV4dFtpXTsNCj4gQEAgLTMyNiwxMSArNDY0LDEzIEBAIHN0YXRpYyBpbnQNCj4gX19ydGVf
dGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+ICAg
ICAgICAgIHVpbnQ2NF90IHBlcmlvZCwgdW5zaWduZWQgdGltX2xjb3JlLA0KPiAgICAgICAgICBy
dGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZywNCj4gLSAgICAgICAgICBpbnQgbG9jYWxfaXNf
bG9ja2VkKQ0KPiArICAgICAgICAgIGludCBsb2NhbF9pc19sb2NrZWQsDQo+ICsgICAgICAgICAg
c3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhKQ0KPiB7DQo+ICAgIHVuaW9uIHJ0ZV90
aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1czsNCj4gICAgaW50IHJldDsNCj4gICAgdW5z
aWduZWQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4gKyAgICBzdHJ1Y3QgcHJpdl90aW1l
ciAqcHJpdl90aW1lciA9IHRpbWVyX2RhdGEtPnByaXZfdGltZXI7DQo+IA0KPiAgICAvKiByb3Vu
ZCByb2JpbiBmb3IgdGltX2xjb3JlICovDQo+ICAgIGlmICh0aW1fbGNvcmUgPT0gKHVuc2lnbmVk
KUxDT1JFX0lEX0FOWSkgew0KPiBAQCAtMzQ4LDExICs0ODgsMTEgQEAgX19ydGVfdGltZXJfcmVz
ZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+IA0KPiAgICAvKiB3
YWl0IHRoYXQgdGhlIHRpbWVyIGlzIGluIGNvcnJlY3Qgc3RhdHVzIGJlZm9yZSB1cGRhdGUsDQo+
ICAgICAqIGFuZCBtYXJrIGl0IGFzIGJlaW5nIGNvbmZpZ3VyZWQgKi8NCj4gLSAgICByZXQgPSB0
aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVzKTsNCj4gKyAgICByZXQgPSB0
aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVzLCBwcml2X3RpbWVyKTsNCj4g
ICAgaWYgKHJldCA8IDApDQo+ICAgICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICAgIF9fVElNRVJf
U1RBVF9BREQocmVzZXQsIDEpOw0KPiArICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwg
cmVzZXQsIDEpOw0KPiAgICBpZiAocHJldl9zdGF0dXMuc3RhdGUgPT0gUlRFX1RJTUVSX1JVTk5J
TkcgJiYNCj4gICAgICAgIGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSkgew0KPiAgICAgICAgcHJp
dl90aW1lcltsY29yZV9pZF0udXBkYXRlZCA9IDE7DQo+IEBAIC0zNjAsOCArNTAwLDggQEAgX19y
dGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+
IA0KPiAgICAvKiByZW1vdmUgaXQgZnJvbSBsaXN0ICovDQo+ICAgIGlmIChwcmV2X3N0YXR1cy5z
dGF0ZSA9PSBSVEVfVElNRVJfUEVORElORykgew0KPiAtICAgICAgICB0aW1lcl9kZWwodGltLCBw
cmV2X3N0YXR1cywgbG9jYWxfaXNfbG9ja2VkKTsNCj4gLSAgICAgICAgX19USU1FUl9TVEFUX0FE
RChwZW5kaW5nLCAtMSk7DQo+ICsgICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZfc3RhdHVzLCBs
b2NhbF9pc19sb2NrZWQsIHByaXZfdGltZXIpOw0KPiArICAgICAgICBfX1RJTUVSX1NUQVRfQURE
KHByaXZfdGltZXIsIHBlbmRpbmcsIC0xKTsNCj4gICAgfQ0KPiANCj4gICAgdGltLT5wZXJpb2Qg
PSBwZXJpb2Q7DQo+IEBAIC0zNzYsOCArNTE2LDggQEAgX19ydGVfdGltZXJfcmVzZXQoc3RydWN0
IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+ICAgIGlmICh0aW1fbGNvcmUgIT0g
bGNvcmVfaWQgfHwgIWxvY2FsX2lzX2xvY2tlZCkNCj4gICAgICAgIHJ0ZV9zcGlubG9ja19sb2Nr
KCZwcml2X3RpbWVyW3RpbV9sY29yZV0ubGlzdF9sb2NrKTsNCj4gDQo+IC0gICAgX19USU1FUl9T
VEFUX0FERChwZW5kaW5nLCAxKTsNCj4gLSAgICB0aW1lcl9hZGQodGltLCB0aW1fbGNvcmUpOw0K
PiArICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgcGVuZGluZywgMSk7DQo+ICsgICAg
dGltZXJfYWRkKHRpbSwgdGltX2xjb3JlLCBwcml2X3RpbWVyKTsNCj4gDQo+ICAgIC8qIHVwZGF0
ZSBzdGF0ZTogYXMgd2UgYXJlIGluIENPTkZJRyBzdGF0ZSwgb25seSB1cyBjYW4gbW9kaWZ5DQo+
ICAgICAqIHRoZSBzdGF0ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHVzZSBjbXBzZXQoKSBoZXJlICov
DQo+IEBAIC0zOTQsOSArNTM0LDkgQEAgX19ydGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1l
ciAqdGltLCB1aW50NjRfdCBleHBpcmUsDQo+IA0KPiAvKiBSZXNldCBhbmQgc3RhcnQgdGhlIHRp
bWVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGltZXIgaGFuZGxlIHRpbSAqLw0KPiBpbnQNCj4gLXJ0
ZV90aW1lcl9yZXNldChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVpbnQ2NF90IHRpY2tzLA0KPiAt
ICAgICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIHRpbV9sY29yZSwNCj4g
LSAgICAgICAgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpDQo+ICtydGVfdGltZXJfcmVz
ZXRfdjIwKHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICsgICAgICAg
ICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+
ICsgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZykNCj4gew0KPiAgICB1
aW50NjRfdCBjdXJfdGltZSA9IHJ0ZV9nZXRfdGltZXJfY3ljbGVzKCk7DQo+ICAgIHVpbnQ2NF90
IHBlcmlvZDsNCj4gQEAgLTQxMiw3ICs1NTIsNDggQEAgcnRlX3RpbWVyX3Jlc2V0KHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICAgICAgICBwZXJpb2QgPSAwOw0KPiAN
Cj4gICAgcmV0dXJuIF9fcnRlX3RpbWVyX3Jlc2V0KHRpbSwgIGN1cl90aW1lICsgdGlja3MsIHBl
cmlvZCwgdGltX2xjb3JlLA0KPiAtICAgICAgICAgICAgICBmY3QsIGFyZywgMCk7DQo+ICsgICAg
ICAgICAgICAgIGZjdCwgYXJnLCAwLCAmZGVmYXVsdF90aW1lcl9kYXRhKTsNCj4gK30NCj4gK1ZF
UlNJT05fU1lNQk9MKHJ0ZV90aW1lcl9yZXNldCwgX3YyMCwgMi4wKTsNCj4gKw0KPiAraW50DQo+
ICtydGVfdGltZXJfcmVzZXRfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0
aWNrcywNCj4gKyAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLCB1bnNpZ25l
ZCBpbnQgdGltX2xjb3JlLA0KPiArICAgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZv
aWQgKmFyZykNCj4gK3sNCj4gKyAgICByZXR1cm4gcnRlX3RpbWVyX2FsdF9yZXNldChkZWZhdWx0
X2RhdGFfaWQsIHRpbSwgdGlja3MsIHR5cGUsDQo+ICsgICAgICAgICAgICAgICAgICAgdGltX2xj
b3JlLCBmY3QsIGFyZyk7DQo+ICt9DQo+ICtNQVBfU1RBVElDX1NZTUJPTChpbnQgcnRlX3RpbWVy
X3Jlc2V0KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICsgICAgICAg
ICAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KPiArICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQo+ICsgICAgICAgICAgICAgICAgICAg
ICAgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpLA0KPiArICAgICAgICAgIHJ0ZV90aW1l
cl9yZXNldF92MTkwNSk7DQo+ICtCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9yZXNldCwg
X3YxOTA1LCAxOS4wNSk7DQo+ICsNCj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90
aW1lcl9hbHRfcmVzZXQodWludDMyX3QgdGltZXJfZGF0YV9pZCwgc3RydWN0IHJ0ZV90aW1lciAq
dGltLA0KPiArICAgICAgICAgICAgdWludDY0X3QgdGlja3MsIGVudW0gcnRlX3RpbWVyX3R5cGUg
dHlwZSwNCj4gKyAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsIHJ0ZV90aW1lcl9j
Yl90IGZjdCwgdm9pZCAqYXJnKQ0KPiArew0KPiArICAgIHVpbnQ2NF90IGN1cl90aW1lID0gcnRl
X2dldF90aW1lcl9jeWNsZXMoKTsNCj4gKyAgICB1aW50NjRfdCBwZXJpb2Q7DQo+ICsgICAgc3Ry
dWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9W
QUxJRF9HRVRfT1JfRVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsN
Cj4gKw0KPiArICAgIGlmICh1bmxpa2VseSgodGltX2xjb3JlICE9ICh1bnNpZ25lZCBpbnQpTENP
UkVfSURfQU5ZKSAmJg0KPiArICAgICAgICAgICAgIShydGVfbGNvcmVfaXNfZW5hYmxlZCh0aW1f
bGNvcmUpIHx8DQo+ICsgICAgICAgICAgICAgIHJ0ZV9sY29yZV9oYXNfcm9sZSh0aW1fbGNvcmUs
IFJPTEVfU0VSVklDRSkpKSkNCj4gKyAgICAgICAgcmV0dXJuIC0xOw0KPiArDQo+ICsgICAgaWYg
KHR5cGUgPT0gUEVSSU9ESUNBTCkNCj4gKyAgICAgICAgcGVyaW9kID0gdGlja3M7DQo+ICsgICAg
ZWxzZQ0KPiArICAgICAgICBwZXJpb2QgPSAwOw0KPiArDQo+ICsgICAgcmV0dXJuIF9fcnRlX3Rp
bWVyX3Jlc2V0KHRpbSwgIGN1cl90aW1lICsgdGlja3MsIHBlcmlvZCwgdGltX2xjb3JlLA0KPiAr
ICAgICAgICAgICAgICAgICBmY3QsIGFyZywgMCwgdGltZXJfZGF0YSk7DQo+IH0NCj4gDQo+IC8q
IGxvb3AgdW50aWwgcnRlX3RpbWVyX3Jlc2V0KCkgc3VjY2VlZCAqLw0KPiBAQCAtNDI2LDIxICs2
MDcsMjIgQEAgcnRlX3RpbWVyX3Jlc2V0X3N5bmMoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50
NjRfdCB0aWNrcywNCj4gICAgICAgIHJ0ZV9wYXVzZSgpOw0KPiB9DQo+IA0KPiAtLyogU3RvcCB0
aGUgdGltZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aW1lciBoYW5kbGUgdGltICovDQo+IC1pbnQN
Cj4gLXJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gK3N0YXRpYyBpbnQN
Cj4gK19fcnRlX3RpbWVyX3N0b3Aoc3RydWN0IHJ0ZV90aW1lciAqdGltLCBpbnQgbG9jYWxfaXNf
bG9ja2VkLA0KPiArICAgICAgICAgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhKQ0K
PiB7DQo+ICAgIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1czsNCj4g
ICAgdW5zaWduZWQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCj4gICAgaW50IHJldDsNCj4g
KyAgICBzdHJ1Y3QgcHJpdl90aW1lciAqcHJpdl90aW1lciA9IHRpbWVyX2RhdGEtPnByaXZfdGlt
ZXI7DQo+IA0KPiAgICAvKiB3YWl0IHRoYXQgdGhlIHRpbWVyIGlzIGluIGNvcnJlY3Qgc3RhdHVz
IGJlZm9yZSB1cGRhdGUsDQo+ICAgICAqIGFuZCBtYXJrIGl0IGFzIGJlaW5nIGNvbmZpZ3VyZWQg
Ki8NCj4gLSAgICByZXQgPSB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVz
KTsNCj4gKyAgICByZXQgPSB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVz
LCBwcml2X3RpbWVyKTsNCj4gICAgaWYgKHJldCA8IDApDQo+ICAgICAgICByZXR1cm4gLTE7DQo+
IA0KPiAtICAgIF9fVElNRVJfU1RBVF9BREQoc3RvcCwgMSk7DQo+ICsgICAgX19USU1FUl9TVEFU
X0FERChwcml2X3RpbWVyLCBzdG9wLCAxKTsNCj4gICAgaWYgKHByZXZfc3RhdHVzLnN0YXRlID09
IFJURV9USU1FUl9SVU5OSU5HICYmDQo+ICAgICAgICBsY29yZV9pZCA8IFJURV9NQVhfTENPUkUp
IHsNCj4gICAgICAgIHByaXZfdGltZXJbbGNvcmVfaWRdLnVwZGF0ZWQgPSAxOw0KPiBAQCAtNDQ4
LDggKzYzMCw4IEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gDQo+
ICAgIC8qIHJlbW92ZSBpdCBmcm9tIGxpc3QgKi8NCj4gICAgaWYgKHByZXZfc3RhdHVzLnN0YXRl
ID09IFJURV9USU1FUl9QRU5ESU5HKSB7DQo+IC0gICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZf
c3RhdHVzLCAwKTsNCj4gLSAgICAgICAgX19USU1FUl9TVEFUX0FERChwZW5kaW5nLCAtMSk7DQo+
ICsgICAgICAgIHRpbWVyX2RlbCh0aW0sIHByZXZfc3RhdHVzLCBsb2NhbF9pc19sb2NrZWQsIHBy
aXZfdGltZXIpOw0KPiArICAgICAgICBfX1RJTUVSX1NUQVRfQUREKHByaXZfdGltZXIsIHBlbmRp
bmcsIC0xKTsNCj4gICAgfQ0KPiANCj4gICAgLyogbWFyayB0aW1lciBhcyBzdG9wcGVkICovDQo+
IEBAIC00NjEsNiArNjQzLDMzIEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRp
bSkNCj4gICAgcmV0dXJuIDA7DQo+IH0NCj4gDQo+ICsvKiBTdG9wIHRoZSB0aW1lciBhc3NvY2lh
dGVkIHdpdGggdGhlIHRpbWVyIGhhbmRsZSB0aW0gKi8NCj4gK2ludA0KPiArcnRlX3RpbWVyX3N0
b3BfdjIwKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gK3sNCj4gKyAgICByZXR1cm4gX19ydGVf
dGltZXJfc3RvcCh0aW0sIDAsICZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KPiArfQ0KPiArVkVSU0lP
Tl9TWU1CT0wocnRlX3RpbWVyX3N0b3AsIF92MjAsIDIuMCk7DQo+ICsNCj4gK2ludA0KPiArcnRl
X3RpbWVyX3N0b3BfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltKQ0KPiArew0KPiArICAgIHJl
dHVybiBydGVfdGltZXJfYWx0X3N0b3AoZGVmYXVsdF9kYXRhX2lkLCB0aW0pOw0KPiArfQ0KPiAr
TUFQX1NUQVRJQ19TWU1CT0woaW50IHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRp
bSksDQo+ICsgICAgICAgICAgcnRlX3RpbWVyX3N0b3BfdjE5MDUpOw0KPiArQklORF9ERUZBVUxU
X1NZTUJPTChydGVfdGltZXJfc3RvcCwgX3YxOTA1LCAxOS4wNSk7DQo+ICsNCj4gK2ludCBfX3J0
ZV9leHBlcmltZW50YWwNCj4gK3J0ZV90aW1lcl9hbHRfc3RvcCh1aW50MzJfdCB0aW1lcl9kYXRh
X2lkLCBzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1l
cl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1Jf
RVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCj4gKw0KPiArICAg
IHJldHVybiBfX3J0ZV90aW1lcl9zdG9wKHRpbSwgMCwgdGltZXJfZGF0YSk7DQo+ICt9DQo+ICsN
Cj4gLyogbG9vcCB1bnRpbCBydGVfdGltZXJfc3RvcCgpIHN1Y2NlZWQgKi8NCj4gdm9pZA0KPiBy
dGVfdGltZXJfc3RvcF9zeW5jKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCj4gQEAgLTQ3Nyw3ICs2
ODYsOCBAQCBydGVfdGltZXJfcGVuZGluZyhzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQo+IH0NCj4g
DQo+IC8qIG11c3QgYmUgY2FsbGVkIHBlcmlvZGljYWxseSwgcnVuIGFsbCB0aW1lciB0aGF0IGV4
cGlyZWQgKi8NCj4gLXZvaWQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKQ0KPiArc3RhdGljIHZvaWQN
Cj4gK19fcnRlX3RpbWVyX21hbmFnZShzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKnRpbWVyX2RhdGEp
DQo+IHsNCj4gICAgdW5pb24gcnRlX3RpbWVyX3N0YXR1cyBzdGF0dXM7DQo+ICAgIHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgKm5leHRfdGltOw0KPiBAQCAtNDg2LDExICs2OTYsMTIgQEAgdm9pZCBy
dGVfdGltZXJfbWFuYWdlKHZvaWQpDQo+ICAgIHN0cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NL
SVBMSVNUX0RFUFRIICsgMV07DQo+ICAgIHVpbnQ2NF90IGN1cl90aW1lOw0KPiAgICBpbnQgaSwg
cmV0Ow0KPiArICAgIHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyID0gdGltZXJfZGF0YS0+
cHJpdl90aW1lcjsNCj4gDQo+ICAgIC8qIHRpbWVyIG1hbmFnZXIgb25seSBydW5zIG9uIEVBTCB0
aHJlYWQgd2l0aCB2YWxpZCBsY29yZV9pZCAqLw0KPiAgICBhc3NlcnQobGNvcmVfaWQgPCBSVEVf
TUFYX0xDT1JFKTsNCj4gDQo+IC0gICAgX19USU1FUl9TVEFUX0FERChtYW5hZ2UsIDEpOw0KPiAr
ICAgIF9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgbWFuYWdlLCAxKTsNCj4gICAgLyogb3B0
aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHBlci1jcHUgbGlzdCBpcyBlbXB0eSAqLw0KPiAgICBp
ZiAocHJpdl90aW1lcltsY29yZV9pZF0ucGVuZGluZ19oZWFkLnNsX25leHRbMF0gPT0gTlVMTCkN
Cj4gICAgICAgIHJldHVybjsNCj4gQEAgLTUxOCw3ICs3MjksNyBAQCB2b2lkIHJ0ZV90aW1lcl9t
YW5hZ2Uodm9pZCkNCj4gICAgdGltID0gcHJpdl90aW1lcltsY29yZV9pZF0ucGVuZGluZ19oZWFk
LnNsX25leHRbMF07DQo+IA0KPiAgICAvKiBicmVhayB0aGUgZXhpc3RpbmcgbGlzdCBhdCBjdXJy
ZW50IHRpbWUgcG9pbnQgKi8NCj4gLSAgICB0aW1lcl9nZXRfcHJldl9lbnRyaWVzKGN1cl90aW1l
LCBsY29yZV9pZCwgcHJldik7DQo+ICsgICAgdGltZXJfZ2V0X3ByZXZfZW50cmllcyhjdXJfdGlt
ZSwgbGNvcmVfaWQsIHByZXYsIHByaXZfdGltZXIpOw0KPiAgICBmb3IgKGkgPSBwcml2X3RpbWVy
W2xjb3JlX2lkXS5jdXJyX3NraXBsaXN0X2RlcHRoIC0xOyBpID49IDA7IGktLSkgew0KPiAgICAg
ICAgaWYgKHByZXZbaV0gPT0gJnByaXZfdGltZXJbbGNvcmVfaWRdLnBlbmRpbmdfaGVhZCkNCj4g
ICAgICAgICAgICBjb250aW51ZTsNCj4gQEAgLTU2Myw3ICs3NzQsNyBAQCB2b2lkIHJ0ZV90aW1l
cl9tYW5hZ2Uodm9pZCkNCj4gICAgICAgIC8qIGV4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb24gd2l0
aCBsaXN0IHVubG9ja2VkICovDQo+ICAgICAgICB0aW0tPmYodGltLCB0aW0tPmFyZyk7DQo+IA0K
PiAtICAgICAgICBfX1RJTUVSX1NUQVRfQUREKHBlbmRpbmcsIC0xKTsNCj4gKyAgICAgICAgX19U
SU1FUl9TVEFUX0FERChwcml2X3RpbWVyLCBwZW5kaW5nLCAtMSk7DQo+ICAgICAgICAvKiB0aGUg
dGltZXIgd2FzIHN0b3BwZWQgb3IgcmVsb2FkZWQgYnkgdGhlIGNhbGxiYWNrDQo+ICAgICAgICAg
KiBmdW5jdGlvbiwgd2UgaGF2ZSBub3RoaW5nIHRvIGRvIGhlcmUgKi8NCj4gICAgICAgIGlmIChw
cml2X3RpbWVyW2xjb3JlX2lkXS51cGRhdGVkID09IDEpDQo+IEBAIC01ODAsMjQgKzc5MSwyMjIg
QEAgdm9pZCBydGVfdGltZXJfbWFuYWdlKHZvaWQpDQo+ICAgICAgICAgICAgLyoga2VlcCBpdCBp
biBsaXN0IGFuZCBtYXJrIHRpbWVyIGFzIHBlbmRpbmcgKi8NCj4gICAgICAgICAgICBydGVfc3Bp
bmxvY2tfbG9jaygmcHJpdl90aW1lcltsY29yZV9pZF0ubGlzdF9sb2NrKTsNCj4gICAgICAgICAg
ICBzdGF0dXMuc3RhdGUgPSBSVEVfVElNRVJfUEVORElORzsNCj4gLSAgICAgICAgICAgIF9fVElN
RVJfU1RBVF9BREQocGVuZGluZywgMSk7DQo+ICsgICAgICAgICAgICBfX1RJTUVSX1NUQVRfQURE
KHByaXZfdGltZXIsIHBlbmRpbmcsIDEpOw0KPiAgICAgICAgICAgIHN0YXR1cy5vd25lciA9IChp
bnQxNl90KWxjb3JlX2lkOw0KPiAgICAgICAgICAgIHJ0ZV93bWIoKTsNCj4gICAgICAgICAgICB0
aW0tPnN0YXR1cy51MzIgPSBzdGF0dXMudTMyOw0KPiAgICAgICAgICAgIF9fcnRlX3RpbWVyX3Jl
c2V0KHRpbSwgdGltLT5leHBpcmUgKyB0aW0tPnBlcmlvZCwNCj4gLSAgICAgICAgICAgICAgICB0
aW0tPnBlcmlvZCwgbGNvcmVfaWQsIHRpbS0+ZiwgdGltLT5hcmcsIDEpOw0KPiArICAgICAgICAg
ICAgICAgIHRpbS0+cGVyaW9kLCBsY29yZV9pZCwgdGltLT5mLCB0aW0tPmFyZywgMSwNCj4gKyAg
ICAgICAgICAgICAgICB0aW1lcl9kYXRhKTsNCj4gICAgICAgICAgICBydGVfc3BpbmxvY2tfdW5s
b2NrKCZwcml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KPiAgICAgICAgfQ0KPiAgICB9
DQo+ICAgIHByaXZfdGltZXJbbGNvcmVfaWRdLnJ1bm5pbmdfdGltID0gTlVMTDsNCj4gfQ0KPiAN
Cj4gK3ZvaWQNCj4gK3J0ZV90aW1lcl9tYW5hZ2VfdjIwKHZvaWQpDQo+ICt7DQo+ICsgICAgX19y
dGVfdGltZXJfbWFuYWdlKCZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KPiArfQ0KPiArVkVSU0lPTl9T
WU1CT0wocnRlX3RpbWVyX21hbmFnZSwgX3YyMCwgMi4wKTsNCj4gKw0KPiAraW50DQo+ICtydGVf
dGltZXJfbWFuYWdlX3YxOTA1KHZvaWQpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1lcl9k
YXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJS
X1JFVChkZWZhdWx0X2RhdGFfaWQsIHRpbWVyX2RhdGEsIC1FSU5WQUwpOw0KPiArDQo+ICsgICAg
X19ydGVfdGltZXJfbWFuYWdlKHRpbWVyX2RhdGEpOw0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+
ICt9DQo+ICtNQVBfU1RBVElDX1NZTUJPTChpbnQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKSwgcnRl
X3RpbWVyX21hbmFnZV92MTkwNSk7DQo+ICtCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9t
YW5hZ2UsIF92MTkwNSwgMTkuMDUpOw0KPiArDQo+ICtpbnQgX19ydGVfZXhwZXJpbWVudGFsDQo+
ICtydGVfdGltZXJfYWx0X21hbmFnZSh1aW50MzJfdCB0aW1lcl9kYXRhX2lkLA0KPiArICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCAqcG9sbF9sY29yZXMsDQo+ICsgICAgICAgICAgICAgaW50IG5i
X3BvbGxfbGNvcmVzLA0KPiArICAgICAgICAgICAgIHJ0ZV90aW1lcl9hbHRfbWFuYWdlX2NiX3Qg
ZikNCj4gK3sNCj4gKyAgICB1bmlvbiBydGVfdGltZXJfc3RhdHVzIHN0YXR1czsNCj4gKyAgICBz
dHJ1Y3QgcnRlX3RpbWVyICp0aW0sICpuZXh0X3RpbSwgKipwcHJldjsNCj4gKyAgICBzdHJ1Y3Qg
cnRlX3RpbWVyICpydW5fZmlyc3RfdGltc1tSVEVfTUFYX0xDT1JFXTsNCj4gKyAgICB1bnNpZ25l
ZCBpbnQgcnVubGlzdF9sY29yZV9pZHNbUlRFX01BWF9MQ09SRV07DQo+ICsgICAgdW5zaWduZWQg
aW50IHRoaXNfbGNvcmUgPSBydGVfbGNvcmVfaWQoKTsNCj4gKyAgICBzdHJ1Y3QgcnRlX3RpbWVy
ICpwcmV2W01BWF9TS0lQTElTVF9ERVBUSCArIDFdOw0KPiArICAgIHVpbnQ2NF90IGN1cl90aW1l
Ow0KPiArICAgIGludCBpLCBqLCByZXQ7DQo+ICsgICAgaW50IG5iX3J1bmxpc3RzID0gMDsNCj4g
KyAgICBzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKmRhdGE7DQo+ICsgICAgc3RydWN0IHByaXZfdGlt
ZXIgKnByaXZwOw0KPiArICAgIHVpbnQzMl90IHBvbGxfbGNvcmU7DQo+ICsNCj4gKyAgICBUSU1F
Ul9EQVRBX1ZBTElEX0dFVF9PUl9FUlJfUkVUKHRpbWVyX2RhdGFfaWQsIGRhdGEsIC1FSU5WQUwp
Ow0KPiArDQo+ICsgICAgLyogdGltZXIgbWFuYWdlciBvbmx5IHJ1bnMgb24gRUFMIHRocmVhZCB3
aXRoIHZhbGlkIGxjb3JlX2lkICovDQo+ICsgICAgYXNzZXJ0KHRoaXNfbGNvcmUgPCBSVEVfTUFY
X0xDT1JFKTsNCj4gKw0KPiArICAgIF9fVElNRVJfU1RBVF9BREQoZGF0YS0+cHJpdl90aW1lciwg
bWFuYWdlLCAxKTsNCj4gKw0KPiArICAgIGlmIChwb2xsX2xjb3JlcyA9PSBOVUxMKSB7DQo+ICsg
ICAgICAgIHBvbGxfbGNvcmVzID0gKHVuc2lnbmVkIGludCBbXSl7cnRlX2xjb3JlX2lkKCl9Ow0K
PiArICAgICAgICBuYl9wb2xsX2xjb3JlcyA9IDE7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgZm9y
IChpID0gMCwgcG9sbF9sY29yZSA9IHBvbGxfbGNvcmVzW2ldOyBpIDwgbmJfcG9sbF9sY29yZXM7
DQo+ICsgICAgICAgICBwb2xsX2xjb3JlID0gcG9sbF9sY29yZXNbKytpXSkgew0KPiArICAgICAg
ICBwcml2cCA9ICZkYXRhLT5wcml2X3RpbWVyW3BvbGxfbGNvcmVdOw0KPiArDQo+ICsgICAgICAg
IC8qIG9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSBwZXItY3B1IGxpc3QgaXMgZW1wdHkgKi8N
Cj4gKyAgICAgICAgaWYgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4dFswXSA9PSBOVUxMKQ0K
PiArICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgIGN1cl90aW1lID0gcnRlX2dldF90
aW1lcl9jeWNsZXMoKTsNCj4gKw0KPiArI2lmZGVmIFJURV9BUkNIXzY0DQo+ICsgICAgICAgIC8q
IG9uIDY0LWJpdCB0aGUgdmFsdWUgY2FjaGVkIGluIHRoZSBwZW5kaW5nX2hlYWQuZXhwaXJlZCB3
aWxsDQo+ICsgICAgICAgICAqIGJlIHVwZGF0ZWQgYXRvbWljYWxseSwgc28gd2UgY2FuIGNvbnN1
bHQgdGhhdCBmb3IgYSBxdWljaw0KPiArICAgICAgICAgKiBjaGVjayBoZXJlIG91dHNpZGUgdGhl
IGxvY2sNCj4gKyAgICAgICAgICovDQo+ICsgICAgICAgIGlmIChsaWtlbHkocHJpdnAtPnBlbmRp
bmdfaGVhZC5leHBpcmUgPiBjdXJfdGltZSkpDQo+ICsgICAgICAgICAgICBjb250aW51ZTsNCj4g
KyNlbmRpZg0KPiArDQo+ICsgICAgICAgIC8qIGJyb3dzZSBvcmRlcmVkIGxpc3QsIGFkZCBleHBp
cmVkIHRpbWVycyBpbiAnZXhwaXJlZCcgbGlzdCAqLw0KPiArICAgICAgICBydGVfc3BpbmxvY2tf
bG9jaygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsNCj4gKyAgICAgICAgLyogaWYgbm90aGluZyB0
byBkbyBqdXN0IHVubG9jayBhbmQgcmV0dXJuICovDQo+ICsgICAgICAgIGlmIChwcml2cC0+cGVu
ZGluZ19oZWFkLnNsX25leHRbMF0gPT0gTlVMTCB8fA0KPiArICAgICAgICAgICAgcHJpdnAtPnBl
bmRpbmdfaGVhZC5zbF9uZXh0WzBdLT5leHBpcmUgPiBjdXJfdGltZSkgew0KPiArICAgICAgICAg
ICAgcnRlX3NwaW5sb2NrX3VubG9jaygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsgICAgICAgICAg
ICBjb250aW51ZTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8qIHNhdmUgc3RhcnQg
b2YgbGlzdCBvZiBleHBpcmVkIHRpbWVycyAqLw0KPiArICAgICAgICB0aW0gPSBwcml2cC0+cGVu
ZGluZ19oZWFkLnNsX25leHRbMF07DQo+ICsNCj4gKyAgICAgICAgLyogYnJlYWsgdGhlIGV4aXN0
aW5nIGxpc3QgYXQgY3VycmVudCB0aW1lIHBvaW50ICovDQo+ICsgICAgICAgIHRpbWVyX2dldF9w
cmV2X2VudHJpZXMoY3VyX3RpbWUsIHBvbGxfbGNvcmUsIHByZXYsDQo+ICsgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEtPnByaXZfdGltZXIpOw0KPiArICAgICAgICBmb3IgKGogPSBwcml2cC0+
Y3Vycl9za2lwbGlzdF9kZXB0aCAtIDE7IGogPj0gMDsgai0tKSB7DQo+ICsgICAgICAgICAgICBp
ZiAocHJldltqXSA9PSAmcHJpdnAtPnBlbmRpbmdfaGVhZCkNCj4gKyAgICAgICAgICAgICAgICBj
b250aW51ZTsNCj4gKyAgICAgICAgICAgIHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4dFtqXSA9
DQo+ICsgICAgICAgICAgICAgICAgcHJldltqXS0+c2xfbmV4dFtqXTsNCj4gKyAgICAgICAgICAg
IGlmIChwcmV2W2pdLT5zbF9uZXh0W2pdID09IE5VTEwpDQo+ICsgICAgICAgICAgICAgICAgcHJp
dnAtPmN1cnJfc2tpcGxpc3RfZGVwdGgtLTsNCj4gKw0KPiArICAgICAgICAgICAgcHJldltqXS0+
c2xfbmV4dFtqXSA9IE5VTEw7DQo+ICsgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAvKiB0cmFu
c2l0aW9uIHJ1bi1saXN0IGZyb20gUEVORElORyB0byBSVU5OSU5HICovDQo+ICsgICAgICAgIHJ1
bl9maXJzdF90aW1zW25iX3J1bmxpc3RzXSA9IHRpbTsNCj4gKyAgICAgICAgcnVubGlzdF9sY29y
ZV9pZHNbbmJfcnVubGlzdHNdID0gcG9sbF9sY29yZTsNCj4gKyAgICAgICAgcHByZXYgPSAmcnVu
X2ZpcnN0X3RpbXNbbmJfcnVubGlzdHNdOw0KPiArICAgICAgICBuYl9ydW5saXN0cysrOw0KPiAr
DQo+ICsgICAgICAgIGZvciAoIDsgdGltICE9IE5VTEw7IHRpbSA9IG5leHRfdGltKSB7DQo+ICsg
ICAgICAgICAgICBuZXh0X3RpbSA9IHRpbS0+c2xfbmV4dFswXTsNCj4gKw0KPiArICAgICAgICAg
ICAgcmV0ID0gdGltZXJfc2V0X3J1bm5pbmdfc3RhdGUodGltKTsNCj4gKyAgICAgICAgICAgIGlm
IChsaWtlbHkocmV0ID09IDApKSB7DQo+ICsgICAgICAgICAgICAgICAgcHByZXYgPSAmdGltLT5z
bF9uZXh0WzBdOw0KPiArICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgICAv
KiBhbm90aGVyIGNvcmUgaXMgdHJ5aW5nIHRvIHJlLWNvbmZpZyB0aGlzIG9uZSwNCj4gKyAgICAg
ICAgICAgICAgICAgKiByZW1vdmUgaXQgZnJvbSBsb2NhbCBleHBpcmVkIGxpc3QNCj4gKyAgICAg
ICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICAqcHByZXYgPSBuZXh0X3RpbTsNCj4g
KyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIC8qIHVwZGF0ZSB0
aGUgbmV4dCB0byBleHBpcmUgdGltZXIgdmFsdWUgKi8NCj4gKyAgICAgICAgcHJpdnAtPnBlbmRp
bmdfaGVhZC5leHBpcmUgPQ0KPiArICAgICAgICAgICAgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xf
bmV4dFswXSA9PSBOVUxMKSA/IDAgOg0KPiArICAgICAgICAgICAgcHJpdnAtPnBlbmRpbmdfaGVh
ZC5zbF9uZXh0WzBdLT5leHBpcmU7DQo+ICsNCj4gKyAgICAgICAgcnRlX3NwaW5sb2NrX3VubG9j
aygmcHJpdnAtPmxpc3RfbG9jayk7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgLyogTm93IHByb2Nl
c3MgdGhlIHJ1biBsaXN0cyAqLw0KPiArICAgIHdoaWxlICgxKSB7DQo+ICsgICAgICAgIGJvb2wg
ZG9uZSA9IHRydWU7DQo+ICsgICAgICAgIHVpbnQ2NF90IG1pbl9leHBpcmUgPSBVSU5UNjRfTUFY
Ow0KPiArICAgICAgICBpbnQgbWluX2lkeCA9IDA7DQo+ICsNCj4gKyAgICAgICAgLyogRmluZCB0
aGUgbmV4dCBvbGRlc3QgdGltZXIgdG8gcHJvY2VzcyAqLw0KPiArICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgbmJfcnVubGlzdHM7IGkrKykgew0KPiArICAgICAgICAgICAgdGltID0gcnVuX2ZpcnN0
X3RpbXNbaV07DQo+ICsNCj4gKyAgICAgICAgICAgIGlmICh0aW0gIT0gTlVMTCAmJiB0aW0tPmV4
cGlyZSA8IG1pbl9leHBpcmUpIHsNCj4gKyAgICAgICAgICAgICAgICBtaW5fZXhwaXJlID0gdGlt
LT5leHBpcmU7DQo+ICsgICAgICAgICAgICAgICAgbWluX2lkeCA9IGk7DQo+ICsgICAgICAgICAg
ICAgICAgZG9uZSA9IGZhbHNlOw0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsN
Cj4gKyAgICAgICAgaWYgKGRvbmUpDQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAg
ICAgICB0aW0gPSBydW5fZmlyc3RfdGltc1ttaW5faWR4XTsNCj4gKyAgICAgICAgcHJpdnAgPSAm
ZGF0YS0+cHJpdl90aW1lcltydW5saXN0X2xjb3JlX2lkc1ttaW5faWR4XV07DQo+ICsNCj4gKyAg
ICAgICAgLyogTW92ZSBkb3duIHRoZSBydW5saXN0IGZyb20gd2hpY2ggd2UgcGlja2VkIGEgdGlt
ZXIgdG8NCj4gKyAgICAgICAgICogZXhlY3V0ZQ0KPiArICAgICAgICAgKi8NCj4gKyAgICAgICAg
cnVuX2ZpcnN0X3RpbXNbbWluX2lkeF0gPSBydW5fZmlyc3RfdGltc1ttaW5faWR4XS0+c2xfbmV4
dFswXTsNCj4gKw0KPiArICAgICAgICBwcml2cC0+dXBkYXRlZCA9IDA7DQo+ICsgICAgICAgIHBy
aXZwLT5ydW5uaW5nX3RpbSA9IHRpbTsNCj4gKw0KPiArICAgICAgICAvKiBDYWxsIHRoZSBwcm92
aWRlZCBjYWxsYmFjayBmdW5jdGlvbiAqLw0KPiArICAgICAgICBmKHRpbSk7DQo+ICsNCj4gKyAg
ICAgICAgX19USU1FUl9TVEFUX0FERChwcml2cCwgcGVuZGluZywgLTEpOw0KPiArDQo+ICsgICAg
ICAgIC8qIHRoZSB0aW1lciB3YXMgc3RvcHBlZCBvciByZWxvYWRlZCBieSB0aGUgY2FsbGJhY2sN
Cj4gKyAgICAgICAgICogZnVuY3Rpb24sIHdlIGhhdmUgbm90aGluZyB0byBkbyBoZXJlDQo+ICsg
ICAgICAgICAqLw0KPiArICAgICAgICBpZiAocHJpdnAtPnVwZGF0ZWQgPT0gMSkNCj4gKyAgICAg
ICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ICsgICAgICAgIGlmICh0aW0tPnBlcmlvZCA9PSAwKSB7
DQo+ICsgICAgICAgICAgICAvKiByZW1vdmUgZnJvbSBkb25lIGxpc3QgYW5kIG1hcmsgdGltZXIg
YXMgc3RvcHBlZCAqLw0KPiArICAgICAgICAgICAgc3RhdHVzLnN0YXRlID0gUlRFX1RJTUVSX1NU
T1A7DQo+ICsgICAgICAgICAgICBzdGF0dXMub3duZXIgPSBSVEVfVElNRVJfTk9fT1dORVI7DQo+
ICsgICAgICAgICAgICBydGVfd21iKCk7DQo+ICsgICAgICAgICAgICB0aW0tPnN0YXR1cy51MzIg
PSBzdGF0dXMudTMyOw0KPiArICAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgLyoga2Vl
cCBpdCBpbiBsaXN0IGFuZCBtYXJrIHRpbWVyIGFzIHBlbmRpbmcgKi8NCj4gKyAgICAgICAgICAg
IHJ0ZV9zcGlubG9ja19sb2NrKA0KPiArICAgICAgICAgICAgICAgICZkYXRhLT5wcml2X3RpbWVy
W3RoaXNfbGNvcmVdLmxpc3RfbG9jayk7DQo+ICsgICAgICAgICAgICBzdGF0dXMuc3RhdGUgPSBS
VEVfVElNRVJfUEVORElORzsNCj4gKyAgICAgICAgICAgIF9fVElNRVJfU1RBVF9BREQoZGF0YS0+
cHJpdl90aW1lciwgcGVuZGluZywgMSk7DQo+ICsgICAgICAgICAgICBzdGF0dXMub3duZXIgPSAo
aW50MTZfdCl0aGlzX2xjb3JlOw0KPiArICAgICAgICAgICAgcnRlX3dtYigpOw0KPiArICAgICAg
ICAgICAgdGltLT5zdGF0dXMudTMyID0gc3RhdHVzLnUzMjsNCj4gKyAgICAgICAgICAgIF9fcnRl
X3RpbWVyX3Jlc2V0KHRpbSwgdGltLT5leHBpcmUgKyB0aW0tPnBlcmlvZCwNCj4gKyAgICAgICAg
ICAgICAgICB0aW0tPnBlcmlvZCwgdGhpc19sY29yZSwgdGltLT5mLCB0aW0tPmFyZywgMSwNCj4g
KyAgICAgICAgICAgICAgICBkYXRhKTsNCj4gKyAgICAgICAgICAgIHJ0ZV9zcGlubG9ja191bmxv
Y2soDQo+ICsgICAgICAgICAgICAgICAgJmRhdGEtPnByaXZfdGltZXJbdGhpc19sY29yZV0ubGlz
dF9sb2NrKTsNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgIHByaXZwLT5ydW5uaW5nX3Rp
bSA9IE5VTEw7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g
LyogZHVtcCBzdGF0aXN0aWNzIGFib3V0IHRpbWVycyAqLw0KPiAtdm9pZCBydGVfdGltZXJfZHVt
cF9zdGF0cyhGSUxFICpmKQ0KPiArc3RhdGljIHZvaWQNCj4gK19fcnRlX3RpbWVyX2R1bXBfc3Rh
dHMoc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0aW1lcl9kYXRhIF9fcnRlX3VudXNlZCwgRklMRSAq
ZikNCj4gew0KPiAjaWZkZWYgUlRFX0xJQlJURV9USU1FUl9ERUJVRw0KPiAgICBzdHJ1Y3QgcnRl
X3RpbWVyX2RlYnVnX3N0YXRzIHN1bTsNCj4gICAgdW5zaWduZWQgbGNvcmVfaWQ7DQo+ICsgICAg
c3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIgPSB0aW1lcl9kYXRhLT5wcml2X3RpbWVyOw0K
PiANCj4gICAgbWVtc2V0KCZzdW0sIDAsIHNpemVvZihzdW0pKTsNCj4gICAgZm9yIChsY29yZV9p
ZCA9IDA7IGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRTsgbGNvcmVfaWQrKykgew0KPiBAQCAtNjE1
LDMgKzEwMjQsMzEgQEAgdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpmKQ0KPiAgICBm
cHJpbnRmKGYsICJObyB0aW1lciBzdGF0aXN0aWNzLCBSVEVfTElCUlRFX1RJTUVSX0RFQlVHIGlz
IGRpc2FibGVkXG4iKTsNCj4gI2VuZGlmDQo+IH0NCj4gKw0KPiArdm9pZA0KPiArcnRlX3RpbWVy
X2R1bXBfc3RhdHNfdjIwKEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgX19ydGVfdGltZXJfZHVtcF9z
dGF0cygmZGVmYXVsdF90aW1lcl9kYXRhLCBmKTsNCj4gK30NCj4gK1ZFUlNJT05fU1lNQk9MKHJ0
ZV90aW1lcl9kdW1wX3N0YXRzLCBfdjIwLCAyLjApOw0KPiArDQo+ICtpbnQNCj4gK3J0ZV90aW1l
cl9kdW1wX3N0YXRzX3YxOTA1KEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgcmV0dXJuIHJ0ZV90aW1l
cl9hbHRfZHVtcF9zdGF0cyhkZWZhdWx0X2RhdGFfaWQsIGYpOw0KPiArfQ0KPiArTUFQX1NUQVRJ
Q19TWU1CT0woaW50IHJ0ZV90aW1lcl9kdW1wX3N0YXRzKEZJTEUgKmYpLA0KPiArICAgICAgICAg
IHJ0ZV90aW1lcl9kdW1wX3N0YXRzX3YxOTA1KTsNCj4gK0JJTkRfREVGQVVMVF9TWU1CT0wocnRl
X3RpbWVyX2R1bXBfc3RhdHMsIF92MTkwNSwgMTkuMDUpOw0KPiArDQo+ICtpbnQgX19ydGVfZXhw
ZXJpbWVudGFsDQo+ICtydGVfdGltZXJfYWx0X2R1bXBfc3RhdHModWludDMyX3QgdGltZXJfZGF0
YV9pZCBfX3J0ZV91bnVzZWQsIEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgc3RydWN0IHJ0ZV90aW1l
cl9kYXRhICp0aW1lcl9kYXRhOw0KPiArDQo+ICsgICAgVElNRVJfREFUQV9WQUxJRF9HRVRfT1Jf
RVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCj4gKw0KPiArICAg
IF9fcnRlX3RpbWVyX2R1bXBfc3RhdHModGltZXJfZGF0YSwgZik7DQo+ICsNCj4gKyAgICByZXR1
cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmgg
Yi9saWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5oDQo+IGluZGV4IDliOTVjZDIuLmJlZTE2NzYg
MTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmgNCj4gKysrIGIvbGli
L2xpYnJ0ZV90aW1lci9ydGVfdGltZXIuaA0KPiBAQCAtMzksNiArMzksNyBAQA0KPiAjaW5jbHVk
ZSA8c3RkZGVmLmg+DQo+ICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ICNpbmNsdWRlIDxydGVf
Y29uZmlnLmg+DQo+ICsjaW5jbHVkZSA8cnRlX3NwaW5sb2NrLmg+DQo+IA0KPiAjaWZkZWYgX19j
cGx1c3BsdXMNCj4gZXh0ZXJuICJDIiB7DQo+IEBAIC0xMzIsMTIgKzEzMyw2OCBAQCBzdHJ1Y3Qg
cnRlX3RpbWVyDQo+ICNlbmRpZg0KPiANCj4gLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIg
RVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+
ICsgKg0KPiArICogQWxsb2NhdGUgYSB0aW1lciBkYXRhIGluc3RhbmNlIGluIHNoYXJlZCBtZW1v
cnkgdG8gdHJhY2sgYSBzZXQgb2YgcGVuZGluZw0KPiArICogdGltZXIgbGlzdHMuDQo+ICsgKg0K
PiArICogQHBhcmFtIGlkX3B0cg0KPiArICogICBQb2ludGVyIHRvIHZhcmlhYmxlIGludG8gd2hp
Y2ggdG8gd3JpdGUgdGhlIGlkZW50aWZpZXIgb2YgdGhlIGFsbG9jYXRlZA0KPiArICogICB0aW1l
ciBkYXRhIGluc3RhbmNlLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNj
ZXNzDQo+ICsgKiAgIC0gLUVOT1NQQzogbWF4aW11bSBudW1iZXIgb2YgdGltZXIgZGF0YSBpbnN0
YW5jZXMgYWxyZWFkeSBhbGxvY2F0ZWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4cGVyaW1lbnRh
bCBydGVfdGltZXJfZGF0YV9hbGxvYyh1aW50MzJfdCAqaWRfcHRyKTsNCj4gKw0KPiArLyoqDQo+
ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdl
IHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogRGVhbGxvY2F0ZSBhIHRpbWVyIGRh
dGEgaW5zdGFuY2UuDQo+ICsgKg0KPiArICogQHBhcmFtIGlkDQo+ICsgKiAgIElkZW50aWZpZXIg
b2YgdGhlIHRpbWVyIGRhdGEgaW5zdGFuY2UgdG8gZGVhbGxvY2F0ZS4NCj4gKyAqDQo+ICsgKiBA
cmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FSU5WQUw6IGludmFsaWQg
dGltZXIgZGF0YSBpbnN0YW5jZSBpZGVudGlmaWVyDQo+ICsgKi8NCj4gK2ludCBfX3J0ZV9leHBl
cmltZW50YWwgcnRlX3RpbWVyX2RhdGFfZGVhbGxvYyh1aW50MzJfdCBpZCk7DQo+ICsNCj4gKy8q
Kg0KPiAgKiBJbml0aWFsaXplIHRoZSB0aW1lciBsaWJyYXJ5Lg0KPiAgKg0KPiAgKiBJbml0aWFs
aXplcyBpbnRlcm5hbCB2YXJpYWJsZXMgKGxpc3QsIGxvY2tzIGFuZCBzbyBvbikgZm9yIHRoZSBS
VEUNCj4gICogdGltZXIgbGlicmFyeS4NCj4gICovDQo+IC12b2lkIHJ0ZV90aW1lcl9zdWJzeXN0
ZW1faW5pdCh2b2lkKTsNCj4gK3ZvaWQgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YyMCh2b2lk
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBJbml0aWFsaXplIHRoZSB0aW1lciBsaWJyYXJ5Lg0KPiAr
ICoNCj4gKyAqIEluaXRpYWxpemVzIGludGVybmFsIHZhcmlhYmxlcyAobGlzdCwgbG9ja3MgYW5k
IHNvIG9uKSBmb3IgdGhlIFJURQ0KPiArICogdGltZXIgbGlicmFyeS4NCj4gKyAqDQo+ICsgKiBA
cmV0dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FRVhJU1Q6IFJldHVybmVk
IGluIHNlY29uZGFyeSBwcm9jZXNzIHdoZW4gcHJpbWFyeSBwcm9jZXNzIGhhcyBub3QNCj4gKyAq
ICAgICAgeWV0IGluaXRpYWxpemVkIHRoZSB0aW1lciBzdWJzeXN0ZW0NCj4gKyAqICAgLSAtRU5P
TUVNOiBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IG5lZWRlZCB0byBpbml0aWFsaXplIHRpbWVy
DQo+ICsgKiAgICAgIHN1YnN5c3RlbQ0KPiArICovDQo+ICtpbnQgcnRlX3RpbWVyX3N1YnN5c3Rl
bV9pbml0X3YxOTA1KHZvaWQpOw0KPiAraW50IHJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdCh2b2lk
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0
aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogRnJl
ZSB0aW1lciBzdWJzeXN0ZW0gcmVzb3VyY2VzLg0KPiArICovDQo+ICt2b2lkIF9fcnRlX2V4cGVy
aW1lbnRhbCBydGVfdGltZXJfc3Vic3lzdGVtX2ZpbmFsaXplKHZvaWQpOw0KPiANCj4gLyoqDQo+
ICAqIEluaXRpYWxpemUgYSB0aW1lciBoYW5kbGUuDQo+IEBAIC0xOTMsNiArMjUwLDEyIEBAIHZv
aWQgcnRlX3RpbWVyX2luaXQoc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gICogICAtIDA6IFN1
Y2Nlc3M7IHRoZSB0aW1lciBpcyBzY2hlZHVsZWQuDQo+ICAqICAgLSAoLTEpOiBUaW1lciBpcyBp
biB0aGUgUlVOTklORyBvciBDT05GSUcgc3RhdGUuDQo+ICAqLw0KPiAraW50IHJ0ZV90aW1lcl9y
ZXNldF92MjAoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNrcywNCj4gKyAgICAg
ICAgICAgIGVudW0gcnRlX3RpbWVyX3R5cGUgdHlwZSwgdW5zaWduZWQgaW50IHRpbV9sY29yZSwN
Cj4gKyAgICAgICAgICAgIHJ0ZV90aW1lcl9jYl90IGZjdCwgdm9pZCAqYXJnKTsNCj4gK2ludCBy
dGVfdGltZXJfcmVzZXRfdjE5MDUoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNr
cywNCj4gKyAgICAgICAgICAgICAgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLCB1bnNpZ25lZCBp
bnQgdGltX2xjb3JlLA0KPiArICAgICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQg
KmFyZyk7DQo+IGludCBydGVfdGltZXJfcmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50
NjRfdCB0aWNrcywNCj4gICAgICAgICAgICBlbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2ln
bmVkIHRpbV9sY29yZSwNCj4gICAgICAgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFy
Zyk7DQo+IEBAIC0yNTIsOSArMzE1LDEwIEBAIHJ0ZV90aW1lcl9yZXNldF9zeW5jKHN0cnVjdCBy
dGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQo+ICAqICAgLSAwOiBTdWNjZXNzOyB0aGUg
dGltZXIgaXMgc3RvcHBlZC4NCj4gICogICAtICgtMSk6IFRoZSB0aW1lciBpcyBpbiB0aGUgUlVO
TklORyBvciBDT05GSUcgc3RhdGUuDQo+ICAqLw0KPiAraW50IHJ0ZV90aW1lcl9zdG9wX3YyMChz
dHJ1Y3QgcnRlX3RpbWVyICp0aW0pOw0KPiAraW50IHJ0ZV90aW1lcl9zdG9wX3YxOTA1KHN0cnVj
dCBydGVfdGltZXIgKnRpbSk7DQo+IGludCBydGVfdGltZXJfc3RvcChzdHJ1Y3QgcnRlX3RpbWVy
ICp0aW0pOw0KPiANCj4gLQ0KPiAvKioNCj4gICogTG9vcCB1bnRpbCBydGVfdGltZXJfc3RvcCgp
IHN1Y2NlZWRzLg0KPiAgKg0KPiBAQCAtMjkyLDcgKzM1NiwyNSBAQCBpbnQgcnRlX3RpbWVyX3Bl
bmRpbmcoc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gICogZnVuY3Rpb24uIEhvd2V2ZXIsIHRo
ZSBtb3JlIG9mdGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBtb3JlDQo+ICAqIENQVSBy
ZXNvdXJjZXMgaXQgd2lsbCB1c2UuDQo+ICAqLw0KPiAtdm9pZCBydGVfdGltZXJfbWFuYWdlKHZv
aWQpOw0KPiArdm9pZCBydGVfdGltZXJfbWFuYWdlX3YyMCh2b2lkKTsNCj4gKw0KPiArLyoqDQo+
ICsgKiBNYW5hZ2UgdGhlIHRpbWVyIGxpc3QgYW5kIGV4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb25z
Lg0KPiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5
IGZyb20gRUFMIGxjb3Jlcw0KPiArICogbWFpbl9sb29wKCkuIEl0IGJyb3dzZXMgdGhlIGxpc3Qg
b2YgcGVuZGluZyB0aW1lcnMgYW5kIHJ1bnMgYWxsDQo+ICsgKiB0aW1lcnMgdGhhdCBhcmUgZXhw
aXJlZC4NCj4gKyAqDQo+ICsgKiBUaGUgcHJlY2lzaW9uIG9mIHRoZSB0aW1lciBkZXBlbmRzIG9u
IHRoZSBjYWxsIGZyZXF1ZW5jeSBvZiB0aGlzDQo+ICsgKiBmdW5jdGlvbi4gSG93ZXZlciwgdGhl
IG1vcmUgb2Z0ZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIG1vcmUNCj4gKyAqIENQVSBy
ZXNvdXJjZXMgaXQgd2lsbCB1c2UuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIDA6
IFN1Y2Nlc3MNCj4gKyAqICAgLSAtRUlOVkFMOiB0aW1lciBzdWJzeXN0ZW0gbm90IHlldCBpbml0
aWFsaXplZA0KPiArICovDQo+ICtpbnQgcnRlX3RpbWVyX21hbmFnZV92MTkwNSh2b2lkKTsNCj4g
K2ludCBydGVfdGltZXJfbWFuYWdlKHZvaWQpOw0KPiANCj4gLyoqDQo+ICAqIER1bXAgc3RhdGlz
dGljcyBhYm91dCB0aW1lcnMuDQo+IEBAIC0zMDAsNyArMzgyLDE0MyBAQCB2b2lkIHJ0ZV90aW1l
cl9tYW5hZ2Uodm9pZCk7DQo+ICAqIEBwYXJhbSBmDQo+ICAqICAgQSBwb2ludGVyIHRvIGEgZmls
ZSBmb3Igb3V0cHV0DQo+ICAqLw0KPiAtdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpm
KTsNCj4gK3ZvaWQgcnRlX3RpbWVyX2R1bXBfc3RhdHNfdjIwKEZJTEUgKmYpOw0KPiArDQo+ICsv
KioNCj4gKyAqIER1bXAgc3RhdGlzdGljcyBhYm91dCB0aW1lcnMuDQo+ICsgKg0KPiArICogQHBh
cmFtIGYNCj4gKyAqICAgQSBwb2ludGVyIHRvIGEgZmlsZSBmb3Igb3V0cHV0DQo+ICsgKiBAcmV0
dXJuDQo+ICsgKiAgIC0gMDogU3VjY2Vzcw0KPiArICogICAtIC1FSU5WQUw6IHRpbWVyIHN1YnN5
c3RlbSBub3QgeWV0IGluaXRpYWxpemVkDQo+ICsgKi8NCj4gK2ludCBydGVfdGltZXJfZHVtcF9z
dGF0c192MTkwNShGSUxFICpmKTsNCj4gK2ludCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpm
KTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0
aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogVGhp
cyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBydGVfdGltZXJfcmVzZXQoKSwgZXhjZXB0IHRoYXQg
aXQgYWxsb3dzIGENCj4gKyAqIGNhbGxlciB0byBzcGVjaWZ5IHRoZSBydGVfdGltZXJfZGF0YSBp
bnN0YW5jZSBjb250YWluaW5nIHRoZSBsaXN0IHRvIHdoaWNoDQo+ICsgKiB0aGUgdGltZXIgc2hv
dWxkIGJlIGFkZGVkLg0KPiArICoNCj4gKyAqIEBzZWUgcnRlX3RpbWVyX3Jlc2V0KCkNCj4gKyAq
DQo+ICsgKiBAcGFyYW0gdGltZXJfZGF0YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGlj
YXRpbmcgd2hpY2ggaW5zdGFuY2Ugb2YgdGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4g
KyAqICAgdGhpcyBvcGVyYXRpb24uDQo+ICsgKiBAcGFyYW0gdGltDQo+ICsgKiAgIFRoZSB0aW1l
ciBoYW5kbGUuDQo+ICsgKiBAcGFyYW0gdGlja3MNCj4gKyAqICAgVGhlIG51bWJlciBvZiBjeWNs
ZXMgKHNlZSBydGVfZ2V0X2hwZXRfaHooKSkgYmVmb3JlIHRoZSBjYWxsYmFjaw0KPiArICogICBm
dW5jdGlvbiBpcyBjYWxsZWQuDQo+ICsgKiBAcGFyYW0gdHlwZQ0KPiArICogICBUaGUgdHlwZSBj
YW4gYmUgZWl0aGVyOg0KPiArICogICAtIFBFUklPRElDQUw6IFRoZSB0aW1lciBpcyBhdXRvbWF0
aWNhbGx5IHJlbG9hZGVkIGFmdGVyIGV4ZWN1dGlvbg0KPiArICogICAgIChyZXR1cm5zIHRvIHRo
ZSBQRU5ESU5HIHN0YXRlKQ0KPiArICogICAtIFNJTkdMRTogVGhlIHRpbWVyIGlzIG9uZS1zaG90
LCB0aGF0IGlzLCB0aGUgdGltZXIgZ29lcyB0byBhDQo+ICsgKiAgICAgU1RPUFBFRCBzdGF0ZSBh
ZnRlciBleGVjdXRpb24uDQo+ICsgKiBAcGFyYW0gdGltX2xjb3JlDQo+ICsgKiAgIFRoZSBJRCBv
ZiB0aGUgbGNvcmUgd2hlcmUgdGhlIHRpbWVyIGNhbGxiYWNrIGZ1bmN0aW9uIGhhcyB0byBiZQ0K
PiArICogICBleGVjdXRlZC4gSWYgdGltX2xjb3JlIGlzIExDT1JFX0lEX0FOWSwgdGhlIHRpbWVy
IGxpYnJhcnkgd2lsbA0KPiArICogICBsYXVuY2ggaXQgb24gYSBkaWZmZXJlbnQgY29yZSBmb3Ig
ZWFjaCBjYWxsIChyb3VuZC1yb2JpbikuDQo+ICsgKiBAcGFyYW0gZmN0DQo+ICsgKiAgIFRoZSBj
YWxsYmFjayBmdW5jdGlvbiBvZiB0aGUgdGltZXIuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBOVUxM
IGlmIChhbmQNCj4gKyAqICAgb25seSBpZikgcnRlX3RpbWVyX2FsdF9tYW5hZ2UoKSB3aWxsIGJl
IHVzZWQgdG8gbWFuYWdlIHRoaXMgdGltZXIuDQo+ICsgKiBAcGFyYW0gYXJnDQo+ICsgKiAgIFRo
ZSB1c2VyIGFyZ3VtZW50IG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4NCj4gKyAqIEByZXR1cm4N
Cj4gKyAqICAgLSAwOiBTdWNjZXNzOyB0aGUgdGltZXIgaXMgc2NoZWR1bGVkLg0KPiArICogICAt
ICgtMSk6IFRpbWVyIGlzIGluIHRoZSBSVU5OSU5HIG9yIENPTkZJRyBzdGF0ZS4NCj4gKyAqICAg
LSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFfaWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4
cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2FsdF9yZXNldCh1aW50MzJfdCB0aW1lcl9kYXRhX2lk
LCBzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sDQo+ICsgICAgICAgICAgICB1aW50NjRfdCB0aWNrcywg
ZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KPiArICAgICAgICAgICAgdW5zaWduZWQgaW50IHRp
bV9sY29yZSwgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICphcmcpOw0KPiArDQo+ICsvKioNCj4g
KyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ug
d2l0aG91dCBwcmlvciBub3RpY2UNCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBz
YW1lIGFzIHJ0ZV90aW1lcl9zdG9wKCksIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBhDQo+ICsgKiBj
YWxsZXIgdG8gc3BlY2lmeSB0aGUgcnRlX3RpbWVyX2RhdGEgaW5zdGFuY2UgY29udGFpbmluZyB0
aGUgbGlzdCBmcm9tIHdoaWNoDQo+ICsgKiB0aGlzIHRpbWVyIHNob3VsZCBiZSByZW1vdmVkLg0K
PiArICoNCj4gKyAqIEBzZWUgcnRlX3RpbWVyX3N0b3AoKQ0KPiArICoNCj4gKyAqIEBwYXJhbSB0
aW1lcl9kYXRhX2lkDQo+ICsgKiAgIEFuIGlkZW50aWZpZXIgaW5kaWNhdGluZyB3aGljaCBpbnN0
YW5jZSBvZiB0aW1lciBkYXRhIHNob3VsZCBiZSB1c2VkIGZvcg0KPiArICogICB0aGlzIG9wZXJh
dGlvbi4NCj4gKyAqIEBwYXJhbSB0aW0NCj4gKyAqICAgVGhlIHRpbWVyIGhhbmRsZS4NCj4gKyAq
IEByZXR1cm4NCj4gKyAqICAgLSAwOiBTdWNjZXNzOyB0aGUgdGltZXIgaXMgc3RvcHBlZC4NCj4g
KyAqICAgLSAoLTEpOiBUaGUgdGltZXIgaXMgaW4gdGhlIFJVTk5JTkcgb3IgQ09ORklHIHN0YXRl
Lg0KPiArICogICAtIC1FSU5WQUw6IGludmFsaWQgdGltZXJfZGF0YV9pZA0KPiArICovDQo+ICtp
bnQgX19ydGVfZXhwZXJpbWVudGFsDQo+ICtydGVfdGltZXJfYWx0X3N0b3AodWludDMyX3QgdGlt
ZXJfZGF0YV9pZCwgc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBD
YWxsYmFjayBmdW5jdGlvbiB0eXBlIGZvciBydGVfdGltZXJfYWx0X21hbmFnZSgpLg0KPiArICov
DQo+ICt0eXBlZGVmIHZvaWQgKCpydGVfdGltZXJfYWx0X21hbmFnZV9jYl90KSh2b2lkICopOw0K
PiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMg
QVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4gKyAqDQo+ICsgKiBNYW5hZ2Ug
YSBzZXQgb2YgdGltZXIgbGlzdHMgYW5kIGV4ZWN1dGUgdGhlIHNwZWNpZmllZCBjYWxsYmFjayBm
dW5jdGlvbiBmb3INCj4gKyAqIGFsbCBleHBpcmVkIHRpbWVycy4gVGhpcyBmdW5jdGlvbiBpcyBz
aW1pbGFyIHRvIHJ0ZV90aW1lcl9tYW5hZ2UoKSwgZXhjZXB0DQo+ICsgKiB0aGF0IGl0IGFsbG93
cyBhIGNhbGxlciB0byBzcGVjaWZ5IHRoZSB0aW1lcl9kYXRhIGluc3RhbmNlIHRoYXQgc2hvdWxk
DQo+ICsgKiBiZSBvcGVyYXRlZCBvbiwgYXMgd2VsbCBhcyBhIHNldCBvZiBsY29yZSBJRHMgaWRl
bnRpZnlpbmcgd2hpY2ggdGltZXIgbGlzdHMNCj4gKyAqIHNob3VsZCBiZSBwcm9jZXNzZWQuICBD
YWxsYmFjayBmdW5jdGlvbnMgb2YgaW5kaXZpZHVhbCB0aW1lcnMgYXJlIGlnbm9yZWQuDQo+ICsg
Kg0KPiArICogQHNlZSBydGVfdGltZXJfbWFuYWdlKCkNCj4gKyAqDQo+ICsgKiBAcGFyYW0gdGlt
ZXJfZGF0YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGljYXRpbmcgd2hpY2ggaW5zdGFu
Y2Ugb2YgdGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4gKyAqICAgdGhpcyBvcGVyYXRp
b24uDQo+ICsgKiBAcGFyYW0gcG9sbF9sY29yZXMNCj4gKyAqICAgQW4gYXJyYXkgb2YgbGNvcmUg
aWRzIGlkZW50aWZ5aW5nIHRoZSB0aW1lciBsaXN0cyB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQu
DQo+ICsgKiAgIE5VTEwgaXMgYWxsb3dlZCAtIGlmIE5VTEwsIHRoZSB0aW1lciBsaXN0IGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGxjb3JlDQo+ICsgKiAgIGNhbGxpbmcgdGhpcyByb3V0aW5lIGlzIHBy
b2Nlc3NlZCAoc2FtZSBhcyBydGVfdGltZXJfbWFuYWdlKCkpLg0KPiArICogQHBhcmFtIG5fcG9s
bF9sY29yZXMNCj4gKyAqICAgVGhlIHNpemUgb2YgdGhlIHBvbGxfbGNvcmVzIGFycmF5LiBJZiAn
cG9sbF9sY29yZXMnIGlzIE5VTEwsIHRoaXMgcGFyYW1ldGVyDQo+ICsgKiAgIGlzIGlnbm9yZWQu
DQo+ICsgKiBAcGFyYW0gZg0KPiArICogICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggc2hv
dWxkIGJlIGNhbGxlZCBmb3IgYWxsIGV4cGlyZWQgdGltZXJzLg0KPiArICogQHJldHVybg0KPiAr
ICogICAtIDA6IHN1Y2Nlc3MNCj4gKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFf
aWQNCj4gKyAqLw0KPiAraW50IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiArcnRlX3RpbWVyX2FsdF9t
YW5hZ2UodWludDMyX3QgdGltZXJfZGF0YV9pZCwgdW5zaWduZWQgaW50ICpwb2xsX2xjb3JlcywN
Cj4gKyAgICAgICAgICAgICBpbnQgbl9wb2xsX2xjb3JlcywgcnRlX3RpbWVyX2FsdF9tYW5hZ2Vf
Y2JfdCBmKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVO
VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiAr
ICogVGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBydGVfdGltZXJfZHVtcF9zdGF0cygpLCBl
eGNlcHQgdGhhdCBpdCBhbGxvd3MNCj4gKyAqIHRoZSBjYWxsZXIgdG8gc3BlY2lmeSB0aGUgcnRl
X3RpbWVyX2RhdGEgaW5zdGFuY2UgdGhhdCBzaG91bGQgYmUgdXNlZC4NCj4gKyAqDQo+ICsgKiBA
c2VlIHJ0ZV90aW1lcl9kdW1wX3N0YXRzKCkNCj4gKyAqDQo+ICsgKiBAcGFyYW0gdGltZXJfZGF0
YV9pZA0KPiArICogICBBbiBpZGVudGlmaWVyIGluZGljYXRpbmcgd2hpY2ggaW5zdGFuY2Ugb2Yg
dGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCj4gKyAqICAgdGhpcyBvcGVyYXRpb24uDQo+
ICsgKiBAcGFyYW0gZg0KPiArICogICBBIHBvaW50ZXIgdG8gYSBmaWxlIGZvciBvdXRwdXQNCj4g
KyAqIEByZXR1cm4NCj4gKyAqICAgLSAwOiBzdWNjZXNzDQo+ICsgKiAgIC0gLUVJTlZBTDogaW52
YWxpZCB0aW1lcl9kYXRhX2lkDQo+ICsgKi8NCj4gK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCj4g
K3J0ZV90aW1lcl9hbHRfZHVtcF9zdGF0cyh1aW50MzJfdCB0aW1lcl9kYXRhX2lkLCBGSUxFICpm
KTsNCj4gDQo+ICNpZmRlZiBfX2NwbHVzcGx1cw0KPiB9DQo+IGRpZmYgLS1naXQgYS9saWIvbGli
cnRlX3RpbWVyL3J0ZV90aW1lcl92ZXJzaW9uLm1hcCBiL2xpYi9saWJydGVfdGltZXIvcnRlX3Rp
bWVyX3ZlcnNpb24ubWFwDQo+IGluZGV4IDliMmU0YjguLmMyZTU4MzYgMTAwNjQ0DQo+IC0tLSBh
L2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24ubWFwDQo+ICsrKyBiL2xpYi9saWJy
dGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24ubWFwDQo+IEBAIC0xMywzICsxMywyNSBAQCBEUERL
XzIuMCB7DQo+IA0KPiAgICBsb2NhbDogKjsNCj4gfTsNCj4gKw0KPiArRFBES18xOS4wNSB7DQo+
ICsgICAgZ2xvYmFsOg0KPiArDQo+ICsgICAgcnRlX3RpbWVyX2R1bXBfc3RhdHM7DQo+ICsgICAg
cnRlX3RpbWVyX21hbmFnZTsNCj4gKyAgICBydGVfdGltZXJfcmVzZXQ7DQo+ICsgICAgcnRlX3Rp
bWVyX3N0b3A7DQo+ICsgICAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0Ow0KPiArfSBEUERLXzIu
MDsNCj4gKw0KPiArRVhQRVJJTUVOVEFMIHsNCj4gKyAgICBnbG9iYWw6DQo+ICsNCj4gKyAgICBy
dGVfdGltZXJfYWx0X2R1bXBfc3RhdHM7DQo+ICsgICAgcnRlX3RpbWVyX2FsdF9tYW5hZ2U7DQo+
ICsgICAgcnRlX3RpbWVyX2FsdF9yZXNldDsNCj4gKyAgICBydGVfdGltZXJfYWx0X3N0b3A7DQo+
ICsgICAgcnRlX3RpbWVyX2RhdGFfYWxsb2M7DQo+ICsgICAgcnRlX3RpbWVyX2RhdGFfZGVhbGxv
YzsNCj4gKyAgICBydGVfdGltZXJfc3Vic3lzdGVtX2ZpbmFsaXplOw0KPiArfTsNCj4gLS0gDQo+
IDIuNi40DQo+IA0KPiANCg==