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 1pBCa9-0002fc-Fq for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Dec 2022 10:25:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pBCa8-0006XZ-2f for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Dec 2022 10:25:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pBCa7-0006XM-B4 for pgsql-hackers@lists.postgresql.org; Fri, 30 Dec 2022 10:25:43 +0000 Received: from esa12.fujitsucc.c3s2.iphmx.com ([216.71.156.125]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pBCa4-0005To-9e for pgsql-hackers@lists.postgresql.org; Fri, 30 Dec 2022 10:25:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1672395940; x=1703931940; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=6CeIeitQNLM4oysC7PaesljQ4luQY30zoiy0IrF2NMo=; b=wLWXnQYb+BFS/+hJ9YM8nWsjvXGgDEBg7kViGff/hEidSqO2E4+1PO3S kWR77qx4ZaWEsREdWNwtdUxKeYKTf8tR3gf2CICP8FJgbbsUcRl+HmbfT taPh6lU+YGpwXV/4sErqyHcvocOS1160exJW7cRSHwlKYwZLtGUm4YkuA IVraqNtjdXB3ZFol2BZ2iy6NsR07rbQYzyy80ufcMf43A2tPk03m6Tw9S eCycmMjHF5WHygNIeB3RdFCpHDU8gH6RNB05+3zaZz4jDWIl3+gUDMxMd 5MPFNxnNt6ev43QKVLOVjdur/QI/ljcZojcFyOGj+nsO3kLTSDmO/u96s w==; X-IronPort-AV: E=McAfee;i="6500,9779,10575"; a="73732108" X-IronPort-AV: E=Sophos;i="5.96,287,1665414000"; d="scan'208,223";a="73732108" Received: from mail-tycjpn01lp2169.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.169]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Dec 2022 19:25:36 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MbWeWyMrWtqcTeblJCGaA2D+unXgjmOoxe4Aow6770nOvVc340t7KU7nR+7PPJg4ej9l8SelUsG6NJJ/PxJqnps0uP49yXAe3P0Of+BfFMYsSSSrxVLJX9RyrlUw6ZXW9ujJypld0lRSTxx+NkfQsH/PvC6mYX7cQywvxP5XTpPAMXSe3HbTYHTy53u00p17tKxSamRknBIRjjkxcJ9i0KHGLa4wruCqE4F4MBzQdSKSji5HMynJhEd8JNMBVMFSQo3uIcIMh9eZQePM7nHvNfH9M4sjWM6Y4WxAHHjR1B+CHrCz5od6uxtQ1jZ3fVpq3DW5KVoKm7l2QHOnFflYaw== 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=vOM8/cfxdJsu0iX0YFfMvKL2+4mFseERz0IWJOSaq6Q=; b=U0RJztLPoX9hRjD04M2NuOQgIUro0reTc0rfZx+G6pol/1R+wWpkzU3cTfHHTOtU+qXLAzIuLbGIS8jkg2fZkj3fYVhvHDkd77gjIPMpA7rXr0xRr/xjAha7w1pE14MjwwzGhn+2/iFbnFND7znCc3bCukVhLVcgmj2WK2FdqZFswaiD6K3tTom+ymven+wwyDfWe3b2f0f4Ub97ncGucZmIqL2lVF7dSJh0VOZxV7i4RbuxdlDN9DJyk7e7ngyhGiHqn9veywPIV+a/CLmvz6bVecWsZxXtZI/4rh4YFWvXH+iq/CuM2Gbzpxy+59hMlNby5lGP5IwPNV6lyVuLPw== 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 TYWPR01MB10459.jpnprd01.prod.outlook.com (2603:1096:400:2fb::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.16; Fri, 30 Dec 2022 10:25:32 +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; Fri, 30 Dec 2022 10:25:32 +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/xAIABKiIAgAA6H4CABGPrgIAAfUiAgAEdO9CAAHFDAIABGuBQgAIn1oCAAV6qMA== Date: Fri, 30 Dec 2022 10:25:32 +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?NTBfQWN0aW9uSWQ9OWI0Y2QxZjQtNTMzNS00MjE1LWFiNmQtODkxNGE0YzVi?= =?utf-8?B?MmMyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0zMFQxMDoxOTo1N1o7TVNJUF9MYWJl?= =?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_|TYWPR01MB10459:EE_ x-ms-office365-filtering-correlation-id: 58eeddd1-7498-461a-a443-08daea502e59 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KXXwK4I4pbF06QQLhZCSIw+9SwSvj5uEw+IS/9lHX3QWWOmR82PsU4RUkINyqM2oelnMsaQnRLuBf0YHAP5A4VW6v2lwMEc/ZgaoCWPbYUZmKurQWJowRCOsZoO9bzDRWaNOKib3IAzRSC6AuKXGmvFr5Laspf76/nhJTOL3Aru2wKBBg3nGVXPp3Fyu0u2xWZZoLbEGFBo7wDz0ZQEHB5+Xru0eXLnRn33m4pBhzKnud0FXB4yqRSzI2khENo9py60VNJ/macf685G2HBb2FfNlcgSFO3A5KsbcsPjMLnqPoara3ZXtt0hmxPxaor7G9q/UdeCYLJqYPuXLQHT1ildoZdjdvJV7TzVfbz/zJ3qTee3S5fVwmQ/TSyUa7Pqns5CCFrVYZBe1TEsp0JvhBle00i+asVdIgGHVbf65BxtC3uvRWfPxWkBlw3EbepVclBsd4Wtv3OvX9djJZj3Em0defB//4MGnXOPl7FS44BEJKPs+PkmaEIB/XGJjoYiLmv+0aEDPB/7/LauIuyqaaRCgKDwCEdDN8h8yHaUH7IwR3BcPlr+ybJRoMz+cfJNOZQxFTFFvU5ZJr1hfNVIH39zyc3DIbJ55wG6ezCd2nV9782wYxpU656afO2ghWERfeq9VaeR7LLhP0bylFxbN8LQgZ7Q9zgWyzCRMJlWK7tFXZN9UVinSq/l7pwQy0QZLOQ+5uCVtTBxLLvClbTcl/R56b7vi2AtazOJYEs3MX+Y= 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)(366004)(39860400002)(396003)(136003)(346002)(376002)(451199015)(1590799012)(52536014)(1580799009)(64756008)(4744005)(5660300002)(41300700001)(66446008)(8676002)(66946007)(76116006)(66476007)(9686003)(66556008)(4326008)(26005)(8936002)(186003)(6916009)(85182001)(2906002)(54906003)(478600001)(71200400001)(33656002)(316002)(86362001)(53546011)(55016003)(7696005)(38070700005)(6506007)(82960400001)(122000001)(38100700002)(99936003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cnByNExDRzZDcU82dXVTWHdBV0lDbjdoM01YSnpySkRWUHJlYzF3VDJ1K1N0?= =?utf-8?B?L1k5WHhrVWdOUlhrcnBOV2x2K0FUZHppQ0pKQXBlQm9lUTEvZ3dxSDBKQTFq?= =?utf-8?B?MklrYjhHK2drQy9td1NkdlFlV0cwV3FXMW9UTC9lL0NqbzdaTThOc2thWjc0?= =?utf-8?B?Ukp6Q0VKRVM0OHdTWlRlWnVNTzNFNG5NM3ZLdUh3bXFMUmVEQW5tR0hrYWlr?= =?utf-8?B?Y1pscXpmYnQrZmYvZzRIcHVqc0pvRjdWWGduVE5VWm1JcUxSV2ZqenYrR2lK?= =?utf-8?B?ZERUNThXdHp6ZDBxTU9vWDhGbDJwTVBmMjE4d2VwRTg4NE5NbEVXSGpvVC9P?= =?utf-8?B?UWVsR3JrQU1kRHYrdjczN05jV1JEK1B5VEpsSzBEZzhhVmY2aU5XYzdUL0VL?= =?utf-8?B?VFdXaUhuU2xCZjh1YU1tQmxxOEFLcmIvWEJxRzc1Y1VmcWZROXdmSy9aSE5B?= =?utf-8?B?L1hPVERyNnRMUys4anJ2aVU4TnR0dnhJMStidWhXY0cweVdPTTBNZ1VqUlZX?= =?utf-8?B?ZzNzYXM4WjR6YStiK2FObmRtUXcvMVBpa0ZmRndEek5vMmh5eVJ6eTJoNStw?= =?utf-8?B?SHExTHl3MnRYOUQzTUVhZXpoOVVYY2dKVXVuU2FNdGg5Q0JUYWF0bGxnWHZv?= =?utf-8?B?YTA1ZXVrb1JoWjFSR1lEcG0xRUM0T1NlekMzQ0hWWVVUVGdJT3N6SXhyeW05?= =?utf-8?B?REJLdkZuU0ZHSmphUFF2c1ZFWUhSMXplZndNMlNtOFRwVkZOZTlWNjk5Vk9k?= =?utf-8?B?Y1A5aE5LeG1iZ0J4alhJdkZrMWpYZDAyWGYxWmFvT05FU09NU0RIQ3hQSU5h?= =?utf-8?B?ZlhOVU1jWFptWjYvblhSTUluN2JZRE43Q25HNTRXdUk1TTlES1VMemROU3Iv?= =?utf-8?B?TUhBNDJySy95eUdkSytEdDJET01ldjloY29nSHB6ay90L2Y5bFZBMjVDMkxz?= =?utf-8?B?eGpnWEVCMHRRQlNmVURDZGF0WXRLRVZjdGxEUC9PMUFkS0Z0amxDcGI2RWhs?= =?utf-8?B?Nld3WVNPekJhMlVyK2lrSFV3YUVyUU9vUi9ncWVab2JMUjRScllJdkRIUzJo?= =?utf-8?B?MU1uK3VCcFBST3VJU0M5anlEUjljY2JXWkh5M1ZtbHJORSsvbzVQaWhvRXEv?= =?utf-8?B?T1N1UEFZT1VxOHdtYytDMDQvV2xWTlJiZWlhUE5YYVJjbmFZYWp5R2hSVDlz?= =?utf-8?B?THVQclZFSFZhNTZkLzh6dTZNMzdRSXRxbFNhMzAvQlpaVHQxemJ1cDRBeTVY?= =?utf-8?B?d2t6MGlHZ1VtUGJCMjkyV2kxa3JSN0RsRlk0WENoSWR4S2lGZFJxaGtnZEZh?= =?utf-8?B?Q1BLMVN2ZExFTTMzVTI5TjB0QWJ5dnR3enJRblpuZDFNU3duSnZCVUVxZG5J?= =?utf-8?B?VW5PVmxvdlpzcXp2Z1Z6UWVHdWdqbXFoTklycDI1RWp4UDl2cWZxOTFFTzFx?= =?utf-8?B?QkMrQ0FIZ1BxcnJwaUV2S3l2UjlZUkFXSFc3M29BNVUxOGVTMkpVUEhRc1hp?= =?utf-8?B?V1ZiQm1CTEV0cTBRZFlsaDgyd0wwUEtZdzZTTmZ4bmNrS0RDRDl4ZVFaYVV6?= =?utf-8?B?eXJxZlQ2MjQrQmZDazJsNlBCNUgrekR1TjRjVDN5cVpNV2tBeStvOFc4Rkp3?= =?utf-8?B?dlFXZkNWRUwxRGtDSCs3bzUrRnN2blNiRkxJMkNmYlVOOVJIZVo5a1BJbXZ3?= =?utf-8?B?aUx1dWFIa2dKQkwwTkxSdFBSZ2NZWUs3RXJKYU9tNjh1UXlDK0ZTNmFCbGZJ?= =?utf-8?B?V2hNOGxTd3dGNCs3MHROM2R4NnNNdlhuOVhJVWs2Rk1NNzZRVjF4TkhlYUMx?= =?utf-8?B?WUlNNDJOdVM3YlNEYkp1VGlFbXlMdWFxTW42T1dLMGZQNXVjbnllblBZN3Zj?= =?utf-8?B?bU85ekRRZElsQmRRd1B2OTRwYXVBRUNPTUx0Z2VYVzZVNWRkT0c5UzlQWnVs?= =?utf-8?B?UVAzOHRjUVhzN2o5UHBMNDlaaVYwQklYSndMRkRydEJNRzY1U3dEcUt1aUlM?= =?utf-8?B?R21ENzRjd1YwM3dUa0Fyc1NkNGhRMForbDh6MDlhcTdrbTh3ek5sNkJFSnM5?= =?utf-8?B?ZGwzU21CbzlYb2pGNUtyTGZ3b2VVblNNUG51cklWQm9jTGFIVlNWZmdEUmFj?= =?utf-8?Q?ssjeogONLfVZmydhVyzHxexsn?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_" 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: 58eeddd1-7498-461a-a443-08daea502e59 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Dec 2022 10:25:32.1631 (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: 4mDcjWtX7SMrGwa6PmUOzIniHizyiRRlzABLrHez9ieMor08XD4T7OIFmovqL/qwiIUO6FtQeiAeqWE17YiAOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB10459 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1ciwgRGVjIDI5LCAyMDIyIDIxOjI1IFBNIEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2 QGdtYWlsLmNvbT4gd3JvdGU6DQo+IE9uIFdlZCwgRGVjIDI4LCAyMDIyIGF0IDEwOjA5IEFNIHdh bmd3LmZuc3RAZnVqaXRzdS5jb20NCj4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0K PiA+DQo+IA0KPiBJIGhhdmUgbWFkZSBhIG51bWJlciBvZiBjaGFuZ2VzIGluIHRoZSBjb21tZW50 cywgcmVtb3ZlZCBleHRyYSBsaXN0DQo+IGNvcHkgaW4gcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtl cigpLCBhbmQgcmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlDQo+IGluIHdvcmtlci4gUGxlYXNl IHNlZSB0aGUgYXR0YWNoZWQgYW5kIGxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLg0KPiBGZWVs IGZyZWUgdG8gcmViYXNlIGFuZCBzZW5kIHRoZSByZW1haW5pbmcgcGF0Y2hlcy4NCg0KVGhhbmtz IGZvciB5b3VyIGltcHJvdmVtZW50Lg0KDQpJJ3ZlIGNoZWNrZWQgaXQgYW5kIGl0IGxvb2tzIGdv b2QgdG8gbWUuDQpSZWJhc2VkIHRoZSBvdGhlciBwYXRjaGVzIGFuZCByYW4gdGhlIHBnaWRlbnQg Zm9yIHRoZSBwYXRjaCBzZXQuDQoNCkF0dGFjaCB0aGUgbmV3IHBhdGNoIHNldC4NCg0KUmVnYXJk cywNCldhbmcgd2VpDQoNCg== --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v70-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v70-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v70-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=269399; creation-date="Fri, 30 Dec 2022 10:24:12 GMT"; modification-date="Fri, 30 Dec 2022 10:25:28 GMT" Content-Transfer-Encoding: base64 RnJvbSBlYzc3MjVhMjVhZWFhNTQyMjlkOWE0Yzc1YTgwYzBmZWFhY2FlYjkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY3MCAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs 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 L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDE2MTkgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAyMjAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAxICsKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAgMzcgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMjUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDEzNzQgKysrKysrKysrKyst 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 bGVzIGNoYW5nZWQsIDQ0NTggaW5zZXJ0aW9ucygrKSwgNzU5IGRlbGV0aW9ucygtKQogY3JlYXRl 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 Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMDViMzg2MmQwOS4uYTMzYTkzNTcwYiAx 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 LjcwMzk4M2YyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDE2MTkgQEAKKy8qLS0tLS0t 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 ZGVhZGxvY2tzIGFtb25nIGxlYWRlciAoTEEpIGFuZCBwYXJhbGxlbAorICogYXBwbHkgKFBBKSB3 b3JrZXJzLCB3ZSB1c2VkIGxtZ3IgbG9ja3Mgd2hlbiB0aGUgUEEgd2FpdHMgZm9yIHRoZSBuZXh0 IHN0cmVhbQorICogKHNldCBvZiBjaGFuZ2VzKSBhbmQgTEEgd2FpdHMgZm9yIFBBIHRvIGZpbmlz aCB0aGUgdHJhbnNhY3Rpb24uIEFuIGFsdGVybmF0aXZlCisgKiBhcHByb2FjaCBjb3VsZCBiZSB0 byBub3QgYWxsb3cgcGFyYWxsZWxpc20gd2hlbiB0aGUgc2NoZW1hIG9mIHRhYmxlcyBpcworICog ZGlmZmVyZW50IGJldHdlZW4gdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBidXQgdGhhdCB3 b3VsZCBiZSB0b28KKyAqIHJlc3RyaWN0aXZlIGFuZCB3b3VsZCByZXF1aXJlIHRoZSBwdWJsaXNo ZXIgdG8gc2VuZCBtdWNoIG1vcmUgaW5mb3JtYXRpb24KKyAqIHRoYW4gaXQgaXMgY3VycmVudGx5 IHNlbmRpbmcuCisgKgorICogQ29uc2lkZXIgYSBjYXNlIHdoZXJlIHRoZSBzdWJzY3JpYmVkIHRh YmxlIGRvZXMgbm90IGhhdmUgYSB1bmlxdWUga2V5IG9uIHRoZQorICogcHVibGlzaGVyIGFuZCBo YXMgYSB1bmlxdWUga2V5IG9uIHRoZSBzdWJzY3JpYmVyLiBUaGUgZGVhZGxvY2sgY2FuIGhhcHBl biBpbgorICogdGhlIGZvbGxvd2luZyB3YXlzOgorICoKKyAqIDEpIERlYWRsb2NrIGJldHdlZW4g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgor ICogQ29uc2lkZXIgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChQQSkgaXMgZXhlY3V0 aW5nIFRYLTEgYW5kIHRoZQorICogbGVhZGVyIGFwcGx5IHdvcmtlciAoTEEpIGlzIGV4ZWN1dGlu ZyBUWC0yIGNvbmN1cnJlbnRseSBvbiB0aGUgc3Vic2NyaWJlci4KKyAqIE5vdywgTEEgaXMgd2Fp dGluZyBmb3IgUEEgYmVjYXVzZSBvZiB0aGUgdW5pcXVlIGtleSBjb25zdHJhaW50IG9mIHRoZQor ICogc3Vic2NyaWJlZCB0YWJsZSB3aGlsZSBQQSBpcyB3YWl0aW5nIGZvciBMQSB0byBzZW5kIHRo ZSBuZXh0IHN0cmVhbSBvZgorICogY2hhbmdlcyBvciB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFu ZCBtZXNzYWdlLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3ZSBo YXZlIExBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiByZW1vdGUgdHJhbnNhY3Rp b24gKGJ5IHBhX2xvY2tfc3RyZWFtKCkpIGFuZCBoYXZlIFBBIHdhaXQgb24gdGhlIGxvY2sgYmVm b3JlCisgKiB0cnlpbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdlcy4gU3Bl Y2lmaWNhbGx5LCBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoZSBsb2NrIGluIEFjY2Vzc0V4Y2x1c2l2 ZSBtb2RlIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBhbmQgd2lsbAorICogcmVsZWFz ZSBpdCBpZiBhbHJlYWR5IGFjcXVpcmVkIGFmdGVyIHNlbmRpbmcgdGhlIFNUUkVBTV9TVEFSVCwg U1RSRUFNX0FCT1JUCisgKiAoZm9yIHRvcGxldmVsIHRyYW5zYWN0aW9uKSwgU1RSRUFNX1BSRVBB UkUsIGFuZCBTVFJFQU1fQ09NTUlULiBUaGUgUEEgd2lsbAorICogYWNxdWlyZSB0aGUgbG9jayBp biBBY2Nlc3NTaGFyZSBtb2RlIGFmdGVyIHByb2Nlc3NpbmcgU1RSRUFNX1NUT1AgYW5kCisgKiBT VFJFQU1fQUJPUlQgKGZvciBzdWJ0cmFuc2FjdGlvbikgYW5kIHRoZW4gcmVsZWFzZSB0aGUgbG9j ayBpbW1lZGlhdGVseQorICogYWZ0ZXIgYWNxdWlyaW5nIGl0LgorICoKKyAqIFRoZSBsb2NrIGdy YXBoIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxsIGxvb2sgYXMgZm9sbG93czoKKyAqIExBICh3 YWl0aW5nIHRvIGFjcXVpcmUgdGhlIGxvY2sgb24gdGhlIHVuaXF1ZSBpbmRleCkgLT4gUEEgKHdh aXRpbmcgdG8KKyAqIGFjcXVpcmUgdGhlIHN0cmVhbSBsb2NrKSAtPiBMQQorICoKKyAqIFRoaXMg d2F5LCB3aGVuIFBBIGlzIHdhaXRpbmcgZm9yIExBIGZvciB0aGUgbmV4dCBzdHJlYW0gb2YgY2hh bmdlcywgd2UgY2FuCisgKiBoYXZlIGEgd2FpdC1lZGdlIGZyb20gUEEgdG8gTEEgaW4gbG1nciwg d2hpY2ggd2lsbCBtYWtlIHVzIGRldGVjdCB0aGUKKyAqIGRlYWRsb2NrIGJldHdlZW4gTEEgYW5k IFBBLgorICoKKyAqIDIpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg YW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqCisgKiBUaGlzIHNjZW5hcmlvIGlzIHNpbWls YXIgdG8gdGhlIGZpcnN0IGNhc2UgYnV0IFRYLTEgYW5kIFRYLTIgYXJlIGV4ZWN1dGVkIGJ5Cisg KiB0d28gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAoUEEtMSBhbmQgUEEtMiByZXNwZWN0aXZlbHkp LiBJbiB0aGlzIHNjZW5hcmlvLAorICogUEEtMiBpcyB3YWl0aW5nIGZvciBQQS0xIHRvIGNvbXBs ZXRlIGl0cyB0cmFuc2FjdGlvbiB3aGlsZSBQQS0xIGlzIHdhaXRpbmcKKyAqIGZvciBzdWJzZXF1 ZW50IGlucHV0IGZyb20gTEEuIEFsc28sIExBIGlzIHdhaXRpbmcgZm9yIFBBLTIgdG8gY29tcGxl dGUgaXRzCisgKiB0cmFuc2FjdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9y ZGVyLiBUaGVyZSBpcyBhIGRlYWRsb2NrIGFtb25nCisgKiB0aGUgdGhyZWUgcHJvY2Vzc2VzLgor ICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3ZSBoYXZlIFBBIGFjcXVp cmUgYSBzZXNzaW9uIGxvY2sgKHRoaXMgaXMKKyAqIGEgZGlmZmVyZW50IGxvY2sgdGhhbiByZWZl cnJlZCBpbiB0aGUgcHJldmlvdXMgY2FzZSwgc2VlCisgKiBwYV9sb2NrX3RyYW5zYWN0aW9uKCkp IG9uIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIGFuZCBoYXZlIExBIHdhaXQgb24KKyAq IHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29t bWFuZHMuIFNwZWNpZmljYWxseSwKKyAqIFBBIHdpbGwgYWNxdWlyZSB0aGlzIGxvY2sgaW4gQWNj ZXNzRXhjbHVzaXZlIG1vZGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgZmlyc3QKKyAqIG1lc3NhZ2Ug b2YgdGhlIHRyYW5zYWN0aW9uIGFuZCByZWxlYXNlIGl0IGF0IHRoZSB4YWN0IGVuZC4gTEEgd2ls bCBhY3F1aXJlCisgKiB0aGlzIGxvY2sgaW4gQWNjZXNzU2hhcmUgbW9kZSBhdCB0cmFuc2FjdGlv biBmaW5pc2ggY29tbWFuZHMKKyAqIChTVFJFQU1fQ09NTUlUIGFuZCBTVFJFQU1fUFJFUEFSRSkg YW5kIHJlbGVhc2UgaXQgaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRo ZSBhYm92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8g YWNxdWlyZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0byBhY3F1aXJl IHRoZQorICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+IFBBLTEgKHdh aXRpbmcgdG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoKKyAqIFRoaXMg d2F5IHdoZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIGVuZCBjb21t YW5kIHRvIHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJlIGFibGUgdG8g ZGV0ZWN0IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdlIGNhbiB1 c2UgWGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkKKyAqIGNvbnNp ZGVycyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3aGljaCBtZWFu cyB0aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgorICoKKyAqIDMp IERlYWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAqIEluIHRoZSBw cmV2aW91cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0cmFuc2Fj dGlvbnMKKyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdlZW4gTEEg YW5kIFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVzc2FnZXMsIGFu ZCB0aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyBhdm9pZCB0aGlz IHdhaXQsIHdlIHVzZSBhIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91 dC4gSWYKKyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBzZXJpYWxpemUg YWxsIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIHRvCisgKiBhIGZpbGUgYW5kIGluZGljYXRlIFBBLTIg dGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmluZworICogbWVz c2FnZXMuIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgYXMgaW4gdGhlIHBy ZXZpb3VzIGNhc2UKKyAqIHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4gU2VlIHBh X3NlbmRfZGF0YSgpIGFuZAorICogZW51bSBUcmFuc0FwcGx5QWN0aW9uLgorICoKKyAqIDQpIExv Y2sgdHlwZXMKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9jayBhbmQgdGhlIHRyYW5zYWN0aW9u IGxvY2sgbWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBiZWNhdXNl IGJvdGggbG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lkZSB0aGUKKyAqIHRyYW5zYWN0aW9u LCBhbmQgdGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVyc2lzdCBhY3Jv c3MKKyAqIHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5jbHVkZSAi bGlicHEvcHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIv aW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5j bHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVm aW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAqIERTTSBr ZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFVubGlrZSBvdGhlciBwYXJhbGxlbCBleGVj dXRpb24gY29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgRFNNIGtl eXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21hbGwgaW50 ZWdlcnMuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRAkJMQorI2RlZmlu ZSBQQVJBTExFTF9BUFBMWV9LRVlfTVEJCQkyCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9F UlJPUl9RVUVVRQkzCisKKy8qIFF1ZXVlIHNpemUgb2YgRFNNLCAxNiBNQiBmb3Igbm93LiAqLwor I2RlZmluZSBEU01fUVVFVUVfU0laRQkoMTYgKiAxMDI0ICogMTAyNCkKKworLyoKKyAqIEVycm9y IHF1ZXVlIHNpemUgb2YgRFNNLiBJdCBpcyBkZXNpcmFibGUgdG8gbWFrZSBpdCBsYXJnZSBlbm91 Z2ggdGhhdCBhCisgKiB0eXBpY2FsIEVycm9yUmVzcG9uc2UgY2FuIGJlIHNlbnQgd2l0aG91dCBi bG9ja2luZy4gVGhhdCB3YXksIGEgd29ya2VyIHRoYXQKKyAqIGVycm9ycyBvdXQgY2FuIHdyaXRl IHRoZSB3aG9sZSBtZXNzYWdlIGludG8gdGhlIHF1ZXVlIGFuZCB0ZXJtaW5hdGUgd2l0aG91dAor ICogd2FpdGluZyBmb3IgdGhlIHVzZXIgYmFja2VuZC4KKyAqLworI2RlZmluZSBEU01fRVJST1Jf UVVFVUVfU0laRQkJCSgxNiAqIDEwMjQpCisKKy8qCisgKiBUaGVyZSBhcmUgdGhyZWUgZmllbGRz IGluIGVhY2ggbWVzc2FnZSByZWNlaXZlZCBieSB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl cjogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJlY2F1c2Ugd2UgaGF2ZSB1cGRh dGVkIHRoZXNlCisgKiBzdGF0aXN0aWNzIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCB3ZSBj YW4gaWdub3JlIHRoZXNlIGZpZWxkcyBpbiB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAo c2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5lIFNJWkVfU1RB VFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNpemVvZihUaW1lc3RhbXBUeikp CisKKy8qCisgKiBUaGUgdHlwZSBvZiBzZXNzaW9uLWxldmVsIGxvY2sgb24gYSB0cmFuc2FjdGlv biBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVwbGljYXRpb24gc3Vic2NyaWJlci4K KyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTQkwCisjZGVmaW5lIFBBUkFM TEVMX0FQUExZX0xPQ0tfWEFDVAkxCisKKy8qCisgKiBIYXNoIHRhYmxlIGVudHJ5IHRvIG1hcCB4 aWQgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZS4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5Cit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyog SGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAqLworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbzsKK30gUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5OworCisvKgorICogQSBoYXNoIHRhYmxl IHVzZWQgdG8gY2FjaGUgdGhlIHN0YXRlIG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVpbmcg YXBwbGllZAorICogYnkgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3N0YXRpYyBI VEFCICpQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IE5VTEw7CisKKy8qCisqIEEgbGlzdCAocG9vbCkg b2YgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBmb3IKKyog dGhlIG5ldyB3b3JrZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxh dW5jaGluZyBpdC4gVGhlCisqIGxpc3QgZW50cnkgaXMgcmVtb3ZlZCBpZiB0aGVyZSBhcmUgYWxy ZWFkeSBlbm91Z2ggd29ya2VycyBpbiB0aGUgd29ya2VyCisqIHBvb2wgYXQgdGhlIGVuZCBvZiB0 aGUgdHJhbnNhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyog cG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICovCitzdGF0aWMgTGlzdCAqUGFy YWxsZWxBcHBseVdvcmtlclBvb2wgPSBOSUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQg YmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisg Ki8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOwor CisvKgorICogSXMgdGhlcmUgYSBtZXNzYWdlIHNlbnQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgdGhhdCB0aGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgbmVlZHMgdG8gcmVjZWl2ZT8KKyAq Lwordm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZh bHNlOworCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlv biByZXF1aXJlZCBmb3IgYXBwbHlpbmcgdGhlCisgKiBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2Fj dGlvbi4gSXQgaXMgdXNlZCB0byBzYXZlIHRoZSBjb3N0IG9mIHNlYXJjaGluZyB0aGUKKyAqIGhh c2ggdGFibGUgd2hlbiBhcHBseWluZyB0aGUgY2hhbmdlcyBiZXR3ZWVuIFNUUkVBTV9TVEFSVCBh bmQgU1RSRUFNX1NUT1AuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3Ry ZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIEEgbGlzdCB0byBtYWludGFpbiBzdWJ0cmFu c2FjdGlvbnMsIGlmIGFueS4gKi8KK3N0YXRpYyBMaXN0ICpzdWJ4YWN0bGlzdCA9IE5JTDsKKwor c3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8pOworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKK3N0YXRpYyBQYXJ0aWFsRmlsZVNldFN0 YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpOworCisvKgorICogUmV0dXJucyB0cnVlIGlm IGl0IGlzIE9LIHRvIHN0YXJ0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhlcndp c2UuCisgKi8KK3N0YXRpYyBib29sCitwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7 CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOworCisJLyogT25seSBsZWFkZXIg YXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAo IWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBJ dCBpcyBnb29kIHRvIGNoZWNrIGZvciBhbnkgY2hhbmdlIGluIHRoZSBzdWJzY3JpcHRpb24gcGFy YW1ldGVyIHRvCisJICogYXZvaWQgdGhlIGNhc2Ugd2hlcmUgZm9yIGEgdmVyeSBsb25nIHRpbWUg dGhlIGNoYW5nZSBkb2Vzbid0IGdldAorCSAqIHJlZmxlY3RlZC4gVGhpcyBjYW4gaGFwcGVuIHdo ZW4gdGhlcmUgaXMgYSBjb25zdGFudCBmbG93IG9mIHN0cmVhbWluZworCSAqIHRyYW5zYWN0aW9u cyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisJICoKKwkgKiBJ dCBpcyBiZXR0ZXIgdG8gZG8gaXQgYmVmb3JlIHRoZSBiZWxvdyBjaGVja3Mgc28gdGhhdCB0aGUg bGF0ZXN0IHZhbHVlcworCSAqIG9mIHN1YnNjcmlwdGlvbiBjYW4gYmUgdXNlZCBmb3IgdGhlIGNo ZWNrcy4KKwkgKi8KKwltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisKKwkvKgorCSAqIERv bid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB0aGUgc3Vic2NyaXB0aW9u IGlzIG5vdAorCSAqIHVzaW5nIHBhcmFsbGVsIHN0cmVhbWluZyBtb2RlLCBvciBpZiB0aGUgcHVi bGlzaGVyIGRvZXMgbm90IHN1cHBvcnQKKwkgKiBwYXJhbGxlbCBhcHBseS4KKwkgKi8KKwlpZiAo IU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpCisJCXJldHVybiBmYWxzZTsKKwor CS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgd29ya2VyIGlmIHVzZXIgaGFzIHNl dCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0IHRoZXkgd2FudCB0byBza2lwIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMs IHdlIG5lZWQgdG8gc2VyaWFsaXplIHRoZSB0cmFuc2FjdGlvbiB0byBhIGZpbGUKKwkgKiBzbyB0 aGF0IHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3 aGV0aGVyIHRvCisJICogc2tpcCBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4K KwkgKi8KKwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24p KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z IHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtl ciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEKKwkg KiByZWxhdGlvbiB0aGF0IGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZQorCSAqIHNob3Vs ZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdlIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xz biBieSB0aGF0CisJICogdGltZS4gU28sIHdlIGRvbid0IHN0YXJ0IHRoZSBuZXcgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoIUFsbFRhYmxlc3luY3NSZWFk eSgpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFNldCB1 cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdlIHNldCB1cCBhIGNv bnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBmaXhlZC1zaXplIHdvcmtlciBpbmZvCisgKiAo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCksIGEgbWVzc2FnZSBxdWV1ZSwgYW5kIGFuIGVycm9y IHF1ZXVlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJl LgorICovCitzdGF0aWMgYm9vbAorcGFfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbykKK3sKKwlzaG1fdG9jX2VzdGltYXRvciBlOworCVNpemUJCXNlZ3NpemU7CisJZHNt X3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZCAqc2hhcmVkOworCXNobV9tcQkgICAqbXE7CisJU2l6ZQkJcXVldWVfc2l6ZSA9IERTTV9R VUVVRV9TSVpFOworCVNpemUJCWVycm9yX3F1ZXVlX3NpemUgPSBEU01fRVJST1JfUVVFVUVfU0la RTsKKworCS8qCisJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1lbW9yeSB3ZSBuZWVkLgor CSAqCisJICogQmVjYXVzZSB0aGUgVE9DIG1hY2hpbmVyeSBtYXkgY2hvb3NlIHRvIGluc2VydCBw YWRkaW5nIG9mIG9kZGx5LXNpemVkCisJICogcmVxdWVzdHMsIHdlIG11c3QgZXN0aW1hdGUgZWFj aCBjaHVuayBzZXBhcmF0ZWx5LgorCSAqCisJICogV2UgbmVlZCBvbmUga2V5IHRvIHJlZ2lzdGVy IHRoZSBsb2NhdGlvbiBvZiB0aGUgaGVhZGVyLCBhbmQgdHdvIG90aGVyCisJICoga2V5cyB0byB0 cmFjayB0aGUgbG9jYXRpb25zIG9mIHRoZSBtZXNzYWdlIHF1ZXVlIGFuZCB0aGUgZXJyb3IgbWVz c2FnZQorCSAqIHF1ZXVlLgorCSAqLworCXNobV90b2NfaW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUp OworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgcXVldWVfc2l6ZSk7CisJc2ht X3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgZXJyb3JfcXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2Vz dGltYXRlX2tleXMoJmUsIDMpOworCXNlZ3NpemUgPSBzaG1fdG9jX2VzdGltYXRlKCZlKTsKKwor CS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFuZCBlc3RhYmxpc2ggYSB0YWJs ZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNobV90b2NfZXN0aW1hdGUoJmUp LCAwKTsKKwlpZiAoIXNlZykKKwkJcmV0dXJuIGZhbHNlOworCisJdG9jID0gc2htX3RvY19jcmVh dGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwK KwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlz aGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQpKTsKKwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgpOworCisJc2hhcmVkLT54YWN0 X3N0YXRlID0gUEFSQUxMRUxfVFJBTlNfVU5LTk9XTjsKKwlwZ19hdG9taWNfaW5pdF91MzIoJihz aGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50KSwgMCk7CisJc2hhcmVkLT5sYXN0X2NvbW1pdF9l bmQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBGU19FTVBU WTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hh cmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1x ID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVl X3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7 CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVl LiAqLworCXdpbmZvLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJLyogU2V0IHVwIGVycm9yIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21x X2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAg IGVycm9yX3F1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlf S0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsK KworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxs ZXIuICovCisJd2luZm8tPmRzbV9zZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsK KworCXJldHVybiB0cnVlOworfQorCisvKgorICogVHJ5IHRvIGdldCBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBmcm9tIHRoZSBwb29sLiBJZiBub25lIGlzIGF2YWlsYWJsZSB0aGVuCisgKiBzdGFy dCBhIG5ldyBvbmUuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYV9s YXVuY2hfcGFyYWxsZWxfd29ya2VyKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCWJvb2wJCWxhdW5jaGVkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlM aXN0Q2VsbCAgICpsYzsKKworCS8qIFRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KKwlmb3JlYWNoKGxjLCBQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICopIGxmaXJzdChsYyk7CisKKwkJaWYgKCF3aW5mby0+aW5fdXNlKQorCQkJcmV0dXJuIHdpbmZv OworCX0KKworCS8qCisJICogU3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAq CisJICogVGhlIHdvcmtlciBpbmZvIGNhbiBiZSB1c2VkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhl IHdvcmtlciBwcm9jZXNzLCBzbworCSAqIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudCBjb250ZXh0 LgorCSAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKKworCXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9m KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAq LworCWlmICghcGFfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwls YXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxSZXBXb3JrZXItPmRi aWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKKwkJCQkJ CQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRsZSh3aW5mby0+ZHNt X3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wg PSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3aW5mbyk7CisJfQorCWVsc2UKKwl7 CisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCQl3aW5mbyA9IE5VTEw7CisJfQorCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHdpbmZvOworfQor CisvKgorICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB3aWxsIGJlIHVz ZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdlIGZpcnN0IHRyeSB0byBnZXQgYW4g YXZhaWxhYmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBhbnkgYW5kIHRoZW4gdHJ5CisgKiB0 byBsYXVuY2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVsIGFsbG9jYXRpb24sIHJlbWVtYmVy IHRoZSB3b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBoYXNoIHRhYmxlIHNvIHRoYXQgd2Ug Y2FuIGdldCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUKKyAqIHN0cmVhbWluZyBjaGFuZ2Vz LgorICovCit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJ Ym9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlQ YXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFwYV9jYW5fc3RhcnQoeGlk KSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICovCisJaWYgKCFQYXJhbGxlbEFwcGx5 VHhuSGFzaCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9m KGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOworCQljdGwuaGN4dCA9 IEFwcGx5Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhhc2hfY3JlYXRlKCJs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJ CQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJfQorCisJd2luZm8gPSBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKCk7 CisJaWYgKCF3aW5mbykKKwkJcmV0dXJuOworCisJLyogQ3JlYXRlIGFuIGVudHJ5IGZvciB0aGUg cmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxB cHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQll bG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qIFVwZGF0ZSB0aGUgdHJh bnNhY3Rpb24gaW5mb3JtYXRpb24gaW4gc2hhcmVkIG1lbW9yeS4gKi8KKwlTcGluTG9ja0FjcXVp cmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwl3aW5mby0+c2hhcmVkLT54YWN0X3N0YXRlID0g UEFSQUxMRUxfVFJBTlNfVU5LTk9XTjsKKwl3aW5mby0+c2hhcmVkLT54aWQgPSB4aWQ7CisJU3Bp bkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwl3aW5mby0+aW5fdXNlID0g dHJ1ZTsKKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKKwllbnRyeS0+d2luZm8g PSB3aW5mbzsKKwllbnRyeS0+eGlkID0geGlkOworfQorCisvKgorICogRmluZCB0aGUgYXNzaWdu ZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlmIGFueS4KKyAqLworUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKgorcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7 CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKworCWlm ICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoIVBh cmFsbGVsQXBwbHlUeG5IYXNoKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2Fj aGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5 X3dvcmtlcikKKwkJcmV0dXJuIHN0cmVhbV9hcHBseV93b3JrZXI7CisKKwkvKiBGaW5kIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAo Zm91bmQpCisJeworCQkvKiBUaGUgd29ya2VyIG11c3Qgbm90IGhhdmUgZXhpdGVkLiAgKi8KKwkJ QXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKwkJcmV0dXJuIGVudHJ5LT53aW5mbzsKKwl9 CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIE1ha2VzIHRoZSB3b3JrZXIgYXZhaWxhYmxl IGZvciByZXVzZS4KKyAqCisgKiBUaGlzIHJlbW92ZXMgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlIHNvIHRoYXQgaXQKKyAqIGNhbid0IGJlIHVzZWQu IElmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbCwgaXQgc3RvcHMgdGhlIHdv cmtlcgorICogYW5kIGZyZWVzIHRoZSBjb3JyZXNwb25kaW5nIGluZm8uIE90aGVyd2lzZSBpdCBq dXN0IG1hcmtzIHRoZSB3b3JrZXIgYXMKKyAqIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICog Rm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlciBwb29sLCBzZWUgY29tbWVudHMg YXRvcCB0aGlzIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcihQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSk7CisJQXNzZXJ0KHdpbmZvLT5pbl91c2UpOworCUFzc2VydChwYV9nZXRfeGFjdF9z dGF0ZSh3aW5mby0+c2hhcmVkKSA9PSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisKKwlpZiAo IWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmd2luZm8tPnNoYXJlZC0+eGlkLCBI QVNIX1JFTU9WRSwgTlVMTCkpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIp OworCisJLyoKKwkgKiBTdG9wIHRoZSB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJz IGluIHRoZSBwb29sLgorCSAqCisJICogWFhYIEFkZGl0aW9uYWxseSwgd2UgYWxzbyBzdG9wIHRo ZSB3b3JrZXIgaWYgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKwkgKiBzZXJpYWxpemUgcGFydCBv ZiB0aGUgdHJhbnNhY3Rpb24gZGF0YSBkdWUgdG8gYSBzZW5kIHRpbWVvdXQuIFRoaXMgaXMKKwkg KiBiZWNhdXNlIHRoZSBtZXNzYWdlIGNvdWxkIGJlIHBhcnRpYWxseSB3cml0dGVuIHRvIHRoZSBx dWV1ZSBhbmQgdGhlcmUKKwkgKiBpcyBubyB3YXkgdG8gY2xlYW4gdGhlIHF1ZXVlIG90aGVyIHRo YW4gcmVzZW5kaW5nIHRoZSBtZXNzYWdlIHVudGlsIGl0CisJICogc3VjY2VlZHMuIEluc3RlYWQg b2YgdHJ5aW5nIHRvIHNlbmQgdGhlIGRhdGEgd2hpY2ggYW55d2F5IHdvdWxkIGhhdmUKKwkgKiBi ZWVuIHNlcmlhbGl6ZWQgYW5kIHRoZW4gbGV0dGluZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGRlYWwgd2l0aAorCSAqIHRoZSBzcHVyaW91cyBtZXNzYWdlLCB3ZSBzdG9wIHRoZSB3b3JrZXIu CisJICovCisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyB8fAorCQlsaXN0X2xlbmd0aChQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPgorCQkobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCXsKKwkJaW50CQkJc2xvdF9ubzsKKwkJdWludDE2CQln ZW5lcmF0aW9uOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwor CQlnZW5lcmF0aW9uID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlv bjsKKwkJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87 CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJCWxvZ2ljYWxy ZXBfcGFfd29ya2VyX3N0b3Aoc2xvdF9ubywgZ2VuZXJhdGlvbik7CisKKwkJcGFfZnJlZV93b3Jr ZXJfaW5mbyh3aW5mbyk7CisKKwkJcmV0dXJuOworCX0KKworCXdpbmZvLT5pbl91c2UgPSBmYWxz ZTsKKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKK30KKworLyoKKyAqIEZyZWUg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5rIHRoZSBmaWxl cyB3aXRoCisgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgorICovCitzdGF0aWMgdm9pZAor cGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJ QXNzZXJ0KHdpbmZvKTsKKworCWlmICh3aW5mby0+bXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNo KHdpbmZvLT5tcV9oYW5kbGUpOworCisJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCXNo bV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisKKwkvKiBVbmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLiAqLworCWlmICh3aW5mby0+c2VyaWFsaXplX2No YW5nZXMpCisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKKwlpZiAod2luZm8tPmRzbV9zZWcpCisJCWRzbV9kZXRh Y2god2luZm8tPmRzbV9zZWcpOworCisJLyogUmVtb3ZlIGZyb20gdGhlIHdvcmtlciBwb29sLiAq LworCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGlzdF9kZWxldGVfcHRyKFBhcmFsbGVsQXBw bHlXb3JrZXJQb29sLCB3aW5mbyk7CisKKwlwZnJlZSh3aW5mbyk7Cit9CisKKy8qCisgKiBEZXRh Y2ggdGhlIGVycm9yIHF1ZXVlIGZvciBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwor dm9pZAorcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOwor CisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0 KGxjKTsKKworCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOworCQl3aW5m by0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwl9Cit9CisKKy8qCisgKiBDaGVjayBpZiB0aGVy ZSBhcmUgYW55IHBlbmRpbmcgc3Bvb2xlZCBtZXNzYWdlcy4KKyAqLworc3RhdGljIGJvb2wKK3Bh X2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGluZygpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0ZSBm aWxlc2V0X3N0YXRlOworCisJZmlsZXNldF9zdGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRlKCk7 CisKKwlyZXR1cm4gKGZpbGVzZXRfc3RhdGUgIT0gRlNfRU1QVFkpOworfQorCisvKgorICogUmVw bGF5IHRoZSBzcG9vbGVkIG1lc3NhZ2VzIG9uY2UgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgaGFz IGZpbmlzaGVkCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzIHRvIHRoZSBmaWxlLgorICovCitzdGF0 aWMgdm9pZAorcGFfc3Bvb2xlZF9tZXNzYWdlcyh2b2lkKQoreworCVBhcnRpYWxGaWxlU2V0U3Rh dGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0 ZSgpOworCisJLyoKKwkgKiBJZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBpcyBidXN5IHNlcmlh bGl6aW5nIHRoZSBwYXJ0aWFsIGNoYW5nZXMgdGhlbgorCSAqIGFjcXVpcmUgdGhlIHN0cmVhbSBs b2NrIG5vdyBhbmQgd2FpdCBmb3IgdGhlIGxlYWRlciB3b3JrZXIgdG8gZmluaXNoCisJICogc2Vy aWFsaXppbmcgdGhlIGNoYW5nZXMuIE90aGVyd2lzZSwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciB3b24ndCBnZXQKKwkgKiBhIGNoYW5jZSB0byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgKGFuZCBh Y3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgdW50aWwKKwkgKiB0aGUgbGVhZGVyIGhhZCBzZXJpYWxp emVkIGFsbCBjaGFuZ2VzIHdoaWNoIGNhbiBsZWFkIHRvIHVuZGV0ZWN0ZWQKKwkgKiBkZWFkbG9j ay4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgZmlsZXNldCBzdGF0ZSBjYW4gYmUgRlNfU0VSSUFM SVpFX0RPTkUgb25jZSB0aGUgbGVhZGVyCisJICogd29ya2VyIGhhcyBmaW5pc2hlZCBzZXJpYWxp emluZyB0aGUgY2hhbmdlcy4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJ WkVfSU5fUFJPR1JFU1MpCisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54 aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJl ZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmls ZXNldF9zdGF0ZSgpOworCX0KKworCS8qCisJICogV2UgY2Fubm90IHJlYWQgdGhlIGZpbGUgaW1t ZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXplZCBhbGwKKwkgKiBjaGFuZ2Vz IHRvIHRoZSBmaWxlIGJlY2F1c2UgdGhlcmUgbWF5IHN0aWxsIGJlIG1lc3NhZ2VzIGluIHRoZSBt ZW1vcnkKKwkgKiBxdWV1ZS4gV2Ugd2lsbCBhcHBseSBhbGwgc3Bvb2xlZCBtZXNzYWdlcyB0aGUg bmV4dCB0aW1lIHdlIGNhbGwgdGhpcworCSAqIGZ1bmN0aW9uIGFuZCB0aGF0IHdpbGwgZW5zdXJl IHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0IGluIHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4KKwkg Ki8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfRE9ORSkKKwl7CisJCXBhX3Nl dF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX1JFQURZKTsKKwl9CisJZWxzZSBp ZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFEWSkKKwl7CisJCWFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXQsCisJCQkJCQkJICAgTXlQYXJhbGxlbFNoYXJl ZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJcGFfc2V0X2ZpbGVzZXRf c3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNfRU1QVFkpOworCX0KK30KKworLyoKKyAqIEludGVy cnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICov CitzdGF0aWMgdm9pZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCit7CisJ Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5nKQor CXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVkIiwK KwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9CisK KwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBm YWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQorfQorCisvKiBQYXJh bGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxQYXJh bGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJc2htX21xX3Jlc3VsdCBzaG1x X3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBs eU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24K KwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxv Y1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2Fn ZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgor CSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmls bGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2suY2Fs bGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVy cm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsK KworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisKKwkJUHJv Y2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFk aW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVj ZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01R X1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJCQlp ZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2FnZSBsZW5ndGgiKTsK KworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMuZGF0YSA9IChjaGFy ICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBieXRl IG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvCisJCQkgKiBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJYyA9IHBxX2dl dG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUgc3RhdGlzdGlj cyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJCQkgKiBhcHBs eSB3b3JrZXIuCisJCQkgKgorCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBzdGF0 aXN0aWNzIGZpZWxkcyBmcm9tIHRoZSBsZWFkZXIKKwkJCSAqIGFwcGx5IHdvcmtlciBidXQgZm9y IHRoYXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlIGVudGlyZQorCQkJICogbWVzc2FnZSBieSBy ZW1vdmluZyB0aGVzZSBmaWVsZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3JrIHRoYW4KKwkJCSAq IHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkJCSAqLworCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCisJCQlhcHBs eV9kaXNwYXRjaCgmcyk7CisJCX0KKwkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dPVUxE X0JMT0NLKQorCQl7CisJCQkvKiBSZXBsYXkgdGhlIGNoYW5nZXMgZnJvbSB0aGUgZmlsZSwgaWYg YW55LiAqLworCQkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGluZygpKQorCQkJewor CQkJCXBhX3Nwb29sZWRfbWVzc2FnZXMoKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpbnQJ CQlyYzsKKworCQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJCQlyYyA9IFdhaXRMYXRj aChNeUxhdGNoLAorCQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElU X09OX1BNX0RFQVRILAorCQkJCQkJCSAgIDEwMDBMLAorCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9H SUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKKworCQkJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkK KwkJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCUFz c2VydChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQpOworCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNz YWdlQ29udGV4dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKworCS8q IFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK K30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBy ZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJkcyBh Z2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGluZwor ICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2FsbHMg cHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMgdm9pZAorcGFfc2h1dGRvd24oaW50IGNv ZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmFw cGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAor CQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikg RGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29ya2Vy IGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNtX2hh bmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2ht X21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJyb3Jf bXFoOworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1H ZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkv KiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JT aHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdv cmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICogZmlu ZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3 ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFyYWxs ZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJn d19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7 CisJaWYgKCFzZWcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1h cCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0 dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp KTsKKwlpZiAoIXRvYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMg bnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9z aG1lbV9leGl0KHBhX3NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBMb29r IHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNoYXJl ZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAq LworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZhbHNl KTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRh Y2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24gaXMg Y29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlzIHRv IGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRhdGEg dG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNhbHJl cF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJh bGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2Vy X2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJhbGxl bFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNwaW5M b2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlciht cSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxs ZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAg IEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGlt ZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkv KiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2Ny aXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgICBvcmlnaW5uYW1lLCBzaXplb2Yo b3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUs IGZhbHNlKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0IG5l ZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3JpZ2luIHdoaWNoIHdhcyBh bHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVy X3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2Fj aGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vi c2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNh bGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdf dGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Ao bXFoKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IG5vdCBnZXQg aGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3aWxsIG9ubHkgc3Rv cCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBTSUdJTlQgZnJvbSB0aGUKKwkgKiBsZWFk ZXIsIG9yIHdoZW4gdGhlcmUgdGhlcmUgaXMgYW4gZXJyb3IuIE5vbmUgb2YgdGhlc2UgY2FzZXMg d2lsbCBhbGxvdworCSAqIHRoZSBjb2RlIHRvIHJlYWNoIGhlcmUuCisJICovCisJQXNzZXJ0KGZh bHNlKTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0 aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBp cyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEg ZmxhZworICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkg dG8gaW52b2tlCisgKiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KKyAqLwordm9pZAor SGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRQ ZW5kaW5nID0gdHJ1ZTsKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOworCVNl dExhdGNoKE15TGF0Y2gpOworfQorCisvKgorICogSGFuZGxlIGEgc2luZ2xlIHByb3RvY29sIG1l c3NhZ2UgcmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgor ICovCitzdGF0aWMgdm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2UoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvLCBTdHJpbmdJbmZvIG1zZykKK3sKKwljaGFyCQltc2d0eXBlOwor CisJbXNndHlwZSA9IHBxX2dldG1zZ2J5dGUobXNnKTsKKworCXN3aXRjaCAobXNndHlwZSkKKwl7 CisJCWNhc2UgJ0UnOgkJCQkvKiBFcnJvclJlc3BvbnNlICovCisJCQl7CisJCQkJRXJyb3JEYXRh CWVkYXRhOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJzZV9l cnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKgorCQkJCSAqIElmIGRlc2lyZWQsIGFk ZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJICogbWVzc2FnZSBw cm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIE90aGVyd2lzZSwKKwkJCQkg KiBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5kIHdoYXQgYWN0dWFs bHkKKwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEuY29udGV4dCkKKwkJ CQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0LAorCQkJ CQkJCQkJCQkgXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7 CisJCQkJZWxzZQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHN0cmR1cChfKCJsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKworCQkJCS8qCisJCQkJICogQ29udGV4 dCBiZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250ZXh0IGNhbGxiYWNrcworCQkJ CSAqIHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFwcGx5TG9vcCgpLgorCQkJCSAq LworCQkJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOwor CisJCQkJLyoKKwkJCQkgKiBUaGUgYWN0dWFsIGVycm9yIG11c3QgaGF2ZSBiZWVuIHJlcG9ydGVk IGJ5IHRoZSBwYXJhbGxlbAorCQkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCQkgKi8KKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBleGl0ZWQgZHVlIHRvIGVycm9yIiksCisJCQkJCQkgZXJyY29udGV4dCgi JXMiLCBlZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0 byBkbyBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3Bv bnNlIGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAq IHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJ Y2FzZSAnQSc6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJ IG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1ZXVlZCBw cm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisg Ki8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxs ICAgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1vcnlDb250 ZXh0IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9t IFByb2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1bmN0aW9u cyBpdCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90 ZW50aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2Vp dmVkIHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNpdmUgZW50 cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBldmVuIGlm IGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4KKwkgKi8K KwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRNZW1vcnlD b250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gV2UKKwkgKiBkb24ndCB3 YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0 J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2Fu IHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9jb250ZXh0KQkJCS8qIGZpcnN0 IHRpbWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRl KFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxlUGFyYWxsZWxBcHBseU1lc3Nh Z2VzIiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCWVsc2UKKwkJTWVt b3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRp bmcgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsK KwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsK KwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVGhlIGxlYWRlciB3aWxsIGRldGFjaCBm cm9tIHRoZSBlcnJvciBxdWV1ZSBhbmQgc2V0IGl0IHRvIE5VTEwKKwkJICogYmVmb3JlIHByZXBh cmluZyB0byBzdG9wIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB3ZSBkb24ndAorCQkg KiBuZWVkIHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBhbnltb3JlLiBTZWUKKwkJICogbG9naWNh bHJlcF93b3JrZXJfZGV0YWNoLgorCQkgKi8KKwkJaWYgKCF3aW5mby0+ZXJyb3JfbXFfaGFuZGxl KQorCQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVycm9yX21x X2hhbmRsZSwgJm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dP VUxEX0JMT0NLKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VT UykKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNn KTsKKwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhh bmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRh KTsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBj b25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyog TWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9y eUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30K KworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICoKKyAqIFJldHVybiBmYWxzZSBp ZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB0 cnVlCisgKiBvdGhlcndpc2UuCisgKi8KK2Jvb2wKK3BhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQoreworCWlu dAkJCXJjOworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCVRpbWVzdGFtcFR6IHN0YXJ0VGltZSA9 IDA7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlBc3NlcnQoIXdpbmZvLT5z ZXJpYWxpemVfY2hhbmdlcyk7CisKKy8qCisgKiBUaGlzIHRpbWVvdXQgaXMgYSBiaXQgYXJiaXRy YXJ5IGJ1dCB0ZXN0aW5nIHJldmVhbGVkIHRoYXQgaXQgaXMgc3VmZmljaWVudAorICogdG8gc2Vu ZCB0aGUgbWVzc2FnZSB1bmxlc3MgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyB3YWl0aW5n IG9uIHNvbWUKKyAqIGxvY2sgb3IgdGhlcmUgaXMgYSBzZXJpb3VzIHJlc291cmNlIGNydW5jaC4g U2VlIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZQorICogdG8ga25vdyB3aHkgd2UgYXJlIHVz aW5nIGEgbm9uLWJsb2NraW5nIHdheSB0byBzZW5kIHRoZSBtZXNzYWdlLgorICovCisjZGVmaW5l IFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TIDEwMDAKKyNkZWZpbmUgU0hNX1NFTkRfVElNRU9V VF9NUwkJKDEwMDAwIC0gU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCisKKwlmb3IgKDs7KQor CXsKKwkJcmVzdWx0ID0gc2htX21xX3NlbmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRh LCB0cnVlLCB0cnVlKTsKKworCQlpZiAocmVzdWx0ID09IFNITV9NUV9TVUNDRVNTKQorCQkJcmV0 dXJuIHRydWU7CisJCWVsc2UgaWYgKHJlc3VsdCA9PSBTSE1fTVFfREVUQUNIRUQpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0byBzaGFyZWQt bWVtb3J5IHF1ZXVlIikpKTsKKworCQlBc3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9D Syk7CisKKwkJLyogV2FpdCBiZWZvcmUgcmV0cnlpbmcuICovCisJCXJjID0gV2FpdExhdGNoKE15 TGF0Y2gsCisJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BN X0RFQVRILAorCQkJCQkgICBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKKwkJCQkJICAgV0FJ VF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJaWYgKHJj ICYgV0xfTEFUQ0hfU0VUKQorCQl7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorCisJCWlmIChzdGFydFRpbWUgPT0gMCkKKwkJCXN0YXJ0 VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVy ZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJ CVNITV9TRU5EX1RJTUVPVVRfTVMpKQorCQl7CisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgd2lsbCBzZXJpYWxpemUgdGhlIHJl bWFpbmluZyBjaGFuZ2VzIG9mIHJlbW90ZSB0cmFuc2FjdGlvbiAldSB0byBhIGZpbGUiLAorCQkJ CQkJCXdpbmZvLT5zaGFyZWQtPnhpZCkpKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KK30K KworLyoKKyAqIFN3aXRjaCB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIGZvciB0aGUgY3VycmVu dCB0cmFuc2FjdGlvbiAtLSB0aGlzIG1lYW5zCisgKiB0aGF0IHRoZSBjdXJyZW50IGRhdGEgYW5k IGFueSBzdWJzZXF1ZW50IGRhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorICogc2Vy aWFsaXplZCB0byBhIGZpbGUuIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRs b2NrcyB3aXRoCisgKiBhbm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAocmVmZXIgdG8gdGhl IGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlKS4KKyAqLwordm9pZAorcGFfc3dpdGNoX3RvX3BhcnRp YWxfc2VyaWFsaXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkgICBi b29sIHN0cmVhbV9sb2NrZWQpCit7CisJLyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGNvdWxkIGJlIHN0dWNrIGZvciBzb21lIHJlYXNvbiAoc2F5IHdhaXRpbmcKKwkgKiBvbiBzb21l IGxvY2sgYnkgb3RoZXIgYmFja2VuZCksIHNvIHN0b3AgdHJ5aW5nIHRvIHNlbmQgZGF0YSBkaXJl Y3RseSB0bworCSAqIGl0IGFuZCBzdGFydCBzZXJpYWxpemluZyBkYXRhIHRvIHRoZSBmaWxlIGlu c3RlYWQuCisJICovCisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gdHJ1ZTsKKworCS8qIElu aXRpYWxpemUgdGhlIHN0cmVhbSBmaWxlc2V0LiAqLworCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh3 aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOworCisJLyoKKwkgKiBBY3F1aXJlcyB0aGUgc3RyZWFt IGxvY2sgaWYgbm90IGFscmVhZHkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHBhcmFsbGVsCisJICog YXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJl YW0gbG9jayB1bnRpbAorCSAqIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgorCSAqLworCWlm ICghc3RyZWFtX2xvY2tlZCkKKwkJcGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFy ZWQsIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyk7Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBv cgorICogZXhjZWVkZWQgdGhlIGdpdmVuIHhhY3Rfc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lkCitw YV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJ CQkJICAgUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpCit7CisJZm9yICg7OykKKwl7CisJ CS8qCisJCSAqIFN0b3AgaWYgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGhhcyByZWFjaGVkIG9yIGV4 Y2VlZGVkIHRoZSBnaXZlbgorCQkgKiB4YWN0X3N0YXRlLgorCQkgKi8KKwkJaWYgKHBhX2dldF94 YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID49IHhhY3Rfc3RhdGUpCisJCQlicmVhazsKKworCQkv KiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAor CQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAor CQkJCQkJIDEwTCwKKwkJCQkJCSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RB VEVfQ0hBTkdFKTsKKworCQkvKiBSZXNldCB0aGUgbGF0Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8K KwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQkvKiBBbiBpbnRlcnJ1cHQgbWF5IGhhdmUgb2Nj dXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCX0KK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidz IHRyYW5zYWN0aW9uIGZpbmlzaGVzLgorICovCitzdGF0aWMgdm9pZAorcGFfd2FpdF9mb3JfeGFj dF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCS8qCisJICogV2Fp dCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldCB0aGUgc3RhdGUgdG8KKwkgKiBQ QVJBTExFTF9UUkFOU19TVEFSVEVEIHdoaWNoIG1lYW5zIGl0IGhhcyBhY3F1aXJlZCB0aGUgdHJh bnNhY3Rpb24KKwkgKiBsb2NrLiBUaGlzIGlzIHRvIHByZXZlbnQgbGVhZGVyIGFwcGx5IHdvcmtl ciBmcm9tIGFjcXVpcmluZyB0aGUKKwkgKiB0cmFuc2FjdGlvbiBsb2NrIGVhcmxpZXIgdGhhbiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCXBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUo d2luZm8sIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGUg dHJhbnNhY3Rpb24gbG9jayB0byBiZSByZWxlYXNlZC4gVGhpcyBpcyByZXF1aXJlZCB0bworCSAq IGRldGVjdCBkZWFkbG9jayBhbW9uZyBsZWFkZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu IFJlZmVyIHRvIHRoZQorCSAqIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorCSAqLworCXBhX2xv Y2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCXBh X3VubG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBzdGF0ZSBiZWNvbWVzIFBBUkFMTEVMX1RSQU5TX0ZJ TklTSEVEIGluIGNhc2UgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIGZhaWxlZCB3aGls ZSBhcHBseWluZyBjaGFuZ2VzIGNhdXNpbmcgdGhlIGxvY2sgdG8gYmUKKwkgKiByZWxlYXNlZC4K KwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygibG9zdCBjb25u ZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIp KSk7Cit9CisKKy8qCisgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciBhIGdpdmVuIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4 YWN0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFy ZWQtPnhhY3Rfc3RhdGUgPSB4YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+ bXV0ZXgpOworfQorCisvKgorICogR2V0IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBmb3IgYSBnaXZl biBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUK K3BhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpCit7 CisJUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGU7CisKKwlTcGluTG9ja0FjcXVpcmUoJndz aGFyZWQtPm11dGV4KTsKKwl4YWN0X3N0YXRlID0gd3NoYXJlZC0+eGFjdF9zdGF0ZTsKKwlTcGlu TG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKKworCXJldHVybiB4YWN0X3N0YXRlOworfQor CisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbi4KKyAq Lwordm9pZAorcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvKQoreworCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsKK30KKworLyoKKyAq IEZvcm0gYSB1bmlxdWUgc2F2ZXBvaW50IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24uCisgKgorICogTm90ZSB0aGF0IGRpZmZlcmVudCBzdWJzY3JpcHRpb25zIGZvciBwdWJsaWNh dGlvbnMgb24gZGlmZmVyZW50IG5vZGVzIGNhbgorICogcmVjZWl2ZSBzYW1lIHJlbW90ZSB4aWQs IHNvIHdlIG5lZWQgdG8gdXNlIHN1YnNjcmlwdGlvbiBpZCBhbG9uZyB3aXRoIGl0LgorICoKKyAq IFJldHVybiB0aGUgbmFtZSBpbiB0aGUgc3VwcGxpZWQgYnVmZmVyLgorICovCitzdGF0aWMgdm9p ZAorcGFfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIg KnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1 XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBh IHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0 aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVk IHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNh dmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byByb2xsYmFjayB0byBpdAorICogaWYgcmVx dWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVu dF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gdG9w X3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCisJ eworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsK KworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwK KwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZp bmluZyBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3QgYmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sg dG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkp CisJCXsKKwkJCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCQkJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCisJ CS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBz dWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FWRVBPSU5UIGluc2lkZSBhIHRy YW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigpKS4KKwkJICov CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBl bmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOworCX0KK30KKworLyogUmVzZXQgdGhlIGxpc3QgdGhhdCBtYWludGFpbnMgc3Vi dHJhbnNhY3Rpb25zLiAqLwordm9pZAorcGFfcmVzZXRfc3VidHJhbnModm9pZCkKK3sKKwkvKgor CSAqIFdlIGRvbid0IG5lZWQgdG8gZnJlZSB0aGlzIGV4cGxpY2l0bHkgYXMgdGhlIGFsbG9jYXRl ZCBtZW1vcnkgd2lsbCBiZQorCSAqIGZyZWVkIGF0IHRoZSB0cmFuc2FjdGlvbiBlbmQuCisJICov CisJc3VieGFjdGxpc3QgPSBOSUw7Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1l c3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgaW4gYSBwYXJhbGxlbAorICog YXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVh bUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZCA9IGFib3J0X2Rh dGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0X2RhdGEtPnN1YnhpZDsKKwor CS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcg ZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4gY2FzZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7 CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBh Ym9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAqIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3Qu CisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJeworCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBh cmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisKKwkJLyoKKwkJICogUmVs ZWFzZSB0aGUgbG9jayBhcyB3ZSBtaWdodCBiZSBwcm9jZXNzaW5nIGFuIGVtcHR5IHN0cmVhbWlu ZworCQkgKiB0cmFuc2FjdGlvbiBpbiB3aGljaCBjYXNlIHRoZSBsb2NrIHdvbid0IGJlIHJlbGVh c2VkIGR1cmluZworCQkgKiB0cmFuc2FjdGlvbiByb2xsYmFjay4KKwkJICovCisJCXBhX3VubG9j a190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCUFib3J0Q3VycmVu dFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlF bmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCQl9CisKKwkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkvKiBPSywgc28gaXQncyBh IHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuICovCisJCWludAkJCWk7CisJCWNo YXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3Jp cHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERF QlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qCisJCSAqIFNlYXJjaCB0 aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0IHRyYWNrZWQgZm9yIHRoZQorCQkg KiBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCSAqCisJCSAqIE5vdGUgdGhhdCBm b3IgYW4gZW1wdHkgc3ViLXRyYW5zYWN0aW9uIHdlIHdvbid0IGZpbmQgdGhlIHN1YnhpZAorCQkg KiBoZXJlLgorCQkgKi8KKwkJZm9yIChpID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsg aSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgeGlkX3RtcCA9IGxmaXJzdF94aWQo bGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwgaSkpOworCisJCQlpZiAoeGlkX3RtcCA9PSBzdWJ4 aWQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOworCQkJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4 YWN0bGlzdCwgaSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBTZXQg dGhlIGZpbGVzZXQgc3RhdGUgZm9yIGEgcGFydGljdWxhciBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNldCBvbmNlIHRoZSBsZWFkZXIgd29ya2VyIHNlcmlh bGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZpbGUKKyAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQg YnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0 ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkgUGFydGlhbEZpbGVT ZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0 ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBmaWxlc2V0X3N0YXRlOworCisJaWYgKGZp bGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVy X2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisK Ky8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBhcnRpYWxGaWxlU2V0U3RhdGUKK3BhX2dldF9maWxl c2V0X3N0YXRlKHZvaWQpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOwor CisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKworCVNwaW5Mb2NrQWNxdWly ZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVs U2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJl ZC0+bXV0ZXgpOworCisJcmV0dXJuIGZpbGVzZXRfc3RhdGU7Cit9CisKKy8qCisgKiBIZWxwZXIg ZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBi bG9jay4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19T VFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHN0cmVhbSBsb2NrLgorICoKKyAqIFJl ZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSB0byBzZWUgaG93IHRoZSBzdHJlYW0g bG9jayBpcyB1c2VkLgorICovCit2b2lkCitwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9u KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQ TFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFfdW5sb2NrX3N0cmVhbShU cmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFu c2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJ CQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9CisKKy8qCisgKiBI ZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIGxv Y2FsIHRyYW5zYWN0aW9uCisgKiBhcHBseS4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8g UEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiB0cmFu c2FjdGlvbiBsb2NrLgorICoKKyAqIE5vdGUgdGhhdCBhbGwgdGhlIGNhbGxlcnMgbXVzdCBwYXNz IGEgcmVtb3RlIHRyYW5zYWN0aW9uIElEIGluc3RlYWQgb2YgYQorICogbG9jYWwgdHJhbnNhY3Rp b24gSUQgYXMgeGlkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIElEIHdp bGwKKyAqIG9ubHkgYmUgYXNzaWduZWQgd2hpbGUgYXBwbHlpbmcgdGhlIGZpcnN0IGNoYW5nZSBp biB0aGUgcGFyYWxsZWwgYXBwbHkgYnV0CisgKiBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZpcnN0 IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGJsb2NrZWQKKyAqIGJ5IGEg Y29uY3VycmVudGx5IGV4ZWN1dGluZyB0cmFuc2FjdGlvbiBpbiBhbm90aGVyIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4gV2UKKyAqIGNhbiBvbmx5IGNvbW11bmljYXRlIHRoZSBsb2NhbCB0cmFuc2Fj dGlvbiBpZCB0byB0aGUgbGVhZGVyIGFmdGVyIGFwcGx5aW5nCisgKiB0aGUgZmlyc3QgY2hhbmdl IHNvIGl0IHdvbid0IGJlIGFibGUgdG8gd2FpdCBhZnRlciBzZW5kaW5nIHRoZSB4YWN0IGZpbmlz aAorICogY29tbWFuZCB1c2luZyB0aGlzIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhlIHRyYW5zYWN0aW9uIGxvY2sgaXMKKyAq IHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQs IExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZ X0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfdHJhbnNhY3Rpb24o VHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJh bnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJ CQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2RlKTsKK30KKworLyoKKyAqIERl Y3JlbWVudCB0aGUgbnVtYmVyIG9mIHBlbmRpbmcgc3RyZWFtaW5nIGJsb2NrcyBhbmQgd2FpdCBv biB0aGUgc3RyZWFtIGxvY2sKKyAqIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgYmxvY2sgYXZhaWxh YmxlLgorICovCit2b2lkCitwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKQorewor CUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwkvKgorCSAqIEl0IGlzIG9u bHkgcG9zc2libGUgdG8gbm90IGhhdmUgYW55IHBlbmRpbmcgc3RyZWFtIGNodW5rcyB3aGVuIHdl IGFyZQorCSAqIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMuCisJICovCisJaWYgKHBnX2F0b21p Y19yZWFkX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQpID09IDAp CisJeworCQlpZiAocGFfaGFzX3Nwb29sZWRfbWVzc2FnZV9wZW5kaW5nKCkpCisJCQlyZXR1cm47 CisKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgcGVuZGluZyBzdHJlYW1pbmcgY2h1bmsgMCIpOwor CX0KKworCWlmIChwZ19hdG9taWNfc3ViX2ZldGNoX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVu ZGluZ19zdHJlYW1fY291bnQsIDEpID09IDApCisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFs bGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KK30KKworLyoKKyAqIEZp bmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gdGhlIGxlYWRlciBh cHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbywgWExvZ1JlY1B0ciByZW1vdGVfbHNuKQoreworCUFzc2VydChhbV9sZWFk ZXJfYXBwbHlfd29ya2VyKCkpOworCisJLyoKKwkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3Qg bG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KKwkgKiBjb250aW51ZSB0byBy ZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCSAqLworCXBhX3VubG9ja19zdHJlYW0od2luZm8t PnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogV2FpdCBmb3Ig dGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21t aXQKKwkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRl cGVuZGVuY2llcyBhbmQKKwkgKiBkZWFkbG9ja3MuCisJICovCisJcGFfd2FpdF9mb3JfeGFjdF9m aW5pc2god2luZm8pOworCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKHJlbW90ZV9sc24pKQor CQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2Nv bW1pdF9lbmQpOworCisJcGFfZnJlZV93b3JrZXIod2luZm8pOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggMmNjMGFjOWViMC4uMzNmZGJkYzY3MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC04MjIsMTAgKzgyMiwx MSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJ CXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNb aV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5y ZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJv cnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVy QnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJ CQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAKIAkvKiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRz ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggNzM1 OTRjNjk4YS4uYmE5NTRhYzJhMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bGF1bmNoZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogLyogR1VDIHZhcmlhYmxlcyAqLwogaW50CQkJ bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJl cFdvcmtlciA9IE5VTEw7CiAKQEAgLTc0LDYgKzc1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJl cF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dv cmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgaW50CWxvZ2lj YWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1p dF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMTUyLDggKzE1NCwxMCBAQCBnZXRfc3Vi c2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVh bmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRv IGF0dGFjaC4KKyAqCisgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGF0dGFjaCB3YXMgc3VjY2Vzc2Z1 bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVwbGljYXRpb25Xb3Jr ZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAgIHVpbnQxNiBnZW5l cmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAgLTE2 OSwxMSArMTczLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7IG5v IG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMg c3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29ya2VyLT5pbl91c2Ug fHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsKIAkJfQogCiAJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg4LDcgKzE5Miw3IEBAIFdh aXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJ CQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJbG9naWNhbHJlcF93 b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAtMjEw LDYgKzIxNCw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29y a2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkgYW5kIHNlYXJjaGVz IGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24gaWQgYW5kIHJlbGlk LgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3JrZXIgKgogbG9naWNh bHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcp CkBAIC0yMjQsNiArMjMwLDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBP aWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAqdyA9 ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCWNvbnRpbnVl OworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQgPT0g cmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNjAsMTEg KzI3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9y dW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBp ZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBsb2dpY2FsIHJlcGxpY2F0aW9uIGJhY2tncm91bmQg d29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFs c2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1bmNo KE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0J CQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJf ZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUg KmJnd19oYW5kbGU7CkBAIC0yNzMsNyArMjg1LDEyIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5j aChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAog CWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJaW50 CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFwcGx5d29ya2VyczsKIAlUaW1lc3Rh bXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID0gKHN1Yndvcmtlcl9k c20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjayAtIHRhYmxlc3lu YyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29ya2VyICovCisJQXNzZXJ0KCEoaXNfcGFyYWxsZWxf YXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwK IAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MSw3ICszNjgsMjAgQEAgcmV0cnk6CiAJ aWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2VycyA+PSBtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJbnBhcmFsbGVsYXBwbHl3 b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkgKiBS ZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJlYWNo ZWQgdGhlIGxpbWl0CisJICogcGVyIHN1YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyICYmCisJCW5wYXJhbGxlbGFwcGx5d29ya2VycyA+PSBtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCXsKKwkJTFdMb2NrUmVsZWFzZShM b2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1 LDcgKzM5NSw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9M SU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNl IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1 cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAs NiArNDEwLDggQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktO T1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2Vy LT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNf cGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXIt PnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFz dF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxh c3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1l KTsKQEAgLTM5NywxOSArNDI5LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFC QVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNv dmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVO LCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhM RU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIp CisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVs QXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25h bWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJl bGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNh bCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQs IHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRm KGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFy YWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQog CQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJn dy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJ CQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1 Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYo Ymd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3 b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJH V19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cu Ymd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9h cHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6 ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtl cigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBz byBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ2OSwyMyBAQCByZXRy eToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAog CQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJo aW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkp OwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBp dCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBn ZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2Vy QXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9w IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwg YW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5h bCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMg ZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lk IHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9p bnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWly ZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxy ZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5v dGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJ bk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1l bWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3 aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjMsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZl cmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmlu X3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2Nr UmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBX b3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29y a2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzMSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lk IHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4u LiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2VyLT5w cm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwog CWZvciAoOzspCkBAIC01MjMsNiArNTU3LDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lk IHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNhbHJl cF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZh bHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtl cih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJ R1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQor CisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAqIE5v ZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0byB0 aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xl YW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywg dWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJQXNz ZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQp OworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNzZXJ0 KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9wIHRo ZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2 ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2Vy LT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHSU5U KTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1LDEx ICs2NzYsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAvKgot ICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICogU3Rv cCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwogc3Rh dGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3AgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIo KSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJ CSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVy bWluYXRpb24gbWVzc2FnZSBhbmQgc2VuZGluZyBpdCB0byBsb2dzCisJCSAqIHdoZW4gdGhlIHNh bWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlwYV9k ZXRhY2hfYWxsX2Vycm9yX21xKCk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2Vy TG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQo TXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMp CisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmly c3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxy ZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFj Y2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJ VkUpOwogCkBAIC02MjIsNiArNzMyLDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdv cmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOwor CXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxl bF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjUzLDYgKzc2NSwxMyBAQCBsb2dpY2FscmVw X3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNh bFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxv Y2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4KKwkgKiBwYXJh bGxlbCBhcHBseSBtb2RlIGFuZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIK KwkgKiB0ZXJtaW5hdGVzLCBzbyBtYW51YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhl IHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0Qs IHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldha2V1cCgpOwogfQogCkBAIC02ODAsNiArNzk5LDMz IEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQogCXJldHVybiByZXM7 CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBub3QgbmVj ZXNzYXJpbHkgcnVubmluZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEgc3Vic2Ny aXB0aW9uLgorICovCitzdGF0aWMgaW50Citsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChPaWQg c3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExXTG9ja0hl bGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNjYW4gYWxsIGF0dGFj aGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hpY2gKKwkg KiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9yIChpID0gMDsgaSA8 IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2ljYWxSZXBX b3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+c3ViaWQg PT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVzKys7CisJfQorCisJ cmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlDb21w dXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQpA QCAtODY5LDcgKzEwMTUsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJ CQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2lj YWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJ CQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIs IEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05NTIs NiArMTA5OCwxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykK IAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNv bnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAq LworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7CisK IAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2JqZWN0 SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQKaW5kZXggMWI5ZjA3MmVkYy4uYjc4YmZiYTEwYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAogIyBD b3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAK IGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKyAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCiAg ICdkZWNvZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCBmMTM0ZTQ0ODc4Li44YjA4Mzc4NjY1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNzUsMTIg KzEwNzUsMjAgQEAgUmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0dW0g YXJnKQogICogYXJyYXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGluZwog ICogcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25seSBv bmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJl bnQKLSAqIGNhY2hlZCB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZp b3VzIHZhbHVlIGlzIHRvcm4gZG93bgotICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQo KS4KKyAqIE5vcm1hbGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVy IHByb2Nlc3Mgc28gdGhlIGNhY2hlZAorICogdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFm dGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24gd2l0aAorICogcmVwbG9yaWdpbl9z ZXNzaW9uX3Jlc2V0KCkuIEZvciB0aGlzIG5vcm1hbCBjYXNlIHBhc3MgYWNxdWlyZWRfYnkgPSAw CisgKiAobWVhbmluZyB0aGUgc2xvdCBpcyBub3QgYWxsb3dlZCB0byBiZSBhbHJlYWR5IGFjcXVp cmVkIGJ5IGFub3RoZXIgcHJvY2VzcykuCisgKgorICogSG93ZXZlciwgc29tZXRpbWVzIG11bHRp cGxlIHByb2Nlc3NlcyBjYW4gc2FmZWx5IHJlLXVzZSB0aGUgc2FtZSBvcmlnaW4gc2xvdAorICog KGZvciBleGFtcGxlLCBtdWx0aXBsZSBwYXJhbGxlbCBhcHBseSBwcm9jZXNzZXMgY2FuIHNhZmVs eSB1c2UgdGhlIHNhbWUKKyAqIG9yaWdpbiwgcHJvdmlkZWQgdGhleSBtYWludGFpbiBjb21taXQg b3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGlt ZSkuIEZvciB0aGlzIGNhc2UgdGhlIGZpcnN0IHByb2Nlc3MgbXVzdCBwYXNzIGFjcXVpcmVkX2J5 ID0KKyAqIDAsIGFuZCB0aGVuIHRoZSBvdGhlciBwcm9jZXNzZXMgc2hhcmluZyB0aGF0IHNhbWUg b3JpZ2luIGNhbiBwYXNzCisgKiBhY3F1aXJlZF9ieSA9IFBJRCBvZiB0aGUgZmlyc3QgcHJvY2Vz cy4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUp CityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVk X2J5KQogewogCXN0YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAt MTEyMiw3ICsxMTMwLDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5v ZGUpCiAJCWlmIChjdXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJ ZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRl LT5hY3F1aXJlZF9ieSAhPSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcg KzExNjEsMTEgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAK IAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVw T3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBN eVByb2NQaWQ7CisJaWYgKGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25f c3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGlj YXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ICE9IGFjcXVpcmVkX2J5KQorCQllbG9nKEVSUk9SLCAi Y291bGQgbm90IGZpbmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24gb3Jp Z2luIHdpdGggT0lEICV1IHdoaWNoIHdhcyBhY3F1aXJlZCBieSAlZCIsCisJCQkgbm9kZSwgYWNx dWlyZWRfYnkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBA IC0xMzM3LDcgKzEzNDksNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQ R19GVU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1 bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9i eV9uYW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsK KwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYwppbmRleCBmNWYyYmMyNGQ4Li43MjNiYTQ2NjliIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCkBAIC0xMTY0LDEwICsxMTY0LDE0IEBAIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21t aXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0u IE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxl dmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMgdHJ1 ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lz ZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4 aWQpCisJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9sc24s CisJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2luZm8p CiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIApA QCAtMTE3NiwxOSArMTE4MCw0MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlw cV9zZW5kaW50MzIob3V0LCB4aWQpOwogCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisKKwlp ZiAod3JpdGVfYWJvcnRfaW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7 CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQg U1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9y dF9pbmZvIGlzIHRydWUsIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMs CisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1f YWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2Fj dGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g aW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJ CQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlB c3NlcnQoYWJvcnRfZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4s IDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlk ID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK KwlpZiAocmVhZF9hYm9ydF9pbmZvKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFf Z2V0bXNnaW50NjQoaW4pOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50 NjQoaW4pOworCX0KKwllbHNlCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRl eCA5MjIwNGJkOWNkLi5iZWM4OTNkYTA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtMjg3Myw3ICsyODczLDggQEAgUmVvcmRlckJ1 ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwK ICAqIGRpc2suCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJ CQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47 CiAKQEAgLTI4ODQsNiArMjg4NSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVM TCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7 CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUg YWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDk0ZTgxM2Fj NTMuLmVmMGZlMTNjMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYwpAQCAtMTQsNyArMTQsNyBAQAogICoJICBUaGUgaW5pdGlhbCBkYXRhIHN5bmNocm9u aXphdGlvbiBpcyBkb25lIHNlcGFyYXRlbHkgZm9yIGVhY2ggdGFibGUsCiAgKgkgIGluIGEgc2Vw YXJhdGUgYXBwbHkgd29ya2VyIHRoYXQgb25seSBmZXRjaGVzIHRoZSBpbml0aWFsIHNuYXBzaG90 IGRhdGEKICAqCSAgZnJvbSB0aGUgcHVibGlzaGVyIGFuZCB0aGVuIHN5bmNocm9uaXplcyB0aGUg cG9zaXRpb24gaW4gdGhlIHN0cmVhbSB3aXRoCi0gKgkgIHRoZSBtYWluIGFwcGx5IHdvcmtlci4K KyAqCSAgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCiAgKgogICoJICBUaGVyZSBhcmUgc2V2ZXJh bCByZWFzb25zIGZvciBkb2luZyB0aGUgc3luY2hyb25pemF0aW9uIHRoaXMgd2F5OgogICoJICAg LSBJdCBhbGxvd3MgdXMgdG8gcGFyYWxsZWxpemUgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6 YXRpb24KQEAgLTE1Myw3ICsxNTMsNyBAQCBmaW5pc2hfc3luY193b3JrZXIodm9pZCkKIAkJCQkJ Z2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCi0JLyogRmluZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHNp Z25hbCBpdC4gKi8KKwkvKiBGaW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBzaWduYWwg aXQuICovCiAJbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIEludmFsaWRPaWQpOwogCiAJLyogU3RvcCBncmFjZWZ1bGx5ICovCkBAIC02MDksNyArNjA5 LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50 X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15 U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNl cmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+ cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+ bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwxNCBA QCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQog eworCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHRoZXkg b25seSBvcGVyYXRlIG9uIHRhYmxlcworCSAqIHRoYXQgYXJlIGluIGEgUkVBRFkgc3RhdGUuIFNl ZSBwYV9jYW5fc3RhcnQoKSBhbmQKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKCku CisJICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlp ZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9z eW5jKGN1cnJlbnRfbHNuKTsKIAllbHNlCkBAIC0xMjQ3LDcgKzEyNTYsNyBAQCBMb2dpY2FsUmVw U3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkgKiBI ZXJlIHdlIHVzZSB0aGUgc2xvdCBuYW1lIGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBuYW1l IGFzIHRoZQotCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZy b20gdGhlIG1haW4gYXBwbHkgd29ya2VyLAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQg aXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28gdGhh dCBzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8KIAlM b2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KQEAgLTEyOTUsNyArMTMwNCw3IEBAIExvZ2ljYWxSZXBT eW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhp cyB0YWJsZXN5bmMgd2FzIGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2lu X2J5X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo b3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3Mg PSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3ICsx NDE1LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFy dHBvcykKIAkJCQkJCSAgIHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cg Ki8gKTsKIAkJVW5sb2NrUmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQp OworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ3MCw4 IEBAIGNvcHlfdGFibGVfZG9uZToKIAlTcGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtl ci0+cmVsbXV0ZXgpOwogCiAJLyoKLQkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWluIGFw cGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0byBs ZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRoZW4g cmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRfZm9y X3dvcmtlcl9zdGF0ZV9jaGFuZ2UoU1VCUkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBzbG90 bmFtZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDk2Nzcy ZTRkNzMuLjFmYzExYWQ2MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwpAQCAtMjIsOCArMjIsMTIgQEAKICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5z YWN0aW9ucyBleGNlZWRpbmcgYSBtZW1vcnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJl IG5vdCBhcHBsaWVkIGltbWVkaWF0ZWx5LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRl bgotICogdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRo ZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2luZyBv bmUgb2YgdHdvIGFwcHJvYWNoZXM6CisgKgorICogMSkgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcworICoKKyAqIFRoaXMgYXBw cm9hY2ggaXMgdXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0 cmVhbWluZworICogb3B0aW9uIGFzIG9uLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9u LXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0 byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0 cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTUwLDYgKzU0LDEyIEBACiAgKiB0aGUgZmlsZSB3ZSBkZXNp cmVkIGFjcm9zcyBtdWx0aXBsZSBzdHJlYW0tb3BlbiBjYWxscyBmb3IgdGhlIHNhbWUKICAqIHRy YW5zYWN0aW9uLgogICoKKyAqIDIpIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogVGhp cyBhcHByb2FjaCBpcyB1c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9u J3Mgc3RyZWFtaW5nCisgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFNlZSBsb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYyBmb3IgaW5mb3JtYXRpb24gYWJvdXQKKyAqIHRoaXMgYXBwcm9hY2guCisg KgogICogVFdPX1BIQVNFIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICogVHdvIHBoYXNlIHRyYW5zYWN0aW9ucyBhcmUgcmVwbGF5ZWQgYXQgcHJlcGFyZSBhbmQgdGhl biBjb21taXR0ZWQgb3IKQEAgLTIzMyw3ICsyNDMsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlF cnJvckNhbGxiYWNrQXJnCiAJY2hhcgkgICAqb3JpZ2luX25hbWU7CiB9IEFwcGx5RXJyb3JDYWxs YmFja0FyZzsKIAotc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxs YmFja19hcmcgPQorLyoKKyAqIFRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gZm9yIHRoZSBjaGFuZ2Vz IGluIHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBUUkFOU19MRUFERVJfQVBQTFk6CisgKiBUaGlz IGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQg Y2hhbmdlcyBvZiB0aGUKKyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGJ5IHRo ZSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9u IG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5 bmMKKyAqIHdvcmtlci4gQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5k IHRoZW4gYXBwbGllZCB3aGVuIHRoZQorICogZmluYWwgY29tbWl0IGFycml2ZXMuCisgKgorICog VFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0 IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVlZCB0byBzZW5kCisgKiB0 aGUgY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5TX0xF QURFUl9QQVJUSUFMX1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJl IGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBoYXZlIHNlbnQgc29tZQorICogY2hhbmdl cyBkaXJlY3RseSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCB0aGUgcmVtYWluaW5n IGNoYW5nZXMgYXJlCisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZSwgZHVlIHRvIHRpbWVvdXQgd2hp bGUgc2VuZGluZyBkYXRhLiBUaGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aWxsIGFwcGx5 IHRoZXNlIHNlcmlhbGl6ZWQgY2hhbmdlcyB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4K KyAqCisgKiBXZSBjYW4ndCB1c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRSBmb3IgdGhpcyBjYXNl IGJlY2F1c2UsIGluIGFkZGl0aW9uIHRvCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzLCB0aGUgbGVh ZGVyIHdvcmtlciBhbHNvIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKyAqIFNUUkVBTV9YWFggbWVz c2FnZSB0byBhIGZpbGUsIGFuZCB3YWl0IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRv CisgKiBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rp b24gZmluaXNoIGNvbW1hbmQuIFNvCisgKiB0aGlzIG5ldyBhY3Rpb24gd2FzIGludHJvZHVjZWQg dG8ga2VlcCB0aGUgY29kZSBhbmQgbG9naWMgY2xlYXIuCisgKgorICogVFJBTlNfUEFSQUxMRUxf QVBQTFk6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mCisgKiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxp ZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJLyogVGhl IGFjdGlvbiBmb3Igbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVS X0FQUExZLAorCisJLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlU UkFOU19MRUFERVJfU0VSSUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAor CVRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRSwKKwlUUkFOU19QQVJBTExFTF9BUFBMWQor fSBUcmFuc0FwcGx5QWN0aW9uOworCisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJy b3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0g MCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Myw3ICsyOTgsOSBAQCBzdGF0aWMgQXBwbHlFcnJvckNh bGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVM TCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxM OworRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxM OworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29u dGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI2MiwxNyArMzE5LDI2IEBAIHN0YXRpYyBib29s IGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIHN0YXRpYyBUcmFuc2FjdGlvbklk IHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorLyoKKyAqIFRoZSBudW1iZXIg b2YgY2hhbmdlcyBhcHBsaWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0 cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25j aGFuZ2VzID0gMDsKKwogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmlj YXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlw dGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBz dWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBz dG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBl dmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQg c3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBn ZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZp bmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5v dAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5 IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxs eSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFu c2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vi c2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdl IGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNO IGJlZm9yZSBhcHBseWluZworICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJh bGxlbCBhcHBseSB3b3JrZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIu CiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dS ZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMxMiwyMyArMzc4LDE2 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAg KiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5nZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNh Y3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3Vi aWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwogc3Rh dGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsK K3N0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4 aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3Nl X2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2 cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIHN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1h eWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJz Y3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Yg c3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBz KTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVw Q29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2Vy dF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLApAQCAtMzUyLDE5ICs0MTEsMzIgQEAgc3RhdGljIHZvaWQgYXBwbHlf aGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1 dGUgR0lEIGZvciB0d29fcGhhc2UgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFz ZVRyYW5zYWN0aW9uR2lkKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwg aW50IHN6Z2lkKTsKIAotLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwg dGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZv ciBza2lwcGluZyBjaGFuZ2VzICovCiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19j aGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5n X2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24o WExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBj YWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsK IHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBw bHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJ CQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0 aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBj b25zdCBjaGFyICoKK2dldF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNf d29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9u aXphdGlvbiB3b3JrZXIiKTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkK KwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7 CisJZWxzZQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsK K30KKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgog ICoKQEAgLTM5NCwxOSArNDY2LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxS ZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBm b3IgaW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0 ZSB3b3JrZXIgcHJvY2VzcyBydW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5 IHRvIHNraXAKLSAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJp bmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2Ug bmVlZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0 ZSBiZWNhdXNlCiAgKiBpdCBtaWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNs b3QgY29uc2lzdGVudCBwb2ludCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQg cmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24g d2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxf bHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Ig c3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJh bGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRo ZSB0YXJnZXQgdGFibGUgaW4gdGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFE WSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRo ZSBjaGFuZ2UgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4K KyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUg YXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3 b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBp ZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBV QkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19z dWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICov CiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4g TXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYg KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25p emUgcmVsJ3MgdGhhdCBhcmUgaW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUg IT0gU1VCUkVMX1NUQVRFX1JFQURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9V TktOT1dOKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1Rf Tk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg c3RvcCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJD YW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXpl ZC4iKSkpOworCisJCXJldHVybiByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9 CiAJZWxzZQogCQlyZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJ CQkJKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTIsNDMgKzU0 OCwxMTAgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBz dHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZv ciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2Nr IG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBh IGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBJbiB0aGUgc3Ry ZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biksIGZvcgorICogc2VyaWFsaXplIG1vZGUsIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUg Zm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIHBhcmFsbGVs IG1vZGUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZCB0aGUKKyAqIGNoYW5nZXMg dG8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3 aWxsIGRlZmluZQorICogc2F2ZXBvaW50cyBpZiBuZWVkZWQuIChMT0dJQ0FMX1JFUF9NU0dfUkVM QVRJT04gb3IgTE9HSUNBTF9SRVBfTVNHX1RZUEUKKyAqIG1lc3NhZ2VzIHdpbGwgYmUgYXBwbGll ZCBieSBib3RoIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5CisgKiB3b3Jr ZXJzKS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFs c2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgorICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMgKHdoZW4gdGhlIGNoYW5nZSBpcyBlaXRoZXIgc2VyaWFsaXplZAorICog dG8gZmlsZSBvciBzZW50IHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlciksIGZhbHNlIG90aGVyd2lz ZSAocmVndWxhciBtb2RlIG9yCisgKiBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkgcGFyYWxsZWwg YXBwbHkgd29ya2VyKS4KKyAqCisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHBy b2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01T R19UWVBFLCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50 CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlk OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFw cGx5X2FjdGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CisKKwlhcHBseV9hY3Rp b24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAK IAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKQorCWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4g ZmFsc2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgbmVlZHMgdGhlIHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCisJICogd2hldGhl ciB0byBkZWZpbmUgYSBzYXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhh dCBoYXMKKwkgKiBub3QgbW92ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUgeGlkLiBXZSB3aWxsIHNl cmlhbGl6ZSB0aGlzIG1lc3NhZ2UgdG8gYQorCSAqIGZpbGUgaW4gUEFSVElBTF9TRVJJQUxJWkUg bW9kZS4KKwkgKi8KKwlvcmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogV2Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQog CSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMs IDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94 aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklP TEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGlu IHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3 IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFj dF9pbmZvX2FkZCh4aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFO U19MRUFERVJfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7CiAKLQkvKiB3cml0ZSB0 aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFj dGlvbiwgcyk7CisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNz IGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisK KwkJCS8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQkJc3RyZWFt X3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJ CQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24v dHlwZSB1cGRhdGUKKwkJCSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBw bHkgd29ya2VyLiBTZWUgZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJ CQkgKi8KKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQkJ cmV0dXJuIChhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCQlhY3Rp b24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOworCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2li bGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkg KiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJ CXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgZmFsc2UpOwogCi0JcmV0dXJu IHRydWU7CisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElB TF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgJm9yaWdpbmFsX21z Zyk7CisKKwkJCS8qIFNhbWUgcmVhc29uIGFzIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM IGNhc2UuICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04g JiYKKwkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKKworCQljYXNlIFRSQU5T X1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzICs9IDE7CisKKwkJ CS8qIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRlZC4gKi8KKwkJCXBh X3N0YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsKKwkJCXJldHVybiBmYWxz ZTsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJldHVybiBmYWxzZTsJCS8q IHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KIH0KIAogLyoKQEAgLTkyNiw4ICsxMDg5 LDExIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4 bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNz YXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGlu IHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0 aW9uQmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRo ZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygp KQorCXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLworCX0K IAogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1p bmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05NzQsNyArMTE0MCw3IEBAIGFwcGx5X2hhbmRs ZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKIApAQCAtOTk2LDYgKzExNjIsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQ UkVQQVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3 YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxl bCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3Ig dGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUo KSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNh Y3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJl bnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVu Y3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJl ZChTdHJpbmdJbmZvIHMpCkBAIC0xMDI1LDcgKzExOTcsNyBAQCBhcHBseV9oYW5kbGVfY29tbWl0 X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwpAQCAtMTAzOSw2ICsxMjExLDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFS RUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhh dCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBh cmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhhdCBjYXNlLCB3ZSBoYXZl IGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmluaXNoIGluIGFwcGx5X2hh bmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUKKyAqIG9wZXJh dGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVy LCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1c2UgZGVhZGxvY2sgb3Ig dHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9o YW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTA4MCw3ICsxMjU4LDcg QEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19k YXRhLnJvbGxiYWNrX2VuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2Rh dGEucm9sbGJhY2tfZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5n IHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwOTIsMTUgKzEyNzAsMTYgQEAgYXBw bHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRs ZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBS ZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFy ZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNv bnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTExNiwyNCArMTI5 NSw5NiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJl X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyog UmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVz c2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0 Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAot CS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9w cmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2Fj dGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkg KiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMo TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwKKwkJCQkJCQkJICAgcHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJ CQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAK LQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlv biA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFu Z2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8q IEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFf eGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlz IGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNo IHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJp YWxpemUod2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFO U19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlzdHJl YW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKHByZXBhcmVfZGF0YS54aWQsCisJCQkJCQkJCQkJIExP R0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7 CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9E T05FKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJl cGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9B UFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBw bHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUg cHJlcGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9m aWxlKCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJLyogTWFyayB0aGUg dHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRl cm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3Rf Y29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShN eVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tf dHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBw cm9jZXNzaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlk ZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBv cnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJl cGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE3MCw2ICsxNDIxLDQ3IEBAIGFwcGx5X2hhbmRsZV9v cmlnaW4oU3RyaW5nSW5mbyBzKQogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIk9SSUdJTiBtZXNzYWdl IHNlbnQgb3V0IG9mIG9yZGVyIikpKTsKIH0KIAorLyoKKyAqIEluaXRpYWxpemUgZmlsZXNldCAo aWYgbm90IGFscmVhZHkgZG9uZSkuCisgKgorICogQ3JlYXRlIGEgbmV3IGZpbGUgd2hlbiBmaXJz dF9zZWdtZW50IGlzIHRydWUsIG90aGVyd2lzZSBvcGVuIHRoZSBleGlzdGluZworICogZmlsZS4K KyAqLwordm9pZAorc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGZpcnN0X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkg KiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHll dC4gVGhpcyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUg d29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNvbnRleHQuIFdlIGNyZWF0 ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55CisJICog dHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUg c3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3Vy ZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCU15TG9naWNh bFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJ RmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJLyogT3BlbiB0aGUgc3Bvb2wgZmls ZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkvKiBJZiB0aGlzIGlzIG5v dCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJaWYg KCFmaXJzdF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKK30KKwogLyoKICAqIEhh bmRsZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwpAQCAtMTE3NywyMSArMTQ2OSwxNyBAQCBz dGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiB7CiAJ Ym9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJ VHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJl Zm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAq czsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRl cm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3Rh cnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBi ZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVz eW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIg cHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9u IGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICog c3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBh IHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsK IApAQCAtMTIwNSw5NiArMTQ5MywyMzggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJp bmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIElu dmFsaWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3Ry ZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9y IHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJt YW5lbnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJl YW1pbmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBm b3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNv dWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBi dXQKLQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4K LQkgKi8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQor CS8qIFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4gKi8KKwlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJcGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94 aWQpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJl YW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlD b250ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJLyoKKwkJCSAqIEZ1 bmN0aW9uIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcwor CQkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVu bGVzcyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2ls bCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4g V2UgbmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUs IHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1Ynhh Y3QgaW5mby4KKwkJCSAqLworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZp cnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2lj YWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9U T19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7Ci0JfQorCQkJLyoKKwkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhl IGNoYW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBmb3Ig dGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jaworCQkJICogdW50aWwgdGhlIGVu ZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFNvLCB3ZSBkb24ndCBuZWVkIHRvIHJlbGVhc2UKKwkJCSAq IHRoZSBsb2NrIG9yIGluY3JlbWVudCB0aGUgc3RyZWFtIGNvdW50IGluIHRoYXQgY2FzZS4KKwkJ CSAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsK KwkJCQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5CisJCQkJICogd29ya2VyIGNhbiBjb250aW51ZSB0byByZWNlaXZlIGNo YW5nZXMuCisJCQkJICovCisJCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCQlwYV91bmxvY2tf c3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkvKiBv cGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5f ZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50 KTsKKwkJCQkvKgorCQkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9j a3Mgd2FpdGluZyB0byBiZQorCQkJCSAqIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisJCQkJICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQt PnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJz dCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2Vn bWVudCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3Ry ZWFtX3hpZCk7CisJCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhp cyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7 CisJCQkJYnJlYWs7CisJCQl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5J TkcsIE5VTEwpOworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGlu ZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8g c3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlh bF9zZXJpYWxpemUod2luZm8sICFmaXJzdF9zZWdtZW50KTsKIAotCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElB TF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogT3BlbiB0aGUg c3Bvb2wgZmlsZSB1bmxlc3MgaXQgd2FzIGFscmVhZHkgb3BlbmVkIHdoZW4gc3dpdGNoaW5nCisJ CQkgKiB0byBzZXJpYWxpemUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4KKwkJCSAq IHN0cmVhbV9zdGFydF9pbnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0 b3AuCisJCQkgKi8KKwkJCWlmIChhcHBseV9hY3Rpb24gIT0gVFJBTlNfTEVBREVSX1NFTkRfVE9f UEFSQUxMRUwpCisJCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZpcnN0X3Nl Z21lbnQpOworCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19TVFJFQU1f U1RBUlQsICZvcmlnaW5hbF9tc2cpOworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93 b3JrZXIod2luZm8pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToK KwkJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJeworCQkJCS8qIEhvbGQgdGhlIGxvY2sgdW50aWwg dGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfbG9ja190cmFuc2FjdGlvbihN eVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBhX3NldF94 YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOworCQkJ fQorCisJCQlwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCQkJYnJlYWs7CisKKwkJZGVm YXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVB TSBTVE9QIG1lc3NhZ2UuCisgKiBVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3Rz IGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxs ZWQgd2hlbiB0aGUgc3RyZWFtX3N0YXJ0X2ludGVybmFsIGZ1bmN0aW9uIGhhcworICogYmVlbiBj YWxsZWQuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5n SW5mbyBzKQordm9pZAorc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpCiB7 Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5h bCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7Ci0KIAkvKgot CSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXpl IGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KKwkgKiBTZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0 b3BsZXZlbCB0cmFuc2FjdGlvbiwgdGhlbgorCSAqIGNsb3NlIHRoZSBzdHJlYW0gbWVzc2FnZXMg c3Bvb2wgZmlsZS4KIAkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CiAJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCS8qIFdlIG11c3Qg YmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwogCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CiAKIAkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0g ZmFsc2U7Ci0KIAkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0 UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOwotCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0 eShTVEFURV9JRExFLCBOVUxMKTsKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsK IH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJF QU0gU1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9h Ym9ydChTdHJpbmdJbmZvIHMpCithcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBz KQogewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlv bjsKIAotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoIWluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9D T0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2Fn ZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0g U1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKworCWFwcGx5X2FjdGlvbiA9 IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3 aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgor CQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJ LyoKKwkJCSAqIExvY2sgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIG1lc3NhZ2Ugc28g dGhhdCB0aGUgbGVhZGVyCisJCQkgKiBjYW4gaG9sZCB0aGUgbG9jayBmaXJzdCBhbmQgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKKwkJCSAqIGZvciBsZWFkZXIgdG8gcmVsZWFz ZSB0aGUgbG9jay4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlw YXJhbGxlbHdvcmtlci5jLgorCQkJICovCisJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVk LT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2Vy KE5VTEwpOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUg dGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3 b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBh X3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwg dGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0 cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0 cmVhbV9zdG9wX2ludGVybmFsKHN0cmVhbV94aWQpOworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93 b3JrZXIoTlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgor CQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVu ayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7CisKKwkJCS8qCisJCQkgKiBCeSB0 aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2luZyB0aGUgY2hhbmdlcyBp bgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1pbmcgYmxvY2tzLiBUaGlz IGNhbiBsZWFkIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgc3RhcnQgd2FpdGluZyBl dmVuIHdoZW4gdGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Ygc3RyZWFtcworCQkJICogaW4gdGhlIHF1 ZXVlLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZSBpcyBubyBtZXNzYWdlIGxlZnQKKwkJ CSAqIGluIHRoZSBxdWV1ZS4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICog YXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICoKKwkJCSAqIE5vdGUgdGhhdCBoZXJlIHdlIGhh dmUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB3ZSBjYW4gc3RhcnQKKwkJCSAqIHdhaXRpbmcgZXZl biB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWluZyBjaHVua3MuIFRoaXMgY2FuCisJCQkg KiBoYXBwZW4gaWYgdGhlIGxlYWRlciBzZW5kcyBhbm90aGVyIHN0cmVhbWluZyBibG9jayBhbmQg YWNxdWlyZXMKKwkJCSAqIHRoZSBzdHJlYW0gbG9jayBhZ2FpbiBhZnRlciB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGNoZWNrcworCQkJICogdGhhdCB0aGVyZSBpcyBubyBwZW5kaW5nIHN0cmVh bWluZyBibG9jayBhbmQgYmVmb3JlIGl0IGFjdHVhbGx5CisJCQkgKiBzdGFydHMgd2FpdGluZyBv biBhIGxvY2suIFdlIGNhbiBoYW5kbGUgdGhpcyBjYXNlIGJ5IG5vdAorCQkJICogYWxsb3dpbmcg dGhlIGxlYWRlciB0byBpbmNyZW1lbnQgdGhlIHN0cmVhbSBibG9jayBjb3VudCBkdXJpbmcKKwkJ CSAqIHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhY3F1aXJlcyB0aGUgbG9jayBidXQg aXQgaXMgbm90CisJCQkgKiBjbGVhciB3aGV0aGVyIHRoYXQgaXMgd29ydGggdGhlIGNvbXBsZXhp dHkuCisJCQkgKgorCQkJICogTm93LCBpZiB0aGlzIG1pc3NlZCBjaHVuayBjb250YWlucyByb2xs YmFjayB0byBzYXZlcG9pbnQsIHRoZW4KKwkJCSAqIHRoZXJlIGlzIGEgcmlzayBvZiBkZWFkbG9j ayB3aGljaCBwcm9iYWJseSBzaG91bGRuJ3QgaGFwcGVuCisJCQkgKiBhZnRlciByZXN0YXJ0Lgor CQkJICovCisJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jaygpOworCQkJYnJlYWs7CisK KwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJl YW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJLyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGNvdWxkIGJlIGluIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB3ZQorCSAqIG5l ZWQgdG8gcmVwb3J0IHRoZSBzdGF0ZSBhcyBTVEFURV9JRExFSU5UUkFOU0FDVElPTi4KKwkgKi8K KwlpZiAoSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpKQorCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwllbHNlCisJCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAKLQlsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfaW5mbygpOworfQogCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHRvIGhhbmRsZSBTVFJFQU0g QUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMKKyAqIHNlcmlhbGl6ZWQgdG8g ZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3N0cmVhbV9hYm9ydF9pbnRlcm5hbChUcmFuc2FjdGlv bklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCit7CiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJ RHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28K IAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJ aWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhp ZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxOCw4ICsx NzQ4LDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJ CWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1Ymlk eCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFk KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQ0LDQ3ICsxNzcyLDIzNSBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3Vi eGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJ CXJldHVybjsKIAkJfQogCi0JCS8qIG9wZW4gdGhlIGNoYW5nZXMgZmlsZSAqLwotCQljaGFuZ2Vz X2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JCWZkID0g QnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBh dGgsCi0JCQkJCQkJCU9fUkRXUiwgZmFsc2UpOworCQkvKiBvcGVuIHRoZSBjaGFuZ2VzIGZpbGUg Ki8KKwkJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQpOworCQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0LCBwYXRoLAorCQkJCQkJCQlPX1JEV1IsIGZhbHNlKTsKKworCQkvKiBPSywgdHJ1 bmNhdGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLworCQlCdWZGaWxlVHJ1bmNhdGVG aWxlU2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8sCisJCQkJCQkJ ICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsKKwkJQnVmRmlsZUNsb3Nl KGZkKTsKKworCQkvKiBkaXNjYXJkIHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAqLworCQlzdWJ4 YWN0X2RhdGEubnN1YnhhY3RzID0gc3ViaWR4OworCisJCS8qIHdyaXRlIHRoZSB1cGRhdGVkIHN1 YnhhY3QgbGlzdCAqLworCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3Nh Z2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2 ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEg b3JpZ2luYWxfbXNnID0gKnM7CisJYm9vbAkJdG9wbGV2ZWxfeGFjdDsKKworCWlmIChpbl9zdHJl YW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JU IG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBXZSByZWNlaXZlIGFib3J0 IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBjYW4gYXBwbHkgaW4gcGFyYWxsZWwuICovCisJbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwKKwkJCQkJCQkJIE15TG9n aWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7 CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4aWQ7CisJdG9wbGV2ZWxfeGFjdCA9ICh4aWQgPT0g c3VieGlkKTsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9k YXRhLmFib3J0X2xzbik7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlf YWN0aW9uKHhpZCwgJndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCisJCQkvKgorCQkJICogV2UgYXJlIGluIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNl cmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJc3RyZWFtX2Fib3J0X2ludGVybmFsKHhpZCwg c3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogRm9yIHRoZSBjYXNlIG9mIGFi b3J0aW5nIHRoZSBzdWJ0cmFuc2FjdGlvbiwgd2UgaW5jcmVtZW50IHRoZQorCQkJICogbnVtYmVy IG9mIHN0cmVhbWluZyBibG9ja3MgYW5kIHRha2UgdGhlIGxvY2sgYWdhaW4gYmVmb3JlCisJCQkg KiBzZW5kaW5nIHRoZSBTVFJFQU1fQUJPUlQgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFw cGx5CisJCQkgKiB3b3JrZXIgd2lsbCB3YWl0IG9uIHRoZSBsb2NrIGZvciB0aGUgbmV4dCBzZXQg b2YgY2hhbmdlcyBhZnRlcgorCQkJICogcHJvY2Vzc2luZyB0aGUgU1RSRUFNX0FCT1JUIG1lc3Nh Z2UgaWYgaXQgaXMgbm90IGFscmVhZHkKKwkJCSAqIHdhaXRpbmcgZm9yIFNUUkVBTV9TVE9QIG1l c3NhZ2UuCisJCQkgKgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHBlcmZvcm0gdGhpcyBsb2Nr aW5nIGJlZm9yZSBzZW5kaW5nIHRoZQorCQkJICogU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhh dCB0aGUgbGVhZGVyIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0CisJCQkgKiBhbmQgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8KKwkJCSAqIHJlbGVh c2UgdGhlIGxvY2suIFRoaXMgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSBkbyBpbgorCQkJICogYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJ CQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFj dCkKKwkJCXsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3Ry ZWFtX2NvdW50LCAxKTsKKwkJCQlwYV9sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOworCQkJfQorCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEp KQorCQkJeworCQkJCS8qCisJCQkJICogVW5saWtlIFNUUkVBTV9DT01NSVQgYW5kIFNUUkVBTV9Q UkVQQVJFLCB3ZSBkb24ndCBuZWVkIHRvCisJCQkJICogd2FpdCBoZXJlIGZvciB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHRvIGZpbmlzaCBhcyB0aGF0CisJCQkJICogaXMgbm90IHJlcXVpcmVk IHRvIG1haW50YWluIHRoZSBjb21taXQgb3JkZXIgYW5kIHdvbid0IGhhdmUKKwkJCQkgKiB0aGUg cmlzayBvZiBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJ CSAqIGRlYWRsb2Nrcy4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCBiZWZvcmUgdGhlIHBh cmFsbGVsCisJCQkJICogd29ya2VyIGZpbmlzaGVzIGFuZCB3ZSBjbGVhciB0aGUgd29ya2VyIGlu Zm8sIHRoZSB4aWQKKwkJCQkgKiB3cmFwYXJvdW5kIGhhcHBlbnMgb24gdGhlIHVwc3RyZWFtIGFu ZCBhIG5ldyB0cmFuc2FjdGlvbgorCQkJCSAqIHdpdGggdGhlIHNhbWUgeGlkIGNhbiBhcHBlYXIg YW5kIHRoYXQgY2FuIGxlYWQgdG8gZHVwbGljYXRlCisJCQkJICogZW50cmllcyBpbiBQYXJhbGxl bEFwcGx5VHhuSGFzaC4gWWV0IGFub3RoZXIgcHJvYmxlbSBjb3VsZAorCQkJCSAqIGJlIHRoYXQg d2UgbWF5IGhhdmUgc2VyaWFsaXplZCB0aGUgY2hhbmdlcyBpbiBwYXJ0aWFsCisJCQkJICogc2Vy aWFsaXplIG1vZGUgYW5kIHRoZSBmaWxlIGNvbnRhaW5pbmcgeGFjdCBjaGFuZ2VzIG1heQorCQkJ CSAqIGFscmVhZHkgZXhpc3QsIGFuZCBhZnRlciB4aWQgd3JhcGFyb3VuZCB0cnlpbmcgdG8gY3Jl YXRlCisJCQkJICogdGhlIGZpbGUgZm9yIHRoZSBzYW1lIHhpZCBjYW4gbGVhZCB0byBhbiBlcnJv ci4gVG8gYXZvaWQKKwkJCQkgKiB0aGVzZSBwcm9ibGVtcywgd2UgZGVjaWRlIHRvIHdhaXQgZm9y IHRoZSBhYm9ydHMgdG8gZmluaXNoLgorCQkJCSAqCisJCQkJICogTm90ZSwgaXQgaXMgb2theSB0 byBub3QgdXBkYXRlIHRoZSBmbHVzaCBsb2NhdGlvbiBwb3NpdGlvbgorCQkJCSAqIGZvciBhYm9y dHMgYXMgaW4gd29yc3QgY2FzZSB0aGF0IG1lYW5zIHN1Y2ggYSB0cmFuc2FjdGlvbgorCQkJCSAq IHdvbid0IGJlIHNlbnQgYWdhaW4gYWZ0ZXIgcmVzdGFydC4KKwkJCQkgKi8KKwkJCQlpZiAodG9w bGV2ZWxfeGFjdCkKKwkJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9nUmVjUHRy KTsKKworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhh dCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3Jr ZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3 aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhy b3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2Vy dCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2 ZSBhcHBsaWVkIHNvbWUgY2hhbmdlcywgc28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQg bWVzc2FnZSBzbyB0aGF0IGl0IGNhbiByb2xsYmFjayB0aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9u IGlmIG5lZWRlZC4KKwkJCSAqLworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQs IExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cp OworCisJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0 ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisJCQkJcGFfeGFjdF9maW5pc2go d2luZm8sIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJB TlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhl IGZpbGUgYmVmb3JlIGFib3J0aW5nLgorCQkJICovCisJCQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBz dHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJcGFfc3RyZWFtX2Fib3J0 KCZhYm9ydF9kYXRhKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9j ZXNzaW5nIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBj aGFuZ2VzLgorCQkJICoKKwkJCSAqIFdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiBoZXJlIGR1ZSB0 byB3aGljaCB3ZSBjYW4gc3RhcnQgd2FpdGluZworCQkJICogaGVyZSB3aGVuIHRoZXJlIGFyZSBt b3JlIGNodW5rIG9mIHN0cmVhbXMgaW4gdGhlIHF1ZXVlLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RvcC4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJCXBhX2Rl Y3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQg cHJvY2Vzc2luZyB0aGUgU1RSRUFNIEFCT1JUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRl ZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7Cit9CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2Vk IGxvY2F0aW9uIGlzIGZpbGVzZXQncyBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitlbnN1cmVfbGFz dF9tZXNzYWdlKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50 IGZpbGVubywKKwkJCQkJb2ZmX3Qgb2Zmc2V0KQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsK KwlCdWZGaWxlICAgICpmZDsKKwlpbnQJCQlsYXN0X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZz ZXQ7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAotCQkvKiBPSywgdHJ1bmNh dGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLwotCQlCdWZGaWxlVHJ1bmNhdGVGaWxl U2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8sCi0JCQkJCQkJICAg c3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsKLQkJQnVmRmlsZUNsb3NlKGZk KTsKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJLyogZGlzY2FyZCB0aGUgc3VieGFj dHMgYWRkZWQgbGF0ZXIgKi8KLQkJc3VieGFjdF9kYXRhLm5zdWJ4YWN0cyA9IHN1YmlkeDsKKwlj aGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAK LQkJLyogd3JpdGUgdGhlIHVwZGF0ZWQgc3VieGFjdCBsaXN0ICovCi0JCXN1YnhhY3RfaW5mb193 cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCWZkID0gQnVmRmlsZU9wZW5G aWxlU2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwgZmFsc2UpOwogCi0JCWVuZF9y ZXBsaWNhdGlvbl9zdGVwKCk7Ci0JCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCX0KKwlC dWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQpOworCUJ1ZkZpbGVUZWxsKGZkLCAmbGFzdF9m aWxlbm8sICZsYXN0X29mZnNldCk7CiAKLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8o KTsKKwlCdWZGaWxlQ2xvc2UoZmQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlm IChsYXN0X2ZpbGVubyAhPSBmaWxlbm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9n KEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9u J3MgY2hhbmdlcyBmaWxlIFwiJXNcIiIsCisJCQkgcGF0aCk7CiB9CiAKIC8qCiAgKiBDb21tb24g c3Bvb2xmaWxlIHByb2Nlc3NpbmcuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21l c3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK3ZvaWQKK2FwcGx5X3Nw b29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlk LAorCQkJCQkgICBYTG9nUmVjUHRyIGxzbikKIHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJ CQluY2hhbmdlczsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0g TlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlSZXNvdXJj ZU93bmVyIG9sZG93bmVyOworCWludAkJCWZpbGVubzsKKwlvZmZfdAkJb2Zmc2V0OwogCi0JbWF5 YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1h a2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7CkBAIC0xNDAwLDggKzIwMTYsMTYgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRo LCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5 aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3Bl bkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9O TFksCi0JCQkJCQkJZmFsc2UpOworCS8qCisJICogTWFrZSBzdXJlIHRoZSBmaWxlIGlzIG93bmVk IGJ5IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZQorCSAqIGZpbGUgd2lsbCBu b3QgYmUgYWNjaWRlbnRhbGx5IGNsb3NlZCB3aGVuIGFib3J0aW5nIGEgc3VidHJhbnNhY3Rpb24u CisJICovCisJb2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3Vy Y2VPd25lciA9IFRvcFRyYW5zYWN0aW9uUmVzb3VyY2VPd25lcjsKKworCXN0cmVhbV9mZCA9IEJ1 ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsK KworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7CiAKIAlidWZmZXIgPSBwYWxsb2Mo QkxDS1NaKTsKIAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAtMTQzMiw3ICsyMDU2LDcgQEAgYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRp c2sgcmVjb3JkICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVu KSk7CisJCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikp OwogCiAJCS8qIGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0 ZXMgPT0gMCkKQEAgLTE0NTMsMTIgKzIwNzcsMTQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCWJ1ZmZlciA9IHJlcGFsbG9jKGJ1 ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFkIHRoZSBkYXRhIGludG8gdGhlIGJ1 ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCisJCWlm IChCdWZGaWxlUmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygi Y291bGQgbm90IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUg XCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAorCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQs ICZmaWxlbm8sICZvZmZzZXQpOworCiAJCS8qIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgc3RyaW5n aW5mbyBhbmQgY2FsbCBhcHBseV9kaXNwYXRjaCAqLwogCQlyZXNldFN0cmluZ0luZm8oJnMyKTsK IAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmczIsIGJ1ZmZlciwgbGVuKTsKQEAgLTE0NzQsMTUg KzIxMDAsMjQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24pCiAKIAkJbmNoYW5nZXMrKzsKIAorCQkvKgorCQkgKiBJdCBpcyBwb3NzaWJs ZSB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZSB3ZSBoYXZlIHByb2Nlc3NlZAorCQkg KiB0aGUgdHJhbnNhY3Rpb24gZW5kIG1lc3NhZ2UgbGlrZSBzdHJlYW1fY29tbWl0IGluIHdoaWNo IGNhc2UgdGhhdAorCQkgKiBtdXN0IGJlIHRoZSBsYXN0IG1lc3NhZ2UuCisJCSAqLworCQlpZiAo IXN0cmVhbV9mZCkKKwkJeworCQkJZW5zdXJlX2xhc3RfbWVzc2FnZShzdHJlYW1fZmlsZXNldCwg eGlkLCBmaWxlbm8sIG9mZnNldCk7CisJCQlicmVhazsKKwkJfQorCiAJCWlmIChuY2hhbmdlcyAl IDEwMDAgPT0gMCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5ZWQgJWQgY2hhbmdlcyBmcm9tIGZp bGUgXCIlc1wiIiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0KIAotCUJ1ZkZpbGVDbG9zZShm ZCk7Ci0KLQlwZnJlZShidWZmZXIpOwotCXBmcmVlKHMyLmRhdGEpOworCWlmIChzdHJlYW1fZmQp CisJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKIAllbG9nKERFQlVHMSwgInJlcGxheWVkICVkIChh bGwpIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdlcywgcGF0aCk7CkBAIC0x NDk4LDYgKzIxMzMsMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBz KQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9k YXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9u IGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1 bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwNywxNCArMjE0Nyw4 MyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9n KERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4 aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAm d2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1p dF9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFOgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEp OworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZp bGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8K KwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCwgeGlkLAorCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJ CQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwor CQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFz c2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0 YSkpCisJCQl7CisJCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbi4gKi8KKwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdo aWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3 ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNo X3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdo ICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdp bmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQ X01TR19TVFJFQU1fQ09NTUlULAorCQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJcGFf c2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0RPTkUpOwogCi0J LyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBp bmZvICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkKTsKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u ICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRo ZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nLgorCQkJICovCisJCQlp ZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+ bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCS8qCisJCQkgKiBJdCBp cyBpbXBvcnRhbnQgdG8gc2V0IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBhcyBmaW5pc2hlZCBiZWZv cmUKKwkJCSAqIHJlbGVhc2luZyB0aGUgbG9jay4gU2VlIHBhX3dhaXRfZm9yX3hhY3RfZmluaXNo LgorCQkJICovCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExF TF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJV RzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQ09NTUlUIGNvbW1hbmQiKTsKKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQog CiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBw YXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24p OwpAQCAtMTU1OCw5ICsyMjY3LDE2IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9n aWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOwogCiAJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJ RW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQkJc3RvcmVfZmx1c2hf cG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOworCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihj b21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCX0KIAllbHNlCiAJewpA QCAtMjUxMSw3ICszMjI3LDcgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0luZm8gcykK IC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIHsK IAlMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAtMjY3NSwx NyArMzM5MSwyNCBAQCBnZXRfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAqd3JpdGUsIFhMb2dS ZWNQdHIgKmZsdXNoLAogLyoKICAqIFN0b3JlIGN1cnJlbnQgcmVtb3RlL2xvY2FsIGxzbiBwYWly IGluIHRoZSB0cmFja2luZyBsaXN0LgogICovCi1zdGF0aWMgdm9pZAotc3RvcmVfZmx1c2hfcG9z aXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQordm9pZAorc3RvcmVfZmx1c2hfcG9zaXRpb24o WExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbikKIHsKIAlGbHVzaFBv c2l0aW9uICpmbHVzaHBvczsKIAorCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29y a2VycywgYmVjYXVzZSB0aGUgbHNuX21hcHBpbmcgaXMgbWFpbnRhaW5lZAorCSAqIGJ5IHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIo KSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0 ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKIAkvKiBUcmFjayBj b21taXQgbHNuICAqLwogCWZsdXNocG9zID0gKEZsdXNoUG9zaXRpb24gKikgcGFsbG9jKHNpemVv ZihGbHVzaFBvc2l0aW9uKSk7Ci0JZmx1c2hwb3MtPmxvY2FsX2VuZCA9IFhhY3RMYXN0Q29tbWl0 RW5kOworCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9sc247CiAJZmx1c2hwb3MtPnJlbW90 ZV9lbmQgPSByZW1vdGVfbHNuOwogCiAJZGxpc3RfcHVzaF90YWlsKCZsc25fbWFwcGluZywgJmZs dXNocG9zLT5ub2RlKTsKQEAgLTI3NDQsNiArMzQ2Nyw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3Ao WExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlf ZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0 YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBwbHlfZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlzIG91dGVyIGxv b3AgaXRlcmF0ZXMgb25jZSBwZXIgd2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjk1OCw2ICszNjgy LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAKIAkv KiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9y X2NvbnRleHRfc3RhY2s7CiAKIAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRzdHJlYW1pbmco TG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0zMDU2LDkgKzM3ODEsMzEgQEAgc2Vu ZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJl cGx5KQogfQogCiAvKgotICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9z dCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KKyAqIEV4aXQgcm91dGluZSBmb3IgYXBwbHkgd29ya2Vy cyBkdWUgdG8gc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2VzLgogICovCiBzdGF0aWMgdm9p ZAorYXBwbHlfd29ya2VyX2V4aXQodm9pZCkKK3sKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29y a2VyKCkpCisJeworCQkvKgorCQkgKiBEb24ndCBzdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgYXMgdGhlIGxlYWRlciB3aWxsIGRldGVjdCB0aGUKKwkJICogc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBjaGFuZ2UgYW5kIHJlc3RhcnQgbG9naWNhbCByZXBsaWNhdGlvbiBsYXRlcgorCQkgKiBh bnl3YXkuIFRoaXMgYWxzbyBwcmV2ZW50cyB0aGUgbGVhZGVyIGZyb20gcmVwb3J0aW5nIGVycm9y cyB3aGVuCisJCSAqIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgc3RvcHBlZCBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIHdoaWNoCisJCSAqIHdvdWxkIGFjY2lkZW50YWxseSBkaXNhYmxlIHN1 YnNjcmlwdGlvbnMgaWYgZGlzYWJsZV9vbl9lcnJvciB3YXMKKwkJICogc2V0LgorCQkgKi8KKwkJ cmV0dXJuOworCX0KKworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFJlcmVhZCBzdWJzY3Jp cHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCisgKi8KK3Zv aWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsKIAlNZW1vcnlDb250ZXh0IG9s ZGN0eDsKQEAgLTMwODgsOSArMzgzNSw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCkKIAlpZiAoIW5ld3N1YikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg IgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKLQkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBp cyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2co IiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3Jp cHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKIAl9CkBAIC0zMDk5LDExICszODQ2LDEx IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1Yi0+ZW5hYmxl ZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJInN0b3Ag YmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCi0JCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNh YmxlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7 CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qICFz bG90bmFtZSBzaG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZW5hYmxlZCBpcyB0cnVlLiAqLwpAQCAt MzExNCw3ICszODYxLDEwIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAogCS8q CiAJICogRXhpdCBpZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZmZWN0cyB0aGUgcmVtb3RlIGNvbm5l Y3Rpb24gd2FzIGNoYW5nZWQuCi0JICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29y a2VyLgorCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlciBidXQgbm90ZSB0 aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3b24ndCByZXN0YXJ0IGlmIHRoZSBz dHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBmcm9tCisJICogJ3BhcmFsbGVsJyB0 byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNlcnZlciBkZWNpZGVzIG5vdCB0byBzdHJlYW0gdGhl CisJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24uCiAJICovCiAJaWYgKHN0cmNtcChuZXdzdWIt PmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pICE9IDAgfHwKIAkJc3RyY21wKG5l d3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpICE9IDAgfHwKQEAgLTMxMjUsMTEgKzM4 NzUsMTcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQluZXdzdWItPm93bmVy ICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fAogCQkhZXF1YWwobmV3c3ViLT5wdWJsaWNhdGlv bnMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpKQogCXsKLQkJZXJlcG9ydChMT0csCi0J CQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwK LQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQlpZiAoYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBz dG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlv bi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFuc2xhdG9yOiBm aXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJ CQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVz ZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9l eGl0KCk7CiAJfQogCiAJLyogQ2hlY2sgZm9yIG90aGVyIGNoYW5nZXMgdGhhdCBzaG91bGQgbmV2 ZXIgaGFwcGVuIHRvby4gKi8KQEAgLTMzODEsNyArNDEzNyw3IEBAIGNoYW5nZXNfZmlsZW5hbWUo Y2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIHRvcGxldmVsIHRy YW5zYWN0aW9uLiBFYWNoIHN1YnNjcmlwdGlvbiBoYXMgYSBzZXBhcmF0ZSBzZXQgb2YgZmlsZXMK ICAqIGZvciBhbnkgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewog CWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKQEAgLTM0MDQsOSArNDE2MCw2IEBAIHN0cmVhbV9jbGVh bnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiBieSBzdHJlYW1feGlk IChnbG9iYWwgdmFyaWFibGUpLiBJZiBpdCdzIHRoZSBmaXJzdCBjaHVuayBvZiBzdHJlYW1lZAog ICogY2hhbmdlcyBmb3IgdGhpcyB0cmFuc2FjdGlvbiwgY3JlYXRlIHRoZSBidWZmaWxlLCBvdGhl cndpc2Ugb3BlbiB0aGUKICAqIHByZXZpb3VzbHkgY3JlYXRlZCBmaWxlLgotICoKLSAqIFRoaXMg Y2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSAic3RyZWFtaW5nIiBibG9j aywgaS5lLgotICogYmV0d2VlbiBzdHJlYW1fc3RhcnQvc3RyZWFtX3N0b3AgbWVzc2FnZXMgZnJv bSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBzdHJlYW1fb3Blbl9maWxlKE9pZCBz dWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKQEAgLTM0MTQsNyAr NDE2Nyw2IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBmaXJzdF9zZWdtZW50KQogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKIAotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CiAJQXNzZXJ0 KE9pZElzVmFsaWQoc3ViaWQpKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7 CiAJQXNzZXJ0KHN0cmVhbV9mZCA9PSBOVUxMKTsKQEAgLTM0NTMsMTUgKzQyMDUsMTAgQEAgc3Ry ZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3Nl Z21lbnQpCiAvKgogICogc3RyZWFtX2Nsb3NlX2ZpbGUKICAqCSAgQ2xvc2UgdGhlIGN1cnJlbnRs eSBvcGVuIGZpbGUgd2l0aCBzdHJlYW1lZCBjaGFuZ2VzLgotICoKLSAqIFRoaXMgY2FuIG9ubHkg YmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgYSBzdHJlYW1pbmcgYmxvY2ssIGkuZS4gYXQgc3RyZWFt X3N0b3AKLSAqIG1lc3NhZ2UgZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBz dHJlYW1fY2xvc2VfZmlsZSh2b2lkKQogewotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlv bik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQo c3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CkBAIC0zNDgz LDggKzQyMzAsNiBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZv IHMpCiB7CiAJaW50CQkJbGVuOwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsK LQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCUFzc2VydChzdHJl YW1fZmQgIT0gTlVMTCk7CiAKIAkvKiB0b3RhbCBvbi1kaXNrIHNpemUsIGluY2x1ZGluZyB0aGUg YWN0aW9uIHR5cGUgY2hhcmFjdGVyICovCkBAIC0zNTAyLDYgKzQyNDcsMjYgQEAgc3RyZWFtX3dy aXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCUJ1ZkZpbGVXcml0ZShzdHJl YW1fZmQsICZzLT5kYXRhW3MtPmN1cnNvcl0sIGxlbik7CiB9CiAKKy8qCisgKiBzdHJlYW1fb3Bl bl9hbmRfd3JpdGVfY2hhbmdlCisgKgkgIFNlcmlhbGl6ZSBhIG1lc3NhZ2UgdG8gYSBmaWxlIGZv ciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFy IHRvIHN0cmVhbV93cml0ZV9jaGFuZ2UgZXhjZXB0IHRoYXQgaXQgd2lsbCBvcGVuIHRoZQorICog dGFyZ2V0IGZpbGUgaWYgbm90IGFscmVhZHkgYmVmb3JlIHdyaXRpbmcgdGhlIG1lc3NhZ2UgYW5k IGNsb3NlIHRoZSBmaWxlIGF0CisgKiB0aGUgZW5kLgorICovCitzdGF0aWMgdm9pZAorc3RyZWFt X29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rpb24sIFN0 cmluZ0luZm8gcykKK3sKKwlBc3NlcnQoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKKworCWlm ICghc3RyZWFtX2ZkKQorCQlzdHJlYW1fc3RhcnRfaW50ZXJuYWwoeGlkLCBmYWxzZSk7CisKKwlz dHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJc3RyZWFtX3N0b3BfaW50ZXJuYWwoeGlk KTsKK30KKwogLyoKICAqIENsZWFudXAgdGhlIG1lbW9yeSBmb3Igc3VieGFjdHMgYW5kIHJlc2V0 IHRoZSByZWxhdGVkIHZhcmlhYmxlcy4KICAqLwpAQCAtMzYxMywzNyArNDM3OCwxNiBAQCBzdGFy dF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAlQR19FTkRfVFJZKCk7CiB9CiAK LS8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCisvKgor ICogQ29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogSW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2UgY29ubmVj dGlvbiwgaW4tbWVtb3J5IHN1YnNjcmlwdGlvbiBhbmQgbmVjZXNzYXJ5CisgKiBjb25maWcgb3B0 aW9ucy4KKyAqLwogdm9pZAotQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQorSW5pdGlh bGl6ZUFwcGx5V29ya2VyKHZvaWQpCiB7Ci0JaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldElu dDMyKG1haW5fYXJnKTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQljaGFyCQlvcmlnaW5uYW1l W05BTUVEQVRBTEVOXTsKLQlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9n UmVjUHRyOwotCWNoYXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOwotCVdhbFJjdlN0cmVhbU9wdGlv bnMgb3B0aW9uczsKLQlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKLQotCS8qIEF0dGFjaCB0byBzbG90 ICovCi0JbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKLQotCS8qIFNldHVw IHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNv bmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQlCYWNrZ3JvdW5kV29ya2Vy VW5ibG9ja1NpZ25hbHMoKTsKLQotCS8qCi0JICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55 IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKLQkgKiBpZiB3ZSBk aWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KLQkg Ki8KLQotCS8qIEluaXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KLQlNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3Jl Y3ZfdGltZSA9Ci0JCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRU aW1lc3RhbXAoKTsKLQotCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwot CWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAogCS8qIFJ1biBhcyByZXBs aWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4gKi8KIAlTZXRDb25maWdPcHRpb24oInNlc3Np b25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNhIiwKQEAgLTM2NzEsOSArNDQxNSwxMCBAQCBB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbikKIAl7 CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1 c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyB0aGUg bmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZv ciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCiAJCXByb2NfZXhpdCgwKTsKIAl9CiAKQEAg LTM2ODMsMTEgKzQ0MjgsMTEgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlm ICghTXlTdWJzY3JpcHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJy bXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdh cyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkp KTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIGR1 cmluZyBzdGFydHVwIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7CiAJfQog CiAJLyogU2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNlcidzIHdp c2hlcyAqLwpAQCAtMzcwMiwxMyArNDQ0Nyw0OSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJZXJlcG9ydChMT0csCiAJCQkJ KGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAotCQkJ CQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXIt PnJlbGlkKSkpKTsKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJZ2V0X3JlbF9u YW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0cs Ci0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUp KSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgaGFzIHN0YXJ0ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9u LT5uYW1lKSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8qIExvZ2lj YWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCit2b2lkCitBcHBseVdv cmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdl dEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKwlYTG9n UmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOworCWNoYXIJICAgKm15 c2xvdG5hbWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKKwlpbnQJCQlz ZXJ2ZXJfdmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJlcF93b3Jr ZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwor CXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWdu YWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKwor CS8qCisJICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3 YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3Jl YXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkgKi8KKworCS8qIEluaXRpYWxpc2Ug c3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2Vu ZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15TG9naWNh bFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qIExv YWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRfZmlsZSgibGlicHF3YWxy ZWNlaXZlciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwogCiAJLyogQ29u bmVjdCB0byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVwbGljYXRpb24uICovCiAJZWxvZyhE RUJVRzEsICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2luZyBjb25uZWN0aW9uIHN0cmluZyBc IiVzXCIiLApAQCAtMzcxOCwyMCArNDQ5OSwxNSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFp bl9hcmcpCiAJewogCQlzdGFydF90YWJsZV9zeW5jKCZvcmlnaW5fc3RhcnRwb3MsICZteXNsb3Ru YW1lKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZl ZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwogCQlSZXBs aWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJ CQkJCQkJICAgTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCwKIAkJCQkJCQkJCQkgICBvcmlnaW5u YW1lLAogCQkJCQkJCQkJCSAgIHNpemVvZihvcmlnaW5uYW1lKSk7Ci0JCWFwcGx5X2Vycm9yX2Nh bGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0 LAotCQkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCQlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CiAJfQogCWVsc2UKIAl7Ci0JCS8qIFRoaXMgaXMgbWFp biBhcHBseSB3b3JrZXIgKi8KKwkJLyogVGhpcyBpcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAq LwogCQlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50VExJOwog CQljaGFyCSAgICplcnI7CkBAIC0zNzU1LDcgKzQ1MzEsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUs IHRydWUpOwogCQlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQpKQogCQkJb3JpZ2luaWQgPSByZXBs b3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9y aWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQlvcmlnaW5fc3RhcnRwb3MgPSBy ZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIAkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CkBAIC0zNzczLDEyICs0NTQ5LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCQkgKi8KIAkJKHZvaWQpIHdhbHJjdl9pZGVudGlmeV9zeXN0ZW0oTG9nUmVw V29ya2VyV2FsUmN2Q29ubiwgJnN0YXJ0cG9pbnRUTEkpOwogCi0JCS8qCi0JCSAqIEFsbG9jYXRl IHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQK LQkJICogbWVzc2FnZS4KLQkJICovCi0JCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5f bmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAotCQkJCQkJCQkJCQkJCQkJ CSAgIG9yaWdpbm5hbWUpOworCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4ob3JpZ2lu bmFtZSk7CiAJfQogCiAJLyoKQEAgLTM3OTYsMTMgKzQ1NjcsMzYgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNp b24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnByb3Rv X3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49IDE1MDAw MCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVy c2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSA6CiAJ CUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwu cHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zOwogCW9wdGlv bnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlwdGlvbi0+YmluYXJ5OwotCW9wdGlv bnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtOworCisJ LyoKKwkgKiBBc3NpZ24gdGhlIGFwcHJvcHJpYXRlIG9wdGlvbiB2YWx1ZSBmb3Igc3RyZWFtaW5n IG9wdGlvbiBhY2NvcmRpbmcgdG8KKwkgKiB0aGUgJ3N0cmVhbWluZycgbW9kZSBhbmQgdGhlIHB1 Ymxpc2hlcidzIGFiaWxpdHkgdG8gc3VwcG9ydCB0aGF0IG1vZGUuCisJICovCisJaWYgKHNlcnZl cl92ZXJzaW9uID49IDE2MDAwMCAmJgorCQlNeVN1YnNjcmlwdGlvbi0+c3RyZWFtID09IExPR0lD QUxSRVBfU1RSRUFNX1BBUkFMTEVMKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVh bWluZ19zdHIgPSAicGFyYWxsZWwiOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2Fw cGx5ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwICYmCisJ CQkgTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYpCisJewor CQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9ICJvbiI7CisJCU15TG9naWNh bFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBOVUxMOworCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCiAJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBz dHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM4OTksNiArNDY5MywxNSBAQCBJ c0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9IE5VTEw7 CiB9CiAKKy8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKTsKK30KKwogLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2YgdGhl IHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVjaWZp ZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KQEAgLTM5NjEsNyArNDc2NCw3IEBAIGNsZWFy X3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0 cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29sCQlzdGFydGVkX3R4 ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkp CisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpIHx8IGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0 ZSgpKQpAQCAtNDAzMyw3ICs0ODM2LDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhM b2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2FsbGJhY2sgdG8gZ2l2ZSBtb3Jl IGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFwcGxpZWQgKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiB7CiAJQXBwbHlFcnJv ckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOwpAQCAtNDA2 MSwyMyArNDg2NCw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiAJCQkJCSAg IGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQotCQll cnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g XCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQg cmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIs Ci0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2Vf dHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNw bmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJy YXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9s c24pKTsKIAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFu c2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25h bWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwt PnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFt ZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0J CQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCXsKKwkJaWYgKGVy cmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlk KGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwi JXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2Fj dGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNh bHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVs bmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29u dGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNc IiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJ CQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90 eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5z cG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkg ICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5m aW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBc IiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwi JXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAor CQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0 bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hp ZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3Ig cmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRy YW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24p KTsKKwkJfQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIG9mIGFwcGx5 IGVycm9yIGNhbGxiYWNrICovCkBAIC00MDk3LDMgKzQ5MjQsNTIgQEAgcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKHZvaWQpCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbW90ZV9h dHRudW0gPSAtMTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KEludmFsaWRUcmFuc2Fj dGlvbklkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CisKKy8qCisgKiBBbGxvY2F0ZSB0aGUgb3Jp Z2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0IG1lc3NhZ2Uu CisgKi8KK3ZvaWQKK3NldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5u YW1lKQoreworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNv bnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7 Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGFjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhlIGdpdmVu IHRyYW5zYWN0aW9uLiAqd2luZm8gaXMKKyAqIGFzc2lnbmVkIHRvIHRoZSBkZXN0aW5hdGlvbiBw YXJhbGxlbCB3b3JrZXIgaW5mbyB3aGVuIHRoZSBnaXZlbgorICogdHJhbnNhY3Rpb24gaXMgYmVp bmcgcHJvY2Vzc2VkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMg VHJhbnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlv bklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBO VUxMOworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRS QU5TX1BBUkFMTEVMX0FQUExZOworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24p CisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hlY2sg aWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFw cGx5CisJICogd29ya2VyLgorCSAqLworCSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CisK KwlpZiAoISp3aW5mbykKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0K KwllbHNlIGlmICgoKndpbmZvKS0+c2VyaWFsaXplX2NoYW5nZXMpCisJeworCQlyZXR1cm4gVFJB TlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggY2E0NmZiYTNhZi4uNDBjNDRiYjdlOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsx OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtl ZnVuY3MuaCIKQEAgLTI5MCw3ICsyOTEsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0 ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAJYm9vbAkJb3JpZ2luX29wdGlvbl9naXZl biA9IGZhbHNlOwogCiAJZGF0YS0+YmluYXJ5ID0gZmFsc2U7Ci0JZGF0YS0+c3RyZWFtaW5nID0g ZmFsc2U7CisJZGF0YS0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwogCWRhdGEt Pm1lc3NhZ2VzID0gZmFsc2U7CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFsc2U7CiAKQEAgLTM2OSw3 ICszNzAsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1 dERhdGEgKmRhdGEpCiAJCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucyIpKSk7CiAJCQlzdHJlYW1pbmdfZ2l2ZW4gPSB0cnVlOwogCi0JCQlkYXRhLT5zdHJlYW1p bmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldFN0 cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTQ2MSwxMyArNDYyLDIwIEBAIHBnb3V0cHV0 X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25z ICpvcHQsCiAJCSAqIHdlIG9ubHkgYWxsb3cgaXQgd2l0aCBzdWZmaWNpZW50IHZlcnNpb24gb2Yg dGhlIHByb3RvY29sLCBhbmQgd2hlbgogCQkgKiB0aGUgb3V0cHV0IHBsdWdpbiBzdXBwb3J0cyBp dC4KIAkJICovCi0JCWlmICghZGF0YS0+c3RyZWFtaW5nKQorCQlpZiAoZGF0YS0+c3RyZWFtaW5n ID09IExPR0lDQUxSRVBfU1RSRUFNX09GRikKIAkJCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7Ci0J CWVsc2UgaWYgKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVB TV9WRVJTSU9OX05VTSkKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBf U1RSRUFNX09OICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCQkgZXJybXNnKCJyZXF1ZXN0 ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0IHN0cmVhbWluZywgbmVlZCAlZCBv ciBoaWdoZXIiLAogCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJP VE9fU1RSRUFNX1ZFUlNJT05fTlVNKSkpOworCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0g TE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwgJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lv biA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1 cHBvcnQgcGFyYWxsZWwgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hlciIsCisJCQkJCQkJZGF0 YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0pKSk7CiAJCWVsc2UgaWYgKCFjdHgtPnN0cmVhbWluZykKIAkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAt MTg0MSw2ICsxODQ5LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24pCiB7CiAJUmVv cmRlckJ1ZmZlclRYTiAqdG9wdHhuOworCVBHT3V0cHV0RGF0YSAqZGF0YSA9IChQR091dHB1dERh dGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJYm9vbAkJd3JpdGVfYWJvcnRfaW5m byA9IChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwpOwogCiAJ LyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywg ZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTQsNyArMTg2NCw5IEBAIHBnb3V0cHV0X3N0cmVhbV9h Ym9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9p c19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRy dWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhp ZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0 b3B0eG4tPnhpZCwgdHhuLT54aWQsIGFib3J0X2xzbiwKKwkJCQkJCQkJICB0eG4tPnhhY3RfdGlt ZS5hYm9ydF90aW1lLCB3cml0ZV9hYm9ydF9pbmZvKTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0 eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNzc2NzY1N2YyNy4uN2MwMDlk NTI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBA QAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv Y29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2 ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAo Q2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9n TWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUlu dGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5kZXggMTA0 MzA2OGJhYy4uMmYxNzFmNTUyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBAIC0xMTE3LDYg KzExMTcsNDUgQEAgVW5sb2NrU2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lk IG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJTG9ja1JlbGVhc2UoJnRhZywgbG9ja21vZGUsIHRy dWUpOwogfQogCisvKgorICoJCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICoKKyAq IE9idGFpbiBhIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBhIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxp ZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyLiBTZWUgTG9ja1JlbGF0 aW9uSWRGb3JTZXNzaW9uIGZvciBub3RlcyBhYm91dAorICogc2Vzc2lvbi1sZXZlbCBsb2Nrcy4K KyAqLwordm9pZAorTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRy YW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJICAgTE9DS01PREUgbG9ja21v ZGUpCit7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04o dGFnLAorCQkJCQkJCQkgIE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJ CSAgeGlkLAorCQkJCQkJCQkgIG9iamlkKTsKKworCSh2b2lkKSBMb2NrQWNxdWlyZSgmdGFnLCBs b2NrbW9kZSwgdHJ1ZSwgZmFsc2UpOworfQorCisvKgorICoJCVVubG9ja0FwcGx5VHJhbnNhY3Rp b25Gb3JTZXNzaW9uCisgKi8KK3ZvaWQKK1VubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9u KE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCSBM T0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBM WV9UUkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1 Ym9pZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJTG9ja1JlbGVhc2Uo JnRhZywgbG9ja21vZGUsIHRydWUpOworfQogCiAvKgogICogQXBwZW5kIGEgZGVzY3JpcHRpb24g b2YgYSBsb2NrYWJsZSBvYmplY3QgdG8gYnVmLgpAQCAtMTIwMiw2ICsxMjQxLDEzIEBAIERlc2Ny aWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgTE9DS1RBRyAqdGFnKQogCQkJCQkJCSB0 YWctPmxvY2t0YWdfZmllbGQzLAogCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQ0KTsKIAkJCWJy ZWFrOworCQljYXNlIExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT046CisJCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwKKwkJCQkJCQkgXygicmVtb3RlIHRyYW5zYWN0aW9uICV1IG9mIHN1YnNjcmlwdGlv biAldSBvZiBkYXRhYmFzZSAldSIpLAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQzLAorCQkJ CQkJCSB0YWctPmxvY2t0YWdfZmllbGQyLAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQxKTsK KwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCiAJCQkJCQkJ IF8oInVucmVjb2duaXplZCBsb2NrdGFnIHR5cGUgJWQiKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAw MWQyNjRiNWFiLi5kNTI5NWM0NWZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0zMzkxLDYgKzMzOTEs OSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCiAJaWYgKExvZ01lbW9yeUNvbnRleHRQZW5k aW5nKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOworCisJaWYgKFBhcmFs bGVsQXBwbHlNZXNzYWdlUGVuZGluZykKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2 ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggYjJh YmQ3NWRkYi4uMWZhYjQ1ZTc0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYwpAQCAtMjMwLDYgKzIzMCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9hY3Rpdml0eShXYWl0RXZl bnRBY3Rpdml0eSB3KQogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOOgog CQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsTGF1bmNoZXJNYWluIjsKIAkJCWJyZWFrOworCQljYXNl IFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOOgorCQkJZXZlbnRfbmFtZSA9 ICJMb2dpY2FsUGFyYWxsZWxBcHBseU1haW4iOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVO VF9SRUNPVkVSWV9XQUxfU1RSRUFNOgogCQkJZXZlbnRfbmFtZSA9ICJSZWNvdmVyeVdhbFN0cmVh bSI7CiAJCQlicmVhazsKQEAgLTM4OCw2ICszOTEsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdh aXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNF UlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFr OworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0U6 CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5U3RhdGVDaGFuZ2UiOworCQkJ YnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQToKIAkJCWV2ZW50X25h bWUgPSAiTG9naWNhbFN5bmNEYXRhIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5j cy5jCmluZGV4IGY5YjMyNGVmZWMuLjNiZjA0ODMxZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9sb2NrZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1 bmNzLmMKQEAgLTM3LDEwICszNywxMSBAQCBjb25zdCBjaGFyICpjb25zdCBMb2NrVGFnVHlwZU5h bWVzW10gPSB7CiAJInNwZWN0b2tlbiIsCiAJIm9iamVjdCIsCiAJInVzZXJsb2NrIiwKLQkiYWR2 aXNvcnkiCisJImFkdmlzb3J5IiwKKwkiYXBwbHl0cmFuc2FjdGlvbiIKIH07CiAKLVN0YXRpY0Fz c2VydERlY2wobGVuZ3Rob2YoTG9ja1RhZ1R5cGVOYW1lcykgPT0gKExPQ0tUQUdfQURWSVNPUlkg KyAxKSwKK1N0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoTG9ja1RhZ1R5cGVOYW1lcykgPT0gKExP Q0tUQUdfTEFTVF9UWVBFICsgMSksCiAJCQkJICJhcnJheSBsZW5ndGggbWlzbWF0Y2giKTsKIAog LyogVGhpcyBtdXN0IG1hdGNoIGVudW0gUHJlZGljYXRlTG9ja1RhcmdldFR5cGUgKHByZWRpY2F0 ZV9pbnRlcm5hbHMuaCkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggYTM3 YzlmOTg0NC4uNjJiN2Y1N2U2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAg LTMwMDIsNiArMzAwMiwxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtd ID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJ T05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJ CSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBN QVhfUEFSQUxMRUxfV09SS0VSX0xJTUlULAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsK IAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdl dHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2lu ZyAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5z YW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5k ZXggNWFmZGViMDRkZS4uYzJhZGE5MjA1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzU5LDYgKzM1OSw3IEBACiAjbWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2Vz CiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnMKKyNtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkj IHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycwogCiAKICMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDQ0ZDk1N2MwMzguLmY0NTRiMzFjNTggMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYwpAQCAtNDUzMyw3ICs0NTMzLDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZl ICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0JCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOworCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAKIAlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LApAQCAtNDY3MCw4ICs0NjcwLDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2ZSAqZm91dCwg Y29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1 YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgYmlu YXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJmIikgIT0g MCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNlIGlmIChzdHJj bXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwogCiAJaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBkZjE2 NjM2NWU4Li4yNjViMjhkOTBjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjUwMiwxMSArNjUwMiwyNCBAQCBkZXNj cmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsK IAkJLyogQmluYXJ5IG1vZGUgYW5kIHN0cmVhbWluZyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdjE0 IGFuZCBoaWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQorCQl7CiAJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJCSAgIiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxu IgotCQkJCQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKLQkJCQkJCQkgIGdldHRleHRf bm9vcCgiQmluYXJ5IiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJ CQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3Ao IkJpbmFyeSIpKTsKKworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIiwgKENBU0Ugc3Vic3RyZWFtXG4iCisJCQkJ CQkJCSAgIiAgICBXSEVOICdmJyBUSEVOICdvZmYnXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICd0 JyBUSEVOICdvbidcbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ3AnIFRIRU4gJ3BhcmFsbGVsJ1xu IgorCQkJCQkJCQkgICIgICBFTkQpIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJICBnZXR0ZXh0X25v b3AoIlN0cmVhbWluZyIpKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJTdHJlYW1pbmciKSk7CisJCX0KIAogCQkvKiBUd29fcGhhc2UgYW5kIGRpc2FibGVfb25f ZXJyb3IgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNSBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0 LnN2ZXJzaW9uID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmlu ZGV4IDdiOTg3MTRmMzAuLjViOWU1YTM5OWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaApAQCAtODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1 YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJ CXN1YmJpbmFyeTsJCS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUKIAkJCQkJ CQkJICogcHVibGlzaGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJCXN1YnN0 cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3Vi c3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gU2VlCisJCQkJCQkJ CSAqIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0 ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0LDcgKzEyNSw4 IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRp Y2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJ CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJ ICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RS RUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3Ry ZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8q IEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRv bWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiArMTM5LDIxIEBA IHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2lu ICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fT0ZGICdmJworCisv KgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBh IHRlbXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJF QU1fT04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFy ZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisg Ki8KKyNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJz Y3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBl eHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2 b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuaAppbmRleCAyY2JlN2Q3YjY1Li43Nzk0NzRmNTY1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCkBAIC0yNiw0ICsyNiw2IEBAIGV4dGVybiB2 b2lkIERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNU b3BMZXZlbCk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclN1YnNjcmlwdGlvbk93bmVyKGNv bnN0IGNoYXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVybiB2b2lkIEFsdGVyU3Vic2Ny aXB0aW9uT3duZXJfb2lkKE9pZCBzdWJpZCwgT2lkIG5ld093bmVySWQpOwogCitleHRlcm4gY2hh ciBkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZik7CisKICNlbmRpZgkJCQkJCQkvKiBT VUJTQ1JJUFRJT05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgKaW5kZXggZjFlMjgyMWUyNS4uZDUxM2VmNTMzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdE TExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247 CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lk IEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKaW5kZXggMWViN2RkYTUyOS4uNGZhMmJkMzdkZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExP R0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9j b2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5n IChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9j b2wgdmVyc2lvbgorICogd2hlcmUgd2Ugc3VwcG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsLgorICogSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNB TFJFUF9QUk9UT19WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1ZFUlNJT05fTlVNIDIKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9O X05VTSAzCi0jZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxS RVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01B WF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05V TQogCiAvKgogICogTG9naWNhbCBtZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5 cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdp ZFtHSURTSVpFXTsKIH0gTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgor ICogVHJhbnNhY3Rpb24gcHJvdG9jb2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0 aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNu OworCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7 CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJl b3JkZXJCdWZmZXJUWE4gKnR4bik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4o U3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRh KTsKQEAgLTI0Niw5ICsyNjIsMTMgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJl YW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBU cmFuc2FjdGlvbklkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4s CiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRy YW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFu c2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJ CQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJv cnRfbHNuLAorCQkJCQkJCQkJCSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwKKwkJCQkJCQkJCQkg IGJvb2wgd3JpdGVfYWJvcnRfaW5mbyk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9y dERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKTsKIGV4 dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rp b24pOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOGFmYy4uZGM2OGNkODljOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTIsOCArMTIsMTYgQEAK ICNpZm5kZWYgTE9HSUNBTFdPUktFUl9ICiAjZGVmaW5lIExPR0lDQUxXT1JLRVJfSAogCisjaW5j bHVkZSA8c2lnbmFsLmg+CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWlj X3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOworCiBleHRlcm4gdm9pZCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgUGFyYWxsZWxBcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7 CitleHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOworZXh0ZXJu IHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CitleHRlcm4g dm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CiAKICNlbmRpZgkJCQkJCQkv KiBMT0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKaW5kZXggMmE1MGQx MGI1Mi4uYzdiMWFkZmZmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3Jp Z2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAgLTUzLDcgKzUz LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jlc3MoUmVwT3JpZ2lu SWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9h ZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhMb2dSZWNQdHIg bG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBP cmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBP cmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9z ZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgK aW5kZXggMDIwMjc1NTBlMi4uM2MzMGRhODIwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1 dC5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0cHV0RGF0YQogCUxpc3QJ ICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsKIAlib29sCQli aW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQltZXNz YWdlczsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2luOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IGIyN2E0MzYxOGEuLmQ2N2JkYmZiNzUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMxNiw2ICszMTYsNyBA QCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21t aXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9y dF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjc4LDcgKzY3OSw4IEBAIGV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0Q2hpbGQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQg c3VieGlkLCBYTG9nUmVjUHRyIGNvbW1pdF9sc24sCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBlbmRf bHNuKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgbHNuLAorCQkJCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQg UmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9s ZGVzdFJ1bm5pbmdYaWQpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2 b2lkIFJlb3JkZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKaW5kZXggOTMzOWYyOTMwMy4uMGM4YmJkZGFiZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oCkBAIC0xODIsNyArMTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVpbnQz MgkJcHJvdG9fdmVyc2lvbjsJLyogTG9naWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJCQlMaXN0 CSAgICpwdWJsaWNhdGlvbl9uYW1lczsJLyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRpb25zICov CiAJCQlib29sCQliaW5hcnk7IC8qIEFzayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAqLwotCQkJ Ym9vbAkJc3RyZWFtaW5nOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCisJ CQljaGFyCSAgICpzdHJlYW1pbmdfc3RyOwkvKiBTdHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rp b25zICovCiAJCQlib29sCQl0d29waGFzZTsJLyogU3RyZWFtaW5nIG9mIHR3by1waGFzZSB0cmFu c2FjdGlvbnMgYXQKIAkJCQkJCQkJCSAqIHByZXBhcmUgdGltZSAqLwogCQkJY2hhcgkgICAqb3Jp Z2luOyAvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9tIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAyYjcxMTRmZjZkLi44YjZiNzZi NjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMTcs OCArMTcsMTMgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgor I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxh dGlvbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv c2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9jLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zcGluLmgiCiAKIApAQCAtNTMsMTMgKzU4LDI0IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxS ZXBXb3JrZXIKIAogCS8qCiAJICogVXNlZCB0byBjcmVhdGUgdGhlIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgZmlsZXMgZm9yIHRoZSBzdHJlYW1pbmcKLQkgKiB0cmFuc2FjdGlvbnMuICBVcG9uIHRoZSBh cnJpdmFsIG9mIHRoZSBmaXJzdCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZQotCSAqIGZpbGVz ZXQgd2lsbCBiZSBpbml0aWFsaXplZCwgYW5kIGl0IHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSB3 b3JrZXIKLQkgKiBleGl0cy4gIFVuZGVyIHRoaXMsIHNlcGFyYXRlIGJ1ZmZpbGVzIHdvdWxkIGJl IGNyZWF0ZWQgZm9yIGVhY2gKLQkgKiB0cmFuc2FjdGlvbiB3aGljaCB3aWxsIGJlIGRlbGV0ZWQg YWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGZpbmlzaGVkLgorCSAqIHRyYW5zYWN0aW9ucy4gIFVw b24gdGhlIGFycml2YWwgb2YgdGhlIGZpcnN0IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBvcgorCSAq IHdoZW4gdGhlIGZpcnN0LXRpbWUgbGVhZGVyIGFwcGx5IHdvcmtlciB0aW1lcyBvdXQgd2hpbGUg c2VuZGluZyBjaGFuZ2VzCisJICogdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZp bGVzZXQgd2lsbCBiZSBpbml0aWFsaXplZCwgYW5kIGl0CisJICogd2lsbCBiZSBkZWxldGVkIHdo ZW4gdGhlIHdvcmtlciBleGl0cy4gIFVuZGVyIHRoaXMsIHNlcGFyYXRlIGJ1ZmZpbGVzCisJICog d291bGQgYmUgY3JlYXRlZCBmb3IgZWFjaCB0cmFuc2FjdGlvbiB3aGljaCB3aWxsIGJlIGRlbGV0 ZWQgYWZ0ZXIgdGhlCisJICogdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCiAJICovCiAJRmlsZVNl dCAgICAqc3RyZWFtX2ZpbGVzZXQ7CiAKKwkvKgorCSAqIFBJRCBvZiBsZWFkZXIgYXBwbHkgd29y a2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2Vy LCBJbnZhbGlkUGlkIG90aGVyd2lzZS4KKwkgKi8KKwlwaWRfdAkJYXBwbHlfbGVhZGVyX3BpZDsK KworCS8qIEluZGljYXRlcyB3aGV0aGVyIGFwcGx5IGNhbiBiZSBwZXJmb3JtZWQgaW4gcGFyYWxs ZWwuICovCisJYm9vbAkJcGFyYWxsZWxfYXBwbHk7CisKIAkvKiBTdGF0cy4gKi8KIAlYTG9nUmVj UHRyCWxhc3RfbHNuOwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgsOSArODQs MTMzIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBs eV90aW1lOwogfSBMb2dpY2FsUmVwV29ya2VyOwogCisvKgorICogU3RhdGUgb2YgdGhlIHRyYW5z YWN0aW9uIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBUaGUgZW51bSB2YWx1ZXMg bXVzdCBoYXZlIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZQorICogdHJh bnNpdGlvbnMuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJhbGxlbFRyYW5zU3RhdGUKK3sKKwlQQVJB TExFTF9UUkFOU19VTktOT1dOLAorCVBBUkFMTEVMX1RSQU5TX1NUQVJURUQsCisJUEFSQUxMRUxf VFJBTlNfRklOSVNIRUQKK30gUGFyYWxsZWxUcmFuc1N0YXRlOworCisvKgorICogU3RhdGUgb2Yg ZmlsZXNldCB1c2VkIHRvIGNvbW11bmljYXRlIGNoYW5nZXMgZnJvbSBsZWFkZXIgdG8gcGFyYWxs ZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqCisgKiBGU19FTVBUWSBpbmRpY2F0ZXMgYW4gaW5pdGlh bCBzdGF0ZSB3aGVyZSB0aGUgbGVhZGVyIGRvZXNuJ3QgbmVlZCB0byB1c2UKKyAqIHRoZSBmaWxl IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBG U19TRVJJQUxJWkVfSU5fUFJPR1JFU1MgaW5kaWNhdGVzIHRoYXQgdGhlIGxlYWRlciBpcyBzZXJp YWxpemluZyBjaGFuZ2VzCisgKiB0byB0aGUgZmlsZS4KKyAqCisgKiBGU19TRVJJQUxJWkVfRE9O RSBpbmRpY2F0ZXMgdGhhdCB0aGUgbGVhZGVyIGhhcyBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRv CisgKiB0aGUgZmlsZS4KKyAqCisgKiBGU19SRUFEWSBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBub3cg b2sgZm9yIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvCisgKiByZWFkIHRoZSBmaWxlLgorICov Cit0eXBlZGVmIGVudW0gUGFydGlhbEZpbGVTZXRTdGF0ZQoreworCUZTX0VNUFRZLAorCUZTX1NF UklBTElaRV9JTl9QUk9HUkVTUywKKwlGU19TRVJJQUxJWkVfRE9ORSwKKwlGU19SRUFEWQorfSBQ YXJ0aWFsRmlsZVNldFN0YXRlOworCisvKgorICogU3RydWN0IGZvciBzaGFyaW5nIGluZm9ybWF0 aW9uIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IHdv cmtlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKK3sK KwlzbG9ja190CQltdXRleDsKKworCVRyYW5zYWN0aW9uSWQgeGlkOworCisJLyoKKwkgKiBTdGF0 ZSB1c2VkIHRvIGVuc3VyZSBjb21taXQgb3JkZXJpbmcuCisJICoKKwkgKiBUaGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHdpbGwgc2V0IGl0IHRvIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGFmdGVy CisJICogaGFuZGxpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyB3aGlsZSB0aGUg YXBwbHkgbGVhZGVyIHdpbGwKKwkgKiB3YWl0IGZvciBpdCB0byBiZWNvbWUgUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQgYmVmb3JlIHByb2NlZWRpbmcgaW4KKwkgKiB0cmFuc2FjdGlvbiBmaW5pc2gg Y29tbWFuZHMgKGUuZy4gU1RSRUFNX0NPTU1JVC9TVFJFQU1fUFJFUEFSRSkuCisJICovCisJUGFy YWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGU7CisKKwkvKiBJbmZvcm1hdGlvbiBmcm9tIHRoZSBj b3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdC4gKi8KKwl1aW50MTYJCWxvZ2ljYWxy ZXBfd29ya2VyX2dlbmVyYXRpb247CisJaW50CQkJbG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsK KworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgc3RyZWFtaW5n IGJsb2NrcyBpbiB0aGUgcXVldWUuIFRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxs IGNoZWNrIGl0IGJlZm9yZSBzdGFydGluZyB0byB3YWl0LgorCSAqLworCXBnX2F0b21pY191aW50 MzIgcGVuZGluZ19zdHJlYW1fY291bnQ7CisKKwkvKgorCSAqIFhhY3RMYXN0Q29tbWl0RW5kIGZy b20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVGhpcyBpcyByZXF1aXJlZCBieQorCSAqIHRo ZSBsZWFkZXIgd29ya2VyIHNvIGl0IGNhbiB1cGRhdGUgdGhlIGxzbl9tYXBwaW5ncy4KKwkgKi8K KwlYTG9nUmVjUHRyCWxhc3RfY29tbWl0X2VuZDsKKworCS8qCisJICogQWZ0ZXIgZW50ZXJpbmcg UEFSVElBTF9TRVJJQUxJWkUgbW9kZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbAorCSAq IHNlcmlhbGl6ZSBjaGFuZ2VzIHRvIHRoZSBmaWxlLCBhbmQgc2hhcmUgdGhlIGZpbGVzZXQgd2l0 aCB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gVGhlbiB0aGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2lsbCBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMuCisJICoKKwkgKiBGaWxlU2V0 IGlzIHVzZWQgaGVyZSBpbnN0ZWFkIG9mIFNoYXJlZEZpbGVTZXQgYmVjYXVzZSB3ZSBuZWVkIGl0 IHRvCisJICogc3Vydml2ZSBhZnRlciByZWxlYXNpbmcgdGhlIHNoYXJlZCBtZW1vcnkgc28gdGhh dCB0aGUgbGVhZGVyIGFwcGx5CisJICogd29ya2VyIGNhbiByZS11c2UgdGhlIHNhbWUgZmlsZXNl dCBmb3IgdGhlIG5leHQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSAqLworCVBhcnRpYWxGaWxl U2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKwlGaWxlU2V0CQlmaWxlc2V0OworfSBQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRpb24gd2hpY2ggaXMgdXNlZCB0byBt YW5hZ2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFy YWxsZWxBcHBseVdvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlICptcV9oYW5kbGU7CisKKwkv KgorCSAqIFRoZSBxdWV1ZSB1c2VkIHRvIHRyYW5zZmVyIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhl IHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgor CSAqLworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKworCWRzbV9zZWdtZW50ICpk c21fc2VnOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlciBuZWVkcyB0byBzZXJpYWxpemUgdGhlCisJICogcmVtYWluaW5nIGNoYW5nZXMgdG8gYSBm aWxlIGR1ZSB0byB0aW1lb3V0IHdoZW4gYXR0ZW1wdGluZyB0byBzZW5kIGRhdGEKKwkgKiB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LgorCSAqLworCWJvb2wJ CXNlcmlhbGl6ZV9jaGFuZ2VzOworCisJLyoKKwkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMgYmVp bmcgdXNlZCB0byBwcm9jZXNzIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB0cmFuc2FjdGlvbi4gRmFs c2UgaW5kaWNhdGVzIHRoaXMgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorCSAqLwor CWJvb2wJCWluX3VzZTsKKworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKK30g UGFyYWxsZWxBcHBseVdvcmtlckluZm87CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFw cGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4g UEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RMTElN UE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElN UE9SVCBFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKwor ZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxT aGFyZWQ7CisKIC8qIGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAKQEAg LTg0LDkgKzIyNCwxMSBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50 IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQo T2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBl eHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlf cnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQs IE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBP aWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlk LCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwg T2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKK2V4dGVy biB2b2lkIGxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5l cmF0aW9uKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3ViaWQs IE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKQEAgLTEwMywxMCArMjQ1LDc4IEBAIGV4dGVybiB2 b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBleHRl cm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywgaW50IGNh Y2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9pZCBzdHJl YW1fc3RhcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCk7 CitleHRlcm4gdm9pZCBzdHJlYW1fc3RvcF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCk7CisK Ky8qIENvbW1vbiBzdHJlYW1pbmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1l c3NhZ2VzICovCitleHRlcm4gdm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0 cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJICAgWExvZ1JlY1B0ciBs c24pOworCitleHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOworCitleHRl cm4gdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOworCitleHRlcm4gdm9pZCBz dHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKKworZXh0 ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOworCitleHRlcm4gdm9pZCBzdG9y ZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxf bHNuKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRlcm4g dm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworZXh0ZXJuIHZvaWQgc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpOworCisvKiBQYXJhbGxl bCBhcHBseSB3b3JrZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJuIHZvaWQgcGFf YWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZv aWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKKworZXh0ZXJuIGJvb2wgcGFfc2VuZF9k YXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkg Y29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJp YWxpemUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJCQkJCSAgIGJvb2wg c3RyZWFtX2xvY2tlZCk7CisKK2V4dGVybiB2b2lkIHBhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJICBQYXJhbGxlbFRyYW5zU3RhdGUg aW5feGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworCitleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFu cyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLAorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB0b3Bf eGlkKTsKK2V4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpOworZXh0ZXJuIHZvaWQg cGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpOwor ZXh0ZXJuIHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqd3NoYXJlZCwKKwkJCQkJCQkJIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSk7 CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9E RSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQg eGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rp b24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBh X3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUp OworCitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKKwor ZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv LAorCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKKworI2RlZmluZSBpc1BhcmFsbGVs QXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxp ZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7 CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0 YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVy biAoIWFtX3RhYmxlc3luY193b3JrZXIoKSAmJgorCQkJIWlzUGFyYWxsZWxBcHBseVdvcmtlcihN eUxvZ2ljYWxSZXBXb3JrZXIpKTsKK30KKworc3RhdGljIGlubGluZSBib29sCithbV9wYXJhbGxl bF9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gaXNQYXJhbGxlbEFwcGx5V29ya2VyKE15 TG9naWNhbFJlcFdvcmtlcik7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JLRVJfSU5URVJOQUxf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL2xtZ3IuaAppbmRleCBiZTFkMmM5OWE5Li41YTNiZDAzYmE1IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xt Z3IuaApAQCAtMTA3LDYgKzEwNywxMSBAQCBleHRlcm4gdm9pZCBMb2NrU2hhcmVkT2JqZWN0Rm9y U2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiBleHRlcm4g dm9pZCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQs IHVpbnQxNiBvYmpzdWJpZCwKIAkJCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpOwogCitleHRl cm4gdm9pZCBMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9k ZSk7CitleHRlcm4gdm9pZCBVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vi b2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCQkgTE9DS01P REUgbG9ja21vZGUpOworCiAvKiBEZXNjcmliZSBhIGxvY2t0YWcgZm9yIGVycm9yIG1lc3NhZ2Vz ICovCiBleHRlcm4gdm9pZCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNvbnN0IExP Q0tUQUcgKnRhZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKaW5kZXggZTRlMTQ5NWIyNC4uNzc2NjEyM2E3YiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9sb2NrLmgKQEAgLTE0OSwxMCArMTQ5LDEyIEBAIHR5cGVkZWYgZW51bSBMb2NrVGFn VHlwZQogCUxPQ0tUQUdfU1BFQ1VMQVRJVkVfVE9LRU4sCS8qIHNwZWN1bGF0aXZlIGluc2VydGlv biBYaWQgYW5kIHRva2VuICovCiAJTE9DS1RBR19PQkpFQ1QsCQkJCS8qIG5vbi1yZWxhdGlvbiBk YXRhYmFzZSBvYmplY3QgKi8KIAlMT0NLVEFHX1VTRVJMT0NLLAkJCS8qIHJlc2VydmVkIGZvciBv bGQgY29udHJpYi91c2VybG9jayBjb2RlICovCi0JTE9DS1RBR19BRFZJU09SWQkJCS8qIGFkdmlz b3J5IHVzZXIgbG9ja3MgKi8KKwlMT0NLVEFHX0FEVklTT1JZLAkJCS8qIGFkdmlzb3J5IHVzZXIg bG9ja3MgKi8KKwlMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OCS8qIHRyYW5zYWN0aW9uIGJlaW5n IGFwcGxpZWQgb24gYSBsb2dpY2FsCisJCQkJCQkJCSAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIg Ki8KIH0gTG9ja1RhZ1R5cGU7CiAKLSNkZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19B RFZJU09SWQorI2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFHX0FQUExZX1RSQU5TQUNU SU9OCiAKIGV4dGVybiBQR0RMTElNUE9SVCBjb25zdCBjaGFyICpjb25zdCBMb2NrVGFnVHlwZU5h bWVzW107CiAKQEAgLTI3OCw2ICsyODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTE9DS1RBRwogCSAo bG9ja3RhZykubG9ja3RhZ190eXBlID0gTE9DS1RBR19BRFZJU09SWSwgXAogCSAobG9ja3RhZyku bG9ja3RhZ19sb2NrbWV0aG9kaWQgPSBVU0VSX0xPQ0tNRVRIT0QpCiAKKy8qCisgKiBJRCBpbmZv IGZvciBhIHJlbW90ZSB0cmFuc2FjdGlvbiBvbiBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2Ny aWJlciBpczogREIKKyAqIE9JRCArIFNVQlNDUklQVElPTiBPSUQgKyBUUkFOU0FDVElPTiBJRCAr IE9CSklECisgKi8KKyNkZWZpbmUgU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04obG9ja3Rh ZyxkYm9pZCxzdWJvaWQseGlkLG9iamlkKSBcCisJKChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMSA9 IChkYm9pZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQyID0gKHN1Ym9pZCksIFwKKwkg KGxvY2t0YWcpLmxvY2t0YWdfZmllbGQzID0gKHhpZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdf ZmllbGQ0ID0gKG9iamlkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ190eXBlID0gTE9DS1RBR19B UFBMWV9UUkFOU0FDVElPTiwgXAorCSAobG9ja3RhZykubG9ja3RhZ19sb2NrbWV0aG9kaWQgPSBE RUZBVUxUX0xPQ0tNRVRIT0QpCiAKIC8qCiAgKiBQZXItbG9ja2VkLW9iamVjdCBsb2NrIGluZm9y bWF0aW9uOgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBlZTYzNjkwMGYzLi45M2E1MWY0 MjU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVm IGVudW0KIAlQUk9DU0lHX1dBTFNORF9JTklUX1NUT1BQSU5HLAkvKiBhc2sgd2Fsc2VuZGVycyB0 byBwcmVwYXJlIGZvciBzaHV0ZG93biAgKi8KIAlQUk9DU0lHX0JBUlJJRVIsCQkJLyogZ2xvYmFs IGJhcnJpZXIgaW50ZXJydXB0ICAqLwogCVBST0NTSUdfTE9HX01FTU9SWV9DT05URVhULCAvKiBh c2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAqLworCVBST0NTSUdfUEFSQUxM RUxfQVBQTFlfTUVTU0FHRSwgLyogTWVzc2FnZSBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg Ki8KIAogCS8qIFJlY292ZXJ5IGNvbmZsaWN0IHJlYXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0RBVEFCQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDBiMjEwMGJlNGEu Ljc2M2ZiZWFkZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlw ZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9DSEVDS1BPSU5URVJfTUFJTiwKIAlXQUlUX0VWRU5UX0xP R0lDQUxfQVBQTFlfTUFJTiwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTiwKKwlX QUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTiwKIAlXQUlUX0VWRU5UX1JFQ09W RVJZX1dBTF9TVFJFQU0sCiAJV0FJVF9FVkVOVF9TWVNMT0dHRVJfTUFJTiwKIAlXQUlUX0VWRU5U X1dBTF9SRUNFSVZFUl9NQUlOLApAQCAtMTA1LDYgKzEwNiw3IEBAIHR5cGVkZWYgZW51bQogCVdB SVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dS T1dfQlVDS0VUU19FTEVDVCwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJU LAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UsCiAJV0FJ VF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFU RV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9JTlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCBjMTNkMjE4ZGNmLi4xZWQ2ZjRjMzljIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC0xMTcsNyArMTE3 LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9IGFueSk7CkBAIC0xMjUsNyArMTI1LDcgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xMzgsNyArMTM4 LDcgQEAgRVJST1I6ICBpbnZhbGlkIGNvbm5lY3Rpb24gc3RyaW5nIHN5bnRheDogbWlzc2luZyAi PSIgYWZ0ZXIgImZvb2JhciIgaW4gY29ubmVjdGkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYg ICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIFBVQkxJQ0FUSU9OIHRlc3RwdWIyLCB0ZXN0cHViMyBXSVRIIChyZWZy ZXNoID0gZmFsc2UpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gJzAvMTIzNDUnKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAg ICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHVi M30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdDIgfCAwLzEyMzQ1CiAoMSByb3cpCiAKIC0tIG9rIC0gd2l0aCBsc24gPSBOT05FCkBA IC0xNzAsNyArMTcwLDcgQEAgRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlvbiAoTFNOKTogMC8w CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogQkVHSU47CkBAIC0y MDUsNyArMjA1LDcgQEAgSElOVDogIEF2YWlsYWJsZSB2YWx1ZXM6IGxvY2FsLCByZW1vdGVfd3Jp dGUsIHJlbW90ZV9hcHBseSwgb24sIG9mZi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgIE5hbWUgICAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgcmVncmVzc190ZXN0c3Vi X2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRl c3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRo ZSByZXN0IHNpbXBsZQpAQCAtMjQyLDcgKzI0Miw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBs aWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoYmluYXJ5ID0gZmFs c2UpOwpAQCAtMjUxLDEzICsyNTEsMTMgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK IC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViOwotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwg LSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWlu ZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUKK0VS Uk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwiCiAt LSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5F Q1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBX SVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHN1YnNj cmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKQEAgLTI2Niw3ICsyNjYs MTUgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQg ICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisoMSByb3cpCisKK0FMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CitcZFJzKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKQEAgLTI3NSw3ICsyODMsNyBAQCBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAt LSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBleGlzdHMKQEAgLTI5Myw3ICszMDEsNyBAQCBF UlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViMSIgaXMgYWxyZWFkeSBpbiBzdWJzY3JpcHRpb24g InJlZ3Jlc3NfdGVzdHN1YiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3Rw dWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlv biB1c2VkIG1vcmUgdGhlbiBvbmNlCkBAIC0zMTEsNyArMzE5LDcgQEAgQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBX SVRIIChyZWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTM1MCw3 ICszNTgsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVh bGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgZiAgICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS1mYWlsIC0gYWx0ZXIgb2Yg dHdvX3BoYXNlIG9wdGlvbiBub3Qgc3VwcG9ydGVkLgpAQCAtMzYyLDcgKzM3MCw3IEBAIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSB0cnVlKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8 IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05F KTsKQEAgLTM3NSw3ICszODMsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlv dSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAt MzkxLDcgKzM5OSw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwpAQCAt Mzk5LDcgKzQwNyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChk aXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbAppbmRleCBlYWVhZGU4Y2NlLi43OTkxYWJmZThmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE2Nyw3ICsxNjcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKIERST1AgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xl YW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFs c2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBpdCB3b3JrcwpAQCAtMTc1LDYgKzE3NSwx MCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBcZFJzKwogCitBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworCitcZFJzKwor CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFs c2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFt LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3 ZTQ0Li4wMWYyMDVkMmJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAg LTgsNiArOCwxMjggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1pbmcK KyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlw ZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVwcyBm b3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitz dWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFp ciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRp biAgPSAnJzsKKwlteSAkb3V0ID0gJyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1l ciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9k ZWZhdWx0KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bv c3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwor CSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CX07CisJJGgtPnB1bXBfbmI7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49 IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBi aW5hcnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBz KGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJ J2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFu Z2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJl ciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlu cyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLgorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQz MjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdj aGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMg Q2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJs aXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7CkBAIC0yNiwxNyArMTQ4LDI3IEBAICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEsICdmb28nKSwgKDIsICdiYXIn KSIpOwogCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiXzIgKGEgaW50KSIpOworCiAjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3Jp YmVyCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0LCBjIHRpbWVzdGFtcHR6IERF RkFVTFQgbm93KCksIGQgYmlnaW50IERFRkFVTFQgOTk5KSIKICk7CiAKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiXzIgKGEgaW50 KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBV TklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7CisKICMgU2V0dXAgbG9naWNh bCByZXBsaWNhdGlvbgogbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5j b25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3Rf dGFiIik7CisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiwg dGVzdF90YWJfMiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJ T04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNiArMTgxLDQzIEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCisjIFdlIG5lZWQgdG8gY2hlY2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhh dCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlv bi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUg dGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKworIyBUZXN0IHRoYXQg dGhlIGRlYWRsb2NrIGlzIGRldGVjdGVkIGFtb25nIHRoZSBsZWFkZXIgYW5kIHBhcmFsbGVsIGFw cGx5CisjIHdvcmtlcnMuCisKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAiZGVhZGxvY2tfdGltZW91dCA9IDEwbXMiKTsKKyRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhh cyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXtTRUxFQ1QgMX0pOworCiAjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFj aCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCiBteSAkaW4gID0gJyc7CiBteSAkb3V0ID0gJyc7 CkBAIC01OCw3MyArMjI3LDkwIEBAIG15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKIG15ICRoID0gJG5vZGVfcHVi bGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwK IAlvbl9lcnJvcl9zdG9wID0+IDApOwogCisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVu IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2Vy IGNhbiBiZSBkZXRlY3RlZC4KKworbXkgJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKICRpbiAuPSBxewogQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiBT RUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOwogfTsKICRoLT5wdW1w X25iOwogCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOworIyBFbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBiZWZvcmUgdGhlCisjIGxlYWRl ciB3b3JrZXIuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICgg W0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVu ay8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCiAkaW4gLj0gcXsKIENPTU1J VDsKIFxxCiB9OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZh aWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKyRoLT5maW5pc2g7CiAKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQv LAorCSRvZmZzZXQpOworCisjIEluIG9yZGVyIGZvciB0aGUgdHdvIHRyYW5zYWN0aW9ucyB0byBi ZSBjb21wbGV0ZWQgbm9ybWFsbHkgd2l0aG91dCBjYXVzaW5nCisjIGNvbmZsaWN0cyBkdWUgdG8g dGhlIHVuaXF1ZSBpbmRleCwgd2UgdGVtcG9yYXJpbHkgZHJvcCBpdC4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAogJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5z IGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVz dWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3Bw aW5nIGluZGV4Jyk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisjIENs ZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VCAoYmluYXJ5ID0gb24pIik7CisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0 X3RhYl8yKGEpIik7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0 byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOworIyBDb25maXJtIGlm IGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gYmUgZGV0 ZWN0ZWQuCiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3 KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworJGluIC49 IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworIyBFbnN1cmUgdGhh dCB0aGUgZmlyc3QgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29t bWFuZAorIyBiZWZvcmUgdGhlIHNlY29uZCBvbmUuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMg aW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJJG9mZnNldCk7CiAKLSMgQ2hhbmdlIHRoZSBsb2Nh bCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0 ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0 ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4K LSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90 YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcx cyciCi0pOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIklOU0VSVCBJTlRPIHRlc3RfdGFi XzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIpOwogCiskaW4g Lj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFkbG9jayBkZXRlY3RlZC8s CisJJG9mZnNldCk7CisKKyMgSW4gb3JkZXIgZm9yIHRoZSB0d28gdHJhbnNhY3Rpb25zIHRvIGJl IGNvbXBsZXRlZCBub3JtYWxseSB3aXRob3V0IGNhdXNpbmcKKyMgY29uZmxpY3RzIGR1ZSB0byB0 aGUgdW5pcXVlIGluZGV4LCB3ZSB0ZW1wb3JhcmlseSBkcm9wIGl0LgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIiKTsKKworIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2 Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQg ZGF0YScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEo MTAwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5k ZXgnKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCBk YjI5ZjA4OWEwLi43ZTM3NGY2ODdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNzMgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsK IAorIyBDaGVjayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFw cGx5aW5nIHRoZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxf bG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5 cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKwor IyBDb21tb24gdGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1p bmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwor CisJbXkgJG9mZnNldCA9IDA7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDYsIDgpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOSwgMTEpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTIsIDE0KSBz KGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBz NDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDE1LCAxNykgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgxMnwxMnwxMiksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBp biBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIp Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwog IyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTA0LDEwIEBAICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBw bmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAt NDksNDEgKzEyMCwzNCBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NiwgOCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9J TlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDksIDExKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTIsIDE0KSBzKGkpOwotVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUsIDE3 KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0p OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVz dWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDEyfDEyfDEyKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNj cmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRvIGNoZWNrIERFQlVHIGxv Z3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMgYXBwbGll ZCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVl cnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4u ZmIwM2I3MDhiNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVh bV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwK QEAgLTIsNiArMiw5IEBACiAjIENvcHlyaWdodCAoYykgMjAyMS0yMDIyLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiAjIFRlc3Qgc3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5z YWN0aW9uIHdpdGggRERMIGFuZCBzdWJ0cmFuc2FjdGlvbnMKKyMKKyMgVGhpcyBmaWxlIGlzIG1h aW5seSB0byB0ZXN0IHRoZSBEREwvRE1MIGludGVyYWN0aW9uIG9mIHRoZSBwdWJsaXNoZXIgc2lk ZSwKKyMgc28gd2UgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFwcGx5IHZlcnNpb24gZm9yIHRoZSB0 ZXN0cyBpbiB0aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5kZXggMTQ1OGMzYTBmYy4uMjQ0MjgxMzFmNyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbApAQCAtOCw2ICs4LDEyNCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhl IHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlt eSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsK KworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUg U1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0 ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxl bCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zm c2V0ID0gMDsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg1LCBtZDUoNTo6dGV4dCkpOworCVNBVkVQT0lOVCBz MzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDYsIG1kNSg2Ojp0ZXh0KSk7CisJUk9M TEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg3LCBtZDUoNzo6dGV4 dCkpOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOCwg bWQ1KDg6OnRleHQpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5LCBtZDUoOTo6dGV4dCkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDEwLCBtZDUoMTA6OnRleHQpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcp OworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDZ8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMSwg bWQ1KDExOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoMTIsIG1kNSgxMjo6dGV4dCkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDEzLCBtZDUoMTM6OnRleHQpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNCwgbWQ1KDE0Ojp0ZXh0KSk7CisJUkVMRUFTRSBz MjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE1LCBtZDUoMTU6OnRleHQpKTsKKwlS T0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNj cmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDd8MCksCisJ CSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMTYsIG1kNSgxNjo6dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE3LCBtZDUoMTc6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxOCwgbWQ1KDE4Ojp0ZXh0KSk7CisJUk9M TEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCwgJ0FCT1JUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoN3wwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyBy ZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJs aXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5v ZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2 LDYgKzE1NCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFw cG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFw cGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFt aW5nID0gb24pIgogKTsKQEAgLTQ4LDgxICsxNzAsMzMgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnww KSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBz dHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNSwgbWQ1KDU6OnRleHQpKTsKLVNBVkVQT0lO VCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNiwgbWQ1KDY6OnRleHQpKTsKLVJP TExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg3LCBtZDUoNzo6dGV4 dCkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDgsIG1k NSg4Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDksIG1kNSg5Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDEwLCBtZDUoMTA6OnRleHQpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNnwwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyIHN1YnRyYW5zYWN0aW9uCi0j IFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMSwgbWQ1KDExOjp0ZXh0KSk7 Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEyLCBtZDUoMTI6 OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTMs IG1kNSgxMzo6dGV4dCkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICgxNCwgbWQ1KDE0Ojp0ZXh0KSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTICgxNSwgbWQ1KDE1Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsK LX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0k cmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo N3wwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgcm9sbGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTYsIG1kNSgxNjo6dGV4 dCkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNywgbWQ1 KDE3Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDE4LCBtZDUoMTg6OnRleHQpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBG Uk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg3fDApLCAnY2hlY2sgcm9sbGJhY2sgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9 IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCisjIFdlIG5lZWQgdG8g Y2hlY2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGhhcworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJi b3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK KworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBl ZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1Qg MX0pOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1f c3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IGM2NzE5YzFhZjguLjM1M2U4MjZhOTMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJv cnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2Rk bF9hYm9ydC5wbApAQCAtMyw2ICszLDkgQEAKIAogIyBUZXN0IHN0cmVhbWluZyBvZiB0cmFuc2Fj dGlvbiB3aXRoIHN1YnRyYW5zYWN0aW9ucywgRERMcywgRE1McywgYW5kCiAjIHJvbGxiYWNrcwor IworIyBUaGlzIGZpbGUgaXMgbWFpbmx5IHRvIHRlc3QgdGhlIERETC9ETUwgaW50ZXJhY3Rpb24g b2YgdGhlIHB1Ymxpc2hlciBzaWRlLAorIyBzbyB3ZSBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBw bHkgdmVyc2lvbiBmb3IgdGhlIHRlc3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ug d2FybmluZ3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4u NDEwMmFjY2U5MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNl X2Nhc2NhZGUucGwKQEAgLTUsNiArNSw4IEBACiAjCiAjIEluY2x1ZGVzIHRlc3RzIGZvciBvcHRp b25zIDJQQyAobm90LXN0cmVhbWluZykgYW5kIGFsc28gZm9yIDJQQyAoc3RyZWFtaW5nKS4KICMK KyMgVHdvLXBoYXNlIGFuZCBwYXJhbGxlbCBhcHBseSB3aWxsIGJlIHRlc3RlZCBpbiAwMjNfdHdv cGhhc2Vfc3RyZWFtLCBzbyB3ZQorIyBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBwbHkgdmVyc2lv biBmb3IgdGhlIHRlc3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IGExOTExMjliOWQuLmQ1NmYyYjdjM2Ug MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0u cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApA QCAtOCw2ICs4LDI4NyBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWlu ZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgk aXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlx ci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0 eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBz IGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4K K3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUg LyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5z YWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy CisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVy CisJbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkj IDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoNHw0fDQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0 ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUg LyBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJv d3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3Ry ZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhw ZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJ VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNU SU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8Mnwy KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5 IHRoZSBvcmlnaW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJ IyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBj cmFzaCByZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3Mu CisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGlu ZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBi b3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOwor CQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisJJG5vZGVfcHVibGlzaGVyLT5z dG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisJJG5vZGVfc3Vi c2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjb21taXQgcG9zdCB0aGUg cmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERv IElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgor CSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAz LiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUu CisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAy UEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIK KwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUg c29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdl IGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRy YW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQg aXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zv b2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyLAorCSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxs IHdhcyByZXBsaWNhdGVkCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRoZSBv dXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBD T01NSVQgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBh ZnRlciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIwor CSMgRXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIK KwkjICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJv d3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVk X3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDV8NXw1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkg MlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgw KSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFu dXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjIFNldHVwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBA IC00OCw2ICszMjksMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywg IgogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNDksMzggQEAgbXkg JHR3b3BoYXNlX3F1ZXJ5ID0KICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywgJHR3b3BoYXNlX3F1ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBzdWJzY3JpYmVyIHRvIGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBx cSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2Fj dGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0 YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSBy b3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJ TjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlv biBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8 NHw0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUg J3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRv bGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRh cHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxl IGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNr IHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUg b3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWIn O30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0 cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwy fDIpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25s eSB0aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNr IHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJl c3RhcnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotIyAyLiBU aGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5vdGU6IGJvdGggcHVibGlzaGVy IGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNo ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVf c3Vic2NyaWJlci0+c3RhcnQ7CiAKLSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8NHw0 KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1 dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0 byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBp cyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3 aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBB UkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMg cm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBt b2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwot CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVj b3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTog dGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRo aXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5 OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAn dGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3Rp bGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNp ZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJF UEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBk YXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsg aW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0j IEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGlj YXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBJbnNlcnQgYSBkaWZmZXJl bnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMg Tm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBz dXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKyMg V2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0 aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBl ZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1Qg MX0pOwogCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoNXw1fDUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2Vs bCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggNTBkODZjYjAxYi4uMjNiYWZlYzVmNyAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTE0NzMsNiArMTQ3Myw3IEBAIExvZ2ljYWxSZXBSZWxJZAogTG9naWNhbFJl cFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBh cmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0 YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTg3Niw2ICsxODc3LDkgQEAg UGFnZVhMb2dSZWNQdHIKIFBhZ2V0YWJsZUVudHJ5CiBQYWlycwogUGFyYWxsZWxBcHBlbmRTdGF0 ZQorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29ya2VySW5mbworUGFy YWxsZWxBcHBseVdvcmtlclNoYXJlZAogUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUKIFBhcmFsbGVs QmxvY2tUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyCkBAIC0xODk1 LDYgKzE4OTksNyBAQCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQYXJhbGxlbFN0YXRlCiBQ YXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGEKK1BhcmFsbGVs VHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxXb3JrZXJDb250ZXh0CiBQ YXJhbGxlbFdvcmtlckluZm8KQEAgLTE5MjQsNiArMTkyOSw3IEBAIFBhcnNlclN0YXRlCiBQYXJ0 Q2xhdXNlSW5mbwogUGFydENsYXVzZU1hdGNoU3RhdHVzCiBQYXJ0Q2xhdXNlVGFyZ2V0CitQYXJ0 aWFsRmlsZVNldFN0YXRlCiBQYXJ0aXRpb25Cb3VuZEluZm8KIFBhcnRpdGlvbkJvdW5kSW5mb0Rh dGEKIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAtMjc3NCw2ICsyNzgwLDcgQEAgVG9jRW50cnkKIFRv a2VuQXV4RGF0YQogVG9rZW5pemVkQXV0aExpbmUKIFRyYWNrSXRlbQorVHJhbnNBcHBseUFjdGlv bgogVHJhbnNJbnZhbGlkYXRpb25JbmZvCiBUcmFuc1N0YXRlCiBUcmFuc2FjdGlvbklkCi0tIAoy LjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v70-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v70-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v70-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12717; creation-date="Fri, 30 Dec 2022 10:24:15 GMT"; modification-date="Fri, 30 Dec 2022 10:25:29 GMT" Content-Transfer-Encoding: base64 RnJvbSA2ZGMwOWFkNmM4YjdjMWQ3MjkwNTNhNjY1ZTMwZWFlZmY4ZGMzNjcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzAgMi81XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbCAgICAgICAgIHwgMTQ0ICsrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggYTMzYTkz NTcwYi4uNjY5YmFiZjdlYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2NTAsNiArMTE2NTAsMzggQEAgTE9H 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 bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggNzAzOTgzZjI3OC4uMDZhNzg0ZGUzZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTI1NCw2ICsyNTQsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50YWluIHN1 YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QgKnN1YnhhY3RsaXN0ID0gTklM OwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJCXN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xk ID0gLTE7CisKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CiBzdGF0aWMgUGFydGlh bEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKQEAgLTExNDMsNiArMTE0 NiwxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KTsKIAlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAKKwkvKiBGb3JjZSB0byBz ZXJpYWxpemUgbWVzc2FnZXMgaWYgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgaXMgcmVhY2hl ZC4gKi8KKwlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgIT0gLTEgJiYKKwkJKHN0cmVh bV9zZXJpYWxpemVfdGhyZXNob2xkID09IDAgfHwKKwkJIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkIDwgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MpKQorCXsKKwkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAvKgogICogVGhpcyB0aW1lb3V0IGlz IGEgYml0IGFyYml0cmFyeSBidXQgdGVzdGluZyByZXZlYWxlZCB0aGF0IGl0IGlzIHN1ZmZpY2ll bnQKICAqIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdW5sZXNzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaXMgd2FpdGluZyBvbiBzb21lCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCAxZmMxMWFkNjE1Li5hOTU3MjcxNmZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTMyNSw2ICszMjUsMTIgQEAgc3RhdGljIFRyYW5zYWN0 aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogICovCiBzdGF0aWMgdWlu dDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CiAKKy8qCisgKiBUaGUgbnVtYmVyIG9m IHN0cmVhbWluZyBjaHVua3Mgc2VudCBieSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyBvbmUK KyAqIHN0cmVhbWVkIHRyYW5zYWN0aW9uLiBUaGlzIGlzIG9ubHkgdXNlZCB3aGVuIHN0cmVhbV9z ZXJpYWxpemVfdGhyZXNob2xkID4gMC4KKyAqLwordWludDMyCQlwYXJhbGxlbF9zdHJlYW1fbmNo dW5rcyA9IDA7CisKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0 aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRp b24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vi c2tpcGxzbi4KQEAgLTE1MTcsNiArMTUyMyw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQo U3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJ QXNzZXJ0KHdpbmZvKTsKIAorCQkJaWYgKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMCkK KwkJCQlwYXJhbGxlbF9zdHJlYW1fbmNodW5rcysrOworCiAJCQkvKgogCQkJICogT25jZSB3ZSBz dGFydCBzZXJpYWxpemluZyB0aGUgY2hhbmdlcywgdGhlIHBhcmFsbGVsIGFwcGx5CiAJCQkgKiB3 b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIHN0cmVhbSBsb2Nr CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDYyYjdmNTdlNjMuLjM1ZTdiZmJi YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC02MSw2ICs2MSw3IEBACiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3N5bmNyZXAuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbGFyZ2Vfb2JqZWN0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wZ19zaG1lbS5oIgpAQCAtMzAxNCw2ICszMDE1LDE5IEBAIHN0cnVjdCBjb25maWdfaW50IENv bmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCIsIFBHQ19TSUdIVVAsIERFVkVMT1BFUl9PUFRJT05T LAorCQkJZ2V0dGV4dF9ub29wKCJGb3JjZXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gc2Vy aWFsaXplIG1lc3NhZ2VzICIKKwkJCQkJCSAidG8gZmlsZXMgYWZ0ZXIgc2VuZGluZyBzcGVjaWZp ZWQgYW1vdW50IG9mIHN0cmVhbWluZyAiCisJCQkJCQkgImNodW5rcyBpbiBzdHJlYW1pbmcgcGFy YWxsZWwgbW9kZS4iKSwKKwkJCWdldHRleHRfbm9vcCgiQSB2YWx1ZSBvZiAtMSBkaXNhYmxlcyB0 aGlzIGZlYXR1cmUuIiksCisJCQlHVUNfTk9UX0lOX1NBTVBMRQorCQl9LAorCQkmc3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQsCisJCS0xLCAtMSwgSU5UX01BWCwKKwkJTlVMTCwgTlVMTCwgTlVM TAorCX0sCisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdf V0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQg YmVmb3JlIGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAppbmRleCA4YjZiNzZiNjQ3Li4xYzIwMWFkMThiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjIwLDYgKzIyMCwxMCBAQCBleHRlcm4gUEdETExJTVBP UlQgTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CiAKK2V4dGVybiBQR0RMTElNUE9SVCBp bnQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50 MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVua3M7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJl cF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25s eV9ydW5uaW5nKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDAxZjIw NWQyYmYuLjM0NDFiNDcwNzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApA QCAtMTMzLDEzICsxMzMsMjAgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7Ci0kbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAotCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVi bGlzaGVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCittYXhfcHJlcGFy ZWRfdHJhbnNhY3Rpb25zID0gMTAKK2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCCisp KTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQog bXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vi c2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXEoCittYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKKykpOwogJG5vZGVfc3Vi c2NyaWJlci0+c3RhcnQ7CiAKICMgQ3JlYXRlIHNvbWUgcHJlZXhpc3RpbmcgY29udGVudCBvbiBw dWJsaXNoZXIKQEAgLTE3MCw3ICsxNzcsNyBAQCBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKICMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNSRUFU RSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1p bmcgPSBvbikiCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFw X3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbiwgdHdvX3BoYXNlID0gb24pIgogKTsKIAogIyBXYWl0 IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCkBAIC0zMTIsNiArMzE5LDEzNyBAQCAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CiBpcygkcmVzdWx0LCBxcSgxMDAwMCksICdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwogCisj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRlc3Qgc2Vy aWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaworCisjIFNldCBzdHJlYW1fc2VyaWFsaXplX3RocmVz aG9sZCB0byB6ZXJvLCBzbyB0aGUgbWVzc2FnZXMgd2lsbCBiZSBzZXJpYWxpemVkIHRvIGRpc2su Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwknQUxURVIgU1lTVEVN IFNFVCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA9IDA7Jyk7Ciskbm9kZV9zdWJzY3JpYmVy LT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBo YXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHF7U0VMRUNUIDF9KTsKKworIyBTZXJpYWxpemUgdGhlIENPTU1JVCB0cmFuc2FjdGlvbi4KKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKSIpOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUg c2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzog KCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNo YW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBt ZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBQUkVQQVJFIHRyYW5zYWN0aW9uLgorIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJUFJFUEFSRSBUUkFOU0FDVElPTiAneGFj dCc7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgor JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzop PyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9m ZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKyMgQ2hl Y2sgdGhhdCAyUEMgZ2V0cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAneGFjdCc7Iik7CisKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBD bGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBTZXJpYWxpemUg dGhlIEFCT1JUIHRvcC10cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5T RVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAw KSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBh cmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJV RzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVk IGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBx cSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVz c2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9u bWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgQUJPUlQgc3ViLXRyYW5zYWN0aW9uLgorIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJU0FWRVBPSU5UIHNwOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gc3A7CisJQ09NTUlUOworCX0pOworCisjIEVuc3VyZSB0aGF0 IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdl cyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgb25seSBzdWItdHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLgorJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi4yMy4wLndpbmRv d3MuMQoK --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v70-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v70-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v70-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4230; creation-date="Fri, 30 Dec 2022 10:24:16 GMT"; modification-date="Fri, 30 Dec 2022 10:25:29 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNzk1NTU2NmZiNzk5OTE3MDQxY2JhOWEwNmY4N2Y3ZGMwOTIzOWYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 MCAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNjAgKysrKysrKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysrCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMSArCiAzIGZpbGVzIGNo YW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXgg MDZhNzg0ZGUzZi4uMThjNzRjYzI3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTU0Miw2ICs1NDIsMjUgQEAg cGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8q CisgKiBTdG9wIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGZyZWUgdGhlIGNv cnJlc3BvbmRpbmcgaW5mby4KKyAqLworc3RhdGljIHZvaWQKK3BhX3N0b3Bfd29ya2VyKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlpbnQJCQlzbG90X25vOworCXVpbnQxNgkJ Z2VuZXJhdGlvbjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwor CWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9u OworCXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOwor CVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJbG9naWNhbHJlcF9w YV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCXBhX2ZyZWVfd29ya2VyX2lu Zm8od2luZm8pOworfQorCiAvKgogICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJl dXNlLgogICoKQEAgLTU3NywyMyArNTk2LDQyIEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKIAkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpID4KIAkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAy KSkKIAl7Ci0JCWludAkJCXNsb3Rfbm87Ci0JCXVpbnQxNgkJZ2VuZXJhdGlvbjsKLQotCQlTcGlu TG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKLQkJZ2VuZXJhdGlvbiA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247Ci0JCXNsb3Rfbm8gPSB3aW5m by0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOwotCQlTcGluTG9ja1JlbGVhc2Uo JndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJcGFfc3RvcF93b3JrZXIod2luZm8pOworCQlyZXR1 cm47CisJfQogCi0JCWxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3Aoc2xvdF9ubywgZ2VuZXJhdGlv bik7CisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9 IGZhbHNlOworfQogCi0JCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworLyoKKyAqIFRyeSB0 byBzdG9wIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdGhhdCBhcmUgbm90IGluIHVzZSB0byBrZWVw IHRoZSBudW1iZXIgb2YKKyAqIHdvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLgorICovCit2b2lkCitwYV9zdG9w X2lkbGVfd29ya2Vycyh2b2lkKQoreworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzOworCUxpc3RD ZWxsICAgKmxjOworCWludAkJCW1heF9hcHBseXdvcmtlcnMgPSBtYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMjsKIAorCWlmIChsaXN0X2xlbmd0aChQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCkgPD0gbWF4X2FwcGx5d29ya2VycykKIAkJcmV0dXJuOworCisJYWN0 aXZlX3dvcmtlcnMgPSBsaXN0X2NvcHkoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpOworCisJZm9y ZWFjaChsYywgYWN0aXZlX3dvcmtlcnMpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlwYV9z dG9wX3dvcmtlcih3aW5mbyk7CisKKwkJLyogUmVjaGVjayB0aGUgbnVtYmVyIG9mIHdvcmtlcnMu ICovCisJCWlmIChsaXN0X2xlbmd0aChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPD0gbWF4X2Fw cGx5d29ya2VycykKKwkJCWJyZWFrOwogCX0KIAotCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsKLQl3 aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKKwlsaXN0X2ZyZWUoYWN0aXZlX3dvcmtl cnMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5k ZXggYTk1NzI3MTZmZi4uY2FhYWY4NTljMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCkBAIC0zNjI5LDYgKzM2MjksMTMgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChY TG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCXsKIAkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBm YWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCisJCQkvKgorCQkJICog VHJ5IHRvIHN0b3AgZnJlZSB3b3JrZXJzIGluIHRoZSBwb29sIGluIGNhc2UgdGhlCisJCQkgKiBt YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIGlzIGNoYW5nZWQgdG8g YQorCQkJICogbG93ZXIgdmFsdWUuCisJCQkgKi8KKwkJCXBhX3N0b3BfaWRsZV93b3JrZXJzKCk7 CiAJCX0KIAogCQlpZiAocmMgJiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaAppbmRleCAxYzIwMWFkMThiLi4yMjFiNWE4ZmQ5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjczLDYgKzI3Myw3IEBAIGV4 dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1l KTsKIC8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCiBl eHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJu IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhp ZCk7CitleHRlcm4gdm9pZCBwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lk IHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0 YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAotLSAKMi4yMy4w LndpbmRvd3MuMQoK --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v70-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v70-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v70-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21570; creation-date="Fri, 30 Dec 2022 10:24:18 GMT"; modification-date="Fri, 30 Dec 2022 10:25:30 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZDY1OWZkZDYxOGIyNzNhMTZkY2MzMDgzZDkwOGM1Mzk2NGFjYzE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzAgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl 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 ICB8ICA1OSArKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspLCA1NiBk 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 YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDE4Yzc0Y2MyNzMuLjJhYjQyMzhiNTYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0zMTIsNiArMzEyLDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE2NjcsMyArMTY3OCwyMiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCXBhX2ZyZWVfd29ya2VyKHdp bmZvKTsKIH0KKworLyogQ2hlY2sgaWYgYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworYm9vbAorcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+aW5fdXNl KQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggY2FhYWY4NTljMS4uNTIwYWMzZDA4MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTIsNyArMzky LDcgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lk IHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVl c3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQp Oworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRp YyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEg KmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwo QXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQyOSw2ICs0MjksOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogc3RhdGljIFRy YW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7CiAK K3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAg KiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyLgogICov CkBAIC0xMDQ0LDYgKzEwNDYsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xMTUwLDYgKzExNTUsOSBA QCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJz Y3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTIwNiw2ICsxMjE0LDkgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRp b24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNl dF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNp bmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTI2Nyw2ICsxMjc4LDkgQEAg YXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVz aF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0 RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xz bik7CiAKQEAgLTEzOTAsNiArMTQwNCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTk1Nyw2ICsxOTc0LDEwIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJaWYgKHRvcGxldmVsX3hhY3QpCisJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9 CiAKQEAgLTIyMzcsNiArMjI1OCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEu ZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTQzMzgsMjAg KzQzNjIsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Ms IGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1p dCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8g YW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1p dEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVy cm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JF X1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgp OwogCkBAIC00Mzc2LDIwICs0NDA4LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQot CQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogfQpAQCAtNDY2NSwzOSArNDcwNCwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5Lgor ICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJz Y3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUK LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lO VEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVy IHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2Ny aXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3Jp cHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJ CQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBv ZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ5ODksMyArNTAwOSw3MSBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw 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 bmFsLmgKaW5kZXggMjIxYjVhOGZkOS4uODc1M2I0YmFjNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTMwMyw2ICszMDMsOCBAQCBleHRlcm4gdm9pZCBw YV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX3hhY3Rf ZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCSAgIFhMb2dSZWNQ dHIgcmVtb3RlX2xzbik7CiAKK2V4dGVybiBib29sIHBhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lk KTsKKwogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFw cGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29sCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCAzNDQxYjQ3MDc3Li45OTQ0ZDM2OTk5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTc0LDggKzc0LDE2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CiAKIAkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCW15 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSk7CiAJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQgKGJpbmFyeSA9IG9uKSIpOworCSRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJICApCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCiAJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CkBAIC00NTAsNiArNDU4LDU3IEBAICRyZXN1bHQgPQog aXMoJHJlc3VsdCwgcXEoNTAwMCksCiAJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5 IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKIAorIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3Qg cmUtYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBsZWFkZXIg YXBwbHkKKyMgd29ya2VyIGFuZCBhcHBseSBzdWJzZXF1ZW50IHN0cmVhbWluZyB0cmFuc2FjdGlv biB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyIGFmdGVyIHRoaXMgcmV0cnkgc3Vj Y2VlZHMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3Rh Yl8yKGEpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3Rh Yl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKTsKK0NPTU1JVDt9KTsKKworIyBDaGVjayBpZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIG5vdCBzdGFydGVkIGJlY2F1c2UgdGhlIGFib3ZlCisj IHRyYW5zYWN0aW9uIGZhaWxlZCB0byBiZSBhcHBsaWVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIGFyZSBub3QgdXNlZCBmb3IgcmV0cmllcy8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUg dW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgn KTsKKworIyBBZnRlciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1Qg aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKSIpOworCitjaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgMSwgJ0NPTU1JVCcpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMSksCisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXInKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsK IAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v70-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v70-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v70-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9720; creation-date="Fri, 30 Dec 2022 10:24:19 GMT"; modification-date="Fri, 30 Dec 2022 10:25:31 GMT" Content-Transfer-Encoding: base64 RnJvbSAxODcyY2YzYzVlZmY2MDRiMWE2MWRmM2IxZjE4NWMwMWE0NTI2OGU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djcwIDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt 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 ZXIuYwppbmRleCBiYTk1NGFjMmEyLi4zZTVjNDY1Y2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu 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_OS3PR01MB627586DA752A9E07F02FB7609EF09OS3PR01MB6275jpnp_--