Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1013749ybe; Fri, 6 Sep 2019 10:31:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqxLAo5LbxEFgGXTXCvcLQ6A69HnqLSDTMsy2xvN/zH61u86pm6pB0YXWwo1VYNSw0Wh2l8v X-Received: by 2002:a17:902:b082:: with SMTP id p2mr10391732plr.334.1567791067237; Fri, 06 Sep 2019 10:31:07 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 188si6392801pfd.232.2019.09.06.10.30.50; Fri, 06 Sep 2019 10:31:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=wyQbQXKS; dkim=neutral (body hash did not verify) header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=7xGYvhJX; arc=fail (body hash mismatch); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388372AbfIFL6g (ORCPT + 99 others); Fri, 6 Sep 2019 07:58:36 -0400 Received: from mail-eopbgr140050.outbound.protection.outlook.com ([40.107.14.50]:20054 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727210AbfIFL6g (ORCPT ); Fri, 6 Sep 2019 07:58:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YDyU1zJEPWicyjOp06jEJkD8ayepkRb0uhpXOjBDHA8=; b=wyQbQXKSwacQKPImz2jhaEWIr1BxgDweiwY7Jypm7hawftNBjsrZC1SW74eYMRKCWVfNPMxCe/KUCNrezBBi4fE0SBS1bxIBcr0qIUDCUskwoNUhO0qYaOl/hZ8EMhKwjHthVf7HvvQvJaDyxijYtXRiRWn8TK/4PI8YLs8Q02Y= Received: from AM4PR08CA0063.eurprd08.prod.outlook.com (2603:10a6:205:2::34) by DB7PR08MB3882.eurprd08.prod.outlook.com (2603:10a6:10:7d::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 6 Sep 2019 11:58:27 +0000 Received: from DB5EUR03FT010.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::209) by AM4PR08CA0063.outlook.office365.com (2603:10a6:205:2::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 11:58:27 +0000 Authentication-Results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; vger.kernel.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;vger.kernel.org; dmarc=temperror action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT010.mail.protection.outlook.com (10.152.20.96) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14 via Frontend Transport; Fri, 6 Sep 2019 11:58:26 +0000 Received: ("Tessian outbound 108f768cde3d:v27"); Fri, 06 Sep 2019 11:58:23 +0000 X-CR-MTA-TID: 64aa7808 Received: from fd75ebda12e6.3 (cr-mta-lb-1.cr-mta-net [104.47.8.55]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id D724CBA8-AC31-4D08-ABCB-35A492EF70C2.1; Fri, 06 Sep 2019 11:58:18 +0000 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2055.outbound.protection.outlook.com [104.47.8.55]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fd75ebda12e6.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 Sep 2019 11:58:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ir+skFMseSNPbQPuvLYP7VMay+FDqa4mKX1cDoga+Pwkow6WM+CyYIAsXhxy0BcbXzW3PZeLSb+pZVYaBKa8a1vJpoLZzl2hruJogp8XKU1AsYDqcXW/xkG+mlQBobtO+E2KMPE+djKNmX13s6zOJ7bjo3gMvzzalNWEKsNaxpY6rfpQu+Q56AuDIDDOsPeCUtHjnF99xZ/X6NR9SmdhnBOFstVs5Wn87v9HD+udbHn4urwholIi0axPzNXJBYuAOH2BaYibVTQTZvGvCQHaDqgm0gSQ3jWruQaMTrpGFWytyQXbUe+P71WW7759Q1wFbEd5Gyfhh/Wa1lsg5Q/W3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P6M1DF2qkSlhWiOICshrDeZUcu1Z+MZJtM74meO5Fto=; b=gewsJXSP9aXhMSjxyCKFeMmWhhDNKY+dusqydlpRLZpGOv8U0g+/7hzrHca+dhZVo+Y3/Ib/hfTTt5+99CanBOTUquhuymifGWEBcDelMo7DufyNCN+ElrFpqhQ25U2n0v3Dza0WZuAQm+h92nlhDbDJU6d1R22kBBPyKpTd97RCGsF0j/6OVm8G6Kt8//yQWyB2vgW+qGgSAvZwiQ3ib4yL4PlRTNAFWITCDbxg3MqY357YXl74C1uhQA4cpb01jFbnw9MMHoiE/SPLvijJmrW7ApQyA730LYP9Y8zgdJ36EPf6+wXibR1u2aJiBk3WReNhUAMJ4IM+xMEQZZTQ0Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P6M1DF2qkSlhWiOICshrDeZUcu1Z+MZJtM74meO5Fto=; b=7xGYvhJXDqTT/NZBhYEC7ubSxkpah+YplP20quibTIUflZMzUIzqBjKhI20StANP2U4mJtUi7SA3dtkx8bIquHcP4ZvuNu5EAS+oTLV+41b8zqExSwYAfIoe8b4V4xF9itVgOq00wt0rZupAa0lV3poahXkMq5UKxS0TEjqEfMk= Received: from HE1PR0801MB1676.eurprd08.prod.outlook.com (10.168.146.150) by HE1PR0801MB2010.eurprd08.prod.outlook.com (10.168.92.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.16; Fri, 6 Sep 2019 11:58:15 +0000 Received: from HE1PR0801MB1676.eurprd08.prod.outlook.com ([fe80::40a2:f892:29a7:2942]) by HE1PR0801MB1676.eurprd08.prod.outlook.com ([fe80::40a2:f892:29a7:2942%10]) with mapi id 15.20.2220.022; Fri, 6 Sep 2019 11:58:15 +0000 From: "Jianyong Wu (Arm Technology China)" To: Marc Zyngier , "netdev@vger.kernel.org" , "pbonzini@redhat.com" , "sean.j.christopherson@intel.com" , "richardcochran@gmail.com" , Mark Rutland , Will Deacon , Suzuki Poulose CC: "linux-kernel@vger.kernel.org" , Steve Capper , "Kaly Xin (Arm Technology China)" , "Justin He (Arm Technology China)" Subject: RE: [RFC PATCH 3/3] Enable ptp_kvm for arm64 Thread-Topic: [RFC PATCH 3/3] Enable ptp_kvm for arm64 Thread-Index: AQHVXjSmk4aR/CraEk2ZVbEHwQusoKcR7cKAgAyZL9A= Date: Fri, 6 Sep 2019 11:58:15 +0000 Message-ID: References: <20190829063952.18470-1-jianyong.wu@arm.com> <20190829063952.18470-4-jianyong.wu@arm.com> <4d04867c-2188-9574-fbd1-2356c6b99b7d@kernel.org> In-Reply-To: <4d04867c-2188-9574-fbd1-2356c6b99b7d@kernel.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: eea7ebe0-d41f-4adc-97fc-be6734f04536.1 x-checkrecipientchecked: true Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Jianyong.Wu@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: fe948348-df91-4f33-ffce-08d732c18670 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam-Untrusted: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:HE1PR0801MB2010; X-MS-TrafficTypeDiagnostic: HE1PR0801MB2010:|HE1PR0801MB2010:|DB7PR08MB3882: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; x-forefront-prvs: 0152EBA40F X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(376002)(136003)(346002)(366004)(396003)(189003)(199004)(13464003)(6636002)(2906002)(64756008)(66556008)(8936002)(66476007)(66446008)(55016002)(66946007)(2201001)(6116002)(7736002)(446003)(9686003)(3846002)(76116006)(305945005)(256004)(52536014)(486006)(11346002)(476003)(30864003)(5660300002)(14454004)(76176011)(102836004)(81166006)(81156014)(74316002)(55236004)(2501003)(86362001)(25786009)(7696005)(6506007)(53546011)(478600001)(186003)(14444005)(110136005)(4326008)(54906003)(53946003)(71200400001)(71190400001)(6436002)(26005)(8676002)(316002)(53936002)(6246003)(229853002)(66066001)(99286004)(33656002);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR0801MB2010;H:HE1PR0801MB1676.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: cRS2k8a8Bdl3O7eguPUsANOZ2m5YsC3+sNMw/WMyYKxp8bLa99+Gx67zLVnat4CE8aZAgRsly883WgViqQukGHoYEx0v1Dg8CXokg1IGNqxRsYo2YnF5w3jbr8ReETFU0i4vFz0ETRnHR0ve0TbMCio1BZwn/sk0p96GSh8PRZrcMjZ3YOZPMeL72A1iF0qThRWAf9R2srvwf1ESh5+m0reGHIj3j4lBZNudrgl6hovXil/qTh2DHUo1styIdFJS8WKLRMQvmenPoNgKrjistwoh92WjLIiOeLkQ8L9yBpnHvKBtd3BZV96UlhHTKwJ2U94RuKw5oRXt0JPprtWrPob0O/jeWjLEcMXm6+l5bnST+q1+g2kcofEQ7b1kVbfeX4sYheufqCgZt5SWMGNPEf8B43Kp6pcw345in/AiP/A= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2010 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jianyong.Wu@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT010.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;IPV:CAL;SCL:-1;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(39860400002)(396003)(136003)(2980300002)(199004)(189003)(13464003)(40434004)(11346002)(102836004)(336012)(6506007)(53546011)(47776003)(486006)(66066001)(63370400001)(436003)(446003)(63350400001)(476003)(186003)(55016002)(25786009)(14454004)(9686003)(126002)(478600001)(26005)(2201001)(4326008)(86362001)(3846002)(450100002)(22756006)(70206006)(6116002)(26826003)(70586007)(23676004)(6246003)(76176011)(7696005)(2486003)(6636002)(76130400001)(99286004)(52536014)(33656002)(74316002)(7736002)(5660300002)(316002)(54906003)(50466002)(305945005)(110136005)(2906002)(229853002)(8676002)(14444005)(5024004)(8936002)(81166006)(81156014)(2501003)(30864003)(356004);DIR:OUT;SFP:1101;SCL:1;SRVR:DB7PR08MB3882;H:64aa7808-outbound-1.mta.getcheckrecipient.com;FPR:;SPF:TempError;LANG:en;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;A:1;MX:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 3dccd650-b9cd-4e5c-6a86-08d732c18031 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(710020)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB7PR08MB3882; X-Forefront-PRVS: 0152EBA40F X-Microsoft-Antispam-Message-Info: 6FeYT01LJaktFbaFwrze5em7/hp+84FDduCCTbr8WWIug24p770/v43pk+fEDHZ8Pd+m6sQ2y9q6UlpMjqThr5gB56agJ/C1DRqIxkXgWrJf88DfXlxmnzlkJh3zD2Iky6u3pE1YKO16hyDWOlp66A0Y7/a93vVvDaoM+ERAmBpAp/HLfkaFeTft18DWw4cyQTn9xYPW0rqwdyub78EIVuKvQ9+hQ14fmTlf+CI+l3HBwUzLInMhnw1sFehschBdcS0TjlK7pKQnx/I1kriEFooE8++5R6jfap33Ep565mwUZucwV1qotV8i6o3Z+3iuIHfPMfugRCcbSNcPJBrqxN369ytljp4DSR8rpNs0KqQ+wGxGVlYDuAbDM+l8T/XzNITha/MsezAknwt4jDsDjd7MKUFQYby2QSSR/Ivqf2M= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2019 11:58:26.0683 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fe948348-df91-4f33-ffce-08d732c18670 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3882 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTWFyYywNCg0KVmVyeSBzb3JyeSB0byBoYXZlIG1pc3NlZCB0aGlzIGNvbW1lbnRzLg0KDQo+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1hcmMgWnluZ2llciA8bWF6QGtl cm5lbC5vcmc+DQo+IFNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgMjksIDIwMTkgNjozMyBQTQ0KPiBU bzogSmlhbnlvbmcgV3UgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8SmlhbnlvbmcuV3VAYXJtLmNv bT47DQo+IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IHBib256aW5pQHJlZGhhdC5jb207DQo+IHNl YW4uai5jaHJpc3RvcGhlcnNvbkBpbnRlbC5jb207IHJpY2hhcmRjb2NocmFuQGdtYWlsLmNvbTsg TWFyayBSdXRsYW5kDQo+IDxNYXJrLlJ1dGxhbmRAYXJtLmNvbT47IFdpbGwgRGVhY29uIDxXaWxs LkRlYWNvbkBhcm0uY29tPjsgU3V6dWtpDQo+IFBvdWxvc2UgPFN1enVraS5Qb3Vsb3NlQGFybS5j b20+DQo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBTdGV2ZSBDYXBwZXIgPFN0 ZXZlLkNhcHBlckBhcm0uY29tPjsNCj4gS2FseSBYaW4gKEFybSBUZWNobm9sb2d5IENoaW5hKSA8 S2FseS5YaW5AYXJtLmNvbT47IEp1c3RpbiBIZSAoQXJtDQo+IFRlY2hub2xvZ3kgQ2hpbmEpIDxK dXN0aW4uSGVAYXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtSRkMgUEFUQ0ggMy8zXSBFbmFibGUg cHRwX2t2bSBmb3IgYXJtNjQNCj4NCj4gT24gMjkvMDgvMjAxOSAwNzozOSwgSmlhbnlvbmcgV3Ug d3JvdGU6DQo+ID4gQ3VycmVudGx5IGluIGFybTY0IHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50 LCB0aGVyZSBpcyBubyBtZWNoYW5pc20NCj4gPiB0byBrZWVwIHRpbWUgc3luYyBiZXR3ZWVuIGd1 ZXN0IGFuZCBob3N0LiBUaW1lIGluIGd1ZXN0IHdpbGwgZHJpZnQNCj4gPiBjb21wYXJlZCB3aXRo IGhvc3QgYWZ0ZXIgYm9vdCB1cCBhcyB0aGV5IG1heSBib3RoIHVzZSB0aGlyZCBwYXJ0eSB0aW1l DQo+ID4gc291cmNlcyB0byBjb3JyZWN0IHRoZWlyIHRpbWUgcmVzcGVjdGl2ZWx5LiBUaGUgdGlt ZSBkZXZpYXRpb24gd2lsbCBiZQ0KPiA+IGluIG9yZGVyIG9mIG1pbGxpc2Vjb25kcyBidXQgc29t ZSBzY2VuYXJpb3MgYXNrIGZvciBoaWdoZXIgdGltZQ0KPiA+IHByZWNpc2lvbiwgbGlrZSBpbiBj bG91ZCBlbnZpcmVubWVudCwgd2Ugd2FudCBhbGwgdGhlIFZNcyBydW5uaW5nIGluDQo+ID4gdGhl IGhvc3QgYXF1aXJlIHRoZSBzYW1lIGxldmVsIGFjY3VyYWN5IGZyb20gaG9zdCBjbG9jay4NCj4g Pg0KPiA+IFVzZSBvZiBrdm0gcHRwIGNsb2NrLCB3aGljaCBjaG9vc2UgdGhlIGhvc3QgY2xvY2sg c291cmNlIGNsb2NrIGFzIGENCj4gPiByZWZlcmVuY2UgY2xvY2sgdG8gc3luYyB0aW1lIGNsb2Nr IGJldHdlZW4gZ3Vlc3QgYW5kIGhvc3QgaGFzIGJlZW4NCj4gPiBhZG9wdGVkIGJ5IHg4NiB3aGlj aCBtYWtlcyB0aGUgdGltZSBzeW5jIG9yZGVyIGZyb20gbWlsbGlzZWNvbmRzIHRvDQo+IG5hbm9z ZWNvbmRzLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBlbmFibGUga3ZtIHB0cCBvbiBhcm02NCBhbmQg d2UgZ2V0IHRoZSBzaW1pbGFyIGNsb2NrIGRyaWZ0DQo+ID4gYXMgZm91bmQgd2l0aCB4ODYgd2l0 aCBrdm0gcHRwLg0KPiA+DQo+ID4gVGVzdCByZXN1bHQgY29tcGFyaXNvbiBiZXR3ZWVuIHdpdGgg a3ZtIHB0cCBhbmQgd2l0aG91dCBpdCBpbiBhcm02NA0KPiA+IGFyZSBhcyBmb2xsb3dzLiBUaGlz IHRlc3QgZGVyaXZlZCBmcm9tIHRoZSByZXN1bHQgb2YgY29tbWFuZCAnY2hyb255Yw0KPiA+IHNv dXJjZXMnLiB3ZSBzaG91bGQgdGFrZSBtb3JlIGN1cmUgb2YgdGhlIGxhc3Qgc2FtcGxlIGNvbHVt biB3aGljaA0KPiA+IHNob3dzIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUgbG9jYWwgY2xvY2sgYW5k IHRoZSBzb3VyY2UgYXQgdGhlIGxhc3QNCj4gbWVhc3VyZW1lbnQuDQo+ID4NCj4gPiBubyBrdm0g cHRwIGluIGd1ZXN0Og0KPiA+IE1TIE5hbWUvSVAgYWRkcmVzcyAgIFN0cmF0dW0gUG9sbCBSZWFj aCBMYXN0UnggTGFzdCBzYW1wbGUNCj4gPg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09PT09PT09PT09DQo+ID4gXiog ZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICAxMyAgKzEwNDB1c1srMTU4MXVz XSArLy0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAg ICAyMSAgKzEwNDB1c1srMTU4MXVzXSArLy0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUu Y24gICAgICAyICAgNiAgIDM3NyAgICAyOSAgKzEwNDB1c1srMTU4MXVzXSArLy0gICAyMW1zDQo+ ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICAzNyAgKzEwNDB1c1sr MTU4MXVzXSArLy0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAg IDM3NyAgICA0NSAgKzEwNDB1c1srMTU4MXVzXSArLy0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5l dC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICA1MyAgKzEwNDB1c1srMTU4MXVzXSArLy0gICAy MW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICA2MSAgKzEw NDB1c1srMTU4MXVzXSArLy0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAy ICAgNiAgIDM3NyAgICAgNCAgIC0xMzB1c1sgKzc5NnVzXSArLy0gICAyMW1zDQo+ID4gXiogZG5z MS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICAxMiAgIC0xMzB1c1sgKzc5NnVzXSAr Ly0gICAyMW1zDQo+ID4gXiogZG5zMS5zeW5ldC5lZHUuY24gICAgICAyICAgNiAgIDM3NyAgICAy MCAgIC0xMzB1c1sgKzc5NnVzXSArLy0gICAyMW1zDQo+ID4NCj4gPiBpbiBob3N0Og0KPiA+IE1T IE5hbWUvSVAgYWRkcmVzcyAgIFN0cmF0dW0gUG9sbCBSZWFjaCBMYXN0UnggTGFzdCBzYW1wbGUN Cj4gPg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQo+ID09PT09PT09PT09PT09DQo+ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAg ICAyICAgNyAgIDM3NyAgICA3MiAgIC00NzB1c1sgLTYwM3VzXSArLy0gICAxOG1zDQo+ID4gXiog MTIwLjI1LjExNS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAgICA5MiAgIC00NzB1c1sgLTYwM3Vz XSArLy0gICAxOG1zDQo+ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAg IDExMiAgIC00NzB1c1sgLTYwM3VzXSArLy0gICAxOG1zDQo+ID4gXiogMTIwLjI1LjExNS4yMCAg ICAgICAgICAyICAgNyAgIDM3NyAgICAgMiAgICs4NzJuc1stNjgwOG5zXSArLy0gICAxN21zDQo+ ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAgICAyMiAgICs4NzJuc1st NjgwOG5zXSArLy0gICAxN21zDQo+ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAgICAyICAgNyAg IDM3NyAgICA0MyAgICs4NzJuc1stNjgwOG5zXSArLy0gICAxN21zDQo+ID4gXiogMTIwLjI1LjEx NS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAgICA2MyAgICs4NzJuc1stNjgwOG5zXSArLy0gICAx N21zDQo+ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAgICA4MyAgICs4 NzJuc1stNjgwOG5zXSArLy0gICAxN21zDQo+ID4gXiogMTIwLjI1LjExNS4yMCAgICAgICAgICAy ICAgNyAgIDM3NyAgIDEwMyAgICs4NzJuc1stNjgwOG5zXSArLy0gICAxN21zDQo+ID4gXiogMTIw LjI1LjExNS4yMCAgICAgICAgICAyICAgNyAgIDM3NyAgIDEyMyAgICs4NzJuc1stNjgwOG5zXSAr Ly0gICAxN21zDQo+ID4NCj4gPiBUaGUgZG5zMS5zeW5ldC5lZHUuY24gaXMgdGhlIG5ldHdvcmsg cmVmZXJlbmNlIGNsb2NrIGZvciBndWVzdCBhbmQNCj4gPiAxMjAuMjUuMTE1LjIwIGlzIHRoZSBu ZXR3b3JrIHJlZmVyZW5jZSBjbG9jayBmb3IgaG9zdC4gd2UgY2FuJ3QgZ2V0DQo+ID4gdGhlIGNs b2NrIGVycm9yIGJldHdlZW4gZ3Vlc3QgYW5kIGhvc3QgZGlyZWN0bHksIGJ1dCBhIHJvdWdobHkN Cj4gPiBlc3RpbWF0ZWQgdmFsdWUgd2lsbCBiZSBpbiBvcmRlciBvZiBodW5kcmVkcyBvZiB1cyB0 byBtcy4NCj4gPg0KPiA+IHdpdGgga3ZtIHB0cCBpbiBndWVzdDoNCj4gPiBjaHJvbnkgaGFzIGJl ZW4gZGlzYWJsZWQgaW4gaG9zdCB0byByZW1vdmUgdGhlIGRpc3R1cmIgYnkgbmV0d29yayBjbG9j ay4NCj4NCj4gSXMgdGhhdCBhIHJlYWxpc3RpYyB1c2UgY2FzZT8gV2h5IHNob3VsZCB0aGUgaG9z dCBub3QgdXNlIE5UUD8NCj4NCg0KTm90IHJlYWxseSwgTlRQIHdpbGwgY2hhbmdlIHRoZSB0aGUg aG9zdCBjbG9jayB3aGljaCB3aWxsIGNvbnRhbWluYXRlIHRoZSBkYXRhIG9mIHN5bmMgYmV0d2Vl bg0KSG9zdCBhbmQgZ3Vlc3QuIEJ1dCBpbiByZWFsaXR5LCB3ZSB3aWxsIGtlZXAgTlRQIG9ubGlu ZS4NCg0KPiA+DQo+ID4gTVMgTmFtZS9JUCBhZGRyZXNzICAgICAgICAgU3RyYXR1bSBQb2xsIFJl YWNoIExhc3RSeCBMYXN0IHNhbXBsZQ0KPiA+DQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PT09PT09PT0NCj4gPiAq IFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAgICA4ICAgICAtN25zWyAgICsx bnNdICsvLSAgICAzbnMNCj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3 ICAgICA4ICAgICArMW5zWyAgKzE2bnNdICsvLSAgICAzbnMNCj4gPiAqIFBIQzAgICAgICAgICAg ICAgICAgICAgIDAgICAzICAgMzc3ICAgICA2ICAgICAtNG5zWyAgIC0wbnNdICsvLSAgICA2bnMN Cj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAgICA2ICAgICAtOG5z WyAgLTEybnNdICsvLSAgICA1bnMNCj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAz ICAgMzc3ICAgICA1ICAgICArMm5zWyAgICs0bnNdICsvLSAgICA0bnMNCj4gPiAqIFBIQzAgICAg ICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAgIDEzICAgICArMm5zWyAgICs0bnNdICsvLSAg ICA0bnMNCj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAgIDEyICAg ICAtNG5zWyAgIC02bnNdICsvLSAgICA0bnMNCj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAg IDAgICAzICAgMzc3ICAgIDExICAgICAtOG5zWyAgLTExbnNdICsvLSAgICA2bnMNCj4gPiAqIFBI QzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAgIDEwICAgIC0xNG5zWyAgLTIwbnNd ICsvLSAgICA0bnMNCj4gPiAqIFBIQzAgICAgICAgICAgICAgICAgICAgIDAgICAzICAgMzc3ICAg ICA4ICAgICArNG5zWyAgICs1bnNdICsvLSAgICA0bnMNCj4gPg0KPiA+IFRoZSBQSEMwIGlzIHRo ZSBwdHAgY2xvY2sgd2hpY2ggY2hvb3NlIHRoZSBob3N0IGNsb2NrIGFzIGl0cyBzb3VyY2UNCj4g PiBjbG9jay4gU28gd2UgY2FuIGJlIHN1cmUgdG8gc2F5IHRoYXQgdGhlIGNsb2NrIGVycm9yIGJl dHdlZW4gaG9zdCBhbmQNCj4gPiBndWVzdCBpcyBpbiBvcmRlciBvZiBucy4NCj4gPg0KPiA+IFNp Z25lZC1vZmYtYnk6IEppYW55b25nIFd1IDxqaWFueW9uZy53dUBhcm0uY29tPg0KPiA+IC0tLQ0K PiA+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FyY2hfdGltZXIuaCAgfCAgMyArKw0KPiA+ICBh cmNoL2FybTY0L2t2bS9hcmNoX3B0cF9rdm0uYyAgICAgICAgfCA3Ng0KPiArKysrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMvY2xvY2tzb3VyY2UvYXJtX2FyY2hfdGltZXIu YyB8ICA2ICsrLQ0KPiA+ICBkcml2ZXJzL3B0cC9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAg MiArLQ0KPiA+ICBpbmNsdWRlL2xpbnV4L2FybS1zbWNjYy5oICAgICAgICAgICAgfCAxNCArKysr Kw0KPiA+ICB2aXJ0L2t2bS9hcm0vcHNjaS5jICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysr DQo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p ICBjcmVhdGUgbW9kZQ0KPiA+IDEwMDY0NCBhcmNoL2FybTY0L2t2bS9hcmNoX3B0cF9rdm0uYw0K Pg0KPiBQbGVhc2Ugc3BsaXQgdGhpcyBwYXRjaCBpbnRvIHR3byBwYXJ0czogdGhlIGh5cGVydmlz b3IgY29kZSBpbiBhIHBhdGNoIGFuZCB0aGUNCj4gZ3Vlc3QgY29kZSBpbiBhbm90aGVyIHBhdGNo LiBIYXZpbmcgYm90aCBvZiB0aGVtIHRvZ2V0aGVyIGlzIGNvbmZ1c2luZy4NCj4NCk9rLCAgcmVh bGx5IGJldHRlci4NCg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vYXJjaF90aW1lci5oDQo+ID4gYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FyY2hfdGltZXIu aA0KPiA+IGluZGV4IDY3NTYxNzhjMjdkYi4uODgwNTc2YTgxNGI2IDEwMDY0NA0KPiA+IC0tLSBh L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXJjaF90aW1lci5oDQo+ID4gKysrIGIvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9hcmNoX3RpbWVyLmgNCj4gPiBAQCAtMjI5LDQgKzIyOSw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGFyY2hfdGltZXJfYXJjaF9pbml0KHZvaWQpDQo+ID4gICAgIHJldHVybiAw Ow0KPiA+ICB9DQo+ID4NCj4gPiArZXh0ZXJuIHN0cnVjdCBjbG9ja3NvdXJjZSBjbG9ja3NvdXJj ZV9jb3VudGVyOyBleHRlcm4gdTY0DQo+ID4gK2FyY2hfY291bnRlcl9yZWFkKHN0cnVjdCBjbG9j a3NvdXJjZSAqY3MpOw0KPg0KPiBJJ20gZGVmaW5pdGVseSBub3Qga2VlbiBvbiBleHBvc2luZyB0 aGUgaW50ZXJuYWxzIG9mIHRoZSBhcmNoX3RpbWVyIGRyaXZlciB0bw0KPiByYW5kb20gc3Vic3lz dGVtcy4gRnVydGhlcm1vcmUsIHlvdSBzZWVtIHRvIGV4cGVjdCB0aGF0IHRoZSBndWVzdCBrZXJu ZWwNCj4gd2lsbCBvbmx5IHVzZSB0aGUgYXJjaCB0aW1lciBhcyBhIGNsb2Nrc291cmNlLCBhbmQg bm90aGluZyByZWFsbHkgZ3VhcmFudGVlcw0KPiB0aGF0IChpbiB3aGljaCBjYXNlIGdldF9kZXZp Y2Vfc3lzdGVtX2Nyb3NzdHN0YW1wIHdpbGwgZmFpbCkuDQo+DQpUaGUgY29kZSBoZXJlIGlzIHJl YWxseSB1Z2x5LCBJIG5lZWQgYSBiZXR0ZXIgc29sdXRpb24gdG8gb2ZmZXIgYSBjbG9jayBzb3Vy Y2UNCkZvciB0aGUgZ3Vlc3QuDQoNCj4gSXQgbG9va3MgdG8gbWUgdGhhdCB3ZSdkIGJlIGJldHRl ciBvZmYgZXhwb3NpbmcgYSBjb3JlIHRpbWVrZWVwaW5nIEFQSSB0aGF0DQo+IHBvcHVsYXRlcyBh IHN0cnVjdCBzeXN0ZW1fY291bnRlcnZhbF90IGJhc2VkIG9uIHRoZSAqY3VycmVudCogdGltZWtl ZXBlcg0KPiBtb25vdG9uaWMgY2xvY2tzb3VyY2UuIFRoaXMgd291bGQgc2ltcGxpZnkgdGhlIHNw bGl0IGJldHdlZW4gZ2VuZXJpYyBhbmQNCj4gYXJjaC1zcGVjaWZpYyBjb2RlLg0KPg0KSSB0aGlu ayBpdCByZWFsbHkgbmVjZXNzYXJ5Lg0KDQo+IFdoZXRoZXIgb3Igbm90IHRnbHggd2lsbCBiZSBo YXBweSB3aXRoIHRoZSBpZGVhIGlzIGFub3RoZXIgcHJvYmxlbSwgYnV0IEknbQ0KPiBjZXJ0YWlu bHkgbm90IHRha2luZyBhbnkgY2hhbmdlIHRvIHRoZSBhcmNoIHRpbWVyIGNvZGUgYmFzZWQgb24g dGhpcy4NCj4NCkkgY2FuIGhhdmUgYSB0cnksIGJ1dCB0aGUgZGV0YWlsIGlzIG5vdCBjbGVhciBm b3IgbWUgbm93Lg0KDQo+ID4gKw0KPiA+ICAjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9rdm0vYXJjaF9wdHBfa3ZtLmMNCj4gPiBiL2FyY2gvYXJtNjQva3ZtL2FyY2hfcHRwX2t2 bS5jDQo+DQo+IFdlIGRvbid0IHB1dCBub24taHlwZXJ2aXNvciBpbiBhcmNoL2FybTY0L2t2bS4g UGxlYXNlIG1vdmUgaXQgYmFjayB0bw0KPiBkcml2ZXJzL3B0cCAoYXMgd2VsbCBhcyBpdHMgeDg2 IGNvdW50ZXJwYXJ0KSwgYW5kIGp1c3QgbGluayB0aGUgdHdvIHBhcnRzIHRoZXJlLg0KPiBUaGlz IHNob3VsZCBhbHNvIGFsbG93IHRoaXMgdG8gYmUgZW5hYmxlZCBmb3IgMzJiaXQgZ3Vlc3RzLg0K Pg0KRXJyLCBzb3JyeSwgd2hhdCdzIG1lYW4gb2YgImxpbmsgdGhlIHR3byBwYXJ0cyB0aGVyZSI/ IHNob3VsZCBJIGFkZCBhbm90aGVyIHR3byBmaWxlIHVwZGF0ZSBkcml2ZXIvcHRwLw0KQm90aCBm b3IgYXJtNjQgYW5kIHg4NiB0byBjb250YWlucyB0aGVzZSBhcmNoLXNwZWNpZmljIGNvZGUgb3Ig cGFjayB0aGVtIGFsbCBpbnRvIHB0cF9rdm0uYz8NCg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi42YjIxNjVlYmNlNjINCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvYXJjaC9hcm02NC9rdm0vYXJjaF9wdHBfa3ZtLmMNCj4gPiBAQCAtMCwwICsx LDc2IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4g PiArLyoNCj4gPiArICogIFZpcnR1YWwgUFRQIDE1ODggY2xvY2sgZm9yIHVzZSB3aXRoIEtWTSBn dWVzdHMNCj4gPiArICogIENvcHlyaWdodCAoQykgMjAxOSBBUk0gTHRkLg0KPiA+ICsgKiAgQWxs IFJpZ2h0cyBSZXNlcnZlZA0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxhc20vaHlw ZXJ2aXNvci5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9wc2NpLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9hcm0tc21jY2MuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3RpbWVjb3VudGVyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zY2hl ZC9jbG9jay5oPg0KPiA+ICsjaW5jbHVkZSA8YXNtL2FyY2hfdGltZXIuaD4NCj4gPiArDQo+ID4g Ky8qDQo+ID4gKyAqIGFzIHRyYXAgY2FsbCBjYXVzZSBkZWxheSwgdGhpcyBmdW5jdGlvbiB3aWxs IHJldHVybiB0aGUgZGVsYXkgaW4NCj4gPiArbmFub3NlY29uZCAgKi8gc3RhdGljIHU2NCBhcm1f c21jY2NfMV8xX2ludm9rZV9kZWxheSh1MzIgaWQsIHN0cnVjdA0KPiA+ICthcm1fc21jY2NfcmVz ICpyZXMpIHsNCj4gPiArICAgdTY0IG5zLCB0MSwgdDI7DQo+ID4gKw0KPiA+ICsgICB0MSA9IHNj aGVkX2Nsb2NrKCk7DQo+ID4gKyAgIGFybV9zbWNjY18xXzFfaW52b2tlKGlkLCByZXMpOw0KPiA+ ICsgICB0MiA9IHNjaGVkX2Nsb2NrKCk7DQo+ID4gKyAgIHQyIC09IHQxOw0KPiA+ICsgICBucyA9 IHQyOw0KPiA+ICsgICByZXR1cm4gbnM7DQo+DQo+IEkgdGhpbmsgeW91IGNhbiBnZXQgcmlkIG9m IHRoZSBucyB2YXJpYWJsZSBoZXJlLi4uDQoNClllYWgsIG5zIGlzIHJlYWxseSByZWR1bmRhbnQu DQoNCj4NCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IGt2bV9hcmNoX3B0cF9pbml0KHZvaWQpDQo+ ID4gK3sNCj4gPiArICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK2ludCBrdm1fYXJj aF9wdHBfZ2V0X2Nsb2NrKHN0cnVjdCB0aW1lc3BlYzY0ICp0cykgew0KPiA+ICsgICB1NjQgbnM7 DQo+ID4gKyAgIHN0cnVjdCBhcm1fc21jY2NfcmVzIGh2Y19yZXM7DQo+ID4gKw0KPiA+ICsgICBp ZiAoIWt2bV9hcm1faHlwX3NlcnZpY2VfYXZhaWxhYmxlKA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgQVJNX1NNQ0NDX1ZFTkRPUl9IWVBfS1ZNX1BUUF9GVU5DX0lEKSkgew0KPiA+ICsgICAgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gPiArICAgfQ0KPiA+ICsgICBucyA9DQo+IGFybV9z bWNjY18xXzFfaW52b2tlX2RlbGF5KEFSTV9TTUNDQ19WRU5ET1JfSFlQX0tWTV9QVFBfRlUNCj4g TkNfSUQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh2Y19yZXMp Ow0KPiA+ICsgICB0cy0+dHZfc2VjID0gaHZjX3Jlcy5hMDsNCj4gPiArICAgdHMtPnR2X25zZWMg PSBodmNfcmVzLmExOw0KPiA+ICsgICB0aW1lc3BlYzY0X2FkZF9ucyh0cywgbnMpOw0KPiA+ICsg ICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IGt2bV9hcmNoX3B0cF9nZXRfY2xv Y2tfZm4obG9uZyAqY3ljbGUsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cywNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBjbG9ja3NvdXJjZSAqKmNzKQ0KPiA+ICt7DQo+ID4gKyAg IHU2NCBuczsNCj4gPiArICAgc3RydWN0IGFybV9zbWNjY19yZXMgaHZjX3JlczsNCj4gPiArDQo+ ID4gKyAgIGlmICgha3ZtX2FybV9oeXBfc2VydmljZV9hdmFpbGFibGUoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICBBUk1fU01DQ0NfVkVORE9SX0hZUF9LVk1fUFRQX0ZVTkNfSUQpKSB7DQo+ID4g KyAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+ICsgICB9DQo+ID4gKyAgIG5zID0N Cj4gYXJtX3NtY2NjXzFfMV9pbnZva2VfZGVsYXkoQVJNX1NNQ0NDX1ZFTkRPUl9IWVBfS1ZNX1BU UF9GVQ0KPiBOQ19JRCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm aHZjX3Jlcyk7DQo+ID4gKyAgIHRzLT50dl9zZWMgPSBodmNfcmVzLmEwOw0KPiA+ICsgICB0cy0+ dHZfbnNlYyA9IGh2Y19yZXMuYTE7DQo+ID4gKyAgIHRpbWVzcGVjNjRfYWRkX25zKHRzLCBucyk7 DQo+ID4gKyAgICpjeWNsZSA9IGh2Y19yZXMuYTI7DQo+ID4gKyAgICpjcyA9ICZjbG9ja3NvdXJj ZV9jb3VudGVyOw0KPiA+ICsNCj4gPiArICAgcmV0dXJuIDA7DQo+ID4gK30NCj4NCj4gV2h5IGRv IHdlIGhhdmUgdHdvIGZ1bmN0aW9ucyBkb2luZyBhbG1vc3QgdGhlIHNhbWUgdGhpbmc/IFdoeSBk byB5b3UgY2FsbA0KPiBrdm1fYXJtX2h5cF9zZXJ2aWNlX2F2YWlsYWJsZSBvbiBlYWNoIGFuZCBl dmVyeSB0aW1lPyBJc24ndCBpdCBlbm91Z2ggdG8NCj4gY2hlY2sgaW4ga3ZtX2FyY2hfcHRwX2lu aXQoKT8NCj4NCg0KWWVhaCwgaXQncyBiZXR0ZXIuDQoNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRI T1IoIk1hcmNlbG8gVG9zYXR0aSA8bXRvc2F0dGlAcmVkaGF0LmNvbT4iKTsNCj4gPiArTU9EVUxF X0RFU0NSSVBUSU9OKCJQVFAgY2xvY2sgdXNpbmcgS1ZNQ0xPQ0siKTsNCj4gPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOw0KPg0KPiBUaGlzIHNob3VsZCBvbmx5IGV4aXN0IGluIHRoZSBnZW5lcmlj IGNvZGUuDQoNCk9rLiBJIHdpbGwgcmVtb3ZlIHRoZW0uDQoNCj4NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9jbG9ja3NvdXJjZS9hcm1fYXJjaF90aW1lci5jDQo+ID4gYi9kcml2ZXJzL2Nsb2Nr c291cmNlL2FybV9hcmNoX3RpbWVyLmMNCj4gPiBpbmRleCAwN2U1N2E0OWQxZTguLjAyMWUzZjY5 MzY0YyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Nsb2Nrc291cmNlL2FybV9hcmNoX3RpbWVy LmMNCj4gPiArKysgYi9kcml2ZXJzL2Nsb2Nrc291cmNlL2FybV9hcmNoX3RpbWVyLmMNCj4gPiBA QCAtMTc1LDIzICsxNzUsMjUgQEAgc3RhdGljIG5vdHJhY2UgdTY0IGFyY2hfY291bnRlcl9nZXRf Y250dmN0KHZvaWQpDQo+ID4gIHU2NCAoKmFyY2hfdGltZXJfcmVhZF9jb3VudGVyKSh2b2lkKSA9 IGFyY2hfY291bnRlcl9nZXRfY250dmN0Ow0KPiA+IEVYUE9SVF9TWU1CT0xfR1BMKGFyY2hfdGlt ZXJfcmVhZF9jb3VudGVyKTsNCj4gPg0KPiA+IC1zdGF0aWMgdTY0IGFyY2hfY291bnRlcl9yZWFk KHN0cnVjdCBjbG9ja3NvdXJjZSAqY3MpDQo+ID4gK3U2NCBhcmNoX2NvdW50ZXJfcmVhZChzdHJ1 Y3QgY2xvY2tzb3VyY2UgKmNzKQ0KPiA+ICB7DQo+ID4gICAgIHJldHVybiBhcmNoX3RpbWVyX3Jl YWRfY291bnRlcigpOw0KPiA+ICB9DQo+ID4gK0VYUE9SVF9TWU1CT0woYXJjaF9jb3VudGVyX3Jl YWQpOw0KPiA+DQo+ID4gIHN0YXRpYyB1NjQgYXJjaF9jb3VudGVyX3JlYWRfY2MoY29uc3Qgc3Ry dWN0IGN5Y2xlY291bnRlciAqY2MpICB7DQo+ID4gICAgIHJldHVybiBhcmNoX3RpbWVyX3JlYWRf Y291bnRlcigpOw0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIHN0cnVjdCBjbG9ja3NvdXJjZSBj bG9ja3NvdXJjZV9jb3VudGVyID0gew0KPiA+ICtzdHJ1Y3QgY2xvY2tzb3VyY2UgY2xvY2tzb3Vy Y2VfY291bnRlciA9IHsNCj4gPiAgICAgLm5hbWUgICA9ICJhcmNoX3N5c19jb3VudGVyIiwNCj4g PiAgICAgLnJhdGluZyA9IDQwMCwNCj4gPiAgICAgLnJlYWQgICA9IGFyY2hfY291bnRlcl9yZWFk LA0KPiA+ICAgICAubWFzayAgID0gQ0xPQ0tTT1VSQ0VfTUFTSyg1NiksDQo+ID4gICAgIC5mbGFn cyAgPSBDTE9DS19TT1VSQ0VfSVNfQ09OVElOVU9VUywNCj4gPiAgfTsNCj4gPiArRVhQT1JUX1NZ TUJPTChjbG9ja3NvdXJjZV9jb3VudGVyKTsNCj4NCj4gSSd2ZSBzYWlkIHdoYXQgSSB0aG91Z2h0 IGFib3V0IHRoaXMuIE5vdCBoYXBwZW5pbmcuDQo+DQpPay4NCg0KPiA+DQo+ID4gIHN0YXRpYyBz dHJ1Y3QgY3ljbGVjb3VudGVyIGN5Y2xlY291bnRlciBfX3JvX2FmdGVyX2luaXQgPSB7DQo+ID4g ICAgIC5yZWFkICAgPSBhcmNoX2NvdW50ZXJfcmVhZF9jYywNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9wdHAvS2NvbmZpZyBiL2RyaXZlcnMvcHRwL0tjb25maWcgaW5kZXgNCj4gPiA5YjhmZWU1 MTc4ZTguLmUwMzJmYWZkYWZhNyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3B0cC9LY29uZmln DQo+ID4gKysrIGIvZHJpdmVycy9wdHAvS2NvbmZpZw0KPiA+IEBAIC0xMTAsNyArMTEwLDcgQEAg Y29uZmlnIFBUUF8xNTg4X0NMT0NLX1BDSCAgY29uZmlnDQo+ID4gUFRQXzE1ODhfQ0xPQ0tfS1ZN DQo+ID4gICAgIHRyaXN0YXRlICJLVk0gdmlydHVhbCBQVFAgY2xvY2siDQo+ID4gICAgIGRlcGVu ZHMgb24gUFRQXzE1ODhfQ0xPQ0sNCj4gPiAtICAgZGVwZW5kcyBvbiBLVk1fR1VFU1QgJiYgWDg2 DQo+ID4gKyAgIGRlcGVuZHMgb24gS1ZNX0dVRVNUICYmIFg4NiB8fCBBUk02NA0KPiA+ICAgICBk ZWZhdWx0IHkNCj4gPiAgICAgaGVscA0KPiA+ICAgICAgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9y dCBmb3IgdXNpbmcga3ZtIGluZnJhc3RydWN0dXJlIGFzIGEgUFRQDQo+ID4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvYXJtLXNtY2NjLmggYi9pbmNsdWRlL2xpbnV4L2FybS1zbWNjYy5oDQo+ ID4gaW5kZXggYTZlNGQzZTNkMTBhLi4yYTIyMmExYTg1OTQgMTAwNjQ0DQo+ID4gLS0tIGEvaW5j bHVkZS9saW51eC9hcm0tc21jY2MuaA0KPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvYXJtLXNtY2Nj LmgNCj4gPiBAQCAtOTQsNiArOTQsNyBAQA0KPiA+DQo+ID4gIC8qIEtWTSAidmVuZG9yIHNwZWNp ZmljIiBzZXJ2aWNlcyAqLw0KPiA+ICAjZGVmaW5lIEFSTV9TTUNDQ19LVk1fRlVOQ19GRUFUVVJF UyAgICAgICAgICAgICAgICAwDQo+ID4gKyNkZWZpbmUgQVJNX1NNQ0NDX0tWTV9QVFAgICAgICAg ICAgICAgICAgICAxDQo+ID4gICNkZWZpbmUgQVJNX1NNQ0NDX0tWTV9GVU5DX0ZFQVRVUkVTXzIg ICAgICAgICAgICAgIDEyNw0KPiA+ICAjZGVmaW5lIEFSTV9TTUNDQ19LVk1fTlVNX0ZVTkNTICAg ICAgICAgICAgICAgICAgICAxMjgNCj4gPg0KPiA+IEBAIC0xMDIsNiArMTAzLDE2IEBADQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICBBUk1fU01DQ0NfU01DXzMyLA0KPiAgICAgICBcDQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICBBUk1fU01DQ0NfT1dORVJfVkVORE9SX0hZUCwNCj4gICAg ICAgICAgICAgICBcDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICBBUk1fU01DQ0NfS1ZNX0ZV TkNfRkVBVFVSRVMpDQo+ID4gKy8qDQo+ID4gKyAqIFRoaXMgSUQgdXNlZCBmb3IgdmlydHVhbCBw dHAga3ZtIGNsb2NrIGFuZCBpdCB3aWxsIHBhc3Mgc2Vjb25kDQo+ID4gK3ZhbHVlDQo+ID4gKyAq IGFuZCBuYW5vc2Vjb25kIHZhbHVlIG9mIGhvc3QgcmVhbCB0aW1lIGFuZCBzeXN0ZW0gY291bnRl ciBieSB2Y3B1DQo+ID4gKyAqIHJlZ2lzdGVyIHRvIGd1ZXN0Lg0KPiA+ICsgKi8NCj4gPiArI2Rl ZmluZSBBUk1fU01DQ0NfVkVORE9SX0hZUF9LVk1fUFRQX0ZVTkNfSUQNCj4gICAgICAgICAgICAg ICBcDQo+ID4gKyAgIEFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLA0KPiAg ICAgICAgICAgICAgIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIEFSTV9TTUNDQ19TTUNf MzIsDQo+ICAgICAgIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIEFSTV9TTUNDQ19PV05F Ul9WRU5ET1JfSFlQLA0KPiAgICAgICAgICAgICAgIFwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgIEFSTV9TTUNDQ19LVk1fUFRQKQ0KPiA+DQo+ID4gICNpZm5kZWYgX19BU1NFTUJMWV9fDQo+ ID4NCj4gPiBAQCAtMzczLDUgKzM4NCw4IEBAIGFzbWxpbmthZ2Ugdm9pZCBfX2FybV9zbWNjY19o dmModW5zaWduZWQgbG9uZw0KPiBhMCwgdW5zaWduZWQgbG9uZyBhMSwNCj4gPiAgICAgICAgICAg ICBtZXRob2Q7DQo+ICAgICAgIFwNCj4gPiAgICAgfSkNCj4gPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvcHNjaS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xvY2tzb3VyY2UuaD4NCj4gPiArDQo+ ID4gICNlbmRpZiAvKl9fQVNTRU1CTFlfXyovDQo+ID4gICNlbmRpZiAvKl9fTElOVVhfQVJNX1NN Q0NDX0gqLw0KPiA+IGRpZmYgLS1naXQgYS92aXJ0L2t2bS9hcm0vcHNjaS5jIGIvdmlydC9rdm0v YXJtL3BzY2kuYyBpbmRleA0KPiA+IDBkZWJmNDliZjI1OS4uN2ZmZmRiMjVkMzJjIDEwMDY0NA0K PiA+IC0tLSBhL3ZpcnQva3ZtL2FybS9wc2NpLmMNCj4gPiArKysgYi92aXJ0L2t2bS9hcm0vcHNj aS5jDQo+ID4gQEAgLTM5Miw2ICszOTIsOCBAQCBpbnQga3ZtX2h2Y19jYWxsX2hhbmRsZXIoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1KQ0KPiA+ICAgICB1MzIgZnVuY19pZCA9IHNtY2NjX2dldF9mdW5j dGlvbih2Y3B1KTsNCj4gPiAgICAgdTMyIHZhbFs0XSA9IHt9Ow0KPiA+ICAgICB1MzIgb3B0aW9u Ow0KPiA+ICsgICBzdHJ1Y3QgdGltZXNwZWMgKnRzOw0KPiA+ICsgICB1NjQgY250Ow0KPiA+DQo+ ID4gICAgIHZhbFswXSA9IFNNQ0NDX1JFVF9OT1RfU1VQUE9SVEVEOw0KPiA+DQo+ID4gQEAgLTQz MSw2ICs0MzMsMjEgQEAgaW50IGt2bV9odmNfY2FsbF9oYW5kbGVyKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkNCj4gPiAgICAgY2FzZSBBUk1fU01DQ0NfVkVORE9SX0hZUF9LVk1fRkVBVFVSRVNfRlVO Q19JRDoNCj4gPiAgICAgICAgICAgICB2YWxbMF0gPSBCSVQoQVJNX1NNQ0NDX0tWTV9GVU5DX0ZF QVRVUkVTKTsNCj4gPiAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgLyoNCj4gPiArICAgICog VGhpcyB3aWxsIHVzZWQgZm9yIHZpcnR1YWwgcHRwIGt2bSBjbG9jay4gdGhyZWUNCj4gPiArICAg ICogdmFsdWVzIHdpbGwgYmUgcGFzc2VkIGJhY2suDQo+ID4gKyAgICAqIHJlZzAgc3RvcmVzIHNl Y29uZHMgb2YgaG9zdCByZWFsIHRpbWU7DQo+ID4gKyAgICAqIHJlZzEgc3RvcmVzIG5hbm9zZWNv bmRzIG9mIGhvc3QgcmVhbCB0aW1lOw0KPiA+ICsgICAgKiByZWcyIHN0b3RlcyBzeXN0ZW0gY291 bnRlciBjeWNsZSB2YWx1ZS4NCj4NCj4gc3RvcmVzDQoNClllYWgNCg0KPg0KPiA+ICsgICAgKi8N Cj4gPiArICAgY2FzZSBBUk1fU01DQ0NfVkVORE9SX0hZUF9LVk1fUFRQX0ZVTkNfSUQ6DQo+ID4g KyAgICAgICAgICAgZ2V0bnN0aW1lb2ZkYXkodHMpOw0KPiA+ICsgICAgICAgICAgIGNudCA9IGFy Y2hfdGltZXJfcmVhZF9jb3VudGVyKCk7DQo+ID4gKyAgICAgICAgICAgdmFsWzBdID0gdHMtPnR2 X3NlYzsNCj4gPiArICAgICAgICAgICB2YWxbMV0gPSB0cy0+dHZfbnNlYzsNCj4gPiArICAgICAg ICAgICB2YWxbMl0gPSBjbnQ7DQo+DQo+IENhbiB5b3UgZXhwbGFpbiB3aGF0IHRoZSBwdXJwb3Nl IG9mIGV4cG9zaW5nIHRoaXMgY291bnRlciBpcz8gVGhlIGd1ZXN0DQo+IHNob3VsZCBoYXZlIGFj Y2VzcyB0byB0aGUgcGh5c2ljYWwgY291bnRlciBhbHJlYWR5Lg0KDQpPbmUgYXBpIG9mIHB0cF9r dm0gY2FsbGVkIHB0cF9rdm1fZ2V0X3RpbWVfZm4gbmVlZCBhIGNsb2NrIHNvdXJjZXMgcGFzc2Vk IGZyb20gaG9zdCBhcyBzeXN0ZW1fY291bnRlci4NCj4NCj4gPiArICAgICAgICAgICB2YWxbM10g PSAwOw0KPiA+ICsgICAgICAgICAgIGJyZWFrOw0KPg0KPiBUaGlzIHdpbGwgcHJvYmFibHkgY29u ZmxpY3Qgd2l0aCBTdGV2ZW4ncyBzdG9sZW4gdGltZSBzZXJpZXMuIE5vdCBhIGJpZyBkZWFsDQo+ IHRob3VnaC4NCkVyciwgc29ycnkgSSBhbSBub3QgZmFtaWxpYXIgd2l0aCB0aGlzIHRoZW9yeS4g TGV0IG1lIGNoZWNrIGl0Lg0KDQo+DQo+ID4gICAgIGRlZmF1bHQ6DQo+ID4gICAgICAgICAgICAg cmV0dXJuIGt2bV9wc2NpX2NhbGwodmNwdSk7DQo+ID4gICAgIH0NCj4gPg0KPg0KPiBPdGhlciBx dWVzdGlvbnM6IGhvdyBkb2VzIHRoaXMgd29ya3Mgd2l0aCBWTSBtaWdyYXRpb24/IFNwZWNpYWxs eSB3aGVuDQo+IG1vdmluZyBmcm9tIGEgaHlwZXJ2aXNvciB0aGF0IHN1cHBvcnRzIHRoZSBmZWF0 dXJlIHRvIG9uZSB0aGF0IGRvZXNuJ3Q/DQo+DQpJIHRoaW5rIGl0IHdvbid0IHNvbHZlIHRoZSBw cm9ibGVtIGdlbmVyYXRlZCBieSBWTSBtaWdyYXRpb24gYW5kIG9ubHkgZm9yIFZNcyBpbiBhIHNp bmdsZSBtYWNoaW5lLg0KUHRwX2t2bSBvbmx5IHdvcmtzIGZvciBWTXMgaW4gdGhlIHNhbWUgbWFj aGluZS4NCkJ1dCB1c2luZyBwdHAgKG5vdCBwdHBfa3ZtKSBjbG9jaywgYWxsIHRoZSBtYWNoaW5l cyBpbiBhIGxvdyBsYXRlbmN5IG5ldHdvcmsgZW52aXJvbm1lbnQgY2FuIGtlZXAgdGltZSBzeW5j IGluIGhpZ2ggcHJlY2lzaW9uLA0KVGhlbiBWTXMgbW92ZSBmcm9tIG9uZSBtYWNoaW5lIHRvIGFu b3RoZXIgd2lsbCBvYnRhaW4gYSBoaWdoIHByZWNpc2lvbiB0aW1lIHN5bmMuDQoNClRoYW5rcw0K SmlhbnlvbmcgV3UNCg0KPiBUaGFua3MsDQo+DQo+ICAgICAgIE0uDQo+IC0tDQo+IEphenogaXMg bm90IGRlYWQsIGl0IGp1c3Qgc21lbGxzIGZ1bm55Li4uDQpJTVBPUlRBTlQgTk9USUNFOiBUaGUg Y29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRp YWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8g bm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9y IGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVk aXVtLiBUaGFuayB5b3UuDQo=