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 1mkPPf-0003g3-Kh for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Nov 2021 11:35:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mkPPe-0003Qg-Ia for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Nov 2021 11:35:38 +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 1mkPPd-0003QX-7g for pgsql-hackers@lists.postgresql.org; Tue, 09 Nov 2021 11:35:37 +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 1mkPPZ-00019N-3v for pgsql-hackers@lists.postgresql.org; Tue, 09 Nov 2021 11:35:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1636457733; x=1667993733; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=4RB3uMn+x6Chx3BTW5SvRyxGJVqDEPKg8TBKGCO4rIc=; b=igD66PSD/uewHSbrRbgOQJA0ZyJOYF7jDBkxx9O6rCFtI32MOJZEHIks Fn+4xd849MLbKlpT1WRWsGFbAhxa4wEqOUm68SuKUBt8J5OM0TStEzoFF S27geDkqm3LJgp2XWWcYgyutSuliIWiYUxSAF2sV+j+veocvdijnRWOJU aax6IbBxA5bsCiIoibuWPPeZadw3D+5FCtndIxYqkfb1qPRRZujIR7Kfu JjhBQxuP1fE3ixfjYB0vFqDxnp0L9MLxhK2C4ZtMBixoZ28uqAPkK5rfI 0Ihl4F9qn2otz0LxMGpy1YFUize7aLJ8ruhU0tFzU0Tsz4O8ZExRK1Cyr g==; X-IronPort-AV: E=McAfee;i="6200,9189,10162"; a="43093847" X-IronPort-AV: E=Sophos;i="5.87,220,1631545200"; d="scan'208,223";a="43093847" Received: from mail-os2jpn01lp2054.outbound.protection.outlook.com (HELO JPN01-OS2-obe.outbound.protection.outlook.com) ([104.47.92.54]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2021 20:35:27 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WmAofIeEEWdqKjF7Y/VWLs4awNIhY8VK5Qc5Osa7Vt3A3/Yv3HIonrGXKVRTI1Yk3xV3rwOrdba67b3JwD+SxRJF2D7jiH5JNKYWnIlX4Ri4fdjKKoAYXvRHkNpzwYZ/EPrrcNv24YnTLFVLnXpXqNzegr/CD3pp7TxP7d7DPFbuaPUX1aUrUmJmU4zNGq1BUTtQwrObKrRi/RjU4OTEjU8lL14OadpyOAqLG4hV7MeddwVboW7oqpu+wGK5EO0z4y3JjqaOaNmv93tiWrEprGrPe3OlgmaNzTKnN/O++FELAf5Xgj9asN1EuMunh6Urmxh8w/G2LHdn6cIuV5RMHQ== 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=QHklv58hlwCX8s103emEPG20P5qW79YEEYVIYefC8WU=; b=gERxm32I00YDbhOVoAbLtxpssepzBk9eV5jy5S/ryhumwKRemKcHf7g5eiixfCdGCpy/nnBmBGQ/I9LvBFe8PIm8crMXSBziZSEVcnSGKOh9gOKhAT2h3QUCQ6niQYJ46KgpE2h+YjRv43LmxOPp3hXKP8fbVBsA9/+6BecCX5XVXiTrcaHWvsRQVIOTsmllNF4fCcvEutPReSAj0R2VxsGiqFt3XWlU8M/sBxrgZ/inW6byGsj+LhO50f091Ih2dJ8ApvWh1bi+xHeyuyLUsK8r+bMQhq/6LOKK1z3yKUk8AUwmKUzKHodcc1FuHOAHjMnBzxF6oG3U7zLng6loJA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QHklv58hlwCX8s103emEPG20P5qW79YEEYVIYefC8WU=; b=ALHnlArMn4iUJZHparqcskHxhL0NNtWqu8qAZuq3VZ/P5UknsBW0GN/8vKEhT76kgneH6XIoqbYomhWMqI0/5kq2/o5gRAenneLxd8Zkt+WXU8bYjD9YuaRFB3VKibXu5/M4Ok2qOxeJE+6cyRQfn8RQ/MZaavQXJiilzmByWRM= Received: from TYCPR01MB8373.jpnprd01.prod.outlook.com (2603:1096:400:15f::9) by TYWPR01MB7401.jpnprd01.prod.outlook.com (2603:1096:400:c6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Tue, 9 Nov 2021 11:35:24 +0000 Received: from TYCPR01MB8373.jpnprd01.prod.outlook.com ([fe80::adb3:be1d:5bb2:45f5]) by TYCPR01MB8373.jpnprd01.prod.outlook.com ([fe80::adb3:be1d:5bb2:45f5%7]) with mapi id 15.20.4669.016; Tue, 9 Nov 2021 11:35:24 +0000 From: "osumi.takamichi@fujitsu.com" To: 'Greg Nancarrow' CC: Masahiko Sawada , Amit Kapila , "houzj.fnst@fujitsu.com" , "pgsql-hackers@lists.postgresql.org" Subject: RE: Failed transaction statistics to measure the logical replication progress Thread-Topic: Failed transaction statistics to measure the logical replication progress Thread-Index: AddzxbV4E8towJomTkm1trqmHwIwlgQVlICAANF/lUAAA/6ZgAAn+wOAAAWfTgAAB8XmAAAgvB4AAAU0KgAAB+7hgAAMXNsABZwy4NABa8QD4ADxViZAAZV2mrAA+6DXgAAsU7aAAAZiVQAAAnmZAAAIXu+AAFRfhZAAA/2jgAK/RTlAANYpygAAhIjngAF7IiwAAMcV0oAAfP65gABBZ2kgAL69AQAAEaPLYA== Date: Tue, 9 Nov 2021 11:35:24 +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?NTBfRW5hYmxlZD10cnVlOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJh?= =?utf-8?B?Yy1hYjRkLTNiMGY0ZmVjZTA1MF9TZXREYXRlPTIwMjEtMTEtMDlUMTE6MzU6?= =?utf-8?B?MjJaOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0?= =?utf-8?B?ZmVjZTA1MF9NZXRob2Q9U3RhbmRhcmQ7IE1TSVBfTGFiZWxfYTcyOTVjYzEt?= =?utf-8?B?ZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX05hbWU9RlVKSVRTVS1SRVNU?= =?utf-8?B?UklDVEVE4oCLOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9TaXRlSWQ9YTE5ZjEyMWQtODFlMS00ODU4LWE5ZDgt?= =?utf-8?B?NzM2ZTI2N2ZkNGM3OyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1h?= =?utf-8?B?YjRkLTNiMGY0ZmVjZTA1MF9BY3Rpb25JZD04MTI5N2FkNS03ZjcwLTRkM2Et?= =?utf-8?B?YmEyOC01ZjczOTg0MGFjNTY7IE1TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00?= =?utf-8?B?MmFjLWFiNGQtM2IwZjRmZWNlMDUwX0NvbnRlbnRCaXRzPTA=?= authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8582cddd-0a5c-4b33-d7ef-08d9a375053e x-ms-traffictypediagnostic: TYWPR01MB7401: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:883; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: huGD0JhLVZI+RVvGK9iFKoRm27z2mKwpHpg/HZeU08pQZCbXmCB1MrNhhn8IOhYZfb/EFAbVzKLU8kmXxNMmqdynwYcRAMKGGAWNVENjL36cgtmltLdnn8a8aXJJdj49AF2KbfsfEOi1hahpebiKDsj6QcmGJUTTG+dK2zJkMfzHEDzLMPu2Jl1Xi0qdD32pkQKjWfKXl3n14zJUtSxPWUnZ6vu/+X4VqHxS1izaLXOqcCso6sFhYxD164iK223b75UeEn5RSIWQNV8g1dtpvzy+0zYZOwnHpzU+mqC60B5YISp76qPpnOW+LI2oWKL5UrNWynLbpjCJhutNpg1bMQbes7HclqQMx6ivjFOuCMQFqnU4auvtPdTzEzpzWmXDS4CMcbj5As+vcfBWfI3ic5OLgMl7DnpewY5PIRNBWWIuyjhglHYNi/GLTQcjuD4W+TAtblTKrHaOonlOiWPvOb2AP1iXT5WbbVBfvphlwWQrKLuRFgmmwnAVLtpL6gyKU6v/MyXByNQ1pfTFKqugcSbMYVookUyyTbzOpekFrB/1SaeokpJ6bx6Nk7NGHwiUqbCGcUJhObGq0zAr1XOFfQfCbUVl6E0IMO/cHaV7FA3FsYAmox4PFF7JzYVq1bRa0jQe4YqISuLRVdb9cFLTbdLLcWjQfP6PwC62naKhzwKIqQnNR+ktwGscCxXY0+n4qqLwqfeGShnNFcs5acmm2A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB8373.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(6916009)(6506007)(55016002)(7696005)(54906003)(38100700002)(122000001)(316002)(9686003)(8676002)(71200400001)(5660300002)(4326008)(85182001)(66476007)(2906002)(52536014)(83380400001)(53546011)(66946007)(508600001)(33656002)(99936003)(82960400001)(76116006)(38070700005)(86362001)(186003)(64756008)(26005)(66556008)(66446008)(8936002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eVFsdDFDZURzRVRMT09Lb1Azbkt5WmhpekFYRHlHREx0TjU1ejdjb3dSYmtu?= =?utf-8?B?TGtKWXR4V09Oa1lNelh0TGNKM2lrcFZ2bU5yemlJU2FCcXNYR3R4elVNRGVS?= =?utf-8?B?eUhzQ3pRbGxzMlZlSHMzRXFxUE1IdFhhYW9zcXZVeVpzMFRUa1R2Z2JMNVYv?= =?utf-8?B?VGdyNCtteXZjblpBWXA2YksrZHhIdWxSanJ6YktXK001UlVZd2c3bjhLdlor?= =?utf-8?B?Qkp2b0FROHNQR3d0Q0czVmIxckEwUkZVK0h1LzAyNC8vRnVQd0ZoUko0amZY?= =?utf-8?B?SDViaGtDdEFqNTlKUlcrV2hwMHRrYml2R2RhY0ROSUNTWjNIaHNqYTFlQmZ2?= =?utf-8?B?WGNsL1J3Yll3alJyRzJTVFZXRm00OGtPM3hJdG5JaEUrc0JGM2FWQ1djaEp0?= =?utf-8?B?VlNYcngrTHBuaENlV1VYcWRON01WeEVJekt4SDhMdmFQSURvbEtDbnZnTHBB?= =?utf-8?B?M1FPUTRFWTgvamZkaWlORE1mcUZQMk0zM1IwOVlPRDB2bUFJMVpkbFdLZDhO?= =?utf-8?B?L1JUZ2JGeE9VSnA5QnA4UFk4YWYzOWNCOWUzd2lxY2xIMXFJNDRqaTdYYWhR?= =?utf-8?B?djFLclA5YldJUHRZYlQvNmV5SzBvOTgwN0MvY3BaMXpvdTRCMFl0VW9ndFhq?= =?utf-8?B?Q0c3NlpPWlpvTkZwMkE3dDV6b3QwU0ZpekJuZ3R3d2FHejJ2eTdFakJZZHlI?= =?utf-8?B?R2J1b1JMR2tYb1UwV2gzSzZXazJxV1dZa2UwQmgrc2ZxNHJJOElXOGlOWkR2?= =?utf-8?B?OUtBVFd2RzJ4OGxCTm9sbGl2QnMydEZtaG5nUm1yaFUwMkNxMWNWYmZzUWFt?= =?utf-8?B?RlZYN0hkL1lBeHRCdVpOSTVjWUdmWGVjajd2Ynhka09lVSs4UVhsNnNhcGVO?= =?utf-8?B?SkE4L0hVc2Nud1BFenE2emxXcmFwOVR1N1RNTHlHcVp2SmgwM2JFbFJUSklZ?= =?utf-8?B?R3VBNGNEMjViUjNiWk9DUm1IY0hZdER0MHRWeW5ZY0RDUWtyN2Y1MWQrWnQz?= =?utf-8?B?VXBvWXcrcFB3dno3dUJlTlp5SHpZYmEvUDlMQ1puNnpZS3N3RlJqT3kvOGh1?= =?utf-8?B?c3NleE5jd1Q5SWlqakRkVlluK21HRHoxcTYwTTk1M2kxcFZUeFpFdnhjOXdL?= =?utf-8?B?ZE5IRXRqNXk4RWhZaUJIU2Jldy9pZ1FaV3F5WGNlOHpFa3dRWXR5bngrbkoz?= =?utf-8?B?OFdBRlZMMHZaZy8zdytYa3NFZkYyZzloZCs4WVpjWDhuNEtCeUN6QXBETS9S?= =?utf-8?B?aXRBT09FSEFlNzVjWFdoQ1VzSWNZbGpiblUwSDFpMzVtNTN0Z2gwbldIdlF4?= =?utf-8?B?Y0tKYmJ5UTRrZFRaa2RHT2V4TTQyZTdZL0hjbnhZTUw4OVJ1c3l4Tnh2VFVv?= =?utf-8?B?MDR1QnY3UFhUS3BIMlA4QjZkQTJPVjJGUmp5alVrRE5GNk43YWdxK1oyVVla?= =?utf-8?B?dHdhbldQRGY5b1NsRUkwVkl5eE45UGhsNEQrZjQwM3NKNWVleUszRHA3SjNK?= =?utf-8?B?TUdnUUxNSEw1OVhGR1pGeE0yNHVKUGNmQkpIUmZLVG5JSlVjalFOQzlhNWk2?= =?utf-8?B?Wmwxa2l2ZTNIUnMxR0pnSkpTR29jbnZ3bGhqVDhhSTBlK05qUUMyQ2IrTE50?= =?utf-8?B?V0hlYmFwMCtPRDlBRlY4bVB2akV1OE5kOWc5ZVBGUHptbFV6VGJXaFE5bUtL?= =?utf-8?B?TFhQMStDZlJBT3lGSHNvS3drY0FGd0E3YUgxQ3JKejljU2R3eE9HTktrb2l2?= =?utf-8?B?RXEzdlZoczdHR0ZOeWV5ZEZEMGY1UEVBTHVmNUVUMFc2ejQvbXhwazVJdTVZ?= =?utf-8?B?VElWTTh2bVcrTVJWc1I4MmlWYmxSbEMxc3hteGY3Mmt1Unc2azVxNHZHRzBF?= =?utf-8?B?T2JNRzQ5RFZUclYxNW5pQU5Ba1ZoTVBXb1BTMUFSQW1HelJ6QXR6N3RUdFFn?= =?utf-8?B?RWo2TWxpSEZuQkgraWZ5NlJPTU1VRTNobEcvOXpzWGsvZ0VnUkNqUmR6M0NB?= =?utf-8?B?U1A5NEl3UC9mYnNCay9Xc09SdDhTSWFXNm1GY1h4MjQvTG82Rm1Rd0FwQitm?= =?utf-8?B?cm5XQ3czTnVlNU0xWU9xcjJPK0FLSWZBYVhya0E4Q1BoQ2dRUk5YdXFUYkRQ?= =?utf-8?B?enZRbEFYK05JMzZ0Z0tNaS9XNHVMckRZd0d0NDZzQ3pIbzFwUEdibU1zL2ZH?= =?utf-8?B?ZFVDUFZXbkJMcjBFZEx6V3dvT2NTSkJhb0htSjR5QS9SY2c5UTFrVDQ4OGU1?= =?utf-8?B?MkZma0wvaUxxdzl4MCs3bFlvU0hRPT0=?= Content-Type: multipart/mixed; boundary="_002_TYCPR01MB8373B1614522B90BA96883E0ED929TYCPR01MB8373jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB8373.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8582cddd-0a5c-4b33-d7ef-08d9a375053e X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Nov 2021 11:35:24.3593 (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: 5a6p9ZAVmW6qNPXbgqlnSrJuwtZKdIv+DKPazPKrM/bp99oBJU7Ta5NvORe2TYOkhxEcsgfOwJCtUnoYyEQlXEWsO1aM/fd9XOk2MEMJykM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB7401 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_TYCPR01MB8373B1614522B90BA96883E0ED929TYCPR01MB8373jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgTm92ZW1iZXIgOSwgMjAyMSAxMjowOCBQTSBHcmVnIE5hbmNhcnJvdyA8Z3Jl Z240NDIyQGdtYWlsLmNvbT4gd3JvdGU6DQo+IE9uIEZyaSwgTm92IDUsIDIwMjEgYXQgNzoxMSBQ TSBvc3VtaS50YWthbWljaGlAZnVqaXRzdS5jb20NCj4gPG9zdW1pLnRha2FtaWNoaUBmdWppdHN1 LmNvbT4gd3JvdGU6DQo+ID4NCj4gDQo+IEkgZGlkIGEgcXVpY2sgc2NhbiB0aHJvdWdoIHRoZSBs YXRlc3QgdjggcGF0Y2ggYW5kIG5vdGljZWQgdGhlIGZvbGxvd2luZyB0aGluZ3M6DQpJIGFwcHJl Y2lhdGUgeW91ciByZXZpZXcgIQ0KDQo+IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMN Cj4gDQo+ICgxKSBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdCgpDQo+IFRoZSBj b3B5aW5nIGZyb20gbXNnLT5tX2dpZCB0byBrZXkuZ2lkIGRvZXMgbm90IHNlZW0gdG8gYmUgY29y cmVjdC4NCj4gc3RybGVuKCkgaXMgYmVpbmcgY2FsbGVkIG9uIGEganVuayB2YWx1ZSwgc2luY2Ug a2V5LmdpZCBoYXMgbm90IGJlZW4gYXNzaWduZWQgeWV0Lg0KPiBJdCBzaG91bGQgYmUgY2hhbmdl ZCBhcyBmb2xsb3dzOg0KPiANCj4gQkVGT1JFOg0KPiArIHN0cmxjcHkoa2V5LmdpZCwgbXNnLT5t X2dpZCwgc3RybGVuKGtleS5naWQpKTsNCj4gQUZURVI6DQo+ICsgc3RybGNweShrZXkuZ2lkLCBt c2ctPm1fZ2lkLCBzaXplb2Yoa2V5LmdpZCkpOw0KRml4ZWQuDQogDQo+ICgyKSBwZ3N0YXRfZ2V0 X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4oKQ0KPiBTaW1pbGFyIHRvIGFib3ZlLCBzdHJsZW4oKSB1 c2FnZSBpcyBub3QgY29ycmVjdCwgYW5kIHNob3VsZCB1c2UNCj4gc3RybGNweSgpIGluc3RlYWQg b2YgbWVtY3B5KCkuDQo+IA0KPiBCRUZPUkU6DQo+ICsgbWVtY3B5KGtleS5naWQsIGdpZCwgc3Ry bGVuKGtleS5naWQpKTsNCj4gQUZURVI6DQo+ICsgc3RybGNweShrZXkuZ2lkLCBnaWQsIHNpemVv ZihrZXkuZ2lkKSk7DQpGaXhlZC4NCg0KIA0KPiAoMykgc3RhdHNfcmVzZXQNCj4gTm90ZSB0aGF0 IHRoZSAic3RhdHNfcmVzZXQiIGNvbHVtbiBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlDQo+IHBn X3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgdmlldyBpbiB0aGUgdW5kZXJseWluZyBsYXRlc3Qg djIwIHBhdGNoLg0KWWVzLiBJJ3ZlIHJlYmFzZWQgYW5kIHVwZGF0ZWQgdGhlIHBhdGNoLCBwYXlp bmcgYXR0ZW50aW9uIHRvIHRoaXMgcG9pbnQuDQpBdHRhY2hlZCB0aGUgdXBkYXRlZCB2ZXJzaW9u Lg0KDQoNCkJlc3QgUmVnYXJkcywNCglUYWthbWljaGkgT3N1bWkNCg0K --_002_TYCPR01MB8373B1614522B90BA96883E0ED929TYCPR01MB8373jpnp_ Content-Type: application/octet-stream; name="extend_xact_stats_of_subscription_worker_v9.patch" Content-Description: extend_xact_stats_of_subscription_worker_v9.patch Content-Disposition: attachment; filename="extend_xact_stats_of_subscription_worker_v9.patch"; size=61410; creation-date="Tue, 09 Nov 2021 11:34:02 GMT"; modification-date="Tue, 09 Nov 2021 11:34:02 GMT" Content-Transfer-Encoding: base64 RnJvbSA0YThlMDkxM2QwMDM5MjhiZDQ3MjZlZDRkYTJhYjE1YmYwOWNlY2IzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPc3VtaSBUYWthbWljaGkgPG9zdW1pLnRha2FtaWNoaUBmdWpp dHN1LmNvbT4KRGF0ZTogVHVlLCA5IE5vdiAyMDIxIDExOjA4OjAxICswMDAwClN1YmplY3Q6IFtQ QVRDSCB2OV0gRXh0ZW5kIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgdG8gaW5jbHVkZSBn ZW5lcmFsIHRyYW5zYWN0aW9uIHN0YXRpc3RpY3MKCkNhdGVnb3JpemUgdHJhbnNhY3Rpb25zIG9m IGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlcgppbnRvIHRocmVlIHR5cGVzIChjb21taXQs IGVycm9yLCBhYm9ydCkgYW5kIGludHJvZHVjZQpjdW11bGF0aXZlIGNvbHVtbnMgb2YgdGhvc2Ug bnVtYmVycyBhbmQgYW1vdW50cyBvZgpjb25zdW1lZCBkYXRhIGR1cmluZyBtZXNzYWdlIGFwcGx5 IHJlc3BlY3RpdmVseS4KCk9uZSBzY2VuYXJpbyB0byB1dGlsaXplIHRob3NlIGNvbHVtbnMgaXMg dG8gc3VwcHJlc3MKdW5uZWNlc3NhcnkgbmV0d29yayBiYW5kd2lkdGgsIHdoZW4gc3RyZWFtaW5n IHRyYW5zYWN0aW9uIGFib3J0ZWQKbW9yZSB0aGFuIGV4cGVjdGVkIGlzIG9ic2VydmVkIGJ5IHRo ZSBjb2x1bW4gb2YgYWJvcnRfY291bnQKb3IgaXRzIGJ5dGVzIGNvbHVtbi4KClRoZSBjYWxjdWxh dGlvbiBvZiBjb25zdW1lZCByZXNvdXJjZXMgYnkgc3Vic2NyaWJlciBpcyBjb21wdXRlZApiYXNl ZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIG1lc3NhZ2UgYXBwbHksIHdoaWNoIGlzIGRpZmZl cmVudApmcm9tIHRoYXQgb2YgcHVibGlzaGVyJ3MgZGVjb2RpbmcgcHJvY2Vzc2luZy4KClN0YXRz IG9mIHByZXBhcmVkIHRyYW5zYWN0aW9uIGJlY29tZXMgcGVyc2lzdGVudCB0byBjb25jbHVkZQp0 aGUgYXBwcm9wcmlhdGUgY2F0ZWdvcnkgZm9yIHRoZSB0cmFuc2FjdGlvbiBhdAplaXRoZXIgY29t bWl0IHByZXBhcmVkIG9yIHJvbGxiYWNrIHByZXBhcmVkIHRpbWUuCgpBbHNvLCBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zIHJ1bm5pbmcgaW4gcGFyYWxsZWwgb24gcHVibGlzaGVyCmNhbiBjYXVzZSBk YXRhIGJsb2NrcyBpbiB1bnByZWRpY3RhYmxlIG9yZGVyLiBNYW5hZ2luZyBlYWNoCnN0cmVhbWlu ZyB0cmFuYWN0aW9uIGJ5IHhpZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBoYW5kbGUKc3RyZWFtIGFi b3J0LCBzdHJlYW0gY29tbWl0IGFuZCBzdHJlYW0gcHJlcGFyZSBwcm9wZXJseS4KCkF1dGhvcjog VGFrYW1pY2hpIE9zdW1pCkRpc2N1c3NlZCAmIFJldmlld2VkLWJ5OiBBbWl0IEthcGlsYSwgTWFz YWhpa28gU2F3YWRhLCBIb3UgWmhpamllLCBHcmVnIE5hbmNhcnJvdywgVmlnbmVzaCBDLCBBamlu IENoZXJpYW4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1p ZC9PU0JQUjAxTUI0ODg4N0NBOEY0MEM4RDk4NEE2REMwMENFRDE5OSU0ME9TQlBSMDFNQjQ4ODgu anBucHJkMDEucHJvZC5vdXRsb29rLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwgICAgICAgICAgICAgICAgICAgICB8ICA5NSArKysrKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bnc3RhdC5jICAgICAgICAgICAgICAgICAgfCAyOTQgKysrKysrKysrKysrKysrKysr KysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgIHwg ICA2ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICB8 IDMwNCArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMgICAgICAgICAgICAgIHwgIDQ0ICsrKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5MCArKysrKysrCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgICAgIHwgIDE2ICstCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjZfZXJyb3JfcmVwb3J0LnBsICAgICAgfCAgIDggKy0KIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyN193b3JrZXJfeGFjdF9zdGF0cy5wbCB8IDE3MyArKysrKysrKysr KysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgICAgfCAg IDYgKwogMTUgZmlsZXMgY2hhbmdlZCwgMTAzMiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfd29ya2Vy X3hhY3Rfc3RhdHMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21s IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCA3YTRhMWEyLi4zYTM1ZWZhIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKQEAgLTYyOSw3ICs2MjksNyBAQCBwb3N0Z3JlcyAgIDI3MDkzICAw LjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6 IHNlcgogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PHN0cnVjdG5hbWU+cGdfc3RhdF9zdWJz Y3JpcHRpb25fd29ya2Vyczwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBnX3N0YXRf c3Vic2NyaXB0aW9uX3dvcmtlcnM8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KLSAgICAg IDxlbnRyeT5BdCBsZWFzdCBvbmUgcm93IHBlciBzdWJzY3JpcHRpb24sIHNob3dpbmcgYWJvdXQg ZXJyb3JzIHRoYXQKKyAgICAgIDxlbnRyeT5BdCBsZWFzdCBvbmUgcm93IHBlciBzdWJzY3JpcHRp b24sIHNob3dpbmcgdHJhbnNhY3Rpb24gc3RhdGlzdGljcyBhbmQgaW5mb3JtYXRpb24gYWJvdXQg ZXJyb3JzIHRoYXQKICAgICAgIG9jY3VycmVkIG9uIHN1YnNjcmlwdGlvbi4KICAgICAgIFNlZSA8 bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQtc3Vic2NyaXB0aW9uLXdvcmtlcnMiPgog ICAgICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2Vyczwvc3RydWN0bmFt ZT48L2xpbms+IGZvciBkZXRhaWxzLgpAQCAtMzA1Miw5ICszMDUyLDEwIEBAIFNFTEVDVCBwaWQs IHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUg d2FpdF9ldmVudCBpCiAKICAgPHBhcmE+CiAgICBUaGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9zdWJz Y3JpcHRpb25fd29ya2Vyczwvc3RydWN0bmFtZT4gdmlldyB3aWxsIGNvbnRhaW4KLSAgIG9uZSBy b3cgcGVyIHN1YnNjcmlwdGlvbiBlcnJvciByZXBvcnRlZCBieSB3b3JrZXJzIGFwcGx5aW5nIGxv Z2ljYWwKLSAgIHJlcGxpY2F0aW9uIGNoYW5nZXMgYW5kIHdvcmtlcnMgaGFuZGxpbmcgdGhlIGlu aXRpYWwgZGF0YSBjb3B5IG9mIHRoZQotICAgc3Vic2NyaWJlZCB0YWJsZXMuCisgICBvbmUgcm93 IHBlciBzdWJzY3JpcHRpb24sIHNob3dpbmcgY29ycmVzcG9uZGluZyB0cmFuc2FjdGlvbiBzdGF0 aXN0aWNzIGFuZAorICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxhc3QgZXJyb3IgcmVwb3J0ZWQg Ynkgd29ya2VycyBhcHBseWluZyBsb2dpY2FsIHJlcGxpY2F0aW9uCisgICBjaGFuZ2VzIG9yIGJ5 IHdvcmtlcnMgaGFuZGxpbmcgdGhlIGluaXRpYWwgZGF0YSBjb3B5IG9mIHRoZSBzdWJzY3JpYmVk IHRhYmxlcy4KKyAgIFRoZSBzdGF0aXN0aWNzIG9mIHRyYW5zYWN0aW9uIHNpemUgaXMgdXRpbGl6 ZWQgb25seSBieSB0aGUgYXBwbHkgd29ya2VyLgogICA8L3BhcmE+CiAKICAgPHRhYmxlIGlkPSJw Zy1zdGF0LXN1YnNjcmlwdGlvbi13b3JrZXJzIiB4cmVmbGFiZWw9InBnX3N0YXRfc3Vic2NyaXB0 aW9uX3dvcmtlcnMiPgpAQCAtMzEwMiwyMCArMzEwMyw4NiBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2 ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZl bnQgaQogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5y ZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+ Y29tbWl0X2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBzdWNjZXNz ZnVsbHkgYXBwbGllZCBpbiB0aGlzIHN1YnNjcmlwdGlvbi4KKyAgICAgICBDT01NSVQsIENPTU1J VCBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYW5kIENPTU1JVCBQUkVQQVJFRCBpbmNyZW1lbnRz CisgICAgICAgdGhpcyBjb3VudGVyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb21t aXRfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBBbW91bnQgb2YgZGF0YSAoaW4gYnl0ZXMpIHN1Y2Nlc3Nm dWxseSBhcHBsaWVkIGluIHRoaXMgc3Vic2NyaXB0aW9uLAorICAgICAgIGFjcm9zcyA8bGl0ZXJh bD5jb21taXRfY291bnQ8L2xpdGVyYWw+IHRyYW5zYWN0aW9ucy4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+ZXJyb3JfY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgdHJhbnNhY3Rp b25zIHRoYXQgZmFpbGVkIHRvIGJlIGFwcGxpZWQgYnkgdGhlIHRhYmxlCisgICAgICAgc3luYyB3 b3JrZXIgb3IgbWFpbiBhcHBseSB3b3JrZXIgaW4gdGhpcyBzdWJzY3JpcHRpb24uCisgICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5lcnJvcl9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJp Z2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFtb3VudCBv ZiBkYXRhIChpbiBieXRlcykgdW5zdWNjZXNzZnVsbHkgYXBwbGllZCBpbiB0aGlzIHN1YnNjcmlw dGlvbiwKKyAgICAgICBhY3Jvc3MgPGxpdGVyYWw+ZXJyb3JfY291bnQ8L2xpdGVyYWw+IHRyYW5z YWN0aW9ucy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YWJvcnRfY291bnQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFib3J0ZWQgaW4gdGhpcyBzdWJzY3JpcHRp b24uCisgICAgICAgUk9MTEJBQ0sgUFJFUEFSRUQgYW5kIGFib3J0IG9mIHN0cmVhbWluZyB0cmFu c2FjdGlvbgorICAgICAgIGluY3JlbWVudHMgdGhpcyBjb3VudGVyLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5hYm9ydF9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFtb3VudCBvZiBkYXRhIChp biBieXRlcykgYWJvcnRlZCBpbiB0aGlzIHN1YnNjcmlwdGlvbiwKKyAgICAgICBhY3Jvc3MgPGxp dGVyYWw+YWJvcnRfY291bnQ8L2xpdGVyYWw+IHRyYW5zYWN0aW9ucy4KKyAgICAgICBJbiBvcmRl ciB0byBzdXBwcmVzcyB1bm5lY2Vzc2FyeSBjb25zdW1lZCBuZXR3b3JrIGJhbmR3aWR0aCwKKyAg ICAgICBpbmNyZWFzZSA8bGl0ZXJhbD5sb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtPC9saXRlcmFs PiBvbiB0aGUgcHVibGlzaGVyCisgICAgICAgc28gdGhhdCBpdCBleGNlZWRzIHRoZSBzaXplIG9m IHRoZSB3aG9sZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiwgaWYKKyAgICAgICBhbiB1bmV4cGVjdGVk IGFtb3VudCBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgYXJlIGFib3J0ZWQuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfZXJyb3JfcmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5v aWQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhl IHJlbGF0aW9uIHRoYXQgdGhlIHdvcmtlciB3YXMgcHJvY2Vzc2luZyB3aGVuIHRoZQotICAgICAg IGVycm9yIG9jY3VycmVkCisgICAgICAgbGFzdCBlcnJvciBvY2N1cnJlZAogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAg ICAgIDxzdHJ1Y3RmaWVsZD5jb21tYW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4K KyAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9lcnJvcl9jb21tYW5kPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+dGV4dDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIE5hbWUg b2YgY29tbWFuZCBiZWluZyBhcHBsaWVkIHdoZW4gdGhlIGVycm9yIG9jY3VycmVkLiAgVGhpcyBm aWVsZAorICAgICAgIE5hbWUgb2YgbGFzdCBjb21tYW5kIGJlaW5nIGFwcGxpZWQgd2hlbiB0aGUg ZXJyb3Igb2NjdXJyZWQuICBUaGlzIGZpZWxkCiAgICAgICAgaXMgYWx3YXlzIE5VTEwgaWYgdGhl IGVycm9yIHdhcyByZXBvcnRlZCBkdXJpbmcgdGhlIGluaXRpYWwgZGF0YQogICAgICAgIGNvcHku CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KQEAgLTMxMjMsMTAgKzMxOTAsMTAgQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3Ry dWN0ZmllbGQ+eGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+eGlkPC90eXBlPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5sYXN0X2Vycm9yX3hpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPnhpZDwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFRyYW5zYWN0aW9uIElEIG9mIHRoZSBw dWJsaXNoZXIgbm9kZSBiZWluZyBhcHBsaWVkIHdoZW4gdGhlIGVycm9yCisgICAgICAgVHJhbnNh Y3Rpb24gSUQgb2YgdGhlIHB1Ymxpc2hlciBub2RlIGJlaW5nIGFwcGxpZWQgd2hlbiB0aGUgbGFz dCBlcnJvcgogICAgICAgIG9jY3VycmVkLiAgVGhpcyBmaWVsZCBpcyBhbHdheXMgTlVMTCBpZiB0 aGUgZXJyb3Igd2FzIHJlcG9ydGVkCiAgICAgICAgZHVyaW5nIHRoZSBpbml0aWFsIGRhdGEgY29w eS4KICAgICAgIDwvcGFyYT48L2VudHJ5PgpAQCAtMzEzNCwxOSArMzIwMSwxOSBAQCBTRUxFQ1Qg cGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdI RVJFIHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxz dHJ1Y3RmaWVsZD5lcnJvcl9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPnVpbnQ4PC90eXBlPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ dWludDg8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBOdW1iZXIg b2YgY29uc2VjdXRpdmUgdGltZXMgdGhlIGVycm9yIG9jY3VycmVkCisgICAgICAgTnVtYmVyIG9m IGNvbnNlY3V0aXZlIHRpbWVzIHRoZSBsYXN0IGVycm9yIG9jY3VycmVkCiAgICAgICA8L3BhcmE+ PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAg ICAgPHN0cnVjdGZpZWxkPmVycm9yX21lc3NhZ2U8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90 eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX21lc3NhZ2U8L3N0cnVjdGZpZWxk PiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAg VGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICBUaGUgbGFzdCBlcnJvciBtZXNzYWdlCiAgICAgICA8 L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAppbmRleCBmZWNlNDhhLi45ZTBjZmNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCkBAIC0xMjY3LDEyICsxMjY3LDE4IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2Ny aXB0aW9uX3dvcmtlcnMgQVMKICAgICAgICAgdy5zdWJpZCwKICAgICAgICAgcy5zdWJuYW1lLAog ICAgICAgICB3LnN1YnJlbGlkLAotICAgICAgICB3LnJlbGlkLAotICAgICAgICB3LmNvbW1hbmQs Ci0gICAgICAgIHcueGlkLAotICAgICAgICB3LmVycm9yX2NvdW50LAotICAgICAgICB3LmVycm9y X21lc3NhZ2UsCi0gICAgICAgIHcubGFzdF9lcnJvcl90aW1lCisJdy5jb21taXRfY291bnQsCisJ dy5jb21taXRfYnl0ZXMsCisJdy5lcnJvcl9jb3VudCwKKwl3LmVycm9yX2J5dGVzLAorCXcuYWJv cnRfY291bnQsCisJdy5hYm9ydF9ieXRlcywKKwl3Lmxhc3RfZXJyb3JfcmVsaWQsCisJdy5sYXN0 X2Vycm9yX2NvbW1hbmQsCisJdy5sYXN0X2Vycm9yX3hpZCwKKwl3Lmxhc3RfZXJyb3JfY291bnQs CisJdy5sYXN0X2Vycm9yX21lc3NhZ2UsCisJdy5sYXN0X2Vycm9yX3RpbWUKICAgICBGUk9NIChT RUxFQ1QKICAgICAgICAgICAgICAgb2lkIGFzIHN1YmlkLAogICAgICAgICAgICAgICBOVUxMIGFz IHJlbGlkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggNWM3MjNiYy4uMjAx ODRjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTkyLDYgKzE5Miwx NiBAQCBzdGF0aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9u UHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUs CiAJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CiAKKy8qCisgKiBQYXJ0 aXRpb25UdXBsZVJvdXRpbmdTaXplIC0gZXhwb3J0ZWQgdG8gY2FsY3VsYXRlIHRvdGFsIGRhdGEg c2l6ZQorICogb2YgbG9naWNhbCByZXBsaWNhdGlvbiBtZXNhZ2UgYXBwbHksIGJlY2F1c2UgdGhp cyBpcyBvbmUgb2YgdGhlCisgKiBBcHBseUV4ZWN1dGlvbkRhdGEgc3RydWN0IG1lbWJlcnMuCisg Ki8KK3NpemVfdAorUGFydGl0aW9uVHVwbGVSb3V0aW5nU2l6ZSh2b2lkKQoreworCXJldHVybiBz aXplb2YoUGFydGl0aW9uVHVwbGVSb3V0aW5nKTsKK30KIAogLyoKICAqIEV4ZWNTZXR1cFBhcnRp dGlvblR1cGxlUm91dGluZyAtIHNldHMgdXAgaW5mb3JtYXRpb24gbmVlZGVkIGR1cmluZwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcGdzdGF0LmMKaW5kZXggZDk0NDM2MS4uMDljMTY2MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bnc3RhdC5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9mb3JrX3By b2Nlc3MuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvcG9zdG1hc3Rlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKQEAgLTI4Nyw2 ICsyODgsMTUgQEAgc3RhdGljIFBnU3RhdF9TTFJVU3RhdHMgc2xydVN0YXRzW1NMUlVfTlVNX0VM RU1FTlRTXTsKIHN0YXRpYyBIVEFCICpyZXBsU2xvdFN0YXRIYXNoID0gTlVMTDsKIAogLyoKKyAq IFN0YXRzIG9mIHByZXBhcmVkIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgZGlzcGxheWVkCisgKiBh dCBlaXRoZXIgY29tbWl0IHByZXBhcmVkIG9yIHJvbGxiYWNrIHByZXBhcmVkIHRpbWUsIGV2ZW4g d2hlbiBpdCdzCisgKiBhZnRlciB0aGUgc2VydmVyIHJlc3RhcnQuIFdlIGhhdmUgdGhlIGFwcGx5 IHdvcmtlciBzZW5kIHRob3NlIHN0YXRpc3RpY3MKKyAqIHRvIHRoZSBzdGF0cyBjb2xsZWN0b3Ig YXQgcHJlcGFyZSB0aW1lIGFuZCB0aGUgc3RhcnR1cCBwcm9jZXNzIHJlc3RvcmUKKyAqIHRob3Nl IGF0IHJlc3RhcnQgaWYgbmVjZXNzYXJ5LgorICovCitzdGF0aWMgSFRBQiAqc3ViV29ya2VyUHJl cGFyZWRYYWN0U2l6ZUhhc2ggPSBOVUxMOworCisvKgogICogTGlzdCBvZiBPSURzIG9mIGRhdGFi YXNlcyB3ZSBuZWVkIHRvIHdyaXRlIG91dC4gIElmIGFuIGVudHJ5IGlzIEludmFsaWRPaWQsCiAg KiBpdCBtZWFucyB0byB3cml0ZSBvbmx5IHRoZSBzaGFyZWQtY2F0YWxvZyBzdGF0cyAoIkRCIDAi KTsgb3RoZXJ3aXNlLCB3ZQogICogd2lsbCB3cml0ZSBib3RoIHRoYXQgREIncyBkYXRhIGFuZCB0 aGUgc2hhcmVkIHN0YXRzLgpAQCAtMzI2LDYgKzMzNiw5IEBAIHN0YXRpYyBQZ1N0YXRfU3RhdFRh YkVudHJ5ICpwZ3N0YXRfZ2V0X3RhYl9lbnRyeShQZ1N0YXRfU3RhdERCRW50cnkgKmRiZW50cnks CiBzdGF0aWMgUGdTdGF0X1N0YXRTdWJXb3JrZXJFbnRyeSAqcGdzdGF0X2dldF9zdWJ3b3JrZXJf ZW50cnkoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5LAogCQkJCQkJCQkJCQkJCQkJIE9pZCBz dWJpZCwgT2lkIHN1YnJlbGlkLAogCQkJCQkJCQkJCQkJCQkJIGJvb2wgY3JlYXRlKTsKK3N0YXRp YyBQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgKnBnc3RhdF9nZXRfc3Vid29y a2VyX3ByZXBhcmVkX3R4bihPaWQgc3ViaWQsCisJCQkJCQkJCQkJCQkJCQkJCQkJICAgY2hhciAq Z2lkLCBib29sIGNyZWF0ZSk7CisKIHN0YXRpYyB2b2lkIHBnc3RhdF93cml0ZV9zdGF0c2ZpbGVz KGJvb2wgcGVybWFuZW50LCBib29sIGFsbERicyk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfd3JpdGVf ZGJfc3RhdHNmaWxlKFBnU3RhdF9TdGF0REJFbnRyeSAqZGJlbnRyeSwgYm9vbCBwZXJtYW5lbnQp Owogc3RhdGljIEhUQUIgKnBnc3RhdF9yZWFkX3N0YXRzZmlsZXMoT2lkIG9ubHlkYiwgYm9vbCBw ZXJtYW5lbnQsIGJvb2wgZGVlcCk7CkBAIC0zODUsNiArMzk4LDkgQEAgc3RhdGljIHZvaWQgcGdz dGF0X3JlY3ZfcmVwbHNsb3QoUGdTdGF0X01zZ1JlcGxTbG90ICptc2csIGludCBsZW4pOwogc3Rh dGljIHZvaWQgcGdzdGF0X3JlY3ZfdGVtcGZpbGUoUGdTdGF0X01zZ1RlbXBGaWxlICptc2csIGlu dCBsZW4pOwogc3RhdGljIHZvaWQgcGdzdGF0X3JlY3Zfc3Vic2NyaXB0aW9uX3B1cmdlKFBnU3Rh dF9Nc2dTdWJzY3JpcHRpb25QdXJnZSAqbXNnLCBpbnQgbGVuKTsKIHN0YXRpYyB2b2lkIHBnc3Rh dF9yZWN2X3N1Yndvcmtlcl9lcnJvcihQZ1N0YXRfTXNnU3ViV29ya2VyRXJyb3IgKm1zZywgaW50 IGxlbik7CitzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfeGFjdF9lbmQoUGdTdGF0 X01zZ1N1YldvcmtlclhhY3RFbmQgKm1zZywgaW50IGxlbik7CitzdGF0aWMgdm9pZCBwZ3N0YXRf cmVjdl9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdChQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VY YWN0ICptc2csIGludCBsZW4pOworCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogUHVibGljIGZ1bmN0aW9ucyBjYWxs ZWQgZnJvbSBwb3N0bWFzdGVyIGZvbGxvdwpAQCAtMTk2NSw2ICsxOTgxLDYyIEBAIHBnc3RhdF9y ZXBvcnRfcmVwbHNsb3RfZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSkKIH0KIAogLyogLS0tLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoKSAtCisgKgorICogIFRl bGwgdGhlIGNvbGxlY3RvciB0aGF0IHdvcmtlciB0cmFuc2FjdGlvbiBoYXMgc3VjY2Vzc2Z1bGx5 IGNvbXBsZXRlZC4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9ydF9zdWJ3 b3JrZXJfeGFjdF9lbmQoT2lkIHN1YmlkLCBPaWQgc3VicmVsLAorCQkJCQkJCQkgTG9naWNhbFJl cE1zZ1R5cGUgY29tbWFuZCwgUGdTdGF0X0NvdW50ZXIgeGFjdF9zaXplKQoreworCVBnU3RhdF9N c2dTdWJXb3JrZXJYYWN0RW5kIG1zZzsKKworCUFzc2VydChjb21tYW5kID09IDAgLyogdGFibGUg c3luYyB3b3JrZXIgKi8gfHwKKwkJICAgY29tbWFuZCA9PSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlU IHx8CisJCSAgIGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCB8fAorCQkg ICBjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19TVFJFQU1fQ09NTUlUKTsKKworCXBnc3RhdF9z ZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01UWVBFX1NVQldPUktFUlhBQ1RFTkQpOworCW1z Zy5tX2RhdGFiYXNlaWQgPSBNeURhdGFiYXNlSWQ7CisJbXNnLm1fc3ViaWQgPSBzdWJpZDsKKwlt c2cubV9zdWJyZWxpZCA9IHN1YnJlbDsKKwltc2cubV9jb21tYW5kID0gY29tbWFuZDsKKwltc2cu bV94YWN0X2J5dGVzID0geGFjdF9zaXplOworCXBnc3RhdF9zZW5kKCZtc2csIHNpemVvZihQZ1N0 YXRfTXNnU3ViV29ya2VyWGFjdEVuZCkpOworCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94 YWN0X3NpemUoKTsKK30KKworLyogLS0tLS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF9zdWJ3b3Jr ZXJfdHdvcGhhc2VfeGFjdCgpIC0KKyAqCisgKiAgVGVsbCB0aGUgY29sbGVjdG9yIHRoYXQgd29y a2VyIHRyYW5zYWN0aW9uIGhhcyBkb25lIDJQQyByZWxhdGVkIG9wZXJhdGlvbi4KKyAqIC0tLS0t LS0tLS0KKyAqLwordm9pZAorcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdChP aWQgc3ViaWQsIExvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQsCisJCQkJCQkJCQkgIFBnU3RhdF9D b3VudGVyIHhhY3Rfc2l6ZSwgY2hhciAqZ2lkKQoreworCVBnU3RhdF9Nc2dTdWJXb3JrZXJUd29w aGFzZVhhY3QgbXNnOworCisJQXNzZXJ0KGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX1BSRVBB UkUgfHwKKwkJICAgY29tbWFuZCA9PSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUgfHwK KwkJICAgY29tbWFuZCA9PSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEIHx8CisJCSAg IGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX1JPTExCQUNLX1BSRVBBUkVEKTsKKworCS8qIHNl dHVwIHRoZSBtZXNzYWdlICovCisJcGdzdGF0X3NldGhlYWRlcigmbXNnLm1faGRyLCBQR1NUQVRf TVRZUEVfU1VCV09SS0VSVFdPUEhBU0VYQUNUKTsKKwltc2cubV9kYXRhYmFzZWlkID0gTXlEYXRh YmFzZUlkOworCW1zZy5tX3N1YmlkID0gc3ViaWQ7CisJbXNnLm1fY29tbWFuZCA9IGNvbW1hbmQ7 CisJc3RybGNweShtc2cubV9naWQsIGdpZCwgc2l6ZW9mKG1zZy5tX2dpZCkpOworCW1zZy5tX3hh Y3RfYnl0ZXMgPSB4YWN0X3NpemU7CisJcGdzdGF0X3NlbmQoJm1zZywgc2l6ZW9mKFBnU3RhdF9N c2dTdWJXb3JrZXJUd29waGFzZVhhY3QpKTsKKwlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hh Y3Rfc2l6ZSgpOworfQorCisvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVwb3J0X3N1Yndvcmtl cl9lcnJvcigpIC0KICAqCiAgKglUZWxsIHRoZSBjb2xsZWN0b3IgYWJvdXQgdGhlIHN1YnNjcmlw dGlvbiB3b3JrZXIgZXJyb3IuCkBAIC0xOTg1LDYgKzIwNTcsNyBAQCBwZ3N0YXRfcmVwb3J0X3N1 Yndvcmtlcl9lcnJvcihPaWQgc3ViaWQsIE9pZCBzdWJyZWxpZCwgT2lkIHJlbGlkLAogCW1zZy5t X2RhdGFiYXNlaWQgPSBNeURhdGFiYXNlSWQ7CiAJbXNnLm1fc3ViaWQgPSBzdWJpZDsKIAltc2cu bV9zdWJyZWxpZCA9IHN1YnJlbGlkOworCW1zZy5tX3hhY3RfZXJyb3JfYnl0ZXMgPSBnZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUoKTsKIAltc2cubV9yZWxpZCA9IHJlbGlkOwogCW1z Zy5tX2NvbW1hbmQgPSBjb21tYW5kOwogCW1zZy5tX3hpZCA9IHhpZDsKQEAgLTE5OTIsNiArMjA2 NSw4IEBAIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX2Vycm9yKE9pZCBzdWJpZCwgT2lkIHN1YnJl bGlkLCBPaWQgcmVsaWQsCiAJc3RybGNweShtc2cubV9tZXNzYWdlLCBlcnJtc2csIFBHU1RBVF9T VUJXT1JLRVJFUlJPUl9NU0dMRU4pOwogCiAJcGdzdGF0X3NlbmQoJm1zZywgbGVuKTsKKworCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0K QEAgLTM3NTAsNiArMzgyNSwxNCBAQCBQZ3N0YXRDb2xsZWN0b3JNYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJCQkJCXBnc3RhdF9yZWN2X3N1Yndvcmtlcl9lcnJvcigmbXNnLm1zZ19zdWJ3 b3JrZXJlcnJvciwgbGVuKTsKIAkJCQkJYnJlYWs7CiAKKwkJCQljYXNlIFBHU1RBVF9NVFlQRV9T VUJXT1JLRVJYQUNURU5EOgorCQkJCQlwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfeGFjdF9lbmQoJm1z Zy5tc2dfc3Vid29ya2VyeGFjdGVuZCwgbGVuKTsKKwkJCQkJYnJlYWs7CisKKwkJCQljYXNlIFBH U1RBVF9NVFlQRV9TVUJXT1JLRVJUV09QSEFTRVhBQ1Q6CisJCQkJCXBnc3RhdF9yZWN2X3N1Yndv cmtlcl90d29waGFzZV94YWN0KCZtc2cubXNnX3N1YndvcmtlcnR3b3BoYXNleGFjdCwgbGVuKTsK KwkJCQkJYnJlYWs7CisKIAkJCQlkZWZhdWx0OgogCQkJCQlicmVhazsKIAkJCX0KQEAgLTQwNTgs NiArNDE0MSwyMiBAQCBwZ3N0YXRfd3JpdGVfc3RhdHNmaWxlcyhib29sIHBlcm1hbmVudCwgYm9v bCBhbGxEYnMpCiAJfQogCiAJLyoKKwkgKiBXcml0ZSBzdWJzY3JpcHRpb24gd29ya2VyJ3MgcHJl cGFyZWQgdHJhbnNhY3Rpb24gc3RydWN0CisJICovCisJaWYgKHN1YldvcmtlclByZXBhcmVkWGFj dFNpemVIYXNoKQorCXsKKwkJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICpw cmVwYXJlZF9zaXplOworCisJCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBzdWJXb3JrZXJQcmVwYXJl ZFhhY3RTaXplSGFzaCk7CisJCXdoaWxlKChwcmVwYXJlZF9zaXplID0gKFBnU3RhdF9TdGF0U3Vi V29ya2VyUHJlcGFyZWRYYWN0U2l6ZSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVM TCkKKwkJeworCQkJZnB1dGMoJ1AnLCBmcG91dCk7CisJCQlyYyA9IGZ3cml0ZShwcmVwYXJlZF9z aXplLCBzaXplb2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKSwgMSwgZnBv dXQpOworCQkJKHZvaWQpIHJjOyAJCQkvKiB3ZSdsbCBjaGVjayBmb3IgZXJyb3Igd2l0aCBmZXJy b3IgKi8KKwkJfQorCX0KKworCS8qCiAJICogTm8gbW9yZSBvdXRwdXQgdG8gYmUgZG9uZS4gQ2xv c2UgdGhlIHRlbXAgZmlsZSBhbmQgcmVwbGFjZSB0aGUgb2xkCiAJICogcGdzdGF0LnN0YXQgd2l0 aCBpdC4gIFRoZSBmZXJyb3IoKSBjaGVjayByZXBsYWNlcyB0ZXN0aW5nIGZvciBlcnJvcgogCSAq IGFmdGVyIGVhY2ggaW5kaXZpZHVhbCBmcHV0YyBvciBmd3JpdGUgYWJvdmUuCkBAIC00NTQxLDYg KzQ2NDAsNDAgQEAgcGdzdGF0X3JlYWRfc3RhdHNmaWxlcyhPaWQgb25seWRiLCBib29sIHBlcm1h bmVudCwgYm9vbCBkZWVwKQogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2UgJ1AnOgorCQkJ CXsKKwkJCQkJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplIGJ1ZmY7CisJCQkJ CVBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZSAqcHJlcGFyZWRfeGFjdF9zaXpl OworCisJCQkJCWlmIChmcmVhZCgmYnVmZiwgMSwgc2l6ZW9mKFBnU3RhdF9TdGF0U3ViV29ya2Vy UHJlcGFyZWRYYWN0U2l6ZSksCisJCQkJCQkJICBmcGluKSAhPSBzaXplb2YoUGdTdGF0X1N0YXRT dWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChwZ1N0YXRS dW5uaW5nSW5Db2xsZWN0b3IgPyBMT0cgOiBXQVJOSU5HLAorCQkJCQkJCQkoZXJybXNnKCJjb3Jy dXB0ZWQgc3RhdGlzdGljcyBmaWxlIFwiJXNcIiIsCisJCQkJCQkJCQkJc3RhdGZpbGUpKSk7CisJ CQkJCQlnb3RvIGRvbmU7CisJCQkJCX0KKworCQkJCQlpZiAoc3ViV29ya2VyUHJlcGFyZWRYYWN0 U2l6ZUhhc2ggPT0gTlVMTCkKKwkJCQkJeworCQkJCQkJSEFTSENUTAkJaGFzaF9jdGw7CisKKwkJ CQkJCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJl ZFhhY3QpOworCQkJCQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBnU3RhdF9TdGF0U3Vi V29ya2VyUHJlcGFyZWRYYWN0U2l6ZSk7CisJCQkJCQloYXNoX2N0bC5oY3h0ID0gcGdTdGF0TG9j YWxDb250ZXh0OworCQkJCQkJc3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZUhhc2ggPSBoYXNoX2Ny ZWF0ZSgiU3Vic2NyaXB0aW9uIHdvcmtlciBzdGF0cyBvZiBwcmVwYXJlZCB0eG4iLAorCQkJCQkJ CQkJCQkJCQlQR1NUQVRfU1VCV09SS0VSX0hBU0hfU0laRSwKKwkJCQkJCQkJCQkJCQkJJmhhc2hf Y3RsLAorCQkJCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NPTlRF WFQpOworCQkJCQl9CisKKwkJCQkJcHJlcGFyZWRfeGFjdF9zaXplID0KKwkJCQkJCShQZ1N0YXRf U3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgKikgaGFzaF9zZWFyY2goc3ViV29ya2VyUHJl cGFyZWRYYWN0U2l6ZUhhc2gsCisJCQkJCQkJCQkJCQkJCQkJCQkJICh2b2lkICopICZidWZmLmtl eSwKKwkJCQkJCQkJCQkJCQkJCQkJCQkgSEFTSF9FTlRFUiwgTlVMTCk7CisJCQkJCW1lbWNweShw cmVwYXJlZF94YWN0X3NpemUsICZidWZmLCBzaXplb2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVw YXJlZFhhY3RTaXplKSk7CisJCQkJCWJyZWFrOworCQkJCX0KIAkJCWNhc2UgJ0UnOgogCQkJCWdv dG8gZG9uZTsKIApAQCAtNjE0OCw2ICs2MjgxLDExMiBAQCBwZ3N0YXRfcmVjdl9zdWJzY3JpcHRp b25fcHVyZ2UoUGdTdGF0X01zZ1N1YnNjcmlwdGlvblB1cmdlICptc2csIGludCBsZW4pCiB9CiAK IC8qIC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9yZWN2X3N1Yndvcmtlcl94YWN0X2VuZCgpIC0KKyAq CisgKglQcm9jZXNzIGEgU1VCV09SS0VSWEFDVEVORCBtZXNzYWdlLgorICogLS0tLS0tLS0tLQor ICovCitzdGF0aWMgdm9pZAorcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3hhY3RfZW5kKFBnU3RhdF9N c2dTdWJXb3JrZXJYYWN0RW5kICptc2csIGludCBsZW4pCit7CisJUGdTdGF0X1N0YXREQkVudHJ5 ICpkYmVudHJ5OworCVBnU3RhdF9TdGF0U3ViV29ya2VyRW50cnkgKndlbnRyeTsKKworCWRiZW50 cnkgPSBwZ3N0YXRfZ2V0X2RiX2VudHJ5KG1zZy0+bV9kYXRhYmFzZWlkLCB0cnVlKTsKKwl3ZW50 cnkgPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShkYmVudHJ5LCBtc2ctPm1fc3ViaWQsCisJ CQkJCQkJCQkJbXNnLT5tX3N1YnJlbGlkLCB0cnVlKTsKKwlBc3NlcnQod2VudHJ5KTsKKworCS8q IHRhYmxlIHN5bmMgd29ya2VyICovCisJaWYgKG1zZy0+bV9jb21tYW5kID09IDApCisJCXdlbnRy eS0+eGFjdF9jb21taXRfY291bnQrKzsKKwllbHNlCisJeworCQkvKiBhcHBseSB3b3JrZXIgKi8K KwkJc3dpdGNoKG1zZy0+bV9jb21tYW5kKQorCQl7CisJCQljYXNlIExPR0lDQUxfUkVQX01TR19D T01NSVQ6CisJCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQ09NTUlUOgorCQkJCXdlbnRy eS0+eGFjdF9jb21taXRfY291bnQrKzsKKwkJCQl3ZW50cnktPnhhY3RfY29tbWl0X2J5dGVzICs9 IG1zZy0+bV94YWN0X2J5dGVzOworCQkJCWJyZWFrOworCQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0df U1RSRUFNX0FCT1JUOgorCQkJCXdlbnRyeS0+eGFjdF9hYm9ydF9jb3VudCsrOworCQkJCXdlbnRy eS0+eGFjdF9hYm9ydF9ieXRlcyArPSBtc2ctPm1feGFjdF9ieXRlczsKKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbG9naWNhbCBtZXNzYWdlIHR5 cGUgYXMgbm9ybWFsIGFwcGx5IGVuZCIpOworCQkJCWJyZWFrOworCQl9CisJfQorfQorCisvKiAt LS0tLS0tLS0tCisgKiBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdCgpIC0KKyAq CisgKglQcm9jZXNzIGEgU1VCV09SS0VSVFdPUEhBU0VYQUNUIG1lc3NhZ2UuCisgKiAtLS0tLS0t LS0tCisgKi8KK3N0YXRpYyB2b2lkCitwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFj dChQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0ICptc2csIGludCBsZW4pCit7CisJUGdT dGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICpwcmVwYXJlZF90eG47CisJUGdTdGF0 X1N0YXREQkVudHJ5ICpkYmVudHJ5OworCVBnU3RhdF9TdGF0U3ViV29ya2VyRW50cnkgKndlbnRy eTsKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCBrZXk7CisKKwlwcmVwYXJlZF90 eG4gPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4obXNnLT5tX3N1YmlkLAorCQkJ CQkJCQkJCQkJCSBtc2ctPm1fZ2lkLCB0cnVlKTsKKwlBc3NlcnQocHJlcGFyZWRfdHhuKTsKKwlz d2l0Y2gobXNnLT5tX2NvbW1hbmQpCisJeworCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJF OgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKKwkJCS8qCisJCQkgKiBN YWtlIGVhY2ggc2l6ZSBvZiBwcmVwYXJlZCB0cmFuc2FjdGlvbiBwZXJzaXN0ZW50CisJCQkgKiBz byB0aGF0IHdlIGNhbiB1cGRhdGUgc3RhdHMgb3ZlciB0aGUgc2VydmVyIHJlc3RhcnQKKwkJCSAq IGFuZCBtYWtlIHByZXBhcmVkIHN0YXRzIHVwZGF0ZWQgd2hlbiBjb21taXQgcHJlcGFyZWQKKwkJ CSAqIG9yIHJvbGxiYWNrIHByZXBhcmVkIGFycml2ZXMuCisJCQkgKi8KKwkJCXByZXBhcmVkX3R4 bi0+c3ViaWQgPSBtc2ctPm1fc3ViaWQ7CisJCQlzdHJsY3B5KHByZXBhcmVkX3R4bi0+Z2lkLCBt c2ctPm1fZ2lkLCBzaXplb2YocHJlcGFyZWRfdHhuLT5naWQpKTsKKwkJCXByZXBhcmVkX3R4bi0+ eGFjdF9zaXplID0gbXNnLT5tX3hhY3RfYnl0ZXM7CisJCQlicmVhazsKKworCQljYXNlIExPR0lD QUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JPTExC QUNLX1BSRVBBUkVEOgorCQkJLyogVXBkYXRlIGV4cG9ydGVkIHhhY3Qgc3RhdHMgbm93ICovCisJ CQlkYmVudHJ5ID0gcGdzdGF0X2dldF9kYl9lbnRyeShtc2ctPm1fZGF0YWJhc2VpZCwgdHJ1ZSk7 CisJCQl3ZW50cnkgPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShkYmVudHJ5LAorCQkJCQkJ CQkJCQkJbXNnLT5tX3N1YmlkLAorCQkJCQkJCQkJCQkJSW52YWxpZE9pZCAvKiBhcHBseSB3b3Jr ZXIgKi8sCisJCQkJCQkJCQkJCQl0cnVlKTsKKwkJCUFzc2VydCh3ZW50cnkpOworCQkJaWYgKG1z Zy0+bV9jb21tYW5kID09IExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQpCisJCQl7CisJ CQkJd2VudHJ5LT54YWN0X2NvbW1pdF9jb3VudCsrOworCQkJCXdlbnRyeS0+eGFjdF9jb21taXRf Ynl0ZXMgKz0gcHJlcGFyZWRfdHhuLT54YWN0X3NpemU7CisJCQl9CisJCQllbHNlCisJCQl7CisJ CQkJd2VudHJ5LT54YWN0X2Fib3J0X2NvdW50Kys7CisJCQkJd2VudHJ5LT54YWN0X2Fib3J0X2J5 dGVzICs9IHByZXBhcmVkX3R4bi0+eGFjdF9zaXplOworCQkJfQorCisJCQkvKiBDbGVhbiB1cCB0 aGlzIGdpZCBmcm9tIHRyYW5zYWN0aW9uIHNpemUgaGFzaCAqLworCQkJa2V5LnN1YmlkID0gcHJl cGFyZWRfdHhuLT5zdWJpZDsKKwkJCXN0cmxjcHkoa2V5LmdpZCwgbXNnLT5tX2dpZCwgc2l6ZW9m KGtleS5naWQpKTsKKwkJCSh2b2lkKSBoYXNoX3NlYXJjaChzdWJXb3JrZXJQcmVwYXJlZFhhY3RT aXplSGFzaCwKKwkJCQkJCQkgICAodm9pZCAqKSAma2V5LCBIQVNIX1JFTU9WRSwgTlVMTCk7CisJ CQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbG9naWNh bCBtZXNzYWdlIHR5cGUgYXMgcHJlcGFyZSB0cmFuc2FjdGlvbiIpOworCQkJYnJlYWs7CisJfQor fQorCisvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfZXJyb3IoKSAtCiAg KgogICoJUHJvY2VzcyBhIFNVQldPUktFUkVSUk9SIG1lc3NhZ2UuCkBAIC02MTY2LDYgKzY0MDUs MTAgQEAgcGdzdGF0X3JlY3Zfc3Vid29ya2VyX2Vycm9yKFBnU3RhdF9Nc2dTdWJXb3JrZXJFcnJv ciAqbXNnLCBpbnQgbGVuKQogCQkJCQkJCQkJCSAgIG1zZy0+bV9zdWJyZWxpZCwgdHJ1ZSk7CiAJ QXNzZXJ0KHN1YndlbnRyeSk7CiAKKwkvKiBnZW5lcmFsIHRyYW5zYWN0aW9uIHN0YXRzIGZvciBl cnJvciAqLworCXN1YndlbnRyeS0+eGFjdF9lcnJvcl9jb3VudCsrOworCXN1YndlbnRyeS0+eGFj dF9lcnJvcl9ieXRlcyArPSBtc2ctPm1feGFjdF9lcnJvcl9ieXRlczsKKwogCS8qCiAJICogVXBk YXRlIG9ubHkgdGhlIGNvdW50ZXIgYW5kIHRpbWVzdGFtcCBpZiB3ZSByZWNlaXZlZCB0aGUgc2Ft ZSBlcnJvcgogCSAqIGFnYWluCkBAIC02MzM1LDYgKzY1NzgsMTIgQEAgcGdzdGF0X2dldF9zdWJ3 b3JrZXJfZW50cnkoUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5LCBPaWQgc3ViaWQsIE9pZCBz dWJyZWxpZCwKIAkvKiBJZiBub3QgZm91bmQsIGluaXRpYWxpemUgdGhlIG5ldyBvbmUgKi8KIAlp ZiAoY3JlYXRlICYmICFmb3VuZCkKIAl7CisJCXN1YndlbnRyeS0+eGFjdF9jb21taXRfY291bnQg PSAwOworCQlzdWJ3ZW50cnktPnhhY3RfY29tbWl0X2J5dGVzID0gMDsKKwkJc3Vid2VudHJ5LT54 YWN0X2Vycm9yX2NvdW50ID0gMDsKKwkJc3Vid2VudHJ5LT54YWN0X2Vycm9yX2J5dGVzID0gMDsK KwkJc3Vid2VudHJ5LT54YWN0X2Fib3J0X2NvdW50ID0gMDsKKwkJc3Vid2VudHJ5LT54YWN0X2Fi b3J0X2J5dGVzID0gMDsKIAkJc3Vid2VudHJ5LT5yZWxpZCA9IEludmFsaWRPaWQ7CiAJCXN1Yndl bnRyeS0+Y29tbWFuZCA9IDA7CiAJCXN1YndlbnRyeS0+eGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CkBAIC02NDUxLDMgKzY3MDAsNDggQEAgcGdzdGF0X2NvdW50X3NscnVfdHJ1bmNhdGUoaW50 IHNscnVfaWR4KQogewogCXNscnVfZW50cnkoc2xydV9pZHgpLT5tX3RydW5jYXRlICs9IDE7CiB9 CisKKyAvKiAtLS0tLS0tLS0tCisgKiBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4K KyAqCisgKiBSZXR1cm4gc3Vic2NyaXB0aW9uIHdvcmtlciBlbnRyeSB3aXRoIHRoZSBnaXZlbiBz dWJzY3JpcHRpb24gT0lEIGFuZAorICogZ2lkLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMg UGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKgorcGdzdGF0X2dldF9zdWJ3b3Jr ZXJfcHJlcGFyZWRfdHhuKE9pZCBzdWJpZCwgY2hhciAqZ2lkLCBib29sIGNyZWF0ZSkKK3sKKwlQ Z1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCBrZXk7CisJUGdTdGF0X1N0YXRTdWJXb3Jr ZXJQcmVwYXJlZFhhY3RTaXplICpwcmVwYXJlZF90eG5fc2l6ZTsKKwlIQVNIQUNUSU9OCWFjdGlv bjsKKwlib29sCQlmb3VuZDsKKworCWlmIChzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9 PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJaGFzaF9jdGw7CisKKwkJaGFzaF9jdGwua2V5c2l6ZSA9 IHNpemVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCk7CisJCWhhc2hfY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUpOwor CQloYXNoX2N0bC5oY3h0ID0gcGdTdGF0TG9jYWxDb250ZXh0OworCQlzdWJXb3JrZXJQcmVwYXJl ZFhhY3RTaXplSGFzaCA9IGhhc2hfY3JlYXRlKCJTdWJzY3JpcHRpb24gd29ya2VyIHN0YXRzIG9m IHByZXBhcmVkIHR4biIsCisJCQkJCQkJCQkJCQkJUEdTVEFUX1NVQldPUktFUl9IQVNIX1NJWkUs CisJCQkJCQkJCQkJCQkJJmhhc2hfY3RsLAorCQkJCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJfQorCisJa2V5LnN1YmlkID0gc3ViaWQ7CisJbWVtY3B5KGtleS5naWQsIGdp ZCwgc2l6ZW9mKGtleS5naWQpKTsKKwlhY3Rpb24gPSAoY3JlYXRlID8gSEFTSF9FTlRFUiA6IEhB U0hfRklORCk7CisJcHJlcGFyZWRfdHhuX3NpemUgPSAoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVw YXJlZFhhY3RTaXplICopIGhhc2hfc2VhcmNoKHN1YldvcmtlclByZXBhcmVkWGFjdFNpemVIYXNo LAorCQkJCQkJCQkJCQkJCQkJCQkJCSAodm9pZCAqKSAma2V5LAorCQkJCQkJCQkJCQkJCQkJCQkJ CSBhY3Rpb24sICZmb3VuZCk7CisKKwlpZiAoY3JlYXRlICYmICFmb3VuZCkKKwl7CisJCXByZXBh cmVkX3R4bl9zaXplLT5zdWJpZCA9IDA7CisJCXByZXBhcmVkX3R4bl9zaXplLT5naWRbMF0gPSAn XDAnOworCQlwcmVwYXJlZF90eG5fc2l6ZS0+eGFjdF9zaXplID0gMDsKKwl9CisKKwlyZXR1cm4g cHJlcGFyZWRfdHhuX3NpemU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYwppbmRleCBmMDc5ODNhLi5hZmY3OGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNDksNiArMTE0OSwxMiBAQCBjb3B5X3Rh YmxlX2RvbmU6CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxzdGF0ZV9sc24gPSAqb3JpZ2luX3N0 YXJ0cG9zOwogCVNwaW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxtdXRleCk7 CiAKKwkvKiBSZXBvcnQgdGhlIHN1Y2Nlc3Mgb2YgdGFibGUgc3luYy4gKi8KKwlwZ3N0YXRfcmVw b3J0X3N1Yndvcmtlcl94YWN0X2VuZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAorCQkJCQkJ CQkJIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCisJCQkJCQkJCQkgMCAvKiBubyBsb2dpY2Fs IG1lc3NhZ2UgdHlwZSAqLywKKwkJCQkJCQkJCSAwIC8qIHhhY3Qgc2l6ZSAqLyk7CisKIAkvKgog CSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRv IGNhdGNoIHVwIGFuZCB0aGVuCiAJICogcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29w IGRvIGl0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZTJh OTI5Yi4uZGI3YWJmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0yMjEsMjEgKzIyMSw2NSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tB cmcKIAlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KIAlMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKIAorCS8qCisJICogU3RvcmUgZGF0YSBzaXplIG9mIHRo aXMgdHJhbnNhY3Rpb24uCisJICoKKwkgKiBUaGUgYnl0ZSBzaXplIG9mIHRyYW5zYWN0aW9uIG9u IHRoZSBwdWJsaXNoZXIgaXMgY2FsY3VsYXRlZAorCSAqIGJ5IFJlb3JkZXJCdWZmZXJDaGFuZ2VT aXplKCkgYmFzZWQgb24gdGhlIFJlb3JkZXJCdWZmZXJDaGFuZ2UKKwkgKiBzdHJ1Y3R1cmUuIEJ1 dCBvbiB0aGUgc3Vic2NyaWJlciwgY29uc3VtZWQgcmVzb3VyY2VzIGFyZQorCSAqIG5vdCBzYW1l IGFzIHRoZSBwdWJsaXNoZXIncyBkZWNvZGluZyBwcm9jZXNzc2luZyBhbmQgcmVxdWlyZWQKKwkg KiB0byBiZSBjb21wdXRlZCBpbiBkaWZmZXJlbnQgd2F5LiBUaGVyZWZvcmUsIHRoZSBleGFjdCBz YW1lIGJ5dGUKKwkgKiBzaXplIGlzIG5vdCByZXN0b3JlZCBvbiB0aGUgc3Vic2NyaWJlciB1c3Vh bGx5LgorCSAqCisJICogRGF0YSBzaXplIG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaXMgbWFu YWdlZCBieSBzdHJlYW1pbmdYYWN0U2l6ZQorCSAqIGZvciBmbGV4aWJsZSBkYXRhIGJsb2NrcyBo YW5kbGluZy4KKwkgKi8KKwlQZ1N0YXRfQ291bnRlciBieXRlczsKKwogCS8qIFJlbW90ZSBub2Rl IGluZm9ybWF0aW9uICovCiAJaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAq LwogCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKIAlUaW1lc3RhbXBUeiB0czsJCQkJLyogY29t bWl0LCByb2xsYmFjaywgb3IgcHJlcGFyZSB0aW1lc3RhbXAgKi8KIH0gQXBwbHlFcnJvckNhbGxi YWNrQXJnOwogCisvKiBTdHJ1Y3QgdG8gaW5kaWNhdGUgZXh0cmEgY29uc3VtcHRpb24gb2YgdHJh bnNhY3Rpb24gc2l6ZSAqLwordHlwZWRlZiB1bmlvbiBBcHBseVR4bkV4dHJhRGF0YQoreworCUxv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CisJTG9naWNhbFJlcFJlbGF0aW9uICpy ZXByZWxhdGlvbjsKKwlpbnQgICAgICAgICAqc3RyZWFtX3dyaXRlX2xlbjsKK30gQXBwbHlUeG5F eHRyYURhdGE7CisKIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEwsCisJLmJ5dGVzID0g MCwKIAkucmVtb3RlX2F0dG51bSA9IC0xLAogCS5yZW1vdGVfeGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQsCiAJLnRzID0gMCwKIH07CiAKKy8qCisgKiBUd28gb3IgbW9yZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb25zIGluIHBhcmFsbGVsIG9uIHRoZSBwdWJsaXNoZXIKKyAqIGdlbmVyYXRlIHVuZXhw ZWN0ZWQgb3JkZXIgb2YgcGFydGlhbCB0eG4gZGF0YSBkZW1hcmNhdGVkIHN0cmVhbSBzdGFydAor ICogYW5kIHN0cmVhbSBzdG9wIHRvIHRoZSBzdWJzY3JpYmVyLCBzaW5jZSB3aGVuZXZlciBpdHMg c2l6ZSBvZiBvbmUgb2YKKyAqIHRoZSB0eG5zIHJlYWNoZXMgdGhlIHB1Ymxpc2hlcidzIGxvZ2lj YWxfZGVjb2Rpbmdfd29ya19tZW0sCisgKiB0aGUgcGFydCAoYW5kIGluIHRoZSBlbmQsIGxhc3Qg cmVtYWluaW5nIGNoYW5nZXMpIGlzIHN0cmVhbWVkLgorICogVGhpcyBjcmVhdGVzIG1peGVkIGJs b2NrcyBvZiBzdHJlYW1pbmcgZGF0YSB3aGlsZQorICogdGhlcmUncyBwb3NzaWJpbGl0eSBzb21l IGFyZSBzdWNjZXNzZnVsbHkgY29tbWl0dGVkIGJ1dCBvdGhlcnMgYXJlCisgKiBub3QgYnkgc3Ry ZWFtIGFib3J0LiBUaGVyZWZvcmUsIHRvIHRyYWNrIGNvcnJlY3QgYnl0ZSBzaXplCisgKiBpdCdz IG5lY2Vzc2FyeSB0byB0cmFjZSBlYWNoIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBieSBtYWtpbmcg cGFpcgorICogb2YgeGlkIGFuZCB0cmFuc2FjdGlvbiBzaXplLgorICovCisjZGVmaW5lIFBBUkFM TEVMX1NUUkVBTUlOR19YQUNUUyAzMgordHlwZWRlZiBzdHJ1Y3QgWGFjdFNpemVFbnRyeQorewor CVRyYW5zYWN0aW9uSWQJa2V5OworCVBnU3RhdF9Db3VudGVyCXhhY3Rfc2l6ZTsKK30gWGFjdFNp emVFbnRyeTsKK3N0YXRpYyBIVEFCICpzdHJlYW1pbmdYYWN0U2l6ZSA9IE5VTEw7CisKIHN0YXRp YyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4 dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCkBAIC0zMDQsNiArMzQ4LDkgQEAgc3RhdGljIHZvaWQg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIC8qIHByb3RvdHlwZSBuZWVkZWQgYmVj YXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCiBzdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpOwogCitzdGF0aWMgdm9pZCB1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLAorCQkJCQkJCQkJIEFwcGx5VHhuRXh0cmFEYXRhICpleHRyYV9k YXRhKTsKKwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2Fs UmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2lu c2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1 bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtODE4LDYgKzg2NSwxMSBAQCBhcHBseV9oYW5kbGVfY29t bWl0KFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29t bWl0X2RhdGEuZW5kX2xzbik7CiAKKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAorCQkJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJCQkJ CQkgTE9HSUNBTF9SRVBfTVNHX0NPTU1JVCwKKwkJCQkJCQkJCSBnZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0X3NpemUoKSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUs IE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtOTIyLDYg Kzk3NCwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAorCXBnc3Rh dF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwKKwkJCQkJCQkJCQkgIExPR0lDQUxfUkVQX01TR19QUkVQQVJFLAorCQkJCQkJCQkJCSAgZ2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCksCisJCQkJCQkJCQkJICBwcmVwYXJlX2Rh dGEuZ2lkKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC05NjMsNiArMTAyMCwxMyBA QCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNz IGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwog CXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCisJdXBkYXRl X2FwcGx5X2NoYW5nZV9zaXplKExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQsIE5VTEwp OworCisJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdChNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLAorCQkJCQkJCQkJCSAgTE9HSUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJF RCwKKwkJCQkJCQkJCQkgIGdldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSgpLAorCQkJ CQkJCQkJCSAgcHJlcGFyZV9kYXRhLmdpZCk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpA QCAtMTAxNCw2ICsxMDc4LDEyIEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2Rh dGEucm9sbGJhY2tfZW5kX2xzbik7CiAKKwkvKiBzZW5kIHJvbGxiYWNrIHByZXBhcmVkIG1lc3Nh Z2UgZm9yIHRoaXMgZ2lkICovCisJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFj dChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAorCQkJCQkJCQkJCSAgTE9HSUNBTF9SRVBfTVNH X1JPTExCQUNLX1BSRVBBUkVELAorCQkJCQkJCQkJCSAgZ2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdF9zaXplKCksCisJCQkJCQkJCQkJICByb2xsYmFja19kYXRhLmdpZCk7CisKIAlwZ3N0YXRf cmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOwogfQpAQCAtMTAyOSw2ICsxMDk5LDcgQEAgc3RhdGljIHZvaWQKIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcFByZXBh cmVkVHhuRGF0YSBwcmVwYXJlX2RhdGE7CisJWGFjdFNpemVFbnRyeSAqc3RyZWFtZWRfZW50cnk7 CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0x MDY2LDYgKzExMzcsMTkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8g cykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9s c24pOwogCisJLyoKKwkgKiBSZXBvcnQgdGhlIHByZXBhcmVkIHN0cmVhbWluZyB4YWN0IHNpemUg dG8gdGhlIHN0YXRzIGNvbGxlY3RvcgorCSAqIGluIGEgcHJlcGFyZWQgeGFjdCBtYW5uZXIgdG8g bWFrZSBpdCBzdXJ2aXZlIG92ZXIgdGhlIHJlc3RhcnQuCisJICovCisJc3RyZWFtZWRfZW50cnkg PSBoYXNoX3NlYXJjaChzdHJlYW1pbmdYYWN0U2l6ZSwKKwkJCQkJCQkJICh2b2lkICopICZwcmVw YXJlX2RhdGEueGlkLAorCQkJCQkJCQkgSEFTSF9GSU5ELCBOVUxMKTsKKwlBc3NlcnQoc3RyZWFt ZWRfZW50cnkpOworCXBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCQkgIExPR0lDQUxfUkVQX01TR19TVFJFQU1f UFJFUEFSRSwKKwkJCQkJCQkJCQkgIHN0cmVhbWVkX2VudHJ5LT54YWN0X3NpemUsCisJCQkJCQkJ CQkJICBwcmVwYXJlX2RhdGEuZ2lkKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVf SURMRSwgTlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTEx NDMsNiArMTIyNyw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQog CQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxl U2V0KSk7CiAJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQp OwogCisJCXVwZGF0ZV9hcHBseV9jaGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NU QVJULCBOVUxMKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAl9CiAKQEAg LTExOTMsMTIgKzEyNzksMTcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8g cykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqCisgKiBDdXJyZW50 bHksIGFib3J0IG9mIHN0cmVhbWluZyBzdWJ0cmFuc2FjdGlvbiBkb2VzIG5vdCBhZmZlY3QKKyAq IHNpemUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHJlc291cmNlcyBiZWNhdXNlIGl0IGhhcyB1 c2VkIHRoZQorICogcmVzb3VyY2VzIGFueXdheS4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hh bmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwog CVRyYW5zYWN0aW9uSWQgc3VieGlkOworCVhhY3RTaXplRW50cnkgKnN0cmVhbWVkX2VudHJ5Owog CiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTIx Myw4ICsxMzA0LDM2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQog CSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQogCXsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIDApOwogCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJCS8qCisJCSAqIFdlJ3Zl IGNvbXBsZXRlZCB0byBoYW5kbGUgc3RyZWFtIGFib3J0IHdpdGhvdXQgaXNzdWUsIHNvCisJCSAq IGdldCByZWFkeSB0byByZXBvcnQgdGhlIHRyYW5zYWN0aW9uIHN0YXRzIHZpYSBub3JtYWwKKwkJ ICogdGVybWluYXRpb24gcm91dGUgaW5zdGVhZCBvZiB0aGUgYXBwbHkgZXJyb3Igcm91dGUuCisJ CSAqLworCQlzdHJlYW1lZF9lbnRyeSA9IGhhc2hfc2VhcmNoKHN0cmVhbWluZ1hhY3RTaXplLAor CQkJCQkJCQkJICh2b2lkICopICZ4aWQsCisJCQkJCQkJCQkgSEFTSF9GSU5ELCAmZm91bmQpOwor CQkvKgorCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgZ2V0IHN0cmVhbSBhYm9ydAorCQkgKiBl YXJsaWVyIHRoYW4gYW55IGNhbGwgb2Ygd3JpdGVfc3RyZWFtX2NoYW5nZSB0aGF0CisJCSAqIGNy ZWF0ZXMgb25lIGhhc2ggZW50cnkgZm9yIHRoaXMgeGlkLiBJbiB0aGlzIGNhc2UsCisJCSAqIHRv IGZpbmQgYSBlbnRyeSB3aXRoIHRoaXMgeGlkIGZhaWxzLiBTbyBqdXN0IGNoZWNrCisJCSAqIGlm IHdlJ3ZlIGZvdW5kIGl0LiBPbmx5IHdoZW4gd2UgY29uZmlybSBzb21lIHdyaXRlcworCQkgKiBi eSB3cml0ZV9zdHJlYW1fY2hhbmdlLCByZXBvcnQgdGhlIHN0cmVhbV9hYm9ydC4KKwkJICovCisJ CWlmIChmb3VuZCkKKwkJeworCQkJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJCQkJ CQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JULAorCQkJCQkJCQkJCQkgc3RyZWFtZWRf ZW50cnktPnhhY3Rfc2l6ZSk7CisJCQkodm9pZCkgaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNp emUsCisJCQkJCQkJICAgKHZvaWQgKikgJnhpZCwKKwkJCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVM TCk7CisJCX0KIAl9CiAJZWxzZQogCXsKQEAgLTE0MTcsNiArMTUzNiw3IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlM b2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlYYWN0U2l6ZUVudHJ5ICpzdHJlYW1l ZF9lbnRyeTsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJP UiwKQEAgLTE0MzgsNiArMTU1OCwxOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJp bmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRh LmVuZF9sc24pOwogCisJLyogUmVwb3J0IGFuZCBjbGVhbiB1cCB0aGUgeGlkICovCisJc3RyZWFt ZWRfZW50cnkgPSBoYXNoX3NlYXJjaChzdHJlYW1pbmdYYWN0U2l6ZSwKKwkJCQkJCQkJICh2b2lk ICopICZ4aWQsCisJCQkJCQkJCSBIQVNIX0ZJTkQsIE5VTEwpOworCUFzc2VydChzdHJlYW1lZF9l bnRyeSk7CisJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIExPR0lDQUxfUkVQ X01TR19TVFJFQU1fQ09NTUlULAorCQkJCQkJCQkJIHN0cmVhbWVkX2VudHJ5LT54YWN0X3NpemUp OworCSh2b2lkKSBoYXNoX3NlYXJjaChzdHJlYW1pbmdYYWN0U2l6ZSwKKwkJCQkJICAgKHZvaWQg KikgJnhpZCwKKwkJCQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOworCiAJcGdzdGF0X3JlcG9ydF9h Y3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbygpOwpAQCAtMTU0MSw2ICsxNjc0LDcgQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJ bmZvIHMpCiAJRVN0YXRlCSAgICplc3RhdGU7CiAJVHVwbGVUYWJsZVNsb3QgKnJlbW90ZXNsb3Q7 CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJQXBwbHlUeG5FeHRyYURhdGEgZXh0cmFfc2l6ZTsK IAogCWlmIChoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX0lOU0VS VCwgcykpCiAJCXJldHVybjsKQEAgLTE1NzYsNiArMTcxMCwxMCBAQCBhcHBseV9oYW5kbGVfaW5z ZXJ0KFN0cmluZ0luZm8gcykKIAlzbG90X2ZpbGxfZGVmYXVsdHMocmVsLCBlc3RhdGUsIHJlbW90 ZXNsb3QpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJLyogVXBkYXRlIHRy YW5zYWN0aW9uIHNpemUgKi8KKwlleHRyYV9zaXplLnJlbG1hcGVudHJ5ID0gcmVsOworCXVwZGF0 ZV9hcHBseV9jaGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfSU5TRVJULCAmZXh0cmFfc2l6ZSk7 CisKIAkvKiBGb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSwgaW5zZXJ0IHRoZSB0dXBsZSBpbnRvIGEg cGFydGl0aW9uLiAqLwogCWlmIChyZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoZWRh dGEsCkBAIC0xNjY3LDYgKzE4MDUsNyBAQCBhcHBseV9oYW5kbGVfdXBkYXRlKFN0cmluZ0luZm8g cykKIAlUdXBsZVRhYmxlU2xvdCAqcmVtb3Rlc2xvdDsKIAlSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCUFwcGx5VHhuRXh0cmFEYXRhIGV4dHJhX3Np emU7CiAKIAlpZiAoaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19V UERBVEUsIHMpKQogCQlyZXR1cm47CkBAIC0xNzMzLDYgKzE4NzIsMTAgQEAgYXBwbHlfaGFuZGxl X3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJCQkJCWhhc19vbGR0dXAgPyAmb2xkdHVwIDogJm5ld3R1 cCk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwkvKiBVcGRhdGUgdHJhbnNh Y3Rpb24gc2l6ZSAqLworCWV4dHJhX3NpemUucmVsbWFwZW50cnkgPSByZWw7CisJdXBkYXRlX2Fw cGx5X2NoYW5nZV9zaXplKExPR0lDQUxfUkVQX01TR19VUERBVEUsICZleHRyYV9zaXplKTsKKwog CS8qIEZvciBhIHBhcnRpdGlvbmVkIHRhYmxlLCBhcHBseSB1cGRhdGUgdG8gY29ycmVjdCBwYXJ0 aXRpb24uICovCiAJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQogCQlhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhlZGF0YSwK QEAgLTE4MzAsNiArMTk3Myw3IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQog CUVTdGF0ZQkgICAqZXN0YXRlOwogCVR1cGxlVGFibGVTbG90ICpyZW1vdGVzbG90OwogCU1lbW9y eUNvbnRleHQgb2xkY3R4OworCUFwcGx5VHhuRXh0cmFEYXRhIGV4dHJhX3NpemU7CiAKIAlpZiAo aGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01TR19ERUxFVEUsIHMpKQog CQlyZXR1cm47CkBAIC0xODY3LDYgKzIwMTEsMTAgQEAgYXBwbHlfaGFuZGxlX2RlbGV0ZShTdHJp bmdJbmZvIHMpCiAJc2xvdF9zdG9yZV9kYXRhKHJlbW90ZXNsb3QsIHJlbCwgJm9sZHR1cCk7CiAJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKKwkvKiBVcGRhdGUgdHJhbnNhY3Rpb24g c2l6ZSAqLworCWV4dHJhX3NpemUucmVsbWFwZW50cnkgPSAgcmVsOworCXVwZGF0ZV9hcHBseV9j aGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfREVMRVRFLCAmZXh0cmFfc2l6ZSk7CisKIAkvKiBG b3IgYSBwYXJ0aXRpb25lZCB0YWJsZSwgYXBwbHkgZGVsZXRlIHRvIGNvcnJlY3QgcGFydGl0aW9u LiAqLwogCWlmIChyZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSkKIAkJYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoZWRhdGEsCkBAIC0y NDE4LDYgKzI1NjYsMTExIEBAIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcykKIH0KIAogLyoK KyAqIFN1YnNjcmliZXIgc2lkZSBpbXBsZW1lbnRhdGlvbiBlcXVpdmFsZW50IHRvIFJlb3JkZXJC dWZmZXJDaGFuZ2VTaXplCisgKiBvZiB0aGUgcHVibGlzaGVyLgorICoKKyAqIEFjY29yZGluZyB0 byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBtZXNzYWdlIHR5cGUsIHJlY29yZCBtYWpvcgorICog cmVzb3VyY2UgY29uc3VtcHRpb25zIG9mIHRoaXMgc3Vic2NyaXB0aW9uIGZvciBlYWNoIG1lc3Nh Z2UuCisgKiBBdCBwcmVzZW50LCBkbyBub3QgY29sbGVjdCBkYXRhIGZyb20gZ2VuZXJpYyBmdW5j dGlvbnMgdG8ga2VlcAorICogY29kZSBzaW1wbGljaXR5LCBzaW5jZSB0aGUgaW1wbGVtZW50YXRp b24gY29tcGxleGl0eSB2ZXJzdXMgYmVuZWZpdAorICogdHJhZGVvZmYgc2hvdWxkIG5vdCBiZSBn b29kLiBBbHNvLCBhZGQgbXVsdGlwbGUgdmFsdWVzCisgKiBhdCBvbmNlIGluIG9yZGVyIHRvIHJl ZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uCisgKgorICogJ2V4dHJh X2RhdGEnIGNvbnRyb2xzIGRldGFpbCBoYW5kbGluZyBvZiBkYXRhIHNpemUgY2FsY3VsYXRpb24u CisgKi8KK3N0YXRpYyB2b2lkCit1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTG9naWNhbFJlcE1z Z1R5cGUgYWN0aW9uLCBBcHBseVR4bkV4dHJhRGF0YSAqZXh0cmFfZGF0YSkKK3sKKwlpbnQ2NCAg ICAgICBzaXplID0gMDsKKworCS8qCisJICogSW4gc3RyZWFtaW5nIG1vZGUsIHN0cmVhbV93cml0 ZV9jaGFuZ2UgaXMgY2FsbGVkCisJICogaW5zdGVhZCBvZiBpbW1lZGlhdGUgYXBwbHkuIExpc3Qg dXAgdGhlIG1lc3NhZ2VzIHR5cGVzCisJICogdGhhdCBjYW4gYmUgY2F1Z2h0IGJ5IGhhbmRsZV9z dHJlYW1lZF90cmFuc2FjdGlvbiBhbmQKKwkgKiB0cmVhdCB0aGUgd3JpdGUgbGVuZ3RoIGFzIHRo ZSBzaXplIG9mIHRyYW5zYWN0aW9uIHNvCisJICogdGhhdCB3ZSBjYW4gZXhwb3J0IGl0IGFzIHBh cnQgb2YgcGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2Vycy4KKwkgKi8KKwlpZiAoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24gJiYKKwkJKGFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfSU5TRVJUIHx8 CisJCSBhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1VQREFURSB8fAorCQkgYWN0aW9uID09IExP R0lDQUxfUkVQX01TR19ERUxFVEUgfHwKKwkJIGFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfVFJV TkNBVEUgfHwKKwkJIGFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gfHwKKwkJIGFj dGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSkpCisJeworCQlzaXplICs9ICpleHRyYV9kYXRh LT5zdHJlYW1fd3JpdGVfbGVuOworCQlhZGRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUo c2l6ZSk7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKGFjdGlvbikKKwl7CisJCS8qIE5vIHNw ZWNpYWwgbWVtb3J5IGNvbnN1bXB0aW9uICovCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0JFR0lO OgorCQljYXNlIExPR0lDQUxfUkVQX01TR19DT01NSVQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X1RSVU5DQVRFOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19UWVBFOgorCQljYXNlIExPR0lDQUxf UkVQX01TR19PUklHSU46CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX01FU1NBR0U6CisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJF QU1fQUJPUlQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkU6CisJCQlicmVh azsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19JTlNFUlQ6CisJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1VQREFURToKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfREVMRVRFOgorCQkJQXNzZXJ0KGV4 dHJhX2RhdGEgIT0gTlVMTCk7CisKKwkJCS8qCisJCQkgKiBDb21wdXRlIHNpemUgYmFzZWQgb24g QXBwbHlFeGVjdXRpb25EYXRhLgorCQkJICogVGhlIHNpemUgb2YgTG9naWNhbFJlcFJlbE1hcEVu dHJ5IGNhbiBiZSBza2lwcGVkIGJlY2F1c2UKKwkJCSAqIGl0IGlzIG9idGFpbmVkIGZyb20gaGFz aF9zZWFyY2ggaW4gbG9naWNhbHJlcF9yZWxfb3Blbi4KKwkJCSAqLworCQkJc2l6ZSArPSBzaXpl b2YoQXBwbHlFeGVjdXRpb25EYXRhKSArIHNpemVvZihFU3RhdGUpICsKKwkJCQlzaXplb2YoUmVz dWx0UmVsSW5mbykgKyBzaXplb2YoUmVzdWx0UmVsSW5mbyk7CisKKwkJCS8qCisJCQkgKiBBZGQg c29tZSBleHRyYSBzaXplIGlmIHRoZSB0YXJnZXQgcmVsYXRpb24gaXMgcGFydGl0aW9uZWQuCisJ CQkgKiBQYXJ0aXRpb25UdXBsZVJvdXRpbmcgaXNuJ3QgZXhwb3J0ZWQuIFRoZXJlZm9yZSwgY2Fs bCB0aGUKKwkJCSAqIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpdHMgc2l6ZSBpbnN0ZWFkLgorCQkJ ICovCisJCQlpZiAoZXh0cmFfZGF0YS0+cmVsbWFwZW50cnktPmxvY2FscmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQlzaXplICs9IHNpemVvZihN b2RpZnlUYWJsZVN0YXRlKSArIFBhcnRpdGlvblR1cGxlUm91dGluZ1NpemUoKTsKKwkJCWJyZWFr OworCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OOgorCQkJQXNzZXJ0KGV4dHJhX2Rh dGEgIT0gTlVMTCk7CisKKwkJCS8qIFNlZSBsb2dpY2FscmVwX3JlYWRfYXR0cnMgZm9yIHRoZSBs YXN0IHR3byAqLworCQkJc2l6ZSArPSBzaXplb2YoTG9naWNhbFJlcFJlbGF0aW9uKSArCisJCQkJ ZXh0cmFfZGF0YS0+cmVwcmVsYXRpb24tPm5hdHRzICogc2l6ZW9mKGNoYXIgKikgKworCQkJCWV4 dHJhX2RhdGEtPnJlcHJlbGF0aW9uLT5uYXR0cyAqIHNpemVvZihPaWQpOworCQkJYnJlYWs7CisK KwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJUOgorCQkJc2l6ZSArPSBzaXplb2Yo RmlsZVNldCk7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgor CQljYXNlIExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQ6CisJCWNhc2UgTE9HSUNBTF9S RVBfTVNHX1JPTExCQUNLX1BSRVBBUkVEOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1f Q09NTUlUOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKKwkJCXNpemUg Kz0gc2l6ZW9mKEZsdXNoUG9zaXRpb24pOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwK KwkJCQkJIGVycm1zZygiaW52YWxpZCBsb2dpY2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2UgdHlwZSBc IiVjXCIiLCBhY3Rpb24pKSk7CisJfQorCisJLyogdXBkYXRlIHRoZSB0b3RhbCBzaXplIG9mIGNv bnN1bXB0aW9uICovCisJYWRkX2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKHNpemUpOwor fQorCisvKgogICogRmlndXJlIG91dCB3aGljaCB3cml0ZS9mbHVzaCBwb3NpdGlvbnMgdG8gcmVw b3J0IHRvIHRoZSB3YWxzZW5kZXIgcHJvY2Vzcy4KICAqCiAgKiBXZSBjYW4ndCBzaW1wbHkgcmVw b3J0IGJhY2sgdGhlIGxhc3QgTFNOIHRoZSB3YWxzZW5kZXIgc2VudCB1cyBiZWNhdXNlIHRoZQpA QCAtMzI3MSw2ICszNTI0LDkgQEAgc3RhdGljIHZvaWQKIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hh ciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47CisJaW50CQkJdG90YWxfbGVu OworCWJvb2wJCWZvdW5kOworCVhhY3RTaXplRW50cnkgKnN0cmVhbWVkX2VudHJ5OwogCiAJQXNz ZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoc3RyZWFtX3hpZCkpOwpAQCAtMzI4OSw2ICszNTQ1LDE2IEBAIHN0cmVhbV93cml0ZV9jaGFu Z2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlsZW4gPSAocy0+bGVuIC0gcy0+Y3Vyc29y KTsKIAogCUJ1ZkZpbGVXcml0ZShzdHJlYW1fZmQsICZzLT5kYXRhW3MtPmN1cnNvcl0sIGxlbik7 CisKKwkvKiB1cGRhdGUgeGFjdCBzaXplIGJ5IHhpZCAqLworCXRvdGFsX2xlbiA9IChzLT5sZW4g LSBzLT5jdXJzb3IpICogMiArIHNpemVvZihjaGFyKSArIHNpemVvZihhY3Rpb24pOworCXN0cmVh bWVkX2VudHJ5ID0gKFhhY3RTaXplRW50cnkgKikgaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNp emUsCisJCQkJCQkJCQkJCQkgICAodm9pZCAqKSAmc3RyZWFtX3hpZCwKKwkJCQkJCQkJCQkJCSAg IEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwkJc3RyZWFtZWRfZW50cnktPnhh Y3Rfc2l6ZSA9IHRvdGFsX2xlbjsgLyogaW5pdCAqLworCWVsc2UKKwkJc3RyZWFtZWRfZW50cnkt PnhhY3Rfc2l6ZSArPSB0b3RhbF9sZW47IC8qIHVwZGF0ZSAqLwogfQogCiAvKgpAQCAtMzQyNiw2 ICszNjkyLDIzIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAllbG9nKERFQlVH MSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNc IiIsCiAJCSBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pOwogCisJLyoKKwkgKiBJbml0aWFsaXpl IHRoZSBhcHBseSB3b3JrZXIncyBoYXNoIHRvIG1hbmFnZSBieXRlcyBmb3IKKwkgKiBzdHJlYW1p bmcgdHhucy4KKwkgKi8KKwlpZiAoIWFtX3RhYmxlc3luY193b3JrZXIoKSAmJiBNeVN1YnNjcmlw dGlvbi0+c3RyZWFtKQorCXsKKwkJSEFTSENUTCAgICAgaGFzaF9jdGw7CisKKwkJaGFzaF9jdGwu a2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJaGFzaF9jdGwuZW50cnlzaXplID0g c2l6ZW9mKFhhY3RTaXplRW50cnkpOworCQloYXNoX2N0bC5oY3h0ID0gTG9naWNhbFN0cmVhbWlu Z0NvbnRleHQ7CisJCXN0cmVhbWluZ1hhY3RTaXplID0gaGFzaF9jcmVhdGUoInhhY3Qgc2l6ZSBw ZXIgc3RyZWFtaW5nIHhpZCIsCisJCQkJCQkJCQkJUEFSQUxMRUxfU1RSRUFNSU5HX1hBQ1RTLAor CQkJCQkJCQkJCSZoYXNoX2N0bCwKKwkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwl9CisKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCXsKIAkJ Y2hhcgkgICAqc3luY3Nsb3RuYW1lOwpAQCAtMzYwMSw2ICszODg0LDI3IEBAIEFwcGx5V29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAlwcm9jX2V4aXQoMCk7CiB9CiAKKy8qIEV4cG9ydGVkIHNv IHRoYXQgc3RhdHMgY29sbGVjdG9yIGNhbiB1dGlsaXplIHRoaXMgdmFsdWUgKi8KK2ludDY0Citn ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9pZCkKK3sKKwlyZXR1cm4gYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnLmJ5dGVzOworfQorCisvKiBBZGQgc2l6ZSB0byBhcHBseSBlcnJv ciBieXRlcyAqLwordm9pZAorYWRkX2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKGludDY0 IHNpemUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLmJ5dGVzICs9IHNpemU7Cit9CisK Ky8qIFJlc2V0IGluZm9ybWF0aW9uIG9mIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCit2b2lkCity ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2b2lkKQoreworCWFwcGx5X2Vycm9y X2NhbGxiYWNrX2FyZy5ieXRlcyA9IDA7Cit9CisKIC8qCiAgKiBJcyBjdXJyZW50IHByb2Nlc3Mg YSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcj8KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0 ZnVuY3MuYwppbmRleCBhYTE3YjgyLi5jOTAyNzk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0 ZnVuY3MuYwpAQCAtMjQxMSw3ICsyNDExLDcgQEAgcGdfc3RhdF9nZXRfcmVwbGljYXRpb25fc2xv dChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3Jr ZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfU1RBVF9HRVRfU1VCU0NSSVBUSU9O X1dPUktFUl9DT0xTCTgKKyNkZWZpbmUgUEdfU1RBVF9HRVRfU1VCU0NSSVBUSU9OX1dPUktFUl9D T0xTCTE0CiAJT2lkCQkJc3ViaWQgPSBQR19HRVRBUkdfT0lEKDApOwogCU9pZAkJCXN1YnJlbGlk OwogCVR1cGxlRGVzYwl0dXBkZXNjOwpAQCAtMjQzOCwxNyArMjQzOCwyOSBAQCBwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb25fd29ya2VyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCSAgIE9JRE9JRCwg LTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgInN1 YnJlbGlkIiwKIAkJCQkJICAgT0lET0lELCAtMSwgMCk7Ci0JVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAicmVsaWQiLAorCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLCAoQXR0ck51bWJlcikgMywgImNvbW1pdF9jb3VudCIsCisJCQkJCSAgIElOVDhPSUQsIC0x LCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQsICJjb21t aXRfYnl0ZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5 KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA1LCAiZXJyb3JfY291bnQiLAorCQkJCQkgICBJTlQ4T0lE LCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2LCAi ZXJyb3JfYnl0ZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA3LCAiYWJvcnRfY291bnQiLAorCQkJCQkgICBJTlQ4 T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA4 LCAiYWJvcnRfYnl0ZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA5LCAibGFzdF9lcnJvcl9yZWxpZCIsCiAJCQkJ CSAgIE9JRE9JRCwgLTEsIDApOwotCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51 bWJlcikgNCwgImNvbW1hbmQiLAorCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51 bWJlcikgMTAsICJsYXN0X2Vycm9yX2NvbW1hbmQiLAogCQkJCQkgICBURVhUT0lELCAtMSwgMCk7 Ci0JVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA1LCAieGlkIiwKKwlU dXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDExLCAibGFzdF9lcnJvcl94 aWQiLAogCQkJCQkgICBYSURPSUQsIC0xLCAwKTsKLQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVz YywgKEF0dHJOdW1iZXIpIDYsICJlcnJvcl9jb3VudCIsCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSAxMiwgImxhc3RfZXJyb3JfY291bnQiLAogCQkJCQkgICBJTlQ4 T0lELCAtMSwgMCk7Ci0JVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA3 LCAiZXJyb3JfbWVzc2FnZSIsCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSAxMywgImxhc3RfZXJyb3JfbWVzc2FnZSIsCiAJCQkJCSAgIFRFWFRPSUQsIC0xLCAwKTsK LQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDgsICJsYXN0X2Vycm9y X3RpbWUiLAorCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTQsICJs YXN0X2Vycm9yX3RpbWUiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCUJsZXNz VHVwbGVEZXNjKHR1cGRlc2MpOwogCkBAIC0yNDY2LDI4ICsyNDc4LDM2IEBAIHBnX3N0YXRfZ2V0 X3N1YnNjcmlwdGlvbl93b3JrZXIoUEdfRlVOQ1RJT05fQVJHUykKIAllbHNlCiAJCW51bGxzW2kr K10gPSB0cnVlOwogCi0JLyogcmVsaWQgKi8KKwkvKiB0cmFuc2FjdGlvbiBzdGF0cyAqLworCXZh bHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh3ZW50cnktPnhhY3RfY29tbWl0X2NvdW50KTsKKwl2 YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0od2VudHJ5LT54YWN0X2NvbW1pdF9ieXRlcyk7CisJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9lcnJvcl9jb3VudCk7CisJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9lcnJvcl9ieXRlcyk7CisJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9hYm9ydF9jb3VudCk7CisJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9hYm9ydF9ieXRlcyk7CisK KwkvKiBsYXN0X2Vycm9yX3JlbGlkICovCiAJaWYgKE9pZElzVmFsaWQod2VudHJ5LT5yZWxpZCkp CiAJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bSh3ZW50cnktPnJlbGlkKTsKIAllbHNl CiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogY29tbWFuZCAqLworCS8qIGxhc3RfZXJyb3Jf Y29tbWFuZCAqLwogCWlmICh3ZW50cnktPmNvbW1hbmQgIT0gMCkKIAkJdmFsdWVzW2krK10gPSBD U3RyaW5nR2V0VGV4dERhdHVtKGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKHdlbnRyeS0+Y29tbWFu ZCkpOwogCWVsc2UKIAkJbnVsbHNbaSsrXSA9IHRydWU7CiAKLQkvKiB4aWQgKi8KKwkvKiBsYXN0 X2Vycm9yX3hpZCAqLwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh3ZW50cnktPnhpZCkpCiAJ CXZhbHVlc1tpKytdID0gVHJhbnNhY3Rpb25JZEdldERhdHVtKHdlbnRyeS0+eGlkKTsKIAllbHNl CiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogZXJyb3JfY291bnQgKi8KKwkvKiBsYXN0X2Vy cm9yX2NvdW50ICovCiAJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+ZXJyb3Jf Y291bnQpOwogCi0JLyogZXJyb3JfbWVzc2FnZSAqLworCS8qIGxhc3RfZXJyb3JfbWVzc2FnZSAq LwogCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bSh3ZW50cnktPmVycm9yX21lc3Nh Z2UpOwogCiAJLyogbGFzdF9lcnJvcl90aW1lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCA1MjhjMzlkLi5mMjc2YjBiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzODksOSAr NTM4OSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXIn LCBwcm9yb3dzID0+ICcxJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3Qn LCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9 PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCBvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne29pZCxvaWQsb2lkLG9pZCxvaWQsdGV4dCx4aWQsaW50OCx0ZXh0LHRpbWVzdGFtcHR6fScs Ci0gIHByb2FyZ21vZGVzID0+ICd7aSxpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1l cyA9PiAne3N1YmlkLHN1YnJlbGlkLHN1YmlkLHN1YnJlbGlkLHJlbGlkLGNvbW1hbmQseGlkLGVy cm9yX2NvdW50LGVycm9yX21lc3NhZ2UsbGFzdF9lcnJvcl90aW1lfScsCisgIHByb2FsbGFyZ3R5 cGVzID0+ICd7b2lkLG9pZCxvaWQsb2lkLGludDgsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LG9p ZCx0ZXh0LHhpZCxpbnQ4LHRleHQsdGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tp LGksbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c3Vi aWQsc3VicmVsaWQsc3ViaWQsc3VicmVsaWQsY29tbWl0X2NvdW50LGNvbW1pdF9ieXRlcyxlcnJv cl9jb3VudCxlcnJvcl9ieXRlcyxhYm9ydF9jb3VudCxhYm9ydF9ieXRlcyxsYXN0X2Vycm9yX3Jl bGlkLGxhc3RfZXJyb3JfY29tbWFuZCxsYXN0X2Vycm9yX3hpZCxsYXN0X2Vycm9yX2NvdW50LGxh c3RfZXJyb3JfbWVzc2FnZSxsYXN0X2Vycm9yX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF9zdWJzY3JpcHRpb25fd29ya2VyJyB9LAogeyBvaWQgPT4gJzYxMTgnLCBkZXNjciA9PiAn c3RhdGlzdGljczogaW5mb3JtYXRpb24gYWJvdXQgc3Vic2NyaXB0aW9uJywKICAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmlj dCA9PiAnZicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggNjk0ZTM4Yi4u NzczZTQ2YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtMTEwLDYgKzEx MCw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lU3RhdGUKIAlQYXJ0aXRpb25QcnVu aW5nRGF0YSAqcGFydHBydW5lZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBQYXJ0aXRp b25QcnVuZVN0YXRlOwogCitleHRlcm4gc2l6ZV90IFBhcnRpdGlvblR1cGxlUm91dGluZ1NpemUo dm9pZCk7CiBleHRlcm4gUGFydGl0aW9uVHVwbGVSb3V0aW5nICpFeGVjU2V0dXBQYXJ0aXRpb25U dXBsZVJvdXRpbmcoRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCQkJCQkgUmVsYXRpb24gcmVs KTsKIGV4dGVybiBSZXN1bHRSZWxJbmZvICpFeGVjRmluZFBhcnRpdGlvbihNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaAppbmRleCAzNzQ5YmFjLi45MWE5MmRhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtODcsNiArODcsOCBA QCB0eXBlZGVmIGVudW0gU3RhdE1zZ1R5cGUKIAlQR1NUQVRfTVRZUEVfRElTQ09OTkVDVCwKIAlQ R1NUQVRfTVRZUEVfU1VCU0NSSVBUSU9OUFVSR0UsCiAJUEdTVEFUX01UWVBFX1NVQldPUktFUkVS Uk9SLAorCVBHU1RBVF9NVFlQRV9TVUJXT1JLRVJYQUNURU5ELAorCVBHU1RBVF9NVFlQRV9TVUJX T1JLRVJUV09QSEFTRVhBQ1QsCiB9IFN0YXRNc2dUeXBlOwogCiAvKiAtLS0tLS0tLS0tCkBAIC01 NzksNiArNTgxLDU2IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9Nc2dTdWJzY3JpcHRpb25QdXJn ZQogfSBQZ1N0YXRfTXNnU3Vic2NyaXB0aW9uUHVyZ2U7CiAKIC8qIC0tLS0tLS0tLS0KKyAqIFBn U3RhdF9Nc2dTdWJzY3JpcHRpb25YYWN0RW5kCVNlbnQgYnkgdGhlIGFwcGx5IHdvcmtlciBvciB0 aGUgdGFibGUgc3luYyB3b3JrZXIKKyAqCQkJCQkJCQkJdG8gcmVwb3J0IHN1Y2Nlc3NmdWwgdHJh bnNhY3Rpb24gZW5kcy4KKyAqIC0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0 X01zZ1N1YldvcmtlclhhY3RFbmQKK3sKKwlQZ1N0YXRfTXNnSGRyIG1faGRyOworCisJLyogZGV0 ZXJtaW5lIHRoZSB3b3JrZXIgZW50cnkgKi8KKwlPaWQJCQltX2RhdGFiYXNlaWQ7CisJT2lkCQkJ bV9zdWJpZDsKKwlPaWQJCQltX3N1YnJlbGlkOworCisJLyoKKwkgKiBkaXN0aW5ndWlzaCBiZXR3 ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdHMgYW5kIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhYm9ydHMK KwkgKiB0aGF0IGFyZSBoYW5kbGVkIHdpdGhvdXQgZXJyb3IuCisJICovCisJTG9naWNhbFJlcE1z Z1R5cGUgbV9jb21tYW5kOworCisJLyogbWVtb3J5IGNvbnN1bXB0aW9uIHVzZWQgYnkgdHJhbnNh Y3Rpb24gKi8KKwlQZ1N0YXRfQ291bnRlciBtX3hhY3RfYnl0ZXM7CisKK30gUGdTdGF0X01zZ1N1 YldvcmtlclhhY3RFbmQ7CisKKy8qIC0tLS0tLS0tLS0KKyAqIFBnU3RhdF9Nc2dTdWJXb3JrZXJU d29waGFzZVhhY3QJU2VudCBieSB0aGUgYXBwbHkgd29ya2VyIHRvIG1ha2Ugc2l6ZSBvZiBwcmVw YXJlZAorICoJCQkJCQkJCQl0eG4gcGVyc2lzdGVudCBvdmVyIHRoZSBzZXJ2ZXIgcmVzdGFydCBh bmQgbWFrZSBpdAorICoJCQkJCQkJCQl2aXNpYmxlIGFmdGVyIGNvbW1pdCBwcmVwYXJlIG9yIHJv bGxiYWNrIHByZXBhcmVkLgorICoJCQkJCQkJCQlUaGlzIGlzIHNlcGFyYXRlZCBmcm9tIFBnU3Rh dF9Nc2dTdWJXb3JrZXJYYWN0RW5kCisgKgkJCQkJCQkJCXNvIHRoYXQgd2UgY2FuIHJlZHVjZSBt ZXNzYWdlIHNpemUgb2YgZ2lkIGZvciBvdGhlcgorICoJCQkJCQkJCQlvcGVyYXRpb25zIChlLmcu IG5vcm1hbCBDT01NSVQpIHRoYXQgc2hvdWxkIGhhcHBlbiBtb3JlCisgKgkJCQkJCQkJCWZyZXF1 ZW50bHkgdGhhbiBwcmVwYXJlIG9wZXJhdGlvbiB1c3VhbGx5LgorICogLS0tLS0tLS0tLQorICov Cit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0Cit7CisJUGdT dGF0X01zZ0hkciBtX2hkcjsKKworCS8qIGRldGVybWluZSB0aGUgc3Vic2NyaXB0aW9uICovCisJ T2lkCQkJbV9kYXRhYmFzZWlkOworCU9pZAkJCW1fc3ViaWQ7CisKKwlMb2dpY2FsUmVwTXNnVHlw ZSBtX2NvbW1hbmQ7CisJY2hhcgkJCW1fZ2lkW0dJRFNJWkVdOworCWludAkJCWdpZF9sZW47CisJ UGdTdGF0X0NvdW50ZXIgbV94YWN0X2J5dGVzOworCit9IFBnU3RhdF9Nc2dTdWJXb3JrZXJUd29w aGFzZVhhY3Q7CisKKy8qIC0tLS0tLS0tLS0KICAqIFBnU3RhdF9Nc2dTdWJXb3JrZXJFcnJvcgkJ U2VudCBieSB0aGUgYXBwbHkgd29ya2VyIG9yIHRoZSB0YWJsZSBzeW5jIHdvcmtlciB0bwogICoJ CQkJCQkJCXJlcG9ydCB0aGUgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRp b24uCiAgKiAtLS0tLS0tLS0tCkBAIC01OTgsNiArNjUwLDEyIEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9Nc2dTdWJXb3JrZXJFcnJvcgogCU9pZAkJCW1fc3VicmVsaWQ7CiAKIAkvKgorCSAqIFRy YW5zYWN0aW9uIHN0YXRzIG9mIHN1YnNjcmlwdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkIHdoZW4g YW4KKwkgKiBlcnJvciBvY2N1cnMuCisJICovCisJUGdTdGF0X0NvdW50ZXIgbV94YWN0X2Vycm9y X2J5dGVzOworCisJLyoKIAkgKiBPaWRzIG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhlIHRhYmxlIHRo YXQgdGhlIHJlcG9ydGVyIHdhcyBhY3R1YWxseQogCSAqIHByb2Nlc3NpbmcuIG1fcmVsaWQgY2Fu IGJlIEludmFsaWRPaWQgaWYgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nCiAJICogd29ya2VyIGFw cGx5aW5nIGEgbm9uLWRhdGEtbW9kaWZpY2F0aW9uIG1lc3NhZ2Ugc3VjaCBhcyBSRUxBVElPTi4K QEAgLTc5MCw2ICs4NDgsOCBAQCB0eXBlZGVmIHVuaW9uIFBnU3RhdF9Nc2cKIAlQZ1N0YXRfTXNn RGlzY29ubmVjdCBtc2dfZGlzY29ubmVjdDsKIAlQZ1N0YXRfTXNnU3Vic2NyaXB0aW9uUHVyZ2Ug bXNnX3N1YnNjcmlwdGlvbnB1cmdlOwogCVBnU3RhdF9Nc2dTdWJXb3JrZXJFcnJvciBtc2dfc3Vi d29ya2VyZXJyb3I7CisJUGdTdGF0X01zZ1N1YldvcmtlclhhY3RFbmQgbXNnX3N1Yndvcmtlcnhh Y3RlbmQ7CisJUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdCBtc2dfc3Vid29ya2VydHdv cGhhc2V4YWN0OwogfSBQZ1N0YXRfTXNnOwogCiAKQEAgLTEwMjcsNiArMTA4NywxNiBAQCB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5CiAJUGdTdGF0X1N0YXRTdWJXb3Jr ZXJLZXkga2V5OwkvKiBoYXNoIGtleSAobXVzdCBiZSBmaXJzdCkgKi8KIAogCS8qCisJICogQ3Vt dWxhdGl2ZSB0cmFuc2FjdGlvbiBzdGF0aXN0aWNzIG9mIHN1YnNjcmlwdGlvbiB3b3JrZXIKKwkg Ki8KKwlQZ1N0YXRfQ291bnRlciB4YWN0X2NvbW1pdF9jb3VudDsKKwlQZ1N0YXRfQ291bnRlciB4 YWN0X2NvbW1pdF9ieXRlczsKKwlQZ1N0YXRfQ291bnRlciB4YWN0X2Vycm9yX2NvdW50OworCVBn U3RhdF9Db3VudGVyIHhhY3RfZXJyb3JfYnl0ZXM7CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9hYm9y dF9jb3VudDsKKwlQZ1N0YXRfQ291bnRlciB4YWN0X2Fib3J0X2J5dGVzOworCisJLyoKIAkgKiBT dWJzY3JpcHRpb24gd29ya2VyIGVycm9yIHN0YXRpc3RpY3MgcmVwcmVzZW50aW5nIGFuIGVycm9y IHRoYXQKIAkgKiBvY2N1cnJlZCBkdXJpbmcgYXBwbGljYXRpb24gb2YgbG9naWNhbCByZXBsaWNh dGlvbiBvciB0aGUgaW5pdGlhbCB0YWJsZQogCSAqIHN5bmNocm9uaXphdGlvbi4KQEAgLTEwNDAs NiArMTExMCwyMiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5CiAJ Y2hhcgkJZXJyb3JfbWVzc2FnZVtQR1NUQVRfU1VCV09SS0VSRVJST1JfTVNHTEVOXTsKIH0gUGdT dGF0X1N0YXRTdWJXb3JrZXJFbnRyeTsKIAorLyogcHJlcGFyZWQgdHJhbnNhY3Rpb24gKi8KK3R5 cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0Cit7CisJT2lkCQkJ c3ViaWQ7CisJY2hhcgkJZ2lkW0dJRFNJWkVdOworfSBQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBh cmVkWGFjdDsKKwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhh Y3RTaXplCit7CisJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3Qga2V5OyAvKiBoYXNo IGtleSAqLworCisJT2lkCQkJc3ViaWQ7CisJY2hhcgkJZ2lkW0dJRFNJWkVdOworCVBnU3RhdF9D b3VudGVyIHhhY3Rfc2l6ZTsKK30gUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXpl OworCiAvKgogICogV29ya2luZyBzdGF0ZSBuZWVkZWQgdG8gYWNjdW11bGF0ZSBwZXItZnVuY3Rp b24tY2FsbCB0aW1pbmcgc3RhdGlzdGljcy4KICAqLwpAQCAtMTE0OSw2ICsxMjM1LDEwIEBAIGV4 dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfY2hlY2tzdW1fZmFpbHVyZSh2b2lkKTsKIGV4dGVybiB2 b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3QoY29uc3QgUGdTdGF0X1N0YXRSZXBsU2xvdEVudHJ5 ICpyZXBTbG90U3RhdCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2NyZWF0 ZShjb25zdCBjaGFyICpzbG90bmFtZSk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3JlcGxz bG90X2Ryb3AoY29uc3QgY2hhciAqc2xvdG5hbWUpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9y dF9zdWJ3b3JrZXJfeGFjdF9lbmQoT2lkIHN1YmlkLCBPaWQgc3VicmVsLAorCQkJCQkJCQkJCQkg TG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwgUGdTdGF0X0NvdW50ZXIgeGFjdF9zaXplKTsKK2V4 dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoT2lkIHN1Ymlk LCBMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kLAorCQkJCQkJCQkJCQkJICBQZ1N0YXRfQ291bnRl ciB4YWN0X3NpemUsIGNoYXIgKmdpZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3N1Yndv cmtlcl9lcnJvcihPaWQgc3ViaWQsIE9pZCBzdWJyZWxpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJ CSAgTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwKIAkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg eGlkLCBjb25zdCBjaGFyICplcnJtc2cpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oCmluZGV4IDJhZDYxYTAuLjlhODQ0N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2Fsd29ya2VyLmgKQEAgLTE2LDQgKzE2LDkgQEAgZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQp OwogCisvKiBmb3IgdHJhbnNhY3Rpb24gc3RhdHMgKi8KK2V4dGVybiBpbnQ2NCBnZXRfYXBwbHlf ZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9pZCk7CitleHRlcm4gdm9pZCBhZGRfYXBwbHlfZXJy b3JfY29udGV4dF94YWN0X3NpemUoaW50NjQgc2l6ZSk7CitleHRlcm4gdm9pZCByZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2b2lkKTsKKwogI2VuZGlmCQkJCQkJCS8qIExPR0lD QUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBkN2QxN2I3 Li43NDQ1MDQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5NywxMSAr MjA5NywxNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwK IHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnN8IFNFTEVDVCB3LnN1YmlkLAogICAgIHMuc3Vi bmFtZSwKICAgICB3LnN1YnJlbGlkLAotICAgIHcucmVsaWQsCi0gICAgdy5jb21tYW5kLAotICAg IHcueGlkLAorICAgIHcuY29tbWl0X2NvdW50LAorICAgIHcuY29tbWl0X2J5dGVzLAogICAgIHcu ZXJyb3JfY291bnQsCi0gICAgdy5lcnJvcl9tZXNzYWdlLAorICAgIHcuZXJyb3JfYnl0ZXMsCisg ICAgdy5hYm9ydF9jb3VudCwKKyAgICB3LmFib3J0X2J5dGVzLAorICAgIHcubGFzdF9lcnJvcl9y ZWxpZCwKKyAgICB3Lmxhc3RfZXJyb3JfY29tbWFuZCwKKyAgICB3Lmxhc3RfZXJyb3JfeGlkLAor ICAgIHcubGFzdF9lcnJvcl9jb3VudCwKKyAgICB3Lmxhc3RfZXJyb3JfbWVzc2FnZSwKICAgICB3 Lmxhc3RfZXJyb3JfdGltZQogICAgRlJPTSAoIFNFTEVDVCBwZ19zdWJzY3JpcHRpb24ub2lkIEFT IHN1YmlkLAogICAgICAgICAgICAgTlVMTDo6b2lkIEFTIHJlbGlkCkBAIC0yMTExLDcgKzIxMTcs NyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzfCBTRUxFQ1Qgdy5zdWJpZCwKICAgICAg ICAgICAgIHBnX3N1YnNjcmlwdGlvbl9yZWwuc3JyZWxpZCBBUyByZWxpZAogICAgICAgICAgICBG Uk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwKICAgICAgICAgICBXSEVSRSAocGdfc3Vic2NyaXB0aW9u X3JlbC5zcnN1YnN0YXRlIDw+ICdyJzo6ImNoYXIiKSkgc3IsCi0gICAgKExBVEVSQUwgcGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uX3dvcmtlcihzci5zdWJpZCwgc3IucmVsaWQpIHcoc3ViaWQsIHN1 YnJlbGlkLCByZWxpZCwgY29tbWFuZCwgeGlkLCBlcnJvcl9jb3VudCwgZXJyb3JfbWVzc2FnZSwg bGFzdF9lcnJvcl90aW1lKQorICAgIChMQVRFUkFMIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93 b3JrZXIoc3Iuc3ViaWQsIHNyLnJlbGlkKSB3KHN1YmlkLCBzdWJyZWxpZCwgY29tbWl0X2NvdW50 LCBjb21taXRfYnl0ZXMsIGVycm9yX2NvdW50LCBlcnJvcl9ieXRlcywgYWJvcnRfY291bnQsIGFi b3J0X2J5dGVzLCBsYXN0X2Vycm9yX3JlbGlkLCBsYXN0X2Vycm9yX2NvbW1hbmQsIGxhc3RfZXJy b3JfeGlkLCBsYXN0X2Vycm9yX2NvdW50LCBsYXN0X2Vycm9yX21lc3NhZ2UsIGxhc3RfZXJyb3Jf dGltZSkKICAgICAgSk9JTiBwZ19zdWJzY3JpcHRpb24gcyBPTiAoKHcuc3ViaWQgPSBzLm9pZCkp KTsKIHBnX3N0YXRfc3lzX2luZGV4ZXN8IFNFTEVDVCBwZ19zdGF0X2FsbF9pbmRleGVzLnJlbGlk LAogICAgIHBnX3N0YXRfYWxsX2luZGV4ZXMuaW5kZXhyZWxpZCwKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9lcnJvcl9yZXBvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjZfZXJyb3JfcmVwb3J0LnBsCmluZGV4IDNkMjNiYjUuLjlmZjYxOWUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9lcnJvcl9yZXBvcnQucGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI2X2Vycm9yX3JlcG9ydC5wbApAQCAtMTUsOCArMTUs OCBAQCBzdWIgdGVzdF9zdWJzY3JpcHRpb25fZXJyb3IKIAogICAgIG15ICRjaGVja19zcWwgPSBx cVsKIFNFTEVDVCBjb3VudCgxKSA+IDAgRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJz Ci1XSEVSRSByZWxpZCA9ICckcmVsbmFtZSc6OnJlZ2NsYXNzXTsKLSAgICAkY2hlY2tfc3FsIC49 ICIgQU5EIHhpZCA9ICckeGlkJzo6eGlkOyIgaWYgJHhpZCBuZSAnJzsKK1dIRVJFIGxhc3RfZXJy b3JfcmVsaWQgPSAnJHJlbG5hbWUnOjpyZWdjbGFzc107CisgICAgJGNoZWNrX3NxbCAuPSAiIEFO RCBsYXN0X2Vycm9yX3hpZCA9ICckeGlkJzo6eGlkOyIgaWYgJHhpZCBuZSAnJzsKIAogICAgICMg V2FpdCBmb3IgdGhlIGVycm9yIHN0YXRpc3RpY3MgdG8gYmUgdXBkYXRlZC4KICAgICAkbm9kZS0+ cG9sbF9xdWVyeV91bnRpbCgKQEAgLTI2LDkgKzI2LDkgQEAgV0hFUkUgcmVsaWQgPSAnJHJlbG5h bWUnOjpyZWdjbGFzc107CiAgICAgbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoCiAJJ3Bv c3RncmVzJywKIAlxcVsKLVNFTEVDVCBzdWJuYW1lLCBjb21tYW5kLCByZWxpZDo6cmVnY2xhc3Ms IGVycm9yX2NvdW50ID4gMAorU0VMRUNUIHN1Ym5hbWUsIGxhc3RfZXJyb3JfY29tbWFuZCwgbGFz dF9lcnJvcl9yZWxpZDo6cmVnY2xhc3MsIGxhc3RfZXJyb3JfY291bnQgPiAwCiBGUk9NIHBnX3N0 YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMKLVdIRVJFIHJlbGlkID0gJyRyZWxuYW1lJzo6cmVnY2xh c3M7CitXSEVSRSBsYXN0X2Vycm9yX3JlbGlkID0gJyRyZWxuYW1lJzo6cmVnY2xhc3M7CiBdKTsK ICAgICBpcygkcmVzdWx0LCAkZXhwZWN0ZWRfZXJyb3IsICRtc2cpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3dvcmtlcl94YWN0X3N0YXRzLnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3dvcmtlcl94YWN0X3N0YXRzLnBsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNTdlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjdfd29ya2VyX3hhY3Rfc3RhdHMucGwKQEAgLTAsMCArMSwxNzMg QEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyMgVGVzdHMgZm9yIHN1YnNjcmlwdGlvbiB3b3JrZXIgc3RhdGlzdGljcyBkdXJp bmcgYXBwbHkuCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZSB0ZXN0cyA9PiAyOworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlz aGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2Rl X3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9w dWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKK2xvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gPSA2NGtCCittYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKK21h eF93YWxfc2VuZGVycyA9IDEwCit3YWxfc2VuZGVyX3RpbWVvdXQgPSAwCitdKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vi c2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Cisk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCittYXhf cHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKK2xvZ19taW5fbWVzc2FnZXMgPSBERUJVRzEKK10p OworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlcyBvbiB0aGUg cHVibGlzaGVyIGFuZCB0aGUgc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCkiKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIg KGEgaW50IHByaW1hcnkga2V5KTsiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitt eSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFt ZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKworbXkgJGFw cG5hbWUgPSAndGFwX3N1Yic7CitteSAkc3Vib3B0cyA9ICdzdHJlYW1pbmcgPSBvbiwgdHdvX3Bo YXNlID0gb24sIGNvcHlfZGF0YSA9IGZhbHNlJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcVsKK0NSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCitQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKCRzdWJvcHRzKTsKK10pOworCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZXJlJ3Mgbm8gZW50cnkgYXQgdGhlIGJl Z2lubmluZworbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnM7 Iik7CitpcygkcmVzdWx0LCBxKDApLCAnbm8gZW50cnkgZm9yIHRyYW5zYWN0aW9uIHN0YXRzIHll dCcpOworCisjIENPTU1JVAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KyAgICAiQkVHSU47IElOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMSk7IENPTU1JVDsiKTsK KworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorIlNFTEVD VCBjb3VudCgxKSA9IDEgRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzIHdoZXJlIGNv bW1pdF9jb3VudCA9IDE7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBz dGF0cyBieSBjb21taXQiOworCisjIE5vdywgc3RhdHMgY29sbGVjdG9yIG1ha2UgdGhlIGJ5dGVz IHVwZGF0ZWQgYWxzby4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKyJTRUxFQ1QgY29tbWl0X2J5dGVzID4gMCBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0 aW9uX3dvcmtlcnM7Iik7CitpcygkcmVzdWx0LCBxKHQpLCAnZ290IGNvbnN1bWVkIGJ5dGVzJyk7 CisKKyMgU1RSRUFNIENPTU1JVAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisgICAgJ3Bv c3RncmVzJywKKyAgICAiQkVHSU47IElOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyhnZW5lcmF0 ZV9zZXJpZXMoMTAwMSwgMjAwMCkpOyBDT01NSVQ7Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50KDEpID0gMSBGUk9NIHBnX3N0 YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgY29tbWl0X2NvdW50ID0gMjsiKQorICBvciBk aWUgImRpZG4ndCBnZXQgdXBkYXRlcyBvZiB4YWN0IHN0YXRzIGJ5IHN0cmVhbSBjb21taXQiOwor CisjIFNUUkVBTSBQUkVQQVJFICYgQ09NTUlUIFBSRVBBUkVECisjIFRoaXMgc2hvdWxkIHJlc3Rv cmUgdGhlIHhhY3Qgc2l6ZSBiZWZvcmUgdGhlIHNodXRkb3duLgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisgICAgJ3Bvc3RncmVzJywgcVsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygyMDAxLCAzMDAwKSk7CitQUkVQQVJFIFRSQU5TQUNU SU9OICdnaWQxJzsKK10pOworCisjIFRoaXMgc3RyZWFtZWQgcHJlcGFyZSBpcyBub3QgZGlzcGxh eWVkIHVudGlsIHRoZSBjb21taXQgcHJlcGFyZWQKKyMgb3Igcm9sbGJhY2sgcHJlcGFyZWQuIEhl bmNlLCB0aGVyZSdzIG5vIHdheSB0byBjb25maXJtIHRoYXQKKyMgc3RhdHMgY29sbGVjdG9yIGhh cyByZWNlaXZlZCB0aGUgYnl0ZXMgb2YgcHJlcGFyZWQgdHJhbnNhY3Rpb24uCisjIFNvLCBpbnN0 ZWFkIG9mIGNoZWNraW5nIHRoZSB2aWV3LCBpc3N1ZSBvbmUgbW9yZSBjb21taXR0ZWQgdHJhbnNh Y3Rpb24KKyMgYWZ0ZXIgdGhlIHByZXBhcmUgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgY29tbWl0 J3MgdXBkYXRlIGlzIGRvbmUsCisjIHdoaWNoIHNob3VsZCBtZWFuIHRoZSBwcmV2aW91cyBzdHJl YW1lZCBwcmVwYXJlIGlzIGFscmVhZHkgcHJvY2Vzc2VkCisjIGJ5IHRoZSBzdGF0cyBjb2xsZWN0 b3IgYXMgd2VsbC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisiQkVH SU47IElOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMik7IENPTU1JVDsiKTsKKyRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkg PSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyB3aGVyZSBjb21taXRfY291bnQg PSAzOyIpCisgIG9yIGRpZSAiZGlkbid0IHByb2Nlc3MgdGhlIHVwZGF0ZXMgb2YgY29tbWl0dGVk IHRyYW5zYWN0aW9uIjsKKworJG5vZGVfc3Vic2NyaWJlci0+cmVzdGFydDsKKworIyBHZXQgY29t bWl0X2J5dGVzIGJlZm9yZSBjb21taXQgcHJlcGFyZWQuCitteSAkdG1wID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvbW1pdF9ieXRlcyBGUk9NIHBn X3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgY29tbWl0X2NvdW50ID0gMzsiKTsKKwor IyBDb21taXQgcHJlcGFyZWQgaW5jcmVtZW50cyB0aGUgY29tbWl0X2NvdW50LgorJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnZ2lkMSciKTsK KyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1Qg Y291bnQoMSkgPSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyB3aGVyZSBjb21t aXRfY291bnQgPSA0OyIpCisgIG9yIGRpZSAiZGlkbid0IGdldCB1cGRhdGVzIG9mIHhhY3Qgc3Rh dHMgYnkgc3RyZWFtIHByZXBhcmUgYW5kIGNvbW1pdCBwcmVwYXJlZCI7CisKKyRub2RlX3N1YnNj cmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgY29tbWl0X2J5dGVz ID4gJHRtcCBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgY29tbWl0X2Nv dW50ID0gNDsiKTsKKworIyBTVFJFQU0gQUJPUlQKKyMgU3RvcmUgcHJldmlvdXMgc3RyZWFtX2Nv dW50cyB0byByZWNvZ25pemUKKyMgYW5vdGhlciBzdHJlYW1pbmcgZnJvbSB0aGUgaW5jcmVhc2Ug b2YgdGhpcyB2YWx1ZSBiZWxvdy4KKyR0bXAgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorIlNFTEVDVCBzdHJlYW1fY291bnQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u X3Nsb3RzIik7CisKKyMgQ2F1c2UgYSBuZXcgc3RyZWFtaW5nIGFuZCBjaGVjayBpdCBieSBhbm90 aGVyIHNlc3Npb24KK215ICRpbiA9ICcnOworbXkgJG91dCA9ICcnOworbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoMTgwKTsKK215ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwlvbl9lcnJvcl9zdG9wID0+ IDEpOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTKGdl bmVyYXRlX3NlcmllcygzMDAxLCA0MDAwKSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgV2FpdCB1 bnRpbCB0aGlzIHRyYW5zYWN0aW9uIGlzIHN0cmVhbWVkIGNlcnRhaW5seQorIyBhbmQgYWZ0ZXIg dGhhdCByb2xsYmFjayB0byBzZW5kIHN0cmVhbSBhYm9ydC4KKyRub2RlX3B1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorIlNFTEVDVCBzdHJlYW1fY291bnQgPiAkdG1wIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90czsiKQorICBvciBkaWUgImRpZG4ndCBzdHJlYW0g ZGF0YSBvZiBhIG5ldyB0cmFuc2FjdGlvbiI7CisKKyRpbiAuPSBxeworUk9MTEJBQ0s7CitccQor fTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkgPSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25f d29ya2VycyB3aGVyZSBhYm9ydF9jb3VudCA9IDE7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVw ZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSBzdHJlYW0gYWJvcnQiOworCisjIFJPTExCQUNLIFBSRVBB UkVECiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxWworQkVHSU47CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDMpOworUFJFUEFSRSBUUkFOU0FDVElPTiAnZ2lk Mic7CitdKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJST0xMQkFD SyBQUkVQQVJFRCAnZ2lkMiciKTsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkgPSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRp b25fd29ya2VycyB3aGVyZSBhYm9ydF9jb3VudCA9IDI7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0 IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSByb2xsYmFjayBwcmVwYXJlZCI7CisKKyMgZXJyb3Ig c3RhdHMgKGJ5IGR1cGxpY2F0aW9uIGVycm9yKQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcVsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxKTsK K0NPTU1JVDsKK10pOworCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisiU0VMRUNUIGNvdW50KDEpID0gMSBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dv cmtlcnMgd2hlcmUgZXJyb3JfY291bnQgPiAwOyIpCisgIG9yIGRpZSAiZGlkbid0IGdldCB1cGRh dGVzIG9mIHhhY3Qgc3RhdHMgYnkgZXJyb3IiOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdm YXN0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggZTRkNzhhOS4uNjkzYWFlNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTExNiw2ICsxMTYsNyBAQCBBcHBlbmRTdGF0ZQogQXBwbHlFcnJvckNhbGxiYWNrQXJnCiBB cHBseUV4ZWN1dGlvbkRhdGEKIEFwcGx5U3ViWGFjdERhdGEKK0FwcGx5VHhuRXh0cmFEYXRhCiBB cmNoaXZlCiBBcmNoaXZlRW50cnlQdHJUeXBlCiBBcmNoaXZlRm9ybWF0CkBAIC0xOTQ3LDYgKzE5 NDgsOCBAQCBQZ1N0YXRfTXNnU0xSVQogUGdTdGF0X01zZ1N1YldvcmtlckVycm9yCiBQZ1N0YXRf TXNnU3ViV29ya2VyRXJyb3JQdXJnZQogUGdTdGF0X01zZ1N1YldvcmtlclB1cmdlCitQZ1N0YXRf TXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0CitQZ1N0YXRfTXNnU3ViV29ya2VyWGFjdEVuZAogUGdT dGF0X01zZ1RhYnB1cmdlCiBQZ1N0YXRfTXNnVGFic3RhdAogUGdTdGF0X01zZ1RlbXBGaWxlCkBA IC0xOTYwLDYgKzE5NjMsOCBAQCBQZ1N0YXRfU3RhdEZ1bmNFbnRyeQogUGdTdGF0X1N0YXRSZXBs U2xvdEVudHJ5CiBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5CiBQZ1N0YXRfU3RhdFN1Yldvcmtl cktleQorUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3QKK1BnU3RhdF9TdGF0U3ViV29y a2VyUHJlcGFyZWRYYWN0U2l6ZQogUGdTdGF0X1N0YXRUYWJFbnRyeQogUGdTdGF0X1N1YlhhY3RT dGF0dXMKIFBnU3RhdF9UYWJsZUNvdW50cwpAQCAtMjk1Nyw2ICsyOTYyLDcgQEAgWGFjdENhbGxi YWNrCiBYYWN0Q2FsbGJhY2tJdGVtCiBYYWN0RXZlbnQKIFhhY3RMb2NrVGFibGVXYWl0SW5mbwor WGFjdFNpemVFbnRyeQogWGlkQm91bmRzVmlvbGF0aW9uCiBYaWRDYWNoZVN0YXR1cwogWGlkQ29t bWl0U3RhdHVzCi0tIAoyLjIuMAoK --_002_TYCPR01MB8373B1614522B90BA96883E0ED929TYCPR01MB8373jpnp_--