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=-6.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 AB2F9C352A3 for ; Thu, 6 Feb 2020 18:41:39 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5CD6B21741 for ; Thu, 6 Feb 2020 18:41:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="ZwbHQvEz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5CD6B21741 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:44556 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izm5q-0002xc-Gj for qemu-devel@archiver.kernel.org; Thu, 06 Feb 2020 13:41:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36686) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izm44-0001IH-LZ for qemu-devel@nongnu.org; Thu, 06 Feb 2020 13:39:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1izm3z-0001FN-Ly for qemu-devel@nongnu.org; Thu, 06 Feb 2020 13:39:48 -0500 Received: from mail-dm6nam12on20606.outbound.protection.outlook.com ([2a01:111:f400:fe59::606]:28026 helo=NAM12-DM6-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 1izm3w-00015R-UI for qemu-devel@nongnu.org; Thu, 06 Feb 2020 13:39:43 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X0Nj/NuXkxsGEuRTHsWLhkMa38Vn5XP3OKAnMwptEzAYNindOmT9suq51OPvTc6/m1M1v+Z4uGyaeXM5AviE6oleRHGv1X2z5ZvgtJZMbw078FJWhYkFwxA/YYtCOfhFLYuRxd5yUyesaiEZlgyAkF0p3HRFpmeA+cnGYZvaGOuAZvYuNmLflpHo8NgHPp7cYqV55HNAMTE9/tOjiG5mylyvKO2Gj6PfhETiHC9becbURLBY4ofJfSVCHRmpDnMyc1oRYoByYPSZsI9ctGAOSUTf9CTYIWRWKzX5yxNwEy0A6bP6F3a/SEbTiQgC6iLO1We8z7yO95t0mElewnA0Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DmV4sy7KZ7T2QhFud/MK3LRZw8TdyPFxy4xqRFtep8I=; b=DFyFSsJphU3kR8YjnE7Chfzuscwp5lgZ2GiHmz9zNsIfzkUJ5ab/MucAMdVD2ak5ysjOgwZXzuIklVwrYBVvxKrBbJW9fsl3SlEheDIgzSdPlNmBxfhaZiX4rVFgIxfnhkUtFeEzGLHskjGGqq2HqCDpPgcdWvahdkTVboEFy4vmJoZw8lon62OQxDaZL0iM2vHQUXQUDwiwexRG1VqIuleXk5B7mFlEJqrdb8ZZLinhT7epvmGY3T9zur9fIbDm/1F+whVI+bC3wpaj4u9oNsgES3X+O2M8HBnZQrMvzA1O/1Z/MTNGGQUuP1PTBR3hKgbVxIfwqCtpbxNtbdYoQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=xilinx.com; dmarc=pass action=none header.from=xilinx.com; dkim=pass header.d=xilinx.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DmV4sy7KZ7T2QhFud/MK3LRZw8TdyPFxy4xqRFtep8I=; b=ZwbHQvEzCaWFH/cObwNeU9oTzL/MD7hzTWC57cOZPtZy/hB1BVOyC5SCMb75ydeNlXBx8QKsE0uMryCrA+q/hmVaEs1RH1R8qEV27zPnP4xlWvk0hjYMvhSNlF/CvFZCQ2U6nFhte9s+oZQ7Pd4taqTXzhbIT9RIX2wao+qbJxM= Received: from BYAPR02MB5638.namprd02.prod.outlook.com (20.177.231.82) by BYAPR02MB4229.namprd02.prod.outlook.com (20.176.250.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2707.24; Thu, 6 Feb 2020 18:39:35 +0000 Received: from BYAPR02MB5638.namprd02.prod.outlook.com ([fe80::a0f2:bc3:62bd:e68]) by BYAPR02MB5638.namprd02.prod.outlook.com ([fe80::a0f2:bc3:62bd:e68%5]) with mapi id 15.20.2686.034; Thu, 6 Feb 2020 18:39:35 +0000 From: Vikram Garhwal To: Jason Wang , "qemu-devel@nongnu.org" Subject: RE: [PATCH 1/1] hw/net/can: Introduce Xlnx ZynqMP CAN controller for QEMU Thread-Topic: [PATCH 1/1] hw/net/can: Introduce Xlnx ZynqMP CAN controller for QEMU Thread-Index: AQHV2+ex6bt4rBh6tUGf0DorXXlOrKgM7dGQ Date: Thu, 6 Feb 2020 18:39:34 +0000 Message-ID: References: <1580764010-310744-1-git-send-email-fnu.vikram@xilinx.com> <1580764010-310744-2-git-send-email-fnu.vikram@xilinx.com> <8aabde0d-62e9-96d5-0614-0e0ebff549ae@redhat.com> In-Reply-To: <8aabde0d-62e9-96d5-0614-0e0ebff549ae@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=fnuv@xilinx.com; x-originating-ip: [149.199.62.133] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 225b6828-ccee-4ea1-a12d-08d7ab33e9d2 x-ms-traffictypediagnostic: BYAPR02MB4229: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-forefront-prvs: 0305463112 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(396003)(136003)(346002)(366004)(199004)(189003)(71200400001)(30864003)(5660300002)(478600001)(186003)(7696005)(26005)(53546011)(8936002)(6506007)(81166006)(81156014)(8676002)(52536014)(66446008)(66556008)(66946007)(66476007)(64756008)(76116006)(2906002)(33656002)(110136005)(9686003)(86362001)(55016002)(316002)(579004)(569007); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR02MB4229; H:BYAPR02MB5638.namprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: R0gDoOcfGxqjPY8gXZRJqvTmP1ASEEHFBwAumSo6U++FXX0j7RD1ucGvXImbVIxMc90v4pT5tHvX0iGMCu0pH0oX89weEd+uGTmrYZFzagt6Zyzp29JNI6CastEq/vsRyfK3e/0t3jWb/SaHnlVdnPgBgGlDAoEiQHYSl39Yttaxm7FyFxyQGNMqtZHD8rZHwdvDPaJoqVUR6pH1jF82zgxim+pJDnApBxNY5JXgAcUZukV7kveTv9AE4TYxC9piaDDmWZqmbYz0rKDUWbWy0HtPpzyU8OYyLNTOEQvyUZ4bkyhMUuuYR9k9CXwSONg0WcabVxJDzJ2nVQ74qZpvg3hXmt013P/hl3Iq1YHztlD2V27Ys8HX1vGoG7iE9s855n7AbN9PwPv/X9NuxJTF+hUnYNbHgmbvERy1h87ng3JT8vzNJcelOLCILrEkqktcvaoxBwSwrQz7eUOzWJBcXUxO4yjx8RZSLN8aemLC4MA= x-ms-exchange-antispam-messagedata: 07b55vSXV5w1dtYtsRB4cRdiQFa0TMRchMwL2ntKSRV/O/vx43Kito65mTQjAQKOvwcOJgvYs938xiYUE1OlEKuFkSCWulQwtWGNWQT/ywf1Tm9+hhD6GN9yWIUFE2mN3M6vAEkVFCC0lb6lQCE0Mw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 225b6828-ccee-4ea1-a12d-08d7ab33e9d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2020 18:39:34.9712 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pMwjlAa16v4ozRNZh/fsKg7i5YcxNhr7P0kfo+U/kLhlGD1opbPGNWUm7E14KkYF X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR02MB4229 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a01:111:f400:fe59::606 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SGkgSmFzb24sDQpUaGFua3MgZm9yIHJldmlld2luZyBpdC4gRmV3IGNvbW1lbnRzIGlubGluZS4g DQpBbHNvLCBJIHdpbGwgYWRkIGEgcGF0Y2ggZm9yIE1haW50YWluZXIgdXBkYXRlcyB3aGVuIEkg c2VuZCB2Mi4NCg0KUmVnYXJkcywNClZpa3JhbQ0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPg0KPiBTZW50OiBUdWVz ZGF5LCBGZWJydWFyeSA0LCAyMDIwIDk6NDcgUE0NCj4gVG86IFZpa3JhbSBHYXJod2FsIDxmbnV2 QHhpbGlueC5jb20+OyBxZW11LWRldmVsQG5vbmdudS5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRD SCAxLzFdIGh3L25ldC9jYW46IEludHJvZHVjZSBYbG54IFp5bnFNUCBDQU4gY29udHJvbGxlcg0K PiBmb3IgUUVNVQ0KPiANCj4gDQo+IE9uIDIwMjAvMi80IOS4iuWNiDU6MDYsIFZpa3JhbSBHYXJo d2FsIHdyb3RlOg0KPiA+IFhsbnhDQU4gaXMgZGV2ZWxvcGVkIGJhc2VkIG9uIFNvY2tldENBTiwg UUVNVSBDQU4gYnVzIGltcGxlbWVudGF0aW9uLg0KPiA+IEJ1cyBjb25uZWN0aW9uIGFuZCBzb2Nr ZXRDQU4gY29ubmVjdGlvbiBmb3IgZWFjaCBDQU4gbW9kdWxlIGNhbiBiZSBzZXQNCj4gPiB0aHJv dWdoIGNvbW1hbmQgbGluZXMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWtyYW0gR2FyaHdh bCA8Zm51LnZpa3JhbUB4aWxpbnguY29tPg0KPiA+IC0tLQ0KPiA+ICAgaHcvbmV0L2Nhbi9NYWtl ZmlsZS5vYmpzICAgICAgICAgfCAgICAxICsNCj4gPiAgIGh3L25ldC9jYW4veGxueC16eW5xbXAt Y2FuLmMgICAgIHwgMTEwNg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kw0KPiA+ICAgaW5jbHVkZS9ody9uZXQveGxueC16eW5xbXAtY2FuLmggfCAgIDc3ICsrKw0KPiA+ ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMTg0IGluc2VydGlvbnMoKykNCj4gPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBody9uZXQvY2FuL3hsbngtenlucW1wLWNhbi5jDQo+ID4gICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9ody9uZXQveGxueC16eW5xbXAtY2FuLmgNCj4gPg0KPiA+IGRpZmYgLS1n aXQgYS9ody9uZXQvY2FuL01ha2VmaWxlLm9ianMgYi9ody9uZXQvY2FuL01ha2VmaWxlLm9ianMg aW5kZXgNCj4gPiA5ZjBjNGVlLi4wZmU4N2RkIDEwMDY0NA0KPiA+IC0tLSBhL2h3L25ldC9jYW4v TWFrZWZpbGUub2Jqcw0KPiA+ICsrKyBiL2h3L25ldC9jYW4vTWFrZWZpbGUub2Jqcw0KPiA+IEBA IC0yLDMgKzIsNCBAQCBjb21tb24tb2JqLSQoQ09ORklHX0NBTl9TSkExMDAwKSArPQ0KPiBjYW5f c2phMTAwMC5vDQo+ID4gICBjb21tb24tb2JqLSQoQ09ORklHX0NBTl9QQ0kpICs9IGNhbl9rdmFz ZXJfcGNpLm8NCj4gPiAgIGNvbW1vbi1vYmotJChDT05GSUdfQ0FOX1BDSSkgKz0gY2FuX3BjbTM2 ODBfcGNpLm8NCj4gPiAgIGNvbW1vbi1vYmotJChDT05GSUdfQ0FOX1BDSSkgKz0gY2FuX21pb2Uz NjgwX3BjaS5vDQo+ID4gK2NvbW1vbi1vYmotJChDT05GSUdfWExOWF9aWU5RTVApICs9IHhsbngt enlucW1wLWNhbi5vDQo+ID4gZGlmZiAtLWdpdCBhL2h3L25ldC9jYW4veGxueC16eW5xbXAtY2Fu LmMNCj4gPiBiL2h3L25ldC9jYW4veGxueC16eW5xbXAtY2FuLmMgbmV3IGZpbGUgbW9kZSAxMDA2 NDQgaW5kZXgNCj4gPiAwMDAwMDAwLi5lMTQwMTNjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2h3L25ldC9jYW4veGxueC16eW5xbXAtY2FuLmMNCj4gPiBAQCAtMCwwICsxLDExMDYgQEAN Cj4gPiArLyoNCj4gPiArICogUUVNVSBtb2RlbCBvZiB0aGUgWGlsaW54IENBTiBkZXZpY2UuDQo+ ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxOSBYaWxpbnggSW5jLg0KPiANCj4gDQo+ IDIwMjA/DQpbVmlrcmFtIEdhcmh3YWxdIFllYWguIEkgd2lsbCBjaGFuZ2UgaXQgMjAyMCBpbiBW MiBwYXRjaC4NCj4gDQo+IA0KPiA+ICsgKiBQYXJ0aWFsbHkgYXV0b2dlbmVyYXRlZCBieSB4cmVn cWVtdS5weQ0KPiANCj4gDQo+IFdoYXQgZGlkIHhyZWdxZW11LnB5IGRvPyBJcyBpdCBwb3NzaWJs ZSB0byBpbnRlZ3JhdGUgaXQgaW50byBxZW11IHNvdXJjZSB0aGVuDQo+IHdlIGNhbiByZXZpZXcg aGlnaCBsZXZlbCBsYW5ndWFnZSBvdGhlciB0aGFuIGM/DQpbVmlrcmFtIEdhcmh3YWxdIEkgZ3Vl c3MgaXQncyBiZXR0ZXIgdG8gcmVtb3ZlIGl0IGFzIGl0IGlzIGNyZWF0aW5nIGNvbmZ1c2lvbi4g DQpJdCB3YXMgYmFzaWNhbGx5IGEgdG9vbChJbnRlcm5hbCB1c2UpIHdoaWNoIGdlbmVyYXRlIHJl Z2lzdGVyIGRlZnMuDQo+IA0KPiANCj4gPiAyMDE5LTA2LTIwLg0KPiA+ICsgKg0KPiA+ICsgKiBX cml0dGVuLWJ5OiBWaWtyYW0gR2FyaHdhbDxmbnUudmlrcmFtQHhpbGlueC5jb20+DQo+ID4gKyAq DQo+ID4gKyAqIEJhc2VkIG9uIFFFTVUgQ0FOIERldmljZSBlbXVsYXRpb24gaW1wbGVtZW50ZWQg YnkgSmluIFlhbmcsIERlbml6DQo+IEVyZW4gYW5kDQo+ID4gKyAqIFBhdmVsIFBpc2ENCj4gPiAr ICoNCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gY29weQ0KPiA+ICsgKiBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwg dG8NCj4gZGVhbA0KPiA+ICsgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzDQo+ID4gKyAqIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5k L29yIHNlbGwNCj4gPiArICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzDQo+ID4gKyAqIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ID4gKyAqDQo+ID4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkDQo+IGluDQo+ID4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KPiA+ICsgKg0KPiA+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwNCj4gRVhQ UkVTUyBPUg0KPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GDQo+IE1FUkNIQU5UQUJJTElUWSwNCj4gPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8NCj4gRVZFTlQg U0hBTEwNCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sDQo+IERBTUFHRVMgT1IgT1RIRVINCj4gPiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+IEFS SVNJTkcgRlJPTSwNCj4gPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUg0KPiBERUFMSU5HUyBJTg0KPiA+ICsgKiBUSEUgU09G VFdBUkUuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgInFlbXUvb3NkZXAuaCINCj4g PiArI2luY2x1ZGUgImh3L3N5c2J1cy5oIg0KPiA+ICsjaW5jbHVkZSAiaHcvcmVnaXN0ZXIuaCIN Cj4gPiArI2luY2x1ZGUgImh3L2lycS5oIg0KPiA+ICsjaW5jbHVkZSAicWFwaS9lcnJvci5oIg0K PiA+ICsjaW5jbHVkZSAicWVtdS9iaXRvcHMuaCINCj4gPiArI2luY2x1ZGUgInFlbXUvbG9nLmgi DQo+ID4gKyNpbmNsdWRlICJxZW11L2N1dGlscy5oIg0KPiA+ICsjaW5jbHVkZSAic3lzZW11L3N5 c2VtdS5oIg0KPiA+ICsjaW5jbHVkZSAibWlncmF0aW9uL3Ztc3RhdGUuaCINCj4gPiArI2luY2x1 ZGUgImh3L3FkZXYtcHJvcGVydGllcy5oIg0KPiA+ICsjaW5jbHVkZSAibmV0L2Nhbl9lbXUuaCIN Cj4gPiArI2luY2x1ZGUgIm5ldC9jYW5faG9zdC5oIg0KPiA+ICsjaW5jbHVkZSAicWVtdS9ldmVu dF9ub3RpZmllci5oIg0KPiA+ICsjaW5jbHVkZSAicW9tL29iamVjdF9pbnRlcmZhY2VzLmgiDQo+ ID4gKyNpbmNsdWRlICJody9uZXQveGxueC16eW5xbXAtY2FuLmgiDQo+ID4gKw0KPiA+ICsjaWZu ZGVmIFhMTlhfWllOUU1QX0NBTl9FUlJfREVCVUcNCj4gPiArI2RlZmluZSBYTE5YX1pZTlFNUF9D QU5fRVJSX0RFQlVHIDANCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsjZGVmaW5lIERCX1BSSU5U KC4uLikgZG8geyBcDQo+ID4gKyAgICBpZiAoWExOWF9aWU5RTVBfQ0FOX0VSUl9ERUJVRykgeyBc DQo+ID4gKyAgICAgICAgcWVtdV9sb2coX19WQV9BUkdTX18pOyBcDQo+ID4gKyAgICB9IFwNCj4g PiArfSB3aGlsZSAoMCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFYX0RMQyAgICAgICAgICAgIDgN Cj4gPiArI3VuZGVmIEVSUk9SDQo+ID4gKw0KPiA+ICtSRUczMihTT0ZUV0FSRV9SRVNFVF9SRUdJ U1RFUiwgMHgwKQ0KPiA+ICsgICAgRklFTEQoU09GVFdBUkVfUkVTRVRfUkVHSVNURVIsIENFTiwg MSwgMSkNCj4gPiArICAgIEZJRUxEKFNPRlRXQVJFX1JFU0VUX1JFR0lTVEVSLCBTUlNULCAwLCAx KQ0KPiA+ICtSRUczMihNT0RFX1NFTEVDVF9SRUdJU1RFUiwgMHg0KQ0KPiA+ICsgICAgRklFTEQo TU9ERV9TRUxFQ1RfUkVHSVNURVIsIFNOT09QLCAyLCAxKQ0KPiA+ICsgICAgRklFTEQoTU9ERV9T RUxFQ1RfUkVHSVNURVIsIExCQUNLLCAxLCAxKQ0KPiA+ICsgICAgRklFTEQoTU9ERV9TRUxFQ1Rf UkVHSVNURVIsIFNMRUVQLCAwLCAxKQ0KPiA+ICtSRUczMihBUkJJVFJBVElPTl9QSEFTRV9CQVVE X1JBVEVfUFJFU0NBTEVSX1JFR0lTVEVSLCAweDgpDQo+ID4gKyAgICBGSUVMRChBUkJJVFJBVElP Tl9QSEFTRV9CQVVEX1JBVEVfUFJFU0NBTEVSX1JFR0lTVEVSLCBCUlAsIDAsDQo+IDgpDQo+ID4g K1JFRzMyKEFSQklUUkFUSU9OX1BIQVNFX0JJVF9USU1JTkdfUkVHSVNURVIsIDB4YykNCj4gPiAr ICAgIEZJRUxEKEFSQklUUkFUSU9OX1BIQVNFX0JJVF9USU1JTkdfUkVHSVNURVIsIFNKVywgNywg MikNCj4gPiArICAgIEZJRUxEKEFSQklUUkFUSU9OX1BIQVNFX0JJVF9USU1JTkdfUkVHSVNURVIs IFRTMiwgNCwgMykNCj4gPiArICAgIEZJRUxEKEFSQklUUkFUSU9OX1BIQVNFX0JJVF9USU1JTkdf UkVHSVNURVIsIFRTMSwgMCwgNCkNCj4gPiArUkVHMzIoRVJST1JfQ09VTlRFUl9SRUdJU1RFUiwg MHgxMCkNCj4gPiArICAgIEZJRUxEKEVSUk9SX0NPVU5URVJfUkVHSVNURVIsIFJFQywgOCwgOCkN Cj4gPiArICAgIEZJRUxEKEVSUk9SX0NPVU5URVJfUkVHSVNURVIsIFRFQywgMCwgOCkNCj4gPiAr UkVHMzIoRVJST1JfU1RBVFVTX1JFR0lTVEVSLCAweDE0KQ0KPiA+ICsgICAgRklFTEQoRVJST1Jf U1RBVFVTX1JFR0lTVEVSLCBBQ0tFUiwgNCwgMSkNCj4gPiArICAgIEZJRUxEKEVSUk9SX1NUQVRV U19SRUdJU1RFUiwgQkVSUiwgMywgMSkNCj4gPiArICAgIEZJRUxEKEVSUk9SX1NUQVRVU19SRUdJ U1RFUiwgU1RFUiwgMiwgMSkNCj4gPiArICAgIEZJRUxEKEVSUk9SX1NUQVRVU19SRUdJU1RFUiwg Rk1FUiwgMSwgMSkNCj4gPiArICAgIEZJRUxEKEVSUk9SX1NUQVRVU19SRUdJU1RFUiwgQ1JDRVIs IDAsIDEpDQo+ID4gK1JFRzMyKFNUQVRVU19SRUdJU1RFUiwgMHgxOCkNCj4gPiArICAgIEZJRUxE KFNUQVRVU19SRUdJU1RFUiwgU05PT1AsIDEyLCAxKQ0KPiA+ICsgICAgRklFTEQoU1RBVFVTX1JF R0lTVEVSLCBBQ0ZCU1ksIDExLCAxKQ0KPiA+ICsgICAgRklFTEQoU1RBVFVTX1JFR0lTVEVSLCBU WEZMTCwgMTAsIDEpDQo+ID4gKyAgICBGSUVMRChTVEFUVVNfUkVHSVNURVIsIFRYQkZMTCwgOSwg MSkNCj4gPiArICAgIEZJRUxEKFNUQVRVU19SRUdJU1RFUiwgRVNUQVQsIDcsIDIpDQo+ID4gKyAg ICBGSUVMRChTVEFUVVNfUkVHSVNURVIsIEVSUldSTiwgNiwgMSkNCj4gPiArICAgIEZJRUxEKFNU QVRVU19SRUdJU1RFUiwgQkJTWSwgNSwgMSkNCj4gPiArICAgIEZJRUxEKFNUQVRVU19SRUdJU1RF UiwgQklETEUsIDQsIDEpDQo+ID4gKyAgICBGSUVMRChTVEFUVVNfUkVHSVNURVIsIE5PUk1BTCwg MywgMSkNCj4gPiArICAgIEZJRUxEKFNUQVRVU19SRUdJU1RFUiwgU0xFRVAsIDIsIDEpDQo+ID4g KyAgICBGSUVMRChTVEFUVVNfUkVHSVNURVIsIExCQUNLLCAxLCAxKQ0KPiA+ICsgICAgRklFTEQo U1RBVFVTX1JFR0lTVEVSLCBDT05GSUcsIDAsIDEpDQo+ID4gK1JFRzMyKElOVEVSUlVQVF9TVEFU VVNfUkVHSVNURVIsIDB4MWMpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVTX1JFR0lT VEVSLCBUWEZFTVAsIDE0LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX1NUQVRVU19SRUdJ U1RFUiwgVFhGV01FTVAsIDEzLCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX1NUQVRVU19S RUdJU1RFUiwgUlhGV01GTEwsIDEyLCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX1NUQVRV U19SRUdJU1RFUiwgV0tVUCwgMTEsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVT X1JFR0lTVEVSLCBTTFAsIDEwLCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX1NUQVRVU19S RUdJU1RFUiwgQlNPRkYsIDksIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVTX1JF R0lTVEVSLCBFUlJPUiwgOCwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9TVEFUVVNfUkVH SVNURVIsIFJYTkVNUCwgNywgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9TVEFUVVNfUkVH SVNURVIsIFJYT0ZMVywgNiwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9TVEFUVVNfUkVH SVNURVIsIFJYVUZMVywgNSwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9TVEFUVVNfUkVH SVNURVIsIFJYT0ssIDQsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVTX1JFR0lT VEVSLCBUWEJGTEwsIDMsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVTX1JFR0lT VEVSLCBUWEZMTCwgMiwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9TVEFUVVNfUkVHSVNU RVIsIFRYT0ssIDEsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVS LCBBUkJMU1QsIDAsIDEpDQo+ID4gK1JFRzMyKElOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVIsIDB4 MjApDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVSLCBFVFhGRU1QLCAx NCwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVIsIEVUWEZXTUVN UCwgMTMsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVSLCBFUlhG V01GTEwsIDEyLCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0VOQUJMRV9SRUdJU1RFUiwg RVdLVVAsIDExLCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0VOQUJMRV9SRUdJU1RFUiwg RVNMUCwgMTAsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVSLCBF QlNPRkYsIDksIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVSLCBF RVJST1IsIDgsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVSLCBF UlhORU1QLCA3LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0VOQUJMRV9SRUdJU1RFUiwg RVJYT0ZMVywgNiwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVIs IEVSWFVGTFcsIDUsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVS LCBFUlhPSywgNCwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVIs IEVUWEJGTEwsIDMsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVS LCBFVFhGTEwsIDIsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfRU5BQkxFX1JFR0lTVEVS LCBFVFhPSywgMSwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVIs IEVBUkJMU1QsIDAsIDEpDQo+ID4gK1JFRzMyKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgMHgy NCkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ1RYRkVNUCwgMTQs IDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfQ0xFQVJfUkVHSVNURVIsIENUWEZXTUVNUCwg MTMsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfQ0xFQVJfUkVHSVNURVIsIENSWEZXTUZM TCwgMTIsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfQ0xFQVJfUkVHSVNURVIsIENXS1VQ LCAxMSwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ1NMUCwg MTAsIDEpDQo+ID4gKyAgICBGSUVMRChJTlRFUlJVUFRfQ0xFQVJfUkVHSVNURVIsIENCU09GRiwg OSwgMSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ0VSUk9SLCA4 LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0NMRUFSX1JFR0lTVEVSLCBDUlhORU1QLCA3 LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0NMRUFSX1JFR0lTVEVSLCBDUlhPRkxXLCA2 LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0NMRUFSX1JFR0lTVEVSLCBDUlhVRkxXLCA1 LCAxKQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0NMRUFSX1JFR0lTVEVSLCBDUlhPSywgNCwg MSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ1RYQkZMTCwgMywg MSkNCj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ1RYRkxMLCAyLCAx KQ0KPiA+ICsgICAgRklFTEQoSU5URVJSVVBUX0NMRUFSX1JFR0lTVEVSLCBDVFhPSywgMSwgMSkN Cj4gPiArICAgIEZJRUxEKElOVEVSUlVQVF9DTEVBUl9SRUdJU1RFUiwgQ0FSQkxTVCwgMCwgMSkN Cj4gPiArUkVHMzIoVElNRVNUQU1QX1JFR0lTVEVSLCAweDI4KQ0KPiA+ICsgICAgRklFTEQoVElN RVNUQU1QX1JFR0lTVEVSLCBDVFMsIDAsIDEpDQo+ID4gK1JFRzMyKFdJUiwgMHgyYykNCj4gPiAr ICAgIEZJRUxEKFdJUiwgRVcsIDgsIDgpDQo+ID4gKyAgICBGSUVMRChXSVIsIEZXLCAwLCA4KQ0K PiA+ICtSRUczMihUWEZJRk9fSUQsIDB4MzApDQo+ID4gKyAgICBGSUVMRChUWEZJRk9fSUQsIElE SCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoVFhGSUZPX0lELCBTUlJSVFIsIDIwLCAxKQ0KPiA+ ICsgICAgRklFTEQoVFhGSUZPX0lELCBJREUsIDE5LCAxKQ0KPiA+ICsgICAgRklFTEQoVFhGSUZP X0lELCBJREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoVFhGSUZPX0lELCBSVFIsIDAsIDEpDQo+ ID4gK1JFRzMyKFRYRklGT19ETEMsIDB4MzQpDQo+ID4gKyAgICBGSUVMRChUWEZJRk9fRExDLCBE TEMsIDI4LCA0KQ0KPiA+ICtSRUczMihUWEZJRk9fREFUQTEsIDB4MzgpDQo+ID4gKyAgICBGSUVM RChUWEZJRk9fREFUQTEsIERCMCwgMjQsIDgpDQo+ID4gKyAgICBGSUVMRChUWEZJRk9fREFUQTEs IERCMSwgMTYsIDgpDQo+ID4gKyAgICBGSUVMRChUWEZJRk9fREFUQTEsIERCMiwgOCwgOCkNCj4g PiArICAgIEZJRUxEKFRYRklGT19EQVRBMSwgREIzLCAwLCA4KQ0KPiA+ICtSRUczMihUWEZJRk9f REFUQTIsIDB4M2MpDQo+ID4gKyAgICBGSUVMRChUWEZJRk9fREFUQTIsIERCNCwgMjQsIDgpDQo+ ID4gKyAgICBGSUVMRChUWEZJRk9fREFUQTIsIERCNSwgMTYsIDgpDQo+ID4gKyAgICBGSUVMRChU WEZJRk9fREFUQTIsIERCNiwgOCwgOCkNCj4gPiArICAgIEZJRUxEKFRYRklGT19EQVRBMiwgREI3 LCAwLCA4KQ0KPiA+ICtSRUczMihUWEhQQl9JRCwgMHg0MCkNCj4gPiArICAgIEZJRUxEKFRYSFBC X0lELCBJREgsIDIxLCAxMSkNCj4gPiArICAgIEZJRUxEKFRYSFBCX0lELCBTUlJSVFIsIDIwLCAx KQ0KPiA+ICsgICAgRklFTEQoVFhIUEJfSUQsIElERSwgMTksIDEpDQo+ID4gKyAgICBGSUVMRChU WEhQQl9JRCwgSURMLCAxLCAxOCkNCj4gPiArICAgIEZJRUxEKFRYSFBCX0lELCBSVFIsIDAsIDEp DQo+ID4gK1JFRzMyKFRYSFBCX0RMQywgMHg0NCkNCj4gPiArICAgIEZJRUxEKFRYSFBCX0RMQywg RExDLCAyOCwgNCkNCj4gPiArUkVHMzIoVFhIUEJfREFUQTEsIDB4NDgpDQo+ID4gKyAgICBGSUVM RChUWEhQQl9EQVRBMSwgREIwLCAyNCwgOCkNCj4gPiArICAgIEZJRUxEKFRYSFBCX0RBVEExLCBE QjEsIDE2LCA4KQ0KPiA+ICsgICAgRklFTEQoVFhIUEJfREFUQTEsIERCMiwgOCwgOCkNCj4gPiAr ICAgIEZJRUxEKFRYSFBCX0RBVEExLCBEQjMsIDAsIDgpDQo+ID4gK1JFRzMyKFRYSFBCX0RBVEEy LCAweDRjKQ0KPiA+ICsgICAgRklFTEQoVFhIUEJfREFUQTIsIERCNCwgMjQsIDgpDQo+ID4gKyAg ICBGSUVMRChUWEhQQl9EQVRBMiwgREI1LCAxNiwgOCkNCj4gPiArICAgIEZJRUxEKFRYSFBCX0RB VEEyLCBEQjYsIDgsIDgpDQo+ID4gKyAgICBGSUVMRChUWEhQQl9EQVRBMiwgREI3LCAwLCA4KQ0K PiA+ICtSRUczMihSWEZJRk9fSUQsIDB4NTApDQo+ID4gKyAgICBGSUVMRChSWEZJRk9fSUQsIElE SCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0lELCBTUlJSVFIsIDIwLCAxKQ0KPiA+ ICsgICAgRklFTEQoUlhGSUZPX0lELCBJREUsIDE5LCAxKQ0KPiA+ICsgICAgRklFTEQoUlhGSUZP X0lELCBJREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0lELCBSVFIsIDAsIDEpDQo+ ID4gK1JFRzMyKFJYRklGT19ETEMsIDB4NTQpDQo+ID4gKyAgICBGSUVMRChSWEZJRk9fRExDLCBE TEMsIDI4LCA0KQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0RMQywgUlhULCAwLCAxNikNCj4gPiAr UkVHMzIoUlhGSUZPX0RBVEExLCAweDU4KQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0RBVEExLCBE QjAsIDI0LCA4KQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0RBVEExLCBEQjEsIDE2LCA4KQ0KPiA+ ICsgICAgRklFTEQoUlhGSUZPX0RBVEExLCBEQjIsIDgsIDgpDQo+ID4gKyAgICBGSUVMRChSWEZJ Rk9fREFUQTEsIERCMywgMCwgOCkNCj4gPiArUkVHMzIoUlhGSUZPX0RBVEEyLCAweDVjKQ0KPiA+ ICsgICAgRklFTEQoUlhGSUZPX0RBVEEyLCBEQjQsIDI0LCA4KQ0KPiA+ICsgICAgRklFTEQoUlhG SUZPX0RBVEEyLCBEQjUsIDE2LCA4KQ0KPiA+ICsgICAgRklFTEQoUlhGSUZPX0RBVEEyLCBEQjYs IDgsIDgpDQo+ID4gKyAgICBGSUVMRChSWEZJRk9fREFUQTIsIERCNywgMCwgOCkNCj4gPiArUkVH MzIoQUZSLCAweDYwKQ0KPiA+ICsgICAgRklFTEQoQUZSLCBVQUY0LCAzLCAxKQ0KPiA+ICsgICAg RklFTEQoQUZSLCBVQUYzLCAyLCAxKQ0KPiA+ICsgICAgRklFTEQoQUZSLCBVQUYyLCAxLCAxKQ0K PiA+ICsgICAgRklFTEQoQUZSLCBVQUYxLCAwLCAxKQ0KPiA+ICtSRUczMihBRk1SMSwgMHg2NCkN Cj4gPiArICAgIEZJRUxEKEFGTVIxLCBBTUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoQUZN UjEsIEFNU1JSLCAyMCwgMSkNCj4gPiArICAgIEZJRUxEKEFGTVIxLCBBTUlERSwgMTksIDEpDQo+ ID4gKyAgICBGSUVMRChBRk1SMSwgQU1JREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoQUZNUjEs IEFNUlRSLCAwLCAxKQ0KPiA+ICtSRUczMihBRklSMSwgMHg2OCkNCj4gPiArICAgIEZJRUxEKEFG SVIxLCBBSUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoQUZJUjEsIEFJU1JSLCAyMCwgMSkN Cj4gPiArICAgIEZJRUxEKEFGSVIxLCBBSUlERSwgMTksIDEpDQo+ID4gKyAgICBGSUVMRChBRklS MSwgQUlJREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoQUZJUjEsIEFJUlRSLCAwLCAxKQ0KPiA+ ICtSRUczMihBRk1SMiwgMHg2YykNCj4gPiArICAgIEZJRUxEKEFGTVIyLCBBTUlESCwgMjEsIDEx KQ0KPiA+ICsgICAgRklFTEQoQUZNUjIsIEFNU1JSLCAyMCwgMSkNCj4gPiArICAgIEZJRUxEKEFG TVIyLCBBTUlERSwgMTksIDEpDQo+ID4gKyAgICBGSUVMRChBRk1SMiwgQU1JREwsIDEsIDE4KQ0K PiA+ICsgICAgRklFTEQoQUZNUjIsIEFNUlRSLCAwLCAxKQ0KPiA+ICtSRUczMihBRklSMiwgMHg3 MCkNCj4gPiArICAgIEZJRUxEKEFGSVIyLCBBSUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQo QUZJUjIsIEFJU1JSLCAyMCwgMSkNCj4gPiArICAgIEZJRUxEKEFGSVIyLCBBSUlERSwgMTksIDEp DQo+ID4gKyAgICBGSUVMRChBRklSMiwgQUlJREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoQUZJ UjIsIEFJUlRSLCAwLCAxKQ0KPiA+ICtSRUczMihBRk1SMywgMHg3NCkNCj4gPiArICAgIEZJRUxE KEFGTVIzLCBBTUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoQUZNUjMsIEFNU1JSLCAyMCwg MSkNCj4gPiArICAgIEZJRUxEKEFGTVIzLCBBTUlERSwgMTksIDEpDQo+ID4gKyAgICBGSUVMRChB Rk1SMywgQU1JREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoQUZNUjMsIEFNUlRSLCAwLCAxKQ0K PiA+ICtSRUczMihBRklSMywgMHg3OCkNCj4gPiArICAgIEZJRUxEKEFGSVIzLCBBSUlESCwgMjEs IDExKQ0KPiA+ICsgICAgRklFTEQoQUZJUjMsIEFJU1JSLCAyMCwgMSkNCj4gPiArICAgIEZJRUxE KEFGSVIzLCBBSUlERSwgMTksIDEpDQo+ID4gKyAgICBGSUVMRChBRklSMywgQUlJREwsIDEsIDE4 KQ0KPiA+ICsgICAgRklFTEQoQUZJUjMsIEFJUlRSLCAwLCAxKQ0KPiA+ICtSRUczMihBRk1SNCwg MHg3YykNCj4gPiArICAgIEZJRUxEKEFGTVI0LCBBTUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklF TEQoQUZNUjQsIEFNU1JSLCAyMCwgMSkNCj4gPiArICAgIEZJRUxEKEFGTVI0LCBBTUlERSwgMTks IDEpDQo+ID4gKyAgICBGSUVMRChBRk1SNCwgQU1JREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQo QUZNUjQsIEFNUlRSLCAwLCAxKQ0KPiA+ICtSRUczMihBRklSNCwgMHg4MCkNCj4gPiArICAgIEZJ RUxEKEFGSVI0LCBBSUlESCwgMjEsIDExKQ0KPiA+ICsgICAgRklFTEQoQUZJUjQsIEFJU1JSLCAy MCwgMSkNCj4gPiArICAgIEZJRUxEKEFGSVI0LCBBSUlERSwgMTksIDEpDQo+ID4gKyAgICBGSUVM RChBRklSNCwgQUlJREwsIDEsIDE4KQ0KPiA+ICsgICAgRklFTEQoQUZJUjQsIEFJUlRSLCAwLCAx KQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY2FuX3VwZGF0ZV9pcnEoWGxueFp5bnFNUENBTiAq cykNCj4gPiArew0KPiA+ICsgICAgdW5zaWduZWQgaW50IGlycTsNCj4gPiArDQo+ID4gKyAgICAv KiBXYXRlcm1hcmsgcmVnaXN0ZXIgaW50ZXJydXB0cy4gKi8NCj4gPiArICAgIGlmICgoZmlmbzMy X251bV9mcmVlKCZzLT50eF9maWZvKSAvIENBTl9GUkFNRV9TSVpFKSA+DQo+ID4gKyAgICAgICAg ICAgIEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgV0lSLCBFVykpIHsNCj4gPiArICAgICAgICBB UlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIElOVEVSUlVQVF9TVEFUVVNfUkVHSVNURVIsDQo+IFRY RldNRU1QLCAxKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBpZiAoKGZpZm8zMl9udW1f dXNlZCgmcy0+cnhfZmlmbykgLyBDQU5fRlJBTUVfU0laRSkgPg0KPiA+ICsgICAgICAgICAgICBB UlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIFdJUiwgRlcpKSB7DQo+ID4gKyAgICAgICAgQVJSQVlf RklFTERfRFAzMihzLT5yZWdzLCBJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVSLA0KPiBSWEZXTUZM TCwgMSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLyogUlggSW50ZXJydXB0cy4gKi8N Cj4gPiArICAgIGlmIChmaWZvMzJfbnVtX3VzZWQoJnMtPnJ4X2ZpZm8pID49IENBTl9GUkFNRV9T SVpFKSB7DQo+ID4gKyAgICAgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBJTlRFUlJVUFRf U1RBVFVTX1JFR0lTVEVSLCBSWE5FTVAsDQo+IDEpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAr ICAgIC8qIFRYIGludGVycnVwdHMuICovDQo+ID4gKyAgICBpZiAoZmlmbzMyX2lzX2VtcHR5KCZz LT50eF9maWZvKSkgew0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgSU5U RVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgVFhGRU1QLA0KPiAxKTsNCj4gPiArICAgIH0NCj4gPiAr DQo+ID4gKyAgICBpZiAoZmlmbzMyX2lzX2Z1bGwoJnMtPnR4X2ZpZm8pKSB7DQo+ID4gKyAgICAg ICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVSLCBU WEZMTCwgMSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKGZpZm8zMl9pc19mdWxs KCZzLT50eGhwYl9maWZvKSkgew0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVn cywgSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgVFhCRkxMLA0KPiAxKTsNCj4gPiArICAgIH0N Cj4gPiArDQo+ID4gKyAgICBpcnEgPSBzLT5yZWdzW1JfSU5URVJSVVBUX1NUQVRVU19SRUdJU1RF Ul07DQo+ID4gKyAgICBpcnEgJj0gcy0+cmVnc1tSX0lOVEVSUlVQVF9FTkFCTEVfUkVHSVNURVJd Ow0KPiA+ICsNCj4gPiArICAgIHFlbXVfc2V0X2lycShzLT5pcnEsIGlycSk7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyB2b2lkIGNhbl9pZXJfcG9zdF93cml0ZShSZWdpc3RlckluZm8gKnJl ZywgdWludDY0X3QgdmFsNjQpDQo+ID4gK3sNCj4gPiArICAgIFhsbnhaeW5xTVBDQU4gKnMgPSBY TE5YX1pZTlFNUF9DQU4ocmVnLT5vcGFxdWUpOw0KPiA+ICsNCj4gPiArICAgIGNhbl91cGRhdGVf aXJxKHMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludDY0X3QgY2FuX2ljcl9wcmVf d3JpdGUoUmVnaXN0ZXJJbmZvICpyZWcsIHVpbnQ2NF90IHZhbDY0KQ0KPiA+ICt7DQo+ID4gKyAg ICBYbG54WnlucU1QQ0FOICpzID0gWExOWF9aWU5RTVBfQ0FOKHJlZy0+b3BhcXVlKTsNCj4gPiAr ICAgIHVpbnQzMl90IHZhbCA9IHZhbDY0Ow0KPiA+ICsNCj4gPiArICAgIHMtPnJlZ3NbUl9JTlRF UlJVUFRfU1RBVFVTX1JFR0lTVEVSXSAmPSB+dmFsOw0KPiA+ICsgICAgY2FuX3VwZGF0ZV9pcnEo cyk7DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIGNhbl9jb25maWdfcmVzZXQoWGxueFp5bnFNUENBTiAqcykNCj4gPiArew0KPiA+ICsg ICAgLyogUmVzZXQgYWxsIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gKi8NCj4gPiArICAg IHJlZ2lzdGVyX3Jlc2V0KCZzLT5yZWdfaW5mb1tSX1NPRlRXQVJFX1JFU0VUX1JFR0lTVEVSXSk7 DQo+ID4gKyAgICByZWdpc3Rlcl9yZXNldCgmcy0+cmVnX2luZm9bUl9NT0RFX1NFTEVDVF9SRUdJ U1RFUl0pOw0KPiA+ICsgICAgcmVnaXN0ZXJfcmVzZXQoDQo+ID4gKyAgICAgICAgICAgICAgJnMt DQo+ID5yZWdfaW5mb1tSX0FSQklUUkFUSU9OX1BIQVNFX0JBVURfUkFURV9QUkVTQ0FMRVJfUkVH SVNURVJdKTsNCj4gPiArICAgIHJlZ2lzdGVyX3Jlc2V0KCZzLQ0KPiA+cmVnX2luZm9bUl9BUkJJ VFJBVElPTl9QSEFTRV9CSVRfVElNSU5HX1JFR0lTVEVSXSk7DQo+ID4gKyAgICByZWdpc3Rlcl9y ZXNldCgmcy0+cmVnX2luZm9bUl9TVEFUVVNfUkVHSVNURVJdKTsNCj4gPiArICAgIHJlZ2lzdGVy X3Jlc2V0KCZzLT5yZWdfaW5mb1tSX0lOVEVSUlVQVF9TVEFUVVNfUkVHSVNURVJdKTsNCj4gPiAr ICAgIHJlZ2lzdGVyX3Jlc2V0KCZzLT5yZWdfaW5mb1tSX0lOVEVSUlVQVF9FTkFCTEVfUkVHSVNU RVJdKTsNCj4gPiArICAgIHJlZ2lzdGVyX3Jlc2V0KCZzLT5yZWdfaW5mb1tSX0lOVEVSUlVQVF9D TEVBUl9SRUdJU1RFUl0pOw0KPiA+ICsgICAgcmVnaXN0ZXJfcmVzZXQoJnMtPnJlZ19pbmZvW1Jf V0lSXSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNhbl9jb25maWdfbW9kZShY bG54WnlucU1QQ0FOICpzKQ0KPiA+ICt7DQo+ID4gKyAgICByZWdpc3Rlcl9yZXNldCgmcy0+cmVn X2luZm9bUl9FUlJPUl9DT1VOVEVSX1JFR0lTVEVSXSk7DQo+ID4gKyAgICByZWdpc3Rlcl9yZXNl dCgmcy0+cmVnX2luZm9bUl9FUlJPUl9TVEFUVVNfUkVHSVNURVJdKTsNCj4gPiArDQo+ID4gKyAg ICAvKiBQdXQgWGxueFp5bnFNUENBTiBpbiBjb25maWd1cmF0aW9uIG1vZGUuICovDQo+ID4gKyAg ICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIFNUQVRVU19SRUdJU1RFUiwgQ09ORklHLCAxKTsN Cj4gPiArICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgSU5URVJSVVBUX1NUQVRVU19SRUdJ U1RFUiwgV0tVUCwgMCk7DQo+ID4gKyAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIElOVEVS UlVQVF9TVEFUVVNfUkVHSVNURVIsIFNMUCwgMCk7DQo+ID4gKyAgICBBUlJBWV9GSUVMRF9EUDMy KHMtPnJlZ3MsIElOVEVSUlVQVF9TVEFUVVNfUkVHSVNURVIsIEJTT0ZGLCAwKTsNCj4gPiArICAg IEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgRVJS T1IsIDApOw0KPiA+ICsgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBJTlRFUlJVUFRfU1RB VFVTX1JFR0lTVEVSLCBSWE9GTFcsIDApOw0KPiA+ICsgICAgQVJSQVlfRklFTERfRFAzMihzLT5y ZWdzLCBJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVSLCBSWE9LLCAwKTsNCj4gPiArICAgIEFSUkFZ X0ZJRUxEX0RQMzIocy0+cmVncywgSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgVFhPSywgMCk7 DQo+ID4gKyAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIElOVEVSUlVQVF9TVEFUVVNfUkVH SVNURVIsIEFSQkxTVCwgMCk7DQo+ID4gKw0KPiA+ICsgICAgY2FuX3VwZGF0ZV9pcnEocyk7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9zdGF0dXNfcmVnaXN0ZXJfbW9k ZV9iaXRzKFhsbnhaeW5xTVBDQU4gKnMpDQo+ID4gK3sNCj4gPiArICAgIC8qIFdha2UgdXAgaW50 ZXJydXB0IGJpdC4gKi8NCj4gPiArICAgIGJvb2wgd2FrZXVwX2lycV92YWwgPSAoQVJSQVlfRklF TERfRVgzMihzLT5yZWdzLA0KPiBNT0RFX1NFTEVDVF9SRUdJU1RFUiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNMRUVQKSA9PSAwKSAmJiBBUlJBWV9GSUVMRF9FWDMyKHMtPnJl Z3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUVVNfUkVHSVNURVIsIFNM RUVQKTsNCj4gPiArDQo+ID4gKyAgICAvKiBTbGVlcCBpbnRlcnJ1cHQgYml0LiAqLw0KPiA+ICsg ICAgYm9vbCBzbGVlcF9pcnFfdmFsID0gKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywNCj4gTU9E RV9TRUxFQ1RfUkVHSVNURVIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTEVF UCkgJiYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNUQVRVU19SRUdJU1RFUiwgU0xFRVApID09IDApKTsNCj4gPiArDQo+ID4gKyAg ICAvKiBDbGVhciBwcmV2aW91cyBjb3JlIG1vZGUgc3RhdHVzIGJpdHMuICovDQo+ID4gKyAgICBB UlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIFNUQVRVU19SRUdJU1RFUiwgTEJBQ0ssIDApOw0KPiA+ ICsgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBTVEFUVVNfUkVHSVNURVIsIFNMRUVQLCAw KTsNCj4gPiArICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgU1RBVFVTX1JFR0lTVEVSLCBT Tk9PUCwgMCk7DQo+ID4gKyAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIFNUQVRVU19SRUdJ U1RFUiwgTk9STUFMLCAwKTsNCj4gPiArDQo+ID4gKyAgICAvKiBzZXQgY3VycmVudCBtb2RlIGJp dCBhbmQgZ2VuZXJhdGUgaXJxcyBhY2NvcmRpbmdseS4gKi8NCj4gPiArICAgIGlmIChBUlJBWV9G SUVMRF9FWDMyKHMtPnJlZ3MsIE1PREVfU0VMRUNUX1JFR0lTVEVSLCBMQkFDSykpIHsNCj4gPiAr ICAgICAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIFNUQVRVU19SRUdJU1RFUiwgTEJBQ0ss IDEpOw0KPiA+ICsgICAgfSBlbHNlIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIE1PREVf U0VMRUNUX1JFR0lTVEVSLCBTTEVFUCkpIHsNCj4gPiArICAgICAgICBBUlJBWV9GSUVMRF9EUDMy KHMtPnJlZ3MsIFNUQVRVU19SRUdJU1RFUiwgU0xFRVAsIDEpOw0KPiA+ICsgICAgICAgIEFSUkFZ X0ZJRUxEX0RQMzIocy0+cmVncywgSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgU0xQLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xlZXBfaXJxX3ZhbCk7DQo+ID4gKyAgICB9 IGVsc2UgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgTU9ERV9TRUxFQ1RfUkVHSVNURVIs IFNOT09QKSkNCj4gew0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgU1RB VFVTX1JFR0lTVEVSLCBTTk9PUCwgMSk7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAg IC8qIElmIGFsbCBiaXRzIGFyZSB6ZXJvIHRoZW4gWGxueFp5bnFNUENBTiBpcyBzZXQgaW4gbm9y bWFsIG1vZGUuICovDQo+ID4gKyAgICAgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBTVEFU VVNfUkVHSVNURVIsIE5PUk1BTCwgMSk7DQo+ID4gKyAgICAgICAgLyogU2V0IHdha2V1cCBpbnRl cnJ1cHQgYml0LiAqLw0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgSU5U RVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgV0tVUCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdha2V1cF9pcnFfdmFsKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBjYW5f dXBkYXRlX2lycShzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY2FuX2V4aXRf c2xlZXBfbW9kZShYbG54WnlucU1QQ0FOICpzKQ0KPiA+ICt7DQo+ID4gKyAgICBBUlJBWV9GSUVM RF9EUDMyKHMtPnJlZ3MsIE1PREVfU0VMRUNUX1JFR0lTVEVSLCBTTEVFUCwgMCk7DQo+ID4gKyAg ICB1cGRhdGVfc3RhdHVzX3JlZ2lzdGVyX21vZGVfYml0cyhzKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIHZvaWQgZ2VuZXJhdGVfZnJhbWUocWVtdV9jYW5fZnJhbWUgKmZyYW1lLCB1aW50 MzJfdCAqZGF0YSkNCj4gPiArew0KPiA+ICsgICAgZnJhbWUtPmNhbl9pZCA9IGRhdGFbMF07DQo+ ID4gKyAgICBmcmFtZS0+Y2FuX2RsYyA9IEZJRUxEX0VYMzIoZGF0YVsxXSwgVFhGSUZPX0RMQywg RExDKTsNCj4gPiArDQo+ID4gKyAgICBmcmFtZS0+ZGF0YVswXSA9IEZJRUxEX0VYMzIoZGF0YVsy XSwgVFhGSUZPX0RBVEExLCBEQjMpOw0KPiA+ICsgICAgZnJhbWUtPmRhdGFbMV0gPSBGSUVMRF9F WDMyKGRhdGFbMl0sIFRYRklGT19EQVRBMSwgREIyKTsNCj4gPiArICAgIGZyYW1lLT5kYXRhWzJd ID0gRklFTERfRVgzMihkYXRhWzJdLCBUWEZJRk9fREFUQTEsIERCMSk7DQo+ID4gKyAgICBmcmFt ZS0+ZGF0YVszXSA9IEZJRUxEX0VYMzIoZGF0YVsyXSwgVFhGSUZPX0RBVEExLCBEQjApOw0KPiA+ ICsNCj4gPiArICAgIGZyYW1lLT5kYXRhWzRdID0gRklFTERfRVgzMihkYXRhWzNdLCBUWEZJRk9f REFUQTIsIERCNyk7DQo+ID4gKyAgICBmcmFtZS0+ZGF0YVs1XSA9IEZJRUxEX0VYMzIoZGF0YVsz XSwgVFhGSUZPX0RBVEEyLCBEQjYpOw0KPiA+ICsgICAgZnJhbWUtPmRhdGFbNl0gPSBGSUVMRF9F WDMyKGRhdGFbM10sIFRYRklGT19EQVRBMiwgREI1KTsNCj4gPiArICAgIGZyYW1lLT5kYXRhWzdd ID0gRklFTERfRVgzMihkYXRhWzNdLCBUWEZJRk9fREFUQTIsIERCNCk7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBib29sIHR4X3JlYWR5X2NoZWNrKFhsbnhaeW5xTVBDQU4gKnMpDQo+ID4g K3sNCj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIFNPRlRXQVJFX1JFU0VU X1JFR0lTVEVSLCBTUlNUKSkgew0KPiA+ICsgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNU X0VSUk9SLCAiQXR0ZW1wdGluZyB0byB0cmFuc2ZlciBkYXRhDQo+IHdoaWxlIg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIiBYbG54WnlucU1QQ0FOJWQgaXMgaW4gcmVzZXQgbW9kZVxuIiwg cy0+Y2ZnLmN0cmxfaWR4KTsNCj4gPiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+ID4gKyAgICB9 DQo+ID4gKw0KPiA+ICsgICAgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU09GVFdBUkVf UkVTRVRfUkVHSVNURVIsIENFTikgPT0gMCkgew0KPiA+ICsgICAgICAgIHFlbXVfbG9nX21hc2so TE9HX0dVRVNUX0VSUk9SLCAiQXR0ZW1wdGluZyB0byB0cmFuc2ZlciBkYXRhDQo+IHdoaWxlIg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIiBYbG54WnlucU1QQ0FOJWQgaXMgaW4gY29uZmln dXJhdGlvbiBtb2RlLlJlc2V0IHRoZSINCj4gPiArICAgICAgICAgICAgICAgICAgICAgICIgY29y ZSBzbyBvcGVyYXRpb25zIGNhbiBzdGFydCBmcmVzaFxuIiwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgIHMtPmNmZy5jdHJsX2lkeCk7DQo+ID4gKyAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIFNU QVRVU19SRUdJU1RFUiwgU05PT1ApKSB7DQo+ID4gKyAgICAgICAgcWVtdV9sb2dfbWFzayhMT0df R1VFU1RfRVJST1IsICJBdHRlbXB0aW5nIHRvIHRyYW5zZmVyIGRhdGENCj4gd2hpbGUiDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICIgWGxueFp5bnFNUENBTiVkIGlzIGluIFNOT09QIE1P REVcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jZmcuY3RybF9pZHgpOw0K PiA+ICsgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBy ZXR1cm4gdHJ1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgdHJhbnNmZXJfZmlm byhYbG54WnlucU1QQ0FOICpzLCBGaWZvMzIgKmZpZm8pDQo+ID4gK3sNCj4gPiArICAgIHFlbXVf Y2FuX2ZyYW1lIGZyYW1lOw0KPiA+ICsgICAgdWludDMyX3QgZGF0YVtDQU5fRlJBTUVfU0laRV07 DQo+ID4gKyAgICBpbnQgaTsNCj4gPiArICAgIGJvb2wgY2FuX3R4ID0gdHhfcmVhZHlfY2hlY2so cyk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKGNhbl90eCkgew0KPiA+ICsgICAgICAgIHdoaWxlICgh ZmlmbzMyX2lzX2VtcHR5KGZpZm8pKSB7DQo+ID4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBDQU5fRlJBTUVfU0laRTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICBkYXRhW2ldID0g ZmlmbzMyX3BvcChmaWZvKTsNCj4gPiArICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU1RBVFVTX1JFR0lTVEVSLCBMQkFD SykpIHsNCj4gPiArICAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAgICAgKiBD b250cm9sbGVyIGluIGxvb3BiYWNrLiBJbiBMb29wYmFjayBtb2RlLCB0aGUgWGxueFp5bnFNUENB Tg0KPiA+ICsgICAgICAgICAgICAgICAgICogY29yZSB0cmFuc21pdHMgYSByZWNlc3NpdmUgYml0 c3RyZWFtIG9uIHRvIHRoZSBYbG54WnlucU1QQ0FODQo+ID4gKyAgICAgICAgICAgICAgICAgKiBC dXMuIEFueSBtZXNzYWdlIHRyYW5zbWl0dGVkIGlzIGxvb3BlZCBiYWNrIHRvIHRoZSBSWCBsaW5l DQo+ID4gKyAgICAgICAgICAgICAgICAgKiBhbmQgYWNrbm93bGVkZ2VkLiBUaGUgWGxueFp5bnFN UENBTiBjb3JlIHJlY2VpdmVzIGFueQ0KPiA+ICsgICAgICAgICAgICAgICAgICogbWVzc2FnZSB0 aGF0IGl0IHRyYW5zbWl0cy4NCj4gPiArICAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAg ICAgICAgICAgaWYgKGZpZm8zMl9pc19mdWxsKCZzLT5yeF9maWZvKSkgew0KPiA+ICsgICAgICAg ICAgICAgICAgICAgIERCX1BSSU5UKCJMb29wYmFjazogUlggRklGTyBpcyBmdWxsLiINCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVFggRklGTyB3aWxsIGJlIGZsdXNoZWQuXG4i KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgQVJSQVlfRklFTERfRFAzMihzLT5y ZWdzLCBJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVSLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJYT0ZMVywgMSk7DQo+ID4gKyAgICAgICAgICAgICAgICB9IGVs c2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBDQU5fRlJBTUVf U0laRTsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZpZm8zMl9wdXNoKCZz LT5yeF9maWZvLCBkYXRhW2ldKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgSU5URVJS VVBUX1NUQVRVU19SRUdJU1RFUiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSWE9LLCAxKTsNCj4gPiArICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAg ICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgIC8qIE5vcm1hbCBtb2RlIFR4LiAqLw0K PiA+ICsgICAgICAgICAgICAgICAgZ2VuZXJhdGVfZnJhbWUoJmZyYW1lLCBkYXRhKTsNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgICAgICBjYW5fYnVzX2NsaWVudF9zZW5kKCZzLT5idXNfY2xpZW50 LCAmZnJhbWUsIDEpOw0KPiANCj4gDQo+IEkgaGFkIGEgcXVpY2sgZ2xhbmNlIGF0IGNhbl9idXNf Y2xpZW50X3NlbmQoKToNCj4gDQo+IEl0IGRpZDoNCj4gDQo+ICDCoMKgwqAgUVRBSUxRX0ZPUkVB Q0gocGVlciwgJmJ1cy0+Y2xpZW50cywgbmV4dCkgew0KPiAgwqDCoMKgwqDCoMKgwqAgaWYgKHBl ZXItPmluZm8tPmNhbl9yZWNlaXZlKHBlZXIpKSB7DQo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChwZWVyID09IGNsaWVudCkgew0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qIE5vIGxvb3BiYWNrIHN1cHBvcnQgZm9yIG5vdyAqLw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChwZWVyLT5pbmZvLT5yZWNlaXZlKHBlZXIsIGZyYW1l cywgZnJhbWVzX2NudCkgPiAwKSB7DQo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0ID0gMTsNCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiAgwqDCoMKgwqDCoMKgwqAg fQ0KPiAgwqDCoMKgIH0NCj4gDQo+IHdoaWNoIGxvb2tzIG5vdCBjb3JyZWN0LiBXZSBuZWVkIHRv IHVzZSBxZW11X3NlbmRfcGFja2V0KCkgaW5zdGVhZCBvZg0KPiBjYWxsaW5nIHBlZXItPmluZm8t PnJlY2VpdmUoKSBkaXJlY3RseSB3aGljaCBieXBhc3NlcyBmaWx0ZXJzIGNvbXBsZXRlbHkuDQpb VmlrcmFtIEdhcmh3YWxdIEkgYW0gbG9va2luZyBpbnRvIHRoaXMuIFdpbGwgYWRkcmVzcyBpdCBp biB2Mi4NCj4gDQo+IA0KPiA+ICsgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIElOVEVSUlVQVF9TVEFUVVNf UkVHSVNURVIsIFRYT0ssIDEpOw0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVn cywgU1RBVFVTX1JFR0lTVEVSLCBUWEJGTEwsIDApOw0KPiA+ICsNCj4gPiArICAgICAgICBpZiAo QVJSQVlfRklFTERfRVgzMihzLT5yZWdzLCBTVEFUVVNfUkVHSVNURVIsIFNMRUVQKSkgew0KPiA+ ICsgICAgICAgICAgICBjYW5fZXhpdF9zbGVlcF9tb2RlKHMpOw0KPiA+ICsgICAgICAgIH0NCj4g PiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgREJfUFJJTlQoIkNBTiBpcyBub3QgZW5hYmxl ZCBmb3IgZGF0YSB0cmFuc2Zlci5cbiIpOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGNh bl91cGRhdGVfaXJxKHMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludDY0X3QgY2Fu X3Nycl9wcmVfd3JpdGUoUmVnaXN0ZXJJbmZvICpyZWcsIHVpbnQ2NF90IHZhbDY0KQ0KPiA+ICt7 DQo+ID4gKyAgICBYbG54WnlucU1QQ0FOICpzID0gWExOWF9aWU5RTVBfQ0FOKHJlZy0+b3BhcXVl KTsNCj4gPiArICAgIHVpbnQzMl90IHZhbCA9IHZhbDY0Ow0KPiA+ICsNCj4gPiArICAgIEFSUkFZ X0ZJRUxEX0RQMzIocy0+cmVncywgU09GVFdBUkVfUkVTRVRfUkVHSVNURVIsIENFTiwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfRVgzMih2YWwsIFNPRlRXQVJFX1JFU0VUX1JF R0lTVEVSLCBDRU4pKTsNCj4gPiArDQo+ID4gKyAgICBpZiAoRklFTERfRVgzMih2YWwsIFNPRlRX QVJFX1JFU0VUX1JFR0lTVEVSLCBTUlNUKSkgew0KPiA+ICsgICAgICAgIERCX1BSSU5UKCJSZXNl dHRpbmcgWGxueFp5bnFNUENBTiVkXG4iLCBzLT5jZmcuY3RybF9pZHgpOw0KPiA+ICsNCj4gPiAr ICAgICAgICAvKiBGaXJzdCwgY29yZSB3aWxsIGRvIHNvZnR3YXJlIHJlc2V0IHRoZW4gd2lsbCBl bnRlciBpbiBjb25maWcgbW9kZS4gKi8NCj4gPiArICAgICAgICBjYW5fY29uZmlnX3Jlc2V0KHMp Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJl Z3MsIFNPRlRXQVJFX1JFU0VUX1JFR0lTVEVSLCBDRU4pID09IDApIHsNCj4gPiArICAgICAgICBj YW5fY29uZmlnX21vZGUocyk7DQo+ID4gKw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICAvKg0KPiA+ICsgICAgICAgICAqIExlYXZlIGNvbmZpZyBtb2RlLiBOb3cgWGxueFp5bnFNUENB TiBjb3JlIHdpbGwgZW50ZXIgTm9ybWFsLA0KPiBTbGVlcCwNCj4gPiArICAgICAgICAgKiBzbm9v cCBvciBMb29wYmFjayBtb2RlIGRlcGVuZGluZyB1cG9uIExCQUNLLCBTTEVFUCwgU05PT1ANCj4g cmVnc2l0ZXINCj4gPiArICAgICAgICAgKiBzdGF0ZXMuDQo+ID4gKyAgICAgICAgICovDQo+ID4g KyAgICAgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBTVEFUVVNfUkVHSVNURVIsIENPTkZJ RywgMCk7DQo+ID4gKw0KPiA+ICsgICAgICAgIC8qIFhsbnhaeW5xTVAgQ0FOIGlzIG91dCBvZiBj b25maWcgbW9kZS4gaXQgd2lsbCBzZW5kIHBlbmRpbmcgZGF0YS4gKi8NCj4gPiArICAgICAgICB0 cmFuc2Zlcl9maWZvKHMsICZzLT50eGhwYl9maWZvKTsNCj4gPiArICAgICAgICB0cmFuc2Zlcl9m aWZvKHMsICZzLT50eF9maWZvKTsNCj4gPiArDQo+ID4gKyAgICAgICAgdXBkYXRlX3N0YXR1c19y ZWdpc3Rlcl9tb2RlX2JpdHMocyk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJu IHMtPnJlZ3NbUl9TT0ZUV0FSRV9SRVNFVF9SRUdJU1RFUl07DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB1aW50NjRfdCBjYW5fbXNyX3ByZV93cml0ZShSZWdpc3RlckluZm8gKnJlZywgdWlu dDY0X3QgdmFsNjQpDQo+ID4gK3sNCj4gPiArICAgIFhsbnhaeW5xTVBDQU4gKnMgPSBYTE5YX1pZ TlFNUF9DQU4ocmVnLT5vcGFxdWUpOw0KPiA+ICsgICAgdWludDMyX3QgdmFsID0gdmFsNjQ7DQo+ ID4gKyAgICB1aW50OF90IG11bHRpX21vZGUgPSAwOw0KPiA+ICsNCj4gPiArICAgIC8qDQo+ID4g KyAgICAgKiBNdWx0aXBsZSBtb2RlIHNldCBjaGVjay4gVGhpcyBpcyBkb25lIHRvIG1ha2Ugc3Vy ZSB1c2VyIGRvZXNuJ3Qgc2V0DQo+ID4gKyAgICAgKiBtdWx0aXBsZSBtb2Rlcy4NCj4gPiArICAg ICAqLw0KPiA+ICsgICAgbXVsdGlfbW9kZSA9IEZJRUxEX0VYMzIodmFsLCBNT0RFX1NFTEVDVF9S RUdJU1RFUiwgTEJBQ0spICsNCj4gPiArICAgICAgICAgICAgICAgICBGSUVMRF9FWDMyKHZhbCwg TU9ERV9TRUxFQ1RfUkVHSVNURVIsIFNMRUVQKSArDQo+ID4gKyAgICAgICAgICAgICAgICAgRklF TERfRVgzMih2YWwsIE1PREVfU0VMRUNUX1JFR0lTVEVSLCBTTk9PUCk7DQo+ID4gKw0KPiA+ICsg ICAgaWYgKG11bHRpX21vZGUgPiAxKSB7DQo+ID4gKyAgICAgICAgcWVtdV9sb2dfbWFzayhMT0df R1VFU1RfRVJST1IsICJBdHRlbXB0aW5nIHRvIGNvbmZpZ3VyZQ0KPiBzZXZlcmFsIG1vZGVzICIN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgInNpbXVsdGFuZW91c2x5LiBPbmUgbW9kZSB3aWxs IGJlIHNlbGVjdGVkIGFjY29yZGluZyB0byAiDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICJ0 aGVpciBwcmlvcml0eTogTEJBQ0sgPiBTTEVFUCA+IFNOT09QLlxuICIpOw0KPiA+ICsgICAgfQ0K PiA+ICsNCj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIFNPRlRXQVJFX1JF U0VUX1JFR0lTVEVSLCBDRU4pID09IDApIHsNCj4gPiArICAgICAgICAvKiBXZSBhcmUgaW4gY29u ZmlndXJhdGlvbiBtb2RlLCBhbnkgbW9kZSBjYW4gYmUgc2VsZWN0ZWQuICovDQo+ID4gKyAgICAg ICAgcy0+cmVnc1tSX01PREVfU0VMRUNUX1JFR0lTVEVSXSA9IHZhbDsNCj4gPiArICAgIH0gZWxz ZSB7DQo+ID4gKyAgICAgICAgYm9vbCBzbGVlcF9tb2RlX2JpdCA9IEZJRUxEX0VYMzIodmFsLCBN T0RFX1NFTEVDVF9SRUdJU1RFUiwNCj4gU0xFRVApOw0KPiA+ICsNCj4gPiArICAgICAgICBBUlJB WV9GSUVMRF9EUDMyKHMtPnJlZ3MsIE1PREVfU0VMRUNUX1JFR0lTVEVSLCBTTEVFUCwNCj4gc2xl ZXBfbW9kZV9iaXQpOw0KPiA+ICsNCj4gPiArICAgICAgICBpZiAoRklFTERfRVgzMih2YWwsIE1P REVfU0VMRUNUX1JFR0lTVEVSLCBMQkFDSykpIHsNCj4gPiArICAgICAgICAgICAgcWVtdV9sb2df bWFzayhMT0dfR1VFU1RfRVJST1IsICJBdHRlbXB0aW5nIHRvIHNldCBMQkFDSw0KPiBtb2RlICIN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBzZXR0aW5nIENFTiBiaXQg YXMgMFxuIik7DQo+ID4gKyAgICAgICAgfSBlbHNlIGlmIChGSUVMRF9FWDMyKHZhbCwgTU9ERV9T RUxFQ1RfUkVHSVNURVIsIFNOT09QKSkgew0KPiA+ICsgICAgICAgICAgICBxZW11X2xvZ19tYXNr KExPR19HVUVTVF9FUlJPUiwgIkF0dGVtcHRpbmcgdG8gc2V0IFNOT09QDQo+IG1vZGUgIg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBzZXR0aW5nIENFTiBiaXQg YXMgMFxuIik7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICAgIHVwZGF0ZV9zdGF0dXNfcmVn aXN0ZXJfbW9kZV9iaXRzKHMpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcmV0dXJuIHMtPnJlZ3Nb Ul9NT0RFX1NFTEVDVF9SRUdJU1RFUl07DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50 NjRfdCBjYW5fYnJwcl9wcmVfd3JpdGUoUmVnaXN0ZXJJbmZvICAqcmVnLCB1aW50NjRfdCB2YWw2 NCkNCj4gPiArew0KPiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihy ZWctPm9wYXF1ZSk7DQo+ID4gKyAgICB1aW50MzJfdCB2YWwgPSB2YWw2NDsNCj4gPiArDQo+ID4g KyAgICAvKiBPbmx5IGFsbG93IHdyaXRlcyB3aGVuIGluIGNvbmZpZyBtb2RlLiAqLw0KPiA+ICsg ICAgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU09GVFdBUkVfUkVTRVRfUkVHSVNURVIs IENFTikpIHsNCj4gPiArICAgICAgICB2YWwgPSBzLQ0KPiA+cmVnc1tSX0FSQklUUkFUSU9OX1BI QVNFX0JBVURfUkFURV9QUkVTQ0FMRVJfUkVHSVNURVJdOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICAgIHJldHVybiB2YWw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50NjRfdCBj YW5fYnRyX3ByZV93cml0ZShSZWdpc3RlckluZm8gICpyZWcsIHVpbnQ2NF90IHZhbDY0KQ0KPiA+ ICt7DQo+ID4gKyAgICBYbG54WnlucU1QQ0FOICpzID0gWExOWF9aWU5RTVBfQ0FOKHJlZy0+b3Bh cXVlKTsNCj4gPiArICAgIHVpbnQzMl90IHZhbCA9IHZhbDY0Ow0KPiA+ICsNCj4gPiArICAgIC8q IE9ubHkgYWxsb3cgd3JpdGVzIHdoZW4gaW4gY29uZmlnIG1vZGUuICovDQo+ID4gKyAgICBpZiAo QVJSQVlfRklFTERfRVgzMihzLT5yZWdzLCBTT0ZUV0FSRV9SRVNFVF9SRUdJU1RFUiwgQ0VOKSkg ew0KPiA+ICsgICAgICAgIHZhbCA9IHMtPnJlZ3NbUl9BUkJJVFJBVElPTl9QSEFTRV9CSVRfVElN SU5HX1JFR0lTVEVSXTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICByZXR1cm4gdmFsOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludDY0X3QgY2FuX3Rjcl9wcmVfd3JpdGUoUmVn aXN0ZXJJbmZvICAqcmVnLCB1aW50NjRfdCB2YWw2NCkNCj4gPiArew0KPiA+ICsgICAgWGxueFp5 bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihyZWctPm9wYXF1ZSk7DQo+ID4gKyAgICB1aW50 MzJfdCB2YWwgPSB2YWw2NDsNCj4gPiArDQo+ID4gKyAgICBpZiAoRklFTERfRVgzMih2YWwsIFRJ TUVTVEFNUF9SRUdJU1RFUiwgQ1RTKSkgew0KPiA+ICsgICAgICAgIHMtPnJ4X3RpbWVfc3RhbXAg PSAwOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCB1cGRhdGVfcnhfZmlmbyhYbG54WnlucU1QQ0FOICpzLCBjb25z dCBxZW11X2Nhbl9mcmFtZQ0KPiAqZnJhbWUpDQo+ID4gK3sNCj4gPiArICAgIHVpbnQzMl90IGZp bHRlcl9wYXNzID0gMDsNCj4gPiArDQo+ID4gKyAgICAvKiBJZiBubyBmaWx0ZXIgaXMgZW5hYmxl ZC4gTWVzc2FnZSB3aWxsIGJlIHN0b3JlZCBpbiBGSUZPLiAqLw0KPiA+ICsgICAgaWYgKCEoKEFS UkFZX0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUYxKSkgfA0KPiA+ICsgICAgICAgKEFSUkFZ X0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUYyKSkgfA0KPiA+ICsgICAgICAgKEFSUkFZX0ZJ RUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUYzKSkgfA0KPiA+ICsgICAgICAgKEFSUkFZX0ZJRUxE X0VYMzIocy0+cmVncywgQUZSLCBVQUY0KSkpKSB7DQo+ID4gKyAgICAgICAgZmlsdGVyX3Bhc3Mg PSAxOw0KPiANCj4gDQo+IEFueSByZWFzb24gZm9yIG5vdCBkb2luZyBzdWNoIGZpbHRlcmluZyBp biB4bG54X3p5bnFtcF9jYW5fY2FuX3JlY2VpdmUoKT8NCltWaWtyYW0gR2FyaHdhbF0gSW50ZW50 aW9uIG9mIHhsbnhfenlucW1wX2Nhbl9jYW5fcmVjZWl2ZSgpIGlzIHRvIHNlZSBpZiBDQU4gaXMg ZW5hYmxlZCB0byByZWNlaXZlIHRoZSBkYXRhIG9yIG5vdC4gDQoJCVJlYXNvbiBJIHB1dCBpcyBo ZXJlIGJlY2F1c2UgaGVyZSB3ZSBiYXNpY2FsbHkgZmlsdGVyIGFuZCBzdG9yZSBhbGwgcmVjZWl2 ZWQgbWVzc2FnZSBoZXJlIG9ubHkuIA0KPiANCj4gDQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsg ICAgLyoNCj4gPiArICAgICAqIE1lc3NhZ2VzIHRoYXQgcGFzcyBhbnkgb2YgdGhlIGFjY2VwdGFu Y2UgZmlsdGVycyB3aWxsIGJlIHN0b3JlZCBpbg0KPiA+ICsgICAgICogdGhlIFJYIEZJRk8uDQo+ ID4gKyAgICAgKi8NCj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIEFGUiwg VUFGMSkpIHsNCj4gPiArICAgICAgICB1aW50MzJfdCBpZF9tYXNrZWQgPSBzLT5yZWdzW1JfQUZN UjFdICYgZnJhbWUtPmNhbl9pZDsNCj4gPiArICAgICAgICB1aW50MzJfdCBmaWx0ZXJfaWRfbWFz a2VkID0gcy0+cmVnc1tSX0FGTVIxXSAmIHMtPnJlZ3NbUl9BRklSMV07DQo+ID4gKw0KPiA+ICsg ICAgICAgIGlmIChmaWx0ZXJfaWRfbWFza2VkID09IGlkX21hc2tlZCkgew0KPiA+ICsgICAgICAg ICAgICBmaWx0ZXJfcGFzcyA9IDE7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsN Cj4gPiArICAgIGlmIChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIEFGUiwgVUFGMikpIHsNCj4g PiArICAgICAgICB1aW50MzJfdCBpZF9tYXNrZWQgPSBzLT5yZWdzW1JfQUZNUjJdICYgZnJhbWUt PmNhbl9pZDsNCj4gPiArICAgICAgICB1aW50MzJfdCBmaWx0ZXJfaWRfbWFza2VkID0gcy0+cmVn c1tSX0FGTVIyXSAmIHMtPnJlZ3NbUl9BRklSMl07DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmIChm aWx0ZXJfaWRfbWFza2VkID09IGlkX21hc2tlZCkgew0KPiA+ICsgICAgICAgICAgICBmaWx0ZXJf cGFzcyA9IDE7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlm IChBUlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIEFGUiwgVUFGMykpIHsNCj4gPiArICAgICAgICB1 aW50MzJfdCBpZF9tYXNrZWQgPSBzLT5yZWdzW1JfQUZNUjNdICYgZnJhbWUtPmNhbl9pZDsNCj4g PiArICAgICAgICB1aW50MzJfdCBmaWx0ZXJfaWRfbWFza2VkID0gcy0+cmVnc1tSX0FGTVIzXSAm IHMtPnJlZ3NbUl9BRklSM107DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmIChmaWx0ZXJfaWRfbWFz a2VkID09IGlkX21hc2tlZCkgew0KPiA+ICsgICAgICAgICAgICBmaWx0ZXJfcGFzcyA9IDE7DQo+ ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmIChBUlJBWV9GSUVM RF9FWDMyKHMtPnJlZ3MsIEFGUiwgVUFGNCkpIHsNCj4gPiArICAgICAgICB1aW50MzJfdCBpZF9t YXNrZWQgPSBzLT5yZWdzW1JfQUZNUjRdICYgZnJhbWUtPmNhbl9pZDsNCj4gPiArICAgICAgICB1 aW50MzJfdCBmaWx0ZXJfaWRfbWFza2VkID0gcy0+cmVnc1tSX0FGTVI0XSAmIHMtPnJlZ3NbUl9B RklSNF07DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmIChmaWx0ZXJfaWRfbWFza2VkID09IGlkX21h c2tlZCkgew0KPiA+ICsgICAgICAgICAgICBmaWx0ZXJfcGFzcyA9IDE7DQo+ID4gKyAgICAgICAg fQ0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIC8qIFN0b3JlIHRoZSBtZXNzYWdlIGluIGZp Zm8gaWYgaXQgcGFzc2VkIHRocm91Z2ggYW55IG9mIHRoZSBmaWx0ZXJzLiAqLw0KPiA+ICsgICAg aWYgKGZpbHRlcl9wYXNzICYmIGZyYW1lLT5jYW5fZGxjIDw9IE1BWF9ETEMpIHsNCj4gPiArDQo+ ID4gKyAgICAgICAgaWYgKGZpZm8zMl9pc19mdWxsKCZzLT5yeF9maWZvKSkgew0KPiA+ICsgICAg ICAgICAgICBEQl9QUklOVCgiUlggRklGTyBpcyBmdWxsLlxuIik7DQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIElOVEVSUlVQVF9TVEFUVVNfUkVHSVNU RVIsDQo+IFJYT0ZMVywgMSk7DQo+ID4gKyAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAg ICAgcy0+cnhfdGltZV9zdGFtcCArPSAxOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgZmlmbzMy X3B1c2goJnMtPnJ4X2ZpZm8sIGZyYW1lLT5jYW5faWQpOw0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgZmlmbzMyX3B1c2goJnMtPnJ4X2ZpZm8sIChkZXBvc2l0MzIoMCwgUl9SWEZJRk9fRExDX0RM Q19TSElGVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUl9SWEZJRk9fRExDX0RMQ19MRU5HVEgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5jYW5fZGxjKSB8DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwb3NpdDMyKDAsIFJfUlhGSUZPX0RM Q19SWFRfU0hJRlQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJfUlhGSUZPX0RMQ19SWFRfTEVOR1RILA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5yeF90aW1lX3N0YW1wKSkpOw0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgLyogRmlyc3QgMzIgYml0IG9mIHRoZSBkYXRhLiAqLw0KPiA+ ICsgICAgICAgICAgICBmaWZvMzJfcHVzaCgmcy0+cnhfZmlmbywgKGRlcG9zaXQzMigwLA0KPiBS X1RYRklGT19EQVRBMV9EQjNfU0hJRlQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSX1RYRklGT19EQVRBMV9EQjNfTEVOR1RILA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRhdGFbMF0pIHwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBvc2l0MzIoMCwgUl9UWEZJRk9f REFUQTFfREIyX1NISUZULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUl9UWEZJRk9fREFUQTFfREIyX0xFTkdUSCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kYXRhWzFdKSB8DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwb3NpdDMyKDAsIFJfVFhGSUZPX0RBVEExX0RC MV9TSElGVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJf VFhGSUZPX0RBVEExX0RCMV9MRU5HVEgsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcmFtZS0+ZGF0YVsyXSkgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlcG9zaXQzMigwLCBSX1RYRklGT19EQVRBMV9EQjBfU0hJRlQs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSX1RYRklGT19E QVRBMV9EQjBfTEVOR1RILA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZnJhbWUtPmRhdGFbM10pKSk7DQo+ID4gKyAgICAgICAgICAgIC8qIExhc3QgMzIgYml0 IG9mIHRoZSBkYXRhLiAqLw0KPiA+ICsgICAgICAgICAgICBmaWZvMzJfcHVzaCgmcy0+cnhfZmlm bywgKGRlcG9zaXQzMigwLA0KPiBSX1RYRklGT19EQVRBMl9EQjdfU0hJRlQsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUl9UWEZJRk9fREFUQTJfREI3X0xF TkdUSCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt ZS0+ZGF0YVs0XSkgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcG9zaXQzMigwLCBSX1RYRklGT19EQVRBMl9EQjZfU0hJRlQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUl9UWEZJRk9fREFUQTJfREI2X0xFTkdUSCwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZGF0 YVs1XSkgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcG9z aXQzMigwLCBSX1RYRklGT19EQVRBMl9EQjVfU0hJRlQsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUl9UWEZJRk9fREFUQTJfREI1X0xFTkdUSCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZGF0YVs2XSkg fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcG9zaXQzMigw LCBSX1RYRklGT19EQVRBMl9EQjRfU0hJRlQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJfVFhGSUZPX0RBVEEyX0RCNF9MRU5HVEgsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5kYXRhWzddKSkpOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgQVJSQVlfRklFTERfRFAzMihzLT5yZWdzLCBJTlRFUlJV UFRfU1RBVFVTX1JFR0lTVEVSLCBSWE9LLA0KPiAxKTsNCj4gPiArICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgIGNhbl91cGRhdGVfaXJxKHMpOw0KPiA+ICsNCj4gPiArICAgIH0gZWxzZSB7 DQo+ID4gKyAgICAgICAgREJfUFJJTlQoIk1lc3NhZ2UgZGlkbid0IHBhc3MgdGhyb3VnaCBhbnkg ZmlsdGVyIg0KPiA+ICsgICAgICAgICAgICAgICAgICAib3IgZGxjIGlzIG5vdCBpbiByYW5nZVxu Iik7DQo+ID4gKyAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50NjRfdCBjYW5f cnhmaWZvX3ByZV9yZWFkKFJlZ2lzdGVySW5mbyAqcmVnLCB1aW50NjRfdCB2YWw2NCkNCj4gPiAr ew0KPiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihyZWctPm9wYXF1 ZSk7DQo+ID4gKyAgICB1aW50MzJfdCByID0gMDsNCj4gPiArDQo+ID4gKyAgICBpZiAoIWZpZm8z Ml9pc19lbXB0eSgmcy0+cnhfZmlmbykpIHsNCj4gPiArICAgICAgICByID0gZmlmbzMyX3BvcCgm cy0+cnhfZmlmbyk7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIERCX1BSSU5UKCJO byBtZXNzYWdlIGluIFJYRklGT1xuIik7DQo+ID4gKw0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxE X0RQMzIocy0+cmVncywgSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwgUlhVRkxXLA0KPiAxKTsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBjYW5fdXBkYXRlX2lycShzKTsNCj4gPiArICAg IHJldHVybiByOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjYW5fZmlsdGVyX2Vu YWJsZV9wb3N0X3dyaXRlKFJlZ2lzdGVySW5mbyAqcmVnLCB1aW50NjRfdCB2YWw2NCkNCj4gPiAr ew0KPiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihyZWctPm9wYXF1 ZSk7DQo+ID4gKw0KPiA+ICsgICAgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBV QUYxKSAmJg0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUYy KSAmJg0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUYzKSAm Jg0KPiA+ICsgICAgICAgIEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgQUZSLCBVQUY0KSkgew0K PiA+ICsNCj4gPiArICAgICAgICBBUlJBWV9GSUVMRF9EUDMyKHMtPnJlZ3MsIFNUQVRVU19SRUdJ U1RFUiwgQUNGQlNZLCAxKTsNCj4gPiArDQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAg IEFSUkFZX0ZJRUxEX0RQMzIocy0+cmVncywgU1RBVFVTX1JFR0lTVEVSLCBBQ0ZCU1ksIDApOw0K PiA+ICsgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdWludDY0X3QgY2FuX2ZpbHRl cl9tYXNrX3ByZV93cml0ZShSZWdpc3RlckluZm8gKnJlZywgdWludDY0X3QNCj4gdmFsNjQpDQo+ ID4gK3sNCj4gPiArICAgIFhsbnhaeW5xTVBDQU4gKnMgPSBYTE5YX1pZTlFNUF9DQU4ocmVnLT5v cGFxdWUpOw0KPiA+ICsgICAgdWludDMyX3QgcmVnX2lkeCA9IChyZWctPmFjY2Vzcy0+YWRkcikg LyA0Ow0KPiA+ICsgICAgdWludDMyX3QgdmFsID0gdmFsNjQ7DQo+ID4gKyAgICB1aW50MzJfdCBm aWx0ZXJfbnVtYmVyID0gKHJlZ19pZHggLSBSX0FGTVIxKSAvIDI7DQo+ID4gKw0KPiA+ICsgICAg LyogbW9kaWZ5IGFuIGFjY2VwdGFuY2UgZmlsdGVyLCB0aGUgY29ycmVzcG9uZGluZyBVQUYgYml0 IHNob3VsZCBiZSAnMC4nDQo+ICovDQo+ID4gKyAgICBpZiAoIShzLT5yZWdzW1JfQUZSXSAmICgx IDw8IGZpbHRlcl9udW1iZXIpKSkgew0KPiA+ICsgICAgICAgIHMtPnJlZ3NbcmVnX2lkeF0gPSB2 YWw7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIERCX1BSSU5UKCJBY2NlcHRhbmNl IGZpbHRlciAlZCBtYXNrIGlzIG5vdCBzZXQgYXMgaXQncyBjb3JyZXNwb25kaW5nICINCj4gPiAr ICAgICAgICAgICAgICAgICAiVUFGIGJpdCBpcyBub3Qgc2V0IHRvIDBcbiIsIGZpbHRlcl9udW1i ZXIgKyAxKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICByZXR1cm4gcy0+cmVnc1tyZWdf aWR4XTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHVpbnQ2NF90IGNhbl9maWx0ZXJfaWRf cHJlX3dyaXRlKFJlZ2lzdGVySW5mbyAqcmVnLCB1aW50NjRfdCB2YWw2NCkNCj4gPiArew0KPiA+ ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihyZWctPm9wYXF1ZSk7DQo+ ID4gKyAgICB1aW50MzJfdCByZWdfaWR4ID0gKHJlZy0+YWNjZXNzLT5hZGRyKSAvIDQ7DQo+ID4g KyAgICB1aW50MzJfdCB2YWwgPSB2YWw2NDsNCj4gPiArICAgIHVpbnQzMl90IGZpbHRlcl9udW1i ZXIgPSAocmVnX2lkeCAtIFJfQUZJUjEpIC8gMjsNCj4gPiArDQo+ID4gKyAgICBpZiAoIShzLT5y ZWdzW1JfQUZSXSAmICgxIDw8IGZpbHRlcl9udW1iZXIpKSkgew0KPiA+ICsgICAgICAgIHMtPnJl Z3NbcmVnX2lkeF0gPSB2YWw7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIERCX1BS SU5UKCJBY2NlcHRhbmNlIGZpbHRlciAlZCBpZCBpcyBub3Qgc2V0IGFzIGl0J3MgY29ycmVzcG9u ZGluZyAiDQo+ID4gKyAgICAgICAgICAgICAgICAgIlVBRiBiaXQgaXMgbm90IHNldCB0byAwXG4i LCBmaWx0ZXJfbnVtYmVyICsgMSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgcmV0dXJu IHMtPnJlZ3NbcmVnX2lkeF07DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNhbl90 eF9wb3N0X3dyaXRlKFJlZ2lzdGVySW5mbyAqcmVnLCB1aW50NjRfdCB2YWw2NCkNCj4gPiArew0K PiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihyZWctPm9wYXF1ZSk7 DQo+ID4gKyAgICB1aW50MzJfdCB2YWwgPSB2YWw2NDsNCj4gPiArDQo+ID4gKyAgICBib29sIGlz X3R4aHBiID0gcmVnLT5hY2Nlc3MtPmFkZHIgPiBBX1RYRklGT19EQVRBMjsNCj4gPiArDQo+ID4g KyAgICBib29sIGluaXRpYXRlX3RyYW5zZmVyID0gKHJlZy0+YWNjZXNzLT5hZGRyID09IEFfVFhG SUZPX0RBVEEyKSB8fA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWctPmFj Y2Vzcy0+YWRkciA9PSBBX1RYSFBCX0RBVEEyKTsNCj4gPiArDQo+ID4gKyAgICBGaWZvMzIgKmYg PSBpc190eGhwYiA/ICZzLT50eGhwYl9maWZvIDogJnMtPnR4X2ZpZm87DQo+ID4gKw0KPiA+ICsg ICAgREJfUFJJTlQoIlRYIEZJRk8gd3JpdGUgZm9yIENBTiVkXG4iLCBzLT5jZmcuY3RybF9pZHgp Ow0KPiA+ICsNCj4gPiArICAgIGlmICghZmlmbzMyX2lzX2Z1bGwoZikpIHsNCj4gPiArICAgICAg ICBmaWZvMzJfcHVzaChmLCB2YWwpOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICBE Ql9QUklOVCgiVFggRklGTyBpcyBmdWxsLlxuIik7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsg ICAgLyogSW5pdGlhdGUgdGhlIG1lc3NhZ2Ugc2VuZCBpZiBUWCByZWdpc3RlciBpcyB3cml0dGVu LiAqLw0KPiA+ICsgICAgaWYgKGluaXRpYXRlX3RyYW5zZmVyICYmDQo+ID4gKyAgICAgICAgICAg IEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU09GVFdBUkVfUkVTRVRfUkVHSVNURVIsIENFTikp IHsNCj4gPiArICAgICAgICB0cmFuc2Zlcl9maWZvKHMsIGYpOw0KPiA+ICsgICAgfQ0KPiA+ICsN Cj4gPiArICAgIGNhbl91cGRhdGVfaXJxKHMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg Y29uc3QgUmVnaXN0ZXJBY2Nlc3NJbmZvIGNhbl9yZWdzX2luZm9bXSA9IHsNCj4gPiArICAgIHsg ICAubmFtZSA9ICJTT0ZUV0FSRV9SRVNFVF9SRUdJU1RFUiIsDQo+ID4gKyAgICAgICAgLmFkZHIg PSBBX1NPRlRXQVJFX1JFU0VUX1JFR0lTVEVSLA0KPiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZm ZmZmYywNCj4gPiArICAgICAgICAucHJlX3dyaXRlID0gY2FuX3Nycl9wcmVfd3JpdGUsDQo+ID4g KyAgICB9LHsgLm5hbWUgPSAiTU9ERV9TRUxFQ1RfUkVHSVNURVIiLA0KPiA+ICsgICAgICAgIC5h ZGRyID0gQV9NT0RFX1NFTEVDVF9SRUdJU1RFUiwNCj4gPiArICAgICAgICAucnN2ZCA9IDB4ZmZm ZmZmZjgsDQo+ID4gKyAgICAgICAgLnByZV93cml0ZSA9IGNhbl9tc3JfcHJlX3dyaXRlLA0KPiA+ ICsgICAgfSx7IC5uYW1lID0gIkFSQklUUkFUSU9OX1BIQVNFX0JBVURfUkFURV9QUkVTQ0FMRVJf UkVHSVNURVIiLA0KPiA+ICsgICAgICAgIC5hZGRyID0gQV9BUkJJVFJBVElPTl9QSEFTRV9CQVVE X1JBVEVfUFJFU0NBTEVSX1JFR0lTVEVSLA0KPiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmZmYw MCwNCj4gPiArICAgICAgICAucHJlX3dyaXRlID0gY2FuX2JycHJfcHJlX3dyaXRlLA0KPiA+ICsg ICAgfSx7IC5uYW1lID0gIkFSQklUUkFUSU9OX1BIQVNFX0JJVF9USU1JTkdfUkVHSVNURVIiLA0K PiA+ICsgICAgICAgIC5hZGRyID0gQV9BUkJJVFJBVElPTl9QSEFTRV9CSVRfVElNSU5HX1JFR0lT VEVSLA0KPiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmZmUwMCwNCj4gPiArICAgICAgICAucHJl X3dyaXRlID0gY2FuX2J0cl9wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiRVJST1Jf Q09VTlRFUl9SRUdJU1RFUiIsDQo+ID4gKyAgICAgICAgLmFkZHIgPSBBX0VSUk9SX0NPVU5URVJf UkVHSVNURVIsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZmYwMDAwLA0KPiA+ICsgICAgICAg IC5ybyA9IDB4ZmZmZmZmZmYsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiRVJST1JfU1RBVFVTX1JF R0lTVEVSIiwNCj4gPiArICAgICAgICAuYWRkciA9IEFfRVJST1JfU1RBVFVTX1JFR0lTVEVSLA0K PiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmZmZlMCwNCj4gPiArICAgICAgICAudzFjID0gMHgx ZiwNCj4gPiArICAgIH0seyAubmFtZSA9ICJTVEFUVVNfUkVHSVNURVIiLCAgLmFkZHIgPSBBX1NU QVRVU19SRUdJU1RFUiwNCj4gPiArICAgICAgICAucmVzZXQgPSAweDEsDQo+ID4gKyAgICAgICAg LnJzdmQgPSAweGZmZmZlMDAwLA0KPiA+ICsgICAgICAgIC5ybyA9IDB4MWZmZiwNCj4gPiArICAg IH0seyAubmFtZSA9ICJJTlRFUlJVUFRfU1RBVFVTX1JFR0lTVEVSIiwNCj4gPiArICAgICAgICAu YWRkciA9IEFfSU5URVJSVVBUX1NUQVRVU19SRUdJU1RFUiwNCj4gPiArICAgICAgICAucmVzZXQg PSAweDYwMDAsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZmY4MDAwLA0KPiA+ICsgICAgICAg IC5ybyA9IDB4N2ZmZiwNCj4gPiArICAgIH0seyAubmFtZSA9ICJJTlRFUlJVUFRfRU5BQkxFX1JF R0lTVEVSIiwNCj4gPiArICAgICAgICAuYWRkciA9IEFfSU5URVJSVVBUX0VOQUJMRV9SRUdJU1RF UiwNCj4gPiArICAgICAgICAucnN2ZCA9IDB4ZmZmZjgwMDAsDQo+ID4gKyAgICAgICAgLnBvc3Rf d3JpdGUgPSBjYW5faWVyX3Bvc3Rfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiSU5URVJS VVBUX0NMRUFSX1JFR0lTVEVSIiwNCj4gPiArICAgICAgICAuYWRkciA9IEFfSU5URVJSVVBUX0NM RUFSX1JFR0lTVEVSLA0KPiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmODAwMCwNCj4gPiArICAg ICAgICAucHJlX3dyaXRlID0gY2FuX2ljcl9wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUg PSAiVElNRVNUQU1QX1JFR0lTVEVSIiwNCj4gPiArICAgICAgICAuYWRkciA9IEFfVElNRVNUQU1Q X1JFR0lTVEVSLA0KPiA+ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmZmZmZSwNCj4gPiArICAgICAg ICAucHJlX3dyaXRlID0gY2FuX3Rjcl9wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAi V0lSIiwgIC5hZGRyID0gQV9XSVIsDQo+ID4gKyAgICAgICAgLnJlc2V0ID0gMHgzZjNmLA0KPiA+ ICsgICAgICAgIC5yc3ZkID0gMHhmZmZmMDAwMCwNCj4gPiArICAgIH0seyAubmFtZSA9ICJUWEZJ Rk9fSUQiLCAgLmFkZHIgPSBBX1RYRklGT19JRCwNCj4gPiArICAgICAgICAucG9zdF93cml0ZSA9 IGNhbl90eF9wb3N0X3dyaXRlLA0KPiA+ICsgICAgfSx7IC5uYW1lID0gIlRYRklGT19ETEMiLCAg LmFkZHIgPSBBX1RYRklGT19ETEMsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZmZmZmYsDQo+ ID4gKyAgICAgICAgLnBvc3Rfd3JpdGUgPSBjYW5fdHhfcG9zdF93cml0ZSwNCj4gPiArICAgIH0s eyAubmFtZSA9ICJUWEZJRk9fREFUQTEiLCAgLmFkZHIgPSBBX1RYRklGT19EQVRBMSwNCj4gPiAr ICAgICAgICAucG9zdF93cml0ZSA9IGNhbl90eF9wb3N0X3dyaXRlLA0KPiA+ICsgICAgfSx7IC5u YW1lID0gIlRYRklGT19EQVRBMiIsICAuYWRkciA9IEFfVFhGSUZPX0RBVEEyLA0KPiA+ICsgICAg ICAgIC5wb3N0X3dyaXRlID0gY2FuX3R4X3Bvc3Rfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUg PSAiVFhIUEJfSUQiLCAgLmFkZHIgPSBBX1RYSFBCX0lELA0KPiA+ICsgICAgICAgIC5wb3N0X3dy aXRlID0gY2FuX3R4X3Bvc3Rfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiVFhIUEJfRExD IiwgIC5hZGRyID0gQV9UWEhQQl9ETEMsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZmZmZmYs DQo+ID4gKyAgICAgICAgLnBvc3Rfd3JpdGUgPSBjYW5fdHhfcG9zdF93cml0ZSwNCj4gPiArICAg IH0seyAubmFtZSA9ICJUWEhQQl9EQVRBMSIsICAuYWRkciA9IEFfVFhIUEJfREFUQTEsDQo+ID4g KyAgICAgICAgLnBvc3Rfd3JpdGUgPSBjYW5fdHhfcG9zdF93cml0ZSwNCj4gPiArICAgIH0seyAu bmFtZSA9ICJUWEhQQl9EQVRBMiIsICAuYWRkciA9IEFfVFhIUEJfREFUQTIsDQo+ID4gKyAgICAg ICAgLnBvc3Rfd3JpdGUgPSBjYW5fdHhfcG9zdF93cml0ZSwNCj4gPiArICAgIH0seyAubmFtZSA9 ICJSWEZJRk9fSUQiLCAgLmFkZHIgPSBBX1JYRklGT19JRCwNCj4gPiArICAgICAgICAucm8gPSAw eGZmZmZmZmZmLA0KPiA+ICsgICAgICAgIC5wb3N0X3JlYWQgPSBjYW5fcnhmaWZvX3ByZV9yZWFk LA0KPiA+ICsgICAgfSx7IC5uYW1lID0gIlJYRklGT19ETEMiLCAgLmFkZHIgPSBBX1JYRklGT19E TEMsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZjAwMDAsDQo+ID4gKyAgICAgICAgLnBvc3Rf cmVhZCA9IGNhbl9yeGZpZm9fcHJlX3JlYWQsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiUlhGSUZP X0RBVEExIiwgIC5hZGRyID0gQV9SWEZJRk9fREFUQTEsDQo+ID4gKyAgICAgICAgLnBvc3RfcmVh ZCA9IGNhbl9yeGZpZm9fcHJlX3JlYWQsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiUlhGSUZPX0RB VEEyIiwgIC5hZGRyID0gQV9SWEZJRk9fREFUQTIsDQo+ID4gKyAgICAgICAgLnBvc3RfcmVhZCA9 IGNhbl9yeGZpZm9fcHJlX3JlYWQsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiQUZSIiwgIC5hZGRy ID0gQV9BRlIsDQo+ID4gKyAgICAgICAgLnJzdmQgPSAweGZmZmZmZmYwLA0KPiA+ICsgICAgICAg IC5wb3N0X3dyaXRlID0gY2FuX2ZpbHRlcl9lbmFibGVfcG9zdF93cml0ZSwNCj4gPiArICAgIH0s eyAubmFtZSA9ICJBRk1SMSIsICAuYWRkciA9IEFfQUZNUjEsDQo+ID4gKyAgICAgICAgLnByZV93 cml0ZSA9IGNhbl9maWx0ZXJfbWFza19wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAi QUZJUjEiLCAgLmFkZHIgPSBBX0FGSVIxLA0KPiA+ICsgICAgICAgIC5wcmVfd3JpdGUgPSBjYW5f ZmlsdGVyX2lkX3ByZV93cml0ZSwNCj4gPiArICAgIH0seyAubmFtZSA9ICJBRk1SMiIsICAuYWRk ciA9IEFfQUZNUjIsDQo+ID4gKyAgICAgICAgLnByZV93cml0ZSA9IGNhbl9maWx0ZXJfbWFza19w cmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiQUZJUjIiLCAgLmFkZHIgPSBBX0FGSVIy LA0KPiA+ICsgICAgICAgIC5wcmVfd3JpdGUgPSBjYW5fZmlsdGVyX2lkX3ByZV93cml0ZSwNCj4g PiArICAgIH0seyAubmFtZSA9ICJBRk1SMyIsICAuYWRkciA9IEFfQUZNUjMsDQo+ID4gKyAgICAg ICAgLnByZV93cml0ZSA9IGNhbl9maWx0ZXJfbWFza19wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsg Lm5hbWUgPSAiQUZJUjMiLCAgLmFkZHIgPSBBX0FGSVIzLA0KPiA+ICsgICAgICAgIC5wcmVfd3Jp dGUgPSBjYW5fZmlsdGVyX2lkX3ByZV93cml0ZSwNCj4gPiArICAgIH0seyAubmFtZSA9ICJBRk1S NCIsICAuYWRkciA9IEFfQUZNUjQsDQo+ID4gKyAgICAgICAgLnByZV93cml0ZSA9IGNhbl9maWx0 ZXJfbWFza19wcmVfd3JpdGUsDQo+ID4gKyAgICB9LHsgLm5hbWUgPSAiQUZJUjQiLCAgLmFkZHIg PSBBX0FGSVI0LA0KPiA+ICsgICAgICAgIC5wcmVfd3JpdGUgPSBjYW5fZmlsdGVyX2lkX3ByZV93 cml0ZSwNCj4gPiArICAgIH0NCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBNZW1v cnlSZWdpb25PcHMgY2FuX29wcyA9IHsNCj4gPiArICAgIC5yZWFkID0gcmVnaXN0ZXJfcmVhZF9t ZW1vcnksDQo+ID4gKyAgICAud3JpdGUgPSByZWdpc3Rlcl93cml0ZV9tZW1vcnksDQo+ID4gKyAg ICAuZW5kaWFubmVzcyA9IERFVklDRV9MSVRUTEVfRU5ESUFOLA0KPiA+ICsgICAgLnZhbGlkID0g ew0KPiA+ICsgICAgICAgIC5taW5fYWNjZXNzX3NpemUgPSA0LA0KPiA+ICsgICAgICAgIC5tYXhf YWNjZXNzX3NpemUgPSA0LA0KPiA+ICsgICAgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIHhsbnhfenlucW1wX2Nhbl9yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQ0KPiA+ICt7DQo+ ID4gKyAgICBYbG54WnlucU1QQ0FOICpzID0gWExOWF9aWU5RTVBfQ0FOKGRldik7DQo+ID4gKyAg ICB1bnNpZ25lZCBpbnQgaTsNCj4gPiArDQo+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShzLT5yZWdfaW5mbyk7ICsraSkgew0KPiA+ICsgICAgICAgIHJlZ2lzdGVyX3Jlc2V0KCZz LT5yZWdfaW5mb1tpXSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLyoNCj4gPiArICAg ICAqIFJlc2V0IEZJRk9zIHdoZW4gQ0FOIG1vZGVsIGlzIHJlc2V0LiBUaGlzIHdpbGwgY2xlYXIg dGhlIGZpZm8gd3JpdGVzDQo+ID4gKyAgICAgKiBkb25lIGJ5IHBvc3Rfd3JpdGUgd2hpY2ggZ2V0 cyBjYWxsZWQgZnJvbSByZWdpc3Rlcl9yZXNldCBmdW5jdGlvbiwNCj4gPiArICAgICAqIHBvc3Rf d3JpdGUgaGFuZGxlIHdpbGwgbm90IGJlIGFibGUgdG8gdHJpZ2dlciB0eCBiZWNhdXNlIENBTiB3 aWxsIGJlDQo+ID4gKyAgICAgKiBkaXNhYmxlZCB3aGVuIHNvZnR3YXJlX3Jlc2V0X3JlZ2lzdGVy IGlzIGNsZWFyZWQgZmlyc3QuDQo+ID4gKyAgICAgKi8NCj4gPiArICAgIGZpZm8zMl9yZXNldCgm cy0+cnhfZmlmbyk7DQo+ID4gKyAgICBmaWZvMzJfcmVzZXQoJnMtPnR4X2ZpZm8pOw0KPiA+ICsg ICAgZmlmbzMyX3Jlc2V0KCZzLT50eGhwYl9maWZvKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCB4bG54X3p5bnFtcF9jYW5fY2FuX3JlY2VpdmUoQ2FuQnVzQ2xpZW50U3RhdGUgKmNs aWVudCkNCj4gPiArew0KPiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IGNvbnRhaW5lcl9vZihj bGllbnQsIFhsbnhaeW5xTVBDQU4sIGJ1c19jbGllbnQpOw0KPiA+ICsNCj4gPiArICAgIGlmIChB UlJBWV9GSUVMRF9FWDMyKHMtPnJlZ3MsIFNPRlRXQVJFX1JFU0VUX1JFR0lTVEVSLCBTUlNUKSkg ew0KPiA+ICsgICAgICAgIERCX1BSSU5UKCJYbG54WnlucU1QQ0FOJWQgQ29udHJvbGxlciBpcyBy ZXNldFxuIiwgcy0+Y2ZnLmN0cmxfaWR4KTsNCj4gPiArICAgICAgICByZXR1cm4gMDsNCj4gPiAr ICAgIH0gZWxzZSBpZiAoKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU09GVFdBUkVfUkVTRVRf UkVHSVNURVIsDQo+IENFTikpID09IDApIHsNCj4gPiArICAgICAgICBEQl9QUklOVCgiWGxueFp5 bnFNUENBTiVkIGlzIGRpc2FibGVkLiBNZXNzYWdlcyB3aWxsIGJlDQo+IGRpc2NhcmRlZFxuIiwN Cj4gPiArICAgICAgICAgICAgICAgIHMtPmNmZy5jdHJsX2lkeCk7DQo+ID4gKyAgICAgICAgcmV0 dXJuIDA7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIHJldHVybiAxOw0KPiA+ICsg ICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3NpemVfdCB4bG54X3p5bnFtcF9jYW5f cmVjZWl2ZShDYW5CdXNDbGllbnRTdGF0ZSAqY2xpZW50LA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgcWVtdV9jYW5fZnJhbWUgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXpl KSB7DQo+ID4gKyAgICBYbG54WnlucU1QQ0FOICpzID0gY29udGFpbmVyX29mKGNsaWVudCwgWGxu eFp5bnFNUENBTiwgYnVzX2NsaWVudCk7DQo+ID4gKyAgICBjb25zdCBxZW11X2Nhbl9mcmFtZSAq ZnJhbWUgPSBidWY7DQo+ID4gKw0KPiA+ICsgICAgREJfUFJJTlQoIkluY29taW5nIGRhdGEgZm9y IENBTiVkXG4iLCBzLT5jZmcuY3RybF9pZHgpOw0KPiA+ICsNCj4gPiArICAgIGlmIChidWZfc2l6 ZSA8PSAwKSB7DQo+ID4gKyAgICAgICAgREJfUFJJTlQoImp1bmsgZGF0YSByZWNlaXZlZCBvbiBY bG54WnlucU1QQ0FOIGJ1c1xuIik7DQo+ID4gKyAgICAgICAgcmV0dXJuIDA7DQo+ID4gKyAgICB9 DQo+ID4gKyAgICBpZiAoQVJSQVlfRklFTERfRVgzMihzLT5yZWdzLCBTVEFUVVNfUkVHSVNURVIs IExCQUNLKSkgew0KPiA+ICsgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICogWGxueFp5bnFNUENB TiB3aWxsIG5vdCBwYXJ0aWNpcGF0ZSBpbiBub3JtYWwgYnVzIGNvbW11bmljYXRpb24NCj4gYW5k DQo+ID4gKyAgICAgICAgICogZG9lcyBub3QgcmVjZWl2ZSBhbnkgbWVzc2FnZXMgdHJhbnNtaXR0 ZWQgYnkgb3RoZXIgQ0FOIG5vZGVzLg0KPiA+ICsgICAgICAgICAqLw0KPiA+ICsgICAgICAgIERC X1BSSU5UKCJYbG54WnlucU1QQ0FOIGlzIGluIGxvb3BiYWNrIG1vZGUuIg0KPiA+ICsgICAgICAg ICAgICAgICAgIiBJdCB3aWxsIG5vdCByZWNlaXZlIGRhdGEuXG4iKTsNCj4gPiArDQo+ID4gKyAg ICB9IGVsc2UgaWYgKEFSUkFZX0ZJRUxEX0VYMzIocy0+cmVncywgU1RBVFVTX1JFR0lTVEVSLCBT Tk9PUCkpIHsNCj4gPiArICAgICAgICAvKiBTbm9vcCBNb2RlOiBKdXN0IGtlZXAgdGhlIGRhdGEu IG5vIHJlc3BvbnNlIGJhY2suICovDQo+ID4gKyAgICAgICAgdXBkYXRlX3J4X2ZpZm8ocywgZnJh bWUpOw0KPiA+ICsgICAgfSBlbHNlIGlmICgoQVJSQVlfRklFTERfRVgzMihzLT5yZWdzLCBTVEFU VVNfUkVHSVNURVIsIFNMRUVQKSkpIHsNCj4gPiArICAgICAgICAvKg0KPiA+ICsgICAgICAgICAq IFhsbnhaeW5xTVBDQU4gaXMgaW4gc2xlZXAgbW9kZS4gQW55IGRhdGEgb24gYnVzIHdpbGwgYnJp bmcgaXQgdG8NCj4gd2FrZQ0KPiA+ICsgICAgICAgICAqIHVwIHN0YXRlLg0KPiA+ICsgICAgICAg ICAqLw0KPiA+ICsgICAgICAgIGNhbl9leGl0X3NsZWVwX21vZGUocyk7DQo+ID4gKyAgICAgICAg dXBkYXRlX3J4X2ZpZm8ocywgZnJhbWUpOw0KPiA+ICsgICAgfSBlbHNlIGlmICgoQVJSQVlfRklF TERfRVgzMihzLT5yZWdzLCBTVEFUVVNfUkVHSVNURVIsIFNMRUVQKSkgPT0gMCkgew0KPiA+ICsg ICAgICAgIHVwZGF0ZV9yeF9maWZvKHMsIGZyYW1lKTsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4g KyAgICAgICAgREJfUFJJTlQoIkNhbid0IHJlY2VpdmUgZGF0YSBhcyBYbG54WnlucU1QQ0FOIGlz IG5vdCBzZXQNCj4gY29ycmVjdGx5LlxuIik7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAg cmV0dXJuIDE7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBDYW5CdXNDbGllbnRJbmZvIGNh bl94aWxpbnhfYnVzX2NsaWVudF9pbmZvID0gew0KPiA+ICsgICAgLmNhbl9yZWNlaXZlID0geGxu eF96eW5xbXBfY2FuX2Nhbl9yZWNlaXZlLA0KPiA+ICsgICAgLnJlY2VpdmUgPSB4bG54X3p5bnFt cF9jYW5fcmVjZWl2ZSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgeGxueF96eW5x bXBfY2FuX2Nvbm5lY3RfdG9fYnVzKFhsbnhaeW5xTVBDQU4gKnMsDQo+IENhbkJ1c1N0YXRlICpi dXMpDQo+ID4gK3sNCj4gPiArICAgIHMtPmJ1c19jbGllbnQuaW5mbyA9ICZjYW5feGlsaW54X2J1 c19jbGllbnRfaW5mbzsNCj4gPiArDQo+ID4gKyAgICBpZiAoY2FuX2J1c19pbnNlcnRfY2xpZW50 KGJ1cywgJnMtPmJ1c19jbGllbnQpIDwgMCkgew0KPiA+ICsgICAgICAgIHJldHVybiAtMTsNCj4g PiArICAgIH0NCj4gPiArICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCB4bG54X3p5bnFtcF9jYW5fcmVhbGl6ZShEZXZpY2VTdGF0ZSAqZGV2LCBFcnJvciAqKmVy cnApDQo+ID4gK3sNCj4gPiArICAgIFhsbnhaeW5xTVBDQU4gKnMgPSBYTE5YX1pZTlFNUF9DQU4o ZGV2KTsNCj4gPiArDQo+ID4gKyAgICBpZiAocy0+Y2ZnLmN0cmxfaWR4ID4gTUFYX0NBTl9DVFJM Uykgew0KPiA+ICsgICAgICAgIGVycm9yX3NldGcoZXJycCwgImN0cmwtaWR4OiAlZCBleGNlZWRz IG1heCBYbG54WnlucU1QQ0FODQo+IGNvbnRyb2xsZXIgIg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICJpbmRleCIsIHMtPmNmZy5jdHJsX2lkeCk7DQo+ID4gKyAgICAgICAgcmV0dXJuOw0KPiA+ ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGlmIChzLT5jYW5idXNbcy0+Y2ZnLmN0cmxfaWR4XSkg ew0KPiA+ICsgICAgICAgIGlmICh4bG54X3p5bnFtcF9jYW5fY29ubmVjdF90b19idXMocywgcy0+ Y2FuYnVzW3MtPmNmZy5jdHJsX2lkeF0pIDwNCj4gMCkgew0KPiA+ICsgICAgICAgICAgICBlcnJv cl9zZXRnKGVycnAsICJ4bG54X3p5bnFtcF9jYW5fY29ubmVjdF90b19idXMgZmFpbGVkIik7DQo+ ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgLyog SWYgbm8gYnVzIGlzIHNldC4gKi8NCj4gPiArICAgICAgICBEQl9QUklOVCgiQ2FuYnVzJWQgcHJv cGVydHkgaXMgbm90IHNldCBmb3IgeGxueENBTiVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgIHMtPmNmZy5jdHJsX2lkeCwgcy0+Y2ZnLmN0cmxfaWR4KTsNCj4gPiArICAgIH0NCj4gPiAr DQo+ID4gKyAgICAvKiBDcmVhdGUgUlggRklGTywgVFhGSUZPLCBUWEhQQiBzdG9yYWdlLiAqLw0K PiA+ICsgICAgZmlmbzMyX2NyZWF0ZSgmcy0+cnhfZmlmbywgUlhGSUZPX1NJWkUpOw0KPiA+ICsg ICAgZmlmbzMyX2NyZWF0ZSgmcy0+dHhfZmlmbywgUlhGSUZPX1NJWkUpOw0KPiA+ICsgICAgZmlm bzMyX2NyZWF0ZSgmcy0+dHhocGJfZmlmbywgQ0FOX0ZSQU1FX1NJWkUpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCB4bG54X3p5bnFtcF9jYW5faW5pdChPYmplY3QgKm9iaikNCj4g PiArew0KPiA+ICsgICAgWGxueFp5bnFNUENBTiAqcyA9IFhMTlhfWllOUU1QX0NBTihvYmopOw0K PiA+ICsgICAgU3lzQnVzRGV2aWNlICpzYmQgPSBTWVNfQlVTX0RFVklDRShvYmopOw0KPiA+ICsN Cj4gPiArICAgIFJlZ2lzdGVySW5mb0FycmF5ICpyZWdfYXJyYXk7DQo+ID4gKw0KPiA+ICsgICAg bWVtb3J5X3JlZ2lvbl9pbml0KCZzLT5pb21lbSwgb2JqLCBUWVBFX1hMTlhfWllOUU1QX0NBTiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgWExOWF9aWU5RTVBfQ0FOX1JfTUFYICogNCk7 DQo+ID4gKyAgICByZWdfYXJyYXkgPSByZWdpc3Rlcl9pbml0X2Jsb2NrMzIoREVWSUNFKG9iaiks IGNhbl9yZWdzX2luZm8sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJB WV9TSVpFKGNhbl9yZWdzX2luZm8pLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+cmVnX2luZm8sIHMtPnJlZ3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmY2FuX29wcywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhMTlhf WllOUU1QX0NBTl9FUlJfREVCVUcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYTE5YX1pZTlFNUF9DQU5fUl9NQVggKiA0KTsNCj4gPiArDQo+ID4gKyAgICBtZW1vcnlfcmVn aW9uX2FkZF9zdWJyZWdpb24oJnMtPmlvbWVtLCAweDAwLCAmcmVnX2FycmF5LT5tZW0pOw0KPiA+ ICsgICAgc3lzYnVzX2luaXRfbW1pbyhzYmQsICZzLT5pb21lbSk7DQo+ID4gKyAgICBzeXNidXNf aW5pdF9pcnEoU1lTX0JVU19ERVZJQ0Uob2JqKSwgJnMtPmlycSk7DQo+ID4gKw0KPiA+ICsgICAg b2JqZWN0X3Byb3BlcnR5X2FkZF9saW5rKG9iaiwgImNhbmJ1czAiLCBUWVBFX0NBTl9CVVMsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9iamVjdCAqKikmcy0+Y2FuYnVzWzBd LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFkZXZfcHJvcF9hbGxvd19zZXRf bGlua19iZWZvcmVfcmVhbGl6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LCAmZXJyb3JfYWJvcnQpOw0KPiA+ICsNCj4gPiArICAgIG9iamVjdF9wcm9wZXJ0eV9hZGRfbGlu ayhvYmosICJjYW5idXMxIiwgVFlQRV9DQU5fQlVTLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChPYmplY3QgKiopJnMtPmNhbmJ1c1sxXSwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBxZGV2X3Byb3BfYWxsb3dfc2V0X2xpbmtfYmVmb3JlX3JlYWxpemUsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgJmVycm9yX2Fib3J0KTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2Nh biA9IHsNCj4gPiArICAgIC5uYW1lID0gVFlQRV9YTE5YX1pZTlFNUF9DQU4sDQo+ID4gKyAgICAu dmVyc2lvbl9pZCA9IDEsDQo+ID4gKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMSwNCj4gPiAr ICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsNCj4gPiArICAgICAgICBWTVNUQVRFX0ZJ Rk8zMihyeF9maWZvLCBYbG54WnlucU1QQ0FOKSwNCj4gPiArICAgICAgICBWTVNUQVRFX1VJTlQz Ml9BUlJBWShyZWdzLCBYbG54WnlucU1QQ0FOLA0KPiBYTE5YX1pZTlFNUF9DQU5fUl9NQVgpLA0K PiA+ICsgICAgICAgIFZNU1RBVEVfVUlOVDgoY2ZnLmN0cmxfaWR4LCBYbG54WnlucU1QQ0FOKSwN Cj4gPiArICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksDQo+ID4gKyAgICB9DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdGF0aWMgUHJvcGVydHkgeGxueF96eW5xbXBfY2FuX3Byb3BlcnRpZXNb XSA9IHsNCj4gPiArICAgIERFRklORV9QUk9QX1VJTlQ4KCJjdHJsLWlkeCIsIFhsbnhaeW5xTVBD QU4sIGNmZy5jdHJsX2lkeCwgMCksDQo+ID4gKyAgICBERUZJTkVfUFJPUF9FTkRfT0ZfTElTVCgp LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeGxueF96eW5xbXBfY2FuX2NsYXNz X2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKyAgICBE ZXZpY2VDbGFzcyAqZGMgPSBERVZJQ0VfQ0xBU1Moa2xhc3MpOw0KPiA+ICsgICAgZGMtPnJlc2V0 ID0geGxueF96eW5xbXBfY2FuX3Jlc2V0Ow0KPiA+ICsgICAgZGMtPnJlYWxpemUgPSB4bG54X3p5 bnFtcF9jYW5fcmVhbGl6ZTsNCj4gPiArICAgIGRldmljZV9jbGFzc19zZXRfcHJvcHMoZGMsIHhs bnhfenlucW1wX2Nhbl9wcm9wZXJ0aWVzKTsNCj4gPiArICAgIGRjLT52bXNkID0gJnZtc3RhdGVf Y2FuOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgVHlwZUluZm8gY2FuX2luZm8g PSB7DQo+ID4gKyAgICAubmFtZSAgICAgICAgICA9IFRZUEVfWExOWF9aWU5RTVBfQ0FOLA0KPiA+ ICsgICAgLnBhcmVudCAgICAgICAgPSBUWVBFX1NZU19CVVNfREVWSUNFLA0KPiA+ICsgICAgLmlu c3RhbmNlX3NpemUgPSBzaXplb2YoWGxueFp5bnFNUENBTiksDQo+ID4gKyAgICAuY2xhc3NfaW5p dCAgICA9IHhsbnhfenlucW1wX2Nhbl9jbGFzc19pbml0LA0KPiA+ICsgICAgLmluc3RhbmNlX2lu aXQgPSB4bG54X3p5bnFtcF9jYW5faW5pdCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIGNhbl9yZWdpc3Rlcl90eXBlcyh2b2lkKQ0KPiA+ICt7DQo+ID4gKyAgICB0eXBlX3JlZ2lz dGVyX3N0YXRpYygmY2FuX2luZm8pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt0eXBlX2luaXQoY2Fu X3JlZ2lzdGVyX3R5cGVzKQ0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L25ldC94bG54LXp5 bnFtcC1jYW4uaCBiL2luY2x1ZGUvaHcvbmV0L3hsbngtDQo+IHp5bnFtcC1jYW4uaA0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uNTM3ZGJjMg0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL2h3L25ldC94bG54LXp5bnFtcC1jYW4uaA0KPiA+ IEBAIC0wLDAgKzEsNzcgQEANCj4gPiArLyoNCj4gPiArICogUUVNVSBtb2RlbCBvZiB0aGUgWGls aW54IENBTiBkZXZpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAxOSBYaWxp bnggSW5jLg0KPiA+ICsgKiBQYXJ0aWFsbHkgYXV0b2dlbmVyYXRlZCBieSB4cmVncWVtdS5weSAy MDE5LTA2LTIwLg0KPiA+ICsgKg0KPiA+ICsgKiBXcml0dGVuLWJ5OiBWaWtyYW0gR2FyaHdhbDxm bnUudmlrcmFtQHhpbGlueC5jb20+DQo+ID4gKyAqDQo+ID4gKyAqIEJhc2VkIG9uIFFFTVUgQ0FO IERldmljZSBlbXVsYXRpb24gaW1wbGVtZW50ZWQgYnkgSmluIFlhbmcsIERlbml6DQo+IEVyZW4g YW5kDQo+ID4gKyAqIFBhdmVsIFBpc2EuDQo+ID4gKyAqDQo+ID4gKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh DQo+IGNvcHkNCj4gPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvDQo+IGRlYWwNCj4gPiArICogaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24gdGhlIHJpZ2h0cw0KPiA+ICsgKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsDQo+ID4gKyAqIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcw0KPiA+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOg0KPiA+ICsgKg0KPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZA0KPiBpbg0KPiA+ ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4N Cj4gPiArICoNCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+IEVYUFJFU1MgT1INCj4gPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KPiBNRVJDSEFO VEFCSUxJVFksDQo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuIElOIE5PDQo+IEVWRU5UIFNIQUxMDQo+ID4gKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLA0KPiBEQU1BR0VT IE9SIE9USEVSDQo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiBBUklTSU5HIEZST00sDQo+ID4gKyAqIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIN Cj4gREVBTElOR1MgSU4NCj4gPiArICogVEhFIFNPRlRXQVJFLg0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgSFdfQ0FOX1hJTElOWF9IDQo+ID4gKyNkZWZpbmUgSFdfQ0FOX1hJTElOWF9I DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiaHcvcmVnaXN0ZXIuaCINCj4gPiArI2luY2x1ZGUgIm5l dC9jYW5fZW11LmgiDQo+ID4gKyNpbmNsdWRlICJuZXQvY2FuX2hvc3QuaCINCj4gPiArI2luY2x1 ZGUgInFlbXUvZmlmbzMyLmgiDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFRZUEVfWExOWF9aWU5RTVBf Q0FOICJ4bG54Lnp5bnFtcC1jYW4iDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhMTlhfWllOUU1QX0NB TihvYmopIFwNCj4gPiArICAgICBPQkpFQ1RfQ0hFQ0soWGxueFp5bnFNUENBTiwgKG9iaiksIFRZ UEVfWExOWF9aWU5RTVBfQ0FOKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBNQVhfQ0FOX0NUUkxTICAg ICAgMg0KPiA+ICsjZGVmaW5lIFhMTlhfWllOUU1QX0NBTl9SX01BWCAgICAgKDB4ODQgLyA0KQ0K PiA+ICsjZGVmaW5lIE1BSUxCT1hfQ0FQQUNJVFkgICA2NA0KPiA+ICsNCj4gPiArLyogRWFjaCBD QU5fRlJBTUUgd2lsbCBoYXZlIDQgKiAzMmJpdCBzaXplLiAqLw0KPiA+ICsjZGVmaW5lIENBTl9G UkFNRV9TSVpFICAgICA0DQo+ID4gKyNkZWZpbmUgUlhGSUZPX1NJWkUgICAgICAgIChNQUlMQk9Y X0NBUEFDSVRZICogQ0FOX0ZSQU1FX1NJWkUpDQo+ID4gKw0KPiA+ICsNCj4gPiArdHlwZWRlZiBz dHJ1Y3QgWGxueFp5bnFNUENBTiB7DQo+IA0KPiANCj4gRm9yIGRldmljZSBzdGF0ZSB3ZSB1c3Vh bGx5IGhhdmUgYSAiU3RhdGUiIHN1ZmZpeC4gU28gaXQncyBiZXR0ZXIgdXNlDQo+ICJYbG54Wnlu cU1QQ0FOU3RhdGUiLg0KW1Zpa3JhbSBHYXJod2FsXSBUaGFua3MgZm9yIGNhdGNoaW5nIHRoaXMu IEkgd2lsbCBjaGFuZ2UgaXQgaW4gdjIuDQo+IA0KPiBUaGFua3MNCj4gDQo+IA0KPiA+ICsgICAg U3lzQnVzRGV2aWNlICAgICAgICBwYXJlbnRfb2JqOw0KPiA+ICsgICAgTWVtb3J5UmVnaW9uICAg ICAgICBpb21lbTsNCj4gPiArDQo+ID4gKyAgICBxZW11X2lycSAgICAgICAgICAgIGlycTsNCj4g PiArDQo+ID4gKyAgICBDYW5CdXNDbGllbnRTdGF0ZSAgIGJ1c19jbGllbnQ7DQo+ID4gKyAgICBD YW5CdXNTdGF0ZSAgICAgICAgICpjYW5idXNbTUFYX0NBTl9DVFJMU107DQo+ID4gKw0KPiA+ICsg ICAgc3RydWN0IHsNCj4gPiArICAgICAgICB1aW50OF90ICAgICAgICAgY3RybF9pZHg7DQo+ID4g KyAgIH0gY2ZnOw0KPiA+ICsNCj4gPiArICAgIFJlZ2lzdGVySW5mbyAgICAgICAgcmVnX2luZm9b WExOWF9aWU5RTVBfQ0FOX1JfTUFYXTsNCj4gPiArICAgIHVpbnQzMl90ICAgICAgICAgICAgcmVn c1tYTE5YX1pZTlFNUF9DQU5fUl9NQVhdOw0KPiA+ICsNCj4gPiArICAgIHVpbnQxNl90ICAgICAg ICAgICAgcnhfdGltZV9zdGFtcDsNCj4gPiArDQo+ID4gKyAgICBGaWZvMzIgICAgICAgICAgICAg ICAgcnhfZmlmbzsNCj4gPiArICAgIEZpZm8zMiAgICAgICAgICAgICAgICB0eF9maWZvOw0KPiA+ ICsgICAgRmlmbzMyICAgICAgICAgICAgICAgIHR4aHBiX2ZpZm87DQo+ID4gKw0KPiA+ICt9IFhs bnhaeW5xTVBDQU47DQo+ID4gKw0KPiA+ICsjZW5kaWYNCg0K