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.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS 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 1F89CC004C9 for ; Tue, 7 May 2019 13:31:25 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A53732053B for ; Tue, 7 May 2019 13:31:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="PNS2sRss" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A53732053B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([127.0.0.1]:46890 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hO0Bn-0007sY-Ui for qemu-devel@archiver.kernel.org; Tue, 07 May 2019 09:31:23 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35145) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hO0An-00075U-Ag for qemu-devel@nongnu.org; Tue, 07 May 2019 09:30:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hO0Ac-0001CC-6E for qemu-devel@nongnu.org; Tue, 07 May 2019 09:30:19 -0400 Received: from mail-eopbgr90118.outbound.protection.outlook.com ([40.107.9.118]:35532 helo=FRA01-MR2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hO0AY-00015X-5V; Tue, 07 May 2019 09:30:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gRcHQebxGeHVy/NGNEtI1jx87J+u+UMSUhdBZQmhE8k=; b=PNS2sRssEd7jfIVCrKxWcsVngns9hH1ePNTFaU6IsdAzOtkHD5mDAQ6dUTl8Ovs1K8P2jZxFLpPsuGo8UmZfX2m0aMgn3z9oTjNX+fXGaq5zkP2vrdFw++DBWx/HMXS3sUljT+gcJFSE3j54VGyRhn7uHObU/w9vCo3ROkbiwqQ= Received: from PR2PR08MB4684.eurprd08.prod.outlook.com (52.133.109.209) by PR2PR08MB4907.eurprd08.prod.outlook.com (52.133.107.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1856.10; Tue, 7 May 2019 13:30:01 +0000 Received: from PR2PR08MB4684.eurprd08.prod.outlook.com ([fe80::9c35:2e89:30c4:5cc4]) by PR2PR08MB4684.eurprd08.prod.outlook.com ([fe80::9c35:2e89:30c4:5cc4%3]) with mapi id 15.20.1856.012; Tue, 7 May 2019 13:30:01 +0000 From: Vladimir Sementsov-Ogievskiy To: Max Reitz , "qemu-block@nongnu.org" Thread-Topic: [Qemu-devel] [PATCH v4 02/11] block: Filtered children access functions Thread-Index: AQHU79wA05VKR7zfGUSKIteegCD/haZf0jeA Date: Tue, 7 May 2019 13:30:01 +0000 Message-ID: <344eec5c-8908-7b32-5d5f-61911253a621@virtuozzo.com> References: <20190410202033.28617-1-mreitz@redhat.com> <20190410202033.28617-3-mreitz@redhat.com> In-Reply-To: <20190410202033.28617-3-mreitz@redhat.com> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR05CA0354.eurprd05.prod.outlook.com (2603:10a6:7:92::49) To PR2PR08MB4684.eurprd08.prod.outlook.com (2603:10a6:101:22::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; x-ms-exchange-messagesentrepresentingtype: 1 x-tagtoolbar-keys: D20190507162959072 x-originating-ip: [185.231.240.5] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2a14ef03-f0c2-4885-e664-08d6d2f01b77 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:PR2PR08MB4907; x-ms-traffictypediagnostic: PR2PR08MB4907: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-forefront-prvs: 0030839EEE x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(979002)(39850400004)(346002)(136003)(376002)(366004)(396003)(52314003)(199004)(189003)(71190400001)(71200400001)(102836004)(53936002)(86362001)(6436002)(31696002)(54906003)(6246003)(6506007)(110136005)(36756003)(6486002)(14454004)(478600001)(316002)(99286004)(256004)(52116002)(76176011)(68736007)(14444005)(25786009)(4326008)(2906002)(66066001)(386003)(486006)(6512007)(446003)(66446008)(64756008)(66556008)(11346002)(8936002)(8676002)(2501003)(66476007)(81166006)(81156014)(229853002)(30864003)(31686004)(5660300002)(476003)(2616005)(3846002)(6116002)(53946003)(26005)(7736002)(186003)(66946007)(73956011)(305945005)(21314003)(959014)(579004)(559001)(569006); DIR:OUT; SFP:1102; SCL:1; SRVR:PR2PR08MB4907; H:PR2PR08MB4684.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: v0vzIrzJ/VHPJ0RoCLg9qns4dZHLZ5mltdpw1FIHJXlqDS7T/BSZii/bFElZMVc06WlSfIO6Y0cjNyaK0kNfqp15baLXQIxWpRrsLiHV2/SkwvEHIx03KzA5xbbj2KpbsyNOQ3GDh4eOvWjx4J3laDp81jcXWqBFVcVzmv/ICw/XIrrgKObbl8iPDGFcifHBPdmqBkOcbU9OQbG/hD1fUnTPWKHRSV/R4SUS/ixCNCoplu7VDAwt25E0BAAHqPEkiswu1o7emLcajqgC05iAoyt4ngxhUoJorKda1Di8NOofOnoGjVkyLpArgR1GfoXC0OBpcSOXKh/0aIWP1TewR9VyeMsSk780Wd0Wm5rP1fN9Ohgl4eNh9t71+L+1SgZx9rFvKHA555wtvHWP2RSE87hWEeAlVfY/gscIwOL4J2I= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a14ef03-f0c2-4885-e664-08d6d2f01b77 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 May 2019 13:30:01.7542 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR2PR08MB4907 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.9.118 Subject: Re: [Qemu-devel] [PATCH v4 02/11] block: Filtered children access functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "qemu-devel@nongnu.org" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" MTAuMDQuMjAxOSAyMzoyMCwgTWF4IFJlaXR6IHdyb3RlOg0KPiBXaGF0IGJzLT5maWxlIGFuZCBi cy0+YmFja2luZyBtZWFuIGRlcGVuZHMgb24gdGhlIG5vZGUuICBGb3IgZmlsdGVyDQo+IG5vZGVz LCBib3RoIHNpZ25pZnkgYSBub2RlIHRoYXQgd2lsbCBldmVudHVhbGx5IHJlY2VpdmUgYWxsIFIv Vw0KPiBhY2Nlc3Nlcy4gIEZvciBmb3JtYXQgbm9kZXMsIGJzLT5maWxlIGNvbnRhaW5zIG1ldGFk YXRhIGFuZCBkYXRhLCBhbmQNCj4gYnMtPmJhY2tpbmcgd2lsbCBub3QgcmVjZWl2ZSB3cml0ZXMg LS0gaW5zdGVhZCwgd3JpdGVzIGFyZSBDT1dlZCB0bw0KPiBicy0+ZmlsZS4gIFVzdWFsbHkuDQo+ IA0KPiBJbiBhbnkgY2FzZSwgaXQgaXMgbm90IHRyaXZpYWwgdG8gZ3Vlc3Mgd2hhdCBhIGNoaWxk IG1lYW5zIGV4YWN0bHkgd2l0aA0KPiBvdXIgY3VycmVudGx5IGxpbWl0ZWQgZm9ybSBvZiBleHBy ZXNzaW9uLiAgSXQgaXMgYmV0dGVyIHRvIGludHJvZHVjZQ0KPiBzb21lIGZ1bmN0aW9ucyB0aGF0 IGFjdHVhbGx5IGd1YXJhbnRlZSBhIG1lYW5pbmc6DQo+IA0KPiAtIGJkcnZfZmlsdGVyZWRfY293 X2NoaWxkKCkgd2lsbCByZXR1cm4gdGhlIGNoaWxkIHRoYXQgcmVjZWl2ZXMgcmVxdWVzdHMNCj4g ICAgZmlsdGVyZWQgdGhyb3VnaCBDT1cuICBUaGF0IGlzLCByZWFkcyBtYXkgb3IgbWF5IG5vdCBi ZSBmb3J3YXJkZWQNCj4gICAgKGRlcGVuZGluZyBvbiB0aGUgb3ZlcmxheSdzIGFsbG9jYXRpb24g c3RhdHVzKSwgYnV0IHdyaXRlcyBuZXZlciBnbyB0bw0KPiAgICB0aGlzIGNoaWxkLg0KPiANCj4g LSBiZHJ2X2ZpbHRlcmVkX3J3X2NoaWxkKCkgd2lsbCByZXR1cm4gdGhlIGNoaWxkIHRoYXQgcmVj ZWl2ZXMgcmVxdWVzdHMNCj4gICAgZmlsdGVyZWQgdGhyb3VnaCBzb21lIHZlcnkgcGxhaW4gcHJv Y2Vzcy4gIFJlYWRzIGFuZCB3cml0ZXMgaXNzdWVkIHRvDQo+ICAgIHRoZSBwYXJlbnQgd2lsbCBn byB0byB0aGUgY2hpbGQgYXMgd2VsbCAoYWx0aG91Z2ggdGltaW5nLCBldGMuIG1heSBiZQ0KPiAg ICBtb2RpZmllZCkuDQo+IA0KPiAtIEFsbCBkcml2ZXJzIGJ1dCBxdW9ydW0gKGJ1dCBxdW9ydW0g aXMgcHJldHR5IG9wYXF1ZSB0byB0aGUgZ2VuZXJhbA0KPiAgICBibG9jayBsYXllciBhbnl3YXkp IGFsd2F5cyBvbmx5IGhhdmUgb25lIG9mIHRoZXNlIGNoaWxkcmVuOiBBbGwgcmVhZA0KPiAgICBy ZXF1ZXN0cyBtdXN0IGJlIHNlcnZlZCBmcm9tIHRoZSBmaWx0ZXJlZF9yd19jaGlsZCAoaWYgaXQg ZXhpc3RzKSwgc28NCj4gICAgaWYgdGhlcmUgd2FzIGEgZmlsdGVyZWRfY293X2NoaWxkIGluIGFk ZGl0aW9uLCBpdCB3b3VsZCBub3QgcmVjZWl2ZQ0KPiAgICBhbnkgcmVxdWVzdHMgYXQgYWxsLg0K PiAgICAoVGhlIGNsb3Nlc3QgaGVyZSBpcyBtaXJyb3IsIHdoZXJlIGFsbCByZXF1ZXN0cyBhcmUg cGFzc2VkIG9uIHRvIHRoZQ0KPiAgICBzb3VyY2UsIGJ1dCB3aXRoIHdyaXRlLWJsb2NraW5nLCB3 cml0ZSByZXF1ZXN0cyBhcmUgIkNPV2VkIiB0byB0aGUNCj4gICAgdGFyZ2V0LiAgQnV0IHRoYXQg anVzdCBtZWFucyB0aGF0IHRoZSB0YXJnZXQgaXMgYSBzcGVjaWFsIGNoaWxkIHRoYXQNCj4gICAg Y2Fubm90IGJlIGludHJvc3BlY3RlZCBieSB0aGUgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlv bnMsIGFuZCB0aGF0DQo+ICAgIHNvdXJjZSBpcyBhIGZpbHRlcmVkX3J3X2NoaWxkLikNCj4gICAg VGhlcmVmb3JlLCB3ZSBjYW4gYWxzbyBhZGQgYmRydl9maWx0ZXJlZF9jaGlsZCgpIHdoaWNoIHJl dHVybnMgdGhhdA0KPiAgICBvbmUgY2hpbGQgKG9yIE5VTEwsIGlmIHRoZXJlIGlzIG5vIGZpbHRl cmVkIGNoaWxkKS4NCj4gDQo+IEFsc28sIG1hbnkgcGxhY2VzIGluIHRoZSBjdXJyZW50IGJsb2Nr IGxheWVyIHNob3VsZCBiZSBza2lwcGluZyBmaWx0ZXJzDQo+IChhbGwgZmlsdGVycyBvciBqdXN0 IHRoZSBvbmVzIGFkZGVkIGltcGxpY2l0bHksIGl0IGRlcGVuZHMpIHdoZW4gZ29pbmcNCj4gdGhy b3VnaCBhIGJsb2NrIG5vZGUgY2hhaW4uICBUaGV5IGRvIG5vdCBkbyB0aGF0IGN1cnJlbnRseSwg YnV0IHRoaXMNCj4gcGF0Y2ggbWFrZXMgdGhlbS4NCj4gDQo+IE9uZSBleGFtcGxlIGZvciB0aGlz IGlzIHFlbXUtaW1nIG1hcCwgd2hpY2ggc2hvdWxkIHNraXAgZmlsdGVycyBhbmQgb25seQ0KPiBs b29rIGF0IHRoZSBDT1cgZWxlbWVudHMgaW4gdGhlIGdyYXBoLiAgVGhlIGNoYW5nZSB0byBpb3Rl c3QgMjA0J3MNCj4gcmVmZXJlbmNlIG91dHB1dCBzaG93cyBob3cgdXNpbmcgYmxrZGVidWcgb24g dG9wIG9mIGEgQ09XIG5vZGUgdXNlZCB0bw0KPiBtYWtlIHFlbXUtaW1nIG1hcCBkaXNyZWdhcmQg dGhlIHJlc3Qgb2YgdGhlIGJhY2tpbmcgY2hhaW4sIGJ1dCB3aXRoIHRoaXMNCj4gcGF0Y2gsIHRo ZSBhbGxvY2F0aW9uIGluIHRoZSBiYXNlIGltYWdlIGlzIHJlcG9ydGVkIGNvcnJlY3RseS4NCj4g DQo+IEZ1cnRoZXJtb3JlLCBhIG5vdGUgc2hvdWxkIGJlIG1hZGUgdGhhdCBzb21ldGltZXMgd2Ug ZG8gd2FudCB0byBhY2Nlc3MNCj4gYnMtPmJhY2tpbmcgZGlyZWN0bHkuICBUaGlzIGlzIHdoZW5l dmVyIHRoZSBvcGVyYXRpb24gaW4gcXVlc3Rpb24gaXMgbm90DQo+IGFib3V0IGFjY2Vzc2luZyB0 aGUgQ09XIGNoaWxkLCBidXQgdGhlICJiYWNraW5nIiBjaGlsZCwgYmUgaXQgQ09XIG9yDQo+IG5v dC4gIFRoaXMgaXMgdGhlIGNhc2UgaW4gZnVuY3Rpb25zIHN1Y2ggYXMgYmRydl9vcGVuX2JhY2tp bmdfZmlsZSgpIG9yDQo+IHdoZW5ldmVyIHdlIGhhdmUgdG8gZGVhbCB3aXRoIHRoZSBzcGVjaWFs IGJlaGF2aW9yIG9mIEBiYWNraW5nIGFzIGENCj4gYmxvY2tkZXYgb3B0aW9uLCB3aGljaCBpcyB0 aGF0IGl0IGRvZXMgbm90IGRlZmF1bHQgdG8gbnVsbCBsaWtlIGFsbA0KPiBvdGhlciBjaGlsZCBy ZWZlcmVuY2VzIGRvLg0KPiANCj4gRmluYWxseSwgdGhlIHF1ZXJ5IGZ1bmN0aW9ucyAocXVlcnkt YmxvY2sgYW5kIHF1ZXJ5LW5hbWVkLWJsb2NrLW5vZGVzKQ0KPiBhcmUgbW9kaWZpZWQgdG8gcmV0 dXJuIGFueSBmaWx0ZXJlZCBjaGlsZCB1bmRlciAiYmFja2luZyIsIG5vdCBqdXN0DQo+IGJzLT5i YWNraW5nIG9yIENPVyBjaGlsZHJlbi4gIFRoaXMgaXMgc28gdGhhdCBmaWx0ZXJzIGRvIG5vdCBp bnRlcnJ1cHQNCj4gdGhlIHJlcG9ydGVkIGJhY2tpbmcgY2hhaW4uICBUaGlzIGNoYW5nZXMgdGhl IG91dHB1dCBvZiBpb3Rlc3QgMTg0LCBhcw0KPiB0aGUgdGhyb3R0bGVkIG5vZGUgbm93IGFwcGVh cnMgYXMgYSBiYWNraW5nIGNoaWxkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWF4IFJlaXR6IDxt cmVpdHpAcmVkaGF0LmNvbT4NCj4gLS0tDQo+ICAgcWFwaS9ibG9jay1jb3JlLmpzb24gICAgICAg ICAgIHwgICA0ICsNCj4gICBpbmNsdWRlL2Jsb2NrL2Jsb2NrLmggICAgICAgICAgfCAgIDEgKw0K PiAgIGluY2x1ZGUvYmxvY2svYmxvY2tfaW50LmggICAgICB8ICA0MCArKysrKy0tDQo+ICAgYmxv Y2suYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMjEwICsrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLQ0KPiAgIGJsb2NrL2JhY2t1cC5jICAgICAgICAgICAgICAgICB8ICAgOCArLQ0K PiAgIGJsb2NrL2Jsb2NrLWJhY2tlbmQuYyAgICAgICAgICB8ICAxNiArKy0NCj4gICBibG9jay9j b21taXQuYyAgICAgICAgICAgICAgICAgfCAgMzMgKysrLS0tDQo+ICAgYmxvY2svaW8uYyAgICAg ICAgICAgICAgICAgICAgIHwgIDQ1ICsrKystLS0NCj4gICBibG9jay9taXJyb3IuYyAgICAgICAg ICAgICAgICAgfCAgMjEgKystLQ0KPiAgIGJsb2NrL3FhcGkuYyAgICAgICAgICAgICAgICAgICB8 ICAzMCArKystLQ0KPiAgIGJsb2NrL3N0cmVhbS5jICAgICAgICAgICAgICAgICB8ICAxMyArLQ0K PiAgIGJsb2NrZGV2LmMgICAgICAgICAgICAgICAgICAgICB8ICA4OCArKysrKysrKysrKy0tLQ0K PiAgIG1pZ3JhdGlvbi9ibG9jay1kaXJ0eS1iaXRtYXAuYyB8ICAgNCArLQ0KPiAgIG5iZC9zZXJ2 ZXIuYyAgICAgICAgICAgICAgICAgICB8ICAgNiArLQ0KPiAgIHFlbXUtaW1nLmMgICAgICAgICAg ICAgICAgICAgICB8ICAyOSArKy0tLQ0KPiAgIHRlc3RzL3FlbXUtaW90ZXN0cy8xODQub3V0ICAg ICB8ICAgNyArLQ0KPiAgIHRlc3RzL3FlbXUtaW90ZXN0cy8yMDQub3V0ICAgICB8ICAgMSArDQo+ ICAgMTcgZmlsZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMoKyksIDE0NSBkZWxldGlvbnMoLSkN Cj4gDQo+IGRpZmYgLS1naXQgYS9xYXBpL2Jsb2NrLWNvcmUuanNvbiBiL3FhcGkvYmxvY2stY29y ZS5qc29uDQo+IGluZGV4IDdjY2JmZmY5ZDAuLmRiZDkyODZlNGEgMTAwNjQ0DQo+IC0tLSBhL3Fh cGkvYmxvY2stY29yZS5qc29uDQo+ICsrKyBiL3FhcGkvYmxvY2stY29yZS5qc29uDQo+IEBAIC0y NTAyLDYgKzI1MDIsMTAgQEANCj4gICAjIE9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiB0aGUgaW1h Z2UgZmlsZSBpcyB1cGRhdGVkIHRvIGRyb3AgdGhlIGJhY2tpbmcgZmlsZQ0KPiAgICMgYW5kIHRo ZSBCTE9DS19KT0JfQ09NUExFVEVEIGV2ZW50IGlzIGVtaXR0ZWQuDQo+ICAgIw0KPiArIyBJbiBj YXNlIEBkZXZpY2UgaXMgYSBmaWx0ZXIgbm9kZSwgYmxvY2stc3RyZWFtIG1vZGlmaWVzIHRoZSBm aXJzdCBub24tZmlsdGVyDQo+ICsjIG92ZXJsYXkgbm9kZSBiZWxvdyBpdCB0byBwb2ludCB0byBi YXNlJ3MgYmFja2luZyBub2RlIChvciBOVUxMIGlmIEBiYXNlIHdhcw0KPiArIyBub3Qgc3BlY2lm aWVkKSBpbnN0ZWFkIG9mIG1vZGlmeWluZyBAZGV2aWNlIGl0c2VsZi4NCj4gKyMNCg0KSXMgaXQg bmVjZXNzYXJ5LCB3aHkgd2UgY2FuJ3Qga2VlcCBpdCBhcyBpcywgbW9kaWZ5aW5nIGV4YWN0bHkg ZGV2aWNlIG5vZGU/IE1heSBiZSwNCnVzZXIgd2FudHMgdG8gdXNlIGZpbHRlciBpbiBzdHJlYW0g cHJvY2VzcywgdGhyb3R0bGluZyBmb3IgZXhhbXBsZS4NCg0KPiAgICMgQGpvYi1pZDogaWRlbnRp ZmllciBmb3IgdGhlIG5ld2x5LWNyZWF0ZWQgYmxvY2sgam9iLiBJZg0KPiAgICMgICAgICAgICAg b21pdHRlZCwgdGhlIGRldmljZSBuYW1lIHdpbGwgYmUgdXNlZC4gKFNpbmNlIDIuNykNCj4gICAj DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL2Jsb2NrLmggYi9pbmNsdWRlL2Jsb2NrL2Js b2NrLmgNCj4gaW5kZXggYzdhMjYxOTlhYS4uMjAwNTY2NGYxNCAxMDA2NDQNCj4gLS0tIGEvaW5j bHVkZS9ibG9jay9ibG9jay5oDQo+ICsrKyBiL2luY2x1ZGUvYmxvY2svYmxvY2suaA0KPiBAQCAt NDY3LDYgKzQ2Nyw3IEBAIEJsb2NrRHJpdmVyU3RhdGUgKmJkcnZfbG9va3VwX2JzKGNvbnN0IGNo YXIgKmRldmljZSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpub2RlX25hbWUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJy b3IgKiplcnJwKTsNCj4gICBib29sIGJkcnZfY2hhaW5fY29udGFpbnMoQmxvY2tEcml2ZXJTdGF0 ZSAqdG9wLCBCbG9ja0RyaXZlclN0YXRlICpiYXNlKTsNCj4gK2Jvb2wgYmRydl9sZWdhY3lfY2hh aW5fY29udGFpbnMoQmxvY2tEcml2ZXJTdGF0ZSAqdG9wLCBCbG9ja0RyaXZlclN0YXRlICpiYXNl KTsNCj4gICBCbG9ja0RyaXZlclN0YXRlICpiZHJ2X25leHRfbm9kZShCbG9ja0RyaXZlclN0YXRl ICpicyk7DQo+ICAgQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9uZXh0X2FsbF9zdGF0ZXMoQmxvY2tE cml2ZXJTdGF0ZSAqYnMpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ibG9jay9ibG9j a19pbnQuaCBiL2luY2x1ZGUvYmxvY2svYmxvY2tfaW50LmgNCj4gaW5kZXggMDFlODU1YTA2Ni4u YjIyYjExNjRmOCAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQuaA0KPiAr KysgYi9pbmNsdWRlL2Jsb2NrL2Jsb2NrX2ludC5oDQo+IEBAIC05MCw5ICs5MCwxMSBAQCBzdHJ1 Y3QgQmxvY2tEcml2ZXIgew0KPiAgICAgICBpbnQgaW5zdGFuY2Vfc2l6ZTsNCj4gICANCj4gICAg ICAgLyogc2V0IHRvIHRydWUgaWYgdGhlIEJsb2NrRHJpdmVyIGlzIGEgYmxvY2sgZmlsdGVyLiBC bG9jayBmaWx0ZXJzIHBhc3MNCj4gLSAgICAgKiBjZXJ0YWluIGNhbGxiYWNrcyB0aGF0IHJlZmVy IHRvIGRhdGEgKHNlZSBibG9jay5jKSB0byB0aGVpciBicy0+ZmlsZSBpZg0KPiAtICAgICAqIHRo ZSBkcml2ZXIgZG9lc24ndCBpbXBsZW1lbnQgdGhlbS4gRHJpdmVycyB0aGF0IGRvIG5vdCB3aXNo IHRvIGZvcndhcmQNCj4gLSAgICAgKiBtdXN0IGltcGxlbWVudCB0aGVtIGFuZCByZXR1cm4gLUVO T1RTVVAuDQo+ICsgICAgICogY2VydGFpbiBjYWxsYmFja3MgdGhhdCByZWZlciB0byBkYXRhIChz ZWUgYmxvY2suYykgdG8gdGhlaXIgYnMtPmZpbGUNCj4gKyAgICAgKiBvciBicy0+YmFja2luZyAo d2hpY2hldmVyIG9uZSBleGlzdHMpIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBpbXBsZW1lbnQNCj4g KyAgICAgKiB0aGVtLiBEcml2ZXJzIHRoYXQgZG8gbm90IHdpc2ggdG8gZm9yd2FyZCBtdXN0IGlt cGxlbWVudCB0aGVtIGFuZCByZXR1cm4NCj4gKyAgICAgKiAtRU5PVFNVUC4NCj4gKyAgICAgKiBO b3RlIHRoYXQgZmlsdGVycyBhcmUgbm90IGFsbG93ZWQgdG8gbW9kaWZ5IGRhdGEuDQo+ICAgICAg ICAqLw0KPiAgICAgICBib29sIGlzX2ZpbHRlcjsNCj4gICAgICAgLyogZm9yIHNuYXBzaG90cyBi bG9jayBmaWx0ZXIgbGlrZSBRdW9ydW0gY2FuIGltcGxlbWVudCB0aGUNCj4gQEAgLTkwNiwxMSAr OTA4LDYgQEAgdHlwZWRlZiBlbnVtIEJsb2NrTWlycm9yQmFja2luZ01vZGUgew0KPiAgICAgICBN SVJST1JfTEVBVkVfQkFDS0lOR19DSEFJTiwNCj4gICB9IEJsb2NrTWlycm9yQmFja2luZ01vZGU7 DQo+ICAgDQo+IC1zdGF0aWMgaW5saW5lIEJsb2NrRHJpdmVyU3RhdGUgKmJhY2tpbmdfYnMoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMpDQo+IC17DQo+IC0gICAgcmV0dXJuIGJzLT5iYWNraW5nID8gYnMt PmJhY2tpbmctPmJzIDogTlVMTDsNCj4gLX0NCj4gLQ0KPiAgIA0KPiAgIC8qIEVzc2VudGlhbCBi bG9jayBkcml2ZXJzIHdoaWNoIG11c3QgYWx3YXlzIGJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8g cWVtdSwgYW5kDQo+ICAgICogd2hpY2ggdGhlcmVmb3JlIGNhbiBiZSBhY2Nlc3NlZCB3aXRob3V0 IHVzaW5nIGJkcnZfZmluZF9mb3JtYXQoKSAqLw0KPiBAQCAtMTI0Myw0ICsxMjQwLDMxIEBAIGlu dCBjb3JvdXRpbmVfZm4gYmRydl9jb19jb3B5X3JhbmdlX3RvKEJkcnZDaGlsZCAqc3JjLCB1aW50 NjRfdCBzcmNfb2Zmc2V0LA0KPiAgIA0KPiAgIGludCByZWZyZXNoX3RvdGFsX3NlY3RvcnMoQmxv Y2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3QgaGludCk7DQo+ICAgDQo+ICtCZHJ2Q2hpbGQgKmJk cnZfZmlsdGVyZWRfY293X2NoaWxkKEJsb2NrRHJpdmVyU3RhdGUgKmJzKTsNCj4gK0JkcnZDaGls ZCAqYmRydl9maWx0ZXJlZF9yd19jaGlsZChCbG9ja0RyaXZlclN0YXRlICpicyk7DQo+ICtCZHJ2 Q2hpbGQgKmJkcnZfZmlsdGVyZWRfY2hpbGQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOw0KPiArQmxv Y2tEcml2ZXJTdGF0ZSAqYmRydl9za2lwX2ltcGxpY2l0X2ZpbHRlcnMoQmxvY2tEcml2ZXJTdGF0 ZSAqYnMpOw0KPiArQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9za2lwX3J3X2ZpbHRlcnMoQmxvY2tE cml2ZXJTdGF0ZSAqYnMpOw0KPiArQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9iYWNraW5nX2NoYWlu X25leHQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpOw0KPiArDQo+ICtzdGF0aWMgaW5saW5lIEJsb2Nr RHJpdmVyU3RhdGUgKmNoaWxkX2JzKEJkcnZDaGlsZCAqY2hpbGQpDQo+ICt7DQo+ICsgICAgcmV0 dXJuIGNoaWxkID8gY2hpbGQtPmJzIDogTlVMTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGlu ZSBCbG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbHRlcmVkX2Nvd19icyhCbG9ja0RyaXZlclN0YXRl ICpicykNCj4gK3sNCj4gKyAgICByZXR1cm4gY2hpbGRfYnMoYmRydl9maWx0ZXJlZF9jb3dfY2hp bGQoYnMpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSBCbG9ja0RyaXZlclN0YXRlICpi ZHJ2X2ZpbHRlcmVkX3J3X2JzKEJsb2NrRHJpdmVyU3RhdGUgKmJzKQ0KPiArew0KPiArICAgIHJl dHVybiBjaGlsZF9icyhiZHJ2X2ZpbHRlcmVkX3J3X2NoaWxkKGJzKSk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbmxpbmUgQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maWx0ZXJlZF9icyhCbG9ja0Ry aXZlclN0YXRlICpicykNCj4gK3sNCj4gKyAgICByZXR1cm4gY2hpbGRfYnMoYmRydl9maWx0ZXJl ZF9jaGlsZChicykpOw0KPiArfQ0KPiArDQo+ICAgI2VuZGlmIC8qIEJMT0NLX0lOVF9IICovDQo+ IGRpZmYgLS1naXQgYS9ibG9jay5jIGIvYmxvY2suYw0KPiBpbmRleCAxNjYxNWJjODc2Li5lOGY2 ZmViZGEwIDEwMDY0NA0KPiAtLS0gYS9ibG9jay5jDQo+ICsrKyBiL2Jsb2NrLmMNCj4gQEAgLTU1 NiwxMSArNTU2LDEyIEBAIGludCBiZHJ2X2NyZWF0ZV9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1l LCBRZW11T3B0cyAqb3B0cywgRXJyb3IgKiplcnJwKQ0KPiAgIGludCBiZHJ2X3Byb2JlX2Jsb2Nr c2l6ZXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIEJsb2NrU2l6ZXMgKmJzeikNCj4gICB7DQo+ICAg ICAgIEJsb2NrRHJpdmVyICpkcnYgPSBicy0+ZHJ2Ow0KPiArICAgIEJsb2NrRHJpdmVyU3RhdGUg KmZpbHRlcmVkID0gYmRydl9maWx0ZXJlZF9yd19icyhicyk7DQo+ICAgDQo+ICAgICAgIGlmIChk cnYgJiYgZHJ2LT5iZHJ2X3Byb2JlX2Jsb2Nrc2l6ZXMpIHsNCj4gICAgICAgICAgIHJldHVybiBk cnYtPmJkcnZfcHJvYmVfYmxvY2tzaXplcyhicywgYnN6KTsNCj4gLSAgICB9IGVsc2UgaWYgKGRy diAmJiBkcnYtPmlzX2ZpbHRlciAmJiBicy0+ZmlsZSkgew0KPiAtICAgICAgICByZXR1cm4gYmRy dl9wcm9iZV9ibG9ja3NpemVzKGJzLT5maWxlLT5icywgYnN6KTsNCj4gKyAgICB9IGVsc2UgaWYg KGZpbHRlcmVkKSB7DQo+ICsgICAgICAgIHJldHVybiBiZHJ2X3Byb2JlX2Jsb2Nrc2l6ZXMoZmls dGVyZWQsIGJzeik7DQo+ICAgICAgIH0NCg0KT0s6IGFkZCBzdXBwb3J0IGZvciBiYWNraW5nLWZp bHRlcnMNCg0KPiAgIA0KPiAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+IEBAIC01NzUsMTEgKzU3 NiwxMiBAQCBpbnQgYmRydl9wcm9iZV9ibG9ja3NpemVzKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBC bG9ja1NpemVzICpic3opDQo+ICAgaW50IGJkcnZfcHJvYmVfZ2VvbWV0cnkoQmxvY2tEcml2ZXJT dGF0ZSAqYnMsIEhER2VvbWV0cnkgKmdlbykNCj4gICB7DQo+ICAgICAgIEJsb2NrRHJpdmVyICpk cnYgPSBicy0+ZHJ2Ow0KPiArICAgIEJsb2NrRHJpdmVyU3RhdGUgKmZpbHRlcmVkID0gYmRydl9m aWx0ZXJlZF9yd19icyhicyk7DQo+ICAgDQo+ICAgICAgIGlmIChkcnYgJiYgZHJ2LT5iZHJ2X3By b2JlX2dlb21ldHJ5KSB7DQo+ICAgICAgICAgICByZXR1cm4gZHJ2LT5iZHJ2X3Byb2JlX2dlb21l dHJ5KGJzLCBnZW8pOw0KPiAtICAgIH0gZWxzZSBpZiAoZHJ2ICYmIGRydi0+aXNfZmlsdGVyICYm IGJzLT5maWxlKSB7DQo+IC0gICAgICAgIHJldHVybiBiZHJ2X3Byb2JlX2dlb21ldHJ5KGJzLT5m aWxlLT5icywgZ2VvKTsNCj4gKyAgICB9IGVsc2UgaWYgKGZpbHRlcmVkKSB7DQo+ICsgICAgICAg IHJldHVybiBiZHJ2X3Byb2JlX2dlb21ldHJ5KGZpbHRlcmVkLCBnZW8pOw0KPiAgICAgICB9DQoN Cg0KT0s6IGFkZCBzdXBwb3J0IGZvciBiYWNraW5nLWZpbHRlcnMgKHNob3J0IGZvciBiYWNraW5n LWNoaWxkLWJhc2VkIGZpbHRlcnMsIGFzDQp3ZWxsIGFzIGZpbGUtZmlsdGVzciA9IGZpbGUtY2hp bGQtYmFzZWQgZmlsdGVycykNCg0KPiAgIA0KPiAgICAgICByZXR1cm4gLUVOT1RTVVA7DQo+IEBA IC0yMzM2LDcgKzIzMzgsNyBAQCBzdGF0aWMgYm9vbCBiZHJ2X2luaGVyaXRzX2Zyb21fcmVjdXJz aXZlKEJsb2NrRHJpdmVyU3RhdGUgKmNoaWxkLA0KPiAgIH0NCj4gICANCj4gICAvKg0KPiAtICog U2V0cyB0aGUgYmFja2luZyBmaWxlIGxpbmsgb2YgYSBCRFMuIEEgbmV3IHJlZmVyZW5jZSBpcyBj cmVhdGVkOyBjYWxsZXJzDQo+ICsgKiBTZXRzIHRoZSBicy0+YmFja2luZyBsaW5rIG9mIGEgQkRT LiBBIG5ldyByZWZlcmVuY2UgaXMgY3JlYXRlZDsgY2FsbGVycw0KPiAgICAqIHdoaWNoIGRvbid0 IG5lZWQgdGhlaXIgb3duIHJlZmVyZW5jZSBhbnkgbW9yZSBtdXN0IGNhbGwgYmRydl91bnJlZigp Lg0KPiAgICAqLw0KPiAgIHZvaWQgYmRydl9zZXRfYmFja2luZ19oZChCbG9ja0RyaXZlclN0YXRl ICpicywgQmxvY2tEcml2ZXJTdGF0ZSAqYmFja2luZ19oZCwNCj4gQEAgLTIzNDUsNyArMjM0Nyw3 IEBAIHZvaWQgYmRydl9zZXRfYmFja2luZ19oZChCbG9ja0RyaXZlclN0YXRlICpicywgQmxvY2tE cml2ZXJTdGF0ZSAqYmFja2luZ19oZCwNCj4gICAgICAgYm9vbCB1cGRhdGVfaW5oZXJpdHNfZnJv bSA9IGJkcnZfY2hhaW5fY29udGFpbnMoYnMsIGJhY2tpbmdfaGQpICYmDQo+ICAgICAgICAgICBi ZHJ2X2luaGVyaXRzX2Zyb21fcmVjdXJzaXZlKGJhY2tpbmdfaGQsIGJzKTsNCj4gICANCj4gLSAg ICBpZiAoYmRydl9pc19iYWNraW5nX2NoYWluX2Zyb3plbihicywgYmFja2luZ19icyhicyksIGVy cnApKSB7DQo+ICsgICAgaWYgKGJkcnZfaXNfYmFja2luZ19jaGFpbl9mcm96ZW4oYnMsIGNoaWxk X2JzKGJzLT5iYWNraW5nKSwgZXJycCkpIHsNCg0KSWYgd2Ugc3VwcG9ydCBmaWxlLWZpbHRlcnMg Zm9yIGZyb3plbiBiYWNraW5nIGNoYWluLCBjb3VsZCBpdCBnbyB0aHJvdWdoIGZpbGUgY2hpbGQg aGVyZT8NCkhtbSwgb25seSBpbiBjYXNlIHdoZW4gd2UgYXJlIGdvaW5nIHRvIHNldCBiYWNraW5n IGhkIGZvciBmaWxlLWZpbHRlci4uIEhtbSwgY291bGQgZmlsdGVyIGhhdmUNCmJvdGggZmlsZSBh bmQgYmFja2luZyBjaGlsZHJlbj8gWW91ciBuZXcgQVBJIGRvbid0IHJlc3RyaWN0IGl0LCBhbmQg Y2hvc2VzIGJhY2tpbmcgYXMgYSBkZWZhdWx0DQppbiB0aGlzIGNhc2UgaW4gYmRydl9maWx0ZXJl ZF9yd19jaGlsZCgpLCBzbywgSSBhc3N1bWUgeW91IHN1cHBvc2UgcG9zc2liaWxpdHkgb2YgaXQu DQoNCkhlcmUgd2UgZG9uJ3Qgd2FudCB0byBjaGVjayB0aGUgY2hhaW4sIHdlIGV4YWN0bHkgd2Fu dCB0byBjaGVjayBiYWNraW5nIGxpbmssIHNvIGl0IHNob3VsZCBiZQ0Kc29tZXRoaW5nIGxpa2UN Cg0KaWYgKGJzLT5iYWNraW5nICYmIGJzLT5iYWNraW5nLT5mcm96ZW4pIHsNCiAgICBlcnJvcl9z ZXRnKCJiYWNraWcgZXhpc3RzIGFuZCBmcm96ZW4hIik7DQogICAgcmV0dXJuOw0KfQ0KDQoNCkht bSwgb24gdGhlIG90aGVyIGhhbmQsIGlmIHdlIGhhdmUgZnJvemVuIGJhY2tpbmcgY2hhaW4sIGdv aW5nIHRocm91Z2ggZmlsZSBjaGlsZCwgd2UgbXVzdCBub3QgYWRkDQpiYWNraW5nIGNoaWxkIHRv IHRoZSBub2RlIHdpdGggZmlsZSBjaGlsZCwgYXMgaXQgd2lsbCBjaGFuZ2UgYmFja2luZyBjaGFp biAod2hpY2ggYnkgZGVmYXVsdCBnb2VzDQp0aHJvdWdoIGJhY2tpbmcpLi4NCg0KQW55d2F5LCB3 ZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSB3aG9sZSBiYWNraW5nIGNoYWluLCBhcyB3ZSBtYXkg ZmluZCBvdGhlciBmcm96ZW4gYmFja2luZyBzdWJjaGFpbiwNCmZhciBhd2F5IG9mIGJzLi4gU28s IHdlIHBvc3NpYmx5IHdhbnQgdG8gY2hlY2sNCg0KaWYgKGJkcnZfZmlsdGVyZWRfY2hpbGQoYnMp ICYmIGJkcnZfZmlsdGVyZWRfY2hpbGQoYnMpLT5mcm96ZWQpIHsNCiAgIEVSUk9SDQp9DQoNCg0K Li4uLg0KDQphbHNvLCB3ZSdsbCBuZWVkIHRvIGNoZWNrIGZvciBmcm96ZW4gZmlsZSBjaGlsZCwg d2hlbiB3ZSB3YW50IHRvIHJlcGxhY2UgaXQuDQoNCg0KPiAgICAgICAgICAgcmV0dXJuOw0KPiAg ICAgICB9DQo+ICAgDQo+IEBAIC0zNDY3LDE0ICszNDY5LDE3IEBAIHN0YXRpYyBpbnQgYmRydl9y ZW9wZW5fcGFyc2VfYmFja2luZyhCRFJWUmVvcGVuU3RhdGUgKnJlb3Blbl9zdGF0ZSwNCj4gICAg ICAgLyoNCj4gICAgICAgICogRmluZCB0aGUgImFjdHVhbCIgYmFja2luZyBmaWxlIGJ5IHNraXBw aW5nIGFsbCBsaW5rcyB0aGF0IHBvaW50DQo+ICAgICAgICAqIHRvIGFuIGltcGxpY2l0IG5vZGUs IGlmIGFueSAoZS5nLiBhIGNvbW1pdCBmaWx0ZXIgbm9kZSkuDQo+ICsgICAgICogV2UgY2Fubm90 IHVzZSBhbnkgb2YgdGhlIGJkcnZfc2tpcF8qKCkgZnVuY3Rpb25zIGhlcmUgYmVjYXVzZQ0KPiAr ICAgICAqIHRob3NlIHJldHVybiB0aGUgZmlyc3QgZXhwbGljaXQgbm9kZSwgd2hpbGUgd2UgYXJl IGxvb2tpbmcgZm9yDQo+ICsgICAgICogaXRzIG92ZXJsYXkgaGVyZS4NCj4gICAgICAgICovDQo+ ICAgICAgIG92ZXJsYXlfYnMgPSBiczsNCj4gLSAgICB3aGlsZSAoYmFja2luZ19icyhvdmVybGF5 X2JzKSAmJiBiYWNraW5nX2JzKG92ZXJsYXlfYnMpLT5pbXBsaWNpdCkgew0KPiAtICAgICAgICBv dmVybGF5X2JzID0gYmFja2luZ19icyhvdmVybGF5X2JzKTsNCj4gKyAgICB3aGlsZSAob3Zlcmxh eV9icy0+YmFja2luZyAmJiBiZHJ2X2ZpbHRlcmVkX2JzKG92ZXJsYXlfYnMpLT5pbXBsaWNpdCkg ew0KPiArICAgICAgICBvdmVybGF5X2JzID0gYmRydl9maWx0ZXJlZF9icyhvdmVybGF5X2JzKTsN Cj4gICAgICAgfQ0KDQpBZ3JlZSwgdGhhdCB3ZSBzb21laG93IHdhbnQgdG8gc3VwcG9ydCBpbXBs aWNpdCBmaWxlLWZpdGxlcnMgaGVyZSB0b28uDQoNCj4gICANCj4gICAgICAgLyogSWYgd2Ugd2Fu dCB0byByZXBsYWNlIHRoZSBiYWNraW5nIGZpbGUgd2UgbmVlZCBzb21lIGV4dHJhIGNoZWNrcyAq Lw0KPiAtICAgIGlmIChuZXdfYmFja2luZ19icyAhPSBiYWNraW5nX2JzKG92ZXJsYXlfYnMpKSB7 DQo+ICsgICAgaWYgKG5ld19iYWNraW5nX2JzICE9IGNoaWxkX2JzKG92ZXJsYXlfYnMtPmJhY2tp bmcpKSB7DQo+ICAgICAgICAgICAvKiBDaGVjayBmb3IgaW1wbGljaXQgbm9kZXMgYmV0d2VlbiBi cyBhbmQgaXRzIGJhY2tpbmcgZmlsZSAqLw0KPiAgICAgICAgICAgaWYgKGJzICE9IG92ZXJsYXlf YnMpIHsNCj4gICAgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJDYW5ub3QgY2hhbmdlIGJh Y2tpbmcgbGluayBpZiAnJXMnIGhhcyAiDQo+IEBAIC0zNDgyLDggKzM0ODcsOCBAQCBzdGF0aWMg aW50IGJkcnZfcmVvcGVuX3BhcnNlX2JhY2tpbmcoQkRSVlJlb3BlblN0YXRlICpyZW9wZW5fc3Rh dGUsDQo+ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsNCj4gICAgICAgICAgIH0NCj4gICAg ICAgICAgIC8qIENoZWNrIGlmIHRoZSBiYWNraW5nIGxpbmsgdGhhdCB3ZSB3YW50IHRvIHJlcGxh Y2UgaXMgZnJvemVuICovDQo+IC0gICAgICAgIGlmIChiZHJ2X2lzX2JhY2tpbmdfY2hhaW5fZnJv emVuKG92ZXJsYXlfYnMsIGJhY2tpbmdfYnMob3ZlcmxheV9icyksDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnApKSB7DQo+ICsgICAgICAgIGlmIChiZHJ2 X2lzX2JhY2tpbmdfY2hhaW5fZnJvemVuKG92ZXJsYXlfYnMsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2JzKG92ZXJsYXlfYnMtPmJhY2tpbmcpLCBl cnJwKSkgew0KDQpBZ2FpbiwgSSB0aGluayB3ZSBuZWVkIGJkcnZfaXNfY2hpbGRfZnJvemVuKCkg dG8gY2hlY2sgc3VjaCB0aGluZ3MuDQoNCj4gICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOw0K PiAgICAgICAgICAgfQ0KPiAgICAgICAgICAgcmVvcGVuX3N0YXRlLT5yZXBsYWNlX2JhY2tpbmdf YnMgPSB0cnVlOw0KPiBAQCAtMzYzNCw3ICszNjM5LDcgQEAgaW50IGJkcnZfcmVvcGVuX3ByZXBh cmUoQkRSVlJlb3BlblN0YXRlICpyZW9wZW5fc3RhdGUsIEJsb2NrUmVvcGVuUXVldWUgKnF1ZXVl LA0KPiAgICAgICAgKiBpdHMgbWV0YWRhdGEuIE90aGVyd2lzZSB0aGUgJ2JhY2tpbmcnIG9wdGlv biBjYW4gYmUgb21pdHRlZC4NCj4gICAgICAgICovDQo+ICAgICAgIGlmIChkcnYtPnN1cHBvcnRz X2JhY2tpbmcgJiYgcmVvcGVuX3N0YXRlLT5iYWNraW5nX21pc3NpbmcgJiYNCj4gLSAgICAgICAg KGJhY2tpbmdfYnMocmVvcGVuX3N0YXRlLT5icykgfHwgcmVvcGVuX3N0YXRlLT5icy0+YmFja2lu Z19maWxlWzBdKSkgew0KPiArICAgICAgICAocmVvcGVuX3N0YXRlLT5icy0+YmFja2luZyB8fCBy ZW9wZW5fc3RhdGUtPmJzLT5iYWNraW5nX2ZpbGVbMF0pKSB7DQoNCmFuZCBpZiB3ZSBza2lwIGlt cGxpY2l0IGZpbHRlcnMgaW4gYmRydl9iYWNraW5nX2NoYWluX25leHQoKSwgc2hvdWxkbid0IHdl IHNraXAgdGhlbQ0KaGVyZSB0b28/DQoNCj4gICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgImJh Y2tpbmcgaXMgbWlzc2luZyBmb3IgJyVzJyIsDQo+ICAgICAgICAgICAgICAgICAgICAgIHJlb3Bl bl9zdGF0ZS0+YnMtPm5vZGVfbmFtZSk7DQo+ICAgICAgICAgICByZXQgPSAtRUlOVkFMOw0KPiBA QCAtMzc3OSw3ICszNzg0LDcgQEAgdm9pZCBiZHJ2X3Jlb3Blbl9jb21taXQoQkRSVlJlb3BlblN0 YXRlICpyZW9wZW5fc3RhdGUpDQo+ICAgICAgICAqIGZyb20gYmRydl9zZXRfYmFja2luZ19oZCgp KSBoYXMgdGhlIG5ldyB2YWx1ZXMuDQo+ICAgICAgICAqLw0KPiAgICAgICBpZiAocmVvcGVuX3N0 YXRlLT5yZXBsYWNlX2JhY2tpbmdfYnMpIHsNCj4gLSAgICAgICAgQmxvY2tEcml2ZXJTdGF0ZSAq b2xkX2JhY2tpbmdfYnMgPSBiYWNraW5nX2JzKGJzKTsNCj4gKyAgICAgICAgQmxvY2tEcml2ZXJT dGF0ZSAqb2xkX2JhY2tpbmdfYnMgPSBjaGlsZF9icyhicy0+YmFja2luZyk7DQo+ICAgICAgICAg ICBhc3NlcnQoIW9sZF9iYWNraW5nX2JzIHx8ICFvbGRfYmFja2luZ19icy0+aW1wbGljaXQpOw0K PiAgICAgICAgICAgLyogQWJvcnQgdGhlIHBlcm1pc3Npb24gdXBkYXRlIG9uIHRoZSBiYWNraW5n IGJzIHdlJ3JlIGRldGFjaGluZyAqLw0KPiAgICAgICAgICAgaWYgKG9sZF9iYWNraW5nX2JzKSB7 DQo+IEBAIC00MjAzLDggKzQyMDgsOCBAQCBpbnQgYmRydl9jaGFuZ2VfYmFja2luZ19maWxlKEJs b2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgIEJsb2NrRHJpdmVyU3RhdGUgKmJkcnZfZmluZF9vdmVy bGF5KEJsb2NrRHJpdmVyU3RhdGUgKmFjdGl2ZSwNCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpicykNCj4gICB7DQo+IC0gICAgd2hpbGUg KGFjdGl2ZSAmJiBicyAhPSBiYWNraW5nX2JzKGFjdGl2ZSkpIHsNCj4gLSAgICAgICAgYWN0aXZl ID0gYmFja2luZ19icyhhY3RpdmUpOw0KPiArICAgIHdoaWxlIChhY3RpdmUgJiYgYnMgIT0gYmRy dl9maWx0ZXJlZF9icyhhY3RpdmUpKSB7DQoNCm5lZWQgdG8gYWRqdXN0IGNvbW1lbnQgdG8gdGhl IGZ1bmN0aW9uIHRoZW4sIGFzIHdlIG1heSBmaW5kIGZpbGUtYmFzZWQtb3ZlcmxheSwgbm90IGJh Y2tpbmcuDQoNCj4gKyAgICAgICAgYWN0aXZlID0gYmRydl9maWx0ZXJlZF9icyhhY3RpdmUpOw0K PiAgICAgICB9DQo+ICAgDQo+ICAgICAgIHJldHVybiBhY3RpdmU7DQo+IEBAIC00MjI2LDExICs0 MjMxLDExIEBAIGJvb2wgYmRydl9pc19iYWNraW5nX2NoYWluX2Zyb3plbihCbG9ja0RyaXZlclN0 YXRlICpicywgQmxvY2tEcml2ZXJTdGF0ZSAqYmFzZSwNCj4gICB7DQo+ICAgICAgIEJsb2NrRHJp dmVyU3RhdGUgKmk7DQo+ICAgDQo+IC0gICAgZm9yIChpID0gYnM7IGkgIT0gYmFzZTsgaSA9IGJh Y2tpbmdfYnMoaSkpIHsNCj4gKyAgICBmb3IgKGkgPSBiczsgaSAhPSBiYXNlOyBpID0gY2hpbGRf YnMoaS0+YmFja2luZykpIHsNCj4gICAgICAgICAgIGlmIChpLT5iYWNraW5nICYmIGktPmJhY2tp bmctPmZyb3plbikgew0KPiAgICAgICAgICAgICAgIGVycm9yX3NldGcoZXJycCwgIkNhbm5vdCBj aGFuZ2UgJyVzJyBsaW5rIGZyb20gJyVzJyB0byAnJXMnIiwNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgIGktPmJhY2tpbmctPm5hbWUsIGktPm5vZGVfbmFtZSwNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgYmFja2luZ19icyhpKS0+bm9kZV9uYW1lKTsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgaS0+YmFja2luZy0+YnMtPm5vZGVfbmFtZSk7DQo+ICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7DQo+ICAgICAgICAgICB9DQo+ICAgICAgIH0NCj4gQEAgLTQyNTQsNyArNDI1OSw3IEBA IGludCBiZHJ2X2ZyZWV6ZV9iYWNraW5nX2NoYWluKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9j a0RyaXZlclN0YXRlICpiYXNlLA0KPiAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsNCj4gICAgICAg fQ0KPiAgIA0KPiAtICAgIGZvciAoaSA9IGJzOyBpICE9IGJhc2U7IGkgPSBiYWNraW5nX2JzKGkp KSB7DQo+ICsgICAgZm9yIChpID0gYnM7IGkgIT0gYmFzZTsgaSA9IGNoaWxkX2JzKGktPmJhY2tp bmcpKSB7DQo+ICAgICAgICAgICBpZiAoaS0+YmFja2luZykgew0KPiAgICAgICAgICAgICAgIGkt PmJhY2tpbmctPmZyb3plbiA9IHRydWU7DQo+ICAgICAgICAgICB9DQo+IEBAIC00MjcyLDcgKzQy NzcsNyBAQCB2b2lkIGJkcnZfdW5mcmVlemVfYmFja2luZ19jaGFpbihCbG9ja0RyaXZlclN0YXRl ICpicywgQmxvY2tEcml2ZXJTdGF0ZSAqYmFzZSkNCj4gICB7DQo+ICAgICAgIEJsb2NrRHJpdmVy U3RhdGUgKmk7DQo+ICAgDQo+IC0gICAgZm9yIChpID0gYnM7IGkgIT0gYmFzZTsgaSA9IGJhY2tp bmdfYnMoaSkpIHsNCj4gKyAgICBmb3IgKGkgPSBiczsgaSAhPSBiYXNlOyBpID0gY2hpbGRfYnMo aS0+YmFja2luZykpIHsNCj4gICAgICAgICAgIGlmIChpLT5iYWNraW5nKSB7DQo+ICAgICAgICAg ICAgICAgYXNzZXJ0KGktPmJhY2tpbmctPmZyb3plbik7DQo+ICAgICAgICAgICAgICAgaS0+YmFj a2luZy0+ZnJvemVuID0gZmFsc2U7DQo+IEBAIC00MzQyLDkgKzQzNDcsNyBAQCBpbnQgYmRydl9k cm9wX2ludGVybWVkaWF0ZShCbG9ja0RyaXZlclN0YXRlICp0b3AsIEJsb2NrRHJpdmVyU3RhdGUg KmJhc2UsDQo+ICAgICAgICAqIG90aGVyIGludGVybWVkaWF0ZSBub2RlcyBoYXZlIGJlZW4gZHJv cHBlZC4NCj4gICAgICAgICogSWYgJ3RvcCcgaXMgYW4gaW1wbGljaXQgbm9kZSAoZS5nLiAiY29t bWl0X3RvcCIpIHdlIHNob3VsZCBza2lwDQo+ICAgICAgICAqIGl0IGJlY2F1c2Ugbm8gb25lIGlu aGVyaXRzIGZyb20gaXQuIFdlIHVzZSBleHBsaWNpdF90b3AgZm9yIHRoYXQuICovDQo+IC0gICAg d2hpbGUgKGV4cGxpY2l0X3RvcCAmJiBleHBsaWNpdF90b3AtPmltcGxpY2l0KSB7DQo+IC0gICAg ICAgIGV4cGxpY2l0X3RvcCA9IGJhY2tpbmdfYnMoZXhwbGljaXRfdG9wKTsNCj4gLSAgICB9DQo+ ICsgICAgZXhwbGljaXRfdG9wID0gYmRydl9za2lwX2ltcGxpY2l0X2ZpbHRlcnMoZXhwbGljaXRf dG9wKTsNCj4gICAgICAgdXBkYXRlX2luaGVyaXRzX2Zyb20gPSBiZHJ2X2luaGVyaXRzX2Zyb21f cmVjdXJzaXZlKGJhc2UsIGV4cGxpY2l0X3RvcCk7DQo+ICAgDQo+ICAgICAgIC8qIHN1Y2Nlc3Mg LSB3ZSBjYW4gZGVsZXRlIHRoZSBpbnRlcm1lZGlhdGUgc3RhdGVzLCBhbmQgbGluayB0b3AtPmJh c2UgKi8NCj4gQEAgLTQ0OTQsMTAgKzQ0OTcsMTQgQEAgYm9vbCBiZHJ2X2lzX3NnKEJsb2NrRHJp dmVyU3RhdGUgKmJzKQ0KPiAgIA0KPiAgIGJvb2wgYmRydl9pc19lbmNyeXB0ZWQoQmxvY2tEcml2 ZXJTdGF0ZSAqYnMpDQo+ICAgew0KPiAtICAgIGlmIChicy0+YmFja2luZyAmJiBicy0+YmFja2lu Zy0+YnMtPmVuY3J5cHRlZCkgew0KPiArICAgIEJsb2NrRHJpdmVyU3RhdGUgKmZpbHRlcmVkID0g YmRydl9maWx0ZXJlZF9icyhicyk7DQo+ICsgICAgaWYgKGJzLT5lbmNyeXB0ZWQpIHsNCj4gKyAg ICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgfQ0KPiArICAgIGlmIChmaWx0ZXJlZCAmJiBiZHJ2 X2lzX2VuY3J5cHRlZChmaWx0ZXJlZCkpIHsNCj4gICAgICAgICAgIHJldHVybiB0cnVlOw0KPiAg ICAgICB9DQo+IC0gICAgcmV0dXJuIGJzLT5lbmNyeXB0ZWQ7DQo+ICsgICAgcmV0dXJuIGZhbHNl Ow0KPiAgIH0NCg0Kb25lIGJhY2tpbmcgY2hpbGQgLT4gcmVjdXJzaW9uIHRocm91Z2ggZXh0ZW5k ZWQgYmFja2luZyBjaGFpbg0KDQo+ICAgDQo+ICAgY29uc3QgY2hhciAqYmRydl9nZXRfZm9ybWF0 X25hbWUoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpDQo+IEBAIC00Nzk0LDcgKzQ4MDEsMjEgQEAgQmxv Y2tEcml2ZXJTdGF0ZSAqYmRydl9sb29rdXBfYnMoY29uc3QgY2hhciAqZGV2aWNlLA0KPiAgIGJv b2wgYmRydl9jaGFpbl9jb250YWlucyhCbG9ja0RyaXZlclN0YXRlICp0b3AsIEJsb2NrRHJpdmVy U3RhdGUgKmJhc2UpDQo+ICAgew0KPiAgICAgICB3aGlsZSAodG9wICYmIHRvcCAhPSBiYXNlKSB7 DQo+IC0gICAgICAgIHRvcCA9IGJhY2tpbmdfYnModG9wKTsNCj4gKyAgICAgICAgdG9wID0gYmRy dl9maWx0ZXJlZF9icyh0b3ApOw0KPiArICAgIH0NCj4gKw0KPiArICAgIHJldHVybiB0b3AgIT0g TlVMTDsNCj4gK30NCg0Kc3VwcG9ydCBmaWxlLWZpbHRlcnMNCg0KPiArDQo+ICsvKg0KPiArICog U2FtZSBhcyBiZHJ2X2NoYWluX2NvbnRhaW5zKCksIGJ1dCBza2lwIGltcGxpY2l0bHkgYWRkZWQg Ui9XIGZpbHRlcg0KPiArICogbm9kZXMgYW5kIGRvIG5vdCBtb3ZlIHBhc3QgZXhwbGljaXRseSBh ZGRlZCBSL1cgZmlsdGVycy4NCj4gKyAqLw0KPiArYm9vbCBiZHJ2X2xlZ2FjeV9jaGFpbl9jb250 YWlucyhCbG9ja0RyaXZlclN0YXRlICp0b3AsIEJsb2NrRHJpdmVyU3RhdGUgKmJhc2UpDQo+ICt7 DQo+ICsgICAgdG9wID0gYmRydl9za2lwX2ltcGxpY2l0X2ZpbHRlcnModG9wKTsNCj4gKyAgICB3 aGlsZSAodG9wICYmIHRvcCAhPSBiYXNlKSB7DQo+ICsgICAgICAgIHRvcCA9IGJkcnZfc2tpcF9p bXBsaWNpdF9maWx0ZXJzKGJkcnZfZmlsdGVyZWRfY293X2JzKHRvcCkpOw0KPiAgICAgICB9DQoN Cm9rDQoNCj4gICANCj4gICAgICAgcmV0dXJuIHRvcCAhPSBOVUxMOw0KPiBAQCAtNDg2NiwyMCAr NDg4NywyNCBAQCBpbnQgYmRydl9oYXNfemVyb19pbml0XzEoQmxvY2tEcml2ZXJTdGF0ZSAqYnMp DQo+ICAgDQo+ICAgaW50IGJkcnZfaGFzX3plcm9faW5pdChCbG9ja0RyaXZlclN0YXRlICpicykN Cj4gICB7DQo+ICsgICAgQmxvY2tEcml2ZXJTdGF0ZSAqZmlsdGVyZWQ7DQo+ICsNCj4gICAgICAg aWYgKCFicy0+ZHJ2KSB7DQo+ICAgICAgICAgICByZXR1cm4gMDsNCj4gICAgICAgfQ0KPiAgIA0K PiAgICAgICAvKiBJZiBCUyBpcyBhIGNvcHkgb24gd3JpdGUgaW1hZ2UsIGl0IGlzIGluaXRpYWxp emVkIHRvDQo+ICAgICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgYmFzZSBpbWFnZSwgd2hpY2gg bWF5IG5vdCBiZSB6ZXJvZXMuICAqLw0KPiAtICAgIGlmIChicy0+YmFja2luZykgew0KPiArICAg IGlmIChiZHJ2X2ZpbHRlcmVkX2Nvd19jaGlsZChicykpIHsNCj4gICAgICAgICAgIHJldHVybiAw Ow0KPiAgICAgICB9DQo+ICAgICAgIGlmIChicy0+ZHJ2LT5iZHJ2X2hhc196ZXJvX2luaXQpIHsN Cj4gICAgICAgICAgIHJldHVybiBicy0+ZHJ2LT5iZHJ2X2hhc196ZXJvX2luaXQoYnMpOw0KPiAg ICAgICB9DQo+IC0gICAgaWYgKGJzLT5maWxlICYmIGJzLT5kcnYtPmlzX2ZpbHRlcikgew0KPiAt ICAgICAgICByZXR1cm4gYmRydl9oYXNfemVyb19pbml0KGJzLT5maWxlLT5icyk7DQo+ICsNCj4g KyAgICBmaWx0ZXJlZCA9IGJkcnZfZmlsdGVyZWRfcndfYnMoYnMpOw0KPiArICAgIGlmIChmaWx0 ZXJlZCkgew0KPiArICAgICAgICByZXR1cm4gYmRydl9oYXNfemVyb19pbml0KGZpbHRlcmVkKTsN Cj4gICAgICAgfQ0KDQphZGQgcmVjdXJzaW9uIGZvciBmaWx0ZXJzDQoNCj4gICANCj4gICAgICAg Lyogc2FmZSBkZWZhdWx0ICovDQo+IEBAIC00ODkwLDcgKzQ5MTUsNyBAQCBib29sIGJkcnZfdW5h bGxvY2F0ZWRfYmxvY2tzX2FyZV96ZXJvKEJsb2NrRHJpdmVyU3RhdGUgKmJzKQ0KPiAgIHsNCj4g ICAgICAgQmxvY2tEcml2ZXJJbmZvIGJkaTsNCj4gICANCj4gLSAgICBpZiAoYnMtPmJhY2tpbmcp IHsNCj4gKyAgICBpZiAoYmRydl9maWx0ZXJlZF9jb3dfY2hpbGQoYnMpKSB7DQo+ICAgICAgICAg ICByZXR1cm4gZmFsc2U7DQo+ICAgICAgIH0NCj4gICANCj4gQEAgLTQ5MjQsOCArNDk0OSw5IEBA IGludCBiZHJ2X2dldF9pbmZvKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBCbG9ja0RyaXZlckluZm8g KmJkaSkNCj4gICAgICAgICAgIHJldHVybiAtRU5PTUVESVVNOw0KPiAgICAgICB9DQo+ICAgICAg IGlmICghZHJ2LT5iZHJ2X2dldF9pbmZvKSB7DQo+IC0gICAgICAgIGlmIChicy0+ZmlsZSAmJiBk cnYtPmlzX2ZpbHRlcikgew0KPiAtICAgICAgICAgICAgcmV0dXJuIGJkcnZfZ2V0X2luZm8oYnMt PmZpbGUtPmJzLCBiZGkpOw0KPiArICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpmaWx0ZXJlZCA9 IGJkcnZfZmlsdGVyZWRfcndfYnMoYnMpOw0KPiArICAgICAgICBpZiAoZmlsdGVyZWQpIHsNCj4g KyAgICAgICAgICAgIHJldHVybiBiZHJ2X2dldF9pbmZvKGZpbHRlcmVkLCBiZGkpOw0KPiAgICAg ICAgICAgfQ0KPiAgICAgICAgICAgcmV0dXJuIC1FTk9UU1VQOw0KPiAgICAgICB9DQo+IEBAIC01 MDI4LDcgKzUwNTQsMTcgQEAgQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9maW5kX2JhY2tpbmdfaW1h Z2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgDQo+ICAgICAgIGlzX3Byb3RvY29sID0gcGF0 aF9oYXNfcHJvdG9jb2woYmFja2luZ19maWxlKTsNCj4gICANCj4gLSAgICBmb3IgKGN1cnJfYnMg PSBiczsgY3Vycl9icy0+YmFja2luZzsgY3Vycl9icyA9IGN1cnJfYnMtPmJhY2tpbmctPmJzKSB7 DQo+ICsgICAgLyoNCj4gKyAgICAgKiBCZWluZyBsYXJnZWx5IGEgbGVnYWN5IGZ1bmN0aW9uLCBz a2lwIGFueSBmaWx0ZXJzIGhlcmUNCj4gKyAgICAgKiAoYmVjYXVzZSBmaWx0ZXJzIGRvIG5vdCBo YXZlIG5vcm1hbCBmaWxlbmFtZXMsIHNvIHRoZXkgY2Fubm90DQo+ICsgICAgICogbWF0Y2ggYW55 d2F5OyBhbmQgYWxsb3dpbmcganNvbjp7fSBmaWxlbmFtZXMgaXMgYSBiaXQgb3V0IG9mDQo+ICsg ICAgICogc2NvcGUpLg0KPiArICAgICAqLw0KPiArICAgIGZvciAoY3Vycl9icyA9IGJkcnZfc2tp cF9yd19maWx0ZXJzKGJzKTsNCj4gKyAgICAgICAgIGJkcnZfZmlsdGVyZWRfY293X2NoaWxkKGN1 cnJfYnMpICE9IE5VTEw7DQo+ICsgICAgICAgICBjdXJyX2JzID0gYmRydl9iYWNraW5nX2NoYWlu X25leHQoY3Vycl9icykpDQo+ICsgICAgew0KPiArICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpi c19iZWxvdyA9IGJkcnZfYmFja2luZ19jaGFpbl9uZXh0KGN1cnJfYnMpOw0KPiAgIA0KPiAgICAg ICAgICAgLyogSWYgZWl0aGVyIG9mIHRoZSBmaWxlbmFtZSBwYXRocyBpcyBhY3R1YWxseSBhIHBy b3RvY29sLCB0aGVuDQo+ICAgICAgICAgICAgKiBjb21wYXJlIHVubW9kaWZpZWQgcGF0aHM7IG90 aGVyd2lzZSBtYWtlIHBhdGhzIHJlbGF0aXZlICovDQo+IEBAIC01MDM2LDcgKzUwNzIsNyBAQCBC bG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbmRfYmFja2luZ19pbWFnZShCbG9ja0RyaXZlclN0YXRl ICpicywNCj4gICAgICAgICAgICAgICBjaGFyICpiYWNraW5nX2ZpbGVfZnVsbF9yZXQ7DQo+ICAg DQo+ICAgICAgICAgICAgICAgaWYgKHN0cmNtcChiYWNraW5nX2ZpbGUsIGN1cnJfYnMtPmJhY2tp bmdfZmlsZSkgPT0gMCkgew0KPiAtICAgICAgICAgICAgICAgIHJldHZhbCA9IGN1cnJfYnMtPmJh Y2tpbmctPmJzOw0KPiArICAgICAgICAgICAgICAgIHJldHZhbCA9IGJzX2JlbG93Ow0KPiAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAgICAg LyogQWxzbyBjaGVjayBhZ2FpbnN0IHRoZSBmdWxsIGJhY2tpbmcgZmlsZW5hbWUgZm9yIHRoZSBp bWFnZSAqLw0KPiBAQCAtNTA0Niw3ICs1MDgyLDcgQEAgQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9m aW5kX2JhY2tpbmdfaW1hZ2UoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgICAgICAgICAgICAg ICAgIGJvb2wgZXF1YWwgPSBzdHJjbXAoYmFja2luZ19maWxlLCBiYWNraW5nX2ZpbGVfZnVsbF9y ZXQpID09IDA7DQo+ICAgICAgICAgICAgICAgICAgIGdfZnJlZShiYWNraW5nX2ZpbGVfZnVsbF9y ZXQpOw0KPiAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWwpIHsNCj4gLSAgICAgICAgICAgICAg ICAgICAgcmV0dmFsID0gY3Vycl9icy0+YmFja2luZy0+YnM7DQo+ICsgICAgICAgICAgICAgICAg ICAgIHJldHZhbCA9IGJzX2JlbG93Ow0KPiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ICAgICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgICAgICB9DQo+IEBAIC01MDcyLDcgKzUx MDgsNyBAQCBCbG9ja0RyaXZlclN0YXRlICpiZHJ2X2ZpbmRfYmFja2luZ19pbWFnZShCbG9ja0Ry aXZlclN0YXRlICpicywNCj4gICAgICAgICAgICAgICBnX2ZyZWUoZmlsZW5hbWVfdG1wKTsNCj4g ICANCj4gICAgICAgICAgICAgICBpZiAoc3RyY21wKGJhY2tpbmdfZmlsZV9mdWxsLCBmaWxlbmFt ZV9mdWxsKSA9PSAwKSB7DQo+IC0gICAgICAgICAgICAgICAgcmV0dmFsID0gY3Vycl9icy0+YmFj a2luZy0+YnM7DQo+ICsgICAgICAgICAgICAgICAgcmV0dmFsID0gYnNfYmVsb3c7DQo+ICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAgIH0NCj4g QEAgLTYyMzcsMyArNjI3MywxMDcgQEAgYm9vbCBiZHJ2X2Nhbl9zdG9yZV9uZXdfZGlydHlfYml0 bWFwKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBjb25zdCBjaGFyICpuYW1lLA0KPiAgIA0KPiAgICAg ICByZXR1cm4gZHJ2LT5iZHJ2X2Nhbl9zdG9yZV9uZXdfZGlydHlfYml0bWFwKGJzLCBuYW1lLCBn cmFudWxhcml0eSwgZXJycCk7DQo+ICAgfQ0KPiArDQo+ICsvKg0KPiArICogUmV0dXJuIHRoZSBj aGlsZCB0aGF0IEBicyBhY3RzIGFzIGFuIG92ZXJsYXkgZm9yLCBhbmQgZnJvbSB3aGljaCBkYXRh IG1heSBiZQ0KPiArICogY29waWVkIGluIENPVyBvciBDT1Igb3BlcmF0aW9ucy4gIFVzdWFsbHkg dGhpcyBpcyB0aGUgYmFja2luZyBmaWxlLg0KPiArICovDQo+ICtCZHJ2Q2hpbGQgKmJkcnZfZmls dGVyZWRfY293X2NoaWxkKEJsb2NrRHJpdmVyU3RhdGUgKmJzKQ0KPiArew0KPiArICAgIGlmICgh YnMgfHwgIWJzLT5kcnYpIHsNCj4gKyAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICsgICAgfQ0KPiAr DQo+ICsgICAgaWYgKGJzLT5kcnYtPmlzX2ZpbHRlcikgew0KPiArICAgICAgICByZXR1cm4gTlVM TDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gYnMtPmJhY2tpbmc7DQo+ICt9DQo+ICsN Cj4gKy8qDQo+ICsgKiBJZiBAYnMgYWN0cyBhcyBhIHBhc3MtdGhyb3VnaCBmaWx0ZXIgZm9yIG9u ZSBvZiBpdHMgY2hpbGRyZW4sDQo+ICsgKiByZXR1cm4gdGhhdCBjaGlsZC4gICJQYXNzLXRocm91 Z2giIG1lYW5zIHRoYXQgd3JpdGUgb3BlcmF0aW9ucyB0bw0KPiArICogQGJzIGFyZSBmb3J3YXJk ZWQgdG8gdGhhdCBjaGlsZCBpbnN0ZWFkIG9mIHRyaWdnZXJpbmcgQ09XLg0KPiArICovDQo+ICtC ZHJ2Q2hpbGQgKmJkcnZfZmlsdGVyZWRfcndfY2hpbGQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpDQo+ ICt7DQo+ICsgICAgaWYgKCFicyB8fCAhYnMtPmRydikgew0KPiArICAgICAgICByZXR1cm4gTlVM TDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICBpZiAoIWJzLT5kcnYtPmlzX2ZpbHRlcikgew0KPiAr ICAgICAgICByZXR1cm4gTlVMTDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICByZXR1cm4gYnMtPmJh Y2tpbmcgPzogYnMtPmZpbGU7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBSZXR1cm4gYW55IGZp bHRlcmVkIGNoaWxkLCBpbmRlcGVuZGVudGx5IG9mIGhvdyBpdCByZWFjdHMgdG8gd3JpdGUNCj4g KyAqIGFjY2Vzc2VzIGFuZCB3aGV0aGVyIGRhdGEgaXMgY29waWVkIG9udG8gdGhpcyBCRFMgdGhy b3VnaCBDT1IuDQo+ICsgKi8NCj4gK0JkcnZDaGlsZCAqYmRydl9maWx0ZXJlZF9jaGlsZChCbG9j a0RyaXZlclN0YXRlICpicykNCj4gK3sNCj4gKyAgICBCZHJ2Q2hpbGQgKmNvd19jaGlsZCA9IGJk cnZfZmlsdGVyZWRfY293X2NoaWxkKGJzKTsNCj4gKyAgICBCZHJ2Q2hpbGQgKnJ3X2NoaWxkID0g YmRydl9maWx0ZXJlZF9yd19jaGlsZChicyk7DQo+ICsNCj4gKyAgICAvKiBUaGVyZSBjYW4gb25s eSBiZSBvbmUgZmlsdGVyZWQgY2hpbGQgYXQgYSB0aW1lICovDQo+ICsgICAgYXNzZXJ0KCEoY293 X2NoaWxkICYmIHJ3X2NoaWxkKSk7DQo+ICsNCj4gKyAgICByZXR1cm4gY293X2NoaWxkID86IHJ3 X2NoaWxkOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgQmxvY2tEcml2ZXJTdGF0ZSAqYmRydl9za2lw X2ZpbHRlcnMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdG9wX29uX2V4cGxpY2l0X2ZpbHRlcikNCj4gK3sN Cj4gKyAgICBCZHJ2Q2hpbGQgKmZpbHRlcmVkOw0KPiArDQo+ICsgICAgaWYgKCFicykgew0KPiAr ICAgICAgICByZXR1cm4gTlVMTDsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICB3aGlsZSAoIShzdG9w X29uX2V4cGxpY2l0X2ZpbHRlciAmJiAhYnMtPmltcGxpY2l0KSkgew0KPiArICAgICAgICBmaWx0 ZXJlZCA9IGJkcnZfZmlsdGVyZWRfcndfY2hpbGQoYnMpOw0KPiArICAgICAgICBpZiAoIWZpbHRl cmVkKSB7DQo+ICsgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgfQ0KPiArICAgICAgICBi cyA9IGZpbHRlcmVkLT5iczsNCj4gKyAgICB9DQo+ICsgICAgLyoNCj4gKyAgICAgKiBOb3RlIHRo YXQgdGhpcyB0cmVhdHMgbm9kZXMgd2l0aCBicy0+ZHJ2ID09IE5VTEwgYXMgbm90IGJlaW5nDQo+ ICsgICAgICogUi9XIGZpbHRlcnMgKGJzLT5kcnYgPT0gTlVMTCBzaG91bGQgYmUgcmVwbGFjZWQg Ynkgc29tZXRoaW5nDQo+ICsgICAgICogZWxzZSBhbnl3YXkpLg0KPiArICAgICAqIFRoZSBhZHZh bnRhZ2Ugb2YgdGhpcyBiZWhhdmlvciBpcyB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCB0aHVzDQo+ ICsgICAgICogYWx3YXlzIHJldHVybiBhIG5vbi1OVUxMIHZhbHVlIChnaXZlbiBhIG5vbi1OVUxM IEBicykuDQo+ICsgICAgICovDQo+ICsNCj4gKyAgICByZXR1cm4gYnM7DQo+ICt9DQo+ICsNCj4g Ky8qDQo+ICsgKiBSZXR1cm4gdGhlIGZpcnN0IEJEUyB0aGF0IGhhcyBub3QgYmVlbiBhZGRlZCBp bXBsaWNpdGx5IG9yIHRoYXQNCj4gKyAqIGRvZXMgbm90IGhhdmUgYW4gUlctZmlsdGVyZWQgY2hp bGQgZG93biB0aGUgY2hhaW4gc3RhcnRpbmcgZnJvbSBAYnMNCj4gKyAqIChpbmNsdWRpbmcgQGJz IGl0c2VsZikuDQo+ICsgKi8NCj4gK0Jsb2NrRHJpdmVyU3RhdGUgKmJkcnZfc2tpcF9pbXBsaWNp dF9maWx0ZXJzKEJsb2NrRHJpdmVyU3RhdGUgKmJzKQ0KPiArew0KPiArICAgIHJldHVybiBiZHJ2 X3NraXBfZmlsdGVycyhicywgdHJ1ZSk7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBSZXR1cm4g dGhlIGZpcnN0IEJEUyB0aGF0IGRvZXMgbm90IGhhdmUgYW4gUlctZmlsdGVyZWQgY2hpbGQgZG93 bg0KPiArICogdGhlIGNoYWluIHN0YXJ0aW5nIGZyb20gQGJzIChpbmNsdWRpbmcgQGJzIGl0c2Vs ZikuDQo+ICsgKi8NCj4gK0Jsb2NrRHJpdmVyU3RhdGUgKmJkcnZfc2tpcF9yd19maWx0ZXJzKEJs b2NrRHJpdmVyU3RhdGUgKmJzKQ0KPiArew0KPiArICAgIHJldHVybiBiZHJ2X3NraXBfZmlsdGVy cyhicywgZmFsc2UpOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogRm9yIGEgYmFja2luZyBjaGFp biwgcmV0dXJuIHRoZSBmaXJzdCBub24tZmlsdGVyIGJhY2tpbmcgaW1hZ2UuDQo+ICsgKi8NCj4g K0Jsb2NrRHJpdmVyU3RhdGUgKmJkcnZfYmFja2luZ19jaGFpbl9uZXh0KEJsb2NrRHJpdmVyU3Rh dGUgKmJzKQ0KPiArew0KPiArICAgIHJldHVybiBiZHJ2X3NraXBfcndfZmlsdGVycyhiZHJ2X2Zp bHRlcmVkX2Nvd19icyhiZHJ2X3NraXBfcndfZmlsdGVycyhicykpKTsNCj4gK30NCj4gZGlmZiAt LWdpdCBhL2Jsb2NrL2JhY2t1cC5jIGIvYmxvY2svYmFja3VwLmMNCj4gaW5kZXggOTk4ODc1MzI0 OS4uOWMwODM1M2IyMyAxMDA2NDQNCj4gLS0tIGEvYmxvY2svYmFja3VwLmMNCj4gKysrIGIvYmxv Y2svYmFja3VwLmMNCj4gQEAgLTU3Nyw2ICs1NzcsNyBAQCBCbG9ja0pvYiAqYmFja3VwX2pvYl9j cmVhdGUoY29uc3QgY2hhciAqam9iX2lkLCBCbG9ja0RyaXZlclN0YXRlICpicywNCj4gICAgICAg aW50NjRfdCBsZW47DQo+ICAgICAgIEJsb2NrRHJpdmVySW5mbyBiZGk7DQo+ICAgICAgIEJhY2t1 cEJsb2NrSm9iICpqb2IgPSBOVUxMOw0KPiArICAgIGJvb2wgdGFyZ2V0X2RvZXNfY293Ow0KPiAg ICAgICBpbnQgcmV0Ow0KPiAgIA0KPiAgICAgICBhc3NlcnQoYnMpOw0KPiBAQCAtNjcxLDggKzY3 Miw5IEBAIEJsb2NrSm9iICpiYWNrdXBfam9iX2NyZWF0ZShjb25zdCBjaGFyICpqb2JfaWQsIEJs b2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgICAgICAvKiBJZiB0aGVyZSBpcyBubyBiYWNraW5nIGZp bGUgb24gdGhlIHRhcmdldCwgd2UgY2Fubm90IHJlbHkgb24gQ09XIGlmIG91cg0KPiAgICAgICAg KiBiYWNrdXAgY2x1c3RlciBzaXplIGlzIHNtYWxsZXIgdGhhbiB0aGUgdGFyZ2V0IGNsdXN0ZXIg c2l6ZS4gRXZlbiBmb3INCj4gICAgICAgICogdGFyZ2V0cyB3aXRoIGEgYmFja2luZyBmaWxlLCB0 cnkgdG8gYXZvaWQgQ09XIGlmIHBvc3NpYmxlLiAqLw0KPiArICAgIHRhcmdldF9kb2VzX2NvdyA9 IGJkcnZfZmlsdGVyZWRfY293X2NoaWxkKHRhcmdldCk7DQoNClNvLCB5b3UgZXhjbHVkZWQgZmFs c2UtcG9zaXRpdmUgY2FzZSB3aGVuIHRhcmdldCBpcyBiYWNraW5nLWZpbHRlci4gSSB0aGluaywg d2UnZCBiZXR0ZXIgc2tpcA0KZmlsdGVycyBoZXJlOg0KDQp0YXJnZXRfZG9lc19jb3cgPSBiZHJ2 X2ZpbHRlcmVkX2Nvd19jaGlsZChiZHJ2X3NraXBfcndfZmlsdGVycyh0YXJnZXQpKQ0KDQo+ICAg ICAgIHJldCA9IGJkcnZfZ2V0X2luZm8odGFyZ2V0LCAmYmRpKTsNCj4gLSAgICBpZiAocmV0ID09 IC1FTk9UU1VQICYmICF0YXJnZXQtPmJhY2tpbmcpIHsNCj4gKyAgICBpZiAocmV0ID09IC1FTk9U U1VQICYmICF0YXJnZXRfZG9lc19jb3cpIHsNCj4gICAgICAgICAgIC8qIENsdXN0ZXIgc2l6ZSBp cyBub3QgZGVmaW5lZCAqLw0KPiAgICAgICAgICAgd2Fybl9yZXBvcnQoIlRoZSB0YXJnZXQgYmxv Y2sgZGV2aWNlIGRvZXNuJ3QgcHJvdmlkZSAiDQo+ICAgICAgICAgICAgICAgICAgICAgICAiaW5m b3JtYXRpb24gYWJvdXQgdGhlIGJsb2NrIHNpemUgYW5kIGl0IGRvZXNuJ3QgaGF2ZSBhICINCj4g QEAgLTY4MSwxNCArNjgzLDE0IEBAIEJsb2NrSm9iICpiYWNrdXBfam9iX2NyZWF0ZShjb25zdCBj aGFyICpqb2JfaWQsIEJsb2NrRHJpdmVyU3RhdGUgKmJzLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgInRoaXMgZGVmYXVsdCwgdGhlIGJhY2t1cCBtYXkgYmUgdW51c2FibGUiLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgQkFDS1VQX0NMVVNURVJfU0laRV9ERUZBVUxUKTsNCj4gICAgICAgICAg IGpvYi0+Y2x1c3Rlcl9zaXplID0gQkFDS1VQX0NMVVNURVJfU0laRV9ERUZBVUxUOw0KPiAtICAg IH0gZWxzZSBpZiAocmV0IDwgMCAmJiAhdGFyZ2V0LT5iYWNraW5nKSB7DQo+ICsgICAgfSBlbHNl IGlmIChyZXQgPCAwICYmICF0YXJnZXRfZG9lc19jb3cpIHsNCj4gICAgICAgICAgIGVycm9yX3Nl dGdfZXJybm8oZXJycCwgLXJldCwNCj4gICAgICAgICAgICAgICAiQ291bGRuJ3QgZGV0ZXJtaW5l IHRoZSBjbHVzdGVyIHNpemUgb2YgdGhlIHRhcmdldCBpbWFnZSwgIg0KPiAgICAgICAgICAgICAg ICJ3aGljaCBoYXMgbm8gYmFja2luZyBmaWxlIik7DQo+ICAgICAgICAgICBlcnJvcl9hcHBlbmRf aGludChlcnJwLA0KPiAgICAgICAgICAgICAgICJBYm9ydGluZywgc2luY2UgdGhpcyBtYXkgY3Jl YXRlIGFuIHVudXNhYmxlIGRlc3RpbmF0aW9uIGltYWdlXG4iKTsNCj4gICAgICAgICAgIGdvdG8g ZXJyb3I7DQo+IC0gICAgfSBlbHNlIGlmIChyZXQgPCAwICYmIHRhcmdldC0+YmFja2luZykgew0K PiArICAgIH0gZWxzZSBpZiAocmV0IDwgMCAmJiB0YXJnZXRfZG9lc19jb3cpIHsNCj4gICAgICAg ICAgIC8qIE5vdCBmYXRhbDsganVzdCB0cnVkZ2Ugb24gYWhlYWQuICovDQo+ICAgICAgICAgICBq b2ItPmNsdXN0ZXJfc2l6ZSA9IEJBQ0tVUF9DTFVTVEVSX1NJWkVfREVGQVVMVDsNCj4gICAgICAg fSBlbHNlIHsNCj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsb2NrLWJhY2tlbmQuYyBiL2Jsb2NrL2Js b2NrLWJhY2tlbmQuYw0KPiBpbmRleCBmNzhlODJhNzA3Li5hYTlhMWQ4NGE2IDEwMDY0NA0KPiAt LS0gYS9ibG9jay9ibG9jay1iYWNrZW5kLmMNCj4gKysrIGIvYmxvY2svYmxvY2stYmFja2VuZC5j DQo+IEBAIC0yMDg5LDExICsyMDg5LDE3IEBAIGludCBibGtfY29tbWl0X2FsbCh2b2lkKQ0KPiAg ICAgICAgICAgQWlvQ29udGV4dCAqYWlvX2NvbnRleHQgPSBibGtfZ2V0X2Fpb19jb250ZXh0KGJs ayk7DQo+ICAgDQo+ICAgICAgICAgICBhaW9fY29udGV4dF9hY3F1aXJlKGFpb19jb250ZXh0KTsN Cj4gLSAgICAgICAgaWYgKGJsa19pc19pbnNlcnRlZChibGspICYmIGJsay0+cm9vdC0+YnMtPmJh Y2tpbmcpIHsNCj4gLSAgICAgICAgICAgIGludCByZXQgPSBiZHJ2X2NvbW1pdChibGstPnJvb3Qt PmJzKTsNCj4gLSAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+IC0gICAgICAgICAgICAgICAg YWlvX2NvbnRleHRfcmVsZWFzZShhaW9fY29udGV4dCk7DQo+IC0gICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsNCj4gKyAgICAgICAgaWYgKGJsa19pc19pbnNlcnRlZChibGspKSB7DQo+ICsgICAg ICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpub25fZmlsdGVyOw0KPiArDQo+ICsgICAgICAgICAg ICAvKiBMZWdhY3kgZnVuY3Rpb24sIHNvIHNraXAgaW1wbGljaXQgZmlsdGVycyAqLw0KPiArICAg ICAgICAgICAgbm9uX2ZpbHRlciA9IGJkcnZfc2tpcF9pbXBsaWNpdF9maWx0ZXJzKGJsay0+cm9v dC0+YnMpOw0KPiArICAgICAgICAgICAgaWYgKGJkcnZfZmlsdGVyZWRfY293X2NoaWxkKG5vbl9m aWx0ZXIpKSB7DQo+ICsgICAgICAgICAgICAgICAgaW50IHJldCA9IGJkcnZfY29tbWl0KG5vbl9m aWx0ZXIpOw0KPiArICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgIGFpb19jb250ZXh0X3JlbGVhc2UoYWlvX2NvbnRleHQpOw0KPiArICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgICAgICAgICAgIH0NCj4gICAgICAgICAg ICAgICB9DQo+ICAgICAgICAgICB9DQo+ICAgICAgICAgICBhaW9fY29udGV4dF9yZWxlYXNlKGFp b19jb250ZXh0KTsNCj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2NvbW1pdC5jIGIvYmxvY2svY29tbWl0 LmMNCj4gaW5kZXggMDJlYWIzNDkyNS4uMjUyMDA3ZmQ1NyAxMDA2NDQNCj4gLS0tIGEvYmxvY2sv Y29tbWl0LmMNCj4gKysrIGIvYmxvY2svY29tbWl0LmMNCj4gQEAgLTExMyw3ICsxMTMsNyBAQCBz dGF0aWMgdm9pZCBjb21taXRfYWJvcnQoSm9iICpqb2IpDQo+ICAgICAgICAqIHNvbWV0aGluZyB0 byBiYXNlLCB0aGUgaW50ZXJtZWRpYXRlIGltYWdlcyBhcmVuJ3QgdmFsaWQgYW55IG1vcmUuICov DQo+ICAgICAgIGJkcnZfY2hpbGRfdHJ5X3NldF9wZXJtKHMtPmNvbW1pdF90b3BfYnMtPmJhY2tp bmcsIDAsIEJMS19QRVJNX0FMTCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVy cm9yX2Fib3J0KTsNCj4gLSAgICBiZHJ2X3JlcGxhY2Vfbm9kZShzLT5jb21taXRfdG9wX2JzLCBi YWNraW5nX2JzKHMtPmNvbW1pdF90b3BfYnMpLA0KPiArICAgIGJkcnZfcmVwbGFjZV9ub2RlKHMt PmNvbW1pdF90b3BfYnMsIHMtPmNvbW1pdF90b3BfYnMtPmJhY2tpbmctPmJzLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAmZXJyb3JfYWJvcnQpOw0KPiAgIA0KPiAgICAgICBiZHJ2X3VucmVm KHMtPmNvbW1pdF90b3BfYnMpOw0KPiBAQCAtMzI0LDEwICszMjQsMTYgQEAgdm9pZCBjb21taXRf c3RhcnQoY29uc3QgY2hhciAqam9iX2lkLCBCbG9ja0RyaXZlclN0YXRlICpicywNCj4gICAgICAg cy0+Y29tbWl0X3RvcF9icyA9IGNvbW1pdF90b3BfYnM7DQo+ICAgICAgIGJkcnZfdW5yZWYoY29t bWl0X3RvcF9icyk7DQo+ICAgDQo+IC0gICAgLyogQmxvY2sgYWxsIG5vZGVzIGJldHdlZW4gdG9w IGFuZCBiYXNlLCBiZWNhdXNlIHRoZXkgd2lsbA0KPiAtICAgICAqIGRpc2FwcGVhciBmcm9tIHRo ZSBjaGFpbiBhZnRlciB0aGlzIG9wZXJhdGlvbi4gKi8NCj4gKyAgICAvKg0KPiArICAgICAqIEJs b2NrIGFsbCBub2RlcyBiZXR3ZWVuIHRvcCBhbmQgYmFzZSwgYmVjYXVzZSB0aGV5IHdpbGwNCj4g KyAgICAgKiBkaXNhcHBlYXIgZnJvbSB0aGUgY2hhaW4gYWZ0ZXIgdGhpcyBvcGVyYXRpb24uDQo+ ICsgICAgICogTm90ZSB0aGF0IHRoaXMgYXNzdW1lcyB0aGF0IHRoZSB1c2VyIGlzIGZpbmUgd2l0 aCByZW1vdmluZyBhbGwNCj4gKyAgICAgKiBub2RlcyAoaW5jbHVkaW5nIFIvVyBmaWx0ZXJzKSBi ZXR3ZWVuIHRvcCBhbmQgYmFzZS4gIEFzc3VyaW5nDQo+ICsgICAgICogdGhpcyBpcyB0aGUgcmVz cG9uc2liaWxpdHkgb2YgdGhlIGludGVyZmFjZSAoaS5lLiB3aG9ldmVyIGNhbGxzDQo+ICsgICAg ICogY29tbWl0X3N0YXJ0KCkpLg0KPiArICAgICAqLw0KPiAgICAgICBhc3NlcnQoYmRydl9jaGFp bl9jb250YWlucyh0b3AsIGJhc2UpKTsNCj4gLSAgICBmb3IgKGl0ZXIgPSB0b3A7IGl0ZXIgIT0g YmFzZTsgaXRlciA9IGJhY2tpbmdfYnMoaXRlcikpIHsNCj4gKyAgICBmb3IgKGl0ZXIgPSB0b3A7 IGl0ZXIgIT0gYmFzZTsgaXRlciA9IGJkcnZfZmlsdGVyZWRfYnMoaXRlcikpIHsNCj4gICAgICAg ICAgIC8qIFhYWCBCTEtfUEVSTV9XUklURSBuZWVkcyB0byBiZSBhbGxvd2VkIHNvIHdlIGRvbid0 IGJsb2NrIG91cnNlbHZlcw0KPiAgICAgICAgICAgICogYXQgcy0+YmFzZSAoaWYgd3JpdGVzIGFy ZSBibG9ja2VkIGZvciBhIG5vZGUsIHRoZXkgYXJlIGFsc28gYmxvY2tlZA0KPiAgICAgICAgICAg ICogZm9yIGl0cyBiYWNraW5nIGZpbGUpLiBUaGUgb3RoZXIgb3B0aW9ucyB3b3VsZCBiZSBhIHNl Y29uZCBmaWx0ZXINCj4gQEAgLTQxNCwxOSArNDIwLDIyIEBAIGludCBiZHJ2X2NvbW1pdChCbG9j a0RyaXZlclN0YXRlICpicykNCj4gICAgICAgaWYgKCFkcnYpDQo+ICAgICAgICAgICByZXR1cm4g LUVOT01FRElVTTsNCj4gICANCj4gLSAgICBpZiAoIWJzLT5iYWNraW5nKSB7DQo+ICsgICAgYmFj a2luZ19maWxlX2JzID0gYmRydl9maWx0ZXJlZF9jb3dfYnMoYnMpOw0KPiArDQo+ICsgICAgaWYg KCFiYWNraW5nX2ZpbGVfYnMpIHsNCj4gICAgICAgICAgIHJldHVybiAtRU5PVFNVUDsNCj4gICAg ICAgfQ0KPiAgIA0KPiAgICAgICBpZiAoYmRydl9vcF9pc19ibG9ja2VkKGJzLCBCTE9DS19PUF9U WVBFX0NPTU1JVF9TT1VSQ0UsIE5VTEwpIHx8DQo+IC0gICAgICAgIGJkcnZfb3BfaXNfYmxvY2tl ZChicy0+YmFja2luZy0+YnMsIEJMT0NLX09QX1RZUEVfQ09NTUlUX1RBUkdFVCwgTlVMTCkpIHsN Cj4gKyAgICAgICAgYmRydl9vcF9pc19ibG9ja2VkKGJhY2tpbmdfZmlsZV9icywgQkxPQ0tfT1Bf VFlQRV9DT01NSVRfVEFSR0VULCBOVUxMKSkNCj4gKyAgICB7DQo+ICAgICAgICAgICByZXR1cm4g LUVCVVNZOw0KPiAgICAgICB9DQo+ICAgDQo+IC0gICAgcm8gPSBicy0+YmFja2luZy0+YnMtPnJl YWRfb25seTsNCj4gKyAgICBybyA9IGJhY2tpbmdfZmlsZV9icy0+cmVhZF9vbmx5Ow0KPiAgIA0K PiAgICAgICBpZiAocm8pIHsNCj4gLSAgICAgICAgaWYgKGJkcnZfcmVvcGVuX3NldF9yZWFkX29u bHkoYnMtPmJhY2tpbmctPmJzLCBmYWxzZSwgTlVMTCkpIHsNCj4gKyAgICAgICAgaWYgKGJkcnZf cmVvcGVuX3NldF9yZWFkX29ubHkoYmFja2luZ19maWxlX2JzLCBmYWxzZSwgTlVMTCkpIHsNCj4g ICAgICAgICAgICAgICByZXR1cm4gLUVBQ0NFUzsNCj4gICAgICAgICAgIH0NCj4gICAgICAgfQ0K PiBAQCAtNDQxLDggKzQ1MCw2IEBAIGludCBiZHJ2X2NvbW1pdChCbG9ja0RyaXZlclN0YXRlICpi cykNCj4gICAgICAgfQ0KPiAgIA0KPiAgICAgICAvKiBJbnNlcnQgY29tbWl0X3RvcCBibG9jayBu b2RlIGFib3ZlIGJhY2tpbmcsIHNvIHdlIGNhbiB3cml0ZSB0byBpdCAqLw0KPiAtICAgIGJhY2tp bmdfZmlsZV9icyA9IGJhY2tpbmdfYnMoYnMpOw0KPiAtDQo+ICAgICAgIGNvbW1pdF90b3BfYnMg PSBiZHJ2X25ld19vcGVuX2RyaXZlcigmYmRydl9jb21taXRfdG9wLCBOVUxMLCBCRFJWX09fUkRX UiwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9l cnIpOw0KPiAgICAgICBpZiAoY29tbWl0X3RvcF9icyA9PSBOVUxMKSB7DQo+IEBAIC01MjgsMTUg KzUzNSwxMyBAQCByb19jbGVhbnVwOg0KPiAgICAgICBxZW11X3ZmcmVlKGJ1Zik7DQo+ICAgDQo+ ICAgICAgIGJsa191bnJlZihiYWNraW5nKTsNCj4gLSAgICBpZiAoYmFja2luZ19maWxlX2JzKSB7 DQo+IC0gICAgICAgIGJkcnZfc2V0X2JhY2tpbmdfaGQoYnMsIGJhY2tpbmdfZmlsZV9icywgJmVy cm9yX2Fib3J0KTsNCj4gLSAgICB9DQo+ICsgICAgYmRydl9zZXRfYmFja2luZ19oZChicywgYmFj a2luZ19maWxlX2JzLCAmZXJyb3JfYWJvcnQpOw0KPiAgICAgICBiZHJ2X3VucmVmKGNvbW1pdF90 b3BfYnMpOw0KPiAgICAgICBibGtfdW5yZWYoc3JjKTsNCj4gICANCj4gICAgICAgaWYgKHJvKSB7 DQo+ICAgICAgICAgICAvKiBpZ25vcmluZyBlcnJvciByZXR1cm4gaGVyZSAqLw0KPiAtICAgICAg ICBiZHJ2X3Jlb3Blbl9zZXRfcmVhZF9vbmx5KGJzLT5iYWNraW5nLT5icywgdHJ1ZSwgTlVMTCk7 DQo+ICsgICAgICAgIGJkcnZfcmVvcGVuX3NldF9yZWFkX29ubHkoYmFja2luZ19maWxlX2JzLCB0 cnVlLCBOVUxMKTsNCj4gICAgICAgfQ0KPiAgIA0KPiAgICAgICByZXR1cm4gcmV0Ow0KPiBkaWZm IC0tZ2l0IGEvYmxvY2svaW8uYyBiL2Jsb2NrL2lvLmMNCj4gaW5kZXggZGZjMTUzYjhkOC4uODNj MmI2YjQ2YSAxMDA2NDQNCj4gLS0tIGEvYmxvY2svaW8uYw0KPiArKysgYi9ibG9jay9pby5jDQo+ IEBAIC0xMTgsOCArMTE4LDE3IEBAIHN0YXRpYyB2b2lkIGJkcnZfbWVyZ2VfbGltaXRzKEJsb2Nr TGltaXRzICpkc3QsIGNvbnN0IEJsb2NrTGltaXRzICpzcmMpDQo+ICAgdm9pZCBiZHJ2X3JlZnJl c2hfbGltaXRzKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBFcnJvciAqKmVycnApDQo+ICAgew0KPiAg ICAgICBCbG9ja0RyaXZlciAqZHJ2ID0gYnMtPmRydjsNCj4gKyAgICBCbG9ja0RyaXZlclN0YXRl ICpzdG9yYWdlX2JzOw0KPiArICAgIEJsb2NrRHJpdmVyU3RhdGUgKmNvd19icyA9IGJkcnZfZmls dGVyZWRfY293X2JzKGJzKTsNCj4gICAgICAgRXJyb3IgKmxvY2FsX2VyciA9IE5VTEw7DQo+ICAg DQo+ICsgICAgLyoNCj4gKyAgICAgKiBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgZnVuY3Rpb24g Zm9yIHRoaXMsIGFuZCBpbiBmYWN0IHRoZXJlDQo+ICsgICAgICogd2lsbCBiZSBhcyBvZiBhIGZv bGxvdy11cCBwYXRjaC4NCj4gKyAgICAgKi8NCj4gKyAgICBzdG9yYWdlX2JzID0NCj4gKyAgICAg ICAgY2hpbGRfYnMoYnMtPmZpbGUpID86IGJkcnZfZmlsdGVyZWRfcndfYnMoYnMpOw0KPiArDQo+ ICAgICAgIG1lbXNldCgmYnMtPmJsLCAwLCBzaXplb2YoYnMtPmJsKSk7DQo+ICAgDQo+ICAgICAg IGlmICghZHJ2KSB7DQo+IEBAIC0xMzEsMTMgKzE0MCwxMyBAQCB2b2lkIGJkcnZfcmVmcmVzaF9s aW1pdHMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIEVycm9yICoqZXJycCkNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRydi0+YmRydl9haW9fcHJlYWR2KSA/IDEgOiA1MTI7DQo+ ICAgDQo+ICAgICAgIC8qIFRha2Ugc29tZSBsaW1pdHMgZnJvbSB0aGUgY2hpbGRyZW4gYXMgYSBk ZWZhdWx0ICovDQo+IC0gICAgaWYgKGJzLT5maWxlKSB7DQo+IC0gICAgICAgIGJkcnZfcmVmcmVz aF9saW1pdHMoYnMtPmZpbGUtPmJzLCAmbG9jYWxfZXJyKTsNCj4gKyAgICBpZiAoc3RvcmFnZV9i cykgew0KPiArICAgICAgICBiZHJ2X3JlZnJlc2hfbGltaXRzKHN0b3JhZ2VfYnMsICZsb2NhbF9l cnIpOw0KPiAgICAgICAgICAgaWYgKGxvY2FsX2Vycikgew0KPiAgICAgICAgICAgICAgIGVycm9y X3Byb3BhZ2F0ZShlcnJwLCBsb2NhbF9lcnIpOw0KPiAgICAgICAgICAgICAgIHJldHVybjsNCj4g ICAgICAgICAgIH0NCj4gLSAgICAgICAgYmRydl9tZXJnZV9saW1pdHMoJmJzLT5ibCwgJmJzLT5m aWxlLT5icy0+YmwpOw0KPiArICAgICAgICBiZHJ2X21lcmdlX2xpbWl0cygmYnMtPmJsLCAmc3Rv cmFnZV9icy0+YmwpOw0KPiAgICAgICB9IGVsc2Ugew0KPiAgICAgICAgICAgYnMtPmJsLm1pbl9t ZW1fYWxpZ25tZW50ID0gNTEyOw0KPiAgICAgICAgICAgYnMtPmJsLm9wdF9tZW1fYWxpZ25tZW50 ID0gZ2V0cGFnZXNpemUoKTsNCj4gQEAgLTE0NiwxMyArMTU1LDEzIEBAIHZvaWQgYmRydl9yZWZy ZXNoX2xpbWl0cyhCbG9ja0RyaXZlclN0YXRlICpicywgRXJyb3IgKiplcnJwKQ0KPiAgICAgICAg ICAgYnMtPmJsLm1heF9pb3YgPSBJT1ZfTUFYOw0KPiAgICAgICB9DQo+ICAgDQo+IC0gICAgaWYg KGJzLT5iYWNraW5nKSB7DQo+IC0gICAgICAgIGJkcnZfcmVmcmVzaF9saW1pdHMoYnMtPmJhY2tp bmctPmJzLCAmbG9jYWxfZXJyKTsNCj4gKyAgICBpZiAoY293X2JzKSB7DQo+ICsgICAgICAgIGJk cnZfcmVmcmVzaF9saW1pdHMoY293X2JzLCAmbG9jYWxfZXJyKTsNCj4gICAgICAgICAgIGlmIChs b2NhbF9lcnIpIHsNCj4gICAgICAgICAgICAgICBlcnJvcl9wcm9wYWdhdGUoZXJycCwgbG9jYWxf ZXJyKTsNCj4gICAgICAgICAgICAgICByZXR1cm47DQo+ICAgICAgICAgICB9DQo+IC0gICAgICAg IGJkcnZfbWVyZ2VfbGltaXRzKCZicy0+YmwsICZicy0+YmFja2luZy0+YnMtPmJsKTsNCj4gKyAg ICAgICAgYmRydl9tZXJnZV9saW1pdHMoJmJzLT5ibCwgJmNvd19icy0+YmwpOw0KPiAgICAgICB9 DQo+ICAgDQo+ICAgICAgIC8qIFRoZW4gbGV0IHRoZSBkcml2ZXIgb3ZlcnJpZGUgaXQgKi8NCj4g QEAgLTIxMzksMTEgKzIxNDgsMTIgQEAgc3RhdGljIGludCBjb3JvdXRpbmVfZm4gYmRydl9jb19i bG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgICAgIGlmIChyZXQgJiAoQkRS Vl9CTE9DS19EQVRBIHwgQkRSVl9CTE9DS19aRVJPKSkgew0KPiAgICAgICAgICAgcmV0IHw9IEJE UlZfQkxPQ0tfQUxMT0NBVEVEOw0KPiAgICAgICB9IGVsc2UgaWYgKHdhbnRfemVybykgew0KPiAr ICAgICAgICBCbG9ja0RyaXZlclN0YXRlICpjb3dfYnMgPSBiZHJ2X2ZpbHRlcmVkX2Nvd19icyhi cyk7DQo+ICsNCj4gICAgICAgICAgIGlmIChiZHJ2X3VuYWxsb2NhdGVkX2Jsb2Nrc19hcmVfemVy byhicykpIHsNCj4gICAgICAgICAgICAgICByZXQgfD0gQkRSVl9CTE9DS19aRVJPOw0KPiAtICAg ICAgICB9IGVsc2UgaWYgKGJzLT5iYWNraW5nKSB7DQo+IC0gICAgICAgICAgICBCbG9ja0RyaXZl clN0YXRlICpiczIgPSBicy0+YmFja2luZy0+YnM7DQo+IC0gICAgICAgICAgICBpbnQ2NF90IHNp emUyID0gYmRydl9nZXRsZW5ndGgoYnMyKTsNCj4gKyAgICAgICAgfSBlbHNlIGlmIChjb3dfYnMp IHsNCj4gKyAgICAgICAgICAgIGludDY0X3Qgc2l6ZTIgPSBiZHJ2X2dldGxlbmd0aChjb3dfYnMp Ow0KPiAgIA0KPiAgICAgICAgICAgICAgIGlmIChzaXplMiA+PSAwICYmIG9mZnNldCA+PSBzaXpl Mikgew0KPiAgICAgICAgICAgICAgICAgICByZXQgfD0gQkRSVl9CTE9DS19aRVJPOw0KPiBAQCAt MjIwOCw3ICsyMjE4LDcgQEAgc3RhdGljIGludCBjb3JvdXRpbmVfZm4gYmRydl9jb19ibG9ja19z dGF0dXNfYWJvdmUoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+ICAgICAgIGJvb2wgZmlyc3QgPSB0 cnVlOw0KPiAgIA0KPiAgICAgICBhc3NlcnQoYnMgIT0gYmFzZSk7DQo+IC0gICAgZm9yIChwID0g YnM7IHAgIT0gYmFzZTsgcCA9IGJhY2tpbmdfYnMocCkpIHsNCj4gKyAgICBmb3IgKHAgPSBiczsg cCAhPSBiYXNlOyBwID0gYmRydl9maWx0ZXJlZF9icyhwKSkgew0KPiAgICAgICAgICAgcmV0ID0g YmRydl9jb19ibG9ja19zdGF0dXMocCwgd2FudF96ZXJvLCBvZmZzZXQsIGJ5dGVzLCBwbnVtLCBt YXAsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlKTsNCg0KSW50 ZXJlc3RpbmcgdGhhdCBmb3IgZmlsdGVycyB3aG8gdXNlIGJkcnZfY29fYmxvY2tfc3RhdHVzX2Zy b21fYmFja2luZyBhbmQNCmJkcnZfY29fYmxvY2tfc3RhdHVzX2Zyb21fZmlsZSB3ZSB3aWxsIGZp bmFsbHkgY2FsbCAuYmRydl9jb19ibG9ja19zdGF0dXMgb2YNCnVuZGVyYWx5aW5nIHJlYWwgbm9k ZSB0d28gb3IgbW9yZSB0aW1lcy4uIEl0J3Mgbm90IHdyb25nIGJ1dCBvYnZpb3VzbHkgbm90IG9w dGltYWwuDQoNCg0KPiAgICAgICAgICAgaWYgKHJldCA8IDApIHsNCj4gQEAgLTIyOTQsNyArMjMw NCw3IEBAIGludCBiZHJ2X2Jsb2NrX3N0YXR1c19hYm92ZShCbG9ja0RyaXZlclN0YXRlICpicywg QmxvY2tEcml2ZXJTdGF0ZSAqYmFzZSwNCj4gICBpbnQgYmRydl9ibG9ja19zdGF0dXMoQmxvY2tE cml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGJ5dGVzLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQ2NF90ICpwbnVtLCBpbnQ2NF90ICptYXAsIEJsb2NrRHJpdmVy U3RhdGUgKipmaWxlKQ0KPiAgIHsNCj4gLSAgICByZXR1cm4gYmRydl9ibG9ja19zdGF0dXNfYWJv dmUoYnMsIGJhY2tpbmdfYnMoYnMpLA0KPiArICAgIHJldHVybiBiZHJ2X2Jsb2NrX3N0YXR1c19h Ym92ZShicywgYmRydl9maWx0ZXJlZF9icyhicyksDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXQsIGJ5dGVzLCBwbnVtLCBtYXAsIGZpbGUpOw0KPiAgIH0NCj4g ICANCj4gQEAgLTIzMDQsOSArMjMxNCw5IEBAIGludCBjb3JvdXRpbmVfZm4gYmRydl9pc19hbGxv Y2F0ZWQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3Qgb2Zmc2V0LA0KPiAgICAgICBpbnQg cmV0Ow0KPiAgICAgICBpbnQ2NF90IGR1bW15Ow0KPiAgIA0KPiAtICAgIHJldCA9IGJkcnZfY29t bW9uX2Jsb2NrX3N0YXR1c19hYm92ZShicywgYmFja2luZ19icyhicyksIGZhbHNlLCBvZmZzZXQs DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLCBwbnVt ID8gcG51bSA6ICZkdW1teSwgTlVMTCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCk7DQo+ICsgICAgcmV0ID0gYmRydl9jb21tb25fYmxvY2tfc3RhdHVz X2Fib3ZlKGJzLCBiZHJ2X2ZpbHRlcmVkX2JzKGJzKSwgZmFsc2UsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgYnl0ZXMsIHBudW0gPyBwbnVtIDog JmR1bW15LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LCBOVUxMKTsNCj4gICAgICAgaWYgKHJldCA8IDApIHsNCj4gICAgICAgICAgIHJldHVybiByZXQ7 DQo+ICAgICAgIH0NCj4gQEAgLTIzNjAsNyArMjM3MCw3IEBAIGludCBiZHJ2X2lzX2FsbG9jYXRl ZF9hYm92ZShCbG9ja0RyaXZlclN0YXRlICp0b3AsDQo+ICAgICAgICAgICAgICAgbiA9IHBudW1f aW50ZXI7DQo+ICAgICAgICAgICB9DQo+ICAgDQo+IC0gICAgICAgIGludGVybWVkaWF0ZSA9IGJh Y2tpbmdfYnMoaW50ZXJtZWRpYXRlKTsNCj4gKyAgICAgICAgaW50ZXJtZWRpYXRlID0gYmRydl9m aWx0ZXJlZF9icyhpbnRlcm1lZGlhdGUpOw0KPiAgICAgICB9DQo+ICAgDQo+ICAgICAgICpwbnVt ID0gbjsNCj4gQEAgLTMxMzUsOCArMzE0NSw5IEBAIGludCBjb3JvdXRpbmVfZm4gYmRydl9jb190 cnVuY2F0ZShCZHJ2Q2hpbGQgKmNoaWxkLCBpbnQ2NF90IG9mZnNldCwNCj4gICAgICAgfQ0KPiAg IA0KPiAgICAgICBpZiAoIWRydi0+YmRydl9jb190cnVuY2F0ZSkgew0KPiAtICAgICAgICBpZiAo YnMtPmZpbGUgJiYgZHJ2LT5pc19maWx0ZXIpIHsNCj4gLSAgICAgICAgICAgIHJldCA9IGJkcnZf Y29fdHJ1bmNhdGUoYnMtPmZpbGUsIG9mZnNldCwgcHJlYWxsb2MsIGVycnApOw0KPiArICAgICAg ICBCZHJ2Q2hpbGQgKmZpbHRlcmVkID0gYmRydl9maWx0ZXJlZF9yd19jaGlsZChicyk7DQo+ICsg ICAgICAgIGlmIChmaWx0ZXJlZCkgew0KPiArICAgICAgICAgICAgcmV0ID0gYmRydl9jb190cnVu Y2F0ZShmaWx0ZXJlZCwgb2Zmc2V0LCBwcmVhbGxvYywgZXJycCk7DQo+ICAgICAgICAgICAgICAg Z290byBvdXQ7DQo+ICAgICAgICAgICB9DQo+ICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJJ bWFnZSBmb3JtYXQgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgcmVzaXplIik7DQo+IGRpZmYgLS1n aXQgYS9ibG9jay9taXJyb3IuYyBiL2Jsb2NrL21pcnJvci5jDQo+IGluZGV4IDhiMjQwNDA1MWYu LjgwY2VmNTg3ZjAgMTAwNjQ0DQo+IC0tLSBhL2Jsb2NrL21pcnJvci5jDQo+ICsrKyBiL2Jsb2Nr L21pcnJvci5jDQo+IEBAIC02NjAsOCArNjYwLDkgQEAgc3RhdGljIGludCBtaXJyb3JfZXhpdF9j b21tb24oSm9iICpqb2IpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9h Ym9ydCk7DQo+ICAgICAgIGlmICghYWJvcnQgJiYgcy0+YmFja2luZ19tb2RlID09IE1JUlJPUl9T T1VSQ0VfQkFDS0lOR19DSEFJTikgew0KPiAgICAgICAgICAgQmxvY2tEcml2ZXJTdGF0ZSAqYmFj a2luZyA9IHMtPmlzX25vbmVfbW9kZSA/IHNyYyA6IHMtPmJhc2U7DQo+IC0gICAgICAgIGlmIChi YWNraW5nX2JzKHRhcmdldF9icykgIT0gYmFja2luZykgew0KPiAtICAgICAgICAgICAgYmRydl9z ZXRfYmFja2luZ19oZCh0YXJnZXRfYnMsIGJhY2tpbmcsICZsb2NhbF9lcnIpOw0KPiArICAgICAg ICBpZiAoYmRydl9iYWNraW5nX2NoYWluX25leHQodGFyZ2V0X2JzKSAhPSBiYWNraW5nKSB7DQo+ ICsgICAgICAgICAgICBiZHJ2X3NldF9iYWNraW5nX2hkKGJkcnZfc2tpcF9yd19maWx0ZXJzKHRh cmdldF9icyksIGJhY2tpbmcsDQoNCmhtbSwgaGVyZSB5b3Ugc3VwcG9ydCBmaWx0ZXJzIGFib3Zl IHRhcmdldF9icyAuLi4NCg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9j YWxfZXJyKTsNCj4gICAgICAgICAgICAgICBpZiAobG9jYWxfZXJyKSB7DQo+ICAgICAgICAgICAg ICAgICAgIGVycm9yX3JlcG9ydF9lcnIobG9jYWxfZXJyKTsNCj4gICAgICAgICAgICAgICAgICAg cmV0ID0gLUVQRVJNOw0KPiBAQCAtNzExLDcgKzcxMiw3IEBAIHN0YXRpYyBpbnQgbWlycm9yX2V4 aXRfY29tbW9uKEpvYiAqam9iKQ0KPiAgICAgICBibG9ja19qb2JfcmVtb3ZlX2FsbF9iZHJ2KGJq b2IpOw0KPiAgICAgICBiZHJ2X2NoaWxkX3RyeV9zZXRfcGVybShtaXJyb3JfdG9wX2JzLT5iYWNr aW5nLCAwLCBCTEtfUEVSTV9BTEwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZl cnJvcl9hYm9ydCk7DQo+IC0gICAgYmRydl9yZXBsYWNlX25vZGUobWlycm9yX3RvcF9icywgYmFj a2luZ19icyhtaXJyb3JfdG9wX2JzKSwgJmVycm9yX2Fib3J0KTsNCj4gKyAgICBiZHJ2X3JlcGxh Y2Vfbm9kZShtaXJyb3JfdG9wX2JzLCBtaXJyb3JfdG9wX2JzLT5iYWNraW5nLT5icywgJmVycm9y X2Fib3J0KTsNCj4gICANCj4gICAgICAgLyogV2UganVzdCBjaGFuZ2VkIHRoZSBCRFMgdGhlIGpv YiBCQiByZWZlcnMgdG8gKHdpdGggZWl0aGVyIG9yIGJvdGggb2YgdGhlDQo+ICAgICAgICAqIGJk cnZfcmVwbGFjZV9ub2RlKCkgY2FsbHMpLCBzbyBzd2l0Y2ggdGhlIEJCIGJhY2sgc28gdGhlIGNs ZWFudXAgZG9lcw0KPiBAQCAtOTAzLDcgKzkwNCw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2Zu IG1pcnJvcl9ydW4oSm9iICpqb2IsIEVycm9yICoqZXJycCkNCj4gICAgICAgfSBlbHNlIHsNCj4g ICAgICAgICAgIHMtPnRhcmdldF9jbHVzdGVyX3NpemUgPSBCRFJWX1NFQ1RPUl9TSVpFOw0KPiAg ICAgICB9DQo+IC0gICAgaWYgKGJhY2tpbmdfZmlsZW5hbWVbMF0gJiYgIXRhcmdldF9icy0+YmFj a2luZyAmJg0KPiArICAgIGlmIChiYWNraW5nX2ZpbGVuYW1lWzBdICYmICFiZHJ2X2ZpbHRlcmVk X2Nvd19jaGlsZCh0YXJnZXRfYnMpICYmDQoNCi4uLiBhbmQgaGVyZSAtIG5vdA0KDQpbc3RvcHBl ZCBoZXJlIGZvciBub3ddDQoNCg0KDQotLSANCkJlc3QgcmVnYXJkcywNClZsYWRpbWlyDQo=