From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 3003C74003A for ; Fri, 10 Nov 2023 23:59:49 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=uiNdE/HPMX/kVsXsKoIhumPgS+HxF4I2JxsyTV79yqY=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1699660787; v=1; b=HAw+lGbDaSXyrGVqaKENBsxaINEwMV3oGKPl5aBVayg2S3xC1eUqs7shwX4sxgPtFwnW8m13 IEQAnnkX/gu3Yq9pEWME9Qmaidrc/dcXLB+QiKvVgzxLQ333/Sqhg/LYaRTCk1CqxhWcfr1RCn+ t2Kzut0eBft1veflLSAvujBs= X-Received: by 127.0.0.2 with SMTP id IkzYYY7687511xblQVTFRa2a; Fri, 10 Nov 2023 15:59:47 -0800 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web11.42856.1699660785334463012 for ; Fri, 10 Nov 2023 15:59:45 -0800 X-Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-483-mXpYmzvbOPem7gvG9PRQ_g-1; Fri, 10 Nov 2023 18:59:43 -0500 X-MC-Unique: mXpYmzvbOPem7gvG9PRQ_g-1 X-Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CCA0C3813F29; Fri, 10 Nov 2023 23:59:42 +0000 (UTC) X-Received: from lacos-laptop-9.usersys.redhat.com (unknown [10.39.192.173]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD708C15983; Fri, 10 Nov 2023 23:59:41 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Gerd Hoffmann , Jiewen Yao Subject: [edk2-devel] [PATCH 32/37] OvmfPkg: remove 8254TimerDxe Date: Sat, 11 Nov 2023 00:58:15 +0100 Message-Id: <20231110235820.644381-33-lersek@redhat.com> In-Reply-To: <20231110235820.644381-1-lersek@redhat.com> References: <20231110235820.644381-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: aLKHBcmvuiklyUqrTH51JDDSx7686176AA= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII"; x-default=true X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=HAw+lGbD; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=redhat.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io ODI1NFRpbWVyRHhlIGlzIG5vdCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgYXQgdGhpcyBwb2ludCwg cmVtb3ZlIGl0LgoKVGhpcyBwYXRjaCByZW1vdmVzIG1lbnRpb25zIG9mIHRoZSBmb2xsb3dpbmcg Q1NNIHJlc291cmNlcyBmcm9tIHRoZSBzb3VyY2UKY29kZToKCi0gR1VJRHMgKHByb3RvY29scyBv ciBvdGhlcndpc2UpOgogIC0gZ0VmaUxlZ2FjeTgyNTlQcm90b2NvbEd1aWQKCi0gaGVhZGVyczoK ICAtIFByb3RvY29sL0xlZ2FjeTgyNTkuaAoKd2hpY2ggZXh0ZW5kcyB0aGUgbGlzdCBvZiByZXNv dXJjZXMgc2NoZWR1bGVkIGZvciByZW1vdmFsIHRvOgoKLSBHVUlEcyAocHJvdG9jb2xzIG9yIG90 aGVyd2lzZSk6CiAgLSBnRWZpTGVnYWN5ODI1OVByb3RvY29sR3VpZAoKLSBoZWFkZXJzOgogIC0g UHJvdG9jb2wvTGVnYWN5ODI1OS5oCgpDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZGIrdGlhbm9jb3Jl QGtlcm5lbC5vcmc+CkNjOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KQ2M6IEpp ZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU4OApTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPgotLS0KIE92bWZQa2cvODI1NFRpbWVyRHhlL1RpbWVyLnVu aSAgICAgIHwgIDE2IC0KIE92bWZQa2cvODI1NFRpbWVyRHhlL1RpbWVyRXh0cmEudW5pIHwgIDE0 IC0KIE92bWZQa2cvODI1NFRpbWVyRHhlLzgyNTRUaW1lci5pbmYgIHwgIDQzIC0tLQogT3ZtZlBr Zy84MjU0VGltZXJEeGUvVGltZXIuaCAgICAgICAgfCAxODYgLS0tLS0tLS0tCiBPdm1mUGtnLzgy NTRUaW1lckR4ZS9UaW1lci5jICAgICAgICB8IDQwNiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogNSBm aWxlcyBjaGFuZ2VkLCA2NjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy84MjU0 VGltZXJEeGUvVGltZXIudW5pIGIvT3ZtZlBrZy84MjU0VGltZXJEeGUvVGltZXIudW5pCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjNkMzVmNGUxY2QuLjAwMDAwMDAwMDAwMAotLS0g YS9Pdm1mUGtnLzgyNTRUaW1lckR4ZS9UaW1lci51bmkKKysrIC9kZXYvbnVsbApAQCAtMSwxNiAr MCwwIEBACi0vLyAvKiogQGZpbGUNCi0vLyA4MjU0IHRpbWVyIGRyaXZlciB0aGF0IHByb3ZpZGVz IFRpbWVyIEFyY2ggcHJvdG9jb2wuDQotLy8NCi0vLyA4MjU0IHRpbWVyIGRyaXZlciB0aGF0IHBy b3ZpZGVzIFRpbWVyIEFyY2ggcHJvdG9jb2wuDQotLy8NCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDUg LSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotLy8N Ci0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KLS8vDQot Ly8gKiovDQotDQotDQotI3N0cmluZyBTVFJfTU9EVUxFX0FCU1RSQUNUICAgICAgICAgICAgICNs YW5ndWFnZSBlbi1VUyAiODI1NCB0aW1lciBkcml2ZXIgdGhhdCBwcm92aWRlcyBUaW1lciBBcmNo IHByb3RvY29sIg0KLQ0KLSNzdHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgICAgICAgICAj bGFuZ3VhZ2UgZW4tVVMgIjgyNTQgdGltZXIgZHJpdmVyIHRoYXQgcHJvdmlkZXMgVGltZXIgQXJj aCBwcm90b2NvbC4iDQotDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy84MjU0VGltZXJEeGUvVGltZXJF eHRyYS51bmkgYi9Pdm1mUGtnLzgyNTRUaW1lckR4ZS9UaW1lckV4dHJhLnVuaQpkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggN2E1NDc2N2E0NTFiLi4wMDAwMDAwMDAwMDAKLS0tIGEvT3Zt ZlBrZy84MjU0VGltZXJEeGUvVGltZXJFeHRyYS51bmkKKysrIC9kZXYvbnVsbApAQCAtMSwxNCAr MCwwIEBACi0vLyAvKiogQGZpbGUNCi0vLyBUaW1lciBMb2NhbGl6ZWQgU3RyaW5ncyBhbmQgQ29u dGVudA0KLS8vDQotLy8gQ29weXJpZ2h0IChjKSAyMDEzIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLS8vDQotLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCi0vLw0KLS8vICoqLw0KLQ0KLSNzdHJpbmcgU1RS X1BST1BFUlRJRVNfTU9EVUxFX05BTUUNCi0jbGFuZ3VhZ2UgZW4tVVMNCi0iODI1NCBUaW1lciBE WEUgRHJpdmVyIg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL092bWZQa2cvODI1NFRpbWVyRHhlLzgyNTRU aW1lci5pbmYgYi9Pdm1mUGtnLzgyNTRUaW1lckR4ZS84MjU0VGltZXIuaW5mCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA4ZmJhYjg5NmYwMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9Pdm1m UGtnLzgyNTRUaW1lckR4ZS84MjU0VGltZXIuaW5mCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs MCBAQAotIyMgQGZpbGUNCi0jIDgyNTQgdGltZXIgZHJpdmVyIHRoYXQgcHJvdmlkZXMgVGltZXIg QXJjaCBwcm90b2NvbC4NCi0jDQotIyBDb3B5cmlnaHQgKGMpIDIwMDUgLSAyMDE5LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KLSMNCi0jIw0KLQ0KLVtEZWZpbmVzXQ0KLSAg SU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KLSAgQkFTRV9OQU1F ICAgICAgICAgICAgICAgICAgICAgID0gVGltZXINCi0gIE1PRFVMRV9VTklfRklMRSAgICAgICAg ICAgICAgICA9IFRpbWVyLnVuaQ0KLSAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0g QzE5MEZFMzUtNDRBQS00MUExLThBRUEtNDk0N0JDNjBFMDlEDQotICBNT0RVTEVfVFlQRSAgICAg ICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQotICBWRVJTSU9OX1NUUklORyAgICAgICAgICAg ICAgICAgPSAxLjANCi0NCi0gIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IFRpbWVy RHJpdmVySW5pdGlhbGl6ZQ0KLQ0KLVtQYWNrYWdlc10NCi0gIE1kZVBrZy9NZGVQa2cuZGVjDQot ICBPdm1mUGtnL092bWZQa2cuZGVjDQotDQotW0xpYnJhcnlDbGFzc2VzXQ0KLSAgVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliDQotICBCYXNlTGliDQotICBEZWJ1Z0xpYg0KLSAgTmVzdGVkSW50ZXJy dXB0VHBsTGliDQotICBVZWZpRHJpdmVyRW50cnlQb2ludA0KLSAgSW9MaWINCi0NCi1bU291cmNl c10NCi0gIFRpbWVyLmgNCi0gIFRpbWVyLmMNCi0NCi1bUHJvdG9jb2xzXQ0KLSAgZ0VmaUNwdUFy Y2hQcm90b2NvbEd1aWQgICAgICAgIyMgQ09OU1VNRVMNCi0gIGdFZmlMZWdhY3k4MjU5UHJvdG9j b2xHdWlkICAgICMjIENPTlNVTUVTDQotICBnRWZpVGltZXJBcmNoUHJvdG9jb2xHdWlkICAgICAj IyBQUk9EVUNFUw0KLQ0KLVtEZXBleF0NCi0gIGdFZmlDcHVBcmNoUHJvdG9jb2xHdWlkIEFORCBn RWZpTGVnYWN5ODI1OVByb3RvY29sR3VpZA0KLVtVc2VyRXh0ZW5zaW9ucy5UaWFub0NvcmUuIkV4 dHJhRmlsZXMiXQ0KLSAgVGltZXJFeHRyYS51bmkNCmRpZmYgLS1naXQgYS9Pdm1mUGtnLzgyNTRU aW1lckR4ZS9UaW1lci5oIGIvT3ZtZlBrZy84MjU0VGltZXJEeGUvVGltZXIuaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggYjE5ZWYzYzFmOTRlLi4wMDAwMDAwMDAwMDAKLS0tIGEvT3Zt ZlBrZy84MjU0VGltZXJEeGUvVGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBA Ci0vKiogQGZpbGUNCi0gIFByaXZhdGUgZGF0YSBzdHJ1Y3R1cmVzDQotDQotQ29weXJpZ2h0IChj KSAyMDA1IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQotKiovDQot DQotI2lmbmRlZiBfVElNRVJfSF8NCi0jZGVmaW5lIF9USU1FUl9IXw0KLQ0KLSNpbmNsdWRlIDxQ aUR4ZS5oPg0KLQ0KLSNpbmNsdWRlIDxQcm90b2NvbC9DcHUuaD4NCi0jaW5jbHVkZSA8UHJvdG9j b2wvTGVnYWN5ODI1OS5oPg0KLSNpbmNsdWRlIDxQcm90b2NvbC9UaW1lci5oPg0KLQ0KLSNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KLSNpbmNsdWRl IDxMaWJyYXJ5L0lvTGliLmg+DQotDQotLy8NCi0vLyBUaGUgUENBVCA4MjUzLzgyNTQgaGFzIGFu IGlucHV0IGNsb2NrIGF0IDEuMTkzMTgyIE1IeiBhbmQgVGltZXIgMCBpcw0KLS8vIGluaXRpYWxp emVkIGFzIGEgMTYgYml0IGZyZWUgcnVubmluZyBjb3VudGVyIHRoYXQgZ2VuZXJhdGVzIGFuIGlu dGVycnVwdChJUlEwKQ0KLS8vIGVhY2ggdGltZSB0aGUgY291bnRlciByb2xscyBvdmVyLg0KLS8v DQotLy8gICA2NTUzNiBjb3VudHMNCi0vLyAtLS0tLS0tLS0tLS0tLS0tICogMSwwMDAsMDAwIHVT L1MgPSA1NDkyNS40IHVTID0gNTQ5MjU0ICogMTAwIG5zDQotLy8gICAxLDE5MywxODIgSHoNCi0v Lw0KLQ0KLS8vDQotLy8gVGhlIG1heGltdW0gdGljayBkdXJhdGlvbiBmb3IgODI1NCB0aW1lcg0K LS8vDQotI2RlZmluZSBNQVhfVElNRVJfVElDS19EVVJBVElPTiAgNTQ5MjU0DQotLy8NCi0vLyBU aGUgZGVmYXVsdCB0aW1lciB0aWNrIGR1cmF0aW9uIGlzIHNldCB0byAxMCBtcyA9IDEwMDAwMCAx MDAgbnMgdW5pdHMNCi0vLw0KLSNkZWZpbmUgREVGQVVMVF9USU1FUl9USUNLX0RVUkFUSU9OICAx MDAwMDANCi0jZGVmaW5lIFRJTUVSX0NPTlRST0xfUE9SVCAgICAgICAgICAgMHg0Mw0KLSNkZWZp bmUgVElNRVIwX0NPVU5UX1BPUlQgICAgICAgICAgICAweDQwDQotDQotLy8NCi0vLyBGdW5jdGlv biBQcm90b3R5cGVzDQotLy8NCi0NCi0vKioNCi0gIEluaXRpYWxpemUgdGhlIFRpbWVyIEFyY2hp dGVjdHVyYWwgUHJvdG9jb2wgZHJpdmVyDQotDQotICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgIElt YWdlSGFuZGxlIG9mIHRoZSBsb2FkZWQgZHJpdmVyDQotICBAcGFyYW0gU3lzdGVtVGFibGUgICAg IFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZQ0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgIFRpbWVyIEFyY2hpdGVjdHVyYWwgUHJvdG9jb2wgY3JlYXRlZA0KLSAgQHJldHZh bCBFRklfT1VUX09GX1JFU09VUkNFUyAgIE5vdCBlbm91Z2ggcmVzb3VyY2VzIGF2YWlsYWJsZSB0 byBpbml0aWFsaXplIGRyaXZlci4NCi0gIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICBB IGRldmljZSBlcnJvciBvY2N1cnJlZCBhdHRlbXB0aW5nIHRvIGluaXRpYWxpemUgdGhlIGRyaXZl ci4NCi0NCi0qKi8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQotVGltZXJEcml2ZXJJbml0aWFsaXpl ICgNCi0gIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KLSAgSU4gRUZJX1NZU1RF TV9UQUJMRSAgKlN5c3RlbVRhYmxlDQotICApDQotOw0KLQ0KLS8qKg0KLQ0KLSAgVGhpcyBmdW5j dGlvbiBhZGp1c3RzIHRoZSBwZXJpb2Qgb2YgdGltZXIgaW50ZXJydXB0cyB0byB0aGUgdmFsdWUg c3BlY2lmaWVkDQotICBieSBUaW1lclBlcmlvZC4gIElmIHRoZSB0aW1lciBwZXJpb2QgaXMgdXBk YXRlZCwgdGhlbiB0aGUgc2VsZWN0ZWQgdGltZXINCi0gIHBlcmlvZCBpcyBzdG9yZWQgaW4gRUZJ X1RJTUVSLlRpbWVyUGVyaW9kLCBhbmQgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuICBJZg0KLSAg dGhlIHRpbWVyIGhhcmR3YXJlIGlzIG5vdCBwcm9ncmFtbWFibGUsIHRoZW4gRUZJX1VOU1VQUE9S VEVEIGlzIHJldHVybmVkLg0KLSAgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGF0dGVtcHRpbmcg dG8gdXBkYXRlIHRoZSB0aW1lciBwZXJpb2QsIHRoZW4gdGhlDQotICB0aW1lciBoYXJkd2FyZSB3 aWxsIGJlIHB1dCBiYWNrIGluIGl0cyBzdGF0ZSBwcmlvciB0byB0aGlzIGNhbGwsIGFuZA0KLSAg RUZJX0RFVklDRV9FUlJPUiBpcyByZXR1cm5lZC4gIElmIFRpbWVyUGVyaW9kIGlzIDAsIHRoZW4g dGhlIHRpbWVyIGludGVycnVwdA0KLSAgaXMgZGlzYWJsZWQuICBUaGlzIGlzIG5vdCB0aGUgc2Ft ZSBhcyBkaXNhYmxpbmcgdGhlIENQVSdzIGludGVycnVwdHMuDQotICBJbnN0ZWFkLCBpdCBtdXN0 IGVpdGhlciB0dXJuIG9mZiB0aGUgdGltZXIgaGFyZHdhcmUsIG9yIGl0IG11c3QgYWRqdXN0IHRo ZQ0KLSAgaW50ZXJydXB0IGNvbnRyb2xsZXIgc28gdGhhdCBhIENQVSBpbnRlcnJ1cHQgaXMgbm90 IGdlbmVyYXRlZCB3aGVuIHRoZSB0aW1lcg0KLSAgaW50ZXJydXB0IGZpcmVzLg0KLQ0KLQ0KLSAg QHBhcmFtIFRoaXMgICAgICAgICAgICBUaGUgRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wgaW5zdGFu Y2UuDQotICBAcGFyYW0gTm90aWZ5RnVuY3Rpb24gIFRoZSByYXRlIHRvIHByb2dyYW0gdGhlIHRp bWVyIGludGVycnVwdCBpbiAxMDAgblMgdW5pdHMuICBJZg0KLSAgICAgICAgICAgICAgICAgICAg ICAgICB0aGUgdGltZXIgaGFyZHdhcmUgaXMgbm90IHByb2dyYW1tYWJsZSwgdGhlbiBFRklfVU5T VVBQT1JURUQgaXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQuICBJZiB0aGUg dGltZXIgaXMgcHJvZ3JhbW1hYmxlLCB0aGVuIHRoZSB0aW1lciBwZXJpb2QNCi0gICAgICAgICAg ICAgICAgICAgICAgICAgd2lsbCBiZSByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IHRpbWVyIHBl cmlvZCB0aGF0IGlzIHN1cHBvcnRlZA0KLSAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUg dGltZXIgaGFyZHdhcmUuICBJZiBUaW1lclBlcmlvZCBpcyBzZXQgdG8gMCwgdGhlbiB0aGUNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgaW50ZXJydXB0cyB3aWxsIGJlIGRpc2FibGVk Lg0KLQ0KLSAgQHJldHZhbCAgICAgICAgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHRpbWVyIHBlcmlv ZCB3YXMgY2hhbmdlZC4NCi0gIEByZXR2YWwgICAgICAgIEVGSV9VTlNVUFBPUlRFRCAgIFRoZSBw bGF0Zm9ybSBjYW5ub3QgY2hhbmdlIHRoZSBwZXJpb2Qgb2YgdGhlIHRpbWVyIGludGVycnVwdC4N Ci0gIEByZXR2YWwgICAgICAgIEVGSV9ERVZJQ0VfRVJST1IgIFRoZSB0aW1lciBwZXJpb2QgY291 bGQgbm90IGJlIGNoYW5nZWQgZHVlIHRvIGEgZGV2aWNlIGVycm9yLg0KLQ0KLSoqLw0KLUVGSV9T VEFUVVMNCi1FRklBUEkNCi1UaW1lckRyaXZlclJlZ2lzdGVySGFuZGxlciAoDQotICBJTiBFRklf VElNRVJfQVJDSF9QUk9UT0NPTCAgKlRoaXMsDQotICBJTiBFRklfVElNRVJfTk9USUZZICAgICAg ICAgTm90aWZ5RnVuY3Rpb24NCi0gICkNCi07DQotDQotLyoqDQotDQotICBUaGlzIGZ1bmN0aW9u IGFkanVzdHMgdGhlIHBlcmlvZCBvZiB0aW1lciBpbnRlcnJ1cHRzIHRvIHRoZSB2YWx1ZSBzcGVj aWZpZWQNCi0gIGJ5IFRpbWVyUGVyaW9kLiAgSWYgdGhlIHRpbWVyIHBlcmlvZCBpcyB1cGRhdGVk LCB0aGVuIHRoZSBzZWxlY3RlZCB0aW1lcg0KLSAgcGVyaW9kIGlzIHN0b3JlZCBpbiBFRklfVElN RVIuVGltZXJQZXJpb2QsIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1cm5lZC4gIElmDQotICB0aGUg dGltZXIgaGFyZHdhcmUgaXMgbm90IHByb2dyYW1tYWJsZSwgdGhlbiBFRklfVU5TVVBQT1JURUQg aXMgcmV0dXJuZWQuDQotICBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgYXR0ZW1wdGluZyB0byB1 cGRhdGUgdGhlIHRpbWVyIHBlcmlvZCwgdGhlbiB0aGUNCi0gIHRpbWVyIGhhcmR3YXJlIHdpbGwg YmUgcHV0IGJhY2sgaW4gaXRzIHN0YXRlIHByaW9yIHRvIHRoaXMgY2FsbCwgYW5kDQotICBFRklf REVWSUNFX0VSUk9SIGlzIHJldHVybmVkLiAgSWYgVGltZXJQZXJpb2QgaXMgMCwgdGhlbiB0aGUg dGltZXIgaW50ZXJydXB0DQotICBpcyBkaXNhYmxlZC4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFz IGRpc2FibGluZyB0aGUgQ1BVJ3MgaW50ZXJydXB0cy4NCi0gIEluc3RlYWQsIGl0IG11c3QgZWl0 aGVyIHR1cm4gb2ZmIHRoZSB0aW1lciBoYXJkd2FyZSwgb3IgaXQgbXVzdCBhZGp1c3QgdGhlDQot ICBpbnRlcnJ1cHQgY29udHJvbGxlciBzbyB0aGF0IGEgQ1BVIGludGVycnVwdCBpcyBub3QgZ2Vu ZXJhdGVkIHdoZW4gdGhlIHRpbWVyDQotICBpbnRlcnJ1cHQgZmlyZXMuDQotDQotDQotICBAcGFy YW0gVGhpcyAgICAgICAgICAgIFRoZSBFRklfVElNRVJfQVJDSF9QUk9UT0NPTCBpbnN0YW5jZS4N Ci0gIEBwYXJhbSBUaW1lclBlcmlvZCAgICAgVGhlIHJhdGUgdG8gcHJvZ3JhbSB0aGUgdGltZXIg aW50ZXJydXB0IGluIDEwMCBuUyB1bml0cy4gIElmDQotICAgICAgICAgICAgICAgICAgICAgICAg IHRoZSB0aW1lciBoYXJkd2FyZSBpcyBub3QgcHJvZ3JhbW1hYmxlLCB0aGVuIEVGSV9VTlNVUFBP UlRFRCBpcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZC4gIElmIHRoZSB0aW1l ciBpcyBwcm9ncmFtbWFibGUsIHRoZW4gdGhlIHRpbWVyIHBlcmlvZA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgdGltZXIgcGVyaW9k IHRoYXQgaXMgc3VwcG9ydGVkDQotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSB0aW1l ciBoYXJkd2FyZS4gIElmIFRpbWVyUGVyaW9kIGlzIHNldCB0byAwLCB0aGVuIHRoZQ0KLSAgICAg ICAgICAgICAgICAgICAgICAgICB0aW1lciBpbnRlcnJ1cHRzIHdpbGwgYmUgZGlzYWJsZWQuDQot DQotICBAcmV0dmFsICAgICAgICBFRklfU1VDQ0VTUyAgICAgICBUaGUgdGltZXIgcGVyaW9kIHdh cyBjaGFuZ2VkLg0KLSAgQHJldHZhbCAgICAgICAgRUZJX1VOU1VQUE9SVEVEICAgVGhlIHBsYXRm b3JtIGNhbm5vdCBjaGFuZ2UgdGhlIHBlcmlvZCBvZiB0aGUgdGltZXIgaW50ZXJydXB0Lg0KLSAg QHJldHZhbCAgICAgICAgRUZJX0RFVklDRV9FUlJPUiAgVGhlIHRpbWVyIHBlcmlvZCBjb3VsZCBu b3QgYmUgY2hhbmdlZCBkdWUgdG8gYSBkZXZpY2UgZXJyb3IuDQotDQotKiovDQotRUZJX1NUQVRV Uw0KLUVGSUFQSQ0KLVRpbWVyRHJpdmVyU2V0VGltZXJQZXJpb2QgKA0KLSAgSU4gRUZJX1RJTUVS X0FSQ0hfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgIFRp bWVyUGVyaW9kDQotICApDQotOw0KLQ0KLS8qKg0KLQ0KLSAgVGhpcyBmdW5jdGlvbiByZXRyaWV2 ZXMgdGhlIHBlcmlvZCBvZiB0aW1lciBpbnRlcnJ1cHRzIGluIDEwMCBucyB1bml0cywNCi0gIHJl dHVybnMgdGhhdCB2YWx1ZSBpbiBUaW1lclBlcmlvZCwgYW5kIHJldHVybnMgRUZJX1NVQ0NFU1Mu ICBJZiBUaW1lclBlcmlvZA0KLSAgaXMgTlVMTCwgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIg aXMgcmV0dXJuZWQuICBJZiBhIFRpbWVyUGVyaW9kIG9mIDAgaXMNCi0gIHJldHVybmVkLCB0aGVu IHRoZSB0aW1lciBpcyBjdXJyZW50bHkgZGlzYWJsZWQuDQotDQotDQotICBAcGFyYW0gVGhpcyAg ICAgICAgICAgIFRoZSBFRklfVElNRVJfQVJDSF9QUk9UT0NPTCBpbnN0YW5jZS4NCi0gIEBwYXJh bSBUaW1lclBlcmlvZCAgICAgQSBwb2ludGVyIHRvIHRoZSB0aW1lciBwZXJpb2QgdG8gcmV0cmll dmUgaW4gMTAwIG5zIHVuaXRzLiAgSWYNCi0gICAgICAgICAgICAgICAgICAgICAgICAgMCBpcyBy ZXR1cm5lZCwgdGhlbiB0aGUgdGltZXIgaXMgY3VycmVudGx5IGRpc2FibGVkLg0KLQ0KLSAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSB0aW1lciBwZXJpb2Qgd2FzIHJldHVybmVk IGluIFRpbWVyUGVyaW9kLg0KLSAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIFRpbWVy UGVyaW9kIGlzIE5VTEwuDQotDQotKiovDQotRUZJX1NUQVRVUw0KLUVGSUFQSQ0KLVRpbWVyRHJp dmVyR2V0VGltZXJQZXJpb2QgKA0KLSAgSU4gRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wgICpUaGlz LA0KLSAgT1VUIFVJTlQ2NCAgICAgICAgICAgICAgICAgICpUaW1lclBlcmlvZA0KLSAgKQ0KLTsN Ci0NCi0vKioNCi0NCi0gIFRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgc29mdCB0aW1lciBpbnRl cnJ1cHQuIElmIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHNvZnQNCi0gIHRpbWVyIGlu dGVycnVwdHMsIHRoZW4gRUZJX1VOU1VQUE9SVEVEIGlzIHJldHVybmVkLiBPdGhlcndpc2UsIEVG SV9TVUNDRVNTIGlzIHJldHVybmVkLg0KLSAgSWYgYSBoYW5kbGVyIGhhcyBiZWVuIHJlZ2lzdGVy ZWQgdGhyb3VnaCB0aGUgRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wuUmVnaXN0ZXJIYW5kbGVyKCkN Ci0gIHNlcnZpY2UsIHRoZW4gYSBzb2Z0IHRpbWVyIGludGVycnVwdCB3aWxsIGJlIGdlbmVyYXRl ZC4gSWYgdGhlIHRpbWVyIGludGVycnVwdCBpcw0KLSAgZW5hYmxlZCB3aGVuIHRoaXMgc2Vydmlj ZSBpcyBjYWxsZWQsIHRoZW4gdGhlIHJlZ2lzdGVyZWQgaGFuZGxlciB3aWxsIGJlIGludm9rZWQu IFRoZQ0KLSAgcmVnaXN0ZXJlZCBoYW5kbGVyIHNob3VsZCBub3QgYmUgYWJsZSB0byBkaXN0aW5n dWlzaCBhIGhhcmR3YXJlLWdlbmVyYXRlZCB0aW1lcg0KLSAgaW50ZXJydXB0IGZyb20gYSBzb2Z0 d2FyZS1nZW5lcmF0ZWQgdGltZXIgaW50ZXJydXB0Lg0KLQ0KLQ0KLSAgQHBhcmFtIFRoaXMgICAg ICAgICAgICAgIFRoZSBFRklfVElNRVJfQVJDSF9QUk9UT0NPTCBpbnN0YW5jZS4NCi0NCi0gIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgVGhlIHNvZnQgdGltZXIgaW50ZXJydXB0IHdhcyBnZW5l cmF0ZWQuDQotICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgIFRoZSBwbGF0Zm9ybSBkb2VzIG5v dCBzdXBwb3J0IHRoZSBnZW5lcmF0aW9uIG9mIHNvZnQgdGltZXIgaW50ZXJydXB0cy4NCi0NCi0q Ki8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQotVGltZXJEcml2ZXJHZW5lcmF0ZVNvZnRJbnRlcnJ1 cHQgKA0KLSAgSU4gRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wgICpUaGlzDQotICApDQotOw0KLQ0K LSNlbmRpZg0KZGlmZiAtLWdpdCBhL092bWZQa2cvODI1NFRpbWVyRHhlL1RpbWVyLmMgYi9Pdm1m UGtnLzgyNTRUaW1lckR4ZS9UaW1lci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1 MzgyYjAxNjE1ZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9Pdm1mUGtnLzgyNTRUaW1lckR4ZS9UaW1l ci5jCisrKyAvZGV2L251bGwKQEAgLTEsNDA2ICswLDAgQEAKLS8qKiBAZmlsZQ0KLSAgVGltZXIg QXJjaGl0ZWN0dXJhbCBQcm90b2NvbCBhcyBkZWZpbmVkIGluIHRoZSBEWEUgQ0lTDQotDQotQ29w eXJpZ2h0IChjKSAyMDA1IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KLVNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQotDQotKiovDQotDQotI2luY2x1ZGUgPExpYnJhcnkvTmVzdGVkSW50ZXJydXB0VHBsTGliLmg+ DQotDQotI2luY2x1ZGUgIlRpbWVyLmgiDQotDQotLy8NCi0vLyBUaGUgaGFuZGxlIG9udG8gd2hp Y2ggdGhlIFRpbWVyIEFyY2hpdGVjdHVyYWwgUHJvdG9jb2wgd2lsbCBiZSBpbnN0YWxsZWQNCi0v Lw0KLUVGSV9IQU5ETEUgIG1UaW1lckhhbmRsZSA9IE5VTEw7DQotDQotLy8NCi0vLyBUaGUgVGlt ZXIgQXJjaGl0ZWN0dXJhbCBQcm90b2NvbCB0aGF0IHRoaXMgZHJpdmVyIHByb2R1Y2VzDQotLy8N Ci1FRklfVElNRVJfQVJDSF9QUk9UT0NPTCAgbVRpbWVyID0gew0KLSAgVGltZXJEcml2ZXJSZWdp c3RlckhhbmRsZXIsDQotICBUaW1lckRyaXZlclNldFRpbWVyUGVyaW9kLA0KLSAgVGltZXJEcml2 ZXJHZXRUaW1lclBlcmlvZCwNCi0gIFRpbWVyRHJpdmVyR2VuZXJhdGVTb2Z0SW50ZXJydXB0DQot fTsNCi0NCi0vLw0KLS8vIFBvaW50ZXIgdG8gdGhlIENQVSBBcmNoaXRlY3R1cmFsIFByb3RvY29s IGluc3RhbmNlDQotLy8NCi1FRklfQ1BVX0FSQ0hfUFJPVE9DT0wgICptQ3B1Ow0KLQ0KLS8vDQot Ly8gUG9pbnRlciB0byB0aGUgTGVnYWN5IDgyNTkgUHJvdG9jb2wgaW5zdGFuY2UNCi0vLw0KLUVG SV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgKm1MZWdhY3k4MjU5Ow0KLQ0KLS8vDQotLy8gVGhlIG5v dGlmaWNhdGlvbiBmdW5jdGlvbiB0byBjYWxsIG9uIGV2ZXJ5IHRpbWVyIGludGVycnVwdC4NCi0v LyBBIGJ1ZyBpbiB0aGUgY29tcGlsZXIgcHJldmVudHMgdXMgZnJvbSBpbml0aWFsaXppbmcgdGhp cyBoZXJlLg0KLS8vDQotRUZJX1RJTUVSX05PVElGWSAgbVRpbWVyTm90aWZ5RnVuY3Rpb247DQot DQotLy8NCi0vLyBUaGUgY3VycmVudCBwZXJpb2Qgb2YgdGhlIHRpbWVyIGludGVycnVwdA0KLS8v DQotdm9sYXRpbGUgVUlOVDY0ICBtVGltZXJQZXJpb2QgPSAwOw0KLQ0KLS8vDQotLy8gV29ya2Vy IEZ1bmN0aW9ucw0KLS8vDQotDQotLyoqDQotICBTZXRzIHRoZSBjb3VudGVyIHZhbHVlIGZvciBU aW1lciAjMCBpbiBhIGxlZ2FjeSA4MjU0IHRpbWVyLg0KLQ0KLSAgQHBhcmFtIENvdW50ICAgIFRo ZSAxNi1iaXQgY291bnRlciB2YWx1ZSB0byBwcm9ncmFtIGludG8gVGltZXIgIzAgb2YgdGhlIGxl Z2FjeSA4MjU0IHRpbWVyLg0KLSoqLw0KLVZPSUQNCi1TZXRQaXRDb3VudCAoDQotICBJTiBVSU5U MTYgIENvdW50DQotICApDQotew0KLSAgSW9Xcml0ZTggKFRJTUVSX0NPTlRST0xfUE9SVCwgMHgz Nik7DQotICBJb1dyaXRlOCAoVElNRVIwX0NPVU5UX1BPUlQsIChVSU5UOCkoQ291bnQgJiAweGZm KSk7DQotICBJb1dyaXRlOCAoVElNRVIwX0NPVU5UX1BPUlQsIChVSU5UOCkoKENvdW50ID4+IDgp ICYgMHhmZikpOw0KLX0NCi0NCi0vKioNCi0gIDgyNTQgVGltZXIgIzAgSW50ZXJydXB0IEhhbmRs ZXIuDQotDQotICBAcGFyYW0gSW50ZXJydXB0VHlwZSAgICBUaGUgdHlwZSBvZiBpbnRlcnJ1cHQg dGhhdCBvY2N1cnJlZA0KLSAgQHBhcmFtIFN5c3RlbUNvbnRleHQgICAgQSBwb2ludGVyIHRvIHRo ZSBzeXN0ZW0gY29udGV4dCB3aGVuIHRoZSBpbnRlcnJ1cHQgb2NjdXJyZWQNCi0qKi8NCi1WT0lE DQotRUZJQVBJDQotVGltZXJJbnRlcnJ1cHRIYW5kbGVyICgNCi0gIElOIEVGSV9FWENFUFRJT05f VFlQRSAgSW50ZXJydXB0VHlwZSwNCi0gIElOIEVGSV9TWVNURU1fQ09OVEVYVCAgU3lzdGVtQ29u dGV4dA0KLSAgKQ0KLXsNCi0gIFNUQVRJQyBORVNURURfSU5URVJSVVBUX1NUQVRFICBOZXN0ZWRJ bnRlcnJ1cHRTdGF0ZTsNCi0gIEVGSV9UUEwgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5h bFRQTDsNCi0NCi0gIE9yaWdpbmFsVFBMID0gTmVzdGVkSW50ZXJydXB0UmFpc2VUUEwgKCk7DQot DQotICBtTGVnYWN5ODI1OS0+RW5kT2ZJbnRlcnJ1cHQgKG1MZWdhY3k4MjU5LCBFZmk4MjU5SXJx MCk7DQotDQotICBpZiAobVRpbWVyTm90aWZ5RnVuY3Rpb24gIT0gTlVMTCkgew0KLSAgICAvLw0K LSAgICAvLyBAYnVnIDogVGhpcyBkb2VzIG5vdCBoYW5kbGUgbWlzc2VkIHRpbWVyIGludGVycnVw dHMNCi0gICAgLy8NCi0gICAgbVRpbWVyTm90aWZ5RnVuY3Rpb24gKG1UaW1lclBlcmlvZCk7DQot ICB9DQotDQotICBOZXN0ZWRJbnRlcnJ1cHRSZXN0b3JlVFBMIChPcmlnaW5hbFRQTCwgU3lzdGVt Q29udGV4dCwgJk5lc3RlZEludGVycnVwdFN0YXRlKTsNCi19DQotDQotLyoqDQotDQotICBUaGlz IGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgaGFuZGxlciBOb3RpZnlGdW5jdGlvbiBzbyBpdCBpcyBj YWxsZWQgZXZlcnkgdGltZQ0KLSAgdGhlIHRpbWVyIGludGVycnVwdCBmaXJlcy4gIEl0IGFsc28g cGFzc2VzIHRoZSBhbW91bnQgb2YgdGltZSBzaW5jZSB0aGUgbGFzdA0KLSAgaGFuZGxlciBjYWxs IHRvIHRoZSBOb3RpZnlGdW5jdGlvbi4gIElmIE5vdGlmeUZ1bmN0aW9uIGlzIE5VTEwsIHRoZW4g dGhlDQotICBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC4gIElmIHRoZSBoYW5kbGVyIGlzIHJlZ2lz dGVyZWQsIHRoZW4gRUZJX1NVQ0NFU1MgaXMNCi0gIHJldHVybmVkLiAgSWYgdGhlIENQVSBkb2Vz IG5vdCBzdXBwb3J0IHJlZ2lzdGVyaW5nIGEgdGltZXIgaW50ZXJydXB0IGhhbmRsZXIsDQotICB0 aGVuIEVGSV9VTlNVUFBPUlRFRCBpcyByZXR1cm5lZC4gIElmIGFuIGF0dGVtcHQgaXMgbWFkZSB0 byByZWdpc3RlciBhIGhhbmRsZXINCi0gIHdoZW4gYSBoYW5kbGVyIGlzIGFscmVhZHkgcmVnaXN0 ZXJlZCwgdGhlbiBFRklfQUxSRUFEWV9TVEFSVEVEIGlzIHJldHVybmVkLg0KLSAgSWYgYW4gYXR0 ZW1wdCBpcyBtYWRlIHRvIHVucmVnaXN0ZXIgYSBoYW5kbGVyIHdoZW4gYSBoYW5kbGVyIGlzIG5v dCByZWdpc3RlcmVkLA0KLSAgdGhlbiBFRklfSU5WQUxJRF9QQVJBTUVURVIgaXMgcmV0dXJuZWQu ICBJZiBhbiBlcnJvciBvY2N1cnMgYXR0ZW1wdGluZyB0bw0KLSAgcmVnaXN0ZXIgdGhlIE5vdGlm eUZ1bmN0aW9uIHdpdGggdGhlIHRpbWVyIGludGVycnVwdCwgdGhlbiBFRklfREVWSUNFX0VSUk9S DQotICBpcyByZXR1cm5lZC4NCi0NCi0NCi0gIEBwYXJhbSBUaGlzICAgICAgICAgICAgIFRoZSBF RklfVElNRVJfQVJDSF9QUk9UT0NPTCBpbnN0YW5jZS4NCi0gIEBwYXJhbSBOb3RpZnlGdW5jdGlv biAgIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gYSB0aW1lciBpbnRlcnJ1cHQgZmlyZXMuICBU aGlzDQotICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBleGVjdXRlcyBhdCBUUExf SElHSF9MRVZFTC4gIFRoZSBEWEUgQ29yZSB3aWxsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpc3RlciBhIGhhbmRsZXIgZm9yIHRoZSB0aW1lciBpbnRlcnJ1cHQsIHNvIGl0IGNhbiBr bm93DQotICAgICAgICAgICAgICAgICAgICAgICAgICBob3cgbXVjaCB0aW1lIGhhcyBwYXNzZWQu ICBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgdG8NCi0gICAgICAgICAgICAgICAgICAgICAgICAg IHNpZ25hbCB0aW1lciBiYXNlZCBldmVudHMuICBOVUxMIHdpbGwgdW5yZWdpc3RlciB0aGUgaGFu ZGxlci4NCi0NCi0gIEByZXR2YWwgICAgICAgIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIHRp bWVyIGhhbmRsZXIgd2FzIHJlZ2lzdGVyZWQuDQotICBAcmV0dmFsICAgICAgICBFRklfVU5TVVBQ T1JURUQgICAgICAgIFRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRpbWVyIGludGVycnVw dHMuDQotICBAcmV0dmFsICAgICAgICBFRklfQUxSRUFEWV9TVEFSVEVEICAgIE5vdGlmeUZ1bmN0 aW9uIGlzIG5vdCBOVUxMLCBhbmQgYSBoYW5kbGVyIGlzIGFscmVhZHkNCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZC4NCi0gIEByZXR2YWwgICAgICAg IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgTm90aWZ5RnVuY3Rpb24gaXMgTlVMTCwgYW5kIGEgaGFu ZGxlciB3YXMgbm90DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZXZpb3VzbHkgcmVnaXN0ZXJlZC4NCi0gIEByZXR2YWwgICAgICAgIEVGSV9ERVZJQ0VfRVJST1Ig ICAgICAgVGhlIHRpbWVyIGhhbmRsZXIgY291bGQgbm90IGJlIHJlZ2lzdGVyZWQuDQotDQotKiov DQotRUZJX1NUQVRVUw0KLUVGSUFQSQ0KLVRpbWVyRHJpdmVyUmVnaXN0ZXJIYW5kbGVyICgNCi0g IElOIEVGSV9USU1FUl9BUkNIX1BST1RPQ09MICAqVGhpcywNCi0gIElOIEVGSV9USU1FUl9OT1RJ RlkgICAgICAgICBOb3RpZnlGdW5jdGlvbg0KLSAgKQ0KLXsNCi0gIC8vDQotICAvLyBDaGVjayBm b3IgaW52YWxpZCBwYXJhbWV0ZXJzDQotICAvLw0KLSAgaWYgKChOb3RpZnlGdW5jdGlvbiA9PSBO VUxMKSAmJiAobVRpbWVyTm90aWZ5RnVuY3Rpb24gPT0gTlVMTCkpIHsNCi0gICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCi0gIH0NCi0NCi0gIGlmICgoTm90aWZ5RnVuY3Rpb24gIT0g TlVMTCkgJiYgKG1UaW1lck5vdGlmeUZ1bmN0aW9uICE9IE5VTEwpKSB7DQotICAgIHJldHVybiBF RklfQUxSRUFEWV9TVEFSVEVEOw0KLSAgfQ0KLQ0KLSAgbVRpbWVyTm90aWZ5RnVuY3Rpb24gPSBO b3RpZnlGdW5jdGlvbjsNCi0NCi0gIHJldHVybiBFRklfU1VDQ0VTUzsNCi19DQotDQotLyoqDQot DQotICBUaGlzIGZ1bmN0aW9uIGFkanVzdHMgdGhlIHBlcmlvZCBvZiB0aW1lciBpbnRlcnJ1cHRz IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQNCi0gIGJ5IFRpbWVyUGVyaW9kLiAgSWYgdGhlIHRpbWVy IHBlcmlvZCBpcyB1cGRhdGVkLCB0aGVuIHRoZSBzZWxlY3RlZCB0aW1lcg0KLSAgcGVyaW9kIGlz IHN0b3JlZCBpbiBFRklfVElNRVIuVGltZXJQZXJpb2QsIGFuZCBFRklfU1VDQ0VTUyBpcyByZXR1 cm5lZC4gIElmDQotICB0aGUgdGltZXIgaGFyZHdhcmUgaXMgbm90IHByb2dyYW1tYWJsZSwgdGhl biBFRklfVU5TVVBQT1JURUQgaXMgcmV0dXJuZWQuDQotICBJZiBhbiBlcnJvciBvY2N1cnMgd2hp bGUgYXR0ZW1wdGluZyB0byB1cGRhdGUgdGhlIHRpbWVyIHBlcmlvZCwgdGhlbiB0aGUNCi0gIHRp bWVyIGhhcmR3YXJlIHdpbGwgYmUgcHV0IGJhY2sgaW4gaXRzIHN0YXRlIHByaW9yIHRvIHRoaXMg Y2FsbCwgYW5kDQotICBFRklfREVWSUNFX0VSUk9SIGlzIHJldHVybmVkLiAgSWYgVGltZXJQZXJp b2QgaXMgMCwgdGhlbiB0aGUgdGltZXIgaW50ZXJydXB0DQotICBpcyBkaXNhYmxlZC4gIFRoaXMg aXMgbm90IHRoZSBzYW1lIGFzIGRpc2FibGluZyB0aGUgQ1BVJ3MgaW50ZXJydXB0cy4NCi0gIElu c3RlYWQsIGl0IG11c3QgZWl0aGVyIHR1cm4gb2ZmIHRoZSB0aW1lciBoYXJkd2FyZSwgb3IgaXQg bXVzdCBhZGp1c3QgdGhlDQotICBpbnRlcnJ1cHQgY29udHJvbGxlciBzbyB0aGF0IGEgQ1BVIGlu dGVycnVwdCBpcyBub3QgZ2VuZXJhdGVkIHdoZW4gdGhlIHRpbWVyDQotICBpbnRlcnJ1cHQgZmly ZXMuDQotDQotDQotICBAcGFyYW0gVGhpcyAgICAgICAgICAgIFRoZSBFRklfVElNRVJfQVJDSF9Q Uk9UT0NPTCBpbnN0YW5jZS4NCi0gIEBwYXJhbSBUaW1lclBlcmlvZCAgICAgVGhlIHJhdGUgdG8g cHJvZ3JhbSB0aGUgdGltZXIgaW50ZXJydXB0IGluIDEwMCBuUyB1bml0cy4gIElmDQotICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSB0aW1lciBoYXJkd2FyZSBpcyBub3QgcHJvZ3JhbW1hYmxl LCB0aGVuIEVGSV9VTlNVUFBPUlRFRCBpcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm5lZC4gIElmIHRoZSB0aW1lciBpcyBwcm9ncmFtbWFibGUsIHRoZW4gdGhlIHRpbWVyIHBlcmlv ZA0KLSAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5l YXJlc3QgdGltZXIgcGVyaW9kIHRoYXQgaXMgc3VwcG9ydGVkDQotICAgICAgICAgICAgICAgICAg ICAgICAgIGJ5IHRoZSB0aW1lciBoYXJkd2FyZS4gIElmIFRpbWVyUGVyaW9kIGlzIHNldCB0byAw LCB0aGVuIHRoZQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lciBpbnRlcnJ1cHRzIHdp bGwgYmUgZGlzYWJsZWQuDQotDQotICBAcmV0dmFsICAgICAgICBFRklfU1VDQ0VTUyAgICAgICBU aGUgdGltZXIgcGVyaW9kIHdhcyBjaGFuZ2VkLg0KLSAgQHJldHZhbCAgICAgICAgRUZJX1VOU1VQ UE9SVEVEICAgVGhlIHBsYXRmb3JtIGNhbm5vdCBjaGFuZ2UgdGhlIHBlcmlvZCBvZiB0aGUgdGlt ZXIgaW50ZXJydXB0Lg0KLSAgQHJldHZhbCAgICAgICAgRUZJX0RFVklDRV9FUlJPUiAgVGhlIHRp bWVyIHBlcmlvZCBjb3VsZCBub3QgYmUgY2hhbmdlZCBkdWUgdG8gYSBkZXZpY2UgZXJyb3IuDQot DQotKiovDQotRUZJX1NUQVRVUw0KLUVGSUFQSQ0KLVRpbWVyRHJpdmVyU2V0VGltZXJQZXJpb2Qg KA0KLSAgSU4gRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wgICpUaGlzLA0KLSAgSU4gVUlOVDY0ICAg ICAgICAgICAgICAgICAgIFRpbWVyUGVyaW9kDQotICApDQotew0KLSAgVUlOVDY0ICBUaW1lckNv dW50Ow0KLQ0KLSAgLy8NCi0gIC8vICBUaGUgYmFzaWMgY2xvY2sgaXMgMS4xOTMxOCBNSHogb3Ig MC4xMTkzMTggdGlja3MgcGVyIDEwMCBucy4NCi0gIC8vICBUaW1lclBlcmlvZCAqIDAuMTE5MzE4 ID0gODI1NCB0aW1lciBkaXZpc29yLiBVc2luZyBpbnRlZ2VyIGFyaXRobWV0aWMNCi0gIC8vICBU aW1lckNvdW50ID0gKFRpbWVyUGVyaW9kICogMTE5MzE4KS8xMDAwMDAwLg0KLSAgLy8NCi0gIC8v ICBSb3VuZCB1cCB0byBuZXh0IGhpZ2hlc3QgaW50ZWdlci4gVGhpcyBndWFyYW50ZWVzIHRoYXQg dGhlIHRpbWVyIGlzDQotICAvLyAgZXF1YWwgdG8gb3Igc2xpZ2h0bHkgbG9uZ2VyIHRoYW4gdGhl IHJlcXVlc3RlZCB0aW1lLg0KLSAgLy8gIFRpbWVyQ291bnQgPSAoKFRpbWVyUGVyaW9kICogMTE5 MzE4KSArIDUwMDAwMCkvMTAwMDAwMA0KLSAgLy8NCi0gIC8vIE5vdGUgdGhhdCBhIFRpbWVyQ291 bnQgb2YgMCBpcyBlcXVpdmFsZW50IHRvIGEgY291bnQgb2YgNjUsNTM2DQotICAvLw0KLSAgLy8g U2luY2UgVGltZXJDb3VudCBpcyBsaW1pdGVkIHRvIDE2IGJpdHMgZm9yIElBMzIsIFRpbWVyUGVy aW9kIGlzIGxpbWl0ZWQNCi0gIC8vIHRvIDIwIGJpdHMuDQotICAvLw0KLSAgaWYgKFRpbWVyUGVy aW9kID09IDApIHsNCi0gICAgLy8NCi0gICAgLy8gRGlzYWJsZSB0aW1lciBpbnRlcnJ1cHQgZm9y IGEgVGltZXJQZXJpb2Qgb2YgMA0KLSAgICAvLw0KLSAgICBtTGVnYWN5ODI1OS0+RGlzYWJsZUly cSAobUxlZ2FjeTgyNTksIEVmaTgyNTlJcnEwKTsNCi0gIH0gZWxzZSB7DQotICAgIC8vDQotICAg IC8vIENvbnZlcnQgVGltZXJQZXJpb2QgaW50byA4MjU0IGNvdW50cw0KLSAgICAvLw0KLSAgICBU aW1lckNvdW50ID0gRGl2VTY0eDMyIChNdWx0VTY0eDMyICgxMTkzMTgsIChVSU5UMzIpVGltZXJQ ZXJpb2QpICsgNTAwMDAwLCAxMDAwMDAwKTsNCi0NCi0gICAgLy8NCi0gICAgLy8gQ2hlY2sgZm9y IG92ZXJmbG93DQotICAgIC8vDQotICAgIGlmIChUaW1lckNvdW50ID49IDY1NTM2KSB7DQotICAg ICAgVGltZXJDb3VudCAgPSAwOw0KLSAgICAgIFRpbWVyUGVyaW9kID0gTUFYX1RJTUVSX1RJQ0tf RFVSQVRJT047DQotICAgIH0NCi0NCi0gICAgLy8NCi0gICAgLy8gUHJvZ3JhbSB0aGUgODI1NCB0 aW1lciB3aXRoIHRoZSBuZXcgY291bnQgdmFsdWUNCi0gICAgLy8NCi0gICAgU2V0UGl0Q291bnQg KChVSU5UMTYpVGltZXJDb3VudCk7DQotDQotICAgIC8vDQotICAgIC8vIEVuYWJsZSB0aW1lciBp bnRlcnJ1cHQNCi0gICAgLy8NCi0gICAgbUxlZ2FjeTgyNTktPkVuYWJsZUlycSAobUxlZ2FjeTgy NTksIEVmaTgyNTlJcnEwLCBGQUxTRSk7DQotICB9DQotDQotICAvLw0KLSAgLy8gU2F2ZSB0aGUg bmV3IHRpbWVyIHBlcmlvZA0KLSAgLy8NCi0gIG1UaW1lclBlcmlvZCA9IFRpbWVyUGVyaW9kOw0K LQ0KLSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KLX0NCi0NCi0vKioNCi0NCi0gIFRoaXMgZnVuY3Rp b24gcmV0cmlldmVzIHRoZSBwZXJpb2Qgb2YgdGltZXIgaW50ZXJydXB0cyBpbiAxMDAgbnMgdW5p dHMsDQotICByZXR1cm5zIHRoYXQgdmFsdWUgaW4gVGltZXJQZXJpb2QsIGFuZCByZXR1cm5zIEVG SV9TVUNDRVNTLiAgSWYgVGltZXJQZXJpb2QNCi0gIGlzIE5VTEwsIHRoZW4gRUZJX0lOVkFMSURf UEFSQU1FVEVSIGlzIHJldHVybmVkLiAgSWYgYSBUaW1lclBlcmlvZCBvZiAwIGlzDQotICByZXR1 cm5lZCwgdGhlbiB0aGUgdGltZXIgaXMgY3VycmVudGx5IGRpc2FibGVkLg0KLQ0KLQ0KLSAgQHBh cmFtIFRoaXMgICAgICAgICAgICBUaGUgRUZJX1RJTUVSX0FSQ0hfUFJPVE9DT0wgaW5zdGFuY2Uu DQotICBAcGFyYW0gVGltZXJQZXJpb2QgICAgIEEgcG9pbnRlciB0byB0aGUgdGltZXIgcGVyaW9k IHRvIHJldHJpZXZlIGluIDEwMCBucyB1bml0cy4gIElmDQotICAgICAgICAgICAgICAgICAgICAg ICAgIDAgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIHRpbWVyIGlzIGN1cnJlbnRseSBkaXNhYmxlZC4N Ci0NCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgdGltZXIgcGVyaW9kIHdh cyByZXR1cm5lZCBpbiBUaW1lclBlcmlvZC4NCi0gIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICBUaW1lclBlcmlvZCBpcyBOVUxMLg0KLQ0KLSoqLw0KLUVGSV9TVEFUVVMNCi1FRklBUEkN Ci1UaW1lckRyaXZlckdldFRpbWVyUGVyaW9kICgNCi0gIElOIEVGSV9USU1FUl9BUkNIX1BST1RP Q09MICAqVGhpcywNCi0gIE9VVCBVSU5UNjQgICAgICAgICAgICAgICAgICAqVGltZXJQZXJpb2QN Ci0gICkNCi17DQotICBpZiAoVGltZXJQZXJpb2QgPT0gTlVMTCkgew0KLSAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KLSAgfQ0KLQ0KLSAgKlRpbWVyUGVyaW9kID0gbVRpbWVyUGVy aW9kOw0KLQ0KLSAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KLX0NCi0NCi0vKioNCi0NCi0gIFRoaXMg ZnVuY3Rpb24gZ2VuZXJhdGVzIGEgc29mdCB0aW1lciBpbnRlcnJ1cHQuIElmIHRoZSBwbGF0Zm9y bSBkb2VzIG5vdCBzdXBwb3J0IHNvZnQNCi0gIHRpbWVyIGludGVycnVwdHMsIHRoZW4gRUZJX1VO U1VQUE9SVEVEIGlzIHJldHVybmVkLiBPdGhlcndpc2UsIEVGSV9TVUNDRVNTIGlzIHJldHVybmVk Lg0KLSAgSWYgYSBoYW5kbGVyIGhhcyBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgRUZJX1RJ TUVSX0FSQ0hfUFJPVE9DT0wuUmVnaXN0ZXJIYW5kbGVyKCkNCi0gIHNlcnZpY2UsIHRoZW4gYSBz b2Z0IHRpbWVyIGludGVycnVwdCB3aWxsIGJlIGdlbmVyYXRlZC4gSWYgdGhlIHRpbWVyIGludGVy cnVwdCBpcw0KLSAgZW5hYmxlZCB3aGVuIHRoaXMgc2VydmljZSBpcyBjYWxsZWQsIHRoZW4gdGhl IHJlZ2lzdGVyZWQgaGFuZGxlciB3aWxsIGJlIGludm9rZWQuIFRoZQ0KLSAgcmVnaXN0ZXJlZCBo YW5kbGVyIHNob3VsZCBub3QgYmUgYWJsZSB0byBkaXN0aW5ndWlzaCBhIGhhcmR3YXJlLWdlbmVy YXRlZCB0aW1lcg0KLSAgaW50ZXJydXB0IGZyb20gYSBzb2Z0d2FyZS1nZW5lcmF0ZWQgdGltZXIg aW50ZXJydXB0Lg0KLQ0KLQ0KLSAgQHBhcmFtIFRoaXMgICAgICAgICAgICAgIFRoZSBFRklfVElN RVJfQVJDSF9QUk9UT0NPTCBpbnN0YW5jZS4NCi0NCi0gIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgVGhlIHNvZnQgdGltZXIgaW50ZXJydXB0IHdhcyBnZW5lcmF0ZWQuDQotICBAcmV0dmFsIEVG SV9VTlNVUFBPUlRFRCAgIFRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBnZW5lcmF0 aW9uIG9mIHNvZnQgdGltZXIgaW50ZXJydXB0cy4NCi0NCi0qKi8NCi1FRklfU1RBVFVTDQotRUZJ QVBJDQotVGltZXJEcml2ZXJHZW5lcmF0ZVNvZnRJbnRlcnJ1cHQgKA0KLSAgSU4gRUZJX1RJTUVS X0FSQ0hfUFJPVE9DT0wgICpUaGlzDQotICApDQotew0KLSAgRUZJX1NUQVRVUyAgU3RhdHVzOw0K LSAgVUlOVDE2ICAgICAgSVJRTWFzazsNCi0gIEVGSV9UUEwgICAgIE9yaWdpbmFsVFBMOw0KLQ0K LSAgLy8NCi0gIC8vIElmIHRoZSB0aW1lciBpbnRlcnJ1cHQgaXMgZW5hYmxlZCwgdGhlbiB0aGUg cmVnaXN0ZXJlZCBoYW5kbGVyIHdpbGwgYmUgaW52b2tlZC4NCi0gIC8vDQotICBTdGF0dXMgPSBt TGVnYWN5ODI1OS0+R2V0TWFzayAobUxlZ2FjeTgyNTksIE5VTEwsIE5VTEwsICZJUlFNYXNrLCBO VUxMKTsNCi0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQotICBpZiAoKElSUU1hc2sgJiAw eDEpID09IDApIHsNCi0gICAgLy8NCi0gICAgLy8gSW52b2tlIHRoZSByZWdpc3RlcmVkIGhhbmRs ZXINCi0gICAgLy8NCi0gICAgT3JpZ2luYWxUUEwgPSBnQlMtPlJhaXNlVFBMIChUUExfSElHSF9M RVZFTCk7DQotDQotICAgIGlmIChtVGltZXJOb3RpZnlGdW5jdGlvbiAhPSBOVUxMKSB7DQotICAg ICAgLy8NCi0gICAgICAvLyBAYnVnIDogVGhpcyBkb2VzIG5vdCBoYW5kbGUgbWlzc2VkIHRpbWVy IGludGVycnVwdHMNCi0gICAgICAvLw0KLSAgICAgIG1UaW1lck5vdGlmeUZ1bmN0aW9uIChtVGlt ZXJQZXJpb2QpOw0KLSAgICB9DQotDQotICAgIGdCUy0+UmVzdG9yZVRQTCAoT3JpZ2luYWxUUEwp Ow0KLSAgfSBlbHNlIHsNCi0gICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCi0gIH0NCi0NCi0g IHJldHVybiBFRklfU1VDQ0VTUzsNCi19DQotDQotLyoqDQotICBJbml0aWFsaXplIHRoZSBUaW1l ciBBcmNoaXRlY3R1cmFsIFByb3RvY29sIGRyaXZlcg0KLQ0KLSAgQHBhcmFtIEltYWdlSGFuZGxl ICAgICBJbWFnZUhhbmRsZSBvZiB0aGUgbG9hZGVkIGRyaXZlcg0KLSAgQHBhcmFtIFN5c3RlbVRh YmxlICAgICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUNCi0NCi0gIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICBUaW1lciBBcmNoaXRlY3R1cmFsIFByb3RvY29sIGNyZWF0ZWQNCi0g IEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBOb3QgZW5vdWdoIHJlc291cmNlcyBhdmFp bGFibGUgdG8gaW5pdGlhbGl6ZSBkcml2ZXIuDQotICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1Ig ICAgICAgQSBkZXZpY2UgZXJyb3Igb2NjdXJyZWQgYXR0ZW1wdGluZyB0byBpbml0aWFsaXplIHRo ZSBkcml2ZXIuDQotDQotKiovDQotRUZJX1NUQVRVUw0KLUVGSUFQSQ0KLVRpbWVyRHJpdmVySW5p dGlhbGl6ZSAoDQotICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCi0gIElOIEVG SV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KLSAgKQ0KLXsNCi0gIEVGSV9TVEFUVVMgIFN0 YXR1czsNCi0gIFVJTlQzMiAgICAgIFRpbWVyVmVjdG9yOw0KLQ0KLSAgLy8NCi0gIC8vIEluaXRp YWxpemUgdGhlIHBvaW50ZXIgdG8gb3VyIG5vdGlmeSBmdW5jdGlvbi4NCi0gIC8vDQotICBtVGlt ZXJOb3RpZnlGdW5jdGlvbiA9IE5VTEw7DQotDQotICAvLw0KLSAgLy8gTWFrZSBzdXJlIHRoZSBU aW1lciBBcmNoaXRlY3R1cmFsIFByb3RvY29sIGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZCBpbiB0 aGUgc3lzdGVtDQotICAvLw0KLSAgQVNTRVJUX1BST1RPQ09MX0FMUkVBRFlfSU5TVEFMTEVEIChO VUxMLCAmZ0VmaVRpbWVyQXJjaFByb3RvY29sR3VpZCk7DQotDQotICAvLw0KLSAgLy8gRmluZCB0 aGUgQ1BVIGFyY2hpdGVjdHVyYWwgcHJvdG9jb2wuDQotICAvLw0KLSAgU3RhdHVzID0gZ0JTLT5M b2NhdGVQcm90b2NvbCAoJmdFZmlDcHVBcmNoUHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRCAqKikm bUNwdSk7DQotICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KLQ0KLSAgLy8NCi0gIC8vIEZp bmQgdGhlIExlZ2FjeTgyNTkgcHJvdG9jb2wuDQotICAvLw0KLSAgU3RhdHVzID0gZ0JTLT5Mb2Nh dGVQcm90b2NvbCAoJmdFZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkLCBOVUxMLCAoVk9JRCAqKikm bUxlZ2FjeTgyNTkpOw0KLSAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCi0NCi0gIC8vDQot ICAvLyBGb3JjZSB0aGUgdGltZXIgdG8gYmUgZGlzYWJsZWQNCi0gIC8vDQotICBTdGF0dXMgPSBU aW1lckRyaXZlclNldFRpbWVyUGVyaW9kICgmbVRpbWVyLCAwKTsNCi0gIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQotDQotICAvLw0KLSAgLy8gR2V0IHRoZSBpbnRlcnJ1cHQgdmVjdG9yIG51 bWJlciBjb3JyZXNwb25kaW5nIHRvIElSUTAgZnJvbSB0aGUgODI1OSBkcml2ZXINCi0gIC8vDQot ICBUaW1lclZlY3RvciA9IDA7DQotICBTdGF0dXMgICAgICA9IG1MZWdhY3k4MjU5LT5HZXRWZWN0 b3IgKG1MZWdhY3k4MjU5LCBFZmk4MjU5SXJxMCwgKFVJTlQ4ICopJlRpbWVyVmVjdG9yKTsNCi0g IEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQotDQotICAvLw0KLSAgLy8gSW5zdGFsbCBpbnRl cnJ1cHQgaGFuZGxlciBmb3IgODI1NCBUaW1lciAjMCAoSVNBIElSUTApDQotICAvLw0KLSAgU3Rh dHVzID0gbUNwdS0+UmVnaXN0ZXJJbnRlcnJ1cHRIYW5kbGVyIChtQ3B1LCBUaW1lclZlY3Rvciwg VGltZXJJbnRlcnJ1cHRIYW5kbGVyKTsNCi0gIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQot DQotICAvLw0KLSAgLy8gRm9yY2UgdGhlIHRpbWVyIHRvIGJlIGVuYWJsZWQgYXQgaXRzIGRlZmF1 bHQgcGVyaW9kDQotICAvLw0KLSAgU3RhdHVzID0gVGltZXJEcml2ZXJTZXRUaW1lclBlcmlvZCAo Jm1UaW1lciwgREVGQVVMVF9USU1FUl9USUNLX0RVUkFUSU9OKTsNCi0gIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQotDQotICAvLw0KLSAgLy8gSW5zdGFsbCB0aGUgVGltZXIgQXJjaGl0ZWN0 dXJhbCBQcm90b2NvbCBvbnRvIGEgbmV3IGhhbmRsZQ0KLSAgLy8NCi0gIFN0YXR1cyA9IGdCUy0+ SW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzICgNCi0gICAgICAgICAgICAgICAgICAm bVRpbWVySGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICZnRWZpVGltZXJBcmNoUHJvdG9jb2xH dWlkLA0KLSAgICAgICAgICAgICAgICAgICZtVGltZXIsDQotICAgICAgICAgICAgICAgICAgTlVM TA0KLSAgICAgICAgICAgICAgICAgICk7DQotICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0K LQ0KLSAgcmV0dXJuIFN0YXR1czsNCi19DQoKDQoKLT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3Jv dXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3Vw LgpWaWV3L1JlcGx5IE9ubGluZSAoIzExMTEwMyk6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9k ZXZlbC9tZXNzYWdlLzExMTEwMwpNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210 LzEwMjUxODY3NC83Njg2MTc2Ckdyb3VwIE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5p bwpVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL2xlYXZlLzEyMzY3 MTExLzc2ODYxNzYvMTkxMzQ1NjIxMi94eXp6eSBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09 LT0tPS09LT0tPS09LT0tCgoNCg==