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 1oSczk-00009Y-3f for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Aug 2022 11:31:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oSczi-0003sB-VL for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Aug 2022 11:31:54 +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 1oSczi-0003s0-6M for pgsql-hackers@lists.postgresql.org; Mon, 29 Aug 2022 11:31:54 +0000 Received: from esa3.fujitsucc.c3s2.iphmx.com ([68.232.151.212]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oSczf-0003S0-FG for pgsql-hackers@lists.postgresql.org; Mon, 29 Aug 2022 11:31:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1661772711; x=1693308711; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=MEwwdVmUD42bOd2zLsmtMhvHdHwNc8OQPVBo1ElvpwQ=; b=kdbScdMpV5YZWJ+2xlQX61GhUDo1nVw/x+3Yle/Cp4B2IpJevlxS7TYf H0BHUB3IN+uIjCuzt60QkbmUE/afWyS/56ixk7i0Md+/Y0eXPW4ILcMCt iXZMNVhNbGcZ1fLovZ067Elu5VfTlLigHDJ5bBboweDNKm3/VCmhWaBK0 oK5slnVEfkqdYNv6l9MlAT4V6ksRTnD8K29xQSKOY9j5T459golBlApXa PPCUqlvOoSy60G21a65QZb0nr7R9CNtXHDobWqwjknu8P/br80VeGCNgD C7IEW4lFxT2Ezs9aoscOxIELlKg9bbSTRKzX2+pyERvtfvttlvtH/WHlZ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10453"; a="71892721" X-IronPort-AV: E=Sophos;i="5.93,272,1654527600"; d="scan'208,223";a="71892721" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 20:31:47 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bHUDQVdlGnHjYXLmiiohWo4079I/Utqd4XS0xRwuwi+/63Rwkvta2h45pkas6HoUc2O8OA31B1VIT7UreC5ZJcwviDlhpz5EPTUlLEqIAO3xLhYLLGr8FzRqehjd+DkFkFNg+vBT8DC226J61ErqpW1FhqwYwDD5f0cO5JLUkA74BuIcw16PkxgQZWErDXGRCrL3Vl7HwsIM1ZJrJeO71ZvNlyqoABRGUmlsQMxQiTehn4PihKvpLy2nWBBGa6pEhPKbBRPp+pCDTaQxj0kd/TGvfS4FIJXr1vs565VYacs8/3uooBzJT00psBdgXFYdXDMt0O3sCmsBIAV0v3F05A== 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=/NrHYy0StnbLYhaglGzlN8YbinaOewxVBFXxxiXmwLY=; b=OcMaVGqXAHCayvKHoIEBA1WuDx+zU3RWfSapGYOjuK4Yi/T8ZWMiI+MdahpU9HAsgngMCC+rJIRoBb41+xzMt+FxzrDCs6YDf5scZ9W0ZJRfS64Cq//8+tgqwecOQGIlXx9vGqbcl99DaQqo12QjeI3Vn/90U6CoIqm87mBsUVpRADPnAKt8Cc1Iz9qfM74BGUZqPIrOChmxuem865sT/ImyMWqDwRwfAV77XxeffUQOX8Cxb5OsHD9mMGBHUgbF5y6QpfYoGO0JMApnCFSoDscg0Hg9i78xxlJmq5+rKSrOAPYvWaiuvUwSlVFNJC6/OErLlU4IcMw0B0V7cMN/Ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYWPR01MB8284.jpnprd01.prod.outlook.com (2603:1096:400:163::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Mon, 29 Aug 2022 11:31:43 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda%5]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 11:31:42 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQ Date: Mon, 29 Aug 2022 11:31:42 +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?NTBfQWN0aW9uSWQ9MzFmMzY2YmQtY2I2Zi00MmFkLWIyZTAtY2ZlMzQ4M2Zi?= =?utf-8?B?YjE0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0yOVQwNzoyODo1N1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ade9e1a2-5180-4731-8dd1-08da89b20c35 x-ms-traffictypediagnostic: TYWPR01MB8284:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: j6YiqD9JQoZmm762HsDOnG02kYW2wvnVOscGNJXUY2BUoAmJ2IJrc4zZa9hSTsrBMCwWym9sMQ06P1dJ2q22pc8rwrPvTsfwWsKs27zfh1gPrsHaHVU16RReqfPAPQgk/3IWAL9f6qMds0Mp4vS3eFapLB+JFWM/38GSj7vxlVf8SAP12Z9GXxatA8+q0xUzqyka7f0+HwEUGTq/48N+VJVZvU0oNmC5T66DPzlTVWgeabip7eVT2sVjYmZm08RT4vd9AsOU9ijg8hF8cTER/Vh25hlDktue8IjGQvv2WN41MHFL9jnJOaZ5fbPsRRpuQdT+MaHGKbV/9iZ2NkcPXS88ZTUh2H8YWAZSllkXa5RvSRhNQmqBKuTyHH13Hx/oPH4v9KWsOXh61LV2NA//nI8t9zEOl7v5++99MwDCXoWT82sd2GXh4CWrJ3zu7z6559q1byj4zP7wsWOLtmn3F8U7xpNgPx179i9spv67/Wucl2Dju8zra4zCDY2TvW3OO1wb5afwqWWh2DJlDFbWBrJjfsEHK59AxgtniF5IAPOuqClw1oyvEYd8MMlDrQ/qBvEGbCG0Ww7w7yi3UmXP8ZxVPa0KQspOfmHZEGLob3eHqb0Iiw+ItbxSUZUzpZdhS/15oCU9VbU0S3XQvFlkcDI5ULZU+6E8B2aU3mcaOrymQEZhy3u/Z9nG3yOXyF1L2D1IjXlE6fKbt/NWKLM4YJytAEPvtlKlfSXnRw4+Z+amqKDGf2siMuiKjzqCpsfq5TBdOoyhtsTh15eWfEWsuUYqXbddIzzd73jF5s1cGpwCT2MFQ904EMJoZIUaF48i6cvH943wly2mbrhHC5zX1V1GBSN701d8gZgc/FKheVASlPEAyyV1VTyd1P2ofkftv7KHXswrYsv5GZIW3u15ew== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(396003)(346002)(39860400002)(136003)(366004)(1590799006)(82960400001)(99936003)(66946007)(8676002)(4326008)(76116006)(45080400002)(66556008)(66446008)(64756008)(122000001)(38100700002)(86362001)(85182001)(38070700005)(83380400001)(186003)(41300700001)(1580799003)(478600001)(7696005)(53546011)(26005)(9686003)(6506007)(33656002)(71200400001)(316002)(6916009)(55016003)(54906003)(2906002)(966005)(66476007)(8936002)(5660300002)(52536014)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eGR4MkZ5NW5HUTZ3TnpncUE0eVZ6UkVEbEt2dFVmZ3o2QTdlcHVyTVVoYnhm?= =?utf-8?B?Vi9rRVYrWTdHaUNIUWx3Sit0RWxLTFU0Z2MxWFNCNUhNWkQ2WFdIVFhvS0p4?= =?utf-8?B?L2xpZXBGd3BxMGpXd0ZUc3pqVU82akZFL1hXY0xrWHgvNXl2azh4VmtKc0ZY?= =?utf-8?B?YVBWV3FVakZ2MkNoR3JCL25mMmh0UUl2cG1lSUVCd3MrZkdtNFdmSGhYWXRE?= =?utf-8?B?SVYxdTVLREpBMzdrQlAzb2REbzVkVkpXYmV1Mm4zdFVSQVhiOXVJZG4wWWhO?= =?utf-8?B?eUIxcnZJOGVHeGZaRHBBcjVLK3pFdm9yZjV3VVo1Q2psOXdqM0RYQzBoY3gx?= =?utf-8?B?SlRVZjA5dXViYURYRXlxZk0xUEFLVmZuL2pnd21CVjBDdXY2aFYyL2d6OEtq?= =?utf-8?B?dE96bi9IL245TEhNcHBKRkpjT0hrY0lFREV1V0F0eEI0VjcwL3pCZDYyTDkv?= =?utf-8?B?TVJsY2E3b0poYjhRRjZEU1ZJZmljSi9kQkRlUzZIblhpR25hanc4YVBnaEJS?= =?utf-8?B?YzBvdGpnZk5UU2VFS1JlbEpHTkhOWDZ1dnZLd2VobkV3WkRPditYTUppa3BE?= =?utf-8?B?WStPckhVNW12YnhTU3NtRVN6M3k2TTBJNG1mMlB6YTRROHRCeFVPTDdZenZz?= =?utf-8?B?VXE4U1p6d1VlZDJ0SVI2Y21XWmd2bFdBdE1RQVlVVk1Uc2VKSEcydG9qQnZo?= =?utf-8?B?VVorUzNoUnV0bHpjSXVWNTA1Mk1qNXI1NDV5MXNDOWFKQStYQzZkZGJNNjNz?= =?utf-8?B?VkJERjhDSDNHT1ljbzNIUldsWCtXZ3BVVURoT1JkRjZiQkd6ckQ2T1BZa2Z6?= =?utf-8?B?elJWWDYvTXRvTzhmd2ErNzNabVFVNzBQcVoweHNUbFNsMkQ0QmoyZUpndURB?= =?utf-8?B?aUdhRmFVbzVRc2lMTDRxRkVEU0pObi9Md1luQnBGTEZxNEJMOHAzZ0I3Z2hu?= =?utf-8?B?S3NNeXlxdFNOc25PSXVIWHJrbjY2a1d0RXY0WEtDYnFTRTZtdUhkQ2dpWHNw?= =?utf-8?B?YkU4amtJS1k3ZXloVDh3bnBMQ2hZOHZOOFJSKzhxaFV1Y0xEd2VtQkM3TjJk?= =?utf-8?B?NTIrNjU3MlFiKzlCbi9MZW9VNDAyOWUwWTBabU03RHFNdWVhS0NXY1pzS2Vr?= =?utf-8?B?OHNjK1JDRTJKM1ZqQUEySDVnbDVSN2VUWWNBMjZxRWU5cVlibmJySWRvM2ZL?= =?utf-8?B?TC9MMytWNy9URjVGTW9oSkRGcmk5cjUrSFBiU3p6RzJxcDE1R1FEVnpWU25R?= =?utf-8?B?dGJ2Y2pqYjdLUXJxU29Bd1BsWlJ0bWZFUUxpc1g2Q010aEhHWm95Z0lCckxm?= =?utf-8?B?OHVBMW1leklWSGF5UVdEeExTNzR3N25NQnV3VEJuUzVIWDN0NGlKRjliNWky?= =?utf-8?B?YWdBUHdSTnZRY2xKWHo0M3RiOXlXc3Z5dng5OSt5RiswTmUrVHc2cXpacDUv?= =?utf-8?B?d1d5ZDY5MWJBdGFpV0JlakpZMTVCeWpHNnlReUR0TWkycTh2MUsyMHVxT0pj?= =?utf-8?B?SmtlMTBaTTBHeW5QcEVXRmg3WFdNaEloUkN3YXJkVllHTTdDT2VnY1dXWFJt?= =?utf-8?B?dmJPOUVoaWhUNEQ4SCtRZkI5MnA1Slk0RTRVOGpVenBqRHFsbk1ubUNRWFpG?= =?utf-8?B?eHZLV2paMUJ5TzEyK1FRU3FpOGR4amxlSUd4OHZJd0U0anphUWNndGUrRTZj?= =?utf-8?B?M25GQ1R3endDdEp4RXk3ZG00U2hLNVlRRThFTDZwRm9PVXE3OUUxakxkNHFo?= =?utf-8?B?Q2d2bndua2ZaM0Z1TFYyZ1JyWEFjVUgxYzNTL3dwTzhaRW9HWWpKYzVPZkFs?= =?utf-8?B?clFNcE9jcFhoWklpNFNveTR1dERhTjV2YkFwRlJJL3NyZFNXaHNSMHl4YXpl?= =?utf-8?B?NzA4MGlXNFVOYVlBaFRud0RlYWt5MHZ4Q29FU05UUUZwd09ZSjRTdFUrME1S?= =?utf-8?B?N0czc1JJQTVqZ3RyUllCQTM4YkxqQ1J4YW44YnUyNFRUL2wwdkM4QWppVVhM?= =?utf-8?B?RmpqcEM0NjljZEdMMWdDSUNFYmw0QzRnaW1odjJWTVpyWG56V0RSdmx4RDhm?= =?utf-8?B?U1dqVXZDQ3lCNU1yTldGT2MxMkkxQzZQS0dpSkUwUVoyMk1EbTcrcmg0c3JP?= =?utf-8?Q?xBJ1mn+F+OvhtQnqzsM2GjT2n?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ade9e1a2-5180-4731-8dd1-08da89b20c35 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2022 11:31:42.8210 (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: RlaSKIawYgBeT7yWAzvDvaboGPQbH4w3NpXNlwhFlTUxXhGDJaiVzU8iI4v1DcDaTOZ4yKWABNJAU09ZFZpe6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB8284 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIEF1Z3VzdCAyNSwgMjAyMiA3OjMzIFBNIEFtaXQgS2FwaWxhIDxhbWl0Lmth cGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBXZWQsIEF1ZyAyNCwgMjAyMiBhdCA3 OjE3IFBNIGhvdXpqLmZuc3RAZnVqaXRzdS5jb20NCj4gPGhvdXpqLmZuc3RAZnVqaXRzdS5jb20+ IHdyb3RlOg0KPiA+DQo+ID4gT24gRnJpZGF5LCBBdWd1c3QgMTksIDIwMjIgNDo0OSBQTSBBbWl0 IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+DQo+ID4gPg0KPiA+DQo+ID4gPiA4LiBJ dCBpcyBub3QgY2xlYXIgdG8gbWUgaG93IEFQUExZX0JHV09SS0VSX0VYSVQgc3RhdHVzIGlzIHVz ZWQuIElzIGl0DQo+IHJlcXVpcmVkDQo+ID4gPiBmb3IgdGhlIGNhc2VzIHdoZXJlIGJnd29ya2Vy IGV4aXN0cyBkdWUgdG8gc29tZSBlcnJvciBhbmQgdGhlbiBhcHBseQ0KPiB3b3JrZXINCj4gPiA+ IHVzZXMgaXQgdG8gZGV0ZWN0IHRoYXQgYW5kIGV4aXRzPyBIb3cgb3RoZXIgYmd3b3JrZXJzIHdv dWxkIG5vdGljZSB0aGlzLCBpcw0KPiBpdA0KPiA+ID4gZG9uZSB2aWEgYXBwbHlfYmd3b3JrZXJf Y2hlY2tfc3RhdHVzKCk/DQo+ID4NCj4gPiBJdCB3YXMgdXNlZCB0byBkZXRlY3QgdGhlIHVuZXhw ZWN0ZWQgZXhpdCBvZiBiZ3dvcmtlciBhbmQgSSBoYXZlIGNoYW5nZWQNCj4gdGhlIGRlc2lnbg0K PiA+IG9mIHRoaXMgd2hpY2ggaXMgbm93IHNpbWlsYXIgdG8gd2hhdCB3ZSBoYXZlIGluIHBhcmFs bGVsIHF1ZXJ5Lg0KPiA+DQo+IA0KPiBUaGFua3MsIHRoaXMgbG9va3MgYmV0dGVyLg0KPiANCj4g PiBBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHNldCh2MjQpIHdoaWNoIGFkZHJlc3MgYWJv dmUgY29tbWVudHMuDQo+ID4gQmVzaWRlcywgSSBhZGRlZCBzb21lIGxvZ2ljIHdoaWNoIHRyeSB0 byBzdG9wIHRoZSBiZ3dvcmtlciBhdCB0cmFuc2FjdGlvbg0KPiBlbmQNCj4gPiBpZiB0aGVyZSBh cmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuDQo+ID4NCj4gDQo+IEkgdGhpbmsgdGhpcyBk ZXNlcnZlcyBhbiBleHBsYW5hdGlvbiBpbiB3b3JrZXIuYyB1bmRlciB0aGUgdGl0bGU6DQo+ICJT ZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMiIGluIHRoZSBwYXRjaC4NCj4gDQo+IFJldmlldyBj b21tZW50cyBmb3IgdjI0LTAwMDENCg0KVGhhbmtzIGZvciB0aGUgY29tbWVudHMuDQoNCj4gPT09 PT09PT09PT09PT09PT09PT09PT09PQ0KPiAxLg0KPiArICogY29zdCBvZiBzZWFyaGluZyB0aGUg aGFzaCB0YWJsZQ0KPiANCj4gL3NlYXJoaW5nL3NlYXJjaGluZw0KDQpGaXhlZC4NCg0KPiAyLg0K PiArLyoNCj4gKyAqIEFwcGx5IGJhY2tncm91bmQgd29ya2VyIHN0YXRlcy4NCj4gKyAqLw0KPiAr dHlwZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0ZQ0KPiArew0KPiArIEFQUExZX0JHV09SS0VS X0JVU1ksIC8qIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gKi8NCj4gKyBBUFBMWV9CR1dPUktF Ul9GSU5JU0hFRCAvKiB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZWQgKi8NCj4gK30gQXBwbHlCZ3dv cmtlclN0YXRlOw0KPiANCj4gTm93LCB0aGF0IHRoZXJlIGFyZSBqdXN0IHR3byBzdGF0ZXMsIGNh biB3ZSB0aGluayB0byByZXByZXNlbnQgdGhlbQ0KPiB2aWEgYSBmbGFnICgnYXZhaWxhYmxlJy8n aW5fdXNlJykgb3IgZG8geW91IHNlZSBhIGRvd25zaWRlIHdpdGggdGhhdA0KPiBhcyBjb21wYXJl ZCB0byB0aGUgY3VycmVudCBhcHByb2FjaD8NCg0KQ2hhbmdlZCB0byBpbl91c2UuDQoNCj4gMy4N Cj4gLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQ0KPiArcmVwbG9y aWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhcHBseV9sZWFkZXJfcGlk KQ0KPiANCj4gSSBoYXZlIG1lbnRpb25lZCBwcmV2aW91c2x5IHRoYXQgd2UgZG9uJ3QgbmVlZCBh bnl0aGluZyBzcGVjaWZpYyB0bw0KPiBhcHBseSB3b3JrZXIvbGVhZGVyIGluIHRoaXMgQVBJLCBz byB3aHkgdGhpcyBjaGFuZ2U/IFRoZSBvdGhlciBpZGVhDQo+IHRoYXQgb2NjdXJyZWQgdG8gbWUg aXMgdGhhdCBjYW4gd2UgdXNlIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpDQo+IGJlZm9yZSBz ZW5kaW5nIHRoZSBjb21taXQgbWVzc2FnZSB0byBiZ3dvcmtlciBhbmQgdGhlbiBkbyB0aGUgc2Vz c2lvbg0KPiBzZXR1cCBpbiBiZ3dvcmtlciBvbmx5IHRvIGhhbmRsZSB0aGUgY29tbWl0L2Fib3J0 L3ByZXBhcmUgbWVzc2FnZS4gV2UNCj4gYWxzbyBuZWVkIHRvIHNldCBpdCBhZ2FpbiBmb3IgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgYWZ0ZXIgdGhlIGxlYWRlcg0KPiB3b3JrZXIgY29tcGxldGVz IHRoZSB3YWl0IGZvciBiZ3dvcmtlciB0byBmaW5pc2ggdGhlIGNvbW1pdCBoYW5kbGluZy4NCg0K SSBoYXZlIHJldmVydGVkIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gcmVwbG9yaWdpbl9zZXNzaW9u X3NldHVwIGFuZCB1c2VkDQp0aGUgc3VnZ2VzdGVkIGFwcHJvYWNoLiBJIGFsc28gZGlkIHNvbWUg c2ltcGxlIHBlcmZvcm1hbmNlIHRlc3RzIGZvciB0aGlzIGFwcHJvYWNoDQphbmQgZGlkbid0IHNl ZSBzb21lIG9idmlvdXMgb3ZlcmhlYWQgYXMgdGhlIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cCBp cyBpbnZva2VkDQpwZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLg0KDQo+IDQuIFVubGlrZSBwYXJh bGxlbCBxdWVyeSwgaGVyZSB3ZSBzZWVtIHRvIGJlIGNyZWF0aW5nIHNlcGFyYXRlIERTTSBmb3IN Cj4gZWFjaCB3b3JrZXIsIGFuZCBwcm9iYWJseSB0aGUgZGlmZmVyZW5jZSBpcyBkdWUgdG8gdGhl IGZhY3QgdGhhdCBoZXJlDQo+IHdlIGRvbid0IGtub3cgdXBmcm9udCBob3cgbWFueSB3b3JrZXJz IHdpbGwgYWN0dWFsbHkgYmUgcmVxdWlyZWQuIElmDQo+IHNvLCBjYW4gd2Ugd3JpdGUgc29tZSBj b21tZW50cyBmb3IgdGhlIHNhbWUgaW4gd29ya2VyLmMgd2hlcmUgeW91IGhhdmUNCj4gZXhwbGFp bmVkIGFib3V0IHBhcmFsbGVsIGJnd3Jva2VyIHN0dWZmPw0KDQpBZGRlZC4NCg0KPiA1Lg0KPiAv Kg0KPiAtICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4NCj4gKyAqIEhhbmRsZSBzdHJl YW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUg YXBwbHkNCj4gKyAqIGJhY2tncm91bmQgd29ya2Vycy4NCj4gDQo+IFNoYWxsIHdlIHVzZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGluIHRoZSBhYm92ZSBjb21tZW50PyBBbHNvLCBjaGVjaw0KPiBvdGhl ciBwbGFjZXMgaW4gdGhlIHBhdGNoIGZvciBzaW1pbGFyIGNoYW5nZXMuDQoNCkNoYW5nZWQuDQoN Cj4gNi4NCj4gKyBlbHNlDQo+ICsgew0KPiANCj4gLSAvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZv ciB0aGlzIHRyYW5zYWN0aW9uICovDQo+IC0gc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsNCj4gKyAvKiBub3RpZnkg aGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLw0K PiArIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsNCj4gDQo+IFRoZXJlIGlzIGEgc3B1 cmlvdXMgbGluZSBhZnRlciBlbHNlIHsuIEFsc28sIHRoZSBjb21tZW50IGNvdWxkIGJlDQo+IHNs aWdodGx5IGltcHJvdmVkOiAiLyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3Np bmcgYSByZW1vdGUNCj4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24gKi8iDQoNCkNoYW5nZWQuDQoN Cj4gNy4gVGhlIGNoZWNrcyBpbiB2YXJpb3VzIGFwcGx5X2hhbmRsZV9zdHJlYW1fKiBmdW5jdGlv bnMgaGF2ZSBpbXByb3ZlZA0KPiBhcyBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgdmVyc2lvbiBi dXQgSSB0aGluayB3ZSBjYW4gc3RpbGwgaW1wcm92ZQ0KPiB0aG9zZS4gT25lIGlkZWEgY291bGQg YmUgdG8gdXNlIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gZGVjaWRlIHRoZQ0KPiBhY3Rpb24gd2Ug d2FudCB0byB0YWtlIGFuZCB0aGVuIGJhc2VkIG9uIGl0LCB0aGUgY2FsbGVyIGNhbiB0YWtlDQo+ IGFwcHJvcHJpYXRlIGFjdGlvbi4gVXNpbmcgYSBzaW1pbGFyIGlkZWEsIHdlIGNhbiBpbXByb3Zl IHRoZSBjaGVja3MgaW4NCj4gaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKCkgYXMgd2VsbC4N Cg0KSW1wcm92ZWQgYXMgc3VnZ2VzdGVkLg0KDQo+IDguDQo+ICsgZWxzZSBpZiAoKHdpbmZvID0g YXBwbHlfYmd3b3JrZXJfZmluZCh4aWQpKSkNCj4gKyB7DQo+ICsgLyogU2VuZCBTVFJFQU0gQUJP UlQgbWVzc2FnZSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovDQo+ICsgYXBwbHlf Ymd3b3JrZXJfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOw0KPiArDQo+ICsgLyoN Cj4gKyAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29y a2VyLCB3YWl0IGZvcg0KPiArICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vz c2FyeSB0byBtYWludGFpbiBjb21taXQNCj4gKyAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJl cyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZA0KPiArICogZGVhZGxvY2tzLg0K PiArICovDQo+ICsgaWYgKHN1YnhpZCA9PSB4aWQpDQo+ICsgew0KPiArIGFwcGx5X2Jnd29ya2Vy X3dhaXRfZm9yKHdpbmZvLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7DQo+ICsgYXBwbHlfYmd3 b3JrZXJfZnJlZSh3aW5mbyk7DQo+ICsgfQ0KPiArIH0NCj4gKyBlbHNlDQo+ICsgLyoNCj4gKyAq IFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVu DQo+ICsgKiBzZXJpYWxpemVkIHRvIGZpbGUuDQo+ICsgKi8NCj4gKyBzZXJpYWxpemVfc3RyZWFt X2Fib3J0KHhpZCwgc3VieGlkKTsNCj4gDQo+IEluIHRoZSBsYXN0IGVsc2UgYmxvY2ssIHlvdSBj YW4gdXNlIHt9IHRvIG1ha2UgaXQgY29uc2lzdGVudCB3aXRoDQo+IG90aGVyIGlmLCBlbHNlIGNo ZWNrcy4NCj4gDQo+IDkuDQo+ICt2b2lkDQo+ICtBcHBseUJnd29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykNCj4gK3sNCj4gKyB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpzaGFyZWQ7DQo+ ICsNCj4gKyBkc21faGFuZGxlIGhhbmRsZTsNCj4gDQo+IElzIHRoZXJlIGEgbmVlZCB0byBrZWVw IHRoaXMgZW1wdHkgbGluZSBiZXR3ZWVuIHRoZSBhYm92ZSB0d28gZGVjbGFyYXRpb25zPw0KDQpS ZW1vdmVkLg0KDQo+IDEwLg0KPiArIC8qDQo+ICsgKiBBdHRhY2ggdG8gdGhlIG1lc3NhZ2UgcXVl dWUuDQo+ICsgKi8NCj4gKyBtcSA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlfQkdXT1JLRVJf S0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7DQo+IA0KPiBIZXJlLCB3ZSBzaG91bGQgc2F5IGVycm9y IHF1ZXVlIGluIHRoZSBjb21tZW50cy4NCg0KRml4ZWQuDQoNCj4gMTEuDQo+ICsgLyoNCj4gKyAq IEF0dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4NCj4gKyAqLw0KPiArIG1xID0gc2htX3RvY19s b29rdXAodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsNCj4gKyBz aG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsNCj4gKyBlcnJvcl9tcWggPSBzaG1fbXFfYXR0 YWNoKG1xLCBzZWcsIE5VTEwpOw0KPiArIHBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9y X21xaCk7DQo+ICsNCj4gKyAvKg0KPiArICogTm93LCB3ZSBoYXZlIGluaXRpYWxpemVkIERTTS4g QXR0YWNoIHRvIHNsb3QuDQo+ICsgKi8NCj4gKyBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29y a2VyX3Nsb3QpOw0KPiArIE15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVy YXRpb24gPQ0KPiBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247DQo+ICsgTXlQYXJhbGxl bFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90Ow0KPiArDQo+ ICsgcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRl cl9waWQsDQo+ICsgICAgSW52YWxpZEJhY2tlbmRJZCk7DQo+IA0KPiBJcyB0aGVyZSBhIHJlYXNv biB0byBzZXQgcGFyYWxsZWxfbGVhZGVyIGltbWVkaWF0ZWx5IGFmdGVyDQo+IHBxX3JlZGlyZWN0 X3RvX3NobV9tcSgpIGFzIHdlIGFyZSBkb2luZyBwYXJhbGxlbC5jPw0KDQpNb3ZlZCB0aGUgY29k ZS4NCg0KPiAxMi4NCj4gaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkNCj4gKyB7 DQo+ICAgU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwNCj4gICAgICBQ Uk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsDQo+ICAgICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2Jh Y2tlbmRfaWQpOw0KPiANCj4gKyAvKg0KPiArICogWFhYIG1heWJlIHdlIGNhbiByZXVzZSB0aGUg UFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFIGluc3RlYWQgb2YNCj4gKyAqIGludHJvZHVjaW5nIGEg bmV3IHNpZ25hbCByZWFzb24uDQo+ICsgKi8NCj4gKyBTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJh bGxlbF9sZWFkZXJfcGlkLA0KPiArICAgIFBST0NTSUdfQVBQTFlfQkdXT1JLRVJfTUVTU0FHRSwN Cj4gKyAgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7DQo+ICsgfQ0KPiANCj4g SSB0aGluayB3ZSBkb24ndCBuZWVkIHRvIHNlbmQgYm90aCBzaWduYWxzLiBIZXJlLCB3ZSBjYW4g Y2hlY2sgaWYgdGhpcw0KPiBpcyBhIHBhcmFsbGVsIHdvcmtlciAoSXNQYXJhbGxlbFdvcmtlciks IHRoZW4gc2VuZA0KPiBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsIG90aGVyd2lzZSwgc2VuZA0K PiBQUk9DU0lHX0FQUExZX0JHV09SS0VSX01FU1NBR0UgbWVzc2FnZS4gSW4gdGhlIGVsc2UgcGFy dCwgd2UgY2FuIGhhdmUNCj4gYW4gYXNzZXJ0IHRvIGVuc3VyZSBpdCBpcyBhbiBhcHBseSBiZ3dv cmtlci4NCg0KQ2hhbmdlZC4NCg0KDQpBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHNldCB3 aGljaCBhZGRyZXNzZWQgdGhlIGFib3ZlIGNvbW1lbnRzDQphbmQgY29tbWVudHMgZnJvbSBBbWl0 WzFdIGFuZCBLdXJvZGEtc2FuWzJdLg0KDQpBcyBkaXNjdXNzZWQsIEkgYWxzbyByZW5hbWVkIGFs bCB0aGUgImFwcGx5IGJhY2tncm91bmQgd29ya2VyIiBhbmQNCnJlbGF0ZWQgc3R1ZmYgdG8gImFw cGx5IHBhcmFsbGVsIHdvcmtlciIuDQoNClsxXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL0NBQTRlSzElMkJfb0haSG9Eb29BUjdRY1lEMkNlVFVXTlN3a3FWY0xXQzJpUWlq QUpDNENnJTQwbWFpbC5nbWFpbC5jb20NClsyXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkL1RZQVBSMDFNQjU4NjY2QTk3RDQwQUI4OTE5RDEwNkFENUY1NzA5JTQwVFlBUFIw MU1CNTg2Ni5qcG5wcmQwMS5wcm9kLm91dGxvb2suY29tDQoNCkJlc3QgcmVnYXJkcywNCkhvdSB6 ag0K --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v25-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v25-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v25-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=7888; creation-date="Mon, 29 Aug 2022 11:31:00 GMT"; modification-date="Mon, 29 Aug 2022 11:31:38 GMT" Content-Transfer-Encoding: base64 RnJvbSA2NjMzNTY3YzkxNGM5NmFiNDg0NGY2MGZmNmU3MmIyMjFlODhiYTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNSA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIs IGlmIHRoaXMgcHJvY2VzcyBpcyBhCmFwcGx5IHBhcmFsbGVsIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKc3luY2hyb25pemF0aW9uIHdv cmtlci4KClRoZSBuZXcgY29sdW1uIGNhbiBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQpwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgYWxz byBzaW1pbGFyIHRvIHRoZSAnbGVhZGVyX3BpZCcgY29sdW1uIGluCnBnX3N0YXRfYWN0aXZpdHku Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjEgKysr KysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAg IHwgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwgMjgg KysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAg ICAgICAgICAgIHwgIDYgKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICsrLQogNSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIv ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxZDk1MDlhMmY2Li4yYzJlOTYxYTU5 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTMxNzgsMTMgKzMxNzgsMjQgQEAgU0VMRUNUIHBpZCwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3 YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YXBwbHlfbGVhZGVyX3Bp ZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBQcm9jZXNzIElEIG9mIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYW4gYXBwbHkKKyAgICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwg aWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVyIGFwcGx5IHdvcmtlciBvciBhCisgICAgICAgc3lu Y2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFy YT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0aW9uIHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJv bml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAgICBtYWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1h aW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgYXBwbHkgcGFyYWxsZWwgd29ya2VyCiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMxOTQsNyArMzIwNSw3IEBAIFNFTEVDVCBw aWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hF UkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0 IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZWNlaXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YK LSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAKKyAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51 bGwgZm9yIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KIApAQCAtMzIwMyw3ICszMjE0LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVu dF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50 IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAg ICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9t IG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgU2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNl aXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZvciB0aGUKKyAgICAgICBhcHBseSBw YXJhbGxlbCB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAt MzIxMiw3ICszMjI0LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50 IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0 ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1w IHdpdGggdGltZSB6b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAg ICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwg c2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9t IG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZvcgorICAgICAgIHRoZSBhcHBseSBwYXJhbGxlbCB3 b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDY1MmQ3NmZkY2MuLmQzNTc0OGJjMGIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Nyw2ICs5NDcsNyBAQCBDUkVBVEUgVklF VyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAog ICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAg IHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAg IHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA1MDkxNjFkNGNk Li4xODc5NmQxZDEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0K IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQ R19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlND UklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRP aWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZv ID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTA3OSwyNiArMTA3 OSwzMiBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJZWxz ZQogCQkJbnVsbHNbMV0gPSB0cnVlOwogCQl2YWx1ZXNbMl0gPSBJbnQzMkdldERhdHVtKHdvcmtl cl9waWQpOwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIubGFzdF9sc24pKQorCisJ CWlmICh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCA9PSAwKQogCQkJbnVsbHNbM10gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbM10gPSBMU05HZXREYXR1bSh3b3JrZXIubGFzdF9sc24pOwotCQlp ZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCisJCQl2YWx1ZXNbM10gPSBJbnQzMkdldERh dHVtKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkKTsKKworCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZCh3b3JrZXIubGFzdF9sc24pKQogCQkJbnVsbHNbNF0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1 ZXNbNF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3NlbmRfdGltZSk7Ci0JCWlm ICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s0XSA9IExTTkdldERhdHVt KHdvcmtlci5sYXN0X2xzbik7CisJCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKIAkJ CW51bGxzWzVdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3 b3JrZXIucmVwbHlfbHNuKSkKKwkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29y a2VyLmxhc3Rfc2VuZF90aW1lKTsKKwkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQog CQkJbnVsbHNbNl0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNl0gPSBMU05HZXREYXR1bSh3 b3JrZXIucmVwbHlfbHNuKTsKLQkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQl2YWx1 ZXNbNl0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7CisJCWlm IChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQogCQkJbnVsbHNbN10gPSB0 cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbN10gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKKwkJCXZhbHVlc1s3XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24p OworCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCW51bGxzWzhdID0gdHJ1ZTsKKwkJ ZWxzZQorCQkJdmFsdWVzWzhdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIucmVwbHlfdGlt ZSk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+ c2V0RGVzYywKIAkJCQkJCQkgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApp bmRleCBiZTQ3NTgzMTIyLi5iNjg4NDNkYzAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTUzOTMsOSArNTM5Myw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlv bicsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4g J3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlw ZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCi0gIHByb2FsbGFyZ3R5cGVzID0+ ICd7b2lkLG9pZCxvaWQsaW50NCxwZ19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNu LHRpbWVzdGFtcHR6fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG99JywK LSAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQscmVjZWl2ZWRfbHNuLGxh c3RfbXNnX3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0ZXN0X2VuZF9sc24sbGF0 ZXN0X2VuZF90aW1lfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLG9pZCxvaWQsaW50NCxp bnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywK KyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVz ID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLGFwcGx5X2xlYWRlcl9waWQscmVjZWl2ZWRfbHNu LGxhc3RfbXNnX3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0ZXN0X2VuZF9sc24s bGF0ZXN0X2VuZF90aW1lfScsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9u JyB9LAogeyBvaWQgPT4gJzIwMjYnLCBkZXNjciA9PiAnc3RhdGlzdGljczogY3VycmVudCBiYWNr ZW5kIFBJRCcsCiAgIHByb25hbWUgPT4gJ3BnX2JhY2tlbmRfcGlkJywgcHJvdm9sYXRpbGUgPT4g J3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IDdlYzNkMjY4OGYuLjAwN2U3MTBkMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CkBAIC0yMDkxLDYgKzIwOTEsNyBAQCBwZ19zdGF0X3NzbHwgU0VMRUNUIHMucGlkLAogcGdf c3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMgc3ViaWQsCiAgICAgc3Uuc3VibmFt ZSwKICAgICBzdC5waWQsCisgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICBzdC5yZWxpZCwK ICAgICBzdC5yZWNlaXZlZF9sc24sCiAgICAgc3QubGFzdF9tc2dfc2VuZF90aW1lLApAQCAtMjA5 OCw3ICsyMDk5LDcgQEAgcGdfc3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMgc3Vi aWQsCiAgICAgc3QubGF0ZXN0X2VuZF9sc24sCiAgICAgc3QubGF0ZXN0X2VuZF90aW1lCiAgICBG Uk9NIChwZ19zdWJzY3JpcHRpb24gc3UKLSAgICAgTEVGVCBKT0lOIHBnX3N0YXRfZ2V0X3N1YnNj cmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCByZWNlaXZlZF9sc24sIGxh c3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVjZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwg bGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1YmlkID0gc3Uub2lkKSkpOworICAgICBMRUZUIEpP SU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBw aWQsIGFwcGx5X2xlYWRlcl9waWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0c3wgU0VM RUNUIHNzLnN1YmlkLAogICAgIHMuc3VibmFtZSwKICAgICBzcy5hcHBseV9lcnJvcl9jb3VudCwK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v25-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v25-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v25-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=131349; creation-date="Mon, 29 Aug 2022 11:31:00 GMT"; modification-date="Mon, 29 Aug 2022 11:31:38 GMT" Content-Transfer-Encoding: base64 RnJvbSA3MDhlNjQ0OTAyMjhlZjE3MDU0NGFkNGMyMWE3NmE2M2VjM2YxYWI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRoZSBmaWxlIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUgdHJh bnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rpb25z LCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdv cmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgcGFyYWxsZWwg d29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0g aXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFuZ2Vz IHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIGFwcGx5IHBhcmFsbGVs IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5n IGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxs IHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3IgdGhl IHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBwYXJhbGxlbAp3b3JrZXIgb3Ig c3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1pbmcg cGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVlICdw YXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGFuIGFwcGx5 IHBhcmFsbGVsIHdvcmtlciwgaWYgYXZhaWxhYmxlLiBUaGUgcGFyYW1ldGVyIHZhbHVlCidvbicg bWVhbnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsIGJlIHNwaWxsZWQgdG8gZGlzay4g VGhlIGRlZmF1bHQgdmFsdWUKaXMgJ29mZicgKHNhbWUgYXMgY3VycmVudCBiZWhhdmlvdXIpLgoK SW4gYWRkaXRpb24sIHRoZSBwYXRjaCBleHRlbmRzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIFNU UkVBTV9BQk9SVCBtZXNzYWdlIHNvCnRoYXQgYWJvcnRfdGltZSBhbmQgYWJvcnRfbHNuIGNhbiBh bHNvIGJlIHNlbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdXBkYXRlIHRoZQpyZXBsaWNhdGlvbiBv cmlnaW4gaW4gYXBwbHkgcGFyYWxsZWwgd29ya2VyIHdoZW4gdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICB8ICAgMTEgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAg ICAgICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwgICAgICAgICB8ICAgMTMgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAg ICAgICAgICAgICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sICAgICB8ICAgMjQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAg ICAgICAgICAgICB8ICAgMTMgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jICAgICAgIHwgICA2NiArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jICAgICAgICAgICAg ICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAg ICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2Vm aWxlICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYyB8IDEwOTMgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAxNjYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgIDQxICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNh bC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgODEyICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICAxMiArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgMjEgKy0KIHNyYy9pbmNsdWRlL25vZGVz L3BnX2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDI3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAgIDcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxMjMgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2Fp dF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9z dWJzY3JpcHRpb24uc3FsICAgICAgICAgfCAgICA2ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICA0ICsKIDM2IGZpbGVzIGNoYW5nZWQsIDIzNDUg aW5zZXJ0aW9ucygrKSwgMjU0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAppbmRleCAwMGY4MzNkMjEwLi4wZDEyNDk4ODU5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzg5 MiwxMSArNzg5MiwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9u IGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxk PiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVj dGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0g ICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBp bi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENvbnRyb2xzIGhvdyB0byBo YW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAg PGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNo YW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgZGlzayBhbmQgYXBw bHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAg ICAgIHB1Ymxpc2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5n ZXMgZGlyZWN0bHkgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwKKyAgICAgICB3b3JrZXIgaWYgYXZh aWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggYTVjZDRlNDRjNy4uODYw MjBlMTA4NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk0MCw3ICs0OTQwLDggQEAgQU5ZIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lm aWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBp bmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXph dGlvbiB3b3JrZXJzLgorICAgICAgICBhcHBseSBsZWFkZXIgd29ya2VycywgYXBwbHkgcGFyYWxs ZWwgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgog ICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5ODAsNiAr NDk4MSwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9y ZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1hcHBs eS1wYXJhbGxlbC13b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5 X3BhcmFsbGVsX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFt ZT5tYXhfYXBwbHlfcGFyYWxsZWxfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAo PHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPm1heF9hcHBseV9wYXJhbGxlbF93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIE1heGltdW0gbnVtYmVyIG9mIGFwcGx5IHBhcmFsbGVsIHdvcmtlcnMgcGVyIHN1YnNjcmlw dGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJh bGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wg ZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRo ZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxp c3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggYmRmMWU3YjcyNy4uYTI0Y2ExMGQ5YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCkBAIC0xMTUzLDYgKzExNTMsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAg IG1pZ2h0IG5vdCB2aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2Ug dGhlIHN1YnNjcmliZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+ LCB0aGUgZmluaXNoIExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxv Z2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhl IHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8 L2xpdGVyYWw+IGFuZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBm aW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0 byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVm ZXIgdG8gPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+ QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3Bh cmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmlj dGlvbnMiPgpAQCAtMTMzNCw3ICsxMzQ0LDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3Rl IGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAg IHN1YnNjcmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJz Y3JpcHRpb24gd2lsbCBoYXZlCiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGlu aXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVz cywgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJl aW5nIHN5bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJl IHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9j b2wuc2dtbAppbmRleCA4Nzg3MGM1YjEwLi5kMTA3ZGQyZjgwIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAt MzA5Niw3ICszMDk2LDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFi YXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+ CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRlcmFsPjE8 L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVyYWw+Mzwv bGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRlcmFsPiwgYW5k IDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCiAgICAgICA8L3BhcmE+CiAgICAg ICA8cGFyYT4KICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjI8L2xpdGVyYWw+IGlzIHN1cHBvcnRl ZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNApAQCAtMzEwNiw2ICszMTA2LDExIEBAIHBzcWwg ImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RF TTsiCiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4zPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25s eSBmb3Igc2VydmVyIHZlcnNpb24gMTUKICAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mg c3RyZWFtaW5nIG9mIHR3by1waGFzZSBjb21taXRzLgogICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD40PC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25s eSBmb3Igc2VydmVyIHZlcnNpb24gMTYKKyAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mg YXBwbHlpbmcgc3RyZWFtcyBvZiBsYXJnZSBpbi1wcm9ncmVzcworICAgICAgIHRyYW5zYWN0aW9u cyBpbiBwYXJhbGxlbC4KKyAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zh cmxpc3RlbnRyeT4KIApAQCAtNjg3Niw2ICs2ODgxLDI4IEBAIHBzcWwgImRibmFtZT1wb3N0Z3Jl cyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgIDwv cGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAg IDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgor ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRo ZSBhYm9ydC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbgor ICAgICAgICAgNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2 NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2YgdGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUg aXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNyb3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBl cG9jaCAoMjAwMC0wMS0wMSkuIFRoaXMgZmllbGQgaXMKKyAgICAgICAgIGF2YWlsYWJsZSBzaW5j ZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVt PgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbAppbmRleCA3MzkwYzcxNWJjLi42ODliMzc5ZDkzIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjE3LDEzICsyMTcsMjkgQEAgQ1JF QVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2 YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4g KDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3Ry ZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlz dGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBl bmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZv ciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAg ICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2Vu dCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9y IHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9s aXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRl Y29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAgICAgICAgIHRoZW4gc2VudCB0byB0 aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5j b21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBh bmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgICAg Y29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVy LgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQg dG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWluZyBjaGFuZ2VzIGFyZSBkaXJl Y3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgYXBwbHkgcGFyYWxsZWwgd29y a2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAgIHBhcmFsbGVsIHdvcmtlciBpcyBm cmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoZW4gdGhlCisgICAgICAgICAg Y2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIg dGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4g ZXJyb3IgaGFwcGVucyB3aGVuCisgICAgICAgICAgYXBwbHlpbmcgY2hhbmdlcyBpbiBhIHBhcmFs bGVsIHdvcmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCisgICAgICAgICAgcmVtb3RlIHRyYW5z YWN0aW9uIG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAg IDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA1MGYwOTJkN2ViLi41YTc2ZDljMWExIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzExLDYgKzE3MTEsNyBAQCBSZWNvcmRUcmFu c2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2Fj dGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9y aWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9i b2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDEsNiArMTc0MiwxMyBAQCBS ZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fu bm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJ IHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBm ZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLAorCSAqIGFyZSB3ZSByZXBsYXlpbmcgcmVtb3Rl IGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp biAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9y IHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxz ZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRy ZW4pOwpAQCAtMTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBp c1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJ CQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQg Zm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZh bmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJl Y0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28g dGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJl J3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA2NzBiMjE5YzhkLi4zZGMwM2RjMjIw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3 IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVm cmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWlu ZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3Jp Z2luOwpAQCAtOTcsNiArOTcsNjIgQEAgc3RhdGljIExpc3QgKm1lcmdlX3B1YmxpY2F0aW9ucyhM aXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29sIGFkZHB1YiwKIHN0YXRpYyB2 b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1YmlkLCBj aGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIAogCisvKgorICogRXh0cmFjdCB0aGUgc3RyZWFt aW5nIG1vZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJv b2xlYW4oKSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIu CisgKi8KK3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikKK3sK KwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBt ZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNVQlNUUkVBTV9P TjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBv ciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQlj YXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQlj YXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0 dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2UsIGVycm9y IG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0Ogor CQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJCS8qCisJ CQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNoIHVwIHdp dGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9kdWN0aW9u LgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09IDAgfHwK KwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNU UkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJ CQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVB TV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJ CQlyZXR1cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCWVyZXBv cnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNn KCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJwYXJhbGxlbFwiIiwKKwkJCQkJZGVm LT5kZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBx dWlldCAqLworfQorCiAvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBD UkVBVEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCkBAIC0xMzQsNyArMTkw LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZ KSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0 cmVhbWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfVFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yMzcsNyArMjkz LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICpzdG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0 ZSk7CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlv cHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWlu ZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChk ZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYyNyw3ICs2ODMsNyBA QCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRp b25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFd ID0gT2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJp bmFyeSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9v bEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0 dW0ob3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJ TkcgOgpAQCAtMTA4OSw3ICsxMTQ1LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMu c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShv cHRzLnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJ CQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJ CQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9zcmMvYmFja2Vu ZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZTM3OS4uNGIyYTczMmE1NyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwpA QCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAi YWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJs aWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1z Z3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNobV9tcV9zZW5k dihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBxX21xX3BhcmFs bGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xl YWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJCQkgICBw cV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJc1BhcmFsbGVs V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwK KwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFy YWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChJc0xv Z2ljYWxBcHBseVBhcmFsbGVsV29ya2VyKCkpOworCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNT QUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCX0K KwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZWZkOS4uMjliZWIyM2UwYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgor CX0sCisJeworCQkiQXBwbHlQYXJhbGxlbFdvcmtlck1haW4iLCBBcHBseVBhcmFsbGVsV29ya2Vy TWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmlu ZGV4IGM0ZTJmZGViNzEuLjJkYzI1ZTM3YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQ UEZMQUdTKQogCiBPQkpTID0gXAorCWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8g XAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjgzMmU5OWNkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCww ICsxLDEwOTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5j CisgKiAgICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBhcHBseSBwYXJh bGxlbCB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAq IFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0 IHNldHRpbmcgdXAsIHVzaW5nLAorICogYW5kIHRlYXJpbmcgZG93biBhIEFwcGx5UGFyYWxsZWxX b3JrZXJJbmZvLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBv ZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91dCBhcHBs eSBwYXJhbGxlbCB3b3JrZXIuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUg ImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgInBnc3Rh dC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZh bC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3du ZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxf QVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAqIERTTSBrZXlzIGZvciBhcHBseSBw YXJhbGxlbCB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisg KiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5n IHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisj ZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQ TFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMwor CisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FV RVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9m IERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICog dHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0 IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1l c3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZv ciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJ MTYzODQKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJl Y2VpdmVkIGJ5IGFwcGx5IHdvcmtlcjogc3RhcnRfbHNuLAorICogZW5kX2xzbiBhbmQgc2VuZF90 aW1lLiBCZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZSBzdGF0aXN0aWNzIGluIGFwcGx5Cisg KiB3b3JrZXIsIHdlIGNvdWxkIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gYXBwbHkgcGFyYWxsZWwg d29ya2VyIChzZWUgZnVuY3Rpb24KKyAqIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVm aW5lIFNJWkVfU1RBVFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNpemVvZihU aW1lc3RhbXBUeikpCisKKy8qCisgKiBFbnRyeSBmb3IgYSBoYXNoIHRhYmxlIHdlIHVzZSB0byBt YXAgZnJvbSB4aWQgdG8gdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlcgorICogc3RhdGUuCisgKi8K K3R5cGVkZWYgc3RydWN0IEFwcGx5UGFyYWxsZWxXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9u SWQgeGlkOwkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJQXBwbHlQYXJhbGxlbFdv cmtlckluZm8gKndpbmZvOworfSBBcHBseVBhcmFsbGVsV29ya2VyRW50cnk7CisKKy8qIEFwcGx5 IHBhcmFsbGVsIHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3QgdXNlKS4g Ki8KK3N0YXRpYyBIVEFCICpBcHBseVBhcmFsbGVsV29ya2Vyc0hhc2ggPSBOVUxMOworc3RhdGlj IExpc3QgKkFwcGx5UGFyYWxsZWxXb3JrZXJzRnJlZUxpc3QgPSBOSUw7CitzdGF0aWMgTGlzdCAq QXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0ID0gTklMOworCisvKgorICogSW5mb3JtYXRpb24gc2hh cmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgYXBwbHkgcGFyYWxsZWwgd29ya2Vy LgorICovCit2b2xhdGlsZSBBcHBseVBhcmFsbGVsV29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hh cmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBwZW5kaW5nIGluIGFwcGx5 IHBhcmFsbGVsIHdvcmtlciB3aGljaCB3ZSBuZWVkIHRvCisgKiByZWNlaXZlPworICovCit2b2xh dGlsZSBib29sIFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisvKgorICog Q2FjaGUgYSBwb2ludGVyIHRvIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgcmVz cG9uc2libGUgZm9yCisgKiBhcHBseWluZyB0aGUgY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlCisgKiBjb3N0IG9mIHNlYXJjaGluZyB0aGUgaGFz aCB0YWJsZSB3aGVuIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4KKyAqIFNUUkVBTV9TVEFS VCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK0FwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICpzdHJlYW1f YXBwbHlfd29ya2VyID0gTlVMTDsKKworTGlzdAkgICAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0 YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCk7Citz dGF0aWMgQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKnBhcmFsbGVsX2FwcGx5X3NldHVwX3dvcmtl cih2b2lkKTsKK3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X3NldHVwX2RzbShBcHBseVBhcmFs bGVsV29ya2VySW5mbyAqd2luZm8pOworCisvKgorICogQ2hlY2sgaWYgc3RhcnRpbmcgYSBuZXcg YXBwbHkgcGFyYWxsZWwgd29ya2VyIGlzIGFsbG93ZWQuCisgKi8KK3N0YXRpYyBib29sCitwYXJh bGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaWYgKCFUcmFuc2Fj dGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0 YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiBub3QgaW4gc3RyZWFtaW5nIHBhcmFsbGVsIG1v ZGUuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX1BBUkFM TEVMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFs bGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUg dGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkg KiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9u IHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFu c2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8g YXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlTdWJz Y3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNpbmcgYXBwbHkgcGFy YWxsZWwKKwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUg Y2hhbmdlIGZvciBhIHJlbGF0aW9uIHRoYXQKKwkgKiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRl IChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2Ugd29uJ3QKKwkgKiBrbm93 IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5l dyBhcHBseQorCSAqIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFB bGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9 CisKKy8qCisgKiBSZXR1cm4gdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpbmZvcm1hdGlvbiB0 aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlCisgKiBzcGVjaWZpZWQgeGlkLgorICoKKyAqIElmIGFu IGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpcyBmb3VuZCBpbiB0aGUgZnJlZSBsaXN0IHRoZW4gcmUt dXNlIGl0LAorICogb3RoZXJ3aXNlIHN0YXJ0IGEgZnJlc2ggb25lLiBDYWNoZSB0aGUgd29ya2Vy IGluZm9ybWF0aW9uIGluCisgKiBBcHBseVBhcmFsbGVsV29ya2Vyc0hhc2gga2V5ZWQgYnkgdGhl IHNwZWNpZmllZCB4aWQuCisgKi8KK0FwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICoKK3BhcmFsbGVs X2FwcGx5X3N0YXJ0X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsK KwlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKwlBcHBseVBhcmFsbGVsV29ya2VySW5mbyAqd2luZm8g PSBOVUxMOworCUFwcGx5UGFyYWxsZWxXb3JrZXJFbnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYg KCFwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBG aXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUgYXBwbHkgd29ya2VycyBoYXNodGFibGUuICov CisJaWYgKEFwcGx5UGFyYWxsZWxXb3JrZXJzSGFzaCA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJ Y3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0g c2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEFwcGx5UGFy YWxsZWxXb3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCUFwcGx5 UGFyYWxsZWxXb3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMg aGFzaCIsIDE2LCAmY3RsLAorCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJfQorCisJLyogVHJ5IHRvIGdldCBhIGZyZWUgYXBwbHkgcGFyYWxsZWwg d29ya2VyLiAqLworCXdoaWxlIChBcHBseVBhcmFsbGVsV29ya2Vyc0ZyZWVMaXN0ICE9IE5JTCkK Kwl7CisJCUFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZv ID0gKEFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICopIGxsYXN0KEFwcGx5UGFyYWxsZWxXb3JrZXJz RnJlZUxpc3QpOworCQlBcHBseVBhcmFsbGVsV29ya2Vyc0ZyZWVMaXN0ID0gbGlzdF9kZWxldGVf bGFzdChBcHBseVBhcmFsbGVsV29ya2Vyc0ZyZWVMaXN0KTsKKworCQlpZiAodG1wX3dpbmZvLT5l cnJvcl9tcV9oYW5kbGUgIT0gTlVMTCkKKwkJeworCQkJd2luZm8gPSB0bXBfd2luZm87CisJCQli cmVhazsKKwkJfQorCisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBh bmQgdHJ5IG5leHQgb25lIGlmIHRoZSBhcHBseQorCQkgKiBwYXJhbGxlbCB3b3JrZXIgZXhpdGVk IGNsZWFubHkuCisJCSAqLworCQlBcHBseVBhcmFsbGVsV29ya2Vyc0xpc3QgPSBsaXN0X2RlbGV0 ZShBcHBseVBhcmFsbGVsV29ya2Vyc0xpc3QsIHRtcF93aW5mbyk7CisJCXNobV9tcV9kZXRhY2go dG1wX3dpbmZvLT5tcV9oYW5kbGUpOworCQlkc21fZGV0YWNoKHRtcF93aW5mby0+ZHNtX3NlZyk7 CisJCXBmcmVlKHRtcF93aW5mbyk7CisJfQorCisJLyogVHJ5IHRvIHN0YXJ0IGEgbmV3IGFwcGx5 IHBhcmFsbGVsIHdvcmtlci4gKi8KKwlpZiAod2luZm8gPT0gTlVMTCkKKwkJd2luZm8gPSBwYXJh bGxlbF9hcHBseV9zZXR1cF93b3JrZXIoKTsKKworCS8qIEZhaWxlZCB0byBzdGFydCBhIG5ldyBh cHBseSBwYXJhbGxlbCB3b3JrZXIuICovCisJaWYgKHdpbmZvID09IE5VTEwpCisJCXJldHVybiBO VUxMOworCisJLyogQ3JlYXRlIGVudHJ5IGZvciByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJ ZW50cnkgPSBoYXNoX3NlYXJjaChBcHBseVBhcmFsbGVsV29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hf RU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBj b3JydXB0ZWQiKTsKKworCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExv Z1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXdpbmZvLT5zaGFyZWQtPnByb3RvX3ZlcnNpb24gPQor CQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJB TExFTF9WRVJTSU9OX05VTSA6CisJCXNlcnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxS RVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAw MDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSA6CisJCUxPR0lDQUxSRVBf UFJPVE9fVkVSU0lPTl9OVU07CisKKwl3aW5mby0+c2hhcmVkLT5pbl91c2UgPSB0cnVlOworCXdp bmZvLT5zaGFyZWQtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50cnktPndpbmZvID0gd2luZm87CisJ ZW50cnktPnhpZCA9IHhpZDsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIEZpbmQgdGhl IHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlm IGFueS4KKyAqLworQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKgorcGFyYWxsZWxfYXBwbHlfZmlu ZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJQXBwbHlQYXJh bGxlbFdvcmtlckVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKEFwcGx5UGFyYWxsZWxXb3JrZXJzSGFz aCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2FjaGVkIGFwcGx5 IHBhcmFsbGVsIHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5X3dvcmtlciAh PSBOVUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKworCS8qCisJICogRmluZCBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goQXBwbHlQYXJhbGxlbFdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJ aWYgKGZvdW5kKQorCXsKKwkJLyogSWYgYW55IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFzdGVyKSBo YXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoZW50cnktPndpbmZvLT5lcnJvcl9t cV9oYW5kbGUgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJhcHBs eSBwYXJhbGxlbCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJ CQkJCQllbnRyeS0+d2luZm8tPnNoYXJlZC0+d29ya2VyX2lkLAorCQkJCQkJCWVudHJ5LT53aW5m by0+c2hhcmVkLT5zdHJlYW1feGlkKSkpOworCisJCUFzc2VydChlbnRyeS0+d2luZm8tPnNoYXJl ZC0+aW5fdXNlKTsKKworCQlyZXR1cm4gZW50cnktPndpbmZvOworCX0KKworCXJldHVybiBOVUxM OworfQorCisvKgorICogUmVtb3ZlIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIgZW50cnkgZnJv bSB0aGUgaGFzaCB0YWJsZS4gQW5kIHN0b3AgdGhlCisgKiB3b3JrZXIgaWYgdGhlcmUgYXJlIGVu b3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLCBvdGhlcndpc2UgYWRkIGl0IHRvIHRoZSBmcmVlCisg KiBsaXN0LgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcihBcHBseVBhcmFs bGVsV29ya2VySW5mbyAqd2luZm8pCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSB3aW5mby0+c2hh cmVkLT5zdHJlYW1feGlkOworCWludAkJCW5hcHBseXdvcmtlcnM7CisKKwlBc3NlcnQoIXdpbmZv LT5zaGFyZWQtPmluX3VzZSk7CisKKwloYXNoX3NlYXJjaChBcHBseVBhcmFsbGVsV29ya2Vyc0hh c2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJl cFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfYXBw bHlfcGFyYWxsZWxfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJaWYgKG5hcHBseXdvcmtlcnMg PiAobWF4X2FwcGx5X3BhcmFsbGVsX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCXsK KwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxy ZXBfd29ya2VyX3Nsb3Rfbm8sCisJCQkJCQkJCQkgICB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVw X3dvcmtlcl9nZW5lcmF0aW9uKTsKKworCQlBcHBseVBhcmFsbGVsV29ya2Vyc0xpc3QgPSBsaXN0 X2RlbGV0ZV9wdHIoQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0LCB3aW5mbyk7CisKKwkJc2htX21x X2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3Jf bXFfaGFuZGxlKTsKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisJCXBmcmVlKHdpbmZv KTsKKwl9CisJZWxzZQorCXsKKwkJTWVtb3J5Q29udGV4dAlvbGRjdHg7CisKKwkJZWxvZyhERUJV RzEsICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICV1IGZvciB4aWQgJXUgdG8gdGhlIGZy ZWUgbGlzdCIsCisJCQkgd2luZm8tPnNoYXJlZC0+d29ya2VyX2lkLCB3aW5mby0+c2hhcmVkLT5z dHJlYW1feGlkKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250 ZXh0KTsKKwkJQXBwbHlQYXJhbGxlbFdvcmtlcnNGcmVlTGlzdCA9IGxhcHBlbmQoQXBwbHlQYXJh bGxlbFdvcmtlcnNGcmVlTGlzdCwgd2luZm8pOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKKwl9Cit9CisKKy8qIEFwcGx5IHBhcmFsbGVsIHdvcmtlciBtYWluIGxvb3AuICovCitz dGF0aWMgdm9pZAorTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCwg dm9sYXRpbGUgQXBwbHlQYXJhbGxlbFdvcmtlclNoYXJlZCAqc2hhcmVkKQoreworCXNobV9tcV9y ZXN1bHQgc2htcV9yZXM7CisJUEdQUk9DCSAgICpyZWdpc3RyYW50OworCUVycm9yQ29udGV4dENh bGxiYWNrIGVycmNhbGxiYWNrOworCisJcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9jKE15 Qmd3b3JrZXJFbnRyeS0+Ymd3X25vdGlmeV9waWQpOworCVNldExhdGNoKCZyZWdpc3RyYW50LT5w cm9jTGF0Y2gpOworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNo IHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdl LgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBw bHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJ CQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3Ig Y29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJ ICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9j YWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJ ZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2 b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisJCWludAkJCWM7CisJCVN0cmluZ0luZm9EYXRh IHM7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBj b250ZXh0LiAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdl Q29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRh LCBmYWxzZSk7CisKKwkJaWYgKHNobXFfcmVzICE9IFNITV9NUV9TVUNDRVNTKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQorCQkJYnJlYWs7CisKKwkJcy5jdXJz b3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQlz LmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlIGZvciBh ZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBhcHBseSBwYXJhbGxlbCB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJICovCisJCWMg PSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJaWYgKGMgIT0gJ3cnKQorCQkJZWxvZyhFUlJPUiwgIltB cHBseSBQYXJhbGxlbCBXb3JrZXIgIyV1XSB1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwKKwkJ CQkgc2hhcmVkLT53b3JrZXJfaWQsIGMpOworCisJCS8qCisJCSAqIElnbm9yZSBzdGF0aXN0aWNz IGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIgYXBwbHkKKwkJICog d29ya2VyLgorCQkgKi8KKwkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCisJCWFw cGx5X2Rpc3BhdGNoKCZzKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJ TWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCWlmIChDb25maWdS ZWxvYWRQZW5kaW5nKQorCQl7CisJCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCQlQ cm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJfQorCX0KKworCS8qIFBvcCB0aGUgZXJy b3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2su cHJldmlvdXM7CisKKwllbG9nKERFQlVHMSwgIltBcHBseSBQYXJhbGxlbCBXb3JrZXIgIyV1XSBl eGl0aW5nIiwgc2hhcmVkLT53b3JrZXJfaWQpOworCisJLyogU2lnbmFsIG1haW4gcHJvY2VzcyB0 aGF0IHdlIGFyZSBkb25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOwor fQorCisvKgorICogTWFrZSBzdXJlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIHJl YWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25lIG1vcmUKKyAqIHRpbWUuIFRoaXMgZ3VhcmRzIGFn YWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhpdCB1bmNsZWFubHkgd2l0aG91dCBzZW5kaW5nCisg KiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHNvbWUgY29kZSBjYWxscyBw cm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0YXRpYyB2b2lkCitwYXJhbGxlbF9hcHBseV9zaHV0 ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJl cFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZ X01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlkc21fZGV0YWNoKChkc21f c2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBwYXJh bGxlbCB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8KK3ZvaWQKK0FwcGx5UGFyYWxsZWxXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQoreworCXZvbGF0aWxlIEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFy ZWQgKnNoYXJlZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNo bV90b2MgICAgKnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlz aG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldElu dDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNl dHVwIHNpZ25hbCBoYW5kbGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJG b3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdv cmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICogZmlu ZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3 ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFyYWxs ZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnktPmJn d19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7 CisJaWYgKHNlZyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVuYWJs ZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0gc2ht X3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJl c3Moc2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJt c2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkp OworCisJYmVmb3JlX3NobWVtX2V4aXQocGFyYWxsZWxfYXBwbHlfc2h1dGRvd24sIFBvaW50ZXJH ZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8K KwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQs IGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0FQUExZX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15 UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICog QXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3NldF9z ZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBO VUxMKTsKKworCS8qCisJICogUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gTm93 LCB3ZSBjYW4gYXR0YWNoIHRvIG91ciBzbG90LiBUaGlzCisJICogaXMgdXNlZCB0byBlbnN1cmUg dGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3cml0ZSBkYXRhIHRvIHRoZQor CSAqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLworCWxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaCh3b3JrZXJfc2xvdCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3Jr ZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdvcmtlci0+Z2VuZXJhdGlvbjsKKwlNeVBhcmFs bGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vID0gd29ya2VyX3Nsb3Q7CisKKwlw cV9yZWRpcmVjdF90b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgpOworCXBxX3NldF9wYXJhbGxlbF9s ZWFkZXIoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCQkJICAgSW52 YWxpZEJhY2tlbmRJZCk7CisKKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0g TXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdvcmtl ci0+cmVwbHlfdGltZSA9IDA7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKKworCS8qCisJ ICogU2V0dXAgY2FsbGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3aGVuIHNvbWV0 aGluZyBjaGFuZ2VzIGluCisJICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBzdGF0ZS4KKwkg Ki8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05SRUxNQVAsCisJ CQkJCQkJCSAgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJCQkJICAoRGF0 dW0pIDApOworCisJLyoKKwkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZl ZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0CisJICogbWVzc2FnZS4KKwkgKi8KKwlhcHBseV9l cnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5 Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJZWxvZyhERUJVRzEs ICJbQXBwbHkgUGFyYWxsZWwgV29ya2VyICMldV0gc3RhcnRlZCIsIHNoYXJlZC0+d29ya2VyX2lk KTsKKworCUxvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChtcWgsIHNoYXJlZCk7CisKKwlwcm9jX2V4 aXQoMCk7Cit9CisKKy8qCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNh dGluZyBhIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRoaXMg aXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVyISAgQWxsIHdlIGNhbiBkbyBpcyBzZXQg YSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSB0byBpbnZva2UKKyAqIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lk CitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVw dFBlbmRpbmcgPSB0cnVlOworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJ U2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKKy8qCisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wg bWVzc2FnZSByZWNlaXZlZCBmcm9tIGEgc2luZ2xlIGFwcGx5IHBhcmFsbGVsCisgKiB3b3JrZXIu CisgKi8KK3N0YXRpYyB2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZShBcHBseVBhcmFs bGVsV29ya2VySW5mbyAqd2luZm8sIFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7 CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQor CXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRh dGEJZWRhdGE7CisJCQkJRXJyb3JDb250ZXh0Q2FsbGJhY2sgKnNhdmVfZXJyb3JfY29udGV4dF9z dGFjazsKKworCQkJCS8qIFBhcnNlIEVycm9yUmVzcG9uc2UuICovCisJCQkJcHFfcGFyc2VfZXJy b3Jub3RpY2UobXNnLCAmZWRhdGEpOworCisJCQkJLyogRGVhdGggb2YgYSB3b3JrZXIgaXNuJ3Qg ZW5vdWdoIGp1c3RpZmljYXRpb24gZm9yIHN1aWNpZGUuICovCisJCQkJZWRhdGEuZWxldmVsID0g TWluKGVkYXRhLmVsZXZlbCwgRVJST1IpOworCisJCQkJLyoKKwkJCQkgKiBJZiBkZXNpcmVkLCBh ZGQgYSBjb250ZXh0IGxpbmUgdG8gc2hvdyB0aGF0IHRoaXMgaXMgYQorCQkJCSAqIG1lc3NhZ2Ug cHJvcGFnYXRlZCBmcm9tIGEgYXBwbHkgcGFyYWxsZWwgd29ya2VyLgorCQkJCSAqIE90aGVyd2lz ZSwgaXQgY2FuIHNvbWV0aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5kZXJzdGFuZCB3aGF0CisJCQkJ ICogYWN0dWFsbHkgaGFwcGVuZWQuCisJCQkJICovCisJCQkJaWYgKGVkYXRhLmNvbnRleHQpCisJ CQkJCWVkYXRhLmNvbnRleHQgPSBwc3ByaW50ZigiJXNcbiVzIiwgZWRhdGEuY29udGV4dCwKKwkJ CQkJCQkJCQkJIF8oImFwcGx5IHBhcmFsbGVsIHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVk YXRhLmNvbnRleHQgPSBwc3RyZHVwKF8oImFwcGx5IHBhcmFsbGVsIHdvcmtlciIpKTsKKworCQkJ CS8qCisJCQkJICogQ29udGV4dCBiZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250 ZXh0IGNhbGxiYWNrcworCQkJCSAqIHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFw cGx5TG9vcCgpLgorCQkJCSAqLworCQkJCXNhdmVfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9y X2NvbnRleHRfc3RhY2s7CisJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2Nv bnRleHRfc3RhY2s7CisKKwkJCQlUaHJvd0Vycm9yRGF0YSgmZWRhdGEpOworCisJCQkJLyogU2hv dWxkIG5vdCByZWFjaCBoZXJlIGFmdGVyIHJldGhyb3dpbmcgYW4gZXJyb3IuICovCisJCQkJZXJy b3JfY29udGV4dF9zdGFjayA9IHNhdmVfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCWJyZWFr OworCQkJfQorCisJCWNhc2UgJ1gnOgkJCQkvKiBUZXJtaW5hdGUsIGluZGljYXRpbmcgY2xlYW4g ZXhpdCAqLworCQkJeworCQkJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7 CisJCQkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IE5VTEw7CisJCQkJYnJlYWs7CisJCQl9CisK KwkJCS8qCisJCQkgKiBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGFib3V0IE5vdGljZVJlc3Bv bnNlIGFuZAorCQkJICogTm90aWZ5UmVzcG9uc2UgYXMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIGRvZXNuJ3QgbmVlZCB0bworCQkJICogc2VuZCBtZXNzYWdlcyB0byB0aGUgY2xpZW50 LgorCQkJICovCisJCWNhc2UgJ04nOgorCQljYXNlICdBJzoKKwkJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCXsKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG1lc3NhZ2UgdHlwZSByZWNl aXZlZCBmcm9tIGFwcGx5IHBhcmFsbGVsIHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5 dGVzKSIsCisJCQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7CisJCQl9CisJfQorfQorCisvKgorICog SGFuZGxlIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBhcHBseSBw YXJhbGxlbCB3b3JrZXJzLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMo dm9pZCkKK3sKKwlMaXN0Q2VsbAkgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwor CXN0YXRpYyBNZW1vcnlDb250ZXh0IGhwbV9jb250ZXh0ID0gTlVMTDsKKworCS8qCisJICogVGhp cyBpcyBpbnZva2VkIGZyb20gUHJvY2Vzc0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2Yg dGhlCisJICogZnVuY3Rpb25zIGl0IGNhbGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwKKwkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUg c2lnbmFscyBhcmUgcmVjZWl2ZWQgd2hpbGUgdGhpcyBydW5zLiAgSXQncworCSAqIHVuY2xlYXIg dGhhdCByZWN1cnNpdmUgZW50cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1 c2VmdWwKKwkgKiBldmVuIGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMg dW50aWwgZG9uZS4KKwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92 ZXIsIEN1cnJlbnRNZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVy ZS4gIFdlCisJICogZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2 ZWQgY29udGV4dHMsIHNvIGxldCdzIGRvCisJICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUg Y29udGV4dCB0aGF0IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4KKwkgKi8KKwlpZiAoaHBtX2Nv bnRleHQgPT0gTlVMTCkJLyogZmlyc3QgdGltZSB0aHJvdWdoPyAqLworCQlocG1fY29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkiSGFu ZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzIiwKKwkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9T SVpFUyk7CisJZWxzZQorCQlNZW1vcnlDb250ZXh0UmVzZXQoaHBtX2NvbnRleHQpOworCisJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocG1fY29udGV4dCk7CisKKwkvKiBPSyB0 byBwcm9jZXNzIG1lc3NhZ2VzLiAgUmVzZXQgdGhlIGZsYWcgc2F5aW5nIHRoZXJlIGFyZSBtb3Jl IHRvIGRvLiAqLworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9y ZWFjaChsYywgQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0KQorCXsKKwkJc2htX21xX3Jlc3VsdCBy ZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJQXBwbHlQYXJhbGxlbFdv cmtlckluZm8gKndpbmZvID0gKEFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7 CisKKwkJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwor CisJCXJlcyA9IHNobV9tcV9yZWNlaXZlKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMs CisJCQkJCQkJICZkYXRhLCB0cnVlKTsKKworCQlpZiAocmVzID09IFNITV9NUV9XT1VMRF9CTE9D SykKKwkJCWJyZWFrOworCQllbHNlIGlmIChyZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJ CVN0cmluZ0luZm9EYXRhIG1zZzsKKworCQkJaW5pdFN0cmluZ0luZm8oJm1zZyk7CisJCQlhcHBl bmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRhdGEsIG5ieXRlcyk7CisJCQlIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZSh3aW5mbywgJm1zZyk7CisJCQlwZnJlZShtc2cuZGF0YSk7CisJCX0KKwkJ ZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0 byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOworCisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBv biBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4dCk7CisKKwlS RVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBj b250YWlucyBhIEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQsIHBsdXMKKyAqIG9uZSByZWdpb24g dG8gZWFjaCBvZiBtZXNzYWdlIHF1ZXVlIGFuZCBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wKK3Bh cmFsbGVsX2FwcGx5X3NldHVwX2RzbShBcHBseVBhcmFsbGVsV29ya2VySW5mbyAqd2luZm8pCit7 CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpz ZWc7CisJc2htX3RvYyAgICAqdG9jOworCUFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQgKnNoYXJl ZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsK KwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisJaW50CQkJ c2VydmVyX3ZlcnNpb247CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1v cnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29z ZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0 IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtl eSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkg KiBhbm90aGVyIGtleSB0byB0cmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUu CisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3Rp bWF0ZV9jaHVuaygmZSwgc2l6ZW9mKEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQpKTsKKwlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZlLCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwg Myk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBz aGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAq LworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmIChzZWcg PT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9H SUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBz ZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBz aG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQpKTsK KwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgpOworCisJc2VydmVyX3ZlcnNpb24gPSB3YWxy Y3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CisJc2hhcmVkLT5wcm90 b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9U T19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAw MDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3Zl cnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgor CQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOworCisJc2hhcmVkLT5pbl91c2UgPSBmYWxz ZTsKKwlzaGFyZWQtPnN0cmVhbV94aWQgPSBzdHJlYW1feGlkOworCXNoYXJlZC0+d29ya2VyX2lk ID0gbGlzdF9sZW5ndGgoQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0KSArIDE7CisKKwlzaG1fdG9j X2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBT ZXQgdXAgbWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVh dGUoc2htX3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1f dG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRf c2VuZGVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+ bXFfaGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBl cnJvciBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3Rv Y19hbGxvY2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9z aXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVV RSwgbXEpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2gg dGhlIHF1ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1x LCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZv LT5kc21fc2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworLyoKKyAqIFN0YXJ0IGFwcGx5IHBhcmFsbGVsIHdvcmtlciBwcm9jZXNzIGFuZCBh bGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGZvciBpdC4KKyAqLworc3RhdGljIEFwcGx5UGFyYWxsZWxX b3JrZXJJbmZvICoKK3BhcmFsbGVsX2FwcGx5X3NldHVwX3dvcmtlcih2b2lkKQoreworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlBcHBseVBhcmFsbGVsV29y a2VySW5mbyAqd2luZm87CisJaW50CQkJbmFwcGx5d29ya2VyczsKKworCWVsb2coREVCVUcxLCAi c2V0dGluZyB1cCBhcHBseSBwYXJhbGxlbCB3b3JrZXIgJXUiLAorCQkgbGlzdF9sZW5ndGgoQXBw bHlQYXJhbGxlbFdvcmtlcnNMaXN0KSArIDEpOworCisJLyogQ2hlY2sgaWYgdGhlcmUgYXJlIGZy ZWUgd29ya2VyIHNsb3QocykuICovCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKKwluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9hcHBseV9wYXJhbGxl bF93b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5d29ya2VycyA+PSBtYXhfYXBw bHlfcGFyYWxsZWxfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCQlyZXR1cm4gTlVMTDsKKwor CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdp bmZvID0gKEFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5UGFy YWxsZWxXb3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICgh cGFyYWxsZWxfYXBwbHlfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCisJCXJldHVybiBOVUxMOworCX0K KworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtl ci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAor CQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZv LT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJCUFwcGx5UGFyYWxsZWxXb3JrZXJzTGlz dCA9IGxhcHBlbmQoQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0LCB3aW5mbyk7CisJZWxzZQorCXsK KwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsKKwkJc2htX21xX2RldGFjaCh3aW5m by0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisJCXBm cmVlKHdpbmZvKTsKKworCQl3aW5mbyA9IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHdpbmZvOworfQorCisvKgorICogU2VuZCB0aGUg ZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IHBhcmFsbGVsIHdvcmtlciB2aWEgc2hhcmVkLW1l bW9yeSBxdWV1ZS4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKEFwcGx5UGFy YWxsZWxXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCit7 CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+ bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0g U0hNX01RX1NVQ0NFU1MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90 IHNlbmQgZGF0YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAqIFdhaXQg dW50aWwgdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpcyBmcmVlIChpLmUuIGluX3VzZSBmbGFn IGlzIGZhbHNlKS4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfZnJlZShBcHBs eVBhcmFsbGVsV29ya2VySW5mbyAqd2luZm8pCit7CisJZm9yICg7OykKKwl7CisJCWJvb2wJCWlu X3VzZTsKKworCQlTcGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJaW5f dXNlID0gd2luZm8tPnNoYXJlZC0+aW5fdXNlOworCQlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5z aGFyZWQtPm11dGV4KTsKKworCQlpZiAoIWluX3VzZSkKKwkJCWJyZWFrOworCisJCS8qIElmIGFu eSB3b3JrZXJzIGhhdmUgZGllZCwgd2UgaGF2ZSBmYWlsZWQuICovCisJCWlmICh3aW5mby0+ZXJy b3JfbXFfaGFuZGxlID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi YXBwbHkgcGFyYWxsZWwgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0cmFuc2FjdGlvbiAldSIs CisJCQkJCQkJd2luZm8tPnNoYXJlZC0+d29ya2VyX2lkLCB3aW5mby0+c2hhcmVkLT5zdHJlYW1f eGlkKSkpOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkgMTAwMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BB UkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdl IGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJy dXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBNYXJrIHRoZSBjdXJyZW50IGFwcGx5 IHBhcmFsbGVsIHdvcmtlciBhcyBpZGxlLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zZXRf aWRsZSh2b2lkKQoreworCUFzc2VydChhbV9hcHBseV9wYXJhbGxlbF93b3JrZXIoKSk7CisKKwlT cGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hh cmVkLT5pbl91c2UgPSBmYWxzZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQt Pm11dGV4KTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlu IGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIGFwcGx5IHBhcmFs bGVsIHdvcmtlciBjYW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFuc2FjdGlvbiB3YXMKKyAq IHN0YXJ0ZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZl cmVudCB4aWQuIEluIHRoYXQKKyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0 aGF0IHdlIGFyZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdAorICogc2VwYXJhdGVseSBsYXRl ci4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlv bklkIGN1cnJlbnRfeGlkKQoreworCWlmIChjdXJyZW50X3hpZCAhPSBzdHJlYW1feGlkICYmCisJ CSFsaXN0X21lbWJlcl94aWQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJlbnRfeGlkKSkKKwl7CisJ CU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQlw YXJhbGxlbF9hcHBseV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50 X3hpZCwKKwkJCQkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJV RzEsICJbQXBwbHkgUGFyYWxsZWwgV29ya2VyICMldV0gZGVmaW5pbmcgc2F2ZXBvaW50ICVzIiwK KwkJCSBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHNwbmFtZSk7CisKKwkJLyogV2UgbXVz dCBiZSBpbiB0cmFuc2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8KKwkJ aWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2Nr KCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVw b2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBu ZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FW RVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFu c2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlz dCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQg bWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiBhIGFwcGx5CisgKiBw YXJhbGxlbCB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCWJvb2wgcmVhZF9h Ym9ydF9sc24pCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54aWQ7CisJVHJh bnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7CisKKwllbG9nKERFQlVHMSwg IltBcHBseSBQYXJhbGxlbCBXb3JrZXIgIyV1XSBhYm9ydGluZyBjdXJyZW50IHRyYW5zYWN0aW9u IHhpZD0ldSwgc3VieGlkPSV1IiwKKwkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCAsIEdl dEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJIEdldEN1cnJlbnRTdWJUcmFuc2FjdGlv bklkKCkpOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0 IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgor CSAqLworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fbHNuID0gYWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisJfQorCisJLyoKKwkgKiBJ ZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2 ZWwgeGFjdCwKKwkgKiBzbyBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlmIChz dWJ4aWQgPT0geGlkKQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwor CisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9j aygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNl dCgpOworCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7 CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCXBhcmFsbGVsX2FwcGx5X3NldF9pZGxlKCk7CisJ fQorCWVsc2UKKwl7CisJCS8qCisJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sg dG8gdGhlIHNhdmVwb2ludC4KKwkJICoKKwkJICogV2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1 YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldAorCQkgKiB0cmFja2VkIGZvciB0aGUgc3Vi eGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkgKi8KKwkJaW50CQkJaTsKKwkJYm9vbAkJ Zm91bmQgPSBmYWxzZTsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisKKwkJcGFyYWxsZWxf YXBwbHlfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUs CisJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgIltBcHBseSBQ YXJhbGxlbCBXb3JrZXIgIyV1XSByb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVzIiwKKwkJCSBN eVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHNwbmFtZSk7CisKKwkJZm9yIChpID0gbGlzdF9s ZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCXhpZCA9IChUcmFu c2FjdGlvbklkKSBsaXN0X250aF94aWQoc3VieGFjdGxpc3QsIGkpOworCQkJaWYgKHhpZCA9PSBz dWJ4aWQpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisK KwkJaWYgKGZvdW5kKQorCQl7CisJCQlSb2xsYmFja1RvU2F2ZXBvaW50KHNwbmFtZSk7CisJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0 ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQl9CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJfQorfQorCisvKgorICogRm9ybSB0aGUg c2F2ZXBvaW50IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0 dXJuIHRoZSBuYW1lIGluIHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3ZvaWQKK3BhcmFsbGVs X2FwcGx5X3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJ CQkJCSAgY2hhciAqc3BuYW1lLCBpbnQgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3As ICJwZ19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30KKworLyogU2V0dXAgcmVwbGljYXRpb24g b3JpZ2luIHRyYWNraW5nLiAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1 cCh2b2lkKQoreworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWNoYXIJCW9yaWdpbm5hbWVbTkFN RURBVEFMRU5dOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKworCS8qIFRoaXMgZnVuY3Rp b24gbWlnaHQgYmUgY2FsbGVkIGluc2lkZSBvciBvdXRzaWRlIG9mIHRyYW5zYWN0aW9uLiAqLwor CWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisKKwlzbnByaW50ZihvcmlnaW5uYW1lLCBz aXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0aW9uLT5vaWQpOworCW9yaWdp bmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKKwlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBv cmlnaW5pZDsKKworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKK30KKworLyogUmVzZXQgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLwordm9pZAor cGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKQoreworCWJvb2wJCXN0YXJ0ZWRf dHggPSBmYWxzZTsKKworCS8qIFRoaXMgZnVuY3Rpb24gbWlnaHQgYmUgY2FsbGVkIGluc2lkZSBv ciBvdXRzaWRlIG9mIHRyYW5zYWN0aW9uLiAqLworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkp CisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsK Kwl9CisKKwlyZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKTsKKworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp bl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3Rp bWVzdGFtcCA9IDA7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rl Y29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAx NjY3ZDcyMGIxLi5hNDM3NjgzN2U4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKQEAgLTY1Miw5ICs2NTIsMTAgQEAgRGVjb2RlQ29tbWl0KExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCXsKIAkJZm9yIChpID0gMDsg aSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKLQkJCVJlb3JkZXJCdWZmZXJGb3JnZXQo Y3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIpOworCQkJUmVv cmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+ b3JpZ3B0ciwKKwkJCQkJCQkJY29tbWl0X3RpbWUpOwogCQl9Ci0JCVJlb3JkZXJCdWZmZXJGb3Jn ZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cik7CisJCVJlb3JkZXJCdWZmZXJGb3Jn ZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0ciwgY29tbWl0X3RpbWUpOwogCiAJCXJl dHVybjsKIAl9CkBAIC04MjIsMTAgKzgyMywxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8 IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgt PnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVu ZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7 CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVj b3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQs IGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAKIAkv KiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggM2JiZDUyMjcyNC4uNTA5MTYxZDRjZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTQsNiArNTQsNyBAQAog CiBpbnQJCQltYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9z eW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfYXBwbHlfcGFyYWxs ZWxfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlM b2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtNzMsNiArNzQsNyBAQCBzdGF0aWMgdm9pZCBs b2dpY2FscmVwX2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2 b2lkIGxvZ2ljYWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRp YyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKTsKIHN0YXRpYyB2b2lkIGxvZ2lj YWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKK3N0YXRpYyB2 b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29y a2VyKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVyX3dha2V1cCA9IGZhbHNlOwog CkBAIC0xNTEsOCArMTUzLDEwIEBAIGdldF9zdWJzY3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAq IFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGlu IGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0 aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMg Ym9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5k V29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjgsMTEgKzE3MiwxMSBAQCBXYWl0Rm9yUmVwbGlj YXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0Fj cXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVp dGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkv KiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVk LiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4g d29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKQEAgLTE4Nyw3ICsxOTEsNyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2go TG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5n ZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJu IGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIwOSw2ICsyMTMsOCBAQCBXYWl0Rm9yUmVwbGljYXRp b25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRo ZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgog ICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVz dGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyLgogICov CiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBP aWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjIzLDYgKzIyOSwxMCBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykK IAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsK IAorCQkvKiBTa2lwIGFwcGx5IHBhcmFsbGVsIHdvcmtlcnMuICovCisJCWlmIChpc0FwcGx5UGFy YWxsZWxXb3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1 YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8 fCB3LT5wcm9jKSkKIAkJewpAQCAtMjU5LDExICsyNjksMTMgQEAgbG9naWNhbHJlcF93b3JrZXJz X2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5l dyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFj a2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNj ZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVz ZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1 Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtl ckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Miw3ICsyODQsMTIgQEAgbG9naWNhbHJlcF93b3Jr ZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1 c2VyaWQsCiAJaW50CQkJc2xvdCA9IDA7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVM TDsKIAlpbnQJCQluc3luY3dvcmtlcnM7CisJaW50CQkJbmFwcGx5cGFyYWxsZWx3b3JrZXJzOwog CVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlpc19zdWJ3b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAh PSBEU01fSEFORExFX0lOVkFMSUQpOworCisJLyogU2FuaXR5IGNoZWNrOiB3ZSBkb24ndCBzdXBw b3J0IHRhYmxlIHN5bmMgaW4gc3Vid29ya2VyLiAqLworCUFzc2VydCghKGlzX3N1YndvcmtlciAm JiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2lu dGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiIsCkBAIC0zNTAsNyArMzY3LDE5IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlk KHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVy bjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5hcHBseXBhcmFsbGVsd29ya2VycyA9IGxvZ2lj YWxyZXBfYXBwbHlfcGFyYWxsZWxfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0 dXJuIHNpbGVudGx5IGlmIHRoZSBudW1iZXIgb2YgYXBwbHkgcGFyYWxsZWwgd29ya2VycyByZWFj aGVkIHRoZQorCSAqIGxpbWl0IHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3N1Yndv cmtlciAmJiBuYXBwbHlwYXJhbGxlbHdvcmtlcnMgPj0gbWF4X2FwcGx5X3BhcmFsbGVsX3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtl ckxvY2spOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NCw3ICszOTMsNyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIp LAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0K IAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzc5LDYgKzQwOCw3IEBAIHJl dHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXIt PnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPSBOVUxMOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IGlzX3N1YndvcmtlciA/IE15 UHJvY1BpZCA6IEludmFsaWRQaWQ7CiAJd29ya2VyLT5sYXN0X2xzbiA9IEludmFsaWRYTG9nUmVj UHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVT VEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAtMzk2LDEwICs0MjYsMTgg QEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjsKIAliZ3cu Ymd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7CiAJc25wcmlu dGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIpOwotCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCisJaWYgKGlzX3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1l LCBCR1dfTUFYTEVOLCAiQXBwbHlQYXJhbGxlbFdvcmtlck1haW4iKTsKKwllbHNlCisJCXNucHJp bnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIp OworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJH V19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3N1YndvcmtlcikK KwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9naWNhbCByZXBs aWNhdGlvbiBhcHBseSBwYXJhbGxlbCB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1Ymlk KTsKIAllbHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CkBA IC00MDksNiArNDQ3LDkgQEAgcmV0cnk6CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlk OwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1 YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2Yo ZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZi Z3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNs ZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDYyLDExIEBAIHJldHJ5Ogog CQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJ IGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQo IllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0J CXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0 dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVy YXRpb24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRh Y2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOSAr NDc3LDUyIEBAIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiB7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsK IAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3 b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0J LyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQorCWlmICh3b3Jr ZXIpCiAJewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJu OworCQlBc3NlcnQoIWlzQXBwbHlQYXJhbGxlbFdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOwogCX0KIAorCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUgaW5wdXQgc2xvdCBudW1iZXIsCisgKiBh bmQgd2FpdCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICovCit2b2lkCitsb2dp Y2FscmVwX3dvcmtlcl9zdG9wX2J5X3Nsb3QoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9u KQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJz W3Nsb3Rfbm9dOworCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hB UkVEKTsKKworCS8qIFJldHVybiBpZiB0aGUgZ2VuZXJhdGlvbiBkb2Vzbid0IG1hdGNoIG9yIHRo ZSB3b3JrZXIgaXMgbm90IGFsaXZlLiAqLworCWlmICh3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2Vu ZXJhdGlvbiB8fAorCQl3b3JrZXItPnByb2MgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJbG9naWNh bHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOworCisJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBXb3JraG9yc2UgZm9yIGxvZ2ljYWxyZXBf d29ya2VyX3N0b3AoKSBhbmQgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKCkuIFN0b3AKKyAqIHRo ZSB3b3JrZXIgYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQorewor CXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVw V29ya2VyTG9jaykpOworCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBv dXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQogCSAqIGlzIHN0aWxsIHRo ZSBzYW1lIG9uZS4KQEAgLTQ4NSwxMCArNTU5LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChP aWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZm ZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5p bl91c2UgfHwgd29ya2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9j a1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyog V29ya2VyIGhhcyBhc3NpZ25lZCBwcm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdv cmtlci0+cHJvYykKQEAgLTUyMiw4ICs1OTMsNiBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7CiAJfQotCi0JTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7CiB9CiAKIC8qCkBAIC01OTksNiArNjY4LDI5IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFj aChpbnQgc2xvdCkKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCkK IHsKKwkvKgorCSAqIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXI7IHN0b3AgYWxsIHRo ZSBhcHBseSBwYXJhbGxlbCB3b3JrZXJzCisJICogcHJldmlvdXNseSBzdGFydGVkIGZyb20gaGVy ZS4KKwkgKi8KKwlpZiAoIWlzQXBwbHlQYXJhbGxlbFdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIp KQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0g bG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7 CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAo TG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNBcHBseVBhcmFsbGVs V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0K KworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9j ayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjEsNiArNzEzLDcgQEAgbG9naWNhbHJlcF93b3Jr ZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJ bnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQg PSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CiB9 CiAKIC8qCkBAIC02NzksNiArNzcyLDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQo T2lkIHN1YmlkKQogCXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUgbnVtYmVyIG9m IHJlZ2lzdGVyZWQgKGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVubmluZykgYXBwbHkKKyAqIHBhcmFs bGVsIHdvcmtlcnMgZm9yIGEgc3Vic2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfYXBw bHlfcGFyYWxsZWxfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJ CXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2sp KTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgYXBwbHkgcGFyYWxsZWwgd29ya2Vycywg b25seSBjb3VudGluZyB0aG9zZSB3aGljaAorCSAqIGhhdmUgdGhlIGdpdmVuIHN1YnNjcmlwdGlv biBpZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53 b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9PSBzdWJpZCAmJiBpc0FwcGx5UGFyYWxsZWxX b3JrZXIodykpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogQXBw bHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNh dGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CkBAIC04NjgsNyArOTg4LDcgQEAgQXBwbHlMYXVu Y2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGltZSA9IHdhbF9yZXRyaWV2ZV9y ZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goc3ViLT5kYmlk LCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9p ZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFORExFX0lOVkFM SUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CmluZGV4IGZmODUxM2UyZDIuLjQ3YmQ4MTFmYjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKQEAgLTExNjMsMzEgKzExNjMsNTYgQEAgbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9k YXRhKQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0IHN0cmVhbS4gTm90 ZSB0aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRoZSB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfbHNuIGlzIHRydWUsIHNl bmQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9u J3QuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g b3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQor CQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJ CQkJCQkgIGJvb2wgd3JpdGVfYWJvcnRfbHNuKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNB TF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZChzdWJ4aWQpKTsKKwlBc3NlcnQoVHJhbnNhY3Rp b25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh0eG4tPnhpZCkpOwogCiAJ LyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwotCXBxX3NlbmRp bnQzMihvdXQsIHN1YnhpZCk7CisJcHFfc2VuZGludDMyKG91dCwgdHhuLT54aWQpOworCisJaWYg KHdyaXRlX2Fib3J0X2xzbikKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJ CXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUpOworCX0KIH0KIAog LyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICog SWYgcmVhZF9hYm9ydF9sc24gaXMgdHJ1ZSwgdHJ5IHRvIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQg YWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlk LAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg KmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24pCiB7Ci0JQXNzZXJ0KHhp ZCAmJiBzdWJ4aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsKIAotCSp4aWQgPSBwcV9nZXRtc2dp bnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEt PnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0 bXNnaW50KGluLCA0KTsKKworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7CisJCWFib3J0X2RhdGEt PmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGlt ZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJv cnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAw OworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9y ZGVyYnVmZmVyLmMKaW5kZXggODljZjlmOTM4OS4uNWEyMGM3NGVlYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MzksNyArMjgz OSw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jl b3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODUwLDYgKzI4NTEsOCBAQCBSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikK IAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3Rp bWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkg dGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFt ZWQodHhuKSkKIAl7CkBAIC0yOTI0LDcgKzI5MjcsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRv IHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5Lgog ICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVz dGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTM1 LDYgKzI5MzksOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1 cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUg YWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJv cnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCmluZGV4IGQzN2Q4YTBkNzQuLmYzOGI5ZWNiNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNTY4LDcgKzU2OCw4IEBAIHByb2Nlc3Nf c3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJ CQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+ bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJ CQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJ CQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGlt ZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNzX3N5bmNp bmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vz c19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChhbV9hcHBs eV9wYXJhbGxlbF93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3Jr ZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJ ZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNWY4YzU0 MTc2My4uNDUyNmNjZWQ2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCkBAIC0yMiw4ICsyMiw0OSBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNh Y3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUg bm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVu Ci0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhl IGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9u ZSBvZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBBcHBseSBwYXJhbGxlbCB3b3JrZXJzCisg KgorICogSWYgc3RyZWFtaW5nID0gcGFyYWxsZWwsIHdlIGFzc2lnbiBhIG5ldyBhcHBseSBwYXJh bGxlbCB3b3JrZXIgKGlmCisgKiBhdmFpbGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3QncyBmaXJz dCBzdHJlYW0gaXMgcmVjZWl2ZWQuIFRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciB3aWxsIHNl bmQgY2hhbmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAg dGhpcworICogd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyBy ZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvcgorICogdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29t bWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJpbmcgYW5kIGF2b2lkcworICogZmlsZSBJ L08gaW4gbW9zdCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCB0byBhIGZpbGUgaWYgdGhl cmUgaXMgbm8KKyAqIHdvcmtlciBhdmFpbGFibGUuIEl0IGlzIGltcG9ydGFudCB0byBtYWludGFp biBjb21taXQgb3JkZXIgdG8gYXZvaWQgZmFpbHVyZXMKKyAqIGR1ZSB0byAoYSkgdHJhbnNhY3Rp b24gZGVwZW5kZW5jaWVzLCBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93IGluIHRoZSBmaXJzdAorICog dHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIHRoZW4g YWxsb3dpbmcgdG8gYXBwbHkKKyAqIGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVy ZSBpbiB0aGUgdXBkYXRlLiAoYikgZGVhZGxvY2tzLCBhbGxvd2luZworICogdHJhbnNhY3Rpb25z IHRoYXQgdXBkYXRlIHRoZSBzYW1lIHNldCBvZiByb3dzL3RhYmxlcyBpbiBvcHBvc2l0ZSBvcmRl ciB0byBiZQorICogYXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBkZWFkbG9ja3MuCisg KgorICogSWYgdGhlcmUgYXJlIGVub3VnaCBhcHBseSBwYXJhbGxlbCB3b3JrZXJzKHJlYWNoZSBo YWxmIG9mIHRoZQorICogbWF4X2FwcGx5X3BhcmFsbGVsX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlv bikgaW4gdGhlIHBvb2wsIHRoZSBuZXcgYXBwbHkgcGFyYWxsZWwKKyAqIHdvcmtlciB3aWxsIGJl IHNodXQgZG93biBhdCB0cmFuc2FjdGlvbiBlbmQuIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBhZGRl ZCB0bworICogdGhlIGZyZWUgd29ya2VyIGxpc3QuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgd2lsbCBjcmVhdGUgc2VwYXJhdGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQK KyAqIHdoZW4gZWFjaCBhcHBseSBwYXJhbGxlbCB3b3JrZXIgc3RhcnRzLiBUaGUgcmVhc29uIGZv ciB0aGlzIGRlc2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3QgY291bnQgaG93IG1hbnkgd29ya2Vy cyB3aWxsIGJlIHN0YXJ0ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5v dWdoIHNoYXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVt YmVyIG9mCisgKiBhcHBseSBwYXJhbGxlbCB3b3JrZXJzIChtYXhfYXBwbHlfcGFyYWxsZWxfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uKSwgYnV0IHRoaXMKKyAqIG1heSB3YXN0ZSBzb21lIG1lbW9y eSBpZiBubyBwcm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMg c2hhcmVkIG1lbW9yeSBzZWdtZW50IHdpbGwgY29udGFpbiAoMSkgYSBzaG1fbXEgdGhhdCBjYW4g YmUgdXNlZAorICogdG8gdHJhbnNwb3J0IGVycm9ycyAoYW5kIG90aGVyIG1lc3NhZ2VzIHJlcG9y dGVkIHZpYSBlbG9nL2VyZXBvcnQpIGZyb20gdGhlCisgKiBhcHBseSBwYXJhbGxlbCB3b3JrZXIg dG8gbGVhZGVyIGFwcGx5IHdvcmtlciAoMikgYW5vdGhlciBzaG1fbXEgdGhhdCBjYW4KKyAqIGJl IHVzZWQgdG8gdHJhbnNwb3J0IGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVy IGFwcGx5IHdvcmtlciB0bworICogYXBwbHkgcGFyYWxsZWwgd29ya2VyICgzKSBuZWNlc3Nhcnkg aW5mb3JtYXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIGFwcGx5CisgKiBwYXJhbGxlbCB3b3JrZXJz IHRvIGxlYWRlciBhcHBseSB3b3JrZXIoaS5lLiBwcm90b2NvbCB2ZXJzaW9uLCBzdHJlYW1pbmcK KyAqIHRyYW5zYWN0aW9uIElELCBpbl91c2UgZmxhZyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgTG9n aWNhbFJlcFdvcmtlciBzbG90CisgKiBpbmZvcm1hdGlvbikuCisgKgorICogMikgV3JpdGUgdG8g dGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcwor ICoKKyAqIElmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUgdG8gaGFuZGxlIHRoZSBzdHJlYW1lZCB0 cmFuc2FjdGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFu ZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQKKyAqIGFycml2ZXMu CiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5n IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0 aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9ucy4gVGhpcwpAQCAtMjE5 LDIwICsyNjAsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAJUGFydGl0 aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0aW5nIGluZm8gKi8KIH0g QXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5n IGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYgc3RydWN0IEFwcGx5RXJy b3JDYWxsYmFja0FyZworLyogV2hhdCBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9u LiAqLwordHlwZWRlZiBlbnVtCiB7Ci0JTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBp ZiBpbnZhbGlkICovCi0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisJLyogVGhlIGFjdGlv biBmb3Igbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVEFfQVBQTFlfSU5fTEVBREVS X1dPUktFUiwKIAotCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCi0JaW50CQkJcmVtb3Rl X2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLwotCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsK LQlYTG9nUmVjUHRyCWZpbmlzaF9sc247Ci0JY2hhcgkgICAqb3JpZ2luX25hbWU7Ci19IEFwcGx5 RXJyb3JDYWxsYmFja0FyZzsKKwkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z LiAqLworCVRBX1NFUklBTElaRV9UT19GSUxFLAorCVRBX0FQUExZX0lOX1BBUkFMTEVMX1dPUktF UiwKKwlUQV9TRU5EX1RPX1BBUkFMTEVMX1dPUktFUgorfSBUcmFuc2FjdGlvbkFwcGx5QWN0aW9u OwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBs eV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwK QEAgLTI0Miw3ICsyODMsOSBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBN ZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0Q2Fs bGJhY2sJKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250ZXh0 IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQg PSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMgKi8KQEAgLTI1MSwyNyArMjk0LDM1IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxT dHJlYW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwot c3RhdGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOworYm9vbCBNeVN1YnNjcmlw dGlvblZhbGlkID0gZmFsc2U7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl Owogc3RhdGljIFhMb2dSZWNQdHIgcmVtb3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRy OwogCiAvKiBmaWVsZHMgdmFsaWQgb25seSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gKi8KLXN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Citi b29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKLXN0YXRpYyBUcmFuc2FjdGlv bklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK1RyYW5zYWN0aW9uSWQgc3Ry ZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisvKgorICogVGhlIG51bWJlciBvZiBj aGFuZ2VzIHNlbnQgdG8gYXBwbHkgcGFyYWxsZWwgd29ya2VycyBkdXJpbmcgb25lIHN0cmVhbWlu ZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIgbmNoYW5nZXMgPSAwOwogCiAvKgogICog V2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQs IFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJh bnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdl IHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBh bGwgY2hhbmdlcyBvZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9u IGlzIHVwZGF0ZWQgYW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQg b3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNl cywgd2UKLSAqIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBz aW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBk dXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1p bmcgPSBvbiksCisgKiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNo YW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5n IHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBs c24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2Fj dGlvbiBvciBhcHBseWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHBy ZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5n IGxlZnQuCisgKiBiZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbnMgd2hlbiB1c2luZworICogYXBwbHkgcGFyYWxsZWwgd29ya2VycyBi ZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlCisgKiBhcHBseWluZyB0 aGUgY2hhbmdlcy4KICAqLwogc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24g PSBJbnZhbGlkWExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxp a2VseSghWExvZ1JlY1B0cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNoX2xzbikpKQpAQCAtMzI0 LDkgKzM3NSw2IEBAIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7 CiAKIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBw cm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQg YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3Rh dGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEg KmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzU5LDI4ICs0 MDcsNTIgQEAgc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGlj IHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7 CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lk IGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBs c24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2 b2lkKTsKIAorc3RhdGljIFRyYW5zYWN0aW9uQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2Fw cGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJCQkJCQkJICAgQXBwbHlQYXJh bGxlbFdvcmtlckluZm8gKip3aW5mbyk7CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBw bHkgY2hhbmdlcyBmb3IgZ2l2ZW4gcmVsYXRpb24uCiAgKgogICogVGhpcyBpcyBtYWlubHkgbmVl ZGVkIGZvciBpbml0aWFsIHJlbGF0aW9uIGRhdGEgc3luYyBhcyB0aGF0IHJ1bnMgaW4KICAqIHNl cGFyYXRlIHdvcmtlciBwcm9jZXNzIHJ1bm5pbmcgaW4gcGFyYWxsZWwgYW5kIHdlIG5lZWQgc29t ZSB3YXkgdG8gc2tpcAotICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIG1haW4gYXBwbHkgd29ya2Vy IGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgorICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9mIGEgdGFibGUuCiAgKgogICogTm90 ZSB3ZSBuZWVkIHRvIGRvIHNtYWxsZXIgb3IgZXF1YWxzIGNvbXBhcmlzb24gZm9yIFNZTkNET05F IHN0YXRlIGJlY2F1c2UKICAqIGl0IG1pZ2h0IGhvbGQgcG9zaXRpb24gb2YgZW5kIG9mIGluaXRp YWwgc2xvdCBjb25zaXN0ZW50IHBvaW50IFdBTAogICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2Yg bmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2Fj dGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9m aW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0 IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gYXBw bHkKKyAqIHBhcmFsbGVsIHdvcmtlciwgd2UgZGlzYWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBvbiBh IHRhYmxlIHRoYXQgaXMgbm90IGluCisgKiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fu bm90IGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2UKKyAqIHdvbid0IGtu b3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVj a2VkIHRoaXMgaW4gcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0 aGUKKyAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQg aXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIg ZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBp biBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9u X3JlbAorICogaW4gcGFyYWxsZWwgd2hpbGUgYXBwbHlpbmcgdGhpcyB0cmFuc2FjdGlvbi4KICAq Lwogc3RhdGljIGJvb2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJu IE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlm IChhbV9hcHBseV9wYXJhbGxlbF93b3JrZXIoKSkKKwl7CisJCWlmIChyZWwtPnN0YXRlICE9IFNV QlJFTF9TVEFURV9SRUFEWSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxs IHJlc3RhcnQiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkJIGVycmRldGFp bCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiBieSBhcHBs eSAiCisJCQkJCQkJICAgInBhcmFsbGVsIHdvcmtlcnMgdW50aWwgYWxsIHRhYmxlcyBhcmUgc3lu Y2hyb25pemVkLiIpKSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChy ZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNV QlJFTF9TVEFURV9TWU5DRE9ORSAmJgpAQCAtNDI2LDQzICs0OTgsOTAgQEAgZW5kX3JlcGxpY2F0 aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMu CisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIGFuZCB0aGUgYXBwbHkKKyAqIHBhcmFsbGVsIHdvcmtlcnMuCisgKgorICogSW4g c3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9u KSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmls ZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RS RUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gYXBwbHkKKyAqIHBhcmFsbGVs IHdvcmtlcnMgKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQ RSBjaGFuZ2VzCisgKiB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBhcHBseSBwYXJhbGxlbCB3b3JrZXJzKS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9k ZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2lt cGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KKyAqIEZvciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOwor ICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIGxlYWRlciBh cHBseSB3b3JrZXIsIGZhbHNlCisgKiBvdGhlcndpc2UuCiAgKgotICogUmV0dXJucyB0cnVlIGZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4K KyAqIEV4Y2VwdGlvbjogV2hlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBz dHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluCisgKiBwYXJhbGxlbCBtb2RlIChlLmcuIHdoZW4gYWRk cmVzc2luZyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IKKyAqIExPR0lDQUxfUkVQX01TR19U WVBFIGNoYW5nZXMpLCB0aGVuIHJldHVybiBmYWxzZS4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKndpbmZv OworCVRyYW5zYWN0aW9uQXBwbHlBY3Rpb24JYXBwbHlfYWN0aW9uOworCisJYXBwbHlfYWN0aW9u ID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCiAJ Lyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlv bikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRBX0FQUExZX0lOX0xFQURFUl9XT1JLRVIpCiAJCXJl dHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5z YWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAq IG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQp OworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlv bklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFU SU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0 cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1 YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9p bmZvX2FkZCh4aWQpOworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFSQUxMRUxf V09SS0VSKQorCXsKKwkJLyogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaWYgbmVl ZGVkLiAqLworCQlwYXJhbGxlbF9hcHBseV9zdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsK KworCQlyZXR1cm4gZmFsc2U7CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRU5E X1RPX1BBUkFMTEVMX1dPUktFUikKKwl7CisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5m bywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkgKiBYWFgg VGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRh dGUKKwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgc28gYWxz byB1cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFwcGx5IHdvcmtlciBo ZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51cF9yZWxfc3luY19jYWNoZS4KKwkJICovCisJ CWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIHx8CisJCQlhY3Rpb24gPT0g TE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJcmV0dXJuIHRydWU7 CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkKKwl7 CisJCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRv IHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJ CS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVy ZSkuICovCisJCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOwogCi0JcmV0dXJuIHRydWU7 CisJCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQlzdHJlYW1f d3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisKKwkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwl7 CisJCUFzc2VydChmYWxzZSk7CisJCXJldHVybiBmYWxzZTsJLyogc2lsZW5jZSBjb21waWxlciB3 YXJuaW5nICovCisJfQogfQogCiAvKgpAQCAtODk4LDggKzEwMTcsMTEgQEAgYXBwbHlfaGFuZGxl X3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9kYXRh KQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0aGUg RW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFuc2Fj dGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwotCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBj b21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlCZWdpblRyYW5z YWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRl cyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkgKiBVcGRhdGUg b3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9z aXRpb24KQEAgLTEwNjQsMTUgKzExODYsMTMgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBh cmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0g KiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9w ZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewog CUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCUFwcGx5UGFyYWxsZWxX b3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc2FjdGlvbkFwcGx5QWN0aW9uCWFwcGx5X2FjdGlvbjsK IAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEw ODgsMjQgKzEyMDgsNzAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8g cykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2Rh dGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBz dHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOworCWFwcGx5X2FjdGlv biA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9kYXRhLnhpZCwgJndpbmZv KTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4gKi8KLQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisJaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9BUFBMWV9JTl9QQVJBTExFTF9XT1JLRVIpCisJ eworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CiAKLQkvKiBNYXJrIHRoZSB0 cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bCgmcHJlcGFyZV9kYXRhKTsKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQu ICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOwogCi0J Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9y aWdpbl9yZXNldCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9s c24pOworCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsKIAot CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCQlwYXJhbGxlbF9hcHBseV9zZXRfaWRs ZSgpOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFfU0VORF9UT19QQVJBTExFTF9X T1JLRVIpCisJeworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJLyog U2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIu ICovCisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsK KworCQkvKgorCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBseSBwYXJhbGxl bCB3b3JrZXIsIHdhaXQgZm9yCisJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBu ZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWls dXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkgKiBkZWFkbG9ja3Mu CisJCSAqLworCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl9mcmVlKHdpbmZvKTsKKwkJcGFyYWxs ZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCQlwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtl cih3aW5mbyk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2Vz IGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCWVsb2coREVCVUcxLCAic3RyZWFt ZWQgdHJhbnNhY3Rpb24gJXUgd2FzIHByZXBhcmVkIHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdv cmtlciIsCisJCQkgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24o cHJlcGFyZV9kYXRhLmVuZF9sc24pOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFf U0VSSUFMSVpFX1RPX0ZJTEUpCisJeworCQkvKgorCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJl ZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkgKiBzcG9vbGVkIG9w ZXJhdGlvbnMuCisJCSAqLworCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54 aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rp b24gYXMgcHJlcGFyZWQuICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVw YXJlX2RhdGEpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKworCQkvKiBVbmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCXN0cmVh bV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54 aWQpOworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7CisKKwlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOworCisJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNz IGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwog CXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTEzNCw3 ICsxMzAwLDcgQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJICogT1JJR0lO IG1lc3NhZ2UgY2FuIG9ubHkgY29tZSBpbnNpZGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yIGlu c2lkZQogCSAqIHJlbW90ZSB0cmFuc2FjdGlvbiBhbmQgYmVmb3JlIGFueSBhY3R1YWwgd3JpdGVz LgogCSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwlpZiAoIWluX3N0cmVh bWVkX3RyYW5zYWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3JrZXIgPT0gTlVMTCAmJgogCQkoIWlu X3JlbW90ZV90cmFuc2FjdGlvbiB8fAogCQkgKElzVHJhbnNhY3Rpb25TdGF0ZSgpICYmICFhbV90 YWJsZXN5bmNfd29ya2VyKCkpKSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExNDksMjQgKzEzMTUs MTQgQEAgc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBz KQogewogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CisJQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKndp bmZvOworCVRyYW5zYWN0aW9uQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNP REVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUg U1RSRUFNIFNUQVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9u IG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAq IG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdo aWNoIGNhc2UgaXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0 aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRo ZSBidWZmaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBh bmQgc3VieGFjdCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQotCS8q IG5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0 aW9uICovCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwotCiAJLyogZXh0cmFjdCBY SUQgb2YgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiAqLwogCXN0cmVhbV94aWQgPSBsb2dpY2Fs cmVwX3JlYWRfc3RyZWFtX3N0YXJ0KHMsICZmaXJzdF9zZWdtZW50KTsKIApAQCAtMTE3NywzNiAr MTMzMywxMDUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRy KTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYg d2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVy YXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250 ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBm cm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3Ro ZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZp bGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdl IHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCWFwcGx5X2FjdGlvbiA9 IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCWlm IChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFSQUxMRUxfV09SS0VSKQogCXsKLQkJTWVt b3J5Q29udGV4dCBvbGRjdHg7CisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgaGFuZGxlIGFwcGx5 X2Rpc3BhdGNoIG1ldGhvZHMgYXJlIGF3YXJlIHdlJ3JlIGluIGEKKwkJICogcmVtb3RlIHRyYW5z YWN0aW9uLgorCQkgKi8KKwkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKKwl9CisJZWxz ZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFTkRfVE9fUEFSQUxMRUxfV09SS0VSKQorCXsKKwkJ QXNzZXJ0KCFmaXJzdF9zZWdtZW50KTsKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oQXBwbHlDb250ZXh0KTsKKwkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBw YWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCk7CisJCW5jaGFuZ2VzID0gMDsKKwkJZWxvZyhERUJVRzEsICJzdGFy dGluZyBzdHJlYW1pbmcgb2YgeGlkICV1Iiwgc3RyZWFtX3hpZCk7CiAKLQkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CisJCS8qIENhY2hlIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIg Zm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCXN0cmVhbV9hcHBseV93b3JrZXIgPSB3aW5mbzsK IAl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFUklBTElaRV9UT19GSUxFKQorCXsK KwkJLyoKKwkJICogRm9yIHRoZSBmaXJzdCBzdHJlYW0gc3RhcnQsIGNoZWNrIGlmIHRoZXJlIGlz IGFueSBmcmVlIGFwcGx5CisJCSAqIHBhcmFsbGVsIHdvcmtlciB3ZSBjYW4gdXNlIHRvIHByb2Nl c3MgdGhpcyB0cmFuc2FjdGlvbi4KKwkJICovCisJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJd2lu Zm8gPSBwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoc3RyZWFtX3hpZCk7CiAKLQkvKiBvcGVu IHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmls ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsK KwkJaWYgKHdpbmZvKQorCQl7CisJCQkvKgorCQkJICogSWYgd2UgaGF2ZSBmb3VuZCBhIGZyZWUg d29ya2VyLCB0aGVuIHdlIHBhc3MgdGhlIGRhdGEgdG8gdGhhdAorCQkJICogd29ya2VyLgorCQkJ ICovCisJCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7 CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBz dWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFk KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJbmNoYW5nZXMgPSAw OwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCS8q IENhY2hlIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICov CisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gd2luZm87CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KgorCQkJICogTm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUg aW4tcHJvZ3Jlc3MKKwkJCSAqIHRyYW5zYWN0aW9uLgorCQkJICovCisJCQlpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbiA9IHRydWU7CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkJLyoKKwkJ CSAqIFNpbmNlIG5vIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBm aXJzdAorCQkJICogc3RyZWFtIHN0YXJ0LCBzZXJpYWxpemUgYWxsIHRoZSBjaGFuZ2VzIG9mIHRo ZSB0cmFuc2FjdGlvbi4KKwkJCSAqCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVh bSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQgb24gdGhl IHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJCSAqIHdo aWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJ CQkgKiBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBi dWZmaWxlLAorCQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFu ZCBzdWJ4YWN0IGluZm8uCisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwor CQkJLyoKKwkJCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdl IGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwKKwkJCSAqIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVy YXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkJICogcGVybWFuZW50IGNv bnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZworCQkJICog bWVzc2FnZSBmcm9tIGFueSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5k IG90aGVyCisJCQkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0 ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0CisJCQkgKiBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0 IHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlcgorCQkJICogYmUgdXNlZC4K KwkJCSAqLworCQkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVM TCkKKwkJCXsKKwkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQkJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJ bml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCQkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCQl9CisKKwkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUg Zm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCisJCQkvKiBJZiB0 aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUu ICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CisJCX0KKwl9CisJZWxzZQorCQlBc3NlcnQoZmFsc2UpOworCisJcGdzdGF0X3JlcG9y dF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyMTUsNTggKzE0 NDAsNzQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiBzdGF0aWMg dm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsKLQlpZiAoIWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0g U1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKwlBcHBseVBhcmFsbGVsV29y a2VySW5mbyAqd2luZm87CisJVHJhbnNhY3Rpb25BcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAK LQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2Vy aWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0 cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwlhcHBseV9hY3Rp b24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAK LQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQo SXNUcmFuc2FjdGlvblN0YXRlKCkpOworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5f UEFSQUxMRUxfV09SS0VSKQorCXsKKwkJZWxvZyhERUJVRzEsICJbQXBwbHkgUGFyYWxsZWwgV29y a2VyICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssICIKKwkJCSAid2FpdGlu ZyBvbiBzaG1fbXFfcmVjZWl2ZSIsIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCk7CiAKLQkv KiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FD VElPTiwgTlVMTCk7CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRU5EX1RPX1BB UkFMTEVMX1dPUktFUikKKwl7CisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+ bGVuLCBzLT5kYXRhKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCWVs b2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcgb2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVh bWVkIiwKKwkJCSBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CiAKLQkvKiBSZXNldCBwZXItc3RyZWFt IGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQp OworCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFf U0VSSUFMSVpFX1RPX0ZJTEUpCisJeworCQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJ T04pLAorCQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUQVJUIikpKTsKKworCQkvKgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlh bGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91dCBzdWJ4 YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFjdF9pbmZv X3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlzdHJlYW1f Y2xvc2VfZmlsZSgpOworCisJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBz dGF0ZSAqLworCQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJCS8qIENvbW1pdCB0 aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJTWVtb3J5Q29udGV4dFJl c2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5 KFNUQVRFX0lETEUsIE5VTEwpOworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7CisKKwlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShT VEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0K IAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0g QUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgc3BpbGxlZCB0byBkaXNrLgog ICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklk IHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsK LQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5h bCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dp Y2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJ ZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2 ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGlu Zm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxl cyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpA QCAtMTI5MCw4ICsxNTMxLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAot CQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIp OwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzE2LDcg KzE1NTUsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNs ZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2lu Zm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0xMzM5LDYgKzE1NzcsNzYgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KK30KKworLyoKKyAqIEhhbmRsZSBT VFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0 aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwli b29sIHJlYWRfYWJvcnRfbHNuID0gZmFsc2U7CisJQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKndp bmZvOworCVRyYW5zYWN0aW9uQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJP UlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIENoZWNrIHdoZXRoZXIg dGhlIHB1Ymxpc2hlciBzZW5kcyBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUuICovCisJaWYgKGFt X2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQorCQlyZWFkX2Fib3J0X2xzbiA9IE15UGFyYWxsZWxT aGFyZWQtPnByb3RvX3ZlcnNpb24gPj0KKwkJCQkJCSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9Q QVJBTExFTF9WRVJTSU9OX05VTTsKKworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywg JmFib3J0X2RhdGEsIHJlYWRfYWJvcnRfbHNuKTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOwor CXN1YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdChzdWJ4aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJaWYgKGFwcGx5X2Fj dGlvbiA9PSBUQV9BUFBMWV9JTl9QQVJBTExFTF9XT1JLRVIpCisJCXBhcmFsbGVsX2FwcGx5X3N0 cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSwgcmVhZF9hYm9ydF9sc24pOworCWVsc2UgaWYgKGFwcGx5 X2FjdGlvbiA9PSBUQV9TRU5EX1RPX1BBUkFMTEVMX1dPUktFUikKKwl7CisJCWlmIChzdWJ4aWQg PT0geGlkKQorCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCS8qIFNl bmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlci4gKi8K KwkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJ CS8qCisJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IHBhcmFsbGVsIHdv cmtlciwgd2FpdCBmb3IKKwkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vz c2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVz IGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCSAqIGRlYWRsb2Nrcy4KKwkJ ICovCisJCWlmIChzdWJ4aWQgPT0geGlkKQorCQl7CisJCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zv cl9mcmVlKHdpbmZvKTsKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKwkJ CXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZvKTsKKworCQkJZWxvZyhERUJVRzEsICJz dHJlYW1lZCB0cmFuc2FjdGlvbiAldSB3YXMgYWJvcnRlZCB1c2luZyBhbiBhcHBseSBwYXJhbGxl bCB3b3JrZXIiLAorCQkJCSB4aWQpOworCQl9CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9 PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkKKwl7CisJCS8qCisJCSAqIFdlIGFyZSBpbiBsZWFkZXIg YXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJICogc2VyaWFsaXpl ZCB0byBmaWxlLgorCQkgKi8KKwkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7 CisJfQorCWVsc2UKKwkJQXNzZXJ0KGZhbHNlKTsKIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfaW5mbygpOwogfQpAQCAtMTQ3MCw2ICsxNzc4LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBD b21taXREYXRhIGNvbW1pdF9kYXRhOworCUFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc2FjdGlvbkFwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTE0NzksMTQgKzE3ODksNjcgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCXhpZCA9IGxvZ2ljYWxy ZXBfcmVhZF9zdHJlYW1fY29tbWl0KHMsICZjb21taXRfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdCh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCi0JZWxvZyhERUJV RzEsICJyZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsK KwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZv KTsKKworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFSQUxMRUxfV09SS0VSKQor CXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwogCi0JYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCQlhcHBseV9oYW5kbGVf Y29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2lu dGVybmFsKCZjb21taXRfZGF0YSk7CisJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQo KTsKKworCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKwor CQlwYXJhbGxlbF9hcHBseV9zZXRfaWRsZSgpOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24g PT0gVEFfU0VORF9UT19QQVJBTExFTF9XT1JLRVIpCisJeworCQlwYXJhbGxlbF9hcHBseV9yZXBs b3JpZ2luX3Jlc2V0KCk7CisKKwkJLyogU2VuZCBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhl IGFwcGx5IHBhcmFsbGVsIHdvcmtlci4gKi8KKwkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdp bmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCS8qCisJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRh dGEgdG8gdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlciwgd2FpdCBmb3IKKwkJICogdGhhdCB3b3Jr ZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJICog b3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNp ZXMgYW5kCisJCSAqIGRlYWRsb2Nrcy4KKwkJICovCisJCXBhcmFsbGVsX2FwcGx5X3dhaXRfZm9y X2ZyZWUod2luZm8pOworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CiAKLQkv KiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGlu Zm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQlzdG9yZV9mbHVzaF9wb3NpdGlv bihjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJc3RvcF9za2lwcGluZ19jaGFuZ2VzKCk7CisKKwkJ cGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2luZm8pOworCisJCWVsb2coREVCVUcxLCAic3Ry ZWFtZWQgdHJhbnNhY3Rpb24gJXUgd2FzIGNvbW1pdHRlZCB1c2luZyBhbiBhcHBseSBwYXJhbGxl bCB3b3JrZXIiLAorCQkJIHhpZCk7CisKKwkJLyoKKwkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVp dGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCSAqIHN1YnNraXBs c24uCisJCSAqLworCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29t bWl0X2xzbik7CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9f RklMRSkKKwl7CisJCS8qCisJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVk IHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ ICovCisJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNu KTsKKworCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJ LyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBp bmZvLiAqLworCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCB4aWQpOworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0 YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nl c3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CkBAIC0xNTMwLDYgKzE4OTMs MTMgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAq Y29tbWl0X2RhdGEpCiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29t bWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2Nr KGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0 X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0 YS0+ZW5kX2xzbik7CkBAIC0yNDY3LDcgKzI4MzcsNyBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUo U3RyaW5nSW5mbyBzKQogLyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2Fn ZSBkaXNwYXRjaGVyLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3Ry aW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUo cyk7CkBAIC0yNjM2LDYgKzMwMDYsMTAgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0 ciByZW1vdGVfbHNuKQogewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyogU2tpcCBp ZiBub3QgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfcGFyYWxsZWxf d29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQg Y29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0y NjUwLDcgKzMwMjQsNyBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pCiAKIAogLyogVXBkYXRlIHN0YXRpc3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3Rh bXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVwbHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0 X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjcwMCw2ICszMDc0LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9v cChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBs eV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRf c3RhY2s7CiAJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlhcHBseV9lcnJv cl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRoaXMgb3V0ZXIg bG9vcCBpdGVyYXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0yOTE0LDYgKzMy ODksNyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAog CS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sg PSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJy b3JfY29udGV4dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2VuZHN0cmVhbWlu ZyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMxMTQsNyArMzQ5MCw3IEBAIG1h eWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIC8qCiAgKiBDYWxsYmFjayBmcm9tIHN1YnNj cmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBz dWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwpAQCAtMzU2OSwzNyArMzk0 NSwxNCBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAlQR19FTkRf VFJZKCk7CiB9CiAKLS8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBv aW50ICovCisvKgorICogSW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiwgaW4tbWVt b3J5IHN1YnNjcmlwdGlvbiBhbmQgbmVjZXNzYXJ5CisgKiBjb25maWcgb3B0aW9ucy4KKyAqLwog dm9pZAotQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQorSW5pdGlhbGl6ZUFwcGx5V29y a2VyKHZvaWQpCiB7Ci0JaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJn KTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVO XTsKLQlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOwotCWNo YXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOwotCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsK LQlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKLQotCS8qIEF0dGFjaCB0byBzbG90ICovCi0JbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKLQotCS8qIFNldHVwIHNpZ25hbCBoYW5k bGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7 Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25h bHMoKTsKLQotCS8qCi0JICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3du ZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKLQkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxk IGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KLQkgKi8KLQotCS8qIElu aXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KLQlNeUxvZ2ljYWxSZXBXb3JrZXIt Pmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9Ci0J CU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsK LQotCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwotCWxvYWRfZmlsZSgi bGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAogCS8qIFJ1biBhcyByZXBsaWNhIHNlc3Npb24g cmVwbGljYXRpb24gcm9sZS4gKi8KIAlTZXRDb25maWdPcHRpb24oInNlc3Npb25fcmVwbGljYXRp b25fcm9sZSIsICJyZXBsaWNhIiwKQEAgLTM2NTksMTIgKzQwMTIsNTAgQEAgQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlv biBcIiVzXCIsIHRhYmxlIFwiJXNcIiBoYXMgc3RhcnRlZCIsCiAJCQkJCQlNeVN1YnNjcmlwdGlv bi0+bmFtZSwgZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOworCWVs c2UgaWYgKGFtX2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQorCQllcmVwb3J0KExPRywKKwkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uIFwiJXNcIiBoYXMgc3RhcnRlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFt ZSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwK IAkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7Cit9CisKKy8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBv aW50ICovCit2b2lkCitBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJ d29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1l W05BTUVEQVRBTEVOXTsKKwlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9n UmVjUHRyOworCWNoYXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlv bnMgb3B0aW9uczsKKwlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90 ICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVw IHNpZ25hbCBoYW5kbGluZyAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNv bmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2Vy VW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55 IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBk aWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkg Ki8KKworCS8qIEluaXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3Jl Y3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRU aW1lc3RhbXAoKTsKKworCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwor CWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBs eVdvcmtlcigpOwogCiAJLyogQ29ubmVjdCB0byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVw bGljYXRpb24uICovCiAJZWxvZyhERUJVRzEsICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2lu ZyBjb25uZWN0aW9uIHN0cmluZyBcIiVzXCIiLApAQCAtMzY4Nyw3ICs0MDc4LDcgQEAgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1h aW4gYXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgbGVhZGVyIGFwcGx5IHdvcmtlciAqLwog CQlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50VExJOwogCQlj aGFyCSAgICplcnI7CkBAIC0zNzUxLDEzICs0MTQyLDE0IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExv Z1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJz aW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBM T0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24g Pj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJ Q0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1Ymxp Y2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnBy b3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnBy b3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VC U1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJ b3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9y aWdpbik7CiAKQEAgLTM4NTQsNiArNDI0NiwxNSBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAly ZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9IE5VTEw7CiB9CiAKKy8qCisgKiBJcyBjdXJyZW50 IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHBhcmFsbGVsIHdvcmtlcj8KKyAq LworYm9vbAorSXNMb2dpY2FsQXBwbHlQYXJhbGxlbFdvcmtlcih2b2lkKQoreworCXJldHVybiBh bV9hcHBseV9wYXJhbGxlbF93b3JrZXIoKTsKK30KKwogLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNo YW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAq IExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KQEAgLTM5MTYsNyArNDMx Nyw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24p CiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29s CQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikp IHx8CisJCWFtX2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAoIUlz VHJhbnNhY3Rpb25TdGF0ZSgpKQpAQCAtMzk4OCw3ICs0MzkwLDcgQEAgY2xlYXJfc3Vic2NyaXB0 aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2FsbGJh Y2sgdG8gZ2l2ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFwcGxp ZWQgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcp CiB7CiAJQXBwbHlFcnJvckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2FsbGJh Y2tfYXJnOwpAQCAtNDAxNiwyMyArNDQxOCw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lk ICphcmcpCiAJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1BVF9B UkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90ZV9h dHRudW0gPCAwKQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdl dCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgi LAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5z cG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVy cmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hf bHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRh cmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBm aW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJl bG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJl bW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVf YXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5p c2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdl dCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRh dGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGlj YXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hl ZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9n aWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu cmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JN QVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChY TG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgi cHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJp bmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVt biBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFt ZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJ CQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs LmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90 ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRp b24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9u ICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJ CQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwt PnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRu YW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlk LAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJ fQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2Fs bGJhY2sgKi8KQEAgLTQwNTIsMyArNDQ3OCwyNSBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0x OwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIElu dmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIHRha2Ug Zm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gQWxzbyByZXR1cm4gdGhlIGFwcGx5CisgKiBwYXJh bGxlbCB3b3JrZXIgaW5mb3JtYXRpb24gaWYgdGhlIGFjdGlvbiBpcyBUQV9TRU5EX1RPX1BBUkFM TEVMX1dPUktFUi4KKyAqLworc3RhdGljIFRyYW5zYWN0aW9uQXBwbHlBY3Rpb24KK2dldF90cmFu c2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIEFwcGx5UGFyYWxsZWxXb3Jr ZXJJbmZvICoqd2luZm8pCit7CisJaWYgKGFtX2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQorCQly ZXR1cm4gVEFfQVBQTFlfSU5fUEFSQUxMRUxfV09SS0VSOworCWVsc2UgaWYgKGluX3JlbW90ZV90 cmFuc2FjdGlvbikKKwkJcmV0dXJuIFRBX0FQUExZX0lOX0xFQURFUl9XT1JLRVI7CisKKwkvKgor CSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgcGFyYWxsZWwKKwkgKiB3b3JrZXIgYW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRv IHRoYXQgd29ya2VyLgorCSAqLworCWVsc2UgaWYgKCgqd2luZm8gPSBwYXJhbGxlbF9hcHBseV9m aW5kX3dvcmtlcih4aWQpKSkKKwkJcmV0dXJuIFRBX1NFTkRfVE9fUEFSQUxMRUxfV09SS0VSOwor CWVsc2UKKwkJcmV0dXJuIFRBX1NFUklBTElaRV9UT19GSUxFOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNjJlMGZmZWNkOC4uZDNmMTliODA1 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0x ODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9y ZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0 YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sIHdyaXRlX2Fib3J0X2xzbiA9 IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49CisJCQkJCQkJTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhh cHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTYs NyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91 dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBf d3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24s CisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNuKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRy dWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDIxYTlmYzBmZGQuLjljZDU0Mjg3YjYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNp bmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRp dGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC02NTcsNiArNjU4 LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNr UHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCUhhbmRsZUxvZ01lbW9y eUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJB TExFTF9BUFBMWV9NRVNTQUdFKSkKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1 cHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9E QVRBQkFTRSkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9EQVRBQkFTRSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCA3YmVjNGU0ZmY1Li5mYjdi ZDk4MDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0zMzc3LDYgKzMzNzcsOSBAQCBQcm9jZXNzSW50 ZXJydXB0cyh2b2lkKQogCiAJaWYgKExvZ01lbW9yeUNvbnRleHRQZW5kaW5nKQogCQlQcm9jZXNz TG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOworCisJaWYgKFBhcmFsbGVsQXBwbHlNZXNzYWdl UGVuZGluZykKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggOTJmMjRhNmM5Yi4uYzk2NjQ3 YzRlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzg4LDYg KzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJ VF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFz aEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJ Q0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNh bFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5U X0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCA5ZmJiZmIxYmU1Li4wZmYyMWM1N2M4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMyMjIsNiArMzIyMiwxOCBAQCBzdGF0aWMgc3RydWN0IGNv bmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAog CisJeworCQl7Im1heF9hcHBseV9wYXJhbGxlbF93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iLAor CQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0dGV4dF9u b29wKCJNYXhpbXVtIG51bWJlciBvZiBhcHBseSBwYXJhbGxlbCB3b3JrZXJzIHBlciBzdWJzY3Jp cHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X2FwcGx5X3BhcmFsbGVsX3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tFTkRTLAorCQlOVUxMLCBOVUxMLCBO VUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lO R19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2Fp dCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKaW5kZXggOTBiZWMwNTAyYy4uN2ZkNTQ4NDM1ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzYwLDYgKzM2MCw3IEBA CiAjbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93 b3JrZXJfcHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9z eW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2Fs X3JlcGxpY2F0aW9uX3dvcmtlcnMKKyNtYXhfYXBwbHlfcGFyYWxsZWxfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cwogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGQyNTcwOWFkNWYu LjEzYzhlMTBiNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ4MCw3ICs0NDgwLDcgQEAgZ2V0U3Vic2Ny aXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAw MCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAll bHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxc biIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxu Iik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDYxNyw4ICs0NjE3LDEwIEBAIGR1bXBTdWJzY3JpcHRpb24o QXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3Ry Y21wKHN1YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJz dHJlYW0sICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9 PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsK KwllbHNlIGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwogCiAJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9 IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggN2I5ODcxNGYzMC4uMjMyZTY2 Yjk5OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4 IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkg QktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBp ZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2Vu ZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25z dGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNl IHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vi c2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0 aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBz dWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0J Ym9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8K IAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5z YWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJz Y3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYg YSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2Ny aXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwog CisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2Rl ZmluZSBTVUJTVFJFQU1fT0ZGICdmJworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGll ZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisg Ki8KKyNkZWZpbmUgU1VCU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEgYW4gYXBwbHkKKyAq IHBhcmFsbGVsIHdvcmtlci4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3AnCisK IGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlz c2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAqc3Vi KTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3BnX2xpc3QuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BnX2xp c3QuaAppbmRleCBhNmUwNGQwNGEzLi5jNDI1M2E3NzJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wZ19saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGdfbGlzdC5oCkBAIC0z MjIsNiArMzIyLDE3IEBAIGxpc3RfbnRoX29pZChjb25zdCBMaXN0ICpsaXN0LCBpbnQgbikKIAly ZXR1cm4gbGZpcnN0X29pZChsaXN0X250aF9jZWxsKGxpc3QsIG4pKTsKIH0KIAorLyoKKyAqIFJl dHVybiB0aGUgVHJhbnNhY3Rpb25JZCB2YWx1ZSBjb250YWluZWQgaW4gdGhlIG4ndGggZWxlbWVu dCBvZiB0aGUKKyAqIHNwZWNpZmllZCBsaXN0LgorICovCitzdGF0aWMgaW5saW5lIFRyYW5zYWN0 aW9uSWQKK2xpc3RfbnRoX3hpZChjb25zdCBMaXN0ICpsaXN0LCBpbnQgbikKK3sKKwlBc3NlcnQo SXNBKGxpc3QsIFhpZExpc3QpKTsKKwlyZXR1cm4gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKGxp c3QsIG4pKTsKK30KKwogI2RlZmluZSBsaXN0X250aF9ub2RlKHR5cGUsbGlzdCxuKQljYXN0Tm9k ZSh0eXBlLCBsaXN0X250aChsaXN0LCBuKSkKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFlMjgyMWUyNS4uY2JlYTNkZTM3MSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKQEAgLTE0LDYgKzE0LDcgQEAKIAog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOwog ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247 CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9hcHBseV9wYXJhbGxlbF93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsK IGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uMjBiOWFiYmFhMyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwxNyBA QAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhlIG1p bmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2UgY29t bWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisgKgor ICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhlIG1p bmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2l0aCBzdXBwb3J0IGZvciBzdHJlYW1pbmcgbGFy Z2UgdHJhbnNhY3Rpb25zIHVzaW5nIGFwcGx5IHBhcmFsbGVsCisgKiB3b3JrZXJzLiBJbnRyb2R1 Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NSU5fVkVSU0lPTl9O VU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmluZSBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhf VkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTQorI2RlZmlu ZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA0CisjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAg LTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFy ZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVw YXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBm b3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJ WExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNh bFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdp bihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBC ZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMiBAQCBleHRlcm4gdm9pZCBs b2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBvdXQsCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVwQ29tbWl0RGF0 YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJv cnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJCSAgVHJhbnNh Y3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJ CQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIGJvb2wgd3JpdGVfYWJv cnRfbHNuKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0 YSwKKwkJCQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2xzbik7CiBleHRlcm4gY2hhciAqbG9naWNh bHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJ CQkJCS8qIExPR0lDQUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdv cmtlci5oCmluZGV4IGNkMWI2ZThhZmMuLmE0ZTE2ZmE0NjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEyLDggKzEyLDE0IEBACiAjaWZuZGVmIExPR0lDQUxX T1JLRVJfSAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAorZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIGJvb2wgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOworCiBleHRlcm4gdm9pZCBB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlQYXJhbGxl bFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3Jr ZXIodm9pZCk7CitleHRlcm4gYm9vbCBJc0xvZ2ljYWxBcHBseVBhcmFsbGVsV29ya2VyKHZvaWQp OworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7 CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCk7CiAKICNlbmRp ZgkJCQkJCQkvKiBMT0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaAppbmRleCA4Njk1OTAxYmE3Li5hNzRiNjE2ZWZmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDEsNiArMzAxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRp bWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJ eGFjdF90aW1lOwogCiAJLyoKQEAgLTY1OCw5ICs2NTksMTEgQEAgZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhp ZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICos IFRyYW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbik7CiBl eHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0Q2hpbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFu c2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgY29tbWl0X2xz biwgWExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChS ZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2 b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25J ZCB4aWQpOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICos IFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwK KwkJCQkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVm ZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIg bHNuKTsKIAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlclNldEJhc2VTbmFwc2hvdChSZW9yZGVy QnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuLCBzdHJ1Y3QgU25hcHNob3RE YXRhICpzbmFwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5k ZXggOTAxODQ1YWJjMi4uMDllZjQ5MTllZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dk ZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJk YXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJy ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQu aCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5o IgogCiAKQEAgLTYwLDYgKzY0LDEyIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIK IAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxl YWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFwcGx5IHBhcmFs bGVsCisJICogd29ya2VyLCBJbnZhbGlkUGlkIG90aGVyd2lzZS4KKwkgKi8KKwlwaWRfdAkJCWFw cGx5X2xlYWRlcl9waWQ7CisKIAkvKiBTdGF0cy4gKi8KIAlYTG9nUmVjUHRyCWxhc3RfbHNuOwog CVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgsOCArNzgsNzQgQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9IExvZ2lj YWxSZXBXb3JrZXI7CiAKKy8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkg ZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxi YWNrQXJnCit7CisJTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICov CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisKKwkvKiBSZW1vdGUgbm9kZSBpbmZvcm1h dGlvbiAqLworCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KKwlUcmFu c2FjdGlvbklkIHJlbW90ZV94aWQ7CisJWExvZ1JlY1B0cglmaW5pc2hfbHNuOworCWNoYXIJICAg Km9yaWdpbl9uYW1lOworfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CisKKy8qCisgKiBTdHJ1Y3Qg Zm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBhcHBseSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBhcHBseQorICogcGFyYWxsZWwgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBw bHlQYXJhbGxlbFdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwlib29sCWluX3Vz ZTsKKworCS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lvbi4gKi8KKwl1aW50MzIJcHJvdG9fdmVy c2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hpZDsKKworCS8qIElEIG9mIGFwcGx5IHBh cmFsbGVsIHdvcmtlciAqLworCXVpbnQzMgl3b3JrZXJfaWQ7CisKKwkvKiBJbmZvcm1hdGlvbiBm cm9tIHRoZSBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdCAqLworCXVpbnQxNgkJ CQkJbG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKKworCWludAkJCQkJCWxvZ2ljYWxyZXBf d29ya2VyX3Nsb3Rfbm87Cit9IEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJ bmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgYXBwbHkgcGFyYWxsZWwgd29y a2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBBcHBseVBhcmFsbGVsV29ya2VySW5mbworeworCXNo bV9tcV9oYW5kbGUJCQkqbXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0 cmFuc2ZlciBtZXNzYWdlcyBmcm9tIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIgdG8KKwkgKiB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4gTlVMTCBpZiB0aGUgYXBwbHkgcGFyYWxsZWwgd29ya2Vy IGV4aXRlZAorCSAqIGNsZWFubHkuCisJICovCisJc2htX21xX2hhbmRsZQkJCSplcnJvcl9tcV9o YW5kbGU7CisKKwlkc21fc2VnbWVudAkJCQkqZHNtX3NlZzsKKworCUFwcGx5UGFyYWxsZWxXb3Jr ZXJTaGFyZWQgdm9sYXRpbGUJKnNoYXJlZDsKK30gQXBwbHlQYXJhbGxlbFdvcmtlckluZm87CisK IC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmlu ZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBB cHBseUNvbnRleHQ7CitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3Nh Z2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sJKmFw cGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlFcnJvckNh bGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxl IEFwcGx5UGFyYWxsZWxXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTaGFyZWQ7CisKK2V4dGVybiBQ R0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlzdDsKIAogLyogbGlicHFyZWNlaXZlciBjb25uZWN0 aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVw V29ya2VyV2FsUmN2Q29ubjsKQEAgLTc5LDE4ICsxNTUsMjQgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb247CiBleHRlcm4gUEdETExJTVBPUlQgTG9naWNh bFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9v bCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9zdHJl YW1lZF90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBUcmFuc2FjdGlvbklkIHN0cmVh bV94aWQ7CitleHRlcm4gUEdETExJTVBPUlQgQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKnN0cmVh bV9hcHBseV93b3JrZXI7CiAKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChp bnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmlu ZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsK IGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25s eV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJp ZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQs IE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRi aWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlk LCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcF9ieV9zbG90KGludCBzbG90X25vLCB1aW50 MTYgZ2VuZXJhdGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lk IHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVw X3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxyZXBf c3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9hcHBs eV9wYXJhbGxlbF93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZvaWQgUmVwbGlj YXRpb25PcmlnaW5OYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJ CQkJCQkJICBjaGFyICpvcmlnaW5uYW1lLCBpbnQgc3pvcmduYW1lKTsKQEAgLTEwMywxMCArMTg1 LDQ3IEBAIGV4dGVybiB2b2lkIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbik7CiBleHRlcm4gdm9pZCBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzKERh dHVtIGFyZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJCXVpbnQzMiBoYXNodmFsdWUpOwogCitl eHRlcm4gdm9pZCBVcGRhdGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3Rh bXBUeiBzZW5kX3RpbWUsCisJCQkJCQkJICBib29sIHJlcGx5KTsKKworZXh0ZXJuIHZvaWQgYXBw bHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5 V29ya2VyKHZvaWQpOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8K K2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisKK2V4dGVybiB2 b2lkIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSk7CisKKy8qIEFwcGx5IHBhcmFsbGVsIHdvcmtlciBzZXR1cCBhbmQgaW50ZXJh Y3Rpb25zICovCitleHRlcm4gQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKnBhcmFsbGVsX2FwcGx5 X3N0YXJ0X3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gQXBwbHlQYXJhbGxlbFdv cmtlckluZm8gKnBhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsK K2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NldF9pZGxlKHZvaWQpOworZXh0ZXJuIHZvaWQg cGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIoQXBwbHlQYXJhbGxlbFdvcmtlckluZm8gKndpbmZv KTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX2ZyZWUoQXBwbHlQYXJhbGxl bFdvcmtlckluZm8gKndpbmZvKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0 YShBcHBseVBhcmFsbGVsV29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJ IGNvbnN0IHZvaWQgKmRhdGEpOworCitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9zdWJ4YWN0 X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworZXh0ZXJuIHZvaWQgcGFyYWxs ZWxfYXBwbHlfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2Rh dGEsCisJCQkJCQkJCQkJYm9vbCByZWFkX2Fib3J0X2xzbik7CitleHRlcm4gdm9pZCBwYXJhbGxl bF9hcHBseV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkJ ICBjaGFyICpzcG5hbWUsIGludCBzenNwKTsKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3Jl cGxvcmlnaW5fc2V0dXAodm9pZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3Jp Z2luX3Jlc2V0KHZvaWQpOworCisjZGVmaW5lIGlzQXBwbHlQYXJhbGxlbFdvcmtlcih3b3JrZXIp ICh3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGlu ZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQo TXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1f YXBwbHlfcGFyYWxsZWxfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzQXBwbHlQYXJhbGxlbFdv cmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lO VEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MDBmMy4uZjc1 NjJkNzQzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRl cnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGds b2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwg LyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BB UkFMTEVMX0FQUExZX01FU1NBR0UsCS8qIE1lc3NhZ2UgZnJvbSBhcHBseSBwYXJhbGxlbCB3b3Jr ZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dh aXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2ZjJkNTYx MmUwLi5iMmNkZDU1NGUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMDUsNiArMTA1LDcg QEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwK IAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9H Uk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGVmMGViZjk2 YjkuLjk5YjllODY3ZTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQKQEAgLTIxNyw5ICsyMTcsOSBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCist LSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBz dHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZh bHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFs bGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRl c3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6 ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIg U1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0aGUgdGFi bGVzCkBAIC0yMzAsNiArMjMwLDE0IEBAIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2Ny aWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uCiAgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CitcZFJzKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgcCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKygxIHJvdykKKwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2Ny aXB0aW9uLnNxbAppbmRleCA0NDI1ZmFmYzQ2Li5lZDE0OGU0YmQ0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE1Niw3ICsxNTYsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJv b2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcK IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0g ZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBpdCB3b3JrcwpAQCAtMTY0LDYgKzE2 NCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBcZFJzKwogCitBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworCitcZFJz KworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g ZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFt ZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDhhZDExMmM0NGQuLjRm YTNmNzQ3NjYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cisr KyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTgsNiArMTE4LDkgQEAg QXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlF eGVjdXRpb25EYXRhCitBcHBseVBhcmFsbGVsV29ya2VyRW50cnkKK0FwcGx5UGFyYWxsZWxXb3Jr ZXJJbmZvCitBcHBseVBhcmFsbGVsV29ya2VyU2hhcmVkCiBBcHBseVN1YlhhY3REYXRhCiBBcmNo aXZlCiBBcmNoaXZlQ2hlY2tDb25maWd1cmVkQ0IKQEAgLTE0ODUsNiArMTQ4OCw3IEBAIExvZ2lj YWxSZXBSZWxJZAogTG9naWNhbFJlcFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExv Z2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0 YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgot LSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v25-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v25-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v25-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76988; creation-date="Mon, 29 Aug 2022 11:31:00 GMT"; modification-date="Mon, 29 Aug 2022 11:31:39 GMT" Content-Transfer-Encoding: base64 RnJvbSA2ZDk4MDJmYmI2ZmNlOWJhZjAwMzZkM2IzMmU2YzVmZmZhMzM5MzRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjUg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjMzICsrKysr LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAxNDQg KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDIy MiArKysrLS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAg fCAyMzQgKysrKystLS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAg ICAgICB8IDEzNSArKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsICAgIHwgMzk1ICsrKysrKysrLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsICAgICB8IDU0MSArKysrKysrKysrKy0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgMTI1OSBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uNWMwMDZjODNlMiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTUwIEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBhcHBseSBwYXJhbGxl bCB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJhbGxlbF9t ZXNzYWdlID0gJyc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVsX21lc3Nh Z2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAn IHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKwor IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4g Ym90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2Vz Lgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBh IHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlt eSAkaW4gID0gJyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAk dGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7 CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVs Iiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBw bGllZCB1c2luZyBhbiBhcHBseSBwYXJhbGxlbCB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJ IyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2Vz ID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSRpbiAuPSBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwl9OworCSRo LT5wdW1wX25iOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOworCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiA1MDAwOworCUNPTU1JVDsKKwl9KTsKKworCSRpbiAuPSBxeworCUNP TU1JVDsKKwlccQorCX07CisJJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0 ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0dGVkIik7CisKKwlteSAkcmVzdWx0 ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5 IG1vZGUKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tf cGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNv bW1pdHRlZCIpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdj aGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdl IHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIs CisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMg dGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0 cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIx ICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOworCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAorCQkn Y2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7CisKKwkj IENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3 YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRl IHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE4MSwxMCBAQCAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBG T1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUg J29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBV QkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDgyICsx OTcsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNr IGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnRlcmxlYXZl IGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0Lgot bXkgJGluICA9ICcnOwotbXkgJG91dCA9ICcnOwotCi1teSAkdGltZXIgPSBJUEM6OlJ1bjo6dGlt ZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7Ci0KLW15ICRo ID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRv dXQsICR0aW1lciwKLQlvbl9lcnJvcl9zdG9wID0+IDApOwotCi0kaW4gLj0gcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLX07Ci0kaC0+cHVtcF9uYjsKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7Ci1DT01NSVQ7Ci19KTsKLQotJGluIC49IHF7Ci1D T01NSVQ7Ci1ccQotfTsKLSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVz dCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCi0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAn Y2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAot IyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKLSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2 NjY3fDY2Njd8NjY2NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCispOwog Ci0jIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBz dWJzY3JpYmVyLAotIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVy IHJldGFpbnMgdGhlIGV4cGVjdGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBu b24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24uCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2 NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgotKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFy eSA9IG9mZikiKTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBv ciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFm dGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0 KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi IgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCBiYzBhOWNkMDUzLi40ZDkyM2Ey NzNhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1Ynhh Y3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBs CkBAIC04LDYgKzgsOTUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9n IHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 CisjIHJlcG9ydGVkIGJ5IGFwcGx5IHBhcmFsbGVsIHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxl bF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAk YWN0aW9uKT0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAnJzsKKworCWlmICgkaXNfcGFy YWxsZWwpCisJeworCQkkcGFyYWxsZWxfbWVzc2FnZSA9IGpvaW4oIiIsICdzdHJlYW1lZCB0cmFu c2FjdGlvbiBcZCsgd2FzICcsICRhY3Rpb24sICcgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwgd29y a2VyJyk7CisKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9t ZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9u IHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVy IHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFu ZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFs bGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFt ZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhh dCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhbiBhcHBseSBwYXJhbGxl bCB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2Vz IGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJ VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMSwgMjUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl ciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+ IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9 Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyNiwxMCBA QCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFw X3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBU SU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgog KTsKQEAgLTQ5LDQxICsxNDIsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsK IAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtC IGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcyggICAgMywgIDUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsICAyMDAwKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0 byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxs ZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAg KQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDg2NmYxNTEyZTQuLjg1ZDNmMGQ4YjYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04LDYgKzgsMTM5 IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBi eSBhcHBseSBwYXJhbGxlbCB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOwor CW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdh cyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlcicpOworCisJCSRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZz ZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdo aWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBj b2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5n PXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwor CW15ICRvZmZzZXQgPSAwOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgz Ojp0ZXh0KSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCks IC00KTsKKwlDT01NSVQ7CisJfSk7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhbiBhcHBseSBwYXJhbGxlbCB3b3JrZXIu CisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkg cyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lO VCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09NTUlUOworCX0p OworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwg LTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUo MjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29t bWl0dGVkIik7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNv dW50KGUpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwx KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBt b2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRl ciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRl c3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBz Y2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisK KwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMg anVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxl Y3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJjb21t aXR0ZWQiKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwg Y291bnQoZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0 MDA1fDMwMDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3Ig Ym90aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkj IENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xV TU4gZSwgRFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzcsNiArMTcwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNzcgKzE4NiwyNiBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6 dGV4dCkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lO VCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7 Ci1DT01NSVQ7Ci19KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1C RUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAy MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEs IG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09N TUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBw ZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNj aGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhh cyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAw MCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7 Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBU aGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRv IHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCpp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmRmNmQu LjI2ZjE2ZmNiM2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJl YW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3Ry ZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxNDYgQEAgdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBj b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IGFwcGx5IHBhcmFsbGVsIHdvcmtl ci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAkYWN0aW9uKT0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2Ug PSAnJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkcGFyYWxsZWxfbWVzc2FnZSA9IGpv aW4oIiIsICdzdHJlYW1lZCB0cmFuc2FjdGlvbiBcZCsgd2FzICcsICRhY3Rpb24sICcgdXNpbmcg YW4gYXBwbHkgcGFyYWxsZWwgd29ya2VyJyk7CisKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkj IElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2Ug bmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1 c2luZyBhbiBhcHBseSBwYXJhbGxlbCB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRo ZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cg dmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVi dWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJl ci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwg RE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJ Uk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhp KTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdj aGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNF IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1J VDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAiY29tbWl0dGVkIik7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNr IHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiYWJvcnRlZCIp OworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRy ZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4g MikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5v ZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21p bl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K K30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTc2LDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiAp OwpAQCAtNDgsODEgKzE5MiwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAx LDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQw MDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQkn Y2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicp OwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2Rh ODJiN2EuLjZiZjgzMjI0MmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx OV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDkyIEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBhcHBseSBw YXJhbGxlbCB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJh bGxlbF9tZXNzYWdlID0gJyc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVs X21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0 aW9uLCAnIHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlcicpOworCisJCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0K K30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVs IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZz ZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJw YXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24g d2FzIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwgd29ya2VyLgorCSMgV2UgaGF2ZSB0 byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVw IHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlB TFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkg cyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJjb21taXR0ZWQiKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3Rl ZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEg PiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBs b2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVy LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0g d2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0 ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjMsMTAgQEAgJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIg Rk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENP Tk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQ VUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSwzNSAr MTM5LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2Fz IGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5U OwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRF UiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBE Uk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMg cmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4uOGExNDYzZmJm ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2Nh ZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUu cGwKQEAgLTExLDYgKzExLDI0MCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRo ZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNz ZnVsbHkKKyMgcmVwb3J0ZWQgYnkgYXBwbHkgcGFyYWxsZWwgd29ya2VyLgorc3ViIGNoZWNrX3Bh cmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkc3RyZWFtaW5n X21vZGUsICRhY3Rpb24pPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9ICcnOworCisJaWYg KCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJHBhcmFsbGVsX21lc3NhZ2Ug PSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVz aW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBF bmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRv ICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90 aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgor c3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRh cHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAk b2Zmc2V0X0IgPSAwOworCW15ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9k ZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1p bmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21v ZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBT VUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2Rl KSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24K KworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNU IHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkg b3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJ JG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlk ICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBk aWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01N SVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9u LgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRh IGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVy IGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0 cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhbiBhcHBseSBwYXJhbGxlbCB3 b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFi b3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFt aW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9CLT5y ZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAtcyAkbm9k ZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSMgVGhlbiAyUEMgUFJFUEFSRQorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l X0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUsICJwcmVwYXJl ZCIpOworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdf bW9kZSwgInByZXBhcmVkIik7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBw cmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24g c3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBD Jyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5 IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhh dmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0 cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFu c2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkj IFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJ IyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMg MS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBP SU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJF UEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVk IGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0 YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9B LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dF9CID0gLXMgJG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dm aWxlOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lO VAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBz cF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1p bmdfbW9kZSwgInByZXBhcmVkIik7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZz ZXRfQywgJHN0cmVhbWluZ19tb2RlLCAicHJlcGFyZWQiKTsKKworCSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRu b2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBw cmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3Vs dCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJl IHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJp b3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdm b29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygk cmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycp OworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0 ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgUmVz ZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwn KQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWlu X21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9CLT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2Fybmlu ZyIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIvc3ViIG5vZGVzLgogIyBub2RlX0Eg LT4gbm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDk0LDE1IEBAIGlzKCRyZXN1bHQsIHFx KDIxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwogIyAy UEMgKyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLW15ICRvbGRw aWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotbXkgJG9sZHBpZF9DID0gJG5vZGVf Qi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiAoc3Ry ZWFtaW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3RyZWFtaW5nID0gb24pOyIpOwotJG5v ZGVfQy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFw X3N1Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQotIyBXYWl0IGZvciBzdWJzY3JpYmVy cyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgK LQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdy ZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u Ci0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRv IHJlc3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBD IFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAy UEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBl Y3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21t aXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0jIFRoZW4g MlBDIFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lO OwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0K LSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFw cG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQot IyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQ QVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQot JHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0 LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0 cycKLSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQg b24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEInKTsK LSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExC QUNLIFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9tIHByZXZpb3VzIHRlc3QgbGVhdmlu ZyBvbmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KLSMgMi4gUmVjb3JkIGEg U0FWRVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgNC4gRG8gcm9s bGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgotIyA1LiBU aGVuIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lO VCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBz dGVwIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxl dGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQp Ci0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwgJ2Zvb2JhcicpOwotCVNBVkVQT0lO VCBzcF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOwotCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7 Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIo cykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0 cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOwotCi0kbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24g c3Vic2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9 Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUg YXQgc3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUg U0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0jICg5OTk5LCAnZm9vYmFyJykgc2hv dWxkIGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIp OwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJz Y3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dz IGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1p dHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwot aXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0Ms ICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcpOwogCiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggOWI0NTQxMDZiZC4uOTI0 NWM3ODRjOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNl X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3Ry ZWFtLnBsCkBAIC04LDYgKzgsMzA5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sg dGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nl c3NmdWxseQorIyByZXBvcnRlZCBieSBhcHBseSBwYXJhbGxlbCB3b3JrZXIuCitzdWIgY2hlY2tf cGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFt ZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIGFwcGx5IHBhcmFs bGVsIHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFy YWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBh cmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRp c19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4K KwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVu IGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZp ZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwgd29ya2VyLgorCSMg V2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBz byBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsK KwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQki bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdl dHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgInByZXBhcmVkIik7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQ QyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBE YXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgor CSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAy IHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVs ZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRo ZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBh cmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQ QVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNl cnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIg cm93cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIn KTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBD IENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJ IyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVk IHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K KwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVk X3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9k ZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFy dDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJIyBj b21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBpbnNl cnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVm b3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIg cm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBz dHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hp Y2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFS RUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAz IHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEp LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0 aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlC RUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAicHJlcGFyZWQiKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVw YXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBv biBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBh cmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFu c2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlz IGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29i YXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3By ZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2Ny aWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3 YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0 c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09N TUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGlj aCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0 ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkj IEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJ IyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9k ZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5z ZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJh bnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBs b2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBr ZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElO VE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2Fj dGlvbiBnZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MzMzNXwzMzM1fDMzMzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0 c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFy YWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj IFNldHVwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTEsMTAg QEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3Rh cF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJT Q1JJUFRJT04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNzEsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5 ID0KICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3Bo YXNlX3F1ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3Jp YmVyIHRvIGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICMgQ2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVj ayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJF RC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhl biBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVk IG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0 byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy Jyk7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CiApOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJB Q0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xs cyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAy IHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlC RUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFu c2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIp LAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0 aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRo YXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3Rh cnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBD IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFy dGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQu Ci0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQu Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgn aW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2 aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBi eSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJF UEFSRS4KLSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhl IDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJl cgotIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47 Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3Ry YW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZm ZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikK LSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFr ZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9y dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQ UkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJv cnRlZCBvbiBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRo ZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sg dGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFu c2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBD T01NSVQgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hp Y2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRl ciB0aGUgUFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhw ZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRo ZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCBy ZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3Rl OiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUg dGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAo OTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAot JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVE ICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OwogCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIK LSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAo YXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJs aXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xk cGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRh cHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBT VUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJl cicpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sg YWxsIHRoZSBjbGVhbnVwCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v25-0003-Add-some-checks-before-using-apply-parallel-work.patch" Content-Description: v25-0003-Add-some-checks-before-using-apply-parallel-work.patch Content-Disposition: attachment; filename="v25-0003-Add-some-checks-before-using-apply-parallel-work.patch"; size=53299; creation-date="Mon, 29 Aug 2022 11:31:00 GMT"; modification-date="Mon, 29 Aug 2022 11:31:40 GMT" Content-Transfer-Encoding: base64 RnJvbSA1NmMxM2JhMzcxNGFjNDExOTViMWYwZDZjZDcxODhmZTZmZDNiODI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNSAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgcGFyYWxsZWwgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdGhyZWUg cmVxdWlyZW1lbnRzOgoxKSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhl IHN1YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKdW5pcXVlIGNvbHVtbiBvbiB0aGUg cHVibGlzaGVyLXNpZGU7CjIpIFRoZXJlIGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlCnJlcGxpY2F0ZWQgdGFibGUuIExvb2sg Zm9yIGZ1bmN0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKKiBhLiBUcmlnZ2VyIGZ1bmN0 aW9ucwoqIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29u c3RyYWludHMKKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zCjMpIFRoZSBmb3JlaWduIGtleXMg YXJlIG5vdCBhbGxvd2VkLgpJdCBpcyBiZXR0ZXIgdG8gb25seSBjaGVjayB0aGUgZm9yZWlnbiBr ZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNoZXIgZG9lcyBub3QgaGF2ZSB0 aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMuIEJ1dCB0aGlzCnJlcXVpcmVz IHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9uLiBJbiBhZGRpdGlvbiwgc2lu Y2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1YnNjcmliZXIncyBh cHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApmb3JlaWduIGtleSBkb2VzIG5v dCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBwZXJmb3JtIGEgc2ltcGxlIGNo ZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYS4KCldpdGhvdXQgdGhlc2Ugc2FmZXR5 IGNoZWNrcywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBtYXkgb2NjdXI6ClRoZSBhcHBseSBwYXJh bGxlbCB3b3JrZXIgbG9ja3MgYSByb3cgd2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLAphZnRlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIGxvY2sg dGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2luZwphbm90aGVyIG5vbi1zdHJlYW1lZCB0cmFuc2Fj dGlvbi4gQXQgdGhpcyB0aW1lLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3YWl0cwpmb3IgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVs ZWFzZWQsIGl0IHdvbid0CnNlbmQgc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlcjsKdGhlIGFwcGx5IHBhcmFsbGVs IHdvcmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlv bgphbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2NrIGhhcyBv Y2N1cnJlZCwgc28gYm90aCB3b3JrZXJzCndpbGwgd2FpdCBpbmRlZmluaXRlbHkuCi0tLQogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA2ICsKIC4uLi9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8ICA1NCArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDg2ICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMjE1ICsrKysrKysKIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMjMgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8ICAxNyArCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxOCArCiBzcmMvaW5jbHVkZS91 dGlscy90eXBjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgICA5ICstCiBzcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAgIDkgKy0KIC4uLi9zdWJzY3JpcHRpb24v dC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICAgOCArCiAuLi4vc3Vic2NyaXB0aW9uL3Qv MDIzX3R3b3BoYXNlX3N0cmVhbS5wbCAgICAgfCAgIDkgKy0KIC4uLi90LzAzMl9zdHJlYW1pbmdf cGFyYWxsZWxfc2FmZXR5LnBsICAgICAgICB8IDYwOCArKysrKysrKysrKysrKysrKysKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxNyBmaWxl cyBjaGFuZ2VkLCAxMDY1IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxf c2FmZXR5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRl eCA2ODliMzc5ZDkzLi5lNThmNWYxNGE1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbApAQCAtMjQwLDYgKzI0MCwxMiBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFi bAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVy cm9yIGhhcHBlbnMgd2hlbgogICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxl bCB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZQogICAgICAgICAgIHJlbW90ZSB0cmFuc2Fj dGlvbiBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAg VGhlcmUgYXJlIHRocmVlIHByZXJlcXVpc2l0ZXMgZm9yIHVzaW5nIDxsaXRlcmFsPnBhcmFsbGVs PC9saXRlcmFsPgorICAgICAgICAgIG1vZGU6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0 YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIG11c3QKKyAgICAgICAgICBhbHNvIGJlIHRoZSB1 bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlCisg ICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmli ZXItc2lkZSByZXBsaWNhdGVkCisgICAgICAgICAgdGFibGUuIDMpIHRoZXJlIGNhbm5vdCBiZSBh bnkgZm9yZWlnbiBrZXlzIHVzZWQgYnkgdGhlCisgICAgICAgICAgc3Vic2NyaWJlci1zaWRlIHJl cGxpY2F0ZWQgdGFibGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDgzMmU5OWNkNDguLjBjZGVjNzIy ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCkBAIC03OCw4ICs3OCw4IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5UGFy YWxsZWxXb3JrZXJFbnRyeQogCiAvKiBBcHBseSBwYXJhbGxlbCB3b3JrZXJzIGhhc2ggdGFibGUg KGluaXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCiBzdGF0aWMgSFRBQiAqQXBwbHlQYXJhbGxl bFdvcmtlcnNIYXNoID0gTlVMTDsKLXN0YXRpYyBMaXN0ICpBcHBseVBhcmFsbGVsV29ya2Vyc0Zy ZWVMaXN0ID0gTklMOwotc3RhdGljIExpc3QgKkFwcGx5UGFyYWxsZWxXb3JrZXJzTGlzdCA9IE5J TDsKK0xpc3QgKkFwcGx5UGFyYWxsZWxXb3JrZXJzRnJlZUxpc3QgPSBOSUw7CitMaXN0ICpBcHBs eVBhcmFsbGVsV29ya2Vyc0xpc3QgPSBOSUw7CiAKIC8qCiAgKiBJbmZvcm1hdGlvbiBzaGFyZWQg YmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseSBwYXJhbGxlbCB3b3JrZXIuCkBA IC0xMDkxLDMgKzEwOTEsNTMgQEAgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lk KQogCWlmIChzdGFydGVkX3R4KQogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIH0KKwor LyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1 c2luZyBhbiBhcHBseSBwYXJhbGxlbAorICogd29ya2VyLgorICoKKyAqIEFsdGhvdWdoIHRoZSBj b21taXQgb3JkZXIgaXMgbWFpbnRhaW5lZCBieSBvbmx5IGFsbG93aW5nIG9uZSBwcm9jZXNzIHRv CisgKiBjb21taXQgYXQgYSB0aW1lLCB0aGUgYWNjZXNzIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBo YXMgY2hhbmdlZC4gVGhpcyBjb3VsZAorICogY2F1c2UgdW5leHBlY3RlZCBwcm9ibGVtcyB3aGVu IGFwcGx5aW5nIHRyYW5zYWN0aW9ucyB1c2luZyBhbiBhcHBseQorICogcGFyYWxsZWwgd29ya2Vy IGlmIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNv bnNpc3RlbnQgd2l0aCB0aGUgcHVibGlzaGVyLXNpZGUsIG9yIGlmIHRoZSByZWxhdGlvbiBjb250 YWlucworICogbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2Fw cGx5X3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qCisJ ICogU2tpcCBjaGVjayBpZiBub3QgdXNpbmcgYXBwbHkgcGFyYWxsZWwgd29ya2Vycy4KKwkgKgor CSAqIElmIGFueSB3b3JrZXIgaXMgaGFuZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwg dGhpcyBjaGVjayBub3Qgb25seQorCSAqIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBieSBhcHBseSBw YXJhbGxlbCB3b3JrZXIsIGJ1dCBhbHNvIGJ5IHRoZSBsZWFkZXIKKwkgKiBhcHBseSB3b3JrZXIu IFRoaXMgaXMgYmVjYXVzZSB3aXRob3V0IHRoZXNlIHNhZmV0eSBjaGVja3MsIGxlYWRlciBhcHBs eQorCSAqIHdvcmtlciBtYXkgYmxvY2sgYXBwbHkgcGFyYWxsZWwgd29ya2VyLCB3aGljaCB3aWxs IGNhdXNlIGluZmluaXRlCisJICogd2FpdHMuCisJICovCisJaWYgKCF1c2luZ19hcHBseV9wYXJh bGxlbF93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFibGUgY2hl Y2tzIGFyZSBkb25lIGxhdGVyIGluIGZ1bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1cGxlX3Jv dXRpbmcuCisJICovCisJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQlyZXR1cm47CisKKwlpZiAocmVsLT5wYXJhbGxlbF9h cHBseV9zYWZlID09IFBBUkFMTEVMX0FQUExZX1NBRkVUWV9VTktOT1dOKQorCQlsb2dpY2FscmVw X3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KHJlbCk7CisKKwlpZiAocmVsLT5wYXJhbGxlbF9hcHBs eV9zYWZlID09IFBBUkFMTEVMX0FQUExZX1VOU0FGRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkg ZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNpbmcg IgorCQkJCQkJInN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgJXMiLAorCQkJCQkJcmVsLT5yZW1vdGVy ZWwubnNwbmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSJzdHJlYW1pbmcgPSBw YXJhbGxlbCIpLAorCQkJCSBlcnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmli ZXIgaXMgbm90IHRoZSB1bmlxdWUgIgorCQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3Ig dGhlcmUgaXMgYXQgbGVhc3Qgb25lICIKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9u LiIpLAorCQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFy YW1ldGVyICVzLiIsCisJCQkJCQkic3RyZWFtaW5nID0gb24iKSkpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IDQ3YmQ4MTFmYjcuLjczYjI4MDc5MzkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTIzLDcgKzIzLDggQEAK IC8qCiAgKiBQcm90b2NvbCBtZXNzYWdlIGZsYWdzLgogICovCi0jZGVmaW5lIExPR0lDQUxSRVBf SVNfUkVQTElDQV9JREVOVElUWSAxCisjZGVmaW5lIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWQko MSA8PCAwKQorI2RlZmluZSBBVFRSX0lTX1VOSVFVRQkJCQkoMSA8PCAxKQogCiAjZGVmaW5lIE1F U1NBR0VfVFJBTlNBQ1RJT05BTCAoMTw8MCkKICNkZWZpbmUgVFJVTkNBVEVfQ0FTQ0FERQkJKDE8 PDApCkBAIC00MCw2ICs0MSw2NiBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3JlYWRfdHVwbGUo U3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFR1cGxlRGF0YSAqdHVwbGUpOwogc3RhdGljIHZvaWQg bG9naWNhbHJlcF93cml0ZV9uYW1lc3BhY2UoU3RyaW5nSW5mbyBvdXQsIE9pZCBuc3BpZCk7CiBz dGF0aWMgY29uc3QgY2hhciAqbG9naWNhbHJlcF9yZWFkX25hbWVzcGFjZShTdHJpbmdJbmZvIGlu KTsKIAorLyoKKyAqIFJlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwIC0tIGdldCBhIGJpdG1hcCBv ZiB1bmlxdWUgYXR0cmlidXRlIG51bWJlcnMKKyAqCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gUmVs YXRpb25HZXRJZGVudGl0eUtleUJpdG1hcCgpLCBidXQgcmV0dXJucyBhIGJpdG1hcCBvZgorICog aW5kZXggYXR0cmlidXRlIG51bWJlcnMgZm9yIGFsbCB1bmlxdWUgaW5kZXhlcy4KKyAqLworc3Rh dGljIEJpdG1hcHNldCAqCitSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcChSZWxhdGlvbiByZWwp Cit7CisJTGlzdAkJICAgKmluZGV4b2lkbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbAkgICAqaW5kZXhv aWRzY2FuOworCUJpdG1hcHNldAkgICAqYXR0dW5pcXVlID0gTlVMTDsKKworCWlmICghcmVsLT5y ZF9yZWwtPnJlbGhhc2luZGV4KQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4b2lkbGlzdCA9IFJl bGF0aW9uR2V0SW5kZXhMaXN0KHJlbCk7CisKKwlmb3JlYWNoKGluZGV4b2lkc2NhbiwgaW5kZXhv aWRsaXN0KQorCXsKKwkJT2lkCQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7 CisJCVJlbGF0aW9uCWluZGV4UmVsOworCQlpbnQJCQlpOworCisJCS8qIExvb2sgdXAgdGhlIGRl c2NyaXB0aW9uIGZvciBpbmRleCAqLworCQlpbmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlv bihpbmRleG9pZCk7CisKKwkJaWYgKCFSZWxhdGlvbklzVmFsaWQoaW5kZXhSZWwpKQorCQkJZWxv ZyhFUlJPUiwgImNvdWxkIG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQp OworCisJCWlmICghaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJeworCQkJUmVs YXRpb25DbG9zZShpbmRleFJlbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEFkZCByZWZl cmVuY2VkIGF0dHJpYnV0ZXMgdG8gYXR0dW5pcXVlICovCisJCWZvciAoaSA9IDA7IGkgPCBpbmRl eFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCXsKKwkJCWludCBhdHRybnVtID0gaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkvKgorCQkJICogV2UgZG9u J3QgaW5jbHVkZSBub24ta2V5IGNvbHVtbnMgaW50byBhdHR1bmlxdWUKKwkJCSAqIGJpdG1hcHMu IFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCSAqLworCQkJaWYgKGF0dHJudW0g IT0gMCkKKwkJCXsKKwkJCQlpZiAoaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmtleWF0dHMg JiYKKwkJCQkJIWJtc19pc19tZW1iZXIoYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIsIGF0dHVuaXF1ZSkpCisJCQkJCWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVy KGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCQkJfQorCQl9CisJCVJlbGF0aW9uQ2xvc2UoaW5kZXhSZWwpOwor CX0KKwlsaXN0X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKworCXJldHVybiBhdHR1bmlxdWU7Cit9CisK IC8qCiAgKiBDaGVjayBpZiBhIGNvbHVtbiBpcyBjb3ZlcmVkIGJ5IGEgY29sdW1uIGxpc3QuCiAg KgpAQCAtOTMzLDcgKzk5NCw4IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCVR1cGxlRGVzYwlkZXNjOwog CWludAkJCWk7CiAJdWludDE2CQlubGl2ZWF0dHMgPSAwOwotCUJpdG1hcHNldCAgKmlkYXR0cnMg PSBOVUxMOworCUJpdG1hcHNldCAgKmlkYXR0cnMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9 IE5VTEw7CiAJYm9vbAkJcmVwbGlkZW50ZnVsbDsKIAogCWRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbCk7CkBAIC05NTgsNiArMTAyMCw5IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3RyaW5n SW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCWlmICghcmVwbGlk ZW50ZnVsbCkKIAkJaWRhdHRycyA9IFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAocmVsKTsK IAorCS8qIGZldGNoIGJpdG1hcCBvZiBVTklRVUUgYXR0cmlidXRlcyAqLworCWF0dHVuaXF1ZSA9 IFJlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKHJlbCk7CisKIAkvKiBzZW5kIHRoZSBhdHRyaWJ1 dGVzICovCiAJZm9yIChpID0gMDsgaSA8IGRlc2MtPm5hdHRzOyBpKyspCiAJewpAQCAtOTc0LDcg KzEwMzksMTEgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRp b24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJCWlmIChyZXBsaWRlbnRmdWxsIHx8CiAJCQli bXNfaXNfbWVtYmVyKGF0dC0+YXR0bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciwKIAkJCQkJCSAgaWRhdHRycykpCi0JCQlmbGFncyB8PSBMT0dJQ0FMUkVQX0lTX1JFUExJ Q0FfSURFTlRJVFk7CisJCQlmbGFncyB8PSBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFk7CisKKwkJ aWYgKGJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyLAorCQkJCQkJICBhdHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gQVRUUl9JU19VTklR VUU7CiAKIAkJcHFfc2VuZGJ5dGUob3V0LCBmbGFncyk7CiAKQEAgLTk4OSw2ICsxMDU4LDcgQEAg bG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRt YXBzZXQgKmNvbHVtbnMpCiAJfQogCiAJYm1zX2ZyZWUoaWRhdHRycyk7CisJYm1zX2ZyZWUoYXR0 dW5pcXVlKTsKIH0KIAogLyoKQEAgLTEwMDEsNyArMTA3MSw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9h dHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0 czsKIAljaGFyCSAgKiphdHRuYW1lczsKIAlPaWQJCSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAg KmF0dGtleXMgPSBOVUxMOworCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0 dHVuaXF1ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBxX2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFt ZXMgPSBwYWxsb2MobmF0dHMgKiBzaXplb2YoY2hhciAqKSk7CkBAIC0xMDE0LDkgKzEwODUsMTMg QEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlv biAqcmVsKQogCiAJCS8qIENoZWNrIGZvciByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiAqLwogCQlm bGFncyA9IHBxX2dldG1zZ2J5dGUoaW4pOwotCQlpZiAoZmxhZ3MgJiBMT0dJQ0FMUkVQX0lTX1JF UExJQ0FfSURFTlRJVFkpCisJCWlmIChmbGFncyAmIEFUVFJfSVNfUkVQTElDQV9JREVOVElUWSkK IAkJCWF0dGtleXMgPSBibXNfYWRkX21lbWJlcihhdHRrZXlzLCBpKTsKIAorCQkvKiBDaGVjayBm b3IgdW5pcXVlIGNvbHVtbiAqLworCQlpZiAoZmxhZ3MgJiBBVFRSX0lTX1VOSVFVRSkKKwkJCWF0 dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwgaSk7CisKIAkJLyogYXR0cmlidXRl IG5hbWUgKi8KIAkJYXR0bmFtZXNbaV0gPSBwc3RyZHVwKHBxX2dldG1zZ3N0cmluZyhpbikpOwog CkBAIC0xMDMwLDYgKzExMDUsNyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBp biwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAJcmVsLT5hdHRuYW1lcyA9IGF0dG5hbWVzOwog CXJlbC0+YXR0dHlwcyA9IGF0dHR5cHM7CiAJcmVsLT5hdHRrZXlzID0gYXR0a2V5czsKKwlyZWwt PmF0dHVuaXF1ZSA9IGF0dHVuaXF1ZTsKIAlyZWwtPm5hdHRzID0gbmF0dHM7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwppbmRleCBlOTg5MDQ3NjgxLi4y YTFhNTFhN2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl bGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5j CkBAIC0xOSwxMiArMTksMTkgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAi bm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIu aCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUu aCIKIAogCiBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCA9IE5V TEw7CkBAIC05MSw2ICs5OCwyMyBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERh dHVtIGFyZywgT2lkIHJlbG9pZCkKIAl9CiB9CiAKKy8qCisgKiBTeXNjYWNoZSBpbnZhbGlkYXRp b24gY2FsbGJhY2sgdG8gcmVzZXQgcGFyYWxsZWxfYXBwbHlfc2FmZSBmbGFnLgorICovCitzdGF0 aWMgdm9pZAorbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBp bnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9z ZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUmVs TWFwID09IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBMb2dp Y2FsUmVwUmVsTWFwKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3Nl cSkpICE9IE5VTEwpCisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQ TFlfU0FGRVRZX1VOS05PV047Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBt YXAgY2FjaGUuCiAgKi8KQEAgLTExNiw2ICsxNDAsMTIgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5p dCh2b2lkKQogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVn aXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IsCiAJ CQkJCQkJCSAgKERhdHVtKSAwKTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhQUk9D T0lELAorCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3BhcmFsbGVsX2NiLAorCQkJ CQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFlQRU9J RCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJCQkJ CQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxvZ2ljYWxyZXBf cmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUo cmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsK KwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXAp CiAJCWZyZWVfYXR0cm1hcChlbnRyeS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIxLDcgQEAgbG9n aWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogCX0K IAllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCWVu dHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJ ZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVuaXF1 ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxMCw2ICszNDIs MTgyIEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqZW50cnkpCiAJfQogfQogCisvKgorICogQ2hlY2sgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRp b24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwKKyAqIHdvcmtlciBhbmQg YXNzaWduIHRoZSAncGFyYWxsZWxfYXBwbHlfc2FmZScgZmxhZy4KKyAqCisgKiBUaGVyZSBhcmUg dGhyZWUgcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGFuIGFwcGx5IHBh cmFsbGVsCisgKiB3b3JrZXI6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0 aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZCBhbHNvCisgKiBiZSB0aGUgdW5pcXVlIGNvbHVtbiBv biB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1pbW11 dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRh YmxlLiAzKQorICogdGhlcmUgY2Fubm90IGJlIGFueSBmb3JlaWduIGtleXMgdXNlZCBieSB0aGUg c3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQKKyAqIHRhYmxlLgorICoKKyAqIFdpdGhvdXQgdGhl c2Ugc2FmZXR5IGNoZWNrcywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBtYXkgb2NjdXI6IFRoZSBh cHBseQorICogcGFyYWxsZWwgd29ya2VyIGxvY2tzIGEgcm93IHdoZW4gcHJvY2Vzc2luZyBhIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiwgYWZ0ZXIKKyAqIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgdHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCisgKiBhbm90aGVy IG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbi4gQXQgdGhpcyB0aW1lLCB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlcgorICogd2FpdHMgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gY29tcGxl dGUgYW5kIHRoZSBsb2NrIHRvIGJlIHJlbGVhc2VkLAorICogaXQgd29uJ3Qgc2VuZCBzdWJzZXF1 ZW50IGRhdGEgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgYXBwbHkKKyAqIHBh cmFsbGVsIHdvcmtlcjsgdGhlIGFwcGx5IHBhcmFsbGVsIHdvcmtlciB3YWl0cyB0byByZWNlaXZl IHRoZSByZXN0IG9mCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYW5kIGNhbid0IGZpbmlzaCB0 aGlzIHRyYW5zYWN0aW9uLiBOb3cgYSBkZWFkbG9jayBoYXMKKyAqIG9jY3VycmVkLCBzbyBib3Ro IHdvcmtlcnMgd2lsbCB3YWl0IGluZGVmaW5pdGVseS4KKyAqCisgKiBXZSBqdXN0IG1hcmsgdGhl IHJlbGF0aW9uIGVudHJ5IGFzICdQQVJBTExFTF9BUFBMWV9VTlNBRkUnIGhlcmUgaWYgY2hhbmdl cworICogb24gb25lIHJlbGF0aW9uIGNhbiBub3QgYmUgYXBwbGllZCB1c2luZyBhbiBhcHBseSBw YXJhbGxlbCB3b3JrZXIgYW5kIGxlYXZlCisgKiBpdCB0byBwYXJhbGxlbF9hcHBseV9yZWxhdGlv bl9jaGVjaygpIHRvIHRocm93IHRoZSBhY3R1YWwgZXJyb3IgaWYgbmVlZGVkLgorICovCit2b2lk Citsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqZW50cnkpCit7CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJ dHVwZGVzYzsKKwlpbnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKiBT a2lwIGlmIG5vIGFwcGx5IHBhcmFsbGVsIHdvcmtlciBpcyBpbiB1c2UgKi8KKwlpZiAoIXVzaW5n X2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQorCQlyZXR1cm47CisKKwkvKiBJbml0aWFsaXplIHRo ZSBmbGFnLiAqLworCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlf U0FGRVRZX1VOS05PV047CisKKwkvKgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNv bHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lkZQorCSAqIGlzIGFsc28g dGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElO REVYX0FUVFJfQklUTUFQX0tFWSk7CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0g PSBBdHRyTnVtYmVyR2V0QXR0ck9mZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcik7CisKKwkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8 fAorCQkJCSFibXNfaXNfbWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVu dHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBw bHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlibXNfZnJlZSh1a2V5KTsKKwkJ CQlyZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkvKgorCSAq IFRoZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQg YnkgdGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5jdGlvbnMg aW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7CisJICog Yi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50 czsKKwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOworCSAqLworCS8qIENoZWNrIHRoZSB0 cmlnZ2VyIGZ1bmN0aW9ucy4gKi8KKwlpZiAoZW50cnktPmxvY2FscmVsLT50cmlnZGVzYyAhPSBO VUxMKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPm51 bXRyaWdnZXJzOyBpKyspCisJCXsKKwkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+bG9jYWxy ZWwtPnRyaWdkZXNjLT50cmlnZ2VycyArIGk7CisKKwkJCWlmICh0cmlnLT50Z2VuYWJsZWQgIT0g VFJJR0dFUl9GSVJFU19BTFdBWVMgJiYKKwkJCQl0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9G SVJFU19PTl9SRVBMSUNBKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoZnVuY192b2xhdGlsZSh0 cmlnLT50Z2ZvaWQpICE9IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSkKKwkJCXsKKwkJCQllbnRyeS0+ cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlyZXR1cm47 CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29sdW1ucy4gKi8KKwl0dXBkZXNjID0g UmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCWZvciAoYXR0bnVtID0gMDsgYXR0 bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRudW0pOworCQlOb2RlICpkZWZhdWx0ZXhw ciA9IE5VTEw7CisKKwkJLyogV2UgZG9uJ3QgY2hlY2sgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0 cmlidXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQp CisJCQljb250aW51ZTsKKworCQlkZWZhdWx0ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVu dHJ5LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7CisJCWlmIChkZWZhdWx0ZXhwciAmJiBjb250YWlu X211dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHByKSkKKwkJeworCQkJZW50cnktPnBhcmFsbGVs X2FwcGx5X3NhZmUgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQlyZXR1cm47CisJCX0KKwor CQkvKgorCQkgKiBJZiB0aGUgY29sdW1uIGlzIG9mIGEgRE9NQUlOIHR5cGUsIGRldGVybWluZSB3 aGV0aGVyIHRoYXQgZG9tYWluIGhhcworCQkgKiBhbnkgQ0hFQ0sgZXhwcmVzc2lvbnMgdGhhdCBh cmUgbm90IGltbXV0YWJsZS4KKwkJICovCisJCWlmIChnZXRfdHlwdHlwZShhdHQtPmF0dHR5cGlk KSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJeworCQkJTGlzdAkgICAqZG9tYWluX2NvbnN0cmFpbnRz OworCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWRvbWFpbl9jb25zdHJhaW50cyA9IEdldERvbWFp bkNvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCisJCQlmb3JlYWNoKGxjLCBkb21haW5fY29u c3RyYWludHMpCisJCQl7CisJCQkJRG9tYWluQ29uc3RyYWludFN0YXRlICpjb24gPSAoRG9tYWlu Q29uc3RyYWludFN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJCQlpZiAoY29uLT5jaGVja19leHBy ICYmIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgY29uLT5jaGVja19leHByKSkK KwkJCQl7CisJCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlf VU5TQUZFOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sg dGhlIGNvbnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJeworCQlDb25zdHJD aGVjayAqY2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJCSAqIERldGVy bWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJCSAqIGNvbnRh aW5zIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgdHVw ZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAqY2hlY2tfZXhw ciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250YWluX211dGFi bGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJh bGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJ CX0KKwkJfQorCX0KKworCS8qCisJICogRmluYWxseSwgY2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4K KwkgKgorCSAqIFhYWCBJdCBpcyBiZXR0ZXIgdG8gb25seSBjaGVjayB0aGUgZm9yZWlnbiBrZXkg d2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0CisJICogdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBoYXZl IHRoZSBmb3JlaWduIGtleSBhbmQgdGhlIHN1YnNjcmliZXIgZG9lcy4gQnV0CisJICogdGhpcyBy ZXF1aXJlcyB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbW9yZSBpbmZvcm1hdGlvbi4gSW4gYWRkaXRp b24sIHNpbmNlCisJICogZm9yZWlnbiBrZXkgZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1 YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkKKwkgKiBkZWZhdWx0LCBpdCBzZWVtcyB0aGF0IGZv cmVpZ24ga2V5IGRvZXMgbm90IGhpdCB0aGlzIEVSUk9SIGZyZXF1ZW50bHkuCisJICogU28sIG9u bHkgYSBzaW1wbGUgY2hlY2sgYmFzZWQgb24gdGhlIHN1YnNjcmliZXIgc2NoZW1hIGlzIGtlcHQg aGVyZS4KKwkgKi8KKwlma2V5cyA9IFJlbGF0aW9uR2V0RktleUxpc3QoZW50cnktPmxvY2FscmVs KTsKKwlpZiAoZmtleXMpCisJeworCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFM TEVMX0FQUExZX1VOU0FGRTsKKwkJcmV0dXJuOworCX0KKworCWVudHJ5LT5wYXJhbGxlbF9hcHBs eV9zYWZlID0gUEFSQUxMRUxfQVBQTFlfU0FGRTsKK30KKwogLyoKICAqIE9wZW4gdGhlIGxvY2Fs IHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVtb3RlIG9uZS4KICAqCkBAIC00MzgsNiAr NjQ2LDkgQEAgbG9naWNhbHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExP Q0tNT0RFIGxvY2ttb2RlKQogCQkgKi8KIAkJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUo ZW50cnkpOwogCisJCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4g YXBwbHkgcGFyYWxsZWwgd29ya2VyICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxf YXBwbHkoZW50cnkpOworCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAg LTY1Myw2ICs4NjQsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqcm9vdCwKIAkJfQogCQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90 ZXJlbC0+cmVwbGlkZW50OwogCQllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShy ZW1vdGVyZWwtPmF0dGtleXMpOworCQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19j b3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0 cmVsOwpAQCAtNjk2LDYgKzkwOCw5IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNh bFJlcFJlbE1hcEVudHJ5ICpyb290LAogCS8qIFNldCBpZiB0aGUgdGFibGUncyByZXBsaWNhIGlk ZW50aXR5IGlzIGVub3VnaCB0byBhcHBseSB1cGRhdGUvZGVsZXRlLiAqLwogCWxvZ2ljYWxyZXBf cmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsKIAorCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJl IGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgcGFyYWxsZWwgd29ya2VyICovCisJbG9naWNhbHJlcF9y ZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBmMzhiOWVj YjZhLi5lNDQ2MzI5ZTFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKQEAgLTg4MCw2ICs4ODAsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFy ICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhU dXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0g cGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5h dHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9y ZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUg bm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA0NTI2Y2Nl ZDYyLi43YWU2MDYwODI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTE0NTQsNiArMTQ1NCwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5n SW5mbyBzKQogCX0KIAllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFfU0VORF9UT19QQVJBTExF TF9XT1JLRVIpCiAJeworCQkvKgorCQkgKiBVbmxpa2Ugc3RyZWFtX2NvbW1pdCwgd2UgZG9uJ3Qg bmVlZCB0byB3YWl0IGhlcmUgZm9yIHN0cmVhbV9zdG9wIHRvCisJCSAqIGZpbmlzaC4gQWxsb3dp bmcgdGhlIG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgYmVmb3JlCisJCSAqIHN0cmVh bV9zdG9wIGlzIGZpbmlzaGVkIGNhbiBsZWFkIHRvIGZhaWx1cmVzIGlmIHRoZSB1bmlxdWUKKwkJ ICogaW5kZXgvY29uc3RyYWludCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1 YnNjcmliZXIuIEJ1dAorCQkgKiBmb3Igc3VjaCBjYXNlcywgd2UgZG9uJ3QgYWxsb3cgc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIHRvIGJlIGFwcGxpZWQKKwkJICogaW4gcGFyYWxsZWwuIFNlZSBwYXJh bGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjay4KKwkJICovCiAJCXBhcmFsbGVsX2FwcGx5X3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKIAogCQllbG9nKERFQlVHMSwgInN0b3BwZWQg c3RyZWFtaW5nIG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsCkBAIC0yMDQ3LDYgKzIw NTUsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQgcmVsYXRp b24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbCA9 IHJlbDsKIAorCXBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0 aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3Jf cmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjE5MCw2ICsyMjAw LDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2Ug Y2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAK KwlwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0 aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9u KHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzNTgsNiArMjM3MCw4IEBAIGFw cGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0 aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJcGFyYWxs ZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1 dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwog CWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTQzLDEzICsyNTU3LDE0IEBAIGFwcGx5X2hh bmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFy dGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0cm1hcCk7 CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhlIGxl YWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVyYXRp b24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3BhcnRpdGlv bl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBhdHRybWFwKTsKIAkJ Y2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKworCXBhcmFsbGVsX2Fw cGx5X3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChvcGVyYXRpb24pCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQwZC4uYjI0ODg5OWQ4 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYgKzI1NDAsMjMgQEAg Y29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwg T2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWluQ29uc3RyYWludHMg LS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWluIHR5 cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sKKwlU eXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0gTklMOwor CisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlO X0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJCWNv bnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0dXJu IGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1EYXRh IG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKaW5kZXggMjBiOWFiYmFhMy4uZWQxOTNiYTdiNyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNhIGlk ZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICovCiAJ Qml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJpdG1h cHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBMb2dp Y2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUuLmIzZDg4NmEzOWQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNSw2ICsx NSwxNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgaWYgY2hhbmdl cyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4KKyAqCWFwcGx5IHBhcmFs bGVsIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsQXBwbHlTYWZldHkKK3sKKwlQ QVJBTExFTF9BUFBMWV9TQUZFVFlfVU5LTk9XTiwKKwlQQVJBTExFTF9BUFBMWV9TQUZFLAorCVBB UkFMTEVMX0FQUExZX1VOU0FGRQorfSBQYXJhbGxlbEFwcGx5U2FmZXR5OworCiB0eXBlZGVmIHN0 cnVjdCBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3Rl cmVsOwkvKiBrZXkgaXMgcmVtb3RlcmVsLnJlbW90ZWlkICovCkBAIC0zMSw2ICs0Miw4IEBAIHR5 cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVsOwkJ LyogcmVsY2FjaGUgZW50cnkgKE5VTEwgd2hlbiBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAqYXR0 cm1hcDsJCS8qIG1hcCBvZiBsb2NhbCBhdHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJYm9v bAkJdXBkYXRhYmxlOwkJLyogQ2FuIGFwcGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlQYXJhbGxl bEFwcGx5U2FmZXR5CXBhcmFsbGVsX2FwcGx5X3NhZmU7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGlu IGFuIGFwcGx5CisJCQkJCQkJCQkJCQkgICBwYXJhbGxlbCB3b3JrZXI/ICovCiAKIAkvKiBTeW5j IHN0YXRlLiAqLwogCWNoYXIJCXN0YXRlOwpAQCAtNDcsNCArNjAsNiBAQCBleHRlcm4gTG9naWNh bFJlcFJlbE1hcEVudHJ5ICpsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxN YXBFbnRyeSAqcgogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWxfY2xvc2UoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpyZWwsCiAJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKK2V4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICplbnRyeSk7CisKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMUkVMQVRJT05fSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCAwOWVmNDkxOWVmLi5h OGRkZjdhNzZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApA QCAtMTQ3LDYgKzE0Nyw5IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBBcHBseVBhcmFs bGVsV29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkOwogCiBleHRlcm4gUEdETExJTVBPUlQg TGlzdCAqc3VieGFjdGxpc3Q7CiAKK2V4dGVybiBQR0RMTElNUE9SVCBMaXN0ICpBcHBseVBhcmFs bGVsV29ya2Vyc0ZyZWVMaXN0OworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3QgKkFwcGx5UGFyYWxs ZWxXb3JrZXJzTGlzdDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4g UEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29u bjsKIApAQCAtMjE2LDYgKzIxOSw4IEBAIGV4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxv cmlnaW5fcmVzZXQodm9pZCk7CiAKICNkZWZpbmUgaXNBcHBseVBhcmFsbGVsV29ya2VyKHdvcmtl cikgKHdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCitleHRlcm4gdm9p ZCBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bCk7CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewpA QCAtMjI4LDQgKzIzMywxNyBAQCBhbV9hcHBseV9wYXJhbGxlbF93b3JrZXIodm9pZCkKIAlyZXR1 cm4gaXNBcHBseVBhcmFsbGVsV29ya2VyKE15TG9naWNhbFJlcFdvcmtlcik7CiB9CiAKKy8qCisg KiBEZXRlcm1pbmUgd2hldGhlciBsZWFkZXIgYXBwbHkgd29ya2VyIGlzIHVzaW5nIGFwcGx5IHBh cmFsbGVsIHdvcmtlciBieQorICogd2hldGhlciB0aGUgbGVuZ3RocyBvZiBBcHBseVBhcmFsbGVs V29ya2Vyc0ZyZWVMaXN0IGFuZAorICogQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0IGFyZSBlcXVh bC4KKyAqLworc3RhdGljIGlubGluZSBib29sCit1c2luZ19hcHBseV9wYXJhbGxlbF93b3JrZXIo dm9pZCkKK3sKKwlyZXR1cm4gKGFtX2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpIHx8CisJCQkobGlz dF9sZW5ndGgoQXBwbHlQYXJhbGxlbFdvcmtlcnNGcmVlTGlzdCkgIT0KKwkJCSBsaXN0X2xlbmd0 aChBcHBseVBhcmFsbGVsV29ya2Vyc0xpc3QpKSk7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBXT1JL RVJfSU5URVJOQUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3ZjFiMy4uZWQ3YzJl N2Y0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2 NCBhc3NpZ25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9k KTsKIAogZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0 Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25z dHJhaW50cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCA1YzAwNmM4M2UyLi5kOWM0Y2UxNmUzIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTIwNiw4ICsyMDYsMTMgQEAgbXkgJG9s ZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBw aWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKKyMgInN0cmVhbWluZyA9IHBh cmFsbGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFu Z2UKKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJj Ii4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgw KTsKK0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwg YmluYXJ5ID0gb2ZmKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFt X3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwKaW5kZXggNGQ5MjNhMjczYS4uMGFjMGMwZGRjMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtMTUxLDggKzE1MSwxMyBAQCBteSAkb2xk cGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5v dCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0 aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFi IEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsKK0FMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA4YTE0NjNmYmZkLi4yZjI2 YTBlM2IxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbApAQCAtNTAyLDYgKzUwMiwxNCBAQCB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9k ZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAnb24nKTsKICMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUg J3BhcmFsbGVsJwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAi c3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lv biBvZiBjb2x1bW4gImMiLgorJG5vZGVfQi0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICJBTFRF UiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAo MCk7Iik7Ciskbm9kZV9DLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRl c3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsiKTsKKwog dGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFw cG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0u cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4 IDkyNDVjNzg0YzguLmQ0Y2IzZmJhNDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtMzg1LDggKzM4NSwxMyBAQCBteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBw b3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGlu IHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVS IENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsKK0FMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yNGJkNTRmYjU1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHku cGwKQEAgLTAsMCArMSw2MDggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIHNhZmV0eSBjaGVja3Mgb2Ygc3Ry ZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uLgorIyBXaXRob3V0 IHRoZXNlIHNhZmV0eSBjaGVja3MsIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2VyIG1heSBm YWxsIGludG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3aXRob3V0IHRoZSB1c2VyIGtub3dpbmcuCisj CisjIEZvciBub3JtYWwgdGFibGVzLCB3ZSB1c2UgZGVhZGxvY2stcHJvZHVjaW5nIHRlc3QgY2Fz ZXMgdG8gZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1vZGlmaWNhdGlvbnMgZG8gbm90IGludmFsaWRh dGUgY29uc3RyYWludCBjaGVja3MuCisjCisjIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIGp1 c3QgdXNlIHRlc3QgY2FzZXMgdG8gY29uZmlybSB0aGF0IHRoZSBjb25zdHJhaW50CisjIGNoZWNr cyBhcmUgYXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5v ZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn cHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVf c3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFNldHVwIHN0 cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQp Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFC TEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7 CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyMgV2UgbmVlZCB0byB0ZXN0IG5v cm1hbCB0YWJsZSBhbmQgcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0 X3RhYjIgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXks IGIgdmFyY2hhcikgUEFSVElUSU9OIEJZIFJBTkdFKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiAo TElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0gg UEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwgRk9SIFRB QkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0aXRpb25lZCBGT1Ig VEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBf cHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9 IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcg dGhlIDY0a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1l ciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9k ZWZhdWx0KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUg Y29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0 aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQorIyBlcnJv ciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBub3JtYWwg dGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiMSBvbiB0ZXN0X3RhYjEoYSkiKTsKKworJGluIC49IHF7CitC RUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxIHZhbHVlcygxKSIpOwor CiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJv cCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEi KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFV RSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChi KSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCisp OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJf cGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFy YWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOworCisjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGlu ZGV4Jyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUcmlnZ2VycyB3aGljaCBleGVjdXRl IG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3Jp YmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhl IHRyaWdnZXIgZnVuY3Rpb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0 X3RhYjIoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIyIG9uIHRlc3RfdGFiMihhKSIpOworCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04g dHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZlKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVH SU4KKyAgICBJTlNFUlQgSU5UTyBwdWJsaWMudGVzdF90YWIyIFZBTFVFUyAoTkVXLiopOworICAg IFJFVFVSTiBORVc7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdH RVIgdHJpX3RhYjFfdW5zYWZlCitCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKK0ZP UiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKTsK K0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSIHRyaV90YWIxX3Vu c2FmZTsKKworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3NhZmUoKSBSRVRVUk5T IFRSSUdHRVIgQVMgXCRcJAorICBCRUdJTgorICAgIFJBSVNFIE5PVElDRSAndGVzdCBmb3Igc2Fm ZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKKwlSRVRVUk4gTkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2Ug cGxwZ3NxbDsKK0FMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3NhZmUgSU1NVVRBQkxF OworQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQorQkVGT1JFIElOU0VSVCBPTiBwdWJsaWMu dGVzdF90YWIxCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jX3Rh YjFfc2FmZSgpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxewor QkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgVkFMVUVTKDUwMDEpOworSU5TRVJUIElOVE8g dGVzdF90YWIyIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9 OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgVkFMVUVTKDUwMDEpIik7CisKKyRpbiAuPSBxeworQ09N TUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBVc2luZyB0cmlnZ2VyIHdpdGgg aW1tdXRhYmxlIGZ1bmN0aW9uLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJF UExJQ0EgVFJJR0dFUiB0cmlfdGFiMV9zYWZlOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2Fm ZSBPTiBwdWJsaWMudGVzdF90YWIxOworfSk7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAg dGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxeworRFJPUCBJTkRFWCBpZHhfdGFiMjsKK0RST1AgVFJJR0dF UiB0cmlfdGFiMV9zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7CitEUk9QIGZ1bmN0aW9uIHRyaWdn ZXJfZnVuY190YWIxX3Vuc2FmZTsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjFfc2Fm ZTsKK30pOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitE Uk9QIElOREVYIGlkeF90YWIyOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24gb24gcGFy dGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dFUiBBUyBc JFwkCisgIEJFR0lOCisgICAgUkVUVVJOIE5VTEw7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBn c3FsOworQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcKK0JFRk9SRSBJTlNFUlQgT04gdGVzdF90 YWJfcGFydGl0aW9uCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5j KCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5BQkxFIFJFUExJQ0EgVFJJR0dF UiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFy dGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9S OiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGlj LnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVh bWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRp dGlvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFw cGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVk Iik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlz IG5vdCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlu cyBhCisjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hl Y2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5CisjIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRl ZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIp OworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVB VEUgRlVOQ1RJT04gZnVuY19jb3VudF90YWIyKCkgUkVUVVJOUyBJTlQgQVMgXCRcJAorICBCRUdJ TgorICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gcHVibGljLnRlc3RfdGFiMik7Cisg IEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBD T0xVTU4gYiBpbnQgREVGQVVMVCBmdW5jX2NvdW50X3RhYjIoKTsKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOwor SU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw MDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRp biAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBBbHRlciBk ZWZhdWx0IHZhbHVlcyB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3Rf dGFiMSBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxIik7CisKKyMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsK KworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9Q IENPTFVNTiBiIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsK K30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBU aGVuIHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIHBhcnRp dGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQg cmFuZG9tKCkiKTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9u ZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhl IHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1O IGIgRFJPUCBERUZBVUxUIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf cGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWlu IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rp b24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBh cmFsbGVsCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor IyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUg dGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJsZSwgb25seSB0ZXN0IG5vcm1hbCB0YWJsZSBo ZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgaW50IENIRUNLIChW QUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIHRt cF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIElOVCBDT05TVFJBSU5UIGRvbWFp bl9jaGVjayBDSEVDSyAoVkFMVUUgPj0gZnVuY19jb3VudF90YWIyKCkpOworQUxURVIgVEFCTEUg dGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgdG1wX2RvbWFpbjsKK30pOworCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIy OworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisK KyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBs aWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRp b24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBE Uk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nCispOworCisj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIg Q09MVU1OIGEgVFlQRSBpbnQiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb25z dHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlIGZ1bmN0aW9uCisjIG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxl bCB3b3JrZXIgaW4gdGhpcworIyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmly c3Qgd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIyIFZBTFVFUygxKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFi MV91bnNhZmUgQ0hFQ0soYSA+PSBmdW5jX2NvdW50X3RhYjIoKSk7Cit9KTsKKworIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsK K0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCisk aW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgQWx0ZXIg Y29uc3RyYWludCBleHByZXNzaW9uIHRvIGltbXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfdW5zYWZlOworQUxU RVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfc2FmZSBDSEVDSyhh ID49IDApOworfSk7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8g YmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Citp cygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0 ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV9z YWZlIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RS VU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdl IGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+ IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX2NvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisKKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9u IHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgorIyByZXBvcnRlZCBieSBwYXJh bGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmly c3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRhYl9ub3B1 YmxpYyhhIGludCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBSSU1BUlkgS0VZIChhKTsK K0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBSRVBMSUNBIElERU5USVRZIEZVTEw7CitJTlNFUlQgSU5U TyB0ZXN0X3RhYjIgVkFMVUVTKDEpOworfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJTUFSWSBLRVkgKGEpOyIp OworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgdGVzdF90YWIxZmsgRk9SRUlHTiBLRVko YSkgUkVGRVJFTkNFUyB0ZXN0X3RhYjIoYSk7CitTRUxFQ1QgJ0FMVEVSIFRBQkxFIHRlc3RfdGFi MSBFTkFCTEUgUkVQTElDQSBUUklHR0VSICInIHx8IHRnbmFtZSB8fCAnIicgRlJPTSBwZ190cmln Z2VyIFdIRVJFIHRncmVsaWQgPSAndGVzdF90YWIxJzo6cmVnY2xhc3M6Om9pZCBcXGdleGVjCit9 KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSk7CitJTlNFUlQgSU5UTyB0YWJfbm9wdWJsaWMg U0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVt cF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBG Uk9NIHRlc3RfdGFiMiIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlz aDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVow LTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFi MSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJ JG9mZnNldCk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZr Iik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0 LCBxcSgxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg dGhlIGZvcmVpZ24ga2V5Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitU UlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3 ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9w YXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlHTiBLRVko YSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsKK30pOworCisjIENoZWNrIHRo ZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBs aWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5n IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQp OworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIs IG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFi X3BhdGl0aW9uX2ZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g dG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFy dGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKworJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7 CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRmYTNmNzQ3NjYuLmRjZTUzOGY0MzYgMTAw NjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xODkyLDYgKzE4OTIsNyBAQCBQYWdlWExvZ1Jl Y1B0cgogUGFnZXRhYmxlRW50cnkKIFBhaXJzCiBQYXJhbGxlbEFwcGVuZFN0YXRlCitQYXJhbGxl bEFwcGx5U2FmZXR5CiBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZQogUGFyYWxsZWxCbG9ja1RhYmxl U2NhbkRlc2MKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXIKLS0gCjIuMjMuMC53aW5kb3dz LjEKCg== --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v25-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v25-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v25-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=32204; creation-date="Mon, 29 Aug 2022 11:31:00 GMT"; modification-date="Mon, 29 Aug 2022 11:31:41 GMT" Content-Transfer-Encoding: base64 RnJvbSA4MTRmNzY4OGVhYjllZjFiNmU2OGUyZGE4Yjg4NTYxNmU0MGRlMDY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNSA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxs ZWwgd29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5 aW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9 b24gbW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBv ZiB0aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFz IGJlZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vi c2NyaWJlciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwg YW5kCndoZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhp cyBmbGFnIGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2Fj dGlvbiBoYXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJl dHJ5IgpmaWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAg ICAgICAgIHwgICA5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s ICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAg fCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDE2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAx ODcgKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAg ICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmggICAgICAgICB8ICAgNCArCiAuLi4vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5w bCAgICAgICAgfCAxMzQgKysrKysrLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgMjM2IGluc2Vy dGlvbnMoKyksIDEyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDBkMTI0OTg4NTku LmY2MmRmNzllMmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03OTI3LDYgKzc5MjcsMTUgQEAgU0NSQU0t U0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8 L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZCwgbmVj ZXNzaXRhdGluZyBhIHJldHJ5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5p bmZvPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZTU4ZjVmMTRhNS4uNTRjNjYyZjg5NCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0Niw2ICsyNDYsMTEg QEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vi c2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBhbnkgbm9uLWltbXV0YWJsZSBm dW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQKICAgICAgICAg ICB0YWJsZS4gMykgdGhlcmUgY2Fubm90IGJlIGFueSBmb3JlaWduIGtleXMgdXNlZCBieSB0aGUK ICAgICAgICAgICBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KKyAgICAgICAgICBX aGVuIGFwcGx5aW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBpZiBlaXRoZXIgcmVxdWlyZW1l bnQgaXMgbm90CisgICAgICAgICAgbWV0LCB0aGUgYXBwbHkgcGFyYWxsZWwgd29ya2VyIHdpbGwg ZXhpdCB3aXRoIGFuIGVycm9yLgorICAgICAgICAgIFRoZSA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4gbW9kZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3Rl YWQgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0 ZXJhbD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3Rp dGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMKaW5kZXggYTUwNmZjM2VjOC4uNzIzYjE0MWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3Vi aWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsK IAlzdWItPnR3b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBz dWJmb3JtLT5zdWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAppbmRleCA1YTg0NGI2M2ExLi42NTJkNzZmZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCkBAIC0xMjk5LDcgKzEyOTksNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0 aW9uX29yaWdpbl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlw dGlvbiBGUk9NIHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNu LCBzdWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5 LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAg ICAgICAgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3Jp Z2luKQorICAgICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQs IHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBw dWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggM2RjMDNkYzIyMC4uYWM5MmNi YjMzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjg5LDYg KzY4OSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BF TkRJTkcgOgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERh dHVtKG9wdHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi cmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZv KTsKIAlpZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDBjZGVjNzIyZGMuLmEyN2I3 Zjg2MjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xMzEsNiArMTMxLDE4IEBAIHBhcmFsbGVsX2FwcGx5X2Nh bl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKIAlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQoTXlT dWJzY3JpcHRpb24tPnNraXBsc24pKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIERvbid0 IHVzZSBhcHBseSBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNhdXNlIGl0IGlzIHBvc3Np YmxlCisJICogdGhhdCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEgdHJhbnNhY3Rp b24gdXNpbmcgYW4gYXBwbHkKKwkgKiBhcHBseSB3b3JrZXIgdGhlIGNoZWNrcyBmYWlsZWQgKHNl ZSBmdW5jdGlvbgorCSAqIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKS4KKwkgKi8KKwlp ZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQorCXsKKwkJZWxvZyhERUJVRzEsICJhcHBseSBwYXJh bGxlbCB3b3JrZXJzIGFyZSBub3QgdXNlZCBmb3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7 CisJfQorCiAJLyoKIAkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWlu ZyBhcHBsaWVkIHVzaW5nIGFwcGx5IHBhcmFsbGVsCiAJICogd29ya2VyLCB3ZSBjYW5ub3QgZGVj aWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxhdGlvbiB0aGF0CkBAIC0x MTM3LDcgKzExNDksNSBAQCBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJlbCkKIAkJCQkJCSJzdHJlYW1pbmcgPSBwYXJhbGxlbCIpLAogCQkJCSBl cnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlx dWUgIgogCQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qg b25lICIKLQkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAotCQkJCSBlcnJoaW50 KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzLiIsCi0JCQkJ CQkic3RyZWFtaW5nID0gb24iKSkpOworCQkJCQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24u IikpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDdh ZTYwNjA4MjguLjIzOGRjOGM0YmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0 aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CiAKIHN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9z dWJzY3JpcHRpb24odm9pZCk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRF eGl0KHZvaWQpOworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7 CiAKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENv bW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRf aW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQxMyw2ICs0MTMsOCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwog c3RhdGljIFRyYW5zYWN0aW9uQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlv bihUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCQkJCQkJICAgQXBwbHlQYXJhbGxlbFdvcmtl ckluZm8gKip3aW5mbyk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9v bCByZXRyeSk7CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBmb3Ig Z2l2ZW4gcmVsYXRpb24uCiAgKgpAQCAtOTYzLDYgKzk2NSw5IEBAIGFwcGx5X2hhbmRsZV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0 X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29t bWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwNzIsNiArMTA3Nyw5IEBAIGFwcGx5X2hhbmRsZV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRh LmVuZF9sc24pOwogCkBAIC0xMTIyLDYgKzExMzAsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0 aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAK QEAgLTExNzcsNiArMTE4OCw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyog UHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxl bC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5k X2xzbik7CiAKQEAgLTEyNDcsNiArMTI2MSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFy ZShTdHJpbmdJbmZvIHMpCiAJCQkgcHJlcGFyZV9kYXRhLnhpZCk7CiAKIAkJc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCS8qIFJlc2V0IHRoZSByZXRyeSBm bGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAJZWxzZSBpZiAo YXBwbHlfYWN0aW9uID09IFRBX1NFUklBTElaRV9UT19GSUxFKQogCXsKQEAgLTEyNjUsNiArMTI4 Miw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAkJLyog VW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZv LiAqLwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBw cmVwYXJlX2RhdGEueGlkKTsKKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0 X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQogCWVsc2UKIAkJQXNzZXJ0KGZhbHNlKTsK QEAgLTE2NDMsNiArMTY2Myw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBzKQogCiAJCQllbG9nKERFQlVHMSwgInN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IHdhcyBhYm9y dGVkIHVzaW5nIGFuIGFwcGx5IHBhcmFsbGVsIHdvcmtlciIsCiAJCQkJIHhpZCk7CisKKwkJCS8q IFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxz ZSk7CiAJCX0KIAl9CiAJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFUklBTElaRV9UT19G SUxFKQpAQCAtMTY1Miw2ICsxNjc1LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQogCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCiAJCSAqLwogCQlzZXJpYWxpemVf c3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNl KTsKIAl9CiAJZWxzZQogCQlBc3NlcnQoZmFsc2UpOwpAQCAtMTg0Miw2ICsxODY5LDkgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkgKiBzdWJza2lwbHNuLgog CQkgKi8KIAkJY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9s c24pOworCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKIAl9CiAJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFUklBTEla RV9UT19GSUxFKQogCXsKQEAgLTE4NTUsNiArMTg4NSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKIAogCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFs aXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkJLyogUmVzZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAllbHNlCiAJ CUFzc2VydChmYWxzZSk7CkBAIC0zOTA0LDIwICszOTM3LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdf Q0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNv dmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJ CUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9m QW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVS UlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5 bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1 YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxl b25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJ CS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9u aXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhl IHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwot CQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlw dGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2Ny aXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUg cmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9j X2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsKIApAQCAtMzk0MiwyMCArMzk4MywyNyBAQCBz dGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsK IAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20g dGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5U RVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNh Y3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsK KworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAq LworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3Jp cHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0J CWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBh cHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28g dGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgot CQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRf c3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29y a2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhS T1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQyMTcsMzkgKzQyNjUs MjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIg ZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2Fj dGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBp biBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKQogewotCS8q Ci0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Ig c3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0K LQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVz aEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhl IHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBw bHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlz YWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlE aXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlz YWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBk aXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9u IHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIGFuIGVycm9yIiwK IAkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwotCi0JcHJvY19leGl0KDApOwogfQogCiAv KgpAQCAtNDUxNSwzICs0NTQ0LDY3IEBAIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsIEFwcGx5UGFyYWxsZWxXb3JrZXJJbmZvICoqd2luZm8pCiAJZWxzZQog CQlyZXR1cm4gVEFfU0VSSUFMSVpFX1RPX0ZJTEU7CiB9CisKKy8qCisgKiBTZXQgc3VicmV0cnkg b2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkgaXMgdHJ1ZSwgc3Vi c2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVyd2lzZSwgaXQKKyAq IG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAq Lworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlS ZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7 CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tO YXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0 aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0aGVuIG5vdGhpbmcg dG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5KQorCQlyZXR1cm47 CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBhcHBseSBwYXJhbGxlbCB3b3JrZXJzICovCisJ aWYgKGFtX2FwcGx5X3BhcmFsbGVsX3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJh bnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3Rh cnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRo ZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElP Tk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOwor CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRp b24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9j a1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lk LCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICov CisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFs c2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBs YWNlcykpOworCisJLyogUmVzZXQgc3VicmV0cnkgKi8KKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShyZXRyeSk7CisJcmVwbGFjZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFwX21v ZGlmeV90dXBsZSh0dXAsIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKKwkJ CQkJCQlyZXBsYWNlcyk7CisKKwkvKiBVcGRhdGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxvZ1R1 cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJLyogQ2xlYW51cC4gKi8KKwlo ZWFwX2ZyZWV0dXBsZSh0dXApOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChz dGFydGVkX3R4KQorCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAxM2M4ZTEwYjcxLi44MWQ1NjZkMmUxIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKQEAgLTQ1MDcsOCArNDUwNyw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2 ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2Ny aXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFz Ci0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBi ZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVk ZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3Rv cmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4K IAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQg PSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCAyMzJlNjZiOTk4Li40ZGE2MWI0YTA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEw MCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAli b29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNh dXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwli b29sCQlzdWJyZXRyeSBCS0lfREVGQVVMVChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBw bHkgY2hhbmdlIGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFi bGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8g dGhlIHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsK QEAgLTEzMSw2ICsxMzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlk aXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQog CQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJ CQkJCSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgcHJl dmlvdXMgYXBwbHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpjb25u aW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAg ICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAg ICpzeW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJh bGxlbF9zYWZldHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3Bh cmFsbGVsX3NhZmV0eS5wbAppbmRleCAyNGJkNTRmYjU1Li43N2ZlYzRlZThjIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3Nh ZmV0eS5wbApAQCAtODEsNyArODEsOCBAQCBteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0 aGUgcmVsYXRpb24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBj b2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVwb3J0ZWQg YnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgZXJyb3IgcmVwb3J0ZWQgYnkgcGFy YWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluCisjIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHku CiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGlu ZGV4IG9uIG5vcm1hbCB0YWJsZS4KQEAgLTEwNiw2ICsxMDcsMTAgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZHVwbGlj YXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaWR4X3RhYjEiLywKKwkk b2Zmc2V0KTsKKwogIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBJTkRFWCBpZHhfdGFiMSIpOwogCkBAIC0xMTQsNyArMTE5LDcgQEAgJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWIxIik7Ci1pcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0 byByZXRyeSBhcHBseScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9u bWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYjEiKTsKQEAgLTEzNSwxOSArMTQwLDIxIEBAICRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vi c2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAK LSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3Mu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVz dF90YWJfYl9wYXJ0aXRpb25faWR4Iik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVj YXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhl IHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CiAKICMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJl IG5vdCBhbGxvd2VkIG9uIHRoZQogIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciBy ZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVk CisjIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTE2OCwxNyArMTc1 LDYgQEAgQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlCiBCRUZPUkUgSU5TRVJUIE9OIHB1 YmxpYy50ZXN0X3RhYjEKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1 bmNfdGFiMV91bnNhZmUoKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBU UklHR0VSIHRyaV90YWIxX3Vuc2FmZTsKLQotQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190 YWIxX3NhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAotICBCRUdJTgotICAgIFJBSVNFIE5P VElDRSAndGVzdCBmb3Igc2FmZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKLQlSRVRVUk4gTkVXOwotICBF TkQKLVwkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKLUFMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190 YWIxX3NhZmUgSU1NVVRBQkxFOwotQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQotQkVGT1JF IElOU0VSVCBPTiBwdWJsaWMudGVzdF90YWIxCi1GT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURV UkUgdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpOwogfSk7CiAKICMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgpAQCAtMjAzLDI3ICsxOTksMjUgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgVXNpbmcg dHJpZ2dlciB3aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90 YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKLURST1AgVFJJR0dFUiB0 cmlfdGFiMV91bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKLX0pOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5 IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMiIvLAorCSRvZmZzZXQp OworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdv cmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVY IGlkeF90YWIyIik7CiAKICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8g YmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1p cygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVz aW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3Rh YjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJP UCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5j dGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVu Y190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsIHFxewpAQCAtMjU2LDIxICsyNTAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRo ZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9O IHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDAp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiB0cmlnZ2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5z ZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Np b24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVy IHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBwYXJhbGxlbCB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjaworIyBpZiB0aGUgZGF0YSBpcyByZXBsaWNh dGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4K QEAgLTMwOCwxNyArMzAzLDEzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGlt bXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBi IFNFVCBERUZBVUxUIDEiKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEi KTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZh bHVlJyk7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgRFJPUCBDT0xVTU4gYiIpOwpAQCAtMzQ0LDIyICszMzUsMjMgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBz dWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsK IAotIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4K LSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KICMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQs IHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScpOwor CisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24g Y29udGFpbnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNp ZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbAotIyB3b3JrZXIgaW4gdGhp cyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBw bHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3Nm dWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBl IG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CkBA IC00MDAsMTcgKzM5MiwxMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9 IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJl c3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2No ZWNrIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVz dWx0LCBxcSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNp bmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAogIyBDbGVhbiB1cCB0ZXN0 IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCkBAIC00MjQsOSArNDEyLDEwIEBAIFRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24K LSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIHdvcmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg Y29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlv biBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFy YWxsZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVs bHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTQ1OSwyMyArNDQ4LDE2IEBAICRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5n IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQp OwogCi0jIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lv biwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIx X3Vuc2FmZTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIx X3NhZmUgQ0hFQ0soYSA+PSAwKTsKLX0pOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWlu dCcpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIx IERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlO VCBjb25zdF90YWIxX3Vuc2FmZSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bv c3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBAIC00OTgsMjEgKzQ4MCwy MiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJf cGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFy YWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90 YWJfY29uIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9u ZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7 CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlv biBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVy IHNpZGUuIENoZWNrIHRoZSBlcnJvcgotIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBB bmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkKKyMgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0 YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAj IEZpcnN0IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCkBAIC01NTMs OCArNTM2LDggQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxl bC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3Rf dGFiMWZrIik7CisjIEluc2VydCBkZXBlbmRlbnQgZGF0YSBvbiB0aGUgcHVibGlzaGVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKIAogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtNTYyLDkgKzU0NSwxMCBA QCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJHJlc3VsdCA9 CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSgxKSwKLQknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9y ZWlnbiBrZXknKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRl c3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWIxZmsiKTsKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOwpA QCAtNTkwLDE3ICs1NzQsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWdu IGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJf cGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwotCiAjIFdh aXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFw cGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0 LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBh ZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVpZ24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9y ZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24g RFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CiAKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS0PR01MB5716DB4C67394D1676429D3594769OS0PR01MB5716jpnp_--