From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id BBED77803D8 for ; Tue, 25 Jul 2023 06:54:30 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=whTOQL+QlM92pTw+Tnk4JlhEnBYTbjjv6Ah7PI9NScQ=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:X-IronPort-AV:X-IronPort-AV:X-Received:X-ExtLoop1:X-IronPort-AV:X-IronPort-AV:X-Received:X-Received:X-Received:X-Received:X-Received:ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:X-Received:X-Received:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator:x-ms-publictraffictype:x-ms-traffictypediagnostic:x-ms-office365-filtering-correlation-id:x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay:x-microsoft-antispam-message-info:x-ms-exchange-antispam-messagedata-chunkcount:x-ms-exchange-antispam-messagedata-0:MIME-Version:X-MS-Exchange-CrossTenant-AuthAs:X-MS-Exchange-CrossTenant-AuthSource:X-MS-Exchange-CrossTenant-Network-Message-Id:X-MS-Exchange-CrossTenant-originalarrivaltime:X-MS-Exchange-CrossTenant-fromentityheader:X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype:X-MS-Exchange-CrossTenant-userprincipalname:X-MS-Exchange-Transport-CrossTe nantHeadersStamped:X-OriginatorOrg:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:X-Gm-Message-State:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1690268069; v=1; b=X469RAfhyIFMMF9OKqbeIcvswfDr65kZuP+T47aYRsK8IROjnjsmj0eWmgWlASCiQR6tuoa7 vLZajNp4Lrvay/rMcjkYaEf8UmIMHVqNKb95ZRu8ugTIHJwUpH725EHrNHnYckXebHD9gOECgFx KDgz0uSg/6eZ8okESfauAG2k= X-Received: by 127.0.0.2 with SMTP id P1V6YY7687511xliz4HaP9nw; Mon, 24 Jul 2023 23:54:29 -0700 X-Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.15003.1690268067578401346 for ; Mon, 24 Jul 2023 23:54:28 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="347243525" X-IronPort-AV: E=Sophos;i="6.01,230,1684825200"; d="scan'208";a="347243525" X-Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jul 2023 23:54:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10781"; a="1056699156" X-IronPort-AV: E=Sophos;i="6.01,230,1684825200"; d="scan'208";a="1056699156" X-Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 24 Jul 2023 23:54:18 -0700 X-Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 24 Jul 2023 23:54:18 -0700 X-Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Mon, 24 Jul 2023 23:54:17 -0700 X-Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Mon, 24 Jul 2023 23:54:17 -0700 X-Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.41) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Mon, 24 Jul 2023 23:54:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zobb2DXIbtQqN7/wq8v+ZM48QtFzZYRS6IaRUw3oEXZ5e0MAsAdPit5coGDTeuyWI/dzLlqu5pdLFPzJMfzJhPo3DPmixc0fGjcp34ayJRykX7cwgFwGnrJ3ivJQKA7/tbENOlmcrKbePxby5YgaIgbE+FsRDVrT6nkNAvZgNTQhPngCvP0jNUVYYibuCnoPd2XWNAbdJWTjI+Oqn6gwK71haE/ymRBSbYZ9vOJV0igfLgom6n2BK9q8+v/h5r9QUUjTzRQsi/ERxEElL4Eu07q2SaJALoCZ8LkFW6gnaePx+pphJsOvVTVirccMHvIphRpuuVHdBvnrHp6odWFpWw== 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=jKfC7jPhSjNBHqNJLGlBOd0mwmaf0s2Wtiq6+ApJE9g=; b=LPNHURYOxE3zR1K8OEAX5gdUmqkhqhjif7mDu9Tcfn97YKvP5adKb/ADq8dtR6QSIzM5blDRAw3lW3ioRhdYD8O9b9BodbBs4yNkZGDxGr27pz9R0tAOHXFavlKC7+E57dTTzqCrAV+6W4EQNw6WvU+FxkhjJHUo0vhYWnhaOcEwRllKnkYRWRjc5Ll11VypNwCpxIz1IoIWlUz9/+HL1gO4Apx2E7y5qZhixWwyKGxfjVUvCqX0IbJvVRMNrUhaHrDgexhIK8c6NZgi16Kc+x9g+SPppR8cqBQ6IbK0A7Scl/G3e0+JXiWycHWlGOAEOqu9H0vS7r6CuBUofSt/FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from PH0PR11MB4870.namprd11.prod.outlook.com (2603:10b6:510:34::16) by SJ0PR11MB5101.namprd11.prod.outlook.com (2603:10b6:a03:2dc::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.28; Tue, 25 Jul 2023 06:54:09 +0000 X-Received: from PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::ba0e:bc7b:e340:96ee]) by PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::ba0e:bc7b:e340:96ee%4]) with mapi id 15.20.6609.032; Tue, 25 Jul 2023 06:54:09 +0000 From: "Sheng Wei" To: "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Xu, Min M" , "Chen, Zeyi" , "Wang, Fiona" Subject: Re: [edk2-devel] [PATCH v4] SecurityPkg/SecureBoot: Support RSA 512 and RSA 384 Thread-Topic: [PATCH v4] SecurityPkg/SecureBoot: Support RSA 512 and RSA 384 Thread-Index: AQHZr+DNl8za4+/quE24xPFTUFDPv6/KGQ2wgAAQm1A= Date: Tue, 25 Jul 2023 06:54:09 +0000 Message-ID: References: <20230706080626.1667-1-w.sheng@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB4870:EE_|SJ0PR11MB5101:EE_ x-ms-office365-filtering-correlation-id: 26e9475e-469a-4157-03d9-08db8cdbf238 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: V7KlBezN9yvf4IAMoDm7yKBlraOWpHJfnCPEfBQX3fgXlekGmev3gkQNXlGZSEsr06qhmtgEBpOkWaYhPAfJX8h72wrckDk0rW/V0lziAKR5PxD00FamheOIeyBf0YCW6nYY2GXxtTBsFs1typPGe6gnN0WjoSsz+svH5jVq23EFBEaSCsNuGGO831RNYEBySfDBoZZCpzq/c7AenOVk4IhOi+qM6zq667daEaHUwurbqek99dij3fMho3lgp6PQ5ZRZGCVkw1HTroPO2Rt4SWyuTOgzJCVhAoXCotNuCpWYDW5/W+QphPJPXyLpU2M9U86yHF7DqyOBploeWQ9D51A2+A49vZZNGPHwI5JIH9fchpWm4VVU7V/KgM+thyw2xslHX1kgsWwoBX8PI2Lg9HaQ2ASv0ZK05FP4+vZd/qip+g97gMwqpbGV1DIam93lzytcZzvNKWW1fCIh58VFGlWt/z3yECFfgSfIfs5WJtCbWaJdmDaGQ+mnEu5/odKiptaOn2o8pdFXNa8x4zXWsw6x4V+T7URpK3USAIu9NLDvuhXMR6woZm5PZuGtH6yAJs7Tu+Wfedks3AmnfCI7ULsTTdtxLdR/5zz7yWRFxN1K0RsDQkjRWpJWFC0KrfJH x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?SHV3UEw3Q3pmTytpaXlPUU1IMDBhbUcrMlY4QkpBUXpHdEJGQnlYWU9sYkw5?= =?gb2312?B?NkJSeWNEelBkR1ZSMW1jS2tRcGszQm0yNFlwNEQ5N01kRlpDbkdmWXJsVEx4?= =?gb2312?B?enljSm54N05vTno5VFZ2WEpHRXJqVjgrMXFiamhTQ0t0amhIMzZYVDl5OUt1?= =?gb2312?B?UnlZelJkaFRCeG9HS1VCZERIOVhzQ3F1SHN0cURNcG84Wkt1MEhBcExjdE80?= =?gb2312?B?Tjd0U2hZMTFHSms1NUg5TVoxaEFsWTg1K3Z0WDUzUmtVdENtdjM3ODU5TjBu?= =?gb2312?B?UU5KOXM5WFQ5c1UzSWtpRzFTQjh6YUM4SDNaUHltYUoya3ZhQ01GRytNMXVH?= =?gb2312?B?cnNSV01XY1pCZ0NQNHFqbzVWNzRYWlV6TnJGZktEbXFTcWt1OWxuMy9wZGkx?= =?gb2312?B?NVpiS21rWml4QUdjWGJjeWVlb2UyaklydVBGZ3VBbjBQaVlMb3hxOG8xci9X?= =?gb2312?B?dmVOMUwzc1FjMjd2eTdleUpGallxanVSV3JqcmM4enpCODlaMi9WTXBxNzZJ?= =?gb2312?B?RWJtRnZ6emVhZFVnQkhFZEhHYkY4VUs1cGtHYVlOeUUwVldHT0Mva3pIZ0Zy?= =?gb2312?B?NlJqb3lIUnpWWDZ1Yk1VSUhHRllEQmFKMVBweXg5dWtMSnQ2RCtjT04wdzhP?= =?gb2312?B?Yzd3SWxvNDgzVXdOL0x6ZFlvUDJId29TZDgvM1BrempINDEwK1ArNCt3Q3VS?= =?gb2312?B?MkNaK29NN3dpaXBHRGN4ZXFDODNKQkorc3hRQ0paSUVOb1NrZmxnWk9GOHlC?= =?gb2312?B?VlNaTUxQaEpQOTcweEoxYkR2dnBQdXpaVCtjOTc2NkJoTUh0b1VPemZudS9z?= =?gb2312?B?TnpHZzlRUGxmaHFrL2d4c3ZJNGhMSUJiOWpnaHI5Z0c5YVlSMXJNdzlwbllr?= =?gb2312?B?ZSs1SGhwZ0ZFMitzNG5iRFNNbmxkZnpxSklTRk5FUmdpT1pMZGxkVG9FRDIv?= =?gb2312?B?b1UwUWxQWXpIUmpRZ2RQVXpKUStxZ1pQSU9aYzlqeEhaMmd0aUt1a1J2dUVk?= =?gb2312?B?YjF6N2ZFSDZvWWF5YVFTMVl6ZCtEY2xWSmxGK0cxb0JMMitYQ05wM3U5Y3E2?= =?gb2312?B?NE1ldVBwNCttL0JLYXNJYjFrOU5weUEzNndld204VHRYUlFEOGJoQ2I0WFBp?= =?gb2312?B?aWpTcUhza0c4K3NrelI3dEY3c1F5MWoyQjJnOXJLYnVMOXlnSWhML2h6ajJD?= =?gb2312?B?MS9SeUVwRkh5bjhzZEEwZlk0RzVSdVBhZW5lM1lhNXpoaHRkclVPMXJBNXpx?= =?gb2312?B?N0ZzMVpMQnNJZVhxbmQzc1RnYlQwdHB3SGpibVZvakRtOGM1SWZOSjVyM0Q1?= =?gb2312?B?UFA4N0lpbDcvWDhwYW5mL1ZsRTJXQ0pOdmpjZVhkSHd4ZDMwVGs1UWJlK29w?= =?gb2312?B?MTlVY0hhdEVLd3MvZy8zZVBXZmQrK1B6Zy9ucTMydXJiQ1BNTFdBZ3BTMXFl?= =?gb2312?B?MDdYYUNrN3BTT21FYWRJVmNaT0l5QnVIdHQzakZUQUYwQ0xwWUxOK2I5MVpM?= =?gb2312?B?SDZCRkpjcTIrZkhDSG1kcVNmZXJ5MmcvTGlvOEl6RUp4US9oNWw5dUU2NU1m?= =?gb2312?B?d2pjeFBRVDgvWWxGYVBlSHVxeGF2N2xBMTVieC96VHlBaVVGcVdwVVl2Nk9J?= =?gb2312?B?b2Y3Z2hSRzR2MHFRd3ExQTVZSytvbk80Q3IzdFN3QzVmenVUQm4wbzYwUlhx?= =?gb2312?B?WlMxeklnZVNzdm8wNUNCbGQxdGFkTktkcXdrQTQ4NU5FUjdBWlNncVFzbFRn?= =?gb2312?B?SVU3N1RTZlpGVnVoaUkrZzNDTmhvaDM0VW1NeTJJanpmWXowZ05SL3ZMVms2?= =?gb2312?B?dkFJWjVWS0IzNHF3RUppM0RUTDBKRyt4TnJEWWU5MVRJRDVTaUcrRkwvenQ2?= =?gb2312?B?U1M2Y1o3WVVJYlpENVMxYkJ6QXJlS1JTS3hWaDVvU20vb2t0UFFVTnFqa1Fw?= =?gb2312?B?QkRkK242ZHRnam82Mjd0ZHNsN2RMZ3hIeGNNTHk4RXVoZjR5RG1iZG9TV3lS?= =?gb2312?B?Y2NMSFZtLzNrNEYreWNzOStPbjRoYlMxSHRhN1hMNk0wc1RyL2RTM1NmRVBJ?= =?gb2312?B?M0p3d3JXdFpFUVZGS3BoYWNFTzFkSzU2ZWIvclFESkNJcGRmSzNjYUhvNTNJ?= =?gb2312?Q?LqME=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4870.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26e9475e-469a-4157-03d9-08db8cdbf238 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jul 2023 06:54:09.2148 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZLS+XalWXCMOu7T2cOKd29fOC6b9zRZ+b59V85um9tCnTaFLc+3CuObxbfX7ciUjRn7O1vIXjDR5fgzSYO0D5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5101 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,w.sheng@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: XY2dMHUd2MH5MkSbJCsccayCx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=X469RAfh; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SGkgSmlld2VuLA0KVGhhbmsgeW91IGZvciB0aGUgY29tbWVudHMuDQpJIHdpbGwgdXBkYXRlIHRo ZSBwYXRjaCBhbmQgZm9sbG93IHRoZSBwcm9jZXNzLg0KQlINClNoZW5nIFdlaQ0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4NCj4gU2VudDogMjAyM8TqN9TCMjXI1SAxNDowNg0KPiBUbzogU2hlbmcsIFcgPHcu c2hlbmdAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFdhbmcsIEppYW4g SiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWHUsIE1pbiBNIDxtaW4ubS54dUBpbnRlbC5jb20+ Ow0KPiBDaGVuLCBaZXlpIDx6ZXlpLmNoZW5AaW50ZWwuY29tPjsgV2FuZywgRmlvbmEgPGZpb25h LndhbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHY0XSBTZWN1cml0eVBrZy9T ZWN1cmVCb290OiBTdXBwb3J0IFJTQSA1MTIgYW5kIFJTQQ0KPiAzODQNCj4gDQo+IFRoYW5rcyBm b3IgdGhlIHVwZGF0ZSwgV2VpLg0KPiANCj4gRnJvbSBwcm9jZXNzIHBlcnNwZWN0aXZlLCBwbGVh c2UgYWx3YXlzIGRvIGZvbGxvd2luZzoNCj4gDQo+IDEpIFBsZWFzZSBkZXNjcmliZSB3aGF0IGlz IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyB2ZXJzaW9uIGFuZCBwcmV2aW91cw0KPiB2ZXJz aW9uLiBBcyBzdWNoLCB3ZSBjYW4ga25vdyB3aGF0IGlzIGRlbHRhIGFuZCB3ZSBjYW4gZm9jdXMg b24gdGhlIGRlbHRhLg0KPiANCj4gMikgUGxlYXNlIGRlc2NyaWJlIHdoYXQgdGVzdCBoYXMgYmVl biBkb25lIGZvciB0aGlzIHNwZWNpZmljIHZlcnNpb24uIFN1Y2ggYXMNCj4gdW5pdCB0ZXN0LCBp bnRlZ3JhdGlvbiB0ZXN0LCBldGMuDQo+IA0KPiAzKSBQbGVhc2Ugc3BsaXQgdGhlIHBhdGNoIGJh c2VkIHVwb24gcGFja2FnZS4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIG5lZWQNCj4gZGlmZmVyZW50 IHJldmlld2VyIGZvciBlYWNoIHBhY2thZ2UuDQo+IA0KPiANCj4gRm9yIHRoZSBwYXRjaCwgSSBo YXZlIGJlbG93IGNvbW1lbnQ6DQo+IA0KPiAxKSBQbGVhc2UgZG9uJ3QgdXNlIG1hZ2ljIG51bWJl ci4gUGxlYXNlIGFsd2F5cyBkZWZpbmUgTUFDUk8gZm9yIGJldHRlcg0KPiBtYWludGVuYW5jZS4N Cj4gDQo+ICsgIGlmIChLZXlJbmZvLT5LZXlUeXBlID09IDApIHsNCj4gDQo+IFBsZWFzZSB1c2Ug ImlmIChLZXlJbmZvLT5LZXlUeXBlID09IEtFWV9UWVBFX1JTQVNTQSkgeyINCj4gDQo+IA0KPiBU aGFuayB5b3UNCj4gWWFvLCBKaWV3ZW4NCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4gRnJvbTogU2hlbmcsIFcgPHcuc2hlbmdAaW50ZWwuY29tPg0KPiA+IFNlbnQ6 IFRodXJzZGF5LCBKdWx5IDYsIDIwMjMgNDowNiBQTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbw0KPiA+IENjOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBXYW5nLCBK aWFuIEoNCj4gPiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWHUsIE1pbiBNIDxtaW4ubS54dUBp bnRlbC5jb20+OyBDaGVuLCBaZXlpDQo+ID4gPHpleWkuY2hlbkBpbnRlbC5jb20+OyBXYW5nLCBG aW9uYSA8ZmlvbmEud2FuZ0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogW1BBVENIIHY0XSBTZWN1 cml0eVBrZy9TZWN1cmVCb290OiBTdXBwb3J0IFJTQSA1MTIgYW5kIFJTQQ0KPiA+IDM4NA0KPiA+ DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTM0MTMNCj4gPg0KPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4g PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogTWluIFh1 IDxtaW4ubS54dUBpbnRlbC5jb20+DQo+ID4gQ2M6IFpleWkgQ2hlbiA8emV5aS5jaGVuQGludGVs LmNvbT4NCj4gPiBDYzogRmlvbmEgV2FuZyA8ZmlvbmEud2FuZ0BpbnRlbC5jb20+DQo+ID4gU2ln bmVkLW9mZi1ieTogU2hlbmcgV2VpIDx3LnNoZW5nQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAg Q3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0VHMuYyAgIHwgICAzICstDQo+ ID4gIE1kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oICAgICB8ICAyNiAr KysNCj4gPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICsNCj4gPiAgLi4uL0xpYnJhcnkvQXV0aFZhcmlhYmxlTGliL0F1dGhTZXJ2aWNlLmMgICAg IHwgMjIwICsrKysrKysrKysrKysrKy0tLQ0KPiA+ICAuLi4vQXV0aFZhcmlhYmxlTGliL0F1dGhT ZXJ2aWNlSW50ZXJuYWwuaCAgICAgfCAgIDQgKy0NCj4gPiAgLi4uL0xpYnJhcnkvQXV0aFZhcmlh YmxlTGliL0F1dGhWYXJpYWJsZUxpYi5jIHwgIDQyICsrLS0NCj4gPiAgLi4uL0R4ZUltYWdlVmVy aWZpY2F0aW9uTGliLmMgICAgICAgICAgICAgICAgIHwgIDczICsrKy0tLQ0KPiA+ICAuLi4vU2Vj dXJlQm9vdENvbmZpZ0R4ZS5pbmYgICAgICAgICAgICAgICAgICAgfCAgMTYgKysNCj4gPiAgLi4u L1NlY3VyZUJvb3RDb25maWdJbXBsLmMgICAgICAgICAgICAgICAgICAgIHwgMTE0ICsrKysrKyst LQ0KPiA+ICAuLi4vU2VjdXJlQm9vdENvbmZpZ0ltcGwuaCAgICAgICAgICAgICAgICAgICAgfCAg IDIgKw0KPiA+ICAuLi4vU2VjdXJlQm9vdENvbmZpZ1N0cmluZ3MudW5pICAgICAgICAgICAgICAg fCAgIDYgKw0KPiA+ICAxMSBmaWxlcyBjaGFuZ2VkLCA0MTYgaW5zZXJ0aW9ucygrKSwgOTIgZGVs ZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNy eXB0TGliL1BrL0NyeXB0VHMuYw0KPiA+IGIvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGli L1BrL0NyeXB0VHMuYw0KPiA+IGluZGV4IDAyN2RiYjY4NDIuLjk0NGJjZjhkMzggMTAwNjQ0DQo+ ID4gLS0tIGEvQ3J5cHRvUGtnL0xpYnJhcnkvQmFzZUNyeXB0TGliL1BrL0NyeXB0VHMuYw0KPiA+ ICsrKyBiL0NyeXB0b1BrZy9MaWJyYXJ5L0Jhc2VDcnlwdExpYi9Qay9DcnlwdFRzLmMNCj4gPiBA QCAtNTkxLDcgKzU5MSw4IEBAIEltYWdlVGltZXN0YW1wVmVyaWZ5ICgNCj4gPiAgICAvLyBSZWdp c3RlciAmIEluaXRpYWxpemUgbmVjZXNzYXJ5IGRpZ2VzdCBhbGdvcml0aG1zIGZvciBQS0NTIzcg SGFuZGxpbmcuDQo+ID4NCj4gPiAgICAvLw0KPiA+DQo+ID4gICAgaWYgKChFVlBfYWRkX2RpZ2Vz dCAoRVZQX21kNSAoKSkgPT0gMCkgfHwgKEVWUF9hZGRfZGlnZXN0IChFVlBfc2hhMQ0KPiA+ICgp KSA9PSAwKQ0KPiA+IHx8DQo+ID4NCj4gPiAtICAgICAgKEVWUF9hZGRfZGlnZXN0IChFVlBfc2hh MjU2ICgpKSA9PSAwKSB8fCAoKEVWUF9hZGRfZGlnZXN0X2FsaWFzDQo+ID4gKFNOX3NoYTFXaXRo UlNBRW5jcnlwdGlvbiwgU05fc2hhMVdpdGhSU0EpKSA9PSAwKSkNCj4gPg0KPiA+ICsgICAgICAo RVZQX2FkZF9kaWdlc3QgKEVWUF9zaGEyNTYgKCkpID09IDApIHx8IChFVlBfYWRkX2RpZ2VzdA0K PiA+ICsgKEVWUF9zaGEzODQgKCkpDQo+ID4gPT0gMCkgfHwNCj4gPg0KPiA+ICsgICAgICAoRVZQ X2FkZF9kaWdlc3QgKEVWUF9zaGE1MTIgKCkpID09IDApIHx8ICgoRVZQX2FkZF9kaWdlc3RfYWxp YXMNCj4gPiAoU05fc2hhMVdpdGhSU0FFbmNyeXB0aW9uLCBTTl9zaGExV2l0aFJTQSkpID09IDAp KQ0KPiA+DQo+ID4gICAgew0KPiA+DQo+ID4gICAgICByZXR1cm4gRkFMU0U7DQo+ID4NCj4gPiAg ICB9DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhl bnRpY2F0aW9uLmgNCj4gPiBiL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlv bi5oDQo+ID4gaW5kZXggZmU4MzU5NjU3MS4uYzhlYTJjMTRmYiAxMDA2NDQNCj4gPiAtLS0gYS9N ZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaA0KPiA+ICsrKyBiL01kZVBr Zy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oDQo+ID4gQEAgLTE0NCw2ICsxNDQs MzAgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICAgICAgMHgzYzU3NjZlOCwgMHgyNjljLCAweDRl MzQsIHsweGFhLCAweDE0LCAweGVkLCAweDc3LCAweDZlLCAweDg1LA0KPiA+IDB4YjMsIDB4YjZ9 IFwNCj4gPg0KPiA+ICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiArLy8vDQo+ID4NCj4gPiArLy8v IFRoaXMgaWRlbnRpZmllcyBhIHNpZ25hdHVyZSBjb250YWluaW5nIGFuIFJTQS0zMDcyIGtleS4g VGhlIGtleQ0KPiA+ICsob25seSB0aGUNCj4gPiBtb2R1bHVzDQo+ID4NCj4gPiArLy8vIHNpbmNl IHRoZSBwdWJsaWMga2V5IGV4cG9uZW50IGlzIGtub3duIHRvIGJlIDB4MTAwMDEpIHNoYWxsIGJl DQo+ID4gK3N0b3JlZCBpbiBiaWctDQo+ID4gZW5kaWFuDQo+ID4NCj4gPiArLy8vIG9yZGVyLg0K PiA+DQo+ID4gKy8vLyBUaGUgU2lnbmF0dXJlSGVhZGVyIHNpemUgc2hhbGwgYWx3YXlzIGJlIDAu IFRoZSBTaWduYXR1cmVTaXplDQo+ID4gK3NoYWxsIGFsd2F5cyBiZQ0KPiA+IDE2IChzaXplDQo+ ID4NCj4gPiArLy8vIG9mIFNpZ25hdHVyZU93bmVyIGNvbXBvbmVudCkgKyAzODQgYnl0ZXMuDQo+ ID4NCj4gPiArLy8vDQo+ID4NCj4gPiArI2RlZmluZSBFRklfQ0VSVF9SU0EzMDcyX0dVSUQgXA0K PiA+DQo+ID4gKyAgeyBcDQo+ID4NCj4gPiArICAgIDB4ZWRkMzIwYzIsIDB4YjA1NywgMHg0Yjhl LCB7MHhhZCwgMHg0NiwgMHgyYywgMHg5YiwgMHg4NSwgMHg4OSwNCj4gPiArIDB4ZWUsDQo+ID4g MHg5MiB9IFwNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsvLy8NCj4gPg0K PiA+ICsvLy8gVGhpcyBpZGVudGlmaWVzIGEgc2lnbmF0dXJlIGNvbnRhaW5pbmcgYW4gUlNBLTQw OTYga2V5LiBUaGUga2V5DQo+ID4gKyhvbmx5IHRoZQ0KPiA+IG1vZHVsdXMNCj4gPg0KPiA+ICsv Ly8gc2luY2UgdGhlIHB1YmxpYyBrZXkgZXhwb25lbnQgaXMga25vd24gdG8gYmUgMHgxMDAwMSkg c2hhbGwgYmUNCj4gPiArc3RvcmVkIGluIGJpZy0NCj4gPiBlbmRpYW4NCj4gPg0KPiA+ICsvLy8g b3JkZXIuDQo+ID4NCj4gPiArLy8vIFRoZSBTaWduYXR1cmVIZWFkZXIgc2l6ZSBzaGFsbCBhbHdh eXMgYmUgMC4gVGhlIFNpZ25hdHVyZVNpemUNCj4gPiArc2hhbGwgYWx3YXlzIGJlDQo+ID4gMTYg KHNpemUNCj4gPg0KPiA+ICsvLy8gb2YgU2lnbmF0dXJlT3duZXIgY29tcG9uZW50KSArIDUxMiBi eXRlcy4NCj4gPg0KPiA+ICsvLy8NCj4gPg0KPiA+ICsjZGVmaW5lIEVGSV9DRVJUX1JTQTQwOTZf R1VJRCBcDQo+ID4NCj4gPiArICB7IFwNCj4gPg0KPiA+ICsgICAgMHhiMjNlODlhNiwgMHg4Yzhi LCAweDQ0MTIsIHsweDg1LCAweDczLCAweDE1LCAweDRlLCAweDhkLCAweDAwLA0KPiA+ICsgMHg5 OCwNCj4gPiAweDJjIH0gXA0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gIC8v Lw0KPiA+DQo+ID4gIC8vLyBUaGlzIGlkZW50aWZpZXMgYSBzaWduYXR1cmUgY29udGFpbmluZyBh IFJTQS0yMDQ4IHNpZ25hdHVyZSBvZiBhIFNIQS0yNTYNCj4gaGFzaC4NCj4gPiBUaGUNCj4gPg0K PiA+ICAvLy8gU2lnbmF0dXJlSGVhZGVyIHNpemUgc2hhbGwgYWx3YXlzIGJlIDAuIFRoZSBTaWdu YXR1cmVTaXplIHNoYWxsDQo+ID4gYWx3YXlzIGJlIDE2IChzaXplIG9mDQo+ID4NCj4gPiBAQCAt MzMwLDYgKzM1NCw4IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiAgZXh0ZXJuIEVGSV9HVUlEICBn RWZpSW1hZ2VTZWN1cml0eURhdGFiYXNlR3VpZDsNCj4gPg0KPiA+ICBleHRlcm4gRUZJX0dVSUQg IGdFZmlDZXJ0U2hhMjU2R3VpZDsNCj4gPg0KPiA+ICBleHRlcm4gRUZJX0dVSUQgIGdFZmlDZXJ0 UnNhMjA0OEd1aWQ7DQo+ID4NCj4gPiArZXh0ZXJuIEVGSV9HVUlEICBnRWZpQ2VydFJzYTMwNzJH dWlkOw0KPiA+DQo+ID4gK2V4dGVybiBFRklfR1VJRCAgZ0VmaUNlcnRSc2E0MDk2R3VpZDsNCj4g Pg0KPiA+ICBleHRlcm4gRUZJX0dVSUQgIGdFZmlDZXJ0UnNhMjA0OFNoYTI1Nkd1aWQ7DQo+ID4N Cj4gPiAgZXh0ZXJuIEVGSV9HVUlEICBnRWZpQ2VydFNoYTFHdWlkOw0KPiA+DQo+ID4gIGV4dGVy biBFRklfR1VJRCAgZ0VmaUNlcnRSc2EyMDQ4U2hhMUd1aWQ7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQa2cvTWRlUGtnLmRlYyBpbmRleA0KPiA+IGQ2YzQx NzliMmEuLmM4OGU4OGZhNmIgMTAwNjQ0DQo+ID4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4g PiArKysgYi9NZGVQa2cvTWRlUGtnLmRlYw0KPiA+IEBAIC01NzEsNiArNTcxLDggQEANCj4gPiAg ICBnRWZpSW1hZ2VTZWN1cml0eURhdGFiYXNlR3VpZCAgPSB7IDB4ZDcxOWIyY2IsIDB4M2QzYSwg MHg0NTk2LA0KPiA+IHsweGEzLCAweGJjLCAweGRhLCAweGQwLCAgMHhlLCAweDY3LCAweDY1LCAw eDZmIH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFNoYTI1Nkd1aWQgICAgICAgICAgICAgPSB7IDB4 YzFjNDE2MjYsIDB4NTA0YywgMHg0MDkyLCB7MHhhYywgMHhhOSwNCj4gMHg0MSwNCj4gPiAweGY5 LCAweDM2LCAweDkzLCAweDQzLCAweDI4IH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFJzYTIwNDhH dWlkICAgICAgICAgICAgPSB7IDB4M2M1NzY2ZTgsIDB4MjY5YywgMHg0ZTM0LCB7MHhhYSwgMHgx NCwNCj4gMHhlZCwNCj4gPiAweDc3LCAweDZlLCAweDg1LCAweGIzLCAweGI2IH19DQo+ID4NCj4g PiArICBnRWZpQ2VydFJzYTMwNzJHdWlkICAgICAgICAgICAgPSB7IDB4ZWRkMzIwYzIsIDB4YjA1 NywgMHg0YjhlLCB7MHhhZCwgMHg0NiwNCj4gMHgyYywNCj4gPiAweDliLCAweDg1LCAweDg5LCAw eGVlLCAweDkyIH19DQo+ID4NCj4gPiArICBnRWZpQ2VydFJzYTQwOTZHdWlkICAgICAgICAgICAg PSB7IDB4YjIzZTg5YTYsIDB4OGM4YiwgMHg0NDEyLCB7MHg4NSwgMHg3MywNCj4gPiAweDE1LCAw eDRlLCAweDhkLCAweDAwLCAweDk4LCAweDJjIH19DQo+ID4NCj4gPiAgICBnRWZpQ2VydFJzYTIw NDhTaGEyNTZHdWlkICAgICAgPSB7IDB4ZTJiMzYxOTAsIDB4ODc5YiwgMHg0YTNkLCB7MHhhZCwN Cj4gMHg4ZCwNCj4gPiAweGYyLCAweGU3LCAweGJiLCAweGEzLCAweDI3LCAweDg0IH19DQo+ID4N Cj4gPiAgICBnRWZpQ2VydFNoYTFHdWlkICAgICAgICAgICAgICAgPSB7IDB4ODI2Y2E1MTIsIDB4 Y2YxMCwgMHg0YWM5LCB7MHhiMSwgMHg4NywgMHhiZSwNCj4gPiAweDEsIDB4NDksIDB4NjYsIDB4 MzEsIDB4YmQgfX0NCj4gPg0KPiA+ICAgIGdFZmlDZXJ0UnNhMjA0OFNoYTFHdWlkICAgICAgICA9 IHsgMHg2N2Y4NDQ0ZiwgMHg4NzQzLCAweDQ4ZjEsIHsweGEzLCAweDI4LA0KPiA+IDB4MWUsIDB4 YWEsIDB4YjgsIDB4NzMsIDB4NjAsIDB4ODAgfX0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9TZWN1 cml0eVBrZy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gYi9TZWN1 cml0eVBrZy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gaW5kZXgg ZDgxYzU4MWQ3OC4uNGMyNjhhODVjZCAxMDA2NDQNCj4gPiAtLS0gYS9TZWN1cml0eVBrZy9MaWJy YXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoU2VydmljZS5jDQo+ID4gKysrIGIvU2VjdXJpdHlQa2cv TGlicmFyeS9BdXRoVmFyaWFibGVMaWIvQXV0aFNlcnZpY2UuYw0KPiA+IEBAIC0yOSwxMiArMjks MTI1IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g I2luY2x1ZGUgPFByb3RvY29sL1ZhcmlhYmxlUG9saWN5Lmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUg PExpYnJhcnkvVmFyaWFibGVQb2xpY3lMaWIuaD4NCj4gPg0KPiA+DQo+ID4NCj4gPiArI2RlZmlu ZSBTSEFfRElHRVNUX1NJWkVfTUFYIFNIQTUxMl9ESUdFU1RfU0laRQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKy8qKg0KPiA+DQo+ID4gKyAgUmV0cmlldmVzIHRoZSBzaXplLCBpbiBieXRlcywgb2Yg dGhlIGNvbnRleHQgYnVmZmVyIHJlcXVpcmVkIGZvciBoYXNoDQo+IG9wZXJhdGlvbnMuDQo+ID4N Cj4gPiArDQo+ID4NCj4gPiArICBJZiB0aGlzIGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0 aGVuIHJldHVybiB6ZXJvLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHJldHVybiAgVGhlIHNp emUsIGluIGJ5dGVzLCBvZiB0aGUgY29udGV4dCBidWZmZXIgcmVxdWlyZWQgZm9yIGhhc2gNCj4g b3BlcmF0aW9ucy4NCj4gPg0KPiA+ICsgIEByZXR2YWwgIDAgICBUaGlzIGludGVyZmFjZSBpcyBu b3Qgc3VwcG9ydGVkLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4gK3R5cGVk ZWYNCj4gPg0KPiA+ICtVSU5UTg0KPiA+DQo+ID4gKyhFRklBUEkgKkVGSV9IQVNIX0dFVF9DT05U RVhUX1NJWkUpKA0KPiA+DQo+ID4gKyAgVk9JRA0KPiA+DQo+ID4gKyAgKTsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsvKioNCj4gPg0KPiA+ICsgIEluaXRpYWxpemVzIHVzZXItc3VwcGxpZWQgbWVt b3J5IHBvaW50ZWQgYnkgU2hhMUNvbnRleHQgYXMgaGFzaA0KPiA+ICsgY29udGV4dCBmb3INCj4g Pg0KPiA+ICsgIHN1YnNlcXVlbnQgdXNlLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgSWYgSGFz aENvbnRleHQgaXMgTlVMTCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4NCj4gPiArICBJZiB0aGlz IGludGVyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPg0KPiA+ ICsNCj4gPg0KPiA+ICsgIEBwYXJhbVtvdXRdICBIYXNoQ29udGV4dCAgUG9pbnRlciB0byBIYXNo Y29udGV4dCBiZWluZyBpbml0aWFsaXplZC4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIEByZXR2 YWwgVFJVRSAgIEhhc2ggY29udGV4dCBpbml0aWFsaXphdGlvbiBzdWNjZWVkZWQuDQo+ID4NCj4g PiArICBAcmV0dmFsIEZBTFNFICBIYXNoIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLg0K PiA+DQo+ID4gKyAgQHJldHZhbCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRl ZC4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsqKi8NCj4gPg0KPiA+ICt0eXBlZGVmDQo+ID4NCj4g PiArQk9PTEVBTg0KPiA+DQo+ID4gKyhFRklBUEkgKkVGSV9IQVNIX0lOSVQpKA0KPiA+DQo+ID4g KyAgT1VUICBWT0lEICAqSGFzaENvbnRleHQNCj4gPg0KPiA+ICsgICk7DQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArLyoqDQo+ID4NCj4gPiArICBEaWdlc3RzIHRoZSBpbnB1dCBkYXRhIGFuZCB1cGRh dGVzIEhhc2ggY29udGV4dC4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24g cGVyZm9ybXMgSGFzaCBkaWdlc3Qgb24gYSBkYXRhIGJ1ZmZlciBvZiB0aGUgc3BlY2lmaWVkIHNp emUuDQo+ID4NCj4gPiArICBJdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNvbXB1 dGUgdGhlIGRpZ2VzdCBvZiBsb25nIG9yDQo+ID4gKyBkaXNjb250aW51b3VzDQo+ID4gZGF0YSBz dHJlYW1zLg0KPiA+DQo+ID4gKyAgSGFzaCBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJl Y3RseSBpbml0aWFsaXplZCBieSBIYXNoSW5pdCgpLA0KPiA+ICsgYW5kIHNob3VsZA0KPiA+IG5v dCBiZSBmaW5hbGl6ZWQNCj4gPg0KPiA+ICsgIGJ5IEhhc2hGaW5hbCgpLiBCZWhhdmlvciB3aXRo IGludmFsaWQgY29udGV4dCBpcyB1bmRlZmluZWQuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBJ ZiBIYXNoQ29udGV4dCBpcyBOVUxMLCB0aGVuIHJldHVybiBGQUxTRS4NCj4gPg0KPiA+ICsgIElm IHRoaXMgaW50ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdICBIYXNoQ29udGV4dCAgUG9pbnRl ciB0byB0aGUgSGFzaCBjb250ZXh0Lg0KPiA+DQo+ID4gKyAgQHBhcmFtW2luXSAgICAgICBEYXRh ICAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUN Cj4gPiBoYXNoZWQuDQo+ID4NCj4gPiArICBAcGFyYW1baW5dICAgICAgIERhdGFTaXplICAgICBT aXplIG9mIERhdGEgYnVmZmVyIGluIGJ5dGVzLg0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgQHJl dHZhbCBUUlVFICAgU0hBLTEgZGF0YSBkaWdlc3Qgc3VjY2VlZGVkLg0KPiA+DQo+ID4gKyAgQHJl dHZhbCBGQUxTRSAgU0hBLTEgZGF0YSBkaWdlc3QgZmFpbGVkLg0KPiA+DQo+ID4gKyAgQHJldHZh bCBGQUxTRSAgVGhpcyBpbnRlcmZhY2UgaXMgbm90IHN1cHBvcnRlZC4NCj4gPg0KPiA+ICsNCj4g Pg0KPiA+ICsqKi8NCj4gPg0KPiA+ICt0eXBlZGVmDQo+ID4NCj4gPiArQk9PTEVBTg0KPiA+DQo+ ID4gKyhFRklBUEkgKkVGSV9IQVNIX1VQREFURSkoDQo+ID4NCj4gPiArICBJTiBPVVQgIFZPSUQg ICAgICAgICpIYXNoQ29udGV4dCwNCj4gPg0KPiA+ICsgIElOICAgICAgQ09OU1QgVk9JRCAgKkRh dGEsDQo+ID4NCj4gPiArICBJTiAgICAgIFVJTlROICAgICAgIERhdGFTaXplDQo+ID4NCj4gPiAr ICApOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKy8qKg0KPiA+DQo+ID4gKyAgQ29tcGxldGVzIGNv bXB1dGF0aW9uIG9mIHRoZSBIYXNoIGRpZ2VzdCB2YWx1ZS4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ ICsgIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIGhhc2ggY29tcHV0YXRpb24gYW5kIHJldHJpZXZl cyB0aGUgZGlnZXN0DQo+ID4gKyB2YWx1ZSBpbnRvDQo+ID4NCj4gPiArICB0aGUgc3BlY2lmaWVk IG1lbW9yeS4gQWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsIHRoZSBIYXNoDQo+ ID4gKyBjb250ZXh0DQo+ID4gY2Fubm90DQo+ID4NCj4gPiArICBiZSB1c2VkIGFnYWluLg0KPiA+ DQo+ID4gKyAgSGFzaCBjb250ZXh0IHNob3VsZCBiZSBhbHJlYWR5IGNvcnJlY3RseSBpbml0aWFs aXplZCBieSBIYXNoSW5pdCgpLA0KPiA+ICsgYW5kIHNob3VsZA0KPiA+IG5vdCBiZQ0KPiA+DQo+ ID4gKyAgZmluYWxpemVkIGJ5IEhhc2hGaW5hbCgpLiBCZWhhdmlvciB3aXRoIGludmFsaWQgSGFz aCBjb250ZXh0IGlzIHVuZGVmaW5lZC4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIElmIEhhc2hD b250ZXh0IGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+DQo+ID4gKyAgSWYgSGFzaFZh bHVlIGlzIE5VTEwsIHRoZW4gcmV0dXJuIEZBTFNFLg0KPiA+DQo+ID4gKyAgSWYgdGhpcyBpbnRl cmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiByZXR1cm4gRkFMU0UuDQo+ID4NCj4gPiArDQo+ ID4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gIEhhc2hDb250ZXh0ICBQb2ludGVyIHRvIHRoZSBI YXNoIGNvbnRleHQuDQo+ID4NCj4gPiArICBAcGFyYW1bb3V0XSAgICAgIEhhc2hWYWx1ZSAgICBQ b2ludGVyIHRvIGEgYnVmZmVyIHRoYXQgcmVjZWl2ZXMgdGhlIEhhc2gNCj4gZGlnZXN0DQo+ID4N Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS4NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgIEByZXR2YWwgVFJVRSAgIEhhc2ggZGlnZXN0IGNvbXB1dGF0aW9uIHN1Y2Nl ZWRlZC4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIEhhc2ggZGlnZXN0IGNvbXB1dGF0aW9u IGZhaWxlZC4NCj4gPg0KPiA+ICsgIEByZXR2YWwgRkFMU0UgIFRoaXMgaW50ZXJmYWNlIGlzIG5v dCBzdXBwb3J0ZWQuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArKiovDQo+ID4NCj4gPiArdHlwZWRl Zg0KPiA+DQo+ID4gK0JPT0xFQU4NCj4gPg0KPiA+ICsoRUZJQVBJICpFRklfSEFTSF9GSU5BTCko DQo+ID4NCj4gPiArICBJTiBPVVQgIFZPSUQgICAqSGFzaENvbnRleHQsDQo+ID4NCj4gPiArICBP VVQgICAgIFVJTlQ4ICAqSGFzaFZhbHVlDQo+ID4NCj4gPiArICApOw0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPg0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgSGFzaFNpemU7DQo+ID4NCj4gPiArICBFRklfSEFTSF9HRVRfQ09OVEVYVF9TSVpF ICAgIEdldENvbnRleHRTaXplOw0KPiA+DQo+ID4gKyAgRUZJX0hBU0hfSU5JVCAgICAgICAgICAg ICAgICBJbml0Ow0KPiA+DQo+ID4gKyAgRUZJX0hBU0hfVVBEQVRFICAgICAgICAgICAgICBVcGRh dGU7DQo+ID4NCj4gPiArICBFRklfSEFTSF9GSU5BTCAgICAgICAgICAgICAgIEZpbmFsOw0KPiA+ DQo+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqKkhhc2hTaGFDdHg7DQo+ID4N Cj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICpPaWRWYWx1ZTsNCj4gPg0KPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgT2lkTGVuZ3RoOw0KPiA+DQo+ID4gK30g RUZJX0hBU0hfSU5GTzsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICAvLw0KPiA+DQo+ID4gIC8vIFB1 YmxpYyBFeHBvbmVudCBvZiBSU0EgS2V5Lg0KPiA+DQo+ID4gIC8vDQo+ID4NCj4gPiAgQ09OU1Qg VUlOVDggIG1Sc2FFW10gPSB7IDB4MDEsIDB4MDAsIDB4MDEgfTsNCj4gPg0KPiA+DQo+ID4NCj4g PiAtQ09OU1QgVUlOVDggIG1TaGEyNTZPaWRWYWx1ZVtdID0geyAweDYwLCAweDg2LCAweDQ4LCAw eDAxLCAweDY1LA0KPiA+IDB4MDMsIDB4MDQsIDB4MDIsIDB4MDEgfTsNCj4gPg0KPiA+ICtVSU5U OCAgbVNoYTI1Nk9pZFZhbHVlW10gPSB7IDB4NjAsIDB4ODYsIDB4NDgsIDB4MDEsIDB4NjUsIDB4 MDMsDQo+ID4gKzB4MDQsIDB4MDIsDQo+ID4gMHgwMSB9Ow0KPiA+DQo+ID4gK1VJTlQ4ICBtU2hh Mzg0T2lkVmFsdWVbXSA9IHsgMHg2MCwgMHg4NiwgMHg0OCwgMHgwMSwgMHg2NSwgMHgwMywNCj4g PiArMHgwNCwgMHgwMiwNCj4gPiAweDAyIH07DQo+ID4NCj4gPiArVUlOVDggIG1TaGE1MTJPaWRW YWx1ZVtdID0geyAweDYwLCAweDg2LCAweDQ4LCAweDAxLCAweDY1LCAweDAzLA0KPiA+ICsweDA0 LCAweDAyLA0KPiA+IDB4MDMgfTsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICtFRklfSEFTSF9JTkZP ICBtSGFzaEluZm9bXSA9IHsNCj4gPg0KPiA+ICsgIHtTSEEyNTZfRElHRVNUX1NJWkUsIFNoYTI1 NkdldENvbnRleHRTaXplLCBTaGEyNTZJbml0LA0KPiA+ICsgU2hhMjU2VXBkYXRlLA0KPiA+IFNo YTI1NkZpbmFsLCAmbUhhc2hTaGEyNTZDdHgsIG1TaGEyNTZPaWRWYWx1ZSwgOX0sDQo+ID4NCj4g PiArICB7U0hBMzg0X0RJR0VTVF9TSVpFLCBTaGEzODRHZXRDb250ZXh0U2l6ZSwgU2hhMzg0SW5p dCwNCj4gPiArIFNoYTM4NFVwZGF0ZSwNCj4gPiBTaGEzODRGaW5hbCwgJm1IYXNoU2hhMzg0Q3R4 LCBtU2hhMzg0T2lkVmFsdWUsIDl9LA0KPiA+DQo+ID4gKyAge1NIQTUxMl9ESUdFU1RfU0laRSwg U2hhNTEyR2V0Q29udGV4dFNpemUsIFNoYTUxMkluaXQsDQo+ID4gKyBTaGE1MTJVcGRhdGUsDQo+ ID4gU2hhNTEyRmluYWwsICZtSGFzaFNoYTUxMkN0eCwgbVNoYTUxMk9pZFZhbHVlLCA5fSwNCj4g Pg0KPiA+ICt9Ow0KPiA+DQo+ID4NCj4gPg0KPiA+ICAvLw0KPiA+DQo+ID4gIC8vIFJlcXVpcmVt ZW50IGZvciBkaWZmZXJlbnQgc2lnbmF0dXJlIHR5cGUgd2hpY2ggaGF2ZSBiZWVuIGRlZmluZWQN Cj4gPiBpbiBVRUZJIHNwZWMuDQo+ID4NCj4gPiBAQCAtNDQsNiArMTU3LDggQEAgRUZJX1NJR05B VFVSRV9JVEVNICBtU3VwcG9ydFNpZ0l0ZW1bXSA9IHsNCj4gPiAgICAvLyB7U2lnVHlwZSwgICAg ICAgICAgICAgICAgICAgICAgIFNpZ0hlYWRlclNpemUsICAgU2lnRGF0YVNpemUgIH0NCj4gPg0K PiA+ICAgIHsgRUZJX0NFUlRfU0hBMjU2X0dVSUQsICAgICAgICAgMCwgMzIgICAgICAgICAgICB9 LA0KPiA+DQo+ID4gICAgeyBFRklfQ0VSVF9SU0EyMDQ4X0dVSUQsICAgICAgICAwLCAyNTYgICAg ICAgICAgIH0sDQo+ID4NCj4gPiArICB7IEVGSV9DRVJUX1JTQTMwNzJfR1VJRCwgICAgICAgIDAs IDM4NCAgICAgICAgICAgfSwNCj4gPg0KPiA+ICsgIHsgRUZJX0NFUlRfUlNBNDA5Nl9HVUlELCAg ICAgICAgMCwgNTEyICAgICAgICAgICB9LA0KPiA+DQo+ID4gICAgeyBFRklfQ0VSVF9SU0EyMDQ4 X1NIQTI1Nl9HVUlELCAwLCAyNTYgICAgICAgICAgIH0sDQo+ID4NCj4gPiAgICB7IEVGSV9DRVJU X1NIQTFfR1VJRCwgICAgICAgICAgIDAsIDIwICAgICAgICAgICAgfSwNCj4gPg0KPiA+ICAgIHsg RUZJX0NFUlRfUlNBMjA0OF9TSEExX0dVSUQsICAgMCwgMjU2ICAgICAgICAgICB9LA0KPiA+DQo+ ID4gQEAgLTEwOTAsMjYgKzEyMDUsMjggQEAgQXV0aFNlcnZpY2VJbnRlcm5hbENvbXBhcmVUaW1l U3RhbXAgKCAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICAvKioNCj4gPg0KPiA+IC0gIENhbGN1bGF0 ZSBTSEEyNTYgZGlnZXN0IG9mIFNpZ25lckNlcnQgQ29tbW9uTmFtZSArIFRvcGxldmVsQ2VydA0K PiA+IHRic0NlcnRpZmljYXRlDQo+ID4NCj4gPiArICBDYWxjdWxhdGUgU0hBIGRpZ2VzdCBvZiBT aWduZXJDZXJ0IENvbW1vbk5hbWUgKyBUb3BsZXZlbENlcnQNCj4gPiArIHRic0NlcnRpZmljYXRl DQo+ID4NCj4gPiAgICBTaWduZXJDZXJ0IGFuZCBUb3BsZXZlbENlcnQgYXJlIGluc2lkZSB0aGUg c2lnbmVyIGNlcnRpZmljYXRlIGNoYWluLg0KPiA+DQo+ID4NCj4gPg0KPiA+ICsgIEBwYXJhbVtp bl0gIEhhc2hBbGdJZCAgICAgICAgICAgSGFzaCBhbGdvcml0aG0gaW5kZXgNCj4gPg0KPiA+ICAg IEBwYXJhbVtpbl0gIFNpZ25lckNlcnQgICAgICAgICAgQSBwb2ludGVyIHRvIFNpZ25lckNlcnQg ZGF0YS4NCj4gPg0KPiA+ICAgIEBwYXJhbVtpbl0gIFNpZ25lckNlcnRTaXplICAgICAgTGVuZ3Ro IG9mIFNpZ25lckNlcnQgZGF0YS4NCj4gPg0KPiA+ICAgIEBwYXJhbVtpbl0gIFRvcExldmVsQ2Vy dCAgICAgICAgQSBwb2ludGVyIHRvIFRvcExldmVsQ2VydCBkYXRhLg0KPiA+DQo+ID4gICAgQHBh cmFtW2luXSAgVG9wTGV2ZWxDZXJ0U2l6ZSAgICBMZW5ndGggb2YgVG9wTGV2ZWxDZXJ0IGRhdGEu DQo+ID4NCj4gPiAtICBAcGFyYW1bb3V0XSBTaGEyNTZEaWdlc3QgICAgICAgU2hhMjU2IGRpZ2Vz dCBjYWxjdWxhdGVkLg0KPiA+DQo+ID4gKyAgQHBhcmFtW291dF0gU2hhRGlnZXN0ICAgICAgICAg ICBTaGEgZGlnZXN0IGNhbGN1bGF0ZWQuDQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgQHJldHVybiBF RklfQUJPUlRFRCAgICAgICAgICBEaWdlc3QgcHJvY2VzcyBmYWlsZWQuDQo+ID4NCj4gPiAtICBA cmV0dXJuIEVGSV9TVUNDRVNTICAgICAgICAgIFNIQTI1NiBEaWdlc3QgaXMgc3VjY2Vzc2Z1bGx5 IGNhbGN1bGF0ZWQuDQo+ID4NCj4gPiArICBAcmV0dXJuIEVGSV9TVUNDRVNTICAgICAgICAgIFNI QSBEaWdlc3QgaXMgc3VjY2Vzc2Z1bGx5IGNhbGN1bGF0ZWQuDQo+ID4NCj4gPg0KPiA+DQo+ID4g ICoqLw0KPiA+DQo+ID4gIEVGSV9TVEFUVVMNCj4gPg0KPiA+IC1DYWxjdWxhdGVQcml2QXV0aFZh clNpZ25DaGFpblNIQTI1NkRpZ2VzdCAoDQo+ID4NCj4gPiArQ2FsY3VsYXRlUHJpdkF1dGhWYXJT aWduQ2hhaW5TSEFEaWdlc3QgKA0KPiA+DQo+ID4gKyAgSU4gICAgIFVJTlQ4ICBIYXNoQWxnSWQs DQo+ID4NCj4gPiAgICBJTiAgICAgVUlOVDggICpTaWduZXJDZXJ0LA0KPiA+DQo+ID4gICAgSU4g ICAgIFVJTlROICBTaWduZXJDZXJ0U2l6ZSwNCj4gPg0KPiA+ICAgIElOICAgICBVSU5UOCAgKlRv cExldmVsQ2VydCwNCj4gPg0KPiA+ICAgIElOICAgICBVSU5UTiAgVG9wTGV2ZWxDZXJ0U2l6ZSwN Cj4gPg0KPiA+IC0gIE9VVCAgICBVSU5UOCAgKlNoYTI1NkRpZ2VzdA0KPiA+DQo+ID4gKyAgT1VU ICAgIFVJTlQ4ICAqU2hhRGlnZXN0DQo+ID4NCj4gPiAgICApDQo+ID4NCj4gPiAgew0KPiA+DQo+ ID4gICAgVUlOVDggICAgICAgKlRic0NlcnQ7DQo+ID4NCj4gPiBAQCAtMTExOSw2ICsxMjM2LDEx IEBAIENhbGN1bGF0ZVByaXZBdXRoVmFyU2lnbkNoYWluU0hBMjU2RGlnZXN0ICgNCj4gPiAgICBC T09MRUFOICAgICBDcnlwdG9TdGF0dXM7DQo+ID4NCj4gPiAgICBFRklfU1RBVFVTICBTdGF0dXM7 DQo+ID4NCj4gPg0KPiA+DQo+ID4gKyAgaWYgKEhhc2hBbGdJZCA+PSAoc2l6ZW9mIChtSGFzaElu Zm8pIC8gc2l6ZW9mIChFRklfSEFTSF9JTkZPKSkpIHsNCj4gPg0KPiA+ICsgICAgREVCVUcgKChE RUJVR19JTkZPLCAiJWEgVW5zdXBwb3J0ZWQgSGFzaCBBbGdvcml0aG0gJWRcbiIsDQo+ID4gKyBf X2Z1bmNfXywNCj4gPiBIYXNoQWxnSWQpKTsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9BQk9S VEVEOw0KPiA+DQo+ID4gKyAgfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gICAgQ2VydENvbW1vbk5h bWVTaXplID0gc2l6ZW9mIChDZXJ0Q29tbW9uTmFtZSk7DQo+ID4NCj4gPg0KPiA+DQo+ID4gICAg Ly8NCj4gPg0KPiA+IEBAIC0xMTQxLDggKzEyNjMsOCBAQCBDYWxjdWxhdGVQcml2QXV0aFZhclNp Z25DaGFpblNIQTI1NkRpZ2VzdCAoDQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIC8vIERpZ2VzdCBT aWduZXJDZXJ0IENOICsgVG9wTGV2ZWxDZXJ0IHRic0NlcnRpZmljYXRlDQo+ID4NCj4gPiAgICAv Lw0KPiA+DQo+ID4gLSAgWmVyb01lbSAoU2hhMjU2RGlnZXN0LCBTSEEyNTZfRElHRVNUX1NJWkUp Ow0KPiA+DQo+ID4gLSAgQ3J5cHRvU3RhdHVzID0gU2hhMjU2SW5pdCAobUhhc2hDdHgpOw0KPiA+ DQo+ID4gKyAgWmVyb01lbSAoU2hhRGlnZXN0LCBtSGFzaEluZm9bSGFzaEFsZ0lkXS5IYXNoU2l6 ZSk7DQo+ID4NCj4gPiArICBDcnlwdG9TdGF0dXMgPSBtSGFzaEluZm9bSGFzaEFsZ0lkXS5Jbml0 DQo+ID4gKCoobUhhc2hJbmZvW0hhc2hBbGdJZF0uSGFzaFNoYUN0eCkpOw0KPiA+DQo+ID4gICAg aWYgKCFDcnlwdG9TdGF0dXMpIHsNCj4gPg0KPiA+ICAgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0K PiA+DQo+ID4gICAgfQ0KPiA+DQo+ID4gQEAgLTExNTAsOCArMTI3Miw4IEBAIENhbGN1bGF0ZVBy aXZBdXRoVmFyU2lnbkNoYWluU0hBMjU2RGlnZXN0ICgNCj4gPiAgICAvLw0KPiA+DQo+ID4gICAg Ly8gJ1wwJyBpcyBmb3JjZWQgaW4gQ2VydENvbW1vbk5hbWUuIE5vIG92ZXJmbG93IGlzc3VlDQo+ ID4NCj4gPiAgICAvLw0KPiA+DQo+ID4gLSAgQ3J5cHRvU3RhdHVzID0gU2hhMjU2VXBkYXRlICgN Cj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgbUhhc2hDdHgsDQo+ID4NCj4gPiArICBDcnlw dG9TdGF0dXMgPSBtSGFzaEluZm9bSGFzaEFsZ0lkXS5VcGRhdGUgKA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAqKG1IYXNoSW5mb1tIYXNoQWxnSWRdLkhhc2hTaGFDdHgpLA0KPiA+DQo+ ID4gICAgICAgICAgICAgICAgICAgICBDZXJ0Q29tbW9uTmFtZSwNCj4gPg0KPiA+ICAgICAgICAg ICAgICAgICAgICAgQXNjaWlTdHJMZW4gKENlcnRDb21tb25OYW1lKQ0KPiA+DQo+ID4gICAgICAg ICAgICAgICAgICAgICApOw0KPiA+DQo+ID4gQEAgLTExNTksMTIgKzEyODEsMTIgQEAgQ2FsY3Vs YXRlUHJpdkF1dGhWYXJTaWduQ2hhaW5TSEEyNTZEaWdlc3QgKA0KPiA+ICAgICAgcmV0dXJuIEVG SV9BQk9SVEVEOw0KPiA+DQo+ID4gICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gIENyeXB0b1N0 YXR1cyA9IFNoYTI1NlVwZGF0ZSAobUhhc2hDdHgsIFRic0NlcnQsIFRic0NlcnRTaXplKTsNCj4g Pg0KPiA+ICsgIENyeXB0b1N0YXR1cyA9IG1IYXNoSW5mb1tIYXNoQWxnSWRdLlVwZGF0ZQ0KPiA+ ICgqKG1IYXNoSW5mb1tIYXNoQWxnSWRdLkhhc2hTaGFDdHgpLCBUYnNDZXJ0LCBUYnNDZXJ0U2l6 ZSk7DQo+ID4NCj4gPiAgICBpZiAoIUNyeXB0b1N0YXR1cykgew0KPiA+DQo+ID4gICAgICByZXR1 cm4gRUZJX0FCT1JURUQ7DQo+ID4NCj4gPiAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gLSAgQ3J5 cHRvU3RhdHVzID0gU2hhMjU2RmluYWwgKG1IYXNoQ3R4LCBTaGEyNTZEaWdlc3QpOw0KPiA+DQo+ ID4gKyAgQ3J5cHRvU3RhdHVzID0gbUhhc2hJbmZvW0hhc2hBbGdJZF0uRmluYWwNCj4gPiAoKiht SGFzaEluZm9bSGFzaEFsZ0lkXS5IYXNoU2hhQ3R4KSwgU2hhRGlnZXN0KTsNCj4gPg0KPiA+ICAg IGlmICghQ3J5cHRvU3RhdHVzKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBFRklfQUJPUlRFRDsN Cj4gPg0KPiA+ICAgIH0NCj4gPg0KPiA+IEBAIC0xNTE2LDkgKzE2MzgsMTAgQEAgRGVsZXRlQ2Vy dHNGcm9tRGIgKA0KPiA+ICAvKioNCj4gPg0KPiA+ICAgIEluc2VydCBzaWduZXIncyBjZXJ0aWZp Y2F0ZXMgZm9yIGNvbW1vbiBhdXRoZW50aWNhdGVkIHZhcmlhYmxlIHdpdGgNCj4gPiBWYXJpYWJs ZU5hbWUNCj4gPg0KPiA+ICAgIGFuZCBWZW5kb3JHdWlkIGluIEFVVEhfQ0VSVF9EQl9EQVRBIHRv ICJjZXJ0ZGIiIG9yICJjZXJ0ZGJ2Ig0KPiA+IGFjY29yZGluZyB0bw0KPiA+DQo+ID4gLSAgdGlt ZSBiYXNlZCBhdXRoZW50aWNhdGVkIHZhcmlhYmxlIGF0dHJpYnV0ZXMuIENlcnREYXRhIGlzIHRo ZQ0KPiA+IFNIQTI1NiBkaWdlc3Qgb2YNCj4gPg0KPiA+ICsgIHRpbWUgYmFzZWQgYXV0aGVudGlj YXRlZCB2YXJpYWJsZSBhdHRyaWJ1dGVzLiBDZXJ0RGF0YSBpcyB0aGUgU0hBDQo+ID4gKyBkaWdl c3Qgb2YNCj4gPg0KPiA+ICAgIFNpZ25lckNlcnQgQ29tbW9uTmFtZSArIFRvcExldmVsQ2VydCB0 YnNDZXJ0aWZpY2F0ZS4NCj4gPg0KPiA+DQo+ID4NCj4gPiArICBAcGFyYW1baW5dICBIYXNoQWxn SWQgICAgICAgICBIYXNoIGFsZ29yaXRobSBpbmRleC4NCj4gPg0KPiA+ICAgIEBwYXJhbVtpbl0g IFZhcmlhYmxlTmFtZSAgICAgIE5hbWUgb2YgYXV0aGVudGljYXRlZCBWYXJpYWJsZS4NCj4gPg0K PiA+ICAgIEBwYXJhbVtpbl0gIFZlbmRvckd1aWQgICAgICAgIFZlbmRvciBHVUlEIG9mIGF1dGhl bnRpY2F0ZWQgVmFyaWFibGUuDQo+ID4NCj4gPiAgICBAcGFyYW1baW5dICBBdHRyaWJ1dGVzICAg ICAgICBBdHRyaWJ1dGVzIG9mIGF1dGhlbnRpY2F0ZWQgdmFyaWFibGUuDQo+ID4NCj4gPiBAQCAt MTUzNiw2ICsxNjU5LDcgQEAgRGVsZXRlQ2VydHNGcm9tRGIgKCAgKiovDQo+ID4NCj4gPiAgRUZJ X1NUQVRVUw0KPiA+DQo+ID4gIEluc2VydENlcnRzVG9EYiAoDQo+ID4NCj4gPiArICBJTiAgICAg VUlOVDggICAgIEhhc2hBbGdJZCwNCj4gPg0KPiA+ICAgIElOICAgICBDSEFSMTYgICAgKlZhcmlh YmxlTmFtZSwNCj4gPg0KPiA+ICAgIElOICAgICBFRklfR1VJRCAgKlZlbmRvckd1aWQsDQo+ID4N Cj4gPiAgICBJTiAgICAgVUlOVDMyICAgIEF0dHJpYnV0ZXMsDQo+ID4NCj4gPiBAQCAtMTU1Niwx MiArMTY4MCwxNiBAQCBJbnNlcnRDZXJ0c1RvRGIgKA0KPiA+ICAgIFVJTlQzMiAgICAgICAgICAg ICBDZXJ0RGF0YVNpemU7DQo+ID4NCj4gPiAgICBBVVRIX0NFUlRfREJfREFUQSAgKlB0cjsNCj4g Pg0KPiA+ICAgIENIQVIxNiAgICAgICAgICAgICAqRGJOYW1lOw0KPiA+DQo+ID4gLSAgVUlOVDgg ICAgICAgICAgICAgIFNoYTI1NkRpZ2VzdFtTSEEyNTZfRElHRVNUX1NJWkVdOw0KPiA+DQo+ID4g KyAgVUlOVDggICAgICAgICAgICAgIFNoYURpZ2VzdFtTSEFfRElHRVNUX1NJWkVfTUFYXTsNCj4g Pg0KPiA+DQo+ID4NCj4gPiAgICBpZiAoKFZhcmlhYmxlTmFtZSA9PSBOVUxMKSB8fCAoVmVuZG9y R3VpZCA9PSBOVUxMKSB8fCAoU2lnbmVyQ2VydA0KPiA+ID09IE5VTEwpIHx8IChUb3BMZXZlbENl cnQgPT0gTlVMTCkpIHsNCj4gPg0KPiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPg0KPiA+ICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiArICBpZiAoSGFzaEFsZ0lkID49 IChzaXplb2YgKG1IYXNoSW5mbykgLyBzaXplb2YgKEVGSV9IQVNIX0lORk8pKSkgew0KPiA+DQo+ ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+DQo+ID4gKyAgfQ0KPiA+ DQo+ID4gKw0KPiA+DQo+ID4gICAgaWYgKChBdHRyaWJ1dGVzICYgRUZJX1ZBUklBQkxFX05PTl9W T0xBVElMRSkgIT0gMCkgew0KPiA+DQo+ID4gICAgICAvLw0KPiA+DQo+ID4gICAgICAvLyBHZXQg dmFyaWFibGUgImNlcnRkYiIuDQo+ID4NCj4gPiBAQCAtMTYxOCwyMCArMTc0NiwyMiBAQCBJbnNl cnRDZXJ0c1RvRGIgKA0KPiA+ICAgIC8vIENvbnN0cnVjdCBuZXcgZGF0YSBjb250ZW50IG9mIHZh cmlhYmxlICJjZXJ0ZGIiIG9yICJjZXJ0ZGJ2Ii4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiAg ICBOYW1lU2l6ZSAgICAgID0gKFVJTlQzMilTdHJMZW4gKFZhcmlhYmxlTmFtZSk7DQo+ID4NCj4g PiAtICBDZXJ0RGF0YVNpemUgID0gc2l6ZW9mIChTaGEyNTZEaWdlc3QpOw0KPiA+DQo+ID4gKyAg Q2VydERhdGFTaXplICA9IG1IYXNoSW5mb1tIYXNoQWxnSWRdLkhhc2hTaXplOw0KPiA+DQo+ID4g ICAgQ2VydE5vZGVTaXplICA9IHNpemVvZiAoQVVUSF9DRVJUX0RCX0RBVEEpICsgKFVJTlQzMilD ZXJ0RGF0YVNpemUgKw0KPiA+IE5hbWVTaXplICogc2l6ZW9mIChDSEFSMTYpOw0KPiA+DQo+ID4g ICAgTmV3Q2VydERiU2l6ZSA9IChVSU5UMzIpRGF0YVNpemUgKyBDZXJ0Tm9kZVNpemU7DQo+ID4N Cj4gPiAgICBpZiAoTmV3Q2VydERiU2l6ZSA+IG1NYXhDZXJ0RGJTaXplKSB7DQo+ID4NCj4gPiAg ICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPg0KPiA+ICAgIH0NCj4gPg0KPiA+ DQo+ID4NCj4gPiAtICBTdGF0dXMgPSBDYWxjdWxhdGVQcml2QXV0aFZhclNpZ25DaGFpblNIQTI1 NkRpZ2VzdCAoDQo+ID4NCj4gPiArICBTdGF0dXMgPSBDYWxjdWxhdGVQcml2QXV0aFZhclNpZ25D aGFpblNIQURpZ2VzdCAoDQo+ID4NCj4gPiArICAgICAgICAgICAgIEhhc2hBbGdJZCwNCj4gPg0K PiA+ICAgICAgICAgICAgICAgU2lnbmVyQ2VydCwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgU2ln bmVyQ2VydFNpemUsDQo+ID4NCj4gPiAgICAgICAgICAgICAgIFRvcExldmVsQ2VydCwNCj4gPg0K PiA+ICAgICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0U2l6ZSwNCj4gPg0KPiA+IC0gICAgICAgICAg ICAgU2hhMjU2RGlnZXN0DQo+ID4NCj4gPiArICAgICAgICAgICAgIFNoYURpZ2VzdA0KPiA+DQo+ ID4gICAgICAgICAgICAgICApOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+DQo+ID4gICAgICByZXR1cm4gU3RhdHVzOw0KPiA+DQo+ID4gICAg fQ0KPiA+DQo+ID4gQEAgLTE2NjMsNyArMTc5Myw3IEBAIEluc2VydENlcnRzVG9EYiAoDQo+ID4N Cj4gPg0KPiA+ICAgIENvcHlNZW0gKA0KPiA+DQo+ID4gICAgICAoVUlOVDggKilQdHIgKyAgc2l6 ZW9mIChBVVRIX0NFUlRfREJfREFUQSkgKyBOYW1lU2l6ZSAqIHNpemVvZg0KPiA+IChDSEFSMTYp LA0KPiA+DQo+ID4gLSAgICBTaGEyNTZEaWdlc3QsDQo+ID4NCj4gPiArICAgIFNoYURpZ2VzdCwN Cj4gPg0KPiA+ICAgICAgQ2VydERhdGFTaXplDQo+ID4NCj4gPiAgICAgICk7DQo+ID4NCj4gPg0K PiA+DQo+ID4gQEAgLTE3OTAsNiArMTkyMCwzNiBAQCBDbGVhbkNlcnRzRnJvbURiICgNCj4gPiAg ICByZXR1cm4gU3RhdHVzOw0KPiA+DQo+ID4gIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiArLyoqDQo+ ID4NCj4gPiArICBGaW5kIGhhc2ggYWxnb3JpdGhtIGluZGV4DQo+ID4NCj4gPiArDQo+ID4NCj4g PiArICBAcGFyYW1baW5dICBTaWdEYXRhICAgICAgUG9pbnRlciB0byB0aGUgUEtDUyM3IG1lc3Nh Z2UNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFNpZ0RhdGFTaXplICBMZW5ndGggb2YgdGhlIFBL Q1MjNyBtZXNzYWdlDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBAcmV0dmFsIFVJTlQ4ICAgICAg ICBIYXNoIEFsZ29yaXRobSBJbmRleA0KPiA+DQo+ID4gKyoqLw0KPiA+DQo+ID4gK1VJTlQ4DQo+ ID4NCj4gPiArRmluZEhhc2hBbGdvcml0aG1JbmRleCAoDQo+ID4NCj4gPiArICBJTiAgICAgVUlO VDggICAgICAgICAqU2lnRGF0YSwNCj4gPg0KPiA+ICsgIElOICAgICBVSU5UMzIgICAgICAgIFNp Z0RhdGFTaXplDQo+ID4NCj4gPiArKQ0KPiA+DQo+ID4gK3sNCj4gPg0KPiA+ICsgIFVJTlQ4IGk7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZiAobUhhc2hJ bmZvKSAvIHNpemVvZiAoRUZJX0hBU0hfSU5GTykpOyBpKyspDQo+ID4gKyB7DQo+ID4NCj4gPiAr ICAgIGlmICggICggIChTaWdEYXRhU2l6ZSA+PSAoMTMgKyBtSGFzaEluZm9baV0uT2lkTGVuZ3Ro KSkNCj4gPg0KPiA+ICsgICAgICAgICAgJiYgKCAgKCgqKFNpZ0RhdGEgKyAxKSAmIFRXT19CWVRF X0VOQ09ERSkgPT0NCj4gPiArIFRXT19CWVRFX0VOQ09ERSkNCj4gPg0KPiA+ICsgICAgICAgICAg ICAmJiAoQ29tcGFyZU1lbSAoU2lnRGF0YSArIDEzLCBtSGFzaEluZm9baV0uT2lkVmFsdWUsDQo+ ID4gbUhhc2hJbmZvW2ldLk9pZExlbmd0aCkgPT0gMCkpKQ0KPiA+DQo+ID4gKyAgICAgIHx8ICgo ICAoU2lnRGF0YVNpemUgPj0gKDMyICsgIG1IYXNoSW5mb1tpXS5PaWRMZW5ndGgpKSkNCj4gPg0K PiA+ICsgICAgICAgICYmICggICgoKihTaWdEYXRhICsgMjApICYgVFdPX0JZVEVfRU5DT0RFKSA9 PQ0KPiA+ICsgVFdPX0JZVEVfRU5DT0RFKQ0KPiA+DQo+ID4gKyAgICAgICAgICAmJiAoQ29tcGFy ZU1lbSAoU2lnRGF0YSArIDMyLCBtSGFzaEluZm9baV0uT2lkVmFsdWUsDQo+ID4gbUhhc2hJbmZv W2ldLk9pZExlbmd0aCkgPT0gMCkpKSkNCj4gPg0KPiA+ICsgICAgew0KPiA+DQo+ID4gKyAgICAg IGJyZWFrOw0KPiA+DQo+ID4gKyAgICB9DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArICByZXR1 cm4gaTsNCj4gPg0KPiA+ICt9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAgLyoqDQo+ID4NCj4gPiAg ICBQcm9jZXNzIHZhcmlhYmxlIHdpdGgNCj4gPiBFRklfVkFSSUFCTEVfVElNRV9CQVNFRF9BVVRI RU5USUNBVEVEX1dSSVRFX0FDQ0VTUyBzZXQNCj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMTg1Nyw4 ICsyMDE3LDkgQEAgVmVyaWZ5VGltZUJhc2VkUGF5bG9hZCAoDQo+ID4gICAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgIENlcnRTdGFja1NpemU7DQo+ID4NCj4gPiAgICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgKkNlcnRzSW5DZXJ0RGI7DQo+ID4NCj4gPiAgICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICAgQ2VydHNTaXplaW5EYjsNCj4gPg0KPiA+IC0gIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGEyNTZEaWdlc3RbU0hBMjU2X0RJR0VTVF9TSVpF XTsNCj4gPg0KPiA+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFEaWdlc3Rb U0hBX0RJR0VTVF9TSVpFX01BWF07DQo+ID4NCj4gPiAgICBFRklfQ0VSVF9EQVRBICAgICAgICAg ICAgICAgICAgKkNlcnREYXRhUHRyOw0KPiA+DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgIEhhc2hBbGdJZDsNCj4gPg0KPiA+DQo+ID4NCj4gPiAgICAvLw0KPiA+DQo+ID4g ICAgLy8gMS4gVG9wTGV2ZWxDZXJ0IGlzIHRoZSB0b3AtbGV2ZWwgaXNzdWVyIGNlcnRpZmljYXRl IGluIHNpZ25hdHVyZQ0KPiA+IFNpZ25lciBDZXJ0IENoYWluDQo+ID4NCj4gPiBAQCAtMTkyOCw3 ICsyMDg5LDcgQEAgVmVyaWZ5VGltZUJhc2VkUGF5bG9hZCAoDQo+ID4NCj4gPg0KPiA+ICAgIC8v DQo+ID4NCj4gPiAgICAvLyBTaWduZWREYXRhLmRpZ2VzdEFsZ29yaXRobXMgc2hhbGwgY29udGFp biB0aGUgZGlnZXN0IGFsZ29yaXRobQ0KPiA+IHVzZWQgd2hlbiBwcmVwYXJpbmcgdGhlDQo+ID4N Cj4gPiAtICAvLyBzaWduYXR1cmUuIE9ubHkgYSBkaWdlc3QgYWxnb3JpdGhtIG9mIFNIQS0yNTYg aXMgYWNjZXB0ZWQuDQo+ID4NCj4gPiArICAvLyBzaWduYXR1cmUuIE9ubHkgYSBkaWdlc3QgYWxn b3JpdGhtIG9mIFNIQS0yNTYsIFNIQS0zODQgb3INCj4gPiArIFNIQS01MTIgaXMNCj4gPiBhY2Nl cHRlZC4NCj4gPg0KPiA+ICAgIC8vDQo+ID4NCj4gPiAgICAvLyAgICBBY2NvcmRpbmcgdG8gUEtD UyM3IERlZmluaXRpb24gKGh0dHBzOi8vd3d3LnJmYy0NCj4gZWRpdG9yLm9yZy9yZmMvcmZjMjMx NSk6DQo+ID4NCj4gPiAgICAvLyAgICAgICAgU2lnbmVkRGF0YSA6Oj0gU0VRVUVOQ0Ugew0KPiA+ DQo+ID4gQEAgLTE5NzIsMTQgKzIxMzMsOSBAQCBWZXJpZnlUaW1lQmFzZWRQYXlsb2FkICgNCj4g PiAgICAvLw0KPiA+DQo+ID4gICAgLy8gRXhhbXBsZSBnZW5lcmF0ZWQgd2l0aDoNCj4gPiBodHRw czovL3dpa2kuYXJjaGxpbnV4Lm9yZy90aXRsZS9VbmlmaWVkX0V4dGVuc2libGVfRmlybXdhcmVf SW50ZXJmYWNlDQo+ID4gL1NlY3VyZV8NCj4gPiBCb290I01hbnVhbF9wcm9jZXNzDQo+ID4NCj4g PiAgICAvLw0KPiA+DQo+ID4gKyAgSGFzaEFsZ0lkID0gRmluZEhhc2hBbGdvcml0aG1JbmRleCAo U2lnRGF0YSwgU2lnRGF0YVNpemUpOw0KPiA+DQo+ID4gICAgaWYgKChBdHRyaWJ1dGVzICYNCj4g PiBFRklfVkFSSUFCTEVfVElNRV9CQVNFRF9BVVRIRU5USUNBVEVEX1dSSVRFX0FDQ0VTUykgIT0g MCkgew0KPiA+DQo+ID4gLSAgICBpZiAoICAoICAoU2lnRGF0YVNpemUgPj0gKDEzICsgc2l6ZW9m IChtU2hhMjU2T2lkVmFsdWUpKSkNCj4gPg0KPiA+IC0gICAgICAgICAgJiYgKCAgKCgqKFNpZ0Rh dGEgKyAxKSAmIFRXT19CWVRFX0VOQ09ERSkgIT0gVFdPX0JZVEVfRU5DT0RFKQ0KPiA+DQo+ID4g LSAgICAgICAgICAgICB8fCAoQ29tcGFyZU1lbSAoU2lnRGF0YSArIDEzLCAmbVNoYTI1Nk9pZFZh bHVlLCBzaXplb2YNCj4gPiAobVNoYTI1Nk9pZFZhbHVlKSkgIT0gMCkpKQ0KPiA+DQo+ID4gLSAg ICAgICAmJiAoICAoU2lnRGF0YVNpemUgPj0gKDMyICsgc2l6ZW9mIChtU2hhMjU2T2lkVmFsdWUp KSkNCj4gPg0KPiA+IC0gICAgICAgICAgJiYgKCAgKCgqKFNpZ0RhdGEgKyAyMCkgJiBUV09fQllU RV9FTkNPREUpICE9DQo+IFRXT19CWVRFX0VOQ09ERSkNCj4gPg0KPiA+IC0gICAgICAgICAgICAg fHwgKENvbXBhcmVNZW0gKFNpZ0RhdGEgKyAzMiwgJm1TaGEyNTZPaWRWYWx1ZSwgc2l6ZW9mDQo+ ID4gKG1TaGEyNTZPaWRWYWx1ZSkpICE9IDApKSkpDQo+ID4NCj4gPiAtICAgIHsNCj4gPg0KPiA+ ICsgICAgaWYgKEhhc2hBbGdJZCA+PSAoc2l6ZW9mIChtSGFzaEluZm8pIC8gc2l6ZW9mIChFRklf SEFTSF9JTkZPKSkpIHsNCj4gPg0KPiA+ICAgICAgICByZXR1cm4gRUZJX1NFQ1VSSVRZX1ZJT0xB VElPTjsNCj4gPg0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gICAgfQ0KPiA+DQo+ID4gQEAgLTIxNzAs MTkgKzIzMjYsMjAgQEAgVmVyaWZ5VGltZUJhc2VkUGF5bG9hZCAoDQo+ID4gICAgICAgICAgZ290 byBFeGl0Ow0KPiA+DQo+ID4gICAgICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiAtICAgICAgaWYg KENlcnRzU2l6ZWluRGIgPT0gU0hBMjU2X0RJR0VTVF9TSVpFKSB7DQo+ID4NCj4gPiArICAgICAg aWYgKChIYXNoQWxnSWQgPCAoc2l6ZW9mIChtSGFzaEluZm8pIC8gc2l6ZW9mIChFRklfSEFTSF9J TkZPKSkpDQo+ID4gKyAmJg0KPiA+IChDZXJ0c1NpemVpbkRiID09IG1IYXNoSW5mb1tIYXNoQWxn SWRdLkhhc2hTaXplKSkgew0KPiA+DQo+ID4gICAgICAgICAgLy8NCj4gPg0KPiA+ICAgICAgICAg IC8vIENoZWNrIGhhc2ggb2Ygc2lnbmVyIGNlcnQgQ29tbW9uTmFtZSArIFRvcC1sZXZlbCBpc3N1 ZXINCj4gPiB0YnNDZXJ0aWZpY2F0ZSBhZ2FpbnN0IGRhdGEgaW4gQ2VydERiDQo+ID4NCj4gPiAg ICAgICAgICAvLw0KPiA+DQo+ID4gICAgICAgICAgQ2VydERhdGFQdHIgPSAoRUZJX0NFUlRfREFU QSAqKShTaWduZXJDZXJ0cyArIDEpOw0KPiA+DQo+ID4gLSAgICAgICAgU3RhdHVzICAgICAgPSBD YWxjdWxhdGVQcml2QXV0aFZhclNpZ25DaGFpblNIQTI1NkRpZ2VzdCAoDQo+ID4NCj4gPiArICAg ICAgICBTdGF0dXMgICAgICA9IENhbGN1bGF0ZVByaXZBdXRoVmFyU2lnbkNoYWluU0hBRGlnZXN0 ICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBIYXNoQWxnSWQsDQo+ID4NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VydERhdGFQdHItPkNlcnREYXRhQnVmZmVyLA0K PiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRVbmFsaWduZWQzMiAoKFVJTlQz Mg0KPiA+ICopJihDZXJ0RGF0YVB0ci0+Q2VydERhdGFMZW5ndGgpKSwNCj4gPg0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICBUb3BMZXZlbENlcnQsDQo+ID4NCj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgVG9wTGV2ZWxDZXJ0U2l6ZSwNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICBTaGEyNTZEaWdlc3QNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBT aGFEaWdlc3QNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4g LSAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoQ29tcGFyZU1lbSAoU2hhMjU2RGln ZXN0LA0KPiBDZXJ0c0luQ2VydERiLA0KPiA+IENlcnRzU2l6ZWluRGIpICE9IDApKSB7DQo+ID4N Cj4gPiArICAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChDb21wYXJlTWVtIChTaGFE aWdlc3QsDQo+ID4gKyBDZXJ0c0luQ2VydERiLA0KPiA+IENlcnRzU2l6ZWluRGIpICE9IDApKSB7 DQo+ID4NCj4gPiAgICAgICAgICAgIGdvdG8gRXhpdDsNCj4gPg0KPiA+ICAgICAgICAgIH0NCj4g Pg0KPiA+ICAgICAgICB9IGVsc2Ugew0KPiA+DQo+ID4gQEAgLTIyMTUsNiArMjM3Miw3IEBAIFZl cmlmeVRpbWVCYXNlZFBheWxvYWQgKA0KPiA+ICAgICAgICAvLw0KPiA+DQo+ID4gICAgICAgIENl cnREYXRhUHRyID0gKEVGSV9DRVJUX0RBVEEgKikoU2lnbmVyQ2VydHMgKyAxKTsNCj4gPg0KPiA+ ICAgICAgICBTdGF0dXMgICAgICA9IEluc2VydENlcnRzVG9EYiAoDQo+ID4NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIEhhc2hBbGdJZCwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgVmFyaWFibGVOYW1lLA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICBWZW5kb3JH dWlkLA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvQXV0aFZhcmlhYmxlTGliL0F1dGhT ZXJ2aWNlSW50ZXJuYWwuaA0KPiA+IGIvU2VjdXJpdHlQa2cvTGlicmFyeS9BdXRoVmFyaWFibGVM aWIvQXV0aFNlcnZpY2VJbnRlcm5hbC5oDQo+ID4gaW5kZXggYjIwMmU2MTNiYy4uZjdiZjc3MWQ1 NSAxMDA2NDQNCj4gPiAtLS0gYS9TZWN1cml0eVBrZy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9B dXRoU2VydmljZUludGVybmFsLmgNCj4gPiArKysgYi9TZWN1cml0eVBrZy9MaWJyYXJ5L0F1dGhW YXJpYWJsZUxpYi9BdXRoU2VydmljZUludGVybmFsLmgNCj4gPiBAQCAtOTIsNyArOTIsOSBAQCBl eHRlcm4gVUlOVDMyICBtTWF4Q2VydERiU2l6ZTsgIGV4dGVybiBVSU5UMzINCj4gPiBtUGxhdGZv cm1Nb2RlOw0KPiA+DQo+ID4gIGV4dGVybiBVSU5UOCAgIG1WZW5kb3JLZXlTdGF0ZTsNCj4gPg0K PiA+DQo+ID4NCj4gPiAtZXh0ZXJuIFZPSUQgICptSGFzaEN0eDsNCj4gPg0KPiA+ICtleHRlcm4g Vk9JRCAgKm1IYXNoU2hhMjU2Q3R4Ow0KPiA+DQo+ID4gK2V4dGVybiBWT0lEICAqbUhhc2hTaGEz ODRDdHg7DQo+ID4NCj4gPiArZXh0ZXJuIFZPSUQgICptSGFzaFNoYTUxMkN0eDsNCj4gPg0KPiA+ DQo+ID4NCj4gPiAgZXh0ZXJuIEFVVEhfVkFSX0xJQl9DT05URVhUX0lOICAqbUF1dGhWYXJMaWJD b250ZXh0SW47DQo+ID4NCj4gPg0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL1NlY3VyaXR5UGtnL0xp YnJhcnkvQXV0aFZhcmlhYmxlTGliL0F1dGhWYXJpYWJsZUxpYi5jDQo+ID4gYi9TZWN1cml0eVBr Zy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoVmFyaWFibGVMaWIuYw0KPiA+IGluZGV4IGRj NjFhZTg0MGMuLjE5ZTAwMDQ2OTkgMTAwNjQ0DQo+ID4gLS0tIGEvU2VjdXJpdHlQa2cvTGlicmFy eS9BdXRoVmFyaWFibGVMaWIvQXV0aFZhcmlhYmxlTGliLmMNCj4gPiArKysgYi9TZWN1cml0eVBr Zy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoVmFyaWFibGVMaWIuYw0KPiA+IEBAIC0yNiwx MiArMjYsMTQgQEAgVUlOVDMyICBtTWF4Q2VydERiU2l6ZTsNCj4gPiAgVUlOVDMyICBtUGxhdGZv cm1Nb2RlOw0KPiA+DQo+ID4gIFVJTlQ4ICAgbVZlbmRvcktleVN0YXRlOw0KPiA+DQo+ID4NCj4g Pg0KPiA+IC1FRklfR1VJRCAgbVNpZ25hdHVyZVN1cHBvcnRbXSA9IHsgRUZJX0NFUlRfU0hBMV9H VUlELA0KPiA+IEVGSV9DRVJUX1NIQTI1Nl9HVUlELCBFRklfQ0VSVF9SU0EyMDQ4X0dVSUQsDQo+ IEVGSV9DRVJUX1g1MDlfR1VJRCB9Ow0KPiA+DQo+ID4gK0VGSV9HVUlEICBtU2lnbmF0dXJlU3Vw cG9ydFtdID0geyBFRklfQ0VSVF9TSEExX0dVSUQsDQo+ID4gRUZJX0NFUlRfU0hBMjU2X0dVSUQs IEVGSV9DRVJUX1NIQTM4NF9HVUlELA0KPiBFRklfQ0VSVF9TSEE1MTJfR1VJRCwNCj4gPiBFRklf Q0VSVF9SU0EyMDQ4X0dVSUQsIEVGSV9DRVJUX1JTQTMwNzJfR1VJRCwNCj4gRUZJX0NFUlRfUlNB NDA5Nl9HVUlELA0KPiA+IEVGSV9DRVJUX1g1MDlfR1VJRCB9Ow0KPiA+DQo+ID4NCj4gPg0KPiA+ ICAvLw0KPiA+DQo+ID4gIC8vIEhhc2ggY29udGV4dCBwb2ludGVyDQo+ID4NCj4gPiAgLy8NCj4g Pg0KPiA+IC1WT0lEICAqbUhhc2hDdHggPSBOVUxMOw0KPiA+DQo+ID4gK1ZPSUQgICptSGFzaFNo YTI1NkN0eCA9IE5VTEw7DQo+ID4NCj4gPiArVk9JRCAgKm1IYXNoU2hhMzg0Q3R4ID0gTlVMTDsN Cj4gPg0KPiA+ICtWT0lEICAqbUhhc2hTaGE1MTJDdHggPSBOVUxMOw0KPiA+DQo+ID4NCj4gPg0K PiA+ICBWQVJJQUJMRV9FTlRSWV9QUk9QRVJUWSAgbUF1dGhWYXJFbnRyeVtdID0gew0KPiA+DQo+ ID4gICAgew0KPiA+DQo+ID4gQEAgLTkxLDcgKzkzLDcgQEAgVkFSSUFCTEVfRU5UUllfUFJPUEVS VFkgIG1BdXRoVmFyRW50cnlbXSA9IHsNCj4gPiAgICB9LA0KPiA+DQo+ID4gIH07DQo+ID4NCj4g Pg0KPiA+DQo+ID4gLVZPSUQgICoqbUF1dGhWYXJBZGRyZXNzUG9pbnRlcls5XTsNCj4gPg0KPiA+ ICtWT0lEICAqKm1BdXRoVmFyQWRkcmVzc1BvaW50ZXJbMTFdOw0KPiA+DQo+ID4NCj4gPg0KPiA+ ICBBVVRIX1ZBUl9MSUJfQ09OVEVYVF9JTiAgKm1BdXRoVmFyTGliQ29udGV4dEluID0gTlVMTDsN Cj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMTIwLDcgKzEyMiw2IEBAIEF1dGhWYXJpYWJsZUxpYklu aXRpYWxpemUgKA0KPiA+ICAgIFVJTlQzMiAgICAgIFZhckF0dHI7DQo+ID4NCj4gPiAgICBVSU5U OCAgICAgICAqRGF0YTsNCj4gPg0KPiA+ICAgIFVJTlROICAgICAgIERhdGFTaXplOw0KPiA+DQo+ ID4gLSAgVUlOVE4gICAgICAgQ3R4U2l6ZTsNCj4gPg0KPiA+ICAgIFVJTlQ4ICAgICAgIFNlY3Vy ZUJvb3RNb2RlOw0KPiA+DQo+ID4gICAgVUlOVDggICAgICAgU2VjdXJlQm9vdEVuYWJsZTsNCj4g Pg0KPiA+ICAgIFVJTlQ4ICAgICAgIEN1c3RvbU1vZGU7DQo+ID4NCj4gPiBAQCAtMTM1LDkgKzEz NiwxOCBAQCBBdXRoVmFyaWFibGVMaWJJbml0aWFsaXplICgNCj4gPiAgICAvLw0KPiA+DQo+ID4g ICAgLy8gSW5pdGlhbGl6ZSBoYXNoIGNvbnRleHQuDQo+ID4NCj4gPiAgICAvLw0KPiA+DQo+ID4g LSAgQ3R4U2l6ZSAgPSBTaGEyNTZHZXRDb250ZXh0U2l6ZSAoKTsNCj4gPg0KPiA+IC0gIG1IYXNo Q3R4ID0gQWxsb2NhdGVSdW50aW1lUG9vbCAoQ3R4U2l6ZSk7DQo+ID4NCj4gPiAtICBpZiAobUhh c2hDdHggPT0gTlVMTCkgew0KPiA+DQo+ID4gKyAgbUhhc2hTaGEyNTZDdHggPSBBbGxvY2F0ZVJ1 bnRpbWVQb29sIChTaGEyNTZHZXRDb250ZXh0U2l6ZSAoKSk7DQo+ID4NCj4gPiArICBpZiAobUhh c2hTaGEyNTZDdHggPT0gTlVMTCkgew0KPiA+DQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9S RVNPVVJDRVM7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBtSGFzaFNo YTM4NEN0eCA9IEFsbG9jYXRlUnVudGltZVBvb2wgKFNoYTM4NEdldENvbnRleHRTaXplICgpKTsN Cj4gPg0KPiA+ICsgIGlmIChtSGFzaFNoYTM4NEN0eCA9PSBOVUxMKSB7DQo+ID4NCj4gPiArICAg IHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgIG1IYXNoU2hhNTEyQ3R4ID0gQWxsb2NhdGVSdW50aW1lUG9vbCAoU2hhNTEy R2V0Q29udGV4dFNpemUgKCkpOw0KPiA+DQo+ID4gKyAgaWYgKG1IYXNoU2hhNTEyQ3R4ID09IE5V TEwpIHsNCj4gPg0KPiA+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+DQo+ ID4gICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+IEBAIC0zNTYsMTQgKzM2NiwxNiBAQCBBdXRoVmFy aWFibGVMaWJJbml0aWFsaXplICgNCj4gPiAgICBBdXRoVmFyTGliQ29udGV4dE91dC0+QXV0aFZh ckVudHJ5ICAgICAgICA9IG1BdXRoVmFyRW50cnk7DQo+ID4NCj4gPiAgICBBdXRoVmFyTGliQ29u dGV4dE91dC0+QXV0aFZhckVudHJ5Q291bnQgICA9IEFSUkFZX1NJWkUNCj4gKG1BdXRoVmFyRW50 cnkpOw0KPiA+DQo+ID4gICAgbUF1dGhWYXJBZGRyZXNzUG9pbnRlclswXSAgICAgICAgICAgICAg ICAgPSAoVk9JRCAqKikmbUNlcnREYlN0b3JlOw0KPiA+DQo+ID4gLSAgbUF1dGhWYXJBZGRyZXNz UG9pbnRlclsxXSAgICAgICAgICAgICAgICAgPSAoVk9JRCAqKikmbUhhc2hDdHg7DQo+ID4NCj4g PiAtICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzJdICAgICAgICAgICAgICAgICA9IChWT0lEDQo+ ICoqKSZtQXV0aFZhckxpYkNvbnRleHRJbjsNCj4gPg0KPiA+IC0gIG1BdXRoVmFyQWRkcmVzc1Bv aW50ZXJbM10gICAgICAgICAgICAgICAgID0gKFZPSUQNCj4gKiopJihtQXV0aFZhckxpYkNvbnRl eHRJbi0NCj4gPiA+RmluZFZhcmlhYmxlKSwNCj4gPg0KPiA+IC0gIG1BdXRoVmFyQWRkcmVzc1Bv aW50ZXJbNF0gICAgICAgICAgICAgICAgID0gKFZPSUQNCj4gKiopJihtQXV0aFZhckxpYkNvbnRl eHRJbi0NCj4gPiA+RmluZE5leHRWYXJpYWJsZSksDQo+ID4NCj4gPiAtICBtQXV0aFZhckFkZHJl c3NQb2ludGVyWzVdICAgICAgICAgICAgICAgICA9IChWT0lEDQo+ICoqKSYobUF1dGhWYXJMaWJD b250ZXh0SW4tDQo+ID4gPlVwZGF0ZVZhcmlhYmxlKSwNCj4gPg0KPiA+IC0gIG1BdXRoVmFyQWRk cmVzc1BvaW50ZXJbNl0gICAgICAgICAgICAgICAgID0gKFZPSUQNCj4gKiopJihtQXV0aFZhckxp YkNvbnRleHRJbi0NCj4gPiA+R2V0U2NyYXRjaEJ1ZmZlciksDQo+ID4NCj4gPiAtICBtQXV0aFZh ckFkZHJlc3NQb2ludGVyWzddICAgICAgICAgICAgICAgICA9IChWT0lEDQo+ICoqKSYobUF1dGhW YXJMaWJDb250ZXh0SW4tDQo+ID4gPkNoZWNrUmVtYWluaW5nU3BhY2VGb3JDb25zaXN0ZW5jeSks DQo+ID4NCj4gPiAtICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzhdICAgICAgICAgICAgICAgICA9 IChWT0lEDQo+ICoqKSYobUF1dGhWYXJMaWJDb250ZXh0SW4tDQo+ID4gPkF0UnVudGltZSksDQo+ ID4NCj4gPiArICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzFdICAgICAgICAgICAgICAgICA9IChW T0lEICoqKSZtSGFzaFNoYTI1NkN0eDsNCj4gPg0KPiA+ICsgIG1BdXRoVmFyQWRkcmVzc1BvaW50 ZXJbMl0gICAgICAgICAgICAgICAgID0gKFZPSUQgKiopJm1IYXNoU2hhMzg0Q3R4Ow0KPiA+DQo+ ID4gKyAgbUF1dGhWYXJBZGRyZXNzUG9pbnRlclszXSAgICAgICAgICAgICAgICAgPSAoVk9JRCAq KikmbUhhc2hTaGE1MTJDdHg7DQo+ID4NCj4gPiArICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzRd ICAgICAgICAgICAgICAgICA9IChWT0lEDQo+ICoqKSZtQXV0aFZhckxpYkNvbnRleHRJbjsNCj4g Pg0KPiA+ICsgIG1BdXRoVmFyQWRkcmVzc1BvaW50ZXJbNV0gICAgICAgICAgICAgICAgID0gKFZP SUQNCj4gKiopJihtQXV0aFZhckxpYkNvbnRleHRJbi0NCj4gPiA+RmluZFZhcmlhYmxlKSwNCj4g Pg0KPiA+ICsgIG1BdXRoVmFyQWRkcmVzc1BvaW50ZXJbNl0gICAgICAgICAgICAgICAgID0gKFZP SUQNCj4gKiopJihtQXV0aFZhckxpYkNvbnRleHRJbi0NCj4gPiA+RmluZE5leHRWYXJpYWJsZSks DQo+ID4NCj4gPiArICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzddICAgICAgICAgICAgICAgICA9 IChWT0lEDQo+ICoqKSYobUF1dGhWYXJMaWJDb250ZXh0SW4tDQo+ID4gPlVwZGF0ZVZhcmlhYmxl KSwNCj4gPg0KPiA+ICsgIG1BdXRoVmFyQWRkcmVzc1BvaW50ZXJbOF0gICAgICAgICAgICAgICAg ID0gKFZPSUQNCj4gKiopJihtQXV0aFZhckxpYkNvbnRleHRJbi0NCj4gPiA+R2V0U2NyYXRjaEJ1 ZmZlciksDQo+ID4NCj4gPiArICBtQXV0aFZhckFkZHJlc3NQb2ludGVyWzldICAgICAgICAgICAg ICAgICA9IChWT0lEDQo+ICoqKSYobUF1dGhWYXJMaWJDb250ZXh0SW4tDQo+ID4gPkNoZWNrUmVt YWluaW5nU3BhY2VGb3JDb25zaXN0ZW5jeSksDQo+ID4NCj4gPiArICBtQXV0aFZhckFkZHJlc3NQ b2ludGVyWzEwXSAgICAgICAgICAgICAgICAgPSAoVk9JRA0KPiAqKikmKG1BdXRoVmFyTGliQ29u dGV4dEluLQ0KPiA+ID5BdFJ1bnRpbWUpLA0KPiA+DQo+ID4gICAgQXV0aFZhckxpYkNvbnRleHRP dXQtPkFkZHJlc3NQb2ludGVyICAgICAgPSBtQXV0aFZhckFkZHJlc3NQb2ludGVyOw0KPiA+DQo+ ID4gICAgQXV0aFZhckxpYkNvbnRleHRPdXQtPkFkZHJlc3NQb2ludGVyQ291bnQgPSBBUlJBWV9T SVpFDQo+ID4gKG1BdXRoVmFyQWRkcmVzc1BvaW50ZXIpOw0KPiA+DQo+ID4NCj4gPg0KPiA+IGRp ZmYgLS1naXQNCj4gPiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvRHhlSW1hZ2VWZXJpZmljYXRpb25M aWIvRHhlSW1hZ2VWZXJpZmljYXRpb25MaWIuDQo+ID4gYw0KPiA+IGIvU2VjdXJpdHlQa2cvTGli cmFyeS9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi9EeGVJbWFnZVZlcmlmaWNhdGlvbkxpYi4NCj4g PiBjDQo+ID4gaW5kZXggNWQ4ZGJkNTQ2OC4uODhiMmQzYzZjMSAxMDA2NDQNCj4gPiAtLS0NCj4g PiBhL1NlY3VyaXR5UGtnL0xpYnJhcnkvRHhlSW1hZ2VWZXJpZmljYXRpb25MaWIvRHhlSW1hZ2VW ZXJpZmljYXRpb25MaWIuDQo+ID4gYw0KPiA+ICsrKyBiL1NlY3VyaXR5UGtnL0xpYnJhcnkvRHhl SW1hZ2VWZXJpZmljYXRpb25MaWIvRHhlSW1hZ2VWZXJpZmljYXRpb24NCj4gPiArKysgTGliLmMN Cj4gPiBAQCAtMTYyMCw3ICsxNjIwLDcgQEAgRG9uZToNCj4gPiAgICAgICAgaW4gdGhlIHNlY3Vy aXR5IGRhdGFiYXNlICJkYiIsIGFuZCBubyB2YWxpZCBzaWduYXR1cmUgbm9yIGFueQ0KPiA+IGhh c2ggdmFsdWUgb2YgdGhlIGltYWdlIG1heQ0KPiA+DQo+ID4gICAgICAgIGJlIHJlZmxlY3RlZCBp biB0aGUgc2VjdXJpdHkgZGF0YWJhc2UgImRieCIuDQo+ID4NCj4gPiAgICAgIE90aGVyd2lzZSwg dGhlIGltYWdlIGlzIG5vdCBzaWduZWQsDQo+ID4NCj4gPiAtICAgICAgVGhlIFNIQTI1NiBoYXNo IHZhbHVlIG9mIHRoZSBpbWFnZSBtdXN0IG1hdGNoIGEgcmVjb3JkIGluIHRoZQ0KPiBzZWN1cml0 eQ0KPiA+IGRhdGFiYXNlICJkYiIsIGFuZA0KPiA+DQo+ID4gKyAgICAgIFRoZSBoYXNoIHZhbHVl IG9mIHRoZSBpbWFnZSBtdXN0IG1hdGNoIGEgcmVjb3JkIGluIHRoZSBzZWN1cml0eQ0KPiA+ICsg ZGF0YWJhc2UNCj4gPiAiZGIiLCBhbmQNCj4gPg0KPiA+ICAgICAgICBub3QgYmUgcmVmbGVjdGVk IGluIHRoZSBzZWN1cml0eSBkYXRhIGJhc2UgImRieCIuDQo+ID4NCj4gPg0KPiA+DQo+ID4gICAg Q2F1dGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgcmVjZWl2ZSB1bnRydXN0ZWQgaW5wdXQuDQo+ID4N Cj4gPiBAQCAtMTY5MCw2ICsxNjkwLDggQEAgRHhlSW1hZ2VWZXJpZmljYXRpb25IYW5kbGVyICgN Cj4gPiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICBWYXJTdGF0dXM7DQo+ID4NCj4g PiAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBWYXJBdHRyOw0KPiA+DQo+ID4gICAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgSXNGb3VuZDsNCj4gPg0KPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hBbGc7DQo+ID4NCj4gPiArICBCT09MRUFOICAg ICAgICAgICAgICAgICAgICAgICBJc0ZvdW5kSW5EYXRhYmFzZTsNCj4gPg0KPiA+DQo+ID4NCj4g PiAgICBTaWduYXR1cmVMaXN0ICAgICA9IE5VTEw7DQo+ID4NCj4gPiAgICBTaWduYXR1cmVMaXN0 U2l6ZSA9IDA7DQo+ID4NCj4gPiBAQCAtMTY5OSw2ICsxNzAxLDcgQEAgRHhlSW1hZ2VWZXJpZmlj YXRpb25IYW5kbGVyICgNCj4gPiAgICBBY3Rpb24gICAgICAgICAgICA9IEVGSV9JTUFHRV9FWEVD VVRJT05fQVVUSF9VTlRFU1RFRDsNCj4gPg0KPiA+ICAgIElzVmVyaWZpZWQgICAgICAgID0gRkFM U0U7DQo+ID4NCj4gPiAgICBJc0ZvdW5kICAgICAgICAgICA9IEZBTFNFOw0KPiA+DQo+ID4gKyAg SXNGb3VuZEluRGF0YWJhc2UgPSBGQUxTRTsNCj4gPg0KPiA+DQo+ID4NCj4gPiAgICAvLw0KPiA+ DQo+ID4gICAgLy8gQ2hlY2sgdGhlIGltYWdlIHR5cGUgYW5kIGdldCBwb2xpY3kgc2V0dGluZy4N Cj4gPg0KPiA+IEBAIC0xODM3LDQwICsxODQwLDUwIEBAIER4ZUltYWdlVmVyaWZpY2F0aW9uSGFu ZGxlciAoDQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIGlmICgoU2VjRGF0YURpciA9PSBOVUxMKSB8 fCAoU2VjRGF0YURpci0+U2l6ZSA9PSAwKSkgew0KPiA+DQo+ID4gICAgICAvLw0KPiA+DQo+ID4g LSAgICAvLyBUaGlzIGltYWdlIGlzIG5vdCBzaWduZWQuIFRoZSBTSEEyNTYgaGFzaCB2YWx1ZSBv ZiB0aGUgaW1hZ2UgbXVzdA0KPiBtYXRjaCBhDQo+ID4gcmVjb3JkIGluIHRoZSBzZWN1cml0eSBk YXRhYmFzZSAiZGIiLA0KPiA+DQo+ID4gKyAgICAvLyBUaGlzIGltYWdlIGlzIG5vdCBzaWduZWQu IFRoZSBoYXNoIHZhbHVlIG9mIHRoZSBpbWFnZSBtdXN0DQo+ID4gKyBtYXRjaCBhIHJlY29yZA0K PiA+IGluIHRoZSBzZWN1cml0eSBkYXRhYmFzZSAiZGIiLA0KPiA+DQo+ID4gICAgICAvLyBhbmQg bm90IGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VjdXJpdHkgZGF0YSBiYXNlICJkYngiLg0KPiA+DQo+ ID4gICAgICAvLw0KPiA+DQo+ID4gLSAgICBpZiAoIUhhc2hQZUltYWdlIChIQVNIQUxHX1NIQTI1 NikpIHsNCj4gPg0KPiA+IC0gICAgICBERUJVRyAoKERFQlVHX0lORk8sICJEeGVJbWFnZVZlcmlm aWNhdGlvbkxpYjogRmFpbGVkIHRvIGhhc2ggdGhpcw0KPiBpbWFnZQ0KPiA+IHVzaW5nICVzLlxu IiwgbUhhc2hUeXBlU3RyKSk7DQo+ID4NCj4gPiAtICAgICAgZ290byBGYWlsZWQ7DQo+ID4NCj4g PiAtICAgIH0NCj4gPg0KPiA+ICsgICAgSGFzaEFsZyA9IHNpemVvZiAobUhhc2gpIC8gc2l6ZW9m IChIQVNIX1RBQkxFKTsNCj4gPg0KPiA+ICsgICAgd2hpbGUgKEhhc2hBbGcgPiAwKSB7DQo+ID4N Cj4gPiArICAgICAgSGFzaEFsZy0tOw0KPiA+DQo+ID4gKyAgICAgIGlmICgobUhhc2hbSGFzaEFs Z10uR2V0Q29udGV4dFNpemUgPT0gTlVMTCkgfHwNCj4gPiArIChtSGFzaFtIYXNoQWxnXS5IYXNo SW5pdA0KPiA+ID09IE5VTEwpIHx8IChtSGFzaFtIYXNoQWxnXS5IYXNoVXBkYXRlID09IE5VTEwp IHx8DQo+ID4gKG1IYXNoW0hhc2hBbGddLkhhc2hGaW5hbCA9PSBOVUxMKSkgew0KPiA+DQo+ID4g KyAgICAgICAgY29udGludWU7DQo+ID4NCj4gPiArICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgIGlm ICghSGFzaFBlSW1hZ2UgKEhhc2hBbGcpKSB7DQo+ID4NCj4gPiArICAgICAgICBjb250aW51ZTsN Cj4gPg0KPiA+ICsgICAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gLSAgICBEYlN0YXR1cyA9IElz U2lnbmF0dXJlRm91bmRJbkRhdGFiYXNlICgNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgIEVG SV9JTUFHRV9TRUNVUklUWV9EQVRBQkFTRTEsDQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICBt SW1hZ2VEaWdlc3QsDQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICAmbUNlcnRUeXBlLA0KPiA+ DQo+ID4gLSAgICAgICAgICAgICAgICAgbUltYWdlRGlnZXN0U2l6ZSwNCj4gPg0KPiA+IC0gICAg ICAgICAgICAgICAgICZJc0ZvdW5kDQo+ID4NCj4gPiAtICAgICAgICAgICAgICAgICApOw0KPiA+ DQo+ID4gLSAgICBpZiAoRUZJX0VSUk9SIChEYlN0YXR1cykgfHwgSXNGb3VuZCkgew0KPiA+DQo+ ID4gLSAgICAgIC8vDQo+ID4NCj4gPiAtICAgICAgLy8gSW1hZ2UgSGFzaCBpcyBpbiBmb3JiaWRk ZW4gZGF0YWJhc2UgKERCWCkuDQo+ID4NCj4gPiAtICAgICAgLy8NCj4gPg0KPiA+IC0gICAgICBE RUJVRyAoKERFQlVHX0lORk8sICJEeGVJbWFnZVZlcmlmaWNhdGlvbkxpYjogSW1hZ2UgaXMgbm90 IHNpZ25lZA0KPiBhbmQgJXMNCj4gPiBoYXNoIG9mIGltYWdlIGlzIGZvcmJpZGRlbiBieSBEQlgu XG4iLCBtSGFzaFR5cGVTdHIpKTsNCj4gPg0KPiA+IC0gICAgICBnb3RvIEZhaWxlZDsNCj4gPg0K PiA+ICsgICAgICBEYlN0YXR1cyA9IElzU2lnbmF0dXJlRm91bmRJbkRhdGFiYXNlICgNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgRUZJX0lNQUdFX1NFQ1VSSVRZX0RBVEFCQVNFMSwNCj4g Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgbUltYWdlRGlnZXN0LA0KPiA+DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAmbUNlcnRUeXBlLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICBt SW1hZ2VEaWdlc3RTaXplLA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAmSXNGb3VuZA0K PiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4gKyAgICAgIGlmIChFRklf RVJST1IgKERiU3RhdHVzKSB8fCBJc0ZvdW5kKSB7DQo+ID4NCj4gPiArICAgICAgICAvLw0KPiA+ DQo+ID4gKyAgICAgICAgLy8gSW1hZ2UgSGFzaCBpcyBpbiBmb3JiaWRkZW4gZGF0YWJhc2UgKERC WCkuDQo+ID4NCj4gPiArICAgICAgICAvLw0KPiA+DQo+ID4gKyAgICAgICAgREVCVUcgKChERUJV R19JTkZPLCAiRHhlSW1hZ2VWZXJpZmljYXRpb25MaWI6IEltYWdlIGlzIG5vdA0KPiA+ICsgc2ln bmVkDQo+ID4gYW5kICVzIGhhc2ggb2YgaW1hZ2UgaXMgZm9yYmlkZGVuIGJ5IERCWC5cbiIsIG1I YXNoVHlwZVN0cikpOw0KPiA+DQo+ID4gKyAgICAgICAgZ290byBGYWlsZWQ7DQo+ID4NCj4gPiAr ICAgICAgfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICAgIERiU3RhdHVzID0gSXNTaWduYXR1 cmVGb3VuZEluRGF0YWJhc2UgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAgICBFRklfSU1B R0VfU0VDVVJJVFlfREFUQUJBU0UsDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgIG1JbWFn ZURpZ2VzdCwNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgJm1DZXJ0VHlwZSwNCj4gPg0K PiA+ICsgICAgICAgICAgICAgICAgICAgbUltYWdlRGlnZXN0U2l6ZSwNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgJklzRm91bmQNCj4gPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgKTsN Cj4gPg0KPiA+ICsgICAgICBpZiAoIUVGSV9FUlJPUiAoRGJTdGF0dXMpICYmIElzRm91bmQpIHsN Cj4gPg0KPiA+ICsgICAgICAgIC8vDQo+ID4NCj4gPiArICAgICAgICAvLyBJbWFnZSBIYXNoIGlz IGluIGFsbG93ZWQgZGF0YWJhc2UgKERCKS4NCj4gPg0KPiA+ICsgICAgICAgIC8vDQo+ID4NCj4g PiArICAgICAgICBJc0ZvdW5kSW5EYXRhYmFzZSA9IFRSVUU7DQo+ID4NCj4gPiArICAgICAgfQ0K PiA+DQo+ID4gICAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gLSAgICBEYlN0YXR1cyA9IElzU2ln bmF0dXJlRm91bmRJbkRhdGFiYXNlICgNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgIEVGSV9J TUFHRV9TRUNVUklUWV9EQVRBQkFTRSwNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgIG1JbWFn ZURpZ2VzdCwNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICZtQ2VydFR5cGUsDQo+ID4NCj4g PiAtICAgICAgICAgICAgICAgICBtSW1hZ2VEaWdlc3RTaXplLA0KPiA+DQo+ID4gLSAgICAgICAg ICAgICAgICAgJklzRm91bmQNCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICk7DQo+ID4NCj4g PiAtICAgIGlmICghRUZJX0VSUk9SIChEYlN0YXR1cykgJiYgSXNGb3VuZCkgew0KPiA+DQo+ID4g LSAgICAgIC8vDQo+ID4NCj4gPiAtICAgICAgLy8gSW1hZ2UgSGFzaCBpcyBpbiBhbGxvd2VkIGRh dGFiYXNlIChEQikuDQo+ID4NCj4gPiAtICAgICAgLy8NCj4gPg0KPiA+ICsgICAgaWYgKElzRm91 bmRJbkRhdGFiYXNlKSB7DQo+ID4NCj4gPiAgICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ DQo+ID4gICAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2Vj dXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJl Qm9vdENvbg0KPiBmDQo+ID4gaWdEeA0KPiA+IGUuaW5mDQo+ID4NCj4gYi9TZWN1cml0eVBrZy9W YXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+ IGYNCj4gPiBpZ0R4DQo+ID4gZS5pbmYNCj4gPiBpbmRleCAxNjcxZDViZTdjLi5jYjUyYTE2YzA5 IDEwMDY0NA0KPiA+IC0tLQ0KPiA+DQo+IGEvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNh dGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWdEeA0KPiA+ IGUuaW5mDQo+ID4gKysrDQo+ID4NCj4gYi9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0 ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ0R4DQo+ID4g ZS5pbmYNCj4gPiBAQCAtNzAsNiArNzAsMTQgQEANCj4gPiAgICAjIyBTT01FVElNRVNfUFJPRFVD RVMgICAgICAjIyBHVUlEICAgICAgICAgICAgIyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+ IHRoZQ0KPiA+IHNpZ25hdHVyZS4NCj4gPg0KPiA+ICAgIGdFZmlDZXJ0UnNhMjA0OEd1aWQNCj4g Pg0KPiA+DQo+ID4NCj4gPiArICAjIyBTT01FVElNRVNfQ09OU1VNRVMgICAgICAjIyBHVUlEICAg ICAgICAgICAgIyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+IHRoZQ0KPiA+IHNpZ25hdHVy ZS4NCj4gPg0KPiA+ICsgICMjIFNPTUVUSU1FU19QUk9EVUNFUyAgICAgICMjIEdVSUQgICAgICAg ICAgICAjIFVuaXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4gc2lnbmF0dXJlLg0K PiA+DQo+ID4gKyAgZ0VmaUNlcnRSc2EzMDcyR3VpZA0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAg IyMgU09NRVRJTUVTX0NPTlNVTUVTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVlIElE IGZvciB0aGUgdHlwZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiArICAjIyBT T01FVElNRVNfUFJPRFVDRVMgICAgICAjIyBHVUlEICAgICAgICAgICAgIyBVbmlxdWUgSUQgZm9y IHRoZSB0eXBlIG9mDQo+IHRoZQ0KPiA+IHNpZ25hdHVyZS4NCj4gPg0KPiA+ICsgIGdFZmlDZXJ0 UnNhNDA5Nkd1aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICAgICMjIFNPTUVUSU1FU19DT05TVU1F UyAgICAgICMjIEdVSUQgICAgICAgICAgICAjIFVuaXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4g dGhlDQo+ID4gc2lnbmF0dXJlLg0KPiA+DQo+ID4gICAgIyMgU09NRVRJTUVTX1BST0RVQ0VTICAg ICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVlIElEIGZvciB0aGUgdHlwZSBvZg0KPiB0aGUN Cj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiAgICBnRWZpQ2VydFg1MDlHdWlkDQo+ID4NCj4gPiBA QCAtODIsNiArOTAsMTQgQEANCj4gPiAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgICAjIyBH VUlEICAgICAgICAgICAgIyBVbmlxdWUgSUQgZm9yIHRoZSB0eXBlIG9mDQo+IHRoZQ0KPiA+IHNp Z25hdHVyZS4NCj4gPg0KPiA+ICAgIGdFZmlDZXJ0U2hhMjU2R3VpZA0KPiA+DQo+ID4NCj4gPg0K PiA+ICsgICMjIFNPTUVUSU1FU19DT05TVU1FUyAgICAgICMjIEdVSUQgICAgICAgICAgICAjIFVu aXF1ZSBJRCBmb3IgdGhlIHR5cGUgb2YNCj4gdGhlDQo+ID4gc2lnbmF0dXJlLg0KPiA+DQo+ID4g KyAgIyMgU09NRVRJTUVTX1BST0RVQ0VTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVl IElEIGZvciB0aGUgdHlwZSBvZg0KPiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiArICBn RWZpQ2VydFNoYTM4NEd1aWQNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgICMjIFNPTUVUSU1FU19D T05TVU1FUyAgICAgICMjIEdVSUQgICAgICAgICAgICAjIFVuaXF1ZSBJRCBmb3IgdGhlIHR5cGUg b2YNCj4gdGhlDQo+ID4gc2lnbmF0dXJlLg0KPiA+DQo+ID4gKyAgIyMgU09NRVRJTUVTX1BST0RV Q0VTICAgICAgIyMgR1VJRCAgICAgICAgICAgICMgVW5pcXVlIElEIGZvciB0aGUgdHlwZSBvZg0K PiB0aGUNCj4gPiBzaWduYXR1cmUuDQo+ID4NCj4gPiArICBnRWZpQ2VydFNoYTUxMkd1aWQNCj4g Pg0KPiA+ICsNCj4gPg0KPiA+ICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAgICAgICMjIFZhcmlh YmxlOkwiZGIiDQo+ID4NCj4gPiAgICAjIyBTT01FVElNRVNfUFJPRFVDRVMgICAgICAjIyBWYXJp YWJsZTpMImRiIg0KPiA+DQo+ID4gICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTICAgICAgIyMgVmFy aWFibGU6TCJkYngiDQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TZWN1cml0eVBrZy9W YXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+ IGYNCj4gPiBpZ0ltDQo+ID4gcGwuYw0KPiA+DQo+IGIvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRo ZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWdJ bQ0KPiA+IHBsLmMNCj4gPiBpbmRleCAwZTMxNTAyYjFiLi45MDI2OGQzNGQzIDEwMDY0NA0KPiA+ IC0tLQ0KPiA+DQo+IGEvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJv b3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWdJbQ0KPiA+IHBsLmMNCj4gPiAr KysNCj4gPg0KPiBiL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290 Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnSW0NCj4gPiBwbC5jDQo+ID4gQEAg LTU2MCw3ICs1NjAsNyBAQCBPTl9FWElUOg0KPiA+DQo+ID4NCj4gPiAgKiovDQo+ID4NCj4gPiAg RUZJX1NUQVRVUw0KPiA+DQo+ID4gLUVucm9sbFJzYTIwNDhUb0tlayAoDQo+ID4NCj4gPiArRW5y b2xsUnNhVG9LZWsgKA0KPiA+DQo+ID4gICAgSU4gU0VDVVJFQk9PVF9DT05GSUdfUFJJVkFURV9E QVRBICAqUHJpdmF0ZQ0KPiA+DQo+ID4gICAgKQ0KPiA+DQo+ID4gIHsNCj4gPg0KPiA+IEBAIC02 MDMsOCArNjAzLDE5IEBAIEVucm9sbFJzYTIwNDhUb0tlayAoDQo+ID4NCj4gPg0KPiA+ICAgIEFT U0VSVCAoS2V5QmxvYiAhPSBOVUxMKTsNCj4gPg0KPiA+ICAgIEtleUluZm8gPSAoQ1BMX0tFWV9J TkZPICopS2V5QmxvYjsNCj4gPg0KPiA+IC0gIGlmIChLZXlJbmZvLT5LZXlMZW5ndGhJbkJpdHMg LyA4ICE9IFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFKSB7DQo+ID4NCj4gPiAtICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJVbnN1cHBvcnRlZCBrZXkgbGVuZ3RoLCBPbmx5IFJTQTIwNDggaXMN Cj4gPiBzdXBwb3J0ZWQuXG4iKSk7DQo+ID4NCj4gPiArICBpZiAoS2V5SW5mby0+S2V5VHlwZSA9 PSAwKSB7DQo+ID4NCj4gPiArICAgIHN3aXRjaCAoS2V5SW5mby0+S2V5TGVuZ3RoSW5CaXRzIC8g OCkgew0KPiA+DQo+ID4gKyAgICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOg0KPiA+ DQo+ID4gKyAgICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMzA3Ml9TSVpFOg0KPiA+DQo+ID4gKyAg ICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBNDA5Nl9TSVpFOg0KPiA+DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+DQo+ID4gKyAgICBkZWZhdWx0IDoNCj4gPg0KPiA+ICsgICAgICBERUJVRyAoKERFQlVH X0VSUk9SLCAiVW5zdXBwb3J0ZWQga2V5IGxlbmd0aCwgT25seSBSU0EyMDQ4LA0KPiA+ICsgUlNB MzA3Mg0KPiA+IGFuZCBSU0E0MDk2IGFyZSBzdXBwb3J0ZWQuXG4iKSk7DQo+ID4NCj4gPiArICAg ICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+DQo+ID4gKyAgICAgIGdvdG8gT05fRVhJ VDsNCj4gPg0KPiA+ICsgICAgfQ0KPiA+DQo+ID4gKyAgfSBlbHNlIHsNCj4gPg0KPiA+ICsgICAg REVCVUcgKChERUJVR19FUlJPUiwgIlVuc3VwcG9ydGVkIGtleSB0eXBlIDogJWQsIG9ubHkgMCBp cw0KPiA+IHN1cHBvcnRlZC5cbiIsIEtleUluZm8tPktleVR5cGUpKTsNCj4gPg0KPiA+ICAgICAg U3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+DQo+ID4gICAgICBnb3RvIE9OX0VYSVQ7DQo+ ID4NCj4gPiAgICB9DQo+ID4NCj4gPiBAQCAtNjMyLDcgKzY0Myw3IEBAIEVucm9sbFJzYTIwNDhU b0tlayAoDQo+ID4gICAgLy8NCj4gPg0KPiA+ICAgIEtla1NpZ0xpc3RTaXplID0gc2l6ZW9mIChF RklfU0lHTkFUVVJFX0xJU1QpDQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9m IChFRklfU0lHTkFUVVJFX0RBVEEpIC0gMQ0KPiA+DQo+ID4gLSAgICAgICAgICAgICAgICAgICAr IFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOw0KPiA+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICArIEtleUxlbkluQnl0ZXM7DQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgS2VrU2lnTGlzdCA9IChF RklfU0lHTkFUVVJFX0xJU1QgKilBbGxvY2F0ZVplcm9Qb29sDQo+ID4gKEtla1NpZ0xpc3RTaXpl KTsNCj4gPg0KPiA+ICAgIGlmIChLZWtTaWdMaXN0ID09IE5VTEwpIHsNCj4gPg0KPiA+IEBAIC02 NDIsMTcgKzY1MywzMiBAQCBFbnJvbGxSc2EyMDQ4VG9LZWsgKA0KPiA+DQo+ID4NCj4gPiAgICBL ZWtTaWdMaXN0LT5TaWduYXR1cmVMaXN0U2l6ZSA9IHNpemVvZiAoRUZJX1NJR05BVFVSRV9MSVNU KQ0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZiAo RUZJX1NJR05BVFVSRV9EQVRBKSAtIDENCj4gPg0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKyBXSU5fQ0VSVF9VRUZJX1JTQTIwNDhfU0laRTsNCj4gPg0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoVUlOVDMyKSBLZXlMZW5JbkJ5dGVzOw0K PiA+DQo+ID4gICAgS2VrU2lnTGlzdC0+U2lnbmF0dXJlSGVhZGVyU2l6ZSA9IDA7DQo+ID4NCj4g PiAtICBLZWtTaWdMaXN0LT5TaWduYXR1cmVTaXplICAgICAgID0gc2l6ZW9mIChFRklfU0lHTkFU VVJFX0RBVEEpIC0gMSArDQo+ID4gV0lOX0NFUlRfVUVGSV9SU0EyMDQ4X1NJWkU7DQo+ID4NCj4g PiAtICBDb3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTIw NDhHdWlkKTsNCj4gPg0KPiA+ICsgIEtla1NpZ0xpc3QtPlNpZ25hdHVyZVNpemUgICAgICAgPSBz aXplb2YgKEVGSV9TSUdOQVRVUkVfREFUQSkgLSAxICsNCj4gKFVJTlQzMikNCj4gPiBLZXlMZW5J bkJ5dGVzOw0KPiA+DQo+ID4gKyAgc3dpdGNoIChLZXlMZW5JbkJ5dGVzKSB7DQo+ID4NCj4gPiAr ICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMjA0OF9TSVpFOg0KPiA+DQo+ID4gKyAgICBDb3B5R3Vp ZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTIwNDhHdWlkKTsNCj4g Pg0KPiA+ICsgICAgYnJlYWs7DQo+ID4NCj4gPiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBMzA3 Ml9TSVpFOg0KPiA+DQo+ID4gKyAgICBDb3B5R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5 cGUsICZnRWZpQ2VydFJzYTMwNzJHdWlkKTsNCj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ID4NCj4g PiArICBjYXNlIFdJTl9DRVJUX1VFRklfUlNBNDA5Nl9TSVpFOg0KPiA+DQo+ID4gKyAgICBDb3B5 R3VpZCAoJktla1NpZ0xpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTQwOTZHdWlkKTsN Cj4gPg0KPiA+ICsgICAgYnJlYWs7DQo+ID4NCj4gPiArICAgIGJyZWFrOw0KPiA+DQo+ID4gKyAg ZGVmYXVsdCA6DQo+ID4NCj4gPiArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJVbnN1cHBvcnRl ZCBrZXkgbGVuZ3RoLlxuIikpOw0KPiA+DQo+ID4gKyAgICBTdGF0dXMgPSBFRklfVU5TVVBQT1JU RUQ7DQo+ID4NCj4gPiArICAgIGdvdG8gT05fRVhJVDsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+ DQo+ID4NCj4gPiAgICBLRUtTaWdEYXRhID0gKEVGSV9TSUdOQVRVUkVfREFUQSAqKSgoVUlOVDgg KilLZWtTaWdMaXN0ICsgc2l6ZW9mDQo+ID4gKEVGSV9TSUdOQVRVUkVfTElTVCkpOw0KPiA+DQo+ ID4gICAgQ29weUd1aWQgKCZLRUtTaWdEYXRhLT5TaWduYXR1cmVPd25lciwgUHJpdmF0ZS0+U2ln bmF0dXJlR1VJRCk7DQo+ID4NCj4gPiAgICBDb3B5TWVtICgNCj4gPg0KPiA+ICAgICAgS0VLU2ln RGF0YS0+U2lnbmF0dXJlRGF0YSwNCj4gPg0KPiA+ICAgICAgS2V5QmxvYiArIHNpemVvZiAoQ1BM X0tFWV9JTkZPKSwNCj4gPg0KPiA+IC0gICAgV0lOX0NFUlRfVUVGSV9SU0EyMDQ4X1NJWkUNCj4g Pg0KPiA+ICsgICAgS2V5TGVuSW5CeXRlcw0KPiA+DQo+ID4gICAgICApOw0KPiA+DQo+ID4NCj4g Pg0KPiA+ICAgIC8vDQo+ID4NCj4gPiBAQCAtODkwLDcgKzkxNiw3IEBAIEVucm9sbEtleUV4Y2hh bmdlS2V5ICgNCj4gPiAgICBpZiAoSXNEZXJFbmNvZGVDZXJ0aWZpY2F0ZSAoRmlsZVBvc3RGaXgp KSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBFbnJvbGxYNTA5VG9LZWsgKFByaXZhdGUpOw0KPiA+ DQo+ID4gICAgfSBlbHNlIGlmIChDb21wYXJlTWVtIChGaWxlUG9zdEZpeCwgTCIucGJrIiwgNCkg PT0gMCkgew0KPiA+DQo+ID4gLSAgICByZXR1cm4gRW5yb2xsUnNhMjA0OFRvS2VrIChQcml2YXRl KTsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVucm9sbFJzYVRvS2VrIChQcml2YXRlKTsNCj4gPg0K PiA+ICAgIH0gZWxzZSB7DQo+ID4NCj4gPiAgICAgIC8vDQo+ID4NCj4gPiAgICAgIC8vIEZpbGUg dHlwZSBpcyB3cm9uZywgc2ltcGx5IGNsb3NlIGl0DQo+ID4NCj4gPiBAQCAtMTg0Nyw3ICsxODcz LDcgQEAgSGFzaFBlSW1hZ2UgKA0KPiA+ICAgIFNlY3Rpb25IZWFkZXIgPSBOVUxMOw0KPiA+DQo+ ID4gICAgU3RhdHVzICAgICAgICA9IEZBTFNFOw0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gIGlmIChI YXNoQWxnICE9IEhBU0hBTEdfU0hBMjU2KSB7DQo+ID4NCj4gPiArICBpZiAoKEhhc2hBbGcgPj0g SEFTSEFMR19NQVgpKSB7DQo+ID4NCj4gPiAgICAgIHJldHVybiBGQUxTRTsNCj4gPg0KPiA+ICAg IH0NCj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMTg1Niw4ICsxODgyLDI1IEBAIEhhc2hQZUltYWdl ICgNCj4gPiAgICAvLw0KPiA+DQo+ID4gICAgWmVyb01lbSAobUltYWdlRGlnZXN0LCBNQVhfRElH RVNUX1NJWkUpOw0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gIG1JbWFnZURpZ2VzdFNpemUgPSBTSEEy NTZfRElHRVNUX1NJWkU7DQo+ID4NCj4gPiAtICBtQ2VydFR5cGUgICAgICAgID0gZ0VmaUNlcnRT aGEyNTZHdWlkOw0KPiA+DQo+ID4gKyAgIHN3aXRjaCAoSGFzaEFsZykgew0KPiA+DQo+ID4gKyAg ICBjYXNlIEhBU0hBTEdfU0hBMjU2Og0KPiA+DQo+ID4gKyAgICAgIG1JbWFnZURpZ2VzdFNpemUg PSBTSEEyNTZfRElHRVNUX1NJWkU7DQo+ID4NCj4gPiArICAgICAgbUNlcnRUeXBlICAgICAgICA9 IGdFZmlDZXJ0U2hhMjU2R3VpZDsNCj4gPg0KPiA+ICsgICAgICBicmVhazsNCj4gPg0KPiA+ICsN Cj4gPg0KPiA+ICsgICAgY2FzZSBIQVNIQUxHX1NIQTM4NDoNCj4gPg0KPiA+ICsgICAgICBtSW1h Z2VEaWdlc3RTaXplID0gU0hBMzg0X0RJR0VTVF9TSVpFOw0KPiA+DQo+ID4gKyAgICAgIG1DZXJ0 VHlwZSAgICAgICAgPSBnRWZpQ2VydFNoYTM4NEd1aWQ7DQo+ID4NCj4gPiArICAgICAgYnJlYWs7 DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICAgIGNhc2UgSEFTSEFMR19TSEE1MTI6DQo+ID4NCj4g PiArICAgICAgbUltYWdlRGlnZXN0U2l6ZSA9IFNIQTUxMl9ESUdFU1RfU0laRTsNCj4gPg0KPiA+ ICsgICAgICBtQ2VydFR5cGUgICAgICAgID0gZ0VmaUNlcnRTaGE1MTJHdWlkOw0KPiA+DQo+ID4g KyAgICAgIGJyZWFrOw0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgICBkZWZhdWx0Og0KPiA+DQo+ ID4gKyAgICAgIHJldHVybiBGQUxTRTsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+DQo+ID4NCj4g PiAgICBDdHhTaXplID0gbUhhc2hbSGFzaEFsZ10uR2V0Q29udGV4dFNpemUgKCk7DQo+ID4NCj4g Pg0KPiA+DQo+ID4gQEAgLTIyNTEsNiArMjI5NCw3IEBAIEVucm9sbEltYWdlU2lnbmF0dXJlVG9T aWdEQiAoDQo+ID4gICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgQXR0cjsNCj4gPg0KPiA+ ICAgIFdJTl9DRVJUSUZJQ0FURV9VRUZJX0dVSUQgICpHdWlkQ2VydERhdGE7DQo+ID4NCj4gPiAg ICBFRklfVElNRSAgICAgICAgICAgICAgICAgICBUaW1lOw0KPiA+DQo+ID4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgSGFzaEFsZzsNCj4gPg0KPiA+DQo+ID4NCj4gPiAgICBEYXRhICAg ICAgICAgPSBOVUxMOw0KPiA+DQo+ID4gICAgR3VpZENlcnREYXRhID0gTlVMTDsNCj4gPg0KPiA+ IEBAIC0yMjg5LDggKzIzMzMsMjAgQEAgRW5yb2xsSW1hZ2VTaWduYXR1cmVUb1NpZ0RCICgNCj4g PiAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgaWYgKG1TZWNEYXRhRGlyLT5TaXplT2ZDZXJ0 ID09IDApIHsNCj4gPg0KPiA+IC0gICAgaWYgKCFIYXNoUGVJbWFnZSAoSEFTSEFMR19TSEEyNTYp KSB7DQo+ID4NCj4gPiAtICAgICAgU3RhdHVzID0gIEVGSV9TRUNVUklUWV9WSU9MQVRJT047DQo+ ID4NCj4gPiArICAgIFN0YXR1cyA9IEVGSV9TRUNVUklUWV9WSU9MQVRJT047DQo+ID4NCj4gPiAr ICAgIEhhc2hBbGcgPSBzaXplb2YgKG1IYXNoKSAvIHNpemVvZiAoSEFTSF9UQUJMRSk7DQo+ID4N Cj4gPiArICAgIHdoaWxlIChIYXNoQWxnID4gMCkgew0KPiA+DQo+ID4gKyAgICAgIEhhc2hBbGct LTsNCj4gPg0KPiA+ICsgICAgICBpZiAoKG1IYXNoW0hhc2hBbGddLkdldENvbnRleHRTaXplID09 IE5VTEwpIHx8DQo+ID4gKyAobUhhc2hbSGFzaEFsZ10uSGFzaEluaXQNCj4gPiA9PSBOVUxMKSB8 fCAobUhhc2hbSGFzaEFsZ10uSGFzaFVwZGF0ZSA9PSBOVUxMKSB8fA0KPiA+IChtSGFzaFtIYXNo QWxnXS5IYXNoRmluYWwgPT0gTlVMTCkpIHsNCj4gPg0KPiA+ICsgICAgICAgIGNvbnRpbnVlOw0K PiA+DQo+ID4gKyAgICAgIH0NCj4gPg0KPiA+ICsgICAgICBpZiAoSGFzaFBlSW1hZ2UgKEhhc2hB bGcpKSB7DQo+ID4NCj4gPiArICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPg0KPiA+ ICsgICAgICAgIGJyZWFrOw0KPiA+DQo+ID4gKyAgICAgIH0NCj4gPg0KPiA+ICsgICAgfQ0KPiA+ DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4NCj4gPiArICAgICAgREVC VUcgKChERUJVR19FUlJPUiwgIkZhaWwgdG8gZ2V0IGhhc2ggZGlnZXN0OiAlciIsIFN0YXR1cykp Ow0KPiA+DQo+ID4gICAgICAgIGdvdG8gT05fRVhJVDsNCj4gPg0KPiA+ICAgICAgfQ0KPiA+DQo+ ID4gICAgfSBlbHNlIHsNCj4gPg0KPiA+IEBAIC0yNTg5LDYgKzI2NDUsMTAgQEAgVXBkYXRlRGVs ZXRlUGFnZSAoDQo+ID4gICAgd2hpbGUgKChJdGVtRGF0YVNpemUgPiAwKSAmJiAoSXRlbURhdGFT aXplID49DQo+ID4gQ2VydExpc3QtPlNpZ25hdHVyZUxpc3RTaXplKSkgew0KPiA+DQo+ID4gICAg ICBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJlVHlwZSwgJmdFZmlDZXJ0UnNh MjA0OEd1aWQpKQ0KPiA+IHsNCj4gPg0KPiA+ICAgICAgICBIZWxwID0gU1RSSU5HX1RPS0VOIChT VFJfQ0VSVF9UWVBFX1JTQTIwNDhfU0hBMjU2X0dVSUQpOw0KPiA+DQo+ID4gKyAgICB9IGVsc2Ug aWYgKENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNl cnRSc2EzMDcyR3VpZCkpIHsNCj4gPg0KPiA+ICsgICAgICBIZWxwID0gU1RSSU5HX1RPS0VOIChT VFJfQ0VSVF9UWVBFX1JTQTMwNzJfU0hBMzg0X0dVSUQpOw0KPiA+DQo+ID4gKyAgICB9IGVsc2Ug aWYgKENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNl cnRSc2E0MDk2R3VpZCkpIHsNCj4gPg0KPiA+ICsgICAgICBIZWxwID0gU1RSSU5HX1RPS0VOIChT VFJfQ0VSVF9UWVBFX1JTQTQwOTZfU0hBNTEyX0dVSUQpOw0KPiA+DQo+ID4gICAgICB9IGVsc2Ug aWYgKENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0 WDUwOUd1aWQpKSB7DQo+ID4NCj4gPiAgICAgICAgSGVscCA9IFNUUklOR19UT0tFTiAoU1RSX0NF UlRfVFlQRV9QQ0tTN19HVUlEKTsNCj4gPg0KPiA+ICAgICAgfSBlbHNlIGlmIChDb21wYXJlR3Vp ZCAoJkNlcnRMaXN0LT5TaWduYXR1cmVUeXBlLA0KPiA+ICZnRWZpQ2VydFNoYTFHdWlkKSkgew0K PiA+DQo+ID4gQEAgLTI3NTAsNiArMjgxMCw4IEBAIERlbGV0ZUtleUV4Y2hhbmdlS2V5ICgNCj4g PiAgICBHdWlkSW5kZXggICAgICA9IDA7DQo+ID4NCj4gPiAgICB3aGlsZSAoKEtla0RhdGFTaXpl ID4gMCkgJiYgKEtla0RhdGFTaXplID49DQo+ID4gQ2VydExpc3QtPlNpZ25hdHVyZUxpc3RTaXpl KSkgew0KPiA+DQo+ID4gICAgICBpZiAoQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2lnbmF0dXJl VHlwZSwgJmdFZmlDZXJ0UnNhMjA0OEd1aWQpDQo+ID4gfHwNCj4gPg0KPiA+ICsgICAgICAgIENv bXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTMwNzJHdWlk KQ0KPiA+ICsgfHwNCj4gPg0KPiA+ICsgICAgICAgIENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNp Z25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTQwOTZHdWlkKQ0KPiA+ICsgfHwNCj4gPg0KPiA+ICAg ICAgICAgIENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFg1 MDlHdWlkKSkNCj4gPg0KPiA+ICAgICAgew0KPiA+DQo+ID4gICAgICAgIENvcHlNZW0gKERhdGEg KyBPZmZzZXQsIENlcnRMaXN0LCAoc2l6ZW9mIChFRklfU0lHTkFUVVJFX0xJU1QpDQo+ID4gKyBD ZXJ0TGlzdC0NCj4gPiA+U2lnbmF0dXJlSGVhZGVyU2l6ZSkpOw0KPiA+DQo+ID4gQEAgLTI5NTIs NiArMzAxNCw4IEBAIERlbGV0ZVNpZ25hdHVyZSAoDQo+ID4gICAgR3VpZEluZGV4ICAgID0gMDsN Cj4gPg0KPiA+ICAgIHdoaWxlICgoSXRlbURhdGFTaXplID4gMCkgJiYgKEl0ZW1EYXRhU2l6ZSA+ PQ0KPiA+IENlcnRMaXN0LT5TaWduYXR1cmVMaXN0U2l6ZSkpIHsNCj4gPg0KPiA+ICAgICAgaWYg KENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFJzYTIwNDhH dWlkKQ0KPiA+IHx8DQo+ID4NCj4gPiArICAgICAgICBDb21wYXJlR3VpZCAoJkNlcnRMaXN0LT5T aWduYXR1cmVUeXBlLCAmZ0VmaUNlcnRSc2EzMDcyR3VpZCkNCj4gPiArIHx8DQo+ID4NCj4gPiAr ICAgICAgICBDb21wYXJlR3VpZCAoJkNlcnRMaXN0LT5TaWduYXR1cmVUeXBlLCAmZ0VmaUNlcnRS c2E0MDk2R3VpZCkNCj4gPiArIHx8DQo+ID4NCj4gPiAgICAgICAgICBDb21wYXJlR3VpZCAoJkNl cnRMaXN0LT5TaWduYXR1cmVUeXBlLCAmZ0VmaUNlcnRYNTA5R3VpZCkgfHwNCj4gPg0KPiA+ICAg ICAgICAgIENvbXBhcmVHdWlkICgmQ2VydExpc3QtPlNpZ25hdHVyZVR5cGUsICZnRWZpQ2VydFNo YTFHdWlkKSB8fA0KPiA+DQo+ID4gICAgICAgICAgQ29tcGFyZUd1aWQgKCZDZXJ0TGlzdC0+U2ln bmF0dXJlVHlwZSwgJmdFZmlDZXJ0U2hhMjU2R3VpZCkNCj4gPiB8fA0KPiA+DQo+ID4gQEAgLTM3 NTgsMTIgKzM4MjIsMjAgQEAgTG9hZFNpZ25hdHVyZUxpc3QgKA0KPiA+ICAgIHdoaWxlICgoUmVt YWluaW5nU2l6ZSA+IDApICYmIChSZW1haW5pbmdTaXplID49DQo+ID4gTGlzdFdhbGtlci0+U2ln bmF0dXJlTGlzdFNpemUpKSB7DQo+ID4NCj4gPiAgICAgIGlmIChDb21wYXJlR3VpZCAoJkxpc3RX YWxrZXItPlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0UnNhMjA0OEd1aWQpKSB7DQo+ID4N Cj4gPiAgICAgICAgTGlzdFR5cGUgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfUlNBMjA0 OF9TSEEyNTYpOw0KPiA+DQo+ID4gKyAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgmTGlzdFdh bGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiArICZnRWZpQ2VydFJzYTMwNzJHdWlkKSkNCj4gPiB7 DQo+ID4NCj4gPiArICAgICAgTGlzdFR5cGUgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVf UlNBMzA3Ml9TSEEzODQpOw0KPiA+DQo+ID4gKyAgICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgm TGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiArICZnRWZpQ2VydFJzYTQwOTZHdWlkKSkN Cj4gPiB7DQo+ID4NCj4gPiArICAgICAgTGlzdFR5cGUgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNU X1RZUEVfUlNBNDA5Nl9TSEE1MTIpOw0KPiA+DQo+ID4gICAgICB9IGVsc2UgaWYgKENvbXBhcmVH dWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRYNTA5R3VpZCkp IHsNCj4gPg0KPiA+ICAgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQ RV9YNTA5KTsNCj4gPg0KPiA+ICAgICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RXYWxr ZXItPlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdFZmlDZXJ0U2hhMUd1aWQpKSB7DQo+ID4NCj4gPiAg ICAgICAgTGlzdFR5cGUgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfU0hBMSk7DQo+ID4N Cj4gPiAgICAgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVU eXBlLA0KPiA+ICZnRWZpQ2VydFNoYTI1Nkd1aWQpKSB7DQo+ID4NCj4gPiAgICAgICAgTGlzdFR5 cGUgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfU0hBMjU2KTsNCj4gPg0KPiA+ICsgICAg fSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RXYWxrZXItPlNpZ25hdHVyZVR5cGUsDQo+ID4g KyAmZ0VmaUNlcnRTaGEzODRHdWlkKSkgew0KPiA+DQo+ID4gKyAgICAgIExpc3RUeXBlID0gU1RS SU5HX1RPS0VOIChTVFJfTElTVF9UWVBFX1NIQTM4NCk7DQo+ID4NCj4gPiArICAgIH0gZWxzZSBp ZiAoQ29tcGFyZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0KPiA+ICsgJmdFZmlD ZXJ0U2hhNTEyR3VpZCkpIHsNCj4gPg0KPiA+ICsgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tF TiAoU1RSX0xJU1RfVFlQRV9TSEE1MTIpOw0KPiA+DQo+ID4gICAgICB9IGVsc2UgaWYgKENvbXBh cmVHdWlkICgmTGlzdFdhbGtlci0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNlcnRYNTA5U2hh MjU2R3VpZCkpIHsNCj4gPg0KPiA+ICAgICAgICBMaXN0VHlwZSA9IFNUUklOR19UT0tFTiAoU1RS X0xJU1RfVFlQRV9YNTA5X1NIQTI1Nik7DQo+ID4NCj4gPiAgICAgIH0gZWxzZSBpZiAoQ29tcGFy ZUd1aWQgKCZMaXN0V2Fsa2VyLT5TaWduYXR1cmVUeXBlLA0KPiA+ICZnRWZpQ2VydFg1MDlTaGEz ODRHdWlkKSkgew0KPiA+DQo+ID4gQEAgLTQwMDEsNiArNDA3MywxNCBAQCBGb3JtYXRIZWxwSW5m byAoDQo+ID4gICAgICBMaXN0VHlwZUlkID0gU1RSSU5HX1RPS0VOIChTVFJfTElTVF9UWVBFX1JT QTIwNDhfU0hBMjU2KTsNCj4gPg0KPiA+ICAgICAgRGF0YVNpemUgICA9IExpc3RFbnRyeS0+U2ln bmF0dXJlU2l6ZSAtIHNpemVvZiAoRUZJX0dVSUQpOw0KPiA+DQo+ID4gICAgICBJc0NlcnQgICAg ID0gVFJVRTsNCj4gPg0KPiA+ICsgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0RW50cnkt PlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNlcnRSc2EzMDcyR3VpZCkpIHsNCj4gPg0KPiA+ ICsgICAgTGlzdFR5cGVJZCA9IFNUUklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9SU0EzMDcyX1NI QTM4NCk7DQo+ID4NCj4gPiArICAgIERhdGFTaXplICAgPSBMaXN0RW50cnktPlNpZ25hdHVyZVNp emUgLSBzaXplb2YgKEVGSV9HVUlEKTsNCj4gPg0KPiA+ICsgICAgSXNDZXJ0ICAgICA9IFRSVUU7 DQo+ID4NCj4gPiArICB9IGVsc2UgaWYgKENvbXBhcmVHdWlkICgmTGlzdEVudHJ5LT5TaWduYXR1 cmVUeXBlLA0KPiA+ICsgJmdFZmlDZXJ0UnNhNDA5Nkd1aWQpKSB7DQo+ID4NCj4gPiArICAgIExp c3RUeXBlSWQgPSBTVFJJTkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfUlNBNDA5Nl9TSEE1MTIpOw0K PiA+DQo+ID4gKyAgICBEYXRhU2l6ZSAgID0gTGlzdEVudHJ5LT5TaWduYXR1cmVTaXplIC0gc2l6 ZW9mIChFRklfR1VJRCk7DQo+ID4NCj4gPiArICAgIElzQ2VydCAgICAgPSBUUlVFOw0KPiA+DQo+ ID4gICAgfSBlbHNlIGlmIChDb21wYXJlR3VpZCAoJkxpc3RFbnRyeS0+U2lnbmF0dXJlVHlwZSwN Cj4gPiAmZ0VmaUNlcnRYNTA5R3VpZCkpIHsNCj4gPg0KPiA+ICAgICAgTGlzdFR5cGVJZCA9IFNU UklOR19UT0tFTiAoU1RSX0xJU1RfVFlQRV9YNTA5KTsNCj4gPg0KPiA+ICAgICAgRGF0YVNpemUg ICA9IExpc3RFbnRyeS0+U2lnbmF0dXJlU2l6ZSAtIHNpemVvZiAoRUZJX0dVSUQpOw0KPiA+DQo+ ID4gQEAgLTQwMTEsNiArNDA5MSwxMiBAQCBGb3JtYXRIZWxwSW5mbyAoDQo+ID4gICAgfSBlbHNl IGlmIChDb21wYXJlR3VpZCAoJkxpc3RFbnRyeS0+U2lnbmF0dXJlVHlwZSwNCj4gPiAmZ0VmaUNl cnRTaGEyNTZHdWlkKSkgew0KPiA+DQo+ID4gICAgICBMaXN0VHlwZUlkID0gU1RSSU5HX1RPS0VO IChTVFJfTElTVF9UWVBFX1NIQTI1Nik7DQo+ID4NCj4gPiAgICAgIERhdGFTaXplICAgPSAzMjsN Cj4gPg0KPiA+ICsgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0RW50cnktPlNpZ25hdHVy ZVR5cGUsDQo+ID4gKyAmZ0VmaUNlcnRTaGEzODRHdWlkKSkgew0KPiA+DQo+ID4gKyAgICBMaXN0 VHlwZUlkID0gU1RSSU5HX1RPS0VOIChTVFJfTElTVF9UWVBFX1NIQTM4NCk7DQo+ID4NCj4gPiAr ICAgIERhdGFTaXplICAgPSA0ODsNCj4gPg0KPiA+ICsgIH0gZWxzZSBpZiAoQ29tcGFyZUd1aWQg KCZMaXN0RW50cnktPlNpZ25hdHVyZVR5cGUsDQo+ID4gKyAmZ0VmaUNlcnRTaGE1MTJHdWlkKSkg ew0KPiA+DQo+ID4gKyAgICBMaXN0VHlwZUlkID0gU1RSSU5HX1RPS0VOIChTVFJfTElTVF9UWVBF X1NIQTUxMik7DQo+ID4NCj4gPiArICAgIERhdGFTaXplICAgPSA2NDsNCj4gPg0KPiA+ICAgIH0g ZWxzZSBpZiAoQ29tcGFyZUd1aWQgKCZMaXN0RW50cnktPlNpZ25hdHVyZVR5cGUsDQo+ID4gJmdF ZmlDZXJ0WDUwOVNoYTI1Nkd1aWQpKSB7DQo+ID4NCj4gPiAgICAgIExpc3RUeXBlSWQgPSBTVFJJ TkdfVE9LRU4gKFNUUl9MSVNUX1RZUEVfWDUwOV9TSEEyNTYpOw0KPiA+DQo+ID4gICAgICBEYXRh U2l6ZSAgID0gMzI7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TZWN1cml0eVBrZy9W YXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+ IGYNCj4gPiBpZ0ltDQo+ID4gcGwuaA0KPiA+DQo+IGIvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRo ZW50aWNhdGVkL1NlY3VyZUJvb3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWdJ bQ0KPiA+IHBsLmgNCj4gPiBpbmRleCAzN2M2NmYxYjk1Li5hZTUwZDkyOWE3IDEwMDY0NA0KPiA+ IC0tLQ0KPiA+DQo+IGEvU2VjdXJpdHlQa2cvVmFyaWFibGVBdXRoZW50aWNhdGVkL1NlY3VyZUJv b3RDb25maWdEeGUvU2VjdXJlQm9vdENvbg0KPiBmDQo+ID4gaWdJbQ0KPiA+IHBsLmgNCj4gPiAr KysNCj4gPg0KPiBiL1NlY3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290 Q29uZmlnRHhlL1NlY3VyZUJvb3RDb24NCj4gZg0KPiA+IGlnSW0NCj4gPiBwbC5oDQo+ID4gQEAg LTgyLDYgKzgyLDggQEAgZXh0ZXJuICBFRklfSUZSX0dVSURfTEFCRUwgICptRW5kTGFiZWw7ICAj ZGVmaW5lDQo+ID4gTUFYX0RJR0VTVF9TSVpFICBTSEE1MTJfRElHRVNUX1NJWkUNCj4gPg0KPiA+ DQo+ID4NCj4gPiAgI2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JTQTIwNDhfU0laRSAgMjU2DQo+ID4N Cj4gPiArI2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JTQTMwNzJfU0laRSAgMzg0DQo+ID4NCj4gPiAr I2RlZmluZSBXSU5fQ0VSVF9VRUZJX1JTQTQwOTZfU0laRSAgNTEyDQo+ID4NCj4gPg0KPiA+DQo+ ID4gIC8vDQo+ID4NCj4gPiAgLy8gU3VwcG9ydCBoYXNoIHR5cGVzDQo+ID4NCj4gPiBkaWZmIC0t Z2l0DQo+ID4NCj4gYS9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9v dENvbmZpZ0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ1N0cg0KPiA+IGluZ3MudW5pDQo+ ID4NCj4gYi9TZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZp Z0R4ZS9TZWN1cmVCb290Q29uDQo+IGYNCj4gPiBpZ1N0cg0KPiA+IGluZ3MudW5pDQo+ID4gaW5k ZXggMGQwMTcwMWRlNy4uMWI0OGFjYzgwMCAxMDA2NDQNCj4gPiAtLS0NCj4gPg0KPiBhL1NlY3Vy aXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290Q29uZmlnRHhlL1NlY3VyZUJv b3RDb24NCj4gZg0KPiA+IGlnU3RyDQo+ID4gaW5ncy51bmkNCj4gPiArKysNCj4gPg0KPiBiL1Nl Y3VyaXR5UGtnL1ZhcmlhYmxlQXV0aGVudGljYXRlZC9TZWN1cmVCb290Q29uZmlnRHhlL1NlY3Vy ZUJvb3RDb24NCj4gZg0KPiA+IGlnU3RyDQo+ID4gaW5ncy51bmkNCj4gPiBAQCAtMTEzLDYgKzEx Myw4IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g ICNzdHJpbmcgU1RSX0ZPUk1fRU5ST0xMX0tFS19GUk9NX0ZJTEVfVElUTEVfSEVMUCAgICAjbGFu Z3VhZ2UgZW4tDQo+IFVTDQo+ID4gIlJlYWQgdGhlIHB1YmxpYyBrZXkgb2YgS0VLIGZyb20gZmls ZSINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9GSUxFX0VYUExPUkVSX1RJVExFICAgICAgICAgICAg ICAgICAgICNsYW5ndWFnZSBlbi1VUyAiRmlsZQ0KPiBFeHBsb3JlciINCj4gPg0KPiA+ICAjc3Ry aW5nIFNUUl9DRVJUX1RZUEVfUlNBMjA0OF9TSEEyNTZfR1VJRCAgICAgICAgICNsYW5ndWFnZSBl bi1VUw0KPiA+ICJSU0EyMDQ4X1NIQTI1Nl9HVUlEIg0KPiA+DQo+ID4gKyNzdHJpbmcgU1RSX0NF UlRfVFlQRV9SU0EzMDcyX1NIQTM4NF9HVUlEICAgICAgICAgI2xhbmd1YWdlIGVuLVVTDQo+ID4g IlJTQTMwNzJfU0hBMzg0X0dVSUQiDQo+ID4NCj4gPiArI3N0cmluZyBTVFJfQ0VSVF9UWVBFX1JT QTQwOTZfU0hBNTEyX0dVSUQgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiUlNBNDA5Nl9T SEE1MTJfR1VJRCINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9DRVJUX1RZUEVfUENLUzdfR1VJRCAg ICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiAiUEtDUzdfR1VJRCINCj4gPg0KPiA+ ICAjc3RyaW5nIFNUUl9DRVJUX1RZUEVfU0hBMV9HVUlEICAgICAgICAgICAgICAgICAgICNsYW5n dWFnZSBlbi1VUw0KPiAiU0hBMV9HVUlEIg0KPiA+DQo+ID4gICNzdHJpbmcgU1RSX0NFUlRfVFlQ RV9TSEEyNTZfR1VJRCAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTDQo+ID4gIlNIQTI1 Nl9HVUlEIg0KPiA+DQo+ID4gQEAgLTEyMSw5ICsxMjMsMTMgQEAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAgI3N0cmluZyBTVFJfQ0VSVF9UWVBFX1g1 MDlfU0hBNTEyX0dVSUQgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiWDUwOV9TSEE1 MTJfR1VJRCINCj4gPg0KPiA+DQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1JTQTIw NDhfU0hBMjU2ICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiUlNBMjA0OF9TSEEy NTYiDQo+ID4NCj4gPiArI3N0cmluZyBTVFJfTElTVF9UWVBFX1JTQTMwNzJfU0hBMzg0ICAgICAg ICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gPiAiUlNBMzA3Ml9TSEEzODQiDQo+ID4NCj4gPiAr I3N0cmluZyBTVFJfTElTVF9UWVBFX1JTQTQwOTZfU0hBNTEyICAgICAgICAgICAgICAjbGFuZ3Vh Z2UgZW4tVVMNCj4gPiAiUlNBNDA5Nl9TSEE1MTIiDQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElT VF9UWVBFX1g1MDkgICAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlg1MDki DQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1NIQTEgICAgICAgICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNIQTEiDQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9U WVBFX1NIQTI1NiAgICAgICAgICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlNIQTI1NiIN Cj4gPg0KPiA+ICsjc3RyaW5nIFNUUl9MSVNUX1RZUEVfU0hBMzg0ICAgICAgICAgICAgICAgICAg ICAgICNsYW5ndWFnZSBlbi1VUyAiU0hBMzg0Ig0KPiA+DQo+ID4gKyNzdHJpbmcgU1RSX0xJU1Rf VFlQRV9TSEE1MTIgICAgICAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJTSEE1MTIi DQo+ID4NCj4gPiAgI3N0cmluZyBTVFJfTElTVF9UWVBFX1g1MDlfU0hBMjU2ICAgICAgICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMNCj4gIlg1MDlfU0hBMjU2Ig0KPiA+DQo+ID4gICNzdHJpbmcg U1RSX0xJU1RfVFlQRV9YNTA5X1NIQTM4NCAgICAgICAgICAgICAgICAgI2xhbmd1YWdlIGVuLVVT DQo+ICJYNTA5X1NIQTM4NCINCj4gPg0KPiA+ICAjc3RyaW5nIFNUUl9MSVNUX1RZUEVfWDUwOV9T SEE1MTIgICAgICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUw0KPiAiWDUwOV9TSEE1MTIiDQo+ ID4NCj4gPiAtLQ0KPiA+IDIuMjYuMi53aW5kb3dzLjENCg0KDQoKLT0tPS09LT0tPS09LT0tPS09 LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0 aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9ubGluZSAoIzEwNzIxOSk6IGh0dHBzOi8vZWRrMi5ncm91 cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzEwNzIxOQpNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3Jv dXBzLmlvL210Lzk5OTgxNTMyLzc2ODYxNzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIu Z3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5z dWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=