Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pAODm-0000Ca-Qe for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Dec 2022 04:39:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pAODl-0005mD-JH for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Dec 2022 04:39:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pAODk-0005kB-7k for pgsql-hackers@lists.postgresql.org; Wed, 28 Dec 2022 04:39:17 +0000 Received: from esa14.fujitsucc.c3s2.iphmx.com ([68.232.156.101]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pAODb-0005T8-FC for pgsql-hackers@lists.postgresql.org; Wed, 28 Dec 2022 04:39:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1672202347; x=1703738347; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=tL+VBCsL1OaxeomnQxMs/aA9UEVyCaWZIfrmhwdAdOA=; b=Uzx0md0uw4frAtOzV5FXVtIkYwPxP+sKbwJqFUBbPDYssUp1m8Bi5vLo WEXhzFLxjOzOiGsaCfqvMQuvHYBhv+p6eS9nRXEOfZHK3QMIckkIN22Yn 00D6TBVrC2Euoo0qnNrQV9fWzwpjNj14QWsZMBI0nTTB720qYdDG7Wgz/ aVKccrwCWqM2sxv5DOh9YjkuTK+BAZiMvqk05aCgPIa5atRYszZsLVFDG ToJ/L5D1bS0mKa8AGqS6Jf6szaHPwakXFDjn4l/vNONiK/fZ4W7OHRIT3 O7RtYaaYF7RXFwIPKuwFYHkmiBwMCYmFvK8vT5ASQ4rxDJghGo/WVyS7L g==; X-IronPort-AV: E=McAfee;i="6500,9779,10573"; a="73199257" X-IronPort-AV: E=Sophos;i="5.96,280,1665414000"; d="scan'208,223";a="73199257" Received: from mail-os0jpn01lp2112.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.112]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Dec 2022 13:39:02 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CbJHmd53W8YlZT0yCsmEe5XtFo1w5Wf+VRu2CAB/CkWeLSBvVvN1M1VNUqp3THbPk58i6NQyrrTEj9mJlbZ/xdeU5Oo+PQckTM6dLiAF+uqA41sOWKGULmA7HROiRtw8pfCjXvKBVSbuzt9CYf3jYNyHURhYsmAeFhSi4m670MucF8UDIGfA3frGbvJTkQXZO7YMobO66PIFPier2AoxOXFhM8jvrmg0p0JP8qCZwVMv/ysc77Kv3XBBJEyd908/TaFn0rEa/CCjkqr+7T+QMyhZKTVLJ9ELVnBbprll1iuRJaZczBpJJfBKC0ybYz9++m+jtxypATCzryStTq1g6w== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=swTfUm01foSyXIWMhf/BLr/g1rHGlL/VLMypDC5VgD4=; b=K0Ru2bIjOQIFwOZOY68kCMBLXEjd/T+MhYwaZ8LD324LUkBae+oU6yNSWOcy4DsQ0z00W+SFmB8tfPDl/Nf4bV2QTDjujRMacbfOvdKRuEKzY6xKeBlJo8y1/bSTNBC+mo1WRqjsMrGxe89GsnnS/LzdRg2ms0E9c3sGGM2iAjNTj1tic0boFXzfhozUZ+zpXI3JiEwoe5DmGD1uWJDEXnEFfR4Lteed6kRq/XUK6vQ907f6QdnNOXNtjjCdkgUN7hNVztW9e3K+mXCXmEzW0jhPzav+scjeEFo0yj5ck0/Ki3o/WnHj0Y7i5h0blMb2XW35pgFxd9WGlR2k1gtOVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSZPR01MB7843.jpnprd01.prod.outlook.com (2603:1096:604:1b7::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.16; Wed, 28 Dec 2022 04:38:58 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69%9]) with mapi id 15.20.5944.016; Wed, 28 Dec 2022 04:38:58 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila CC: "houzj.fnst@fujitsu.com" , Peter Smith , Masahiko Sawada , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4glaZYxcS7PWkmy2G012OfTrq5uS4SAgAHPyoCAACQbgIAAHfaAgAGmKgCAAB5KAIADDzOAgAFWGwCAABIHgIAA+NgAgABKNQCAAf/xAIABKiIAgAA6H4CABGPrgIAAfUiAgAEdO9CAAHFDAIABGuBQ Date: Wed, 28 Dec 2022 04:38:58 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9NGEwY2MyM2MtZDY2YS00YjM0LWJkOTQtNjhjNmJkMGI0?= =?utf-8?B?ODRkO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0yOFQwNDoyOTo0N1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6275:EE_|OSZPR01MB7843:EE_ x-ms-office365-filtering-correlation-id: d6ba4540-026a-4479-c34c-08dae88d6f9b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: U38NK9f4DGVUxhIwLUFtyZj97ctjD8GAaH9wLWuppI778gaqRvSTV8LfbwwsUxSgFLoI3+wNTnG8qSeBepBYYls9yhToLVgGMBRL+u1SouTddrrtTWoXX5c7iRbU/pNdwEFHyk7ty/E2rPD/XOjfa+QWedUbiQo9QYQ1wJ3p7WnFBNhRN3SdUgBPnS3MrKfGhnQXwY1dv5aHmW8H1JMIK3K/0Rgy8obREZV09T2UsmyMRMcG6bSXJ+oIko40oOM6E161J8128168ULwQU3bBsKtBlDGADAw8iYU4zSIv2v/yFBkbKroo37RmZ6blSS+7Mwv9qd9gxSafo5NG4Bt0dchNADMJrUlrt2fIqoNQExoaRyNOICwb+JVK9T1QKc0rxCBVQuIprgC00jrL85Wfv1TMnoQnxv47qeUfsFdk9HT2sstPQLWQcCW5biQio2iJwTzr1eaV2riE9H6Wu4omIXXJ/ZpDHLJU2IlJzCx7klB++h4/+8RnUPnOQcQwuEzheyU2yrmgN4lD5kvdza/Pe3Evm7M5Qw/zZVEg+9Zu0OBlYSPxHVq/Sp/Eju33C4vhhjTLa8wIYvhweCYqOyA9QOXHGWYiNdd+uCL7L4AvxIruDxmpwfZGZvO59RokIJu0OtCQYS6dgGTrJza35RU9sgexRr+aHdFFipdv/WJ0Yh/ZBDk43kP7/6kLFyFXXwz3LQxabzqgtRRlPiOnvbmzJLzFkoMqZkXYUnVGD8FVrPjl4LTOd9dYQMqGsJ3aQzcTd1GHxDI0heHnDREKHxBIrw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(39860400002)(366004)(346002)(376002)(396003)(1590799012)(451199015)(33656002)(4326008)(966005)(478600001)(2906002)(54906003)(85182001)(6916009)(316002)(71200400001)(53546011)(83380400001)(82960400001)(38070700005)(38100700002)(99936003)(122000001)(26005)(9686003)(186003)(6506007)(7696005)(86362001)(55016003)(8936002)(52536014)(8676002)(66476007)(66446008)(76116006)(66556008)(66946007)(5660300002)(41300700001)(1580799009)(64756008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OGpUenA0MjJPc1VidnNIQWtYZVltY3RkRUh0UXNYWTZCYTJJRUNzek8wUk51?= =?utf-8?B?aU9WanhHdW5yeUJNb0NDa1hsdnFCSWg5a3R3aG1KeWNpNHVUaWxZUUkxZUhy?= =?utf-8?B?NWMzN0VDeEkvbXhZZFU0K01SV2RaaHFJU0Q0d29iOE4zQkZnYjZQb1NWUXNL?= =?utf-8?B?ZkNEZ2VzeGcvWitWZEIwbDhTb1JXd25uOHpCUUEvZ1JSQTZoNTNQZWhNNE1T?= =?utf-8?B?R0hZa3lEWFByaUdNbS9Mc0dZMy9vL2ZqT2pYeG9KYW40ZC9OcExqd3VLSzZV?= =?utf-8?B?aVR3UUhnUlVuV2FDclpxWFR3OWw2Q2hEbzgzcUo0a2JTUEd1TDI2TEZBN2Zk?= =?utf-8?B?MWo0VFBzRTN1alhlNkdGUnd5eFkxemNENnl2Q0xZeHVOTlp3VXN0SkQxdFZw?= =?utf-8?B?SVlienBVSDZrQiszalgxdnMzNW1ick1scU5sRmo4YUpRd0JXcjI0MVBlUE92?= =?utf-8?B?cEQ0S0FxeWhPa2krelZraUp1VjNLbStKNlpaR05yckl0R0NuVW5yL2JUWDNi?= =?utf-8?B?N2c0aG9mSjlGWmpyQ1NCUnVJL0FaVUVZL1pRWjExUW1RUUsvek5QRzlsZE44?= =?utf-8?B?WWRBQkVNcXhTOHJNZEpJellZeURmaDhKa0NhRzlDbmNtRE00R1hpNHU5UVAz?= =?utf-8?B?M2I1RjFvaG1FMXhra3RMWThuTWRaL0htcjBGOWFwL2NSMVMvblBWQnpPMVE3?= =?utf-8?B?SDEvZWtPYzdiTWY4aTN4V0xWV2xrUURVQUVOaFNWUmpxc0NWVjhRSVE0OEo5?= =?utf-8?B?YnpsQW1qWCtvTGVLRGFVVnFxR3FPb0gyaTQ3S0NzWXBsaDBIVlNRRmk2VWpE?= =?utf-8?B?STF4bVlUSW9vYU5EUlJ5VXNJaHRneDhOT2ZSZTNPUHEzWk9NYlFWS2JoTjFr?= =?utf-8?B?M055UkNURUR4UGh3VHlVeFZMcUxySWN1Z2hjY1ZSNkh4MFR5emJwN3NZQlkz?= =?utf-8?B?czFldU9mOVdIcC96NHlEN1dsZEZnVUpndmVlMU1SL1NxWXp5enpPVldHbUdq?= =?utf-8?B?dWdGOVhoR1R3Q0FSVXZ6SDhvWEttTjQwTUZZcTYzOE5FK0ZQWWgwRXljaklt?= =?utf-8?B?SEZPeXh4a0lYZlBaU1RMYS9aZUsxMG9meVdZRzlEQSt0RkJYd3dGY2FNNmJ6?= =?utf-8?B?KzVLTnhFSzY4WU1vR3JoQkZKbWtkdXNabDFveTZSL3E1UHRqbXZVSmRkbEEy?= =?utf-8?B?Um92SG9SYXJQWUdCb01uSm5lamcwL1JreFlXNkc4enRON2l6UEgrdllWZlJR?= =?utf-8?B?WTFocFJyYzJJcm1GUjFlSVBLT1hYZlEyS2QvQUZUU1Rxa1IwVGoySytFUTdG?= =?utf-8?B?VFg3VzFUTkU4bjBtK1IrVXk2eG5Ma0NiWjd5SU5lNHVpK1p4MHFwTklKa2U1?= =?utf-8?B?WEtScDF4Vkdrc0NZdHR1VjR5VXppcmNOZDlZLzNRRmdITmJ6MEJ3L1QrSnRE?= =?utf-8?B?UkxFcXZHQ01vT3lyQ2Q1QWNvd0gvOGJnMkRWQWhZMEhBR1c5Q1pmcWVTd3NG?= =?utf-8?B?ZHF3Y1RBU2owaXVPeTRqZFlCTllkcEdWZzVYallKOGx3VEIrQTdOU3RvanNT?= =?utf-8?B?U3Q1VUlJZVBSYmtFNkRmcmJXY2czOGhTc0E3OG1WZWI3alVMNytPTnBFZ2tP?= =?utf-8?B?TjY4bmpMTG1ZazlVUUtyWlE3eUl2N1VpQWhpendOMFB2N1dIMFVZblgwNlUv?= =?utf-8?B?S1NMMjV6UUFVeEtJQzJJdlRHR0E1NHl5bkJrd3JraTVZMHh3L3FSRFlrUEw4?= =?utf-8?B?NVhPWEpjQUp5MXhSMmJkS1JUZ09lN3hGV25xenJHTHhNTnlOMFlQZXB1cHBz?= =?utf-8?B?d1FreGxMMTBMVkNraWNHRjJleHZ3a2NFYjNnY2lnYk16aGdwM1MzTEFKRUNl?= =?utf-8?B?aEJKb0dYSkVVYmVFWjFwcEtHM3dRamxNdHZ1elVBOElYU2tYYUZXVjZBZkd0?= =?utf-8?B?M2R3bW1GTHBrNmZiUFZRVkx1ak1FYUJPM3BiWnFNd0tRVCtreUlrQ3JGR1Qr?= =?utf-8?B?ZVRlTUZiY3RFbStrV2hrRzA4TGJZcTBqOG5yM2d5eU84NzY2bkpON0pXSU1o?= =?utf-8?B?enRZaEp6U2FlSmJoMmRBT0J0QXZTdFVyZCtST0ZhTEJPWXcvSm9DY1NpV0ox?= =?utf-8?Q?B+jc2GOWPcgzeLrkEinjQfyrv?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6ba4540-026a-4479-c34c-08dae88d6f9b X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Dec 2022 04:38:58.6545 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZntvdXQLYj7NFcShyOyz2gMwAluY5DfnEuRmJ8cnfmMk58hj9vUt2t2EuvSY34MvJVUIOaA0uRjy/vs6iB8MJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB7843 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlLCBEZWMgMjcsIDIwMjIgMTk6MzcgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2FwaWxhMTZA Z21haWwuY29tPiB3cm90ZToNCj4gT24gVHVlLCBEZWMgMjcsIDIwMjIgYXQgMTA6MjQgQU0gd2Fu Z3cuZm5zdEBmdWppdHN1LmNvbQ0KPiA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4gd3JvdGU6DQo+ ID4NCj4gPiBBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHdoaWNoIGFkZHJlc3NlZCBhbGwg YWJvdmUgY29tbWVudHMgYW5kIHBhcnQNCj4gb2YNCj4gPiBjb21tZW50cyBmcm9tIFsxXSBleGNl cHQgb25lIGNvbW1lbnQgdGhhdCBhcmUgYmVpbmcgZGlzY3Vzc2VkLg0KPiA+DQoNClRoYW5rcyBm b3IgeW91ciBjb21tZW50cy4NCg0KPiAxLg0KPiArIyBUZXN0IHRoYXQgdGhlIGRlYWRsb2NrIGlz IGRldGVjdGVkIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4NCj4gKw0K PiArJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJkZWFk bG9ja190aW1lb3V0ID0NCj4gMW1zIik7DQo+ICskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7DQo+ ICsNCj4gDQo+IEEuIEkgc2VlIHRoYXQgdGhlIG90aGVyIGV4aXN0aW5nIHRlc3RzIGhhdmUgZGVh ZGxvY2tfdGltZW91dCBzZXQgYXMNCj4gMTBtcywgMTAwbXMsIDEwMHMsIGV0Yy4gSXMgdGhlcmUg YSByZWFzb24gdG8ga2VlcCBzbyBsb3cgaGVyZT8gU2hhbGwNCj4gd2Uga2VlcCBpdCBhcyAxMG1z Pw0KDQpObywgSSB0aGluayB5b3UgYXJlIHJpZ2h0LiBLZWVwIGl0IGFzIDEwbXMuDQoNCj4gQi4g L2Ftb25nIGxlYWRlci9hbW9uZyB0aGUgbGVhZGVyDQoNCkZpeGVkLg0KDQo+IDIuIENhbiB3ZSBs ZWF2ZSBoYXZpbmcgdGVzdHMgaW4gMDIyX3R3b3BoYXNlX2Nhc2NhZGUgdG8gYmUgY292ZXJlZCBi eQ0KPiBwYXJhbGxlbCBtb2RlPyBUaGUgdHdvLXBoYXNlIGFuZCBwYXJhbGxlbCBhcHBseSB3aWxs IGJlIGNvdmVyZWQgYnkNCj4gMDIzX3R3b3BoYXNlX3N0cmVhbSwgc28gbm90IHN1cmUgaWYgd2Ug Z2V0IGFueSBleHRyYSBjb3ZlcmFnZSBieQ0KPiAwMjJfdHdvcGhhc2VfY2FzY2FkZS4NCg0KQ29t cGFyZWQgd2l0aCAwMjNfdHdvcGhhc2Vfc3RyZWFtLCB0aGVyZSBpcyAicm9sbGJhY2sgYSBzdWJ0 cmFuc2FjdGlvbiIgaW4NCjAyMl90d29waGFzZV9jYXNjYWRlLCBidXQgc2luY2UgdGhpcyBwYXJ0 IG9mIHRoZSBjb2RlIGNhbiBiZSBjb3ZlcmVkIGJ5IHRlc3RzDQppbiAwMThfc3RyZWFtX3N1Ynhh Y3RfYWJvcnQsIEkgdGhpbmsgd2UgY2FuIHJlbW92ZSBwYXJhbGxlbCB2ZXJzaW9uIGZvcg0KMDIy X3R3b3BoYXNlX2Nhc2NhZGUuIFNvIEkgcmV2ZXJ0ZWQgY2hhbmdlcyBpbiAwMjJfdHdvcGhhc2Vf Y2FzY2FkZSBmb3INCnBhcmFsbGVsIG1vZGUgYW5kIGFkZGVkIHNvbWUgY29tbWVudHMgYXRvcCB0 aGlzIGZpbGUuDQoNCj4gMy4gTGV0J3MgY29tYmluZSAwMDAxIGFuZCAwMDAyIGFzIGJvdGggaGF2 ZSBnb3QgcmV2aWV3ZWQgaW5kZXBlbmRlbnRseS4NCg0KQ29tYmluZWQgdGhlbSBpbnRvIG9uZSBw YXRjaC4NCg0KQW5kIEkgYWxzbyBjaGVja2VkIGFuZCBtZXJnZWQgdGhlIGRpZmYgcGF0Y2ggaW4g WzFdLg0KDQpCZXNpZGVzLCBhbHNvIGZpeGVkIHRoZSBiZWxvdyBwcm9ibGVtOg0KSW4gcHJldmlv dXMgdmVyc2lvbnMsIHdlIGRpZG4ndCB3YWl0IGZvciBTVFJFQU1fQUJPUlQgdHJhbnNhY3Rpb25z IHRvIGNvbXBsZXRlLg0KQnV0IGluIGV4dHJlbWUgY2FzZXMsIHRoaXMgY2FuIGNhdXNlIHByb2Js ZW1zIGlmIHRoZSBTVFJFQU1fQUJPUlQgdHJhbnNhY3Rpb24NCmRvZXNuJ3QgY29tcGxldGUgYW5k IHhpZCB3cmFwYXJvdW5kIG9jY3VycyBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIEZpeGVkIHRoaXMg YnkNCndhaXRpbmcgZm9yIHRoZSBTVFJFQU1fQUJPUlQgdHJhbnNhY3Rpb24gdG8gY29tcGxldGUu DQoNCkF0dGFjaCB0aGUgbmV3IHBhdGNoIHNldC4NCg0KWzFdIC0gaHR0cHM6Ly93d3cucG9zdGdy ZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUE0ZUsxJTJCNWdUakh6V292a2JVaiUyQnhzUTl5TzlqVmNL c1MtM2M1WlhMRnk4Sm1mVCUzREElNDBtYWlsLmdtYWlsLmNvbQ0KDQpSZWdhcmRzLA0KV2FuZyB3 ZWkNCg== --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v69-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v69-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v69-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=267985; creation-date="Wed, 28 Dec 2022 04:33:16 GMT"; modification-date="Wed, 28 Dec 2022 04:38:55 GMT" Content-Transfer-Encoding: base64 RnJvbSBkODM3NzUzZTBlZmNlZDQ1MmQ0NWFjOTIzOTkxMWEzMzE1ODM2MmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2OSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzIHNvb24KYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gSG93ZXZlciwgaWYKdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgdGltZXMgb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhl CnBhcmFsbGVsIGFwcGx5IHdvcmtlciwgaXQgd2lsbCBzd2l0Y2ggdG8gInBhcnRpYWwgc2VyaWFs aXplIiBtb2RlIC0gIGluIHRoaXMKbW9kZSB0aGUgbGVhZGVyIHNlcmlhbGl6ZXMgYWxsIHJlbWFp bmluZyBjaGFuZ2VzIHRvIGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlCnBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgdG8gcmVhZCBhbmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gV2UKa2VlcCB0aGlzIHBhcmFsbGVsIGFwcGx5IGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0 aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQKYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZp bmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZwphbmQgYXZvaWRz IHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNhc2VzLiBXZSBzdGls bCBuZWVkIHRvCnNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFibGUuCgpUaGlzIHBh dGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIHBhcmFtZXRlciBz byB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBzcGlsbCB0aGUgY2hh bmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXIgdG8K J29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3BhcmFsbGVsJyBtZWFu cyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRoZSBkZWZhdWx0IHZh bHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0 aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVz c2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdo aWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3JpZ2luIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMKYWJvcnRl ZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0byBzdXBwb3J0IHBh cmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KCk5vdGU6IFNpbmNlIHRoZSBmaWVsZCAn c3Vic3RyZWFtJyBvZiBjYXRhbG9nICdwZ19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVk LCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgMjIgKy0KIGRvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29s LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICAyNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgICA2NyArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFt cS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2ludGVycnVwdC5jICAgICAgICAgICAgfCAgICA1ICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDE2MTMgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAyMjAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAxICsKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAgMzcgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMjUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDEzNTAgKysrKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAgMjIg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgIDQg Kwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgICA0NiAr CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgICAzICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICAgIDYgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgIHwgICAgNSArLQog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgICAxICsKIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNy Yy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAgICB8ICAgIDIgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgIHwgICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDI4ICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgICA4ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAgIDQgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAyMjIgKystCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDQ2ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgfCAgICA2ICstCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgMjc0ICsrLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgIDEzMCArLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgICAgMyArCiAuLi4vdC8w MThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAgfCAgMjIwICsrLQogLi4uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCAgICAgICAgIHwgICAgMyArCiAuLi4vc3Vi c2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAgICAyICsKIC4uLi9zdWJz Y3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8ICA1MjMgKysrLS0tCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICA3ICsKIDU3IGZp bGVzIGNoYW5nZWQsIDQ0MjggaW5zZXJ0aW9ucygrKSwgNzU5IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA5MzE2YjgxMWFjLi5jMWU0MDQ4MDU0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbApAQCAtNzkxMywxMSArNzkxMywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJz dHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFs bG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAg IENvbnRyb2xzIGhvdyB0byBoYW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnM6CisgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVy YWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisg ICAgICAgZGlzayBhbmQgYXBwbHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHRoZQorICAgICAgIHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNj cmliZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVj dGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChz YW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMzA3MWM4ZWFjZS4uZjQ3NmNjNGY0NSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbApAQCAtNDk2OCw3ICs0OTY4LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIK ICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGlt dW0gbnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwot ICAgICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3Jr ZXJzLgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2Vy cywgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwv cGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJz IGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTUwMDgsNiArNTAwOSwzMSBA QCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJs ZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBs eS13b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50 ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1l Pm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAg ICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGlt dW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhp cworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBm b3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxs ZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBi eQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJu YW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0 IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAg ICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNl cnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAg PC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggN2I5YmIw MGU1YS4uNTRmNDhiZTg3ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBA IC0xNTAxLDYgKzE1MDEsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9y IHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5v dCB2aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNj cmliZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0 aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmlu aXNoIExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4g dGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWlu ZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+ IGFuZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNO IG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2Vy dmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxp bmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VC U0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9z ZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpA QCAtMTgwOSw4ICsxODE5LDkgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9y IHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICAgPHBhcmE+ CiAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1sb2dpY2FsLXJlcGxpY2F0aW9uLXdvcmtlcnMi Pjx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+PC9saW5r PgotICAgIG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9u cyAoZm9yIGFwcGx5IHdvcmtlcnMpLCBwbHVzCi0gICAgc29tZSByZXNlcnZlIGZvciB0aGUgdGFi bGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3Qg dGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgbGVhZGVyIGFwcGx5CisgICAgd29ya2Vy cyksIHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtl cnMgYW5kCisgICAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAgIDwvcGFyYT4KIAogICAgPHBh cmE+CkBAIC0xODI3LDYgKzE4MzgsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRh dGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgICAg c3Vic2NyaXB0aW9uIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gbmV3IHRhYmxlcyBhcmUgYWRkZWQu CiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtcGFy YWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFybmFtZT5tYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPjwvbGluaz4KKyAgICAg Y29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mIGluLXBy b2dyZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAg ICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgPC9wYXJhPgor CiAgICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIGFsc28gYWZm ZWN0ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjx2 YXJuYW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4sCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbAppbmRleCAzNjNiMTgzZTVmLi5lYWZlZWFkZjQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAg LTE4NTEsNiArMTg1MSwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3 NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPGVudHJ5 PjxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGlu ZyB0byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5PgogICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGEgbG9jayBvbiBh IHJlbW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBhIGxvZ2ljYWwgcmVw bGljYXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAg ICAgIDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRy eT5XYWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4 IDAzMzEyZTA3ZTIuLjQzOWVmNjc1ZjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAzLDcgKzMxMDMs NyBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVO VElGWV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90 b2NvbCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxs aXRlcmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUg c3VwcG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwv bGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAg ICAgIFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNl cnZlciB2ZXJzaW9uIDE0CkBAIC0zMTEzLDYgKzMxMTMsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3Rn cmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBW ZXJzaW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIg dmVyc2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2Yg dHdvLXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBW ZXJzaW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIg dmVyc2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9mIGxh cmdlIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKQEAgLTY4ODMsNiArNjg4OCwyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGlj YXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQu IFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAg IDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVz dGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51 bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIw MDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9j b2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKaW5kZXggZjlhMTc3NjM4MC4uZjE3M2EwOTAzNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBAIENSRUFURSBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1l PC9yZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVu dHJ5PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5i b29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwv bGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgog ICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0 cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBz dWJzY3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJl IGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhl Ci0gICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1 YnNjcmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4s CisgICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9u IHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNj cmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNo YW5nZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4g YXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRl ZCBvbiB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAg ICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRl cmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAg ICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlm IGF2YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJl ZSB0byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNo YW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRo ZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVy cm9yIGhhcHBlbnMgaW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZp bmlzaCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBi ZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApp bmRleCAxNDNhZTViN2JiLi44NDI4ZWU3ODY3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0x Mzc5LDggKzEzNzksOSBAQAogICAgICAgIDxsaXRlcmFsPnZpcnR1YWx4aWQ8L2xpdGVyYWw+LAog ICAgICAgIDxsaXRlcmFsPnNwZWN0b2tlbjwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+b2Jq ZWN0PC9saXRlcmFsPiwKLSAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sIG9yCi0g ICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LgorICAgICAgIDxsaXRlcmFsPnVzZXJs b2NrPC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4sIG9yCisg ICAgICAgPGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD4uCiAgICAgICAgKFNlZSBh bHNvIDx4cmVmIGxpbmtlbmQ9IndhaXQtZXZlbnQtbG9jay10YWJsZSIvPi4pCiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXgg YjdjN2ZkOWYwMC4uZDBkOWM4NjQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAt MTcxMiw2ICsxNzEyLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkK IAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1w VHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVu J3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9y dGVkCkBAIC0xNzQyLDYgKzE3NDMsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlz U3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQg d2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNp bmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3Jkcywg YXJlCisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4g PSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJ CQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkv KiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMg PSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0 R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBS ZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFn cywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmln aW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAq LworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhl IGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8K IAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRl bGF5aW5nIHRoaXMsIHNpbmNlCkBAIC01ODY3LDExICs1ODgwLDEwIEBAIFhhY3RMb2dBYm9ydFJl Y29yZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCX0KIAogCS8qCi0JICogRHVtcCB0cmFuc2Fj dGlvbiBvcmlnaW4gaW5mb3JtYXRpb24gb25seSBmb3IgYWJvcnQgcHJlcGFyZWQuIFdlIG5lZWQK LQkgKiB0aGlzIGR1cmluZyByZWNvdmVyeSB0byB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdp biBwcm9ncmVzcy4KKwkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbi4gV2Ug bmVlZCB0aGlzIGR1cmluZyByZWNvdmVyeSB0bworCSAqIHVwZGF0ZSB0aGUgcmVwbGljYXRpb24g b3JpZ2luIHByb2dyZXNzLgogCSAqLwotCWlmICgocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAh PSBJbnZhbGlkUmVwT3JpZ2luSWQpICYmCi0JCVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHR3b3BoYXNl X3hpZCkpCisJaWYgKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdp bklkKQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNfT1JJR0lOOwogCkBA IC01OTI4LDggKzU5NDAsOCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0YW1wVHogYWJvcnRf dGltZSwKIAlpZiAoeGxfeGluZm8ueGluZm8gJiBYQUNUX1hJTkZPX0hBU19PUklHSU4pCiAJCVhM b2dSZWdpc3RlckRhdGEoKGNoYXIgKikgKCZ4bF9vcmlnaW4pLCBzaXplb2YoeGxfeGFjdF9vcmln aW4pKTsKIAotCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQotCQlYTG9n U2V0UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJTik7CisJLyogSW5jbHVkZSB0aGUgcmVw bGljYXRpb24gb3JpZ2luICovCisJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklH SU4pOwogCiAJcmV0dXJuIFhMb2dJbnNlcnQoUk1fWEFDVF9JRCwgaW5mbyk7CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZDY3MzU1N2VhNC4uOTM4MmU2MTll OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQs NyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJl ZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1p bmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9y aWdpbjsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcg PSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMt PnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElT QUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29u ZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0 cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVh bihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVs KTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9 PSAwKQogCQl7CkBAIC02MjksNyArNjI5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwog CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0 dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5 IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVt KG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhh c2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9H SUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEFs dGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFN SU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0g LSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdl dERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApAQCAtMjEyMiwzICsyMTIyLDYwIEBA IG1lcmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBi b29sIGFkZHB1YiwgY29uc3QgY2hhciAqCiAKIAlyZXR1cm4gb2xkcHVibGlzdDsKIH0KKworLyoK KyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhp cyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lh bCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERl ZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNz dW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoIWRlZi0+YXJnKQorCQlyZXR1cm4gTE9H SUNBTFJFUF9TVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxzZSIsICJ0cnVl IiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVm LT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFy ZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZG OworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOworCQkJCWRl ZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFr OworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9 IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3Mg YWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mg b3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0 cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWws ICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOworCQkJCWlm IChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21w KHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJ CQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4g TE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisKKwllcmVw b3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJIGVycm1z ZygiJXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxcIiIsCisJCQkJCWRl Zi0+ZGVmbmFtZSkpKTsKKwlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMg Yi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZTM3OS4uNjM5ODQ1ZmQ4MCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog CisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVz c2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9 IHNobV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYg KHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21x X3BhcmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0Us Ci0JCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlm IChJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFf bXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZ X01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOwor CQkJZWxzZQorCQkJeworCQkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQkJCVNlbmRQ cm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19Q QVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5k X2lkKTsKKwkJCX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMGQ3MmRlMjRiMC4uMmRm YTlhYjUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5 V29ya2VyTWFpbgorCX0sCisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxl bEFwcGx5V29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmlu ZGV4IDFhZWQyZTJlOTkuLmU2NDAyOWZhYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQu YwpAQCAtOTgsOCArOTgsOSBAQCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdT KQogICogc2h1dCBkb3duIGFuZCBleGl0LgogICoKICAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVy IHdvdWxkIGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90 aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lH VVNSMiwgYW5kIHRoZQotICogV0FMIHdyaXRlciBleGl0cyBvbiBlaXRoZXIgU0lHSU5UIG9yIFNJ R1RFUk0uCisgKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVy IGV4aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUgV0FMCisgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2Fs IHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKKyAqIFNJ R0lOVCBvciBTSUdURVJNLgogICoKICAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJl IGNoZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUKICAqIG1haW4gbG9vcCwg b3IgZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0 cy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIv bGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2Y2OTdiMGYyOS4uMjI1ZGE4MWYyZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdh bHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFydHN0 cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwg InByb3RvX3ZlcnNpb24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90 b192ZXJzaW9uKTsKIAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgJiYK LQkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChvcHRp b25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZj bWQsICIsIHN0cmVhbWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5z dHJlYW1pbmdfc3RyKTsKIAogCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC50d29waGFzZSAm JgogCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE1MDAwMCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLjJkYzI1 ZTM3YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTUs NiArMTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBv dmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAor CWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxv Z2ljYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjAyOTA4MTNhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDE2MTMgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRp bmVzIGZvciBhcHBseWluZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29k ZSB0byBsYXVuY2gsIHNldCB1cCwgYW5kIHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlciB3aGljaCByZWNlaXZlcyB0aGUgY2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFu ZCBpbnZva2VzIHJvdXRpbmVzCisgKiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBk YXRhYmFzZS4gQWRkaXRpb25hbGx5LCB0aGlzIGZpbGUgY29udGFpbnMKKyAqIHJvdXRpbmVzIHRo YXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsIGFuZCB0ZWFyaW5n IGRvd24gYQorICogUGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28g dGhlIGxlYWRlciB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21t dW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYXJlIGFzc2lnbmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCisgKiBmaXJz dCBzdHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVp ciAnc3RyZWFtaW5nJworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFwcGx5IHdv cmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldworICogd29ya2VyIHZpYSBzaGFyZWQg bWVtb3J5LiBXZSBrZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9u CisgKiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBm aW5pc2ggYXQgY29tbWl0LiBUaGlzCisgKiBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBh dm9pZCBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZQorICogc3RpbGwgbmVlZCB0 byBzcGlsbCB0byBhIGZpbGUgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gU2VlIGNv bW1lbnRzCisgKiBhdG9wIGxvZ2ljYWwvd29ya2VyIHRvIGtub3cgbW9yZSBhYm91dCBzdHJlYW1l ZCB4YWN0cyB3aG9zZSBjaGFuZ2VzIGFyZQorICogc3BpbGxlZCB0byBkaXNrLiBJdCBpcyBpbXBv cnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUg dG86IChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgLSBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93 IGluIHRoZSBmaXJzdAorICogdHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25k IHRyYW5zYWN0aW9uIG9uIHB1Ymxpc2hlciB0aGVuCisgKiBhbGxvd2luZyB0aGUgc3Vic2NyaWJl ciB0byBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlCisg KiB1cGRhdGU7IChiKSBkZWFkbG9ja3MgLSBhbGxvd2luZyB0cmFuc2FjdGlvbnMgdGhhdCB1cGRh dGUgdGhlIHNhbWUgc2V0IG9mCisgKiByb3dzL3RhYmxlcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIg dG8gYmUgYXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0bworICogZGVhZGxvY2tzLgorICoK KyAqIEEgd29ya2VyIHBvb2wgaXMgdXNlZCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9y IGVhY2ggc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIn cyBpbmZvcm1hdGlvbiAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pCisgKiBpbiB0aGUgUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29y a2VyLAorICogaXRzIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29y a2VyUG9vbC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNh Y3Rpb24sIGl0IGlzIG1hcmtlZCBhcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKyAqIE5vdywgYmVm b3JlIHN0YXJ0aW5nIGEgbmV3IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLCB3ZQorICogY2hlY2sgdGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3Rl IHRoYXQgd2UgcmV0YWluIGEgbWF4aW11bSBvZgorICogaGFsZiB0aGUgbWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRoZSBwb29sIGFuZAorICog YWZ0ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRlciBhcHBseWluZyB0aGUg dHJhbnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGFy Yml0cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAqIHZhcmlhYmxlIGZvciB0aGlzIGlu IHRoZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIg d2lsbCBjcmVhdGUgYSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICog d2hlbiBlYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRo aXMgZGVzaWduIGlzIHRoYXQKKyAqIHdlIGNhbm5vdCBwcmVkaWN0IGhvdyBtYW55IHdvcmtlcnMg d2lsbCBiZSBuZWVkZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdo IHNoYXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVy IG9mCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uKSwgYnV0CisgKiB0aGlzIHdvdWxkIHdhc3RlIG1lbW9yeSBpZiBu byBwcm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50IGNvbnRhaW5zOiAoYSkgYSBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvCisg KiBzZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOyAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBp cyB1c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZp YSBlbG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIg YXBwbHkKKyAqIHdvcmtlcjsgKGMpIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQg YW1vbmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycworICogYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIChpLmUuIG1lbWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkuCisgKgorICog TG9ja2luZyBDb25zaWRlcmF0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU2lu Y2UgdGhlIGRhdGFiYXNlIHN0cnVjdHVyZSAoc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMs IGNvbnN0cmFpbnRzLAorICogZXRjLikgb2YgdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBj b3VsZCBiZSBkaWZmZXJlbnQsIGFwcGx5aW5nCisgKiB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwg bW9kZSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlIGNhbiBjYXVzZSBzb21lCisgKiBkZWFkbG9ja3Mg dGhhdCBkbyBub3Qgb2NjdXIgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBUaGlzIGNhbiBoYXBwZW4g ZXZlbgorICogd2l0aG91dCBwYXJhbGxlbCBtb2RlIHdoZW4gdGhlcmUgYXJlIGNvbmN1cnJlbnQg b3BlcmF0aW9ucyBvbiB0aGUKKyAqIHN1YnNjcmliZXIuIEluIG9yZGVyIHRvIGRldGVjdCB0aGUg ZGVhZGxvY2tzIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMsIHdl IG5lZWQgdG8gZW5zdXJlIHRoYXQgd2Ugd2FpdCB1c2luZyBsbWdyIGxvY2tzLiBBbiBhbHRlcm5h dGl2ZQorICogYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVsaXNtIHdoZW4g dGhlIHNjaGVtYSBvZiB0YWJsZXMgaXMKKyAqIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBwdWJsaXNo ZXIgYW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUgdG9vCisgKiByZXN0cmljdGl2ZSBh bmQgd291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3JlIGluZm9ybWF0 aW9uCisgKiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENvbnNpZGVyIGEg Y2FzZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgdW5pcXVlIGtl eSBvbiB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0aGUgc3Vic2Ny aWJlci4KKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKFBBKSBpcyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIK KyAqIChMQSkgaXMgZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBzdWJzY3JpYmVy LiBOb3csIExBIGlzIHdhaXRpbmcKKyAqIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1bmlxdWUga2V5 IG9mIHRoZSBzdWJzY3JpYmVkIHRhYmxlIHdoaWxlIFBBIGlzIHdhaXRpbmcKKyAqIGZvciBMQSB0 byBzZW5kIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzIG9yIHRyYW5zYWN0aW9uIGZpbmlzaCBj b21tYW5kCisgKiBtZXNzYWdlLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0 aGlzLCB3ZSBoYXZlIExBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiByZW1vdGUg dHJhbnNhY3Rpb24gKGJ5IHBhX2xvY2tfc3RyZWFtKCkpIGFuZCBoYXZlIFBBIHdhaXQgb24gdGhl IGxvY2sgYmVmb3JlCisgKiB0cnlpbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gb2YgY2hh bmdlcy4gU3BlY2lmaWNhbGx5LCBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoZSBsb2NrIGJlZm9yZSBz ZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBhbmQgd2lsbCByZWxlYXNlIGl0IGlmIGFscmVhZHkKKyAq IGFjcXVpcmVkIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVCAo Zm9yIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFN X0NPTU1JVC4gVGhlIFBBIHdpbGwgYWNxdWlyZSB0aGUKKyAqIGxvY2sgYWZ0ZXIgcHJvY2Vzc2lu ZyBTVFJFQU1fU1RPUCBhbmQgU1RSRUFNX0FCT1JUIChmb3Igc3VidHJhbnNhY3Rpb24pIGFuZAor ICogdGhlbiByZWxlYXNlIHRoZSBsb2NrIGltbWVkaWF0ZWx5IGFmdGVyIGFjcXVpcmluZyBpdC4K KyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFz IGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlx dWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykg LT4gTEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0aW5nIGZvciBMQSBmb3IgdGhl IG5leHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2ZSBhIHdhaXQtZWRnZSBmcm9t IFBBIHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBkZXRlY3QgdGhlCisgKiBkZWFk bG9jayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogVGhp cyBzY2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0y IGFyZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKFBBLTEgYW5k IFBBLTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAqIFBBLTIgaXMgd2FpdGlu ZyBmb3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hpbGUgUEEtMSBpcyB3YWl0 aW5nCisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNvLCBMQSBpcyB3YWl0aW5n IGZvciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24gaW4gb3JkZXIgdG8gcHJl c2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9jayBhbW9uZworICogdGhl IHRocmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhp cywgd2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0aGlzIGlzCisgKiBhIGRpZmZl cmVudCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gcHJldmlvdXMgY2FzZSwgc2VlCisgKiBwYV9sb2Nr X3RyYW5zYWN0aW9uKCkpIG9uIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIGFuZCBoYXZl IExBIHdhaXQgb24KKyAqIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRoZSB0cmFuc2Fj dGlvbiBmaW5pc2ggY29tbWFuZHMuIFNwZWNpZmljYWxseSwKKyAqIFBBIHdpbGwgYWNxdWlyZSB0 aGlzIGxvY2sgaW4gU2hhcmUgbW9kZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBmaXJzdCBtZXNzYWdl CisgKiBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIHJlbGVhc2UgaXQgYXQgdGhlIHhhY3QgZW5kLiBM QSB3aWxsIGFjcXVpcmUgdGhpcyBsb2NrCisgKiBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBhdCB0 cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKFNUUkVBTV9DT01NSVQgYW5kCisgKiBTVFJFQU1f UFJFUEFSRSkgYW5kIHJlbGVhc2UgaXQgaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3Jh cGggZm9yIHRoZSBhYm92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdh aXRpbmcgdG8gYWNxdWlyZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0 byBhY3F1aXJlIHRoZQorICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+ IFBBLTEgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoK KyAqIFRoaXMgd2F5IHdoZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9u IGVuZCBjb21tYW5kIHRvIHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJl IGFibGUgdG8gZGV0ZWN0IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5r IHdlIGNhbiB1c2UgWGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkK KyAqIGNvbnNpZGVycyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3 aGljaCBtZWFucyB0aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgor ICoKKyAqIDMpIERlYWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAq IEluIHRoZSBwcmV2aW91cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGlu ZyB0cmFuc2FjdGlvbnMKKyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJl dHdlZW4gTEEgYW5kIFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVz c2FnZXMsIGFuZCB0aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyBh dm9pZCB0aGlzIHdhaXQsIHdlIHVzZSBhIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRo IGEgdGltZW91dC4gSWYKKyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBz ZXJpYWxpemUgYWxsIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIHRvCisgKiBhIGZpbGUgYW5kIGluZGlj YXRlIFBBLTIgdGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmlu ZworICogbWVzc2FnZXMuIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgYXMg aW4gdGhlIHByZXZpb3VzIGNhc2UKKyAqIHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFu eS4gU2VlIHBhX3NlbmRfZGF0YSgpIGFuZAorICogZW51bSBUcmFuc0FwcGx5QWN0aW9uLgorICoK KyAqIDQpIExvY2sgdHlwZXMKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9jayBhbmQgdGhlIHRy YW5zYWN0aW9uIGxvY2sgbWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lvbi1sZXZlbCBsb2Nr cyBiZWNhdXNlIGJvdGggbG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lkZSB0aGUKKyAqIHRy YW5zYWN0aW9uLCBhbmQgdGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVy c2lzdCBhY3Jvc3MKKyAqIHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5k IG9mIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisj aW5jbHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBv c3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdy LmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoK KyAqIERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFy YWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFi b3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNl IHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJ CTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9B UFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9y IG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8q CisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQg bGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50 IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91 dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0 ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5l IERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFyZSB0 aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBhcHBs eQorICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZSB3 ZSBoYXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwgYXBw bHkgd29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNkZWZp bmUgU0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9mKFRp bWVzdGFtcFR6KSkKKworLyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBh IHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBz dWJzY3JpYmVyLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNCTAKKyNk ZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFibGUgZW50 cnkgdG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICovCit0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklk IHhpZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qCisgKiBB IGhhc2ggdGFibGUgdXNlZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyBiZWluZyBhcHBsaWVkCisgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAq Lworc3RhdGljIEhUQUIgKlBhcmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKKworLyoKKyogQSBs aXN0IChwb29sKSBvZiBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9ybWF0 aW9uIGZvcgorKiB0aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNj ZXNzZnVsbHkgbGF1bmNoaW5nIGl0LiBUaGUKKyogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGlmIHRo ZXJlIGFyZSBhbHJlYWR5IGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIKKyogcG9vbCBlaXRo ZXIgYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQg YSBmcmVlCisqIHdvcmtlciBmb3IgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBp bmZvcm1hdGlvbiBhYm91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRo aXMgZmlsZS4KKyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklM OworCisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2Fn ZSBzZW50IGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQor ICogd29ya2VyIG5lZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQ YXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRo ZQorICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0 aGUgY29zdCBvZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhl IGNoYW5nZXMgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0 aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwor CisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0 aWMgTGlzdCAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2Vy X2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRy YW5zU3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3No YXJlZCk7CitzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2 b2lkKTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFf Y2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZCh4aWQpKTsKKworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0YXJ0IHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogSXQgaXMgZ29vZCB0byBjaGVjayBmb3IgYW55 IGNoYW5nZSBpbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciB0bworCSAqIGF2b2lkIHRoZSBj YXNlIHdoZXJlIGZvciBhIHZlcnkgbG9uZyB0aW1lIHRoZSBjaGFuZ2UgZG9lc24ndCBnZXQKKwkg KiByZWZsZWN0ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlIGlzIGEgY29uc3RhbnQgZmxv dyBvZiBzdHJlYW1pbmcKKwkgKiB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXJzLgorCSAqCisJICogSXQgaXMgYmV0dGVyIHRvIGRvIGl0IGJlZm9y ZSB0aGUgYmVsb3cgY2hlY2tzIHNvIHRoYXQgdGhlIGxhdGVzdCB2YWx1ZXMKKwkgKiBvZiBzdWJz Y3JpcHRpb24gY2FuIGJlIHVzZWQgZm9yIHRoZSBjaGVja3MuCisJICovCisJbWF5YmVfcmVyZWFk X3N1YnNjcmlwdGlvbigpOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QKKwkgKiB1c2luZyBwYXJhbGxl bCBzdHJlYW1pbmcgbW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBzdXBwb3J0CisJ ICogcGFyYWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFs bGVsX2FwcGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3 IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9z c2libGUgdGhhdCB0aGV5IHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBG b3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLCB3ZSBuZWVkIHRvIHNlcmlhbGl6ZSB0aGUg dHJhbnNhY3Rpb24gdG8gYSBmaWxlCisJICogc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExT TiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0bworCSAqIHNraXAgYmVmb3Jl IHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJ bnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoK KwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVz aW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhl ciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBpcyBub3QgaW4g dGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBh cyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRpbWUuIFNvLCB3 ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0aGlzIGNhc2Uu CisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJ cmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0IGNvbnRhaW5z IGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQp LCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRy dWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wKK3BhX3Nl dHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3RvY19lc3Rp bWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAg ICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAg Km1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQllcnJvcl9x dWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGltYXRlIGhv dyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBt YWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAq IHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgor CSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRl ciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0aW9ucyBvZiB0aGUg bWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1ZS4KKwkgKi8KKwlz aG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIGVy cm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAzKTsKKwlzZWdz aXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1v cnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJc2VnID0g ZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFzZWcpCisJCXJldHVy biBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBT ZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0 b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZz aGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VO S05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3Vu dCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CisJ c2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisKKwlzaG1fdG9jX2luc2VydCh0b2Ms IFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQgdXAgbWVzc2Fn ZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19h bGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0 b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBN eVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFfaGFuZGxlID0g c2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJvciBxdWV1ZSBm b3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0ZSh0 b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXplKTsKKwlzaG1f dG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgbXEpOworCXNo bV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAq LworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwp OworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5kc21fc2VnID0g c2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK KyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgcG9vbC4gSWYg bm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICovCitzdGF0aWMg UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcih2b2lk KQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdAkgICAqYWN0aXZlX3dvcmtlcnMgPSBs aXN0X2NvcHkoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpOworCUxpc3RDZWxsICAgKmxjOworCisJ LyogVHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhl IHdvcmtlciBwb29sLiAqLworCWZvcmVhY2gobGMsIGFjdGl2ZV93b3JrZXJzKQorCXsKKwkJd2lu Zm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlpZiAoIXdp bmZvLT5pbl91c2UpCisJCQlyZXR1cm4gd2luZm87CisJfQorCisJLyoKKwkgKiBTdGFydCBhIG5l dyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICoKKwkgKiBUaGUgd29ya2VyIGluZm8gY2FuIGJl IHVzZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd29ya2VyIHByb2Nlc3MsIHNvCisJICogY3Jl YXRlIGl0IGluIGEgcGVybWFuZW50IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKikgcGFsbG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsK KworCS8qIFNldHVwIHNoYXJlZCBtZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20od2luZm8p KQorCXsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5m byk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlv bi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9n aWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJ ZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJ eworCQlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtl clBvb2wsIHdpbmZvKTsKKwl9CisJZWxzZQorCXsKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5m byk7CisJCXdpbmZvID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CisKKwlyZXR1cm4gd2luZm87Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuCisg KgorICogV2UgZmlyc3QgdHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgd29ya2VyIGZyb20gdGhlIHBv b2wsIGlmIGFueSBhbmQgdGhlbiB0cnkKKyAqIHRvIGxhdW5jaCBhIG5ldyB3b3JrZXIuIE9uIHN1 Y2Nlc3NmdWwgYWxsb2NhdGlvbiwgcmVtZW1iZXIgdGhlIHdvcmtlcgorICogaW5mb3JtYXRpb24g aW4gdGhlIGhhc2ggdGFibGUgc28gdGhhdCB3ZSBjYW4gZ2V0IGl0IGxhdGVyIGZvciBwcm9jZXNz aW5nIHRoZQorICogc3RyZWFtaW5nIGNoYW5nZXMuCisgKi8KK3ZvaWQKK3BhX2FsbG9jYXRlX3dv cmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50 cnk7CisKKwlpZiAoIXBhX2Nhbl9zdGFydCh4aWQpKQorCQlyZXR1cm47CisKKwkvKiBGaXJzdCB0 aW1lIHRocm91Z2gsIGluaXRpYWxpemUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlIGhhc2h0 YWJsZS4gKi8KKwlpZiAoIVBhcmFsbGVsQXBwbHlUeG5IYXNoKQorCXsKKwkJSEFTSENUTAkJY3Rs OworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFsbGVs QXBwbHlUeG5IYXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkgICAxNiwgJmN0bCwKKwkJCQkJCQkJCQkg ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwl3aW5mbyA9 IHBhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIoKTsKKwlpZiAoIXdpbmZvKQorCQlyZXR1cm47CisK KwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJ ZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9FTlRF UiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1 cHRlZCIpOworCisJLyogVXBkYXRlIHRoZSB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBpbiBzaGFy ZWQgbWVtb3J5LiAqLworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwor CXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXdp bmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFyZWQt Pm11dGV4KTsKKworCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCXdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcyA9IGZhbHNlOworCWVudHJ5LT53aW5mbyA9IHdpbmZvOworCWVudHJ5LT54aWQgPSB4aWQ7 Cit9CisKKy8qCisgKiBGaW5kIHRoZSBhc3NpZ25lZCB3b3JrZXIgZm9yIHRoZSBnaXZlbiB0cmFu c2FjdGlvbiwgaWYgYW55LgorICovCitQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9maW5k X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbEFw cGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQp KQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCisJCXJldHVy biBOVUxMOworCisJLyogUmV0dXJuIHRoZSBjYWNoZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlm IHZhbGlkLiAqLworCWlmIChzdHJlYW1fYXBwbHlfd29ya2VyKQorCQlyZXR1cm4gc3RyZWFtX2Fw cGx5X3dvcmtlcjsKKworCS8qIEZpbmQgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNh Y3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhp ZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCWlmIChmb3VuZCkKKwl7CisJCS8qIFRoZSB3b3JrZXIg bXVzdCBub3QgaGF2ZSBleGl0ZWQuICAqLworCQlBc3NlcnQoZW50cnktPndpbmZvLT5pbl91c2Up OworCQlyZXR1cm4gZW50cnktPndpbmZvOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgor ICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIFRoaXMgcmVt b3ZlcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUg c28gdGhhdCBpdAorICogY2FuJ3QgYmUgdXNlZC4gSWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJz IGluIHRoZSBwb29sLCBpdCBzdG9wcyB0aGUgd29ya2VyCisgKiBhbmQgZnJlZXMgdGhlIGNvcnJl c3BvbmRpbmcgaW5mby4gT3RoZXJ3aXNlIGl0IGp1c3QgbWFya3MgdGhlIHdvcmtlciBhcworICog YXZhaWxhYmxlIGZvciByZXVzZS4KKyAqCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd29ya2VyIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKyAqLworc3RhdGlj IHZvaWQKK3BhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sK KwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKwlBc3NlcnQod2luZm8tPmlu X3VzZSk7CisJQXNzZXJ0KHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID09IFBBUkFM TEVMX1RSQU5TX0ZJTklTSEVEKTsKKworCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4 bkhhc2gsICZ3aW5mby0+c2hhcmVkLT54aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJZWxvZyhF UlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkvKgorCSAqIFN0b3AgdGhlIHdvcmtl ciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICoKKwkgKiBYWFgg QWRkaXRpb25hbGx5LCB3ZSBhbHNvIHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlcgorCSAqIHNlcmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1ZSB0 byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcworCSAqIGJlY2F1c2UgdGhlIG1lc3NhZ2UgY291bGQg YmUgcGFydGlhbGx5IHdyaXR0ZW4gdG8gdGhlIHF1ZXVlIGFuZCB0aGVyZQorCSAqIGlzIG5vIHdh eSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhhbiByZXNlbmRpbmcgdGhlIG1lc3NhZ2UgdW50 aWwgaXQKKwkgKiBzdWNjZWVkcy4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gc2VuZCB0aGUgZGF0YSB3 aGljaCBhbnl3YXkgd291bGQgaGF2ZQorCSAqIGJlZW4gc2VyaWFsaXplZCBhbmQgdGhlbiBsZXR0 aW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZGVhbCB3aXRoCisJICogdGhlIHNwdXJpb3Vz IG1lc3NhZ2UsIHdlIHN0b3AgdGhlIHdvcmtlci4KKwkgKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzIHx8CisJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+CisJ CShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJewor CQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRpb247CisKKwkJU3BpbkxvY2tBY3F1 aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVk LT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCQlzbG90X25vID0gd2luZm8tPnNoYXJl ZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+ c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBn ZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKworCQlyZXR1cm47 CisJfQorCisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdl cyA9IGZhbHNlOworfQorCisvKgorICogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlu Zm9ybWF0aW9uIGFuZCB1bmxpbmsgdGhlIGZpbGVzIHdpdGgKKyAqIHNlcmlhbGl6ZWQgY2hhbmdl cyBpZiBhbnkuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2luZm8pOworCisJaWYgKHdpbmZv LT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisKKwlpZiAo d2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFf aGFuZGxlKTsKKworCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMu ICovCisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJc3RyZWFtX2NsZWFudXBfZmls ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgd2luZm8tPnNoYXJlZC0+eGlkKTsKKworCWlm ICh3aW5mby0+ZHNtX3NlZykKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisKKwkvKiBS ZW1vdmUgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wg PSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsKKworCXBm cmVlKHdpbmZvKTsKK30KKworLyoKKyAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUg Zm9yIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxs X2Vycm9yX21xKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJh bGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m byA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCXNobV9tcV9k ZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUg PSBOVUxMOworCX0KK30KKworLyoKKyAqIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyBz cG9vbGVkIG1lc3NhZ2VzLgorICovCitzdGF0aWMgYm9vbAorcGFfaGFzX3Nwb29sZWRfbWVzc2Fn ZV9wZW5kaW5nKCkKK3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlm aWxlc2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCXJldHVybiAoZmlsZXNl dF9zdGF0ZSAhPSBGU19FTVBUWSk7Cit9CisKKy8qCisgKiBSZXBsYXkgdGhlIHNwb29sZWQgbWVz c2FnZXMgb25jZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQKKyAqIHNlcmlh bGl6aW5nIGNoYW5nZXMgdG8gdGhlIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zcG9vbGVk X21lc3NhZ2VzKHZvaWQpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOwor CisJZmlsZXNldF9zdGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRlKCk7CisKKwkvKgorCSAqIElm IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGlzIGJ1c3kgc2VyaWFsaXppbmcgdGhlIHBhcnRpYWwg Y2hhbmdlcyB0aGVuCisJICogYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2sgbm93IGFuZCB3YWl0IGZv ciB0aGUgbGVhZGVyIHdvcmtlciB0byBmaW5pc2gKKwkgKiBzZXJpYWxpemluZyB0aGUgY2hhbmdl cy4gT3RoZXJ3aXNlLCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdvbid0IGdldAorCSAqIGEg Y2hhbmNlIHRvIHJlY2VpdmUgYSBTVFJFQU1fU1RPUCAoYW5kIGFjcXVpcmUgdGhlIHN0cmVhbSBs b2NrKSB1bnRpbAorCSAqIHRoZSBsZWFkZXIgaGFkIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgd2hp Y2ggY2FuIGxlYWQgdG8gdW5kZXRlY3RlZAorCSAqIGRlYWRsb2NrLgorCSAqCisJICogTm90ZSB0 aGF0IHRoZSBmaWxlc2V0IHN0YXRlIGNhbiBiZSBGU19TRVJJQUxJWkVfRE9ORSBvbmNlIHRoZSBs ZWFkZXIKKwkgKiB3b3JrZXIgaGFzIGZpbmlzaGVkIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLgor CSAqLworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUykKKwl7 CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwkJZmlsZXNldF9zdGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRlKCk7CisJfQor CisJLyoKKwkgKiBXZSBjYW5ub3QgcmVhZCB0aGUgZmlsZSBpbW1lZGlhdGVseSBhZnRlciB0aGUg bGVhZGVyIGhhcyBzZXJpYWxpemVkIGFsbAorCSAqIGNoYW5nZXMgdG8gdGhlIGZpbGUgYmVjYXVz ZSB0aGVyZSBtYXkgc3RpbGwgYmUgbWVzc2FnZXMgaW4gdGhlIG1lbW9yeQorCSAqIHF1ZXVlLiBX ZSB3aWxsIGFwcGx5IGFsbCBzcG9vbGVkIG1lc3NhZ2VzIHRoZSBuZXh0IHRpbWUgd2UgY2FsbCB0 aGlzCisJICogZnVuY3Rpb24gYW5kIHRoYXQgd2lsbCBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lc3Nh Z2VzIGxlZnQgaW4gdGhlIG1lbW9yeQorCSAqIHF1ZXVlLgorCSAqLworCWlmIChmaWxlc2V0X3N0 YXRlID09IEZTX1NFUklBTElaRV9ET05FKQorCXsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQ YXJhbGxlbFNoYXJlZCwgRlNfUkVBRFkpOworCX0KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09 IEZTX1JFQURZKQorCXsKKwkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcygmTXlQYXJhbGxlbFNoYXJl ZC0+ZmlsZXNldCwKKwkJCQkJCQkgICBNeVBhcmFsbGVsU2hhcmVkLT54aWQsCisJCQkJCQkJICAg SW52YWxpZFhMb2dSZWNQdHIpOworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hh cmVkLCBGU19FTVBUWSk7CisJfQorfQorCisvKgorICogSW50ZXJydXB0IGhhbmRsZXIgZm9yIG1h aW4gbG9vcCBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitQcm9j ZXNzUGFyYWxsZWxBcHBseUludGVycnVwdHModm9pZCkKK3sKKwlDSEVDS19GT1JfSU5URVJSVVBU UygpOworCisJaWYgKFNodXRkb3duUmVxdWVzdFBlbmRpbmcpCisJeworCQllcmVwb3J0KExPRywK KwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgZmluaXNoZWQiLAorCQkJCQkJTXlTdWJzY3JpcHRp b24tPm5hbWUpKSk7CisKKwkJcHJvY19leGl0KDApOworCX0KKworCWlmIChDb25maWdSZWxvYWRQ ZW5kaW5nKQorCXsKKwkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQlQcm9jZXNzQ29u ZmlnRmlsZShQR0NfU0lHSFVQKTsKKwl9Cit9CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBt YWluIGxvb3AuICovCitzdGF0aWMgdm9pZAorTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9t cV9oYW5kbGUgKm1xaCkKK3sKKwlzaG1fbXFfcmVzdWx0IHNobXFfcmVzOworCUVycm9yQ29udGV4 dENhbGxiYWNrIGVycmNhbGxiYWNrOworCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gQ3VycmVudE1l bW9yeUNvbnRleHQ7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hp Y2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3Nh Z2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShB cHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJ CQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogUHVzaCBhcHBseSBlcnJv ciBjb250ZXh0IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2hpbGUgYXBwbHlpbmcK KwkgKiBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9y X2NhbGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsK KwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7OykKKwl7CisJ CXZvaWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKworCQlQcm9jZXNzUGFyYWxsZWxBcHBseUlu dGVycnVwdHMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50byBv dXIgbWVtb3J5IGNvbnRleHQuICovCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseU1lc3Nh Z2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1xaCwgJmxlbiwgJmRh dGEsIHRydWUpOworCisJCWlmIChzaG1xX3JlcyA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJeworCQkJ U3RyaW5nSW5mb0RhdGEgczsKKwkJCWludAkJCWM7CisKKwkJCWlmIChsZW4gPT0gMCkKKwkJCQll bG9nKEVSUk9SLCAiaW52YWxpZCBtZXNzYWdlIGxlbmd0aCIpOworCisJCQlzLmN1cnNvciA9IDA7 CisJCQlzLm1heGxlbiA9IC0xOworCQkJcy5kYXRhID0gKGNoYXIgKikgZGF0YTsKKwkJCXMubGVu ID0gbGVuOworCisJCQkvKgorCQkJICogVGhlIGZpcnN0IGJ5dGUgb2YgbWVzc2FnZXMgc2VudCBm cm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8KKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg Y2FuIG9ubHkgYmUgJ3cnLgorCQkJICovCisJCQljID0gcHFfZ2V0bXNnYnl0ZSgmcyk7CisJCQlp ZiAoYyAhPSAndycpCisJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBcIiVjXCIi LCBjKTsKKworCQkJLyoKKwkJCSAqIElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUg YmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIKKwkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCSAqCisJ CQkgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgdGhlIHN0YXRpc3RpY3MgZmllbGRzIGZyb20g dGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29ya2VyIGJ1dCBmb3IgdGhhdCwgaXQgbmVlZHMgdG8g cmVidWlsZCB0aGUgZW50aXJlCisJCQkgKiBtZXNzYWdlIGJ5IHJlbW92aW5nIHRoZXNlIGZpZWxk cyB3aGljaCBjb3VsZCBiZSBtb3JlIHdvcmsgdGhhbgorCQkJICogc2ltcGx5IGlnbm9yaW5nIHRo ZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJCQlzLmN1 cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisKKwkJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKwkJ fQorCQllbHNlIGlmIChzaG1xX3JlcyA9PSBTSE1fTVFfV09VTERfQkxPQ0spCisJCXsKKwkJCS8q IFJlcGxheSB0aGUgY2hhbmdlcyBmcm9tIHRoZSBmaWxlLCBpZiBhbnkuICovCisJCQlpZiAocGFf aGFzX3Nwb29sZWRfbWVzc2FnZV9wZW5kaW5nKCkpCisJCQl7CisJCQkJcGFfc3Bvb2xlZF9tZXNz YWdlcygpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWludAkJCXJjOworCisJCQkJLyogV2Fp dCBmb3IgbW9yZSB3b3JrLiAqLworCQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkJ ICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkJICAgMTAwMEwsCisJCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X01BSU4pOworCisJCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJQXNzZXJ0KHNobXFfcmVzID09IFNI TV9NUV9ERVRBQ0hFRCk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0 IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIikpKTsK KwkJfQorCisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VDb250ZXh0KTsKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrLiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCisvKgorICogTWFrZSBz dXJlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIHJlYWQgZnJvbSBvdXIgZXJyb3Ig cXVldWUgb25lIG1vcmUKKyAqIHRpbWUuIFRoaXMgZ3VhcmRzIGFnYWluc3QgdGhlIGNhc2Ugd2hl cmUgd2UgZXhpdCB1bmNsZWFubHkgd2l0aG91dCBzZW5kaW5nCisgKiBhbiBFcnJvclJlc3BvbnNl LCBmb3IgZXhhbXBsZSBiZWNhdXNlIHNvbWUgY29kZSBjYWxscyBwcm9jX2V4aXQgZGlyZWN0bHku CisgKi8KK3N0YXRpYyB2b2lkCitwYV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQorewor CVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJ CQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tl bmRJZCk7CisKKwlkc21fZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJn KSk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8K K3ZvaWQKK1BhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCVBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21f c2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9t cV9oYW5kbGUgKm1xaDsKKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJUmVwT3JpZ2luSWQg b3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsK KwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5k bGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisJ cHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMo KTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVu dCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBjb250 ZW50cy4KKwkgKgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVzb3Vy Y2Ugb3duZXIgYnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJICov CisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNt X2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoIXNlZykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSBzZWdtZW50IikpKTsKKworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQ TFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICghdG9jKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFV SVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQocGFfc2h1dGRv d24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZv cm1hdGlvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZ X0tFWV9TSEFSRUQsIGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoK KwkgKiBBdHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xv b2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVj ZWl2ZXIobXEsIE15UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsK KworCS8qCisJICogUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gTm93LCB3ZSBj YW4gYXR0YWNoIHRvIG91ciBzbG90LgorCSAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgZG9lcyBub3Qgd3JpdGUgZGF0YSB0bworCSAqIHRoZSB1bmluaXRp YWxpemVkIG1lbW9yeSBxdWV1ZS4KKwkgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29y a2VyX3Nsb3QpOworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7 CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9n aWNhbFJlcFdvcmtlci0+Z2VuZXJhdGlvbjsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVw X3dvcmtlcl9zbG90X25vID0gd29ya2VyX3Nsb3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFs bGVsU2hhcmVkLT5tdXRleCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZXJyb3IgcXVldWUu CisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJP Ul9RVUVVRSwgZmFsc2UpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCWVycm9y X21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwlwcV9yZWRpcmVjdF90b19z aG1fbXEoc2VnLCBlcnJvcl9tcWgpOworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2Fs UmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7 CisKKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29y a2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9 IDA7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9u IG9yaWdpbiB0cmFja2luZy4gKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVJlcGxp Y2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwgSW52YWxp ZE9pZCwKKwkJCQkJCQkJCSAgIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CisJb3Jp Z2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOworCisJLyoKKwkg KiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRo aXMgcmVwbGljYXRpb24KKwkgKiBvcmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkg aXRzIGxlYWRlciBwcm9jZXNzLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkKTsKKwlyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkvKgorCSAqIFNldHVwIGNhbGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cg d2hlbiBzb21ldGhpbmcgY2hhbmdlcyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24g c3RhdGUuCisJICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9O UkVMTUFQLAorCQkJCQkJCQkgIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJ CQkJCSAgKERhdHVtKSAwKTsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmln aW5uYW1lKTsKKworCUxvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChtcWgpOworCisJLyoKKwkgKiBU aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG11c3Qgbm90IGdldCBoZXJlIGJlY2F1c2UgdGhlIHBh cmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdpbGwgb25seSBzdG9wIHdoZW4gaXQgcmVjZWl2ZXMg YSBTSUdURVJNIG9yIFNJR0lOVCBmcm9tIHRoZQorCSAqIGxlYWRlciwgZGV0ZWN0cyBhIGNoYW5n ZSBpbiBzdWJzY3JpcHRpb24gaW5mb3JtYXRpb24sIG9yIHdoZW4gdGhlcmUKKwkgKiB0aGVyZSBp cyBhbiBlcnJvci4gTm9uZSBvZiB0aGVzZSBjYXNlcyB3aWxsIGFsbG93IHRoZSBjb2RlIHRvIHJl YWNoCisJICogaGVyZS4KKwkgKi8KKwlBc3NlcnQoZmFsc2UpOworfQorCisvKgorICogSGFuZGxl IHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgbWVzc2FnZS4KKyAqCisgKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwg aGFuZGxlciEgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2Ug dGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKKyAqIEhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVBhcmFsbGVs QXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKKy8q CisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZSByZWNlaXZlZCBmcm9tIGEgc2lu Z2xlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitIYW5kbGVQ YXJhbGxlbEFwcGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFN0cmlu Z0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0 ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9y UmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7CisKKwkJCQkvKiBQYXJzZSBF cnJvclJlc3BvbnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsK KworCQkJCS8qCisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNob3cg dGhhdCB0aGlzIGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0IGNhbiBzb21ldGltZXMgYmUgY29u ZnVzaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQorCQkJCSAqIGhhcHBlbmVkLgorCQkJ CSAqLworCQkJCWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHNwcmlu dGYoIiVzXG4lcyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJCQkJCSBfKCJsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVkYXRhLmNv bnRleHQgPSBwc3RyZHVwKF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2Ug dGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBp biBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJZXJyb3JfY29udGV4dF9zdGFj ayA9IGFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBhY3R1 YWwgZXJyb3IgbXVzdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkgdGhlIHBhcmFsbGVsCisJCQkJICog YXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZCBkdWUg dG8gZXJyb3IiKSwKKwkJCQkJCSBlcnJjb250ZXh0KCIlcyIsIGVkYXRhLmNvbnRleHQpKSk7CisJ CQl9CisKKwkJCS8qCisJCQkgKiBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGFib3V0IE5vdGlj ZVJlc3BvbnNlIGFuZAorCQkJICogTm90aWZ5UmVzcG9uc2UgYXMgdGhlIGxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyIGRvZXNuJ3QgbmVlZAorCQkJICogdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUg Y2xpZW50LgorCQkJICovCisJCWNhc2UgJ04nOgorCQljYXNlICdBJzoKKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG1lc3NhZ2UgdHlwZSByZWNl aXZlZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyOiAlYyAo bWVzc2FnZSBsZW5ndGggJWQgYnl0ZXMpIiwKKwkJCQkgbXNndHlwZSwgbXNnLT5sZW4pOworCX0K K30KKworLyoKKyAqIEhhbmRsZSBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVk IGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxB cHBseU1lc3NhZ2VzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisJTWVtb3J5Q29udGV4dCBv bGRjb250ZXh0OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBhbV9jb250ZXh0ID0gTlVMTDsK KworCS8qCisJICogVGhpcyBpcyBpbnZva2VkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5k IHNpbmNlIHNvbWUgb2YgdGhlCisJICogZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwKKwkgKiBmb3IgcmVjdXJzaXZl IGNhbGxzIGlmIG1vcmUgc2lnbmFscyBhcmUgcmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiBJdCdz CisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQg ZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxv Y2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJ LyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcg YWxtb3N0IGFueXdoZXJlLiBXZQorCSAqIGRvbid0IHdhbnQgdG8gcmlzayBsZWFraW5nIGRhdGEg aW50byBsb25nLWxpdmVkIGNvbnRleHRzLCBzbyBsZXQncyBkbworCSAqIG91ciB3b3JrIGhlcmUg aW4gYSBwcml2YXRlIGNvbnRleHQgdGhhdCB3ZSBjYW4gcmVzZXQgb24gZWFjaCB1c2UuCisJICov CisJaWYgKCFocGFtX2NvbnRleHQpCQkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLworCQlocGFt X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJCQkJICJIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQkgQUxMT0NT RVRfREVGQVVMVF9TSVpFUyk7CisJZWxzZQorCQlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250 ZXh0KTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaHBhbV9jb250ZXh0 KTsKKworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChs YywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlzaG1fbXFfcmVzdWx0IHJlczsKKwkJ U2l6ZQkJbmJ5dGVzOworCQl2b2lkCSAgICpkYXRhOworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkv KgorCQkgKiBUaGUgbGVhZGVyIHdpbGwgZGV0YWNoIGZyb20gdGhlIGVycm9yIHF1ZXVlIGFuZCBz ZXQgaXQgdG8gTlVMTAorCQkgKiBiZWZvcmUgcHJlcGFyaW5nIHRvIHN0b3AgYWxsIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMsIHNvIHdlIGRvbid0CisJCSAqIG5lZWQgdG8gaGFuZGxlIGVycm9yIG1l c3NhZ2VzIGFueW1vcmUuIFNlZQorCQkgKiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2guCisJCSAq LworCQlpZiAoIXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCQljb250aW51ZTsKKworCQlyZXMg PSBzaG1fbXFfcmVjZWl2ZSh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlLCAmbmJ5dGVzLCAmZGF0YSwg dHJ1ZSk7CisKKwkJaWYgKHJlcyA9PSBTSE1fTVFfV09VTERfQkxPQ0spCisJCQljb250aW51ZTsK KwkJZWxzZSBpZiAocmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0 YSBtc2c7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5n SW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCQkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Uo d2luZm8sICZtc2cpOworCQkJcGZyZWUobXNnLmRhdGEpOworCQl9CisJCWVsc2UKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwg cmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKKwl9CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkvKiBNaWdodCBhcyB3ZWxsIGNsZWFyIHRoZSBj b250ZXh0IG9uIG91ciB3YXkgb3V0ICovCisJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4 dCk7CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0 byB0aGUgc3BlY2lmaWVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkLW1lbW9yeQor ICogcXVldWUuCisgKgorICogUmV0dXJuIGZhbHNlIGlmIHRoZSBhdHRlbXB0IHRvIHNlbmQgZGF0 YSB2aWEgc2hhcmVkIG1lbW9yeSB0aW1lcyBvdXQsIHRydWUKKyAqIG90aGVyd2lzZS4KKyAqLwor Ym9vbAorcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBu Ynl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisJaW50CQkJcmM7CisJc2htX21xX3Jlc3VsdCBy ZXN1bHQ7CisJVGltZXN0YW1wVHogc3RhcnRUaW1lID0gMDsKKworCUFzc2VydCghSXNUcmFuc2Fj dGlvblN0YXRlKCkpOworCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsKKworI2Rl ZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCisjZGVmaW5lIFNITV9TRU5EX1RJ TUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TKQorCisJZm9yICg7 OykKKwl7CisJCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywg ZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisKKwkJaWYgKHJlc3VsdCA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJ CXJldHVybiB0cnVlOworCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFDSEVEKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hh cmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisKKwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERf QkxPQ0spOworCisJCS8qIFdhaXQgYmVmb3JlIHJldHJ5aW5nLiAqLworCQlyYyA9IFdhaXRMYXRj aChNeUxhdGNoLAorCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9P Tl9QTV9ERUFUSCwKKwkJCQkJICAgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCSAg IFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCWlm IChyYyAmIFdMX0xBVENIX1NFVCkKKwkJeworCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNI RUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJCX0KKworCQlpZiAoc3RhcnRUaW1lID09IDApCisJCQlz dGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCWVsc2UgaWYgKFRpbWVzdGFtcERp ZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJ CQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKKwkJeworCQkJZXJlcG9ydChMT0csCisJCQkJCShl cnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRo ZSByZW1haW5pbmcgY2hhbmdlcyBvZiByZW1vdGUgdHJhbnNhY3Rpb24gJXUgdG8gYSBmaWxlIiwK KwkJCQkJCQl3aW5mby0+c2hhcmVkLT54aWQpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9 Cit9CisKKy8qCisgKiBTd2l0Y2ggdG8gUEFSVElBTF9TRVJJQUxJWkUgbW9kZSBmb3IgdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gLS0gdGhpcyBtZWFucworICogdGhhdCB0aGUgY3VycmVudCBkYXRh IGFuZCBhbnkgc3Vic2VxdWVudCBkYXRhIGZvciB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKyAq IHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBwb3NzaWJsZSBk ZWFkbG9ja3Mgd2l0aAorICogYW5vdGhlciBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHJlZmVyIHRv IHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSkuCisgKi8KK3ZvaWQKK3BhX3N3aXRjaF90b19w YXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkJ ICAgYm9vbCBzdHJlYW1fbG9ja2VkKQoreworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBjb3VsZCBiZSBzdHVjayBmb3Igc29tZSByZWFzb24gKHNheSB3YWl0aW5nCisJICogb24g c29tZSBsb2NrIGJ5IG90aGVyIGJhY2tlbmQpLCBzbyBzdG9wIHRyeWluZyB0byBzZW5kIGRhdGEg ZGlyZWN0bHkgdG8KKwkgKiBpdCBhbmQgc3RhcnQgc2VyaWFsaXppbmcgZGF0YSB0byB0aGUgZmls ZSBpbnN0ZWFkLgorCSAqLworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7CisKKwkv KiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwlzdHJlYW1fc3RhcnRfaW50ZXJu YWwod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsKKworCS8qCisJICogQWNxdWlyZXMgdGhlIHN0 cmVhbSBsb2NrIGlmIG5vdCBhbHJlYWR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYXJhbGxlbAor CSAqIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUg c3RyZWFtIGxvY2sgdW50aWwKKwkgKiB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4KKwkgKi8K KwlpZiAoIXN0cmVhbV9sb2NrZWQpCisJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhp ZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+ c2hhcmVkLCBGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MpOworfQorCisvKgorICogV2FpdCB1bnRp bCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNo ZWQgb3IKKyAqIGV4Y2VlZGVkIHRoZSBnaXZlbiB4YWN0X3N0YXRlLgorICovCitzdGF0aWMgdm9p ZAorcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s CisJCQkJCSAgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCWZvciAoOzspCisJ eworCQkvKgorCQkgKiBTdG9wIGlmIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBv ciBleGNlZWRlZCB0aGUgZ2l2ZW4KKwkJICogeGFjdF9zdGF0ZS4KKwkJICovCisJCWlmIChwYV9n ZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSA+PSB4YWN0X3N0YXRlKQorCQkJYnJlYWs7CisK KwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRj aCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SCwKKwkJCQkJCSAxMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4u ICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZl IG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwl9Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIncyB0cmFuc2FjdGlvbiBmaW5pc2hlcy4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9y X3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwkvKgorCSAq IFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0YXRlIHRvCisJ ICogUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCB3aGljaCBtZWFucyBpdCBoYXMgYWNxdWlyZWQgdGhl IHRyYW5zYWN0aW9uCisJICogbG9jay4gVGhpcyBpcyB0byBwcmV2ZW50IGxlYWRlciBhcHBseSB3 b3JrZXIgZnJvbSBhY3F1aXJpbmcgdGhlCisJICogdHJhbnNhY3Rpb24gbG9jayBlYXJsaWVyIHRo YW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X3N0 YXRlKHdpbmZvLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKworCS8qCisJICogV2FpdCBmb3Ig dGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVxdWlyZWQgdG8K KwkgKiBkZXRlY3QgZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzLiBSZWZlciB0byB0aGUKKwkgKiBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKwkgKi8KKwlw YV9sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwlwYV91bmxvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGUgc3RhdGUgYmVjb21lcyBQQVJBTExFTF9UUkFO U19GSU5JU0hFRCBpbiBjYXNlIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciBmYWlsZWQg d2hpbGUgYXBwbHlpbmcgY2hhbmdlcyBjYXVzaW5nIHRoZSBsb2NrIHRvIGJlCisJICogcmVsZWFz ZWQuCisJICovCisJaWYgKHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpICE9IFBBUkFM TEVMX1RSQU5TX0ZJTklTSEVEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImxvc3Qg Y29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIiKSkpOworfQorCisvKgorICogU2V0IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBmb3IgYSBnaXZl biBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3NldF94YWN0X3N0YXRlKFBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJICBQYXJhbGxlbFRyYW5zU3Rh dGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3 c2hhcmVkLT54YWN0X3N0YXRlID0geGFjdF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFy ZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIGEg Z2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgUGFyYWxsZWxUcmFuc1N0 YXRlCitwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVk KQoreworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJU3BpbkxvY2tBY3F1aXJl KCZ3c2hhcmVkLT5tdXRleCk7CisJeGFjdF9zdGF0ZSA9IHdzaGFyZWQtPnhhY3Rfc3RhdGU7CisJ U3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4geGFjdF9zdGF0ZTsK K30KKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24u CisgKi8KK3ZvaWQKK3BhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbykKK3sKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gd2luZm87Cit9CisKKy8q CisgKiBGb3JtIGEgdW5pcXVlIHNhdmVwb2ludCBuYW1lIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBmb3IgcHVi bGljYXRpb25zIG9uIGRpZmZlcmVudCBub2RlcyBjYW4KKyAqIHJlY2VpdmUgc2FtZSByZW1vdGUg eGlkLCBzbyB3ZSBuZWVkIHRvIHVzZSBzdWJzY3JpcHRpb24gaWQgYWxvbmcgd2l0aCBpdC4KKyAq CisgKiBSZXR1cm4gdGhlIG5hbWUgaW4gdGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLworc3RhdGlj IHZvaWQKK3BhX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBj aGFyICpzcG5hbWUsIFNpemUgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19z cF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBm b3IgYSBzdWJ4YWN0IGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgorICog VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFu c2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJy aXZlZCB3aXRoIGEgZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1l ZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAqIGlm IHJlcXVpcmVkLgorICovCit2b2lkCitwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9 IHRvcF94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQp KQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxF Tl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgY3VycmVudF94 aWQsCisJCQkJCQkgIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAi ZGVmaW5pbmcgc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBw bHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkvKiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJs b2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5ULiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9j aygpKQorCQl7CisJCQlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCQkJCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsK KworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0YXJ0 IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNpZGUg YSB0cmFuc2FjdGlvbiBibG9jayAoc2VlCisJCSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSkuCisJ CSAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBs YXBwZW5kX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKwl9Cit9CisKKy8qIFJlc2V0IHRoZSBsaXN0IHRoYXQgbWFpbnRhaW5z IHN1YnRyYW5zYWN0aW9ucy4gKi8KK3ZvaWQKK3BhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpCit7CisJ LyoKKwkgKiBXZSBkb24ndCBuZWVkIHRvIGZyZWUgdGhpcyBleHBsaWNpdGx5IGFzIHRoZSBhbGxv Y2F0ZWQgbWVtb3J5IHdpbGwgYmUKKwkgKiBmcmVlZCBhdCB0aGUgdHJhbnNhY3Rpb24gZW5kLgor CSAqLworCXN1YnhhY3RsaXN0ID0gTklMOworfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9S VCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFyYWxsZWwK KyAqIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9y dF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7 CisKKwkvKgorCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFt aW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgorCSAqIGluIGNhc2Ugb2YgY3Jhc2guCisJICovCisJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247CisJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9ydF90 aW1lOworCisJLyoKKwkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZh Y3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KKwkgKiBqdXN0IGZyZWUgdGhlIHN1YnhhY3Rs aXN0LgorCSAqLworCWlmIChzdWJ4aWQgPT0geGlkKQorCXsKKwkJcGFfc2V0X3hhY3Rfc3RhdGUo TXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCisJCS8qCisJCSAq IFJlbGVhc2UgdGhlIGxvY2sgYXMgd2UgbWlnaHQgYmUgcHJvY2Vzc2luZyBhbiBlbXB0eSBzdHJl YW1pbmcKKwkJICogdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB0aGUgbG9jayB3b24ndCBiZSBy ZWxlYXNlZCBkdXJpbmcKKwkJICogdHJhbnNhY3Rpb24gcm9sbGJhY2suCisJCSAqLworCQlwYV91 bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQlBYm9ydEN1 cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJewor CQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJfQorCisJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisKKwkJcGdzdGF0X3JlcG9ydF9h Y3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJLyogT0ssIHNvIGl0 J3MgYSBzdWJ4YWN0LiBSb2xsYmFjayB0byB0aGUgc2F2ZXBvaW50LiAqLworCQlpbnQJCQlpOwor CQljaGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vi c2NyaXB0aW9uLT5vaWQsIHN1YnhpZCwgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxv ZyhERUJVRzEsICJyb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkvKgorCQkgKiBTZWFy Y2ggdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldCB0cmFja2VkIGZvciB0aGUK KwkJICogc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkgKgorCQkgKiBOb3RlIHRo YXQgZm9yIGFuIGVtcHR5IHN1Yi10cmFuc2FjdGlvbiB3ZSB3b24ndCBmaW5kIHRoZSBzdWJ4aWQK KwkJICogaGVyZS4KKwkJICovCisJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAt IDE7IGkgPj0gMDsgaS0tKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmlyc3Rf eGlkKGxpc3RfbnRoX2NlbGwoc3VieGFjdGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAgPT0g c3VieGlkKQorCQkJeworCQkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUo c3VieGFjdGxpc3QsIGkpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorfQorCisvKgorICog U2V0IHRoZSBmaWxlc2V0IHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgcGFyYWxsZWwgYXBwbHkgd29y a2VyLiBUaGUgZmlsZXNldAorICogd2lsbCBiZSBzZXQgb25jZSB0aGUgbGVhZGVyIHdvcmtlciBz ZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRvIHRoZSBmaWxlCisgKiBzbyB0aGF0IGl0IGNhbiBiZSB1 c2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFfc2V0X2ZpbGVzZXRf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJIFBhcnRpYWxG aWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQt Pm11dGV4KTsKKwl3c2hhcmVkLT5maWxlc2V0X3N0YXRlID0gZmlsZXNldF9zdGF0ZTsKKworCWlm IChmaWxlc2V0X3N0YXRlID09IEZTX1NFUklBTElaRV9ET05FKQorCXsKKwkJQXNzZXJ0KGFtX2xl YWRlcl9hcHBseV93b3JrZXIoKSk7CisJCUFzc2VydChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0KTsKKwkJd3NoYXJlZC0+ZmlsZXNldCA9ICpNeUxvZ2ljYWxSZXBXb3JrZXItPnN0 cmVhbV9maWxlc2V0OworCX0KKworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOwor fQorCisvKgorICogR2V0IHRoZSBmaWxlc2V0IHN0YXRlIGZvciB0aGUgY3VycmVudCBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlCitwYV9nZXRf ZmlsZXNldF9zdGF0ZSh2b2lkKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0 ZTsKKworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwlTcGluTG9ja0Fj cXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlmaWxlc2V0X3N0YXRlID0gTXlQYXJh bGxlbFNoYXJlZC0+ZmlsZXNldF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxT aGFyZWQtPm11dGV4KTsKKworCXJldHVybiBmaWxlc2V0X3N0YXRlOworfQorCisvKgorICogSGVs cGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3IgZWFjaCBzdHJl YW0gYmxvY2suCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xP Q0tfU1RSRUFNIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiBzdHJlYW0gbG9jay4KKyAqCisg KiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUgdG8gc2VlIGhvdyB0aGUgc3Ry ZWFtIGxvY2sgaXMgdXNlZC4KKyAqLwordm9pZAorcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25J ZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vz c2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVM X0FQUExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja19zdHJl YW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5 VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJ CQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSwgbG9ja21vZGUpOworfQorCisvKgor ICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3IgZWFj aCBsb2NhbCB0cmFuc2FjdGlvbgorICogYXBwbHkuCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0 IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYQorICog dHJhbnNhY3Rpb24gbG9jay4KKyAqCisgKiBOb3RlIHRoYXQgYWxsIHRoZSBjYWxsZXJzIG11c3Qg cGFzcyBhIHJlbW90ZSB0cmFuc2FjdGlvbiBJRCBpbnN0ZWFkIG9mIGEKKyAqIGxvY2FsIHRyYW5z YWN0aW9uIElEIGFzIHhpZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBJ RCB3aWxsCisgKiBvbmx5IGJlIGFzc2lnbmVkIHdoaWxlIGFwcGx5aW5nIHRoZSBmaXJzdCBjaGFu Z2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IGJ1dAorICogaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBm aXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBibG9ja2VkCisgKiBi eSBhIGNvbmN1cnJlbnRseSBleGVjdXRpbmcgdHJhbnNhY3Rpb24gaW4gYW5vdGhlciBwYXJhbGxl bCBhcHBseSB3b3JrZXIuIFdlCisgKiBjYW4gb25seSBjb21tdW5pY2F0ZSB0aGUgbG9jYWwgdHJh bnNhY3Rpb24gaWQgdG8gdGhlIGxlYWRlciBhZnRlciBhcHBseWluZworICogdGhlIGZpcnN0IGNo YW5nZSBzbyBpdCB3b24ndCBiZSBhYmxlIHRvIHdhaXQgYWZ0ZXIgc2VuZGluZyB0aGUgeGFjdCBm aW5pc2gKKyAqIGNvbW1hbmQgdXNpbmcgdGhpcyBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBj b21tZW50cyBhdG9wIHRoaXMgZmlsZSB0byBzZWUgaG93IHRoZSB0cmFuc2FjdGlvbiBsb2NrIGlz CisgKiB1c2VkLgorICovCit2b2lkCitwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQg eGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Np b24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9B UFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFfdW5sb2NrX3RyYW5zYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBs eVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJ CQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7Cit9CisKKy8qCisg KiBEZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgYW5kIHdh aXQgb24gdGhlIHN0cmVhbSBsb2NrCisgKiBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIGJsb2NrIGF2 YWlsYWJsZS4KKyAqLwordm9pZAorcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCkK K3sKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCisJLyoKKwkgKiBJdCBp cyBvbmx5IHBvc3NpYmxlIHRvIG5vdCBoYXZlIGFueSBwZW5kaW5nIHN0cmVhbSBjaHVua3Mgd2hl biB3ZSBhcmUKKwkgKiBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzLgorCSAqLworCWlmIChwZ19h dG9taWNfcmVhZF91MzIoJk15UGFyYWxsZWxTaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50KSA9 PSAwKQorCXsKKwkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGluZygpKQorCQkJcmV0 dXJuOworCisJCWVsb2coRVJST1IsICJpbnZhbGlkIHBlbmRpbmcgc3RyZWFtaW5nIGNodW5rIDAi KTsKKwl9CisKKwlpZiAocGdfYXRvbWljX3N1Yl9mZXRjaF91MzIoJk15UGFyYWxsZWxTaGFyZWQt PnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKSA9PSAwKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFt KE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9Cit9CisKKy8qCisg KiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGluIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKK3sKKwlBc3NlcnQoYW1f bGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKworCS8qCisJICogVW5sb2NrIHRoZSBzaGFyZWQgb2Jq ZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJICogY29udGludWUg dG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkgKi8KKwlwYV91bmxvY2tfc3RyZWFtKHdp bmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIFdhaXQg Zm9yIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4g Y29tbWl0CisJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlv biBkZXBlbmRlbmNpZXMgYW5kCisJICogZGVhZGxvY2tzLgorCSAqLworCXBhX3dhaXRfZm9yX3hh Y3RfZmluaXNoKHdpbmZvKTsKKworCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChyZW1vdGVfbHNu KSkKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocmVtb3RlX2xzbiwgd2luZm8tPnNoYXJlZC0+bGFz dF9jb21taXRfZW5kKTsKKworCXBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDJjYzBhYzllYjAuLjMzZmRiZGM2NzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtODIyLDEwICs4 MjIsMTEgQEAgRGVjb2RlQWJvcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVj b3JkQnVmZmVyICpidWYsCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsr KQogCQl7CiAJCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1Ynhh Y3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1 Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFib3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZl ckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVv cmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRy LAorCQkJCQkJICAgYWJvcnRfdGltZSk7CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBz dGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4 IDczNTk0YzY5OGEuLjc1OWY5NjRmYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMKQEAgLTU1LDYgKzU1LDcgQEAKIC8qIEdVQyB2YXJpYWJsZXMgKi8KIGlu dAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2lj YWxSZXBXb3JrZXIgPSBOVUxMOwogCkBAIC03NCw2ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGxvZ2lj YWxyZXBfbGF1bmNoZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZv aWQgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIGludAls b2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBzdGF0aWMgYm9vbCBvbl9j b21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAgLTE1Miw4ICsxNTQsMTAgQEAgZ2V0 X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Ig Y2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0aGUgd29ya2VyCiAgKiBmYWls cyB0byBhdHRhY2guCisgKgorICogUmV0dXJuIHdoZXRoZXIgdGhlIGF0dGFjaCB3YXMgc3VjY2Vz c2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVwbGljYXRpb25X b3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAgIHVpbnQxNiBn ZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAg LTE2OSwxMSArMTczLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7 IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBo YXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29ya2VyLT5pbl91 c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsKIAkJfQogCiAJ CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg4LDcgKzE5Miw3IEBA IFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIs CiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAt MjEwLDYgKzIxNCw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkgYW5kIHNlYXJj aGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24gaWQgYW5kIHJl bGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3JrZXIgKgogbG9n aWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5p bmcpCkBAIC0yMjQsNiArMjMwLDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1Ymlk LCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAq dyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFyYWxsZWwgYXBw bHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCWNvbnRp bnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQg PT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNjAs MTEgKzI3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25s eV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBsb2dpY2FsIHJlcGxpY2F0aW9uIGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcywg ZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1 bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQs Ci0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3Jr ZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5k bGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNyArMjg1LDEyIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xh dW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlk LAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJ aW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFwcGx5d29ya2VyczsKIAlUaW1l c3RhbXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID0gKHN1Yndvcmtl cl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjayAtIHRhYmxl c3luYyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29ya2VyICovCisJQXNzZXJ0KCEoaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVH MSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MSw3ICszNjgsMjAgQEAgcmV0cnk6 CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2VycyA+PSBtYXhfc3luY193b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJbnBhcmFsbGVsYXBw bHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkg KiBSZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJl YWNoZWQgdGhlIGxpbWl0CisJICogcGVyIHN1YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFy YWxsZWxfYXBwbHlfd29ya2VyICYmCisJCW5wYXJhbGxlbGFwcGx5d29ya2VycyA+PSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCXsKKwkJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAt MzY1LDcgKzM5NSw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElP Tl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3Jl YXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0z ODAsNiArNDEwLDggQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9V TktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29y a2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0g aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3Jr ZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+ bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXIt Pmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90 aW1lKTsKQEAgLTM5NywxOSArNDI5LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RB VEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9S ZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFY TEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19N QVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3Jr ZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFs bGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9u X25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlk KHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3Vi aWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJp bnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxz ZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRm KGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7 CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u ICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmlu dGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwg ImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9 IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAli Z3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxl bF9hcHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwg c2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdv cmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2Vy LCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ2OSwyMyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBl cnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4i KSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRp bCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2Vy LCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29y a2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBT dG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFu eSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRl cm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNo ZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3Rv cF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIs IG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5 TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBS ZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBp ZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjMsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRp ZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXIt PmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkv KiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAo d29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzMSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2Vy IC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2Vy LT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAq LwogCWZvciAoOzspCkBAIC01MjMsNiArNTU3LDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2Vy TG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNh bHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29y a2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQs IGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdv cmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIs IFNJR1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwor fQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAq IE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0 byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMg Y2xlYW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9u bywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJ QXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNz ZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9w IHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBh bGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29y a2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lH SU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1 LDExICs2NzYsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAv KgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICog U3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxl YWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwog c3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3Ag dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3Jr ZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q CisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBh cHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRz IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIg dGVybWluYXRpb24gbWVzc2FnZSBhbmQgc2VuZGluZyBpdCB0byBsb2dzCisJCSAqIHdoZW4gdGhl IHNhbWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlw YV9kZXRhY2hfYWxsX2Vycm9yX21xKCk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2Zp bmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtl cnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBs Zmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tS ZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50 IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENM VVNJVkUpOwogCkBAIC02MjIsNiArNzMyLDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwog CXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lk OworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJh bGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjUzLDYgKzc2NSwxMyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVs IGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4KKwkgKiBw YXJhbGxlbCBhcHBseSBtb2RlIGFuZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3Jr ZXIKKwkgKiB0ZXJtaW5hdGVzLCBzbyBtYW51YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUg dGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRI T0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldha2V1cCgpOwogfQogCkBAIC02ODAsNiArNzk5 LDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQogCXJldHVybiBy ZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBub3Qg bmVjZXNzYXJpbHkgcnVubmluZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEgc3Vi c2NyaXB0aW9uLgorICovCitzdGF0aWMgaW50Citsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChP aWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExXTG9j a0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNjYW4gYWxsIGF0 dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hpY2gK KwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9yIChpID0gMDsg aSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2ljYWxS ZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+c3Vi aWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVzKys7CisJfQor CisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlD b21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9y eQpAQCAtODY5LDcgKzEwMTUsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykK IAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0J CQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3du ZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05 NTIsNiArMTA5OCwxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJH UykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJ CWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7 CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2Jq ZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbWVzb24uYnVpbGQKaW5kZXggMWI5ZjA3MmVkYy4uYjc4YmZiYTEwYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAog IyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKyAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycs CiAgICdkZWNvZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCBmMTM0ZTQ0ODc4Li44YjA4Mzc4 NjY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNzUs MTIgKzEwNzUsMjAgQEAgUmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0 dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGlu ZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25s eSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1 cnJlbnQKLSAqIGNhY2hlZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHBy ZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93bgotICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVz ZXQoKS4KKyAqIE5vcm1hbGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3Qg cGVyIHByb2Nlc3Mgc28gdGhlIGNhY2hlZAorICogdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWlu IGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24gd2l0aAorICogcmVwbG9yaWdp bl9zZXNzaW9uX3Jlc2V0KCkuIEZvciB0aGlzIG5vcm1hbCBjYXNlIHBhc3MgYWNxdWlyZWRfYnkg PSAwCisgKiAobWVhbmluZyB0aGUgc2xvdCBpcyBub3QgYWxsb3dlZCB0byBiZSBhbHJlYWR5IGFj cXVpcmVkIGJ5IGFub3RoZXIgcHJvY2VzcykuCisgKgorICogSG93ZXZlciwgc29tZXRpbWVzIG11 bHRpcGxlIHByb2Nlc3NlcyBjYW4gc2FmZWx5IHJlLXVzZSB0aGUgc2FtZSBvcmlnaW4gc2xvdAor ICogKGZvciBleGFtcGxlLCBtdWx0aXBsZSBwYXJhbGxlbCBhcHBseSBwcm9jZXNzZXMgY2FuIHNh ZmVseSB1c2UgdGhlIHNhbWUKKyAqIG9yaWdpbiwgcHJvdmlkZWQgdGhleSBtYWludGFpbiBjb21t aXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEg dGltZSkuIEZvciB0aGlzIGNhc2UgdGhlIGZpcnN0IHByb2Nlc3MgbXVzdCBwYXNzIGFjcXVpcmVk X2J5ID0KKyAqIDAsIGFuZCB0aGVuIHRoZSBvdGhlciBwcm9jZXNzZXMgc2hhcmluZyB0aGF0IHNh bWUgb3JpZ2luIGNhbiBwYXNzCisgKiBhY3F1aXJlZF9ieSA9IFBJRCBvZiB0aGUgZmlyc3QgcHJv Y2Vzcy4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5v ZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVp cmVkX2J5KQogewogCXN0YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpA QCAtMTEyMiw3ICsxMTMwLDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklk IG5vZGUpCiAJCWlmIChjdXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAK LQkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0 YXRlLT5hY3F1aXJlZF9ieSAhPSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUz LDcgKzExNjEsMTEgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUp CiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlk UmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkg PSBNeVByb2NQaWQ7CisJaWYgKGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRp b25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVw bGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ICE9IGFjcXVpcmVkX2J5KQorCQllbG9nKEVSUk9S LCAiY291bGQgbm90IGZpbmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24g b3JpZ2luIHdpdGggT0lEICV1IHdoaWNoIHdhcyBhY3F1aXJlZCBieSAlZCIsCisJCQkgbm9kZSwg YWNxdWlyZWRfYnkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwog CkBAIC0xMzM3LDcgKzEzNDksNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1 cChQR19GVU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBE YXR1bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdp bl9ieV9uYW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2lu KTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYwppbmRleCBmNWYyYmMyNGQ4Li43MjNiYTQ2NjliIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTY0LDEwICsxMTY0LDE0IEBAIGxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJl YW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9w LWxldmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMg dHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVy d2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBz dWJ4aWQpCisJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9s c24sCisJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2lu Zm8pCiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsK IApAQCAtMTE3NiwxOSArMTE4MCw0MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8K IAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwogCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisK KwlpZiAod3JpdGVfYWJvcnRfaW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xz bik7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJl YWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9h Ym9ydF9pbmZvIGlzIHRydWUsIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVs ZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFu c2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJ CQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsK KwlBc3NlcnQoYWJvcnRfZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQo aW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkq eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0 KTsKKwlpZiAocmVhZF9hYm9ydF9pbmZvKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0g cHFfZ2V0bXNnaW50NjQoaW4pOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNn aW50NjQoaW4pOworCX0KKwllbHNlCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZh bGlkWExvZ1JlY1B0cjsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVm ZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpp bmRleCA5MjIwNGJkOWNkLi5iZWM4OTNkYTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtMjg3Myw3ICsyODczLDggQEAgUmVvcmRl ckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhp ZCwKICAqIGRpc2suCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFi b3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24s CisJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0 eG47CiAKQEAgLTI4ODQsNiArMjg4NSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0g TlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3Rp bWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5v ZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDk0ZTgx M2FjNTMuLmVmMGZlMTNjMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwpAQCAtMTQsNyArMTQsNyBAQAogICoJICBUaGUgaW5pdGlhbCBkYXRhIHN5bmNo cm9uaXphdGlvbiBpcyBkb25lIHNlcGFyYXRlbHkgZm9yIGVhY2ggdGFibGUsCiAgKgkgIGluIGEg c2VwYXJhdGUgYXBwbHkgd29ya2VyIHRoYXQgb25seSBmZXRjaGVzIHRoZSBpbml0aWFsIHNuYXBz aG90IGRhdGEKICAqCSAgZnJvbSB0aGUgcHVibGlzaGVyIGFuZCB0aGVuIHN5bmNocm9uaXplcyB0 aGUgcG9zaXRpb24gaW4gdGhlIHN0cmVhbSB3aXRoCi0gKgkgIHRoZSBtYWluIGFwcGx5IHdvcmtl ci4KKyAqCSAgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCiAgKgogICoJICBUaGVyZSBhcmUgc2V2 ZXJhbCByZWFzb25zIGZvciBkb2luZyB0aGUgc3luY2hyb25pemF0aW9uIHRoaXMgd2F5OgogICoJ ICAgLSBJdCBhbGxvd3MgdXMgdG8gcGFyYWxsZWxpemUgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJv bml6YXRpb24KQEAgLTE1Myw3ICsxNTMsNyBAQCBmaW5pc2hfc3luY193b3JrZXIodm9pZCkKIAkJ CQkJZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogRmluZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5k IHNpZ25hbCBpdC4gKi8KKwkvKiBGaW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBzaWdu YWwgaXQuICovCiAJbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIEludmFsaWRPaWQpOwogCiAJLyogU3RvcCBncmFjZWZ1bGx5ICovCkBAIC02MDksNyAr NjA5LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJ IE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+ dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0 ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRy eS0+bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwx NCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRf bHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogeworCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHRo ZXkgb25seSBvcGVyYXRlIG9uIHRhYmxlcworCSAqIHRoYXQgYXJlIGluIGEgUkVBRFkgc3RhdGUu IFNlZSBwYV9jYW5fc3RhcnQoKSBhbmQKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVs KCkuCisJICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zv cl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNlCkBAIC0xMjQ3LDcgKzEyNTYsNyBAQCBMb2dpY2Fs UmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkg KiBIZXJlIHdlIHVzZSB0aGUgc2xvdCBuYW1lIGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBu YW1lIGFzIHRoZQotCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50 IGZyb20gdGhlIG1haW4gYXBwbHkgd29ya2VyLAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRo YXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28g dGhhdCBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8K IAlMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KQEAgLTEyOTUsNyArMTMwNCw3IEBAIExvZ2ljYWxS ZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUg dGhpcyB0YWJsZXN5bmMgd2FzIGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3Jp Z2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwog CQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRw b3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3 ICsxNDE1LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9z dGFydHBvcykKIAkJCQkJCSAgIHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBs b2cgKi8gKTsKIAkJVW5sb2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2lu aWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ3 MCw4IEBAIGNvcHlfdGFibGVfZG9uZToKIAlTcGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdv cmtlci0+cmVsbXV0ZXgpOwogCiAJLyoKLQkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWlu IGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0 byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGls IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRo ZW4gcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRf Zm9yX3dvcmtlcl9zdGF0ZV9jaGFuZ2UoU1VCUkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBz bG90bmFtZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDk2 NzcyZTRkNzMuLjQ2ZmIzZDA1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtMjIsOCArMjIsMTIgQEAKICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRy YW5zYWN0aW9ucyBleGNlZWRpbmcgYSBtZW1vcnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkg YXJlIG5vdCBhcHBsaWVkIGltbWVkaWF0ZWx5LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3Jp dHRlbgotICogdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVu IHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2lu ZyBvbmUgb2YgdHdvIGFwcHJvYWNoZXM6CisgKgorICogMSkgV3JpdGUgdG8gdGVtcG9yYXJ5IGZp bGVzIGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcworICoKKyAqIFRoaXMg YXBwcm9hY2ggaXMgdXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidz IHN0cmVhbWluZworICogb3B0aW9uIGFzIG9uLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAo bm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAg KiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBz dWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTUwLDYgKzU0LDEyIEBACiAgKiB0aGUgZmlsZSB3ZSBk ZXNpcmVkIGFjcm9zcyBtdWx0aXBsZSBzdHJlYW0tb3BlbiBjYWxscyBmb3IgdGhlIHNhbWUKICAq IHRyYW5zYWN0aW9uLgogICoKKyAqIDIpIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICog VGhpcyBhcHByb2FjaCBpcyB1c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0 aW9uJ3Mgc3RyZWFtaW5nCisgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFNlZSBsb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyBmb3IgaW5mb3JtYXRpb24gYWJvdXQKKyAqIHRoaXMgYXBwcm9hY2gu CisgKgogICogVFdPX1BIQVNFIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICogVHdvIHBoYXNlIHRyYW5zYWN0aW9ucyBhcmUgcmVwbGF5ZWQgYXQgcHJlcGFyZSBhbmQg dGhlbiBjb21taXR0ZWQgb3IKQEAgLTE1MCw2ICsxNjAsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCIK ICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRl ICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVk ZSAibWIvcGdfd2NoYXIuaCIKQEAgLTIzMyw3ICsyNDQsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBw bHlFcnJvckNhbGxiYWNrQXJnCiAJY2hhcgkgICAqb3JpZ2luX25hbWU7CiB9IEFwcGx5RXJyb3JD YWxsYmFja0FyZzsKIAotc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9j YWxsYmFja19hcmcgPQorLyoKKyAqIFdoYXQgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSB0cmFuc2Fj dGlvbi4KKyAqCisgKiBUUkFOU19MRUFERVJfQVBQTFk6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0 aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUK KyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisgKgor ICogVFJBTlNfTEVBREVSX1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2Ug YXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMKKyAqIHdvcmtlci4g Q2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3 aGVuIHRoZQorICogZmluYWwgY29tbWl0IGFycml2ZXMuCisgKgorICogVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVlZCB0byBzZW5kCisgKiB0aGUgY2hhbmdlcyB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NF UklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGFuZCBoYXZlIHNlbnQgc29tZQorICogY2hhbmdlcyBkaXJlY3RseSB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCB0aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlCisg KiBzZXJpYWxpemVkIHRvIGEgZmlsZSwgZHVlIHRvIHRpbWVvdXQgd2hpbGUgc2VuZGluZyBkYXRh LiBUaGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aWxsIGFwcGx5IHRoZXNlIHNlcmlhbGl6 ZWQgY2hhbmdlcyB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBXZSBjYW4n dCB1c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRSBmb3IgdGhpcyBjYXNlIGJlY2F1c2UsIGluIGFk ZGl0aW9uIHRvCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzLCB0aGUgbGVhZGVyIHdvcmtlciBhbHNv IG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKyAqIFNUUkVBTV9YWFggbWVzc2FnZSB0byBhIGZpbGUs IGFuZCB3YWl0IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvCisgKiBmaW5pc2ggdGhl IHRyYW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1h bmQuIFNvCisgKiB0aGlzIG5ldyBhY3Rpb24gd2FzIGludHJvZHVjZWQgdG8ga2VlcCB0aGUgY29k ZSBhbmQgbG9naWMgY2xlYXIuCisgKgorICogVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisgKiBUaGlz IGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFu ZCBjaGFuZ2VzIG9mCisgKiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkg dGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9u LXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAorCisJLyog QWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VS SUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAorCVRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRSwKKwlUUkFOU19QQVJBTExFTF9BUFBMWQorfSBUcmFuc0FwcGx5QWN0 aW9uOworCisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBh cHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVM TCwKQEAgLTI0Myw3ICsyOTksOSBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRp YyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0 Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250 ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRl eHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgKi8KQEAgLTI2MiwxNyArMzIwLDI2IEBAIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBs aWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxv Y2suCisgKi8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKwog LyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAo SU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVt b3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICog T25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdl IHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNj cmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBj aGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNo YW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3Ig cmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAo c3RyZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5n IHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBh cHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBz dWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUg dHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxh dHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0g KiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWlu ZworICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBY TG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVm aW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQo c2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMxMiwyMyArMzc5LDE2IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5k IGRlc2VyaWFsaXplIGNoYW5nZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0 YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9u SWQgeGlkLAogCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFt X3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0 cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9u LCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAK IHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNl LCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9u KFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0 KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAq Lwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZv aWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29t bWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBs eUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZv LApAQCAtMzUyLDE5ICs0MTIsMzIgQEAgc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3Jv dXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29f cGhhc2UgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lk KE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAot LyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVz c2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFu Z2VzICovCiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQ dHIgZmluaXNoX2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7 CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5p c2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3Rh dGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUg dm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25f YXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dl dF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJl dHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIi KTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1 cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZv cm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NCwxOSAr NDY3LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwg T2lkIHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxh dGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2Vz cyBydW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNo YW5nZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2Yg YSB0YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1 cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFs bGVyIG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBp dCBtaWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBw b2ludCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4 dCByZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9j ZXNzaW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBh cHBseV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkg d29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUg aW4gdGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVz ZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ug d29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJl YWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQor ICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBh bHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVj dXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBh cmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVs CisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAog c2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkK IHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2Fw cGx5X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBh cmUgaW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRF X1JFQURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0 cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJl dHVybiByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1 cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUg PT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTIsNDMgKzU0OSwxMTAgQEAgZW5kX3Jl cGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCiAgKgot ICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRy YW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBw cm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBJbiB0aGUgc3RyZWFtaW5nIGNhc2UgKHJl Y2VpdmluZyBhIGJsb2NrIG9mIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIGZvcgorICogc2Vy aWFsaXplIG1vZGUsIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIg dG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIHBhcmFsbGVsIG1vZGUsIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZCB0aGUKKyAqIGNoYW5nZXMgdG8gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGRlZmluZQorICog c2F2ZXBvaW50cyBpZiBuZWVkZWQuIChMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9HSUNB TF9SRVBfTVNHX1RZUEUKKyAqIG1lc3NhZ2VzIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIGxlYWRl ciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzKS4KICAqCi0gKiBS ZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChy ZWd1bGFyIG1vZGUpLgorICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMg KHdoZW4gdGhlIGNoYW5nZSBpcyBlaXRoZXIgc2VyaWFsaXplZAorICogdG8gZmlsZSBvciBzZW50 IHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlciksIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2Rl IG9yCisgKiBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyKS4K KyAqCisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJ Q0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4g ZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFu c2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlT dHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNh Y3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3Ry ZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBs eV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3Nl cnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJl YW1feGlkKSk7CiAKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbmVlZHMgdGhl IHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCisJICogd2hldGhlciB0byBkZWZpbmUgYSBz YXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMKKwkgKiBub3Qg bW92ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUgeGlkLiBXZSB3aWxsIHNlcmlhbGl6ZSB0aGlzIG1l c3NhZ2UgdG8gYQorCSAqIGZpbGUgaW4gUEFSVElBTF9TRVJJQUxJWkUgbW9kZS4KKwkgKi8KKwlv cmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElE IG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNv IGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRf eGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4 aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkg ZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxp Y2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhl IGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQp OworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFM SVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkv KiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUp LiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRo ZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShh Y3Rpb24sIHMpOworCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9U T19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1 Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJ CSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBk YXRlIHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUg ZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQkJcmV0dXJuIChhY3Rpb24g IT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9S RVBfTVNHX1RZUEUpOworCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBz ZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVl ZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19w YXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgZmFsc2UpOwogCi0JcmV0dXJuIHRydWU7CisJCQkvKiBm YWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJ CQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgJm9yaWdpbmFsX21zZyk7CisKKwkJCS8qIFNh bWUgcmVhc29uIGFzIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMIGNhc2UuICovCisJCQly ZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJYWN0aW9u ICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZ OgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzICs9IDE7CisKKwkJCS8qIERlZmluZSBhIHNh dmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRlZC4gKi8KKwkJCXBhX3N0YXJ0X3N1YnRyYW5z KGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsKKwkJCXJldHVybiBmYWxzZTsKKworCQlkZWZhdWx0 OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGls ZXIgd2FybmluZyAqLworCX0KIH0KIAogLyoKQEAgLTkyNiw4ICsxMDkwLDExIEBAIGFwcGx5X2hh bmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVf ZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2Ug dGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJh bnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKLQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVn aW4gY29tbWFuZC4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCXsKKwkJQmVnaW5U cmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21w bGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLworCX0KIAogCS8qCiAJICogVXBk YXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0 IHBvc2l0aW9uCkBAIC05NzQsNyArMTE0MSw3IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmlu Z0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24p OworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENv bW1pdEVuZCk7CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIApAQCAtOTk2LDYg KzExNjMsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICog SGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2Fj dGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhl IHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAq IHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVu c3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBw ZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24g Y2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICov CiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMp CkBAIC0xMDI1LDcgKzExOTgsNyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmlu Z0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24p OworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENv bW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNz IGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpA QCAtMTAzOSw2ICsxMjEyLDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5n SW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91 c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVk IHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBjYXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVk IGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJl cGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0 cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVyLCBzbyBubworICogY29u Y3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2UgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVw ZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4MCw3ICsxMjU5LDcgQEAgYXBwbHlfaGFuZGxl X3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogCXBnc3RhdF9yZXBvcnRfc3RhdChm YWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2Vu ZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl OwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KQEAgLTEwOTIsMTUgKzEyNzEsMTYgQEAgYXBwbHlfaGFuZGxlX3JvbGxi YWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFS RS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBz cG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVk CiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlv bjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0 cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTExNiwyNCArMTI5Niw5NiBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94 YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9n KERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1Iiwg cHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFsbCB0aGUg c3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlv bikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsgdGhlIHRy YW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFs KCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBz ZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJh dGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCwKKwkJCQkJCQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFy ZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJ LyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVf cHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3RhdF9yZXBvcnRfc3RhdChm YWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCXN0b3JlX2ZsdXNoX3Bv c2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHBy ZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKLQlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJ CQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0 IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlpZiAocGFfc2VuZF9k YXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIEZpbmlzaCBwcm9jZXNz aW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfeGFjdF9maW5pc2god2lu Zm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJ CSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJh bGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBt b2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRy dWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElB TF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJlYW1fb3Blbl9hbmRfd3Jp dGVfY2hhbmdlKHByZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJIExPR0lDQUxfUkVQX01TR19T VFJFQU1fUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CiAKLQkvKiB1bmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0J c3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9k YXRhLnhpZCk7CisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJ QUxJWkVfRE9ORSk7CisKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24uICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9s c24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoK KwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBt ZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgcHJlcGFyaW5nLgorCQkJ ICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWJl Z2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMg cHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9k YXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhh Y3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVk LCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRf c3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBT VFJFQU0gUFJFUEFSRSBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNz ZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7 CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9s c24pOwpAQCAtMTE3MCw2ICsxNDIyLDQ3IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5m byBzKQogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIk9SSUdJTiBtZXNzYWdlIHNlbnQgb3V0IG9mIG9y ZGVyIikpKTsKIH0KIAorLyoKKyAqIEluaXRpYWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkg ZG9uZSkuCisgKgorICogQ3JlYXRlIGEgbmV3IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRy dWUsIG90aGVyd2lzZSBvcGVuIHRoZSBleGlzdGluZworICogZmlsZS4KKyAqLwordm9pZAorc3Ry ZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQp Cit7CisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRo ZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJl CisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0 ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2 ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55CisJICogdHJhbnNhY3Rpb24gYW5k IHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgor CSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdv cmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwg ZXZlciBiZSB1c2VkLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCU15TG9naWNhbFJlcFdvcmtlci0+c3Ry ZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJRmlsZVNldEluaXQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CisJfQorCisJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2Vn bWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJaWYgKCFmaXJzdF9zZWdtZW50 KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwor CisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKK30KKwogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RB UlQgbWVzc2FnZS4KICAqLwpAQCAtMTE3NywyMSArMTQ3MCwxNyBAQCBzdGF0aWMgdm9pZAogYXBw bHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2Vn bWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlv biBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25z dW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9z dHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRl IFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlv biBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkg KiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3 aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0 aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEg YW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkv KiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2Fj dGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwNSw5NiAr MTQ5NCwyMzcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRy KTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYg d2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVy YXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250 ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBm cm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3Ro ZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZp bGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdl IHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCS8qIFRyeSB0byBhbGxv Y2F0ZSBhIHdvcmtlciBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoZmly c3Rfc2VnbWVudCkKKwkJcGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQpOworCisJYXBwbHlf YWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8p OworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsK KwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJLyoKKwkJCSAqIEZ1bmN0aW9uIHN0cmVhbV9z dGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcworCQkJICogdHJhbnNhY3Rp b24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJ CQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQg YWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGlzIHRy YW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVzZWQgZm9yIHNlcmlh bGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAq LworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwor CQkJYnJlYWs7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxv YyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0 cmVhbV9maWxlc2V0KTsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJ CUFzc2VydCh3aW5mbyk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQor CQkJLyoKKwkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMsIHRoZSBw YXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byBy ZWxlYXNlIHRoZSBzdHJlYW0gbG9jaworCQkJICogdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNh Y3Rpb24uIFNvLCB3ZSBkb24ndCBuZWVkIHRvIHJlbGVhc2UKKwkJCSAqIHRoZSBsb2NrIG9yIGlu Y3JlbWVudCB0aGUgc3RyZWFtIGNvdW50IGluIHRoYXQgY2FzZS4KKwkJCSAqLworCQkJaWYgKHBh X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAq IFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 CisJCQkJICogd29ya2VyIGNhbiBjb250aW51ZSB0byByZWNlaXZlIGNoYW5nZXMuCisJCQkJICov CisJCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5z aGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBm aWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCQkvKgorCQkJ CSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2FpdGluZyB0byBi ZQorCQkJCSAqIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkJICovCisJ CQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFt X2NvdW50LCAxKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVu IGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFj dF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkJ LyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4g Ki8KKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQkJYnJlYWs7CisJ CQl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJ LyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0 byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlh bGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2lu Zm8sICFmaXJzdF9zZWdtZW50KTsKIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkvKiBm YWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJ CQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogT3BlbiB0aGUgc3Bvb2wgZmlsZSB1bmxl c3MgaXQgd2FzIGFscmVhZHkgb3BlbmVkIHdoZW4gc3dpdGNoaW5nCisJCQkgKiB0byBzZXJpYWxp emUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4KKwkJCSAqIHN0cmVhbV9zdGFydF9p bnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AuCisJCQkgKi8KKwkJ CWlmIChhcHBseV9hY3Rpb24gIT0gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpCisJCQkJ c3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCisJCQlz dHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQsICZvcmlnaW5h bF9tc2cpOworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlz IHRyYW5zYWN0aW9uLiAqLworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOwor CQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWlmIChmaXJzdF9z ZWdtZW50KQorCQkJeworCQkJCS8qIEhvbGQgdGhlIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUg dHJhbnNhY3Rpb24uICovCisJCQkJcGFfbG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVk LT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFy YWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOworCQkJfQorCisJCQlwYXJhbGxl bF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2Vy dChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRF X1JVTk5JTkcsIE5VTEwpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2Uu CisgKiBVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGFuZCBjbG9zZSB0aGUg ZmlsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgc3Ry ZWFtX3N0YXJ0X2ludGVybmFsIGZ1bmN0aW9uIGhhcworICogYmVlbiBjYWxsZWQuCiAgKi8KLXN0 YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQordm9pZAor c3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpCiB7Ci0JaWYgKCFpbl9zdHJl YW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RF X1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1Ag bWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7Ci0KIAkvKgotCSAqIENsb3NlIHRoZSBm aWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFi b3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkgKiBTZXJp YWxpemUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiwgdGhlbgorCSAqIGNsb3NlIHRoZSBzdHJlYW0gbWVzc2FnZXMgc3Bvb2wgZmlsZS4KIAkg Ki8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFt X3hpZCk7CisJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhp ZCk7CiAJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0 cmFuc2FjdGlvbiBzdGF0ZSAqLwogCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKIAkv KiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Ci0KIAkvKiBS ZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0 cmVhbWluZ0NvbnRleHQpOwotCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBO VUxMKTsKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhh bmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gU1RPUCBtZXNzYWdl LgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCithcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0 aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAotCWlmIChpbl9z dHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwK LQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVB TSBTVE9QIikpKTsKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0 aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3N0b3Bf aW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIExvY2sg YmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVhZGVy CisJCQkgKiBjYW4gaG9sZCB0aGUgbG9jayBmaXJzdCBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3aWxsIHdhaXQKKwkJCSAqIGZvciBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgbG9jay4gU2Vl IExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5j LgorCQkJICovCisJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRh dGEpKQorCQkJeworCQkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJCWJy ZWFrOworCQkJfQorCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5k aW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0 byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0 aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQlj YXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93cml0ZV9jaGFu Z2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9wX2ludGVy bmFsKHN0cmVhbV94aWQpOworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisJ CQlicmVhazsKIAotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1Ynhp ZCk7CisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQllbG9nKERFQlVHMSwgImFwcGxp ZWQgJXUgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwKKwkJCQkgcGFyYWxsZWxfc3Ry ZWFtX25jaGFuZ2VzKTsKIAorCQkJLyoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpcyBwcm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBz dHJlYW1pbmcgYmxvY2ssIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBz ZW50IG11bHRpcGxlIHN0cmVhbWluZyBibG9ja3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwg YXBwbHkKKwkJCSAqIHdvcmtlciBzdGFydCB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9y ZSBjaHVuayBvZiBzdHJlYW1zCisJCQkgKiBpbiB0aGUgcXVldWUuIFNvLCB0cnkgdG8gbG9jayBv bmx5IGlmIHRoZXJlIGlzIG5vIG1lc3NhZ2UgbGVmdAorCQkJICogaW4gdGhlIHF1ZXVlLiBTZWUg TG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMu CisJCQkgKgorCQkJICogTm90ZSB0aGF0IGhlcmUgd2UgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIHdo ZXJlIHdlIGNhbiBzdGFydAorCQkJICogd2FpdGluZyBldmVuIHdoZW4gdGhlcmUgYXJlIHBlbmRp bmcgc3RyZWFtaW5nIGNodW5rcy4gVGhpcyBjYW4KKwkJCSAqIGhhcHBlbiBpZiB0aGUgbGVhZGVy IHNlbmRzIGFub3RoZXIgc3RyZWFtaW5nIGJsb2NrIGFuZCBhY3F1aXJlcworCQkJICogdGhlIHN0 cmVhbSBsb2NrIGFnYWluIGFmdGVyIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2hlY2tzCisJ CQkgKiB0aGF0IHRoZXJlIGlzIG5vIHBlbmRpbmcgc3RyZWFtaW5nIGJsb2NrIGFuZCBiZWZvcmUg aXQgYWN0dWFsbHkKKwkJCSAqIHN0YXJ0cyB3YWl0aW5nIG9uIGEgbG9jay4gV2UgY2FuIGhhbmRs ZSB0aGlzIGNhc2UgYnkgbm90CisJCQkgKiBhbGxvd2luZyB0aGUgbGVhZGVyIHRvIGluY3JlbWVu dCB0aGUgc3RyZWFtIGJsb2NrIGNvdW50IGR1cmluZworCQkJICogdGhlIHRpbWUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGFjcXVpcmVzIHRoZSBsb2NrIGJ1dCBpdCBpcyBub3QKKwkJCSAqIGNsZWFy IHdoZXRoZXIgdGhhdCBpcyB3b3J0aCB0aGUgY29tcGxleGl0eS4KKwkJCSAqCisJCQkgKiBOb3cs IGlmIHRoaXMgbWlzc2VkIGNodW5rIGNvbnRhaW5zIHJvbGxiYWNrIHRvIHNhdmVwb2ludCwgdGhl bgorCQkJICogdGhlcmUgaXMgYSByaXNrIG9mIGRlYWRsb2NrIHdoaWNoIHByb2JhYmx5IHNob3Vs ZG4ndCBoYXBwZW4KKwkJCSAqIGFmdGVyIHJlc3RhcnQuCisJCQkgKi8KKwkJCXBhX2RlY3JfYW5k X3dhaXRfc3RyZWFtX2Jsb2NrKCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0 KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFs c2U7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgaW4gYSB0 cmFuc2FjdGlvbiBpbiB3aGljaCBjYXNlIHdlCisJICogbmVlZCB0byByZXBvcnQgdGhlIHN0YXRl IGFzIFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLgorCSAqLworCWlmIChJc1RyYW5zYWN0aW9uT3JU cmFuc2FjdGlvbkJsb2NrKCkpCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlO VFJBTlNBQ1RJT04sIE5VTEwpOworCWVsc2UKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFU RV9JRExFLCBOVUxMKTsKKworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQor CisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9u IHdhcyBzZXJpYWxpemVkIHRvIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitzdHJlYW1fYWJvcnRf aW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorewogCS8q CiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9m IHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vy cm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsK IAkJLyoKQEAgLTEzMTgsOCArMTc0OCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBHUEFU SF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9n UmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwog CQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpAQCAt MTM0NCw0NyArMTc3MiwyMTUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIAotCQkvKiBvcGVuIHRoZSBjaGFuZ2Vz IGZpbGUgKi8KLQkJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOwotCQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0LCBwYXRoLAotCQkJCQkJCQlPX1JEV1IsIGZhbHNlKTsKKwkJLyogb3Bl biB0aGUgY2hhbmdlcyBmaWxlICovCisJCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwkJZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwKKwkJCQkJCQkJT19SRFdSLCBmYWxz ZSk7CisKKwkJLyogT0ssIHRydW5jYXRlIHRoZSBmaWxlIGF0IHRoZSByaWdodCBvZmZzZXQgKi8K KwkJQnVmRmlsZVRydW5jYXRlRmlsZVNldChmZCwgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1Ymlk eF0uZmlsZW5vLAorCQkJCQkJCSAgIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhdLm9mZnNl dCk7CisJCUJ1ZkZpbGVDbG9zZShmZCk7CisKKwkJLyogZGlzY2FyZCB0aGUgc3VieGFjdHMgYWRk ZWQgbGF0ZXIgKi8KKwkJc3VieGFjdF9kYXRhLm5zdWJ4YWN0cyA9IHN1YmlkeDsKKworCQkvKiB3 cml0ZSB0aGUgdXBkYXRlZCBzdWJ4YWN0IGxpc3QgKi8KKwkJc3VieGFjdF9pbmZvX3dyaXRlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJfQorfQorCisvKgorICogSGFuZGxl IFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNh Y3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOwor CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5 X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAq LworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOworCWJvb2wJCXRvcGxldmVsX3hh Y3Q7CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50 ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJ LyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5IGlu IHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0X2Rh dGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KTsKKworCXhp ZCA9IGFib3J0X2RhdGEueGlkOworCXN1YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCXRvcGxl dmVsX3hhY3QgPSAoeGlkID09IHN1YnhpZCk7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94 YWN0KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0 X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5 X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoKKwkJ CSAqIFdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9u IGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXN0cmVhbV9h Ym9ydF9pbnRlcm5hbCh4aWQsIHN1YnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAq IEZvciB0aGUgY2FzZSBvZiBhYm9ydGluZyB0aGUgc3VidHJhbnNhY3Rpb24sIHdlIGluY3JlbWVu dCB0aGUKKwkJCSAqIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIGFuZCB0YWtlIHRoZSBsb2Nr IGFnYWluIGJlZm9yZQorCQkJICogc2VuZGluZyB0aGUgU1RSRUFNX0FCT1JUIHRvIGVuc3VyZSB0 aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBvbiB0aGUgbG9j ayBmb3IgdGhlIG5leHQgc2V0IG9mIGNoYW5nZXMgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgdGhl IFNUUkVBTV9BQk9SVCBtZXNzYWdlIGlmIGl0IGlzIG5vdCBhbHJlYWR5CisJCQkgKiB3YWl0aW5n IGZvciBTVFJFQU1fU1RPUCBtZXNzYWdlLgorCQkJICoKKwkJCSAqIEl0IGlzIGltcG9ydGFudCB0 byBwZXJmb3JtIHRoaXMgbG9ja2luZyBiZWZvcmUgc2VuZGluZyB0aGUKKwkJCSAqIFNUUkVBTV9B Qk9SVCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlciBjYW4gaG9sZCB0aGUgbG9jayBmaXJzdAor CQkJICogYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUgbGVh ZGVyIHRvCisJCQkgKiByZWxlYXNlIHRoZSBsb2NrLiBUaGlzIGlzIHRoZSBzYW1lIGFzIHdoYXQg d2UgZG8gaW4KKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4gU2VlIExvY2tpbmcgQ29u c2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICovCisJ CQlpZiAoIXRvcGxldmVsX3hhY3QpCisJCQl7CisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTMyKCZ3aW5mby0+ c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSk7CisJCQkJcGFfbG9ja19zdHJlYW0oeGlk LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCX0KKworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCQkJ cGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9nUmVjUHRyKTsKKworCQkJCWJyZWFrOwor CQkJfQorCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRo aXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0 Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3Nl cmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRS QU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8q CisJCQkgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hh bmdlcywgc28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0 IGNhbiByb2xsYmFjayB0aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAq LworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19T VFJFQU1fQUJPUlQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAodG9wbGV2 ZWxfeGFjdCkKKwkJCXsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBG U19TRVJJQUxJWkVfRE9ORSk7CisJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9n UmVjUHRyKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5n IHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGFib3J0 aW5nLgorCQkJICovCisJCQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQpCisJCQkJc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKwor CQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRv IHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJ CSAqIFdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiBoZXJlIGR1ZSB0byB3aGljaCB3ZSBjYW4gc3Rh cnQgd2FpdGluZworCQkJICogaGVyZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9mIHN0cmVh bXMgaW4gdGhlIHF1ZXVlLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4KKwkJ CSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFt X2Jsb2NrKCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RS RUFNIEFCT1JUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQo ZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9uIGlzIGZpbGVz ZXQncyBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitlbnN1cmVfbGFzdF9tZXNzYWdlKEZpbGVTZXQg KnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50IGZpbGVubywKKwkJCQkJb2Zm X3Qgb2Zmc2V0KQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKKwlCdWZGaWxlICAgICpmZDsK KwlpbnQJCQlsYXN0X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZzZXQ7CiAKLQkJLyogT0ssIHRy dW5jYXRlIHRoZSBmaWxlIGF0IHRoZSByaWdodCBvZmZzZXQgKi8KLQkJQnVmRmlsZVRydW5jYXRl RmlsZVNldChmZCwgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0uZmlsZW5vLAotCQkJCQkJ CSAgIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhdLm9mZnNldCk7Ci0JCUJ1ZkZpbGVDbG9z ZShmZCk7CisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkJLyogZGlzY2FyZCB0 aGUgc3VieGFjdHMgYWRkZWQgbGF0ZXIgKi8KLQkJc3VieGFjdF9kYXRhLm5zdWJ4YWN0cyA9IHN1 YmlkeDsKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJLyogd3JpdGUgdGhlIHVwZGF0 ZWQgc3VieGFjdCBsaXN0ICovCi0JCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOworCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkKTsKIAotCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwotCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKLQl9CisJZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFt X2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7CiAKLQlyZXNldF9hcHBseV9lcnJvcl9j b250ZXh0X2luZm8oKTsKKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQpOworCUJ1ZkZp bGVUZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CisKKwlCdWZGaWxlQ2xvc2Uo ZmQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2ZpbGVubyAhPSBm aWxlbm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBtZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwi JXNcIiIsCisJCQkgcGF0aCk7CiB9CiAKIC8qCiAgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3Np bmcuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmls ZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVj UHRyIGxzbikKIHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFy CQlwYXRoW01BWFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOwor CWludAkJCWZpbGVubzsKKwlvZmZfdAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdf Y2hhbmdlcyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJl X3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFu IG9wZW4gdHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNDAw LDggKzE5OTYsMTYgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBm aWxlIFwiJXNcIiIsIHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2Up OworCS8qCisJICogTWFrZSBzdXJlIHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0 cmFuc2FjdGlvbiBzbyB0aGF0IHRoZQorCSAqIGZpbGUgd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5 IGNsb3NlZCB3aGVuIGFib3J0aW5nIGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIg PSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5z YWN0aW9uUmVzb3VyY2VPd25lcjsKKworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChz dHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJj ZU93bmVyID0gb2xkb3duZXI7CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3Ry aW5nSW5mbygmczIpOwpAQCAtMTQzMiw3ICsyMDM2LDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5i eXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1 ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2Ug cmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE0NTMs MTIgKzIwNTcsMTQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkv KiBhbmQgZmluYWxseSByZWFkIHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVm RmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJl YW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJv bSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJ CQkJcGF0aCkpKTsKIAorCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQp OworCiAJCS8qIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBs eV9kaXNwYXRjaCAqLwogCQlyZXNldFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3Ry aW5nSW5mbygmczIsIGJ1ZmZlciwgbGVuKTsKQEAgLTE0NzQsMTUgKzIwODAsMjQgQEAgYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJ bmNoYW5nZXMrKzsKIAorCQkvKgorCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGUgZmlsZSBoYXMgYmVl biBjbG9zZWQgYmVjYXVzZSB3ZSBoYXZlIHByb2Nlc3NlZAorCQkgKiB0aGUgdHJhbnNhY3Rpb24g ZW5kIG1lc3NhZ2UgbGlrZSBzdHJlYW1fY29tbWl0IGluIHdoaWNoIGNhc2UgdGhhdAorCQkgKiBt dXN0IGJlIHRoZSBsYXN0IG1lc3NhZ2UuCisJCSAqLworCQlpZiAoIXN0cmVhbV9mZCkKKwkJewor CQkJZW5zdXJlX2xhc3RfbWVzc2FnZShzdHJlYW1fZmlsZXNldCwgeGlkLCBmaWxlbm8sIG9mZnNl dCk7CisJCQlicmVhazsKKwkJfQorCiAJCWlmIChuY2hhbmdlcyAlIDEwMDAgPT0gMCkKIAkJCWVs b2coREVCVUcxLCAicmVwbGF5ZWQgJWQgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkg bmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlwZnJlZShidWZm ZXIpOwotCXBmcmVlKHMyLmRhdGEpOworCWlmIChzdHJlYW1fZmQpCisJCXN0cmVhbV9jbG9zZV9m aWxlKCk7CiAKIAllbG9nKERFQlVHMSwgInJlcGxheWVkICVkIChhbGwpIGNoYW5nZXMgZnJvbSBm aWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdlcywgcGF0aCk7CkBAIC0xNDk4LDYgKzIxMTMsMTEgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9u SWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwor CS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0lu Zm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwNywxNCArMjEyNyw3OSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVk IGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlv biA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRo ZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwg dGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRf bWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJ CQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJ CWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyog RmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV94 YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJYnJlYWs7CisJCQl9 CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBj aGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0 byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFs aXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNf TEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKIAotCS8qIHVubGlu ayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwot CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJ CQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVB TV9DT01NSVQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNl dF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZpbmlz aCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0X2Zp bmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKworCQljYXNlIFRS QU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRo ZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJ CXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwo JmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0g WGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFy ZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbih4 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJ CQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBDT01NSVQgY29t bWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQli cmVhazsKKwl9CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2Rh dGEuZW5kX2xzbik7CkBAIC0xNTU4LDkgKzIyNDMsMTYgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygp KQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCQlz dG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7CisJCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJfQog CWVsc2UKIAl7CkBAIC0yNTExLDcgKzMyMDMsNyBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3Ry aW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBk aXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3RyaW5n SW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUocyk7 CkBAIC0yNjc1LDE3ICszMzY3LDI0IEBAIGdldF9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyICp3 cml0ZSwgWExvZ1JlY1B0ciAqZmx1c2gsCiAvKgogICogU3RvcmUgY3VycmVudCByZW1vdGUvbG9j YWwgbHNuIHBhaXIgaW4gdGhlIHRyYWNraW5nIGxpc3QuCiAgKi8KLXN0YXRpYyB2b2lkCi1zdG9y ZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCit2b2lkCitzdG9yZV9mbHVz aF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxfbHNuKQog ewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyoKKwkgKiBTa2lwIGZvciBwYXJhbGxl bCBhcHBseSB3b3JrZXJzLCBiZWNhdXNlIHRoZSBsc25fbWFwcGluZyBpcyBtYWludGFpbmVkCisJ ICogYnkgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKGFtX3BhcmFsbGVsX2Fw cGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFu ZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAog CS8qIFRyYWNrIGNvbW1pdCBsc24gICovCiAJZmx1c2hwb3MgPSAoRmx1c2hQb3NpdGlvbiAqKSBw YWxsb2Moc2l6ZW9mKEZsdXNoUG9zaXRpb24pKTsKLQlmbHVzaHBvcy0+bG9jYWxfZW5kID0gWGFj dExhc3RDb21taXRFbmQ7CisJZmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2FsX2xzbjsKIAlmbHVz aHBvcy0+cmVtb3RlX2VuZCA9IHJlbW90ZV9sc247CiAKIAlkbGlzdF9wdXNoX3RhaWwoJmxzbl9t YXBwaW5nLCAmZmx1c2hwb3MtPm5vZGUpOwpAQCAtMjc0NCw2ICszNDQzLDcgQEAgTG9naWNhbFJl cEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJh Y2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9y X2NvbnRleHRfc3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlh cHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRo aXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0y OTU4LDYgKzM2NTgsNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNl aXZlZCkKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2Vu ZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMwNTYsOSArMzc1 NywzMSBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9v bCByZXF1ZXN0UmVwbHkpCiB9CiAKIC8qCi0gKiBSZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYg bmVlZGVkLiBNb3N0IGNoYW5nZXMgd2lsbCBiZSBleGl0LgorICogRXhpdCByb3V0aW5lIGZvciBh cHBseSB3b3JrZXJzIGR1ZSB0byBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNoYW5nZXMuCiAgKi8K IHN0YXRpYyB2b2lkCithcHBseV93b3JrZXJfZXhpdCh2b2lkKQoreworCWlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIERvbid0IHN0b3AgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBhcyB0aGUgbGVhZGVyIHdpbGwgZGV0ZWN0IHRoZQorCQkgKiBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIGNoYW5nZSBhbmQgcmVzdGFydCBsb2dpY2FsIHJlcGxpY2F0aW9uIGxh dGVyCisJCSAqIGFueXdheS4gVGhpcyBhbHNvIHByZXZlbnRzIHRoZSBsZWFkZXIgZnJvbSByZXBv cnRpbmcgZXJyb3JzIHdoZW4KKwkJICogdHJ5aW5nIHRvIGNvbW11bmljYXRlIHdpdGggYSBzdG9w cGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2hpY2gKKwkJICogd291bGQgYWNjaWRlbnRhbGx5 IGRpc2FibGUgc3Vic2NyaXB0aW9ucyBpZiBkaXNhYmxlX29uX2Vycm9yIHdhcworCQkgKiBzZXQu CisJCSAqLworCQlyZXR1cm47CisJfQorCisJcHJvY19leGl0KDApOworfQorCisvKgorICogUmVy ZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhp dC4KKyAqLwordm9pZAogbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogewogCU1lbW9y eUNvbnRleHQgb2xkY3R4OwpAQCAtMzA4OCw5ICszODExLDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNj cmlwdGlvbih2b2lkKQogCWlmICghbmV3c3ViKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJl bW92ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6 IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJ CQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwg TXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAkJcHJvY19leGl0KDApOwogCX0KQEAgLTMwOTks MTEgKzM4MjIsMTEgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlmICghbmV3 c3ViLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0J CQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwKLQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0 aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVz IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRp b24gd2FzIGRpc2FibGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlv bi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7CiAJ fQogCiAJLyogIXNsb3RuYW1lIHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBlbmFibGVkIGlzIHRy dWUuICovCkBAIC0zMTE0LDcgKzM4MzcsMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCiAJLyoKIAkgKiBFeGl0IGlmIGFueSBwYXJhbWV0ZXIgdGhhdCBhZmZlY3RzIHRoZSBy ZW1vdGUgY29ubmVjdGlvbiB3YXMgY2hhbmdlZC4KLQkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFy dCBhIG5ldyB3b3JrZXIuCisJICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2Vy IGJ1dCBub3RlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdvbid0IHJlc3Rh cnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFuZ2VkIGZyb20KKwkgKiAn cGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0aGUgc2VydmVyIGRlY2lkZXMgbm90IHRv IHN0cmVhbSB0aGUKKwkgKiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4KIAkgKi8KIAlpZiAoc3Ry Y21wKG5ld3N1Yi0+Y29ubmluZm8sIE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbykgIT0gMCB8fAog CQlzdHJjbXAobmV3c3ViLT5uYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkgIT0gMCB8fApAQCAt MzEyNSwxMSArMzg1MSwxNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCW5l d3N1Yi0+b3duZXIgIT0gTXlTdWJzY3JpcHRpb24tPm93bmVyIHx8CiAJCSFlcXVhbChuZXdzdWIt PnB1YmxpY2F0aW9ucywgTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9ucykpCiAJewotCQllcmVw b3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRl ciBjaGFuZ2UiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWlmIChhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHN0b3AgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KExPRywKKwkJCS8qIHRy YW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyICovCisJCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVz dGFydCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJZ2V0X3dvcmtlcl9u YW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBw bHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBDaGVjayBmb3Igb3RoZXIgY2hhbmdlcyB0aGF0 IHNob3VsZCBuZXZlciBoYXBwZW4gdG9vLiAqLwpAQCAtMzM4MSw3ICs0MTEzLDcgQEAgY2hhbmdl c19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogICog dG9wbGV2ZWwgdHJhbnNhY3Rpb24uIEVhY2ggc3Vic2NyaXB0aW9uIGhhcyBhIHNlcGFyYXRlIHNl dCBvZiBmaWxlcwogICogZm9yIGFueSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwotc3RhdGlj IHZvaWQKK3ZvaWQKIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQpCiB7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwpAQCAtMzQwNCw5ICs0MTM2LDYgQEAg c3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIGJ5 IHN0cmVhbV94aWQgKGdsb2JhbCB2YXJpYWJsZSkuIElmIGl0J3MgdGhlIGZpcnN0IGNodW5rIG9m IHN0cmVhbWVkCiAgKiBjaGFuZ2VzIGZvciB0aGlzIHRyYW5zYWN0aW9uLCBjcmVhdGUgdGhlIGJ1 ZmZpbGUsIG90aGVyd2lzZSBvcGVuIHRoZQogICogcHJldmlvdXNseSBjcmVhdGVkIGZpbGUuCi0g KgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhICJzdHJl YW1pbmciIGJsb2NrLCBpLmUuCi0gKiBiZXR3ZWVuIHN0cmVhbV9zdGFydC9zdHJlYW1fc3RvcCBt ZXNzYWdlcyBmcm9tIHRoZSB1cHN0cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9vcGVu X2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQpA QCAtMzQxNCw3ICs0MTQzLDYgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0 aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwog CU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KTsKIAlBc3NlcnQoT2lkSXNWYWxpZChzdWJpZCkpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZCh4aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkID09IE5VTEwpOwpAQCAtMzQ1MywxNSArNDE4 MSwxMCBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgZmlyc3Rfc2VnbWVudCkKIC8qCiAgKiBzdHJlYW1fY2xvc2VfZmlsZQogICoJICBDbG9zZSB0 aGUgY3VycmVudGx5IG9wZW4gZmlsZSB3aXRoIHN0cmVhbWVkIGNoYW5nZXMuCi0gKgotICogVGhp cyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIHN0cmVhbWluZyBibG9jaywgaS5l LiBhdCBzdHJlYW1fc3RvcAotICogbWVzc2FnZSBmcm9tIHRoZSB1cHN0cmVhbS4KICAqLwogc3Rh dGljIHZvaWQKIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNzZXJ0KGluX3N0cmVhbWVk X3RyYW5zYWN0aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkp OwogCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAlCdWZGaWxlQ2xvc2Uoc3RyZWFtX2Zk KTsKQEAgLTM0ODMsOCArNDIwNiw2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24s IFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJ QXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCS8qIHRvdGFsIG9uLWRpc2sgc2l6ZSwgaW5j bHVkaW5nIHRoZSBhY3Rpb24gdHlwZSBjaGFyYWN0ZXIgKi8KQEAgLTM1MDIsNiArNDIyMywyNiBA QCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJQnVmRmls ZVdyaXRlKHN0cmVhbV9mZCwgJnMtPmRhdGFbcy0+Y3Vyc29yXSwgbGVuKTsKIH0KIAorLyoKKyAq IHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVzc2FnZSB0 byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u IGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3aWxsIG9w ZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBpZiBub3QgYWxyZWFkeSBiZWZvcmUgd3JpdGluZyB0aGUg bWVzc2FnZSBhbmQgY2xvc2UgdGhlIGZpbGUgYXQKKyAqIHRoZSBlbmQuCisgKi8KK3N0YXRpYyB2 b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFy IGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pOworCisJaWYgKCFzdHJlYW1fZmQpCisJCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh4aWQsIGZh bHNlKTsKKworCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJlYW1fc3RvcF9p bnRlcm5hbCh4aWQpOworfQorCiAvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0 cyBhbmQgcmVzZXQgdGhlIHJlbGF0ZWQgdmFyaWFibGVzLgogICovCkBAIC0zNjEzLDM3ICs0MzU0 LDE2IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9U UlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9p bnQgKi8KKy8qCisgKiBDb21tb24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRh YmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAq IGNvbmZpZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpCitJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9 IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJ CW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0g SW52YWxpZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2 U3RyZWFtT3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0 YWNoIHRvIHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwot Ci0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxI YW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tn cm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50 bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAot CSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25l ciBoZXJlLgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAq LwotCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3Jr ZXItPmxhc3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0g R2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVu Y3Rpb25zICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyog UnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09w dGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY3MSw5ICs0 MzkxLDEwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2Ny aXB0aW9uKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiCi0JCQkJCQki c3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVw IiwKLQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpKSk7CisJCS8qIHRyYW5zbGF0b3I6 ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVy cm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBz dWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtl cl9uYW1lKCksIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpKSk7CisKIAkJcHJvY19leGl0KDAp OwogCX0KIApAQCAtMzY4MywxMSArNDQwNCwxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9H LAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJz Y3JpcHRpb24gd2FzIGRpc2FibGVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMg ZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4 aXQoKTsKIAl9CiAKIAkvKiBTZXR1cCBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRo ZSB1c2VyJ3Mgd2lzaGVzICovCkBAIC0zNzAyLDEzICs0NDIzLDQ5IEBAIEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQllcmVwb3J0 KExPRywKIAkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXph dGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxlIFwiJXNcIiBoYXMgc3Rh cnRlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3JlbF9uYW1lKE15TG9naWNh bFJlcFdvcmtlci0+cmVsaWQpKSkpOworCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJ CQlnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJZWxzZQogCQll cmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtl ciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiBoYXMgc3RhcnRlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlT dWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30K KworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3Zv aWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xv dCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFM RU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJ Y2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25z OworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dp Y2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhh bmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOworCisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VP d25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291 bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyog SW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtl ci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0K KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp OworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxl KCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7 CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmlnaW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4g Ki8KIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rp b24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzE4LDIwICs0NDc1LDE1IEBAIEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIAl7CiAJCXN0YXJ0X3RhYmxlX3N5bmMoJm9yaWdpbl9zdGFydHBv cywgJm15c2xvdG5hbWUpOwogCi0JCS8qCi0JCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBp biBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKLQkJICogbWVzc2FnZS4KLQkJ ICovCiAJCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24t Pm9pZCwKIAkJCQkJCQkJCQkgICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJCQkJ CSAgIG9yaWdpbm5hbWUsCiAJCQkJCQkJCQkJICAgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKLQkJYXBw bHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChB cHBseUNvbnRleHQsCi0JCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJCXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsKIAl9CiAJZWxzZQogCXsKLQkJLyog VGhpcyBpcyBtYWluIGFwcGx5IHdvcmtlciAqLworCQkvKiBUaGlzIGlzIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyICovCiAJCVJlcE9yaWdpbklkIG9yaWdpbmlkOwogCQlUaW1lTGluZUlECXN0YXJ0 cG9pbnRUTEk7CiAJCWNoYXIJICAgKmVycjsKQEAgLTM3NTUsNyArNDUwNyw3IEBAIEFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUo b3JpZ2lubmFtZSwgdHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQs IDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCW9yaWdpbl9z dGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTM3NzMsMTIgKzQ1MjUsNyBAQCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCSAqLwogCQkodm9pZCkgd2FscmN2X2lkZW50aWZ5X3N5 c3RlbShMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmc3RhcnRwb2ludFRMSSk7CiAKLQkJLyoKLQkJ ICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJy b3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJ CQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29y aWdpbihvcmlnaW5uYW1lKTsKIAl9CiAKIAkvKgpAQCAtMzc5NiwxMyArNDU0MywzNiBAQCBBcHBs eVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9z ZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlvcHRpb25zLnByb3RvLmxv Z2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNp b24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6CiAJ CXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJ T05fTlVNIDoKIAkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKIAogCW9wdGlvbnMucHJv dG8ubG9naWNhbC5wdWJsaWNhdGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlv bnM7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vic2NyaXB0aW9uLT5iaW5h cnk7Ci0Jb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZyA9IE15U3Vic2NyaXB0aW9uLT5z dHJlYW07CisKKwkvKgorCSAqIEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uIHZhbHVlIGZv ciBzdHJlYW1pbmcgb3B0aW9uIGFjY29yZGluZyB0bworCSAqIHRoZSAnc3RyZWFtaW5nJyBtb2Rl IGFuZCB0aGUgcHVibGlzaGVyJ3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQgbW9kZS4KKwkgKi8K KwlpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwICYmCisJCU15U3Vic2NyaXB0aW9uLT5zdHJl YW0gPT0gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25zLnByb3RvLmxv Z2ljYWwuc3RyZWFtaW5nX3N0ciA9ICJwYXJhbGxlbCI7CisJCU15TG9naWNhbFJlcFdvcmtlci0+ cGFyYWxsZWxfYXBwbHkgPSB0cnVlOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAx NDAwMDAgJiYKKwkJCSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IExPR0lDQUxSRVBfU1RSRUFN X09GRikKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gIm9uIjsK KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwllbHNl CisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IE5VTEw7CisJCU15 TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisKIAlvcHRpb25z LnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgPSBmYWxzZTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwu b3JpZ2luID0gcHN0cmR1cChNeVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsKIApAQCAtMzg5OSw2ICs0 NjY5LDE1IEBAIElzTG9naWNhbFdvcmtlcih2b2lkKQogCXJldHVybiBNeUxvZ2ljYWxSZXBXb3Jr ZXIgIT0gTlVMTDsKIH0KIAorLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyPworICovCitib29sCitJc0xvZ2ljYWxQYXJh bGxlbEFwcGx5V29ya2VyKHZvaWQpCit7CisJcmV0dXJuIElzTG9naWNhbFdvcmtlcigpICYmIGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpOworfQorCiAvKgogICogU3RhcnQgc2tpcHBpbmcgY2hh bmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVzIHRoZQogICog TFNOIHNwZWNpZmllZCBieSBzdWJzY3JpcHRpb24ncyBza2lwbHNuLgpAQCAtMzk2MSw3ICs0NzQw LDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikK IAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJ CXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZCht eXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkg fHwgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFu c2FjdGlvblN0YXRlKCkpCkBAIC00MDMzLDcgKzQ4MTIsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25f c2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0 byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAq Lwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsK IAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19h cmc7CkBAIC00MDYxLDIzICs0ODQwLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy ZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51 bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0 aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVk IGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFy Zy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwi JXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIl c1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNv bW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVt b3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJ eworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNz YWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wi IGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJ CQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UK KwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAl WC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJl cF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFt ZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJH UyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVj UHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vz c2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVz c2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNc IiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3Jp Z2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUg XCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBc IiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVy cmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJh cmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRp b24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTcsMyArNDkwMCw1MiBAQCByZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19h cmcucmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52 YWxpZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIEFsbG9j YXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRl eHQgbWVzc2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNo YXIgKm9yaWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1l ID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBv cmlnaW5uYW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIGJlIHRha2VuIGZv ciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5mbyBpcworICogYXNzaWduZWQgdG8gdGhlIGRl c3RpbmF0aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZvIHdoZW4gdGhlIGdpdmVuCisgKiB0cmFuc2Fj dGlvbiBpcyBiZWluZyBwcm9jZXNzZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisg Ki8KK3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQorewor CSp3aW5mbyA9IE5VTEw7CisKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJewor CQlyZXR1cm4gVFJBTlNfUEFSQUxMRUxfQVBQTFk7CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90 cmFuc2FjdGlvbikKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfQVBQTFk7CisJfQorCisJLyoK KwkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEg cGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIuCisJICovCisJKndpbmZvID0gcGFfZmluZF93b3Jr ZXIoeGlkKTsKKworCWlmICghKndpbmZvKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJ QUxJWkU7CisJfQorCWVsc2UgaWYgKCgqd2luZm8pLT5zZXJpYWxpemVfY2hhbmdlcykKKwl7CisJ CXJldHVybiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU7CisJfQorCWVsc2UKKwl7CisJ CXJldHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwl9Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBjYTQ2ZmJhM2FmLi40MGM0 NGJiN2U5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK QEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNlX291dHB1dF9wYXJh bWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQlvcmlnaW5f b3B0aW9uX2dpdmVuID0gZmFsc2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsKLQlkYXRhLT5z dHJlYW1pbmcgPSBmYWxzZTsKKwlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVBTV9P RkY7CiAJZGF0YS0+bWVzc2FnZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhhc2UgPSBmYWxzZTsK IApAQCAtMzY5LDcgKzM3MCw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlv bnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJl ZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRh dGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5n ID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjIsMjAg QEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBs dWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQg dmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2lu IHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRh LT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQogCQkJY3R4LT5zdHJlYW1pbmcg PSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBf UFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0g TE9HSUNBTFJFUF9TVFJFQU1fT04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJt c2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5n LCBuZWVkICVkIG9yIGhpZ2hlciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0 cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90 b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9O VU0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQg ZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwK KwkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9Q QVJBTExFTF9WRVJTSU9OX05VTSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9W QUxVRSksCkBAIC0xODQxLDYgKzE4NDksOCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0 IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xz bikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0g KFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sCQl3cml0 ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJB TExFTCk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFt aW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0LDkgQEAgcGdvdXRw dXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNz ZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdy aXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQs IHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQo Y3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4 bi0+eGFjdF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1 Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54 aWQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWdu YWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3 ZjI3Li43YzAwOWQ1MjVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0y Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5o IgpAQCAtNjU3LDYgKzY1OCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9B UkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQog CQlIYW5kbGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2ln bmFsKFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3Iu YwppbmRleCAxMDQzMDY4YmFjLi4yZjE3MWY1NTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMK QEAgLTExMTcsNiArMTExNyw0NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBj bGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBs b2NrbW9kZSwgdHJ1ZSk7CiB9CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uCisgKgorICogT2J0YWluIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNl ZSBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxl dmVsIGxvY2tzLgorICovCit2b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lk IHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NL TU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9U UkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9p ZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1 aXJlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBw bHlUcmFuc2FjdGlvbkZvclNlc3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlv bkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwK KwkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9M T0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJ CQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlM b2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBk ZXNjcmlwdGlvbiBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEs MTMgQEAgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcp CiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVs ZDQpOwogCQkJYnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Yg c3Vic2NyaXB0aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19m aWVsZDMsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3Rh Z19maWVsZDEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwKIAkJCQkJCQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDAxZDI2NGI1YWIuLmQ1Mjk1YzQ1ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMz OTEsNiArMzM5MSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5 Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisK KwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5 TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YwppbmRleCBiMmFiZDc1ZGRiLi4xZmFiNDVlNzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jCkBAIC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2 aXR5KFdhaXRFdmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5D SEVSX01BSU46CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJl YWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQll dmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2Fz ZSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292 ZXJ5V2FsU3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRf d2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVD S0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQi OwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NU QVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNo YW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgog CQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbG9ja2Z1bmNzLmMKaW5kZXggZjliMzI0ZWZlYy4uM2JmMDQ4MzFmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IExv Y2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNlcmxv Y2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgogfTsK IAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RB R19BRFZJU09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5h bWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNt YXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0VHlw ZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwppbmRleCBhMzdjOWY5ODQ0Li42MmI3ZjU3ZTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwpAQCAtMzAwMiw2ICszMDAyLDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3Vy ZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJ CQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1i ZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVM TCwKKwkJfSwKKwkJJm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24s CisJCTIsIDAsIE1BWF9QQVJBTExFTF9XT1JLRVJfTElNSVQsCisJCU5VTEwsIE5VTEwsIE5VTEwK Kwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dI RVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJl Zm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQppbmRleCA1YWZkZWIwNGRlLi5jMmFkYTkyMDU0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNTksNiArMzU5LDcgQEAKICNt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtl cl9wcm9jZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVw bGljYXRpb25fd29ya2VycworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAK IAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDRkOTU3YzAzOC4uZjQ1 NGIzMWM1OCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTMzLDcgKzQ1MzMsNyBAQCBnZXRTdWJzY3JpcHRp b25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UK LQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7 CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsK IAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksCkBAIC00NjcwLDggKzQ2NzAsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNo aXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAo c3ViaW5mby0+c3ViYmluYXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiLCBiaW5hcnkgPSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVh bSwgImYiKSAhPSAwKQorCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDAp CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVs c2UgaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3Ry Y21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkK IAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYg LS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IGRmMTY2MzY1ZTguLjI2NWIyOGQ5MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02NTAyLDExICs2NTAy LDI0IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UpCiAJewogCQkvKiBCaW5hcnkgbW9kZSBhbmQgc3RyZWFtaW5nIGFyZSBvbmx5IHN1cHBv cnRlZCBpbiB2MTQgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDAp CisJCXsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiLCBzdWJiaW5hcnkg QVMgXCIlc1wiXG4iCi0JCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFt aW5nIikpOworCQkJCQkJCSAgIiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdl dHRleHRfbm9vcCgiQmluYXJ5IikpOworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDAp CisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCAoQ0FTRSBzdWJzdHJl YW1cbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ2YnIFRIRU4gJ29mZidcbiIKKwkJCQkJCQkJICAi ICAgIFdIRU4gJ3QnIFRIRU4gJ29uJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAncCcgVEhFTiAn cGFyYWxsZWwnXG4iCisJCQkJCQkJCSAgIiAgIEVORCkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkg IGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJ ICBnZXR0ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJfQogCiAJCS8qIFR3b19waGFzZSBhbmQg ZGlzYWJsZV9vbl9lcnJvciBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdjE1IGFuZCBoaWdoZXIgKi8K IAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggN2I5ODcxNGYzMC4uNWI5ZTVhMzk5YSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0 aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lf Uk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRz IHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0J Ym9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8K KwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiBT ZWUKKwkJCQkJCQkJICogU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlzdWJ0 d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBAIC0x MjQsNyArMTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxl ZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAlib29s CQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBp bgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93 IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFtOwkJ CS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAq IFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkv KiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2Fi bGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJ CQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2 ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNp ZmllZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9P RkYgJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3 cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhl IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBMT0dJ Q0FMUkVQX1NUUkVBTV9PTiAndCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5 IHdvcmtlci4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKKwog ZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNz aW5nX29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIp OwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCmluZGV4IDJjYmU3ZDdiNjUuLjc3OTQ3NGY1NjUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKQEAgLTI2LDQgKzI2LDYg QEAgZXh0ZXJuIHZvaWQgRHJvcFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU3Vic2NyaXB0 aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQg QWx0ZXJTdWJzY3JpcHRpb25Pd25lcl9vaWQoT2lkIHN1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiAK K2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsKKwogI2VuZGlm CQkJCQkJCS8qIFNVQlNDUklQVElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIxZTI1Li5kNTEzZWY1MzNhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBl eHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsK K2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwog ZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCAxZWI3ZGRhNTI5Li40ZmEyYmQzN2RlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMzIsMTIgKzMyLDE3IEBA CiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSBpcyB0aGUgbWlu aW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1cHBvcnQgZm9yIHR3by1waGFzZSBjb21t aXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIEludHJvZHVjZWQgaW4gUEcxNS4KKyAqCisg KiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSBpcyB0aGUgbWlu aW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVyZSB3ZSBzdXBwb3J0IGFwcGx5aW5nIGxhcmdl IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgKiBJbnRyb2R1Y2VkIGluIFBH MTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NSU5fVkVSU0lPTl9OVU0gMQogI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BI QVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9O VU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTQorI2RlZmluZSBMT0dJQ0FM UkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA0CisjZGVmaW5lIExPR0lDQUxS RVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVM X1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAgLTE3NSw2ICsx ODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRh CiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRh dGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFt IGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7 CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0 cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVh bUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJ bmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf cmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEg KmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMyBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVw X3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4 bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3Ry aW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1 YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3Vi eGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLAorCQkJCQkJCQkJCSAgWExv Z1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAor CQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJl cFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0 X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBN c2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZjLi5kYzY4 Y2Q4OWM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMiw4 ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9HSUNBTFdPUktF Ul9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lk IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBQYXJhbGxlbEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdv cmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9p ZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lk KTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApp bmRleCAyYTUwZDEwYjUyLi5jN2IxYWRmZmY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApA QCAtNTMsNyArNTMsNyBAQCBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX2dldF9wcm9ncmVz cyhSZXBPcmlnaW5JZCBub2RlLCBib29sIGZsdXNoKTsKIAogZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciByZW1vdGVfY29tbWl0LAogCQkJCQkJCQkJICAg WExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwotZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKFJlcE9yaWdpbklkIG5vZGUpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSk7CiBleHRlcm4gdm9pZCBy ZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3Jp Z2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cGdvdXRwdXQuaAppbmRleCAwMjAyNzU1MGUyLi4zYzMwZGE4MjA1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0LmgKQEAgLTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXRE YXRhCiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVibGljYXRpb25z OwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwog CWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKIAljaGFyCSAgICpvcmlnaW47CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYjI3YTQzNjE4YS4uZDY3 YmRiZmI3NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZl ci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzE2 LDYgKzMxNiw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVz dGFtcFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVz dGFtcFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NzgsNyArNjc5 LDggQEAgZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRD aGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJCQkJCSBYTG9n UmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZv aWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBl eHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9y Z2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24p OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaAppbmRleCA5MzM5ZjI5MzAzLi4wYzhiYmRkYWJlIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVj dAogCQkJdWludDMyCQlwcm90b192ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNpb24g Ki8KIAkJCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlzdCBvZiBwdWJs aWNhdGlvbnMgKi8KIAkJCWJvb2wJCWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0byB1c2UgYmlu YXJ5ICovCi0JCQlib29sCQlzdHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2Fj dGlvbnMgKi8KKwkJCWNoYXIJICAgKnN0cmVhbWluZ19zdHI7CS8qIFN0cmVhbWluZyBvZiBsYXJn ZSB0cmFuc2FjdGlvbnMgKi8KIAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1pbmcgb2YgdHdv LXBoYXNlIHRyYW5zYWN0aW9ucyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1lICovCiAJCQlj aGFyCSAgICpvcmlnaW47IC8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhl CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDJiNzExNGZm NmQuLmZhNjAxNjQ2YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oCkBAIC0xNyw4ICsxNywxMyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGlt ZXN0YW1wLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHJlbGF0aW9uLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9maWxlc2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NwaW4uaCIKIAogCkBAIC01MywxMyArNTgsMjQgQEAgdHlwZWRlZiBzdHJ1 Y3QgTG9naWNhbFJlcFdvcmtlcgogCiAJLyoKIAkgKiBVc2VkIHRvIGNyZWF0ZSB0aGUgY2hhbmdl cyBhbmQgc3VieGFjdCBmaWxlcyBmb3IgdGhlIHN0cmVhbWluZwotCSAqIHRyYW5zYWN0aW9ucy4g IFVwb24gdGhlIGFycml2YWwgb2YgdGhlIGZpcnN0IHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhl Ci0JICogZmlsZXNldCB3aWxsIGJlIGluaXRpYWxpemVkLCBhbmQgaXQgd2lsbCBiZSBkZWxldGVk IHdoZW4gdGhlIHdvcmtlcgotCSAqIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVmZmls ZXMgd291bGQgYmUgY3JlYXRlZCBmb3IgZWFjaAotCSAqIHRyYW5zYWN0aW9uIHdoaWNoIHdpbGwg YmUgZGVsZXRlZCBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCisJICogdHJhbnNh Y3Rpb25zLiAgVXBvbiB0aGUgYXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIG9yCisJICogd2hlbiB0aGUgZmlyc3QtdGltZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRpbWVz IG91dCB3aGlsZSBzZW5kaW5nIGNoYW5nZXMKKwkgKiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyLCB0aGUgZmlsZXNldCB3aWxsIGJlIGluaXRpYWxpemVkLCBhbmQgaXQKKwkgKiB3aWxsIGJl IGRlbGV0ZWQgd2hlbiB0aGUgd29ya2VyIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVm ZmlsZXMKKwkgKiB3b3VsZCBiZSBjcmVhdGVkIGZvciBlYWNoIHRyYW5zYWN0aW9uIHdoaWNoIHdp bGwgYmUgZGVsZXRlZCBhZnRlciB0aGUKKwkgKiB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZC4KIAkg Ki8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxlYWRl ciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkK KwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlhcHBseV9s ZWFkZXJfcGlkOworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1l ZCBpbiBwYXJhbGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0YXRzLiAq LwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBA IC02OCw5ICs4NCwxMzMgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVz dGFtcFR6IHJlcGx5X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qCisgKiBTdGF0ZSBv ZiB0aGUgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRoZSBl bnVtIHZhbHVlcyBtdXN0IGhhdmUgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlCisgKiB0cmFuc2l0aW9ucy4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0 ZQoreworCVBBUkFMTEVMX1RSQU5TX1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwK KwlQQVJBTExFTF9UUkFOU19GSU5JU0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisg KiBTdGF0ZSBvZiBmaWxlc2V0IHVzZWQgdG8gY29tbXVuaWNhdGUgY2hhbmdlcyBmcm9tIGxlYWRl ciB0byBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICoKKyAqIEZTX0VNUFRZIGluZGljYXRl cyBhbiBpbml0aWFsIHN0YXRlIHdoZXJlIHRoZSBsZWFkZXIgZG9lc24ndCBuZWVkIHRvIHVzZQor ICogdGhlIGZpbGUgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorICoKKyAqIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGVh ZGVyIGlzIHNlcmlhbGl6aW5nIGNoYW5nZXMKKyAqIHRvIHRoZSBmaWxlLgorICoKKyAqIEZTX1NF UklBTElaRV9ET05FIGluZGljYXRlcyB0aGF0IHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxs IGNoYW5nZXMgdG8KKyAqIHRoZSBmaWxlLgorICoKKyAqIEZTX1JFQURZIGluZGljYXRlcyB0aGF0 IGl0IGlzIG5vdyBvayBmb3IgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIHJlYWQgdGhl IGZpbGUuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7CisJRlNfRU1Q VFksCisJRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9ET05FLAorCUZT X1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJp bmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAor ICogYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZAoreworCXNsb2NrX3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25JZCB4aWQ7CisKKwkv KgorCSAqIFN0YXRlIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkgKgorCSAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxfVFJBTlNfRklO SVNIRUQgYWZ0ZXIKKwkgKiBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRz IHdoaWxlIHRoZSBhcHBseSBsZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRvIGJlY29tZSBQ QVJBTExFTF9UUkFOU19GSU5JU0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAqIHRyYW5zYWN0 aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9QUkVQQVJFKS4K KwkgKi8KKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCS8qIEluZm9ybWF0aW9u IGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQx NgkJbG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtl cl9zbG90X25vOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgcGVuZGlu ZyBzdHJlYW1pbmcgYmxvY2tzIGluIHRoZSBxdWV1ZS4gVGhlCisJICogcGFyYWxsZWwgYXBwbHkg d29ya2VyIHdpbGwgY2hlY2sgaXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQuCisJICovCisJcGdf YXRvbWljX3VpbnQzMglwZW5kaW5nX3N0cmVhbV9jb3VudDsKKworCS8qCisJICogWGFjdExhc3RD b21taXRFbmQgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlzIHJlcXVpcmVk IGJ5CisJICogdGhlIGxlYWRlciB3b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBp bmdzLgorCSAqLworCVhMb2dSZWNQdHIJbGFzdF9jb21taXRfZW5kOworCisJLyoKKwkgKiBBZnRl ciBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB3aWxsCisJICogc2VyaWFsaXplIGNoYW5nZXMgdG8gdGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUg ZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aGVuIHByb2Nlc3Np bmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kLiBUaGVuIHRoZQorCSAqIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgor CSAqIEZpbGVTZXQgaXMgdXNlZCBoZXJlIGluc3RlYWQgb2YgU2hhcmVkRmlsZVNldCBiZWNhdXNl IHdlIG5lZWQgaXQgdG8KKwkgKiBzdXJ2aXZlIGFmdGVyIHJlbGVhc2luZyB0aGUgc2hhcmVkIG1l bW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKwkgKiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUg c2FtZSBmaWxlc2V0IGZvciB0aGUgbmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJICovCisJ UGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZpbGVzZXQ7Cit9 IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBp cyB1c2VkIHRvIG1hbmFnZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVm IHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5kbGUgKm1xX2hh bmRsZTsKKworCS8qCisJICogVGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgZXJyb3IgbWVzc2Fn ZXMgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgdG8gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJZHNt X3NlZ21lbnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1haW5pbmcgY2hh bmdlcyB0byBhIGZpbGUgZHVlIHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRvIHNlbmQgZGF0 YQorCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuCisJ ICovCisJYm9vbAkJc2VyaWFsaXplX2NoYW5nZXM7CisKKwkvKgorCSAqIFRydWUgaWYgdGhlIHdv cmtlciBpcyBiZWluZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQorCSAqIHRyYW5z YWN0aW9uLiBGYWxzZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciByZS11 c2UuCisJICovCisJYm9vbAkJaW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq c2hhcmVkOworfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkgY29u dGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4g Ki8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAorZXh0 ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKworZXh0 ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0 X3N0YWNrOworCitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq TXlQYXJhbGxlbFNoYXJlZDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRl cm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2 Q29ubjsKIApAQCAtODQsOSArMjI0LDExIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93 b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9y dW5uaW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQs IGJvb2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5j aChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9p ZCB1c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVu Y2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBP aWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNt KTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywg dWludDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVw KE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dh a2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIApAQCAtMTAzLDEwICsyNDUsNzgg QEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRf bHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVy biB2b2lkIHN0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJz dF9zZWdtZW50KTsKK2V4dGVybiB2b2lkIHN0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0aW9u SWQgeGlkKTsKKworLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhl IHNwb29sZWQgbWVzc2FnZXMgKi8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMo RmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkgICBY TG9nUmVjUHRyIGxzbik7CisKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8g cyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CisKK2V4 dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CisKK2V4dGVy biB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1Jl Y1B0ciBsb2NhbF9sc24pOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sg Ki8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitleHRlcm4g dm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSk7CisK Ky8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRl cm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7 CitleHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOworCitleHRlcm4gYm9v bCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRl cywKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIHBhX3N3aXRjaF90b19w YXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkJ CQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKTsKKworZXh0ZXJuIHZvaWQgcGFfc2V0X3hhY3Rfc3Rh dGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkgIFBhcmFsbGVs VHJhbnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhX3NldF9zdHJlYW1fYXBwbHlfd29y a2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CisKK2V4dGVybiB2b2lkIHBhX3N0 YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCisJCQkJCQkJICBUcmFuc2Fj dGlvbklkIHRvcF94aWQpOworZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnModm9pZCk7Citl eHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJv cnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxl c2V0X3N0YXRlKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4 aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja19zdHJlYW0oVHJh bnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9j a190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworZXh0 ZXJuIHZvaWQgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9E RSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2Nr KHZvaWQpOworCitleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sCisJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOworCisjZGVmaW5l IGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBwbHlfbGVhZGVyX3Bp ZCAhPSBJbnZhbGlkUGlkKQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3Jr ZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlk KTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9sZWFkZXJfYXBwbHlfd29ya2VyKHZvaWQp Cit7CisJcmV0dXJuICghYW1fdGFibGVzeW5jX3dvcmtlcigpICYmCisJCQkhaXNQYXJhbGxlbEFw cGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wK K2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiBpc1BhcmFsbGVsQXBw bHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktF Ul9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IGJlMWQyYzk5YTkuLjVhM2JkMDNiYTUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvbG1nci5oCkBAIC0xMDcsNiArMTA3LDExIEBAIGV4dGVybiB2b2lkIExvY2tTaGFy ZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJp ZCwKIGV4dGVybiB2b2lkIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQs IE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9k ZSk7CiAKK2V4dGVybiB2b2lkIExvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vi b2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCSAgIExPQ0tN T0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIFVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJ CQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CisKIC8qIERlc2NyaWJlIGEgbG9ja3RhZyBmb3IgZXJy b3IgbWVzc2FnZXMgKi8KIGV4dGVybiB2b2lkIERlc2NyaWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1 ZiwgY29uc3QgTE9DS1RBRyAqdGFnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRleCBlNGUxNDk1YjI0Li43 NzY2MTIzYTdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtMTQ5LDEwICsxNDksMTIgQEAgdHlwZWRlZiBl bnVtIExvY2tUYWdUeXBlCiAJTE9DS1RBR19TUEVDVUxBVElWRV9UT0tFTiwJLyogc3BlY3VsYXRp dmUgaW5zZXJ0aW9uIFhpZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFHX09CSkVDVCwJCQkJLyogbm9u LXJlbGF0aW9uIGRhdGFiYXNlIG9iamVjdCAqLwogCUxPQ0tUQUdfVVNFUkxPQ0ssCQkJLyogcmVz ZXJ2ZWQgZm9yIG9sZCBjb250cmliL3VzZXJsb2NrIGNvZGUgKi8KLQlMT0NLVEFHX0FEVklTT1JZ CQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQURWSVNPUlksCQkJLyogYWR2 aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04JLyogdHJhbnNh Y3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJCQkJICogcmVwbGljYXRpb24g c3Vic2NyaWJlciAqLwogfSBMb2NrVGFnVHlwZTsKIAotI2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQ RQlMT0NLVEFHX0FEVklTT1JZCisjZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQVBQ TFlfVFJBTlNBQ1RJT04KIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IExv Y2tUYWdUeXBlTmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBM T0NLVEFHCiAJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FEVklTT1JZLCBcCiAJ IChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IFVTRVJfTE9DS01FVEhPRCkKIAorLyoK KyAqIElEIGluZm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9uIGEgbG9naWNhbCByZXBsaWNh dGlvbiBzdWJzY3JpYmVyIGlzOiBEQgorICogT0lEICsgU1VCU0NSSVBUSU9OIE9JRCArIFRSQU5T QUNUSU9OIElEICsgT0JKSUQKKyAqLworI2RlZmluZSBTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FD VElPTihsb2NrdGFnLGRib2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwKKwkoKGxvY2t0YWcpLmxvY2t0 YWdfZmllbGQxID0gKGRib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDIgPSAoc3Vi b2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDMgPSAoeGlkKSwgXAorCSAobG9ja3Rh ZykubG9ja3RhZ19maWVsZDQgPSAob2JqaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUg PSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2tt ZXRob2RpZCA9IERFRkFVTFRfTE9DS01FVEhPRCkKIAogLyoKICAqIFBlci1sb2NrZWQtb2JqZWN0 IGxvY2sgaW5mb3JtYXRpb246CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGVlNjM2OTAw ZjMuLjkzYTUxZjQyNTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICszNSw3 IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3 YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklFUiwJ CQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZX0NP TlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJUFJP Q1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwgYXBw bHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXgg MGIyMTAwYmU0YS4uNzYzZmJlYWRmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2Fp dF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNDIsNiAr NDIsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOLAogCVdB SVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hF Ul9NQUlOLAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOLAogCVdBSVRf RVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwKIAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9NQUlOLAog CVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCkBAIC0xMDUsNiArMTA2LDcgQEAgdHlwZWRl ZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VW RU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tF VFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NI QU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNB TF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGMxM2QyMThkY2YuLjFlZDZm NGMzOWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAg LTExNyw3ICsxMTcsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKQEAgLTEyNSw3 ICsxMjUsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdp biA9IGFueSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAg LTEzOCw3ICsxMzgsNyBAQCBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4 OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIz IFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVi bGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sgLSB3aXRoIGxz biA9IE5PTkUKQEAgLTE3MCw3ICsxNzAsNyBAQCBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0aW9u IChMU04pOiAwLzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8 IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBC RUdJTjsKQEAgLTIwNSw3ICsyMDUsNyBAQCBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWws IHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICAgTmFtZSAg ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGlj YXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2Fs ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyByZWdy ZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNr IHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBAIC0yNDIsNyArMjQyLDcgQEAgSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IGYgICAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChi aW5hcnkgPSBmYWxzZSk7CkBAIC0yNTEsMTMgKzI1MSwxMyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVh bgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JF QVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVh biB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJw YXJhbGxlbCIKIC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZApAQCAt MjY2LDcgKzI2NiwxNSBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKworQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK1xkUnMr CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwor ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwpAQCAtMjc1LDcgKzI4Myw3 IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBO T05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtMjkzLDcg KzMwMSw3IEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1 YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAg ICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBmICAg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAt IHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGVuIG9uY2UKQEAgLTMxMSw3ICszMTksNyBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEs IHRlc3RwdWIyIFdJVEggKHJlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OwpAQCAtMzUwLDcgKzM1OCw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91 IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLWZhaWwg LSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCkBAIC0zNjIsNyArMzcw LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9 IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3Rf bmFtZSA9IE5PTkUpOwpAQCAtMzc1LDcgKzM4Myw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBs aWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CkBAIC0zOTEsNyArMzk5LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9u LCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0g dHJ1ZSk7CkBAIC0zOTksNyArNDA3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IGVhZWFkZThjY2UuLjc5OTFhYmZlOGYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIAogRFJP UCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11 c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3Bh cmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNv bm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0x NzUsNiArMTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7 CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJl YW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmlu ZGV4IGNiYWEzMjdlNDQuLjAxZjIwNWQyYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbApAQCAtOCw2ICs4LDEyOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhl IHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlt eSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsK KworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUg U1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0 ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxl bCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIEludGVy bGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGlt aXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICRvZmZzZXQgPSAwOwor CisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCQlvbl9lcnJvcl9zdG9w ID0+IDApOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkaW4gLj0gcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9uYjsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhp KTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7 CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJXHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJy b3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcp OworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdjaGVjayBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgVGVzdCB0aGUgc3Ry ZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9uKSIp OworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ Q09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3 fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7 CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRo ZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2Ny aWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0 aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQorCSMgcHJvcGVybHkgYWZ0ZXIg YSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0 eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIp OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMg Q3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTI2LDE3ICsxNDgsMjcgQEAgJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMSwgJ2Zvbycp LCAoMiwgJ2JhcicpIik7CiAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7CisKICMgU2V0dXAgc3RydWN0dXJl IG9uIHN1YnNjcmliZXIKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHRleHQsIGMgdGlt ZXN0YW1wdHogREVGQVVMVCBub3coKSwgZCBiaWdpbnQgREVGQVVMVCA5OTkpIgogKTsKIAorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90 YWJfMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiXzIoYSkiKTsKKwogIyBT ZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiBteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9w dWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiLCB0ZXN0X3RhYl8yIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3Vi IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1l JyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw2 ICsxODEsNDMgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCispOworCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUK KyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNo YW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRv IGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhl IHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCisj IFRlc3QgdGhhdCB0aGUgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQgYW1vbmcgdGhlIGxlYWRlciBhbmQg cGFyYWxsZWwgYXBwbHkKKyMgd29ya2Vycy4KKworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICJkZWFkbG9ja190aW1lb3V0ID0gMTBtcyIpOworJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKICMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNh Y3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KIG15ICRpbiAgPSAnJzsKIG15 ICRvdXQgPSAnJzsKQEAgLTU4LDczICsyMjcsOTAgQEAgbXkgJHRpbWVyID0gSVBDOjpSdW46OnRp bWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwogbXkgJGgg PSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91 dCwgJHRpbWVyLAogCW9uX2Vycm9yX3N0b3AgPT4gMCk7CiAKKyMgQ29uZmlybSBpZiBhIGRlYWRs b2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSBwYXJhbGxlbCBhcHBs eQorIyB3b3JrZXIgY2FuIGJlIGRldGVjdGVkLgorCitteSAkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKwogJGluIC49IHF7CiBCRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CiB9 OwogJGgtPnB1bXBfbmI7CiAKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7CisjIEVuc3VyZSB0aGF0IHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZXhlY3V0ZXMgdGhlIGluc2VydCBjb21tYW5kIGJlZm9yZSB0 aGUKKyMgbGVhZGVyIHdvcmtlci4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9ERUJVRzogKCBbQS1aMC05XSs6KT8gYXBwbGllZCBbMC05XSsgY2hhbmdlcyBpbiB0aGUgc3Ry ZWFtaW5nIGNodW5rLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgdmFsdWVzKDEpIik7CiAKICRpbiAu PSBxewogQ09NTUlUOwogXHEKIH07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBu ZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorJGgtPmZpbmlzaDsKIAorJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFkbG9j ayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgSW4gb3JkZXIgZm9yIHRoZSB0d28gdHJhbnNh Y3Rpb25zIHRvIGJlIGNvbXBsZXRlZCBub3JtYWxseSB3aXRob3V0IGNhdXNpbmcKKyMgY29uZmxp Y3RzIGR1ZSB0byB0aGUgdW5pcXVlIGluZGV4LCB3ZSB0ZW1wb3JhcmlseSBkcm9wIGl0LgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIi KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIi KTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAotIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5 IG1vZGUKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi XzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhf dGFiIG9uIHRlc3RfdGFiXzIoYSkiKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Cisj IENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHR3byBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IGNhbiBiZSBkZXRlY3RlZC4KIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2 N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz Jyk7CiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCisj IEVuc3VyZSB0aGF0IHRoZSBmaXJzdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhlY3V0ZXMgdGhl IGluc2VydCBjb21tYW5kCisjIGJlZm9yZSB0aGUgc2Vjb25kIG9uZS4KKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gYXBwbGllZCBbMC05 XSsgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rLywKKwkkb2Zmc2V0KTsKIAotIyBDaGFu Z2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJl ciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5z IHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQ REFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICog aW50ZXJ2YWwgJzFzJyIKLSk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiSU5TRVJUIElO VE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkp Iik7CiAKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2Nr IGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBJbiBvcmRlciBmb3IgdGhlIHR3byB0cmFuc2Fj dGlvbnMgdG8gYmUgY29tcGxldGVkIG5vcm1hbGx5IHdpdGhvdXQgY2F1c2luZworIyBjb25mbGlj dHMgZHVlIHRvIHRoZSB1bmlxdWUgaW5kZXgsIHdlIHRlbXBvcmFyaWx5IGRyb3AgaXQuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIp OworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQg aW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5 ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgotKTsKLWlzKCRyZXN1bHQs IHFxKDY2Njd8NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs bHkgY2hhbmdlZCBkYXRhJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7Citpcygk cmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBk cm9wcGluZyBpbmRleCcpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVh bV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0 LnBsCmluZGV4IGRiMjlmMDg5YTAuLjdlMzc0ZjY4N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw3MyBAQCB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBU ZXN0OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMg ZmluaXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVj a19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7 CisJfQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24g YW5kIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNiwgOCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5LCAxMSkgcyhpKTsKKwlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMiwgMTQpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUsIDE3KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDEyfDEyfDEyKSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMDQs MTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlv bl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9u KSIKICk7CkBAIC00OSw0MSArMTIwLDM0IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVy Jyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUp IHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMx OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg2LCA4KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOSwgMTEpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMiwgMTQpIHMoaSk7 Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxNSwgMTcpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwot Q09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTJ8MTJ8MTIpLAotCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBh cmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCisjIFdlIG5lZWQgdG8gY2hl Y2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhh cworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3Np dHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwor IyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZl Y3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0p OworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+ c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9k ZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAppbmRleCA4 NjZmMTUxMmU0Li5mYjAzYjcwOGI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3Ry ZWFtX2RkbC5wbApAQCAtMiw2ICsyLDkgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKICMgVGVzdCBzdHJlYW1pbmcgb2Yg bGFyZ2UgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIHN1YnRyYW5zYWN0aW9ucworIworIyBUaGlz IGZpbGUgaXMgbWFpbmx5IHRvIHRlc3QgdGhlIERETC9ETUwgaW50ZXJhY3Rpb24gb2YgdGhlIHB1 Ymxpc2hlciBzaWRlLAorIyBzbyB3ZSBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBwbHkgdmVyc2lv biBmb3IgdGhlIHRlc3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCAxNDU4YzNhMGZjLi4y NDQyODEzMWY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTI0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBh cHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVs X2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0 eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9j ZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisK KyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIHN0 cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDUsIG1kNSg1Ojp0ZXh0KSk7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNiwgbWQ1KDY6OnRl eHQpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDcs IG1kNSg3Ojp0ZXh0KSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg4LCBtZDUoODo6dGV4dCkpOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDksIG1kNSg5Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4dCkpOworCUNPTU1JVDsKKwl9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNnwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkj IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDExLCBtZDUoMTE6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgxMiwgbWQ1KDEyOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMyOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTMsIG1kNSgxMzo6dGV4dCkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE0LCBtZDUoMTQ6OnRleHQpKTsK KwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTUsIG1kNSgxNTo6 dGV4dCkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2co JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkk cmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoN3wwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgxNiwgbWQ1KDE2Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTcsIG1kNSgxNzo6dGV4dCkpOworCVNB VkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE4LCBtZDUoMTg6OnRl eHQpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg3fDApLCAnY2hlY2sgcm9s bGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRl c3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOwpAQCAtMzYsNiArMTU0LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBX SVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE3MCwzMyBAQCBteSAkcmVzdWx0 ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCkpOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg1LCBtZDUoNTo6dGV4dCkp OwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg2LCBtZDUoNjo6 dGV4dCkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDcs IG1kNSg3Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOCwgbWQ1KDg6OnRleHQpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoOSwgbWQ1KDk6OnRleHQpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4dCkpOwotQ09NTUlUOwotfSk7Ci0KLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQot ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2fDApLAotCSdj aGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor bXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSMgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIgc3VidHJh bnNhY3Rpb24KLSMgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDExLCBtZDUo MTE6OnRleHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAo MTIsIG1kNSgxMjo6dGV4dCkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICgxMywgbWQ1KDEzOjp0ZXh0KSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDE0LCBtZDUoMTQ6OnRleHQpKTsKLVJFTEVBU0UgczI7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE1LCBtZDUoMTU6OnRleHQpKTsKLVJPTExCQUNLIFRPIHMx OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSg3fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2l0aCBzdWJz Y3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNiwg bWQ1KDE2Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDE3LCBtZDUoMTc6OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMTgsIG1kNSgxODo6dGV4dCkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDd8MCksICdjaGVjayBy b2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMg V2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0 aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQg aGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxe1NFTEVDVCAxfSk7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5v ZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggYzY3MTljMWFmOC4uMzUzZTgy NmE5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4 YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC0zLDYgKzMsOSBAQAogCiAjIFRlc3Qgc3RyZWFtaW5n IG9mIHRyYW5zYWN0aW9uIHdpdGggc3VidHJhbnNhY3Rpb25zLCBERExzLCBETUxzLCBhbmQKICMg cm9sbGJhY2tzCisjCisjIFRoaXMgZmlsZSBpcyBtYWlubHkgdG8gdGVzdCB0aGUgRERML0RNTCBp bnRlcmFjdGlvbiBvZiB0aGUgcHVibGlzaGVyIHNpZGUsCisjIHNvIHdlIGRpZG4ndCBhZGQgYSBw YXJhbGxlbCBhcHBseSB2ZXJzaW9uIGZvciB0aGUgdGVzdHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0 cmljdDsKIHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3 YTc5N2YzN2JhLi40MTAyYWNjZTkyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtNSw2ICs1LDggQEAKICMKICMgSW5jbHVkZXMgdGVz dHMgZm9yIG9wdGlvbnMgMlBDIChub3Qtc3RyZWFtaW5nKSBhbmQgYWxzbyBmb3IgMlBDIChzdHJl YW1pbmcpLgogIworIyBUd28tcGhhc2UgYW5kIHBhcmFsbGVsIGFwcGx5IHdpbGwgYmUgdGVzdGVk IGluIDAyM190d29waGFzZV9zdHJlYW0sIHNvIHdlCisjIGRpZG4ndCBhZGQgYSBwYXJhbGxlbCBh cHBseSB2ZXJzaW9uIGZvciB0aGUgdGVzdHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0cmljdDsKIHVz ZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggYTE5MTEyOWI5ZC4u ZDU2ZjJiN2MzZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsCkBAIC04LDYgKzgsMjg3IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZyB0 aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworewor CW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBf OworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgQ29tbW9u IHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFs bGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRv ZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJ IyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIg dGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFS RScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9u IHN1YnNjcmliZXIKKwlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg0fDR8NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBo YXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBi YWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4g RGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4K KwkjCisJIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRl bGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1 KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBs ZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHBy b3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IHNvbWUgcm93cy4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVk IHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K KwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9w dWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsK Kwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNvbW1p dCBwb3N0IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIGluc2VydHMg YXJlIHZpc2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNHw0fDQpLAorCQknUm93cyBpbnNlcnRlZCBi eSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sg UFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFy ZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5n IDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0 aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjCisJIyBF eHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUg c3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2Vw dCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24g aXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVj b3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6 IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0 aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQ QVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRo ZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQkn Y2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBi dXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0 byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25l IHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQ QVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUg c3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNl cHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJl Y29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3Rl OiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUg dGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJF UEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNXw1fDUpLAorCQknUm93cyBp bnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsK KworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKQEAgLTQ4LDYgKzMyOSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90 YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkn cG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCkBAIC02NCwyMzYgKzM0 OSwzOCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQogJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVy eV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2VfcXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gZW5hYmxlIHR3b3BoYXNlIjsKIAotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBDaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQ QyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEg MlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBj b21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNHw0fDQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7Ci0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJFRC4K LSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4g RG8gcm9sbGJhY2sgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmlu ZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBi ZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBv biBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgyfDJ8MiksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywg bGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkg b24gY3Jhc2ggcmVzdGFydC4KLSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJv d3MuCi0jIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkLgotIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRp bmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVw bGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMgTm90ZTogYm90 aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOwotCi0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLSRu b2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAotIyBjb21taXQgcG9zdCB0aGUgcmVzdGFy dAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUKLSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoNHw0fDQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsK LQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhl IFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVs ZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgot IyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VS VCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgUk9M TEJBQ0sgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2 aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgb3JpZ2luYWwgMiArIGlu c2VydGVkIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBk ZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29t ZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlC RUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAn dHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRp ZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9u KQotIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBt YWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFi b3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNL IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2Yg dGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzfDN8MyksICdjaGVj ayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7Ci0KLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3Jl IENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3 aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFm dGVyIHRoZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgotIwotIyBF eHBlY3QgMlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgotIyAo dGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2ls bCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0jIEluc2Vy dCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5z YWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2Nr cyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworJG5vZGVfcHVibGlzaGVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9O IjsKIAotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90 YWInOyIpOworIyBXZSBuZWVkIHRvIGNoZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rpb24uIFNv LCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQg aGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxe1NFTEVDVCAxfSk7CiAKLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1fDV8NSksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkg MlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAn dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA1MGQ4NmNiMDFiLi4yM2JhZmVjNWY3IDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Myw2ICsxNDczLDcgQEAgTG9naWNhbFJlcFJlbElk CiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJv bGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2Fs UmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xODc2LDYg KzE4NzcsOSBAQCBQYWdlWExvZ1JlY1B0cgogUGFnZXRhYmxlRW50cnkKIFBhaXJzCiBQYXJhbGxl bEFwcGVuZFN0YXRlCitQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0 ZQogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbkRlc2MKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3Jr ZXIKQEAgLTE4OTUsNiArMTg5OSw3IEBAIFBhcmFsbGVsU2xvdFJlc3VsdEhhbmRsZXIKIFBhcmFs bGVsU3RhdGUKIFBhcmFsbGVsVGFibGVTY2FuRGVzYwogUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0 YQorUGFyYWxsZWxUcmFuc1N0YXRlCiBQYXJhbGxlbFZhY3V1bVN0YXRlCiBQYXJhbGxlbFdvcmtl ckNvbnRleHQKIFBhcmFsbGVsV29ya2VySW5mbwpAQCAtMTkyNCw2ICsxOTI5LDcgQEAgUGFyc2Vy U3RhdGUKIFBhcnRDbGF1c2VJbmZvCiBQYXJ0Q2xhdXNlTWF0Y2hTdGF0dXMKIFBhcnRDbGF1c2VU YXJnZXQKK1BhcnRpYWxGaWxlU2V0U3RhdGUKIFBhcnRpdGlvbkJvdW5kSW5mbwogUGFydGl0aW9u Qm91bmRJbmZvRGF0YQogUGFydGl0aW9uQm91bmRTcGVjCkBAIC0yNzc0LDYgKzI3ODAsNyBAQCBU b2NFbnRyeQogVG9rZW5BdXhEYXRhCiBUb2tlbml6ZWRBdXRoTGluZQogVHJhY2tJdGVtCitUcmFu c0FwcGx5QWN0aW9uCiBUcmFuc0ludmFsaWRhdGlvbkluZm8KIFRyYW5zU3RhdGUKIFRyYW5zYWN0 aW9uSWQKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v69-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v69-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v69-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12660; creation-date="Wed, 28 Dec 2022 04:33:18 GMT"; modification-date="Wed, 28 Dec 2022 04:38:56 GMT" Content-Transfer-Encoding: base64 RnJvbSAyN2NjYjM2OTIyMWQwNjg2Mzk3OGIzMmU3OTZjNTBiNmMxMzE2YWE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjkgMi81XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbCAgICAgICAgIHwgMTQwICsrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZjQ3NmNj NGY0NS4uMzhmODY2Y2RiNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2NTEsNiArMTE2NTEsMzggQEAgTE9H OiAgQ2xlYW5VcExvY2s6IGRlbGV0aW5nOiBsb2NrKDB4YjdhY2Q4NDQpIGlkKDI0Njg4LDI0Njk2 LDAsMCwwLDEpCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RyZWFtLXNlcmlhbGl6ZS10aHJlc2hvbGQiIHhyZWZs YWJlbD0ic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBzZXJpYWxpemUgbWVzc2FnZXMgdG8gZmlsZXMgYWZ0ZXIKKyAgICAgICAgc2VuZGluZyBzcGVj aWZpZWQgYW1vdW50IG9mIHN0cmVhbWluZyBjaHVua3MgdG8gdGhlIHBhcmFsbGVsIGFwcGx5Cisg ICAgICAgIHdvcmtlci4gU2V0dGluZyB0aGlzIHRvIHplcm8gc2VyaWFsaXplIGFsbCBtZXNzYWdl cy4gQSB2YWx1ZSBvZgorICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0 KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFRoaXMgaXMKKyAgICAgICAgaW50ZW5kZWQgdG8gdGVz dCBzZXJpYWxpemF0aW9uIHRvIGZpbGVzIHdpdGgKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBXaGVuIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIDxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4KKyAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0ZXJhbD5w YXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgICAgICAgIHNlbmRz IG1lc3NhZ2VzIHRvIHBhcmFsbGVsIHdvcmtlcnMgd2l0aCBhIHRpbWVvdXQuIEJ5IGRlZmF1bHQs IHRoZQorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1h aW5pbmcgbWVzc2FnZXMgdG8gZmlsZXMgaWYKKyAgICAgICAgdGhlIHRpbWVvdXQgaXMgZXhjZWVk ZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIgdGhhbgorICAgICAg ICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sIHNlcmlhbGl6ZSB0byBmaWxlcyBldmVuIHdpdGhvdXQg dGltZW91dC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBw YXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQgbGluZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3QxPgogICA8c2VjdDEgaWQ9InJ1bnRpbWUt Y29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMDI5MDgxM2FiOS4uMWZlM2NiODFmMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTI1Miw2ICsyNTIsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50YWluIHN1 YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QgKnN1YnhhY3RsaXN0ID0gTklM OwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJCXN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xk ID0gLTE7CisKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CiBzdGF0aWMgUGFydGlh bEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKQEAgLTExNDMsNiArMTE0 NiwxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KTsKIAlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAKKwkvKiBGb3JjZSB0byBz ZXJpYWxpemUgbWVzc2FnZXMgaWYgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgaXMgcmVhY2hl ZC4gKi8KKwlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgIT0gLTEgJiYKKwkJKHN0cmVh bV9zZXJpYWxpemVfdGhyZXNob2xkID09IDAgfHwKKwkJIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkIDwgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MpKQorCXsKKwkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAjZGVmaW5lIFNITV9TRU5EX1JFVFJZ X0lOVEVSVkFMX01TIDEwMDAKICNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAwIC0g U0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDQ2ZmIzZDA1YzYuLjE0MjlmNDAxYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI2LDYgKzMyNiwxMiBAQCBzdGF0aWMg VHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAgKi8KIHN0 YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKIAorLyoKKyAqIFRoZSBu dW1iZXIgb2Ygc3RyZWFtaW5nIGNodW5rcyBzZW50IGJ5IGxlYWRlciBhcHBseSB3b3JrZXIgZHVy aW5nIG9uZQorICogc3RyZWFtZWQgdHJhbnNhY3Rpb24uIFRoaXMgaXMgb25seSB1c2VkIHdoZW4g c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPiAwLgorICovCit1aW50MzIJCXBhcmFsbGVsX3N0 cmVhbV9uY2h1bmtzID0gMDsKKwogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBt b2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1 YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVz IHRoZSBzdWJza2lwbHNuLgpAQCAtMTUxOCw2ICsxNTI0LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPiAwKQorCQkJCXBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKys7CisKIAkJCS8qCiAJCQkgKiBP bmNlIHdlIHN0YXJ0IHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLCB0aGUgcGFyYWxsZWwgYXBwbHkK IAkJCSAqIHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgc3Ry ZWFtIGxvY2sKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNjJiN2Y1N2U2My4u MzVlN2JmYmJhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTYxLDYgKzYx LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3BnX3NobWVtLmgiCkBAIC0zMDE0LDYgKzMwMTUsMTkgQEAgc3RydWN0IGNvbmZp Z19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJ eworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5n IHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRp c2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCmluZGV4IGZhNjAxNjQ2YTEuLjc0YjlkNDA3M2IgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjAsNiArMjIwLDEwIEBAIGV4dGVybiBQ R0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKIAorZXh0ZXJuIFBHRExM SU1QT1JUIGludCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNodW5rczsKKwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICps b2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJ Ym9vbCBvbmx5X3J1bm5pbmcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5k ZXggMDFmMjA1ZDJiZi4uMTdlMTljNmZlMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC0xMzMsMTMgKzEzMywyMCBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKICMgQ3JlYXRl IHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKLSRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JJ2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Cisk bm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK21h eF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9 IDY0a0IKKykpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIAogIyBDcmVhdGUgc3Vic2NyaWJl ciBub2RlCiBteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcSgKK21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorKSk7CiAk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250 ZW50IG9uIHB1Ymxpc2hlcgpAQCAtMTcwLDcgKzE3Nyw3IEBAIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29u bnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEgg KHN0cmVhbWluZyA9IG9uKSIKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uLCB0d29fcGhhc2UgPSBvbikiCiApOwog CiAjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKQEAgLTMxMiw2ICszMTks MTMzIEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKIGlzKCRyZXN1bHQsIHFxKDEw MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi XzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg VGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisKKyMgU2V0IHN0cmVhbV9zZXJpYWxp emVfdGhyZXNob2xkIHRvIHplcm8sIHNvIHRoZSBtZXNzYWdlcyB3aWxsIGJlIHNlcmlhbGl6ZWQg dG8gZGlzay4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdBTFRF UiBTWVNURU0gU0VUIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID0gMDsnKTsKKyRub2RlX3N1 YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUg cmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXtTRUxFQ1QgMX0pOworCisjIFNlcmlhbGl6ZSB0aGUgQ09NTUlUIHRyYW5zYWN0 aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIpOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdl cyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9E RUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVh bWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXpp bmcgbWVzc2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgUFJFUEFSRSB0cmFuc2FjdGlvbi4KKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3hhY3QnOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXpl ZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05 XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAor CSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKK2lzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisj IENoZWNrIHRoYXQgMlBDIGdldHMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNPTU1JVCBQUkVQQVJFRCAneGFjdCc7Iik7 CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisK KyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFs aXplIHRoZSBBQk9SVCB0b3AtdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2Fn ZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJl YW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQg b24gc3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3Vs dCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBt ZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCBzdWItdHJhbnNhY3Rpb24uCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgc3A7CisJSU5TRVJU IElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAw MCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzcDsKKwlDT01NSVQ7CisJfSk7CisKKyMgRW5zdXJlIHRo YXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFu Z2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCBvbmx5IHN1Yi10 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIuCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi4yMy4wLndpbmRv d3MuMQoK --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v69-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v69-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v69-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4643; creation-date="Wed, 28 Dec 2022 04:33:20 GMT"; modification-date="Wed, 28 Dec 2022 04:38:56 GMT" Content-Transfer-Encoding: base64 RnJvbSAxMDRmODg4MTQxOTQ4MjM2ZTc1NDZmOTAxZjZhNGZjYjE2ZTFjZTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 OSAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNzIgKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxICsKIDMgZmlsZXMgY2hh bmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAx ZmUzY2I4MWYyLi45ODQ4ODMyMjg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNTQxLDYgKzU0MSwyNSBAQCBw YV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoK KyAqIFN0b3AgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgZnJlZSB0aGUgY29y cmVzcG9uZGluZyBpbmZvLgorICovCitzdGF0aWMgdm9pZAorcGFfc3RvcF93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWludAkJCXNsb3Rfbm87CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ Z2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwlsb2dpY2FscmVwX3Bh X3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7Cit9CisKIC8qCiAgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCiAgKgpAQCAtNTc2LDIzICs1OTUsNTQgQEAgcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKQogCQlsaXN0X2xlbmd0aChQYXJhbGxlbEFwcGx5V29ya2VyUG9v bCkgPgogCQkobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIp KQogCXsKLQkJaW50CQkJc2xvdF9ubzsKLQkJdWludDE2CQlnZW5lcmF0aW9uOwotCi0JCVNwaW5M b2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwotCQlnZW5lcmF0aW9uID0gd2luZm8t PnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKLQkJc2xvdF9ubyA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87Ci0JCVNwaW5Mb2NrUmVsZWFzZSgm d2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlwYV9zdG9wX3dvcmtlcih3aW5mbyk7CisJCXJldHVy bjsKKwl9CiAKLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9u KTsKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0g ZmFsc2U7Cit9CiAKLQkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CisvKgorICogVHJ5IHRv IHN0b3AgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB0aGF0IGFyZSBub3QgaW4gdXNlIHRvIGtlZXAg dGhlIG51bWJlciBvZgorICogd29ya2VycyBsb3dlciB0aGFuIGhhbGYgb2YgdGhlIG1heF9wYXJh bGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24uCisgKi8KK3ZvaWQKK3BhX3N0b3Bf aWRsZV93b3JrZXJzKHZvaWQpCit7CisJTGlzdAkgICAqYWN0aXZlX3dvcmtlcnM7CisJTGlzdENl bGwgICAqbGM7CisJaW50CQkJbWF4X2FwcGx5d29ya2VycyA9IG1heF9wYXJhbGxlbF9hcHBseV93 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyOwogCisJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVs QXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJzKQogCQlyZXR1cm47CisKKwlhY3Rp dmVfd29ya2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3Jl YWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJ CSAqIFRyeSB0byBmcmVlIGFuZCBzdG9wIHRoZSB3b3JrZXIgdGhhdCBpcyBpbiB1c2UuIE5vcm1h bGx5LCB3ZSBmcmVlCisJCSAqIHRoZSB3b3JrZXIgYWZ0ZXIgZW5zdXJpbmcgdGhhdCB0aGUgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5IHRoZQorCQkgKiBwYXJhbGxlbCB3b3JrZXIgYnV0IGZv ciByb2xsYmFja3MsIHdlIGRvbid0IHdhaXQgZm9yIHRoZQorCQkgKiB0cmFuc2FjdGlvbiB0byBm aW5pc2ggc28gY2FuJ3QgZnJlZSB0aGUgd29ya2VyIGluZm9ybWF0aW9uCisJCSAqIGltbWVkaWF0 ZWx5LgorCQkgKi8KKwkJaWYgKHdpbmZvLT5pbl91c2UpCisJCQlwYV9mcmVlX3dvcmtlcih3aW5m byk7CisKKwkJLyogRGlyZWN0bHkgc3RvcCB0aGUgd29ya2VyIGlmIG5vdCBpbiB1c2UuICovCisJ CWVsc2UKKwkJCXBhX3N0b3Bfd29ya2VyKHdpbmZvKTsKKworCQkvKiBSZWNoZWNrIHRoZSBudW1i ZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQ b29sKSA8PSBtYXhfYXBwbHl3b3JrZXJzKQorCQkJYnJlYWs7CiAJfQogCi0Jd2luZm8tPmluX3Vz ZSA9IGZhbHNlOwotCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOworCWxpc3RfZnJl ZShhY3RpdmVfd29ya2Vycyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwppbmRleCAxNDI5ZjQwMWMzLi5mZjk3YjFlOWRlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MDUsNiArMzYwNSwxMyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewogCQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisK KwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgaW4gY2Fz ZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g aXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLworCQkJcGFfc3RvcF9p ZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDc0YjlkNDA3M2IuLjYwZTIxY2Qx ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yNzMs NiArMjczLDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNo YXIgKm9yaWdpbm5hbWUpOwogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRl cmFjdGlvbnMgKi8KIGV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklk IHhpZCk7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQp OwogZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIGJv b2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0 ZXMsCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v69-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v69-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v69-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21643; creation-date="Wed, 28 Dec 2022 04:33:21 GMT"; modification-date="Wed, 28 Dec 2022 04:38:57 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNWIwMDVjOGY5OGZhNWRhMDc5ZDhhMzYxNDZjNDYxNzA0ZDA0OTY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjkgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDMwICsr Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMTgyICsr KysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAg ICB8ICA1NyArKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDgwNTQuLmQ5MTgzMjdlYzIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTQ4LDYgKzc5NDgsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1 ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFwcGxpZWQgd2hpbGUgdGhlcmUgd2Vy ZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgbmVjZXNzaXRhdGlu ZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbAppbmRleCA1NGY0OGJlODdmLi5jYjRmNWM2ZjE5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKQEAgLTE1MDQsMTIgKzE1MDQsMTEgQEAgQ09OVEVYVDogIHByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAi SU5TRVIKIAogICA8cGFyYT4KICAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKLSAgIGZhaWxlZCB0cmFuc2Fj dGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2Fy eSB0bwotICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKLSAgIGNhdXNlIHRoZSBzYW1lIGNvbmZs aWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdp bGwKLSAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmlu aXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJz Y3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KLSAgIFNLSVA8L2NvbW1h bmQ+PC9saW5rPi4KKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIElu IHRoYXQgY2FzZSwgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbgorICAgd2lsbCBiZSByZXRyaWVkIGlu IDxsaXRlcmFsPnN0cmVhbWluZyA9IG9uPC9saXRlcmFsPiBtb2RlLiBJZiBpdCBmYWlscworICAg YWdhaW4sIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3 cml0dGVuIHRvIHRoZQorICAgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNO LCBwbGVhc2UgcmVmZXIgdG8KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv biI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTS0lQPC9jb21tYW5kPjwvbGluaz4u CiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IGYxNzNhMDkwMzcuLjY0ZDU4MDJhZGQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNTEsNiArMjUxLDExIEBAIENSRUFURSBT VUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9u YW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3Rl IHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCiAgICAgICAgICAgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCiAgICAgICAg ICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFdo ZW4gYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgaWYgYSBkZWFkbG9jayBpcyBkZXRl Y3RlZCwgdGhlCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRo IGFuIGVycm9yLiBUaGUKKyAgICAgICAgICA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9k ZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQgdGhlIHRy YW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAg ICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5k ZXggYTUwNmZjM2VjOC4uNzIzYjE0MWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAy ZDgxMDRiMDkwLi5jMmM3ZDhhOGI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9N IHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1l LCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJl YW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vi c2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1Ymxp Y2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAK IENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggOTM4MmU2MTllOS4uMmJhMjY1ODYyOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM1LDYgKzYzNSw3IEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu ZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAx XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAo b3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDk4NDg4MzIyODcuLmU2Zjg2ZDRmMGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0zMTAsNiArMzEwLDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE2NzMsMyArMTY4NCwyMiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCXBhX2ZyZWVfd29ya2VyKHdp bmZvKTsKIH0KKworLyogQ2hlY2sgaWYgYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworYm9vbAorcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+aW5fdXNl KQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZmY5N2IxZTlkZS4uYTNjMzkzNjg4NCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTMsNyArMzkz LDcgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lk IHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVl c3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQp Oworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRp YyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEg KmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwo QXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQzMCw2ICs0MzAsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogc3RhdGljIFRy YW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7CiAK K3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAg KiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyLgogICov CkBAIC0xMDQ1LDYgKzEwNDcsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xMTUxLDYgKzExNTYsOSBA QCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJz Y3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTIwNyw2ICsxMjE1LDkgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRp b24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNl dF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNp bmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTI2OCw2ICsxMjc5LDkgQEAg YXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVz aF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0 RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xz bik7CiAKQEAgLTEzOTEsNiArMTQwNSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTkzNyw2ICsxOTU0LDEwIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJaWYgKHRvcGxldmVsX3hhY3QpCisJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9 CiAKQEAgLTIyMTMsNiArMjIzNCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEu ZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTQzMTQsMjAg KzQzMzgsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Ms IGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1p dCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8g YW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1p dEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVy cm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JF X1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgp OwogCkBAIC00MzUyLDIwICs0Mzg0LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQot CQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogfQpAQCAtNDY0MSwzOSArNDY4MCwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5Lgor ICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJz Y3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUK LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lO VEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVy IHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2Ny aXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3Jp cHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJ CQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBv ZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ5NjUsMyArNDk4NSw3MSBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CiAJfQogfQorCisv KgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElm IHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9y LiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGll ZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJ c3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBzdGF0ZSBj aGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9 PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxsZWwg YXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0 dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQgcmV0cnkgaWYgbm8gYWN0aXZlIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkgJiYgIXBhX2hhdmVfYWN0aXZlX3dvcmtl cigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyog TG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVf b3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBT ZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0Iiwg TXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2Nr KTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9m KHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNl dChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5 ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0 RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0g MV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRl IHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwg dHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9j bG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmNDU0YjMxYzU4Li40OWY4MzVlZWRjIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKQEAgLTQ1NjAsOCArNDU2MCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2 ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2Ny aXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFz Ci0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBi ZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVk ZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3Rv cmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4K IAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQg PSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCA1YjllNWEzOTlhLi5kM2IxNThmMGMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYx MDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJ Ym9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBj YXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJ Ym9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgcHJldmlvdXMgY2hhbmdl IGZhaWxlZAorCQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUKKwkJ CQkJCQkJCQkJICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJCQkJCQkJCQkgKiB3b3Jr ZXJzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIg Ki8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzEsNiArMTM2 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkv KiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0 b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMg Ki8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxl ZCB0byBiZQorCQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy ICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlv biBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBz ZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKaW5kZXggNjBlMjFjZDFlNy4uMDRhY2FjMWYyZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBleHRlcm4gdm9pZCBw YV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX3hhY3Rf ZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCSAgIFhMb2dSZWNQ dHIgcmVtb3RlX2xzbik7CiAKK2V4dGVybiBib29sIHBhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lk KTsKKwogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFw cGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29sCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCAxN2UxOWM2ZmUwLi4zNjU5NTNlMzQy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTc0LDggKzc0LDE2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CiAKIAkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCW15 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSk7CiAJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQgKGJpbmFyeSA9IG9uKSIpOworCSRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJICApCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCiAJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CkBAIC00NDYsNiArNDU0LDU1IEBAICRyZXN1bHQgPQog ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiXzIiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaycpOwogCisj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgVGVzdCByZS1hcHBseSBhIGZhaWxlZCBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gdXNpbmcgdGhlIGxlYWRlciBhcHBseQorIyB3b3JrZXIgYW5kIGFwcGx5IHN1YnNlcXVlbnQg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseQorIyB3b3JrZXIg YWZ0ZXIgdGhpcyByZXRyeSBzdWNjZWVkcy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiXzIoYSkiKTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitCRUdJTjsK K0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgcyhpKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIgdmFsdWVzKDEpOworQ09NTUlUO30p OworCisjIENoZWNrIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgbm90IHN0YXJ0ZWQg YmVjYXVzZSB0aGUgYWJvdmUKKyMgdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGJlIGFwcGxpZWQuCisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/ IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRyaWVzLywKKwkkb2Zm c2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBp dCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJ TkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g dG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIp OworaXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIEFmdGVyIHN1Y2Nlc3NmdWxseSByZXRyeWluZyB0 byBhcHBseSBhIGZhaWxlZCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGFwcGx5CisjIHRoZSBmb2xs b3dpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8g dGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhp KSIpOworCitjaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgMSwg J0NPTU1JVCcpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0 LCBxcSgxMDAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciB1c2luZyB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyJyk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v69-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v69-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v69-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9720; creation-date="Wed, 28 Dec 2022 04:33:22 GMT"; modification-date="Wed, 28 Dec 2022 04:38:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA1M2NmN2U2NGEwYTE3YWY4N2FlN2ZmZWM0YWYxOTZmNDQxYzI2ZjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djY5IDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArLQog ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAzMiArKysr KysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgfCAgNiArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBjYjRmNWM2ZjE5 Li42MjU0Mzg4YjA0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE2 OTEsNyArMTY5MSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24u ICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwg aGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3lu Y2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6 ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmlu ZGV4IGVhZmVlYWRmNDcuLjJhNTE4MWY0OGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwx MyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2Yg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAg ICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBs eSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgog ICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0 aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFp biBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2 ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNn X3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwv dHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQg dGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVs bCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2Fp dF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2Ug cmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAg ICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAg ICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FM IHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4Yjcu LmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2 ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCA3NTlmOTY0ZmJkLi5hZWRhNWNkMTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBJc0xvZ2ljYWxM YXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVm aW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FS R0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19G VU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9 IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0J CQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBAIC0xMTEwLDI2ICsxMTA2 LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNl CiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2Vy X3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJ aWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xz bik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IElu dDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UK LQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1l KTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNO R2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9 PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3Rh bXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1l ID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdl dERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkK KwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1l KTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxs c1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0o d29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJl cGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0 cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwg cnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDcwNTZjOTUzNzEuLjAzMjdiNTdhODUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vi c2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3Jl dHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBw cm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0 eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxv LG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZl ZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5k X2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9p ZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3Rh bXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNl aXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3Rf ZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJy ZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5w aWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBz dS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0 LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUs CkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9p ZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3Rp bWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9n ZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVk X2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9l bmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAg IExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwg cmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0 YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9y X2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB62756CC6FFBDD431F2878ACE9EF29OS3PR01MB6275jpnp_--