From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CB82BC282D7 for ; Sat, 2 Feb 2019 08:20:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 560AC2146E for ; Sat, 2 Feb 2019 08:20:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=vmware.com header.i=@vmware.com header.b="UXWoIKc4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726594AbfBBIUo (ORCPT ); Sat, 2 Feb 2019 03:20:44 -0500 Received: from mail-eopbgr690075.outbound.protection.outlook.com ([40.107.69.75]:20512 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726561AbfBBIUo (ORCPT ); Sat, 2 Feb 2019 03:20:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O5bwSfLOhuM8jvD4WirC7HksYb+H1wz98WUekhYjeWA=; b=UXWoIKc4iR0BeyhSb3sfPNQeRKWuqtVYcElG9zMRQuOwuEfZ22nX89vawlATvyieMS+KXhs30bePL1yUzMSjM7nW2OLiTzczQsEjSvObQWmwNWzwBcsF0CdFc805D3C9Rd5wCUDOml47U8xEgbvXMYB7HG2I8OfrLSOKPEN3H0w= Received: from CY1PR05MB2780.namprd05.prod.outlook.com (10.167.18.26) by CY1PR05MB2665.namprd05.prod.outlook.com (10.167.10.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.13; Sat, 2 Feb 2019 08:05:30 +0000 Received: from CY1PR05MB2780.namprd05.prod.outlook.com ([fe80::dcaf:ea32:61c2:a615]) by CY1PR05MB2780.namprd05.prod.outlook.com ([fe80::dcaf:ea32:61c2:a615%11]) with mapi id 15.20.1580.019; Sat, 2 Feb 2019 08:05:30 +0000 From: Slavomir Kaslev To: Tzvetomir Stoyanov CC: Steven Rostedt , "linux-trace-devel@vger.kernel.org" Subject: Re: [PATCH v2 6/6] trace-cmd [POC]: Implemented timestamps synch PTP-like algorithm, using vsock events. Thread-Topic: [PATCH v2 6/6] trace-cmd [POC]: Implemented timestamps synch PTP-like algorithm, using vsock events. Thread-Index: AQHUus4Q9oxLB2ni4UOWT8n7EoTecw== Date: Sat, 2 Feb 2019 08:05:30 +0000 Message-ID: References: <20190201134535.2979-1-tstoyanov@vmware.com> <20190201134535.2979-7-tstoyanov@vmware.com> In-Reply-To: <20190201134535.2979-7-tstoyanov@vmware.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: DM5PR06CA0059.namprd06.prod.outlook.com (2603:10b6:3:37::21) To CY1PR05MB2780.namprd05.prod.outlook.com (2a01:111:e400:c63a::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=kaslevs@vmware.com; x-ms-exchange-messagesentrepresentingtype: 1 x-gm-message-state: AJcUukfUooZ8KGyEb7lE4JlauhHaACgFQe9RxdCoH7U0AWsLVMbQJbte jJzzjhaERN9qyF4t8ZB7xtInz2QKS8tpUCCaTQ== x-google-smtp-source: ALg8bN5bK0ZuvPaj7Fs94bdXh0uBNt3WuKAcYkeKwe1pU80iqTfzXw7L6uYqgn5A5D4uzqILQgHQoSLV5QxmLSqV9sY= x-received: by 2002:a02:6284:: with SMTP id d126mr28198860jac.120.1549094727376; Sat, 02 Feb 2019 00:05:27 -0800 (PST) x-gmail-original-message-id: x-originating-ip: [209.85.166.175] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;CY1PR05MB2665;20:v8jRPBB9ymWGHjDDhmFalGIp1L5951+lIgOX1ZRGdZIXLmQPkXJ2RZyjMZpv6h58Kehvv0vOW5JqDHCs6QagxC2aaRL8Zmw58Lv/NAiaCT1exVvfBtIazwzZT6jYLFYzU1nBLrRAT/t7ScET7xRURu0D44QZhqANxnrUoWp2AmU= x-ms-office365-filtering-correlation-id: 2177d461-361f-4ef0-093b-08d688e5328a x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(2017052603328)(7153060)(7193020);SRVR:CY1PR05MB2665; x-ms-traffictypediagnostic: CY1PR05MB2665: x-microsoft-antispam-prvs: x-forefront-prvs: 09368DB063 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(346002)(39860400002)(396003)(366004)(136003)(199004)(189003)(229853002)(305945005)(95326003)(6486002)(61726006)(30864003)(66066001)(6436002)(86362001)(68736007)(97736004)(498394004)(61266001)(71200400001)(71190400001)(256004)(99286004)(81166006)(14444005)(8676002)(81156014)(53936002)(106356001)(53946003)(486006)(8936002)(6116002)(9686003)(6506007)(6246003)(76176011)(54906003)(478600001)(476003)(3846002)(105586002)(55446002)(25786009)(2906002)(52116002)(446003)(14454004)(6636002)(4326008)(7736002)(11346002)(6512007)(186003)(53546011)(102836004)(98316002)(6862004)(33896004)(26005)(316002)(386003)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR05MB2665;H:CY1PR05MB2780.namprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: DIgKrjUnz+s7DD+I/WB71CRK3WPI+zSX5Pt2ERtGecbXojhD2P5etTTbH5kZv7BeTNoQPDjoFjHq0z/Lb4q+t5+kk+50CCb4uhz4JMwybjAbU9w2ir4gT5cma9rhxyxa+BQw3b8HGziTdCxhaR2lac+Ct5lh/riPacRJIaX64RF+INE3BQ0XekIMoOhKPuFLDLPIrFEk16C417HvL7tQwNSVtsMQCjHZqG2Odz0q7Io8Vsswgwg0ict0b9Gi1lVA3k2Rq0EsWdD+D4M43fuXTL52Z0cSU1JwW7oKd6bYpBHm3ZaIR9oGcPXiTRcyWUnNme59luj708H8AgbS/qCJqkHFO3/haZRVN6ObCtOyFi2cwNXxMJxZW8ObuLEgVox22tDWtk7tt96jxMi0R7pmuLaEsu1uDHf2hPmExbRyo9E= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2177d461-361f-4ef0-093b-08d688e5328a X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Feb 2019 08:05:29.6289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR05MB2665 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org T24gRnJpLCBGZWIgMSwgMjAxOSBhdCA0OjE4IFBNIFR6dmV0b21pciBTdG95YW5vdiA8dHN0b3lh bm92QHZtd2FyZS5jb20+IHdyb3RlOg0KPg0KPiBUaGlzIGlzIGEgUE9DIHBhdGNoLCBpbXBsZW1l bnRpbmcgYSBQVFAtbGlrZSBhbGdvcml0aG0gZm9yIHN5bmNpbmcgdGltZXN0YW1wcyBiZXR3ZWVu DQo+IGhvc3QgYW5kIGd1ZXN0IG1hY2hpbmVzLCB1c2luZyB2c29jayB0cmFjZSBldmVudHMgdG8g Y2F0Y2ggdGhlIGhvc3QgLyBndWVzdCB0aW1lLg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBUenZldG9t aXIgU3RveWFub3YgPHRzdG95YW5vdkB2bXdhcmUuY29tPg0KPiAtLS0NCj4gIGluY2x1ZGUvdHJh Y2UtY21kL3RyYWNlLWNtZC5oICB8ICAgNCArDQo+ICB0cmFjZWNtZC9pbmNsdWRlL3RyYWNlLWxv Y2FsLmggfCAgIDUgKw0KPiAgdHJhY2VjbWQvdHJhY2UtbGlzdGVuLmMgICAgICAgIHwgICAzICsN Cj4gIHRyYWNlY21kL3RyYWNlLW1zZy5jICAgICAgICAgICB8IDMwNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0NCj4gIHRyYWNlY21kL3RyYWNlLXJlY29yZC5jICAgICAgICB8IDIw NyArKysrKysrKysrKysrKysrKysrKystDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDUwNyBpbnNlcnRp b25zKCspLCAxOSBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2Ut Y21kL3RyYWNlLWNtZC5oIGIvaW5jbHVkZS90cmFjZS1jbWQvdHJhY2UtY21kLmgNCj4gaW5kZXgg ZGEyMjViNC4uN2Y3ZTFmYyAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS90cmFjZS1jbWQvdHJhY2Ut Y21kLmgNCj4gKysrIGIvaW5jbHVkZS90cmFjZS1jbWQvdHJhY2UtY21kLmgNCj4gQEAgLTM1MSw2 ICszNTEsMTAgQEAgaW50IHRyYWNlY21kX21zZ19yZWN2X3RyYWNlX3Jlc3Aoc3RydWN0IHRyYWNl Y21kX21zZ19oYW5kbGUgKm1zZ19oYW5kbGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAqbnJfY3B1cywgaW50ICpwYWdlX3NpemUsDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqKnBvcnRzKTsNCj4NCj4gK2ludCB0cmFjZWNt ZF9tc2dfcmN2X3RpbWVfc3luYyhzdHJ1Y3QgdHJhY2VjbWRfbXNnX2hhbmRsZSAqbXNnX2hhbmRs ZSk7DQo+ICtpbnQgdHJhY2VjbWRfbXNnX3NuZF90aW1lX3N5bmMoc3RydWN0IHRyYWNlY21kX21z Z19oYW5kbGUgKm1zZ19oYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICpjbG9ja19zdHIsIGxvbmcgbG9uZyAqdG9mZnNldCk7DQo+ICsNCj4gIGludCB0cmFjZWNt ZF9tc2dfd2FpdF9jbG9zZShzdHJ1Y3QgdHJhY2VjbWRfbXNnX2hhbmRsZSAqbXNnX2hhbmRsZSk7 DQo+DQo+ICAvKiAtLS0gUGx1Z2luIGhhbmRsaW5nIC0tLSAqLw0KPiBkaWZmIC0tZ2l0IGEvdHJh Y2VjbWQvaW5jbHVkZS90cmFjZS1sb2NhbC5oIGIvdHJhY2VjbWQvaW5jbHVkZS90cmFjZS1sb2Nh bC5oDQo+IGluZGV4IDgyM2QzMjMuLmM1MDJjNzAgMTAwNjQ0DQo+IC0tLSBhL3RyYWNlY21kL2lu Y2x1ZGUvdHJhY2UtbG9jYWwuaA0KPiArKysgYi90cmFjZWNtZC9pbmNsdWRlL3RyYWNlLWxvY2Fs LmgNCj4gQEAgLTIyNSw2ICsyMjUsMTEgQEAgdm9pZCBzaG93X2luc3RhbmNlX2ZpbGUoc3RydWN0 IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IGNoYXIgKm5hbWUpOw0KPg0KPiAgaW50 IGNvdW50X2NwdXModm9pZCk7DQo+DQo+ICtzdHJ1Y3QgYnVmZmVyX2luc3RhbmNlICpjbG9ja19z eW5jaF9lbmFibGUoaW50IGZkLCBjaGFyICpjbG9jaywNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAqdHhfZXZlbnQsIGludCAqcnhfZXZlbnQpOw0KPiAr dm9pZCBjbG9ja19zeW5jaF9kaXNhYmxlKGludCBmZCwgc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAq aW5zdGFuY2UpOw0KPiArc3RydWN0IHRlcF9oYW5kbGUgKmNsb2NrX3N5bmNoX2dldF90ZXAoc3Ry dWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UpOw0KPiArDQo+ICAvKiBObyBsb25nZXIgaW4g ZXZlbnQtdXRpbHMuaCAqLw0KPiAgdm9pZCBfX25vcmV0dXJuIGRpZShjb25zdCBjaGFyICpmbXQs IC4uLik7IC8qIENhbiBiZSBvdmVycmlkZW4gKi8NCj4gIHZvaWQgKm1hbGxvY19vcl9kaWUodW5z aWduZWQgaW50IHNpemUpOyAvKiBDYW4gYmUgb3ZlcnJpZGRlbiAqLw0KPiBkaWZmIC0tZ2l0IGEv dHJhY2VjbWQvdHJhY2UtbGlzdGVuLmMgYi90cmFjZWNtZC90cmFjZS1saXN0ZW4uYw0KPiBpbmRl eCA5YjUwMTQ3Li43NzgzYTY4IDEwMDY0NA0KPiAtLS0gYS90cmFjZWNtZC90cmFjZS1saXN0ZW4u Yw0KPiArKysgYi90cmFjZWNtZC90cmFjZS1saXN0ZW4uYw0KPiBAQCAtNDA0LDYgKzQwNCw5IEBA IHN0YXRpYyBpbnQgY29tbXVuaWNhdGVfd2l0aF9jbGllbnQoc3RydWN0IHRyYWNlY21kX21zZ19o YW5kbGUgKm1zZ19oYW5kbGUpDQo+DQo+ICAgICAgICAgICAgICAgICBtc2dfaGFuZGxlLT52ZXJz aW9uID0gVjNfUFJPVE9DT0w7DQo+DQo+ICsgICAgICAgICAgICAgICAvKiB0aW1lIHN5bmMgd2l0 aCB0aGUgdjMgY2xpZW50ICovDQo+ICsgICAgICAgICAgICAgICB0cmFjZWNtZF9tc2dfcmN2X3Rp bWVfc3luYyhtc2dfaGFuZGxlKTsNCj4gKw0KPiAgICAgICAgICAgICAgICAgLyogcmVhZCB0aGUg Q1BVIGNvdW50LCB0aGUgcGFnZSBzaXplLCBhbmQgb3B0aW9ucyAqLw0KPiAgICAgICAgICAgICAg ICAgaWYgKChwYWdlc2l6ZSA9IHRyYWNlY21kX21zZ19pbml0aWFsX3NldHRpbmcobXNnX2hhbmRs ZSkpIDwgMCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7DQo+IGRpZmYgLS1n aXQgYS90cmFjZWNtZC90cmFjZS1tc2cuYyBiL3RyYWNlY21kL3RyYWNlLW1zZy5jDQo+IGluZGV4 IDQ2YjE4YWEuLmUyNjRmMTAgMTAwNjQ0DQo+IC0tLSBhL3RyYWNlY21kL3RyYWNlLW1zZy5jDQo+ ICsrKyBiL3RyYWNlY21kL3RyYWNlLW1zZy5jDQo+IEBAIC0xOCw5ICsxOCwxMSBAQA0KPiAgI2lu Y2x1ZGUgPHN0ZGFyZy5oPg0KPiAgI2luY2x1ZGUgPHN0cmluZy5oPg0KPiAgI2luY2x1ZGUgPHVu aXN0ZC5oPg0KPiArI2luY2x1ZGUgPHRpbWUuaD4NCj4gICNpbmNsdWRlIDxhcnBhL2luZXQuaD4N Cj4gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCj4gICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3ZtX3NvY2tldHMuaD4NCj4NCj4gICNpbmNsdWRlICJ0cmFjZS1j bWQtbG9jYWwuaCINCj4gICNpbmNsdWRlICJ0cmFjZS1sb2NhbC5oIg0KPiBAQCAtMjgsNiArMzAs OCBAQA0KPg0KPiAgdHlwZWRlZiBfX3UzMiB1MzI7DQo+ICB0eXBlZGVmIF9fYmUzMiBiZTMyOw0K PiArdHlwZWRlZiBfX3U2NCB1NjQ7DQo+ICt0eXBlZGVmIF9fczY0IHM2NDsNCj4NCj4gIHN0YXRp YyBpbmxpbmUgdm9pZCBkcHJpbnQoY29uc3QgY2hhciAqZm10LCAuLi4pDQo+ICB7DQo+IEBAIC01 MCwxMSArNTQsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIGRwcmludChjb25zdCBjaGFyICpmbXQs IC4uLikNCj4NCj4gIHVuc2lnbmVkIGludCBwYWdlX3NpemU7DQo+DQo+ICsvKiBUcnkgYSBmZXcg dGltZXMgdG8gZ2V0IGFuIGFjY3VyYXRlIHRpbWUgc3luYyAqLw0KPiArI2RlZmluZSBUU1lOQ19U UklFUyA1MDAwDQo+ICsjZGVmaW5lIFRTWU5DX1RSRVNDSCAxMDAwMA0KDQpJIHRoaW5rIHdlIHNo b3VsZCBkcm9wIHRoaXMgZnVkZ2luZyBjb25zdGFudC4gSW5zdGVhZCBvZiB0YWtpbmcNCnNhbXBs ZXMgd2l0aCBvZmZzZXQgaW4gdGhlIHJhbmdlIFttaW4sIG1pbiArIFRTWU5DX1RSRVNIXSwgd2Ug Y2FuIHRha2UNCnRoZSBzbWFsbGVzdCBzYXkgNSUgb2YgdGhlIHNhbXBsZXMgKGFsc28gbm8gbmVl ZCBmb3Igc29ydGluZywgY2FuIGJlDQpkb25lIGluIGxpbmVhciB0aW1lIHdpdGggay1zZWxlY3Qp Lg0KDQo+ICsNCj4gIHN0cnVjdCB0cmFjZWNtZF9tc2dfc2VydmVyIHsNCj4gICAgICAgICBzdHJ1 Y3QgdHJhY2VjbWRfbXNnX2hhbmRsZSBoYW5kbGU7DQo+ICAgICAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgZG9uZTsNCj4gIH07DQo+DQo+ICtzdHJ1Y3QgY2xvY2tfc3luY2hfZXZlbnQgew0K PiArICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIGlkOw0KPiArICAgICAgIHVuc2lnbmVk IGxvbmcgbG9uZyAgICAgIHRzOw0KPiArfTsNCj4gKw0KPiAgc3RhdGljIHN0cnVjdCB0cmFjZWNt ZF9tc2dfc2VydmVyICoNCj4gIG1ha2Vfc2VydmVyKHN0cnVjdCB0cmFjZWNtZF9tc2dfaGFuZGxl ICptc2dfaGFuZGxlKQ0KPiAgew0KPiBAQCAtOTAsNiArMTAzLDE2IEBAIHN0cnVjdCB0cmFjZWNt ZF9tc2dfdHJhY2VfcmVzcCB7DQo+ICAgICAgICAgYmUzMiBwYWdlX3NpemU7DQo+ICB9IF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOw0KPg0KPiArc3RydWN0IHRyYWNlY21kX21zZ190aW1lX3N5bmNf aW5pdCB7DQo+ICsgICAgICAgY2hhciBjbG9ja1szMl07DQo+ICsgICAgICAgczY0ICB0b2Zmc2V0 Ow0KPiArfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsNCj4gKw0KPiArc3RydWN0IHRyYWNlY21k X21zZ190aW1lX3N5bmMgew0KPiArICAgICAgIHU2NCB0bG9jYWxfcng7DQo+ICsgICAgICAgdTY0 IHRsb2NhbF90eDsNCj4gK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7DQo+ICsNCj4gIHN0cnVj dCB0cmFjZWNtZF9tc2dfaGVhZGVyIHsNCj4gICAgICAgICBiZTMyICAgIHNpemU7DQo+ICAgICAg ICAgYmUzMiAgICBjbWQ7DQo+IEBAIC05NywxMyArMTIwLDE1IEBAIHN0cnVjdCB0cmFjZWNtZF9t c2dfaGVhZGVyIHsNCj4gIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7DQo+DQo+ICAjZGVmaW5l IE1TR19NQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiAtICAgICAgIEMoQ0xPU0UsICAgICAgICAwLCAgICAgIDApLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+IC0gICAgICAgQyhUSU5JVCwg ICAgICAgIDEsICAgICAgc2l6ZW9mKHN0cnVjdCB0cmFjZWNtZF9tc2dfdGluaXQpKSwgICAgIFwN Cj4gLSAgICAgICBDKFJJTklULCAgICAgICAgMiwgICAgICBzaXplb2Yoc3RydWN0IHRyYWNlY21k X21zZ19yaW5pdCkpLCAgICAgXA0KPiAtICAgICAgIEMoU0VORF9EQVRBLCAgICAzLCAgICAgIDAp LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+IC0gICAgICAgQyhGSU5f REFUQSwgICAgIDQsICAgICAgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gLSAgICAgICBDKFRSQUNFX1JFUSwgICAgNSwgICAgICBzaXplb2Yoc3RydWN0IHRyYWNl Y21kX21zZ190cmFjZV9yZXEpKSwgXA0KPiAtICAgICAgIEMoVFJBQ0VfUkVTUCwgICA2LCAgICAg IHNpemVvZihzdHJ1Y3QgdHJhY2VjbWRfbXNnX3RyYWNlX3Jlc3ApKSwNCj4gKyAgICAgICBDKENM T1NFLCAgICAgICAgICAgICAgICAwLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICAgICAgIEMoVElOSVQsICAgICAgICAgICAgICAgIDEsIHNpemVvZihzdHJ1Y3Qg dHJhY2VjbWRfbXNnX3Rpbml0KSksICBcDQo+ICsgICAgICAgQyhSSU5JVCwgICAgICAgICAgICAg ICAgMiwgc2l6ZW9mKHN0cnVjdCB0cmFjZWNtZF9tc2dfcmluaXQpKSwgIFwNCj4gKyAgICAgICBD KFNFTkRfREFUQSwgICAgICAgICAgICAzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICAgIEMoRklOX0RBVEEsICAgICAgICAgICAgIDQsIDApLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgQyhUUkFDRV9SRVEsICAgICAg ICAgICAgNSwgc2l6ZW9mKHN0cnVjdCB0cmFjZWNtZF9tc2dfdHJhY2VfcmVxKSksXA0KPiArICAg ICAgIEMoVFJBQ0VfUkVTUCwgICAgICAgICAgIDYsIHNpemVvZihzdHJ1Y3QgdHJhY2VjbWRfbXNn X3RyYWNlX3Jlc3ApKSxcDQo+ICsgICAgICAgQyhUSU1FX1NZTkNfSU5JVCwgICAgICAgNywgc2l6 ZW9mKHN0cnVjdCB0cmFjZWNtZF9tc2dfdGltZV9zeW5jX2luaXQpKSxcDQo+ICsgICAgICAgQyhU SU1FX1NZTkMsICAgICAgICAgICAgOCwgc2l6ZW9mKHN0cnVjdCB0cmFjZWNtZF9tc2dfdGltZV9z eW5jKSksDQo+DQo+ICAjdW5kZWYgQw0KPiAgI2RlZmluZSBDKGEsYixjKSAgICAgICBNU0dfIyNh ID0gYg0KPiBAQCAtMTMzLDEwICsxNTgsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNtZF90b19u YW1lKGludCBjbWQpDQo+ICBzdHJ1Y3QgdHJhY2VjbWRfbXNnIHsNCj4gICAgICAgICBzdHJ1Y3Qg dHJhY2VjbWRfbXNnX2hlYWRlciAgICAgICAgICAgICAgaGRyOw0KPiAgICAgICAgIHVuaW9uIHsN Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCB0cmFjZWNtZF9tc2dfdGluaXQgICAgICAgdGluaXQ7 DQo+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNnX3Jpbml0ICAgICAgIHJpbml0 Ow0KPiAtICAgICAgICAgICAgICAgc3RydWN0IHRyYWNlY21kX21zZ190cmFjZV9yZXEgICB0cmFj ZV9yZXE7DQo+IC0gICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNnX3RyYWNlX3Jlc3Ag IHRyYWNlX3Jlc3A7DQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNnX3Rpbml0 ICAgICAgICAgICAgICAgdGluaXQ7DQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRf bXNnX3Jpbml0ICAgICAgICAgICAgICAgcmluaXQ7DQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg dHJhY2VjbWRfbXNnX3RyYWNlX3JlcSAgICAgICAgICAgdHJhY2VfcmVxOw0KPiArICAgICAgICAg ICAgICAgc3RydWN0IHRyYWNlY21kX21zZ190cmFjZV9yZXNwICAgICAgICAgIHRyYWNlX3Jlc3A7 DQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNnX3RpbWVfc3luY19pbml0ICAg ICAgdGltZV9zeW5jX2luaXQ7DQo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNn X3RpbWVfc3luYyAgICAgICAgICAgdGltZV9zeW5jOw0KPiAgICAgICAgIH07DQo+ICAgICAgICAg dW5pb24gew0KPiAgICAgICAgICAgICAgICAgc3RydWN0IHRyYWNlY21kX21zZ19vcHQgICAgICAg ICAqb3B0Ow0KPiBAQCAtODI1LDYgKzg1MiwyNjQgQEAgb3V0Og0KPiAgICAgICAgIHJldHVybiBy ZXQ7DQo+ICB9DQo+DQo+ICtzdGF0aWMgaW50DQo+ICtmaW5kX2V2ZW50c19pbl9wYWdlKHN0cnVj dCB0ZXBfaGFuZGxlICpwZXZlbnQsIHZvaWQgKnBhZ2UsDQo+ICsgICAgICAgICAgICAgICAgICAg aW50IHNpemUsIHN0cnVjdCBjbG9ja19zeW5jaF9ldmVudCAqZXZlbnRzKQ0KPiArew0KPiArICAg ICAgIHN0cnVjdCB0ZXBfZXZlbnQgKmV2ZW50ID0gTlVMTDsNCj4gKyAgICAgICBzdHJ1Y3QgdGVw X3JlY29yZCAqbGFzdF9yZWNvcmQgPSBOVUxMOw0KPiArICAgICAgIHN0cnVjdCB0ZXBfcmVjb3Jk ICpyZWNvcmQ7DQo+ICsgICAgICAgaW50IGlkLCBpLCBqLCBjbnQgPSAwOw0KPiArDQo+ICsgICAg ICAgaWYgKHNpemUgPD0gMCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAg IGZvciAoaSA9IDA7IGV2ZW50c1tpXS5pZDsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAo IWV2ZW50c1tpXS50cykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY250Kys7DQo+ICsgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgd2hpbGUgKGNudCkgew0KPiArICAgICAgICAgICAgICAgZXZl bnQgPSBOVUxMOw0KPiArICAgICAgICAgICAgICAgcmVjb3JkID0gdHJhY2VjbWRfcmVhZF9wYWdl X3JlY29yZChwZXZlbnQsIHBhZ2UsIHNpemUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfcmVjb3JkKTsNCj4gKyAgICAgICAgICAgICAg IGlmICghcmVjb3JkKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICAgICAgICAgIGZyZWVfcmVjb3JkKGxhc3RfcmVjb3JkKTsNCj4gKyAgICAgICAgICAgICAgIGlk ID0gdGVwX2RhdGFfdHlwZShwZXZlbnQsIHJlY29yZCk7DQo+ICsgICAgICAgICAgICAgICBmb3Ig KGkgPSAwOyBldmVudHNbaV0uaWQ7IGkrKykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYg KCFldmVudHNbaV0udHMgJiYgZXZlbnRzW2ldLmlkID09IGlkKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXZlbnQgPSB0ZXBfZGF0YV9ldmVudF9mcm9tX3R5cGUocGV2ZW50 LCBpZCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIGlmIChldmVudCkgew0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudHNbal0udHMgJiYgZXZlbnRzW2pdLnRz ID4gcmVjb3JkLT50cykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSBpKSB7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzW2ldLnRzID0gcmVjb3JkLT50czsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbnQtLTsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgbGFzdF9y ZWNvcmQgPSByZWNvcmQ7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIGZyZWVfcmVjb3JkKGxhc3Rf cmVjb3JkKTsNCj4gKw0KPiArICAgICAgIHJldHVybiBjbnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgY2xvY2tfc3luY2hfZmluZF9ldmVudHMoc3RydWN0IHRlcF9oYW5kbGUgKnRlcCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2luc3RhbmNl ICppbnN0YW5jZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg Y2xvY2tfc3luY2hfZXZlbnQgKmV2ZW50cykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZGlyZW50 ICpkZW50Ow0KPiArICAgICAgIGludCB0cyA9IDA7DQo+ICsgICAgICAgdm9pZCAqcGFnZTsNCj4g KyAgICAgICBjaGFyICpwYXRoOw0KPiArICAgICAgIGNoYXIgKmZpbGU7DQo+ICsgICAgICAgRElS ICpkaXI7DQo+ICsgICAgICAgaW50IGxlbjsNCj4gKyAgICAgICBpbnQgZmQ7DQo+ICsgICAgICAg aW50IHI7DQo+ICsNCj4gKyAgICAgICBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOw0KPiArDQo+ ICsgICAgICAgcGF0aCA9IGdldF9pbnN0YW5jZV9maWxlKGluc3RhbmNlLCAicGVyX2NwdSIpOw0K PiArICAgICAgIGlmICghcGF0aCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiB0czsNCj4gKw0K PiArICAgICAgIGRpciA9IG9wZW5kaXIocGF0aCk7DQo+ICsgICAgICAgaWYgKCFkaXIpDQo+ICsg ICAgICAgICAgICAgICBnb3RvIG91dDsNCj4gKw0KPiArICAgICAgIGxlbiA9IHN0cmxlbihwYXRo KTsNCj4gKyAgICAgICBmaWxlID0gbWFsbG9jKGxlbiArIHN0cmxlbigidHJhY2VfcGlwZV9yYXci KSArIDMyKTsNCj4gKyAgICAgICBwYWdlID0gbWFsbG9jKHBhZ2Vfc2l6ZSk7DQo+ICsgICAgICAg aWYgKCFmaWxlIHx8ICFwYWdlKQ0KPiArICAgICAgICAgICAgICAgZGllKCJGYWlsZWQgdG8gYWxs b2NhdGUgdGltZV9zdGFtcCBpbmZvIik7DQo+ICsNCj4gKyAgICAgICB3aGlsZSAoKGRlbnQgPSBy ZWFkZGlyKGRpcikpKSB7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUg PSBkZW50LT5kX25hbWU7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChzdHJuY21wKG5hbWUs ICJjcHUiLCAzKSAhPSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4g KyAgICAgICAgICAgICAgIHNwcmludGYoZmlsZSwgIiVzLyVzL3RyYWNlX3BpcGVfcmF3IiwgcGF0 aCwgbmFtZSk7DQo+ICsgICAgICAgICAgICAgICBmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkgfCBP X05PTkJMT0NLKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChmZCA8IDApDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAgICAgICAgICAgZG8gew0KPiArICAgICAg ICAgICAgICAgICAgICAgICByID0gcmVhZChmZCwgcGFnZSwgcGFnZV9zaXplKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHIgPiAwKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHMgPSBmaW5kX2V2ZW50c19pbl9wYWdlKHRlcCwgcGFnZSwgciwgZXZlbnRzKTsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRzKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIH0gd2hpbGUgKHIgPiAwKTsNCj4gKyAgICAgICAg ICAgICAgIGNsb3NlKGZkKTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBmcmVlKGZpbGUp Ow0KPiArICAgICAgIGZyZWUocGFnZSk7DQo+ICsgICAgICAgY2xvc2VkaXIoZGlyKTsNCj4gKw0K PiArIG91dDoNCj4gKyAgICAgICB0cmFjZWNtZF9wdXRfdHJhY2luZ19maWxlKHBhdGgpOw0KPiAr ICAgICAgIHJldHVybiB0czsNCj4gK30NCj4gKw0KPiArZXh0ZXJuIHN0cnVjdCB0ZXBfaGFuZGxl ICpjbG9ja19zeW5jaF9nZXRfdGVwKHN0cnVjdCBidWZmZXJfaW5zdGFuY2UgKmluc3RhbmNlKTsN Cj4gKw0KPiAraW50IHRyYWNlY21kX21zZ19yY3ZfdGltZV9zeW5jKHN0cnVjdCB0cmFjZWNtZF9t c2dfaGFuZGxlICptc2dfaGFuZGxlKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBidWZmZXJfaW5z dGFuY2UgKnZpbnN0Ow0KPiArICAgICAgIHN0cnVjdCB0cmFjZWNtZF9tc2cgbXNnOw0KPiArICAg ICAgIHN0cnVjdCB0ZXBfaGFuZGxlICp0ZXA7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKyAgICAg ICBjaGFyICpjbG9jazsNCj4gKyAgICAgICBzdHJ1Y3QgY2xvY2tfc3luY2hfZXZlbnQgZXZlbnRz WzNdOw0KPiArDQo+ICsgICAgICAgcmV0ID0gdHJhY2VjbWRfbXNnX3JlY3YobXNnX2hhbmRsZS0+ ZmQsICZtc2cpOw0KPiArICAgICAgIGlmIChyZXQgPCAwIHx8IG50b2hsKG1zZy5oZHIuY21kKSAh PSBNU0dfVElNRV9TWU5DX0lOSVQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCg0KV2hh dCBoYXBwZW5zIHdoZW4gd2UgcmVjZWl2ZSBhIG5vbiBNU0dfVElNRV9TWU5DX0lOSVQgY29tbWFu ZCBoZXJlPw0KDQo+ICsgICAgICAgaWYgKCFtc2cudGltZV9zeW5jX2luaXQuY2xvY2tbMF0pDQo+ ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiArICAgICAgIGNsb2NrID0gc3RyZHVw KG1zZy50aW1lX3N5bmNfaW5pdC5jbG9jayk7DQo+ICsgICAgICAgZXZlbnRzWzJdLmlkID0gMDsN Cj4gKyAgICAgICB2aW5zdCA9IGNsb2NrX3N5bmNoX2VuYWJsZShtc2dfaGFuZGxlLT5mZCwgY2xv Y2ssDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50c1sxXS5pZCwg JmV2ZW50c1swXS5pZCk7DQo+ICsgICAgICAgdGVwID0gY2xvY2tfc3luY2hfZ2V0X3RlcCh2aW5z dCk7DQo+ICsgICAgICAgdHJhY2VjbWRfbXNnX2luaXQoTVNHX1RJTUVfU1lOQ19JTklULCAmbXNn KTsNCj4gKyAgICAgICB0cmFjZWNtZF9tc2dfc2VuZChtc2dfaGFuZGxlLT5mZCwgJm1zZyk7DQo+ ICsNCj4gKyAgICAgICBkbyB7DQo+ICsgICAgICAgICAgICAgICBldmVudHNbMF0udHMgPSAwOw0K PiArICAgICAgICAgICAgICAgZXZlbnRzWzFdLnRzID0gMDsNCj4gKyAgICAgICAgICAgICAgIHJl dCA9IHRyYWNlY21kX21zZ19yZWN2KG1zZ19oYW5kbGUtPmZkLCAmbXNnKTsNCj4gKyAgICAgICAg ICAgICAgIGlmIChyZXQgPCAwIHx8IG50b2hsKG1zZy5oZHIuY21kKSAhPSBNU0dfVElNRV9TWU5D KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICAgICAg ICAgdHJhY2VjbWRfbXNnX3NlbmQobXNnX2hhbmRsZS0+ZmQsICZtc2cpOw0KPiArICAgICAgICAg ICAgICAgY2xvY2tfc3luY2hfZmluZF9ldmVudHModGVwLCB2aW5zdCwgZXZlbnRzKTsNCj4gKyAg ICAgICAgICAgICAgIHRyYWNlY21kX21zZ19pbml0KE1TR19USU1FX1NZTkMsICZtc2cpOw0KPiAr ICAgICAgICAgICAgICAgbXNnLnRpbWVfc3luYy50bG9jYWxfdHggPSBodG9ubGwoZXZlbnRzWzFd LnRzKTsNCj4gKyAgICAgICAgICAgICAgIG1zZy50aW1lX3N5bmMudGxvY2FsX3J4ID0gaHRvbmxs KGV2ZW50c1swXS50cyk7DQo+ICsgICAgICAgICAgICAgICB0cmFjZWNtZF9tc2dfc2VuZChtc2df aGFuZGxlLT5mZCwgJm1zZyk7DQo+ICsgICAgICAgfSB3aGlsZSAodHJ1ZSk7DQo+ICsgICAgICAg Y2xvY2tfc3luY2hfZGlzYWJsZShtc2dfaGFuZGxlLT5mZCwgdmluc3QpOw0KPiArICAgICAgIG1z Z19mcmVlKCZtc2cpOw0KPiArICAgICAgIHRlcF9mcmVlKHRlcCk7DQo+ICsgICAgICAgZnJlZShj bG9jayk7DQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiAraW50IHRyYWNlY21k X21zZ19zbmRfdGltZV9zeW5jKHN0cnVjdCB0cmFjZWNtZF9tc2dfaGFuZGxlICptc2dfaGFuZGxl LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2xvY2tfc3RyLCBsb25n IGxvbmcgKnRvZmZzZXQpDQo+ICt7DQo+ICsgICAgICAgc3RhdGljIHN0cnVjdCBidWZmZXJfaW5z dGFuY2UgKnZpbnN0Ow0KPiArICAgICAgIHN0cnVjdCBjbG9ja19zeW5jaF9ldmVudCBldmVudHNb NF07DQo+ICsgICAgICAgbG9uZyBsb25nICpvZmZzZXRzLCAqcmVwbGllczsNCj4gKyAgICAgICBz dHJ1Y3QgdHJhY2VjbWRfbXNnIG1zZ19yZXNwOw0KPiArICAgICAgIHN0cnVjdCB0cmFjZWNtZF9t c2cgbXNnX3JlcTsNCj4gKyAgICAgICBpbnQgc3luY19sb29wID0gVFNZTkNfVFJJRVM7DQo+ICsg ICAgICAgbG9uZyBsb25nIG1zX2RpZmYsIHNtX2RpZmY7DQo+ICsgICAgICAgaW50IGo9IDAsIGkg PSAwLCByZXQgPSAwOw0KPiArICAgICAgIHN0cnVjdCB0ZXBfaGFuZGxlICp0ZXA7DQo+ICsgICAg ICAgbG9uZyBsb25nIG1fdDEsIG1fdDQ7DQo+ICsgICAgICAgbG9uZyBsb25nIHNfdDIsIHNfdDM7 DQo+ICsgICAgICAgbG9uZyBsb25nIHRfb2ZmcyA9IDA7DQo+ICsgICAgICAgbG9uZyBsb25nIG1p bl9wPTA7DQo+ICsgICAgICAgY2hhciAqY2xvY2s7DQo+ICsNCj4gKyAgICAgICBjbG9jayA9IGNs b2NrX3N0cjsNCj4gKyAgICAgICBpZiAoIWNsb2NrKQ0KPiArICAgICAgICAgICAgICAgY2xvY2sg PSAibG9jYWwiOw0KPiArDQo+ICsgICAgICAgdHJhY2VjbWRfbXNnX2luaXQoTVNHX1RJTUVfU1lO Q19JTklULCAmbXNnX3JlcSk7DQo+ICsgICAgICAgaWYgKHRvZmZzZXQgPT0gTlVMTCkgew0KPiAr ICAgICAgICAgICAgICAgbXNnX3JlcS50aW1lX3N5bmNfaW5pdC5jbG9ja1swXSA9IDA7DQo+ICsg ICAgICAgICAgICAgICB0cmFjZWNtZF9tc2dfc2VuZChtc2dfaGFuZGxlLT5mZCwgJm1zZ19yZXEp Ow0KPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIG9m ZnNldHMgPSBjYWxsb2Moc2l6ZW9mKGxvbmcgbG9uZyksIFRTWU5DX1RSSUVTKTsNCj4gKyAgICAg ICByZXBsaWVzID0gY2FsbG9jKHNpemVvZihsb25nIGxvbmcpLCBUU1lOQ19UUklFUyk7DQo+ICsg ICAgICAgaWYgKCFvZmZzZXRzIHx8ICFyZXBsaWVzKSB7DQo+ICsgICAgICAgICAgICAgICBmcmVl KG9mZnNldHMpOw0KPiArICAgICAgICAgICAgICAgZnJlZShyZXBsaWVzKTsNCj4gKyAgICAgICAg ICAgICAgIHJldHVybiAwOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHN0cm5jcHkobXNn X3JlcS50aW1lX3N5bmNfaW5pdC5jbG9jaywgY2xvY2ssIDE2KTsNCj4gKyAgICAgICB0cmFjZWNt ZF9tc2dfc2VuZChtc2dfaGFuZGxlLT5mZCwgJm1zZ19yZXEpOw0KPiArICAgICAgIHJldCA9IHRy YWNlY21kX21zZ19yZWN2KG1zZ19oYW5kbGUtPmZkLCAmbXNnX3Jlc3ApOw0KPiArICAgICAgIGlm IChyZXQgPCAwIHx8IG50b2hsKG1zZ19yZXNwLmhkci5jbWQpICE9IE1TR19USU1FX1NZTkNfSU5J VCkgew0KPiArICAgICAgICAgICAgICAgZnJlZShvZmZzZXRzKTsNCj4gKyAgICAgICAgICAgICAg IGZyZWUocmVwbGllcyk7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKyAgICAgICB9 DQo+ICsgICAgICAgZXZlbnRzWzNdLmlkID0gMDsNCj4gKyAgICAgICB2aW5zdCA9IGNsb2NrX3N5 bmNoX2VuYWJsZShtc2dfaGFuZGxlLT5mZCwgY2xvY2tfc3RyLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZldmVudHNbMF0uaWQsICZldmVudHNbMV0uaWQpOw0KPiArICAg ICAgIHRlcCA9IGNsb2NrX3N5bmNoX2dldF90ZXAodmluc3QpOw0KPiArICAgICAgICp0b2Zmc2V0 ID0gMDsNCj4gKw0KPiArICAgICAgIGRvIHsNCj4gKyAgICAgICAgICAgICAgIG1lbXNldCgmbXNn X3Jlc3AsIDAsIHNpemVvZihtc2dfcmVzcCkpOw0KPiArICAgICAgICAgICAgICAgZXZlbnRzWzBd LnRzID0gMDsNCj4gKyAgICAgICAgICAgICAgIGV2ZW50c1sxXS50cyA9IDA7DQo+ICsgICAgICAg ICAgICAgICBldmVudHNbMl0udHMgPSAwOw0KPiArICAgICAgICAgICAgICAgdHJhY2VjbWRfbXNn X2luaXQoTVNHX1RJTUVfU1lOQywgJm1zZ19yZXEpOw0KPiArDQo+ICsgICAgICAgICAgICAgICB0 cmFjZWNtZF9tc2dfc2VuZChtc2dfaGFuZGxlLT5mZCwgJm1zZ19yZXEpOw0KPiArICAgICAgICAg ICAgICAgcmV0ID0gdHJhY2VjbWRfbXNnX3JlY3YobXNnX2hhbmRsZS0+ZmQsICZtc2dfcmVzcCk7 DQo+ICsgICAgICAgICAgICAgICBpZiAocmV0IDwgMCB8fCBudG9obChtc2dfcmVzcC5oZHIuY21k KSAhPSBNU0dfVElNRV9TWU5DKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4g KyAgICAgICAgICAgICAgIHJldCA9IHRyYWNlY21kX21zZ19yZWN2KG1zZ19oYW5kbGUtPmZkLCAm bXNnX3Jlc3ApOw0KPiArICAgICAgICAgICAgICAgaWYgKHJldCA8IDAgfHwgbnRvaGwobXNnX3Jl c3AuaGRyLmNtZCkgIT0gTVNHX1RJTUVfU1lOQykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ICsgICAgICAgICAgICAgICBjbG9ja19zeW5jaF9maW5kX2V2ZW50cyh0ZXAsIHZp bnN0LCBldmVudHMpOw0KPiArICAgICAgICAgICAgICAgbV90MSA9IGV2ZW50c1swXS50czsNCj4g KyAgICAgICAgICAgICAgIG1fdDQgPSBldmVudHNbMV0udHM7DQo+ICsgICAgICAgICAgICAgICBz X3QyID0gaHRvbmxsKG1zZ19yZXNwLnRpbWVfc3luYy50bG9jYWxfcngpOw0KPiArICAgICAgICAg ICAgICAgc190MyA9IG50b2hsbChtc2dfcmVzcC50aW1lX3N5bmMudGxvY2FsX3R4KTsNCj4gKyAg ICAgICAgICAgICAgIGlmICghbV90MSB8fCAhbV90NCB8fCAhc190MiB8fCAhc190MykNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgICAgICAgICBpZiAoIG1f dDEgPj0gbV90NCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAg ICAgICAgICAgICBtc19kaWZmID0gc190MiAtIG1fdDE7DQo+ICsgICAgICAgICAgICAgICBzbV9k aWZmID0gbV90NCAtIHNfdDM7DQo+ICsgICAgICAgICAgICAgICBvZmZzZXRzW2ldID0gKG1zX2Rp ZmYgLSBzbV9kaWZmKS8yOw0KPiArICAgICAgICAgICAgICAgcmVwbGllc1tpXSA9IGFicyhzbV9k aWZmKTsNCj4gKyAgICAgICAgICAgICAgIGlmICghbWluX3AgfHwgbWluX3AgPiByZXBsaWVzW2ld KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBtaW5fcCA9IHJlcGxpZXNbaV07DQo+ICsgICAg ICAgICAgICAgICBpKys7DQo+ICsgICAgICAgfSB3aGlsZSAoLS1zeW5jX2xvb3ApOw0KPiArICAg ICAgIGNsb2NrX3N5bmNoX2Rpc2FibGUobXNnX2hhbmRsZS0+ZmQsIHZpbnN0KTsNCj4gKw0KPiAr ICAgICAgIGZvciAoaT0wOyBpPFRTWU5DX1RSSUVTOyBpKyspIHsNCj4gKyAgICAgICAgICAgICAg IGlmIChyZXBsaWVzW2ldICYmIHJlcGxpZXNbaV0gPCAoVFNZTkNfVFJFU0NIK21pbl9wKSkgew0K PiArICAgICAgICAgICAgICAgICAgICAgICB0X29mZnMgKz0gb2Zmc2V0c1tpXTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaisrOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0N Cj4gKyAgICAgICBpZihqKQ0KPiArICAgICAgICAgICAgICAgdF9vZmZzIC89IGo7DQo+ICsNCj4g KyAgICAgICB0cmFjZWNtZF9tc2dfaW5pdChNU0dfVElNRV9TWU5DX0lOSVQsICZtc2dfcmVxKTsN Cj4gKyAgICAgICBtc2dfcmVxLnRpbWVfc3luY19pbml0LmNsb2NrWzBdID0gMDsNCj4gKyAgICAg ICBtc2dfcmVxLnRpbWVfc3luY19pbml0LnRvZmZzZXQgPSB0X29mZnM7DQo+ICsgICAgICAgdHJh Y2VjbWRfbXNnX3NlbmQobXNnX2hhbmRsZS0+ZmQsICZtc2dfcmVxKTsNCj4gKw0KPiArICAgICAg IG1zZ19mcmVlKCZtc2dfcmVxKTsNCj4gKyAgICAgICBtc2dfZnJlZSgmbXNnX3Jlc3ApOw0KPiAr ICAgICAgIGZyZWUob2Zmc2V0cyk7DQo+ICsgICAgICAgZnJlZShyZXBsaWVzKTsNCj4gKw0KPiAr ICAgICAgICp0b2Zmc2V0ID0gdF9vZmZzOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4g K30NCj4gKw0KPiAgc3RhdGljIGludCBtYWtlX3RyYWNlX3Jlc3Aoc3RydWN0IHRyYWNlY21kX21z ZyAqbXNnLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZV9zaXplLCBpbnQg bnJfY3B1cywgdW5zaWduZWQgaW50ICpwb3J0cykNCj4gIHsNCj4gZGlmZiAtLWdpdCBhL3RyYWNl Y21kL3RyYWNlLXJlY29yZC5jIGIvdHJhY2VjbWQvdHJhY2UtcmVjb3JkLmMNCj4gaW5kZXggNmQ2 Nzg1OC4uYWY0NDJmZSAxMDA2NDQNCj4gLS0tIGEvdHJhY2VjbWQvdHJhY2UtcmVjb3JkLmMNCj4g KysrIGIvdHJhY2VjbWQvdHJhY2UtcmVjb3JkLmMNCj4gQEAgLTMxNTcsNyArMzE1Nyw0MSBAQCBz dGF0aWMgdm9pZCBjaGVja19wcm90b2NvbF92ZXJzaW9uKHN0cnVjdCB0cmFjZWNtZF9tc2dfaGFu ZGxlICptc2dfaGFuZGxlKQ0KPiAgICAgICAgIH0NCj4gIH0NCj4NCj4gLXN0YXRpYyBzdHJ1Y3Qg dHJhY2VjbWRfbXNnX2hhbmRsZSAqc2V0dXBfbmV0d29yayhzdHJ1Y3QgYnVmZmVyX2luc3RhbmNl ICppbnN0YW5jZSkNCj4gK3N0YXRpYyB2b2lkIHN5bmNfdGltZV93aXRoX2xpc3RlbmVyX3YzKHN0 cnVjdCB0cmFjZWNtZF9tc2dfaGFuZGxlICptc2dfaGFuZGxlLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tbW9uX3JlY29yZF9jb250ZXh0ICpjdHgp DQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAgKmluc3RhbmNlOw0KPiAr ICAgICAgIGxvbmcgbG9uZyB0b2Zmc2V0ID0gMDsNCj4gKyAgICAgICBjaGFyICpjbG9jayA9IE5V TEw7DQo+ICsNCj4gKyAgICAgICBpbnN0YW5jZSA9IGN0eC0+aW5zdGFuY2U7DQo+ICsgICAgICAg d2hpbGUgKGluc3RhbmNlKSB7DQo+ICsgICAgICAgICAgICAgICBjbG9jayA9IGluc3RhbmNlLT5j bG9jazsNCj4gKyAgICAgICAgICAgICAgIGlmIChjbG9jaykNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICBpbnN0YW5jZSA9IGluc3RhbmNlLT5uZXh0 Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGlmIChjdHgtPmRhdGFfZmxhZ3MgJiBEQVRB X0ZMX0RBVEUgfHwNCj4gKyAgICAgICAgICAgY3R4LT5kYXRhX2ZsYWdzICYgREFUQV9GTF9PRkZT RVQpIHsNCj4gKyAgICAgICAgICAgICAgIHRyYWNlY21kX21zZ19zbmRfdGltZV9zeW5jKG1zZ19o YW5kbGUsIGNsb2NrLCBOVUxMKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gKyAgICAg ICB9DQo+ICsNCj4gKyAgICAgICB0cmFjZWNtZF9tc2dfc25kX3RpbWVfc3luYyhtc2dfaGFuZGxl LCBjbG9jaywgJnRvZmZzZXQpOw0KPiArDQo+ICsgICAgICAgZnJlZShjdHgtPmRhdGUydHMpOw0K PiArICAgICAgIC8qIDIwIGRpZ2l0cyArIFwwICovDQo+ICsgICAgICAgY3R4LT5kYXRlMnRzID0g bWFsbG9jKDIxKTsNCj4gKyAgICAgICBpZiAoY3R4LT5kYXRlMnRzKSB7DQo+ICsgICAgICAgICAg ICAgICBzbnByaW50ZihjdHgtPmRhdGUydHMsIDIxLCAiJWxsZCIsIHRvZmZzZXQpOw0KPiArICAg ICAgICAgICAgICAgY3R4LT5kYXRhX2ZsYWdzIHw9IERBVEFfRkxfT0ZGU0VUOw0KPiArICAgICAg IH0NCj4gKw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHRyYWNlY21kX21zZ19oYW5kbGUg KnNldHVwX25ldHdvcmsoc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tbW9u X3JlY29yZF9jb250ZXh0ICpjdHgpDQo+ICB7DQo+ICAgICAgICAgc3RydWN0IHRyYWNlY21kX21z Z19oYW5kbGUgKm1zZ19oYW5kbGUgPSBOVUxMOw0KPiAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyBo aW50czsNCj4gQEAgLTMyOTIsMTIgKzMzMjYsMTMgQEAgc3RhdGljIHZvaWQgYWRkX29wdGlvbnMo c3RydWN0IHRyYWNlY21kX291dHB1dCAqaGFuZGxlLA0KPiAgfQ0KPg0KPiAgc3RhdGljIHN0cnVj dCB0cmFjZWNtZF9tc2dfaGFuZGxlICoNCj4gLXNldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGJ1ZmZl cl9pbnN0YW5jZSAqaW5zdGFuY2UsIHN0cnVjdCBjb21tb25fcmVjb3JkX2NvbnRleHQgKmN0eCkN Cj4gK3NldHVwX2Nvbm5lY3Rpb24oc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UsDQo+ ICsgICAgICAgICAgICAgICAgc3RydWN0IGNvbW1vbl9yZWNvcmRfY29udGV4dCAqY3R4KQ0KPiAg ew0KPiAgICAgICAgIHN0cnVjdCB0cmFjZWNtZF9tc2dfaGFuZGxlICptc2dfaGFuZGxlOw0KPiAg ICAgICAgIHN0cnVjdCB0cmFjZWNtZF9vdXRwdXQgKm5ldHdvcmtfaGFuZGxlOw0KPg0KPiAtICAg ICAgIG1zZ19oYW5kbGUgPSBzZXR1cF9uZXR3b3JrKGluc3RhbmNlKTsNCj4gKyAgICAgICBtc2df aGFuZGxlID0gc2V0dXBfbmV0d29yayhpbnN0YW5jZSwgY3R4KTsNCj4NCj4gICAgICAgICAvKiBO b3cgY3JlYXRlIHRoZSBoYW5kbGUgdGhyb3VnaCB0aGlzIHNvY2tldCAqLw0KPiAgICAgICAgIGlm IChtc2dfaGFuZGxlLT52ZXJzaW9uID09IFYzX1BST1RPQ09MKSB7DQo+IEBAIC0zMzI0LDcgKzMz NTksOCBAQCBzdGF0aWMgdm9pZCBmaW5pc2hfbmV0d29yayhzdHJ1Y3QgdHJhY2VjbWRfbXNnX2hh bmRsZSAqbXNnX2hhbmRsZSkNCj4gICAgICAgICBmcmVlKGhvc3QpOw0KPiAgfQ0KPg0KPiAtc3Rh dGljIHZvaWQgY29ubmVjdF90b19hZ2VudChzdHJ1Y3QgYnVmZmVyX2luc3RhbmNlICppbnN0YW5j ZSkNCj4gK3N0YXRpYyB2b2lkIGNvbm5lY3RfdG9fYWdlbnQoc3RydWN0IGJ1ZmZlcl9pbnN0YW5j ZSAqaW5zdGFuY2UsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbW1v bl9yZWNvcmRfY29udGV4dCAqY3R4KQ0KPiAgew0KPiAgICAgICAgIHN0cnVjdCB0cmFjZWNtZF9t c2dfaGFuZGxlICptc2dfaGFuZGxlOw0KPiAgICAgICAgIGludCBzZCwgbnJfY3B1cywgcGFnZV9z aXplOw0KPiBAQCAtMzM1MCw5ICszMzg2LDEyIEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RfdG9fYWdl bnQoc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UpDQo+DQo+ICAgICAgICAgLyogdGhl IG1zZ19oYW5kbGUgbm93IHBvaW50cyB0byB0aGUgZ3Vlc3QgZmQgKi8NCj4gICAgICAgICBpbnN0 YW5jZS0+bXNnX2hhbmRsZSA9IG1zZ19oYW5kbGU7DQo+ICsNCj4gKyAgICAgICB0cmFjZWNtZF9t c2dfcmN2X3RpbWVfc3luYyhtc2dfaGFuZGxlKTsNCj4gIH0NCj4NCj4gLXN0YXRpYyB2b2lkIHNl dHVwX2d1ZXN0KHN0cnVjdCBidWZmZXJfaW5zdGFuY2UgKmluc3RhbmNlKQ0KPiArc3RhdGljIHZv aWQgc2V0dXBfZ3Vlc3Qoc3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21tb25fcmVjb3JkX2NvbnRleHQgKmN0eCkNCj4g IHsNCj4gICAgICAgICBzdHJ1Y3QgdHJhY2VjbWRfbXNnX2hhbmRsZSAqbXNnX2hhbmRsZSA9IGlu c3RhbmNlLT5tc2dfaGFuZGxlOw0KPiAgICAgICAgIGNoYXIgKmZpbGU7DQo+IEBAIC0zMzc0LDEw ICszNDEzLDEzIEBAIHN0YXRpYyB2b2lkIHNldHVwX2d1ZXN0KHN0cnVjdCBidWZmZXJfaW5zdGFu Y2UgKmluc3RhbmNlKQ0KPiAgICAgICAgIGNsb3NlKGZkKTsNCj4gIH0NCj4NCj4gLXN0YXRpYyB2 b2lkIHNldHVwX2FnZW50KHN0cnVjdCBidWZmZXJfaW5zdGFuY2UgKmluc3RhbmNlLCBzdHJ1Y3Qg Y29tbW9uX3JlY29yZF9jb250ZXh0ICpjdHgpDQo+ICtzdGF0aWMgdm9pZCBzZXR1cF9hZ2VudChz dHJ1Y3QgYnVmZmVyX2luc3RhbmNlICppbnN0YW5jZSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGNvbW1vbl9yZWNvcmRfY29udGV4dCAqY3R4KQ0KPiAgew0KPiAgICAgICAgIHN0 cnVjdCB0cmFjZWNtZF9vdXRwdXQgKm5ldHdvcmtfaGFuZGxlOw0KPg0KPiArICAgICAgIHN5bmNf dGltZV93aXRoX2xpc3RlbmVyX3YzKGluc3RhbmNlLT5tc2dfaGFuZGxlLCBjdHgpOw0KPiArDQo+ ICAgICAgICAgbmV0d29ya19oYW5kbGUgPSB0cmFjZWNtZF9jcmVhdGVfaW5pdF9mZF9tc2coaW5z dGFuY2UtPm1zZ19oYW5kbGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdGVkX2V2ZW50cyk7DQo+ICAgICAgICAgYWRkX29wdGlvbnMo bmV0d29ya19oYW5kbGUsIGN0eCk7DQo+IEBAIC0zMzk3LDcgKzM0MzksNyBAQCB2b2lkIHN0YXJ0 X3RocmVhZHMoZW51bSB0cmFjZV90eXBlIHR5cGUsIHN0cnVjdCBjb21tb25fcmVjb3JkX2NvbnRl eHQgKmN0eCkNCj4gICAgICAgICBmb3JfYWxsX2luc3RhbmNlcyhpbnN0YW5jZSkgew0KPiAgICAg ICAgICAgICAgICAgLyogU3RhcnQgdGhlIGNvbm5lY3Rpb24gbm93IHRvIGZpbmQgb3V0IGhvdyBt YW55IENQVXMgd2UgbmVlZCAqLw0KPiAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5mbGFn cyAmIEJVRkZFUl9GTF9HVUVTVCkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdF90 b19hZ2VudChpbnN0YW5jZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RfdG9f YWdlbnQoaW5zdGFuY2UsIGN0eCk7DQo+ICAgICAgICAgICAgICAgICB0b3RhbF9jcHVfY291bnQg Kz0gaW5zdGFuY2UtPmNwdV9jb3VudDsNCj4gICAgICAgICB9DQo+DQo+IEBAIC0zNDEzLDcgKzM0 NTUsNyBAQCB2b2lkIHN0YXJ0X3RocmVhZHMoZW51bSB0cmFjZV90eXBlIHR5cGUsIHN0cnVjdCBj b21tb25fcmVjb3JkX2NvbnRleHQgKmN0eCkNCj4gICAgICAgICAgICAgICAgIGlmIChpbnN0YW5j ZS0+ZmxhZ3MgJiBCVUZGRVJfRkxfQUdFTlQpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAg c2V0dXBfYWdlbnQoaW5zdGFuY2UsIGN0eCk7DQo+ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KGluc3RhbmNlLT5mbGFncyAmIEJVRkZFUl9GTF9HVUVTVCkgew0KPiAtICAgICAgICAgICAgICAg ICAgICAgICBzZXR1cF9ndWVzdChpbnN0YW5jZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHNldHVwX2d1ZXN0KGluc3RhbmNlLCBjdHgpOw0KPiAgICAgICAgICAgICAgICAgfSBlbHNlIGlm IChob3N0KSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tc2dfaGFuZGxl ID0gc2V0dXBfY29ubmVjdGlvbihpbnN0YW5jZSwgY3R4KTsNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCFpbnN0YW5jZS0+bXNnX2hhbmRsZSkNCj4gQEAgLTU3NjksMyArNTgxMSwxNTIg QEAgaW50IHRyYWNlX3JlY29yZF9hZ2VudChzdHJ1Y3QgdHJhY2VjbWRfbXNnX2hhbmRsZSAqbXNn X2hhbmRsZSwNCj4gICAgICAgICBmcmVlKGFyZ3ZfcGx1cyk7DQo+ICAgICAgICAgcmV0dXJuIDA7 DQo+ICB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGdldF92c29ja2V0X3BhcmFtcyhpbnQgZmQsIGlu dCAqbGNpZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbHBvcnQsIGlu dCAqcmNpZCwgaW50ICpycG9ydCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdm0g YWRkcjsNCj4gKyAgICAgICBzb2NrbGVuX3QgYWRkcl9sZW4gPSBzaXplb2YoYWRkcik7DQo+ICsN Cj4gKyAgICAgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7DQo+ICsgICAgICAgaWYg KGdldHNvY2tuYW1lKGZkLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsICZhZGRyX2xlbikpDQo+ ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsgICAgICAgaWYgKGFkZHIuc3ZtX2ZhbWlseSAh PSBBRl9WU09DSykNCj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gKyAgICAgICAqbHBvcnQg PSBhZGRyLnN2bV9wb3J0Ow0KPiArICAgICAgICpsY2lkID0gYWRkci5zdm1fY2lkOw0KPiArDQo+ ICsgICAgICAgbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOw0KPiArICAgICAgIGFkZHJf bGVuID0gc2l6ZW9mKGFkZHIpOw0KPiArICAgICAgIGlmIChnZXRwZWVybmFtZShmZCwgKHN0cnVj dCBzb2NrYWRkciAqKSZhZGRyLCAmYWRkcl9sZW4pKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJu Ow0KPiArICAgICAgIGlmIChhZGRyLnN2bV9mYW1pbHkgIT0gQUZfVlNPQ0spDQo+ICsgICAgICAg ICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICAgICAqcnBvcnQgPSBhZGRyLnN2bV9wb3J0Ow0K PiArICAgICAgICpyY2lkID0gYWRkci5zdm1fY2lkOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZCBzZXRfY2xvY2tfc3luY2hfZXZlbnRzKGludCBjZmQsIHN0cnVjdCBidWZmZXJfaW5zdGFuY2Ug Kmluc3RhbmNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5h YmxlLCBpbnQgKnR4X2V2ZW50LCBpbnQgKnJ4X2V2ZW50KQ0KPiArew0KPiArICAgICAgIGludCBs Y2lkLCBscG9ydCwgcmNpZCwgcnBvcnQ7DQo+ICsgICAgICAgY2hhciBidWZmZXJbMjU1XTsNCj4g KyAgICAgICBGSUxFICpmcDsNCj4gKyAgICAgICBjaGFyICpwYXRoOw0KPiArICAgICAgIGludCBm ZDsNCj4gKw0KPiArICAgICAgIHBhdGggPSBnZXRfaW5zdGFuY2VfZmlsZShpbnN0YW5jZSwgImV2 ZW50cy92c29jay9lbmFibGUiKTsNCj4gKyAgICAgICBmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkp Ow0KPiArICAgICAgIGlmIChmZCA8IDApDQo+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsg ICAgICAgaWYgKGVuYWJsZSkNCj4gKyAgICAgICAgICAgICAgIHdyaXRlKGZkLCAiMSIsIDIpOw0K PiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIHdyaXRlKGZkLCAiMCIsIDIpOw0KPiAr ICAgICAgIGNsb3NlKGZkKTsNCj4gKyAgICAgICB0cmFjZWNtZF9wdXRfdHJhY2luZ19maWxlKHBh dGgpOw0KPiArDQo+ICsgICAgICAgaWYgKGVuYWJsZSkgew0KPiArICAgICAgICAgICAgICAgZ2V0 X3Zzb2NrZXRfcGFyYW1zKGNmZCwgJmxjaWQsICZscG9ydCwgJnJjaWQsICZycG9ydCk7DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgMjU1LA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAic3JjX2NpZD09JWQgJiYgc3JjX3BvcnQ9PSVkICYmIGRzdF9jaWQ9PSVkICYm IGRzdF9wb3J0PT0lZCAmJiBsZW4hPTAiLA0KPiArICAgICAgICAgICAgICAgICAgICAgICByY2lk LCBycG9ydCwgbGNpZCwgbHBvcnQpOw0KPiArICAgICAgICAgICAgICAgcGF0aCA9IGdldF9pbnN0 YW5jZV9maWxlKGluc3RhbmNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJldmVudHMvdnNvY2svdmlydGlvX3RyYW5zcG9ydF9yZWN2X3BrdC9maWx0ZXIiKTsN Cj4gKyAgICAgICAgICAgICAgIGZkID0gb3BlbihwYXRoLCBPX1dST05MWSk7DQo+ICsgICAgICAg ICAgICAgICB3cml0ZShmZCwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsNCj4gKyAgICAgICAg ICAgICAgIGNsb3NlKGZkKTsNCj4gKyAgICAgICAgICAgICAgIHRyYWNlY21kX3B1dF90cmFjaW5n X2ZpbGUocGF0aCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgMjU1 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAic3JjX2NpZD09JWQgJiYgc3JjX3BvcnQ9PSVk ICYmIGRzdF9jaWQ9PSVkICYmIGRzdF9wb3J0PT0lZCAmJiBsZW4hPTAiLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICBsY2lkLCBscG9ydCwgcmNpZCwgcnBvcnQpOw0KPiArICAgICAgICAgICAg ICAgcGF0aCA9IGdldF9pbnN0YW5jZV9maWxlKGluc3RhbmNlLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMvdnNvY2svdmlydGlvX3RyYW5zcG9ydF9h bGxvY19wa3QvZmlsdGVyIik7DQo+ICsgICAgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aCwgT19X Uk9OTFkpOw0KPiArICAgICAgICAgICAgICAgd3JpdGUoZmQsIGJ1ZmZlciwgc3RybGVuKGJ1ZmZl cikrMSk7DQo+ICsgICAgICAgICAgICAgICBjbG9zZShmZCk7DQo+ICsgICAgICAgICAgICAgICB0 cmFjZWNtZF9wdXRfdHJhY2luZ19maWxlKHBhdGgpOw0KPiArDQo+ICsgICAgICAgICAgICAgICBp ZiAodHhfZXZlbnQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGdldF9pbnN0 YW5jZV9maWxlKGluc3RhbmNlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImV2ZW50cy92c29jay92aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3BrdC9p ZCIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBmcCA9IGZvcGVuKHBhdGgsICJyIik7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGZnZXRzKGJ1ZmZlciwgMjU1LCAoRklMRSAqKSBmcCk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICp0eF9ldmVudCA9IGF0b2koYnVmZmVyKTsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgdHJhY2VjbWRfcHV0X3RyYWNpbmdfZmlsZShwYXRoKTsNCj4gKyAgICAgICAgICAgICAg IH0NCj4gKyAgICAgICAgICAgICAgIGlmIChyeF9ldmVudCkgew0KPiArICAgICAgICAgICAgICAg ICAgICAgICBwYXRoID0gZ2V0X2luc3RhbmNlX2ZpbGUoaW5zdGFuY2UsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRzL3Zzb2NrL3ZpcnRp b190cmFuc3BvcnRfcmVjdl9wa3QvaWQiKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZnAg PSBmb3BlbihwYXRoLCAiciIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBmZ2V0cyhidWZm ZXIsIDI1NSwgKEZJTEUgKikgZnApOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAqcnhfZXZl bnQgPSBhdG9pKGJ1ZmZlcik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlY21kX3B1dF90cmFjaW5nX2ZpbGUocGF0 aCk7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcGF0 aCA9IGdldF9pbnN0YW5jZV9maWxlKGluc3RhbmNlLCAiZXZlbnRzL3Zzb2NrL2VuYWJsZSIpOw0K PiArDQo+ICsgICAgICAgaWYgKGVuYWJsZSkNCj4gKyAgICAgICAgICAgICAgIHdyaXRlX3RyYWNp bmdfb24oaW5zdGFuY2UsIDEpOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIHdy aXRlX3RyYWNpbmdfb24oaW5zdGFuY2UsIDApOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCB2 c29ja190cmFjZV9yZXNldChzdHJ1Y3QgYnVmZmVyX2luc3RhbmNlICp2aW5zdCkNCj4gK3sNCj4g KyAgICAgICBjaGFyICpwYXRoOw0KPiArICAgICAgIGludCBmZDsNCj4gKw0KPiArICAgICAgIHBh dGggPSBnZXRfaW5zdGFuY2VfZmlsZSh2aW5zdCwgInRyYWNlIik7DQo+ICsgICAgICAgZmQgPSBv cGVuKHBhdGgsIE9fV1JPTkxZKTsNCj4gKyAgICAgICB0cmFjZWNtZF9wdXRfdHJhY2luZ19maWxl KHBhdGgpOw0KPiArICAgICAgIHdyaXRlKGZkLCAiMCIsIDIpOw0KPiArICAgICAgIGNsb3NlKGZk KTsNCj4gK30NCj4gKw0KPiArc3RydWN0IHRlcF9oYW5kbGUgKmNsb2NrX3N5bmNoX2dldF90ZXAo c3RydWN0IGJ1ZmZlcl9pbnN0YW5jZSAqaW5zdGFuY2UpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0 IHRlcF9oYW5kbGUgKnRlcCA9IE5VTEw7DQo+ICsgICAgICAgY2hhciAqc3lzdGVtc1tdID0geyJ2 c29jayIsICJrdm0iLCBOVUxMfTsNCj4gKyAgICAgICBjaGFyICpwYXRoOw0KPiArDQo+ICsgICAg ICAgcGF0aCA9IGdldF9pbnN0YW5jZV9kaXIoaW5zdGFuY2UpOw0KPiArICAgICAgIHRlcCA9IHRy YWNlY21kX2xvY2FsX2V2ZW50c19zeXN0ZW0ocGF0aCwgc3lzdGVtcyk7DQo+ICsgICAgICAgdHJh Y2VjbWRfcHV0X3RyYWNpbmdfZmlsZShwYXRoKTsNCj4gKw0KPiArICAgICAgIHRlcF9zZXRfZmls ZV9iaWdlbmRpYW4odGVwLCB0cmFjZWNtZF9ob3N0X2JpZ2VuZGlhbigpKTsNCj4gKyAgICAgICB0 ZXBfc2V0X2hvc3RfYmlnZW5kaWFuKHRlcCwgdHJhY2VjbWRfaG9zdF9iaWdlbmRpYW4oKSk7DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gdGVwOw0KPiArfQ0KPiArDQo+ICtzdHJ1Y3QgYnVmZmVyX2lu c3RhbmNlICpjbG9ja19zeW5jaF9lbmFibGUoaW50IGZkLCBjaGFyICpjbG9jaywNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdHhfZXZlbnQsIGludCAq cnhfZXZlbnQpDQo+ICt7DQo+ICsgICAgICAgY2hhciBpbnN0X25hbWVbMjU2XTsNCj4gKyAgICAg ICBzdHJ1Y3QgYnVmZmVyX2luc3RhbmNlICp2aW5zdDsNCj4gKw0KPiArICAgICAgIHNucHJpbnRm KGluc3RfbmFtZSwgMjU2LCAiY2xvY2tfc3luY2gtJWQiLCByYW5kKCklMTAwKTsNCj4gKyAgICAg ICB2aW5zdCA9IGNyZWF0ZV9pbnN0YW5jZShzdHJkdXAoaW5zdF9uYW1lKSk7DQo+ICsgICAgICAg aW5pdF9pbnN0YW5jZSh2aW5zdCk7DQo+ICsgICAgICAgdmluc3QtPmNwdV9jb3VudCA9IGxvY2Fs X2NwdV9jb3VudDsNCj4gKyAgICAgICBtYWtlX29uZV9pbnN0YW5jZSh2aW5zdCk7DQo+ICsgICAg ICAgdnNvY2tfdHJhY2VfcmVzZXQodmluc3QpOw0KPiArICAgICAgIHZpbnN0LT5jbG9jayA9IHN0 cmR1cChjbG9jayk7DQo+ICsgICAgICAgc2V0X2Nsb2NrKHZpbnN0KTsNCj4gKyAgICAgICBzZXRf Y2xvY2tfc3luY2hfZXZlbnRzKGZkLCB2aW5zdCwgdHJ1ZSwgdHhfZXZlbnQsIHJ4X2V2ZW50KTsN Cj4gKyAgICAgICByZXR1cm4gdmluc3Q7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgY2xvY2tfc3luY2hf ZGlzYWJsZShpbnQgZmQsIHN0cnVjdCBidWZmZXJfaW5zdGFuY2UgKmluc3RhbmNlKQ0KPiArew0K PiArICAgICAgIHNldF9jbG9ja19zeW5jaF9ldmVudHMoZmQsIGluc3RhbmNlLCBmYWxzZSwgTlVM TCwgTlVMTCk7DQo+ICsgICAgICAgdHJhY2VjbWRfcmVtb3ZlX29uZV9pbnN0YW5jZShpbnN0YW5j ZSk7DQo+ICsgICAgICAgLyogdG9kbzogY2xlYW4gdXAgdGhlIGluc3RhbmNlICovDQo+ICt9DQo+ IC0tDQo+IDIuMjAuMQ0KPg0K