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 1miuKM-0005gF-3k for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Nov 2021 08:11:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1miuKK-0006ud-BO for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Nov 2021 08:11:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1miuKJ-0006tH-TB for pgsql-hackers@lists.postgresql.org; Fri, 05 Nov 2021 08:11:56 +0000 Received: from esa11.fujitsucc.c3s2.iphmx.com ([216.71.156.121]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1miuKB-0005lp-LU for pgsql-hackers@lists.postgresql.org; Fri, 05 Nov 2021 08:11:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1636099907; x=1667635907; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=SBGbLpTDKms5y+qi5scvP4wH3mrrk9lNhns46PR8qB4=; b=f2oQP1G7p/RawBGgyvdVO0QsSAH1fNEyFlpKecw+vdyIRSV4lG2OdhT+ 4naER3c/V9teHg+QTxqUV8ssJtO2xxSF2sM+ss2L2QYsK/YkrVGoeaHcT 7OxyrmaboyQz7h0izliI5ZRjKtnRvFy6e2m84I5PL2zkX8BUSL57LftjM APZshMzaX73M/3FyDHCaNORgpLp34ou65fgSwCYFOUURMsEBm11ZVriqE ylTxpQZVbedwJ+/TOargvZldIEUqvN7eu5zvRH5KEF73PD5UURnVS2NhO d/fOF73bJmLjk62nFfGtuJvd+5NQGcnIfe52Qy+F5epVbc0BMhzd29XJr A==; X-IronPort-AV: E=McAfee;i="6200,9189,10158"; a="43169977" X-IronPort-AV: E=Sophos;i="5.87,210,1631545200"; d="scan'208,223";a="43169977" Received: from mail-ty1jpn01lp2058.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([104.47.93.58]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2021 17:11:41 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eylCbmE9wPVW2O/PswoCuKTbWPR4d/TGBXNu9fu1HL9KlsnKlKDRwWKmdFQmu8N5qHEnglbdEVBSojA+OhPJfARuQck2kPVKictxbVNzPwQq0wRPw/6ZHdDPcURknDBPmK5xZWb4ecz3y50+e6mMhKfXvJQy8KkSPcNHhfnyNiVLAxrez5rWh1fraHVvnd2Y/VUqSQjnrL2+4QhB2POzt9klKJ0fKr8je1ojWlLP5BFHVgKKGacR5nfJJq3aEW+HyrAPjBS2mEL6TcDHH/ojmG/fJSD2QBsvNpiHhv9yKnZ8ZRSzZarloHd684XAaU19Mfi/tIk4ZZLi454ozJPJkg== 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=fQU+b+VOK+MDJj1Phw28yRXPUbm2szZDQl8hm+UMP1c=; b=lqTj2LZY/yCKe4XF0lGaMxvS7k/U6Fqv9XydSemKJ3QyJqPRNSEv8eQBNYIFEcStf/8thoiIFt+jpIZcQkFXZ5TPIOLosng49CrPhljaeS3rVxJUedAZaut9UfGNs13F8LerMu2gjFTZ01s6wXhuu6HTHGNuBj4ziZEhKRHf0Qb5ms7xAtOdmT6LvNE+aWdntySRkK/zSYdkL2SiGyS3xojW+/Nc09sNgsyMpM21M/N/3wgr1fYS7b6RbJ/KS/Zp1MLZvbh9YvJ9CI1hSrMnYnQ/wwAo/+nJJQ5Di1TBAA2v5vetAAQdnX/IBFG5A/ynA2SWR31RIP8I4wNhy/oZFQ== 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=fQU+b+VOK+MDJj1Phw28yRXPUbm2szZDQl8hm+UMP1c=; b=Q7u+NT0AeaIa0gi6Y6NmWQDw1CbtGjKymfFEN9Ug5wZBRH4szDhSujRchWJaRTKMPwY5PXD+5U6osqgCurn1bz2wsMnbNME+NtOcaooMvV1eTeLJxd+1B57eMZ6qGE7ueC/UWrOIMK/2SnTrb0FS8GJ4eEZhc5yUQZR7bcvVYuM= Received: from TYCPR01MB8373.jpnprd01.prod.outlook.com (2603:1096:400:15f::9) by TYWPR01MB8918.jpnprd01.prod.outlook.com (2603:1096:400:17c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 5 Nov 2021 08:11:38 +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.011; Fri, 5 Nov 2021 08:11:38 +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/RTlAANYpygAAhIjngAF7IiwAAMcV0oAAfP65gABBZ2kg Date: Fri, 5 Nov 2021 08:11:38 +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?Yy1hYjRkLTNiMGY0ZmVjZTA1MF9TZXREYXRlPTIwMjEtMTEtMDVUMDg6MTE6?= =?utf-8?B?MzVaOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0?= =?utf-8?B?ZmVjZTA1MF9NZXRob2Q9U3RhbmRhcmQ7IE1TSVBfTGFiZWxfYTcyOTVjYzEt?= =?utf-8?B?ZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX05hbWU9RlVKSVRTVS1SRVNU?= =?utf-8?B?UklDVEVE4oCLOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9TaXRlSWQ9YTE5ZjEyMWQtODFlMS00ODU4LWE5ZDgt?= =?utf-8?B?NzM2ZTI2N2ZkNGM3OyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1h?= =?utf-8?B?YjRkLTNiMGY0ZmVjZTA1MF9BY3Rpb25JZD04Yzk5ZDdmNy0zNjRkLTQ1Y2Qt?= =?utf-8?B?YjVkMS04ZDllNTc4MGM4MTE7IE1TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00?= =?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: 9d278e00-43e0-4102-aa95-08d9a033e475 x-ms-traffictypediagnostic: TYWPR01MB8918: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BUJ0mVSo5jYquYlRir9Z1aEyFj8HHbds1EMX5zGya/7dljcAw+7n7z3ET3+zAJWxDxiFpn6XcwFZMjCYnHGmMLvFylS8Lbsjmbnz2YOJvd+LkrjqxWFVbDuG1dHu7OYo96bkRO40JTSRIHon2YLIyMgPPJ2uLxetN0fJFFbMTki0UGweSbOZAgBT9BB5zXexFQ9hNDX39N+Q4dFu4lymuzi6toSbZk6W2xKAx8QxIjj4eZqhBSIOyBbavhH8JotTi6vV/qdp3ROJ1MMnn3KN16+52ixWjhPbq9xJ8DMVfw8w71j/nfiGAUkQ94FeNxRHy1LcTlVF4c8qHmw0eQNNvVjtNBB0+IVYNwQWM10n3ZYxx9PNHjGqQy6QExAbNcBK4wFVas4Tu8esIk8VCtkzs7qGgVsSjHNhhWvn/XHccEfWvOCNpKevsW0rN9Mwwsa1WYeKkJaxN/386KbxZUWwdjFtot4FxQIlz6YFAgxNmWm3EhqimNjI/C32YsfdUEKSJIybX517LNtv66Sg39z9hSGcr9I3wvNLAfzymdC2YXQlhyzrxiaFZwp0o3L4nvXdGGh06S0/PlPSVM20B1LuIe6io/bMoyMLtte7kMFXuTYqO+tztIMsGqCbnjn1Ir5LOXdce2rMhO4R9fgsHpkhR3xD2tGGwogjb8fx9dmYhsulir6QlmjA/XcaLq5wmCBFFsdhMu24IAqvSzfT5IIZ0w== 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)(4326008)(8676002)(8936002)(316002)(2906002)(186003)(6506007)(508600001)(53546011)(6916009)(26005)(52536014)(85182001)(86362001)(66476007)(9686003)(76116006)(66556008)(66446008)(64756008)(5660300002)(122000001)(55016002)(66946007)(7696005)(33656002)(71200400001)(54906003)(82960400001)(99936003)(38070700005)(83380400001)(38100700002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UWJMQTBYL1J4cWpZVUtBTm43eVdkNEpjSk4wc0hHbElucXpnNTZaZFdySERY?= =?utf-8?B?dXRRUVI4cHZIRkNYbVk1VEFkWEI5VXIrcnIwS2MzVzNNRkVjVWdsajBZMGl4?= =?utf-8?B?bG8zTDU0L3pjQTRYUU16OTU5RDRPVjRPV1VIeXd2cmVqT1JlODRDRkpZMkhL?= =?utf-8?B?ZEtpSVNsdHc0V0pQQVhiL1BucWR1OUl1YURlNmZJZ0paYVRYOTlEanBaeUVK?= =?utf-8?B?dG5icmVxeGJSZ1hUVnlzUUlEUFY2ZFBXRm5DWlUzREdPRWNZZEcyc1A0MjJP?= =?utf-8?B?K09McUNVa1c0T3RTbmhaeW12OHhHU245SVlSSjhRVXBqM1ZGMCtkblcrOWVR?= =?utf-8?B?S3puSUN6aU8rMHJGSWdUSUZzd0M2aHNQQitLYmhJNnZBYmZJcnRvVmpoL3pp?= =?utf-8?B?ek1qNnROZjUxRWZQUWs3RitnaDdLMm1XUjZGVWo1SUc0TVVyQXBDTTdDajFq?= =?utf-8?B?ejI0VFZrcTdGZjJSRDJUeU5DNUE0cmdMYVh2RzVQMDJSRGd3ZFZ4NjBLamhZ?= =?utf-8?B?T2tpWWZ4VWYya0NtRHdqMnVBVGZxTmZlWG5sc2E3YmRJaEJWWDFtd3VOaVo5?= =?utf-8?B?WFdLYkJRa25xU1VjNTBlb0xoSlJHelpmVHZIeUV6VlVlRm9CS1dIdVR2Kyt4?= =?utf-8?B?Vlg4TUNpVldKQjY5cGJXSms4VEozTlVLaktIN3RlK2k5RGhNZlQ4NFluOXAy?= =?utf-8?B?MzF2ZlVJZExsVEtqdy93b0JnSGNYVEpzSERodlpyUDFtaWZza2Z2UlVTV1B1?= =?utf-8?B?eDJ0aEIrblVvL1JPRklKQ2VEenlqUjlKUUczN3czaUl5VnNTNjhjY0NkeEF3?= =?utf-8?B?bHQ4SnV3QWlOV3lCcDdQNlYyMXBnbnhLWHh4NytHVVJIcnZKbUpvSU4yZ2tr?= =?utf-8?B?UlNrU1o2VkV0d3pVNnZsMDFsczMyTHplSjlnUHRqYmVWV3Z5UUY3TEhCaUNw?= =?utf-8?B?T3lhUEhXNy9tVTJBdit3RnliODlUV3RTWUZENFdHQlFmVmM2Z21laWZhOUVp?= =?utf-8?B?Y2VBS2pNS2NuekxaUFBsOXYyU1dSdWpkY2VuZ2Y0c1dMVHNXVWNlZ3k0VXly?= =?utf-8?B?YjNUQ21iMTkwT0htY1lSQlYwYlM2b05jVkNRR2VWRWhEdWxNaW9IcEUvSGw4?= =?utf-8?B?ekhTYnd6MFlwcmNlQ2RFZjhMc29BWlpmY2FhcUZESEN5L3hvN3hLNUhTdzVR?= =?utf-8?B?UDZ0bEk3b0FHd0FHWmhBdEc2WURUcTlSNTlxODlYMEU0WUdqMjk2MTZ1OHdX?= =?utf-8?B?dEJIb0lGb3gvVXcyek5ORXB2KzJ5cWFQWGJiVGtQQ0l2MHhIdjlQS21YdUh4?= =?utf-8?B?c2lkWW83RUtrQkNYTjlTQTZmSGx3OFM5V3BzbDdORTR1ZkIxRmxLVDRDRmdC?= =?utf-8?B?cTVXSUtaMStwZ1ZRc01YbkVNUXNEUVlmMkNTd3Fpa1ZJWFFpZnVPUFVuVUN2?= =?utf-8?B?UEJiclBSUWtlOGpCby9McFJ0NnZVQ1pRSTdISjlBV3Z4alhZZ0J5WmtwOFNy?= =?utf-8?B?SnR3WE5pcnhycVRma2xJMVZLY0FFYzNVckRyMnRBVXFsemxmcDNSK2lCUERI?= =?utf-8?B?QURNMjdiS2Jzc29oVTNHREhIYmh6bmJxdHJiRDRNVkZwSnlWd21NQ2pFWFI3?= =?utf-8?B?WVg2YlNwYlMvWWtTQnE4d2EwcUxaWSsvYTFablFMRjhha3hSSWErNGg1Rktv?= =?utf-8?B?ZVcrWEZZSnFBblJaY3JFbERKK2NqOHNOS2t2Y01sNFlySUs0a3VKeDVhK2Ny?= =?utf-8?B?T01wQ1JLVk85TXQ4QThqM3laUkVZY2VhWitlcGxXaHJmU2JNb3VsVVJxRFIw?= =?utf-8?B?dmx3Vm40TXZaamh0RzhJMVdWYVRaRHFpZ1ZTYWtQWGNza0VoSVZhNWZyWGRq?= =?utf-8?B?a2t2ZGFvbVg2b241TytXZk5IaDE2TElScGdPb0ttczR6alpJamRranB5NHJp?= =?utf-8?B?bm5xckM4Ykk5bDdRVzdRTEpaUWZ5V2lmNTJLejltclN3NUJINEJ2anpKZy9O?= =?utf-8?B?NElMaVdVcUM5WDk5ZzVLODRGZFB1MTBpamRnVVR4NVZNa3ladktyQXhBK3JW?= =?utf-8?B?N0lHb1htdC9LOXZHemd4YjdvUVZwZHJzQkNCM3hVNllDeHZOWklOYjdpMGFT?= =?utf-8?B?MjM0TWJsQm5LUWtkUGkwN3VPMzZkNk5lc00wbHo1RGxUbkRhbEs3YXk5MEVU?= =?utf-8?B?Nmx0OUFVZmRtb1oxT2ZmQVdkSEg0c1NEZlRRcHVRYk12U3BzL2psUFFGRzZP?= =?utf-8?B?OW5HUUJVVlBCOUtHeFh3bjIwcHVnPT0=?= Content-Type: multipart/mixed; boundary="_002_TYCPR01MB8373DC922E549FF3F031E9DAED8E9TYCPR01MB8373jpnp_" 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: 9d278e00-43e0-4102-aa95-08d9a033e475 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2021 08:11:38.4287 (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: 1kGUiALZhQOO6TjhgNkD9e3NU0qRqY4HC0QGGtVeUo33c2fNAkLIOsYZGaUztZJbt0/gYuM2HnI85qyDeVNQ3F9a3uiTDCyaIjuAq1uqpSo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB8918 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_TYCPR01MB8373DC922E549FF3F031E9DAED8E9TYCPR01MB8373jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIE5vdmVtYmVyIDQsIDIwMjEgOTo1NCBBTSAgR3JlZyBOYW5jYXJyb3cgPGdy ZWduNDQyMkBnbWFpbC5jb20+IHdyb3RlOg0KPiBPbiBUdWUsIE5vdiAyLCAyMDIxIGF0IDEyOjE4 IEFNIG9zdW1pLnRha2FtaWNoaUBmdWppdHN1LmNvbQ0KPiA8b3N1bWkudGFrYW1pY2hpQGZ1aml0 c3UuY29tPiB3cm90ZToNCj4gPg0KPiA+IE9uIFRodXJzZGF5LCBPY3RvYmVyIDI4LCAyMDIxIDEx OjE5IFBNIEkgd3JvdGU6DQo+ID4gPiBJJ3ZlIGNyZWF0ZWQgYSBuZXcgcGF0Y2ggdGhhdCBleHRl bmRzIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMNCj4gPiA+IHRvIGluY2x1ZGUgb3RoZXIg dHJhbnNhY3Rpb24gc3RhdGlzdGljcy4NCj4gPiA+DQo+ID4gPiBOb3RlIHRoYXQgdGhpcyBwYXRj aCBkZXBlbmRzIG9uIHYxOCBwYXRjaC1zZXQgaW4gWzFdLi4uDQo+ID4gUmViYXNlZCBiYXNlZCBv biB0aGUgdjE5IGluIFsxXS4NCj4gPiBBbHNvLCBmaXhlZCBkb2N1bWVudGF0aW9uIGEgbGl0dGxl IGFuZCBtYWRlIHRlc3RzIHRpZHkuDQo+ID4gRllJLCB0aGUgbmV3bHkgaW5jbHVkZWQgVEFQIHRl c3QoMDI3X3dvcmtlcl94YWN0X3N0YXRzLnBsKSBpcyBzdGFibGUNCj4gPiBiZWNhdXNlIEkgY2hl Y2tlZCB0aGF0IDEwMCB0aW1lcyBvZiBpdHMgZXhlY3V0aW9uIGluIGEgdGlnaHQgbG9vcCBhbGwg cGFzc2VkLg0KPiA+DQo+IA0KPiBJIGhhdmUgZG9uZSBzb21lIGJhc2ljIHRlc3Rpbmcgb2YgdGhl IHBhdGNoIGFuZCBoYXZlIHNvbWUgaW5pdGlhbCByZXZpZXcNCj4gY29tbWVudHM6DQpUaGFua3Mg Zm9yIHlvdXIgcmV2aWV3ICENCg0KPiAoMSkgSSB0aGluayB0aGlzIHBhdGNoIG5lZWRzIHRvIGJl IGluICJnaXQgZm9ybWF0LXBhdGNoIiBmb3JtYXQsIHdpdGggYSBwcm9wZXINCj4gY29tbWl0IG1l c3NhZ2UgdGhhdCBkZXNjcmliZXMgdGhlIHB1cnBvc2Ugb2YgdGhlIHBhdGNoIGFuZCB0aGUgZnVu Y3Rpb25hbGl0eQ0KPiBpdCBhZGRzLCBhbmQgYW55IGhpZ2gtbGV2ZWwgZGVzaWduIHBvaW50cyAo c29tZXRoaW5nIGxpa2UgdGhlIG92ZXJ2aWV3IGdpdmVuIGluDQo+IHRoZSBpbml0aWFsIHBvc3Qs IGFuZCBhY2NvdW50aW5nIGZvciB0aGUgc3Vic2VxdWVudCBkaXNjdXNzaW9uIHBvaW50cyBhbmQN Cj4gdXBkYXRlZCBmdW5jdGlvbmFsaXR5KS4NCkZpeGVkLg0KDQo+ICgyKSBkb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sDQo+IFRoZXJlIGFyZSBzb21lIGdyYW1tYXRpY2FsIGlzc3VlcyBpbiB0 aGUgY3VycmVudCBkZXNjcmlwdGlvbi4gSSBzdWdnZXN0DQo+IGNoYW5naW5nIGl0IHRvIHNvbWV0 aGluZyBsaWtlOg0KPiBCRUZPUkU6DQo+ICsgICAgICA8ZW50cnk+QXQgbGVhc3Qgb25lIHJvdyBw ZXIgc3Vic2NyaXB0aW9uLCBzaG93aW5nIGFib3V0DQo+IHRyYW5zYWN0aW9uIHN0YXRpc3RpY3Mg YW5kIGVycm9yIHN1bW1hcnkgdGhhdA0KPiBBRlRFUjoNCj4gKyAgICAgIDxlbnRyeT5BdCBsZWFz dCBvbmUgcm93IHBlciBzdWJzY3JpcHRpb24sIHNob3dpbmcgdHJhbnNhY3Rpb24NCj4gc3RhdGlz dGljcyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgZXJyb3JzIHRoYXQNCkZpeGVkLg0KDQo+ICgyKSBk b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sDQo+IFRoZSBjdXJyZW50IGRlc2NyaXB0aW9uIHNl ZW1zIGEgbGl0dGxlIGNvbmZ1c2luZy4NCj4gUGVyIHN1YnNjcmlwdGlvbiwgaXQgc2hvd3MgdGhl IHRyYW5zYWN0aW9uIHN0YXRpc3RpY3MgYW5kIGFueSBsYXN0IGVycm9yIGluZm8gZnJvbQ0KPiB0 YWJsZXN5bmMvYXBwbHkgd29ya2Vycz8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgSSdkIHN1Z2dlc3Qg dGhlIGZvbGxvd2luZyBjaGFuZ2U6DQo+IA0KPiBCRUZPUkU6DQo+ICsgICBvbmUgcm93IHBlciBz dWJzY3JpcHRpb24gZm9yIHRyYW5zYWN0aW9uIHN0YXRpc3RpY3MgYW5kIHN1bW1hcnkgb2YgdGhl DQo+IGxhc3QNCj4gKyAgIGVycm9yIHJlcG9ydGVkIGJ5IHdvcmtlcnMgYXBwbHlpbmcgbG9naWNh bCByZXBsaWNhdGlvbiBjaGFuZ2VzIGFuZA0KPiB3b3JrZXJzDQo+ICsgICBoYW5kbGluZyB0aGUg aW5pdGlhbCBkYXRhIGNvcHkgb2YgdGhlIHN1YnNjcmliZWQgdGFibGVzLg0KPiBBRlRFUjoNCj4g KyAgIG9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiwgc2hvd2luZyBjb3JyZXNwb25kaW5nIHRyYW5z YWN0aW9uIHN0YXRpc3RpY3MNCj4gYW5kDQo+ICsgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFz dCBlcnJvciByZXBvcnRlZCBieSB3b3JrZXJzIGFwcGx5aW5nDQo+IGxvZ2ljYWwgcmVwbGljYXRp b24NCj4gKyAgIGNoYW5nZXMgb3IgYnkgd29ya2VycyBoYW5kbGluZyB0aGUgaW5pdGlhbCBkYXRh IGNvcHkgb2YgdGhlDQo+IHN1YnNjcmliZWQgdGFibGVzLg0KRml4ZWQuDQoNCj4gKDMpIHhhY3Rf Y29tbWl0DQo+IEkgdGhpbmsgdGhhdCB0aGUgInhhY3RfY29tbWl0IiBjb2x1bW4gc2hvdWxkIGJl IG5hbWVkICJ4YWN0X2NvbW1pdF9jb3VudCINCj4gb3IgInhhY3RfY29tbWl0cyIuDQo+IFNpbWls YXJseSwgSSB0aGluayAieGFjdF9lcnJvciIgc2hvdWxkIGJlIG5hbWVkICJ4YWN0X2Vycm9yX2Nv dW50IiBvcg0KPiAieGFjdF9lcnJvcnMiLCBhbmQgInhhY3RfYWJvcnRzIiBzaG91bGQgYmUgbmFt ZWQgInhhY3RfYWJvcnRfY291bnQiIG9yDQo+ICJ4YWN0X2Fib3J0cyIuDQpJIHByZWZlcmVkICpf Y291bnQuIFJlbmFtZWQuDQoNCj4gKDQpIHhhY3RfY29tbWl0X2J5dGVzDQo+IA0KPiArICAgICAg IEFtb3VudCBvZiB0cmFuc2FjdGlvbnMgZGF0YSBzdWNjZXNzZnVsbHkgYXBwbGllZCBpbiB0aGlz IHN1YnNjcmlwdGlvbi4NCj4gKyAgICAgICBDb25zdW1lZCBtZW1vcnkgZm9yIHhhY3RfY29tbWl0 IGlzIGRpc3BsYXllZC4NCj4gDQo+IEkgZmluZCB0aGlzIGRlc2NyaXB0aW9uIGEgYml0IGNvbmZ1 c2luZy4gIkNvbnN1bWVkIG1lbW9yeSBmb3IgeGFjdF9jb21taXQiDQo+IHNlZW1zIGRpZmZlcmVu dCB0byAidHJhbnNhY3Rpb25zIGRhdGEiLg0KPiBDb3VsZCB0aGUgZGVzY3JpcHRpb24gYmUgc29t ZXRoaW5nIGxpa2U6IEFtb3VudCBvZiBkYXRhIChpbiBieXRlcykgc3VjY2Vzc2Z1bGx5DQo+IGFw cGxpZWQgaW4gdGhpcyBzdWJzY3JpcHRpb24sIGFjcm9zcyAieGFjdF9jb21taXRfY291bnQiDQo+ IHRyYW5zYWN0aW9ucy4NCkZpeGVkLg0KDQo+ICg1KQ0KPiBJJ2Qgc3VnZ2VzdCBzb21lIG1pbm9y IHJld29yZGluZyBmb3IgdGhlIGZvbGxvd2luZzoNCj4gDQo+IEJFRk9SRToNCj4gKyAgICAgICBO dW1iZXIgb2YgdHJhbnNhY3Rpb25zIGZhaWxlZCB0byBiZSBhcHBsaWVkIGFuZCBjYXVnaHQgYnkg dGFibGUNCj4gKyAgICAgICBzeW5jIHdvcmtlciBvciBtYWluIGFwcGx5IHdvcmtlciBpbiB0aGlz IHN1YnNjcmlwdGlvbi4NCj4gQUZURVI6DQo+ICsgICAgICAgTnVtYmVyIG9mIHRyYW5zYWN0aW9u cyB0aGF0IGZhaWxlZCB0byBiZSBhcHBsaWVkIGJ5IHRoZSB0YWJsZQ0KPiArICAgICAgIHN5bmMg d29ya2VyIG9yIG1haW4gYXBwbHkgd29ya2VyIGluIHRoaXMgc3Vic2NyaXB0aW9uLg0KRml4ZWQu DQoNCj4gKDYpIHhhY3RfZXJyb3JfYnl0ZXMNCj4gQWdhaW4sIGl0J3MgYSBsaXR0bGUgY29uZnVz aW5nIHJlZmVycmluZyB0byAiY29uc3VtZWQgbWVtb3J5IiBoZXJlLg0KPiBIb3cgYWJvdXQgcmV3 b3JkaW5nIHRoaXMsIHNvbWV0aGluZyBsaWtlOg0KPiANCj4gQkVGT1JFOg0KPiArICAgICAgIEFt b3VudCBvZiB0cmFuc2FjdGlvbnMgZGF0YSB1bnN1Y2Nlc3NmdWxseSBhcHBsaWVkIGluIHRoaXMN Cj4gc3Vic2NyaXB0aW9uLg0KPiArICAgICAgIENvbnN1bWVkIG1lbW9yeSB0aGF0IHBhc3QgZmFp bGVkIHRyYW5zYWN0aW9uIHVzZWQgaXMgZGlzcGxheWVkLg0KPiBBRlRFUjoNCj4gKyAgICAgICBB bW91bnQgb2YgZGF0YSAoaW4gYnl0ZXMpIHVuc3VjY2Vzc2Z1bGx5IGFwcGxpZWQgaW4gdGhpcw0K PiBzdWJzY3JpcHRpb24gYnkgdGhlIGxhc3QgZmFpbGVkIHRyYW5zYWN0aW9uLg0KeGFjdF9lcnJv cl9ieXRlcyAoYW5kIG90aGVyIGJ5dGVzIGNvbHVtbnMgYXMgd2VsbCkgaXMgY3VtdWxhdGl2ZQ0K c28gd2hlbiBhIG5ldyBlcnJvciBoYXBwZW5zLCB0aGUgc2l6ZSBvZiB0aGlzIG5ldyBieXRlcyB3 b3VsZCBiZQ0KYWRkZWQgdG8gdGhlIHNhbWUuIFNvIGhlcmUgd2Ugc2hvdWxkbid0IG1lbnRpb24g anVzdCB0aGUgbGFzdCBlcnJvci4NCkkgc2ltcGx5IGFwcGxpZWQgeW91ciBwcmV2aW91cyBjb21t ZW50cyBvZiAneGFjdF9jb21taXRfYnl0ZXMnDQp0byAneGFjdF9lcnJvcl9ieXRlcycgZGVzY3Jp cHRpb24uDQoNCj4gKDcpDQo+IFRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHByb3ZpZGVkIGZv ciAieGFjdF9hYm9ydF9ieXRlcyIgbmVlZHMgc29tZQ0KPiByZXdvcmRpbmcsIHNvbWV0aGluZyBs aWtlOg0KPiANCj4gQkVGT1JFOg0KPiArICAgICAgIEluY3JlYXNlIDxsaXRlcmFsPmxvZ2ljYWxf ZGVjb2Rpbmdfd29ya19tZW08L2xpdGVyYWw+IG9uIHRoZQ0KPiBwdWJsaXNoZXINCj4gKyAgICAg ICBzbyB0aGF0IGl0IGV4Y2VlZHMgdGhlIHNpemUgb2Ygd2hvbGUgc3RyZWFtZWQgdHJhbnNhY3Rp b24NCj4gKyAgICAgICB0byBzdXBwcmVzcyB1bm5lY2Vzc2FyeSBjb25zdW1lZCBuZXR3b3JrIGJh bmR3aWR0aCBpbiBhZGRpdGlvbiB0bw0KPiBjaGFuZ2UNCj4gKyAgICAgICBpbiBtZW1vcnkgb2Yg dGhlIHN1YnNjcmliZXIsIGlmIHVuZXhwZWN0ZWQgYW1vdW50IG9mIHN0cmVhbWVkDQo+IHRyYW5z YWN0aW9ucw0KPiArICAgICAgIGFyZSBhYm9ydGVkLg0KPiBBRlRFUjoNCj4gKyAgICAgICBJbiBv cmRlciB0byBzdXBwcmVzcyB1bm5lY2Vzc2FyeSBjb25zdW1lZCBuZXR3b3JrIGJhbmR3aWR0aCwN Cj4gaW5jcmVhc2UNCj4gKyAgICAgICA8bGl0ZXJhbD5sb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVt PC9saXRlcmFsPiBvbiB0aGUgcHVibGlzaGVyIHNvDQo+IHRoYXQgaXQNCj4gKyAgICAgICBleGNl ZWRzIHRoZSBzaXplIG9mIHRoZSB3aG9sZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiwgYW5kDQo+IGFk ZGl0aW9uYWxseSBpbmNyZWFzZQ0KPiArICAgICAgIHRoZSBhdmFpbGFibGUgc3Vic2NyaWJlciBt ZW1vcnksIGlmIGFuIHVuZXhwZWN0ZWQgYW1vdW50IG9mDQo+IHN0cmVhbWVkIHRyYW5zYWN0aW9u cw0KPiArICAgICAgIGFyZSBhYm9ydGVkLg0KDQpJJ20gbm90IHN1cmUgYWJvdXQgdGhlIGxhc3Qg cGFydC4NCj4gYWRkaXRpb25hbGx5IGluY3JlYXNlIHRoZSBhdmFpbGFibGUgc3Vic2NyaWJlciBt ZW1vcnksDQpXaGljaCBHVUMgcGFyYW1ldGVyIGRpZCB5b3UgbWVhbiBieSB0aGlzID8NCkNvdWxk IHdlIHBvaW50IG91dCBhbmQgZW5hbHJnZSB0aGUgbWVtb3J5IHNpemUgb25seSBmb3INCnN1YnNj cmliZXIncyBhcHBseSBwcm9jZXNzaW5nIGludGVudGlvbmFsbHkgPw0KSSBpbmNvcnBvcmF0ZWQg KDcpIGV4Y2VwdCBmb3IgdGhpcyBsYXN0IHBhcnQuDQpXaWxsIHJldmlzZSBhY2NvcmRpbmcgdG8g eW91ciByZXBseS4NCg0KSSBhbHNvIGFkZGVkIHRoZSBleHBsYW5hdGlvbiBhYm91dA0KeGFjdF9h Ym9ydF9ieXRlcyBpdHNlbGYgdG8gYWxpZ24gd2l0aCBvdGhlciBieXRlcyBjb2x1bW5zLg0KDQo+ ICg4KQ0KPiBTdWdnZXN0ZWQgdXBkYXRlOg0KPiANCj4gQkVGT1JFOg0KPiArICogIFRlbGwgdGhl IGNvbGxlY3RvciB0aGF0IHdvcmtlciB0cmFuc2FjdGlvbiBoYXMgZmluaXNoZWQgd2l0aG91dCBw cm9ibGVtLg0KPiBBRlRFUjoNCj4gKyAqICBUZWxsIHRoZSBjb2xsZWN0b3IgdGhhdCB0aGUgd29y a2VyIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLg0KRml4ZWQuDQoNCj4g KDkpIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMNCj4gSSB0aGluayB0aGF0IHRoZSBH SUQgY29weWluZyBpcyB1bm5lY2Vzc2FyaWx5IGNvcHlpbmcgdGhlIHdob2xlIEdJRCBidWZmZXIg b3INCj4gdXNpbmcgYW4gYWRkaXRpb25hbCBzdHJsZW4oKS4NCj4gSXQgc2hvdWxkIGJlIGNoYW5n ZWQgdG8gdXNlIHN0cmxjcHkoKSB0byBtYXRjaCBvdGhlciBjb2RlOg0KPiANCj4gQkVGT1JFOg0K PiArIC8qIGdldCB0aGUgZ2lkIGZvciB0aGlzIHR3byBwaGFzZSBvcGVyYXRpb24gKi8gaWYgKGNv bW1hbmQgPT0NCj4gKyBMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSB8fA0KPiArICAgY29tbWFuZCA9 PSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUpDQo+ICsgICBtZW1jcHkobXNnLm1fZ2lk LCBwcmVwYXJlX2RhdGEtPmdpZCwgR0lEU0laRSk7IGVsc2UgaWYgKGNvbW1hbmQgPT0NCj4gKyBM T0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEKQ0KPiArICAgbWVtY3B5KG1zZy5tX2dpZCwg Y29tbWl0X2RhdGEtPmdpZCwgR0lEU0laRSk7IGVsc2UgLyogcm9sbGJhY2sNCj4gKyBwcmVwYXJl ZCAqLw0KPiArICAgbWVtY3B5KG1zZy5tX2dpZCwgcm9sbGJhY2tfZGF0YS0+Z2lkLCBHSURTSVpF KTsNCj4gQUZURVI6DQo+ICsgLyogZ2V0IHRoZSBnaWQgZm9yIHRoaXMgdHdvIHBoYXNlIG9wZXJh dGlvbiAqLyBpZiAoY29tbWFuZCA9PQ0KPiArIExPR0lDQUxfUkVQX01TR19QUkVQQVJFIHx8DQo+ ICsgICBjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSkNCj4gKyAgIHN0 cmxjcHkobXNnLm1fZ2lkLCBwcmVwYXJlX2RhdGEtPmdpZCwgc2l6ZW9mKG1zZy5tX2dpZCkpOyBl bHNlIGlmDQo+ICsgKGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJFRCkN Cj4gKyAgIHN0cmxjcHkobXNnLm1fZ2lkLCBjb21taXRfZGF0YS0+Z2lkLCBzaXplb2YobXNnLm1f Z2lkKSk7IGVsc2UgLyoNCj4gKyByb2xsYmFjayBwcmVwYXJlZCAqLw0KPiArICAgc3RybGNweSht c2cubV9naWQsIHJvbGxiYWNrX2RhdGEtPmdpZCwgc2l6ZW9mKG1zZy5tX2dpZCkpOw0KRml4ZWQu DQoNCj4gDQo+IEJFRk9SRToNCj4gKyBzdHJsY3B5KHByZXBhcmVkX3R4bi0+Z2lkLCBtc2ctPm1f Z2lkLCBzdHJsZW4obXNnLT5tX2dpZCkgKyAxKTsNCj4gQUZURVI6DQo+ICsgc3RybGNweShwcmVw YXJlZF90eG4tPmdpZCwgbXNnLT5tX2dpZCwgc2l6ZW9mKHByZXBhcmVkX3R4bi0+Z2lkKSk7DQo+ IA0KPiBCRUZPUkU6DQo+ICsgbWVtY3B5KGtleS5naWQsIG1zZy0+bV9naWQsIHN0cmxlbihtc2ct Pm1fZ2lkKSk7DQo+IEFGVEVSOg0KPiArIHN0cmxjcHkoa2V5LmdpZCwgbXNnLT5tX2dpZCwgc2l6 ZW9mKGtleS5naWQpKTsNCj4gDQo+IEJFRk9SRToNCj4gKyBtZW1jcHkoa2V5LmdpZCwgZ2lkLCBz dHJsZW4oZ2lkKSk7DQo+IEFGVEVSOg0KPiArIHN0cmxjcHkoa2V5LmdpZCwgZ2lkLCBzaXplb2Yo a2V5LmdpZCkpOw0KRml4ZWQuDQoNCj4gKDEwKSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jDQo+IFNvbWUgc3VnZ2VzdGVkIHJld29yZGluZzoNCj4gDQo+IEJFRk9SRToN Cj4gKyAqIHNpemUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHJlc291cmNlcyBiZWNhdXNlIGl0 IGhhdmUgdXNlZCB0aGUNCj4gQUZURVI6DQo+ICsgKiBzaXplIG9mIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiByZXNvdXJjZXMgYmVjYXVzZSBpdCBoYXMgdXNlZCB0aGUNCkZpeGVkLg0KIA0KPiBCRUZP UkU6DQo+ICsgKiB0cmFkZW9mZiBzaG91bGQgbm90IGJlIGdvb2QuIEFsc28sIGFkZCBtdWx0aXBs ZSB2YWx1ZXMNCj4gKyAqIGF0IG9uY2UgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Yg dGhpcyBmdW5jdGlvbiBjYWxsLg0KPiBBRlRFUjoNCj4gKyAqIHRyYWRlb2ZmIHdvdWxkIG5vdCBi ZSBnb29kLiBBbHNvLCBhZGQgbXVsdGlwbGUgdmFsdWVzDQo+ICsgKiBhdCBvbmNlIGluIG9yZGVy IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24uDQpGaXhlZC4N Cg0KPiAoMTEpIHVwZGF0ZV9hcHBseV9jaGFuZ2Vfc2l6ZSgpDQo+IFNob3VsZG4ndCB0aGlzIGZ1 bmN0aW9uIGJlIGRlY2xhcmVkIHN0YXRpYz8NCkZpeGVkLg0KDQo+ICgxMikgc3RyZWFtX3dyaXRl X2NoYW5nZSgpDQo+IA0KPiArIHN0cmVhbWVkX2VudHJ5LT54YWN0X3NpemUgPSBzdHJlYW1lZF9l bnRyeS0+eGFjdF9zaXplICsgdG90YWxfbGVuOw0KPiAvKiB1cGRhdGUgKi8NCj4gDQo+IGNvdWxk IGJlIHNpbXBseSB3cml0dGVuIGFzOg0KPiANCj4gKyBzdHJlYW1lZF9lbnRyeS0+eGFjdF9zaXpl ICs9IHRvdGFsX2xlbjsgLyogdXBkYXRlICovDQpGaXhlZC4NCg0KTGFzdGx5LCBJIHJlbW92ZWQg b25lIHVubmVjZXNzYXJ5IHRlc3QgdGhhdA0KY2hlY2tlZCBwdWJsaXNoZXIncyBzdGF0cyBpbiB0 aGUgVEFQIHRlc3RzLg0KQWxzbyBJIGludHJvZHVjZWQgQXBwbHlUeG5FeHRyYURhdGEgc3RydWN0 dXJlIHRvDQpyZW1vdmUgdm9pZCogYXJndW1lbnQgb2YgdXBkYXRlX2FwcGx5X2NoYW5nZV9zaXpl DQp0aGF0IG1pZ2h0IHdvcnNlbiB0aGUgcmVhZGFiaWxpdHkgb2YgY29kZXMNCmluIHRoZSBwcmV2 aW91cyB2ZXJzaW9uLg0KDQoNCkJlc3QgUmVnYXJkcywNCglUYWthbWljaGkgT3N1bWkNCg0K --_002_TYCPR01MB8373DC922E549FF3F031E9DAED8E9TYCPR01MB8373jpnp_ Content-Type: application/octet-stream; name="extend_xact_stats_of_subscription_worker_v8.patch" Content-Description: extend_xact_stats_of_subscription_worker_v8.patch Content-Disposition: attachment; filename="extend_xact_stats_of_subscription_worker_v8.patch"; size=61366; creation-date="Fri, 05 Nov 2021 08:09:45 GMT"; modification-date="Fri, 05 Nov 2021 08:09:45 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNmRlODdiZTZhZjgxMDExNGQ3NGIyM2U3ZDVhMTYwNDk5ODM4MTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPc3VtaSBUYWthbWljaGkgPG9zdW1pLnRha2FtaWNoaUBmdWpp dHN1LmNvbT4KRGF0ZTogRnJpLCA1IE5vdiAyMDIxIDA2OjU3OjQ2ICswMDAwClN1YmplY3Q6IFtQ QVRDSCB2OF0gRXh0ZW5kIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgdG8gaW5jbHVkZSBn ZW5lcmFsIHRyYW5zYWN0aW9uIHN0YXRpc3RpY3MKCkNhdGVnb3JpemUgdHJhbnNhY3Rpb25zIG9m IGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlcgppbnRvIHRocmVlIHR5cGVzICh4YWN0X2Nv bW1pdCwgeGFjdF9lcnJvciwgeGFjdF9hYm9ydCkKYW5kIGludHJvZHVjZSBjdW11bGF0aXZlIGNv bHVtbnMgb2YgdGhvc2UgbnVtYmVycyBhbmQgYW1vdW50cyBvZgpjb25zdW1lZCBkYXRhIGR1cmlu ZyBtZXNzYWdlIGFwcGx5IHJlc3BlY3RpdmVseS4KCk9uZSBzY2VuYXJpbyB0byB1dGlsaXplIHRo b3NlIGNvbHVtbnMgaXMgdG8gc3VwcHJlc3MKdW5uZWNlc3NhcnkgbmV0d29yayBiYW5kd2lkdGgs IHdoZW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGFib3J0ZWQKbW9yZSB0aGFuIGV4cGVjdGVkIGlz IG9ic2VydmVkIGJ5IHRoZSBjb2x1bW4gb2YgeGFjdF9hYm9ydF9jb3VudApvciB0aGUgY29sdW1u IG9mIGl0cyBieXRlcy4KClRoZSBjYWxjdWxhdGlvbiBvZiBjb25zdW1lZCByZXNvdXJjZXMgYnkg c3Vic2NyaWJlciBpcyBjb21wdXRlZApiYXNlZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIG1l c3NhZ2UgYXBwbHksIHdoaWNoIGlzIGRpZmZlcmVudApmcm9tIHRoYXQgb2YgcHVibGlzaGVyJ3Mg ZGVjb2RpbmcgcHJvY2Vzc2luZy4KClN0YXRzIG9mIHByZXBhcmVkIHRyYW5zYWN0aW9uIGJlY29t ZXMgcGVyc2lzdGVudCB0byBjb25jbHVkZQp0aGUgYXBwcm9wcmlhdGUgY2F0ZWdvcnkgZm9yIHRo ZSB0cmFuc2FjdGlvbiBhdAplaXRoZXIgY29tbWl0IHByZXBhcmVkIG9yIHJvbGxiYWNrIHByZXBh cmVkIHRpbWUuCgpBbHNvLCBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgaW4gcGFyYWxs ZWwgb24gcHVibGlzaGVyCmNhbiBjYXVzZSBkYXRhIGJsb2NrcyBpbiB1bnByZWRpY3RhYmxlIG9y ZGVyLiBNYW5hZ2luZyBlYWNoCnN0cmVhbWluZyB0cmFuYWN0aW9uIGJ5IHhpZCBtYWtlcyBpdCBw b3NzaWJsZSB0byBoYW5kbGUKc3RyZWFtIGFib3J0LCBzdHJlYW0gY29tbWl0IGFuZCBzdHJlYW0g cHJlcGFyZSBwcm9wZXJseS4KCkF1dGhvcjogVGFrYW1pY2hpIE9zdW1pCkRpc2N1c3NlZCAmIFJl dmlld2VkLWJ5OiBBbWl0IEthcGlsYSwgTWFzYWhpa28gU2F3YWRhLCBIb3UgWmhpamllLCBHcmVn IE5hbmNhcnJvdywgVmlnbmVzaCBDCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvT1NCUFIwMU1CNDg4ODdDQThGNDBDOEQ5ODRBNkRDMDBDRUQxOTklNDBP U0JQUjAxTUI0ODg4LmpwbnByZDAxLnByb2Qub3V0bG9vay5jb20KLS0tCiBkb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgICAgICAgfCAgOTQgKysrKystLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgICAgIHwgIDE2ICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgICAgfCAgMTAgKwogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyAgICAgICAgICAgICAgICAgIHwgMjk4ICsrKysr KysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMgICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jICAgICAgICAgfCAzMDQgKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICAgICB8ICA0NiArKystCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOTEgKysrKysrKwog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgICAgIHwgICA1ICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICAgICB8ICAxOCAr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI2X2Vycm9yX3JlcG9ydC5wbCAgICAgIHwgICA4 ICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfd29ya2VyX3hhY3Rfc3RhdHMucGwgfCAx NzIgKysrKysrKysrKysrKwogMTQgZmlsZXMgY2hhbmdlZCwgMTAzMCBpbnNlcnRpb25zKCspLCA0 NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjdfd29ya2VyX3hhY3Rfc3RhdHMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAwOTRjNzIz Li40ZTlhNjhjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTYyOSw3ICs2MjksNyBAQCBwb3N0Z3Jl cyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6 MDAgcG9zdGdyZXM6IHNlcgogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PHN0cnVjdG5hbWU+ cGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2Vyczwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmlt YXJ5PnBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnM8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9l bnRyeT4KLSAgICAgIDxlbnRyeT5BdCBsZWFzdCBvbmUgcm93IHBlciBzdWJzY3JpcHRpb24sIHNo b3dpbmcgYWJvdXQgZXJyb3JzIHRoYXQKKyAgICAgIDxlbnRyeT5BdCBsZWFzdCBvbmUgcm93IHBl ciBzdWJzY3JpcHRpb24sIHNob3dpbmcgdHJhbnNhY3Rpb24gc3RhdGlzdGljcyBhbmQgaW5mb3Jt YXRpb24gYWJvdXQgZXJyb3JzIHRoYXQKICAgICAgIG9jY3VycmVkIG9uIHN1YnNjcmlwdGlvbi4K ICAgICAgIFNlZSA8bGluayBsaW5rZW5kPSJtb25pdG9yaW5nLXBnLXN0YXQtc3Vic2NyaXB0aW9u LXdvcmtlcnMiPgogICAgICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2Vy czwvc3RydWN0bmFtZT48L2xpbms+IGZvciBkZXRhaWxzLgpAQCAtMzA1Miw5ICszMDUyLDkgQEAg U0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rp dml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKIAogICA8cGFyYT4KICAgIFRoZSA8c3RydWN0bmFtZT5w Z19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzPC9zdHJ1Y3RuYW1lPiB2aWV3IHdpbGwgY29udGFp bgotICAgb25lIHJvdyBwZXIgc3Vic2NyaXB0aW9uIGVycm9yIHJlcG9ydGVkIGJ5IHdvcmtlcnMg YXBwbHlpbmcgbG9naWNhbAotICAgcmVwbGljYXRpb24gY2hhbmdlcyBhbmQgd29ya2VycyBoYW5k bGluZyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkgb2YgdGhlCi0gICBzdWJzY3JpYmVkIHRhYmxlcy4K KyAgIG9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiwgc2hvd2luZyBjb3JyZXNwb25kaW5nIHRyYW5z YWN0aW9uIHN0YXRpc3RpY3MgYW5kCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFzdCBlcnJv ciByZXBvcnRlZCBieSB3b3JrZXJzIGFwcGx5aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24KKyAgIGNo YW5nZXMgb3IgYnkgd29ya2VycyBoYW5kbGluZyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkgb2YgdGhl IHN1YnNjcmliZWQgdGFibGVzLgogICA8L3BhcmE+CiAKICAgPHRhYmxlIGlkPSJwZy1zdGF0LXN1 YnNjcmlwdGlvbi13b3JrZXJzIiB4cmVmbGFiZWw9InBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtl cnMiPgpAQCAtMzEwMiwyMCArMzEwMiw4NiBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUs IHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAg ICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5yZWxpZDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+eGFjdF9jb21t aXRfY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIHN1Y2Nlc3NmdWxs eSBhcHBsaWVkIGluIHRoaXMgc3Vic2NyaXB0aW9uLgorICAgICAgIENPTU1JVCwgQ09NTUlUIG9m IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhbmQgQ09NTUlUIFBSRVBBUkVEIGluY3JlbWVudHMKKyAg ICAgICB0aGlzIGNvdW50ZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnhhY3RfY29t bWl0X2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgQW1vdW50IG9mIGRhdGEgKGluIGJ5dGVzKSBzdWNjZXNz ZnVsbHkgYXBwbGllZCBpbiB0aGlzIHN1YnNjcmlwdGlvbiwKKyAgICAgICBhY3Jvc3MgPGxpdGVy YWw+eGFjdF9jb21taXRfY291bnQ8L2xpdGVyYWw+IHRyYW5zYWN0aW9ucy4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+eGFjdF9lcnJvcl9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJp Z2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiB0cmFuc2FjdGlvbnMgdGhhdCBmYWlsZWQgdG8gYmUgYXBwbGllZCBieSB0aGUgdGFibGUKKyAg ICAgICBzeW5jIHdvcmtlciBvciBtYWluIGFwcGx5IHdvcmtlciBpbiB0aGlzIHN1YnNjcmlwdGlv bi4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnhhY3RfZXJyb3JfYnl0ZXM8L3N0cnVj dGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBBbW91bnQgb2YgZGF0YSAoaW4gYnl0ZXMpIHVuc3VjY2Vzc2Z1bGx5IGFwcGxpZWQg aW4gdGhpcyBzdWJzY3JpcHRpb24sCisgICAgICAgYWNyb3NzIDxsaXRlcmFsPnhhY3RfZXJyb3Jf Y291bnQ8L2xpdGVyYWw+IHRyYW5zYWN0aW9ucy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+eGFjdF9hYm9ydF9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiB0cmFuc2FjdGlvbnMg YWJvcnRlZCBpbiB0aGlzIHN1YnNjcmlwdGlvbi4KKyAgICAgICBSb2xsYmFjayBvZiB0aGUgcHJl cGFyZWQgdHJhbnNhY3Rpb24gYW5kIGFib3J0IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbgorICAg ICAgIGluY3JlbWVudHMgdGhpcyBjb3VudGVyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD54YWN0X2Fib3J0X2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgQW1vdW50IG9mIGRhdGEgKGluIGJ5dGVz KSBhYm9ydGVkIGluIHRoaXMgc3Vic2NyaXB0aW9uLAorICAgICAgIGFjcm9zcyA8bGl0ZXJhbD54 YWN0X2Fib3J0X2NvdW50PC9saXRlcmFsPiB0cmFuc2FjdGlvbnMuIAorICAgICAgIEluIG9yZGVy IHRvIHN1cHByZXNzIHVubmVjZXNzYXJ5IGNvbnN1bWVkIG5ldHdvcmsgYmFuZHdpZHRoLAorICAg ICAgIGluY3JlYXNlIDxsaXRlcmFsPmxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW08L2xpdGVyYWw+ IG9uIHRoZSBwdWJsaXNoZXIKKyAgICAgICBzbyB0aGF0IGl0IGV4Y2VlZHMgdGhlIHNpemUgb2Yg dGhlIHdob2xlIHN0cmVhbWVkIHRyYW5zYWN0aW9uLCBpZgorICAgICAgIGFuIHVuZXhwZWN0ZWQg YW1vdW50IG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBhcmUgYWJvcnRlZC4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+bGFzdF9lcnJvcl9yZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9p ZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIE9JRCBvZiB0aGUg cmVsYXRpb24gdGhhdCB0aGUgd29ya2VyIHdhcyBwcm9jZXNzaW5nIHdoZW4gdGhlCi0gICAgICAg ZXJyb3Igb2NjdXJyZWQKKyAgICAgICBsYXN0IGVycm9yIG9jY3VycmVkCiAgICAgICA8L3BhcmE+ PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAg ICAgPHN0cnVjdGZpZWxkPmNvbW1hbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX2NvbW1hbmQ8L3N0cnVjdGZpZWxkPiA8dHlw ZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgTmFtZSBv ZiBjb21tYW5kIGJlaW5nIGFwcGxpZWQgd2hlbiB0aGUgZXJyb3Igb2NjdXJyZWQuICBUaGlzIGZp ZWxkCisgICAgICAgTmFtZSBvZiBsYXN0IGNvbW1hbmQgYmVpbmcgYXBwbGllZCB3aGVuIHRoZSBl cnJvciBvY2N1cnJlZC4gIFRoaXMgZmllbGQKICAgICAgICBpcyBhbHdheXMgTlVMTCBpZiB0aGUg ZXJyb3Igd2FzIHJlcG9ydGVkIGR1cmluZyB0aGUgaW5pdGlhbCBkYXRhCiAgICAgICAgY29weS4K ICAgICAgIDwvcGFyYT48L2VudHJ5PgpAQCAtMzEyMywxMCArMzE4OSwxMCBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1 Y3RmaWVsZD54aWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT54aWQ8L3R5cGU+CisgICAgICAgPHN0cnVj dGZpZWxkPmxhc3RfZXJyb3JfeGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+eGlkPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgVHJhbnNhY3Rpb24gSUQgb2YgdGhlIHB1 Ymxpc2hlciBub2RlIGJlaW5nIGFwcGxpZWQgd2hlbiB0aGUgZXJyb3IKKyAgICAgICBUcmFuc2Fj dGlvbiBJRCBvZiB0aGUgcHVibGlzaGVyIG5vZGUgYmVpbmcgYXBwbGllZCB3aGVuIHRoZSBsYXN0 IGVycm9yCiAgICAgICAgb2NjdXJyZWQuICBUaGlzIGZpZWxkIGlzIGFsd2F5cyBOVUxMIGlmIHRo ZSBlcnJvciB3YXMgcmVwb3J0ZWQKICAgICAgICBkdXJpbmcgdGhlIGluaXRpYWwgZGF0YSBjb3B5 LgogICAgICAgPC9wYXJhPjwvZW50cnk+CkBAIC0zMTM0LDE5ICszMjAwLDE5IEBAIFNFTEVDVCBw aWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0 cnVjdGZpZWxkPmVycm9yX2NvdW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dWludDg8L3R5cGU+Cisg ICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfZXJyb3JfY291bnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT51 aW50ODwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIE51bWJlciBv ZiBjb25zZWN1dGl2ZSB0aW1lcyB0aGUgZXJyb3Igb2NjdXJyZWQKKyAgICAgICBOdW1iZXIgb2Yg Y29uc2VjdXRpdmUgdGltZXMgdGhlIGxhc3QgZXJyb3Igb2NjdXJyZWQKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAg ICA8c3RydWN0ZmllbGQ+ZXJyb3JfbWVzc2FnZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5 cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfZXJyb3JfbWVzc2FnZTwvc3RydWN0ZmllbGQ+ IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBU aGUgZXJyb3IgbWVzc2FnZQorICAgICAgIFRoZSBsYXN0IGVycm9yIG1lc3NhZ2UKICAgICAgIDwv cGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCmluZGV4IGEyZWUwMGMuLjE4NmI4ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKQEAgLTEyNjcsMTEgKzEyNjcsMTcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3Jp cHRpb25fd29ya2VycyBBUwogCXcuc3ViaWQsCiAJcy5zdWJuYW1lLAogCXcuc3VicmVsaWQsCi0J dy5yZWxpZCwKLQl3LmNvbW1hbmQsCi0Jdy54aWQsCi0Jdy5lcnJvcl9jb3VudCwKLQl3LmVycm9y X21lc3NhZ2UsCisJdy54YWN0X2NvbW1pdF9jb3VudCwKKwl3LnhhY3RfY29tbWl0X2J5dGVzLAor CXcueGFjdF9lcnJvcl9jb3VudCwKKwl3LnhhY3RfZXJyb3JfYnl0ZXMsCisJdy54YWN0X2Fib3J0 X2NvdW50LAorCXcueGFjdF9hYm9ydF9ieXRlcywKKwl3Lmxhc3RfZXJyb3JfcmVsaWQsCisJdy5s YXN0X2Vycm9yX2NvbW1hbmQsCisJdy5sYXN0X2Vycm9yX3hpZCwKKwl3Lmxhc3RfZXJyb3JfY291 bnQsCisJdy5sYXN0X2Vycm9yX21lc3NhZ2UsCiAJdy5sYXN0X2Vycm9yX3RpbWUsCiAJdy5zdGF0 c19yZXNldAogICAgIEZST00gKFNFTEVDVApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5j CmluZGV4IDVjNzIzYmMuLjIwMTg0YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKQEAgLTE5Miw2ICsxOTIsMTYgQEAgc3RhdGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFu c19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAg Ym9vbCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxh bnMpOwogCisvKgorICogUGFydGl0aW9uVHVwbGVSb3V0aW5nU2l6ZSAtIGV4cG9ydGVkIHRvIGNh bGN1bGF0ZSB0b3RhbCBkYXRhIHNpemUKKyAqIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbWVzYWdl IGFwcGx5LCBiZWNhdXNlIHRoaXMgaXMgb25lIG9mIHRoZQorICogQXBwbHlFeGVjdXRpb25EYXRh IHN0cnVjdCBtZW1iZXJzLgorICovCitzaXplX3QKK1BhcnRpdGlvblR1cGxlUm91dGluZ1NpemUo dm9pZCkKK3sKKwlyZXR1cm4gc2l6ZW9mKFBhcnRpdGlvblR1cGxlUm91dGluZyk7Cit9CiAKIC8q CiAgKiBFeGVjU2V0dXBQYXJ0aXRpb25UdXBsZVJvdXRpbmcgLSBzZXRzIHVwIGluZm9ybWF0aW9u IG5lZWRlZCBkdXJpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0 LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCmluZGV4IGI3ODgzZWMuLjllZGJl NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwpAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUg InBvc3RtYXN0ZXIvZm9ya19wcm9jZXNzLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmFj a2VuZGlkLmgiCkBAIC0yODgsNiArMjg5LDE1IEBAIHN0YXRpYyBIVEFCICpyZXBsU2xvdFN0YXRI YXNoID0gTlVMTDsKIHN0YXRpYyBIVEFCICpzdWJXb3JrZXJTdGF0SGFzaCA9IE5VTEw7CiAKIC8q CisgKiBTdGF0cyBvZiBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgc2hvdWxkIGJlIGRpc3BsYXllZAor ICogYXQgZWl0aGVyIGNvbW1pdCBwcmVwYXJlZCBvciByb2xsYmFjayBwcmVwYXJlZCB0aW1lLCBl dmVuIHdoZW4gaXQncworICogYWZ0ZXIgdGhlIHNlcnZlciByZXN0YXJ0LiBXZSBoYXZlIHRoZSBh cHBseSB3b3JrZXIgc2VuZCB0aG9zZSBzdGF0aXN0aWNzCisgKiB0byB0aGUgc3RhdHMgY29sbGVj dG9yIGF0IHByZXBhcmUgdGltZSBhbmQgdGhlIHN0YXJ0dXAgcHJvY2VzcyByZXN0b3JlCisgKiB0 aG9zZSBhdCByZXN0YXJ0IGlmIG5lY2Vzc2FyeS4KKyAqLworc3RhdGljIEhUQUIgKnN1Yldvcmtl clByZXBhcmVkWGFjdFNpemVIYXNoID0gTlVMTDsKKworLyoKICAqIExpc3Qgb2YgT0lEcyBvZiBk YXRhYmFzZXMgd2UgbmVlZCB0byB3cml0ZSBvdXQuICBJZiBhbiBlbnRyeSBpcyBJbnZhbGlkT2lk LAogICogaXQgbWVhbnMgdG8gd3JpdGUgb25seSB0aGUgc2hhcmVkLWNhdGFsb2cgc3RhdHMgKCJE QiAwIik7IG90aGVyd2lzZSwgd2UKICAqIHdpbGwgd3JpdGUgYm90aCB0aGF0IERCJ3MgZGF0YSBh bmQgdGhlIHNoYXJlZCBzdGF0cy4KQEAgLTMzOCw2ICszNDgsOSBAQCBzdGF0aWMgdm9pZCBwZ3N0 YXRfcmVzZXRfcmVwbHNsb3QoUGdTdGF0X1N0YXRSZXBsU2xvdEVudHJ5ICpzbG90c3RhdHMsIFRp bWVzdGFtcAogCiBzdGF0aWMgUGdTdGF0X1N0YXRTdWJXb3JrZXJFbnRyeSAqcGdzdGF0X2dldF9z dWJ3b3JrZXJfZW50cnkoT2lkIHN1YmlkLCBPaWQgc3VicmVsaWQsCiAJCQkJCQkJCQkJCQkJCQkg Ym9vbCBjcmVhdGUpOworc3RhdGljIFBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6 ZSAqcGdzdGF0X2dldF9zdWJ3b3JrZXJfcHJlcGFyZWRfdHhuKE9pZCBzdWJpZCwKKwkJCQkJCQkJ CQkJCQkJCQkJCQkgICBjaGFyICpnaWQsIGJvb2wgY3JlYXRlKTsKKwogc3RhdGljIHZvaWQgcGdz dGF0X3Jlc2V0X3N1Yndvcmtlcl9lbnRyeShQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5ICp3ZW50 cnksIFRpbWVzdGFtcFR6IHRzKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF92YWN1dW1fc3Vid29ya2Vy X3N0YXRzKHZvaWQpOwogc3RhdGljIHZvaWQgcGdzdGF0X3NlbmRfc3Vic2NyaXB0aW9uX3B1cmdl KFBnU3RhdF9Nc2dTdWJzY3JpcHRpb25QdXJnZSAqbXNnKTsKQEAgLTM4OCw2ICs0MDEsOSBAQCBz dGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl90ZW1wZmlsZShQZ1N0YXRfTXNnVGVtcEZpbGUgKm1zZywg aW50IGxlbik7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9zdWJzY3JpcHRpb25fcHVyZ2UoUGdT dGF0X01zZ1N1YnNjcmlwdGlvblB1cmdlICptc2csIGludCBsZW4pOwogc3RhdGljIHZvaWQgcGdz dGF0X3JlY3Zfc3Vid29ya2VyX2Vycm9yKFBnU3RhdF9Nc2dTdWJXb3JrZXJFcnJvciAqbXNnLCBp bnQgbGVuKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9yZWN2X3N1Yndvcmtlcl9wdXJnZShQZ1N0YXRf TXNnU3ViV29ya2VyUHVyZ2UgKm1zZywgaW50IGxlbik7CitzdGF0aWMgdm9pZCBwZ3N0YXRfcmVj dl9zdWJ3b3JrZXJfeGFjdF9lbmQoUGdTdGF0X01zZ1N1YldvcmtlclhhY3RFbmQgKm1zZywgaW50 IGxlbik7CitzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFjdChQ Z1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0ICptc2csIGludCBsZW4pOworCiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICogUHVibGljIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBwb3N0bWFzdGVyIGZvbGxvdwpAQCAt MjExMSw2ICsyMTI3LDcyIEBAIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfZHJvcChjb25zdCBjaGFy ICpzbG90bmFtZSkKIH0KIAogLyogLS0tLS0tLS0tLQorICogcGdzdGF0X3JlcG9ydF9zdWJ3b3Jr ZXJfeGFjdF9lbmQoKSAtCisgKgorICogIFRlbGwgdGhlIGNvbGxlY3RvciB0aGF0IHdvcmtlciB0 cmFuc2FjdGlvbiBoYXMgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZC4KKyAqIC0tLS0tLS0tLS0KKyAq Lwordm9pZAorcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoT2lkIHN1YmlkLCBPaWQg c3VicmVsLAorCQkJCQkJCQkgTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwgUGdTdGF0X0NvdW50 ZXIgeGFjdF9zaXplKQoreworCVBnU3RhdF9Nc2dTdWJXb3JrZXJYYWN0RW5kIG1zZzsKKworCUFz c2VydChjb21tYW5kID09IDAgLyogdGFibGUgc3luYyB3b3JrZXIgKi8gfHwKKwkJICAgY29tbWFu ZCA9PSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUIHx8CisJCSAgIGNvbW1hbmQgPT0gTE9HSUNBTF9S RVBfTVNHX1NUUkVBTV9BQk9SVCB8fAorCQkgICBjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19T VFJFQU1fQ09NTUlUKTsKKworCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01U WVBFX1NVQldPUktFUlhBQ1RFTkQpOworCW1zZy5tX3N1YmlkID0gc3ViaWQ7CisJbXNnLm1fc3Vi cmVsaWQgPSBzdWJyZWw7CisJbXNnLm1fY29tbWFuZCA9IGNvbW1hbmQ7CisJbXNnLm1feGFjdF9i eXRlcyA9IHhhY3Rfc2l6ZTsKKwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YoUGdTdGF0X01zZ1N1 YldvcmtlclhhY3RFbmQpKTsKKworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXpl KCk7Cit9CisKKy8qIC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3Bo YXNlX3hhY3QoKSAtCisgKgorICogIFRlbGwgdGhlIGNvbGxlY3RvciB0aGF0IHdvcmtlciB0cmFu c2FjdGlvbiBoYXMgZG9uZSAyUEMgcmVsYXRlZCBvcGVyYXRpb24uCisgKiAtLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK3Bnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoT2lkIHN1Ymlk LCBMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kLAorCQkJCQkJCQkJICBQZ1N0YXRfQ291bnRlciB4 YWN0X3NpemUsCisJCQkJCQkJCQkgIExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVf ZGF0YSwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcENvbW1pdFByZXBhcmVkVHhuRGF0YSAqY29tbWl0 X2RhdGEsCisJCQkJCQkJCQkgIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YSAqcm9s bGJhY2tfZGF0YSkKK3sKKwlQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0IG1zZzsKKwor CUFzc2VydChjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19QUkVQQVJFIHx8CisJCSAgIGNvbW1h bmQgPT0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9QUkVQQVJFIHx8CisJCSAgIGNvbW1hbmQgPT0g TE9HSUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJFRCB8fAorCQkgICBjb21tYW5kID09IExPR0lD QUxfUkVQX01TR19ST0xMQkFDS19QUkVQQVJFRCk7CisKKwkvKiBzZXR1cCB0aGUgbWVzc2FnZSAq LworCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01UWVBFX1NVQldPUktFUlRX T1BIQVNFWEFDVCk7CisJbXNnLm1fc3ViaWQgPSBzdWJpZDsKKwltc2cubV9jb21tYW5kID0gY29t bWFuZDsKKworCS8qIGdldCB0aGUgZ2lkIGZvciB0aGlzIHR3byBwaGFzZSBvcGVyYXRpb24gKi8K KwlpZiAoY29tbWFuZCA9PSBMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSB8fAorCQljb21tYW5kID09 IExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSkKKwkJc3RybGNweShtc2cubV9naWQsIHBy ZXBhcmVfZGF0YS0+Z2lkLCBzaXplb2YobXNnLm1fZ2lkKSk7CisJZWxzZSBpZiAoY29tbWFuZCA9 PSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEKQorCQlzdHJsY3B5KG1zZy5tX2dpZCwg Y29tbWl0X2RhdGEtPmdpZCwgc2l6ZW9mKG1zZy5tX2dpZCkpOworCWVsc2UgLyogcm9sbGJhY2sg cHJlcGFyZWQgKi8KKwkJc3RybGNweShtc2cubV9naWQsIHJvbGxiYWNrX2RhdGEtPmdpZCwgc2l6 ZW9mKG1zZy5tX2dpZCkpOworCisJbXNnLm1feGFjdF9ieXRlcyA9IHhhY3Rfc2l6ZTsKKwlwZ3N0 YXRfc2VuZCgmbXNnLCBzaXplb2YoUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdCkpOwor CXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCk7Cit9CisKKy8qIC0tLS0tLS0t LS0KICAqIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX2Vycm9yKCkgLQogICoKICAqCVRlbGwgdGhl IGNvbGxlY3RvciBhYm91dCB0aGUgc3Vic2NyaXB0aW9uIHdvcmtlciBlcnJvci4KQEAgLTIxMzAs NiArMjIxMiw3IEBAIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX2Vycm9yKE9pZCBzdWJpZCwgT2lk IHN1YnJlbGlkLCBPaWQgcmVsaWQsCiAJcGdzdGF0X3NldGhlYWRlcigmbXNnLm1faGRyLCBQR1NU QVRfTVRZUEVfU1VCV09SS0VSRVJST1IpOwogCW1zZy5tX3N1YmlkID0gc3ViaWQ7CiAJbXNnLm1f c3VicmVsaWQgPSBzdWJyZWxpZDsKKwltc2cubV94YWN0X2Vycm9yX2J5dGVzID0gZ2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCk7CiAJbXNnLm1fZGJpZCA9IE15RGF0YWJhc2VJZDsK IAltc2cubV9yZWxpZCA9IHJlbGlkOwogCW1zZy5tX2NvbW1hbmQgPSBjb21tYW5kOwpAQCAtMjEz OCw2ICsyMjIxLDggQEAgcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfZXJyb3IoT2lkIHN1YmlkLCBP aWQgc3VicmVsaWQsIE9pZCByZWxpZCwKIAlzdHJsY3B5KG1zZy5tX21lc3NhZ2UsIGVycm1zZywg UEdTVEFUX1NVQldPUktFUkVSUk9SX01TR0xFTik7CiAKIAlwZ3N0YXRfc2VuZCgmbXNnLCBsZW4p OworCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUoKTsKIH0KIAogLyogLS0t LS0tLS0tLQpAQCAtMzkwNiw2ICszOTkxLDE0IEBAIFBnc3RhdENvbGxlY3Rvck1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQkJcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3B1cmdlKCZtc2cu bXNnX3N1YndvcmtlcnB1cmdlLCBsZW4pOwogCQkJCQlicmVhazsKIAorCQkJCWNhc2UgUEdTVEFU X01UWVBFX1NVQldPUktFUlhBQ1RFTkQ6CisJCQkJCXBnc3RhdF9yZWN2X3N1Yndvcmtlcl94YWN0 X2VuZCgmbXNnLm1zZ19zdWJ3b3JrZXJ4YWN0ZW5kLCBsZW4pOworCQkJCQlicmVhazsKKworCQkJ CWNhc2UgUEdTVEFUX01UWVBFX1NVQldPUktFUlRXT1BIQVNFWEFDVDoKKwkJCQkJcGdzdGF0X3Jl Y3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoJm1zZy5tc2dfc3Vid29ya2VydHdvcGhhc2V4YWN0 LCBsZW4pOworCQkJCQlicmVhazsKKwogCQkJCWRlZmF1bHQ6CiAJCQkJCWJyZWFrOwogCQkJfQpA QCAtNDIyMyw2ICs0MzE2LDIyIEBAIHBnc3RhdF93cml0ZV9zdGF0c2ZpbGVzKGJvb2wgcGVybWFu ZW50LCBib29sIGFsbERicykKIAl9CiAKIAkvKgorCSAqIFdyaXRlIHN1YnNjcmlwdGlvbiB3b3Jr ZXIncyBwcmVwYXJlZCB0cmFuc2FjdGlvbiBzdHJ1Y3QKKwkgKi8KKwlpZiAoc3ViV29ya2VyUHJl cGFyZWRYYWN0U2l6ZUhhc2gpCisJeworCQlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFj dFNpemUgKnByZXBhcmVkX3NpemU7CisKKwkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHN1Yldvcmtl clByZXBhcmVkWGFjdFNpemVIYXNoKTsKKwkJd2hpbGUoKHByZXBhcmVkX3NpemUgPSAoUGdTdGF0 X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQp KSAhPSBOVUxMKQorCQl7CisJCQlmcHV0YygnUCcsIGZwb3V0KTsKKwkJCXJjID0gZndyaXRlKHBy ZXBhcmVkX3NpemUsIHNpemVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUp LCAxLCBmcG91dCk7CisJCQkodm9pZCkgcmM7IAkJCS8qIHdlJ2xsIGNoZWNrIGZvciBlcnJvciB3 aXRoIGZlcnJvciAqLworCQl9CisJfQorCisJLyoKIAkgKiBObyBtb3JlIG91dHB1dCB0byBiZSBk b25lLiBDbG9zZSB0aGUgdGVtcCBmaWxlIGFuZCByZXBsYWNlIHRoZSBvbGQKIAkgKiBwZ3N0YXQu c3RhdCB3aXRoIGl0LiAgVGhlIGZlcnJvcigpIGNoZWNrIHJlcGxhY2VzIHRlc3RpbmcgZm9yIGVy cm9yCiAJICogYWZ0ZXIgZWFjaCBpbmRpdmlkdWFsIGZwdXRjIG9yIGZ3cml0ZSBhYm92ZS4KQEAg LTQ3MjUsNiArNDgzNCw0MCBAQCBwZ3N0YXRfcmVhZF9zdGF0c2ZpbGVzKE9pZCBvbmx5ZGIsIGJv b2wgcGVybWFuZW50LCBib29sIGRlZXApCiAJCQkJCWJyZWFrOwogCQkJCX0KIAorCQkJY2FzZSAn UCc6CisJCQkJeworCQkJCQlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgYnVm ZjsKKwkJCQkJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICpwcmVwYXJlZF94 YWN0X3NpemU7CisKKwkJCQkJaWYgKGZyZWFkKCZidWZmLCAxLCBzaXplb2YoUGdTdGF0X1N0YXRT dWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKSwKKwkJCQkJCQkgIGZwaW4pICE9IHNpemVvZihQZ1N0 YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0 KHBnU3RhdFJ1bm5pbmdJbkNvbGxlY3RvciA/IExPRyA6IFdBUk5JTkcsCisJCQkJCQkJCShlcnJt c2coImNvcnJ1cHRlZCBzdGF0aXN0aWNzIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkJCQlzdGF0Zmls ZSkpKTsKKwkJCQkJCWdvdG8gZG9uZTsKKwkJCQkJfQorCisJCQkJCWlmIChzdWJXb3JrZXJQcmVw YXJlZFhhY3RTaXplSGFzaCA9PSBOVUxMKQorCQkJCQl7CisJCQkJCQlIQVNIQ1RMCQloYXNoX2N0 bDsKKworCQkJCQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFN1Yldvcmtl clByZXBhcmVkWGFjdCk7CisJCQkJCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUGdTdGF0 X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKTsKKwkJCQkJCWhhc2hfY3RsLmhjeHQgPSBw Z1N0YXRMb2NhbENvbnRleHQ7CisJCQkJCQlzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9 IGhhc2hfY3JlYXRlKCJTdWJzY3JpcHRpb24gd29ya2VyIHN0YXRzIG9mIHByZXBhcmVkIHR4biIs CisJCQkJCQkJCQkJCQkJCVBHU1RBVF9TVUJXT1JLRVJfSEFTSF9TSVpFLAorCQkJCQkJCQkJCQkJ CQkmaGFzaF9jdGwsCisJCQkJCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhB U0hfQ09OVEVYVCk7CisJCQkJCX0KKworCQkJCQlwcmVwYXJlZF94YWN0X3NpemUgPQorCQkJCQkJ KFBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZSAqKSBoYXNoX3NlYXJjaChzdWJX b3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCwKKwkJCQkJCQkJCQkJCQkJCQkJCQkgKHZvaWQgKikg JmJ1ZmYua2V5LAorCQkJCQkJCQkJCQkJCQkJCQkJCSBIQVNIX0VOVEVSLCBOVUxMKTsKKwkJCQkJ bWVtY3B5KHByZXBhcmVkX3hhY3Rfc2l6ZSwgJmJ1ZmYsIHNpemVvZihQZ1N0YXRfU3RhdFN1Yldv cmtlclByZXBhcmVkWGFjdFNpemUpKTsKKwkJCQkJYnJlYWs7CisJCQkJfQogCQkJY2FzZSAnRSc6 CiAJCQkJZ290byBkb25lOwogCkBAIC01MjkwLDYgKzU0MzMsNyBAQCBwZ3N0YXRfY2xlYXJfc25h cHNob3Qodm9pZCkKIAlwZ1N0YXREQkhhc2ggPSBOVUxMOwogCXJlcGxTbG90U3RhdEhhc2ggPSBO VUxMOwogCXN1YldvcmtlclN0YXRIYXNoID0gTlVMTDsKKwlzdWJXb3JrZXJQcmVwYXJlZFhhY3RT aXplSGFzaCA9IE5VTEw7CiAKIAkvKgogCSAqIEhpc3RvcmljYWxseSB0aGUgYmFja2VuZF9zdGF0 dXMuYyBmYWNpbGl0aWVzIGxpdmVkIGluIHRoaXMgZmlsZSwgYW5kCkBAIC02Mjg3LDYgKzY0MzEs MTA1IEBAIHBnc3RhdF9yZWN2X3N1YnNjcmlwdGlvbl9wdXJnZShQZ1N0YXRfTXNnU3Vic2NyaXB0 aW9uUHVyZ2UgKm1zZywgaW50IGxlbikKIH0KIAogLyogLS0tLS0tLS0tLQorICogcGdzdGF0X3Jl Y3Zfc3Vid29ya2VyX3hhY3RfZW5kKCkgLQorICoKKyAqCVByb2Nlc3MgYSBTVUJXT1JLRVJYQUNU RU5EIG1lc3NhZ2UuCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitwZ3N0YXRfcmVj dl9zdWJ3b3JrZXJfeGFjdF9lbmQoUGdTdGF0X01zZ1N1YldvcmtlclhhY3RFbmQgKm1zZywgaW50 IGxlbikKK3sKKwlQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5ICp3ZW50cnk7CisKKwl3ZW50cnkg PSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShtc2ctPm1fc3ViaWQsIG1zZy0+bV9zdWJyZWxp ZCwgdHJ1ZSk7CisJQXNzZXJ0KHdlbnRyeSk7CisKKwkvKiB0YWJsZSBzeW5jIHdvcmtlciAqLwor CWlmIChtc2ctPm1fY29tbWFuZCA9PSAwKQorCQl3ZW50cnktPnhhY3RfY29tbWl0X2NvdW50Kys7 CisJZWxzZQorCXsKKwkJLyogYXBwbHkgd29ya2VyICovCisJCXN3aXRjaChtc2ctPm1fY29tbWFu ZCkKKwkJeworCQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUOgorCQkJY2FzZSBMT0dJQ0FM X1JFUF9NU0dfU1RSRUFNX0NPTU1JVDoKKwkJCQl3ZW50cnktPnhhY3RfY29tbWl0X2NvdW50Kys7 CisJCQkJd2VudHJ5LT54YWN0X2NvbW1pdF9ieXRlcyArPSBtc2ctPm1feGFjdF9ieXRlczsKKwkJ CQlicmVhazsKKwkJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVDoKKwkJCQl3ZW50 cnktPnhhY3RfYWJvcnRfY291bnQrKzsKKwkJCQl3ZW50cnktPnhhY3RfYWJvcnRfYnl0ZXMgKz0g bXNnLT5tX3hhY3RfYnl0ZXM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bmV4cGVjdGVkIGxvZ2ljYWwgbWVzc2FnZSB0eXBlIGFzIG5vcm1hbCBhcHBseSBlbmQi KTsKKwkJCQlicmVhazsKKwkJfQorCX0KK30KKworLyogLS0tLS0tLS0tLQorICogcGdzdGF0X3Jl Y3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoKSAtCisgKgorICoJUHJvY2VzcyBhIFNVQldPUktF UlRXT1BIQVNFWEFDVCBtZXNzYWdlLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAor cGdzdGF0X3JlY3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoUGdTdGF0X01zZ1N1YldvcmtlclR3 b3BoYXNlWGFjdCAqbXNnLCBpbnQgbGVuKQoreworCVBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFy ZWRYYWN0U2l6ZSAqcHJlcGFyZWRfdHhuOworCVBnU3RhdF9TdGF0U3ViV29ya2VyRW50cnkgKndl bnRyeTsKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCBrZXk7CisKKwlwcmVwYXJl ZF90eG4gPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4obXNnLT5tX3N1YmlkLCBt c2ctPm1fZ2lkLCB0cnVlKTsKKwlBc3NlcnQocHJlcGFyZWRfdHhuKTsKKwlzd2l0Y2gobXNnLT5t X2NvbW1hbmQpCisJeworCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgorCQljYXNlIExP R0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKKwkJCS8qCisJCQkgKiBNYWtlIGVhY2ggc2l6 ZSBvZiBwcmVwYXJlZCB0cmFuc2FjdGlvbiBwZXJzaXN0ZW50CisJCQkgKiBzbyB0aGF0IHdlIGNh biB1cGRhdGUgc3RhdHMgb3ZlciB0aGUgc2VydmVyIHJlc3RhcnQKKwkJCSAqIGFuZCBtYWtlIHBy ZXBhcmVkIHN0YXRzIHVwZGF0ZWQgd2hlbiBjb21taXQgcHJlcGFyZWQKKwkJCSAqIG9yIHJvbGxi YWNrIHByZXBhcmVkIGFycml2ZXMuCisJCQkgKi8KKwkJCXByZXBhcmVkX3R4bi0+c3ViaWQgPSBt c2ctPm1fc3ViaWQ7CisJCQlzdHJsY3B5KHByZXBhcmVkX3R4bi0+Z2lkLCBtc2ctPm1fZ2lkLCBz aXplb2YocHJlcGFyZWRfdHhuLT5naWQpKTsKKwkJCXByZXBhcmVkX3R4bi0+eGFjdF9zaXplID0g bXNnLT5tX3hhY3RfYnl0ZXM7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19D T01NSVRfUFJFUEFSRUQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JPTExCQUNLX1BSRVBBUkVE OgorCQkJLyogVXBkYXRlIGV4cG9ydGVkIHhhY3Qgc3RhdHMgbm93ICovCisJCQl3ZW50cnkgPSBw Z3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShtc2ctPm1fc3ViaWQsCisJCQkJCQkJCQkJCQlJbnZh bGlkT2lkIC8qIGFwcGx5IHdvcmtlciAqLywKKwkJCQkJCQkJCQkJCXRydWUpOworCQkJQXNzZXJ0 KHdlbnRyeSk7CisJCQlpZiAobXNnLT5tX2NvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX0NPTU1J VF9QUkVQQVJFRCkKKwkJCXsKKwkJCQl3ZW50cnktPnhhY3RfY29tbWl0X2NvdW50Kys7CisJCQkJ d2VudHJ5LT54YWN0X2NvbW1pdF9ieXRlcyArPSBwcmVwYXJlZF90eG4tPnhhY3Rfc2l6ZTsKKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQl3ZW50cnktPnhhY3RfYWJvcnRfY291bnQrKzsKKwkJCQl3 ZW50cnktPnhhY3RfYWJvcnRfYnl0ZXMgKz0gcHJlcGFyZWRfdHhuLT54YWN0X3NpemU7CisJCQl9 CisKKwkJCS8qIENsZWFuIHVwIHRoaXMgZ2lkIGZyb20gdHJhbnNhY3Rpb24gc2l6ZSBoYXNoICov CisJCQlrZXkuc3ViaWQgPSBwcmVwYXJlZF90eG4tPnN1YmlkOworCQkJc3RybGNweShrZXkuZ2lk LCBtc2ctPm1fZ2lkLCBzdHJsZW4oa2V5LmdpZCkpOworCQkJKHZvaWQpIGhhc2hfc2VhcmNoKHN1 YldvcmtlclByZXBhcmVkWGFjdFNpemVIYXNoLAorCQkJCQkJCSAgICh2b2lkICopICZrZXksIEhB U0hfUkVNT1ZFLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9S LCAidW5leHBlY3RlZCBsb2dpY2FsIG1lc3NhZ2UgdHlwZSBhcyBwcmVwYXJlIHRyYW5zYWN0aW9u Iik7CisJCQlicmVhazsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0KICAqIHBnc3RhdF9yZWN2X3N1 Yndvcmtlcl9lcnJvcigpIC0KICAqCiAgKglQcm9jZXNzIGEgU1VCV09SS0VSRVJST1IgbWVzc2Fn ZS4KQEAgLTYzMDEsNiArNjU0NCwxMCBAQCBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfZXJyb3IoUGdT dGF0X01zZ1N1YldvcmtlckVycm9yICptc2csIGludCBsZW4pCiAJd2VudHJ5ID0gcGdzdGF0X2dl dF9zdWJ3b3JrZXJfZW50cnkobXNnLT5tX3N1YmlkLCBtc2ctPm1fc3VicmVsaWQsIHRydWUpOwog CUFzc2VydCh3ZW50cnkpOwogCisJLyogZ2VuZXJhbCB0cmFuc2FjdGlvbiBzdGF0cyBmb3IgZXJy b3IgKi8KKwl3ZW50cnktPnhhY3RfZXJyb3JfY291bnQrKzsKKwl3ZW50cnktPnhhY3RfZXJyb3Jf Ynl0ZXMgKz0gbXNnLT5tX3hhY3RfZXJyb3JfYnl0ZXM7CisKIAkvKgogCSAqIFVwZGF0ZSBvbmx5 IHRoZSBjb3VudGVyIGFuZCB0aW1lc3RhbXAgaWYgd2UgcmVjZWl2ZWQgdGhlIHNhbWUgZXJyb3IK IAkgKiBhZ2FpbgpAQCAtNjUyMCw2ICs2NzY3LDUxIEBAIHBnc3RhdF9nZXRfc3Vid29ya2VyX2Vu dHJ5KE9pZCBzdWJpZCwgT2lkIHN1YnJlbGlkLCBib29sIGNyZWF0ZSkKIH0KIAogLyogLS0tLS0t LS0tLQorICogcGdzdGF0X2dldF9zdWJ3b3JrZXJfcHJlcGFyZWRfdHhuCisgKgorICogUmV0dXJu IHN1YnNjcmlwdGlvbiB3b3JrZXIgZW50cnkgd2l0aCB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIE9J RCBhbmQKKyAqIGdpZC4KKyAqIC0tLS0tLS0tLS0KKyAqLworc3RhdGljIFBnU3RhdF9TdGF0U3Vi V29ya2VyUHJlcGFyZWRYYWN0U2l6ZSoKK3Bnc3RhdF9nZXRfc3Vid29ya2VyX3ByZXBhcmVkX3R4 bihPaWQgc3ViaWQsIGNoYXIgKmdpZCwgYm9vbCBjcmVhdGUpCit7CisJUGdTdGF0X1N0YXRTdWJX b3JrZXJQcmVwYXJlZFhhY3Qga2V5OworCVBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0 U2l6ZSAqcHJlcGFyZWRfdHhuX3NpemU7CisJSEFTSEFDVElPTglhY3Rpb247CisJYm9vbAkJZm91 bmQ7CisKKwlpZiAoc3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZUhhc2ggPT0gTlVMTCkKKwl7CisJ CUhBU0hDVEwJCWhhc2hfY3RsOworCisJCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUGdTdGF0 X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3QpOworCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKTsKKwkJaGFzaF9jdGwuaGN4 dCA9IHBnU3RhdExvY2FsQ29udGV4dDsKKwkJc3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZUhhc2gg PSBoYXNoX2NyZWF0ZSgiU3Vic2NyaXB0aW9uIHdvcmtlciBzdGF0cyBvZiBwcmVwYXJlZCB0eG4i LAorCQkJCQkJCQkJCQkJCVBHU1RBVF9TVUJXT1JLRVJfSEFTSF9TSVpFLAorCQkJCQkJCQkJCQkJ CSZoYXNoX2N0bCwKKwkJCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCX0K KworCWtleS5zdWJpZCA9IHN1YmlkOworCW1lbWNweShrZXkuZ2lkLCBnaWQsIHN0cmxlbihrZXku Z2lkKSk7CisJYWN0aW9uID0gKGNyZWF0ZSA/IEhBU0hfRU5URVIgOiBIQVNIX0ZJTkQpOworCXBy ZXBhcmVkX3R4bl9zaXplID0gKFBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZSAq KSBoYXNoX3NlYXJjaChzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCwKKwkJCQkJCQkJCQkJ CQkJCQkJCQkgKHZvaWQgKikgJmtleSwKKwkJCQkJCQkJCQkJCQkJCQkJCQkgYWN0aW9uLCAmZm91 bmQpOworCisJaWYgKGNyZWF0ZSAmJiAhZm91bmQpCisJeworCQlwcmVwYXJlZF90eG5fc2l6ZS0+ c3ViaWQgPSAwOworCQlwcmVwYXJlZF90eG5fc2l6ZS0+Z2lkWzBdID0gJ1wwJzsKKwkJcHJlcGFy ZWRfdHhuX3NpemUtPnhhY3Rfc2l6ZSA9IDA7CisJfQorCisJcmV0dXJuIHByZXBhcmVkX3R4bl9z aXplOworfQorCisvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVzZXRfc3Vid29ya2VyX2VudHJ5 CiAgKgogICogUmVzZXQgdGhlIGdpdmVuIHN1YnNjcmlwdGlvbiB3b3JrZXIgc3RhdGlzdGljcy4K QEAgLTY1MjgsNiArNjgyMCwxMiBAQCBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShPaWQgc3Vi aWQsIE9pZCBzdWJyZWxpZCwgYm9vbCBjcmVhdGUpCiBzdGF0aWMgdm9pZAogcGdzdGF0X3Jlc2V0 X3N1Yndvcmtlcl9lbnRyeShQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5ICp3ZW50cnksIFRpbWVz dGFtcFR6IHRzKQogeworCXdlbnRyeS0+eGFjdF9jb21taXRfY291bnQgPSAwOworCXdlbnRyeS0+ eGFjdF9jb21taXRfYnl0ZXMgPSAwOworCXdlbnRyeS0+eGFjdF9lcnJvcl9jb3VudCA9IDA7CisJ d2VudHJ5LT54YWN0X2Vycm9yX2J5dGVzID0gMDsKKwl3ZW50cnktPnhhY3RfYWJvcnRfY291bnQg PSAwOworCXdlbnRyeS0+eGFjdF9hYm9ydF9ieXRlcyA9IDA7CiAJd2VudHJ5LT5kYmlkID0gSW52 YWxpZE9pZDsKIAl3ZW50cnktPnJlbGlkID0gSW52YWxpZE9pZDsKIAl3ZW50cnktPmNvbW1hbmQg PSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXgg OWI2ZDA1Ny4uMGQwNGVhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCkBAIC0xMTYyLDYgKzExNjIsMTIgQEAgY29weV90YWJsZV9kb25lOgogCU15TG9n aWNhbFJlcFdvcmtlci0+cmVsc3RhdGVfbHNuID0gKm9yaWdpbl9zdGFydHBvczsKIAlTcGluTG9j a1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtlci0+cmVsbXV0ZXgpOwogCisJLyogUmVwb3J0IHRo ZSBzdWNjZXNzIG9mIHRhYmxlIHN5bmMuICovCisJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFj dF9lbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkLAorCQkJCQkJCQkJIDAgLyogbm8gbG9naWNhbCBtZXNzYWdlIHR5cGUgKi8s CisJCQkJCQkJCQkgMCAvKiB4YWN0IHNpemUgKi8pOworCiAJLyoKIAkgKiBGaW5hbGx5LCB3YWl0 IHVudGlsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQgdGhl bgogCSAqIHJldHVybiB0byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDNhNDA2ODQuLjA0ZDQyMzYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIxLDIxICsyMjEs NjUgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCiAJTG9naWNhbFJlcE1z Z1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyZWw7CiAKKwkvKgorCSAqIFN0b3JlIGRhdGEgc2l6ZSBvZiB0aGlzIHRyYW5zYWN0aW9uLgor CSAqCisJICogVGhlIGJ5dGUgc2l6ZSBvZiB0cmFuc2FjdGlvbiBvbiB0aGUgcHVibGlzaGVyIGlz IGNhbGN1bGF0ZWQKKwkgKiBieSBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZSgpIGJhc2VkIG9uIHRo ZSBSZW9yZGVyQnVmZmVyQ2hhbmdlCisJICogc3RydWN0dXJlLiBCdXQgb24gdGhlIHN1YnNjcmli ZXIsIGNvbnN1bWVkIHJlc291cmNlcyBhcmUKKwkgKiBub3Qgc2FtZSBhcyB0aGUgcHVibGlzaGVy J3MgZGVjb2RpbmcgcHJvY2Vzc3NpbmcgYW5kIHJlcXVpcmVkCisJICogdG8gYmUgY29tcHV0ZWQg aW4gZGlmZmVyZW50IHdheS4gVGhlcmVmb3JlLCB0aGUgZXhhY3Qgc2FtZSBieXRlCisJICogc2l6 ZSBpcyBub3QgcmVzdG9yZWQgb24gdGhlIHN1YnNjcmliZXIgdXN1YWxseS4KKwkgKgorCSAqIERh dGEgc2l6ZSBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGlzIG1hbmFnZWQgYnkgc3RyZWFtaW5n WGFjdFNpemUKKwkgKiBmb3IgZmxleGlibGUgZGF0YSBibG9ja3MgaGFuZGxpbmcuCisJICovCisJ UGdTdGF0X0NvdW50ZXIgYnl0ZXM7CisKIAkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLwog CWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KIAlUcmFuc2FjdGlvbklk IHJlbW90ZV94aWQ7CiAJVGltZXN0YW1wVHogdHM7CQkJCS8qIGNvbW1pdCwgcm9sbGJhY2ssIG9y IHByZXBhcmUgdGltZXN0YW1wICovCiB9IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKIAorLyogU3Ry dWN0IHRvIGluZGljYXRlIGV4dHJhIGNvbnN1bXB0aW9uIG9mIHRyYW5zYWN0aW9uIHNpemUgKi8K K3R5cGVkZWYgdW5pb24gQXBwbHlUeG5FeHRyYURhdGEKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKnJlbG1hcGVudHJ5OworCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVwcmVsYXRpb247CisJaW50 ICAgICAgICAgKnN0cmVhbV93cml0ZV9sZW47Cit9IEFwcGx5VHhuRXh0cmFEYXRhOworCiBzdGF0 aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJ LmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLAorCS5ieXRlcyA9IDAsCiAJLnJlbW90ZV9hdHRu dW0gPSAtMSwKIAkucmVtb3RlX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkLAogCS50cyA9IDAs CiB9OwogCisvKgorICogVHdvIG9yIG1vcmUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJh bGxlbCBvbiB0aGUgcHVibGlzaGVyCisgKiBnZW5lcmF0ZSB1bmV4cGVjdGVkIG9yZGVyIG9mIHBh cnRpYWwgdHhuIGRhdGEgZGVtYXJjYXRlZCBzdHJlYW0gc3RhcnQKKyAqIGFuZCBzdHJlYW0gc3Rv cCB0byB0aGUgc3Vic2NyaWJlciwgc2luY2Ugd2hlbmV2ZXIgaXRzIHNpemUgb2Ygb25lIG9mCisg KiB0aGUgdHhucyByZWFjaGVzIHRoZSBwdWJsaXNoZXIncyBsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtLAorICogdGhlIHBhcnQgKGFuZCBpbiB0aGUgZW5kLCBsYXN0IHJlbWFpbmluZyBjaGFuZ2Vz KSBpcyBzdHJlYW1lZC4KKyAqIFRoaXMgY3JlYXRlcyBtaXhlZCBibG9ja3Mgb2Ygc3RyZWFtaW5n IGRhdGEgd2hpbGUKKyAqIHRoZXJlJ3MgcG9zc2liaWxpdHkgc29tZSBhcmUgc3VjY2Vzc2Z1bGx5 IGNvbW1pdHRlZCBidXQgb3RoZXJzIGFyZQorICogbm90IGJ5IHN0cmVhbSBhYm9ydC4gVGhlcmVm b3JlLCB0byB0cmFjayBjb3JyZWN0IGJ5dGUgc2l6ZQorICogaXQncyBuZWNlc3NhcnkgdG8gdHJh Y2UgZWFjaCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYnkgbWFraW5nIHBhaXIKKyAqIG9mIHhpZCBh bmQgdHJhbnNhY3Rpb24gc2l6ZS4KKyAqLworI2RlZmluZSBQQVJBTExFTF9TVFJFQU1JTkdfWEFD VFMgMzIKK3R5cGVkZWYgc3RydWN0IFhhY3RTaXplRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkCWtl eTsKKwlQZ1N0YXRfQ291bnRlcgl4YWN0X3NpemU7Cit9IFhhY3RTaXplRW50cnk7CitzdGF0aWMg SFRBQiAqc3RyZWFtaW5nWGFjdFNpemUgPSBOVUxMOworCiBzdGF0aWMgTWVtb3J5Q29udGV4dCBB cHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0g TlVMTDsKIApAQCAtMzA0LDYgKzM0OCw5IEBAIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCk7CiAvKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2Nv bW1pdCAqLwogc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKIAorc3Rh dGljIHZvaWQgdXBkYXRlX2FwcGx5X2NoYW5nZV9zaXplKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlv biwKKwkJCQkJCQkJCSBBcHBseVR4bkV4dHJhRGF0YSAqZXh0cmFfZGF0YSk7CisKIHN0YXRpYyB2 b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNv bW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBw bHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bywKQEAgLTgxOCw2ICs4NjUsMTEgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMp CiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBw YXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24p OwogCisJcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwKKwkJCQkJCQkJCSBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIExPR0lDQUxfUkVQX01T R19DT01NSVQsCisJCQkJCQkJCQkgZ2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCkp OworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9h cHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTkyMiw2ICs5NzQsMTEgQEAgYXBwbHlf aGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtl cl90d29waGFzZV94YWN0KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCisJCQkJCQkJCQkJICBM T0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSwKKwkJCQkJCQkJCQkgIGdldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3Rfc2l6ZSgpLAorCQkJCQkJCQkJCSAgJnByZXBhcmVfZGF0YSwgTlVMTCwgTlVMTCk7 CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtOTYzLDYgKzEwMjAsMTMgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFi bGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNz X3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAorCXVwZGF0ZV9hcHBseV9j aGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVELCBOVUxMKTsKKworCXBn c3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwKKwkJCQkJCQkJCQkgIExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQsCisJCQkJ CQkJCQkJICBnZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUoKSwKKwkJCQkJCQkJCQkg IE5VTEwsICZwcmVwYXJlX2RhdGEsIE5VTEwpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0K QEAgLTEwMTQsNiArMTA3OCwxMiBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3Ry aW5nSW5mbyBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19k YXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCisJLyogc2VuZCByb2xsYmFjayBwcmVwYXJlZCBtZXNz YWdlIGZvciB0aGlzIGdpZCAqLworCXBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hh Y3QoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCQkgIExPR0lDQUxfUkVQX01T R19ST0xMQkFDS19QUkVQQVJFRCwKKwkJCQkJCQkJCQkgIGdldF9hcHBseV9lcnJvcl9jb250ZXh0 X3hhY3Rfc2l6ZSgpLAorCQkJCQkJCQkJCSAgTlVMTCwgTlVMTCwgJnJvbGxiYWNrX2RhdGEpOwor CiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTEwMjksNiArMTA5OSw3IEBAIHN0YXRpYyB2 b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2lj YWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVhhY3RTaXplRW50cnkgKnN0cmVh bWVkX2VudHJ5OwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVS Uk9SLApAQCAtMTA2Niw2ICsxMTM3LDE5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNo cm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKIAorCS8qCisJICogUmVwb3J0IHRoZSBwcmVwYXJlZCBzdHJlYW1pbmcg eGFjdCBzaXplIHRvIHRoZSBzdGF0cyBjb2xsZWN0b3IKKwkgKiBpbiBhIHByZXBhcmVkIHhhY3Qg bWFubmVyIHRvIG1ha2UgaXQgc3Vydml2ZSBvdmVyIHRoZSByZXN0YXJ0LgorCSAqLworCXN0cmVh bWVkX2VudHJ5ID0gaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNpemUsCisJCQkJCQkJCSAodm9p ZCAqKSAmcHJlcGFyZV9kYXRhLnhpZCwKKwkJCQkJCQkJIEhBU0hfRklORCwgTlVMTCk7CisJQXNz ZXJ0KHN0cmVhbWVkX2VudHJ5KTsKKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl90d29waGFzZV94 YWN0KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCisJCQkJCQkJCQkJICBMT0dJQ0FMX1JFUF9N U0dfU1RSRUFNX1BSRVBBUkUsCisJCQkJCQkJCQkJICBzdHJlYW1lZF9lbnRyeS0+eGFjdF9zaXpl LAorCQkJCQkJCQkJCSAgJnByZXBhcmVfZGF0YSwgTlVMTCwgTlVMTCk7CisKIAlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9pbmZvKCk7CkBAIC0xMTQzLDYgKzEyMjcsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0 YXJ0KFN0cmluZ0luZm8gcykKIAkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwogCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0KTsKIAorCQl1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTE9HSUNB TF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwgTlVMTCk7CisKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CiAJfQogCkBAIC0xMTkzLDEyICsxMjc5LDE3IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fc3RvcChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3Nh Z2UuCisgKgorICogQ3VycmVudGx5LCBhYm9ydCBvZiBzdHJlYW1pbmcgc3VidHJhbnNhY3Rpb24g ZG9lcyBub3QgYWZmZWN0CisgKiBzaXplIG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbiByZXNvdXJj ZXMgYmVjYXVzZSBpdCBoYXMgdXNlZCB0aGUKKyAqIHJlc291cmNlcyBhbnl3YXkuCiAgKi8KIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIHsKIAlU cmFuc2FjdGlvbklkIHhpZDsKIAlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYYWN0U2l6ZUVudHJ5 ICpzdHJlYW1lZF9lbnRyeTsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJl cG9ydChFUlJPUiwKQEAgLTEyMTMsOCArMTMwNCwzNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkKIAl7CisJCWJvb2wJ CWZvdW5kID0gZmFsc2U7CiAJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCAwKTsK IAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsK KworCQkvKgorCQkgKiBXZSd2ZSBjb21wbGV0ZWQgdG8gaGFuZGxlIHN0cmVhbSBhYm9ydCB3aXRo b3V0IGlzc3VlLCBzbworCQkgKiBnZXQgcmVhZHkgdG8gcmVwb3J0IHRoZSB0cmFuc2FjdGlvbiBz dGF0cyB2aWEgbm9ybWFsCisJCSAqIHRlcm1pbmF0aW9uIHJvdXRlIGluc3RlYWQgb2YgdGhlIGFw cGx5IGVycm9yIHJvdXRlLgorCQkgKi8KKwkJc3RyZWFtZWRfZW50cnkgPSBoYXNoX3NlYXJjaChz dHJlYW1pbmdYYWN0U2l6ZSwKKwkJCQkJCQkJCSAodm9pZCAqKSAmeGlkLAorCQkJCQkJCQkJIEhB U0hfRklORCwgJmZvdW5kKTsKKwkJLyoKKwkJICogSXQncyBwb3NzaWJsZSB0aGF0IHdlIGdldCBz dHJlYW0gYWJvcnQKKwkJICogZWFybGllciB0aGFuIGFueSBjYWxsIG9mIHdyaXRlX3N0cmVhbV9j aGFuZ2UgdGhhdAorCQkgKiBjcmVhdGVzIG9uZSBoYXNoIGVudHJ5IGZvciB0aGlzIHhpZC4gSW4g dGhpcyBjYXNlLAorCQkgKiB0byBmaW5kIGEgZW50cnkgd2l0aCB0aGlzIHhpZCBmYWlscy4gU28g anVzdCBjaGVjaworCQkgKiBpZiB3ZSd2ZSBmb3VuZCBpdC4gT25seSB3aGVuIHdlIGNvbmZpcm0g c29tZSB3cml0ZXMKKwkJICogYnkgd3JpdGVfc3RyZWFtX2NoYW5nZSwgcmVwb3J0IHRoZSBzdHJl YW1fYWJvcnQuCisJCSAqLworCQlpZiAoZm91bmQpCisJCXsKKwkJCXBnc3RhdF9yZXBvcnRfc3Vi d29ya2VyX3hhY3RfZW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCisJCQkJCQkJCQkJCSBJ bnZhbGlkT2lkLAorCQkJCQkJCQkJCQkgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCwKKwkJ CQkJCQkJCQkJIHN0cmVhbWVkX2VudHJ5LT54YWN0X3NpemUpOworCQkJKHZvaWQpIGhhc2hfc2Vh cmNoKHN0cmVhbWluZ1hhY3RTaXplLAorCQkJCQkJCSAgICh2b2lkICopICZ4aWQsCisJCQkJCQkJ ICAgSEFTSF9SRU1PVkUsIE5VTEwpOworCQl9CiAJfQogCWVsc2UKIAl7CkBAIC0xNDE3LDYgKzE1 MzYsNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7CiAJVHJh bnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJWGFj dFNpemVFbnRyeSAqc3RyZWFtZWRfZW50cnk7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNDM4LDYgKzE1NTgsMTkgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKIAorCS8qIFJlcG9ydCBhbmQgY2xlYW4gdXAg dGhlIHhpZCAqLworCXN0cmVhbWVkX2VudHJ5ID0gaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNp emUsCisJCQkJCQkJCSAodm9pZCAqKSAmeGlkLAorCQkJCQkJCQkgSEFTSF9GSU5ELCBOVUxMKTsK KwlBc3NlcnQoc3RyZWFtZWRfZW50cnkpOworCXBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3hhY3Rf ZW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCisJCQkJCQkJCQkgSW52YWxpZE9pZCwKKwkJ CQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJCQkJCQkJCSBzdHJlYW1l ZF9lbnRyeS0+eGFjdF9zaXplKTsKKwkodm9pZCkgaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNp emUsCisJCQkJCSAgICh2b2lkICopICZ4aWQsCisJCQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsK KwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAKIAlyZXNldF9h cHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTE1NDEsNiArMTY3NCw3IEBAIGFwcGx5X2hh bmRsZV9pbnNlcnQoU3RyaW5nSW5mbyBzKQogCUVTdGF0ZQkgICAqZXN0YXRlOwogCVR1cGxlVGFi bGVTbG90ICpyZW1vdGVzbG90OwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCUFwcGx5VHhuRXh0 cmFEYXRhIGV4dHJhX3NpemU7CiAKIAlpZiAoaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExP R0lDQUxfUkVQX01TR19JTlNFUlQsIHMpKQogCQlyZXR1cm47CkBAIC0xNTc2LDYgKzE3MTAsMTAg QEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCiAJc2xvdF9maWxsX2RlZmF1bHRz KHJlbCwgZXN0YXRlLCByZW1vdGVzbG90KTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKIAorCS8qIFVwZGF0ZSB0cmFuc2FjdGlvbiBzaXplICovCisJZXh0cmFfc2l6ZS5yZWxtYXBl bnRyeSA9IHJlbDsKKwl1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTE9HSUNBTF9SRVBfTVNHX0lO U0VSVCwgJmV4dHJhX3NpemUpOworCiAJLyogRm9yIGEgcGFydGl0aW9uZWQgdGFibGUsIGluc2Vy dCB0aGUgdHVwbGUgaW50byBhIHBhcnRpdGlvbi4gKi8KIAlpZiAocmVsLT5sb2NhbHJlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJCWFwcGx5X2hhbmRs ZV90dXBsZV9yb3V0aW5nKGVkYXRhLApAQCAtMTY2Nyw2ICsxODA1LDcgQEAgYXBwbHlfaGFuZGxl X3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJVHVwbGVUYWJsZVNsb3QgKnJlbW90ZXNsb3Q7CiAJUmFu Z2VUYmxFbnRyeSAqdGFyZ2V0X3J0ZTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlBcHBseVR4 bkV4dHJhRGF0YSBleHRyYV9zaXplOwogCiAJaWYgKGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlv bihMT0dJQ0FMX1JFUF9NU0dfVVBEQVRFLCBzKSkKIAkJcmV0dXJuOwpAQCAtMTczMyw2ICsxODcy LDEwIEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5mbyBzKQogCQkJCQloYXNfb2xkdHVw ID8gJm9sZHR1cCA6ICZuZXd0dXApOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwog CisJLyogVXBkYXRlIHRyYW5zYWN0aW9uIHNpemUgKi8KKwlleHRyYV9zaXplLnJlbG1hcGVudHJ5 ID0gcmVsOworCXVwZGF0ZV9hcHBseV9jaGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfVVBEQVRF LCAmZXh0cmFfc2l6ZSk7CisKIAkvKiBGb3IgYSBwYXJ0aXRpb25lZCB0YWJsZSwgYXBwbHkgdXBk YXRlIHRvIGNvcnJlY3QgcGFydGl0aW9uLiAqLwogCWlmIChyZWwtPmxvY2FscmVsLT5yZF9yZWwt PnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcoZWRhdGEsCkBAIC0xODMwLDYgKzE5NzMsNyBAQCBhcHBseV9oYW5kbGVfZGVs ZXRlKFN0cmluZ0luZm8gcykKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlUdXBsZVRhYmxlU2xvdCAq cmVtb3Rlc2xvdDsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlBcHBseVR4bkV4dHJhRGF0YSBl eHRyYV9zaXplOwogCiAJaWYgKGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JF UF9NU0dfREVMRVRFLCBzKSkKIAkJcmV0dXJuOwpAQCAtMTg2Nyw2ICsyMDExLDEwIEBAIGFwcGx5 X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCXNsb3Rfc3RvcmVfZGF0YShyZW1vdGVzbG90 LCByZWwsICZvbGR0dXApOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJLyog VXBkYXRlIHRyYW5zYWN0aW9uIHNpemUgKi8KKwlleHRyYV9zaXplLnJlbG1hcGVudHJ5ID0gIHJl bDsKKwl1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTE9HSUNBTF9SRVBfTVNHX0RFTEVURSwgJmV4 dHJhX3NpemUpOworCiAJLyogRm9yIGEgcGFydGl0aW9uZWQgdGFibGUsIGFwcGx5IGRlbGV0ZSB0 byBjb3JyZWN0IHBhcnRpdGlvbi4gKi8KIAlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJCWFwcGx5X2hhbmRsZV90dXBsZV9y b3V0aW5nKGVkYXRhLApAQCAtMjQxOCw2ICsyNTY2LDExMSBAQCBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpCiB9CiAKIC8qCisgKiBTdWJzY3JpYmVyIHNpZGUgaW1wbGVtZW50YXRpb24gZXF1 aXZhbGVudCB0byBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZQorICogb2YgdGhlIHB1Ymxpc2hlci4K KyAqCisgKiBBY2NvcmRpbmcgdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gbWVzc2FnZSB0eXBl LCByZWNvcmQgbWFqb3IKKyAqIHJlc291cmNlIGNvbnN1bXB0aW9ucyBvZiB0aGlzIHN1YnNjcmlw dGlvbiBmb3IgZWFjaCBtZXNzYWdlLgorICogQXQgcHJlc2VudCwgZG8gbm90IGNvbGxlY3QgZGF0 YSBmcm9tIGdlbmVyaWMgZnVuY3Rpb25zIHRvIGtlZXAKKyAqIGNvZGUgc2ltcGxpY2l0eSwgc2lu Y2UgdGhlIGltcGxlbWVudGF0aW9uIGNvbXBsZXhpdHkgdmVyc3VzIGJlbmVmaXQKKyAqIHRyYWRl b2ZmIHNob3VsZCBub3QgYmUgZ29vZC4gQWxzbywgYWRkIG11bHRpcGxlIHZhbHVlcworICogYXQg b25jZSBpbiBvcmRlciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscyB0byB0aGlzIGZ1bmN0 aW9uLgorICoKKyAqICdleHRyYV9kYXRhJyBjb250cm9scyBkZXRhaWwgaGFuZGxpbmcgb2YgZGF0 YSBzaXplIGNhbGN1bGF0aW9uLgorICovCitzdGF0aWMgdm9pZAordXBkYXRlX2FwcGx5X2NoYW5n ZV9zaXplKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgQXBwbHlUeG5FeHRyYURhdGEgKmV4dHJh X2RhdGEpCit7CisJaW50NjQgICAgICAgc2l6ZSA9IDA7CisKKwkvKgorCSAqIEluIHN0cmVhbWlu ZyBtb2RlLCBzdHJlYW1fd3JpdGVfY2hhbmdlIGlzIGNhbGxlZAorCSAqIGluc3RlYWQgb2YgaW1t ZWRpYXRlIGFwcGx5LiBMaXN0IHVwIHRoZSBtZXNzYWdlcyB0eXBlcworCSAqIHRoYXQgY2FuIGJl IGNhdWdodCBieSBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24gYW5kCisJICogdHJlYXQgdGhl IHdyaXRlIGxlbmd0aCBhcyB0aGUgc2l6ZSBvZiB0cmFuc2FjdGlvbiBzbworCSAqIHRoYXQgd2Ug Y2FuIGV4cG9ydCBpdCBhcyBwYXJ0IG9mIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlci4KKwkg Ki8KKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwkJKGFjdGlvbiA9PSBMT0dJQ0FM X1JFUF9NU0dfSU5TRVJUIHx8CisJCSBhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1VQREFURSB8 fAorCQkgYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19ERUxFVEUgfHwKKwkJIGFjdGlvbiA9PSBM T0dJQ0FMX1JFUF9NU0dfVFJVTkNBVEUgfHwKKwkJIGFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0df UkVMQVRJT04gfHwKKwkJIGFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSkpCisJeworCQlz aXplICs9ICpleHRyYV9kYXRhLT5zdHJlYW1fd3JpdGVfbGVuOworCQlhZGRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0X3NpemUoc2l6ZSk7CisJCXJldHVybjsKKwl9CisKKwlzd2l0Y2ggKGFjdGlv bikKKwl7CisJCS8qIE5vIHNwZWNpYWwgbWVtb3J5IGNvbnN1bXB0aW9uICovCisJCWNhc2UgTE9H SUNBTF9SRVBfTVNHX0JFR0lOOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19DT01NSVQ6CisJCWNh c2UgTE9HSUNBTF9SRVBfTVNHX1RSVU5DQVRFOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19UWVBF OgorCQljYXNlIExPR0lDQUxfUkVQX01TR19PUklHSU46CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X01FU1NBR0U6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOgorCQljYXNlIExP R0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0JFR0lO X1BSRVBBUkU6CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19JTlNFUlQ6CisJ CWNhc2UgTE9HSUNBTF9SRVBfTVNHX1VQREFURToKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfREVM RVRFOgorCQkJQXNzZXJ0KGV4dHJhX2RhdGEgIT0gTlVMTCk7CisKKwkJCS8qCisJCQkgKiBDb21w dXRlIHNpemUgYmFzZWQgb24gQXBwbHlFeGVjdXRpb25EYXRhLgorCQkJICogVGhlIHNpemUgb2Yg TG9naWNhbFJlcFJlbE1hcEVudHJ5IGNhbiBiZSBza2lwcGVkIGJlY2F1c2UKKwkJCSAqIGl0IGlz IG9idGFpbmVkIGZyb20gaGFzaF9zZWFyY2ggaW4gbG9naWNhbHJlcF9yZWxfb3Blbi4KKwkJCSAq LworCQkJc2l6ZSArPSBzaXplb2YoQXBwbHlFeGVjdXRpb25EYXRhKSArIHNpemVvZihFU3RhdGUp ICsKKwkJCQlzaXplb2YoUmVzdWx0UmVsSW5mbykgKyBzaXplb2YoUmVzdWx0UmVsSW5mbyk7CisK KwkJCS8qCisJCQkgKiBBZGQgc29tZSBleHRyYSBzaXplIGlmIHRoZSB0YXJnZXQgcmVsYXRpb24g aXMgcGFydGl0aW9uZWQuCisJCQkgKiBQYXJ0aXRpb25UdXBsZVJvdXRpbmcgaXNuJ3QgZXhwb3J0 ZWQuIFRoZXJlZm9yZSwgY2FsbCB0aGUKKwkJCSAqIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpdHMg c2l6ZSBpbnN0ZWFkLgorCQkJICovCisJCQlpZiAoZXh0cmFfZGF0YS0+cmVsbWFwZW50cnktPmxv Y2FscmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJ CQlzaXplICs9IHNpemVvZihNb2RpZnlUYWJsZVN0YXRlKSArIFBhcnRpdGlvblR1cGxlUm91dGlu Z1NpemUoKTsKKwkJCWJyZWFrOworCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OOgor CQkJQXNzZXJ0KGV4dHJhX2RhdGEgIT0gTlVMTCk7CisKKwkJCS8qIFNlZSBsb2dpY2FscmVwX3Jl YWRfYXR0cnMgZm9yIHRoZSBsYXN0IHR3byAqLworCQkJc2l6ZSArPSBzaXplb2YoTG9naWNhbFJl cFJlbGF0aW9uKSArCisJCQkJZXh0cmFfZGF0YS0+cmVwcmVsYXRpb24tPm5hdHRzICogc2l6ZW9m KGNoYXIgKikgKworCQkJCWV4dHJhX2RhdGEtPnJlcHJlbGF0aW9uLT5uYXR0cyAqIHNpemVvZihP aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJUOgor CQkJc2l6ZSArPSBzaXplb2YoRmlsZVNldCk7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxf UkVQX01TR19QUkVQQVJFOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQ6 CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JPTExCQUNLX1BSRVBBUkVEOgorCQljYXNlIExPR0lD QUxfUkVQX01TR19TVFJFQU1fQ09NTUlUOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1f UFJFUEFSRToKKwkJCXNpemUgKz0gc2l6ZW9mKEZsdXNoUG9zaXRpb24pOworCQkJYnJlYWs7CisK KwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJP VE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBsb2dpY2FsIHJlcGxpY2F0 aW9uIG1lc3NhZ2UgdHlwZSBcIiVjXCIiLCBhY3Rpb24pKSk7CisJfQorCisJLyogdXBkYXRlIHRo ZSB0b3RhbCBzaXplIG9mIGNvbnN1bXB0aW9uICovCisJYWRkX2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdF9zaXplKHNpemUpOworfQorCisvKgogICogRmlndXJlIG91dCB3aGljaCB3cml0ZS9mbHVz aCBwb3NpdGlvbnMgdG8gcmVwb3J0IHRvIHRoZSB3YWxzZW5kZXIgcHJvY2Vzcy4KICAqCiAgKiBX ZSBjYW4ndCBzaW1wbHkgcmVwb3J0IGJhY2sgdGhlIGxhc3QgTFNOIHRoZSB3YWxzZW5kZXIgc2Vu dCB1cyBiZWNhdXNlIHRoZQpAQCAtMzI3MSw2ICszNTI0LDkgQEAgc3RhdGljIHZvaWQKIHN0cmVh bV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47 CisJaW50CQkJdG90YWxfbGVuOworCWJvb2wJCWZvdW5kOworCVhhY3RTaXplRW50cnkgKnN0cmVh bWVkX2VudHJ5OwogCiAJQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKIAlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwpAQCAtMzI4OSw2ICszNTQ1LDE2IEBA IHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlsZW4gPSAo cy0+bGVuIC0gcy0+Y3Vyc29yKTsKIAogCUJ1ZkZpbGVXcml0ZShzdHJlYW1fZmQsICZzLT5kYXRh W3MtPmN1cnNvcl0sIGxlbik7CisKKwkvKiB1cGRhdGUgeGFjdCBzaXplIGJ5IHhpZCAqLworCXRv dGFsX2xlbiA9IChzLT5sZW4gLSBzLT5jdXJzb3IpICogMiArIHNpemVvZihjaGFyKSArIHNpemVv ZihhY3Rpb24pOworCXN0cmVhbWVkX2VudHJ5ID0gKFhhY3RTaXplRW50cnkgKikgaGFzaF9zZWFy Y2goc3RyZWFtaW5nWGFjdFNpemUsCisJCQkJCQkJCQkJCQkgICAodm9pZCAqKSAmc3RyZWFtX3hp ZCwKKwkJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwkJ c3RyZWFtZWRfZW50cnktPnhhY3Rfc2l6ZSA9IHRvdGFsX2xlbjsgLyogaW5pdCAqLworCWVsc2UK KwkJc3RyZWFtZWRfZW50cnktPnhhY3Rfc2l6ZSArPSB0b3RhbF9sZW47IC8qIHVwZGF0ZSAqLwog fQogCiAvKgpAQCAtMzQyNiw2ICszNjkyLDIzIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5l Y3Rpb24gc3RyaW5nIFwiJXNcIiIsCiAJCSBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pOwogCisJ LyoKKwkgKiBJbml0aWFsaXplIHRoZSBhcHBseSB3b3JrZXIncyBoYXNoIHRvIG1hbmFnZSBieXRl cyBmb3IKKwkgKiBzdHJlYW1pbmcgdHhucy4KKwkgKi8KKwlpZiAoIWFtX3RhYmxlc3luY193b3Jr ZXIoKSAmJiBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtKQorCXsKKwkJSEFTSENUTCAgICAgaGFzaF9j dGw7CisKKwkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJaGFz aF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFhhY3RTaXplRW50cnkpOworCQloYXNoX2N0bC5oY3h0 ID0gTG9naWNhbFN0cmVhbWluZ0NvbnRleHQ7CisJCXN0cmVhbWluZ1hhY3RTaXplID0gaGFzaF9j cmVhdGUoInhhY3Qgc2l6ZSBwZXIgc3RyZWFtaW5nIHhpZCIsCisJCQkJCQkJCQkJUEFSQUxMRUxf U1RSRUFNSU5HX1hBQ1RTLAorCQkJCQkJCQkJCSZoYXNoX2N0bCwKKwkJCQkJCQkJCQlIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKIAlpZiAoYW1fdGFibGVzeW5j X3dvcmtlcigpKQogCXsKIAkJY2hhcgkgICAqc3luY3Nsb3RuYW1lOwpAQCAtMzYwMSw2ICszODg0 LDI3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlwcm9jX2V4aXQoMCk7CiB9 CiAKKy8qIEV4cG9ydGVkIHNvIHRoYXQgc3RhdHMgY29sbGVjdG9yIGNhbiB1dGlsaXplIHRoaXMg dmFsdWUgKi8KK2ludDY0CitnZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9pZCkK K3sKKwlyZXR1cm4gYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLmJ5dGVzOworfQorCisvKiBBZGQg c2l6ZSB0byBhcHBseSBlcnJvciBieXRlcyAqLwordm9pZAorYWRkX2FwcGx5X2Vycm9yX2NvbnRl eHRfeGFjdF9zaXplKGludDY0IHNpemUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLmJ5 dGVzICs9IHNpemU7Cit9CisKKy8qIFJlc2V0IGluZm9ybWF0aW9uIG9mIGFwcGx5IGVycm9yIGNh bGxiYWNrICovCit2b2lkCityZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2b2lk KQoreworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5ieXRlcyA9IDA7Cit9CisKIC8qCiAgKiBJ cyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcj8KICAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCAyNTExZGYxLi4zMWFhNDZlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMjQwNSw3ICsyNDA1LDcgQEAgcGdfc3RhdF9n ZXRfcmVwbGljYXRpb25fc2xvdChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0YXRfZ2V0 X3N1YnNjcmlwdGlvbl93b3JrZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfU1RB VF9HRVRfU1VCU0NSSVBUSU9OX1dPUktFUl9DT0xTIDkKKyNkZWZpbmUgUEdfU1RBVF9HRVRfU1VC U0NSSVBUSU9OX1dPUktFUl9DT0xTIDE1CiAJT2lkCQkJc3ViaWQgPSBQR19HRVRBUkdfT0lEKDAp OwogCU9pZAkJCXN1YnJlbGlkOwogCVR1cGxlRGVzYwl0dXBkZXNjOwpAQCAtMjQyNSwxOSArMjQy NSwzMSBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb25fd29ya2VyKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJCSAgIE9JRE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgMiwgInN1YnJlbGlkIiwKIAkJCQkJICAgT0lET0lELCAtMSwgMCk7Ci0JVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAicmVsaWQiLAorCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgInhhY3RfY29tbWl0X2NvdW50 IiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNj LCAoQXR0ck51bWJlcikgNCwgInhhY3RfY29tbWl0X2J5dGVzIiwKKwkJCQkJICAgSU5UOE9JRCwg LTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNSwgInhh Y3RfZXJyb3JfY291bnQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2LCAieGFjdF9lcnJvcl9ieXRlcyIsCisJCQkJ CSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpIDcsICJ4YWN0X2Fib3J0X2NvdW50IiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOwor CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOCwgInhhY3RfYWJvcnRf Ynl0ZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSA5LCAibGFzdF9lcnJvcl9yZWxpZCIsCiAJCQkJCSAgIE9JRE9J RCwgLTEsIDApOwotCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNCwg ImNvbW1hbmQiLAorCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTAs ICJsYXN0X2Vycm9yX2NvbW1hbmQiLAogCQkJCQkgICBURVhUT0lELCAtMSwgMCk7Ci0JVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA1LCAieGlkIiwKKwlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDExLCAibGFzdF9lcnJvcl94aWQiLAogCQkJ CQkgICBYSURPSUQsIC0xLCAwKTsKLQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpIDYsICJlcnJvcl9jb3VudCIsCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChB dHRyTnVtYmVyKSAxMiwgImxhc3RfZXJyb3JfY291bnQiLAogCQkJCQkgICBJTlQ4T0lELCAtMSwg MCk7Ci0JVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA3LCAiZXJyb3Jf bWVzc2FnZSIsCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxMywg Imxhc3RfZXJyb3JfbWVzc2FnZSIsCiAJCQkJCSAgIFRFWFRPSUQsIC0xLCAwKTsKLQlUdXBsZURl c2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDgsICJsYXN0X2Vycm9yX3RpbWUiLAor CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTQsICJsYXN0X2Vycm9y X3RpbWUiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwotCVR1cGxlRGVzY0luaXRF bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOSwgInN0YXRzX3Jlc2V0IiwKKwlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDE1LCAic3RhdHNfcmVzZXQiLAogCQkJCQkg ICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwogCUJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCkBA IC0yNDYyLDI4ICsyNDc0LDM2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXIoUEdf RlVOQ1RJT05fQVJHUykKIAllbHNlCiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogcmVsaWQg Ki8KKwkvKiB0cmFuc2FjdGlvbiBzdGF0cyAqLworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1 bSh3ZW50cnktPnhhY3RfY29tbWl0X2NvdW50KTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0 dW0od2VudHJ5LT54YWN0X2NvbW1pdF9ieXRlcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERh dHVtKHdlbnRyeS0+eGFjdF9lcnJvcl9jb3VudCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERh dHVtKHdlbnRyeS0+eGFjdF9lcnJvcl9ieXRlcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERh dHVtKHdlbnRyeS0+eGFjdF9hYm9ydF9jb3VudCk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERh dHVtKHdlbnRyeS0+eGFjdF9hYm9ydF9ieXRlcyk7CisKKwkvKiBsYXN0X2Vycm9yX3JlbGlkICov CiAJaWYgKE9pZElzVmFsaWQod2VudHJ5LT5yZWxpZCkpCiAJCXZhbHVlc1tpKytdID0gT2JqZWN0 SWRHZXREYXR1bSh3ZW50cnktPnJlbGlkKTsKIAllbHNlCiAJCW51bGxzW2krK10gPSB0cnVlOwog Ci0JLyogY29tbWFuZCAqLworCS8qIGxhc3RfZXJyb3JfY29tbWFuZCAqLwogCWlmICh3ZW50cnkt PmNvbW1hbmQgIT0gMCkKIAkJdmFsdWVzW2krK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGxvZ2lj YWxyZXBfbWVzc2FnZV90eXBlKHdlbnRyeS0+Y29tbWFuZCkpOwogCWVsc2UKIAkJbnVsbHNbaSsr XSA9IHRydWU7CiAKLQkvKiB4aWQgKi8KKwkvKiBsYXN0X2Vycm9yX3hpZCAqLwogCWlmIChUcmFu c2FjdGlvbklkSXNWYWxpZCh3ZW50cnktPnhpZCkpCiAJCXZhbHVlc1tpKytdID0gVHJhbnNhY3Rp b25JZEdldERhdHVtKHdlbnRyeS0+eGlkKTsKIAllbHNlCiAJCW51bGxzW2krK10gPSB0cnVlOwog Ci0JLyogZXJyb3JfY291bnQgKi8KKwkvKiBsYXN0X2Vycm9yX2NvdW50ICovCiAJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+ZXJyb3JfY291bnQpOwogCi0JLyogZXJyb3JfbWVz c2FnZSAqLworCS8qIGxhc3RfZXJyb3JfbWVzc2FnZSAqLwogCXZhbHVlc1tpKytdID0gQ1N0cmlu Z0dldFRleHREYXR1bSh3ZW50cnktPmVycm9yX21lc3NhZ2UpOwogCiAJLyogbGFzdF9lcnJvcl90 aW1lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBlNmM3YWJiLi5hZTM3MmE1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzODksOSArNTM4OSw5IEBACiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXInLCBwcm9yb3dzID0+ICcxJywgcHJvaXNz dHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHBy b3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMg PT4gJ29pZCBvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLG9pZCxvaWQs dGV4dCx4aWQsaW50OCx0ZXh0LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6fScsCi0gIHByb2FyZ21v ZGVzID0+ICd7aSxpLG8sbyxvLG8sbyxvLG8sbyxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7c3Vi aWQsc3VicmVsaWQsc3ViaWQsc3VicmVsaWQscmVsaWQsY29tbWFuZCx4aWQsZXJyb3JfY291bnQs ZXJyb3JfbWVzc2FnZSxsYXN0X2Vycm9yX3RpbWUsc3RhdHNfcmVzZXR9JywKKyAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxvaWQsaW50OCxpbnQ4LGludDgsaW50OCxpbnQ4LGludDgs b2lkLHRleHQseGlkLGludDgsdGV4dCx0aW1lc3RhbXB0eix0aW1lc3RhbXB0en0nLAorICBwcm9h cmdtb2RlcyA9PiAne2ksaSxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9h cmduYW1lcyA9PiAne3N1YmlkLHN1YnJlbGlkLHN1YmlkLHN1YnJlbGlkLHhhY3RfY29tbWl0X2Nv dW50LHhhY3RfY29tbWl0X2J5dGVzLHhhY3RfZXJyb3JfY291bnQseGFjdF9lcnJvcl9ieXRlcyx4 YWN0X2Fib3J0X2NvdW50LHhhY3RfYWJvcnRfYnl0ZXMsbGFzdF9lcnJvcl9yZWxpZCxsYXN0X2Vy cm9yX2NvbW1hbmQsbGFzdF9lcnJvcl94aWQsbGFzdF9lcnJvcl9jb3VudCxsYXN0X2Vycm9yX21l c3NhZ2UsbGFzdF9lcnJvcl90aW1lLHN0YXRzX3Jlc2V0fScsCiAgIHByb3NyYyA9PiAncGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uX3dvcmtlcicgfSwKIHsgb2lkID0+ICc2MTE4JywgZGVzY3IgPT4g J3N0YXRpc3RpY3M6IGluZm9ybWF0aW9uIGFib3V0IHN1YnNjcmlwdGlvbicsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJp Y3QgPT4gJ2YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDY5NGUzOGIu Ljc3M2U0NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTExMCw2ICsx MTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1 bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0 aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHNpemVfdCBQYXJ0aXRpb25UdXBsZVJvdXRpbmdTaXpl KHZvaWQpOwogZXh0ZXJuIFBhcnRpdGlvblR1cGxlUm91dGluZyAqRXhlY1NldHVwUGFydGl0aW9u VHVwbGVSb3V0aW5nKEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkJCQkJIFJlbGF0aW9uIHJl bCk7CiBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVT dGF0ZSAqbXRzdGF0ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKaW5kZXggN2EyNmQ2ZC4uY2NjOWE5MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTg4LDYgKzg4LDgg QEAgdHlwZWRlZiBlbnVtIFN0YXRNc2dUeXBlCiAJUEdTVEFUX01UWVBFX1NVQlNDUklQVElPTlBV UkdFLAogCVBHU1RBVF9NVFlQRV9TVUJXT1JLRVJFUlJPUiwKIAlQR1NUQVRfTVRZUEVfU1VCV09S S0VSUFVSR0UsCisJUEdTVEFUX01UWVBFX1NVQldPUktFUlhBQ1RFTkQsCisJUEdTVEFUX01UWVBF X1NVQldPUktFUlRXT1BIQVNFWEFDVCwKIH0gU3RhdE1zZ1R5cGU7CiAKIC8qIC0tLS0tLS0tLS0K QEAgLTU5MSw2ICs1OTMsNTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X01zZ1N1YldvcmtlclB1 cmdlCiB9IFBnU3RhdF9Nc2dTdWJXb3JrZXJQdXJnZTsKIAogLyogLS0tLS0tLS0tLQorICogUGdT dGF0X01zZ1N1YnNjcmlwdGlvblhhY3RFbmQJU2VudCBieSB0aGUgYXBwbHkgd29ya2VyIG9yIHRo ZSB0YWJsZSBzeW5jIHdvcmtlcgorICoJCQkJCQkJCQl0byByZXBvcnQgc3VjY2Vzc2Z1bCB0cmFu c2FjdGlvbiBlbmRzLgorICogLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRf TXNnU3ViV29ya2VyWGFjdEVuZAoreworCVBnU3RhdF9Nc2dIZHIgbV9oZHI7CisKKwkvKiBkZXRl cm1pbmUgdGhlIHdvcmtlciBlbnRyeSAqLworCU9pZCAgICAgICAgIG1fc3ViaWQ7CisJT2lkICAg ICAgICAgbV9zdWJyZWxpZDsKKworCS8qCisJICogZGlzdGluZ3Vpc2ggYmV0d2VlbiB0cmFuc2Fj dGlvbiBjb21taXRzIGFuZCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYWJvcnRzCisJICogdGhhdCBh cmUgaGFuZGxlZCB3aXRob3V0IGVycm9yLgorCSAqLworCUxvZ2ljYWxSZXBNc2dUeXBlIG1fY29t bWFuZDsKKworCS8qIG1lbW9yeSBjb25zdW1wdGlvbiB1c2VkIGJ5IHRyYW5zYWN0aW9uICovCisJ UGdTdGF0X0NvdW50ZXIgbV94YWN0X2J5dGVzOworCit9IFBnU3RhdF9Nc2dTdWJXb3JrZXJYYWN0 RW5kOworCisvKiAtLS0tLS0tLS0tCisgKiBQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0 CVNlbnQgYnkgdGhlIGFwcGx5IHdvcmtlciB0byBtYWtlIHNpemUgb2YgcHJlcGFyZWQKKyAqCQkJ CQkJCQkJdHhuIHBlcnNpc3RlbnQgb3ZlciB0aGUgc2VydmVyIHJlc3RhcnQgYW5kIG1ha2UgaXQK KyAqCQkJCQkJCQkJdmlzaWJsZSBhZnRlciBjb21taXQgcHJlcGFyZSBvciByb2xsYmFjayBwcmVw YXJlZC4KKyAqCQkJCQkJCQkJVGhpcyBpcyBzZXBhcmF0ZWQgZnJvbSBQZ1N0YXRfTXNnU3ViV29y a2VyWGFjdEVuZAorICoJCQkJCQkJCQlzbyB0aGF0IHdlIGNhbiByZWR1Y2UgbWVzc2FnZSBzaXpl IG9mIGdpZCBmb3Igb3RoZXIKKyAqCQkJCQkJCQkJb3BlcmF0aW9ucyAoZS5nLiBub3JtYWwgQ09N TUlUKSB0aGF0IHNob3VsZCBoYXBwZW4gbW9yZQorICoJCQkJCQkJCQlmcmVxdWVudGx5IHRoYW4g cHJlcGFyZSBvcGVyYXRpb24gdXN1YWxseS4KKyAqIC0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBz dHJ1Y3QgUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdAoreworCVBnU3RhdF9Nc2dIZHIg bV9oZHI7CisKKwkvKiBkZXRlcm1pbmUgdGhlIHN1YnNjcmlwdGlvbiAqLworCU9pZCAgICAgICAg IG1fc3ViaWQ7CisKKwlMb2dpY2FsUmVwTXNnVHlwZSBtX2NvbW1hbmQ7CisJY2hhciAgICAgICAg IG1fZ2lkW0dJRFNJWkVdOworCWludCAgICAgICAgICBnaWRfbGVuOworCVBnU3RhdF9Db3VudGVy IG1feGFjdF9ieXRlczsKKworfSBQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0OworCisv KiAtLS0tLS0tLS0tCiAgKiBQZ1N0YXRfTXNnU3ViV29ya2VyRXJyb3IJCVNlbnQgYnkgdGhlIGFw cGx5IHdvcmtlciBvciB0aGUgdGFibGUgc3luYyB3b3JrZXIgdG8KICAqCQkJCQkJCQlyZXBvcnQg dGhlIGVycm9yIG9jY3VycmVkIGR1cmluZyBsb2dpY2FsIHJlcGxpY2F0aW9uLgogICogLS0tLS0t LS0tLQpAQCAtNjA5LDYgKzY1OSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfTXNnU3ViV29y a2VyRXJyb3IKIAlPaWQJCQltX3N1YnJlbGlkOwogCiAJLyoKKwkgKiBUcmFuc2FjdGlvbiBzdGF0 cyBvZiBzdWJzY3JpcHRpb24gbmVlZHMgdG8gYmUgdXBkYXRlZCB3aGVuIGFuCisJICogZXJyb3Ig b2NjdXJzLgorCSAqLworCVBnU3RhdF9Db3VudGVyIG1feGFjdF9lcnJvcl9ieXRlczsKKworCS8q CiAJICogT2lkcyBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZSB0YWJsZSB0aGF0IHRoZSByZXBvcnRl ciB3YXMgYWN0dWFsbHkKIAkgKiBwcm9jZXNzaW5nLiBtX3JlbGlkIGNhbiBiZSBJbnZhbGlkT2lk IGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZwogCSAqIHdvcmtlciBhcHBseWluZyBhIG5vbi1k YXRhLW1vZGlmaWNhdGlvbiBtZXNzYWdlIHN1Y2ggYXMgUkVMQVRJT04uCkBAIC04MDMsNiArODU5 LDggQEAgdHlwZWRlZiB1bmlvbiBQZ1N0YXRfTXNnCiAJUGdTdGF0X01zZ1N1YnNjcmlwdGlvblB1 cmdlIG1zZ19zdWJzY3JpcHRpb25wdXJnZTsKIAlQZ1N0YXRfTXNnU3ViV29ya2VyRXJyb3IgbXNn X3N1YndvcmtlcmVycm9yOwogCVBnU3RhdF9Nc2dTdWJXb3JrZXJQdXJnZSBtc2dfc3Vid29ya2Vy cHVyZ2U7CisJUGdTdGF0X01zZ1N1YldvcmtlclhhY3RFbmQgbXNnX3N1YndvcmtlcnhhY3RlbmQ7 CisJUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdCBtc2dfc3Vid29ya2VydHdvcGhhc2V4 YWN0OwogfSBQZ1N0YXRfTXNnOwogCiAKQEAgLTEwMzUsNiArMTA5MywxNiBAQCB0eXBlZGVmIHN0 cnVjdCBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5CiAJUGdTdGF0X1N0YXRTdWJXb3JrZXJLZXkg a2V5OwkvKiBoYXNoIGtleSAobXVzdCBiZSBmaXJzdCkgKi8KIAogCS8qCisJICogVHJhbnNhY3Rp b24gc3RhdGlzdGljcyBvZiBzdWJzY3JpcHRpb24gd29ya2VyCisJICovCisJUGdTdGF0X0NvdW50 ZXIgeGFjdF9jb21taXRfY291bnQ7CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9jb21taXRfYnl0ZXM7 CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9lcnJvcl9jb3VudDsKKwlQZ1N0YXRfQ291bnRlciB4YWN0 X2Vycm9yX2J5dGVzOworCVBnU3RhdF9Db3VudGVyIHhhY3RfYWJvcnRfY291bnQ7CisJUGdTdGF0 X0NvdW50ZXIgeGFjdF9hYm9ydF9ieXRlczsKKworCS8qCiAJICogU3Vic2NyaXB0aW9uIHdvcmtl ciBlcnJvciBzdGF0aXN0aWNzIHJlcHJlc2VudGluZyBhbiBlcnJvciB0aGF0CiAJICogb2NjdXJy ZWQgZHVyaW5nIGFwcGxpY2F0aW9uIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gb3IgdGhlIGluaXRp YWwgdGFibGUKIAkgKiBzeW5jaHJvbml6YXRpb24uCkBAIC0xMDQ5LDYgKzExMTcsMjIgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRTdWJXb3JrZXJFbnRyeQogCVRpbWVzdGFtcFR6IHN0YXRf cmVzZXRfdGltZXN0YW1wOwogfSBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5OwogCisvKiBwcmVw YXJlZCB0cmFuc2FjdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRTdWJXb3JrZXJQ cmVwYXJlZFhhY3QKK3sKKwlPaWQJCQlzdWJpZDsKKwljaGFyCQlnaWRbR0lEU0laRV07Cit9IFBn U3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0OworCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRf U3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUKK3sKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclBy ZXBhcmVkWGFjdCBrZXk7IC8qIGhhc2gga2V5ICovCisKKwlPaWQJCQlzdWJpZDsKKwljaGFyCQln aWRbR0lEU0laRV07CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9zaXplOworfSBQZ1N0YXRfU3RhdFN1 YldvcmtlclByZXBhcmVkWGFjdFNpemU7CisKIC8qCiAgKiBXb3JraW5nIHN0YXRlIG5lZWRlZCB0 byBhY2N1bXVsYXRlIHBlci1mdW5jdGlvbi1jYWxsIHRpbWluZyBzdGF0aXN0aWNzLgogICovCkBA IC0xMTU4LDYgKzEyNDIsMTMgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9jaGVja3N1bV9m YWlsdXJlKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZXBsc2xvdChjb25zdCBQ Z1N0YXRfU3RhdFJlcGxTbG90RW50cnkgKnJlcFNsb3RTdGF0KTsKIGV4dGVybiB2b2lkIHBnc3Rh dF9yZXBvcnRfcmVwbHNsb3RfY3JlYXRlKGNvbnN0IGNoYXIgKnNsb3RuYW1lKTsKIGV4dGVybiB2 b2lkIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3RfZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSk7Citl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChPaWQgc3ViaWQsIE9p ZCBzdWJyZWwsCisJCQkJCQkJCQkJCSBMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kLCBQZ1N0YXRf Q291bnRlciB4YWN0X3NpemUpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJf dHdvcGhhc2VfeGFjdChPaWQgc3ViaWQsIExvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQsCisJCQkJ CQkJCQkJCQkgIFBnU3RhdF9Db3VudGVyIHhhY3Rfc2l6ZSwKKwkJCQkJCQkJCQkJCSAgTG9naWNh bFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZWRfZGF0YSwKKwkJCQkJCQkJCQkJCSAgTG9naWNh bFJlcENvbW1pdFByZXBhcmVkVHhuRGF0YSAqY29tbWl0X2RhdGEsCisJCQkJCQkJCQkJCQkgIExv Z2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YSAqcm9sbGJhY2tfZGF0YSk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl9lcnJvcihPaWQgc3ViaWQsIE9pZCBzdWJyZWxp ZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCSAgTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwKIAkJ CQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgeGlkLCBjb25zdCBjaGFyICplcnJtc2cpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDJhZDYxYTAuLjlhODQ0N2IgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTE2LDQgKzE2LDkgQEAg ZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJv b2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOwogCisvKiBmb3IgdHJhbnNhY3Rpb24gc3RhdHMgKi8K K2V4dGVybiBpbnQ2NCBnZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9pZCk7Citl eHRlcm4gdm9pZCBhZGRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUoaW50NjQgc2l6ZSk7 CitleHRlcm4gdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2b2lkKTsK KwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAppbmRleCBmNmIxYmQ2Li44ZDdmMDY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dApAQCAtMjA5NywxMSArMjA5NywxNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnN8IFNF TEVDVCB3LnN1YmlkLAogICAgIHMuc3VibmFtZSwKICAgICB3LnN1YnJlbGlkLAotICAgIHcucmVs aWQsCi0gICAgdy5jb21tYW5kLAotICAgIHcueGlkLAotICAgIHcuZXJyb3JfY291bnQsCi0gICAg dy5lcnJvcl9tZXNzYWdlLAorICAgIHcueGFjdF9jb21taXRfY291bnQsCisgICAgdy54YWN0X2Nv bW1pdF9ieXRlcywKKyAgICB3LnhhY3RfZXJyb3JfY291bnQsCisgICAgdy54YWN0X2Vycm9yX2J5 dGVzLAorICAgIHcueGFjdF9hYm9ydF9jb3VudCwKKyAgICB3LnhhY3RfYWJvcnRfYnl0ZXMsCisg ICAgdy5sYXN0X2Vycm9yX3JlbGlkLAorICAgIHcubGFzdF9lcnJvcl9jb21tYW5kLAorICAgIHcu bGFzdF9lcnJvcl94aWQsCisgICAgdy5sYXN0X2Vycm9yX2NvdW50LAorICAgIHcubGFzdF9lcnJv cl9tZXNzYWdlLAogICAgIHcubGFzdF9lcnJvcl90aW1lLAogICAgIHcuc3RhdHNfcmVzZXQKICAg IEZST00gKCBTRUxFQ1QgcGdfc3Vic2NyaXB0aW9uLm9pZCBBUyBzdWJpZCwKQEAgLTIxMTIsNyAr MjExOCw3IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnN8IFNFTEVDVCB3LnN1YmlkLAog ICAgICAgICAgICAgcGdfc3Vic2NyaXB0aW9uX3JlbC5zcnJlbGlkIEFTIHJlbGlkCiAgICAgICAg ICAgIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbAogICAgICAgICAgIFdIRVJFIChwZ19zdWJzY3Jp cHRpb25fcmVsLnNyc3Vic3RhdGUgPD4gJ3InOjoiY2hhciIpKSBzciwKLSAgICAoTEFURVJBTCBw Z19zdGF0X2dldF9zdWJzY3JpcHRpb25fd29ya2VyKHNyLnN1YmlkLCBzci5yZWxpZCkgdyhzdWJp ZCwgc3VicmVsaWQsIHJlbGlkLCBjb21tYW5kLCB4aWQsIGVycm9yX2NvdW50LCBlcnJvcl9tZXNz YWdlLCBsYXN0X2Vycm9yX3RpbWUsIHN0YXRzX3Jlc2V0KQorICAgIChMQVRFUkFMIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbl93b3JrZXIoc3Iuc3ViaWQsIHNyLnJlbGlkKSB3KHN1YmlkLCBzdWJy ZWxpZCwgeGFjdF9jb21taXRfY291bnQsIHhhY3RfY29tbWl0X2J5dGVzLCB4YWN0X2Vycm9yX2Nv dW50LCB4YWN0X2Vycm9yX2J5dGVzLCB4YWN0X2Fib3J0X2NvdW50LCB4YWN0X2Fib3J0X2J5dGVz LCBsYXN0X2Vycm9yX3JlbGlkLCBsYXN0X2Vycm9yX2NvbW1hbmQsIGxhc3RfZXJyb3JfeGlkLCBs YXN0X2Vycm9yX2NvdW50LCBsYXN0X2Vycm9yX21lc3NhZ2UsIGxhc3RfZXJyb3JfdGltZSwgc3Rh dHNfcmVzZXQpCiAgICAgIEpPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gKCh3LnN1YmlkID0gcy5v aWQpKSk7CiBwZ19zdGF0X3N5c19pbmRleGVzfCBTRUxFQ1QgcGdfc3RhdF9hbGxfaW5kZXhlcy5y ZWxpZCwKICAgICBwZ19zdGF0X2FsbF9pbmRleGVzLmluZGV4cmVsaWQsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfZXJyb3JfcmVwb3J0LnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDI2X2Vycm9yX3JlcG9ydC5wbAppbmRleCAzZDIzYmI1Li45ZmY2MTllIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfZXJyb3JfcmVwb3J0LnBsCisr KyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9lcnJvcl9yZXBvcnQucGwKQEAgLTE1LDgg KzE1LDggQEAgc3ViIHRlc3Rfc3Vic2NyaXB0aW9uX2Vycm9yCiAKICAgICBteSAkY2hlY2tfc3Fs ID0gcXFbCiBTRUxFQ1QgY291bnQoMSkgPiAwIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29y a2VycwotV0hFUkUgcmVsaWQgPSAnJHJlbG5hbWUnOjpyZWdjbGFzc107Ci0gICAgJGNoZWNrX3Nx bCAuPSAiIEFORCB4aWQgPSAnJHhpZCc6OnhpZDsiIGlmICR4aWQgbmUgJyc7CitXSEVSRSBsYXN0 X2Vycm9yX3JlbGlkID0gJyRyZWxuYW1lJzo6cmVnY2xhc3NdOworICAgICRjaGVja19zcWwgLj0g IiBBTkQgbGFzdF9lcnJvcl94aWQgPSAnJHhpZCc6OnhpZDsiIGlmICR4aWQgbmUgJyc7CiAKICAg ICAjIFdhaXQgZm9yIHRoZSBlcnJvciBzdGF0aXN0aWNzIHRvIGJlIHVwZGF0ZWQuCiAgICAgJG5v ZGUtPnBvbGxfcXVlcnlfdW50aWwoCkBAIC0yNiw5ICsyNiw5IEBAIFdIRVJFIHJlbGlkID0gJyRy ZWxuYW1lJzo6cmVnY2xhc3NdOwogICAgIG15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKAog CSdwb3N0Z3JlcycsCiAJcXFbCi1TRUxFQ1Qgc3VibmFtZSwgY29tbWFuZCwgcmVsaWQ6OnJlZ2Ns YXNzLCBlcnJvcl9jb3VudCA+IDAKK1NFTEVDVCBzdWJuYW1lLCBsYXN0X2Vycm9yX2NvbW1hbmQs IGxhc3RfZXJyb3JfcmVsaWQ6OnJlZ2NsYXNzLCBsYXN0X2Vycm9yX2NvdW50ID4gMAogRlJPTSBw Z19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzCi1XSEVSRSByZWxpZCA9ICckcmVsbmFtZSc6OnJl Z2NsYXNzOworV0hFUkUgbGFzdF9lcnJvcl9yZWxpZCA9ICckcmVsbmFtZSc6OnJlZ2NsYXNzOwog XSk7CiAgICAgaXMoJHJlc3VsdCwgJGV4cGVjdGVkX2Vycm9yLCAkbXNnKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN193b3JrZXJfeGFjdF9zdGF0cy5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN193b3JrZXJfeGFjdF9zdGF0cy5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGFkNTUyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3dvcmtlcl94YWN0X3N0YXRzLnBsCkBAIC0wLDAgKzEs MTcyIEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisjIFRlc3RzIGZvciBzdWJzY3JpcHRpb24gd29ya2VyIHN0YXRpc3RpY3Mg ZHVyaW5nIGFwcGx5LgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6 Ok1vcmUgdGVzdHMgPT4gMjsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1 Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Cisk bm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5v ZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCitsb2dpY2Fs X2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQgorbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEw CittYXhfd2FsX3NlbmRlcnMgPSAxMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAorXSk7Ciskbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2Rl X3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXIn KTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWwor bWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCitdKTsKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZXMgb24gdGhlIHB1Ymxpc2hlciBhbmQgdGhlIHN1YnNj cmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCBwcmltYXJ5IGtleSk7Iik7 CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworbXkg JHN1Ym9wdHMgPSAnc3RyZWFtaW5nID0gb24sIHR3b19waGFzZSA9IG9uLCBjb3B5X2RhdGEgPSBm YWxzZSc7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbCitDUkVB VEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKK0NPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBh cHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIICgkc3Vi b3B0cyk7CitdKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworIyBUaGVyZSdzIG5vIGVudHJ5IGF0IHRoZSBiZWdpbm5pbmcKK215ICRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzOyIpOworaXMoJHJlc3VsdCwgcSgwKSwg J25vIGVudHJ5IGZvciB0cmFuc2FjdGlvbiBzdGF0cyB5ZXQnKTsKKworIyBDT01NSVQKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisgICAgIkJFR0lOOyBJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDEpOyBDT01NSVQ7Iik7CisKKyRub2RlX3N1YnNjcmliZXItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkgPSAxIEZST00gcGdf c3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyB3aGVyZSB4YWN0X2NvbW1pdF9jb3VudCA9IDE7IikK KyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSBjb21taXQiOwor CisjIE5vdywgc3RhdHMgY29sbGVjdG9yIG1ha2UgdGhlIGJ5dGVzIHVwZGF0ZWQgYWxzby4KKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1Qg eGFjdF9jb21taXRfYnl0ZXMgPiAwIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2Vyczsi KTsKK2lzKCRyZXN1bHQsIHEodCksICdnb3QgY29uc3VtZWQgYnl0ZXMnKTsKKworIyBTVFJFQU0g Q09NTUlUCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKyAgICAncG9zdGdyZXMnLAorICAg ICJCRUdJTjsgSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxMDAx LCAyMDAwKSk7IENPTU1JVDsiKTsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkgPSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRp b25fd29ya2VycyB3aGVyZSB4YWN0X2NvbW1pdF9jb3VudCA9IDI7IikKKyAgb3IgZGllICJkaWRu J3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSBzdHJlYW0gY29tbWl0IjsKKworIyBTVFJF QU0gUFJFUEFSRSAmIENPTU1JVCBQUkVQQVJFRAorIyBUaGlzIHNob3VsZCByZXN0b3JlIHRoZSB4 YWN0IHNpemUgYmVmb3JlIHRoZSBzaHV0ZG93bi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorICAgICdwb3N0Z3JlcycsIHFbCitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyhnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMzAwMCkpOworUFJFUEFSRSBUUkFOU0FDVElPTiAnZ2lk MSc7CitdKTsKKworIyBUaGlzIHN0cmVhbWVkIHByZXBhcmUgaXMgbm90IGRpc3BsYXllZCB1bnRp bCB0aGUgY29tbWl0IHByZXBhcmVkCisjIG9yIHJvbGxiYWNrIHByZXBhcmVkLiBIZW5jZSwgdGhl cmUncyBubyB3YXkgdG8gY29uZmlybSB0aGF0CisjIHN0YXRzIGNvbGxlY3RvciBoYXMgcmVjZWl2 ZWQgdGhlIGJ5dGVzIG9mIHByZXBhcmVkIHRyYW5zYWN0aW9uLgorIyBTbywgaW5zdGVhZCBvZiBj aGVja2luZyB0aGUgdmlldywgaXNzdWUgb25lIG1vcmUgY29tbWl0dGVkIHRyYW5zYWN0aW9uCisj IGFmdGVyIHRoZSBwcmVwYXJlIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGlzIGNvbW1pdCdzIHVwZGF0 ZSBpcyBkb25lLAorIyB3aGljaCBzaG91bGQgbWVhbiB0aGUgcHJldmlvdXMgc3RyZWFtZWQgcHJl cGFyZSBpcyBhbHJlYWR5IHByb2Nlc3NlZAorIyBieSB0aGUgc3RhdHMgY29sbGVjdG9yIGFzIHdl bGwuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorIkJFR0lOOyBJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIpOyBDT01NSVQ7Iik7Ciskbm9kZV9zdWJzY3JpYmVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50KDEpID0gMSBGUk9N IHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgeGFjdF9jb21taXRfY291bnQgPSAz OyIpCisgIG9yIGRpZSAiZGlkbid0IHByb2Nlc3MgdGhlIHVwZGF0ZXMgb2YgY29tbWl0dGVkIHRy YW5zYWN0aW9uIjsKKworJG5vZGVfc3Vic2NyaWJlci0+cmVzdGFydDsKKworIyBHZXQgeGFjdF9j b21taXRfYnl0ZXMgYmVmb3JlIGNvbW1pdCBwcmVwYXJlZC4KK215ICR0bXAgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgeGFjdF9jb21taXRfYnl0ZXMg RlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzIHdoZXJlIHhhY3RfY29tbWl0X2NvdW50 ID0gMzsiKTsKKworIyBDb21taXQgcHJlcGFyZWQgaW5jcmVtZW50cyB0aGUgeGFjdF9jb21taXQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVE ICdnaWQxJyIpOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAorIlNFTEVDVCBjb3VudCgxKSA9IDEgRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJz IHdoZXJlIHhhY3RfY29tbWl0X2NvdW50ID0gNDsiKQorICBvciBkaWUgImRpZG4ndCBnZXQgdXBk YXRlcyBvZiB4YWN0IHN0YXRzIGJ5IHN0cmVhbSBwcmVwYXJlIGFuZCBjb21taXQgcHJlcGFyZWQi OworCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VM RUNUIHhhY3RfY29tbWl0X2J5dGVzID4gJHRtcCBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dv cmtlcnMgd2hlcmUgeGFjdF9jb21taXRfY291bnQgPSA0OyIpOworCisjIFNUUkVBTSBBQk9SVAor IyBTdG9yZSBwcmV2aW91cyBzdHJlYW1fY291bnRzIHRvIHJlY29nbml6ZQorIyBhbm90aGVyIHN0 cmVhbWluZyBmcm9tIHRoZSBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIGJlbG93LgorJHRtcCA9ICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisiU0VMRUNUIHN0cmVhbV9jb3Vu dCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb25fc2xvdHMiKTsKKworIyBDYXVzZSBhIG5ldyBzdHJl YW1pbmcgYW5kIGNoZWNrIGl0IGJ5IGFub3RoZXIgc2Vzc2lvbgorbXkgJGluID0gJyc7CitteSAk b3V0ID0gJyc7CitteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgxODApOworbXkgJGggPSAk bm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwg JHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMSk7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDMwMDEsIDQwMDApKTsKK307 CiskaC0+cHVtcF9uYjsKKworIyBXYWl0IHVudGlsIHRoaXMgdHJhbnNhY3Rpb24gaXMgc3RyZWFt ZWQgY2VydGFpbmx5CisjIGFuZCBhZnRlciB0aGF0IHJvbGxiYWNrIHRvIHNlbmQgc3RyZWFtIGFi b3J0LgorJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VM RUNUIHN0cmVhbV9jb3VudCA+ICR0bXAgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uX3Nsb3RzOyIp CisgIG9yIGRpZSAiZGlkbid0IHN0cmVhbSBkYXRhIG9mIGEgbmV3IHRyYW5zYWN0aW9uIjsKKwor JGluIC49IHF7CitST0xMQkFDSzsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2Ny aWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorIlNFTEVDVCBjb3VudCgxKSA9IDEg RlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzIHdoZXJlIHhhY3RfYWJvcnRfY291bnQg PSAxOyIpCisgIG9yIGRpZSAiZGlkbid0IGdldCB1cGRhdGVzIG9mIHhhY3Qgc3RhdHMgYnkgc3Ry ZWFtIGFib3J0IjsKKworIyBST0xMQkFDSyBQUkVQQVJFRAorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcVsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgzKTsKK1BSRVBBUkUgVFJBTlNBQ1RJT04gJ2dpZDInOworXSk7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiUk9MTEJBQ0sgUFJFUEFSRUQgJ2dpZDInIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50 KDEpID0gMSBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgeGFjdF9hYm9y dF9jb3VudCA9IDI7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0 cyBieSByb2xsYmFjayBwcmVwYXJlZCI7CisKKyMgZXJyb3Igc3RhdHMgKGJ5IGR1cGxpY2F0aW9u IGVycm9yKQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVsKK0JFR0lO OworSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxKTsKK0NPTU1JVDsKK10pOworCiskbm9k ZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50 KDEpID0gMSBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgeGFjdF9lcnJv cl9jb3VudCA+IDA7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0 cyBieSBlcnJvciI7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RvcCgnZmFzdCcpOwotLSAKMi4yLjAKCg== --_002_TYCPR01MB8373DC922E549FF3F031E9DAED8E9TYCPR01MB8373jpnp_--