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 1od9fy-0007qg-JU for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Sep 2022 12:27:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1od9fw-00057a-7M for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Sep 2022 12:27:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1od9fu-00057L-Ry for pgsql-hackers@lists.postgresql.org; Tue, 27 Sep 2022 12:26:59 +0000 Received: from esa17.fujitsucc.c3s2.iphmx.com ([216.71.158.34]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1od9fp-000364-UD for pgsql-hackers@lists.postgresql.org; Tue, 27 Sep 2022 12:26:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1664281615; x=1695817615; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=vUtNPCeg6f2dtl+5kNetPGjQbV1Lu8mItE6Uj5NZ6Uw=; b=cBW2F3X5wM5447ZaAZ6atZZRYZjPWqZrrIth3coJIWZtofRhnyTb+A4p 5GLtx2ehqNVbE0EEVYFpME7cQc+dDKle2IaYfNIOvPrXpxgYTX/KQUJI8 0132+NYkP3cb6ZeXslC6akaoQv+mfDioiwtDsIyUxdD+TYT4nzJ5NfVy2 /j4vvutkq/OxQPCC/dDaDiNYmboAg0LV/0Scg6UAdRgPWbVgAmFGbmM1M BbPc9vT3N/txJbIPCaFSbk4ATsxUnHYvgztNThfFxAbfVktK0vkUiK62e /xAKnEmkq3lSp6DF2AKzwD3kgBEjr82R9n/gSr+NnbLYQRPveAs4iwtn9 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10482"; a="66059773" X-IronPort-AV: E=Sophos;i="5.93,349,1654527600"; d="scan'208,223";a="66059773" Received: from mail-tycjpn01lp2170.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.170]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Sep 2022 21:26:49 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LfgKIMHHE7CDl2JKcPh8NrrWpArp0lmGxM7/a9+Mmg297rz0uRhpe7mqn7cJC7UiN2eY69ulRur2KV/rbxrcmg5mJG8X1xjgNaq7Y3Sb0vyCYI6ZTC5/fmbkMP3NGZ1rw+CCaQ51FBQgu6qnc89kk9IBOGbltE2n2SpohLvNLV9I2EU2Fz0ivZZh2KnPDKLgGSLlZV0sjQgbbZZENzbmAtzNYGQ36RXMSNhCzE1638l+MBvOzxvYO8fawSz/yyY6w+3NWeCk8bbcEPPv7ZSEKR229BqV8oCWJ7NephG9hODD6IdOb/bL0gpuRh1wLYHyvphlZbZmA02fWPkha/L0lg== 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=sAj63hUU+OEqvf7PUplnSlw2XV7O4Dl7D8VWCfzstQY=; b=TyrRSEqxwJdrX+YO/a6IrmjT/2GVxy0CqNEQprgItJjZY/aZf20WUFm+e33TZzHlOsl9uLu/EoQHhIsN1D0bAFTJbURRhSEeKqCaRdD4ixTEpdPXMc+fJDxeFRUzHuKZYRQuzW2Gec60mNK2La1d1OMhO5RSp158JFnDj51GSsh2Fb4N3wSWJcKvWQ5mqLX+8VZwzvqEbApjA8Wg1qpNNKKnR92JYOm9j4A2o9Yj4PgCLJC6lbS4sGaKg77SHGw4JOOucQ0l2pjNHv+HI1VmeN8staeM64RpHhNotItkySqTWYmjpVT0o5dMVMIxoy9jf17kMSHntuRrUbnWCUQpJQ== 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 OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYCPR01MB10213.jpnprd01.prod.outlook.com (2603:1096:400:1ed::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Tue, 27 Sep 2022 12:26:44 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::95b6:444f:6cec:9b22]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::95b6:444f:6cec:9b22%6]) with mapi id 15.20.5676.017; Tue, 27 Sep 2022 12:26:44 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila , "wangw.fnst@fujitsu.com" CC: Peter Smith , Dilip Kumar , Masahiko Sawada , "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: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gA= Date: Tue, 27 Sep 2022 12:26:44 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9YTIwZTViZDUtYTE2Ny00Yzc5LWExY2QtODI5OTMwZjI0?= =?utf-8?B?MTk2O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOS0yN1QxMjoxMTo0NFo7TVNJUF9MYWJl?= =?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: OS0PR01MB5716:EE_|TYCPR01MB10213:EE_ x-ms-office365-filtering-correlation-id: e228bc1c-f872-43ef-2b9b-08daa0838a16 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cTTrz8hK5ZVsG5vz31uXR8aGHL3QwQ/daN9nhYkWO0Guh/rHj6aUq5AhCoIA1BQkPASSoAuooG2HSscg6GTrcOgGHy65SriTHYF3fDrE1f0OQMGnUisJIaXg4xBSeHVipUfIZAr/G+My/7leLBItPbJqxowcV4pN9Kkg6cnUAXM3q/Jp0mvBai+pswjG5+0RDVE10McCXBjGKDpjFM827T8uzGBlOck0o4heQW5W/guxWZCOHyTAMfa0+PUpP6Q/hX/aZoxXosRW654yISUOkST69kVE8+Q+aEo03elhZ1NJXfJ0k6jWSOexFFNzU3fvP3MHxQFkxa94urPGTHFrVV2QCe6p4S3TGaTJQpQhwJRXjFalC5b+rqcsm9jXELO5uRo5VRdzs8dJcDb6VqSqpY4r1sC2a31WMglpt74suqUBv82khXPGhketo7mE38f9w2M9725m7kTi4KgDJoMvH9aV9wvzcKZV3ZOpHL4EUvdDIp9JGVZd/xN2LpI9ktk9QICd1zvdamYFz6DLG5zQEreHeTSix9pfanIkS2UROytw9aAoCFYp49/mEOqU30SWdlY0pSHlIRUQedOgbyq2m6nWNNO2Xg9BJwCIXohGFPTp0vuggb0yNdoUJbV5qrUN/ZkjpYTMFknw20pOViG5E+PJqksWkkPsTujcvh0Gjhp4TkVk62Er6V7oCYv06/gSYckJgAZ2tzUP+7bo1sj9iHvOlNVym+4daWYZHNZyJr//7mNJW2Oyu+J/DW3BvSxOz2G2E8B5cTty2/gh4erW3kZfCxi+vT3+WjIp5DmFM9o= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(346002)(136003)(376002)(366004)(451199015)(1590799012)(1580799009)(83380400001)(122000001)(38070700005)(99936003)(186003)(82960400001)(26005)(53546011)(9686003)(7696005)(6506007)(478600001)(41300700001)(38100700002)(8936002)(71200400001)(66446008)(52536014)(6636002)(64756008)(66556008)(76116006)(66476007)(66946007)(8676002)(4326008)(54906003)(2906002)(33656002)(110136005)(55016003)(5660300002)(316002)(86362001)(85182001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dXdaa01HL2t6YWV2UVNwZW9FQkYwdFdURCtDcVRlaENZKzltZ2pwMkFjVEky?= =?utf-8?B?YUxET3FmcmVjZGZzY2c0aEVQV0pZT0c0MnRVWmM5b0MxN01FOEVWSUlreHYw?= =?utf-8?B?TXM3UENuTUhTTW1BdVo5b3ZmOFFmTTN5d0dNYXJhYzRwdFJReVd5LzdrV1ky?= =?utf-8?B?U1ZHTkJTN0w0NmwyUG5lS3ZZclJTOVVMMjJ2NS9YRmhsYUphT2JjK1h6RTlL?= =?utf-8?B?eVQwQUh6dXg5TS9XZDNMREtudTcxa0xseXdESnl3T2dFVklDSkVIcGdVQTVZ?= =?utf-8?B?MnlDSnZGL2tpaktDcHkxSmh2eVlFaUw5K3JzY0dDV3QvNFJTN2Yrc2pJemx3?= =?utf-8?B?YjRwQkNoRVRQYlpSVzNvVFFid0c1bmxxNStzNW9vcWpOcWg3VlZ4WFQ4N21I?= =?utf-8?B?ZjBpOC9qY1RRYis0UHBYdDV4a2tYQ21YT2s5VkVjR1hYY2x5Rkk5TUdETzZj?= =?utf-8?B?SlM3eVNDdXYzSjRoUEtkc2NxUHc2UnNDYmJqTE5RV2lteDZjdXcySTh4S1lZ?= =?utf-8?B?Tlh2cFhic01oaWNPZ01QWmNnNjlnZ2dlYys2N2xUZ29RQml0TXZYTXZzVlc5?= =?utf-8?B?TmlnLysydUFKTllwU1NrU3NqOEV1RW5BbW1wWncxVmpWR2R3Sk92Sm94K1o0?= =?utf-8?B?RGN6ckVMNzBBRHhJTEZoSDVySi9mMFJvZWYzRTVXVXc4VnZUMzB3cHVJNWpv?= =?utf-8?B?WGZESDRsNVFVTWowN0NhZG9LYWVkZXU4UVZRWXp0WnBmeW10YVFPK3Bpak1a?= =?utf-8?B?aDlZam5ZMFF0SnVZTDh0dEM5amUwWDJ1Wmsyb2xMc1NxTmpyTDJFQ0RpRmE1?= =?utf-8?B?ZFZSL0l1YUlPUWpqOU16ZFJTUkd0VGtWOFIrcjVGck9mdEMzSnRubkNWZXNz?= =?utf-8?B?ckQxNU1mWGdBQ0ZNS05hUThqeFc2QzlhbVNiWHlsUUFsdk56dFFHN09kU0Y4?= =?utf-8?B?RWt3LytUbFp1bC96dDJTdUIwdSsxTno3SWgyQ0REaitpbkl5YkhJeXk0NFhx?= =?utf-8?B?U3I3L21NeExRakpQN3JoUmYza21IVmFHeUdiUjlKdGpTNEpjaGxVM0lJek9X?= =?utf-8?B?aEE3aVhUeUdWUElodzR5U0dNMUlKQ1pNRXptd3kvaEUrbkV5dnJiQlZSYXRC?= =?utf-8?B?NzlCMWRYaWJ2a3IyanhsK1JkOE5NZHNCRk5qRnRSK09RV1E4QXVjdFp5YXpY?= =?utf-8?B?cHZyWjV5L2lMeHFIY0gyZURNc2ZxSHROV0loNHI2ZlhwNzFqNHdicmFIU3Vs?= =?utf-8?B?TE8rM2JLWTIvZVNIKytINFRERGZkbGRvelI1TUxZR0syVEJnWGwwalJlWWF0?= =?utf-8?B?eGF2djcvajI5SURtRFVlanUzcVBhcDBLb0didkVMbndROEtQSlE1RHY2YmJ4?= =?utf-8?B?V2U2bk0rOVlVZllEL2RkQWVGNVRVcWhyQU5WVDYxODhVa1N4ZEJxRkszWHVY?= =?utf-8?B?ck0zUE9jcm1hTUI3MjcxMGl5L1htMWRWVlpEZlYwZDdueXZ2c3REL0dGc3Bx?= =?utf-8?B?QzhVWE1uS3dISGlyVlRFc3IxWVUzaFUrSnc1SW53NCs2bFljQU91OC9DejRB?= =?utf-8?B?SUh1bDNKMXJXRUhwcjFCOVFpYk5XcnZITUY5c3hFaDJvSFRrN0pjeVNzUzdz?= =?utf-8?B?eEdtVzlqVm9ORGwvMS82dDVmNXpvSXgrWFJ1MHJqd0tGd3UvS3lQbjhDNXFz?= =?utf-8?B?TW1lT1htYWdpRTRoa29EajRoVHVtNU5OM1ZjdjBWY09Wa2NkUGErZ1A5WDM4?= =?utf-8?B?N3MwMjVIam5DdllTMWhBOVhXbzlyR1BTTXlZeVdSZDJlejFRTlVWcGVlOUc4?= =?utf-8?B?YjBTUWFOTUVzdjBqQitIZnNwTzFhdnNZbGxBRnppMDBCdkl3dFRFUGxQSHRU?= =?utf-8?B?VWNrcHdyMGJPNVVrVmJmWDV1ZDZvbExaRlBtYVBmZXVHMzk5a1FNZjEvT3ZB?= =?utf-8?B?NDJDMXRqQ1dlUkhWN2VUSENnUFlVZWt2cDYrbHhwOU96N1p1YVMva0hnUWxN?= =?utf-8?B?VktDYzFFZ2Fudnh2cndTS3pNMG5mZS9XaVAzWXZtNThwalc3VmxhNXpnK1Nj?= =?utf-8?B?cFpRWXRURXNPMnIvTEYvKzYvczVmY0J5U3N1Q3hUT01LQ3lrUXVhQ3N5YUdi?= =?utf-8?Q?LM2OZLY766QBAVQqLdv6W+QGO?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e228bc1c-f872-43ef-2b9b-08daa0838a16 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2022 12:26:44.3903 (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: +Og6mP/YDMM9m2WwYosFXYUVVM8NOPVG/QPIczas+W//OWBSVmxBuUImqh1a6TrU4yAslujFq841g3EEOHerAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB10213 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU2F0dXJkYXksIFNlcHRlbWJlciAyNCwgMjAyMiA3OjQwIFBNIEFtaXQgS2FwaWxhIDxhbWl0 LmthcGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBUaHUsIFNlcCAyMiwgMjAyMiBh dCAzOjQxIFBNIEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gd3JvdGU6 DQo+ID4NCj4gPiBPbiBUaHUsIFNlcCAyMiwgMjAyMiBhdCA4OjU5IEFNIHdhbmd3LmZuc3RAZnVq aXRzdS5jb20NCj4gPiA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4gd3JvdGU6DQo+ID4gPg0KPiA+ DQo+ID4gRmV3IGNvbW1lbnRzIG9uIHYzMy0wMDAxDQo+ID4gPT09PT09PT09PT09PT09PT09PT09 PT0NCj4gPg0KPiANCj4gU29tZSBtb3JlIGNvbW1lbnRzIG9uIHYzMy0wMDAxDQo+ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+IDEuDQo+ICsgLyogSW5mb3JtYXRpb24gZnJvbSB0aGUg Y29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovDQo+ICsgdWludDE2IGxvZ2lj YWxyZXBfd29ya2VyX2dlbmVyYXRpb247DQo+ICsNCj4gKyBpbnQgbG9naWNhbHJlcF93b3JrZXJf c2xvdF9ubzsNCj4gK30gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsNCj4gDQo+IEJvdGggdGhl c2UgdmFyaWFibGVzIGFyZSByZWFkL2NoYW5nZWQgYnkgbGVhZGVyL3BhcmFsbGVsIHdvcmtlcnMg d2l0aG91dA0KPiB1c2luZyBhbnkgbG9jayAobXV0ZXgpLiBJdCBzZWVtcyBjdXJyZW50bHkgdGhl cmUgaXMgbm8gcHJvYmxlbSBiZWNhdXNlIG9mIHRoZQ0KPiB3YXkgdGhlIHBhdGNoIGlzIHVzaW5n IGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgYnV0IEkgdGhpbmsgaXQgd29uJ3QgYmUgYSBnb29kIGlk ZWENCj4gdG8gcmVseSBvbiBpdC4gSSBzdWdnZXN0IHVzaW5nIG11dGV4IHRvIG9wZXJhdGUgb24g dGhlc2UgdmFyaWFibGVzIGFuZCBhbHNvIGNoZWNrDQo+IGlmIHRoZSBzbG90X25vIGlzIGluIGEg dmFsaWQgcmFuZ2UgYWZ0ZXIgcmVhZGluZyBpdCBpbiBwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtl ciwNCj4gb3RoZXJ3aXNlIGVycm9yIG91dCB1c2luZyBlbG9nLg0KDQpDaGFuZ2VkLg0KDQo+IDIu DQo+ICBzdGF0aWMgdm9pZA0KPiAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8g cykNCj4gIHsNCj4gLSBpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQ0KPiArIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7IFRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOw0KPiArDQo+ICsgaWYgKCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSAmJg0KPiArICgh aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYgIXN0cmVhbV9hcHBseV93b3JrZXIpKQ0KPiAgIGVy ZXBvcnQoRVJST1IsDQo+ICAgKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLA0K PiAgIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBT VEFSVCIpKSk7DQo+IA0KPiBUaGlzIGNoZWNrIHdvbid0IGJlIGFibGUgdG8gZGV0ZWN0IG1pc3Np bmcgc3RyZWFtIHN0YXJ0IG1lc3NhZ2VzIGZvciBwYXJhbGxlbA0KPiBhcHBseSB3b3JrZXJzIGFw YXJ0IGZyb20gdGhlIGZpcnN0IHBhaXIgb2Ygc3RhcnQvc3RvcC4gSSB0aG91Z2h0IG9mIGFkZGlu Zw0KPiBpbl9yZW1vdGVfdHJhbnNhY3Rpb24gY2hlY2sgYWxvbmcgd2l0aA0KPiBhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSB0byBkZXRlY3QgdGhlIHNhbWUgYnV0IHRoYXQgYWxzbyB3b24ndCB3 b3JrDQo+IGJlY2F1c2UgdGhlIHBhcmFsbGVsIHdvcmtlciBkb2Vzbid0IHJlc2V0IGl0IGF0IHRo ZSBzdG9wIG1lc3NhZ2UuDQo+IEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8gaW50cm9kdWNlIHll dCBhbm90aGVyIHZhcmlhYmxlIGZvciB0aGlzIGJ1dCB0aGF0IGRvZXNuJ3QNCj4gc2VlbSB3b3J0 aCBpdC4gSSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhpcyBjaGVjayBzaW1wbGUuDQo+IENhbiB5b3Ug dGhpbmsgb2YgYW55IGJldHRlciB3YXk/DQoNCkkgZmVlbCB3ZSBjYW4gcmV1c2UgdGhlIGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0bw0Kc2ltcGxpZnkg dGhlIGNoZWNrIHRoZXJlLiBJIHRyaWVkIHRvIHNldCB0aGlzIGZsYWcgaW4gcGFyYWxsZWwgYXBw bHkgd29ya2VyDQp3aGVuIHN0cmVhbSBzdGFydHMgYW5kIHJlc2V0IGl0IHdoZW4gc3RyZWFtIHN0 b3Agc28gdGhhdCB3ZSBjYW4gZGlyZWN0bHkgY2hlY2sNCnRoaXMgZmxhZyBmb3IgZHVwbGljYXRl IHN0cmVhbSBzdGFydCBtZXNzYWdlIGFuZCBvdGhlciByZWxhdGVkIHRoaW5ncy4NCg0KPiAzLiBJ IHRoaW5rIHdlIGNhbiBza2lwIHNlbmRpbmcgc3RhcnQvc3RvcCBtZXNzYWdlcyBmcm9tIHRoZSBs ZWFkZXIgdG8gdGhlDQo+IHBhcmFsbGVsIHdvcmtlciBiZWNhdXNlIHVubGlrZSBhcHBseSB3b3Jr ZXIgaXQgd2lsbCBwcm9jZXNzIG9ubHkgb25lDQo+IHRyYW5zYWN0aW9uLWF0LWEtdGltZS4gSG93 ZXZlciwgaXQgaXMgbm90IGNsZWFyIHdoZXRoZXIgdGhhdCBpcyB3b3J0aCB0aGUgZWZmb3J0DQo+ IGJlY2F1c2UgaXQgaXMgc2VudCBhZnRlciBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIGNoYW5n ZXMuIEZvciBub3csIEkgaGF2ZQ0KPiBhZGRlZCBhIGNvbW1lbnQgZm9yIHRoaXMgaW4gdGhlIGF0 dGFjaGVkIHBhdGNoIGJ1dCBsZXQgbWUgaWYgSSBhbSBtaXNzaW5nDQo+IHNvbWV0aGluZyBvciBp ZiBJIGFtIHdyb25nLg0KDQpJIHRoZSBzdWdnZXN0ZWQgY29tbWVudHMgbG9vayBnb29kLiANCg0K PiA0Lg0KPiBwb3N0Z3Jlcz0jIHNlbGVjdCBwaWQsIGxlYWRlcl9waWQsIGFwcGxpY2F0aW9uX25h bWUsIGJhY2tlbmRfdHlwZSBmcm9tDQo+IHBnX3N0YXRfYWN0aXZpdHk7DQo+ICAgcGlkICB8IGxl YWRlcl9waWQgfCBhcHBsaWNhdGlvbl9uYW1lIHwgICAgICAgICBiYWNrZW5kX3R5cGUNCj4gLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiAgMjc2MjQgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8IGxv Z2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXINCj4gIDE3MzM2IHwgICAgICAgICAgICB8IHBzcWwg ICAgICAgICAgICAgfCBjbGllbnQgYmFja2VuZA0KPiAgMjYzMTIgfCAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICB8IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyDQo+ICAyNjM3NiB8ICAg ICAgICAgICAgfCBwc3FsICAgICAgICAgICAgIHwgY2xpZW50IGJhY2tlbmQNCj4gIDE0MDA0IHwg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfCBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl cg0KPiANCj4gSGVyZSwgdGhlIHNlY29uZCB3b3JrZXIgZW50cnkgaXMgZm9yIHRoZSBwYXJhbGxl bCB3b3JrZXIuIElzbid0IGl0IGJldHRlciBpZiB3ZQ0KPiBkaXN0aW5ndWlzaCB0aGlzIGJ5IGtl ZXBpbmcgdHlwZSBhcyBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyPyBJIHRo aW5rDQo+IGZvciB0aGlzIHlvdSBuZWVkIHRvIGNoYW5nZSBiZ3dfdHlwZSBpbiBsb2dpY2FscmVw X3dvcmtlcl9sYXVuY2goKS4NCg0KQ2hhbmdlZC4NCg0KPiA1LiBDYW4gd2UgbmFtZSBwYXJhbGxl bF9hcHBseV9zdWJ4YWN0X2luZm9fYWRkKCkgYXMNCj4gcGFyYWxsZWxfYXBwbHlfc3RhcnRfc3Vi dHJhbnMoKT8NCj4gDQo+IEFwYXJ0IGZyb20gdGhlIGFib3ZlLCBJIGhhdmUgYWRkZWQvZWRpdGVk IGEgZmV3IGNvbW1lbnRzIGFuZCBtYWRlIGEgZmV3DQo+IG90aGVyIGNvc21ldGljIGNoYW5nZXMg aW4gdGhlIGF0dGFjaGVkLg0KDQpDaGFuZ2VkLg0KDQpCZXN0IHJlZ2FyZHMsDQpIb3UgemoNCg== --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v35-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v35-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v35-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=51635; creation-date="Tue, 27 Sep 2022 12:21:00 GMT"; modification-date="Tue, 27 Sep 2022 12:26:39 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZmM0MThmMTRiNjMyYWIwNGE3M2VkY2YxZDY5N2MxMmQyYzgyNTNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNSAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdvIHJl cXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZv ciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlv bnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0 cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwpJdCBpcyBiZXR0ZXIgdG8gb25seSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNo ZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMu IEJ1dCB0aGlzCnJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9u LiBJbiBhZGRpdGlvbiwgc2luY2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4g dGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApm b3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBw ZXJmb3JtIGEgc2ltcGxlIGNoZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYSB3aGVu IGNoZWNraW5nIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdWVzZCBieQp0cmlnZ2VyLgoKV2l0aG91 dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjoK VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHdhaXRzCmZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUg bG9jayB0byBiZSByZWxlYXNlZCwgaXQgd29uJ3QKc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyOwp0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2Ygc3RyZWFt aW5nIHRyYW5zYWN0aW9uCmFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEg ZGVhZGxvY2sgaGFzIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMKd2lsbCB3YWl0IGluZGVmaW5p dGVseS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg ICAgICB8ICAgNSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j ICAgICAgICAgICAgfCAgODYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMgICAgICAgICB8IDE5NCArKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHlwY2FjaGUuYyAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAgfCAgIDIgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgIDkg Ky0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAgICAgIHwg ICA5ICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAg ICB8ICAgOCArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8ICAgOSArLQogLi4uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgICAg ICAgICAgICAgfCA2MTYgKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAxOCBmaWxlcyBjaGFuZ2Vk LCAxMDI3IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBs CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA4NTkyYjk1 Li43ZjI4YWU4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApA QCAtMjQ1LDYgKzI0NSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hl bgogICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3JrZXIsIHRoZSBm aW5pc2ggTFNOIG9mIHRoZQogICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBub3Qg YmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVGhlcmUgYXJlIHR3byBw cmVyZXF1aXNpdGVzIGZvciB1c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4KKyAgICAg ICAgICBtb2RlOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNj cmliZXItc2lkZSBtdXN0CisgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0 aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQorICAgICAgICAgIGFueSBub24t aW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRl ZAorICAgICAgICAgIHRhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA2MjgzZjdlLi43MzU1NjM5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYwpAQCAtMTA5NiwzICsxMDk2LDQ1IEBAIHBhcmFsbGVsX2FwcGx5X3JlcGxv cmlnaW5fcmVzZXQodm9pZCkKIAlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOwogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gMDsK IH0KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBw bGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKgorICogQWx0aG91Z2gg dGhlIGNvbW1pdCBvcmRlciBpcyBtYWludGFpbmVkIGJ5IG9ubHkgYWxsb3dpbmcgb25lIHByb2Nl c3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUsIHRoZSBhY2Nlc3Mgb3JkZXIgdG8gdGhlIHJlbGF0 aW9uIGhhcyBjaGFuZ2VkLiBUaGlzIGNvdWxkCisgKiBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1z IHdoZW4gYXBwbHlpbmcgdHJhbnNhY3Rpb25zIHVzaW5nIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdv cmtlciBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGljYXRlZCB0YWJsZSBpcworICog aW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlLCBvciBpZiB0aGUgcmVsYXRpb24g Y29udGFpbnMKKyAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLgorICovCit2b2lkCitwYXJhbGxl bF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKK3sKKwkv KiBTa2lwIGlmIG5vdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJaWYgKCFhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFi bGUgY2hlY2tzIGFyZSBkb25lIGxhdGVyIGluIGZ1bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcuCisJICovCisJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwlpZiAocmVsLT5wYXJh bGxlbF9hcHBseV9zYWZldHkgPT0gUEFSQUxMRUxfQVBQTFlfU0FGRVRZX1VOS05PV04pCisJCWxv Z2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkocmVsKTsKKworCWlmIChyZWwtPnBhcmFs bGVsX2FwcGx5X3NhZmV0eSA9PSBQQVJBTExFTF9BUFBMWV9VTlNBRkUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gXCIlcy4l c1wiIHVzaW5nICIKKwkJCQkJCSJzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzIiwKKwkJCQkJCXJl bC0+cmVtb3RlcmVsLm5zcG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkic3Ry ZWFtaW5nID0gcGFyYWxsZWwiKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBv biBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKKwkJCQkJCSAgICJjb2x1bW4gb24gcHVi bGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAiCisJCQkJCQkgICAibm9uLWltbXV0YWJs ZSBmdW5jdGlvbi4iKSwKKwkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0byB1c2Ugc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciAlcy4iLAorCQkJCQkJICJzdHJlYW1pbmcgPSBvbiIpKSk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggYTZlZmRiYS4uMGVjNDJk NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMjMsNyArMjMs OCBAQAogLyoKICAqIFByb3RvY29sIG1lc3NhZ2UgZmxhZ3MuCiAgKi8KLSNkZWZpbmUgTE9HSUNB TFJFUF9JU19SRVBMSUNBX0lERU5USVRZIDEKKyNkZWZpbmUgQVRUUl9JU19SRVBMSUNBX0lERU5U SVRZCSgxIDw8IDApCisjZGVmaW5lIEFUVFJfSVNfVU5JUVVFCQkJCSgxIDw8IDEpCiAKICNkZWZp bmUgTUVTU0FHRV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2RlZmluZSBUUlVOQ0FURV9DQVNDQURF CQkoMTw8MCkKQEAgLTQxLDYgKzQyLDY2IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVf bmFtZXNwYWNlKFN0cmluZ0luZm8gb3V0LCBPaWQgbnNwaWQpOwogc3RhdGljIGNvbnN0IGNoYXIg KmxvZ2ljYWxyZXBfcmVhZF9uYW1lc3BhY2UoU3RyaW5nSW5mbyBpbik7CiAKIC8qCisgKiBSZWxh dGlvbkdldFVuaXF1ZUtleUJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgdW5pcXVlIGF0dHJpYnV0 ZSBudW1iZXJzCisgKgorICogVGhpcyBpcyBzaW1pbGFyIHRvIFJlbGF0aW9uR2V0SWRlbnRpdHlL ZXlCaXRtYXAoKSwgYnV0IHJldHVybnMgYSBiaXRtYXAgb2YKKyAqIGluZGV4IGF0dHJpYnV0ZSBu dW1iZXJzIGZvciBhbGwgdW5pcXVlIGluZGV4ZXMuCisgKi8KK3N0YXRpYyBCaXRtYXBzZXQgKgor UmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAoUmVsYXRpb24gcmVsKQoreworCUxpc3QJICAgKmlu ZGV4b2lkbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisJQml0bWFwc2V0 ICAqYXR0dW5pcXVlID0gTlVMTDsKKworCWlmICghcmVsLT5yZF9yZWwtPnJlbGhhc2luZGV4KQor CQlyZXR1cm4gTlVMTDsKKworCWluZGV4b2lkbGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJl bCk7CisKKwlmb3JlYWNoKGluZGV4b2lkc2NhbiwgaW5kZXhvaWRsaXN0KQorCXsKKwkJT2lkCQkJ aW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCVJlbGF0aW9uCWluZGV4UmVs OworCQlpbnQJCQlpOworCisJCS8qIExvb2sgdXAgdGhlIGRlc2NyaXB0aW9uIGZvciBpbmRleCAq LworCQlpbmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJaWYg KCFSZWxhdGlvbklzVmFsaWQoaW5kZXhSZWwpKQorCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBv cGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOworCisJCWlmICghaW5kZXhSZWwt PnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJeworCQkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7 CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEFkZCByZWZlcmVuY2VkIGF0dHJpYnV0ZXMgdG8g YXR0dW5pcXVlICovCisJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+cmRfaW5kZXgtPmluZG5h dHRzOyBpKyspCisJCXsKKwkJCWludAkJCWF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5kZXgtPmlu ZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkg Y29sdW1ucyBpbnRvIGF0dHVuaXF1ZSBiaXRtYXBzLiBTZWUKKwkJCSAqIFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwLgorCQkJICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlm IChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21l bWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5p cXVlKSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJ CQkJCQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJ CQl9CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRl eG9pZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1ZTsKK30KKworLyoKICAqIENoZWNrIGlmIGEg Y29sdW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KICAqCiAgKiBOZWVkIHRvIGJlIGNh cmVmdWwgYWJvdXQgTlVMTCwgd2hpY2ggaXMgdHJlYXRlZCBhcyBhIGNvbHVtbiBsaXN0IGNvdmVy aW5nCkBAIC05MzMsNyArOTk0LDggQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZv IG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7 CiAJaW50CQkJaTsKIAl1aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRy cyA9IE5VTEw7CisJQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVl ID0gTlVMTDsKIAlib29sCQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVz Y3IocmVsKTsKQEAgLTk1OCw2ICsxMDIwLDkgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJp bmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBs aWRlbnRmdWxsKQogCQlpZGF0dHJzID0gUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwp OwogCisJLyogZmV0Y2ggYml0bWFwIG9mIFVOSVFVRSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVl ID0gUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAocmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJp YnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQs NyArMTAzOSwxMSBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxh dGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJ CWJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLAogCQkJCQkJICBpZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQ TElDQV9JREVOVElUWTsKKwkJCWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKwor CQlpZiAoYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIsCisJCQkJCQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VO SVFVRTsKIAogCQlwcV9zZW5kYnl0ZShvdXQsIGZsYWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBA QCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJp dG1hcHNldCAqY29sdW1ucykKIAl9CiAKIAlibXNfZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShh dHR1bmlxdWUpOwogfQogCiAvKgpAQCAtMTAwMSw3ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFk X2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5h dHRzOwogCWNoYXIJICAqKmF0dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0 ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAq YXR0dW5pcXVlID0gTlVMTDsKIAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRu YW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwx MyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0 aW9uICpyZWwpCiAKIAkJLyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJ CWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShpbik7Ci0JCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNf UkVQTElDQV9JREVOVElUWSkKKwkJaWYgKGZsYWdzICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZ KQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNr IGZvciB1bmlxdWUgY29sdW1uICovCisJCWlmIChmbGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJ YXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1 dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7 CiAKQEAgLTEwMzAsNiArMTEwNSw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZv IGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7 CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJl bC0+YXR0dW5pcXVlID0gYXR0dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDcuLjUx NTEzNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAg LTE5LDEyICsxOSwxOSBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90 cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgog I2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog CiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsK QEAgLTkyLDYgKzk5LDIzIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0g YXJnLCBPaWQgcmVsb2lkKQogfQogCiAvKgorICogU3lzY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxi YWNrIHRvIHJlc2V0IHBhcmFsbGVsX2FwcGx5X3NhZmV0eSBmbGFnLgorICovCitzdGF0aWMgdm9p ZAorbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CisJ TG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09 IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBMb2dpY2FsUmVw UmVsTWFwKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9 IE5VTEwpCisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZldHkgPSBQQVJBTExFTF9BUFBMWV9T QUZFVFlfVU5LTk9XTjsKK30KKworLyoKICAqIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIG1hcCBj YWNoZS4KICAqLwogc3RhdGljIHZvaWQKQEAgLTExNiw2ICsxNDAsMTIgQEAgbG9naWNhbHJlcF9y ZWxtYXBfaW5pdCh2b2lkKQogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwog CUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRh dGVfY2IsCiAJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxs YmFjayhQUk9DT0lELAorCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3BhcmFsbGVs X2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soVFlQRU9JRCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9j YiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxv Z2ljYWxyZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkK IAkJcGZyZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5h dHRrZXlzKTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnkt PmF0dHJtYXApCiAJCWZyZWVfYXR0cm1hcChlbnRyeS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIx LDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3Rl cmVsKQogCX0KIAllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlk ZW50OwogCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0 a2V5cyk7CisJZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwt PmF0dHVuaXF1ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMx MSw2ICszNDMsMTYxIEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqZW50cnkpCiB9CiAKIC8qCisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIG9uZSBy ZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIg YW5kIGFzc2lnbiB0aGUgJ3BhcmFsbGVsX2FwcGx5X3NhZmV0eScgZmxhZy4KKyAqCisgKiBUaGVy ZSBhcmUgdHdvIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcgY2hhbmdlcyB1c2luZyBhIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXI6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBv biB0aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZCBhbHNvCisgKiBiZSB0aGUgdW5pcXVlIGNvbHVt biBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1p bW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVk IHRhYmxlLgorICoKKyAqIFdpdGhvdXQgdGhlc2Ugc2FmZXR5IGNoZWNrcywgdGhlIGZvbGxvd2lu ZyBzY2VuYXJpbyBtYXkgb2NjdXI6IFRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyIGxvY2tz IGEgcm93IHdoZW4gcHJvY2Vzc2luZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgYWZ0ZXIKKyAq IHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cg d2hlbiBwcm9jZXNzaW5nCisgKiBhbm90aGVyIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbi4gQXQg dGhpcyB0aW1lLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICogd2FpdHMgZm9yIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gY29tcGxldGUgYW5kIHRoZSBsb2NrIHRvIGJlIHJlbGVhc2Vk LAorICogaXQgd29uJ3Qgc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhlIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcjsgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0IG9mCisgKiBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gYW5kIGNhbid0IGZpbmlzaCB0aGlzIHRyYW5zYWN0aW9uLiBOb3cgYSBkZWFkbG9j ayBoYXMKKyAqIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMgd2lsbCB3YWl0IGluZGVmaW5pdGVs eS4KKyAqCisgKiBXZSBqdXN0IG1hcmsgdGhlIHJlbGF0aW9uIGVudHJ5IGFzICdQQVJBTExFTF9B UFBMWV9VTlNBRkUnIGhlcmUgaWYgY2hhbmdlcworICogb24gb25lIHJlbGF0aW9uIGNhbiBub3Qg YmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgbGVhdmUKKyAqIGl0 IHRvIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKCkgdG8gdGhyb3cgdGhlIGFjdHVhbCBl cnJvciBpZiBuZWVkZWQuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxf YXBwbHkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKK3sKKwlCaXRtYXBzZXQgICp1a2V5 OworCWludAkJCWk7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJaW50CQkJYXR0bnVtOworCisJLyog U2tpcCBpZiBub3QgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCWlmICghYW1fcGFyYWxs ZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKworCS8qIEluaXRpYWxpemUgdGhlIGZsYWcu ICovCisJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZX1NBRkVU WV9VTktOT1dOOworCisJLyoKKwkgKiBGaXJzdCwgY2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1bW4g aW4gdGhlIHJlbGF0aW9uIG9uIHRoZQorCSAqIHN1YnNjcmliZXItc2lkZSBpcyBhbHNvIHRoZSB1 bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4KKwkgKi8KKwl1a2V5ID0gUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxvY2FscmVsLAorCQkJCQkJCQkJICBJTkRFWF9B VFRSX0JJVE1BUF9LRVkpOworCisJaWYgKHVrZXkpCisJeworCQlpID0gLTE7CisJCXdoaWxlICgo aSA9IGJtc19uZXh0X21lbWJlcih1a2V5LCBpKSkgPj0gMCkKKwkJeworCQkJYXR0bnVtID0gQXR0 ck51bWJlckdldEF0dHJPZmZzZXQoaSArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1i ZXIpOworCisJCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJ CQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dLCBlbnRyeS0+ cmVtb3RlcmVsLmF0dHVuaXF1ZSkpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3Nh ZmV0eSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlibXNfZnJlZSh1a2V5KTsKKwkJCQly ZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkvKgorCSAqIFRo ZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQgYnkg dGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5jdGlvbnMgaW4g dGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7IGIuIENvbHVt biBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4KKwkgKiBjb25zdHJhaW50czsg Yy4gQ29uc3RyYWludCBleHByZXNzaW9uczsKKwkgKi8KKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBm dW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7 CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2Vy czsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnktPmxvY2FscmVsLT50cmln ZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJf RklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05f UkVQTElDQSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdm b2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVs X2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlyZXR1cm47CisJCQl9 CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29sdW1ucy4gKi8KKwl0dXBkZXNjID0gUmVsYXRp b25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwg dHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0g VHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRudW0pOworCQlOb2RlCSAgICpkZWZhdWx0ZXhwciA9 IE5VTEw7CisKKwkJLyogV2UgZG9uJ3QgY2hlY2sgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0cmli dXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJ CQljb250aW51ZTsKKworCQlkZWZhdWx0ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5 LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7CisJCWlmIChkZWZhdWx0ZXhwciAmJiBjb250YWluX211 dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHByKSkKKwkJeworCQkJZW50cnktPnBhcmFsbGVsX2Fw cGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCXJldHVybjsKKwkJfQorCisJ CS8qCisJCSAqIElmIHRoZSBjb2x1bW4gaXMgb2YgYSBET01BSU4gdHlwZSwgZGV0ZXJtaW5lIHdo ZXRoZXIgdGhhdCBkb21haW4KKwkJICogaGFzIGFueSBDSEVDSyBleHByZXNzaW9ucyB0aGF0IGFy ZSBub3QgaW1tdXRhYmxlLgorCQkgKi8KKwkJaWYgKGdldF90eXB0eXBlKGF0dC0+YXR0dHlwaWQp ID09IFRZUFRZUEVfRE9NQUlOKQorCQl7CisJCQlMaXN0CSAgICpkb21haW5fY29uc3RyYWludHM7 CisJCQlMaXN0Q2VsbCAgICpsYzsKKworCQkJZG9tYWluX2NvbnN0cmFpbnRzID0gR2V0RG9tYWlu Q29uc3RyYWludHMoYXR0LT5hdHR0eXBpZCk7CisKKwkJCWZvcmVhY2gobGMsIGRvbWFpbl9jb25z dHJhaW50cykKKwkJCXsKKwkJCQlEb21haW5Db25zdHJhaW50U3RhdGUgKmNvbiA9IChEb21haW5D b25zdHJhaW50U3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJCWlmIChjb24tPmNoZWNrX2V4cHIg JiYgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjb24tPmNoZWNrX2V4cHIpKQor CQkJCXsKKwkJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmV0eSA9IFBBUkFMTEVMX0FQUExZ X1VOU0FGRTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8qIENoZWNr IHRoZSBjb25zdHJhaW50cy4gKi8KKwlpZiAodHVwZGVzYy0+Y29uc3RyKQorCXsKKwkJQ29uc3Ry Q2hlY2sgKmNoZWNrID0gdHVwZGVzYy0+Y29uc3RyLT5jaGVjazsKKworCQkvKgorCQkgKiBEZXRl cm1pbmUgaWYgdGhlcmUgYXJlIGFueSBDSEVDSyBjb25zdHJhaW50cyB3aGljaCBjb250YWlucwor CQkgKiBub24taW1tdXRhYmxlIGZ1bmN0aW9uLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IHR1 cGRlc2MtPmNvbnN0ci0+bnVtX2NoZWNrOyBpKyspCisJCXsKKwkJCUV4cHIJICAgKmNoZWNrX2V4 cHIgPSBzdHJpbmdUb05vZGUoY2hlY2tbaV0uY2NiaW4pOworCisJCQlpZiAoY29udGFpbl9tdXRh YmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjaGVja19leHByKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFy YWxsZWxfYXBwbHlfc2FmZXR5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsK KwkJCX0KKwkJfQorCX0KKworCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZldHkgPSBQQVJBTExF TF9BUFBMWV9TQUZFOworfQorCisvKgogICogT3BlbiB0aGUgbG9jYWwgcmVsYXRpb24gYXNzb2Np YXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoKICAqIFJlYnVpbGRzIHRoZSBSZWxjYWNoZSBt YXBwaW5nIGlmIGl0IHdhcyBpbnZhbGlkYXRlZCBieSBsb2NhbCBEREwuCkBAIC00MzgsNiArNjI1 LDkgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tN T0RFIGxvY2ttb2RlKQogCQkgKi8KIAkJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoZW50 cnkpOwogCisJCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgKi8KKwkJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBs eShlbnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNjUz LDYgKzg0Myw3IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyb290LAogCQl9CiAJCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVs LT5yZXBsaWRlbnQ7CiAJCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90 ZXJlbC0+YXR0a2V5cyk7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCX0KIAogCWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7 CkBAIC02OTYsNiArODg3LDkgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJvb3QsCiAJLyogU2V0IGlmIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRp dHkgaXMgZW5vdWdoIHRvIGFwcGx5IHVwZGF0ZS9kZWxldGUuICovCiAJbG9naWNhbHJlcF9yZWxf bWFya191cGRhdGFibGUoZW50cnkpOwogCisJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBw bGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCWxvZ2ljYWxyZXBfcmVsX21h cmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVl OwogCiAJLyogc3RhdGUgYW5kIHN0YXRlbHNuIGFyZSBsZWZ0IHNldCB0byAwLiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggODJlNTAxMS4uNmMw YWE2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBA IC05MjEsNiArOTIxLDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwg Y2hhciAqcmVsbmFtZSwKIAlscmVsLT5hdHRuYW1lcyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1 dGVOdW1iZXIgKiBzaXplb2YoY2hhciAqKSk7CiAJbHJlbC0+YXR0dHlwcyA9IHBhbGxvYzAoTWF4 VHVwbGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2YoT2lkKSk7CiAJbHJlbC0+YXR0a2V5cyA9IE5V TEw7CisJbHJlbC0+YXR0dW5pcXVlID0gTlVMTDsKIAogCS8qCiAJICogU3RvcmUgdGhlIGNvbHVt bnMgYXMgYSBsaXN0IG9mIG5hbWVzLiAgSWdub3JlIHRob3NlIHRoYXQgYXJlIG5vdApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMmU1NTA5ZS4uZjgxZGZjMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNTAwLDYgKzE1 MDAsMTUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIAkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKKwkJCS8q CisJCQkgKiBVbmxpa2Ugc3RyZWFtX2NvbW1pdCwgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUg Zm9yCisJCQkgKiBzdHJlYW1fc3RvcCB0byBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFu c2FjdGlvbiB0byBiZQorCQkJICogYXBwbGllZCBiZWZvcmUgc3RyZWFtX3N0b3AgaXMgZmluaXNo ZWQgY2FuIGxlYWQgdG8gZmFpbHVyZXMgaWYKKwkJCSAqIHRoZSB1bmlxdWUgaW5kZXgvY29uc3Ry YWludCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBwdWJsaXNoZXIgYW5kCisJCQkgKiBzdWJzY3JpYmVy LiBCdXQgZm9yIHN1Y2ggY2FzZXMsIHdlIGRvbid0IGFsbG93IHN0cmVhbWVkCisJCQkgKiB0cmFu c2FjdGlvbnMgdG8gYmUgYXBwbGllZCBpbiBwYXJhbGxlbC4gU2VlCisJCQkgKiBwYXJhbGxlbF9h cHBseV9yZWxhdGlvbl9jaGVjay4KKwkJCSAqLwogCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRh KHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwogCiAJCQllbG9nKERFQlVHMSwgImFwcGxpZWQgJXUg Y2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwgbmNoYW5nZXMpOwpAQCAtMjEwOSw2ICsy MTE4LDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJLyogU2V0IHJlbGF0 aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwg PSByZWw7CiAKKwlwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5p dGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9y X3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIyNTIsNiArMjI2 Myw4IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdl IGNhbiBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwog CisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUg dGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlv bihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNDIwLDYgKzI0MzMsOCBAQCBh cHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8g dGhlIGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCXBhcmFs bGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVj dXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsK IAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjYwNSwxMyArMjYyMCwxNCBAQCBhcHBseV9o YW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCX0KIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3Bh cnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAorCQkJCQkJCQkJCSAgIGF0dHJtYXAp OworCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUgb3IgZGVsZXRlIG9uIHRoZSBs ZWFmIHBhcnRpdGlvbi4gKi8KIAlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0 aW9uID09IENNRF9ERUxFVEUpCi0JewotCQlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRp b25fb3BlbihyZWxtYXBlbnRyeSwgcGFydHJlbCwKLQkJCQkJCQkJCQkJICAgYXR0cm1hcCk7CiAJ CWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShwYXJ0X2VudHJ5KTsKLQl9CisKKwlwYXJhbGxlbF9h cHBseV9yZWxhdGlvbl9jaGVjayhwYXJ0X2VudHJ5KTsKIAogCXN3aXRjaCAob3BlcmF0aW9uKQog CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCmluZGV4IDgwOGY5ZWIuLjUxMWIyM2QgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMjU0MSw2ICsyNTQxLDIzIEBAIGNvbXBh cmVfdmFsdWVzX29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBh cmcyKQogfQogCiAvKgorICogR2V0RG9tYWluQ29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25z dHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitH ZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlw ZW50cnk7CisJTGlzdAkgICAqY29uc3RyYWludHMgPSBOSUw7CisKKwl0eXBlbnRyeSA9IGxvb2t1 cF90eXBlX2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8pOworCisJ aWYgKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50 cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQor CisvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlw Y2FjaGUgZW50cnkuCiAgKi8KIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCmluZGV4IDFkYTdiMDEuLmQ0YmM5MmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCkBAIC0xMTMsNiArMTEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNh bFJlcFJlbGF0aW9uCiAJY2hhcgkJcmVwbGlkZW50OwkJLyogcmVwbGljYSBpZGVudGl0eSAqLwog CWNoYXIJCXJlbGtpbmQ7CQkvKiByZW1vdGUgcmVsYXRpb24ga2luZCAqLwogCUJpdG1hcHNldCAg KmF0dGtleXM7CQkvKiBCaXRtYXAgb2Yga2V5IGNvbHVtbnMgKi8KKwlCaXRtYXBzZXQgICphdHR1 bmlxdWU7CQkvKiBCaXRtYXAgb2YgdW5pcXVlIGNvbHVtbnMgKi8KIH0gTG9naWNhbFJlcFJlbGF0 aW9uOwogCiAvKiBUeXBlIG1hcHBpbmcgaW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaAppbmRleCA3OGNkN2U3Li40NTI5NzdlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaApAQCAtMTUsNiArMTUsMTcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvYXR0bWFwLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgi CiAKKy8qCisgKglTdGF0ZXMgdG8gZGV0ZXJtaW5lIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9u IGNhbiBiZSBhcHBsaWVkIHVzaW5nIGEKKyAqCXBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwor dHlwZWRlZiBlbnVtIFBhcmFsbGVsQXBwbHlTYWZldHkKK3sKKwlQQVJBTExFTF9BUFBMWV9TQUZF VFlfVU5LTk9XTiwKKwlQQVJBTExFTF9BUFBMWV9TQUZFLAorCVBBUkFMTEVMX0FQUExZX1VOU0FG RQorfSBQYXJhbGxlbEFwcGx5U2FmZXR5OworCiB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVs TWFwRW50cnkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3RlcmVsOwkvKiBrZXkgaXMgcmVt b3RlcmVsLnJlbW90ZWlkICovCkBAIC0zMSw2ICs0Miw4IEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBSZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVsOwkJLyogcmVsY2FjaGUgZW50cnkg KE5VTEwgd2hlbiBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAqYXR0cm1hcDsJCS8qIG1hcCBvZiBs b2NhbCBhdHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJYm9vbAkJdXBkYXRhYmxlOwkJLyog Q2FuIGFwcGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlQYXJhbGxlbEFwcGx5U2FmZXR5IHBhcmFs bGVsX2FwcGx5X3NhZmV0eTsJLyogQ2FuIGFwcGx5IGNoYW5nZXMgaW4gYQorCQkJCQkJCQkJCQkJ ICogcGFyYWxsZWwgYXBwbHkgd29ya2VyPyAqLwogCiAJLyogU3luYyBzdGF0ZS4gKi8KIAljaGFy CQlzdGF0ZTsKQEAgLTQ3LDQgKzYwLDYgQEAgZXh0ZXJuIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAq bG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnIKIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfcmVsX2Nsb3NlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsLAog CQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpOwogCitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3Jl bF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpOworCiAj ZW5kaWYJCQkJCQkJLyogTE9HSUNBTFJFTEFUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMzNlNjJjNy4uYWMxMDY4NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBleHRl cm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBPaWQgcmVs aWQsCiBleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKHZvaWQpOwog ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKTsKIAorZXh0 ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyZWwpOworCiAjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICh3b3Jr ZXItPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29s CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvdHlwY2FjaGUuaAppbmRleCA0MzFhZDdmLi5lZDdjMmU3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hl LmgKQEAgLTE5OSw2ICsxOTksOCBAQCBleHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9p ZGVudGlmaWVyKE9pZCB0eXBlX2lkLCBpbnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBh cmVfdmFsdWVzX29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBh cmcyKTsKIAorZXh0ZXJuIExpc3QgKkdldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsK KwogZXh0ZXJuIHNpemVfdCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQp OwogCiBleHRlcm4gdm9pZCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVj b3JkVHlwbW9kUmVnaXN0cnkgKiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQx ZGQ5Li5iYWFiZmI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3 IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBf b3JpZ2luLnBsJywKICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJf c3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAg ICAgXSwKICAgfSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY1ZjQz ZjAuLjZkMWZmOGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMjA1 LDggKzIwNSwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsK IAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIp OworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJs ZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhw cmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERF RkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCAwMjBhZDk2Li4wZWZhNDFkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC0xNTAsOCArMTUw LDEzIEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFy YWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5n ZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMi LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIg VEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDAp OworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsK K30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAki U0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDQy NjVkM2IuLjg5M2ZhYWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCkBAIC01MDEsNiArNTAxLDE0IEBAIHRlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRh YmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmYXVsdCBl eHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGlt ZXN0YW1wKDApOyIpOworJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsi KTsKKwogdGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVf QiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9z dHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs CmluZGV4IDgyYjVlNmMuLjJjZDQ1M2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtMzg0LDggKzM4NCwxMyBAQCBteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBw b3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGlu IHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVS IENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsKK0FMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWFhNjk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwKQEAg LTAsMCArMSw2MTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIHNhZmV0eSBjaGVja3Mgb2Ygc3RyZWFtaW5n IG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uLgorIyBXaXRob3V0IHRoZXNl IHNhZmV0eSBjaGVja3MsIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2VyIG1heSBmYWxsIGlu dG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3aXRob3V0IHRoZSB1c2VyIGtub3dpbmcuCisjCisjIEZv ciBub3JtYWwgdGFibGVzLCB3ZSB1c2UgZGVhZGxvY2stcHJvZHVjaW5nIHRlc3QgY2FzZXMgdG8g ZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1vZGlmaWNhdGlvbnMgZG8gbm90IGludmFsaWRhdGUgY29u c3RyYWludCBjaGVja3MuCisjCisjIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIGp1c3QgdXNl IHRlc3QgY2FzZXMgdG8gY29uZmlybSB0aGF0IHRoZSBjb25zdHJhaW50CisjIGNoZWNrcyBhcmUg YXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkn bG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2Ny aWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFNldHVwIHN0cnVjdHVy ZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdGVzdF90YWIxIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1 cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxl IGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGludCki KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFC TEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIFBB UlRJVElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiAoTElLRSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRl c3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0 aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAn IGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwgRk9SIFRBQkxFIHRlc3RfdGFi MSwgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0aXRpb25lZCBGT1IgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uZWQiKTsKKworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YgorCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lJworCVBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBfcHViX3BhcnRpdGlv bmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNlKSIpOwor Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIEludGVy bGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGlt aXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQQzo6UnVu Ojp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKwor bXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGlu LCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRo ZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNv bHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQorIyBlcnJvciByZXBvcnRlZCBi eSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK KyMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBub3JtYWwgdGFibGUuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiMSBvbiB0ZXN0X3RhYjEoYSkiKTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxIHZhbHVlcygxKSIpOworCiskaW4gLj0gcXsK K0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVl IGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEiKTsKKworIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsK KworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7 Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4g d2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0 X3RhYl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChiKSIpOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRv ZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRS T1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CisKKyMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCks ICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwor CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVHJpZ2dlcnMgd2hpY2ggZXhlY3V0ZSBub24taW1t dXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKKyMgc3Vic2NyaWJlciBzaWRl LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2Fz ZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2Vy IGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEp Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVO SVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3RhYjIoYSkiKTsKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJf ZnVuY190YWIxX3Vuc2FmZSgpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAg SU5TRVJUIElOVE8gcHVibGljLnRlc3RfdGFiMiBWQUxVRVMgKE5FVy4qKTsKKyAgICBSRVRVUk4g TkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRyaV90 YWIxX3Vuc2FmZQorQkVGT1JFIElOU0VSVCBPTiBwdWJsaWMudGVzdF90YWIxCitGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZlKCk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFiMV91bnNhZmU7CisK K0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlKCkgUkVUVVJOUyBUUklHR0VS IEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3Rlc3QgZm9yIHNhZmUgdHJpZ2dl ciBmdW5jdGlvbic7CisJUkVUVVJOIE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7 CitBTFRFUiBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlIElNTVVUQUJMRTsKK0NSRUFU RSBUUklHR0VSIHRyaV90YWIxX3NhZmUKK0JFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFi MQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3NhZmUo KTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOwor SU5TRVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFi MiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5w dW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xx Cit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcg PSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgVXNpbmcgdHJpZ2dlciB3aXRoIGltbXV0YWJs ZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRS SUdHRVIgdHJpX3RhYjFfc2FmZTsKK0RST1AgVFJJR0dFUiB0cmlfdGFiMV91bnNhZmUgT04gcHVi bGljLnRlc3RfdGFiMTsKK30pOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOworaXMoJHJlc3VsdCwgcXEoMiksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBk YXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworRFJPUCBJTkRFWCBpZHhfdGFiMjsKK0RST1AgVFJJR0dFUiB0cmlf dGFiMV9zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVu Y190YWIxX3Vuc2FmZTsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZTsKK30p OworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitEUk9QIElO REVYIGlkeF90YWIyOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gcGFydGl0aW9u IHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxewor Q1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisg IEJFR0lOCisgICAgUkVUVVJOIE5VTEw7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOwor Q1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcKK0JFRk9SRSBJTlNFUlQgT04gdGVzdF90YWJfcGFy dGl0aW9uCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCk7CitB TFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiBpbnNl cnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0aW9u ZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3Rf dGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9 IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJz Y3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIp OworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQg aW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK K2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgdHJpZ2dlcicpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90 IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEK KyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0 aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVs dCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBG VU5DVElPTiBmdW5jX2NvdW50X3RhYjIoKSBSRVRVUk5TIElOVCBBUyBcJFwkCisgIEJFR0lOCisg ICAgUkVUVVJOIChTRUxFQ1QgY291bnQoKikgRlJPTSBwdWJsaWMudGVzdF90YWIyKTsKKyAgRU5E CitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTFVN TiBiIGludCBERUZBVUxUIGZ1bmNfY291bnRfdGFiMigpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNF UlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49 IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIEFsdGVyIGRlZmF1 bHQgdmFsdWVzIHRvIGltbXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIx IEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBD T0xVTU4gYiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9 KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhl biB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBwYXJ0aXRp b24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIHJh bmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVk IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcg PSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBi IERST1AgREVGQVVMVCIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWlu IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rp b24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBh cmFsbGVsCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor IyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUg dGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJsZSwgb25seSB0ZXN0IG5vcm1hbCB0YWJsZSBo ZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgaW50IENIRUNLIChW QUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIHRt cF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIElOVCBDT05TVFJBSU5UIGRvbWFp bl9jaGVjayBDSEVDSyAoVkFMVUUgPj0gZnVuY19jb3VudF90YWIyKCkpOworQUxURVIgVEFCTEUg dGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgdG1wX2RvbWFpbjsKK30pOworCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIy OworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisK KyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBs aWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRp b24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBE Uk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsKKworIyBD bGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENP TFVNTiBhIFRZUEUgaW50Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3Ry YWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgorIyBvbiB0 aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwg d29ya2VyIGluIHRoaXMKKyMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0 IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFi MiBWQUxVRVMoMSkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjFf dW5zYWZlIENIRUNLKGEgPj0gZnVuY19jb3VudF90YWIyKCkpOworfSk7CisKKyMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGlu IC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIEFsdGVyIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtz LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIg VEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2FmZTsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUgQ0hFQ0soYSA+ PSAwKTsKK30pOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMo JHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZy b20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV9z YWZlIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RS VU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdl IGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+ IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX2NvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKworIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkg b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBG aXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUgdGFiX25v cHVibGljKGEgaW50KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJTUFSWSBLRVkgKGEp OworQUxURVIgVEFCTEUgdGVzdF90YWIyIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFiMiBWQUxVRVMoMSk7Cit9KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBSSU1BUlkgS0VZIChh KTsiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxewor QUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIEZPUkVJR04g S0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWIyKGEpOworU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0 X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdf dHJpZ2dlciBXSEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiMSc6OnJlZ2NsYXNzOjpvaWQgXFxnZXhl YworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpOworSU5TRVJUIElOVE8gdGFiX25vcHVi bGljIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgt PnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxF VEUgRlJPTSB0ZXN0X3RhYjIiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5m aW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhl IHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3Rf dGFiMWZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Citpcygk cmVzdWx0LCBxcSgxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJv cHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhl IGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7 Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg VGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlH TiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsKK1NFTEVDVCAnQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwg dGduYW1lIHx8ICciJyBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYl9w YXJ0aXRpb24nOjpyZWdjbGFzczo6b2lkIFxcZ2V4ZWMKK30pOworCisjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUg dGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisj IERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBp dCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0 aW9uX2ZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZWJlNjhjNS4uYjcxOTIyZCAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTE4NzksNiArMTg3OSw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdl dGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZl dHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwog UGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v35-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v35-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v35-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=62907; creation-date="Tue, 27 Sep 2022 12:21:00 GMT"; modification-date="Tue, 27 Sep 2022 12:26:40 GMT" Content-Transfer-Encoding: base64 RnJvbSAyYzY4ZmRjZjM5YzJhYzk3ZWUyNjA0NmM1Mzk3MGRkMjA2ODc2MTZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNSA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBwYXJhbGxl bCB3b3JrZXIgZXhpdHMgd2l0aCBhbiBlcnJvci4KCkluIHRoaXMgY2FzZSwgcmV0cnkgYXBwbHlp bmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbm9ybWFsCnN0cmVhbWluZz1v biBtb2RlLiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gYSBsb29wIG9m IHRoZSBzYW1lCnJldHJ5IGVycm9ycy4KCkEgbmV3IGZsYWcgZmllbGQgInN1YnJldHJ5IiBoYXMg YmVlbiBpbnRyb2R1Y2VkIHRvIGNhdGFsb2cgInBnX3N1YnNjcmlwdGlvbiIuCklmIHRoZSBzdWJz Y3JpYmVyIGV4aXRzIHdpdGggYW4gZXJyb3IsIHRoaXMgZmxhZyB3aWxsIGJlIHNldCB0cnVlLCBh bmQKd2hlbmV2ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz IGZsYWcgaXMgcmVzZXQgZmFsc2UuCk5vdywgd2hlbiBkZWNpZGluZyBob3cgdG8gYXBwbHkgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZSBsb2dpYyBjYW4ga25vdyBpZgp0aGlzIHRyYW5zYWN0 aW9uIGhhcyBwcmV2aW91c2x5IGZhaWxlZCBvciBub3QgKGJ5IGNoZWNraW5nIHRoZSAic3VicmV0 cnkiCmZpZWxkKS4KCkluIGFkZGl0aW9uLCB3aGVuIGludHJvZHVjZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB3ZSBhZGRlZCBzb21lIGxvZyBjaGVja3MgdG8KZW5zdXJlIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KQnV0IHNp bmNlIHdlIGludHJvZHVjZWQgInJldHJ5IiBub3csIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gY29u ZmlybSB3aGV0aGVyCnN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBTbyByZW1vdmVkCnRoZXNlIGxvZyBjaGVja3MuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKwog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgICAgfCAgMTEg Ky0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgICAgIHwg ICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAg ICAgICAgICB8ICAgMSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMgICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyAgICAgICAgICAgfCAxODcgKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgNTYgKy0tLS0t CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgICAgICB8ICA0 NSArLS0tLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgICAg ICAgfCAgNTEgKy0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsICAgICB8ICA1NiArLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1 YnhhY3RfZGRsX2Fib3J0LnBsIHwgIDQ2ICstLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICA1NCAtLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgICAgIHwgIDY2ICstLS0tLS0tCiAuLi4vdC8w MzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCAgICAgICAgICAgICB8IDE1MCArKysrKysr Ky0tLS0tLS0tLQogMTggZmlsZXMgY2hhbmdlZCwgMjc0IGluc2VydGlvbnMoKyksIDQ5MiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGM1NzY5ZGEuLjc5Mjc0OWMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCkBAIC03OTI5LDYgKzc5MjksMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0 O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0 cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZCwgbmVjZXNz aXRhdGluZyBhIHJldHJ5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5pbmZv PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggZjdiZDFjZS4uNzE0 YWUwMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xMzQzLDEyICsx MzQzLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlv biBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgPHBhcmE+CiAgICBXaGVuIHRo ZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5p c2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0 aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAgIGNoYW5nZSB0aGUgc3RyZWFtaW5n IG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4g YW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBMU04g b2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2 ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8bGlu awotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJT Q1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgICBmYWlsZWQgdHJhbnNh Y3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIHRoZSBmYWlsZWQgdHJhbnNh Y3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBvbjwvbGl0 ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0aGUgZmluaXNoIExTTiBvZiB0aGUg ZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUKKyAgIHNlcnZlciBsb2cu IEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvCisgICA8bGluayBs aW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElP TiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA3ZjI4YWU4Li40YTgz NWZmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjUw LDYgKzI1MCwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIGFsc28gYmUg dGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBjYW5ub3Qg YmUKICAgICAgICAgICBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vi c2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQKICAgICAgICAgICB0YWJsZS4KKyAgICAgICAgICBXaGVu IGFwcGx5aW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBpZiBlaXRoZXIgcmVxdWlyZW1lbnQg aXMgbm90CisgICAgICAgICAgbWV0LCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhp dCB3aXRoIGFuIGVycm9yLgorICAgICAgICAgIFRoZSA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJh bD4gbW9kZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQg dGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmMKaW5kZXggYTUwNmZjMy4uNzIzYjE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA1 NWY3ZWM3Li5mNGEwMDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0x Mjk4LDcgKzEyOTgsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0 dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9NIHB1Ymxp YzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1lLCBzdWJv d25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJlYW0sIHN1 YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vic2xvdG5h bWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAgICAgICAg ICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9u cywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFU RSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKaW5kZXggMWY4MjIwNi4uYzdmZDczMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM1LDYgKzYzNSw3IEBAIENyZWF0ZVN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQs CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgogCQkJCQkgTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9uZXJy KTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xHZXRE YXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0g MV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAob3B0cy5zbG90X25h bWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jCmluZGV4IDczNTU2MzkuLjJiNDI0ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xNDcs NiArMTQ3LDE4IEBAIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkK IAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKKwkgKiBEb24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29y a2VycyBmb3IgcmV0cmllcywgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgdGhlIGxh c3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwK KwkgKiBhcHBseSB3b3JrZXIgdGhlIGNoZWNrcyBmYWlsZWQgKHNlZSBmdW5jdGlvbgorCSAqIHBh cmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKS4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24t PnJldHJ5KQorCXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBu b3QgdXNlZCBmb3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKIAkgKiBG b3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVzaW5nIGEg cGFyYWxsZWwKIAkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBh cHBseSB0aGUgY2hhbmdlIGZvciBhCiAJICogcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gdGhlIFJF QURZIHN0YXRlIChzZWUKQEAgLTExMzQsNyArMTE0Niw1IEBAIHBhcmFsbGVsX2FwcGx5X3JlbGF0 aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCQkJCQkJInN0cmVhbWluZyA9 IHBhcmFsbGVsIiksCiAJCQkJIGVycmRldGFpbCgiVGhlIHVuaXF1ZSBjb2x1bW4gb24gc3Vic2Ny aWJlciBpcyBub3QgdGhlIHVuaXF1ZSAiCiAJCQkJCQkgICAiY29sdW1uIG9uIHB1Ymxpc2hlciBv ciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgIgotCQkJCQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rp b24uIiksCi0JCQkJIGVycmhpbnQoIlBsZWFzZSBjaGFuZ2UgdG8gdXNlIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgJXMuIiwKLQkJCQkJCSAic3RyZWFtaW5nID0gb24iKSkpOworCQkJCQkJICAgIm5v bi1pbW11dGFibGUgZnVuY3Rpb24uIikpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IGY4MWRmYzMuLmRhMDIwNjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzk0LDcgKzM5NCw3IEBAIHN0YXRpYyB2b2lkIHN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CiAKIHN0YXRpYyB2b2lk IG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVT dWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlv bk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJu YWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5 X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQz NCw2ICs0MzQsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKHZvaWQpOwogc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2Fw cGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKip3aW5mbyk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0 cnkoYm9vbCByZXRyeSk7CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdl cyBmb3IgZ2l2ZW4gcmVsYXRpb24uCiAgKgpAQCAtOTgxLDYgKzk4Myw5IEBAIGFwcGx5X2hhbmRs ZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgm Y29tbWl0X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNj cmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUg YmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJs ZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwOTAsNiArMTA5NSw5IEBAIGFwcGx5X2hh bmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3lu Y2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFy ZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMTQ2LDYgKzExNTQsOSBAQCBhcHBseV9oYW5kbGVfY29t bWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJl X2RhdGEuZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBS ZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsK KwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4g cGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xz bik7CiAKQEAgLTEyMDcsNiArMTIxOCw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJl ZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xs YmFja19lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJl c2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwor CiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBw YXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJh Y2tfZW5kX2xzbik7CiAKQEAgLTEyNjEsNiArMTI3NSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f cHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJp YWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2Zp bGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCisJCQkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFs c2UpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoK QEAgLTEyODgsNiArMTMwNSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJ bmZvIHMpCiAJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCQkJc3RvcmVfZmx1 c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCQkJYnJlYWs7 CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTE2NTUsNiArMTY3NSwxMCBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqIHNlcmlhbGl6ZWQg dG8gZmlsZS4KIAkJCSAqLwogCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7 CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQp CisJCQkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTY4NCw2ICsxNzA4LDkgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQl7CiAJCQkJcGFyYWxsZWxf YXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwogCQkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2Vy KHdpbmZvLCB4aWQpOworCisJCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQkJc2V0 X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0xODY0 LDYgKzE4OTEsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAK IAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURF Ul9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTkwMCw2ICsxOTMwLDkgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogc3Vic2tpcGxzbi4KIAkJCSAqLwogCQkJ Y2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJ CQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTM5 NjcsMjAgKzQwMDAsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3Rh cnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJ ICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3Rh dGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisK KwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlG bHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9y dCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBn c3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNl KTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJz Y3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICog dGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50 IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNh Y3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0 aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJ CVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogCkBAIC00MDA1LDIwICs0MDQ2LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIg b3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0 aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4g aWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVy cm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9y U3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29y a2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vi c2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQot CQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJ ICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0 IHRoZQotCQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdl IGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZB bnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlT dWJzY3JpcHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vi c2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0 aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJ UEdfRU5EX1RSWSgpOwogfQpAQCAtNDI5NCwzOSArNDM0MiwyMCBAQCBBcHBseVdvcmtlck1haW4o RGF0dW0gbWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJs ZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVh bmx5LgorICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgog ICovCiBzdGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2Fi bGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBt ZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICog c3RhdGUKLQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwot CUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVT VU1FX0lOVEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcg ZWl0aGVyIHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRf c3Vic2NyaXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkg IWFtX3RhYmxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24g Ki8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlT dWJzY3JpcHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBO b3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8q IE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChM T0csCiAJCQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVj YXVzZSBvZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXBy b2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTQ2MDMsMyArNDYzMiw2NyBAQCBnZXRfdHJhbnNhY3Rp b25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqKndpbmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKIAl9CiB9CisKKy8q CisgKiBTZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYg cmV0cnkgaXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3Iu IE90aGVyd2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVk IHN1Y2Nlc3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnko Ym9vbCByZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlz dGFydGVkX3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsK Kwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNb TmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNo YW5nZSB0aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09 IHJldHJ5KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBwYXJhbGxlbCBh cHBseSB3b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1 cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUg c3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3Jp cHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNo ZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJz Y3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2co RVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRp b24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBN eVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZv cm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwor CW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywg ZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVz W0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkp OworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOwor CisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZh bHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9n LiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8q IENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5v TG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCBiNTdmNmM5Li44MjUyZjBkIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1 MDcsOCArNDUwNyw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9 IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2Ug ZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9y aW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBH ZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBz dWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlz IHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lk ID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAi b2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCAwMTZhZmJjLi4z NmMxODAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4 LDkgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklk KSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8q IFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vi c2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVM VChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkKKwkJCQkJCQkJCQkJICogY2hhbmdl IGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3Ro IGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxp c2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAgLTEzMSw2 ICsxMzQsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlkaXNhYmxlb25l cnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkg KiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJCQkJCSAqIG9j Y3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgcHJldmlvdXMgYXBw bHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8q IENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFt ZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29t bWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggNmQxZmY4ZC4uNzQyYmNlMCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDUyICs4LDIyIEBAIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNl IFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNj cmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2Fn ZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1h bmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNh cHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJz dHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBm b3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3Vi IHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW50ZXJsZWF2ZSBhIHBhaXIg b2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KIAlteSAkaW4g ID0gJyc7CiAJbXkgJG91dCA9ICcnOwogCi0JbXkgJG9mZnNldCA9IDA7Ci0KIAlteSAkdGltZXIg PSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVm YXVsdCk7CiAKIAlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CiAKLQkj IElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2Ug bmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhl IERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2 ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOwotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwpAQCAtNzgsOCArNDgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15ICRyZXN1bHQgPQog CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CkBAIC05MCw5 ICs1OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkg PSBvbikiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTEwNSw4ICs3MCw2 IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKQEAgLTEyMSwxNiArODQsMTEgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3Rh bXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCiAJKTsKIAotCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOwotCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwogCiAJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIgogCSk7CkBAIC0xNDEsMTQgKzk5LDYgQEAgc3ViIHRlc3Rfc3RyZWFt aW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAo JGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAg LTE5Niw3ICsxNDYsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIxOSw3ICsxNjksNyBAQCAkbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDBlZmE0MWQuLjJiZWI2ODAgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNDIgKzgsMTIgQEAg dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxlbF9sb2cKLXsKLQlteSAoJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCW15ICRwYXJhbGxl bF9tZXNzYWdlID0KLQkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5p c2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7Ci0JfQotfQot CiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0 ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2Fz ZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0JbXkgJG9mZnNldCA9 IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFs bGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMg YXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUK LQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KApAQCAtNzMsOCArNDMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15ICRyZXN1bHQgPQog CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CkBAIC04Nywx MyArNTUsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQot CXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0J CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAgLTE0MSw3ICsxMDIsNyBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlh bCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdwYXJhbGxlbCcKQEAgLTE2NCw3ICsxMjUsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04i OwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVh bV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAppbmRl eCBkMmNjNDZkLi40M2Y5Y2EzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFt X2RkbC5wbApAQCAtOCwyOCArOCwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNr X3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxs ZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCkBAIC00MiwyMCArMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlDT01NSVQ7CiAJfSk7 CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVs Iiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBw bGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKLQkj IGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmli ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMg PSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg RERMIGFuZCBETUwKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywg cXsKQEAgLTgwLDggKzUwLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0K IAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKQEAg LTg5LDkgKzU3LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJwogCSk7CiAKLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQog CSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBv ZiB0aGUgRERMIGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGlu dmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0CiAJIyB0aGUgbmV4 dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgpAQCAtMTE0LDggKzc5 LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCiAJKTsKQEAgLTEzMCwxNCAr OTMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENP TFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9QIENPTFVNTiBmOwogCX0p OwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQog CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTg1LDcgKzE0MCw3IEBAIG15ICRyZXN1bHQg PQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJwpAQCAtMjAzLDcgKzE1OCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJv cnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKaW5kZXggNzUyZTc5YS4uNjdjNzc4ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbApAQCAtOCw0MiArOCwxMiBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21l c3NhZ2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBj b21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMg RW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0 byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4K IHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsK LQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwi LCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBs aWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMgV2UgaGF2ZSB0byBsb29rIGZv ciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQotCSMg bG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUpID0gQF87CiAKIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBE REwsIERNTCBhbmQgUk9MTEJBQ0tzCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02 OSw4ICszOSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJbXkgJHJlc3VsdCA9CiAJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwpAQCAtNzgsOSArNDYsNiBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKIAkpOwog Ci0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKIAkjIHN1YnRyYW5z YWN0aW9uIFJPTExCQUNLcwogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtMTAxLDE3 ICs2NiwxMiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSRyZXN1bHQgPQogCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKIAlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAogCQknY2hlY2sg cm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwogCi0J IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawogCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMTI2LDggKzg2LDYgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CkBAIC0xMzcsMTQgKzk1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChh ID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAgLTE5MSw3ICsxNDEsNyBAQCBteSAk cmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBp cygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIw OSw3ICsxNTksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVz dGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9k ZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwK aW5kZXggOWQ2NzhiMy4uNDFlYzFlOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDQyICs5LDEyIEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxs ZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmlu aXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0K LQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxh dGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNh c2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQg PSAwOwotCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJh bGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2Fz IGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxv b2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhl Ci0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KLQkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3 aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK QEAgLTY4LDggKzM4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CkBAIC04NCwxNCArNTIsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwogCX0pOwog CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0 IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3Nh Z2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAj IENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTM4LDcgKzk4LDcgQEAgbXkgJHJlc3VsdCA9CiAJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwg cXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsK IAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xNTYsNyArMTE2LDcg QEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRp ZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIg Y2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggODkzZmFhYS4uNmVhN2ZjMSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAg LTExLDIwICsxMSw2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0 aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQot IyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxf bG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSkg PSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0 aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRzdHJlYW1pbmdfbW9kZSBl cSAncGFyYWxsZWwnKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRw YXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgcGFy YW1ldGVyCiAjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKICMgY2FzZXMuCkBAIC0zMyw5ICsxOSw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCW15ICgkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBw bmFtZV9CLCAkYXBwbmFtZV9DLCAkc3RyZWFtaW5nX21vZGUpID0KIAkgIEBfOwogCi0JbXkgJG9m ZnNldF9CID0gMDsKLQlteSAkb2Zmc2V0X0MgPSAwOwotCiAJbXkgJG9sZHBpZF9CID0gJG5vZGVf QS0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCAiCiAJCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uCkBAIC03NywyMyArNjAsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEV4 cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNv bW1pdC4KIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIElmICJzdHJlYW1p bmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVj awotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5Lgot CWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwot CQkkbm9kZV9CLT5yZWxvYWQ7Ci0KLQkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX0MtPnJlbG9hZDsK LQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0 X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOwotCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2Zp bGU7Ci0KIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgogCSMgVGhlbiAyUEMgUFJFUEFSRQogCSRub2RlX0EtPnNhZmVfcHNx bCgKQEAgLTEwNyw5ICs3Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX0EtPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CiAJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJl YW1pbmdfbW9kZSk7Ci0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0 cmVhbWluZ19tb2RlKTsKLQogCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXIocykKIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLApAQCAtMTYzLDEwICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkj IEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJl IHJlcGxpY2F0ZWQpCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgotCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7Ci0JJG9mZnNl dF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKLQogCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3Rl ZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKIAkkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3Jl cycsICIKQEAgLTE4Myw5ICsxNDIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQyk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAk c3RyZWFtaW5nX21vZGUpOwotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0Ms ICRzdHJlYW1pbmdfbW9kZSk7Ci0KIAkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyKHMpCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKQEAgLTIzMiwxNiArMTg4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2Rl X0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVy Ym9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2Rl X0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdh cm5pbmciKTsKLQkJJG5vZGVfQi0+cmVsb2FkOwotCi0JCSRub2RlX0MtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVf Qy0+cmVsb2FkOwotCX0KIH0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggMmNk NDUzYy4uYzQ5Y2IxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3 b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsCkBAIC04LDI4ICs4LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMg Q2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVk IHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIg Y2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQg cHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19w YXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxs ZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNv bW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFt ZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1v biBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7 Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19w YXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOworCW15ICgkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAg LTM5LDIwICsyMyw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIg aXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29y a2VyLgotCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91 dCB0aGF0LCBzbyBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFs bGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVy LT5yZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ci0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGNoZWNrIHRo YXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiAJIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKQEAgLTY1LDggKzM1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5n CiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7 Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgogCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAt MTAxLDkgKzY5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0xMTUsOCArODAsNiBA QCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CkBAIC0xNDksOSArMTEyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBO b3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgogCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OwotCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CiAJCUJF R0lOOwpAQCAtMTY2LDggKzEyNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxp c2hlci0+c3RhcnQ7CiAJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKLQljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSMgY29t bWl0IHBvc3QgdGhlIHJlc3RhcnQKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CkBAIC0xOTUs OSArMTUzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwog Ci0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0yMDksOCArMTY0LDYgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJl cGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgogCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwpAQCAtMjUzLDkgKzIwNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpA QCAtMjY3LDggKzIxNyw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTMwMCwxNCArMjQ4LDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5 LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwot CQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCkBAIC0zNzUsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8Miks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzk4LDcgKzMzOCw3IEBAICRub2Rl X3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5n IFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCmluZGV4IDNh YWE2OTkuLmI4N2RjNTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9z dHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCkBAIC03OCw3ICs3OCw4IEBAIG15ICRo ID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRv dXQsICR0aW1lciwKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKICMgc3Vic2NyaWJl ci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENo ZWNrIHRoZQotIyBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNl LgorIyBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQg YWZ0ZXIgcmV0cnlpbmcgaW4KKyMgYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBp cyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZp cnN0IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgpAQCAtMTAzLDYg KzEwNCwxMCBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVs LywKIAkkb2Zmc2V0KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBj b25zdHJhaW50ICJpZHhfdGFiMSIvLAorCSRvZmZzZXQpOworCiAjIERyb3AgdGhlIHVuaXF1ZSBp bmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgogJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7CiAKQEAgLTExMSw3 ICsxMTYsOSBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog CiBteSAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDEp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsK K2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyB1bmlxdWUgaW5kZXggdG8gcmV0cnkgYXBwbHknCispOwogCiAjIENsZWFu IHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKQEAgLTEzMiwy MSArMTM5LDI0IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsK LQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1p cygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgn KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9i X3BhcnRpdGlvbl9pZHgiKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFRyaWdnZXJzIHdo aWNoIGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhl CiAjIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVs IHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3Jr ZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5Lgog IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVu Y3Rpb24gb24gbm9ybWFsIHRhYmxlLgpAQCAtMTY3LDE3ICsxNzcsNiBAQCBDUkVBVEUgVFJJR0dF UiB0cmlfdGFiMV91bnNhZmUKIEJFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQogRk9S IEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOwog QUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5z YWZlOwotCi1DUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMg VFJJR0dFUiBBUyBcJFwkCi0gIEJFR0lOCi0gICAgUkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZl IHRyaWdnZXIgZnVuY3Rpb24nOwotCVJFVFVSTiBORVc7Ci0gIEVORAotXCRcJCBsYW5ndWFnZSBw bHBnc3FsOwotQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7 Ci1DUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCi1CRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50 ZXN0X3RhYjEKLUZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFi MV9zYWZlKCk7CiB9KTsKIAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CkBAIC0yMDIsMTIgKzIwMSwxMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRh YmxlIGZ1bmN0aW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXF7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0Eg VFJJR0dFUiB0cmlfdGFiMV9zYWZlOwotRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBw dWJsaWMudGVzdF90YWIxOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5p cXVlIGNvbnN0cmFpbnQgImlkeF90YWIyIi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5p cXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjIiKTsKIAogIyBX YWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBh cHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwpAQCAtMjE1LDE1ICsyMTQsMTMgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwg cXEoMiksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0 YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBm cm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9z dGdyZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFf c2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBP TiBwdWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNh ZmU7Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMjU2LDIyICsyNTMsMjQg QEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTld KzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3Bh cnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVy LCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCiAj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRy ZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgdHJpZ2dlcicpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOworCisjIERyb3Ag dGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3Bh cnRpdGlvbiIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQg dGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKICMgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3Ig cmVwb3J0ZWQgYnkKLSMgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcGFyYWxsZWwg d29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwg d2UgY2hlY2sKKyMgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQg dmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCkBAIC0zMDksMTcgKzMwOCwxNCBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2lu ZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0 KTsKIAotIyBBbHRlciBkZWZhdWx0IHZhbHVlcyB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFM VEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxIik7Ci0KICMg V2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUg YXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSg1MDAx KSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxl IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0 cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScKKyk7CiAKICMgQ2xlYW4gdXAg dGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCkBAIC0zNDYsMTAgKzM0Miw2IEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwotCiAjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKQEAg LTM1NywxMiArMzQ5LDE4IEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9u ZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4g ZGVmYXVsdCB2YWx1ZScKKyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3Jp YmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKIAog IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWluIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKICMgZnVuY3Rpb24g b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFs bGVsCi0jIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBh ZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlz IHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgQmVj YXVzZSB0aGUgY29sdW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBz YW1lIGFzIGl0cyBwYXJlbnQKQEAgLTQwMywxNyArNDAxLDEzIEBAICRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZG9t YWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIERPTUFJTiB0bXBfZG9tYWluIERST1Ag Q09OU1RSQUlOVCBkb21haW5fY2hlY2siKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGRvbWFpbicp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtNDI2LDkgKzQyMCwxMCBAQCBUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYjI7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgSXQgaXMgbm90IGFsbG93ZWQg dGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlIGZ1bmN0 aW9uCi0jIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcwotIyBjYXNlLgorIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVu Y3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBh cHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vz c2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCkBAIC00NjEsMjQgKzQ1NiwxNyBA QCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1 c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zm c2V0KTsKIAotIyBBbHRlciBjb25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4cHJl c3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxcXsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3Rf dGFiMV91bnNhZmU7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3Rf dGFiMV9zYWZlIENIRUNLKGEgPj0gMCk7Ci19KTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbnN0 cmFpbnQnKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVz dF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKwkiQUxURVIgVEFCTEUg dGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2FmZSIpOwogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0 X3RhYjE7CkBAIC01MDEsMTAgKzQ4OSw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBh cmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25z dHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9u IERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCkBAIC01MTIsMTEgKzQ5 NiwxNiBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygk cmVzdWx0LCBxcSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJv cHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOworCisjIERyb3Ag Y29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05T VFJBSU5UIHRlc3RfdGFiX2NvbiIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMg bm90IGFsbG93ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVj ayB0aGUgZXJyb3IKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4K KyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJl dHJ5aW5nIGluIGFwcGx5CisjIHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGlj YXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgpAQCAtNTU4LDkgKzU0NywxMyBA QCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0r Oik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1 c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zm c2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIp OworIyBXYWl0IGZvciBlcnJvciBsb2cgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbnQgZGF0YSBo YXMgYmVlbiBkZWxldGVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0X3RhYjEi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3RfdGFiMWZrIi8sCisJJG9mZnNl dCk7CisKKyMgSW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJsaXNoZXIsIG5vdyBpdCB3 b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01NjgsOSArNTYxLDExIEBAICRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkcmVzdWx0ID0KICAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWdu IGtleScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKQEAg LTU4Miw2ICs1NzcsNyBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQ1JF QVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitJTlNF UlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25fZiBTRUxFQ1QgaSAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwMCkgcyhpKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09O U1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRl c3RfdGFiX3BhcnRpdGlvbl9mKGEpOwogU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb24gRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdf dHJpZ2dlciBXSEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiX3BhcnRpdGlvbic6OnJlZ2NsYXNzOjpv aWQgXFxnZXhlYwogfSk7CkBAIC01OTcsMTAgKzU5Myw2IEBAICRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0 IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVS IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRp b25fZmsiKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBh cHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwogCkBAIC02MDgsNyArNjAwLDExIEBAICRyZXN1bHQgPQogICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXkn KTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1 c2Ugb2YgZm9yZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50 IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVz dF90YWJfcGF0aXRpb25fZmsiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v35-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v35-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v35-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8908; creation-date="Tue, 27 Sep 2022 12:21:00 GMT"; modification-date="Tue, 27 Sep 2022 12:26:40 GMT" Content-Transfer-Encoding: base64 RnJvbSAzNTdjZDVjNTJiMTFlMDYzZjVhNWMzODQyMzQ4MjY4MmQxOGRlMjA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNSA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIs IGlmIHRoaXMgcHJvY2VzcyBpcyBhCmFwcGx5IHBhcmFsbGVsIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKc3luY2hyb25pemF0aW9uIHdv cmtlci4KClRoZSBuZXcgY29sdW1uIGNhbiBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQpwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgYWxz byBzaW1pbGFyIHRvIHRoZSAnbGVhZGVyX3BpZCcgY29sdW1uIGluCnBnX3N0YXRfYWN0aXZpdHku Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysr KysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgfCAzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgICAgICAgICAgICB8ICA2ICsrKy0tLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgICAgICAgIHwgIDMgKystCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGlu c2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDFkOTUw OWEuLmQ5ZjgxZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4MCwxMSArMzE4MCwyMiBAQCBT RUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2 aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50 ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3Mg SUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5 CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRl ciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90 eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgT0lEIG9mIHRoZSByZWxh dGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemluZzsgbnVsbCBmb3IgdGhlCi0gICAg ICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CkBAIC0zMTk0LDcgKzMyMDUsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRf ZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9w YXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24g cmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAw CisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMDMsNyAr MzIxNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBn X3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxh c3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUg em9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFNlbmQgdGlt ZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAg IFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRl cjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMTIsNyArMzIyNCw4IEBAIFNFTEVDVCBw aWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGlt ZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1l c3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFJlY2VpcHQgdGlt ZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBm b3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjEsNyArMzIzNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRf ZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9l dmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAg TGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5k ZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmln aW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzEsNyArMzI0NSw3 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4K ICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRv IG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBzZW5kZXI7IG51bGwgZm9yIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K ICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGY0YTAw NDkuLjNmMTVjZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Niw2 ICs5NDYsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCA4OTdkZDJjLi43NTBiZTk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDU3LDcgKzEwNTcsNyBAQCBJc0xvZ2ljYWxMYXVuY2hl cih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdT KQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBH X1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVM TCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJu U2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpA QCAtMTA4MywxMCArMTA4Myw2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1Ymlk KQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlzIGlzIHBhcmFsbGVsIGFwcGx5IHdv cmtlciAqLwotCQlpZiAod29ya2VyLmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKLQkJ CWNvbnRpbnVlOwotCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVl c1swXSA9IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKQEAgLTEwOTUsMjYgKzEwOTEs MzIgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UK IAkJCW51bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3JrZXJf cGlkKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKworCQlp ZiAod29ya2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gSW52YWxpZFBpZCkKIAkJCW51bGxzWzNdID0g dHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNu KTsKLQkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50 MzJHZXREYXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYgKFhMb2dSZWNQdHJJ c0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1ZTsKIAkJZWxzZQot CQkJdmFsdWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUp OwotCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1ZXNbNF0gPSBMU05H ZXREYXR1bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09 IDApCiAJCQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1XSA9IFRpbWVzdGFt cFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQod29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERh dHVtKHdvcmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUg PT0gMCkKIAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzZdID0gTFNOR2V0 RGF0dW0od29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQor CQkJdmFsdWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUp OworCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKIAkJCW51bGxz WzddID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1wVHpHZXREYXR1bSh3 b3JrZXIucmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1bSh3b3JrZXIucmVw bHlfbHNuKTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQludWxsc1s4XSA9IHRy dWU7CisJCWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJl cGx5X3RpbWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggYTA3ZTczNy4uNmIxOGY3NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC01MzkzLDkgKzUzOTMsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRp b24nLCBwcm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5 cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne29pZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xz bix0aW1lc3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvfScs Ci0gIHByb2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJlY2VpdmVkX2xzbixs YXN0X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxh dGVzdF9lbmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQs aW50NCxwZ19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScs CisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1l cyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlkLHJlY2VpdmVkX2xz bixsYXN0X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNu LGxhdGVzdF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlv bicgfSwKIHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFj a2VuZCBQSUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApp bmRleCA5ZGQxMzc0Li5jNjlmNmU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApA QCAtMjA4Niw2ICsyMDg2LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRf c3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAg ICAgc3QucGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAg c3QucmVjZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIwOTMsNyAr MjA5NCw3IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAog ICAgIHN0LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAo cGdfc3Vic2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRp b24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21z Z19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVz dF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBn X3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBh cHBseV9sZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9t c2dfcmVjZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0 LnN1YmlkID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHN8IFNFTEVDVCBz cy5zdWJpZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3JfY291bnQsCi0tIAoy LjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v35-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v35-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v35-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=139694; creation-date="Tue, 27 Sep 2022 12:21:00 GMT"; modification-date="Tue, 27 Sep 2022 12:26:42 GMT" Content-Transfer-Encoding: base64 RnJvbSBkYzc0ZDc1NDVkN2IyMDlhNDMwNWVjYTllNzU2MmM5ZjRhN2JmNmI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzNSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRoZSBmaWxlIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUgdHJh bnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rpb25z LCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdv cmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkg d29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0g aXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFuZ2Vz IHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5n IGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxs IHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3IgdGhl IHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBz cGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBw YXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3Bh cmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRo ZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCklu IGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJF QU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxz byBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3Jp Z2luIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaXMKYWJvcnRlZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0 byBzdXBwb3J0IHBhcmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCAr LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgICAgfCAg IDIxICstCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAg ICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAg ICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jICAgICAg ICAgICAgICAgICAgICAgIHwgICA1OCArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jICAgICAgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9saWJwcS9wcW1xLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8IDEwOTggKysrKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMg ICAgICAgICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jICAgICAgICAgfCAgMTg2ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAgICA2ICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICA4NzAgKysrKysrKysr KysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgICAg ICAgfCAgIDIwICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAg ICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYyAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyAgICAgICAgICAgICAgICB8ICAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgICAgICAgfCAgICAxICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgICAgIHwgICAyOCArLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgICAgICAgfCAgICA4 ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAg ICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAg ICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oICAgICAgICAgIHwgIDEzNCArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdWJzY3JpcHRpb24ub3V0ICAgICAgICAgfCAgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiA0MSBmaWxlcyBj aGFuZ2VkLCAyNDY3IGluc2VydGlvbnMoKyksIDI1MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMDBmODMzZC4uYzU3NjlkYSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc4OTIsMTEgKzc4OTIsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8 cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFt PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBo b3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgor ICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxs IHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sg YW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0 aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBs eSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIg aWYgYXZhaWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZDg4NDhiYy4u NTIyY2I0NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk0Nyw3ICs0OTQ3LDggQEAgQU5ZIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lm aWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBp bmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXph dGlvbiB3b3JrZXJzLgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBw bHkgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgog ICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5ODcsNiAr NDk4OCwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9y ZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJh bGxlbC1hcHBseS13b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFs bGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFt ZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAo PHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIE1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlw dGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJh bGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wg ZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRo ZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxp c3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggNzdiZTRjMy4uZjdiZDFjZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xMzQwLDYgKzEzNDAsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0 IG5vdCB2aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1 YnNjcmliZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hl biB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUg ZmluaXNoIExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4g SW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVh bWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVy YWw+IGFuZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2gg TFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUg c2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8g PGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIg U1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAg PC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMi PgpAQCAtMTUyMSw3ICsxNTMxLDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNj cmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRp b24gd2lsbCBoYXZlCiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwg ZGF0YSBzeW5jaHJvbml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhl cmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5 bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTYxNiw4 ICsxNjI3LDEyIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNh dGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJl ciwgcGx1cyBzb21lIHJlc2VydmUgZm9yIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJu YW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0 IHRvIGF0IGxlYXN0CiAgICB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMg c29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9u YWxseSB0aGUgPHZhcm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkg bmVlZCB0byBiZSBhZGp1c3RlZCB0byBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2Vy cywgYXQgbGVhc3QKKyAgIHN5bmNocm9uaXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnM8L2xpdGVyYWw+IHNob3VsZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0 aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxs eSB0aGUKKyAgIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVl ZCB0byBiZSBhZGp1c3RlZCB0bworICAgYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtl cnMsIGF0IGxlYXN0CiAgICAoPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy czwvdmFybmFtZT4KICAgICsgPGxpdGVyYWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUg ZXh0ZW5zaW9ucyBhbmQgcGFyYWxsZWwgcXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90 cyBmcm9tIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwKaW5kZXggNzVjYWE3Zi4uYzM3ZTAyNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3Rv Y29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDIsNyArMzEw Miw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklE RU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFBy b3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwg PGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFy ZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40 PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Ig c2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMTIsNiArMzExMiwxMSBAQCBwc3FsICJkYm5hbWU9cG9z dGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAg IFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBv ZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIGFwcGx5aW5nIHN0 cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFyYWxs ZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+ CiAKQEAgLTY4ODIsNiArNjg4NywyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRp b249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRo aXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFt cFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg QWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJl cgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAt MDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wg dmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKaW5kZXggYmQxMmU3MS4uODU5MmI5NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKQEAgLTIyMiwxMyArMjIyLDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNl YWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5PgotICAg ICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90 eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4g KDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAg PHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWluZyBv ZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRp b24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5IGRl Y29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAgICAg ICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlv bi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAgICAg ICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJs aXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMg YSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAg SWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMgYXJl IHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBv bmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0aGUg cHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwvcGFy YT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFs bGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBh cHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2YWlsYWJs ZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMgYXJlIHdyaXR0 ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hl bgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3JrZXIsIHRoZSBm aW5pc2ggTFNOIG9mIHRoZQorICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBub3Qg YmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKaW5kZXggMmJiOTc1OS4uZDE5NWYzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3Qu YwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3Vi WGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGlt ZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdl IGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3 ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChi b29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAl dSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUg d2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3 b3JkcywgYXJlCisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxv cmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQg JiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7 CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJ bnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4g PSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3Mywx MSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhh Y3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJl cGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9y aWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBv cnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25v d3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVk IGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kZWZpbmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCmluZGV4IDg2Yjg5MDcu LjExMzEyZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk ZSA8bWF0aC5oPgogCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgog I2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBl LmgiCkBAIC0zNDYsNiArMzQ3LDYzIEBAIGRlZkdldFN0cmluZ0xpc3QoRGVmRWxlbSAqZGVmKQog fQogCiAvKgorICogRXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVs ZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRo ZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIuCisgKi8KK2NoYXIKK2RlZkdldFN0cmVhbWlu Z01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdp dmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50LgorCSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxM KQorCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2Ui LCAidHJ1ZSIsICJvZmYiLCAib24iIG9yICJwYXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2Rl VGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwo ZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7 CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJ CQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFrOworCQkJfQor CQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0 cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQg aGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xl YW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0cmNhc2VjbXAo c3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvZmYiKSA9 PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChz dmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAw KQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWws ICJwYXJhbGxlbCIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fUEFSQUxMRUw7CisJCQl9 CisJCQlicmVhazsKKwl9CisKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJIGVycm1zZygiJXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9y IFwicGFyYWxsZWxcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwlyZXR1cm4gU1VCU1RSRUFN X09GRjsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KKworLyoKICAqIFJhaXNlIGFuIGVy cm9yIGFib3V0IGEgY29uZmxpY3RpbmcgRGVmRWxlbS4KICAqLwogdm9pZApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGYzYmZjY2EuLjFmODIyMDYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQlyZWZyZXNoOwogCWJv b2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJ CXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47CkBAIC0x MzgsNyArMTM4LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfQklOQVJZKSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRl ZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJ CW9wdHMtPnN0cmVhbWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsK IAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0y NDEsNyArMjQxLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVm ZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1J Tkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMt PnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYyOSw3 ICs2MjksNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVT dWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJv d25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwog CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1 bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAt IDFdID0gQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwog CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlD aGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NU QVRFX1BFTkRJTkcgOgpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElz U2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xH ZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1p bmcpOwogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9 IHRydWU7CiAJCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZS4uNmQ1Mzk0ZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEu YwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVk ZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRl ICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2FnZShjaGFy IG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNobV9tcV9z ZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVs X2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJCQkg ICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJc1BhcmFs bGVsV29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Bp ZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFf cGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChJ c0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpOworCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21x X3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9N RVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJ CX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggOGRkN2Q2NC4uOWY2MTk5YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgorCX0s CisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFwcGx5V29ya2VyTWFp bgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGli cHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2Y2OTdiMC4uOWY3NzExNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJw cXdhbHJlY2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFy dHN0cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgInByb3RvX3ZlcnNpb24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5w cm90b192ZXJzaW9uKTsKIAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcg JiYKLQkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChv cHRpb25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZykKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgIiwgc3RyZWFtaW5nICclcyciLAorCQkJCQkJCSBvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0 cmVhbWluZyk7CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgJiYKIAkJ CVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNTAwMDApCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlLi4yZGMyNWUzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAg aW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQ RkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseXBhcmFs bGVsd29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjgzZjdlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKQEAgLTAsMCArMSwxMDk4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFw cGx5cGFyYWxsZWx3b3JrZXIuYworICogICAgIFN1cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5aW5n IHhhY3QgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE2 LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUg aW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywKKyAqIGFuZCB0ZWFyaW5nIGRv d24gYSBQYXJhbGxlbEFwcGx5V29ya2VySW5mby4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVu dHMgaW4gZmlsZSBoZWFkZXIgb2YgbG9naWNhbC93b3JrZXIuYyB0byBzZWUgbW9yZQorICogaW5m b3JtYXRpb24gYWJvdXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKKyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIu aCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4u aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisj aW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2lu Y2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKwor I2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4N2NhMDY3CisKKy8qCisgKiBE U00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAgVW5saWtlIG90aGVyIHBhcmFsbGVs IGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBE U00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9kZV9pZCB3ZQorICogY2FuIHVzZSBzbWFs bCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVECQkxCisj ZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9NUQkJCTIKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlf S0VZX0VSUk9SX1FVRVVFCTMKKworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1CIGZvciBub3cu ICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCSgxNiAqIDEwMjQgKiAxMDI0KQorCisvKgorICog RXJyb3IgcXVldWUgc2l6ZSBvZiBEU00uIEl0IGlzIGRlc2lyYWJsZSB0byBtYWtlIGl0IGxhcmdl IGVub3VnaCB0aGF0IGEKKyAqIHR5cGljYWwgRXJyb3JSZXNwb25zZSBjYW4gYmUgc2VudCB3aXRo b3V0IGJsb2NraW5nLiAgVGhhdCB3YXksIGEgd29ya2VyIHRoYXQKKyAqIGVycm9ycyBvdXQgY2Fu IHdyaXRlIHRoZSB3aG9sZSBtZXNzYWdlIGludG8gdGhlIHF1ZXVlIGFuZCB0ZXJtaW5hdGUgd2l0 aG91dAorICogd2FpdGluZyBmb3IgdGhlIHVzZXIgYmFja2VuZC4KKyAqLworI2RlZmluZSBEU01f RVJST1JfUVVFVUVfU0laRQkJCSgxNiAqIDEwMjQpCisKKy8qCisgKiBUaGVyZSBhcmUgdGhyZWUg ZmllbGRzIGluIGVhY2ggbWVzc2FnZSByZWNlaXZlZCBieSB0aGUgcGFyYWxsZWwgYXBwbHkKKyAq IHdvcmtlcjogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJlY2F1c2Ugd2UgaGF2 ZSB1cGRhdGVkIHRoZXNlCisgKiBzdGF0aXN0aWNzIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy LCB3ZSBjYW4gaWdub3JlIHRoZXNlIGZpZWxkcyBpbiB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlciAoc2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5lIFNJ WkVfU1RBVFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNpemVvZihUaW1lc3Rh bXBUeikpCisKKy8qCisgKiBIYXNoIHRhYmxlIGVudHJ5IHRvIG1hcCB4aWQgdG8gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBzdGF0ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBs eVdvcmtlckVudHJ5Cit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBrZXkgLS0gbXVz dCBiZSBmaXJzdCAqLworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKK30gUGFyYWxs ZWxBcHBseVdvcmtlckVudHJ5OworCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2ggdGFi bGUgKGluaXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxB cHBseVdvcmtlcnNIYXNoID0gTlVMTDsKKworLyoKKyAqIEEgbGlzdCB0byBtYWludGFpbiB0aGUg YWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBmb3IKKyAqIHRo ZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVu Y2hpbmcgaXQuIFRoZQorICogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhl IHRyYW5zYWN0aW9uIGlmIHRoZXJlIGFyZSBhbHJlYWR5CisgKiBlbm91Z2ggd29ya2VycyBpbiB0 aGUgd29ya2VyIHBvb2wuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyAq IHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHdvcmtlci5jLiBXZSBhbHNvIHJlbW92ZSB0aGUgZW50 cnkgZnJvbSB0aGUgbGlzdCBpZgorICogdGhlIHdvcmtlciBpcyBleGl0ZWQgZHVlIHRvIHNvbWUg ZXJyb3IuCisgKi8KK3N0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBOSUw7 CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNzYWdl IHBlbmRpbmcgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoaWNoIHdlIG5lZWQgdG8KKyAqIHJl Y2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBl bmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3VycmVudCBzdHJlYW1p bmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBvZiBzZWFyY2hpbmcg dGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMgYmV0d2VlbiBTVFJF QU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq c3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIEEgbGlzdCB0byBtYWludGFpbiBzdWJ0 cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitz dGF0aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOwor c3RhdGljIGJvb2wgcGFyYWxsZWxfYXBwbHlfc2V0dXBfZHNtKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbyk7CitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhcmFsbGVsX2Fw cGx5X3NldHVwX3dvcmtlcih2b2lkKTsKK3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X2dldF9p bl94YWN0KFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworc3RhdGljIHZvaWQg cGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8pOworCisvKgorICogUmV0dXJucyB0cnVlLCBpZiBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0 IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSwKKyAqIG90aGVyd2lzZS4KKyAqLworc3Rh dGljIGJvb2wKK3BhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sK KwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBmYWxzZTsKKworCS8q CisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgd29ya2VyIGlmIG5vdCBpbiBwYXJhbGxl bCBzdHJlYW1pbmcgbW9kZSBvcgorCSAqIHRoZSBwdWJsaXNoZXIgZG9lcyBub3Qgc3VwcG9ydCBw YXJhbGxlbCBhcHBseS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxf YXBwbHkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMg Y2FuIHN0YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX3BhcmFsbGVsX2Fw cGx5X3dvcmtlcigpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEg bmV3IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICog cG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRy YW5zYWN0aW9uIHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9m IHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3Rh cnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlpZiAoIVhMb2dSZWNQdHJJc0ludmFs aWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAq IEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNpbmcg YSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRv IGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEKKwkgKiByZWxhdGlvbiB0aGF0IGlzIG5vdCBpbiB0aGUg UkVBRFkgc3RhdGUgKHNlZQorCSAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdl IHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0CisJICogdGltZS4gU28sIHdlIGRv bid0IHN0YXJ0IHRoZSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkg Ki8KKwlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIFN0YXJ0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQg d2lsbCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVkIHhpZC4KKyAqCisgKiBJZiBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpcyBmb3VuZCBidXQgbm90IGluIHVzZSB0aGVuIHJlLXVzZSBpdCwgb3Ro ZXJ3aXNlCisgKiBzdGFydCBhIGZyZXNoIG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBpbmZvcm1hdGlv biBpbiBQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2gKKyAqIGtleWVkIGJ5IHRoZSBzcGVjaWZpZWQg eGlkLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoVHJhbnNhY3Rpb25J ZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJTGlzdENlbGwgICAqbGM7CisJUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVu dHJ5ID0gTlVMTDsKKworCWlmICghcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KHhpZCkpCisJCXJl dHVybjsKKworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJz IGhhc2h0YWJsZS4gKi8KKwlpZiAoUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID09IE5VTEwpCisJ eworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJ Y3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRl eHQ7CisKKwkJUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwg YXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJ CSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCS8qIFRy eSB0byBnZXQgYSBmcmVlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwlmb3JlYWNoKGxjLCBQ YXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq dG1wX3dpbmZvOworCisJCXRtcF93aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBs Zmlyc3QobGMpOworCisJCWlmICh0bXBfd2luZm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQor CQl7CisJCQkvKgorCQkJICogUmVsZWFzZSB0aGUgd29ya2VyIGluZm9ybWF0aW9uIGFuZCB0cnkg bmV4dCBvbmUgaWYgdGhlIHBhcmFsbGVsCisJCQkgKiBhcHBseSB3b3JrZXIgZXhpdGVkIGNsZWFu bHkuCisJCQkgKi8KKwkJCVBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9IGZvcmVhY2hfZGVsZXRl X2N1cnJlbnQoUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0LCBsYyk7CisJCQlzaG1fbXFfZGV0YWNo KHRtcF93aW5mby0+bXFfaGFuZGxlKTsKKwkJCWRzbV9kZXRhY2godG1wX3dpbmZvLT5kc21fc2Vn KTsKKwkJCXBmcmVlKHRtcF93aW5mbyk7CisJCX0KKwkJZWxzZSBpZiAoIXRtcF93aW5mby0+aW5f dXNlKQorCQl7CisJCQkvKiBGb3VuZCBhIHdvcmtlciB0aGF0IGhhcyBub3QgYmVlbiBhc3NpZ25l ZCBhIHRyYW5zYWN0aW9uLiAqLworCQkJd2luZm8gPSB0bXBfd2luZm87CisJCQlicmVhazsKKwkJ fQorCX0KKworCS8qIFRyeSB0byBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICov CisJaWYgKHdpbmZvID09IE5VTEwpCisJCXdpbmZvID0gcGFyYWxsZWxfYXBwbHlfc2V0dXBfd29y a2VyKCk7CisKKwkvKiBGYWlsZWQgdG8gc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiAqLworCWlmICh3aW5mbyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBDcmVhdGUgZW50cnkg Zm9yIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFs bGVsQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91 bmQpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyoKKwkgKiBT ZXQgdGhlIGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgZmxhZyBpbiB0aGUgbGVhZGVyIGluc3RlYWQg b2YgdGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGF2b2lkIHRoZSByYWNlIGNvbmRp dGlvbiB3aGVyZSB0aGUgbGVhZGVyIGhhcworCSAqIGFscmVhZHkgc3RhcnRlZCB3YWl0aW5nIGZv ciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGZpbmlzaAorCSAqIHByb2Nlc3NpbmcgdGhl IHRyYW5zYWN0aW9uIHdoaWxlIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBub3QgeWV0CisJICogcHJv Y2Vzc2VkIHRoZSBmaXJzdCBTVFJFQU1fU1RBUlQgYW5kIGhhcyBub3Qgc2V0IHRoZQorCSAqIGlu X3BhcmFsbGVsX2FwcGx5X3hhY3QgdG8gdHJ1ZS4KKwkgKi8KKwlwYXJhbGxlbF9hcHBseV9zZXRf aW5feGFjdCh3aW5mby0+c2hhcmVkLCB0cnVlKTsKKworCXdpbmZvLT5pbl91c2UgPSB0cnVlOwor CWVudHJ5LT53aW5mbyA9IHdpbmZvOworCWVudHJ5LT54aWQgPSB4aWQ7Cit9CisKKy8qCisgKiBG aW5kIHRoZSBhc3NpZ25lZCB3b3JrZXIgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiwgaWYgYW55 LgorICovCitQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYXJhbGxlbF9hcHBseV9maW5kX3dv cmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoID09 IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJLyogUmV0dXJuIHRoZSBjYWNoZWQgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGlmIHZhbGlkLiAqLworCWlmIChzdHJlYW1fYXBwbHlfd29ya2VyICE9IE5V TEwpCisJCXJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOworCisJLyoKKwkgKiBGaW5kIGVudHJ5 IGZvciByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uCisJICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQ YXJhbGxlbEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAo Zm91bmQpCisJeworCQkvKgorCQkgKiBXZSBjYW4ndCBwcm9jZWVkIGlmIHRoZSBwYXJhbGxlbCBz dHJlYW1pbmcgd29ya2VyIGhhcyBhbHJlYWR5CisJCSAqIGV4aXRlZC4KKwkJICovCisJCWlmIChl bnRyeS0+d2luZm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIi KSkpOworCisJCUFzc2VydChwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdChlbnRyeS0+d2luZm8t PnNoYXJlZCkpOworCQlBc3NlcnQoZW50cnktPndpbmZvLT5pbl91c2UpOworCisJCXJldHVybiBl bnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBSZW1vdmUgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlLiBBbmQgc3Rv cCB0aGUKKyAqIHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wu IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CisgKiB0aGUgd29ya2VyIHBvb2wsIHNlZSBjb21t ZW50cyBhdG9wIHdvcmtlci5jLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtl cihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0aW9uSWQgeGlkKQorewor CWludAkJCW5hcHBseXdvcmtlcnM7CisKKwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtl cigpKTsKKwlBc3NlcnQoIXBhcmFsbGVsX2FwcGx5X2dldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQp KTsKKworCWlmICghaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBI QVNIX1JFTU9WRSwgTlVMTCkpCisJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIp OworCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwlu YXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291bnQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisKKwkvKiBBcmUgdGhlcmUgZW5vdWdo IHdvcmtlcnMgaW4gdGhlIHBvb2w/ICovCisJaWYgKG5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFs bGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCXsKKwkJaW50IHNsb3Rf bm87CisJCXVpbnQxNiBnZW5lcmF0aW9uOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNo YXJlZC0+bXV0ZXgpOworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3Jr ZXJfc2xvdF9ubzsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29y a2VyX2dlbmVyYXRpb247CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgp OworCisJCWlmIChzbG90X25vIDwgMCB8fCBzbG90X25vID49IG1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMpCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzbG90IG51bWJlciIpOworCisJ CWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdChzbG90X25vLCBnZW5lcmF0aW9uKTsKKwor CQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBs eVdvcmtlcnNMaXN0LCB3aW5mbyk7CisKKwkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7CisJfQorfQorCisvKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5m b3JtYXRpb24uICovCitzdGF0aWMgdm9pZAorcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXJfaW5m byhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0KHdpbmZvKTsKKwor CWlmICh3aW5mby0+bXFfaGFuZGxlICE9IE5VTEwpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1x X2hhbmRsZSk7CisKKwlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSAhPSBOVUxMKQorCQlzaG1f bXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOworCisJaWYgKHdpbmZvLT5kc21fc2Vn ICE9IE5VTEwpCisJCWRzbV9kZXRhY2god2luZm8tPmRzbV9zZWcpOworCisJcGZyZWUod2luZm8p OworfQorCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZv aWQKK0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgsIHZvbGF0aWxl IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZCkKK3sKKwlzaG1fbXFfcmVzdWx0IHNo bXFfcmVzOworCVBHUFJPQwkgICAqcmVnaXN0cmFudDsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBl cnJjYWxsYmFjazsKKworCXJlZ2lzdHJhbnQgPSBCYWNrZW5kUGlkR2V0UHJvYyhNeUJnd29ya2Vy RW50cnktPmJnd19ub3RpZnlfcGlkKTsKKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNo KTsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVh biB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8K KwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4 dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9D U0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQg Y2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hh bmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7 CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2Nv bnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAq ZGF0YTsKKwkJU2l6ZQkJbGVuOworCQlpbnQJCQljOworCQlTdHJpbmdJbmZvRGF0YSBzOworCQlN ZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8q IEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4g Ki8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQp OworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgdHJ1ZSk7 CisKKwkJaWYgKHNobXFfcmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlpZiAobGVuID09 IDApCisJCQkJYnJlYWs7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJ CQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkg KiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24g YmV0d2VlbgorCQkJICogbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29y a2VycyBjYW4gb25seSBiZSAndycuCisJCQkgKi8KKwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsK KwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwi JWNcIiIsIGMpOworCisJCQkvKgorCQkJICogSWdub3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQg aGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJ ICovCisJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisKKwkJCWFwcGx5X2Rpc3Bh dGNoKCZzKTsKKwkJfQorCQllbHNlIGlmIChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQpCisJ CXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIiKSkpOworCQl9CisJCS8qIFNITV9NUV9XT1VMRF9CTE9D SyBpcyBwdXJwb3NlZnVsbHkgaWdub3JlZCAqLworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjdHgpOworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJ aWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCXsKKwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBm YWxzZTsKKwkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCQl9CisJfQorCisJLyog UG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrLiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBl cnJjYWxsYmFjay5wcmV2aW91czsKKworCS8qIFNpZ25hbCBtYWluIHByb2Nlc3MgdGhhdCB3ZSBh cmUgZG9uZS4gKi8KKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKK30KKworLyoK KyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byByZWFkIGZyb20g b3VyIGVycm9yIHF1ZXVlIG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJkcyBhZ2FpbnN0IHRo ZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGluZworICogYW4gRXJy b3JSZXNwb25zZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2FsbHMgcHJvY19leGl0 IGRpcmVjdGx5LgorICovCitzdGF0aWMgdm9pZAorcGFyYWxsZWxfYXBwbHlfc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXIt PmFwcGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdF LAorCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQg KikgRGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29y a2VyIGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNt X2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJ c2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJy b3JfbXFoOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJ Y2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxp bmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsK KwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFs cygpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdt ZW50IGZvciB0aGUgcGFyYWxsZWwgYXBwbHksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNv bnRlbnRzLgorCSAqCisJICogTGlrZSBwYXJhbGxlbCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNv dXJjZSBvd25lciBieSB0aGlzIHRpbWUuIFNlZQorCSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkg Ki8KKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihk c21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOworCWlmIChzZWcgPT0gTlVM TCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMg c2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xP R0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICh0 b2MgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVt YmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1l bV9leGl0KHBhcmFsbGVsX2FwcGx5X3NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisK KwkvKiBMb29rIHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJh bGxlbFNoYXJlZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1 ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlf TVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6 YXRpb24gaXMgY29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBU aGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdy aXRlIGRhdGEgdG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJ bG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWly ZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxy ZXBfd29ya2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJ TXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90 OworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkg KiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0 X3NlbmRlcihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOworCisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9z ZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwK KwkJCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0 X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxv Z2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2Vy KCk7CisKKwkvKgorCSAqIFNldHVwIGNhbGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtu b3cgd2hlbiBzb21ldGhpbmcgY2hhbmdlcyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRp b24gc3RhdGUuCisJICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBU SU9OUkVMTUFQLAorCQkJCQkJCQkgIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJ CQkJCQkJCSAgKERhdHVtKSAwKTsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1l IGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJ ICovCisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBN eVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25h bWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAg IG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCwgc2hhcmVkKTsK KworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVy cnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICog Tm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhICBBbGwgd2UgY2Fu IGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1Jf SU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCku CisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7 CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5n ID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmds ZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkK KyAqIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdl KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbyBtc2cpCit7CisJY2hh cgkJbXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlzd2l0Y2gg KG1zZ3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLworCQkJewor CQkJCUVycm9yRGF0YQllZGF0YTsKKwkJCQlFcnJvckNvbnRleHRDYWxsYmFjayAqc2F2ZV9lcnJv cl9jb250ZXh0X3N0YWNrOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlw cV9wYXJzZV9lcnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKiBEZWF0aCBvZiBhIHdv cmtlciBpc24ndCBlbm91Z2gganVzdGlmaWNhdGlvbiBmb3Igc3VpY2lkZS4gKi8KKwkJCQllZGF0 YS5lbGV2ZWwgPSBNaW4oZWRhdGEuZWxldmVsLCBFUlJPUik7CisKKwkJCQkvKgorCQkJCSAqIElm IGRlc2lyZWQsIGFkZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJ ICogbWVzc2FnZSBwcm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIE90aGVy d2lzZSwKKwkJCQkgKiBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5k IHdoYXQgYWN0dWFsbHkKKwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEu Y29udGV4dCkKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5j b250ZXh0LAorCQkJCQkJCQkJCQkgXygicGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJCWVs c2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygicGFyYWxsZWwgYXBwbHkgd29ya2Vy IikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhl IGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBM b2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJc2F2ZV9lcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBw bHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCVRocm93RXJyb3JEYXRhKCZlZGF0YSk7CisK KwkJCQkvKiBTaG91bGQgbm90IHJlYWNoIGhlcmUgYWZ0ZXIgcmV0aHJvd2luZyBhbiBlcnJvci4g Ki8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOwor CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSAnWCc6CQkJCS8qIFRlcm1pbmF0ZSwgaW5kaWNh dGluZyBjbGVhbiBleGl0ICovCisJCQl7CisJCQkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3Jf bXFfaGFuZGxlKTsKKwkJCQl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwkJCQlicmVh azsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQg Tm90aWNlUmVzcG9uc2UgYW5kCisJCQkgKiBOb3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24ndCBuZWVkCisJCQkgKiB0byBzZW5kIG1lc3NhZ2VzIHRv IHRoZSBjbGllbnQuCisJCQkgKi8KKwkJY2FzZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBtZXNzYWdl IHR5cGUgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXI6ICVjIChtZXNzYWdlIGxl bmd0aCAlZCBieXRlcykiLAorCQkJCQkgbXNndHlwZSwgbXNnLT5sZW4pOworCQkJfQorCX0KK30K KworLyoKKyAqIEhhbmRsZSBhbnkgcXVldWVkIHByb3RvY29sIG1lc3NhZ2VzIHJlY2VpdmVkIGZy b20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxBcHBs eU1lc3NhZ2VzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBtX2NvbnRleHQgPSBOVUxMOworCisJ LyoKKwkgKiBUaGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2lu Y2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1Jf SU5URVJSVVBUUygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2Fs bHMgaWYgbW9yZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuICBJdCdzCisJ ICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9l c24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sg aW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoK KwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxt b3N0IGFueXdoZXJlLiAgV2UKKwkgKiBkb24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGlu dG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGlu IGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLwor CWlmIChocG1fY29udGV4dCA9PSBOVUxMKQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhw bV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJ CQkJCQkJCSJIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQlBTExPQ1NF VF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4 dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsK KworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChsYywg UGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNp emUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyog U2tpcCBpZiB3b3JrZXIgaGFzIGV4aXRlZCAqLworCQlpZiAod2luZm8tPmVycm9yX21xX2hhbmRs ZSA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8t PmVycm9yX21xX2hhbmRsZSwgJm5ieXRlcywKKwkJCQkJCQkgJmRhdGEsIHRydWUpOworCisJCWlm IChyZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQkJYnJlYWs7CisJCWVsc2UgaWYgKHJlcyA9 PSBTSE1fTVFfU1VDQ0VTUykKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0 U3RyaW5nSW5mbygmbXNnKTsKKwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwg bmJ5dGVzKTsKKwkJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJ CXBmcmVlKG1zZy5kYXRhKTsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJ IGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkp OworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIE1pZ2h0 IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8KKwlNZW1vcnlDb250 ZXh0UmVzZXQoaHBtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKworLyoK KyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50LgorICoKKyAqIFdlIHNl dCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBmaXhlZCB3b3JrZXIgaW5mbwor ICogKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBl cnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFp bHVyZS4KKyAqLworc3RhdGljIGJvb2wKK3BhcmFsbGVsX2FwcGx5X3NldHVwX2RzbShQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXpl CQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCVBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1 ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNN X0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBt ZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNo b29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBt dXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25l IGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQg dHdvCisJICogb3RoZXIga2V5cyB0byB0cmFjayB0aGUgbG9jYXRpb25zIG9mIHRoZSBtZXNzYWdl IHF1ZXVlIGFuZCB0aGUgZXJyb3IKKwkgKiBtZXNzYWdlIHF1ZXVlLgorCSAqLworCXNobV90b2Nf aW5pdGlhbGl6ZV9lc3RpbWF0b3IoJmUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHNp emVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVu aygmZSwgcXVldWVfc2l6ZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgZXJyb3JfcXVl dWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDMpOworCXNlZ3NpemUgPSBz aG1fdG9jX2VzdGltYXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdt ZW50IGFuZCBlc3RhYmxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3Jl YXRlKHNobV90b2NfZXN0aW1hdGUoJmUpLCAwKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCXJldHVy biBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBT ZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0 b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZz aGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+aW5fcGFyYWxsZWxfYXBwbHlfeGFjdCA9IGZhbHNl OworCisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFy ZWQpOworCisJLyogU2V0IHVwIG1lc3NhZ2UgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEg PSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVf c2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsK KwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUu ICovCisJd2luZm8tPm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisK KwkvKiBTZXQgdXAgZXJyb3IgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFf Y3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9jLCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAg ZXJyb3JfcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9L RVlfRVJST1JfUVVFVUUsIG1xKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOwor CisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2ht X21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxl ci4gKi8KKwl3aW5mby0+ZHNtX3NlZyA9IHNlZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOwor CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIg cHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgaXQuCisgKi8KK3N0YXRpYyBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqCitwYXJhbGxlbF9hcHBseV9zZXR1cF93b3JrZXIodm9p ZCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKikgcGFsbG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKworCS8q IFNldHVwIHNoYXJlZCBtZW1vcnkuICovCisJaWYgKCFwYXJhbGxlbF9hcHBseV9zZXR1cF9kc20o d2luZm8pKQorCXsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJl ZSh3aW5mbyk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNoZWQgPSBsb2dpY2FscmVw X3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJ CQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJ CQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcpKTsKKworCWlmIChsYXVu Y2hlZCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9IGxhcHBlbmQoUGFyYWxsZWxB cHBseVdvcmtlcnNMaXN0LCB3aW5mbyk7CisJfQorCWVsc2UKKwl7CisJCXBhcmFsbGVsX2FwcGx5 X2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCisJCXdpbmZvID0gTlVMTDsKKwl9CisKKwlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd2luZm87Cit9CisKKy8q CisgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHZpYSBzaGFyZWQtbWVtb3J5IHF1ZXVlLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zZW5k X2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKKwkJCQkJ CSBjb25zdCB2b2lkICpkYXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0 ID0gc2htX21xX3NlbmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1 ZSk7CisKKwlpZiAocmVzdWx0ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIp KSk7Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcHJv Y2Vzc2VkIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4KKyAqLwordm9pZAorcGFyYWxs ZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKQoreworCWZvciAoOzspCisJeworCQlpZiAoIXBhcmFsbGVsX2FwcGx5X2dldF9pbl94YWN0 KHdpbmZvLT5zaGFyZWQpKQorCQkJYnJlYWs7CisKKwkJLyogSWYgYW55IHdvcmtlcnMgaGF2ZSBk aWVkLCB3ZSBoYXZlIGZhaWxlZC4gKi8KKwkJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPT0g TlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24g dG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxl ZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJIFdMX0xBVENIX1NFVCB8 IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIDEwMDBMLAorCQkJCQkJ IFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8q IFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0 Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJl IHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICog U2V0IHRoZSBpbl9wYXJhbGxlbF9hcHBseV94YWN0IGZsYWcgZm9yIHRoZSBnaXZlbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3NldF9pbl94YWN0KFBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkgICBib29sIGluX3hhY3Qp Cit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+aW5fcGFy YWxsZWxfYXBwbHlfeGFjdCA9IGluX3hhY3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5t dXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgZmxhZyBm b3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIGJvb2wKK3Bh cmFsbGVsX2FwcGx5X2dldF9pbl94YWN0KFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFy ZWQpCit7CisJYm9vbAkJaW5feGFjdDsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0 ZXgpOworCWluX3hhY3QgPSB3c2hhcmVkLT5pbl9wYXJhbGxlbF9hcHBseV94YWN0OworCVNwaW5M b2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIGluX3hhY3Q7Cit9CisKKy8q CisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaWYgbmVlZGVkLgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGZp Z3VyZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBzdGFydGVkIGJ5IGNoZWNr aW5nIGlmIHRoZSBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBhIGRpZmZlcmVudCB4aWQuIEluIHRo YXQKKyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIGFyZSBhYmxl IHRvIHJvbGxiYWNrIHRvIGl0CisgKiBpZiByZXF1aXJlZC4KKyAqLwordm9pZAorcGFyYWxsZWxf YXBwbHlfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rp b25JZCB0b3BfeGlkKQoreworCWlmIChjdXJyZW50X3hpZCAhPSB0b3BfeGlkICYmCisJCSFsaXN0 X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRl eHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQlwYXJhbGxlbF9hcHBs eV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJ CQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmlu ZyBzYXZlcG9pbnQgJXMgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkv KiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5U LiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlCZWdpblRyYW5zYWN0 aW9uQmxvY2soKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJRGVm aW5lU2F2ZXBvaW50KHNwbmFtZSk7CisKKwkJLyoKKwkJICogQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kIGlzIG5lZWRlZCB0byBzdGFydCBhIHN1YnRyYW5zYWN0aW9uIGFmdGVyCisJCSAqIGlzc3Vp bmcgYSBTQVZFUE9JTlQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sgKHNlZQorCQkgKiBTdGFy dFN1YlRyYW5zYWN0aW9uKCkpLgorCQkgKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCXN1 YnhhY3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlkKTsKKwkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQorCisvKgorICogSGFuZGxlIFNUUkVB TSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFy YWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc3RyZWFt X2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpCit7CisJVHJhbnNh Y3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBh Ym9ydF9kYXRhLT5zdWJ4aWQ7CisKKwkvKgorCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2Ug Y2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgorCSAqIGluIGNhc2Ug b2YgY3Jhc2guCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9k YXRhLT5hYm9ydF9sc247CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBh Ym9ydF9kYXRhLT5hYm9ydF90aW1lOworCisJLyoKKwkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRo ZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KKwkgKiBqdXN0 IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlmIChzdWJ4aWQgPT0geGlkKQorCXsKKwkJ cGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCisJCUFib3J0Q3VycmVudFRyYW5z YWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFu c2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9 CisKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCXBnc3RhdF9yZXBv cnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0 KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE9LLCBz byBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4KKwkJICoKKwkJICog V2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNl dCB0cmFja2VkCisJCSAqIGZvciB0aGUgc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0Lgor CQkgKi8KKwkJaW50CQkJaTsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJY2hhcgkJc3BuYW1l W01BWFBHUEFUSF07CisKKwkJcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3Jp cHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsCisJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsK KworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZlcG9pbnQgJXMgaW4gcGFyYWxs ZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4 YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJeworCQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1w ID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1YnhhY3RsaXN0LCBpKSk7CisKKwkJCWlmICh4 aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJCX0KKworCQlpZiAoZm91bmQpCisJCXsKKwkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3Bu YW1lKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJc3VieGFjdGxpc3QgPSBs aXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsgMSk7CisJCX0KKworCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwl9CisKKwlwYXJhbGxl bF9hcHBseV9zZXRfaW5feGFjdChNeVBhcmFsbGVsU2hhcmVkLCBmYWxzZSk7Cit9CisKKy8qCisg KiBGb3JtIHRoZSBzYXZlcG9pbnQgbmFtZSBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4K KyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgaW4gdGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLwordm9p ZAorcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25J ZCB4aWQsCisJCQkJCQkJICBjaGFyICpzcG5hbWUsIFNpemUgc3pzcCkKK3sKKwlzbnByaW50Zihz cG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30KKworLyogU2V0dXAg cmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfcmVw bG9yaWdpbl9zZXR1cCh2b2lkKQoreworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWNoYXIJCW9y aWdpbm5hbWVbTkFNRURBVEFMRU5dOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKworCS8q IFRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgY2FsbGVkIGluc2lkZSBvciBvdXRzaWRlIG9mIHRyYW5z YWN0aW9uLiAqLworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisKKwlzbnByaW50Zihv cmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0aW9uLT5v aWQpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsK KwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gPSBvcmlnaW5pZDsKKworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKK30KKworLyogUmVzZXQgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5n LiAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKQoreworCXJl cGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpOworCisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IEludmFsaWRSZXBPcmlnaW5JZDsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IElu dmFsaWRYTG9nUmVjUHRyOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0g MDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDJjYzBh YzkuLjMwMzU1N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpA QCAtNjUyLDkgKzY1MiwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2Vk LT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3Jk ZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVy Rm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAor CQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0K QEAgLTgyMiwxMCArODIzLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5u c3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwg cGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsK KwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0J CVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJl Y1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNv cmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0 aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYwppbmRleCAzYmJkNTIyLi44OTdkZDJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3IEBACiAKIGludAkJCW1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIg PSBOVUxMOwogCkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfbGF1bmNo ZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfY2xl YW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBzdGF0aWMg Ym9vbCBvbl9jb21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAgLTE1MSw4ICsxNTMs MTAgQEAgZ2V0X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBpcyBvbmx5IG5l ZWRlZCBmb3IgY2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0aGUgd29ya2Vy CiAgKiBmYWlscyB0byBhdHRhY2guCisgKgorICogUmV0dXJuIHdoZXRoZXIgdGhlIGF0dGFjaCB3 YXMgc3VjY2Vzc2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVw bGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAg IHVpbnQxNiBnZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhh bmRsZSkKQEAgLTE2OCwxMSArMTcyLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFj aChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVw V29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFz IHN0YXJ0ZWQ7IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIg ZGllZCBvciBoYXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29y a2VyLT5pbl91c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2lj YWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsK IAkJfQogCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg3LDcg KzE5MSw3IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIsCiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJ bG9naWNhbHJlcF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAog CQkvKgpAQCAtMjA5LDYgKzIxMyw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkg YW5kIHNlYXJjaGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24g aWQgYW5kIHJlbGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3Jr ZXIgKgogbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBv bmx5X3J1bm5pbmcpCkBAIC0yMjMsNiArMjI5LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQo T2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJl cFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFy YWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkK KwkJCWNvbnRpbnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYg dy0+cmVsaWQgPT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7 CkBAIC0yNTksMTEgKzI2OSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQs IGJvb2wgb25seV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwg aWYgcG9zc2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZh aWx1cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJp ZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9p ZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsK IAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFu ZGxlOwpAQCAtMjcyLDcgKzI4NCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRi aWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlz bG90ID0gMDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5j d29ya2VyczsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93 OworCWJvb2wJCWlzX3N1YndvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5W QUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHN1cHBvcnQgdGFibGUgc3luYyBp biBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vid29ya2VyICYmIE9pZElzVmFsaWQocmVs aWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5n IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAg LTM1MCw3ICszNjcsMjYgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5j d29ya2VycyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYXJhbGxlbF9h cHBseV93b3JrZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkgKiBSZXR1cm4gZmFsc2UgaWYgdGhl IG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlIGxpbWl0CisJICog cGVyIHN1YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfc3Vid29ya2VyICYmCisJCW5wYXJhbGxl bGFwcGx5d29ya2VycyA+PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uKQorCXsKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwkJZXJl cG9ydChMT0csCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VF REVEKSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyIpLAorCQkJ CSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLiIpKSk7CisKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAog CS8qCkBAIC0zNjQsNyArNDAwLDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05G SUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQg dG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1 cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4g Ki8KQEAgLTM3OSw2ICs0MTUsOCBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVM X1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPmFwcGx5X2xlYWRl cl9waWQgPSBpc19zdWJ3b3JrZXIgPyBNeVByb2NQaWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+ cGFyYWxsZWxfYXBwbHkgPSBpc19zdWJ3b3JrZXI7CiAJd29ya2VyLT5sYXN0X2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5kX3RpbWUp OwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAtMzk2LDE5 ICs0MzQsMzQgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElP TjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7 CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIp OwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29y a2VyTWFpbiIpOworCisJaWYgKGlzX3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5j dGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iKTsKKwllbHNl CisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29y a2VyTWFpbiIpOworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3 X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Ig c3Vic2NyaXB0aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3N1 YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAl dSIsIHN1YmlkKTsKIAllbHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwK IAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBz dWJpZCk7Ci0Jc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIiKTsKKworCWlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJndy5i Z3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2Vy Iik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlciIpOwogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVW RVJfUkVTVEFSVDsKIAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19t YWluX2FyZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfc3Vid29ya2VyKQorCQlt ZW1jcHkoYmd3LmJnd19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7 CisKIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5k bGUpKQogCXsKIAkJLyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdv cmtlciBzbG90LiAqLwpAQCAtNDIxLDExICs0NzQsMTEgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUo RVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQg b2YgYmFja2dyb3VuZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5l ZWQgdG8gaW5jcmVhc2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCi0J V2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hh bmRsZSk7CisJcmV0dXJuIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdl bmVyYXRpb24sIGJnd19oYW5kbGUpOwogfQogCiAvKgpAQCAtNDM2LDE5ICs0ODksNTMgQEAgdm9p ZAogbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIHsKIAlMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXI7Ci0JdWludDE2CQlnZW5lcmF0aW9uOwogCiAJTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAogCXdvcmtlciA9IGxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7CiAKLQkvKiBObyB3b3JrZXIs IG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCisJaWYgKHdvcmtlcikKIAl7Ci0JCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJCUFzc2VydCgh aXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikpOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9w X2ludGVybmFsKHdvcmtlcik7CiAJfQogCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBj b3JyZXNwb25kaW5nIHRvIHRoZSBpbnB1dCBzbG90IG51bWJlciwKKyAqIGFuZCB3YWl0IHVudGls IGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2Vy X3N0b3BfYnlfc2xvdChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNh bFJlcFdvcmtlciAqd29ya2VyOworCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKKworCXdvcmtlciA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3Rf bm9dOworCisJLyoKKwkgKiBPbmx5IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgZ2VuZXJhdGlvbiBt YXRjaGVzIGFuZCB0aGUgd29ya2VyIGlzIGFsaXZlLgorCSAqLworCWlmICh3b3JrZXItPmdlbmVy YXRpb24gPT0gZ2VuZXJhdGlvbiAmJiB3b3JrZXItPnByb2MpCisJCWxvZ2ljYWxyZXBfd29ya2Vy X3N0b3BfaW50ZXJuYWwod29ya2VyKTsKKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOworfQorCisvKgorICogV29ya2hvcnNlIGZvciBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KCksIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCgpIGFuZAorICogbG9naWNhbHJlcF93b3JrZXJf c3RvcF9ieV9zbG90KCkuIFN0b3AgdGhlIHdvcmtlciBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLgor ICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIpCit7CisJdWludDE2CQlnZW5lcmF0aW9uOworCisJQXNzZXJ0KExX TG9ja0hlbGRCeU1lSW5Nb2RlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpKTsKKwog CS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBj YW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKIAkgKiBpcyBzdGlsbCB0aGUgc2FtZSBvbmUuCkBAIC00 ODUsMTAgKzU3Miw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiAJCSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdvcmtlciBoYXMg dGFrZW4gdGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+ Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBoYXMgYXNzaWdu ZWQgcHJvYywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnByb2MpCkBAIC01 MjIsOCArNjA2LDYgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxp ZCkKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwog CX0KLQotCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQogCiAvKgpAQCAt NTk0LDExICs2NzYsMzIgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQog CiAvKgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgor ICogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhl IGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAq Lwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0 b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJ CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkJd29y a2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2FsUmVwV29ya2Vy ICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKGlzUGFyYWxs ZWxBcHBseVdvcmtlcih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcp OworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJfQorCiAJ LyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVw V29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIxLDYgKzcyNCw4IEBAIGxvZ2ljYWxy ZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQogCXdvcmtlci0+dXNl cmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXIt PnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBJbnZhbGlk UGlkOworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTY4MCw2 ICs3ODUsMzMgQEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCiB9CiAK IC8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBub3QgbmVjZXNzYXJp bHkgcnVubmluZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEgc3Vic2NyaXB0aW9u LgorICovCitpbnQKK2xvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KE9pZCBz dWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVs ZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNo ZWQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywgb25seSBjb3VudGluZyB0aG9zZSB3aGljaAorCSAq IGhhdmUgdGhlIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwg bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdv cmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9 PSBzdWJpZCAmJiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQlyZXMrKzsKKwl9CisKKwly ZXR1cm4gcmVzOworfQorCisvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1 dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CiAg Ki8KQEAgLTg2OCw3ICsxMDAwLDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQkJCXdhaXRfdGltZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQls b2dpY2FscmVwX3dvcmtlcl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAot CQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93 bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApAQCAt OTUxLDYgKzEwODMsMTAgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQpCiAJ CQljb250aW51ZTsKIAorCQkvKiBTa2lwIGlmIHRoaXMgaXMgcGFyYWxsZWwgYXBwbHkgd29ya2Vy ICovCisJCWlmICh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQorCQkJY29u dGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBd ID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzczNTgzYS4uMjZiZmMwZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDQgKzEsNSBAQAog YmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywKICAg J2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNlLi5hNmVmZGJhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTYzLDEwICsxMTYzLDE0IEBA IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBD b21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhl IG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1l IGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fi b3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxk cywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJh bnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1Jl Y1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLCBib29sIHdy aXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RS RUFNX0FCT1JUKTsKIApAQCAtMTE3NSwxOSArMTE3OSw0MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogdHJhbnNh Y3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwogCXBxX3NlbmRpbnQzMihvdXQs IHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfaW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2NChv dXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X3RpbWUpOworCX0KIH0K IAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgor ICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRydWUsIHRyeSB0byByZWFkIHRoZSBhYm9ydF9sc24g YW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCi1s b2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQg KnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnRE YXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbykKIHsKLQlBc3Nl cnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0X2RhdGEpOworCisJYWJvcnRfZGF0YS0+ eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9ydF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRt c2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9 IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJlYWRfYWJvcnRfaW5mbykKKwl7CisJCWFib3J0 X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJv cnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3Rp bWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggMDNkOWM5Yy4uOTRiZmM2NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MzksNyArMjgz OSw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jl b3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODUwLDYgKzI4NTEsOCBAQCBSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikK IAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3Rp bWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkg dGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFt ZWQodHhuKSkKIAl7CkBAIC0yOTI0LDcgKzI5MjcsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRv IHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5Lgog ICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVz dGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTM1 LDYgKzI5MzksOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1 cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUg YWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJv cnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCmluZGV4IDllNTJmYzQuLjgyZTUwMTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNjA5LDcgKzYwOSw4IEBAIHByb2Nlc3Nfc3luY2lu Z190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkg TXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwK IAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSBy c3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJ IERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5v dzsKIAkJCQkJfQogCQkJCX0KQEAgLTYzMCw2ICs2MzEsOSBAQCBwcm9jZXNzX3N5bmNpbmdfdGFi bGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkK IAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMjA3YTU4MC4uMmU1 NTA5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4 ICsyMiw1NCBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2Vl ZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQg aW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1w b3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1p dCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBw cm9hY2hlczoKKyAqCisgKiAxKSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogSWYgc3Ry ZWFtaW5nID0gcGFyYWxsZWwsIHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIg KGlmCisgKiBhdmFpbGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0gaXMg cmVjZWl2ZWQuIFRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciB3aWxsIHNlbmQgY2hhbmdlcyB0 byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcworICogd29y a2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQg YWxzbyB3YWl0IGZvcgorICogdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHBy ZXNlcnZlcyBjb21taXQgb3JkZXJpbmcgYW5kIGF2b2lkcworICogZmlsZSBJL08gaW4gbW9zdCBj YXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCB0byBhIGZpbGUgaWYgdGhlcmUgaXMgbm8KKyAq IHdvcmtlciBhdmFpbGFibGUuIEl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3Jk ZXIgdG8gYXZvaWQgZmFpbHVyZXMKKyAqIGR1ZSB0byAoYSkgdHJhbnNhY3Rpb24gZGVwZW5kZW5j aWVzLCBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93IGluIHRoZSBmaXJzdAorICogdHJhbnNhY3Rpb24g YW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIHRoZW4gYWxsb3dpbmcgdG8g YXBwbHkKKyAqIGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBpbiB0aGUgdXBk YXRlLiAoYikgZGVhZGxvY2tzLCBhbGxvd2luZworICogdHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRl IHRoZSBzYW1lIHNldCBvZiByb3dzL3RhYmxlcyBpbiBvcHBvc2l0ZSBvcmRlciB0byBiZQorICog YXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBkZWFkbG9ja3MuCisgKgorICogV2UgbWFp bnRhaW4gYSB3b3JrZXIgcG9vbCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVhY2gg c3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBpbmZv cm1hdGlvbiBpbiB0aGUKKyAqIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gQWZ0ZXIgc3VjY2Vz c2Z1bGx5IGxhdW5jaGluZyBhIG5ldyB3b3JrZXIsIGl0cworICogaW5mb3JtYXRpb24gaXMgYWRk ZWQgdG8gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdC4gT25jZSB0aGUgd29ya2VyCisgKiBm aW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24sIHdlIG1hcmsgaXQgYXZhaWxhYmxlIGZv ciByZS11c2UuIE5vdywKKyAqIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2UgY2hlY2sKKyAqIHRoZSBsaXN0IGZvciBhbnkg YXZhaWxhYmxlIHdvcmtlci4gTm90ZSB0aGF0IHdlIG1haW50YWluIGEgbWF4aW11bSBvZiBoYWxm CisgKiB0aGUgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3Jr ZXJzIGluIHRoZSBwb29sIGFuZAorICogYWZ0ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdv cmtlciBhZnRlciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uIFRoaXMKKyAqIHdvcmtlciBwb29s IHRocmVzaG9sZCBpcyBhIGJpdCBhcmJpdHJhcnkgYW5kIHdlIGNhbiBwcm92aWRlIGEgZ3VjIGZv ciB0aGlzCisgKiBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVkLgorICoKKyAqIFRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIHNlcGFyYXRlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXJ0cy4gVGhlIHJl YXNvbiBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fubm90IGNvdW50IGhvdyBtYW55 IHdvcmtlcnMgd2lsbCBiZSBzdGFydGVkLiBJdCBtYXkgYmUgcG9zc2libGUgdG8KKyAqIGFsbG9j YXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9uZSBzZWdtZW50IGJhc2VkIG9uIHRoZSBtYXhp bXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyAobWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiksIGJ1dCB0aGlzCisgKiBtYXkgd2FzdGUgc29t ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxseSBzdGFydGVkLgorICoKKyAqIFRoZSBk eW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCB3aWxsIGNvbnRhaW4gKGEpIGEgc2htX21xIHRo YXQgY2FuIGJlCisgKiB1c2VkIHRvIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rpb24gZnJv bSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgKGIpIGFu b3RoZXIgc2htX21xIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlcgor ICogbWVzc2FnZXMgcmVwb3J0ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHRvIGxlYWRlcgorICogYXBwbHkgd29ya2VyIChjKSBuZWNlc3NhcnkgaW5m b3JtYXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGFu ZCBsZWFkZXIgYXBwbHkgd29ya2VyIChpLmUuIGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgZmxhZyBh bmQgdGhlCisgKiBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdCBpbmZvcm1hdGlv bikuCisgKgorICogSW4gY2FzZSwgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBoYW5kbGUgdGhl IHN0cmVhbWVkIHRyYW5zYWN0aW9uLCB3ZQorICogZm9sbG93IGFwcHJvYWNoIDIuCisgKgorICog MikgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21t aXQgYXJyaXZlcwogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNl LCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRz IG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRo aXMKQEAgLTIxOSwyMCArMjY1LDM1IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXhlY3V0aW9uRGF0 YQogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlOwkvKiBwYXJ0aXRpb24gcm91dGluZyBp bmZvICovCiB9IEFwcGx5RXhlY3V0aW9uRGF0YTsKIAotLyogU3RydWN0IGZvciBzYXZpbmcgYW5k IHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCi10eXBlZGVmIHN0cnVj dCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKKy8qCisgKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0 aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVSX0FQUExZIG1lYW5zIHRoYXQgd2Ug YXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzCisgKiBvZiB0aGUgdHJh bnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgaW4gdGhlIHdvcmtlci4KKyAqCisgKiBUUkFO U19MRUFERVJfU0VSSUFMSVpFIG1lYW5zIHRoYXQgd2UgYXJlIGluIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIGNoYW5nZXMKKyAqIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhl biBhcHBsaWVkIHdoZW4gdGhlIGZpbmFsIGNvbW1pdAorICogYXJyaXZlcy4KKyAqCisgKiBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTCBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlcgorICogYW5kIG5lZWQgdG8gc2VuZCB0aGUgY2hhbmdlcyB0byB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5TX1BBUkFMTEVMX0FQUExZIG1lYW5zIHRo YXQgd2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kCisgKiBjaGFuZ2VzIG9m IHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBpbiB0aGUgd29ya2VyLgorICov Cit0eXBlZGVmIGVudW0KIHsKLQlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGlu dmFsaWQgKi8KLQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKwkvKiBUaGUgYWN0aW9uIGZv ciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCiAK LQkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRudW07CS8q IC0xIGlmIGludmFsaWQgKi8KLQlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExvZ1JlY1B0 cglmaW5pc2hfbHNuOwotCWNoYXIJICAgKm9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9yQ2FsbGJh Y2tBcmc7CisJLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFO U19MRUFERVJfU0VSSUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAorCVRS QU5TX1BBUkFMTEVMX0FQUExZCit9IFRyYW5zQXBwbHlBY3Rpb247CiAKLXN0YXRpYyBBcHBseUVy cm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KKy8qIGVycmNvbnRleHQg dHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLApAQCAtMjQyLDcgKzMwMyw5IEBA IHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0K IAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGljIE1lbW9yeUNvbnRleHQgQXBwbHlN ZXNzYWdlQ29udGV4dCA9IE5VTEw7CitFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3Jf Y29udGV4dF9zdGFjayA9IE5VTEw7CisKK01lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4 dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7CiAKIC8qIHBlciBz dHJlYW0gY29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpAQCAtMjUxLDcgKzMx NCw3IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0ID0gTlVM TDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiAKIFN1 YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3RhdGljIGJvb2wgTXlTdWJzY3Jp cHRpb25WYWxpZCA9IGZhbHNlOworYm9vbAkJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwog CiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRy IHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTI2MiwxNiArMzI1LDI0 IEBAIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMg VHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCisg KiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgc2VudCB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGR1 cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4KKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdl cyA9IDA7CisKKy8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9u IGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24g aWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tp cGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBp dCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBp ZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24K LSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5n IHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29s aW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBj aGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFu ZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAq IHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFu Z2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tp cHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rp b24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBs c24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5u b3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIGJlY2F1c2Ugd2UgY2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZv cmUKKyAqIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lw X3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGlu Z19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5p c2hfbHNuKSkpCkBAIC0zMjUsOSArMzk2LDYgQEAgc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbih2b2lkKTsKIAogc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0 ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGlu Zm8sCkBAIC0zNjAsMTAgKzQyOCwxMiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5n ZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1Jl Y1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFj ayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRp YyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKKwogLyoKICAqIFNob3VsZCB0aGlzIHdv cmtlciBhcHBseSBjaGFuZ2VzIGZvciBnaXZlbiByZWxhdGlvbi4KICAqCkBAIC0zNzYsMTIgKzQ0 NiwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KHZvaWQpOwogICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0 IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nl c3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFw cGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3 b3JrZXIsIHdlIGRpc2FsbG93IGFwcGx5aW5nIGNoYW5nZXMgb24gYSB0YWJsZSB0aGF0IGlzIG5v dCBpbgorICogdGhlIFJFQURZIHN0YXRlLCBiZWNhdXNlIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhl ciB0byBhcHBseSB0aGUgY2hhbmdlIGFzIHdlCisgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9s c24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGlzIGluIHBhcmFs bGVsX2FwcGx5X2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25pbmcgdGhlCisgKiBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIHdvcmtlciwgYnV0IGl0IGFsc28gbmVlZHMgdG8g YmUKKyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4ZWN1dGVzIEFMVEVSIFNV QlNDUklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElDQVRJT04gaW4gcGFyYWxsZWwsIHRoZSBu ZXcgdGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAqIHdoaWxlIGFw cGx5aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyBib29sCiBzaG91bGRfYXBwbHlf Y2hhbmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogewogCWlmIChhbV90 YWJsZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkID09 IHJlbC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkp CisJeworCQlpZiAocmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcnMg Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IiwKKwkJCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVw bGljYXRpb24gdHJhbnNhY3Rpb24gdXNpbmcgcGFyYWxsZWwgIgorCQkJCQkJCSAgICJhcHBseSB3 b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVy biB0cnVlOworCX0KIAllbHNlCiAJCXJldHVybiAocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVf UkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfU1lOQ0RPTkUgJiYKQEAg LTQyNyw0MyArNTE5LDg3IEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVwKHZvaWQpCiB9CiAKIC8qCi0g KiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFuZGxlIHN0cmVhbWVkIHRyYW5z YWN0aW9ucyBmb3IgYm90aCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs CisgKiBhcHBseSB3b3JrZXJzLgogICoKLSAqIElmIGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZp bmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJl Y3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICog SW4gc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0 aW9uKSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEg ZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VC U1RSRUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gcGFyYWxsZWwKKyAqIGFw cGx5IHdvcmtlcnMgKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0df VFlQRSBjaGFuZ2VzCisgKiB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzKS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9y IHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgor ICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgZmFsc2UuCisgKiBGb3Ig c3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIHRydWUgaWYgaW4gbGVhZGVyIGFwcGx5IHdv cmtlciwgZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAqCisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNz YWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExP R0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVk cyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGlj IGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rp b24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklk IGN1cnJlbnRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwor CWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwg JndpbmZvKTsKIAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwotCWlmICghaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pCisJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkp CiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0 KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRo ZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50 KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFu c2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVu dF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xf VklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElE IGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUg bmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3Vi eGFjdF9pbmZvX2FkZCh4aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBU UkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKKwor CQkJLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRo ZXJlKS4gKi8KKwkJCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOwogCi0JLyogd3JpdGUg dGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShh Y3Rpb24sIHMpOworCQkJLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICov CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQlyZXR1cm4gdHJ1ZTsKIAot CXJldHVybiB0cnVlOworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJ QXNzZXJ0KHdpbmZvKTsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpOworCQkJbmNoYW5nZXMgKz0gMTsKKworCQkJLyoKKwkJCSAqIFhYWCBUaGUg cHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxhdGlvbi90eXBlIHVwZGF0ZQor CQkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1 cGRhdGUgdGhlCisJCQkgKiByZWxhdGlvbi90eXBlIGluIGxlYWRlciBhcHBseSB3b3JrZXIgaGVy ZS4gU2VlIGZ1bmN0aW9uCisJCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkJICovCisJ CQlpZiAoYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkJCWFjdGlvbiA9 PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSkKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQlyZXR1cm4gdHJ1 ZTsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJLyogRGVmaW5lIGEgc2F2ZXBv aW50IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQkJcGFyYWxsZWxfYXBwbHlfc3RhcnRf c3VidHJhbnMoY3VycmVudF94aWQsIHN0cmVhbV94aWQpOworCQkJcmV0dXJuIGZhbHNlOworCisJ CWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwkJLyogc2lsZW5j ZSBjb21waWxlciB3YXJuaW5nICovCisJfQogfQogCiAvKgpAQCAtODk5LDggKzEwMzUsMTEgQEAg YXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAq cHJlcGFyZV9kYXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8g YmFsYW5jZSB0aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFBy ZXBhcmVUcmFuc2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9j aygpOwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNl ZGluZyBCZWdpbiBjb21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJewor CQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoK IAkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9t IGNvcnJlY3QgcG9zaXRpb24KQEAgLTk2OSw2ICsxMTA4LDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJFRCBvZiBh IHByZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHdlIGRv bid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4g YQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBCZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSB3YWl0 ZWQgZm9yIHRoZSBwcmVwYXJlIHRvCisgKiBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9w cmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZSBvcGVyYXRpb25zCisgKiBpbiB0aGF0 IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIgYW5kIG5vIGNvbmN1 cnJlbnQKKyAqIHRyYW5zYWN0aW9uIGNhbiBjcmVhdGUgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24g ZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfY29tbWl0 X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwMTIsNiArMTE1NywxMiBAQCBhcHBseV9oYW5k bGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIFJPTExC QUNLIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBUUkFOU0FDVElPTi4KKyAqCisg KiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9u IHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEJlY2F1c2Ugd2Ug aGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUgdG8KKyAqIGZpbmlzaCBpbiBhcHBs eV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlIG9wZXJh dGlvbnMKKyAqIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2Ny aWJlciBhbmQgbm8gY29uY3VycmVudAorICogdHJhbnNhY3Rpb24gY2FuIGNyZWF0ZSBkZWFkbG9j ayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDY1LDE1ICsx MjE2LDEzIEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAK IC8qCiAgKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4gdHdvIHBh cnRzOgotICogMS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAyLiBNYXJr IHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFu ZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRU eG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSBO VUxMOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVk X3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTA4OSwyNCArMTIzOCw4MiBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAK LQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9u ICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJl cGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5 X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMg YmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVk IG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJ CQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAotCWluX3JlbW90ZV90cmFuc2Fj dGlvbiA9IGZhbHNlOworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHByZXBhcmVfZGF0YS54aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBUaGUgb3Jp Z2luIGNhbiBiZSBhY3RpdmUgb25seSBpbiBvbmUgcHJvY2Vzcy4gU2VlCisJCQkgKiBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdC4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdp bl9yZXNldCgpOworCisJCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRh dGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29y a2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkg KiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVu Y2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2Fp dF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9z ZXR1cCgpOworCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2luZm8sIHByZXBhcmVfZGF0 YS54aWQpOworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAotCS8qIHVubGlu ayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8K LQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJl X2RhdGEueGlkKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu KTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9u IGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBh cmVfZGF0YSk7CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7 CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3Qo TXlQYXJhbGxlbFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHBy b2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKwor CQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9y ZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVp bmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMo cHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE0NSwyNyArMTM1MiwyNSBAQCBhcHBseV9oYW5k bGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVz c2FnZS4KKyAqCisgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcgcGFpciBvZiB0aGUgU1RBUlQv U1RPUCBtZXNzYWdlcyB0byB0aGUgcGFyYWxsZWwKKyAqIHdvcmtlciBiZWNhdXNlIHVubGlrZSBh cHBseSB3b3JrZXIgaXQgd2lsbCBwcm9jZXNzIG9ubHkgb25lCisgKiB0cmFuc2FjdGlvbi1hdC1h LXRpbWUuIEhvd2V2ZXIsIGl0IGlzIG5vdCBjbGVhciB3aGV0aGVyIHRoYXQgaXMgd29ydGggdGhl CisgKiBlZmZvcnQgYmVjYXVzZSBpdCBpcyBzZW50IGFmdGVyIGxvZ2ljYWxfZGVjb2Rpbmdfd29y a19tZW0gY2hhbmdlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3Rh cnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlv bjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRl cm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3Rh cnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBi ZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVz eW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIg cHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9u IGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICog c3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7Ci0KLQkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBh IHJlbW90ZSB0cmFuc2FjdGlvbiAqLworCS8qIE5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBw cm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uLiAqLwogCWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uID0gdHJ1ZTsKIAogCS8qIGV4dHJhY3QgWElEIG9mIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rp b24gKi8KQEAgLTExNzksMzUgKzEzODQsNzggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChT dHJpbmdJbmZvIHMpCiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJ bnZhbGlkWExvZ1JlY1B0cik7CiAKIAkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0 cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZv ciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVy bWFuZW50Ci0JICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3Ry ZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQg Zm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBj b3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwg YnV0Ci0JICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQu CisJICogRm9yIHRoZSBmaXJzdCBzdHJlYW0gc3RhcnQsIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBm cmVlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlz IHRyYW5zYWN0aW9uLgogCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxl c2V0ID09IE5VTEwpCisJaWYgKGZpcnN0X3NlZ21lbnQpCisJCXBhcmFsbGVsX2FwcGx5X3N0YXJ0 X3dvcmtlcihzdHJlYW1feGlkKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9h cHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9u KQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklB TElaRToKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsK KwkJCS8qCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0 cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVu bGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJCSAqIHdoaWNoIGNhc2UgaXQgd2ls bCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJCQkgKiBtZXNzYWdlcy4g V2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLAorCQkJICog dXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8u CisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7Ci0JCUZpbGVT ZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQkJLyoKKwkJCSAq IEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0 LiBUaGlzCisJCQkgKiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhl IHdvcmtlciBzbyBjcmVhdGUgaXQKKwkJCSAqIGluIGEgcGVybWFuZW50IGNvbnRleHQuIFdlIGNy ZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0CisJCQkgKiBzdHJlYW1pbmcgbWVzc2FnZSBmcm9t IGFueSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMKKwkJCSAqIGFuZCBvdGhl ciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhCisJCQkgKiBm aWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0IHRoZW4gd2Ugd29u J3QgYmUKKwkJCSAqIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KKwkJCSAqLworCQkJ aWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkJCXsKKwkJ CQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKLQl9CisJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3Ry ZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJz dF9zZWdtZW50KTsKKwkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFs bG9jKHNpemVvZihGaWxlU2V0KSk7CisJCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVu dCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0J CXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQp OworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQogCi0JcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCS8qIE9wZW4gdGhlIHNwb29s IGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwogCi0JZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCS8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdt ZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwkJCWlmICghZmlyc3Rfc2VnbWVu dCkKKwkJCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJ CW5jaGFuZ2VzID0gMDsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBm b3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsK KwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlicmVhazsKKwor CQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9y ZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMjE2LDU4 ICsxNDY0LDc3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogc3Rh dGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiB7CisJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFw cGx5X2FjdGlvbjsKKwogCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBl cnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQi KSkpOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywg YW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAqIHN1YnhhY3RzIGZvciB0aGUgdG9w bGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCXN0cmVhbV9jbG9zZV9maWxlKCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2lu Zm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9T RVJJQUxJWkU6CiAKLQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUg Ki8KLQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCQkJLyoKKwkJCSAqIENsb3NlIHRo ZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplCisJCQkgKiBpbmZv cm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkJ ICovCisJCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3Ry ZWFtX3hpZCk7CisJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwogCi0JLyogQ29tbWl0IHRoZSBwZXIt c3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkv KiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJ c1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNl OworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwot CU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJCQkvKiBSZXNl dCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3Ry ZWFtaW5nQ29udGV4dCk7CisKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM OgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQllbG9nKERFQlVHMSwgImFwcGxpZWQgJXUgY2hhbmdl cyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rIiwgbmNoYW5nZXMpOworCisJCQlzdHJlYW1fYXBwbHlf d29ya2VyID0gTlVMTDsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBO VUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwkJCWJy ZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJ aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7 CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RS RUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQgdG8gZGlz ay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rp b25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4 aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50 ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwotCi0J bG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQogCS8qCiAJ ICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRv cGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXpl ZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFudXBf ZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsKIAkJ LyoKQEAgLTEyOTEsOCArMTU1OCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07 CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVj UHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCQlz dWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpAQCAtMTMx Nyw3ICsxNTgyLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJ CQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtMTM0MCw2ICsxNjA0LDk5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25fc3Rl cCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9CisKKy8qCisgKiBIYW5k bGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFu c2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7 CisJYm9vbAkJcmVhZF9hYm9ydF9pbmZvID0gZmFsc2U7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCWlm IChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RS RUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBXZSByZWNl aXZlIGFib3J0IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBjYW4gYXBwbHkgaW4gcGFyYWxsZWwu ICovCisJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpCisJCXJlYWRfYWJv cnRfaW5mbyA9IHRydWU7CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9y dF9kYXRhLCByZWFkX2Fib3J0X2luZm8pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3Vi eGlkID0gYWJvcnRfZGF0YS5zdWJ4aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN1YnhpZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2Fj dGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKworCQkJLyoKKwkJCSAq IFdlIGFyZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJl ZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJc2VyaWFsaXplX3N0cmVh bV9hYm9ydCh4aWQsIHN1YnhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJaWYgKHN1YnhpZCA9PSB4 aWQpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBUaGUgb3JpZ2luIGNhbiBiZSBhY3RpdmUgb25seSBp biBvbmUgcHJvY2Vzcy4gU2VlCisJCQkJICogYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQuCisJ CQkJICovCisJCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCQkJfQorCisJ CQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuICovCisJCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0 YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRo aXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZv aWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBk ZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNo KHdpbmZvKTsKKworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQl7CisJCQkJcGFyYWxsZWxfYXBw bHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCQkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdp bmZvLCB4aWQpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogU2V0IGluX3Bh cmFsbGVsX2FwcGx5X3hhY3QgdG8gdHJ1ZSBhZ2FpbiBhcyB3ZSBvbmx5IGFib3J0ZWQKKwkJCQkg KiB0aGUgc3VidHJhbnNhY3Rpb24gYW5kIHRoZSB0b3AgdHJhbnNhY3Rpb24gaXMgc3RpbGwgaW4K KwkJCQkgKiBwcm9ncmVzcy4KKwkJCQkgKi8KKwkJCQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFj dCh3aW5mby0+c2hhcmVkLCB0cnVlKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf UEFSQUxMRUxfQVBQTFk6CisJCQlwYXJhbGxlbF9hcHBseV9zdHJlYW1fYWJvcnQoJmFib3J0X2Rh dGEpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0 aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0 KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5m bygpOwogfQpAQCAtMTQ3MSw2ICsxODI4LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQo U3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXRE YXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNDgwLDE0ICsxODM5LDc5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBw bHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAK LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJ c3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6 CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKgor CQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVw bGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBs eV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKLQkvKiB1bmxpbmsgdGhl IGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJLyog VW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZv LiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6 CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogV2UgbmVlZCB0byByZXNldCB0aGUg cmVwbGljYXRpb24gb3JpZ2luIGJlZm9yZSBzZW5kaW5nIHRoZQorCQkJICogY29tbWl0IG1lc3Nh Z2UgYW5kIHNldCBpdCB1cCBhZ2FpbiBhZnRlciBjb25maXJtaW5nIHRoYXQKKwkJCSAqIHBhcmFs bGVsIHdvcmtlciBoYXMgcHJvY2Vzc2VkIHRoZSBtZXNzYWdlLiBUaGlzIGlzIHJlcXVpcmVkCisJ CQkgKiBiZWNhdXNlIG9yaWdpbiBjYW4gYmUgYWN0aXZlIG9ubHkgaW4gb25lIHByb2Nlc3MgYXQt YS10aW1lLgorCQkJICovCisJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisK KwkJCS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuICovCisJCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2gu IFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2gg YXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkg KiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmlu aXNoKHdpbmZvKTsKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKworCQkJ cGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1p dF9kYXRhLmVuZF9sc24pOworCQkJc3RvcF9za2lwcGluZ19jaGFuZ2VzKCk7CisKKwkJCXBhcmFs bGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCisJCQkvKgorCQkJICogVGhlIHRy YW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhl CisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9s c24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCisJ CQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCXBhcmFs bGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsKKworCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0 KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFj dChNeVBhcmFsbGVsU2hhcmVkLCBmYWxzZSk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQg cHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQiKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQogCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwpAQCAtMTUz MSw2ICsxOTU1LDEzIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENv bW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVz dGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJRW5kVHJhbnNh Y3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQor CiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkJc3RvcmVfZmx1c2hfcG9zaXRpb24o Y29tbWl0X2RhdGEtPmVuZF9sc24pOwpAQCAtMjQ2OCw3ICsyODk5LDcgQEAgYXBwbHlfaGFuZGxl X3RydW5jYXRlKFN0cmluZ0luZm8gcykKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3Rv Y29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rp c3BhdGNoKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9n ZXRtc2dieXRlKHMpOwpAQCAtMjYzNyw2ICszMDY4LDEwIEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9u KFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIHsKIAlGbHVzaFBvc2l0aW9uICpmbHVzaHBvczsKIAor CS8qIFNraXAgaWYgbm90IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyICovCisJaWYgKGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4g cGVybWFuZW50IGNvbnRleHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKIApAQCAtMjcwMSw2ICszMTM2LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRy IGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxs YmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJy b3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRl cyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0yOTE1LDYgKzMzNTEsNyBAQCBMb2dp Y2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0aGUg ZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFj ay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9z dGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBXb3Jr ZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTM1NzAsMzcgKzQwMDcsMTYgQEAgc3RhcnRfYXBwbHko WExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0vKiBMb2dp Y2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAqIFRoZSBj b21tb24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9u LCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25z LgorICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXpl QXBwbHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIo bWFpbl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFN RURBVEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQ dHI7Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBv cHRpb25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8K LQlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2ln bmFsIGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmln UmVsb2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJs b2NrU2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVz b3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwg d2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwot Ci0JLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90 aW1lID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVz dGFtcCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9h ZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Eg c2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9y ZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY2MCwxMiArNDA3Niw1MCBAQCBBcHBs eVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKIAkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkp KSk7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCWVyZXBvcnQoTE9H LAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0 YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIg ZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sK KwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9y aWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52 YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7CisJV2FsUmN2U3Ry ZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJLyogQXR0YWNo IHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJ LyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91 bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkg bmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAorCSAq IGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBo ZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwor CU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXIt Pmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rp b25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCisJSW5pdGlh bGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmlnaW4gYW5kIHN0YXJ0 IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlz aGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzUyLDEzICs0MjA2LDI2 IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0g d2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMu cHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAw ID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2 ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05f TlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1 YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRp b24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3Jp cHRpb24tPnN0cmVhbTsKKworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlT dWJzY3JpcHRpb24tPnN0cmVhbSA9PSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gcHN0cmR1cCgicGFyYWxsZWwiKTsKKwkJTXlMb2dp Y2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZl cl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VC U1RSRUFNX09GRikKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZyA9IHBzdHJkdXAo Im9uIik7CisJZWxzZQorCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTlVMTDsK KwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJv dG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBA IC0zODU2LDYgKzQzMjMsMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiB9CiAKIC8qCisgKiBJ cyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQorewor CXJldHVybiBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNr aXBwaW5nIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hl cyB0aGUKICAqIExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpA QCAtMzkxNyw3ICs0MzkzLDggQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQ dHIgZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5z a2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1Jl Y1B0cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFs aWQobXlza2lwbHNuKSkgfHwKKwkJYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVy bjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTg5LDcgKzQ0NjYsNyBAQCBj bGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAv KiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFu Z2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxi YWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBs eV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDE3LDIzICs0NDk0LDQ3IEBAIGFwcGx5X2Vycm9y X2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkg ICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVy cmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBc IiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNh Y3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1l LAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNO X0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgi cHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJp bmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwi JXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8l WCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3Nh Z2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu bnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAg ZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAot CQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJn LT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJ eworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQll cnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g XCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQg cmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+ b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNv bW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1v dGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wi IGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9u ICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAor CQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJ CSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJ ZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0 IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJ CQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2Vf dHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5u c3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1d LAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0 KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1 cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24g XCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVY LyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90 ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZP Uk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJh bnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwNTMs MyArNDU1NCwzNiBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBs eV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsK IH0KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFu c2FjdGlvbi4gKndpbmZvIGlzIGFzc2lnbmVkIHRvCisgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxs ZWwgd29ya2VyIGluZm8gKGlmIHRoZSBhY3Rpb24gaXMKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMKSwgb3RoZXJ3aXNlICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICovCitzdGF0 aWMgVHJhbnNBcHBseUFjdGlvbgorZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2Fj dGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8g PSBOVUxMOworCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJu IFRSQU5TX1BBUkFMTEVMX0FQUExZOworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rp b24pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hl Y2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVs IGFwcGx5CisJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdv cmtlci4KKwkgKi8KKwllbHNlIGlmICgoKndpbmZvID0gcGFyYWxsZWxfYXBwbHlfZmluZF93b3Jr ZXIoeGlkKSkpCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJ fQorCWVsc2UKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDJlY2FhNWIu Ljc2OTg0YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwpAQCAtMzY5LDcgKzM2OSw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlv bnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJl ZHVuZGFudCBvcHRpb25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRh dGEtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5n ID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjEsMjAg QEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBs dWdpbk9wdGlvbnMgKm9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQg dmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2lu IHN1cHBvcnRzIGl0LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRh LT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09GRikKIAkJCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7 Ci0JCWVsc2UgaWYgKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSkKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVB TV9PTiAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fVkVSU0lPTl9OVU0pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygicmVxdWVzdGVkIHBy b3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGln aGVyIiwKIAkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSkpKTsKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNU UkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVy cm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxl bCBzdHJlYW1pbmcgbW9kZSwgbmVlZCAlZCBvciBoaWdoZXIiLAorCQkJCQkJCWRhdGEtPnByb3Rv Y29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVN KSkpOwogCQllbHNlIGlmICghY3R4LT5zdHJlYW1pbmcpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTUxMyw3ICs1 MjAsNyBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0 cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiBEaXNhYmxlIHRoZSBzdHJlYW1pbmcgYW5kIHBy ZXBhcmVkIHRyYW5zYWN0aW9ucyBkdXJpbmcgdGhlIHNsb3QKIAkJICogaW5pdGlhbGl6YXRpb24g bW9kZS4KIAkJICovCi0JCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7CisJCWN0eC0+c3RyZWFtaW5n ID0gU1VCU1RSRUFNX09GRjsKIAkJY3R4LT50d29waGFzZSA9IGZhbHNlOwogCX0KIH0KQEAgLTE4 MzksNiArMTg0Niw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCVJlb3Jk ZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRh ICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJCXdyaXRlX2Fib3J0X2luZm8g PSAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAqIFRo ZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBz dHJlYW1lZApAQCAtMTg1Miw3ICsxODYxLDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVj dCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVk KHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9n aWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhp ZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlk LCB0eG4tPnhpZCwgYWJvcnRfbHNuLCB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lLCB3cml0ZV9h Ym9ydF9pbmZvKTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVw X3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKaW5kZXggMjFhOWZjMC4uOWNkNTQyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5j LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3Vz cjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9H X01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwog CisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQor CQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlD b25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDUzNTJkNWYuLmE3MzI1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAg LTMzNzksNiArMzM3OSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVt b3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7 CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFw cGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYwppbmRleCA5MmYyNGE2Li5jOTY2NDdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jCkBAIC0zODgsNiArMzg4LDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0 RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJU OgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWluc2VydCI7CiAJCQlicmVhazsK KwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgor CQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJy ZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1l ID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKaW5kZXggYWIzMTQwZi4uMDI5YjU1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfdGFibGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKQEAgLTI5NzQsNiArMjk3NCwxOCBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVO YW1lc0ludFtdID0KIAl9LAogCiAJeworCQl7Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklC RVJTLAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X3BhcmFs bGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tFTkRT LAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwg UEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1v dW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJv dGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCmluZGV4IDJhZTc2ZTUuLjY2MDNmMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dpY2Fs X3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3Nl cwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJ IyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmOGM0Y2I4Li5iNTdmNmM5IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTQ0ODAsNyArNDQ4MCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAg LTQ2MTcsOCArNDYxNywxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5h cnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9 IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJ aWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1 YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vi dHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCmluZGV4IDdiOTg3MTQuLjAxNmFmYmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaApAQCAtODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlv biw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JP VwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0 aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJv b2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJ Y2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gU2Vl CisJCQkJCQkJCSAqIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdv cGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0 LDcgKzEyNSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7 CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJ YmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4K IAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBz dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkv KiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBT ZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyog QWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxl b25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJ CQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcsNiAr MTM5LDIxIEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVjaWZp ZWQgb3JpZ2luICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5nIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09GRiAnZicKKwor LyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8g YSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIFNVQlNUUkVBTV9PTiAn dCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxp ZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2Rl ZmluZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1 YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVl U3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJz Y3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Rl ZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXggNTZkMmJiNi4uZjZi YTVmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAgLTE1NCw2ICsxNTQsNyBAQCBleHRlcm4gTGlz dCAqZGVmR2V0UXVhbGlmaWVkTmFtZShEZWZFbGVtICpkZWYpOwogZXh0ZXJuIFR5cGVOYW1lICpk ZWZHZXRUeXBlTmFtZShEZWZFbGVtICpkZWYpOwogZXh0ZXJuIGludAlkZWZHZXRUeXBlTGVuZ3Ro KERlZkVsZW0gKmRlZik7CiBleHRlcm4gTGlzdCAqZGVmR2V0U3RyaW5nTGlzdChEZWZFbGVtICpk ZWYpOworZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpOwogZXh0 ZXJuIHZvaWQgZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oRGVmRWxlbSAqZGVmZWwsIFBhcnNlU3Rh dGUgKnBzdGF0ZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiAKICNlbmRpZgkJCQkJCQkvKiBE RUZSRU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxh dW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRl eCBmMWUyODIxLi5kNTEzZWY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9s b2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9z eW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQg QXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApp bmRleCA3ZWFhNGM5Li4xZGE3YjAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFT RV9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1 cHBvcnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIElu dHJvZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExF TF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVyZSB3 ZSBzdXBwb3J0IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFyYWxs ZWwuCisgKiBJbnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9U T19NSU5fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVN IDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmlu ZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNB TFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJT SU9OX05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9O X05VTSA0CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxS RVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1l c3NhZ2UgdHlwZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJl cFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2Fs UmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2Nv bCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dp Y2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rp b25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRf dGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsK IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJ CQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMyBA QCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBv dXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJl cF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExvZ2lj YWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dy aXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJ CQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg c3VieGlkLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBU aW1lc3RhbXBUeiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9pbmZv KTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBp biwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJ CQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBf bWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkv KiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aAppbmRleCBjZDFiNmU4Li5kYzY4Y2Q4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oCkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNk ZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworZXh0ZXJuIFBH RExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRp bmc7CisKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRl cm4gdm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVy biBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFs bGVsQXBwbHlXb3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVz c2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlcyh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggMDIwMjc1NS4uM2MzMGRhOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9wZ291dHB1dC5oCkBAIC0yNiw3ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBHT3V0 cHV0RGF0YQogCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwogCUxpc3QJICAgKnB1YmxpY2F0 aW9uczsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWlu ZzsKIAlib29sCQltZXNzYWdlczsKIAlib29sCQl0d29fcGhhc2U7CiAJY2hhcgkgICAqb3JpZ2lu OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDAyYjU5YTEuLjE1 NDkxMTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2 ICszMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3Rh bXBUeiBjb21taXRfdGltZTsKIAkJVGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3Rh bXBUeiBhYm9ydF90aW1lOwogCX0JCQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjY0LDkgKzY2NSwx MSBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENo aWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSBUcmFu c2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJIFhMb2dS ZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7 CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0 X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJTZXRCYXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggOTMzOWYy OS4uN2U5MzBkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC0xODIs NyArMTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCXVpbnQzMgkJcHJvdG9fdmVyc2lvbjsJLyog TG9naWNhbCBwcm90b2NvbCB2ZXJzaW9uICovCiAJCQlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1l czsJLyogU3RyaW5nIGxpc3Qgb2YgcHVibGljYXRpb25zICovCiAJCQlib29sCQliaW5hcnk7IC8q IEFzayBwdWJsaXNoZXIgdG8gdXNlIGJpbmFyeSAqLwotCQkJYm9vbAkJc3RyZWFtaW5nOwkvKiBT dHJlYW1pbmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zICovCisJCQljaGFyCSAgICpzdHJlYW1pbmc7 CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8KIAkJCWJvb2wJCXR3b3BoYXNl OwkvKiBTdHJlYW1pbmcgb2YgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyBhdAogCQkJCQkJCQkJICog cHJlcGFyZSB0aW1lICovCiAJCQljaGFyCSAgICpvcmlnaW47IC8qIE9ubHkgcHVibGlzaCBkYXRh IG9yaWdpbmF0aW5nIGZyb20gdGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCmluZGV4IGY4MmJjNTEuLjMzZTYyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxl c2V0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1f bXEuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Nw aW4uaCIKIAogCkBAIC02MCw2ICs2NCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29y a2VyCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFtX2ZpbGVzZXQ7CiAKKwkvKgorCSAqIFBJRCBv ZiBsZWFkZXIgYXBwbHkgd29ya2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVs IGFwcGx5CisJICogd29ya2VyLCBJbnZhbGlkUGlkIG90aGVyd2lzZS4KKwkgKi8KKwlwaWRfdAkJ YXBwbHlfbGVhZGVyX3BpZDsKKworCS8qIEluZGljYXRlcyB3aGV0aGVyIGFwcGx5IGNhbiBiZSBw ZXJmb3JtZWQgcGFyYWxsZWxseS4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0 YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3Rp bWU7CkBAIC02OCw5ICs4MSw4MiBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJ VGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0 IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICov Cit0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNn VHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0 dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlY TG9nUmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJy b3JDYWxsYmFja0FyZzsKKworLyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBi ZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJz LgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xv Y2tfdAkJbXV0ZXg7CisKKwkvKgorCSAqIEZsYWcgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVy aW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBm YWxzZSBhZnRlciBoYW5kbGluZyB0aGUKKwkgKiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMg d2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsIHdhaXQgZm9yIGl0IHRvCisJICogYmVjb21lIGZh bHNlIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5n LgorCSAqIFNUUkVBTV9DT01NSVQvU1RSRUFNX0FCT1JUL1NUUkVBTV9QUkVQQVJFKS4KKwkgKi8K Kwlib29sCQlpbl9wYXJhbGxlbF9hcHBseV94YWN0OworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0 aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CQlsb2dp Y2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCisJaW50CQkJbG9naWNhbHJlcF93b3JrZXJfc2xv dF9ubzsKK30gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9u IHdoaWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8K K3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRs ZSAqbXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBtZXNz YWdlcyBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKwkgKiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlci4gTlVMTCBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZAorCSAq IGNsZWFubHkuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJZHNt X3NlZ21lbnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB3b3Jr ZXIgaXMgYXZhaWxhYmxlIHRvIGJlIHVzZWQgZm9yIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNh Y3Rpb24/CisJICovCisJYm9vbAkJaW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqc2hhcmVkOworfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkg Y29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGlt ZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAor ZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKwor ZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250 ZXh0X3N0YWNrOworZXh0ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBs eV9lcnJvcl9jYWxsYmFja19hcmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIE15U3Vic2Ny aXB0aW9uVmFsaWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICpNeVBhcmFsbGVsU2hhcmVkOworCitleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFj dGxpc3Q7CisKIC8qIGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1Q T1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAKQEAg LTc5LDE4ICsxNjUsMjIgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFN1YnNjcmlwdGlvbiAqTXlTdWJz Y3JpcHRpb247CiBleHRlcm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2Fs UmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJhbnNhY3Rp b247CitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9h cHBseV93b3JrZXI7CiAKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQg c2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChP aWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4 dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9y dW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwg T2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9p ZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQs IE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBP aWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50MTYg Z2VuZXJhdGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1 YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0 cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBfc3lu Y193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9wYXJhbGxl bF9hcHBseV93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25PcmlnaW5OYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJ CQkJICBjaGFyICpvcmlnaW5uYW1lLCBTaXplIHN6b3JnbmFtZSk7CkBAIC0xMDMsMTAgKzE5Myw1 MCBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVu dF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1 bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0 ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgSW5p dGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3Ig Y2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7 CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitl eHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQp OworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYXJhbGxlbF9hcHBseV9maW5kX3dv cmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zZXRf aW5feGFjdChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkJICAg Ym9vbCBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQg eGlkKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNoKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBs eV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywK KwkJCQkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBw bHlfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25J ZCB0b3BfeGlkKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dp Y2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVs X2FwcGx5X3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkg IGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3Jl cGxvcmlnaW5fc2V0dXAodm9pZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3Jp Z2luX3Jlc2V0KHZvaWQpOworCisjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIp ICh3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGlu ZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQo TXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1f bGVhZGVyX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5yZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dp Y2FsUmVwV29ya2VyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2lj YWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MC4uOTNhNTFmNCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJ R19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Ig c2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVy cnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8g bG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NB R0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNv dmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRB QkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2ZjJkNTYxLi5iMmNkZDU1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9F VkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19C VUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJ V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VW RU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NI QU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGVmMGViZjkuLjk5YjllODYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTIxNyw5ICsyMTcsOSBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAo MSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBz dHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9v bGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBD T05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3Rw dWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJl YW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJl cyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBz dHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwg eW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJ Q0FUSU9OIHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCkBAIC0yMzAsNiArMjMwLDE0IEBAIFdBUk5J Tkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxU RVIgU1VCU0NSSVBUSU9OIC4uCiAgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKK0FM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxl bCk7CitcZFJzKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcCAgICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKwogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxk UnMrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAppbmRleCA0NDI1ZmFmLi5lZDE0 OGU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE1Niw3ICsxNTYs NyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAt IHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBi b29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVz dHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBp dCB3b3JrcwpAQCAtMTY0LDYgKzE2NCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBc ZFJzKwogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5n ID0gcGFyYWxsZWwpOworCitcZFJzKworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDk3YzliYzEuLmViZTY4YzUgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0x NDcyLDYgKzE0NzIsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxSZXBSZWxNYXBFbnRyeQog TG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKK0xv Z2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURhdGEKIExvZ2ljYWxSZXBU eXAKIExvZ2ljYWxSZXBXb3JrZXIKQEAgLTE2NjMsNiArMTY2NCw5IEBAIE92ZXJyaWRlU3RhY2tF bnRyeQogT3ZlcnJpZGluZ0tpbmQKIFBBQ0VfSEVBREVSCiBQQUNMCitQYXJhbGxlbEFwcGx5V29y a2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCitQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkCiBQQVRICiBQQk9PTAogUEN0eHRIYW5kbGUKQEAgLTI3ODQsNiArMjc4OCw3IEBAIFRyYW5z YWN0aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNT dGF0ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFjdGlvbgogVHJnbUFyYwog VHJnbUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v35-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v35-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v35-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76277; creation-date="Tue, 27 Sep 2022 12:21:00 GMT"; modification-date="Tue, 27 Sep 2022 12:26:42 GMT" Content-Transfer-Encoding: base64 RnJvbSBjYjQ3NmE3ZjRiOGYwM2Q2MjkzNWQ4MWViMDNiMjYyYTUyMjY0NDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MzUg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAyMzIg KysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwg ICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRs LnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJl YW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0aW9u L3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTQgKysrKysrKysr LS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAg ICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTI1MiBpbnNl cnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKaW5kZXggY2JhYTMyNy4uNjVmNDNmMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNo IGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7CisJbXkgJG91dCA9ICcn OworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKwlteSAkaCA9ICRu b2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAk dGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFt ZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhh dCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMg YWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19w YXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJGluIC49 IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs IDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09N TUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNo OyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVy ZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwp OworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdjaGVjayBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgVGVzdCB0aGUgc3Ry ZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9uKSIp OworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ Q09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJ CSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hh bmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmli ZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFp bnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0 MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJh Y3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0 aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0 eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVy IG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9 PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0 ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04g dGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksODIgKzE5NiwyNSBAQCBt eSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCi1teSAkaW4gID0g Jyc7Ci1teSAkb3V0ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKLQotbXkgJGggPSAkbm9kZV9w dWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVy LAotCW9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewotQkVHSU47Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotfTsKLSRo LT5wdW1wX25iOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4gLj0gcXsKLUNPTU1JVDsKLVxx Ci19OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNv IGlnbm9yZSB0aGVtIGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVjayBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIFRlc3QgdGhl IHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24p Iik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQg dGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CiAKLSMgQ2hhbmdl IHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIs Ci0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0 aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1p bmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFu c2FjdGlvbi4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERB VEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGlu dGVydmFsICcxcyciCi0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIp OwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdp bmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJv bSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMo JHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRh aW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QuLjAyMGFkOTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw5NCBA QCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFs bGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZp bmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9 CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVs YXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUg cnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBj YXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0 ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdh cyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBs b29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRo ZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDApIHMoaSk7CisJ VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMxOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNTAxLCAxMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDE1MDApIHMoaSk7CisJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MTUwMSwgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK KwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBzKGkpOworCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2co JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQg PQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2 ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBu YW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWlu ZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygk cmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsICAxMDAw KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBz MjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwot Q09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVjayBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVs JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWlu ZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwog JG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAppbmRleCA4NjZmMTUxLi5kMmNjNDZk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4 LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworewor CW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkg JHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0 aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsK Kwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBj YW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJh bGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAk b2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRo IERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4 dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5U IHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7 CisJQ09NTUlUOworCX0pOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lm aWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBX ZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNv IGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJs b2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsK KwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMTsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJ IyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEs IDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6 dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2Zp bGU7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1M LiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhh dCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMg dGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2Fj dGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0 IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4g YWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlp cygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMs IERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhl IGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmli ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMg PSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3Jl YXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1 YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUn IFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3 ICsxODUsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxs IChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFE RCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkp OwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEg c21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEp OwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAw MiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5 OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3Ry ZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7 Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5k IERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUg dGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAot IyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9N IGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0 aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0j IHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBp biB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0 Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUp IHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQo ZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0 MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBi b3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRp bmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7 CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFj dF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbAppbmRleCA1NTFmMTZkLi43NTJlNzlhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxs ZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmlu aXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30K KworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxh dGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNh c2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQg PSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJh bGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2Fz IGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxv b2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhl CisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3 aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9M TEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0Owor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEs NDAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2NoZWNr IHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJz Y3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNL cworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lO OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7 CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOwor CX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2 aW5nIHJvbGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEs MTAwMDApIHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNj cmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJv bGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0 ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdw dWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7CkBAIC0zNiw2ICsxNzUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3Rf dGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBf cHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OCw4MSArMTkxLDI1IEBAIG15ICRy ZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1M IGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7 Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUw MSwzMDAwKSBzKGkpOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1T QVZFUE9JTlQgczU7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwK LQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJl ciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Yg b3JkZXIKLSMgc3VidHJhbnNhY3Rpb24gUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUw MCkgcyhpKTsKLVJFTEVBU0UgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNL IFRPIHMxOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQg d2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAw MCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOwotU0FWRVBP SU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0g ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdj aGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9x dWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19z dGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7 CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5z dG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4 YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwKaW5kZXggNGQ3ZGE4Mi4uOWQ2NzhiMyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBs CkBAIC05LDYgKzksOTEgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9n IHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxl bF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9 IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsK KwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywg JG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBz YW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJl YW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBf OworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K KwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkK Kwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAor CQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1 MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMDAxLDE1MDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElO VDsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBz MTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3Rl ZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEg PiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBs b2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVy LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0g d2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0 ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIg Rk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENP Tk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQ VUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSwzNSAr MTM4LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2Fz IGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5U OwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRF UiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBE Uk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMg cmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMy4uNDI2NWQzYiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAg LTExLDYgKzExLDIzOSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cg dGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkK KyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVs X2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkc3RyZWFtaW5nX21vZGUp ID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3Npbmcg dGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkc3RyZWFtaW5nX21vZGUg ZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBh cmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBu YW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOwor CW15ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24K KwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5v ZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2Rl X0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFw X3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0 IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBv bGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlk X0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAn JGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9x dWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJ IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBh cyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVt cCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFy YWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJs b2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9k ZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJ JG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQ QyBQUkVQQVJFCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKKworCSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0K KwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2Fz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJ J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5k IGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMz MzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwor CSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykK KwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9 CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNL IFRPIFNBVkVQT0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcg b25seSAyIHJvd3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEg U0FWRVBPSU5ULgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyBy b2xsYmFjayB0byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1 LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FW RVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBm cm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJz dCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9 IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9M TEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAi CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXIn KTsKKwkJU0FWRVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBP SU5UIHNwX2lubmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJ JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRv ZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlKTsKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywg JG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24g c3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOworCisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsK KworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIK KwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZSBhdCBzdWJzY3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0 aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2Jhcicp IHNob3VsZCBiZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29i YXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQg b24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQs IHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJ JHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFx KDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0 YQorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK Kwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJewor CQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX0MtPnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICMgU2V0dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2Rl X0IgLT4gbm9kZV9DCkBAIC0yNjAsMTYwICs0OTMsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAn Um93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNU UkVBTUlORyBURVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0g JG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcg PSBvbikKLQotJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MK LQlTRVQgKHN0cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZp bmlzaCBpbml0aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0 Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIK LQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFy dCI7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFS RSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFu c2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwg ZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJF UEFSRQotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf QS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9C LCAkYXBwbmFtZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBD T01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0 ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsK LSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVs dHMnCi0pOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3Vs dCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5ULgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkg MiByb3dzLgotIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9J TlQuCi0jIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09N TUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFi b3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSku Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2Rl X0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7Ci0KLSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lu bmVyOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBj aGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJl c3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l X0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAn dHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQg b24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJz Y3JpYmVyKHMpLgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9J TlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUg Y29tbWl0dGVkLgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QicpOwotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0 dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVy ZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFy ZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVz dWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycp OworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5h bWVfQiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwLi44MmI1ZTZjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgs NiArOCwzMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQg dGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJl cG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cK K3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOwor CW15ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNl dCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hp Y2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNv ZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9 cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJ bXkgJG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBU ZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1l ZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgor CSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBh ZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMg SWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBu ZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhl IERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQg dGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBh cmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMg MS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBv biBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBE byByb2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZp bmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2ls bCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9M TEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJ J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBv cmlnaW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVj ayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCBy ZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0 aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJl IHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMg RXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRo ZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFz aC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVz dF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRl Jyk7CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1Ymxp c2hlci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY29t bWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0 cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9y ZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJv d3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3Ry ZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNo IGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVE LgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyBy b3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhl IGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVH SU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7 fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24g c3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicp OworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2Yg dGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwg aG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0 ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMg MlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQg dGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVk IG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkj IERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4K KwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMg My4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJF LgorCSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRh dGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsg aW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5v dyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQ QyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5z ZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3Mg aW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRz JworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0 aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzUwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0 ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIz NiArMzcwLDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwog Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK IG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRl c3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQg YXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwot IyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIg dGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0j IGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgot JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdw YXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xk cGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBp cyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBw cmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9y aWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJz dCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQp Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAn dGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg YXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMg ZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhl biBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQu Ci0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBh bmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewot CUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7 fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlz aGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0 fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwot Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUg UFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxl dGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0j IDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJU IGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xM QkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZp bmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5z ZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRl bGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsK LQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNU SU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVw YXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBv dXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rp b24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3Ig YSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7 Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0 IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVk Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJU IGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJs ZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSBy b3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4g ZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSBy b3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1 KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUg b2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGls bCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFy YXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAy UEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwz MzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQp IGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFw cGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi43LjIu d2luZG93cy4xCgo= --_006_OS0PR01MB571620741B90C769D2727D7F94559OS0PR01MB5716jpnp_--