From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web08.1909.1606878232537311015 for ; Tue, 01 Dec 2020 19:03:53 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=g1l+gKDY; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: w.sheng@intel.com) IronPort-SDR: s3UqdQOXAr/z/ZYgSOwIlAiQsL4aeFJCdCPLFC6LcIkL0tKIqJl3B6hje5LJgCE/JteDUNlDLB Ofo6gummhRYQ== X-IronPort-AV: E=McAfee;i="6000,8403,9822"; a="160715177" X-IronPort-AV: E=Sophos;i="5.78,385,1599548400"; d="scan'208,223";a="160715177" X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2020 19:03:32 -0800 IronPort-SDR: etleoO19qIGxwB2pQbHqFfCqBlxRiALU72fCiyMsAokhxeMZ+wGzq1r57WVvVDNl1C4Ufp7qb+ kyPpsQvWNOaQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,385,1599548400"; d="scan'208,223";a="539490455" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga005.fm.intel.com with ESMTP; 01 Dec 2020 19:03:30 -0800 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 1 Dec 2020 19:03:29 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 1 Dec 2020 19:03:29 -0800 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.50) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 1 Dec 2020 19:03:28 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IlMq3YKqXCe1fRsY/rjmN5UIiLiK7+K1zRIxFYOPpXnlYGN2oRpqrHB+SZ2UoDE4eoB0akdhaP+UdCa694hOSiumK5vQrVuBEcmSeb0vCpYBj6AdgBasMFz4ek6AZ1Ihg723xBofyqMe0LGM5uVy6KAt6Tu8Oz6aAFxN1nfC+z7lRRFaN8uuSo8u+S7O6Ni+nUAiZP9s/YlrxWqXJiwGuP3FegG5h5U2lM8S3eQXBBV33488rv8KhpgLIfgpsZUg2fKUXUL3CP0ODYJvhIDXour7jF00rG+ZC8MTTjNXTIJx85qfYmzKRWWLnAE4Nba4vS0/pMbTLIIzv3xaBi6QIQ== 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-SenderADCheck; bh=MwM7AuwPT58eiHpEPdtg3Sz08PGUUH7Jncyfz+BY97I=; b=LyAsQWD/EXSNaxTY5bTL1fyE4bY05aFFtPviK1sgMyYXNPaT0YYPScDn5O/cgOH/lm5aCUEp2l1Y1dTCx+BJZYeaj7OTAFAia6vn2txmnoQ+vGq2kqvViNcb6I1tnJSFkB1vVEYNjanwCqrsdcuhrBnG7rRxyBW5ZYZwZ+6jPQT5T4P5rx+Fw/wCXmnLwe5GD+uNqxHQd8WiFZ6zH5LWRp0xVXMQSnSrLf3hpIeBMcUnGLfFa5fAqHGmTtM/6eYDXY1JQ1W7eUbj9PSJkVHyRuS/aBk4oD7G8EAUTYAOPGlNNxb8y45UWbqrJzpIoLPYQrrjHPs00Mplo0+Hhu/QFQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MwM7AuwPT58eiHpEPdtg3Sz08PGUUH7Jncyfz+BY97I=; b=g1l+gKDYNimRjFlLT7FrZT6aB/G9DRPzB1B22yNGYdy5FBUNGSOjBhEJRFYrib0WVPRujvBb9tzTLofIdhXprMA3ySaefyYld48cWB/lBBMT4AhPFCuJrJJpWxjZXrRVLNNOeXDyq2v0FB21jmXHnl6ePNahRSoJhk6NqrSFePA= Received: from CY4PR11MB1928.namprd11.prod.outlook.com (2603:10b6:903:11e::18) by CY4PR11MB1414.namprd11.prod.outlook.com (2603:10b6:903:23::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.25; Wed, 2 Dec 2020 03:03:26 +0000 Received: from CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::d922:f6a:d769:b5]) by CY4PR11MB1928.namprd11.prod.outlook.com ([fe80::d922:f6a:d769:b5%12]) with mapi id 15.20.3611.031; Wed, 2 Dec 2020 03:03:26 +0000 From: "Sheng Wei" To: "Yao, Jiewen" , "devel@edk2.groups.io" CC: "Ni, Ray" , "Chaganty, Rangasai V" , "Huang, Jenny" , "Feng, Roger" Subject: [PATCH v5] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Topic: [PATCH v5] IntelSiliconPkg/VTd: Add iommu 5 level paging support Thread-Index: AdbIV1Dp48imUm//Twe8QHBSqTQuoA== Date: Wed, 2 Dec 2020 03:03:26 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 441e1872-b12e-44e1-056f-08d8966ed6ab x-ms-traffictypediagnostic: CY4PR11MB1414: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: onNEAIDEPxhUSPo8ykzdrR3q3K/kFkg2M5FkdUliETEXWYd51NMC+7rQE+OY0RyT7w4MpfKSWhj/go87/+ozKcOqumf1IGfOWb2IOMLlccC/F1B/EBibhVDiEJY8X24EN9UWSU5AYHwlzqd7Rzp9Wp6M7s66bFQn2l/rE4fYtXbmNjwSiQAndZPnlCn+hHAK9DtJv31S9hMErtKjK3sbrfCRzy26iznpgfiGNsWheGKqL9Fq94AuoE0qwsAZa3YstPNzwiJ1wUZI2vl0Xd3uOjyTDE4Jui3gmWzGqj6QuK72HZUyWMjpuROUFCRl3JARb1JInbGHu9hOLldN18YfOa2ODXrrUZSPqaj6UFF9lLFFCFwcxO8C7opT0zF+4fyLksexPNqjJNcLJkqX+iC5cg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1928.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(39860400002)(346002)(376002)(136003)(396003)(366004)(478600001)(8676002)(66446008)(52536014)(5660300002)(66616009)(66476007)(66946007)(83380400001)(76116006)(64756008)(66556008)(71200400001)(966005)(2906002)(316002)(110136005)(54906003)(86362001)(99936003)(53546011)(7696005)(107886003)(186003)(9686003)(8936002)(55016002)(4326008)(33656002)(6506007)(30864003)(26005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?gb2312?B?Y21hQTZqU3RnVWNlZGhBL3pJbWw3NzQ4NExyMWxhYnl2UUtZc2FPK0g3TG0z?= =?gb2312?B?ZlNuTTVJQ2MxR3lKUzVrN0ZNbzJIazFaTEVVR3RabTJTSWhzSWxET0ptcGs0?= =?gb2312?B?Y1YzNU14NFRkR0h6NFlyVkFXYyswWStZTXVjc0wvbXV5VVpOZXRvbWZpU2Zj?= =?gb2312?B?bkllNTU5OE0rM3NnbGUzOWFabWRYR1NFSDd6RVJNOThSM0lKZDNzc0NOQ1g1?= =?gb2312?B?N1R1OVNMZEdJSWZKL2t5MFlEVWVNWW4xR2d0VGQxWVpzckFxa1VFMGVFNjVF?= =?gb2312?B?NnJEd2Q4T3hrdS9kd0xnTnBrdVBNWlVSaEYwdHNud2xnVWpUSlM2amVNZ0lv?= =?gb2312?B?eTcvbzI1R0E0ZlBpQW9OY0V5RC9ZWWNQVUE4SURpcEFLYk5SQnVQb3FPaEVj?= =?gb2312?B?aUo1eEZ6VTN2UmI2eGUzSW1UNVZ3LzduOWxIM21veW81OWZJd0pZb0wwSk1L?= =?gb2312?B?ZlBVMW96eDJkVEpWSUV1cTJ1MWtjRzJPODcwelM5d2RMSjVxNVRnRUlJM1FX?= =?gb2312?B?aktMRUM0MXBtYmlNNC9Ka1hDUXJlbTNUeG10Ukl2U3czNUlBOUIxSjBuSkdY?= =?gb2312?B?VXpGaitBNjBRWXpiTE1ydTlEN0ViWWtoRjE4QXRpMnFublp0c3d5TTVycjlp?= =?gb2312?B?bG1SZkJ0Ym9QbDJaajFaZWJ5QlRTcXhTQm8vNkUycCt1dE9mejYrNEVqZW1v?= =?gb2312?B?a29JQmpSdDJSQ0RzQ09FeXdxaU1nUG1ZNi9jSHBGN3VsaysyNTdKTll4YmpQ?= =?gb2312?B?UTJEcjIxSW55NXJKQXhjcksxdDZMbGNoNjBpUGgxZWJ4MEpnbnlHQmJwTVA1?= =?gb2312?B?MmJQQVQ0Nm5rZTBwODBtampzSU9iZDJhU2Q3UFZpOExtZFdMdUw5VVNaS3Fp?= =?gb2312?B?Y0x2NWxyZXk4M1BGcmFWUmlDSFZzSmJBQjBHR0pxQmJRclI4M2oyNnBISzU0?= =?gb2312?B?clRGVFJQK0VtM3NxVE5xeldONFA0VzBtb1ZiT3lSUlFlSWE5QUZvYWJDb0FR?= =?gb2312?B?ODJhNGs0R3V2WjhBdSs0ZWpmRHV5WVBmZWg3NFNkbUdicGRCeTVMTC9JTDVm?= =?gb2312?B?RzgrSDBhV0t4Nmk2Q2dBb3d6ZXFPMjdGTnRVWXM1VnFUa1VxM2Y1M1lIN3pV?= =?gb2312?B?VTY0TmMyQXhKcFZjWXJlL3dzQVMwOWFJbFA4TlVSZmZGdWVjOWlJTkZCYWhL?= =?gb2312?B?bnBZaDY0RzRBZTlUdXF1WGFTMTRJR1Q1RW9QMXRDQVEzM2ROei93YnFWaitu?= =?gb2312?B?ajNGQWtlTkdSelhOUGwvdmptNUt2Vlp0Nmxyb3RyUnN3UUFObVphTDZsTmhL?= =?gb2312?Q?aTSa5rdoiib/M=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1928.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 441e1872-b12e-44e1-056f-08d8966ed6ab X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Dec 2020 03:03:26.3237 (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: EzBRimr/dH0ZtLEPf8zVMsgxMhg1cNXfmwQo/Z49DPf12sTJCBc680doXcb58WkEzbTNUv3sucRd3yEYXp9dTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1414 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com X-Groupsio-MsgNum: 68158 Content-Language: en-US Content-Type: multipart/mixed; boundary="_002_CY4PR11MB192872D33AB3E9572141FD16E1F30CY4PR11MB1928namp_" --_002_CY4PR11MB192872D33AB3E9572141FD16E1F30CY4PR11MB1928namp_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgSmlld2VuLA0KQWJvdXQgdGhlIHBhdGNoIG9mIHN1cHBvcnQgNSBsZXZlbCBwYWdpbmcgaW9t bXUuDQpUaGFuayB5b3UgZm9yIGdpdmluZyB0aGUgcmV2aWV3IGNvbW1lbnRzLg0KSSBoYXZlIGRv bmUgYWxsIHRoZSB1cGRhdGUuIA0KQ291bGQgeW91IGdpdmUgInJldmlldyBieSIgb24gdGhpcyBw YXRjaCA/DQpUaGFuayB5b3UuDQpCUg0KU2hlbmcgV2VpDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBTaGVuZywgVw0KPiBTZW50OiAyMDIwxOoxMdTCMjTI1SAxMzo0 NA0KPiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBDaGFnYW50eSwgUmFu Z2FzYWkgVg0KPiA8cmFuZ2FzYWkudi5jaGFnYW50eUBpbnRlbC5jb20+OyBIdWFuZywgSmVubnkg PGplbm55Lmh1YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NF0gSW50ZWxT aWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nIHN1cHBvcnQNCj4gDQo+IEhp IEppZXdlbiwgQWxsLA0KPiBUaGFuayB5b3UgZm9yIHRoZSByZXZpZXcuIEkganVzdCBjaGVjayBh bmQgdXBkYXRlIHRoZSBwYXRjaC4NCj4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21l c3NhZ2UvNjc4NjU/cD0sLCwyMCwwLDAsMDo6cmVsZXZhbmNlLCxwb3N0ZXJpDQo+IGQlM0EyNTU4 NTU4LDIwLDIsMCw3ODQ3MTg3NA0KPiBDb3VsZCB3ZSBjb250aW51ZSB0aGUgcGF0Y2ggcmV2aWV3 ID8NCj4gQlINCj4gU2hlbmcgV2VpDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+IFNlbnQ6 IDIwMjDE6jEx1MIyM8jVIDE2OjQ0DQo+ID4gVG86IFNoZW5nLCBXIDx3LnNoZW5nQGludGVsLmNv bT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5j b20+OyBDaGFnYW50eSwgUmFuZ2FzYWkgVg0KPiA+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVs LmNvbT47IEh1YW5nLCBKZW5ueSA8amVubnkuaHVhbmdAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6 IFJFOiBbUEFUQ0ggdjRdIEludGVsU2lsaWNvblBrZy9WVGQ6IEFkZCBpb21tdSA1IGxldmVsIHBh Z2luZw0KPiA+IHN1cHBvcnQNCj4gPg0KPiA+IFRoYW5rcy4NCj4gPg0KPiA+IEkgb25seSByZXZp ZXdlZCB0aGUgcG9saWN5IHBhcnQuIENvbW1lbnQgYmVsb3c6DQo+ID4NCj4gPiAxKSBJIHJlY29t bWVuZCB5b3UgY2FuIG1lcmdlIGJlbG93IDIgaWYgaW50byBvbmUgLSBpZg0KPiA+ICgobUFjcGlE bWFyVGFibGUtDQo+ID4gPkhvc3RBZGRyZXNzV2lkdGggPD0gNDgpICYmDQo+ID4gKG1WdGRVbml0 SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgIT0gMCkpIHsg WW91DQo+ID4gY2FuIHVzZSAyIGxpbmVzLCBidXQgdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgMiBp Zi4NCj4gPg0KPiA+ICsgICAgICBpZiAobUFjcGlEbWFyVGFibGUtPkhvc3RBZGRyZXNzV2lkdGgg PD0gNDgpIHsNCj4gPiArICAgICAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhd LkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgIT0gMCkgew0KPiA+ICsgICAgICAgICAgbVZ0ZFVu aXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBGQUxTRTsNCj4gPiArICAg ICAgICB9DQo+ID4gKyAgICAgIH0NCj4gPg0KPiA+IDIpIEkgdGhpbmsgYmVsb3cgY29kZSBoYXMg dHlwby4NCj4gPiBUaGUgREVCVUcgbWVzc2FnZSBhYm91dCA0LWxldmVsIGFuZCA1LWxldmVsIHNo b3VsZCBiZSByZXZlcnNlZC4NCj4gPiBBbHNvIHdlIHNob3VsZCB1c2UgREVCVUdfSU5GTyBpbnN0 ZWFkIG9mIERFQlVHX0VSUk9SLg0KPiA+DQo+ID4gKyAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlv bltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpIHsNCj4gPiArICAgICAgQ29udGV4dEVudHJ5LT5C aXRzLkFkZHJlc3NXaWR0aCA9IDB4MzsNCj4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAi VXNpbmcgNC1sZXZlbCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwNCj4gPiBWdGRJbmRleCkpOw0K PiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgQ29udGV4dEVudHJ5LT5CaXRzLkFkZHJlc3NX aWR0aCA9IDB4MjsNCj4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiVXNpbmcgNS1sZXZl bCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwNCj4gPiBWdGRJbmRleCkpOw0KPiA+ICsgICAgfQ0K PiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gRnJvbTogU2hlbmcsIFcgPHcuc2hlbmdAaW50ZWwuY29tPg0KPiA+ID4gU2VudDogTW9uZGF5 LCBOb3ZlbWJlciAyMywgMjAyMCA0OjA0IFBNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW8NCj4gPiA+IENjOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgQ2hhZ2FudHksIFJhbmdh c2FpIFYNCj4gPiA+IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT47IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47DQo+ID4gPiBIdWFuZywgSmVubnkgPGplbm55Lmh1YW5n QGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFtQQVRDSCB2NF0gSW50ZWxTaWxpY29uUGtnL1ZU ZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nDQo+ID4gPiBzdXBwb3J0DQo+ID4gPg0KPiA+ID4g U3VwcG9ydCBpb21tdSA1IGxldmVsIHBhZ2luZyBmb3IgdHJhbnNsYXRpb24gdGFibGUuDQo+ID4g Pg0KPiA+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dp P2lkPTMwNjcNCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBTaGVuZyBXZWkgPHcuc2hlbmdA aW50ZWwuY29tPg0KPiA+ID4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+IENj OiBSYW5nYXNhaSBWIENoYWdhbnR5IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVsLmNvbT4NCj4g PiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+IENjOiBKZW5u eSBIdWFuZyA8amVubnkuaHVhbmdAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgLi4uL0Zl YXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uYyAgICAgICAgfCAgIDQgKy0NCj4g PiA+ICAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi5oICAgICAgICB8 ICAxOSArLQ0KPiA+ID4gIC4uLi9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFuc2xhdGlvblRh YmxlLmMgICAgIHwgMjgxDQo+ICsrKysrKysrKysrKysrKy0tDQo+ID4gPiAtLS0tDQo+ID4gPiAg Li4uL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFibGVFeC5jICAgfCAgMzEg KystDQo+ID4gPiAgLi4uL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jICAgICAgICAg ICAgICAgfCAgMTAgKy0NCj4gPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDI0NSBpbnNlcnRpb25zKCsp LCAxMDAgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gYS9TaWxp Y29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90 ZWN0aW9uLg0KPiA+ID4gYw0KPiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0aW9uLg0KPiA+ID4gYw0KPiA+ID4gaW5k ZXggOWI2MTM1ZWYuLjYyODU2NWVlIDEwMDY0NA0KPiA+ID4gLS0tDQo+ID4gPiBhL1NpbGljb24v SW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rp b24uDQo+ID4gPiBjDQo+ID4gPiArKysNCj4gPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGlj b25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+IGMNCj4g PiA+IEBAIC01MjMsMTAgKzUyMywxMCBAQCBTZXR1cFZ0ZCAoDQo+ID4gPiAgICBmb3IgKEluZGV4 ID0gMDsgSW5kZXggPCBtVnRkVW5pdE51bWJlcjsgSW5kZXgrKykgew0KPiA+ID4gICAgICBERUJV RyAoKERFQlVHX0lORk8sIlZURCBVbml0ICVkIChTZWdtZW50OiAlMDR4KVxuIiwgSW5kZXgsDQo+ ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5TZWdtZW50KSk7DQo+ID4gPiAgICAgIGlm IChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5FeHRSb290RW50cnlUYWJsZSAhPSBOVUxMKSB7 DQo+ID4gPiAtICAgICAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZQ0KPiA+ID4gKG1WdGRV bml0SW5mb3JtYXRpb25bSW5kZXhdLkV4dFJvb3RFbnRyeVRhYmxlKTsNCj4gPiA+ICsgICAgICBE dW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJ bmRleF0uRXh0Um9vdEVudHJ5VGFibGUsDQo+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4 XS5JczVMZXZlbFBhZ2luZyk7DQo+ID4gPiAgICAgIH0NCj4gPiA+ICAgICAgaWYgKG1WdGRVbml0 SW5mb3JtYXRpb25bSW5kZXhdLlJvb3RFbnRyeVRhYmxlICE9IE5VTEwpIHsNCj4gPiA+IC0gICAg ICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJ bmRleF0uUm9vdEVudHJ5VGFibGUpOw0KPiA+ID4gKyAgICAgIER1bXBEbWFyQ29udGV4dEVudHJ5 VGFibGUNCj4gPiA+IChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5Sb290RW50cnlUYWJsZSwN Cj4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ ICAgICAgfQ0KPiA+ID4gICAgfQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvU2ls aWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJv dGVjdGlvbi4NCj4gPiA+IGgNCj4gPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cv RmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvRG1hUHJvdGVjdGlvbi4NCj4gPiA+IGgNCj4gPiA+IGlu ZGV4IGEzMzMxZGI4Li5mNjQxY2VhMCAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+ID4gYS9TaWxpY29u L0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90ZWN0 aW9uLg0KPiA+ID4gaA0KPiA+ID4gKysrDQo+ID4gPiBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uDQo+ID4gPiBoDQo+ ID4gPiBAQCAtNzcsNiArNzcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiAgICBCT09MRUFO ICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eUNvbnRleHQ7DQo+ID4gPiAgICBCT09M RUFOICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eVBhZ2VzOw0KPiA+ID4gICAgUENJ X0RFVklDRV9JTkZPUk1BVElPTiAgICAgICAgICAgUGNpRGV2aWNlSW5mbzsNCj4gPiA+ICsgIEJP T0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgIElzNUxldmVsUGFnaW5nOw0KPiA+ID4gIH0g VlREX1VOSVRfSU5GT1JNQVRJT047DQo+ID4gPg0KPiA+ID4gIC8vDQo+ID4gPiBAQCAtMzc1LDMx ICszNzYsMzcgQEAgUGFyc2VEbWFyQWNwaVRhYmxlUm1yciAoDQo+ID4gPiAgLyoqDQo+ID4gPiAg ICBEdW1wIERNQVIgY29udGV4dCBlbnRyeSB0YWJsZS4NCj4gPiA+DQo+ID4gPiAtICBAcGFyYW1b aW5dICBSb290RW50cnkgRE1BUiByb290IGVudHJ5Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgUm9v dEVudHJ5ICAgICAgIERNQVIgcm9vdCBlbnRyeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxl dmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiAgKiovDQo+ID4g PiAgVk9JRA0KPiA+ID4gIER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUgKA0KPiA+ID4gLSAgSU4g VlREX1JPT1RfRU5UUlkgKlJvb3RFbnRyeQ0KPiA+ID4gKyAgSU4gVlREX1JPT1RfRU5UUlkgKlJv b3RFbnRyeSwNCj4gPiA+ICsgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ICAgICk7 DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gICAgRHVtcCBETUFSIGV4dGVuZGVkIGNvbnRleHQg ZW50cnkgdGFibGUuDQo+ID4gPg0KPiA+ID4gLSAgQHBhcmFtW2luXSAgRXh0Um9vdEVudHJ5IERN QVIgZXh0ZW5kZWQgcm9vdCBlbnRyeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIEV4dFJvb3RFbnRy eSAgICBETUFSIGV4dGVuZGVkIHJvb3QgZW50cnkuDQo+ID4gPiArICBAcGFyYW1baW5dICBJczVM ZXZlbFBhZ2luZyAgSWYgaXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gICoqLw0KPiA+ ID4gIFZPSUQNCj4gPiA+ICBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+IC0g IElOIFZURF9FWFRfUk9PVF9FTlRSWSAqRXh0Um9vdEVudHJ5DQo+ID4gPiArICBJTiBWVERfRVhU X1JPT1RfRU5UUlkgKkV4dFJvb3RFbnRyeSwgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdpbmcNCj4g PiA+ICAgICk7DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gICAgRHVtcCBETUFSIHNlY29uZCBs ZXZlbCBwYWdpbmcgZW50cnkuDQo+ID4gPg0KPiA+ID4gLSAgQHBhcmFtW2luXSAgU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSBUaGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gIFNlY29uZExldmVsUGFnaW5nRW50cnkgIFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5n IGVudHJ5Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgICAgICAgICAgSWYg aXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gICoqLw0KPiA+ID4gIFZPSUQNCj4gPiA+ ICBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoDQo+ID4gPiAtICBJTiBWT0lEICpTZWNvbmRM ZXZlbFBhZ2luZ0VudHJ5DQo+ID4gPiArICBJTiBWT0lEICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 LA0KPiA+ID4gKyAgSU4gQk9PTEVBTiBJczVMZXZlbFBhZ2luZw0KPiA+ID4gICAgKTsNCj4gPiA+ DQo+ID4gPiAgLyoqDQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50 ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVA0KPiA+ID4g YWINCj4gPiA+IGxlLmMNCj4gPiA+IGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVh dHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25UDQo+ID4gPiBhYg0KPiA+ID4gbGUuYw0K PiA+ID4gaW5kZXggMjAxZDY2M2QuLjZjNzg2YjQwIDEwMDY0NA0KPiA+ID4gLS0tDQo+ID4gPiBh L1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1Ry YW5zbGF0aW9uVA0KPiA+ID4gYWINCj4gPiA+IGxlLmMNCj4gPiA+ICsrKw0KPiA+ID4gYi9TaWxp Y29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFuc2xh dGlvblQNCj4gPiA+IGFiIGxlLmMgQEAgLTEyOCwxMSArMTI4LDI2IEBAIENyZWF0ZUNvbnRleHRF bnRyeSAoDQo+ID4gPg0KPiA+ID4gICAgICBERUJVRyAoKERFQlVHX0lORk8sIlNvdXJjZTogUyUw NHggQiUwMnggRCUwMnggRiUwMnhcbiIsDQo+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZElu ZGV4XS5TZWdtZW50LCBTb3VyY2VJZC5CaXRzLkJ1cywNCj4gPiA+IFNvdXJjZUlkLkJpdHMuRGV2 aWNlLCBTb3VyY2VJZC5CaXRzLkZ1bmN0aW9uKSk7DQo+ID4gPg0KPiA+ID4gLSAgICBpZiAoKG1W dGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgPT0g MCkgew0KPiA+ID4gLSAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIiEhISEgNC1sZXZlbCBwYWdl LXRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQgb24NCj4gPiA+IFZURCAlZCAhISEhXG4iLCBWdGRJbmRl eCkpOw0KPiA+ID4gKyAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBh Z2luZyA9IEZBTFNFOw0KPiA+ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5k ZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMykgIT0gMCkgew0KPiA+ID4gKyAgICAgIG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gVFJVRTsNCj4gPiA+ICsg ICAgICBpZiAobUFjcGlEbWFyVGFibGUtPkhvc3RBZGRyZXNzV2lkdGggPD0gNDgpIHsNCj4gPiA+ ICsgICAgICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMu U0FHQVcgJiBCSVQyKSAhPSAwKQ0KPiB7DQo+ID4gPiArICAgICAgICAgIG1WdGRVbml0SW5mb3Jt YXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gRkFMU0U7DQo+ID4gPiArICAgICAgICB9 DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9IGVsc2UgaWYgKChtVnRkVW5pdEluZm9ybWF0 aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmDQo+ID4gPiArIEJJVDIpID09DQo+ID4g PiAwKSB7DQo+ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISBQYWdlLXRhYmxl IHR5cGUgaXMgbm90IHN1cHBvcnRlZCBvbg0KPiA+ID4gVlREICVkICEhISFcbiIsIFZ0ZEluZGV4 KSk7DQo+ID4gPiAgICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ICAgICAgfQ0K PiA+ID4gLSAgICBDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ID4g Kw0KPiA+ID4gKyAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQ YWdpbmcpIHsNCj4gPiA+ICsgICAgICBDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0g MHgzOw0KPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDQtbGV2ZWwgcGFn ZS10YWJsZSBvbiBWVEQgJWRcbiIsDQo+ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4gKyAgICB9IGVs c2Ugew0KPiA+ID4gKyAgICAgIENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7 DQo+ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiVXNpbmcgNS1sZXZlbCBwYWdlLXRh YmxlIG9uIFZURCAlZFxuIiwNCj4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiArICAgIH0NCj4gPiA+ ICAgIH0NCj4gPiA+DQo+ID4gPiAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ ID4gPiAoVUlOVE4pbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uUm9vdEVudHJ5VGFibGUs DQo+ID4gPiBFRklfUEFHRVNfVE9fU0laRShFbnRyeVRhYmxlUGFnZXMpKTsNCj4gPiA+IEBAIC0x NDgsNiArMTYzLDcgQEAgQ3JlYXRlQ29udGV4dEVudHJ5ICgNCj4gPiA+ICAgIEBwYXJhbVtpbl0g IE1lbW9yeUJhc2UgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBvZiB0aGUgbWVtb3J5Lg0KPiA+ ID4gICAgQHBhcmFtW2luXSAgTWVtb3J5TGltaXQgICAgICAgICAgICAgICAgIFRoZSBsaW1pdCBv ZiB0aGUgbWVtb3J5Lg0KPiA+ID4gICAgQHBhcmFtW2luXSAgSW9NbXVBY2Nlc3MgICAgICAgICAg ICAgICAgIFRoZSBJT01NVSBhY2Nlc3MuDQo+ID4gPiArICBAcGFyYW1baW5dICBJczVMZXZlbFBh Z2luZyAgICAgICAgICAgICAgSWYgaXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4NCj4g PiA+ICAgIEByZXR1cm4gVGhlIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkuDQo+ID4gPiAgKiov DQo+ID4gPiBAQCAtMTU3LDE2ICsxNzMsMjMgQEAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRy eVRhYmxlICgNCj4gPiA+ICAgIElOIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICpTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5LA0KPiA+ID4gICAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAg ICAgICAgTWVtb3J5QmFzZSwNCj4gPiA+ICAgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg ICAgIE1lbW9yeUxpbWl0LA0KPiA+ID4gLSAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg ICAgSW9NbXVBY2Nlc3MNCj4gPiA+ICsgIElOIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAg IElvTW11QWNjZXNzLA0KPiA+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg SXM1TGV2ZWxQYWdpbmcNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXg1Ow0KPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4NDsNCj4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleDM7DQo+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXgyOw0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDVTdGFydDsN Cj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw1RW5kOw0KPiA+ID4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDRQYWdlc1N0YXJ0Ow0KPiA+ID4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDRQYWdlc0VuZDsNCj4gPiA+ICAg IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw0U3RhcnQ7DQo+ID4gPiAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgTHZsNEVuZDsNCj4gPiA+ICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBMdmwzU3RhcnQ7DQo+ID4gPiAgICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgTHZsM0VuZDsNCj4gPiA+ICsgIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5H X0VOVFJZICAqTHZsNVB0RW50cnk7DQo+ID4gPiAgICBWVERfU0VDT05EX0xFVkVMX1BBR0lOR19F TlRSWSAgKkx2bDRQdEVudHJ5Ow0KPiA+ID4gICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5U UlkgICpMdmwzUHRFbnRyeTsNCj4gPiA+ICAgIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZ ICAqTHZsMlB0RW50cnk7IEBAIC0xODQsNyArMjA3LDcNCj4gPiBAQA0KPiA+ID4gQ3JlYXRlU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgNCj4gPiA+ICAgIGlmIChTZWNvbmRMZXZlbFBhZ2lu Z0VudHJ5ID09IE5VTEwpIHsNCj4gPiA+ICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IEFs bG9jYXRlWmVyb1BhZ2VzICgxKTsNCj4gPiA+ICAgICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50 cnkgPT0gTlVMTCkgew0KPiA+ID4gLSAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIkNvdWxkIG5v dCBBbGxvYyBMVkw0IFBULiBcbiIpKTsNCj4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCJDb3VsZCBub3QgQWxsb2MgTFZMNCBvciBMVkw1IFBULiBcbiIpKTsNCj4gPiA+ICAgICAgICBy ZXR1cm4gTlVMTDsNCj4gPiA+ICAgICAgfQ0KPiA+ID4gICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9y eSAoVnRkSW5kZXgsIChVSU5UTilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0KPiA+ID4gRUZJX1BB R0VTX1RPX1NJWkUoMSkpOyBAQCAtMTk3LDY2ICsyMjAsMTA5IEBADQo+ID4gPiBDcmVhdGVTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUgKA0KPiA+ID4gICAgICByZXR1cm4gU2Vjb25kTGV2ZWxQ YWdpbmdFbnRyeTsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAtICBMdmw0U3RhcnQgPSBSU2hp ZnRVNjQgKEJhc2VBZGRyZXNzLCAzOSkgJiAweDFGRjsNCj4gPiA+IC0gIEx2bDRFbmQgPSBSU2hp ZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFGRjsNCj4gPiA+ICsgIGlmIChJczVMZXZl bFBhZ2luZykgew0KPiA+ID4gKyAgICBMdmw1U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNz LCA0OCkgJiAweDFGRjsNCj4gPiA+ICsgICAgTHZsNUVuZCA9IFJTaGlmdFU2NCAoRW5kQWRkcmVz cyAtIDEsIDQ4KSAmIDB4MUZGOw0KPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZs NVN0YXJ0IC0gMHgleCwgTHZsNUVuZCAtIDB4JXhcbiIsDQo+ID4gPiArIEx2bDVTdGFydCwNCj4g PiA+IEx2bDVFbmQpKTsNCj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZs NFN0YXJ0IC0gMHgleCwgTHZsNEVuZCAtIDB4JXhcbiIsDQo+ID4gPiBMdmw0U3RhcnQsIEx2bDRF bmQpKTsNCj4gPiA+ICsgICAgTHZsNFN0YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRkcmVzcywgMzkp ICYgMHgxRkY7DQo+ID4gPiArICAgIEx2bDRFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAx LCAzOSkgJiAweDFGRjsNCj4gPiA+DQo+ID4gPiAtICBMdmw0UHRFbnRyeSA9IChWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KPiA+ ID4gLSAgZm9yIChJbmRleDQgPSBMdmw0U3RhcnQ7IEluZGV4NCA8PSBMdmw0RW5kOyBJbmRleDQr Kykgew0KPiA+ID4gLSAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0K PiA+ID4gLSAgICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4p QWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KPiA+ID4gLSAgICAgIGlmIChMdmw0UHRFbnRyeVtJbmRl eDRdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiAtICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIh ISEhISEgQUxMT0NBVEUgTFZMNCBQQUdFIEZBSUwNCj4gPiA+ICgweCV4KSEhISEhIVxuIiwgSW5k ZXg0KSk7DQo+ID4gPiAtICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiA+ID4gLSAgICAgICAgcmV0 dXJuIE5VTEw7DQo+ID4gPiAtICAgICAgfQ0KPiA+ID4gLSAgICAgIEZsdXNoUGFnZVRhYmxlTWVt b3J5IChWdGRJbmRleCwgKFVJTlROKUx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0LA0KPiA+ID4g U0laRV80S0IpOw0KPiA+ID4gLSAgICAgIFNldFNlY29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1 dGUgKCZMdmw0UHRFbnRyeVtJbmRleDRdLA0KPiA+ID4gRURLSUlfSU9NTVVfQUNDRVNTX1JFQUQg fCBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KPiA+ID4gLSAgICB9DQo+ID4gPiArICAgIEx2 bDRQYWdlc1N0YXJ0ID0gKEx2bDVTdGFydDw8OSkgfCBMdmw0U3RhcnQ7DQo+ID4gPiArICAgIEx2 bDRQYWdlc0VuZCA9IChMdmw1RW5kPDw5KSB8IEx2bDRFbmQ7DQo+ID4gPiArICAgIERFQlVHICgo REVCVUdfSU5GTywiICBMdmw0UGFnZXNTdGFydCAtIDB4JXgsIEx2bDRQYWdlc0VuZCAtDQo+ID4g PiArIDB4JXhcbiIsDQo+ID4gPiBMdmw0UGFnZXNTdGFydCwgTHZsNFBhZ2VzRW5kKSk7DQo+ID4g Pg0KPiA+ID4gLSAgICBMdmwzU3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCAzMCkgJiAw eDFGRjsNCj4gPiA+IC0gICAgaWYgKEFMSUdOX1ZBTFVFX0xPVyhCYXNlQWRkcmVzcyArIFNJWkVf MUdCLCBTSVpFXzFHQikgPD0NCj4gPiA+IEVuZEFkZHJlc3MpIHsNCj4gPiA+IC0gICAgICBMdmwz RW5kID0gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAtIDE7 DQo+ID4gPiAtICAgIH0gZWxzZSB7DQo+ID4gPiAtICAgICAgTHZsM0VuZCA9IFJTaGlmdFU2NCAo RW5kQWRkcmVzcyAtIDEsIDMwKSAmIDB4MUZGOw0KPiA+ID4gKyAgICBMdmw1UHRFbnRyeSA9IChW VERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0Vu dHJ5Ow0KPiA+ID4gKyAgfSBlbHNlIHsNCj4gPiA+ICsgICAgTHZsNVN0YXJ0ID0gUlNoaWZ0VTY0 IChCYXNlQWRkcmVzcywgNDgpICYgMHgxRkY7DQo+ID4gPiArICAgIEx2bDVFbmQgPSBMdmw1U3Rh cnQ7DQo+ID4gPiArDQo+ID4gPiArICAgIEx2bDRTdGFydCA9IFJTaGlmdFU2NCAoQmFzZUFkZHJl c3MsIDM5KSAmIDB4MUZGOw0KPiA+ID4gKyAgICBMdmw0RW5kID0gUlNoaWZ0VTY0IChFbmRBZGRy ZXNzIC0gMSwgMzkpICYgMHgxRkY7DQo+ID4gPiArICAgIERFQlVHICgoREVCVUdfSU5GTywiICBM dmw0U3RhcnQgLSAweCV4LCBMdmw0RW5kIC0gMHgleFxuIiwNCj4gPiA+ICsgTHZsNFN0YXJ0LA0K PiA+ID4gTHZsNEVuZCkpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICBMdmw0UHRFbnRyeSA9IChWVERf U0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 Ow0KPiA+ID4gKyAgfQ0KPiA+ID4gKw0KPiA+ID4gKyAgZm9yIChJbmRleDUgPSBMdmw1U3RhcnQ7 IEluZGV4NSA8PSBMdmw1RW5kOyBJbmRleDUrKykgew0KPiA+ID4gKyAgICBpZiAoSXM1TGV2ZWxQ YWdpbmcpIHsNCj4gPiA+ICsgICAgICBpZiAoTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50NjQgPT0g MCkgew0KPiA+ID4gKyAgICAgICAgTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50NjQgPSAoVUlOVDY0 KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQo+ID4gPiArICAgICAgICBpZiAoTHZsNVB0 RW50cnlbSW5kZXg1XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gKyAgICAgICAgICBERUJVRyAoKERF QlVHX0VSUk9SLCIhISEhISEgQUxMT0NBVEUgTFZMNCBQQUdFIEZBSUwNCj4gPiA+ICgweCV4KSEh ISEhIVxuIiwgSW5kZXg1KSk7DQo+ID4gPiArICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQo+ID4g PiArICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKyAgICAg ICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LA0KPiA+ID4gKyAoVUlOVE4pTHZsNVB0 RW50cnlbSW5kZXg1XS5VaW50NjQsDQo+ID4gPiBTSVpFXzRLQik7DQo+ID4gPiArICAgICAgICBT ZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmlidXRlICgmTHZsNVB0RW50cnlbSW5kZXg1XSwN Cj4gPiA+IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRF KTsNCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgICAgTHZsNFN0YXJ0ID0gTHZsNFBhZ2VzU3Rh cnQgJiAweDFGRjsNCj4gPiA+ICsgICAgICBpZiAoKChJbmRleDUrMSk8PDkpID4gTHZsNFBhZ2Vz RW5kKSB7DQo+ID4gPiArICAgICAgICBMdmw0RW5kID0gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAtIDE7Ow0KPiA+ID4gKyAgICAgICAgTHZsNFBhZ2VzU3Rh cnQgPSAoSW5kZXg1KzEpPDw5Ow0KPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAg ICBMdmw0RW5kID0gTHZsNFBhZ2VzRW5kICYgMHgxRkY7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4g KyAgICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw1KDB4JXgpOiBMdmw0U3RhcnQgLSAweCV4 LCBMdmw0RW5kIC0NCj4gPiA+ICsgMHgleFxuIiwNCj4gPiA+IEluZGV4NSwgTHZsNFN0YXJ0LCBM dmw0RW5kKSk7DQo+ID4gPiArICAgICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkNCj4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhMdmw1UHRFbnRy eVtJbmRleDVdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gTHZsNVB0RW50cnlbSW5kZXg1XS5CaXRz LkFkZHJlc3NIaSk7DQo+ID4gPiAgICAgIH0NCj4gPiA+IC0gICAgREVCVUcgKChERUJVR19JTkZP LCIgIEx2bDQoMHgleCk6IEx2bDNTdGFydCAtIDB4JXgsIEx2bDNFbmQgLSAweCV4XG4iLA0KPiA+ ID4gSW5kZXg0LCBMdmwzU3RhcnQsIEx2bDNFbmQpKTsNCj4gPiA+DQo+ID4gPiAtICAgIEx2bDNQ dEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiAqKShVSU5UTilW VERfNjRCSVRTX0FERFJFU1MoTHZsNFB0RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NMbywNCj4g PiA+IEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gLSAgICBmb3Ig KEluZGV4MyA9IEx2bDNTdGFydDsgSW5kZXgzIDw9IEx2bDNFbmQ7IEluZGV4MysrKSB7DQo+ID4g PiAtICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID09IDApIHsNCj4gPiA+IC0g ICAgICAgIEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2Nh dGVaZXJvUGFnZXMgKDEpOw0KPiA+ID4gLSAgICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10u VWludDY0ID09IDApIHsNCj4gPiA+IC0gICAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiISEh ISEhIEFMTE9DQVRFIExWTDMgUEFHRSBGQUlMICgweCV4LA0KPiA+ID4gMHgleCkhISEhISFcbiIs IEluZGV4NCwgSW5kZXgzKSk7DQo+ID4gPiArICAgIGZvciAoSW5kZXg0ID0gTHZsNFN0YXJ0OyBJ bmRleDQgPD0gTHZsNEVuZDsgSW5kZXg0KyspIHsNCj4gPiA+ICsgICAgICBpZiAoTHZsNFB0RW50 cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gKyAgICAgICAgTHZsNFB0RW50cnlbSW5k ZXg0XS5VaW50NjQgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQo+ID4g PiArICAgICAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0KPiA+ID4g KyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NBVEUgTFZMNCBQQUdF IEZBSUwNCj4gPiA+ICgweCV4KSEhISEhIVxuIiwgSW5kZXg0KSk7DQo+ID4gPiAgICAgICAgICAg IEFTU0VSVChGQUxTRSk7DQo+ID4gPiAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gICAg ICAgICAgfQ0KPiA+ID4gLSAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAo VUlOVE4pTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQsDQo+ID4gPiBTSVpFXzRLQik7DQo+ID4g PiAtICAgICAgICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmlidXRlICgmTHZsM1B0RW50 cnlbSW5kZXgzXSwNCj4gPiA+IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVf QUNDRVNTX1dSSVRFKTsNCj4gPiA+ICsgICAgICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJ bmRleCwNCj4gPiA+ICsgKFVJTlROKUx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0LA0KPiA+ID4g U0laRV80S0IpOw0KPiA+ID4gKyAgICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJp YnV0ZSAoJkx2bDRQdEVudHJ5W0luZGV4NF0sDQo+ID4gPiBFREtJSV9JT01NVV9BQ0NFU1NfUkVB RCB8IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKw0K PiA+ID4gKyAgICAgIEx2bDNTdGFydCA9IFJTaGlmdFU2NCAoQmFzZUFkZHJlc3MsIDMwKSAmIDB4 MUZGOw0KPiA+ID4gKyAgICAgIGlmIChBTElHTl9WQUxVRV9MT1coQmFzZUFkZHJlc3MgKyBTSVpF XzFHQiwgU0laRV8xR0IpIDw9DQo+ID4gPiBFbmRBZGRyZXNzKSB7DQo+ID4gPiArICAgICAgICBM dmwzRW5kID0gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAt IDE7DQo+ID4gPiArICAgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICAgIEx2bDNFbmQgPSBSU2hp ZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzMCkgJiAweDFGRjsNCj4gPiA+ICAgICAgICB9DQo+ID4g PiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCIgIEx2bDQoMHgleCk6IEx2bDNTdGFydCAtIDB4 JXgsIEx2bDNFbmQgLQ0KPiA+ID4gKyAweCV4XG4iLA0KPiA+ID4gSW5kZXg0LCBMdmwzU3RhcnQs IEx2bDNFbmQpKTsNCj4gPiA+DQo+ID4gPiAtICAgICAgTHZsMlB0RW50cnkgPSAoVlREX1NFQ09O RF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhM dmwzUHRFbnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gTHZsM1B0RW50cnlbSW5k ZXgzXS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiAtICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRl eDIgPA0KPiA+ID4gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZ KTsgSW5kZXgyKyspIHsNCj4gPiA+IC0gICAgICAgIEx2bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0 ID0gQmFzZUFkZHJlc3M7DQo+ID4gPiAtICAgICAgICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 QXR0cmlidXRlICgmTHZsMlB0RW50cnlbSW5kZXgyXSwNCj4gPiA+IElvTW11QWNjZXNzKTsNCj4g PiA+IC0gICAgICAgIEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5QYWdlU2l6ZSA9IDE7DQo+ID4g PiAtICAgICAgICBCYXNlQWRkcmVzcyArPSBTSVpFXzJNQjsNCj4gPiA+ICsgICAgICBMdmwzUHRF bnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKikoVUlOVE4pVlRE XzY0QklUU19BRERSRVNTKEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzTG8sDQo+ID4g PiBMdmw0UHRFbnRyeVtJbmRleDRdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ICsgICAgICBmb3Ig KEluZGV4MyA9IEx2bDNTdGFydDsgSW5kZXgzIDw9IEx2bDNFbmQ7IEluZGV4MysrKSB7DQo+ID4g PiArICAgICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPT0gMCkgew0KPiA+ID4g KyAgICAgICAgICBMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCA9IChVSU5UNjQpKFVJTlROKUFs bG9jYXRlWmVyb1BhZ2VzICgxKTsNCj4gPiA+ICsgICAgICAgICAgaWYgKEx2bDNQdEVudHJ5W0lu ZGV4M10uVWludDY0ID09IDApIHsNCj4gPiA+ICsgICAgICAgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCIhISEhISEgQUxMT0NBVEUgTFZMMyBQQUdFIEZBSUwNCj4gPiA+ICsgKDB4JXgsDQo+ID4g PiAweCV4KSEhISEhIVxuIiwgSW5kZXg0LCBJbmRleDMpKTsNCj4gPiA+ICsgICAgICAgICAgICBB U1NFUlQoRkFMU0UpOw0KPiA+ID4gKyAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAg ICAgICAgICB9DQo+ID4gPiArICAgICAgICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRl eCwNCj4gPiA+ICsgKFVJTlROKUx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0LA0KPiA+ID4gU0la RV80S0IpOw0KPiA+ID4gKyAgICAgICAgICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmli dXRlICgmTHZsM1B0RW50cnlbSW5kZXgzXSwNCj4gPiA+IEVES0lJX0lPTU1VX0FDQ0VTU19SRUFE IHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsN Cj4gPiA+ICsgICAgICAgIEx2bDJQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VO VFJZDQo+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsM1B0RW50cnlbSW5kZXgz XS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+IEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNz SGkpOw0KPiA+ID4gKyAgICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIgPA0KPiA+ID4gU0la RV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgyKyspIHsN Cj4gPiA+ICsgICAgICAgICAgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPSBCYXNlQWRkcmVz czsNCj4gPiA+ICsgICAgICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAo Jkx2bDJQdEVudHJ5W0luZGV4Ml0sDQo+ID4gPiBJb01tdUFjY2Vzcyk7DQo+ID4gPiArICAgICAg ICAgIEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5QYWdlU2l6ZSA9IDE7DQo+ID4gPiArICAgICAg ICAgIEJhc2VBZGRyZXNzICs9IFNJWkVfMk1COw0KPiA+ID4gKyAgICAgICAgICBpZiAoQmFzZUFk ZHJlc3MgPj0gTWVtb3J5TGltaXQpIHsNCj4gPiA+ICsgICAgICAgICAgICBicmVhazsNCj4gPiA+ ICsgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgRmx1c2hQYWdl VGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pTHZsMlB0RW50cnksDQo+ID4gPiArIFNJWkVf NEtCKTsNCj4gPiA+ICAgICAgICAgIGlmIChCYXNlQWRkcmVzcyA+PSBNZW1vcnlMaW1pdCkgew0K PiA+ID4gICAgICAgICAgICBicmVhazsNCj4gPiA+ICAgICAgICAgIH0NCj4gPiA+ICAgICAgICB9 DQo+ID4gPiAtICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pTHZs MlB0RW50cnksIFNJWkVfNEtCKTsNCj4gPiA+ICsgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAo VnRkSW5kZXgsDQo+ID4gPiArIChVSU5UTikmTHZsM1B0RW50cnlbTHZsM1N0YXJ0XSwNCj4gPiA+ IChVSU5UTikmTHZsM1B0RW50cnlbTHZsM0VuZCArIDFdIC0gKFVJTlROKSZMdmwzUHRFbnRyeVtM dmwzU3RhcnRdKTsNCj4gPiA+ICAgICAgICBpZiAoQmFzZUFkZHJlc3MgPj0gTWVtb3J5TGltaXQp IHsNCj4gPiA+ICAgICAgICAgIGJyZWFrOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+ICAgICAgfQ0K PiA+ID4gLSAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsM1B0 RW50cnlbTHZsM1N0YXJ0XSwNCj4gPiA+IChVSU5UTikmTHZsM1B0RW50cnlbTHZsM0VuZCArIDFd IC0gKFVJTlROKSZMdmwzUHRFbnRyeVtMdmwzU3RhcnRdKTsNCj4gPiA+IC0gICAgaWYgKEJhc2VB ZGRyZXNzID49IE1lbW9yeUxpbWl0KSB7DQo+ID4gPiAtICAgICAgYnJlYWs7DQo+ID4gPiAtICAg IH0NCj4gPiA+ICsgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pJkx2 bDRQdEVudHJ5W0x2bDRTdGFydF0sDQo+ID4gPiAoVUlOVE4pJkx2bDRQdEVudHJ5W0x2bDRFbmQg KyAxXSAtIChVSU5UTikmTHZsNFB0RW50cnlbTHZsNFN0YXJ0XSk7DQo+ID4gPiAgICB9DQo+ID4g PiAtICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsNFB0RW50cnlb THZsNFN0YXJ0XSwNCj4gPiA+IChVSU5UTikmTHZsNFB0RW50cnlbTHZsNEVuZCArIDFdIC0gKFVJ TlROKSZMdmw0UHRFbnRyeVtMdmw0U3RhcnRdKTsNCj4gPiA+ICsgIEZsdXNoUGFnZVRhYmxlTWVt b3J5IChWdGRJbmRleCwgKFVJTlROKSZMdmw1UHRFbnRyeVtMdmw1U3RhcnRdLA0KPiA+ID4gKFVJ TlROKSZMdmw1UHRFbnRyeVtMdmw1RW5kICsgMV0gLSAoVUlOVE4pJkx2bDVQdEVudHJ5W0x2bDVT dGFydF0pOw0KPiA+ID4NCj4gPiA+ICAgIHJldHVybiBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0K PiA+ID4gIH0NCj4gPiA+IEBAIC0yNjYsMjYgKzMzMiwyOCBAQCBDcmVhdGVTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5VGFibGUgKA0KPiA+ID4NCj4gPiA+ICAgIEBwYXJhbVtpbl0gIFZ0ZEluZGV4ICAg ICAgICAgICAgICAgICAgICBUaGUgaW5kZXggb2YgdGhlIFZUZCBlbmdpbmUuDQo+ID4gPiAgICBA cGFyYW1baW5dICBJb01tdUFjY2VzcyAgICAgICAgICAgICAgICAgVGhlIElPTU1VIGFjY2Vzcy4N Cj4gPiA+ICsgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFnaW5nICAgICAgICAgICAgICBJZiBpdCBp cyB0aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPg0KPiA+ID4gICAgQHJldHVybiBUaGUgc2Vjb25k IGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ICAqKi8NCj4gPiA+ICBWVERfU0VDT05EX0xFVkVM X1BBR0lOR19FTlRSWSAqDQo+ID4gPiAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoDQo+ ID4gPiAgICBJTiBVSU5UTiAgIFZ0ZEluZGV4LA0KPiA+ID4gLSAgSU4gVUlOVDY0ICBJb01tdUFj Y2Vzcw0KPiA+ID4gKyAgSU4gVUlOVDY0ICBJb01tdUFjY2VzcywNCj4gPiA+ICsgIElOIEJPT0xF QU4gSXM1TGV2ZWxQYWdpbmcNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiAgICBWVERfU0VD T05EX0xFVkVMX1BBR0lOR19FTlRSWSAqU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+DQo+ ID4gPiAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gTlVMTDsNCj4gPiA+IC0gIFNlY29uZExl dmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUNCj4gPiA+ IChWdGRJbmRleCwgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgMCwgbUJlbG93NEdNZW1vcnlMaW1p dCwNCj4gPiA+IElvTW11QWNjZXNzKTsNCj4gPiA+ICsgIFNlY29uZExldmVsUGFnaW5nRW50cnkg PSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUNCj4gPiA+ICsgKFZ0ZEluZGV4LA0K PiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgMCwgbUJlbG93NEdNZW1vcnlMaW1pdCwgSW9N bXVBY2Nlc3MsDQo+ID4gPiBJczVMZXZlbFBhZ2luZyk7DQo+ID4gPiAgICBpZiAoU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSA9PSBOVUxMKSB7DQo+ID4gPiAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4g ICAgfQ0KPiA+ID4NCj4gPiA+ICAgIGlmIChtQWJvdmU0R01lbW9yeUxpbWl0ICE9IDApIHsNCj4g PiA+ICAgICAgQVNTRVJUIChtQWJvdmU0R01lbW9yeUxpbWl0ID4gQkFTRV80R0IpOw0KPiA+ID4g LSAgICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRy eVRhYmxlDQo+IChWdGRJbmRleCwNCj4gPiA+IFNlY29uZExldmVsUGFnaW5nRW50cnksIFNJWkVf NEdCLCBtQWJvdmU0R01lbW9yeUxpbWl0LA0KPiBJb01tdUFjY2Vzcyk7DQo+ID4gPiArICAgIFNl Y29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUN Cj4gPiA+ICsgKFZ0ZEluZGV4LA0KPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgU0laRV80 R0IsIG1BYm92ZTRHTWVtb3J5TGltaXQsIElvTW11QWNjZXNzLA0KPiA+ID4gSXM1TGV2ZWxQYWdp bmcpOw0KPiA+ID4gICAgICBpZiAoU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9PSBOVUxMKSB7DQo+ ID4gPiAgICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gPiAgICAgIH0NCj4gPiA+IEBAIC0zMjYsMTEg KzM5NCwxMyBAQCBTZXR1cFRyYW5zbGF0aW9uVGFibGUgKA0KPiA+ID4gIC8qKg0KPiA+ID4gICAg RHVtcCBETUFSIGNvbnRleHQgZW50cnkgdGFibGUuDQo+ID4gPg0KPiA+ID4gLSAgQHBhcmFtW2lu XSAgUm9vdEVudHJ5IERNQVIgcm9vdCBlbnRyeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIFJvb3RF bnRyeSAgICAgICBETUFSIHJvb3QgZW50cnkuDQo+ID4gPiArICBAcGFyYW1baW5dICBJczVMZXZl bFBhZ2luZyAgSWYgaXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0KPiA+ID4gICoqLw0KPiA+ID4g IFZPSUQNCj4gPiA+ICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+IC0gIElOIFZU RF9ST09UX0VOVFJZICpSb290RW50cnkNCj4gPiA+ICsgIElOIFZURF9ST09UX0VOVFJZICpSb290 RW50cnksDQo+ID4gPiArICBJTiBCT09MRUFOIElzNUxldmVsUGFnaW5nDQo+ID4gPiAgICApDQo+ ID4gPiAgew0KPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ID4gQEAg LTM1OSw3ICs0MjksNyBAQCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+ICAgICAg ICBpZiAoQ29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5QcmVzZW50ID09IDApIHsNCj4gPiA+ICAg ICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+IC0gICAgICBEdW1wU2Vjb25k TGV2ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQUREUkVT UyhDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnDQo+ID4gPiBlDQo+ID4g PiBUcmFuc2xhdGlvblBvaW50ZXJMbywNCj4gPiA+IENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMu U2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2ludGVySGkpKTsNCj4gPiA+ICsgICAgICBEdW1w U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoKFZPSUQNCj4gPiA+ICopKFVJTlROKVZURF82NEJJVFNf QUREUkVTUyhDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnDQo+ID4gPiBl DQo+ID4gPiBUcmFuc2xhdGlvblBvaW50ZXJMbywNCj4gPiA+IENvbnRleHRFbnRyeVtJbmRleDJd LkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRpb25Qb2ludGVySGkpLA0KPiA+ID4gSXM1TGV2 ZWxQYWdpbmcpOw0KPiA+ID4gICAgICB9DQo+ID4gPiAgICB9DQo+ID4gPiAgICBERUJVRyAoKERF QlVHX0lORk8sIj09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpKTsNCj4gPiA+IEBAIC0zNjgs MTcgKzQzOCwyMiBAQCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgNCj4gPiA+ICAvKioNCj4g PiA+ICAgIER1bXAgRE1BUiBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KPiA+ID4NCj4gPiA+ IC0gIEBwYXJhbVtpbl0gIFNlY29uZExldmVsUGFnaW5nRW50cnkgVGhlIHNlY29uZCBsZXZlbCBw YWdpbmcgZW50cnkuDQo+ID4gPiArICBAcGFyYW1baW5dICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 ICBUaGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gIElz NUxldmVsUGFnaW5nICAgICAgICAgIElmIGl0IGlzIHRoZSA1IGxldmVsIHBhZ2luZy4NCj4gPiA+ ICAqKi8NCj4gPiA+ICBWT0lEDQo+ID4gPiAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKA0K PiA+ID4gLSAgSU4gVk9JRCAqU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeQ0KPiA+ID4gKyAgSU4gVk9J RCAqU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwNCj4gPiA+ICsgIElOIEJPT0xFQU4gSXM1TGV2ZWxQ YWdpbmcNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXg1Ow0KPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4NDsNCj4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eDM7DQo+ID4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgyOw0KPiA+ ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4MTsNCj4gPiA+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw1SW5kZXhFbmQ7DQo+ID4gPiArICBWVERf U0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2bDVQdEVudHJ5Ow0KPiA+ID4gICAgVlREX1NF Q09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmw0UHRFbnRyeTsNCj4gPiA+ICAgIFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZICAqTHZsM1B0RW50cnk7DQo+ID4gPiAgICBWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2bDJQdEVudHJ5OyBAQCAtMzg2LDM4ICs0NjEsNTMNCj4g PiBAQA0KPiA+ID4gRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKA0KPiA+ID4NCj4gPiA+ICAg IERFQlVHICgoREVCVUdfVkVSQk9TRSwiPT09PT09PT09PT09PT09PVxuIikpOw0KPiA+ID4gICAg REVCVUcgKChERUJVR19WRVJCT1NFLCJETUFSIFNlY29uZCBMZXZlbCBQYWdlIFRhYmxlOlxuIikp Ow0KPiA+ID4gKyAgREVCVUcgKChERUJVR19WRVJCT1NFLCJTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 IEJhc2UgLSAweCV4LA0KPiA+ID4gSXM1TGV2ZWxQYWdpbmcgLSAlZFxuIiwgU2Vjb25kTGV2ZWxQ YWdpbmdFbnRyeSwgSXM1TGV2ZWxQYWdpbmcpKTsNCj4gPiA+DQo+ID4gPiAtICBERUJVRyAoKERF QlVHX1ZFUkJPU0UsIlNlY29uZExldmVsUGFnaW5nRW50cnkgQmFzZSAtIDB4JXhcbiIsDQo+ID4g PiBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5KSk7DQo+ID4gPiArICBMdmw1SW5kZXhFbmQgPSBJczVM ZXZlbFBhZ2luZyA/DQo+ID4gPiBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9MRVZFTF9QQUdJ TkdfRU5UUlkpIDogMTsNCj4gPiA+ICAgIEx2bDRQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxf UEFHSU5HX0VOVFJZDQo+ID4gPiAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQo+ID4gPiAtICBm b3IgKEluZGV4NCA9IDA7IEluZGV4NCA8DQo+ID4gPiBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09O RF9MRVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDQrKykgew0KPiA+ID4gLSAgICBpZiAoTHZsNFB0 RW50cnlbSW5kZXg0XS5VaW50NjQgIT0gMCkgew0KPiA+ID4gLSAgICAgIERFQlVHICgoREVCVUdf VkVSQk9TRSwiICBMdmw0UHQgRW50cnkoMHglMDN4KSAtIDB4JTAxNmx4XG4iLA0KPiBJbmRleDQs DQo+ID4gPiBMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCkpOw0KPiA+ID4gLSAgICB9DQo+ID4g PiAtICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCA9PSAwKSB7DQo+ID4gPiAtICAg ICAgY29udGludWU7DQo+ID4gPiAtICAgIH0NCj4gPiA+IC0gICAgTHZsM1B0RW50cnkgPSAoVlRE X1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ICopKFVJTlROKVZURF82NEJJVFNfQURE UkVTUyhMdmw0UHRFbnRyeVtJbmRleDRdLkJpdHMuQWRkcmVzc0xvLA0KPiA+ID4gTHZsNFB0RW50 cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiAtICAgIGZvciAoSW5kZXgzID0gMDsg SW5kZXgzIDwNCj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19F TlRSWSk7IEluZGV4MysrKSB7DQo+ID4gPiAtICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10u VWludDY0ICE9IDApIHsNCj4gPiA+IC0gICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAg IEx2bDNQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIsDQo+ID4gPiBJbmRleDMsIEx2bDNQ dEVudHJ5W0luZGV4M10uVWludDY0KSk7DQo+ID4gPiArICBMdmw1UHRFbnRyeSA9IChWVERfU0VD T05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0K PiA+ID4gKw0KPiA+ID4gKyAgZm9yIChJbmRleDUgPSAwOyBJbmRleDUgPCBMdmw1SW5kZXhFbmQ7 IEluZGV4NSsrKSB7DQo+ID4gPiArICAgIGlmIChJczVMZXZlbFBhZ2luZykgew0KPiA+ID4gKyAg ICAgIGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiArICAgICAg ICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgTHZsNVB0IEVudHJ5KDB4JTAzeCkgLQ0KPiA+ID4g KyAweCUwMTZseFxuIiwNCj4gPiA+IEluZGV4NSwgTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50NjQp KTsNCj4gPiA+ICAgICAgICB9DQo+ID4gPiAtICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10u VWludDY0ID09IDApIHsNCj4gPiA+ICsgICAgICBpZiAoTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50 NjQgPT0gMCkgew0KPiA+ID4gICAgICAgICAgY29udGludWU7DQo+ID4gPiAgICAgICAgfQ0KPiA+ ID4gKyAgICAgIEx2bDRQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsNVB0RW50cnlbSW5kZXg1XS5CaXRz LkFkZHJlc3NMbywNCj4gPiA+IEx2bDVQdEVudHJ5W0luZGV4NV0uQml0cy5BZGRyZXNzSGkpOw0K PiA+ID4gKyAgICB9DQo+ID4gPg0KPiA+ID4gLSAgICAgIEx2bDJQdEVudHJ5ID0gKFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1Mo THZsM1B0RW50cnlbSW5kZXgzXS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+IEx2bDNQdEVudHJ5W0lu ZGV4M10uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gLSAgICAgIGZvciAoSW5kZXgyID0gMDsgSW5k ZXgyIDwNCj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRS WSk7IEluZGV4MisrKSB7DQo+ID4gPiAtICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5V aW50NjQgIT0gMCkgew0KPiA+ID4gLSAgICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAg ICAgIEx2bDJQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIsDQo+ID4gPiBJbmRleDIsIEx2 bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0KSk7DQo+ID4gPiArICAgIGZvciAoSW5kZXg0ID0gMDsg SW5kZXg0IDwNCj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19F TlRSWSk7IEluZGV4NCsrKSB7DQo+ID4gPiArICAgICAgaWYgKEx2bDRQdEVudHJ5W0luZGV4NF0u VWludDY0ICE9IDApIHsNCj4gPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICBM dmw0UHQgRW50cnkoMHglMDN4KSAtDQo+ID4gPiArIDB4JTAxNmx4XG4iLA0KPiA+ID4gSW5kZXg0 LCBMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCkpOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsg ICAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0gMCkgew0KPiA+ID4gKyAgICAg ICAgY29udGludWU7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICAgIEx2bDNQdEVudHJ5ID0g KFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZDQo+ID4gPiAqKShVSU5UTilWVERfNjRCSVRT X0FERFJFU1MoTHZsNFB0RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+IEx2bDRQ dEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KPiA+ID4gKyAgICAgIGZvciAoSW5kZXgz ID0gMDsgSW5kZXgzIDwNCj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BB R0lOR19FTlRSWSk7IEluZGV4MysrKSB7DQo+ID4gPiArICAgICAgICBpZiAoTHZsM1B0RW50cnlb SW5kZXgzXS5VaW50NjQgIT0gMCkgew0KPiA+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX1ZF UkJPU0UsIiAgIEx2bDNQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIsDQo+ID4gPiBJbmRl eDMsIEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0KSk7DQo+ID4gPiAgICAgICAgICB9DQo+ID4g PiAtICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPT0gMCkgew0KPiA+ID4g KyAgICAgICAgaWYgKEx2bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID09IDApIHsNCj4gPiA+ICAg ICAgICAgICAgY29udGludWU7DQo+ID4gPiAgICAgICAgICB9DQo+ID4gPiAtICAgICAgICBpZiAo THZsMlB0RW50cnlbSW5kZXgyXS5CaXRzLlBhZ2VTaXplID09IDApIHsNCj4gPiA+IC0gICAgICAg ICAgTHZsMVB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkNCj4gPiA+ICop KFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVz c0xvLA0KPiA+ID4gTHZsMlB0RW50cnlbSW5kZXgyXS5CaXRzLkFkZHJlc3NIaSk7DQo+ID4gPiAt ICAgICAgICAgIGZvciAoSW5kZXgxID0gMDsgSW5kZXgxIDwNCj4gPiA+IFNJWkVfNEtCL3NpemVv ZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4MSsrKSB7DQo+ID4gPiAtICAg ICAgICAgICAgaWYgKEx2bDFQdEVudHJ5W0luZGV4MV0uVWludDY0ICE9IDApIHsNCj4gPiA+IC0g ICAgICAgICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAgICAgICBMdmwxUHQgRW50cnko MHglMDN4KSAtDQo+ID4gMHglMDE2bHhcbiIsDQo+ID4gPiBJbmRleDEsIEx2bDFQdEVudHJ5W0lu ZGV4MV0uVWludDY0KSk7DQo+ID4gPiArDQo+ID4gPiArICAgICAgICBMdmwyUHRFbnRyeSA9IChW VERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWQ0KPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19B RERSRVNTKEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNzTG8sDQo+ID4gPiBMdmwzUHRF bnRyeVtJbmRleDNdLkJpdHMuQWRkcmVzc0hpKTsNCj4gPiA+ICsgICAgICAgIGZvciAoSW5kZXgy ID0gMDsgSW5kZXgyIDwNCj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BB R0lOR19FTlRSWSk7IEluZGV4MisrKSB7DQo+ID4gPiArICAgICAgICAgIGlmIChMdmwyUHRFbnRy eVtJbmRleDJdLlVpbnQ2NCAhPSAwKSB7DQo+ID4gPiArICAgICAgICAgICAgREVCVUcgKChERUJV R19WRVJCT1NFLCIgICAgTHZsMlB0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwNCj4gPiA+ IEluZGV4MiwgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQpKTsNCj4gPiA+ICsgICAgICAgICAg fQ0KPiA+ID4gKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPT0gMCkg ew0KPiA+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+ID4gKyAgICAgICAgICB9DQo+ID4g PiArICAgICAgICAgIGlmIChMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuUGFnZVNpemUgPT0gMCkg ew0KPiA+ID4gKyAgICAgICAgICAgIEx2bDFQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFH SU5HX0VOVFJZDQo+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsMlB0RW50cnlb SW5kZXgyXS5CaXRzLkFkZHJlc3NMbywNCj4gPiA+IEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5B ZGRyZXNzSGkpOw0KPiA+ID4gKyAgICAgICAgICAgIGZvciAoSW5kZXgxID0gMDsgSW5kZXgxIDwN Cj4gPiA+IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IElu ZGV4MSsrKSB7DQo+ID4gPiArICAgICAgICAgICAgICBpZiAoTHZsMVB0RW50cnlbSW5kZXgxXS5V aW50NjQgIT0gMCkgew0KPiA+ID4gKyAgICAgICAgICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJP U0UsIiAgICAgIEx2bDFQdCBFbnRyeSgweCUwM3gpIC0NCj4gPiAweCUwMTZseFxuIiwNCj4gPiA+ IEluZGV4MSwgTHZsMVB0RW50cnlbSW5kZXgxXS5VaW50NjQpKTsNCj4gPiA+ICsgICAgICAgICAg ICAgIH0NCj4gPiA+ICAgICAgICAgICAgICB9DQo+ID4gPiAgICAgICAgICAgIH0NCj4gPiA+ICAg ICAgICAgIH0NCj4gPiA+IEBAIC01MTAsNiArNjAwLDcgQEAgUGFnZUF0dHJpYnV0ZVRvTGVuZ3Ro ICgNCj4gPiA+ICAgIEBwYXJhbVtpbl0gICBWdGRJbmRleCAgICAgICAgICAgICAgICAgVGhlIGlu ZGV4IHVzZWQgdG8gaWRlbnRpZnkgYSBWVGQgZW5naW5lLg0KPiA+ID4gICAgQHBhcmFtW2luXSAg IFNlY29uZExldmVsUGFnaW5nRW50cnkgICBUaGUgc2Vjb25kIGxldmVsIHBhZ2luZyBlbnRyeSBp bg0KPiA+ID4gVlRkIHRhYmxlIGZvciB0aGUgZGV2aWNlLg0KPiA+ID4gICAgQHBhcmFtW2luXSAg IEFkZHJlc3MgICAgICAgICAgICAgICAgICBUaGUgYWRkcmVzcyB0byBiZSBjaGVja2VkLg0KPiA+ ID4gKyAgQHBhcmFtW2luXSAgIElzNUxldmVsUGFnaW5nICAgICAgICAgICBJZiBpdCBpcyB0aGUg NSBsZXZlbCBwYWdpbmcuDQo+ID4gPiAgICBAcGFyYW1bb3V0XSAgUGFnZUF0dHJpYnV0ZXMgICAg ICAgICAgIFRoZSBwYWdlIGF0dHJpYnV0ZSBvZiB0aGUgcGFnZSBlbnRyeS4NCj4gPiA+DQo+ID4g PiAgICBAcmV0dXJuIFRoZSBwYWdlIGVudHJ5Lg0KPiA+ID4gQEAgLTUxOSw2ICs2MTAsNyBAQCBH ZXRTZWNvbmRMZXZlbFBhZ2VUYWJsZUVudHJ5ICgNCj4gPiA+ICAgIElOICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICBWdGRJbmRleCwNCj4gPiA+ICAgIElOICBWVERfU0VDT05EX0xFVkVM X1BBR0lOR19FTlRSWSAqU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwNCj4gPiA+ICAgIElOICBQSFlT SUNBTF9BRERSRVNTICAgICAgICAgICAgICBBZGRyZXNzLA0KPiA+ID4gKyAgSU4gIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgIElzNUxldmVsUGFnaW5nLA0KPiA+ID4gICAgT1VUIFBBR0Vf QVRUUklCVVRFICAgICAgICAgICAgICAgICpQYWdlQXR0cmlidXRlDQo+ID4gPiAgICApDQo+ID4g PiAgew0KPiA+ID4gQEAgLTUyNiwxNyArNjE4LDM4IEBAIEdldFNlY29uZExldmVsUGFnZVRhYmxl RW50cnkgKA0KPiA+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4MjsNCj4gPiA+ICAg IFVJTlROICAgICAgICAgICAgICAgICBJbmRleDM7DQo+ID4gPiAgICBVSU5UTiAgICAgICAgICAg ICAgICAgSW5kZXg0Ow0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4NTsNCj4g PiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDFQYWdlVGFibGU7DQo+ID4gPiAgICBVSU5U NjQgICAgICAgICAgICAgICAgKkwyUGFnZVRhYmxlOw0KPiA+ID4gICAgVUlOVDY0ICAgICAgICAg ICAgICAgICpMM1BhZ2VUYWJsZTsNCj4gPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDRQ YWdlVGFibGU7DQo+ID4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgKkw1UGFnZVRhYmxlOw0K PiA+ID4NCj4gPiA+ICsgIEluZGV4NSA9ICgoVUlOVE4pUlNoaWZ0VTY0IChBZGRyZXNzLCA0OCkp ICYNCj4gPiA+ICsgUEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KPiA+ID4gICAgSW5kZXg0ID0gKChV SU5UTilSU2hpZnRVNjQgKEFkZHJlc3MsIDM5KSkgJiBQQUdJTkdfVlREX0lOREVYX01BU0s7DQo+ ID4gPiAgICBJbmRleDMgPSAoKFVJTlROKUFkZHJlc3MgPj4gMzApICYgUEFHSU5HX1ZURF9JTkRF WF9NQVNLOw0KPiA+ID4gICAgSW5kZXgyID0gKChVSU5UTilBZGRyZXNzID4+IDIxKSAmIFBBR0lO R19WVERfSU5ERVhfTUFTSzsNCj4gPiA+ICAgIEluZGV4MSA9ICgoVUlOVE4pQWRkcmVzcyA+PiAx MikgJiBQQUdJTkdfVlREX0lOREVYX01BU0s7DQo+ID4gPg0KPiA+ID4gLSAgTDRQYWdlVGFibGUg PSAoVUlOVDY0ICopU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+ICsgIGlmIChJczVMZXZl bFBhZ2luZykgew0KPiA+ID4gKyAgICBMNVBhZ2VUYWJsZSA9IChVSU5UNjQgKilTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5Ow0KPiA+ID4gKyAgICBpZiAoTDVQYWdlVGFibGVbSW5kZXg1XSA9PSAwKSB7 DQo+ID4gPiArICAgICAgTDVQYWdlVGFibGVbSW5kZXg1XSA9IChVSU5UNjQpKFVJTlROKUFsbG9j YXRlWmVyb1BhZ2VzICgxKTsNCj4gPiA+ICsgICAgICBpZiAoTDVQYWdlVGFibGVbSW5kZXg1XSA9 PSAwKSB7DQo+ID4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NB VEUgTFZMNSBQQUdFIEZBSUwNCj4gPiA+ICgweCV4KSEhISEhIVxuIiwgSW5kZXg0KSk7DQo+ID4g PiArICAgICAgICBBU1NFUlQoRkFMU0UpOw0KPiA+ID4gKyAgICAgICAgKlBhZ2VBdHRyaWJ1dGUg PSBQYWdlTm9uZTsNCj4gPiA+ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ID4gKyAgICAgIH0N Cj4gPiA+ICsgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTilMNVBh Z2VUYWJsZVtJbmRleDVdLA0KPiA+ID4gU0laRV80S0IpOw0KPiA+ID4gKyAgICAgIFNldFNlY29u ZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUNCj4gPiA+ICgoVlREX1NFQ09ORF9MRVZFTF9QQUdJ TkdfRU5UUlkgKikmTDVQYWdlVGFibGVbSW5kZXg1XSwNCj4gPiA+IEVES0lJX0lPTU1VX0FDQ0VT U19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsNCj4gPiA+ICsgICAgICBGbHVzaFBh Z2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTDVQYWdlVGFibGVbSW5kZXg1XSwNCj4g PiA+IHNpemVvZihMNVBhZ2VUYWJsZVtJbmRleDVdKSk7DQo+ID4gPiArICAgIH0NCj4gPiA+ICsg ICAgTDRQYWdlVGFibGUgPSAoVUlOVDY0ICopKFVJTlROKShMNVBhZ2VUYWJsZVtJbmRleDVdICYN Cj4gPiA+IFBBR0lOR180S19BRERSRVNTX01BU0tfNjQpOw0KPiA+ID4gKyAgfSBlbHNlIHsNCj4g PiA+ICsgICAgTDRQYWdlVGFibGUgPSAoVUlOVDY0ICopU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsg IH0NCj4gPiA+ICsNCj4gPiA+ICAgIGlmIChMNFBhZ2VUYWJsZVtJbmRleDRdID09IDApIHsNCj4g PiA+ICAgICAgTDRQYWdlVGFibGVbSW5kZXg0XSA9IChVSU5UNjQpKFVJTlROKUFsbG9jYXRlWmVy b1BhZ2VzICgxKTsNCj4gPiA+ICAgICAgaWYgKEw0UGFnZVRhYmxlW0luZGV4NF0gPT0gMCkgeyBA QCAtNzg1LDcgKzg5OCw3IEBADQo+ID4gPiBTZXRTZWNvbmRMZXZlbFBhZ2luZ0F0dHJpYnV0ZSAo DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gICAgd2hpbGUgKExlbmd0aCAhPSAwKSB7DQo+ID4g PiAtICAgIFBhZ2VFbnRyeSA9IEdldFNlY29uZExldmVsUGFnZVRhYmxlRW50cnkgKFZ0ZEluZGV4 LA0KPiA+ID4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgQmFzZUFkZHJlc3MsICZQYWdlQXR0cmli dXRlKTsNCj4gPiA+ICsgICAgUGFnZUVudHJ5ID0gR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRy eSAoVnRkSW5kZXgsDQo+ID4gPiBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCBCYXNlQWRkcmVzcywN Cj4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nLCAmUGFn ZUF0dHJpYnV0ZSk7DQo+ID4gPiAgICAgIGlmIChQYWdlRW50cnkgPT0gTlVMTCkgew0KPiA+ID4g ICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJQYWdlRW50cnkgLSBOVUxMXG4iKSk7DQo+ID4g PiAgICAgICAgcmV0dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsNCj4gPiA+IEBAIC05MTMsNyArMTAy Niw3IEBAIFNldEFjY2Vzc0F0dHJpYnV0ZSAoDQo+ID4gPg0KPiA+ID4gICAgaWYgKEV4dENvbnRl eHRFbnRyeSAhPSBOVUxMKSB7DQo+ID4gPiAgICAgIGlmIChFeHRDb250ZXh0RW50cnktPkJpdHMu UHJlc2VudCA9PSAwKSB7DQo+ID4gPiAtICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENy ZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCAwKTsNCj4gPiA+ICsgICAgICBT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeQ0KPiA+ ID4gKyAoVnRkSW5kZXgsIDAsDQo+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5J czVMZXZlbFBhZ2luZyk7DQo+ID4gPiAgICAgICAgREVCVUcgKChERUJVR19WRVJCT1NFLCJTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5IC0gMHgleCAoUyUwNHgNCj4gPiA+IEIlMDJ4IEQlMDJ4IEYlMDJ4 KSBOZXdcbiIsIFNlY29uZExldmVsUGFnaW5nRW50cnksIFNlZ21lbnQsDQo+ID4gPiBTb3VyY2VJ ZC5CaXRzLkJ1cywgU291cmNlSWQuQml0cy5EZXZpY2UsIFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24p KTsNCj4gPiA+ICAgICAgICBQdCA9IChVSU5UNjQpUlNoaWZ0VTY0DQo+ID4gPiAoKFVJTlQ2NCko VUlOVE4pU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwNCj4gPiA+IDEyKTsNCj4gPiA+DQo+ID4gPiBA QCAtOTIyLDcgKzEwMzUsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gICAgICAgIEV4 dENvbnRleHRFbnRyeS0+Qml0cy5Eb21haW5JZGVudGlmaWVyID0gRG9tYWluSWRlbnRpZmllcjsN Cj4gPiA+ICAgICAgICBFeHRDb250ZXh0RW50cnktPkJpdHMuUHJlc2VudCA9IDE7DQo+ID4gPiAg ICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pRXh0Q29udGV4dEVu dHJ5LA0KPiA+ID4gc2l6ZW9mKCpFeHRDb250ZXh0RW50cnkpKTsNCj4gPiA+IC0gICAgICBEdW1w RG1hckV4dENvbnRleHRFbnRyeVRhYmxlDQo+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJ bmRleF0uRXh0Um9vdEVudHJ5VGFibGUpOw0KPiA+ID4gKyAgICAgIER1bXBEbWFyRXh0Q29udGV4 dEVudHJ5VGFibGUNCj4gPiA+IChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5FeHRSb290 RW50cnlUYWJsZSwNCj4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVs UGFnaW5nKTsNCj4gPiA+ICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5IYXNE aXJ0eUNvbnRleHQgPSBUUlVFOw0KPiA+ID4gICAgICB9IGVsc2Ugew0KPiA+ID4gICAgICAgIFNl Y29uZExldmVsUGFnaW5nRW50cnkgPSAoVk9JRA0KPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19B RERSRVNTKEV4dENvbnRleHRFbnRyeS0NCj4gPiA+ID5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5z bGF0aW9uUG9pbnRlckxvLCBFeHRDb250ZXh0RW50cnktDQo+ID4gPiA+Qml0cy5TZWNvbmRMZXZl bFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSk7DQo+ID4gPiBAQCAtOTMwLDcgKzEwNDMsNyBAQCBT ZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gICAgICB9DQo+ID4gPiAgICB9IGVsc2UgaWYgKENv bnRleHRFbnRyeSAhPSBOVUxMKSB7DQo+ID4gPiAgICAgIGlmIChDb250ZXh0RW50cnktPkJpdHMu UHJlc2VudCA9PSAwKSB7DQo+ID4gPiAtICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENy ZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCAwKTsNCj4gPiA+ICsgICAgICBT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeQ0KPiA+ ID4gKyAoVnRkSW5kZXgsIDAsDQo+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5J czVMZXZlbFBhZ2luZyk7DQo+ID4gPiAgICAgICAgREVCVUcgKChERUJVR19WRVJCT1NFLCJTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5IC0gMHgleCAoUyUwNHgNCj4gPiA+IEIlMDJ4IEQlMDJ4IEYlMDJ4 KSBOZXdcbiIsIFNlY29uZExldmVsUGFnaW5nRW50cnksIFNlZ21lbnQsDQo+ID4gPiBTb3VyY2VJ ZC5CaXRzLkJ1cywgU291cmNlSWQuQml0cy5EZXZpY2UsIFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24p KTsNCj4gPiA+ICAgICAgICBQdCA9IChVSU5UNjQpUlNoaWZ0VTY0DQo+ID4gPiAoKFVJTlQ2NCko VUlOVE4pU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwNCj4gPiA+IDEyKTsNCj4gPiA+DQo+ID4gPiBA QCAtOTM5LDcgKzEwNTIsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1dGUgKA0KPiA+ID4gICAgICAgIENv bnRleHRFbnRyeS0+Qml0cy5Eb21haW5JZGVudGlmaWVyID0gRG9tYWluSWRlbnRpZmllcjsNCj4g PiA+ICAgICAgICBDb250ZXh0RW50cnktPkJpdHMuUHJlc2VudCA9IDE7DQo+ID4gPiAgICAgICAg Rmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pQ29udGV4dEVudHJ5LA0KPiA+ ID4gc2l6ZW9mKCpDb250ZXh0RW50cnkpKTsNCj4gPiA+IC0gICAgICBEdW1wRG1hckNvbnRleHRF bnRyeVRhYmxlDQo+ID4gPiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uUm9vdEVudHJ5 VGFibGUpOw0KPiA+ID4gKyAgICAgIER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUNCj4gPiA+ICht VnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5Sb290RW50cnlUYWJsZSwNCj4gPiA+IG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCj4gPiA+ICAgICAgICBt VnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5IYXNEaXJ0eUNvbnRleHQgPSBUUlVFOw0KPiA+ ID4gICAgICB9IGVsc2Ugew0KPiA+ID4gICAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSAo Vk9JRA0KPiA+ID4gKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKENvbnRleHRFbnRyeS0NCj4g PiA+ID5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckxvLCBDb250ZXh0RW50 cnktDQo+ID4gPiA+Qml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSk7DQo+ ID4gPiBAQCAtMTAwMCw3ICsxMTEzLDcgQEAgQWx3YXlzRW5hYmxlUGFnZUF0dHJpYnV0ZSAoDQo+ ID4gPg0KPiA+ID4gICAgaWYgKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkZpeGVkU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeSA9PSAwKSB7DQo+ID4gPiAgICAgIERFQlVHKChERUJVR19JTkZP LCAiQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAtICVkXG4iLA0KPiA+ID4gVnRkSW5kZXgp KTsNCj4gPiA+IC0gICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uRml4ZWRTZWNvbmRM ZXZlbFBhZ2luZ0VudHJ5ID0NCj4gPiA+IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0 ZEluZGV4LCBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8DQo+ID4gPiBFREtJSV9JT01NVV9BQ0NF U1NfV1JJVEUpOw0KPiA+ID4gKyAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5GaXhl ZFNlY29uZExldmVsUGFnaW5nRW50cnkgPQ0KPiA+ID4gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdF bnRyeSAoVnRkSW5kZXgsIEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwNCj4gPiA+IEVES0lJX0lP TU1VX0FDQ0VTU19XUklURSwNCj4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklz NUxldmVsUGFnaW5nKTsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAgICBTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5ID0NCj4gPiA+IG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkZpeGVkU2Vj b25kTGV2ZWxQYWdpbmdFbnRyeTsNCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvU2lsaWNvbi9J bnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25U YWJsZUV4Lg0KPiA+ID4gYw0KPiA+ID4gYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYmxlRXguDQo+ID4gPiBjDQo+ID4g PiBpbmRleCAwZWQ5ZTNjYS4uYTQ0NjY4OTEgMTAwNjQ0DQo+ID4gPiAtLS0NCj4gPiA+IGEvU2ls aWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNs YXRpb25UYWJsZUV4Lg0KPiA+ID4gYw0KPiA+ID4gKysrDQo+ID4gPiBiL1NpbGljb24vSW50ZWwv SW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFibGVF eC4NCj4gPiA+IGMNCj4gPiA+IEBAIC03OCwxMSArNzgsMjggQEAgQ3JlYXRlRXh0Q29udGV4dEVu dHJ5ICgNCj4gPiA+DQo+ID4gPiAgICAgIERFQlVHICgoREVCVUdfSU5GTywiRE9NQUlOOiBTJTA0 eCwgQiUwMnggRCUwMnggRiUwMnhcbiIsDQo+ID4gPiBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZElu ZGV4XS5TZWdtZW50LCBTb3VyY2VJZC5CaXRzLkJ1cywNCj4gPiA+IFNvdXJjZUlkLkJpdHMuRGV2 aWNlLCBTb3VyY2VJZC5CaXRzLkZ1bmN0aW9uKSk7DQo+ID4gPg0KPiA+ID4gLSAgICBpZiAoKG1W dGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgPT0g MCkgew0KPiA+ID4gLSAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIiEhISEgNC1sZXZlbCBwYWdl LXRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQgb24NCj4gPiA+IFZURCAlZCAhISEhXG4iLCBWdGRJbmRl eCkpOw0KPiA+ID4gKyAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBh Z2luZyA9IEZBTFNFOw0KPiA+ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5k ZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMykgIT0gMCkgew0KPiA+ID4gKyAgICAgIG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gVFJVRTsNCj4gPiA+ICsg ICAgICBpZiAobUFjcGlEbWFyVGFibGUtPkhvc3RBZGRyZXNzV2lkdGggPD0gNDgpIHsNCj4gPiA+ ICsgICAgICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMu U0FHQVcgJiBCSVQyKSAhPSAwKQ0KPiB7DQo+ID4gPiArICAgICAgICAgIG1WdGRVbml0SW5mb3Jt YXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gRkFMU0U7DQo+ID4gPiArICAgICAgICB9 DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gKyAgICB9IGVsc2UgaWYgKChtVnRkVW5pdEluZm9ybWF0 aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmDQo+ID4gPiArIEJJVDIpID09DQo+ID4g PiAwKSB7DQo+ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISBQYWdlLXRhYmxl IHR5cGUgaXMgbm90IHN1cHBvcnRlZCBvbg0KPiA+ID4gVlREICVkICEhISFcbiIsIFZ0ZEluZGV4 KSk7DQo+ID4gPiAgICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ICAgICAgfQ0K PiA+ID4gLSAgICBFeHRDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KPiA+ ID4gKw0KPiA+ID4gKyAgICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2 ZWxQYWdpbmcpIHsNCj4gPiA+ICsgICAgICBFeHRDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dp ZHRoID0gMHgzOw0KPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIlVzaW5nIDQtbGV2 ZWwgcGFnZS10YWJsZSBvbiBWVEQgJWRcbiIsDQo+ID4gPiBWdGRJbmRleCkpOw0KPiA+ID4gKyAg ICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lk dGggPSAweDI7DQo+ID4gPiArICAgICAgREVCVUcoKERFQlVHX0VSUk9SLCAiVXNpbmcgNS1sZXZl bCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwNCj4gPiA+IFZ0ZEluZGV4KSk7DQo+ID4gPiArICAg IH0NCj4gPiA+ICsNCj4gPiA+ICsNCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPiAgICBGbHVzaFBh Z2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsDQo+ID4gPiAoVUlOVE4pbVZ0ZFVuaXRJbmZvcm1hdGlv bltWdGRJbmRleF0uRXh0Um9vdEVudHJ5VGFibGUsDQo+ID4gPiBFRklfUEFHRVNfVE9fU0laRShF bnRyeVRhYmxlUGFnZXMpKTsNCj4gPiA+IEBAIC05MywxMSArMTEwLDEzIEBAIENyZWF0ZUV4dENv bnRleHRFbnRyeSAoDQo+ID4gPiAgLyoqDQo+ID4gPiAgICBEdW1wIERNQVIgZXh0ZW5kZWQgY29u dGV4dCBlbnRyeSB0YWJsZS4NCj4gPiA+DQo+ID4gPiAtICBAcGFyYW1baW5dICBFeHRSb290RW50 cnkgRE1BUiBleHRlbmRlZCByb290IGVudHJ5Lg0KPiA+ID4gKyAgQHBhcmFtW2luXSAgRXh0Um9v dEVudHJ5ICAgIERNQVIgZXh0ZW5kZWQgcm9vdCBlbnRyeS4NCj4gPiA+ICsgIEBwYXJhbVtpbl0g IElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQo+ID4gPiAgKiov DQo+ID4gPiAgVk9JRA0KPiA+ID4gIER1bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKA0KPiA+ ID4gLSAgSU4gVlREX0VYVF9ST09UX0VOVFJZICpFeHRSb290RW50cnkNCj4gPiA+ICsgIElOIFZU RF9FWFRfUk9PVF9FTlRSWSAqRXh0Um9vdEVudHJ5LCAgSU4gQk9PTEVBTiBJczVMZXZlbFBhZ2lu Zw0KPiA+ID4gICAgKQ0KPiA+ID4gIHsNCj4gPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICBJ bmRleDsNCj4gPiA+IEBAIC0xMjcsNyArMTQ2LDcgQEAgRHVtcERtYXJFeHRDb250ZXh0RW50cnlU YWJsZSAoDQo+ID4gPiAgICAgICAgaWYgKEV4dENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuUHJl c2VudCA9PSAwKSB7DQo+ID4gPiAgICAgICAgICBjb250aW51ZTsNCj4gPiA+ICAgICAgICB9DQo+ ID4gPiAtICAgICAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKChWT0lEDQo+ID4gPiAqKShV SU5UTilWVERfNjRCSVRTX0FERFJFU1MoRXh0Q29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNv bmRMZXZlbA0KPiA+ID4gUGENCj4gPiA+IGdlVHJhbnNsYXRpb25Qb2ludGVyTG8sDQo+ID4gPiBF eHRDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9p bnRlckhpKSk7DQo+ID4gPiArICAgICAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKChWT0lE DQo+ID4gPiAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoRXh0Q29udGV4dEVudHJ5W0luZGV4 Ml0uQml0cy5TZWNvbmRMZXZlbA0KPiA+ID4gUGENCj4gPiA+IGdlVHJhbnNsYXRpb25Qb2ludGVy TG8sDQo+ID4gPiBFeHRDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnZVRy YW5zbGF0aW9uUG9pbnRlckhpKSwNCj4gPiA+IElzNUxldmVsUGFnaW5nKTsNCj4gPiA+ICAgICAg fQ0KPiA+ID4NCj4gPiA+ICAgICAgaWYgKEV4dFJvb3RFbnRyeVtJbmRleF0uQml0cy5VcHBlclBy ZXNlbnQgPT0gMCkgeyBkaWZmIC0tZ2l0DQo+ID4gPiBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jDQo+ID4gPiBiL1NpbGljb24v SW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jDQo+ ID4gPiBpbmRleCA2OTk2MzliYS4uNjg2ZDIzNWYgMTAwNjQ0DQo+ID4gPiAtLS0gYS9TaWxpY29u L0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9WdGRSZWcuYw0K PiA+ID4gKysrIGIvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50 ZWxWVGREeGUvVnRkUmVnLmMNCj4gPiA+IEBAIC0xNzQsOCArMTc0LDE0IEBAIFByZXBhcmVWdGRD b25maWcgKA0KPiA+ID4gICAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJl Zy5CaXRzLlNMTFBTICYgQklUMCkgPT0gMCkgew0KPiA+ID4gICAgICAgIERFQlVHKChERUJVR19X QVJOLCAiISEhISAyTUIgc3VwZXIgcGFnZSBpcyBub3Qgc3VwcG9ydGVkIG9uDQo+ID4gPiBWVEQg JWQgISEhIVxuIiwgSW5kZXgpKTsNCj4gPiA+ICAgICAgfQ0KPiA+ID4gLSAgICBpZiAoKG1WdGRV bml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMikgPT0gMCkgew0K PiA+ID4gLSAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIiEhISEgNC1sZXZlbCBwYWdlLXRhYmxl IGlzIG5vdCBzdXBwb3J0ZWQgb24NCj4gPiA+IFZURCAlZCAhISEhXG4iLCBJbmRleCkpOw0KPiA+ ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FX ICYgQklUMykgIT0gMCkgew0KPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19JTkZPLCAiU3VwcG9y dCA1LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gSW5kZXgpKTsNCj4gPiA+ ICsgICAgfQ0KPiA+ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJl Zy5CaXRzLlNBR0FXICYgQklUMikgIT0gMCkgew0KPiA+ID4gKyAgICAgIERFQlVHKChERUJVR19J TkZPLCAiU3VwcG9ydCA0LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLA0KPiA+ID4gSW5k ZXgpKTsNCj4gPiA+ICsgICAgfQ0KPiA+ID4gKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25b SW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgKEJJVDMgfA0KPiA+ID4gKyBCSVQyKSkgPT0gMCkN Cj4gPiA+IHsNCj4gPiA+ICsgICAgICBERUJVRygoREVCVUdfRVJST1IsICIhISEhIFBhZ2UtdGFi bGUgdHlwZSAweCVYIGlzIG5vdA0KPiA+ID4gKyBzdXBwb3J0ZWQgb24NCj4gPiA+IFZURCAlZCAh ISEhXG4iLCBJbmRleCwgbVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0FH QVcpKTsNCj4gPiA+ICAgICAgICByZXR1cm4gOw0KPiA+ID4gICAgICB9DQo+ID4gPg0KPiA+ID4g LS0NCj4gPiA+IDIuMTYuMi53aW5kb3dzLjENCg0K --_002_CY4PR11MB192872D33AB3E9572141FD16E1F30CY4PR11MB1928namp_ Content-Type: application/octet-stream; name="0001-IntelSiliconPkg-VTd-Add-iommu-5-level-paging-support.patch" Content-Description: 0001-IntelSiliconPkg-VTd-Add-iommu-5-level-paging-support.patch Content-Disposition: attachment; filename="0001-IntelSiliconPkg-VTd-Add-iommu-5-level-paging-support.patch"; size=34748; creation-date="Wed, 02 Dec 2020 03:00:00 GMT"; modification-date="Wed, 02 Dec 2020 03:00:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA5OGRjN2FhZWZhYTY0YWVlMjUzNzA1MTA1NjU1ODI3ZDZlYzgyYjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGVuZyBXZWkgPHcuc2hlbmdAaW50ZWwuY29tPgpEYXRlOiBU aHUsIDIyIE9jdCAyMDIwIDA5OjUyOjI5ICswODAwClN1YmplY3Q6IFtQQVRDSCB2NV0gSW50ZWxT aWxpY29uUGtnL1ZUZDogQWRkIGlvbW11IDUgbGV2ZWwgcGFnaW5nIHN1cHBvcnQKClN1cHBvcnQg aW9tbXUgNSBsZXZlbCBwYWdpbmcgZm9yIHRyYW5zbGF0aW9uIHRhYmxlLgoKUkVGOiBodHRwczov L2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjcKClNpZ25lZC1vZmYt Ynk6IFNoZW5nIFdlaSA8dy5zaGVuZ0BpbnRlbC5jb20+CkNjOiBSYXkgTmkgPHJheS5uaUBpbnRl bC5jb20+CkNjOiBSYW5nYXNhaSBWIENoYWdhbnR5IDxyYW5nYXNhaS52LmNoYWdhbnR5QGludGVs LmNvbT4KQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPgpDYzogSmVubnkgSHVh bmcgPGplbm55Lmh1YW5nQGludGVsLmNvbT4KLS0tCiAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGRE eGUvRG1hUHJvdGVjdGlvbi5jICAgICAgICB8ICAgNCArLQogLi4uL0ZlYXR1cmUvVlRkL0ludGVs VlRkRHhlL0RtYVByb3RlY3Rpb24uaCAgICAgICAgfCAgMTkgKy0KIC4uLi9GZWF0dXJlL1ZUZC9J bnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYmxlLmMgICAgIHwgMjgxICsrKysrKysrKysrKysrKy0t LS0tLQogLi4uL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFibGVFeC5jICAg fCAgMzEgKystCiAuLi4vRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVnRkUmVnLmMgICAgICAgICAg ICAgICB8ICAxMCArLQogNSBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9ucygrKSwgMTAwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0Zl YXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uYyBiL1NpbGljb24vSW50ZWwvSW50 ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uYwppbmRl eCA5YjYxMzVlZi4uNjI4NTY1ZWUgMTAwNjQ0Ci0tLSBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxp Y29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uYworKysgYi9TaWxp Y29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9EbWFQcm90 ZWN0aW9uLmMKQEAgLTUyMywxMCArNTIzLDEwIEBAIFNldHVwVnRkICgKICAgZm9yIChJbmRleCA9 IDA7IEluZGV4IDwgbVZ0ZFVuaXROdW1iZXI7IEluZGV4KyspIHsNCiAgICAgREVCVUcgKChERUJV R19JTkZPLCJWVEQgVW5pdCAlZCAoU2VnbWVudDogJTA0eClcbiIsIEluZGV4LCBtVnRkVW5pdElu Zm9ybWF0aW9uW0luZGV4XS5TZWdtZW50KSk7DQogICAgIGlmIChtVnRkVW5pdEluZm9ybWF0aW9u W0luZGV4XS5FeHRSb290RW50cnlUYWJsZSAhPSBOVUxMKSB7DQotICAgICAgRHVtcERtYXJFeHRD b250ZXh0RW50cnlUYWJsZSAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uRXh0Um9vdEVudHJ5 VGFibGUpOw0KKyAgICAgIER1bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKG1WdGRVbml0SW5m b3JtYXRpb25bSW5kZXhdLkV4dFJvb3RFbnRyeVRhYmxlLCBtVnRkVW5pdEluZm9ybWF0aW9uW0lu ZGV4XS5JczVMZXZlbFBhZ2luZyk7DQogICAgIH0NCiAgICAgaWYgKG1WdGRVbml0SW5mb3JtYXRp b25bSW5kZXhdLlJvb3RFbnRyeVRhYmxlICE9IE5VTEwpIHsNCi0gICAgICBEdW1wRG1hckNvbnRl eHRFbnRyeVRhYmxlIChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5Sb290RW50cnlUYWJsZSk7 DQorICAgICAgRHVtcERtYXJDb250ZXh0RW50cnlUYWJsZSAobVZ0ZFVuaXRJbmZvcm1hdGlvbltJ bmRleF0uUm9vdEVudHJ5VGFibGUsIG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLklzNUxldmVs UGFnaW5nKTsNCiAgICAgfQ0KICAgfQ0KIA0KZGlmZiAtLWdpdCBhL1NpbGljb24vSW50ZWwvSW50 ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rpb24uaCBiL1Np bGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVBy b3RlY3Rpb24uaAppbmRleCBhMzMzMWRiOC4uZjY0MWNlYTAgMTAwNjQ0Ci0tLSBhL1NpbGljb24v SW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL0RtYVByb3RlY3Rp b24uaAorKysgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRl bFZUZER4ZS9EbWFQcm90ZWN0aW9uLmgKQEAgLTc3LDYgKzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg ewogICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eUNvbnRleHQ7DQog ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNEaXJ0eVBhZ2VzOw0KICAgUENJ X0RFVklDRV9JTkZPUk1BVElPTiAgICAgICAgICAgUGNpRGV2aWNlSW5mbzsNCisgIEJPT0xFQU4g ICAgICAgICAgICAgICAgICAgICAgICAgIElzNUxldmVsUGFnaW5nOw0KIH0gVlREX1VOSVRfSU5G T1JNQVRJT047DQogDQogLy8NCkBAIC0zNzUsMzEgKzM3NiwzNyBAQCBQYXJzZURtYXJBY3BpVGFi bGVSbXJyICgKIC8qKg0KICAgRHVtcCBETUFSIGNvbnRleHQgZW50cnkgdGFibGUuDQogDQotICBA cGFyYW1baW5dICBSb290RW50cnkgRE1BUiByb290IGVudHJ5Lg0KKyAgQHBhcmFtW2luXSAgUm9v dEVudHJ5ICAgICAgIERNQVIgcm9vdCBlbnRyeS4NCisgIEBwYXJhbVtpbl0gIElzNUxldmVsUGFn aW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQogKiovDQogVk9JRA0KIER1bXBEbWFy Q29udGV4dEVudHJ5VGFibGUgKA0KLSAgSU4gVlREX1JPT1RfRU5UUlkgKlJvb3RFbnRyeQ0KKyAg SU4gVlREX1JPT1RfRU5UUlkgKlJvb3RFbnRyeSwNCisgIElOIEJPT0xFQU4gSXM1TGV2ZWxQYWdp bmcNCiAgICk7DQogDQogLyoqDQogICBEdW1wIERNQVIgZXh0ZW5kZWQgY29udGV4dCBlbnRyeSB0 YWJsZS4NCiANCi0gIEBwYXJhbVtpbl0gIEV4dFJvb3RFbnRyeSBETUFSIGV4dGVuZGVkIHJvb3Qg ZW50cnkuDQorICBAcGFyYW1baW5dICBFeHRSb290RW50cnkgICAgRE1BUiBleHRlbmRlZCByb290 IGVudHJ5Lg0KKyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgIElmIGl0IGlzIHRoZSA1IGxl dmVsIHBhZ2luZy4NCiAqKi8NCiBWT0lEDQogRHVtcERtYXJFeHRDb250ZXh0RW50cnlUYWJsZSAo DQotICBJTiBWVERfRVhUX1JPT1RfRU5UUlkgKkV4dFJvb3RFbnRyeQ0KKyAgSU4gVlREX0VYVF9S T09UX0VOVFJZICpFeHRSb290RW50cnksDQorICBJTiBCT09MRUFOIElzNUxldmVsUGFnaW5nDQog ICApOw0KIA0KIC8qKg0KICAgRHVtcCBETUFSIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkuDQog DQotICBAcGFyYW1baW5dICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IFRoZSBzZWNvbmQgbGV2ZWwg cGFnaW5nIGVudHJ5Lg0KKyAgQHBhcmFtW2luXSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAgVGhl IHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkuDQorICBAcGFyYW1baW5dICBJczVMZXZlbFBhZ2lu ZyAgICAgICAgICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQogKiovDQogVk9JRA0KIER1 bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICgNCi0gIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5n RW50cnkNCisgIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5nRW50cnksDQorICBJTiBCT09MRUFO IElzNUxldmVsUGFnaW5nDQogICApOw0KIA0KIC8qKg0KZGlmZiAtLWdpdCBhL1NpbGljb24vSW50 ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFi bGUuYyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRk RHhlL1RyYW5zbGF0aW9uVGFibGUuYwppbmRleCAyMDFkNjYzZC4uZWRlNmUwYzUgMTAwNjQ0Ci0t LSBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhl L1RyYW5zbGF0aW9uVGFibGUuYworKysgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9G ZWF0dXJlL1ZUZC9JbnRlbFZUZER4ZS9UcmFuc2xhdGlvblRhYmxlLmMKQEAgLTEyOCwxMSArMTI4 LDI2IEBAIENyZWF0ZUNvbnRleHRFbnRyeSAoCiANCiAgICAgREVCVUcgKChERUJVR19JTkZPLCJT b3VyY2U6IFMlMDR4IEIlMDJ4IEQlMDJ4IEYlMDJ4XG4iLCBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0 ZEluZGV4XS5TZWdtZW50LCBTb3VyY2VJZC5CaXRzLkJ1cywgU291cmNlSWQuQml0cy5EZXZpY2Us IFNvdXJjZUlkLkJpdHMuRnVuY3Rpb24pKTsNCiANCi0gICAgaWYgKChtVnRkVW5pdEluZm9ybWF0 aW9uW1Z0ZEluZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIEJJVDIpID09IDApIHsNCi0gICAgICBE RUJVRygoREVCVUdfRVJST1IsICIhISEhIDQtbGV2ZWwgcGFnZS10YWJsZSBpcyBub3Qgc3VwcG9y dGVkIG9uIFZURCAlZCAhISEhXG4iLCBWdGRJbmRleCkpOw0KKyAgICBtVnRkVW5pdEluZm9ybWF0 aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9IEZBTFNFOw0KKyAgICBpZiAoKG1WdGRVbml0 SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNBR0FXICYgQklUMykgIT0gMCkgew0K KyAgICAgIG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nID0gVFJV RTsNCisgICAgICBpZiAoKG1BY3BpRG1hclRhYmxlLT5Ib3N0QWRkcmVzc1dpZHRoIDw9IDQ4KSAm Jg0KKyAgICAgICAgICAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRz LlNBR0FXICYgQklUMikgIT0gMCkpIHsNCisgICAgICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBGQUxTRTsNCisgICAgICAgIH0NCisgICAgICB9DQor ICAgIH0gZWxzZSBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRz LlNBR0FXICYgQklUMikgPT0gMCkgew0KKyAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIiEhISEg UGFnZS10YWJsZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgb24gVlREICVkICEhISFcbiIsIFZ0ZElu ZGV4KSk7DQogICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCiAgICAgfQ0KLSAgICBDb250 ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0KKw0KKyAgICBpZiAobVZ0ZFVuaXRJ bmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpIHsNCisgICAgICBDb250ZXh0RW50 cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgzOw0KKyAgICAgIERFQlVHKChERUJVR19JTkZPLCAi VXNpbmcgNS1sZXZlbCBwYWdlLXRhYmxlIG9uIFZURCAlZFxuIiwgVnRkSW5kZXgpKTsNCisgICAg fSBlbHNlIHsNCisgICAgICBDb250ZXh0RW50cnktPkJpdHMuQWRkcmVzc1dpZHRoID0gMHgyOw0K KyAgICAgIERFQlVHKChERUJVR19JTkZPLCAiVXNpbmcgNC1sZXZlbCBwYWdlLXRhYmxlIG9uIFZU RCAlZFxuIiwgVnRkSW5kZXgpKTsNCisgICAgfQ0KICAgfQ0KIA0KICAgRmx1c2hQYWdlVGFibGVN ZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uUm9v dEVudHJ5VGFibGUsIEVGSV9QQUdFU19UT19TSVpFKEVudHJ5VGFibGVQYWdlcykpOw0KQEAgLTE0 OCw2ICsxNjMsNyBAQCBDcmVhdGVDb250ZXh0RW50cnkgKAogICBAcGFyYW1baW5dICBNZW1vcnlC YXNlICAgICAgICAgICAgICAgICAgVGhlIGJhc2Ugb2YgdGhlIG1lbW9yeS4NCiAgIEBwYXJhbVtp bl0gIE1lbW9yeUxpbWl0ICAgICAgICAgICAgICAgICBUaGUgbGltaXQgb2YgdGhlIG1lbW9yeS4N CiAgIEBwYXJhbVtpbl0gIElvTW11QWNjZXNzICAgICAgICAgICAgICAgICBUaGUgSU9NTVUgYWNj ZXNzLg0KKyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgICAgICAgICAgICAgIElmIGl0IGlz IHRoZSA1IGxldmVsIHBhZ2luZy4NCiANCiAgIEByZXR1cm4gVGhlIHNlY29uZCBsZXZlbCBwYWdp bmcgZW50cnkuDQogKiovDQpAQCAtMTU3LDE2ICsxNzMsMjMgQEAgQ3JlYXRlU2Vjb25kTGV2ZWxQ YWdpbmdFbnRyeVRhYmxlICgKICAgSU4gVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgKlNl Y29uZExldmVsUGFnaW5nRW50cnksDQogICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAg ICBNZW1vcnlCYXNlLA0KICAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5 TGltaXQsDQotICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICBJb01tdUFjY2Vzcw0K KyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgSW9NbXVBY2Nlc3MsDQorICBJTiBC T09MRUFOICAgICAgICAgICAgICAgICAgICAgICBJczVMZXZlbFBhZ2luZw0KICAgKQ0KIHsNCisg IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDU7DQogICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXg0Ow0KICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4MzsNCiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDI7DQor ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgTHZsNVN0YXJ0Ow0KKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgIEx2bDVFbmQ7DQorICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgTHZsNFBhZ2VzU3RhcnQ7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgTHZsNFBhZ2VzRW5kOw0KICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDRT dGFydDsNCiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBMdmw0RW5kOw0KICAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgIEx2bDNTdGFydDsNCiAgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICBMdmwzRW5kOw0KKyAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5U UlkgICpMdmw1UHRFbnRyeTsNCiAgIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICAqTHZs NFB0RW50cnk7DQogICBWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2bDNQdEVudHJ5 Ow0KICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwyUHRFbnRyeTsNCkBAIC0x ODQsNyArMjA3LDcgQEAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgKICAgaWYg KFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVMTCkgew0KICAgICBTZWNvbmRMZXZlbFBhZ2lu Z0VudHJ5ID0gQWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KICAgICBpZiAoU2Vjb25kTGV2ZWxQYWdp bmdFbnRyeSA9PSBOVUxMKSB7DQotICAgICAgREVCVUcgKChERUJVR19FUlJPUiwiQ291bGQgbm90 IEFsbG9jIExWTDQgUFQuIFxuIikpOw0KKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIkNvdWxk IG5vdCBBbGxvYyBMVkw0IG9yIExWTDUgUFQuIFxuIikpOw0KICAgICAgIHJldHVybiBOVUxMOw0K ICAgICB9DQogICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJTlROKVNlY29u ZExldmVsUGFnaW5nRW50cnksIEVGSV9QQUdFU19UT19TSVpFKDEpKTsNCkBAIC0xOTcsNjYgKzIy MCwxMDkgQEAgQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgKICAgICByZXR1cm4g U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCiAgIH0NCiANCi0gIEx2bDRTdGFydCA9IFJTaGlmdFU2 NCAoQmFzZUFkZHJlc3MsIDM5KSAmIDB4MUZGOw0KLSAgTHZsNEVuZCA9IFJTaGlmdFU2NCAoRW5k QWRkcmVzcyAtIDEsIDM5KSAmIDB4MUZGOw0KKyAgaWYgKElzNUxldmVsUGFnaW5nKSB7DQorICAg IEx2bDVTdGFydCA9IFJTaGlmdFU2NCAoQmFzZUFkZHJlc3MsIDQ4KSAmIDB4MUZGOw0KKyAgICBM dmw1RW5kID0gUlNoaWZ0VTY0IChFbmRBZGRyZXNzIC0gMSwgNDgpICYgMHgxRkY7DQorICAgIERF QlVHICgoREVCVUdfSU5GTywiICBMdmw1U3RhcnQgLSAweCV4LCBMdmw1RW5kIC0gMHgleFxuIiwg THZsNVN0YXJ0LCBMdmw1RW5kKSk7DQogDQotICBERUJVRyAoKERFQlVHX0lORk8sIiAgTHZsNFN0 YXJ0IC0gMHgleCwgTHZsNEVuZCAtIDB4JXhcbiIsIEx2bDRTdGFydCwgTHZsNEVuZCkpOw0KKyAg ICBMdmw0U3RhcnQgPSBSU2hpZnRVNjQgKEJhc2VBZGRyZXNzLCAzOSkgJiAweDFGRjsNCisgICAg THZsNEVuZCA9IFJTaGlmdFU2NCAoRW5kQWRkcmVzcyAtIDEsIDM5KSAmIDB4MUZGOw0KIA0KLSAg THZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgKilTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5Ow0KLSAgZm9yIChJbmRleDQgPSBMdmw0U3RhcnQ7IEluZGV4NCA8PSBMdmw0 RW5kOyBJbmRleDQrKykgew0KLSAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQgPT0g MCkgew0KLSAgICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4p QWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KLSAgICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVp bnQ2NCA9PSAwKSB7DQotICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NB VEUgTFZMNCBQQUdFIEZBSUwgKDB4JXgpISEhISEhXG4iLCBJbmRleDQpKTsNCi0gICAgICAgIEFT U0VSVChGQUxTRSk7DQotICAgICAgICByZXR1cm4gTlVMTDsNCi0gICAgICB9DQotICAgICAgRmx1 c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pTHZsNFB0RW50cnlbSW5kZXg0XS5V aW50NjQsIFNJWkVfNEtCKTsNCi0gICAgICBTZXRTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmli dXRlICgmTHZsNFB0RW50cnlbSW5kZXg0XSwgRURLSUlfSU9NTVVfQUNDRVNTX1JFQUQgfCBFREtJ SV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KLSAgICB9DQorICAgIEx2bDRQYWdlc1N0YXJ0ID0gKEx2 bDVTdGFydDw8OSkgfCBMdmw0U3RhcnQ7DQorICAgIEx2bDRQYWdlc0VuZCA9IChMdmw1RW5kPDw5 KSB8IEx2bDRFbmQ7DQorICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw0UGFnZXNTdGFydCAt IDB4JXgsIEx2bDRQYWdlc0VuZCAtIDB4JXhcbiIsIEx2bDRQYWdlc1N0YXJ0LCBMdmw0UGFnZXNF bmQpKTsNCiANCi0gICAgTHZsM1N0YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRkcmVzcywgMzApICYg MHgxRkY7DQotICAgIGlmIChBTElHTl9WQUxVRV9MT1coQmFzZUFkZHJlc3MgKyBTSVpFXzFHQiwg U0laRV8xR0IpIDw9IEVuZEFkZHJlc3MpIHsNCi0gICAgICBMdmwzRW5kID0gU0laRV80S0Ivc2l6 ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAtIDE7DQotICAgIH0gZWxzZSB7DQot ICAgICAgTHZsM0VuZCA9IFJTaGlmdFU2NCAoRW5kQWRkcmVzcyAtIDEsIDMwKSAmIDB4MUZGOw0K KyAgICBMdmw1UHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqKVNlY29u ZExldmVsUGFnaW5nRW50cnk7DQorICB9IGVsc2Ugew0KKyAgICBMdmw1U3RhcnQgPSBSU2hpZnRV NjQgKEJhc2VBZGRyZXNzLCA0OCkgJiAweDFGRjsNCisgICAgTHZsNUVuZCA9IEx2bDVTdGFydDsN CisNCisgICAgTHZsNFN0YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRkcmVzcywgMzkpICYgMHgxRkY7 DQorICAgIEx2bDRFbmQgPSBSU2hpZnRVNjQgKEVuZEFkZHJlc3MgLSAxLCAzOSkgJiAweDFGRjsN CisgICAgREVCVUcgKChERUJVR19JTkZPLCIgIEx2bDRTdGFydCAtIDB4JXgsIEx2bDRFbmQgLSAw eCV4XG4iLCBMdmw0U3RhcnQsIEx2bDRFbmQpKTsNCisNCisgICAgTHZsNFB0RW50cnkgPSAoVlRE X1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KKyAg fQ0KKw0KKyAgZm9yIChJbmRleDUgPSBMdmw1U3RhcnQ7IEluZGV4NSA8PSBMdmw1RW5kOyBJbmRl eDUrKykgew0KKyAgICBpZiAoSXM1TGV2ZWxQYWdpbmcpIHsNCisgICAgICBpZiAoTHZsNVB0RW50 cnlbSW5kZXg1XS5VaW50NjQgPT0gMCkgew0KKyAgICAgICAgTHZsNVB0RW50cnlbSW5kZXg1XS5V aW50NjQgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQorICAgICAgICBp ZiAoTHZsNVB0RW50cnlbSW5kZXg1XS5VaW50NjQgPT0gMCkgew0KKyAgICAgICAgICBERUJVRyAo KERFQlVHX0VSUk9SLCIhISEhISEgQUxMT0NBVEUgTFZMNCBQQUdFIEZBSUwgKDB4JXgpISEhISEh XG4iLCBJbmRleDUpKTsNCisgICAgICAgICAgQVNTRVJUKEZBTFNFKTsNCisgICAgICAgICAgcmV0 dXJuIE5VTEw7DQorICAgICAgICB9DQorICAgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRk SW5kZXgsIChVSU5UTilMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCwgU0laRV80S0IpOw0KKyAg ICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeUF0dHJpYnV0ZSAoJkx2bDVQdEVudHJ5W0lu ZGV4NV0sIEVES0lJX0lPTU1VX0FDQ0VTU19SRUFEIHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRF KTsNCisgICAgICB9DQorICAgICAgTHZsNFN0YXJ0ID0gTHZsNFBhZ2VzU3RhcnQgJiAweDFGRjsN CisgICAgICBpZiAoKChJbmRleDUrMSk8PDkpID4gTHZsNFBhZ2VzRW5kKSB7DQorICAgICAgICBM dmw0RW5kID0gU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKSAt IDE7Ow0KKyAgICAgICAgTHZsNFBhZ2VzU3RhcnQgPSAoSW5kZXg1KzEpPDw5Ow0KKyAgICAgIH0g ZWxzZSB7DQorICAgICAgICBMdmw0RW5kID0gTHZsNFBhZ2VzRW5kICYgMHgxRkY7DQorICAgICAg fQ0KKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw1KDB4JXgpOiBMdmw0U3RhcnQgLSAw eCV4LCBMdmw0RW5kIC0gMHgleFxuIiwgSW5kZXg1LCBMdmw0U3RhcnQsIEx2bDRFbmQpKTsNCisg ICAgICBMdmw0UHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqKShVSU5U TilWVERfNjRCSVRTX0FERFJFU1MoTHZsNVB0RW50cnlbSW5kZXg1XS5CaXRzLkFkZHJlc3NMbywg THZsNVB0RW50cnlbSW5kZXg1XS5CaXRzLkFkZHJlc3NIaSk7DQogICAgIH0NCi0gICAgREVCVUcg KChERUJVR19JTkZPLCIgIEx2bDQoMHgleCk6IEx2bDNTdGFydCAtIDB4JXgsIEx2bDNFbmQgLSAw eCV4XG4iLCBJbmRleDQsIEx2bDNTdGFydCwgTHZsM0VuZCkpOw0KIA0KLSAgICBMdmwzUHRFbnRy eSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqKShVSU5UTilWVERfNjRCSVRTX0FE RFJFU1MoTHZsNFB0RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NMbywgTHZsNFB0RW50cnlbSW5k ZXg0XS5CaXRzLkFkZHJlc3NIaSk7DQotICAgIGZvciAoSW5kZXgzID0gTHZsM1N0YXJ0OyBJbmRl eDMgPD0gTHZsM0VuZDsgSW5kZXgzKyspIHsNCi0gICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgz XS5VaW50NjQgPT0gMCkgew0KLSAgICAgICAgTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPSAo VUlOVDY0KShVSU5UTilBbGxvY2F0ZVplcm9QYWdlcyAoMSk7DQotICAgICAgICBpZiAoTHZsM1B0 RW50cnlbSW5kZXgzXS5VaW50NjQgPT0gMCkgew0KLSAgICAgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCIhISEhISEgQUxMT0NBVEUgTFZMMyBQQUdFIEZBSUwgKDB4JXgsIDB4JXgpISEhISEhXG4i LCBJbmRleDQsIEluZGV4MykpOw0KKyAgICBmb3IgKEluZGV4NCA9IEx2bDRTdGFydDsgSW5kZXg0 IDw9IEx2bDRFbmQ7IEluZGV4NCsrKSB7DQorICAgICAgaWYgKEx2bDRQdEVudHJ5W0luZGV4NF0u VWludDY0ID09IDApIHsNCisgICAgICAgIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID0gKFVJ TlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KKyAgICAgICAgaWYgKEx2bDRQdEVu dHJ5W0luZGV4NF0uVWludDY0ID09IDApIHsNCisgICAgICAgICAgREVCVUcgKChERUJVR19FUlJP UiwiISEhISEhIEFMTE9DQVRFIExWTDQgUEFHRSBGQUlMICgweCV4KSEhISEhIVxuIiwgSW5kZXg0 KSk7DQogICAgICAgICAgIEFTU0VSVChGQUxTRSk7DQogICAgICAgICAgIHJldHVybiBOVUxMOw0K ICAgICAgICAgfQ0KLSAgICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlO VE4pTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQsIFNJWkVfNEtCKTsNCi0gICAgICAgIFNldFNl Y29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZMdmwzUHRFbnRyeVtJbmRleDNdLCBFREtJ SV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQorICAgICAg ICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTilMdmw0UHRFbnRyeVtJbmRl eDRdLlVpbnQ2NCwgU0laRV80S0IpOw0KKyAgICAgICAgU2V0U2Vjb25kTGV2ZWxQYWdpbmdFbnRy eUF0dHJpYnV0ZSAoJkx2bDRQdEVudHJ5W0luZGV4NF0sIEVES0lJX0lPTU1VX0FDQ0VTU19SRUFE IHwgRURLSUlfSU9NTVVfQUNDRVNTX1dSSVRFKTsNCisgICAgICB9DQorDQorICAgICAgTHZsM1N0 YXJ0ID0gUlNoaWZ0VTY0IChCYXNlQWRkcmVzcywgMzApICYgMHgxRkY7DQorICAgICAgaWYgKEFM SUdOX1ZBTFVFX0xPVyhCYXNlQWRkcmVzcyArIFNJWkVfMUdCLCBTSVpFXzFHQikgPD0gRW5kQWRk cmVzcykgew0KKyAgICAgICAgTHZsM0VuZCA9IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xF VkVMX1BBR0lOR19FTlRSWSkgLSAxOw0KKyAgICAgIH0gZWxzZSB7DQorICAgICAgICBMdmwzRW5k ID0gUlNoaWZ0VTY0IChFbmRBZGRyZXNzIC0gMSwgMzApICYgMHgxRkY7DQogICAgICAgfQ0KKyAg ICAgIERFQlVHICgoREVCVUdfSU5GTywiICBMdmw0KDB4JXgpOiBMdmwzU3RhcnQgLSAweCV4LCBM dmwzRW5kIC0gMHgleFxuIiwgSW5kZXg0LCBMdmwzU3RhcnQsIEx2bDNFbmQpKTsNCiANCi0gICAg ICBMdmwyUHRFbnRyeSA9IChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAqKShVSU5UTilW VERfNjRCSVRTX0FERFJFU1MoTHZsM1B0RW50cnlbSW5kZXgzXS5CaXRzLkFkZHJlc3NMbywgTHZs M1B0RW50cnlbSW5kZXgzXS5CaXRzLkFkZHJlc3NIaSk7DQotICAgICAgZm9yIChJbmRleDIgPSAw OyBJbmRleDIgPCBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkp OyBJbmRleDIrKykgew0KLSAgICAgICAgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgPSBCYXNl QWRkcmVzczsNCi0gICAgICAgIFNldFNlY29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKCZM dmwyUHRFbnRyeVtJbmRleDJdLCBJb01tdUFjY2Vzcyk7DQotICAgICAgICBMdmwyUHRFbnRyeVtJ bmRleDJdLkJpdHMuUGFnZVNpemUgPSAxOw0KLSAgICAgICAgQmFzZUFkZHJlc3MgKz0gU0laRV8y TUI7DQorICAgICAgTHZsM1B0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkg KikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRy ZXNzTG8sIEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNzSGkpOw0KKyAgICAgIGZvciAo SW5kZXgzID0gTHZsM1N0YXJ0OyBJbmRleDMgPD0gTHZsM0VuZDsgSW5kZXgzKyspIHsNCisgICAg ICAgIGlmIChMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCA9PSAwKSB7DQorICAgICAgICAgIEx2 bDNQdEVudHJ5W0luZGV4M10uVWludDY0ID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJvUGFn ZXMgKDEpOw0KKyAgICAgICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPT0gMCkg ew0KKyAgICAgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIiEhISEhISBBTExPQ0FURSBMVkwz IFBBR0UgRkFJTCAoMHgleCwgMHgleCkhISEhISFcbiIsIEluZGV4NCwgSW5kZXgzKSk7DQorICAg ICAgICAgICAgQVNTRVJUKEZBTFNFKTsNCisgICAgICAgICAgICByZXR1cm4gTlVMTDsNCisgICAg ICAgICAgfQ0KKyAgICAgICAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5U TilMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCwgU0laRV80S0IpOw0KKyAgICAgICAgICBTZXRT ZWNvbmRMZXZlbFBhZ2luZ0VudHJ5QXR0cmlidXRlICgmTHZsM1B0RW50cnlbSW5kZXgzXSwgRURL SUlfSU9NTVVfQUNDRVNTX1JFQUQgfCBFREtJSV9JT01NVV9BQ0NFU1NfV1JJVEUpOw0KKyAgICAg ICAgfQ0KKw0KKyAgICAgICAgTHZsMlB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdf RU5UUlkgKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDNQdEVudHJ5W0luZGV4M10uQml0 cy5BZGRyZXNzTG8sIEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNzSGkpOw0KKyAgICAg ICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIgPCBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDIrKykgew0KKyAgICAgICAgICBMdmwyUHRFbnRyeVtJ bmRleDJdLlVpbnQ2NCA9IEJhc2VBZGRyZXNzOw0KKyAgICAgICAgICBTZXRTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5QXR0cmlidXRlICgmTHZsMlB0RW50cnlbSW5kZXgyXSwgSW9NbXVBY2Nlc3MpOw0K KyAgICAgICAgICBMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuUGFnZVNpemUgPSAxOw0KKyAgICAg ICAgICBCYXNlQWRkcmVzcyArPSBTSVpFXzJNQjsNCisgICAgICAgICAgaWYgKEJhc2VBZGRyZXNz ID49IE1lbW9yeUxpbWl0KSB7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgIH0NCisg ICAgICAgIH0NCisgICAgICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJTlRO KUx2bDJQdEVudHJ5LCBTSVpFXzRLQik7DQogICAgICAgICBpZiAoQmFzZUFkZHJlc3MgPj0gTWVt b3J5TGltaXQpIHsNCiAgICAgICAgICAgYnJlYWs7DQogICAgICAgICB9DQogICAgICAgfQ0KLSAg ICAgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRleCwgKFVJTlROKUx2bDJQdEVudHJ5LCBT SVpFXzRLQik7DQorICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4p Jkx2bDNQdEVudHJ5W0x2bDNTdGFydF0sIChVSU5UTikmTHZsM1B0RW50cnlbTHZsM0VuZCArIDFd IC0gKFVJTlROKSZMdmwzUHRFbnRyeVtMdmwzU3RhcnRdKTsNCiAgICAgICBpZiAoQmFzZUFkZHJl c3MgPj0gTWVtb3J5TGltaXQpIHsNCiAgICAgICAgIGJyZWFrOw0KICAgICAgIH0NCiAgICAgfQ0K LSAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5kZXgsIChVSU5UTikmTHZsM1B0RW50cnlb THZsM1N0YXJ0XSwgKFVJTlROKSZMdmwzUHRFbnRyeVtMdmwzRW5kICsgMV0gLSAoVUlOVE4pJkx2 bDNQdEVudHJ5W0x2bDNTdGFydF0pOw0KLSAgICBpZiAoQmFzZUFkZHJlc3MgPj0gTWVtb3J5TGlt aXQpIHsNCi0gICAgICBicmVhazsNCi0gICAgfQ0KKyAgICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAo VnRkSW5kZXgsIChVSU5UTikmTHZsNFB0RW50cnlbTHZsNFN0YXJ0XSwgKFVJTlROKSZMdmw0UHRF bnRyeVtMdmw0RW5kICsgMV0gLSAoVUlOVE4pJkx2bDRQdEVudHJ5W0x2bDRTdGFydF0pOw0KICAg fQ0KLSAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlOVE4pJkx2bDRQdEVudHJ5 W0x2bDRTdGFydF0sIChVSU5UTikmTHZsNFB0RW50cnlbTHZsNEVuZCArIDFdIC0gKFVJTlROKSZM dmw0UHRFbnRyeVtMdmw0U3RhcnRdKTsNCisgIEZsdXNoUGFnZVRhYmxlTWVtb3J5IChWdGRJbmRl eCwgKFVJTlROKSZMdmw1UHRFbnRyeVtMdmw1U3RhcnRdLCAoVUlOVE4pJkx2bDVQdEVudHJ5W0x2 bDVFbmQgKyAxXSAtIChVSU5UTikmTHZsNVB0RW50cnlbTHZsNVN0YXJ0XSk7DQogDQogICByZXR1 cm4gU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCiB9DQpAQCAtMjY2LDI2ICszMzIsMjggQEAgQ3Jl YXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlICgKIA0KICAgQHBhcmFtW2luXSAgVnRkSW5k ZXggICAgICAgICAgICAgICAgICAgIFRoZSBpbmRleCBvZiB0aGUgVlRkIGVuZ2luZS4NCiAgIEBw YXJhbVtpbl0gIElvTW11QWNjZXNzICAgICAgICAgICAgICAgICBUaGUgSU9NTVUgYWNjZXNzLg0K KyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgICAgICAgICAgICAgIElmIGl0IGlzIHRoZSA1 IGxldmVsIHBhZ2luZy4NCiANCiAgIEByZXR1cm4gVGhlIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50 cnkuDQogKiovDQogVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgKg0KIENyZWF0ZVNlY29u ZExldmVsUGFnaW5nRW50cnkgKA0KICAgSU4gVUlOVE4gICBWdGRJbmRleCwNCi0gIElOIFVJTlQ2 NCAgSW9NbXVBY2Nlc3MNCisgIElOIFVJTlQ2NCAgSW9NbXVBY2Nlc3MsDQorICBJTiBCT09MRUFO IElzNUxldmVsUGFnaW5nDQogICApDQogew0KICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5U UlkgKlNlY29uZExldmVsUGFnaW5nRW50cnk7DQogDQogICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 ID0gTlVMTDsNCi0gIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5VGFibGUgKFZ0ZEluZGV4LCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCAwLCBtQmVs b3c0R01lbW9yeUxpbWl0LCBJb01tdUFjY2Vzcyk7DQorICBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeVRhYmxlIChWdGRJbmRleCwgU2Vjb25kTGV2 ZWxQYWdpbmdFbnRyeSwgMCwgbUJlbG93NEdNZW1vcnlMaW1pdCwgSW9NbXVBY2Nlc3MsIElzNUxl dmVsUGFnaW5nKTsNCiAgIGlmIChTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ID09IE5VTEwpIHsNCiAg ICAgcmV0dXJuIE5VTEw7DQogICB9DQogDQogICBpZiAobUFib3ZlNEdNZW1vcnlMaW1pdCAhPSAw KSB7DQogICAgIEFTU0VSVCAobUFib3ZlNEdNZW1vcnlMaW1pdCA+IEJBU0VfNEdCKTsNCi0gICAg U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnlUYWJs ZSAoVnRkSW5kZXgsIFNlY29uZExldmVsUGFnaW5nRW50cnksIFNJWkVfNEdCLCBtQWJvdmU0R01l bW9yeUxpbWl0LCBJb01tdUFjY2Vzcyk7DQorICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBD cmVhdGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5VGFibGUgKFZ0ZEluZGV4LCBTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5LCBTSVpFXzRHQiwgbUFib3ZlNEdNZW1vcnlMaW1pdCwgSW9NbXVBY2Nlc3MsIElz NUxldmVsUGFnaW5nKTsNCiAgICAgaWYgKFNlY29uZExldmVsUGFnaW5nRW50cnkgPT0gTlVMTCkg ew0KICAgICAgIHJldHVybiBOVUxMOw0KICAgICB9DQpAQCAtMzI2LDExICszOTQsMTMgQEAgU2V0 dXBUcmFuc2xhdGlvblRhYmxlICgKIC8qKg0KICAgRHVtcCBETUFSIGNvbnRleHQgZW50cnkgdGFi bGUuDQogDQotICBAcGFyYW1baW5dICBSb290RW50cnkgRE1BUiByb290IGVudHJ5Lg0KKyAgQHBh cmFtW2luXSAgUm9vdEVudHJ5ICAgICAgIERNQVIgcm9vdCBlbnRyeS4NCisgIEBwYXJhbVtpbl0g IElzNUxldmVsUGFnaW5nICBJZiBpdCBpcyB0aGUgNSBsZXZlbCBwYWdpbmcuDQogKiovDQogVk9J RA0KIER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUgKA0KLSAgSU4gVlREX1JPT1RfRU5UUlkgKlJv b3RFbnRyeQ0KKyAgSU4gVlREX1JPT1RfRU5UUlkgKlJvb3RFbnRyeSwNCisgIElOIEJPT0xFQU4g SXM1TGV2ZWxQYWdpbmcNCiAgICkNCiB7DQogICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7 DQpAQCAtMzU5LDcgKzQyOSw3IEBAIER1bXBEbWFyQ29udGV4dEVudHJ5VGFibGUgKAogICAgICAg aWYgKENvbnRleHRFbnRyeVtJbmRleDJdLkJpdHMuUHJlc2VudCA9PSAwKSB7DQogICAgICAgICBj b250aW51ZTsNCiAgICAgICB9DQotICAgICAgRHVtcFNlY29uZExldmVsUGFnaW5nRW50cnkgKChW T0lEICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRz LlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckxvLCBDb250ZXh0RW50cnlbSW5kZXgy XS5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9pbnRlckhpKSk7DQorICAgICAgRHVt cFNlY29uZExldmVsUGFnaW5nRW50cnkgKChWT0lEICopKFVJTlROKVZURF82NEJJVFNfQUREUkVT UyhDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0aW9uUG9p bnRlckxvLCBDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0 aW9uUG9pbnRlckhpKSwgSXM1TGV2ZWxQYWdpbmcpOw0KICAgICB9DQogICB9DQogICBERUJVRyAo KERFQlVHX0lORk8sIj09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpKTsNCkBAIC0zNjgsMTcg KzQzOCwyMiBAQCBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlICgKIC8qKg0KICAgRHVtcCBETUFS IHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnkuDQogDQotICBAcGFyYW1baW5dICBTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5IFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5Lg0KKyAgQHBhcmFtW2lu XSAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAgVGhlIHNlY29uZCBsZXZlbCBwYWdpbmcgZW50cnku DQorICBAcGFyYW1baW5dICBJczVMZXZlbFBhZ2luZyAgICAgICAgICBJZiBpdCBpcyB0aGUgNSBs ZXZlbCBwYWdpbmcuDQogKiovDQogVk9JRA0KIER1bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICgN Ci0gIElOIFZPSUQgKlNlY29uZExldmVsUGFnaW5nRW50cnkNCisgIElOIFZPSUQgKlNlY29uZExl dmVsUGFnaW5nRW50cnksDQorICBJTiBCT09MRUFOIElzNUxldmVsUGFnaW5nDQogICApDQogew0K KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4NTsNCiAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICBJbmRleDQ7DQogICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXgzOw0KICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4MjsN CiAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDE7DQorICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgTHZsNUluZGV4RW5kOw0KKyAgVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkgICpMdmw1UHRFbnRyeTsNCiAgIFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VO VFJZICAqTHZsNFB0RW50cnk7DQogICBWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSAgKkx2 bDNQdEVudHJ5Ow0KICAgVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgICpMdmwyUHRFbnRy eTsNCkBAIC0zODYsMzggKzQ2MSw1MyBAQCBEdW1wU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoCiAN CiAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiPT09PT09PT09PT09PT09PVxuIikpOw0KICAgREVC VUcgKChERUJVR19WRVJCT1NFLCJETUFSIFNlY29uZCBMZXZlbCBQYWdlIFRhYmxlOlxuIikpOw0K KyAgREVCVUcgKChERUJVR19WRVJCT1NFLCJTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IEJhc2UgLSAw eCV4LCBJczVMZXZlbFBhZ2luZyAtICVkXG4iLCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCBJczVM ZXZlbFBhZ2luZykpOw0KIA0KLSAgREVCVUcgKChERUJVR19WRVJCT1NFLCJTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5IEJhc2UgLSAweCV4XG4iLCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5KSk7DQorICBM dmw1SW5kZXhFbmQgPSBJczVMZXZlbFBhZ2luZyA/IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05E X0xFVkVMX1BBR0lOR19FTlRSWSkgOiAxOw0KICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KLSAgZm9yIChJbmRl eDQgPSAwOyBJbmRleDQgPCBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdf RU5UUlkpOyBJbmRleDQrKykgew0KLSAgICBpZiAoTHZsNFB0RW50cnlbSW5kZXg0XS5VaW50NjQg IT0gMCkgew0KLSAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICBMdmw0UHQgRW50cnkoMHgl MDN4KSAtIDB4JTAxNmx4XG4iLCBJbmRleDQsIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0KSk7 DQotICAgIH0NCi0gICAgaWYgKEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ID09IDApIHsNCi0g ICAgICBjb250aW51ZTsNCi0gICAgfQ0KLSAgICBMdmwzUHRFbnRyeSA9IChWVERfU0VDT05EX0xF VkVMX1BBR0lOR19FTlRSWSAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoTHZsNFB0RW50cnlb SW5kZXg0XS5CaXRzLkFkZHJlc3NMbywgTHZsNFB0RW50cnlbSW5kZXg0XS5CaXRzLkFkZHJlc3NI aSk7DQotICAgIGZvciAoSW5kZXgzID0gMDsgSW5kZXgzIDwgU0laRV80S0Ivc2l6ZW9mKFZURF9T RUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgzKyspIHsNCi0gICAgICBpZiAoTHZsM1B0 RW50cnlbSW5kZXgzXS5VaW50NjQgIT0gMCkgew0KLSAgICAgICAgREVCVUcgKChERUJVR19WRVJC T1NFLCIgICAgTHZsM1B0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwgSW5kZXgzLCBMdmwz UHRFbnRyeVtJbmRleDNdLlVpbnQ2NCkpOw0KKyAgTHZsNVB0RW50cnkgPSAoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5Ow0KKw0KKyAgZm9yIChJ bmRleDUgPSAwOyBJbmRleDUgPCBMdmw1SW5kZXhFbmQ7IEluZGV4NSsrKSB7DQorICAgIGlmIChJ czVMZXZlbFBhZ2luZykgew0KKyAgICAgIGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCAh PSAwKSB7DQorICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsIiAgTHZsNVB0IEVudHJ5KDB4 JTAzeCkgLSAweCUwMTZseFxuIiwgSW5kZXg1LCBMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCkp Ow0KICAgICAgIH0NCi0gICAgICBpZiAoTHZsM1B0RW50cnlbSW5kZXgzXS5VaW50NjQgPT0gMCkg ew0KKyAgICAgIGlmIChMdmw1UHRFbnRyeVtJbmRleDVdLlVpbnQ2NCA9PSAwKSB7DQogICAgICAg ICBjb250aW51ZTsNCiAgICAgICB9DQorICAgICAgTHZsNFB0RW50cnkgPSAoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDVQdEVudHJ5 W0luZGV4NV0uQml0cy5BZGRyZXNzTG8sIEx2bDVQdEVudHJ5W0luZGV4NV0uQml0cy5BZGRyZXNz SGkpOw0KKyAgICB9DQogDQotICAgICAgTHZsMlB0RW50cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9Q QUdJTkdfRU5UUlkgKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDNQdEVudHJ5W0luZGV4 M10uQml0cy5BZGRyZXNzTG8sIEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNzSGkpOw0K LSAgICAgIGZvciAoSW5kZXgyID0gMDsgSW5kZXgyIDwgU0laRV80S0Ivc2l6ZW9mKFZURF9TRUNP TkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgyKyspIHsNCi0gICAgICAgIGlmIChMdmwyUHRF bnRyeVtJbmRleDJdLlVpbnQ2NCAhPSAwKSB7DQotICAgICAgICAgIERFQlVHICgoREVCVUdfVkVS Qk9TRSwiICAgICAgTHZsMlB0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwgSW5kZXgyLCBM dmwyUHRFbnRyeVtJbmRleDJdLlVpbnQ2NCkpOw0KKyAgICBmb3IgKEluZGV4NCA9IDA7IEluZGV4 NCA8IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lOR19FTlRSWSk7IEluZGV4 NCsrKSB7DQorICAgICAgaWYgKEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0ICE9IDApIHsNCisg ICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICBMdmw0UHQgRW50cnkoMHglMDN4KSAtIDB4 JTAxNmx4XG4iLCBJbmRleDQsIEx2bDRQdEVudHJ5W0luZGV4NF0uVWludDY0KSk7DQorICAgICAg fQ0KKyAgICAgIGlmIChMdmw0UHRFbnRyeVtJbmRleDRdLlVpbnQ2NCA9PSAwKSB7DQorICAgICAg ICBjb250aW51ZTsNCisgICAgICB9DQorICAgICAgTHZsM1B0RW50cnkgPSAoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkgKikoVUlOVE4pVlREXzY0QklUU19BRERSRVNTKEx2bDRQdEVudHJ5 W0luZGV4NF0uQml0cy5BZGRyZXNzTG8sIEx2bDRQdEVudHJ5W0luZGV4NF0uQml0cy5BZGRyZXNz SGkpOw0KKyAgICAgIGZvciAoSW5kZXgzID0gMDsgSW5kZXgzIDwgU0laRV80S0Ivc2l6ZW9mKFZU RF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZKTsgSW5kZXgzKyspIHsNCisgICAgICAgIGlmIChM dmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCAhPSAwKSB7DQorICAgICAgICAgIERFQlVHICgoREVC VUdfVkVSQk9TRSwiICAgTHZsM1B0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwgSW5kZXgz LCBMdmwzUHRFbnRyeVtJbmRleDNdLlVpbnQ2NCkpOw0KICAgICAgICAgfQ0KLSAgICAgICAgaWYg KEx2bDJQdEVudHJ5W0luZGV4Ml0uVWludDY0ID09IDApIHsNCisgICAgICAgIGlmIChMdmwzUHRF bnRyeVtJbmRleDNdLlVpbnQ2NCA9PSAwKSB7DQogICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAg ICAgfQ0KLSAgICAgICAgaWYgKEx2bDJQdEVudHJ5W0luZGV4Ml0uQml0cy5QYWdlU2l6ZSA9PSAw KSB7DQotICAgICAgICAgIEx2bDFQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VO VFJZICopKFVJTlROKVZURF82NEJJVFNfQUREUkVTUyhMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMu QWRkcmVzc0xvLCBMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVzc0hpKTsNCi0gICAgICAg ICAgZm9yIChJbmRleDEgPSAwOyBJbmRleDEgPCBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9M RVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDErKykgew0KLSAgICAgICAgICAgIGlmIChMdmwxUHRF bnRyeVtJbmRleDFdLlVpbnQ2NCAhPSAwKSB7DQotICAgICAgICAgICAgICBERUJVRyAoKERFQlVH X1ZFUkJPU0UsIiAgICAgICAgTHZsMVB0IEVudHJ5KDB4JTAzeCkgLSAweCUwMTZseFxuIiwgSW5k ZXgxLCBMdmwxUHRFbnRyeVtJbmRleDFdLlVpbnQ2NCkpOw0KKw0KKyAgICAgICAgTHZsMlB0RW50 cnkgPSAoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkgKikoVUlOVE4pVlREXzY0QklUU19B RERSRVNTKEx2bDNQdEVudHJ5W0luZGV4M10uQml0cy5BZGRyZXNzTG8sIEx2bDNQdEVudHJ5W0lu ZGV4M10uQml0cy5BZGRyZXNzSGkpOw0KKyAgICAgICAgZm9yIChJbmRleDIgPSAwOyBJbmRleDIg PCBTSVpFXzRLQi9zaXplb2YoVlREX1NFQ09ORF9MRVZFTF9QQUdJTkdfRU5UUlkpOyBJbmRleDIr Kykgew0KKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQgIT0gMCkgew0K KyAgICAgICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiICAgIEx2bDJQdCBFbnRyeSgweCUw M3gpIC0gMHglMDE2bHhcbiIsIEluZGV4MiwgTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQpKTsN CisgICAgICAgICAgfQ0KKyAgICAgICAgICBpZiAoTHZsMlB0RW50cnlbSW5kZXgyXS5VaW50NjQg PT0gMCkgew0KKyAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICB9DQorICAgICAgICAg IGlmIChMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuUGFnZVNpemUgPT0gMCkgew0KKyAgICAgICAg ICAgIEx2bDFQdEVudHJ5ID0gKFZURF9TRUNPTkRfTEVWRUxfUEFHSU5HX0VOVFJZICopKFVJTlRO KVZURF82NEJJVFNfQUREUkVTUyhMdmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVzc0xvLCBM dmwyUHRFbnRyeVtJbmRleDJdLkJpdHMuQWRkcmVzc0hpKTsNCisgICAgICAgICAgICBmb3IgKElu ZGV4MSA9IDA7IEluZGV4MSA8IFNJWkVfNEtCL3NpemVvZihWVERfU0VDT05EX0xFVkVMX1BBR0lO R19FTlRSWSk7IEluZGV4MSsrKSB7DQorICAgICAgICAgICAgICBpZiAoTHZsMVB0RW50cnlbSW5k ZXgxXS5VaW50NjQgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBERUJVRyAoKERFQlVHX1ZFUkJP U0UsIiAgICAgIEx2bDFQdCBFbnRyeSgweCUwM3gpIC0gMHglMDE2bHhcbiIsIEluZGV4MSwgTHZs MVB0RW50cnlbSW5kZXgxXS5VaW50NjQpKTsNCisgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg ICB9DQogICAgICAgICAgIH0NCiAgICAgICAgIH0NCkBAIC01MTAsNiArNjAwLDcgQEAgUGFnZUF0 dHJpYnV0ZVRvTGVuZ3RoICgKICAgQHBhcmFtW2luXSAgIFZ0ZEluZGV4ICAgICAgICAgICAgICAg ICBUaGUgaW5kZXggdXNlZCB0byBpZGVudGlmeSBhIFZUZCBlbmdpbmUuDQogICBAcGFyYW1baW5d ICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAgIFRoZSBzZWNvbmQgbGV2ZWwgcGFnaW5nIGVudHJ5 IGluIFZUZCB0YWJsZSBmb3IgdGhlIGRldmljZS4NCiAgIEBwYXJhbVtpbl0gICBBZGRyZXNzICAg ICAgICAgICAgICAgICAgVGhlIGFkZHJlc3MgdG8gYmUgY2hlY2tlZC4NCisgIEBwYXJhbVtpbl0g ICBJczVMZXZlbFBhZ2luZyAgICAgICAgICAgSWYgaXQgaXMgdGhlIDUgbGV2ZWwgcGFnaW5nLg0K ICAgQHBhcmFtW291dF0gIFBhZ2VBdHRyaWJ1dGVzICAgICAgICAgICBUaGUgcGFnZSBhdHRyaWJ1 dGUgb2YgdGhlIHBhZ2UgZW50cnkuDQogDQogICBAcmV0dXJuIFRoZSBwYWdlIGVudHJ5Lg0KQEAg LTUxOSw2ICs2MTAsNyBAQCBHZXRTZWNvbmRMZXZlbFBhZ2VUYWJsZUVudHJ5ICgKICAgSU4gIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgIFZ0ZEluZGV4LA0KICAgSU4gIFZURF9TRUNPTkRf TEVWRUxfUEFHSU5HX0VOVFJZICpTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LA0KICAgSU4gIFBIWVNJ Q0FMX0FERFJFU1MgICAgICAgICAgICAgIEFkZHJlc3MsDQorICBJTiAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgSXM1TGV2ZWxQYWdpbmcsDQogICBPVVQgUEFHRV9BVFRSSUJVVEUgICAg ICAgICAgICAgICAgKlBhZ2VBdHRyaWJ1dGUNCiAgICkNCiB7DQpAQCAtNTI2LDE3ICs2MTgsMzgg QEAgR2V0U2Vjb25kTGV2ZWxQYWdlVGFibGVFbnRyeSAoCiAgIFVJTlROICAgICAgICAgICAgICAg ICBJbmRleDI7DQogICBVSU5UTiAgICAgICAgICAgICAgICAgSW5kZXgzOw0KICAgVUlOVE4gICAg ICAgICAgICAgICAgIEluZGV4NDsNCisgIFVJTlROICAgICAgICAgICAgICAgICBJbmRleDU7DQog ICBVSU5UNjQgICAgICAgICAgICAgICAgKkwxUGFnZVRhYmxlOw0KICAgVUlOVDY0ICAgICAgICAg ICAgICAgICpMMlBhZ2VUYWJsZTsNCiAgIFVJTlQ2NCAgICAgICAgICAgICAgICAqTDNQYWdlVGFi bGU7DQogICBVSU5UNjQgICAgICAgICAgICAgICAgKkw0UGFnZVRhYmxlOw0KKyAgVUlOVDY0ICAg ICAgICAgICAgICAgICpMNVBhZ2VUYWJsZTsNCiANCisgIEluZGV4NSA9ICgoVUlOVE4pUlNoaWZ0 VTY0IChBZGRyZXNzLCA0OCkpICYgUEFHSU5HX1ZURF9JTkRFWF9NQVNLOw0KICAgSW5kZXg0ID0g KChVSU5UTilSU2hpZnRVNjQgKEFkZHJlc3MsIDM5KSkgJiBQQUdJTkdfVlREX0lOREVYX01BU0s7 DQogICBJbmRleDMgPSAoKFVJTlROKUFkZHJlc3MgPj4gMzApICYgUEFHSU5HX1ZURF9JTkRFWF9N QVNLOw0KICAgSW5kZXgyID0gKChVSU5UTilBZGRyZXNzID4+IDIxKSAmIFBBR0lOR19WVERfSU5E RVhfTUFTSzsNCiAgIEluZGV4MSA9ICgoVUlOVE4pQWRkcmVzcyA+PiAxMikgJiBQQUdJTkdfVlRE X0lOREVYX01BU0s7DQogDQotICBMNFBhZ2VUYWJsZSA9IChVSU5UNjQgKilTZWNvbmRMZXZlbFBh Z2luZ0VudHJ5Ow0KKyAgaWYgKElzNUxldmVsUGFnaW5nKSB7DQorICAgIEw1UGFnZVRhYmxlID0g KFVJTlQ2NCAqKVNlY29uZExldmVsUGFnaW5nRW50cnk7DQorICAgIGlmIChMNVBhZ2VUYWJsZVtJ bmRleDVdID09IDApIHsNCisgICAgICBMNVBhZ2VUYWJsZVtJbmRleDVdID0gKFVJTlQ2NCkoVUlO VE4pQWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0KKyAgICAgIGlmIChMNVBhZ2VUYWJsZVtJbmRleDVd ID09IDApIHsNCisgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsIiEhISEhISBBTExPQ0FURSBM Vkw1IFBBR0UgRkFJTCAoMHgleCkhISEhISFcbiIsIEluZGV4NCkpOw0KKyAgICAgICAgQVNTRVJU KEZBTFNFKTsNCisgICAgICAgICpQYWdlQXR0cmlidXRlID0gUGFnZU5vbmU7DQorICAgICAgICBy ZXR1cm4gTlVMTDsNCisgICAgICB9DQorICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZElu ZGV4LCAoVUlOVE4pTDVQYWdlVGFibGVbSW5kZXg1XSwgU0laRV80S0IpOw0KKyAgICAgIFNldFNl Y29uZExldmVsUGFnaW5nRW50cnlBdHRyaWJ1dGUgKChWVERfU0VDT05EX0xFVkVMX1BBR0lOR19F TlRSWSAqKSZMNVBhZ2VUYWJsZVtJbmRleDVdLCBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVE S0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQorICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0 ZEluZGV4LCAoVUlOVE4pJkw1UGFnZVRhYmxlW0luZGV4NV0sIHNpemVvZihMNVBhZ2VUYWJsZVtJ bmRleDVdKSk7DQorICAgIH0NCisgICAgTDRQYWdlVGFibGUgPSAoVUlOVDY0ICopKFVJTlROKShM NVBhZ2VUYWJsZVtJbmRleDVdICYgUEFHSU5HXzRLX0FERFJFU1NfTUFTS182NCk7DQorICB9IGVs c2Ugew0KKyAgICBMNFBhZ2VUYWJsZSA9IChVSU5UNjQgKilTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 Ow0KKyAgfQ0KKw0KICAgaWYgKEw0UGFnZVRhYmxlW0luZGV4NF0gPT0gMCkgew0KICAgICBMNFBh Z2VUYWJsZVtJbmRleDRdID0gKFVJTlQ2NCkoVUlOVE4pQWxsb2NhdGVaZXJvUGFnZXMgKDEpOw0K ICAgICBpZiAoTDRQYWdlVGFibGVbSW5kZXg0XSA9PSAwKSB7DQpAQCAtNzg1LDcgKzg5OCw3IEBA IFNldFNlY29uZExldmVsUGFnaW5nQXR0cmlidXRlICgKICAgfQ0KIA0KICAgd2hpbGUgKExlbmd0 aCAhPSAwKSB7DQotICAgIFBhZ2VFbnRyeSA9IEdldFNlY29uZExldmVsUGFnZVRhYmxlRW50cnkg KFZ0ZEluZGV4LCBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5LCBCYXNlQWRkcmVzcywgJlBhZ2VBdHRy aWJ1dGUpOw0KKyAgICBQYWdlRW50cnkgPSBHZXRTZWNvbmRMZXZlbFBhZ2VUYWJsZUVudHJ5IChW dGRJbmRleCwgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgQmFzZUFkZHJlc3MsIG1WdGRVbml0SW5m b3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nLCAmUGFnZUF0dHJpYnV0ZSk7DQogICAg IGlmIChQYWdlRW50cnkgPT0gTlVMTCkgew0KICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJQ YWdlRW50cnkgLSBOVUxMXG4iKSk7DQogICAgICAgcmV0dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsN CkBAIC05MTMsNyArMTAyNiw3IEBAIFNldEFjY2Vzc0F0dHJpYnV0ZSAoCiANCiAgIGlmIChFeHRD b250ZXh0RW50cnkgIT0gTlVMTCkgew0KICAgICBpZiAoRXh0Q29udGV4dEVudHJ5LT5CaXRzLlBy ZXNlbnQgPT0gMCkgew0KLSAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5IChWdGRJbmRleCwgMCk7DQorICAgICAgU2Vjb25kTGV2ZWxQYWdp bmdFbnRyeSA9IENyZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCAwLCBtVnRk VW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyk7DQogICAgICAgREVCVUcg KChERUJVR19WRVJCT1NFLCJTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IC0gMHgleCAoUyUwNHggQiUw MnggRCUwMnggRiUwMngpIE5ld1xuIiwgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgU2VnbWVudCwg U291cmNlSWQuQml0cy5CdXMsIFNvdXJjZUlkLkJpdHMuRGV2aWNlLCBTb3VyY2VJZC5CaXRzLkZ1 bmN0aW9uKSk7DQogICAgICAgUHQgPSAoVUlOVDY0KVJTaGlmdFU2NCAoKFVJTlQ2NCkoVUlOVE4p U2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSwgMTIpOw0KIA0KQEAgLTkyMiw3ICsxMDM1LDcgQEAgU2V0 QWNjZXNzQXR0cmlidXRlICgKICAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5Eb21haW5JZGVu dGlmaWVyID0gRG9tYWluSWRlbnRpZmllcjsNCiAgICAgICBFeHRDb250ZXh0RW50cnktPkJpdHMu UHJlc2VudCA9IDE7DQogICAgICAgRmx1c2hQYWdlVGFibGVNZW1vcnkgKFZ0ZEluZGV4LCAoVUlO VE4pRXh0Q29udGV4dEVudHJ5LCBzaXplb2YoKkV4dENvbnRleHRFbnRyeSkpOw0KLSAgICAgIER1 bXBEbWFyRXh0Q29udGV4dEVudHJ5VGFibGUgKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhd LkV4dFJvb3RFbnRyeVRhYmxlKTsNCisgICAgICBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxl IChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5FeHRSb290RW50cnlUYWJsZSwgbVZ0ZFVu aXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcpOw0KICAgICAgIG1WdGRVbml0 SW5mb3JtYXRpb25bVnRkSW5kZXhdLkhhc0RpcnR5Q29udGV4dCA9IFRSVUU7DQogICAgIH0gZWxz ZSB7DQogICAgICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IChWT0lEICopKFVJTlROKVZURF82 NEJJVFNfQUREUkVTUyhFeHRDb250ZXh0RW50cnktPkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNs YXRpb25Qb2ludGVyTG8sIEV4dENvbnRleHRFbnRyeS0+Qml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFu c2xhdGlvblBvaW50ZXJIaSk7DQpAQCAtOTMwLDcgKzEwNDMsNyBAQCBTZXRBY2Nlc3NBdHRyaWJ1 dGUgKAogICAgIH0NCiAgIH0gZWxzZSBpZiAoQ29udGV4dEVudHJ5ICE9IE5VTEwpIHsNCiAgICAg aWYgKENvbnRleHRFbnRyeS0+Qml0cy5QcmVzZW50ID09IDApIHsNCi0gICAgICBTZWNvbmRMZXZl bFBhZ2luZ0VudHJ5ID0gQ3JlYXRlU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSAoVnRkSW5kZXgsIDAp Ow0KKyAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSBDcmVhdGVTZWNvbmRMZXZlbFBhZ2lu Z0VudHJ5IChWdGRJbmRleCwgMCwgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2 ZWxQYWdpbmcpOw0KICAgICAgIERFQlVHICgoREVCVUdfVkVSQk9TRSwiU2Vjb25kTGV2ZWxQYWdp bmdFbnRyeSAtIDB4JXggKFMlMDR4IEIlMDJ4IEQlMDJ4IEYlMDJ4KSBOZXdcbiIsIFNlY29uZExl dmVsUGFnaW5nRW50cnksIFNlZ21lbnQsIFNvdXJjZUlkLkJpdHMuQnVzLCBTb3VyY2VJZC5CaXRz LkRldmljZSwgU291cmNlSWQuQml0cy5GdW5jdGlvbikpOw0KICAgICAgIFB0ID0gKFVJTlQ2NClS U2hpZnRVNjQgKChVSU5UNjQpKFVJTlROKVNlY29uZExldmVsUGFnaW5nRW50cnksIDEyKTsNCiAN CkBAIC05MzksNyArMTA1Miw3IEBAIFNldEFjY2Vzc0F0dHJpYnV0ZSAoCiAgICAgICBDb250ZXh0 RW50cnktPkJpdHMuRG9tYWluSWRlbnRpZmllciA9IERvbWFpbklkZW50aWZpZXI7DQogICAgICAg Q29udGV4dEVudHJ5LT5CaXRzLlByZXNlbnQgPSAxOw0KICAgICAgIEZsdXNoUGFnZVRhYmxlTWVt b3J5IChWdGRJbmRleCwgKFVJTlROKUNvbnRleHRFbnRyeSwgc2l6ZW9mKCpDb250ZXh0RW50cnkp KTsNCi0gICAgICBEdW1wRG1hckNvbnRleHRFbnRyeVRhYmxlIChtVnRkVW5pdEluZm9ybWF0aW9u W1Z0ZEluZGV4XS5Sb290RW50cnlUYWJsZSk7DQorICAgICAgRHVtcERtYXJDb250ZXh0RW50cnlU YWJsZSAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uUm9vdEVudHJ5VGFibGUsIG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5nKTsNCiAgICAgICBtVnRkVW5p dEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5IYXNEaXJ0eUNvbnRleHQgPSBUUlVFOw0KICAgICB9IGVs c2Ugew0KICAgICAgIFNlY29uZExldmVsUGFnaW5nRW50cnkgPSAoVk9JRCAqKShVSU5UTilWVERf NjRCSVRTX0FERFJFU1MoQ29udGV4dEVudHJ5LT5CaXRzLlNlY29uZExldmVsUGFnZVRyYW5zbGF0 aW9uUG9pbnRlckxvLCBDb250ZXh0RW50cnktPkJpdHMuU2Vjb25kTGV2ZWxQYWdlVHJhbnNsYXRp b25Qb2ludGVySGkpOw0KQEAgLTEwMDAsNyArMTExMyw3IEBAIEFsd2F5c0VuYWJsZVBhZ2VBdHRy aWJ1dGUgKAogDQogICBpZiAobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uRml4ZWRTZWNv bmRMZXZlbFBhZ2luZ0VudHJ5ID09IDApIHsNCiAgICAgREVCVUcoKERFQlVHX0lORk8sICJDcmVh dGVTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5IC0gJWRcbiIsIFZ0ZEluZGV4KSk7DQotICAgIG1WdGRV bml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkZpeGVkU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENy ZWF0ZVNlY29uZExldmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCBFREtJSV9JT01NVV9BQ0NFU1Nf UkVBRCB8IEVES0lJX0lPTU1VX0FDQ0VTU19XUklURSk7DQorICAgIG1WdGRVbml0SW5mb3JtYXRp b25bVnRkSW5kZXhdLkZpeGVkU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IENyZWF0ZVNlY29uZExl dmVsUGFnaW5nRW50cnkgKFZ0ZEluZGV4LCBFREtJSV9JT01NVV9BQ0NFU1NfUkVBRCB8IEVES0lJ X0lPTU1VX0FDQ0VTU19XUklURSwgbVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uSXM1TGV2 ZWxQYWdpbmcpOw0KICAgfQ0KIA0KICAgU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeSA9IG1WdGRVbml0 SW5mb3JtYXRpb25bVnRkSW5kZXhdLkZpeGVkU2Vjb25kTGV2ZWxQYWdpbmdFbnRyeTsNCmRpZmYg LS1naXQgYS9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0dXJlL1ZUZC9JbnRlbFZU ZER4ZS9UcmFuc2xhdGlvblRhYmxlRXguYyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtn L0ZlYXR1cmUvVlRkL0ludGVsVlRkRHhlL1RyYW5zbGF0aW9uVGFibGVFeC5jCmluZGV4IDBlZDll M2NhLi5hNGQ2NmJjNyAxMDA2NDQKLS0tIGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cv RmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRpb25UYWJsZUV4LmMKKysrIGIvU2lsaWNv bi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQvSW50ZWxWVGREeGUvVHJhbnNsYXRp b25UYWJsZUV4LmMKQEAgLTc4LDExICs3OCwyOCBAQCBDcmVhdGVFeHRDb250ZXh0RW50cnkgKAog DQogICAgIERFQlVHICgoREVCVUdfSU5GTywiRE9NQUlOOiBTJTA0eCwgQiUwMnggRCUwMnggRiUw MnhcbiIsIG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLlNlZ21lbnQsIFNvdXJjZUlkLkJp dHMuQnVzLCBTb3VyY2VJZC5CaXRzLkRldmljZSwgU291cmNlSWQuQml0cy5GdW5jdGlvbikpOw0K IA0KLSAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLkNhcFJlZy5CaXRzLlNB R0FXICYgQklUMikgPT0gMCkgew0KLSAgICAgIERFQlVHKChERUJVR19FUlJPUiwgIiEhISEgNC1s ZXZlbCBwYWdlLXRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQgb24gVlREICVkICEhISFcbiIsIFZ0ZElu ZGV4KSk7DQorICAgIG1WdGRVbml0SW5mb3JtYXRpb25bVnRkSW5kZXhdLklzNUxldmVsUGFnaW5n ID0gRkFMU0U7DQorICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltWdGRJbmRleF0uQ2FwUmVn LkJpdHMuU0FHQVcgJiBCSVQzKSAhPSAwKSB7DQorICAgICAgbVZ0ZFVuaXRJbmZvcm1hdGlvbltW dGRJbmRleF0uSXM1TGV2ZWxQYWdpbmcgPSBUUlVFOw0KKyAgICAgIGlmICgobUFjcGlEbWFyVGFi bGUtPkhvc3RBZGRyZXNzV2lkdGggPD0gNDgpICYmDQorICAgICAgICAgICgobVZ0ZFVuaXRJbmZv cm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQyKSAhPSAwKSkgew0KKyAg ICAgICAgICBtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVMZXZlbFBhZ2luZyA9IEZB TFNFOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfSBlbHNlIGlmICgobVZ0ZFVuaXRJbmZv cm1hdGlvbltWdGRJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBCSVQyKSA9PSAwKSB7DQorICAg ICAgREVCVUcoKERFQlVHX0VSUk9SLCAiISEhISBQYWdlLXRhYmxlIHR5cGUgaXMgbm90IHN1cHBv cnRlZCBvbiBWVEQgJWQgISEhIVxuIiwgVnRkSW5kZXgpKTsNCiAgICAgICByZXR1cm4gRUZJX1VO U1VQUE9SVEVEOw0KICAgICB9DQotICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lk dGggPSAweDI7DQorDQorICAgIGlmIChtVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5JczVM ZXZlbFBhZ2luZykgew0KKyAgICAgIEV4dENvbnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGgg PSAweDM7DQorICAgICAgREVCVUcoKERFQlVHX0lORk8sICJVc2luZyA1LWxldmVsIHBhZ2UtdGFi bGUgb24gVlREICVkXG4iLCBWdGRJbmRleCkpOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIEV4dENv bnRleHRFbnRyeS0+Qml0cy5BZGRyZXNzV2lkdGggPSAweDI7DQorICAgICAgREVCVUcoKERFQlVH X0lORk8sICJVc2luZyA0LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLCBWdGRJbmRleCkp Ow0KKyAgICB9DQorDQorDQogICB9DQogDQogICBGbHVzaFBhZ2VUYWJsZU1lbW9yeSAoVnRkSW5k ZXgsIChVSU5UTiltVnRkVW5pdEluZm9ybWF0aW9uW1Z0ZEluZGV4XS5FeHRSb290RW50cnlUYWJs ZSwgRUZJX1BBR0VTX1RPX1NJWkUoRW50cnlUYWJsZVBhZ2VzKSk7DQpAQCAtOTMsMTEgKzExMCwx MyBAQCBDcmVhdGVFeHRDb250ZXh0RW50cnkgKAogLyoqDQogICBEdW1wIERNQVIgZXh0ZW5kZWQg Y29udGV4dCBlbnRyeSB0YWJsZS4NCiANCi0gIEBwYXJhbVtpbl0gIEV4dFJvb3RFbnRyeSBETUFS IGV4dGVuZGVkIHJvb3QgZW50cnkuDQorICBAcGFyYW1baW5dICBFeHRSb290RW50cnkgICAgRE1B UiBleHRlbmRlZCByb290IGVudHJ5Lg0KKyAgQHBhcmFtW2luXSAgSXM1TGV2ZWxQYWdpbmcgIElm IGl0IGlzIHRoZSA1IGxldmVsIHBhZ2luZy4NCiAqKi8NCiBWT0lEDQogRHVtcERtYXJFeHRDb250 ZXh0RW50cnlUYWJsZSAoDQotICBJTiBWVERfRVhUX1JPT1RfRU5UUlkgKkV4dFJvb3RFbnRyeQ0K KyAgSU4gVlREX0VYVF9ST09UX0VOVFJZICpFeHRSb290RW50cnksDQorICBJTiBCT09MRUFOIElz NUxldmVsUGFnaW5nDQogICApDQogew0KICAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4Ow0K QEAgLTEyNyw3ICsxNDYsNyBAQCBEdW1wRG1hckV4dENvbnRleHRFbnRyeVRhYmxlICgKICAgICAg IGlmIChFeHRDb250ZXh0RW50cnlbSW5kZXgyXS5CaXRzLlByZXNlbnQgPT0gMCkgew0KICAgICAg ICAgY29udGludWU7DQogICAgICAgfQ0KLSAgICAgIER1bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5 ICgoVk9JRCAqKShVSU5UTilWVERfNjRCSVRTX0FERFJFU1MoRXh0Q29udGV4dEVudHJ5W0luZGV4 Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJMbywgRXh0Q29udGV4dEVu dHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSkpOw0K KyAgICAgIER1bXBTZWNvbmRMZXZlbFBhZ2luZ0VudHJ5ICgoVk9JRCAqKShVSU5UTilWVERfNjRC SVRTX0FERFJFU1MoRXh0Q29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRMZXZlbFBhZ2VU cmFuc2xhdGlvblBvaW50ZXJMbywgRXh0Q29udGV4dEVudHJ5W0luZGV4Ml0uQml0cy5TZWNvbmRM ZXZlbFBhZ2VUcmFuc2xhdGlvblBvaW50ZXJIaSksIElzNUxldmVsUGFnaW5nKTsNCiAgICAgfQ0K IA0KICAgICBpZiAoRXh0Um9vdEVudHJ5W0luZGV4XS5CaXRzLlVwcGVyUHJlc2VudCA9PSAwKSB7 DQpkaWZmIC0tZ2l0IGEvU2lsaWNvbi9JbnRlbC9JbnRlbFNpbGljb25Qa2cvRmVhdHVyZS9WVGQv SW50ZWxWVGREeGUvVnRkUmVnLmMgYi9TaWxpY29uL0ludGVsL0ludGVsU2lsaWNvblBrZy9GZWF0 dXJlL1ZUZC9JbnRlbFZUZER4ZS9WdGRSZWcuYwppbmRleCA2OTk2MzliYS4uNjg2ZDIzNWYgMTAw NjQ0Ci0tLSBhL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1cmUvVlRkL0ludGVs VlRkRHhlL1Z0ZFJlZy5jCisrKyBiL1NpbGljb24vSW50ZWwvSW50ZWxTaWxpY29uUGtnL0ZlYXR1 cmUvVlRkL0ludGVsVlRkRHhlL1Z0ZFJlZy5jCkBAIC0xNzQsOCArMTc0LDE0IEBAIFByZXBhcmVW dGRDb25maWcgKAogICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJp dHMuU0xMUFMgJiBCSVQwKSA9PSAwKSB7DQogICAgICAgREVCVUcoKERFQlVHX1dBUk4sICIhISEh IDJNQiBzdXBlciBwYWdlIGlzIG5vdCBzdXBwb3J0ZWQgb24gVlREICVkICEhISFcbiIsIEluZGV4 KSk7DQogICAgIH0NCi0gICAgaWYgKChtVnRkVW5pdEluZm9ybWF0aW9uW0luZGV4XS5DYXBSZWcu Qml0cy5TQUdBVyAmIEJJVDIpID09IDApIHsNCi0gICAgICBERUJVRygoREVCVUdfRVJST1IsICIh ISEhIDQtbGV2ZWwgcGFnZS10YWJsZSBpcyBub3Qgc3VwcG9ydGVkIG9uIFZURCAlZCAhISEhXG4i LCBJbmRleCkpOw0KKyAgICBpZiAoKG1WdGRVbml0SW5mb3JtYXRpb25bSW5kZXhdLkNhcFJlZy5C aXRzLlNBR0FXICYgQklUMykgIT0gMCkgew0KKyAgICAgIERFQlVHKChERUJVR19JTkZPLCAiU3Vw cG9ydCA1LWxldmVsIHBhZ2UtdGFibGUgb24gVlREICVkXG4iLCBJbmRleCkpOw0KKyAgICB9DQor ICAgIGlmICgobVZ0ZFVuaXRJbmZvcm1hdGlvbltJbmRleF0uQ2FwUmVnLkJpdHMuU0FHQVcgJiBC SVQyKSAhPSAwKSB7DQorICAgICAgREVCVUcoKERFQlVHX0lORk8sICJTdXBwb3J0IDQtbGV2ZWwg cGFnZS10YWJsZSBvbiBWVEQgJWRcbiIsIEluZGV4KSk7DQorICAgIH0NCisgICAgaWYgKChtVnRk VW5pdEluZm9ybWF0aW9uW0luZGV4XS5DYXBSZWcuQml0cy5TQUdBVyAmIChCSVQzIHwgQklUMikp ID09IDApIHsNCisgICAgICBERUJVRygoREVCVUdfRVJST1IsICIhISEhIFBhZ2UtdGFibGUgdHlw ZSAweCVYIGlzIG5vdCBzdXBwb3J0ZWQgb24gVlREICVkICEhISFcbiIsIEluZGV4LCBtVnRkVW5p dEluZm9ybWF0aW9uW0luZGV4XS5DYXBSZWcuQml0cy5TQUdBVykpOw0KICAgICAgIHJldHVybiA7 DQogICAgIH0NCiANCi0tIAoyLjE2LjIud2luZG93cy4xCgo= --_002_CY4PR11MB192872D33AB3E9572141FD16E1F30CY4PR11MB1928namp_--