From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 6F0027803CC for ; Wed, 5 Jun 2024 17:32:35 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=AIqFPUt0n0PHEQLkojXwd1LxWbiYgeY2Qavve2+1hyQ=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:nodisclaimer:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20240206; t=1717608755; v=1; b=Z4Ch1UsgqBjXHJ1NMknUsqe49/WIbbYC2a0ms5Rjg9Yp5gD2V/OCiwklVgOBIMt+E32BynAR mHGpXCTYTuCf5WB+LcXrOrbRrdOkp3h0DfRdWkkvpLmJl3bL3RAAiuZKDgfcKoIGhyRxoNAfOkF akaJSmOfAkbgscuw33kcFwnrP0hN+skUZA6CMdi/SkT1ynC1wKfdgWpbvDMXyzwMAymFwFJI9RP gcQseWUujCO1/CgpU2N8iNVBjpGGA4PEXrcZ88E/EMm2d7MR8Bv/DP3ZJVh1ZKm8ZVl6K3EZ0Gm 9L2MbakKCcv2xaK3bpaICAApxT8Ozq1M8/tSMJNkkkfOw== X-Received: by 127.0.0.2 with SMTP id nG3WYY7687511xs7ClAmvOsk; Wed, 05 Jun 2024 10:32:33 -0700 X-Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.41]) by mx.groups.io with SMTP id smtpd.web11.22264.1717608747256661385 for ; Wed, 05 Jun 2024 10:32:28 -0700 X-Received: from AS8PR08MB7791.eurprd08.prod.outlook.com (2603:10a6:20b:52d::6) by GV1PR08MB11001.eurprd08.prod.outlook.com (2603:10a6:150:1f2::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.31; Wed, 5 Jun 2024 17:32:21 +0000 X-Received: from AS8PR08MB7791.eurprd08.prod.outlook.com ([fe80::7cdd:d5d6:af6:81ca]) by AS8PR08MB7791.eurprd08.prod.outlook.com ([fe80::7cdd:d5d6:af6:81ca%7]) with mapi id 15.20.7633.018; Wed, 5 Jun 2024 17:32:21 +0000 From: "Sunny Wang" To: "devel@edk2.groups.io" , Prachotan Bathi CC: G Edhaya Chandran , Barton Gao , Carolyn Gjertsen , Samer El-Haj-Mahmoud , Eric Jin , Arvin Chen , Supreeth Venkatesh , Sunny Wang Subject: Re: [edk2-devel] [PATCH v1 1/1] EDK2-Test: Bug 4244 - SCT improvement - Print out the PCIe device path fo.. Thread-Topic: [edk2-devel] [PATCH v1 1/1] EDK2-Test: Bug 4244 - SCT improvement - Print out the PCIe device path fo.. Thread-Index: AQHatfwiJrxtbaLhZ0K4iAU/qof7qrG5cFgQ Date: Wed, 5 Jun 2024 17:32:20 +0000 Message-ID: References: <20240603182749.246451-1-prachotan.bathi@arm.com> <20240603182749.246451-2-prachotan.bathi@arm.com> In-Reply-To: <20240603182749.246451-2-prachotan.bathi@arm.com> Accept-Language: en-US X-Mentions: Prachotan.Bathi@arm.com X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 08BE510252135A4C848701E8C4CB929C.0 x-checkrecipientchecked: true x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AS8PR08MB7791:EE_|GV1PR08MB11001:EE_ x-ms-office365-filtering-correlation-id: 55565e06-3c78-4d42-9078-08dc85857464 nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: =?utf-8?B?WlpSWDZsdWFHaURGZUpua09XcXQ4R1VQc3VZa3RVU3AxejNHODA2Vko5bFZ1?= =?utf-8?B?SFU0ckxPeEpUNmhRcHg1R3dyRStpUUpvWlZKV2JqNzJSdXBHUENPaGJnV2JS?= =?utf-8?B?WjExM25RR0N6VGFXekk1OFRud1djbkQ4VlVWYVBBUzRUZjU3dCs4ell5NjBJ?= =?utf-8?B?U1FpQzRLS0VPU1NBWjdNRTI1UzduYzdBd3dPQkhTYzBTTTUvZEhNNFhLTnBJ?= =?utf-8?B?MXlRMTJxZG9GaWd4SHFKQVA5QUp1TEd2WFhUckRjTHVuYnR5K25qKys3Ujli?= =?utf-8?B?RmtjWU82Zmd1OEc2RkxaamxIbFhVT0h5YXh1eTE3Q203MkNDSStjVUhnSEV5?= =?utf-8?B?dUtqS0FqY0NuQ0FOajB4TTZ6OUJldHJUZ0djNFQ5ak5qYUwrLzJRMFRuKzJh?= =?utf-8?B?L1VXRDBpOUIvTUQ0WDZwVmZUdGtOOWZMWWZucTRoYjRxMXBNVTZMdVFralFP?= =?utf-8?B?Q0g5S3RLTXoyRk1SVlBWc20yQzNtc1RBODQvWVBKMWRYekhkTWdZTkVFdCtm?= =?utf-8?B?ZjhQaWg5Qk1jdVlCdHMzZXJVNWd1U3YrTHBDQy9qd1VmdWI5WDNPOGZFSEVF?= =?utf-8?B?UE5FUVJrWUZLN0dRbkhERStGZmxVV0Y1VlNMcStUUkx4dVpMYWR0Nlo0M0lu?= =?utf-8?B?dFlRcXRJaXBsdVVxbmVzV0YvYnA1bHhDclpPaDhuMmxsNGVrK0Vud204Z2RY?= =?utf-8?B?RzJ4OHJiMzUxWVYvWUMvYTZleFk1SG5kalJIVWh0RUhraXVUcE1ic2FDaHpY?= =?utf-8?B?d1RWZW5NMW5lQ3ErRkJwcjRKQ2d4TGdPbEJFaVdoSGsrVENDcy94MkNhNE5z?= =?utf-8?B?RW9wajdkblcwcFBwbmpYKy9DMEJJQ1JEUVpmVDBNZHkyV3BpM0E5UUI5K1V3?= =?utf-8?B?UWRPelhnN3RpWnJKZVN4V3k1bDdvdE1SdVNEc2tIeW1Fa1Q2UUZGWlRUenZL?= =?utf-8?B?VTRnZVk2REVzZUtIbm5zRG51RGJQbk4yeW5yZjVZUWc5WUk4SkwwUWNPVmN5?= =?utf-8?B?UjNhanhJbmpMcDFqSVpMeExQNHl2YUdSOFNtT09nNU5DRVh2eUNFSnFoRU9o?= =?utf-8?B?Z0RhNlFncTJxUnNBZUw1VzdhNEhsUXdpYzZmbTFwVFBoYWRCdkVieUdUcnpP?= =?utf-8?B?bDdBNVhqek9wVGNURkwvZHEvclZkLzhHZ1V4b3MveldDVytHbTFQcitWSzR5?= =?utf-8?B?Zk5ZMjdlTWZyZmJEWVM5WVptREp6MWNCVDJhRUFneklsbEhUSWlTYjgxeFF1?= =?utf-8?B?NVZHS1ZvdEtRdmpPeXVKUnRFWUJucVduM3BQNktIemlEd2lCS3FQRlJSeFYx?= =?utf-8?B?NVgrbzJLcytoVjFHdEg1cFUvbG9kclk4QkJEaUhIMEozeXBmUmNkcUpyY3dG?= =?utf-8?B?NXo1QW05cVkwRmlWNEU0QThoY0RzRENCTXJla05JVTZmMHZ6R2N0UFl3Wmor?= =?utf-8?B?aDJKTTBJcWYweVdLVVJmOWZVWjNNVXFMQVY2bys4R05aaTdPQ0RkMkpBVC9T?= =?utf-8?B?a1V2MlBhNUxuRlhKL0R1ZzBQTVNGQmtsdmRudnpWdmlaTzR5MnA0azhORTRn?= =?utf-8?B?dXI2aWVYVlpnamhXNnZNd0ladmRRakhMOUw5c0EvdXNxNHZKb2EvTFFRZU9n?= =?utf-8?B?eEhWckFrWGhEMXRzSzk1QnN4blUvUDZUVEgxd1FIVzVBU3ZxY3lSaGtjZ3Ux?= =?utf-8?B?NUdBRkU3b0JDZ3A0MDJOdEVzeFUzYUdtd1JrUGtCNzdacXhzK0hQY0F6SGJU?= =?utf-8?Q?vjr1Hzy5Kxk4SC8PDA=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MUdJaTdWcHV2Z2hRYVZrMndYRXBMTnUxOU8yblhIb0tXandsTnRTSit4OFVO?= =?utf-8?B?TkpKL0pYVjVNSUxYcjFFOFFGU0ZvYk1STTJBdlJIcFJCdXdRK0JOQnhFQjU2?= =?utf-8?B?K1JvK0IrcldZVmdGczcrYWVqcGkxSEQwek4rMUdYd1orcStCMXBIVXdEdU5M?= =?utf-8?B?WjVjVGtWYksxYkVRdTVJRWdDR2xUbjNHTy92c3JpS2F4TkFpWkk4NHFmdVcw?= =?utf-8?B?VEJ3NVl6QXVVeVJOd2s3dFYrUHU3bWRRNlhtcnN0cmNvSWhjUXkwZjl4cVNq?= =?utf-8?B?eVNObFNJKy93RVd0eFpNU05MT2s1RDJiSFplSTd1ay93SlVUS1JUay9MSVNp?= =?utf-8?B?UGlNQmF6ZG02T3ZRdkpSM1dzUVVEei8xRjlIQ2lMa1ZjRmJkRk94NXhUNzJ2?= =?utf-8?B?T2gvaFNVS2N5cVkyTzNmc2kyNDZ5MkNoblR0TERIWGJFNTUzOU11OG9JL2hE?= =?utf-8?B?ZEdoM0E5U1F5SWFGVUF1bGJ3aElkMSs2eTAwWTB0a2FRZERYRURhWVVyRHdx?= =?utf-8?B?MjdBaTdpMEhuRXJ6MVgwUld0Q256Q2d5U1dqc2dObUpDcHRDcWpPYkRBSmpE?= =?utf-8?B?UlptYWtRM0dWdFpkdmoyelhmV1M0QU9yYVRIazlKbjJleDV5ZXFWdXpOSXRh?= =?utf-8?B?bVdScDE2bEtOMlBRZVN4S0NiNFVWbE9LUlNGZkNCWkFyeGlTeVVrVFRwOURX?= =?utf-8?B?azh1ZEltV3NWUlVkM3pKKzY5N3hwci95UVd6bVJ6RlVKVUdjaGUzYkFUTmZr?= =?utf-8?B?RVQvR2YzTFVLZHlxSVpua3BFNWtHZnNCeVpVOGNqNzlNU1AxYkhSRXBPc1pu?= =?utf-8?B?T1oxcXJqWlI2KzJnR2xEeW1jRlU3cGZOWVpNNHZmTEcrUWJ5ZDFFWlg3VlhU?= =?utf-8?B?Tm1iTFB0SHQzSjZzS09pb3ptYnNjUXZCOFduZit5d2hPRHRrQlVKVTlvZ243?= =?utf-8?B?MThzMmp5MzZJZ3l4d01GYW1JeU42MVpCdHRYTkN3TGhubHRqV2hoSjk3Y1Fl?= =?utf-8?B?RmRNSFBwdzhvM09HeTExdU9xVEFiNmNWRXkzQTAxVk5qby9wTU5XR0VKYlZI?= =?utf-8?B?di9zckpSOUkwSnlHbWZlVTUzWXp4akpkdkpkL0FuTUdTVDgyOXJOVm02RFFh?= =?utf-8?B?bGFFb2dRcWh0dFdXZ3hwNDU1clk4dk1iM3RuMkMxZnNkK0JvbU9FUjkwb0l4?= =?utf-8?B?L25NQXB6M0JuNG1nU0hGbjZ1MW1MemprTXpsY05jSnUyU0o1bzYwU2FDU2Qz?= =?utf-8?B?VW1zSGRNLzJ3VGp0ZmpTdlMxWndFTWFpUml0SXNWTmNHVmVyTTNDN2t0R3ND?= =?utf-8?B?N2RvZGRURnNybU5tL3VPaXpwNVZFd0ZCS0dYZWlJSm5mRTBQN2Y5MWc3TVVD?= =?utf-8?B?L3FEY3JqblJQb1NYRGg2QVNOUHF1a2hDb09zL3dKK3BEbHUxcS9mNUk1Ujc1?= =?utf-8?B?Q0tscHJXWDJGM25tWUl3Sm0wTUZ1ZnZuSllZT3JDQ3F5TUFjOGFaL0JZL0ho?= =?utf-8?B?S2F5OGtMVnIvMXFhM1Y5Q1VKKzRvNkxsRnNnMGZwYWxLQUZFdzZoUW14eWRT?= =?utf-8?B?MmlXNWlIeEQ5UFppbEdRR0RURUNQMllzditPTUY2bUNGSEptMXZVZ0lEbXox?= =?utf-8?B?NWEvYmFxMTNTRWVEWVg3eVpkYlQwNUs0dGp3ZFJYQ1E5Qm9XT05oVmdGcENo?= =?utf-8?B?Ujd2N2h0SCtjRXp4SW81d3MxdmFhWjROcmJPWVczdlJmWDBzRi9XTXpsNmp1?= =?utf-8?B?bEJleHBHOEhCbnNJdW1xTjFnSHVoTzFnUjdlbW82TE9hZzMwaDVuQmJnM3dH?= =?utf-8?B?WVVvTmdobXM5ajhkaE9SYnk2OG0wQ2VYVmhCOE15QmdjcXltM2xDVjYreVBU?= =?utf-8?B?ZGxXcWZ4dkRIc1EyOEYrK3JTYmJFRmhGVjRKV0VaS0Z2TW1yQWdMOGNlZU4r?= =?utf-8?B?QXNsOUhhQ01qYW1YVG1nUW93Q1JGL0pVQnBNalhRR2xXNWFLV2NyQ0M3TVdZ?= =?utf-8?B?bXpIV2NmOGRKODJ5cXYvelJVcGs4bHBIR3R2Z2RNeUwvTnAwVTE1UkNhZnRK?= =?utf-8?B?NFltVWR2cmtJNXlFb3R1eDczYzZKZWhlVTF5MVpwcjEwTEl2YjFvNzVnWGk2?= =?utf-8?Q?G8GI=3D?= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR08MB7791.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55565e06-3c78-4d42-9078-08dc85857464 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2024 17:32:20.9642 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WTT7QI8g1EeL58TwUioPHLIvRXWjPCFCYdYUaczpSsgn4c1Ky5imaRHrl0AA2/izFPHK1+EQCaSbvp/kCbcBIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB11001 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Wed, 05 Jun 2024 10:32:28 -0700 Resent-From: Sunny.Wang@arm.com Reply-To: devel@edk2.groups.io,Sunny.Wang@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: J7PhIUuDlp62gtYcrabPWkGDx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=Z4Ch1Usg; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io VGhhbmtzIGZvciB3b3JraW5nIG9uIHRoaXMsIEBQcmFjaG90YW4gQmF0aGkNCkkgZGlyZWN0bHkg cmV2aWV3ZWQgYW5kIGFkZGVkIGNvbW1lbnRzIG9uIHB1bGwgcmVxdWVzdC4gaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyLXRlc3QvcHVsbC85Ng0KDQpCZXN0IFJlZ2FyZHMsDQpTdW5u eQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMu aW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgUHJhY2hvdGFuIEJhdGhpIHZp YSBncm91cHMuaW8NClNlbnQ6IE1vbmRheSwgSnVuZSAzLCAyMDI0IDE6MjggUE0NClRvOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IEcgRWRoYXlhIENoYW5kcmFuIDxFZGhheWEuQ2hhbmRyYW5A YXJtLmNvbT47IEJhcnRvbiBHYW8gPGdhb2ppZUBieW9zb2Z0LmNvbS5jbj47IENhcm9seW4gR2pl cnRzZW4gPENhcm9seW4uR2plcnRzZW5AYW1kLmNvbT47IFNhbWVyIEVsLUhhai1NYWhtb3VkIDxT YW1lci5FbC1IYWotTWFobW91ZEBhcm0uY29tPjsgRXJpYyBKaW4gPGVyaWMuamluQGludGVsLmNv bT47IEFydmluIENoZW4gPGFydmlueC5jaGVuQGludGVsLmNvbT47IFN1cHJlZXRoIFZlbmthdGVz aCA8U3VwcmVldGguVmVua2F0ZXNoQGFtZC5jb20+DQpTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BB VENIIHYxIDEvMV0gRURLMi1UZXN0OiBCdWcgNDI0NCAtIFNDVCBpbXByb3ZlbWVudCAtIFByaW50 IG91dCB0aGUgUENJZSBkZXZpY2UgcGF0aCBmby4uDQoNClRlc3RzIE1vZGlmaWVkOg0KDQpBZGFw dGVySW5mb0JCVGVzdENvbmZvcm1hbmNlDQpDb21wb25lbnROYW1lMkJCVGVzdENvbmZvcm1hbmNl DQpISUlDb25maWdBY2Nlc3NCQlRlc3RDb25mb3JtYW5jZQ0KUHhlQmFzZUNvZGVCQlRlc3RDb25m b3JtYW5jZQ0KU2ltcGxlTmV0d29ya0JCVGVzdENvbmZvcm1hbmNlDQoNClVFRkktU0NUDQpDYzog RyBFZGhheWEgQ2hhbmRyYW4gPEVkaGF5YS5DaGFuZHJhbkBhcm0uY29tPg0KQ2M6IEJhcnRvbiBH YW8gPGdhb2ppZUBieW9zb2Z0LmNvbS5jbj4NCkNjOiBDYXJvbHluIEdqZXJ0c2VuIDxDYXJvbHlu LkdqZXJ0c2VuQGFtZC5jb20+DQpDYzogU2FtZXIgRWwtSGFqLU1haG1vdWQgPFNhbWVyLkVsLUhh ai1NYWhtb3VkQGFybS5jb20+DQpDYzogRXJpYyBKaW4gPGVyaWMuamluQGludGVsLmNvbT4NCkNj OiBBcnZpbiBDaGVuIDxhcnZpbnguY2hlbkBpbnRlbC5jb20+DQpDYzogU3VwcmVldGggVmVua2F0 ZXNoIDxTdXByZWV0aC5WZW5rYXRlc2hAYW1kLmNvbT4NCg0KU2lnbmVkLW9mZi1ieTogUHJhY2hv dGFuIEJhdGhpIDxwcmFjaG90YW4uYmF0aGlAYXJtLmNvbT4NCi0tLQ0KIHVlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRh cHRlckluZm9Qcm90b2NvbEJCVGVzdC5pbmYgICAgICAgICAgfCAgICAyICsNCiB1ZWZpLXNjdC9T Y3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0 L1B4ZUJCVGVzdC5pbmYgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQ0KIHVlZmkt c2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNr Qm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0LmluZiAgICAgICAgICAgICAgfCAgICA0ICstDQog dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0Js YWNrQm94VGVzdC9BZGFwdGVySW5mb0JCVGVzdE1haW4uaCAgICAgICAgICAgICAgICB8ICAgMTcg Ky0NCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmln QWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdBY2Nlc3NCQlRlc3RNYWluLmggICAgICAgIHwg ICAgNiArDQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJh c2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uaCAgICAgICAgICAgICAg ICB8ICAgIDYgKw0KIHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9T aW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0TWFpbi5oICAgICAg ICAgICAgfCAgICA2ICsNCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2Uu YyAgICAgICAgIHwgICA2MyArLQ0KIHVlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Q cm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmMg ICAgICAgICAgICAgICAgfCAgIDk2ICsrDQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv RUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNz QkJUZXN0Q29uZm9ybWFuY2UuYyB8ICAgNDggKy0NCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2Uv VUVGSS9FRkkvUHJvdG9jb2wvSElJQ29uZmlnQWNjZXNzL0JsYWNrQm94VGVzdC9ISUlDb25maWdB Y2Nlc3NCQlRlc3RNYWluLmMgICAgICAgIHwgICA2NyArLQ0KIHVlZmktc2N0L1NjdFBrZy9UZXN0 Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQmFzZUNv ZGVCQlRlc3RDb25mb3JtYW5jZS5jICAgICAgICAgfCAgMzA1ICsrKysrLQ0KIHVlZmktc2N0L1Nj dFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3Qv UHhlQmFzZUNvZGVCQlRlc3RNYWluLmMgICAgICAgICAgICAgICAgfCAxMTU4ICsrKysrKysrKy0t LS0tLS0tLS0tDQogdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1Np bXBsZU5ldHdvcmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3RDb25mb3JtYW5jZS5j ICAgICB8ICAyNTggKysrKy0NCiB1ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJv dG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdE1haW4u YyAgICAgICAgICAgIHwgICA5NiArKw0KIDE1IGZpbGVzIGNoYW5nZWQsIDE0NTEgaW5zZXJ0aW9u cygrKSwgNjg0IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rl c3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVy SW5mb1Byb3RvY29sQkJUZXN0LmluZiBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9Qcm90b2NvbEJC VGVzdC5pbmYNCmluZGV4IGIzYmY5OTQ0MDcwNS4uNDY0MDI5ZWMxMGNlIDEwMDY0NA0KLS0tIGEv dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0Js YWNrQm94VGVzdC9BZGFwdGVySW5mb1Byb3RvY29sQkJUZXN0LmluZg0KKysrIGIvdWVmaS1zY3Qv U2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVz dC9BZGFwdGVySW5mb1Byb3RvY29sQkJUZXN0LmluZg0KQEAgLTQ5LDMgKzQ5LDUgQEAgW0xpYnJh cnlDbGFzc2VzXQ0KICAgRWZpVGVzdExpYg0KDQogW1Byb3RvY29sc10NCisgIGdFZmlBZGFwdGVy SW5mb3JtYXRpb25Qcm90b2NvbEd1aWQNCisgIGdCbGFja0JveEVmaURldmljZVBhdGhQcm90b2Nv bEd1aWQNClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL3VlZmktc2N0 L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRl c3QvUHhlQkJUZXN0LmluZiBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90 b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQkJUZXN0LmluZg0KaW5kZXggNDEzNjdj ZTQ5NmIzLi4yOTM5MmNhODNkY2EgMTAwNjQ0DQotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENh c2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJCVGVzdC5p bmYNCisrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVC YXNlQ29kZS9CbGFja0JveFRlc3QvUHhlQkJUZXN0LmluZg0KQEAgLTU3LDQgKzU3LDUgQEAgW1By b3RvY29sc10NCiAgIGdFZmlUZXN0TG9nZ2luZ0xpYnJhcnlHdWlkDQogICBnQmxhY2tCb3hFZmlT aW1wbGVOZXR3b3JrUHJvdG9jb2xHdWlkDQogICBnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZVByb3Rv Y29sR3VpZA0KLSAgZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZA0K KyAgZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZA0KKyAgZ0JsYWNr Qm94RWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZA0KZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9T aW1wbGVOZXR3b3JrQkJUZXN0LmluZiBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0 LmluZg0KaW5kZXggMWQyZDFkMzk1ZmJiLi4xNGIyNDE3M2YzMTEgMTAwNjQ0DQotLS0gYS91ZWZp LXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFj a0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdC5pbmYNCisrKyBiL3VlZmktc2N0L1NjdFBrZy9U ZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1w bGVOZXR3b3JrQkJUZXN0LmluZg0KQEAgLTUxLDQgKzUxLDYgQEAgW0xpYnJhcnlDbGFzc2VzXQ0K ICAgRWZpVGVzdExpYg0KDQogW1Byb3RvY29sc10NCi0gIGdFZmlUZXN0TG9nZ2luZ0xpYnJhcnlH dWlkDQorICBnRWZpVGVzdExvZ2dpbmdMaWJyYXJ5R3VpZA0KKyAgZ0JsYWNrQm94RWZpU2ltcGxl TmV0d29ya1Byb3RvY29sR3VpZA0KKyAgZ0JsYWNrQm94RWZpRGV2aWNlUGF0aFByb3RvY29sR3Vp ZA0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0 UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9B ZGFwdGVySW5mb0JCVGVzdE1haW4uaCBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWlu LmgNCmluZGV4IDk5NTJmYmNhYjgzMy4uYTFlZjlkYjNiMTI3IDEwMDY0NA0KLS0tIGEvdWVmaS1z Y3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94 VGVzdC9BZGFwdGVySW5mb0JCVGVzdE1haW4uaA0KKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RD YXNlL1VFRkkvRUZJL1Byb3RvY29sL0FkYXB0ZXJJbmZvL0JsYWNrQm94VGVzdC9BZGFwdGVySW5m b0JCVGVzdE1haW4uaA0KQEAgLTI4LDkgKzI4LDExIEBAIEFic3RyYWN0Og0KICNkZWZpbmUgX0FE QVBURVJfSU5GT1JNQVRJT05fQkJfVEVTVF9NQUlODQoNCiAjaW5jbHVkZSAiRWZpLmgiDQorI2lu Y2x1ZGUgPEJhc2UuaD4NCisjaW5jbHVkZSAiU2N0TGliLmgiDQorI2luY2x1ZGUgIkd1aWQuaCIN CiAjaW5jbHVkZSA8TGlicmFyeS9FZmlUZXN0TGliLmg+DQogI2luY2x1ZGUgPFVFRkkvUHJvdG9j b2wvQWRhcHRlckluZm8uaD4NCi0jaW5jbHVkZSAiR3VpZC5oIg0KDQoNCiAjZGVmaW5lIEVGSV9B REFQVEVSX0lORk9STUFUSU9OX1BST1RPQ09MX1RFU1RfUkVWSVNJT04gICAgMHgwMDAxMDAwMA0K QEAgLTE2MCwxMiArMTYyLDkgQEAgQkJUZXN0R2V0U3VwcG9ydGVkVHlwZXNGdW5jdGlvblRlc3Qg KA0KICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhhbmRsZQ0KICAgKTsN Cg0KLQ0KLVZPSUQNCi1TY3RJbml0aWFsaXplTGliICgNCi0gIElOIEVGSV9IQU5ETEUgICAgICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KLSAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICAg KlN5c3RlbVRhYmxlDQotICApOw0KLQ0KLQ0KK0VGSV9TVEFUVVMNCitMb2NhdGVEZXZpY2VQYXRo RnJvbUFkYXB0ZXJJbmZvKA0KKyAgSU4gRUZJX0FEQVBURVJfSU5GT1JNQVRJT05fUFJPVE9DT0wg KkFkYXB0ZXJJbmZvMiwNCisgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKkRldmljZVBh dGgsDQorICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICpTdGFuZGFyZExp Yik7DQogI2VuZGlmDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv RUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNz QkJUZXN0TWFpbi5oIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29s L0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5o DQppbmRleCAwZTE3OTU0ZDc3NjIuLjgxMjY5ODc3OWYxMiAxMDA2NDQNCi0tLSBhL3VlZmktc2N0 L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tC b3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4uaA0KKysrIGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3Qv SElJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5oDQpAQCAtMTQ4LDYgKzE0OCwxMiBAQCBHZXREZXZp Y2VQYXRoICgNCiAgIE9VVCBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRl dmljZVBhdGhTdHINCiAgICk7DQoNCitFRklfU1RBVFVTDQorR2V0RGV2aWNlUGF0aFByb3RvY29s ICgNCisgIElOICBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICAgKkNvbmZpZ0FjY2Vz cywNCisgIElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKkRldmljZVBhdGgNCisgICk7DQor DQogRUZJX1NUQVRVUw0KIEdldENvcnJlc3BvbmRpbmdSZXF1ZXN0ICgNCiAgIElOICAgICBFRklf U1RSSU5HICAgIE11bHRpQ29uZmlnQWx0UmVzcCwNCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQ a2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4 ZUJhc2VDb2RlQkJUZXN0TWFpbi5oIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJ L1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4u aA0KaW5kZXggYjk0ZjIwMGZmN2FhLi5kZmVmNjcxODI0ZjIgMTAwNjQ0DQotLS0gYS91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hU ZXN0L1B4ZUJhc2VDb2RlQkJUZXN0TWFpbi5oDQorKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENh c2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJhc2VDb2Rl QkJUZXN0TWFpbi5oDQpAQCAtNTc4LDYgKzU3OCwxMiBAQCBMb2dDaGFyOFN0cmluZygNCiAgIElO IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuDQogICApOw0KDQorRUZJX1NU QVRVUw0KK0xvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UgKA0KKyAgSU4gRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAgKkJjSW50ZXJmYWNlMiwNCisgIElOIEVGSV9E RVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICAgKipEZXZpY2VQYXRoLCAgICAgIC8v cmV1c2UgdGhlIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCBhcyBFRklfTE9BREVEX0lNQUdFX0RF VklDRV9QQVRIX1BST1RPQ09MDQorICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RP Q09MICAgICAgICpTdGFuZGFyZExpYg0KKyAgKTsNCiAvLw0KIC8vIEVudHJ5IEdVSURzDQogLy8N CmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wv U2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdE1haW4uaCBiL3Vl Zmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0Js YWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0TWFpbi5oDQppbmRleCBlYTE0YWFhNzc5NjMu LjYwZmZhYmUyNTdlZSAxMDA2NDQNCi0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJ L0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJU ZXN0TWFpbi5oDQorKysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdE1haW4uaA0K QEAgLTM1Nyw2ICszNTcsMTIgQEAgQkJUZXN0UmVjZWl2ZUNvbmZvcm1hbmNlVGVzdCAoDQogICBJ TiBFRklfSEFORExFICAgICAgICAgICAgICAgICBTdXBwb3J0SGFuZGxlDQogICApOw0KDQorRUZJ X1NUQVRVUw0KK0xvY2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlICgNCisgIElOIEVGSV9T SU1QTEVfTkVUV09SS19QUk9UT0NPTCAgICAgICAgICAgICAqU25wSW50ZXJmYWNlMiwNCisgIElO IEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAgICAgKipEZXZpY2VQYXRoLCAg ICAgIC8vcmV1c2UgdGhlIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCBhcyBFRklfTE9BREVEX0lN QUdFX0RFVklDRV9QQVRIX1BST1RPQ09MDQorICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZ X1BST1RPQ09MICAgICAgICpTdGFuZGFyZExpYg0KKyAgKTsNCg0KIC8vDQogLy8gUHJvdG90eXBl cyBvZiBJbnRlcm5hbCBGdW5jdGlvbnMNCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJ bmZvQkJUZXN0Q29uZm9ybWFuY2UuYyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RDb25m b3JtYW5jZS5jDQppbmRleCAxOWNjYWM5M2M3YzcuLjczMTdlNTNmZjFmYyAxMDA2NDQNCi0tLSBh L3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9C bGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RDb25mb3JtYW5jZS5jDQorKysgYi91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRlckluZm8vQmxhY2tCb3hU ZXN0L0FkYXB0ZXJJbmZvQkJUZXN0Q29uZm9ybWFuY2UuYw0KQEAgLTkzLDcgKzkzLDggQEAgQkJU ZXN0R2V0SW5mb3JtYXRpb25Db25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQU5EQVJEX1RFU1Rf TElCUkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWI7DQogICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgIEVGSV9BREFQVEVSX0lORk9STUFUSU9OX1BS T1RPQ09MICAgICAgKkFkYXB0ZXJJbmZvOw0KLQ0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09M ICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAgIC8vIGluaXQNCiAgIC8vDQpAQCAt MTExLDYgKzExMiwyNSBAQCBCQlRlc3RHZXRJbmZvcm1hdGlvbkNvbmZvcm1hbmNlVGVzdCAoDQog ICAgIHJldHVybiBTdGF0dXM7DQogICB9DQoNCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJv bUFkYXB0ZXJJbmZvKEFkYXB0ZXJJbmZvLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlm IChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQor ICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAg ICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29y ZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAg ICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAg ICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZp Y2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJT LT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQor ICAgIH0NCisgIH0NCisNCisNCiAgIC8vDQogICAvL0NhbGwgY2hlY2sgcG9pbnRzDQogICAvLw0K QEAgLTEzNyw3ICsxNTcsOCBAQCBCQlRlc3RTZXRJbmZvcm1hdGlvbkNvbmZvcm1hbmNlVGVzdCAo DQogICBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYjsN CiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJ X0FEQVBURVJfSU5GT1JNQVRJT05fUFJPVE9DT0wgICAgICAqQWRhcHRlckluZm87DQotDQorICBF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFS MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0K ICAgLy8gaW5pdA0KICAgLy8NCkBAIC0xNTUsNiArMTc2LDIzIEBAIEJCVGVzdFNldEluZm9ybWF0 aW9uQ29uZm9ybWFuY2VUZXN0ICgNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCg0KKyAgU3Rh dHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQWRhcHRlckluZm8oQWRhcHRlckluZm8sJkRldmljZVBh dGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBE ZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhU b1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisg ICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAg U3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVG QVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAg ICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICAp Ow0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAg ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAg IERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vQ2FsbCBjaGVj ayBwb2ludHMNCiAgIC8vDQpAQCAtMTc4LDcgKzIxNiw4IEBAIEJCVGVzdEdldFN1cHBvcnRlZFR5 cGVzQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFOREFSRF9URVNUX0xJQlJBUllfUFJPVE9D T0wgICAgKlN0YW5kYXJkTGliOw0KICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdGF0dXM7DQogICBFRklfQURBUFRFUl9JTkZPUk1BVElPTl9QUk9UT0NPTCAgICAgICpB ZGFwdGVySW5mbzsNCi0NCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAq RGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2 aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBpbml0DQogICAvLw0KQEAgLTE5NSw3ICsyMzQsMjMg QEAgQkJUZXN0R2V0U3VwcG9ydGVkVHlwZXNDb25mb3JtYW5jZVRlc3QgKA0KICAgaWYgKCBFRklf RVJST1IoU3RhdHVzKSApIHsNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCi0NCisgIFN0YXR1 cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUFkYXB0ZXJJbmZvKEFkYXB0ZXJJbmZvLCZEZXZpY2VQYXRo LFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2 aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9T dHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAg ICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0 YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFV TFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAg ICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsN CisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBE ZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvL0NhbGwgY2hlY2sg cG9pbnRzDQogICAvLw0KZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJ L0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RN YWluLmMgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvQWRhcHRl ckluZm8vQmxhY2tCb3hUZXN0L0FkYXB0ZXJJbmZvQkJUZXN0TWFpbi5jDQppbmRleCBjYzM3YTQ5 NzYxNGUuLjhlODg0YjQzNzRlNyAxMDA2NDQNCi0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2Fz ZS9VRUZJL0VGSS9Qcm90b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9C QlRlc3RNYWluLmMNCisrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90 b2NvbC9BZGFwdGVySW5mby9CbGFja0JveFRlc3QvQWRhcHRlckluZm9CQlRlc3RNYWluLmMNCkBA IC0yMDcsMyArMjA3LDk5IEBAIFVubG9hZEFkYXB0ZXJJbmZvQkJUZXN0ICgNCiAgICAgICAgICAg ICAgZ0JCVGVzdFByb3RvY29sSW50ZXJmYWNlDQogICAgICAgICAgICAgICk7DQogfQ0KKw0KK0VG SV9TVEFUVVMgTG9jYXRlRGV2aWNlUGF0aEZyb21BZGFwdGVySW5mbyhJTiBFRklfQURBUFRFUl9J TkZPUk1BVElPTl9QUk9UT0NPTCAqQWRhcHRlckluZm8yLCBJTiBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKipEZXZpY2VQYXRoLCBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09M ICpTdGFuZGFyZExpYikNCit7DQorICBFRklfU1RBVFVTIFN0YXR1czsNCisNCisgIFVJTlROIE5v SGFuZGxlcywgSW5kZXg7DQorICBFRklfSEFORExFICpIYW5kbGVCdWZmZXI7DQorICBFRklfQURB UFRFUl9JTkZPUk1BVElPTl9QUk9UT0NPTCAqT3RoZXJBZGFwdGVySW5mbzI7DQorDQorICAvLw0K KyAgLy8gTG9jYXRlIHRoZSBIYW5kbGUgdGhhdCB0aGUgQWRhcHRlckluZm8gaXMgYm91bmQgdG8N CisgIC8vDQorICBTdGF0dXMgPSBndEJTLT5Mb2NhdGVIYW5kbGVCdWZmZXIoDQorICAgICAgQnlQ cm90b2NvbCwNCisgICAgICAmZ0VmaUFkYXB0ZXJJbmZvcm1hdGlvblByb3RvY29sR3VpZCwNCisg ICAgICBOVUxMLA0KKyAgICAgICZOb0hhbmRsZXMsDQorICAgICAgJkhhbmRsZUJ1ZmZlcik7DQor ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICB7DQorICAgIFN0YW5kYXJkTGliLT5SZWNvcmRB c3NlcnRpb24oDQorICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgIEVGSV9URVNUX0FTU0VS VElPTl9GQUlMRUQsDQorICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJlR3VpZCwNCisgICAgICAg IEwiQlMuTG9jYXRlSGFuZGxlIC0gTG9jYXRlSGFuZGxlIiwNCisgICAgICAgIEwiJWE6JWQ6U3Rh dHVzIC0gJXIiLA0KKyAgICAgICAgX19GSUxFX18sDQorICAgICAgICAoVUlOVE4pX19MSU5FX18s DQorICAgICAgICBTdGF0dXMpOw0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgaWYg KE5vSGFuZGxlcyA8PSAwKQ0KKyAgew0KKyAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9u KA0KKyAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJ TEVELA0KKyAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICBMIkJTLkxv Y2F0ZUhhbmRsZSAtIExvY2F0ZUhhbmRsZSIsDQorICAgICAgICBMIiVhOiVkOkRldmljZSBFcnJv ciIsDQorICAgICAgICBfX0ZJTEVfXywNCisgICAgICAgIChVSU5UTilfX0xJTkVfXyk7DQorICAg IHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIEZpbmQgdGhl IGV4YWN0IGhhbmRsZSB0aGF0IEFkYXB0ZXJJbmZvIGJvdW5kIHRvDQorICAvLw0KKyAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgTm9IYW5kbGVzOyBJbmRleCsrKQ0KKyAgew0KKyAgICBTdGF0dXMg PSBndEJTLT5IYW5kbGVQcm90b2NvbCgNCisgICAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQor ICAgICAgICAmZ0VmaUFkYXB0ZXJJbmZvcm1hdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgIChW T0lEICoqKSAmT3RoZXJBZGFwdGVySW5mbzIpOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp DQorICAgIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAg ICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisg ICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICAgIEwiQlMuSGFuZGxl UHJvdG9jb2wgLSBIYW5kbGVQcm90b2NvbCIsDQorICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0g JXIiLA0KKyAgICAgICAgICBfX0ZJTEVfXywNCisgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0K KyAgICAgICAgICBTdGF0dXMpOw0KKw0KKyAgICAgIGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZl cik7DQorICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBpZiAoT3RoZXJBZGFw dGVySW5mbzIgPT0gQWRhcHRlckluZm8yKQ0KKyAgICB7DQorICAgICAgYnJlYWs7DQorICAgIH0N CisgIH0NCisNCisgIC8vDQorICAvLyBMb2NhdGUgdGhlIExvYWRlZCBEZXZpY2VQYXRoIFByb3Rv Y29sIGJvdW5kIHRvIEFEQVBURVJfSU5GT1JNQVRJT04gUHJvdG9jb2wNCisgIC8vDQorICBpZiAo SW5kZXggPj0gTm9IYW5kbGVzKQ0KKyAgew0KKyAgICAvLw0KKyAgICAvLyBObyBIYW5kbGUgRm91 bmQhIQ0KKyAgICAvLw0KKyAgICBndEJTLT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOw0KKyAgICBy ZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCisgIH0NCisNCisgIFN0YXR1cyA9IGd0QlMtPkhhbmRs ZVByb3RvY29sKA0KKyAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQorICAgICAgJmdCbGFja0Jv eEVmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQorICAgICAgKFZPSUQgKiopIERldmljZVBhdGgp Ow0KKw0KKyAgZ3RCUy0+RnJlZVBvb2woSGFuZGxlQnVmZmVyKTsNCisgIHJldHVybiBTdGF0dXM7 DQorfQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3Qv U2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0Jv eFRlc3QvSElJQ29uZmlnQWNjZXNzQkJUZXN0Q29uZm9ybWFuY2UuYyBiL3VlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlDb25maWdBY2Nlc3MvQmxhY2tCb3hUZXN0 L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdENvbmZvcm1hbmNlLmMNCmluZGV4IDk2NGE2NGNkMWQzNC4u MTZjYTBiMzIzOTE0IDEwMDY0NA0KLS0tIGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv RUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNz QkJUZXN0Q29uZm9ybWFuY2UuYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkv RUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNz QkJUZXN0Q29uZm9ybWFuY2UuYw0KQEAgLTEyMCw3ICsxMjAsOCBAQCBCQlRlc3RFeHRyYWN0Q29u ZmlnQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KICAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICAgICAq SElJQ29uZmlnQWNjZXNzOw0KICAgRUZJX0hJSV9DT05GSUdfUk9VVElOR19QUk9UT0NPTCAgICAg ICAqSElJQ29uZmlnUm91dGluZzsNCi0NCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAg ICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBpbml0DQogICAvLw0KQEAgLTEzNyw2 ICsxMzgsMjggQEAgQkJUZXN0RXh0cmFjdENvbmZpZ0NvbmZvcm1hbmNlVGVzdCAoDQogICBpZiAo RUZJX0VSUk9SKFN0YXR1cykpIHsNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCisgIC8vDQor ICAvLyBHZXQgTG9hZGVkIERldmljZSBQYXRoIG9mIGN1cnJlbnQgRUZJX0hJSV9DT05GSUdfQUND RVNTX1BST1RPQ09MDQorICAvLyBBbmQgb3V0IHB1dCBkZXZpY2UgcGF0aCBvciBkZXZpY2UgbmFt ZQ0KKyAgLy8NCisNCisgIFN0YXR1cyA9IEdldERldmljZVBhdGhQcm90b2NvbChISUlDb25maWdB Y2Nlc3MsJkRldmljZVBhdGgpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAg ICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBh dGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsN CisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAg ICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxf REVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0K KyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAg ICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisg ICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAg ICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KDQogICAvLw0KICAgLy8gR2V0 IHRoZSBDb25maWcgUm91dGluZyBQcm90b2NvbCBJbnRlcmZhY2UNCkBAIC0xNzAsNyArMTkzLDgg QEAgQkJUZXN0Um91dGVDb25maWdDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfSElJX0NPTkZJR19BQ0NFU1Nf UFJPVE9DT0wgICAgICAgICpISUlDb25maWdBY2Nlc3M7DQogICBFRklfSElJX0NPTkZJR19ST1VU SU5HX1BST1RPQ09MICAgICAgICpISUlDb25maWdSb3V0aW5nOw0KLQ0KKyAgRUZJX0RFVklDRV9Q QVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAgIC8vIGluaXQN CiAgIC8vDQpAQCAtMTg3LDcgKzIxMSwyMyBAQCBCQlRlc3RSb3V0ZUNvbmZpZ0NvbmZvcm1hbmNl VGVzdCAoDQogICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCiAgICAgcmV0dXJuIFN0YXR1czsN CiAgIH0NCi0NCisgIFN0YXR1cyA9IEdldERldmljZVBhdGhQcm90b2NvbChISUlDb25maWdBY2Nl c3MsJkRldmljZVBhdGgpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBE ZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhU b1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisg ICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAg U3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVG QVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAg ICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICAp Ow0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAg ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAg IERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIEdldCB0aGUg Q29uZmlnIFJvdXRpbmcgUHJvdG9jb2wgSW50ZXJmYWNlDQogICAvLw0KQEAgLTE5NSw3ICsyMzUs NyBAQCBCQlRlc3RSb3V0ZUNvbmZpZ0NvbmZvcm1hbmNlVGVzdCAoDQogICBpZiAoIEVGSV9FUlJP UihTdGF0dXMpICkgew0KICAgICByZXR1cm4gU3RhdHVzOw0KICAgfQ0KLQ0KKw0KICAgLy8NCiAg IC8vQ2FsbCBjaGVjayBwb2ludHMNCiAgIC8vDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3Qv SElJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5jIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vzcy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNj ZXNzQkJUZXN0TWFpbi5jDQppbmRleCAwOTliMTBmN2EzOGEuLjI5MjlkOGYwNGMyNiAxMDA2NDQN Ci0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9ISUlDb25m aWdBY2Nlc3MvQmxhY2tCb3hUZXN0L0hJSUNvbmZpZ0FjY2Vzc0JCVGVzdE1haW4uYw0KKysrIGIv dWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0hJSUNvbmZpZ0FjY2Vz cy9CbGFja0JveFRlc3QvSElJQ29uZmlnQWNjZXNzQkJUZXN0TWFpbi5jDQpAQCAtMzgxLDYgKzM4 MSw3MSBAQCBHZXREZXZpY2VQYXRoICgNCiAgIHJldHVybiBTdGF0dXM7DQogfQ0KDQorRUZJX1NU QVRVUw0KK0dldERldmljZVBhdGhQcm90b2NvbCAoDQorICBJTiAgRUZJX0hJSV9DT05GSUdfQUND RVNTX1BST1RPQ09MICAgICpDb25maWdBY2Nlc3MsDQorICBJTiBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKipEZXZpY2VQYXRoDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXR1czsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleDsNCisgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb0hhbmRsZXM7DQor ICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCisgIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdBY2Nlc3NIYW5kbGUgPSBOVUxM Ow0KKyAgRUZJX0hJSV9DT05GSUdfQUNDRVNTX1BST1RPQ09MICAgICpUZXN0ZWRDb25maWdBY2Nl c3M7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoOw0KKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhIZHJTaXplOw0KKw0KKyAgLy8NCisg IC8vIGxvY2F0ZSBhbGwgSGlpIENvbmZpZ3VyYXRpb24gQWNjZXNzIFByb3RvY29sIEluc3RhbmNl cw0KKyAgLy8NCisgIFN0YXR1cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoDQorICAgICAg ICAgICAgICAgICAgIEJ5UHJvdG9jb2wsDQorICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hF ZmlISUlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgIE5VTEws DQorICAgICAgICAgICAgICAgICAgICZOb0hhbmRsZXMsDQorICAgICAgICAgICAgICAgICAgICZI YW5kbGVCdWZmZXINCisgICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IoU3Rh dHVzKSB8fCAoTm9IYW5kbGVzID09IDApKSB7DQorICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0K KyAgfQ0KKw0KKyAgLy8NCisgIC8vIHNjYW4gZm9yIHRoZSBoYW5kbGUgdGhhdCBtYXRjaGVkIHdp dGggdGhlIEhpaSBDb25maWd1cmF0aW9uIEFjY2VzcyBQcm90b2NvbCB0aGF0DQorICAvLyBwYXNz ZWQgaW4gYnkgdGhlIHRlc3QgZnJhbWV3b3JrDQorICAvLw0KKyAgZm9yIChJbmRleCA9IDA7IElu ZGV4IDwgTm9IYW5kbGVzOyBJbmRleCsrKSB7DQorICAgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVBy b3RvY29sICgNCisgICAgICAgICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLA0KKyAg ICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hFZmlISUlDb25maWdBY2Nlc3NQcm90b2NvbEd1 aWQsDQorICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZUZXN0ZWRDb25maWdBY2Nlc3MN CisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsN CisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKw0KKyAgICBpZiAoVGVzdGVkQ29uZmlnQWNjZXNz ID09IENvbmZpZ0FjY2Vzcykgew0KKyAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSA9IEhhbmRsZUJ1 ZmZlcltJbmRleF07DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIH0NCisNCisgIGd0QlMtPkZy ZWVQb29sIChIYW5kbGVCdWZmZXIpOw0KKw0KKyAgaWYgKENvbmZpZ0FjY2Vzc0hhbmRsZSA9PSBO VUxMKSB7DQorICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8v IGZpbmQgY29udHJvbGxlciBoYW5kbGVzIG1hbmFnZWQgYnkgdGhlIGNvbXBvbmVudCBuYW1lIGhh bmRsZS4NCisgIC8vDQorICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQorICAgICAg ICAgICAgICAgICAgIENvbmZpZ0FjY2Vzc0hhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgJmdC bGFja0JveEVmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgICh2 b2lkICoqKURldmljZVBhdGgNCisgICAgICAgICAgICAgICAgICAgKTsNCisgIHJldHVybiBTdGF0 dXM7DQorfQ0KDQogRUZJX1NUQVRVUw0KIEdldENvcnJlc3BvbmRpbmdSZXF1ZXN0ICgNCkBAIC02 NTQsNCArNzE5LDQgQEAgTXVsdGlBbHRSZXNwVG9NdWx0aVJlcSAoDQogICBTY3RGcmVlUG9vbCAo RnJlZVB0cik7DQoNCiAgIHJldHVybiBFRklfU1VDQ0VTUzsNCi19DQorfQ0KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VF RkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVz dENvbmZvcm1hbmNlLmMgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hUZXN0L1B4ZUJhc2VDb2RlQkJUZXN0Q29uZm9ybWFuY2Uu Yw0KaW5kZXggZDAzZWI4NTBjNWFkLi43N2I1YWZlMzg4YTMgMTAwNjQ0DQotLS0gYS91ZWZpLXNj dC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvUHhlQmFzZUNvZGUvQmxhY2tCb3hU ZXN0L1B4ZUJhc2VDb2RlQkJUZXN0Q29uZm9ybWFuY2UuYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVC YXNlQ29kZUJCVGVzdENvbmZvcm1hbmNlLmMNCkBAIC01MCw2ICs1MCw4IEBAIEJCVGVzdE5ld1N0 YXJ0Q29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBB c3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAq QmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRl dmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmlj ZVBhdGhTdHI7DQoNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJm YWNlDQpAQCAtNjgsNyArNzAsMjMgQEAgQkJUZXN0TmV3U3RhcnRDb25mb3JtYW5jZVRlc3QgKA0K ICAgLy8gR2V0IHRoZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCBpbnRlcmZh Y2UgdG8gYmUgdGVzdGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2UgPSAoRUZJX1BYRV9CQVNFX0NP REVfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQotDQorICBTdGF0dXM9TG9jYXRlRGV2aWNl UGF0aEZyb21CY0ludGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7 DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBO VUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRo KTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGli LT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisg ICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAg ICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAg ICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVz ID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1Io U3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1O VUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gRGlzYWJsZSBFRklfUFhFX0JBU0VfQ09E RV9QUk9UT0NPTCBQcm90b2NvbCBpbnRlcmZhY2UNCiAgIC8vDQpAQCAtMjM3LDYgKzI1NSw4IEBA IEJCVGVzdE5ld1N0b3BDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAg ICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAg ICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAg ICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqRGV2aWNlUGF0aFN0cjsNCg0KICAgLy8NCiAgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGli cmFyeSBJbnRlcmZhY2UNCkBAIC0yNTUsNyArMjc1LDIzIEBAIEJCVGVzdE5ld1N0b3BDb25mb3Jt YW5jZVRlc3QgKA0KICAgLy8gR2V0IHRoZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90 b2NvbCBpbnRlcmZhY2UgdG8gYmUgdGVzdGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2UgPSAoRUZJ X1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQotDQorICBTdGF0dXM9 TG9jYXRlRGV2aWNlUGF0aEZyb21CY0ludGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNlUGF0aCxT dGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmlj ZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3Ry IChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxU LA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2 aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gRGlzYWJsZSBFRklf UFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCBpbnRlcmZhY2UNCiAgIC8vDQpAQCAtNDE4 LDYgKzQ1NCw4IEBAIEJCVGVzdFN0YXJ0Q29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9O ICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVf UFJPVE9DT0wgICAgICAgICAgICAqQmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQoNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0 YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAtNDM2LDcgKzQ3NCwyMyBAQCBCQlRlc3RTdGFy dENvbmZvcm1hbmNlVGVzdCAoDQogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RP Q09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0ludGVyZmFj ZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCisg IFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNlLCZEZXZp Y2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisg ICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQ YXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7 DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAg ICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVM X0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwN CisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAg ICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQor ICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisg ICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGFu Z2UgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgc3RhdGUgdG8gZW5hYmxlZA0K ICAgLy8NCkBAIC01MjIsNiArNTc2LDggQEAgQkJUZXN0U3RvcENvbmZvcm1hbmNlVGVzdCAoDQog ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgIEVGSV9U RVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9Q WEVfQkFTRV9DT0RFX1BST1RPQ09MICAgICAgICAgICAgKkJjSW50ZXJmYWNlOw0KKyAgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KDQogICAvLw0KICAg Ly8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KQEAgLTU0MCw3ICs1OTYsMjMg QEAgQkJUZXN0U3RvcENvbmZvcm1hbmNlVGVzdCAoDQogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFT RV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQog ICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVy ZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50 ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NV Q0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIg PSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0 ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAg ICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9W RVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0 aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAg ICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNl UGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJu IFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8v DQogICAvLyBNYWtlIHN1cmUgdGhlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29s IGlzIGRpc2FibGVkDQogICAvLw0KQEAgLTYwNiw2ICs2NzgsOCBAQCBCQlRlc3REaGNwQ29uZm9y bWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh dHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25U eXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJbnRlcmZh Y2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7 DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7 DQoNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQpAQCAt NjI0LDcgKzY5OCwyMyBAQCBCQlRlc3REaGNwQ29uZm9ybWFuY2VUZXN0ICgNCiAgIC8vIEdldCB0 aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRl c3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09M ICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJ bnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0 YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAg RGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlm IChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVz c2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAg ICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAg ICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBh dGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZy ZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQor ICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAg fQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoYW5nZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQ cm90b2NvbCB0byBkaXNhYmxlZA0KICAgLy8NCkBAIC03OTEsNiArODgxLDggQEAgQkJUZXN0RGlz Y292ZXJDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAg IEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAg ICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAq RGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2 aWNlUGF0aFN0cjsNCg0KICAgLy8NCiAgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRl cmZhY2UNCkBAIC04MDksNyArOTAxLDIzIEBAIEJCVGVzdERpc2NvdmVyQ29uZm9ybWFuY2VUZXN0 ICgNCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50 ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFT RV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURl dmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRM aWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3Ry ID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNl UGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFy ZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIs DQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAg ICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAg ICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0 YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhT dHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoYW5nZSBFRklfUFhFX0JBU0Vf Q09ERV9QUk9UT0NPTCBQcm90b2NvbCB0byBkaXNhYmxlZA0KICAgLy8NCkBAIC05ODgsNiArMTA5 Niw4IEBAIEJCVGVzdE10ZnRwQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAg ICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9D T0wgICAgICAgICAgICAqQmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEJsb2NrU2l6ZT01MTI7DQogICBFRklfSVBfQUREUkVTUyAgICAgICAgICAgICAg ICAgICAgICAgIFNlcnZlcklwOw0KICAgQ0hBUjggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqRmlsZU5hbWU7DQpAQCAtMTAxMyw3ICsxMTIzLDIzIEBAIEJCVGVzdE10ZnRwQ29uZm9y bWFuY2VUZXN0ICgNCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJv dG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVG SV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVz PUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgs U3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZp Y2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0 ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAg ICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3Rh bmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVM VCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAg ICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0K KyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBp ZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERl dmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIEZpbGwgUGFyYW1l dGVycyAoU2VydmVySXAsIEZpbGVOYW1lLCBCdWZmZXJQdHIpDQogICAvLyBHZXQgcGFyYW1ldGVy IGZyb20gaW5pIGZpbGUuDQpAQCAtMTQ3Myw2ICsxNTk5LDggQEAgQkJUZXN0VWRwV3JpdGVDb25m b3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBT dGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlv blR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVy ZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0 aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0 cjsNCiAgIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAgICAgRGVzdElwOw0KICAg RUZJX1BYRV9CQVNFX0NPREVfVURQX1BPUlQgICAgICAgICAgICBEZXN0UG9ydDsNCiAgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU2l6ZTsNCkBAIC0xNTAxLDcg KzE2MjksMjMgQEAgQkJUZXN0VWRwV3JpdGVDb25mb3JtYW5jZVRlc3QgKA0KICAgLy8gR2V0IHRo ZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCBpbnRlcmZhY2UgdG8gYmUgdGVz dGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2UgPSAoRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wg KilDbGllbnRJbnRlcmZhY2U7DQotDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21CY0lu dGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3Rh dHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBE ZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYg KERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNz YWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAg ICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAg IEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0 aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJl ZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisg ICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9 DQorICB9DQogICAvLyBEaXNhYmxlIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIHByb3RvY29s IGlmIG5lZWRlZA0KICAgU3RhdHVzID0gQ2hhbmdlUHhlU3RhdGUgKEJjSW50ZXJmYWNlLCBGQUxT RSwgQmNJbnRlcmZhY2UtPk1vZGUtPlN0YXJ0ZWQsIEZBTFNFKTsNCiAgIGlmIChFRklfRVJST1Io U3RhdHVzKSkgew0KQEAgLTE2ODksNiArMTgzMyw4IEBAIEJCVGVzdFVkcFJlYWRDb25mb3JtYW5j ZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQogICBFRklfVEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7 DQogICBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsN CisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisg IENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAg IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BGbGFnczsNCiAgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU2l6ZTsNCiAgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlclB0cjsNCkBAIC0xNzEzLDcgKzE4 NTksMjMgQEAgQkJUZXN0VWRwUmVhZENvbmZvcm1hbmNlVGVzdCAoDQogICAvLyBHZXQgdGhlIEVG SV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQN CiAgIC8vDQogICBCY0ludGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNs aWVudEludGVyZmFjZTsNCi0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJm YWNlKEJjSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMg PT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmlj ZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2 aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2Ug KA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAg ICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJE ZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3Ry DQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9v bCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAg ICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisg IH0NCiAgIC8vIE1hbGxvYyBmb3IgZGF0YQ0KICAgQnVmZmVyU2l6ZSA9IE1BWF9VRFBfU0laRTsN CiAgIFN0YXR1cyA9IGd0QlMtPkFsbG9jYXRlUG9vbCAoRWZpQm9vdFNlcnZpY2VzRGF0YSwgQnVm ZmVyU2l6ZSwgKFZPSUQgKiopICZCdWZmZXJQdHIpOw0KQEAgLTIwMDQsNiArMjE2Niw4IEBAIEJC VGVzdFNldElwRmlsdGVyQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAg ICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wg ICAgICAgICAgICAqQmNJbnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAg ICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKkRldmljZVBhdGhTdHI7DQogICBFRklfUFhFX0JBU0VfQ09ERV9JUF9GSUxURVIgICAg ICAgICAgIEJjSXBGaWx0ZXI7DQoNCiAgIC8vDQpAQCAtMjAyMyw3ICsyMTg3LDIzIEBAIEJCVGVz dFNldElwRmlsdGVyQ29uZm9ybWFuY2VUZXN0ICgNCiAgIC8vIEdldCB0aGUgRUZJX1BYRV9CQVNF X0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJlIHRlc3RlZA0KICAgLy8NCiAg IEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICopQ2xpZW50SW50ZXJm YWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRl cmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VD Q0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9 IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3Ry ICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAg ICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZF UkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRo OiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAg ICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQ YXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4g U3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8g RGlzYWJsZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBwcm90b2NvbCBpZiBuZWVkZWQNCiAg IFN0YXR1cyA9IENoYW5nZVB4ZVN0YXRlIChCY0ludGVyZmFjZSwgRkFMU0UsIEJjSW50ZXJmYWNl LT5Nb2RlLT5TdGFydGVkLCBGQUxTRSk7DQogICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCkBA IC0yMDgzLDExICsyMjYzLDEyIEBAIEJCVGVzdEFycENvbmZvcm1hbmNlQXV0b1Rlc3QgKA0KICAg RUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICAgICAqTG9nZ2luZ0xpYjsNCiAgIEVG SV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KICAgRUZJX1RFU1Rf QVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlOw0KLSAgRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJbnRlcmZhY2U7DQogICBFRklfSVBfQURE UkVTUyAgICAgICAgICAgICAgICAgICAgICAgIElwQWRkcjsNCisgIEVGSV9QWEVfQkFTRV9DT0RF X1BST1RPQ09MICAgICAgICAgICAgKkJjSW50ZXJmYWNlOw0KKyAgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KDQogICBCY0ludGVyZmFjZSA9IChFRklf UFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCi0NCiAgIC8vDQogICAv LyBHZXQgc3VwcG9ydCBsaWJyYXJ5IChTdGFuZGFyZCBMaWIsIFByb2ZpbGUgTGliLCBMb2dnaW5n IExpYikNCiAgIC8vDQpAQCAtMjExMCw3ICsyMjkxLDIzIEBAIEJCVGVzdEFycENvbmZvcm1hbmNl QXV0b1Rlc3QgKA0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICByZXR1cm4gU3RhdHVzOw0K ICAgfQ0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tQmNJbnRlcmZhY2UoQmNJbnRl cmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VD Q0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9 IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3Ry ICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAg ICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZF UkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRo OiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAg ICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQ YXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4g U3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8N CiAgIC8vIERpc2FibGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJm YWNlDQogICAvLw0KQEAgLTIxMzAsNyArMjMyNyw3IEBAIEJCVGVzdEFycENvbmZvcm1hbmNlQXV0 b1Rlc3QgKA0KICAgICAgIHJldHVybiBTdGF0dXM7DQogICAgIH0NCiAgIH0NCi0NCisNCiAgIC8v DQogICAvLyBFbmFibGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJm YWNlIGluIElwdjQNCiAgIC8vDQpAQCAtMjIzMiw2ICsyNDI5LDggQEAgQkJUZXN0QXJwQ29uZm9y bWFuY2VNYW51YWxUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3Nl cnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJ bnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmlj ZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBh dGhTdHI7DQogICBFRklfSVBfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgICAgIElwQWRkcjsN CiAgIEVGSV9NQUNfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgICAgTWFjQWRkcjsNCiAgIEVG SV9JTklfRklMRV9IQU5ETEUgICAgICAgICAgICAgICAgICAgRmlsZUhhbmRsZTsNCkBAIC0yMjYz LDcgKzI0NjIsMjMgQEAgQkJUZXN0QXJwQ29uZm9ybWFuY2VNYW51YWxUZXN0ICgNCiAgIC8vIEdl dCB0aGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgUHJvdG9jb2wgaW50ZXJmYWNlIHRvIGJl IHRlc3RlZA0KICAgLy8NCiAgIEJjSW50ZXJmYWNlID0gKEVGSV9QWEVfQkFTRV9DT0RFX1BST1RP Q09MICopQ2xpZW50SW50ZXJmYWNlOw0KLQ0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9t QmNJbnRlcmZhY2UoQmNJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYg KFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisg ICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAg IGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3Jk TWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAg ICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAg ICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmlj ZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMt PkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp DQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisg ICAgfQ0KKyAgfQ0KICAgLy8gRGlzYWJsZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBwcm90 b2NvbCBpZiBuZWVkZWQNCiAgIFN0YXR1cyA9IENoYW5nZVB4ZVN0YXRlIChCY0ludGVyZmFjZSwg RkFMU0UsIEJjSW50ZXJmYWNlLT5Nb2RlLT5TdGFydGVkLCBGQUxTRSk7DQogICBpZiAoRUZJX0VS Uk9SKFN0YXR1cykpIHsNCkBAIC0yNDUyLDYgKzI2NjcsOCBAQCBCQlRlc3RTZXRQYXJhbWV0ZXJz Q29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KICAgRUZJX1RFU1RfQVNTRVJUSU9OICAgICAgICAgICAgICAgICAgICBBc3Nl cnRpb25UeXBlOw0KICAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgICAgICAgICAqQmNJ bnRlcmZhY2U7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmlj ZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBh dGhTdHI7DQoNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNl DQpAQCAtMjQ3MCw3ICsyNjg3LDIzIEBAIEJCVGVzdFNldFBhcmFtZXRlcnNDb25mb3JtYW5jZVRl c3QgKA0KICAgLy8gR2V0IHRoZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCBQcm90b2NvbCBp bnRlcmZhY2UgdG8gYmUgdGVzdGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2UgPSAoRUZJX1BYRV9C QVNFX0NPREVfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQotDQorICBTdGF0dXM9TG9jYXRl RGV2aWNlUGF0aEZyb21CY0ludGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFy ZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmljZVBhdGhT dHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZp Y2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5k YXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExp YiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAg ICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAgICAgICAg ICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAg U3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklf RVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0 aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLyBEaXNhYmxlIEVGSV9QWEVfQkFTRV9DT0RF X1BST1RPQ09MIHByb3RvY29sIGlmIG5lZWRlZA0KICAgU3RhdHVzID0gQ2hhbmdlUHhlU3RhdGUg KEJjSW50ZXJmYWNlLCBGQUxTRSwgQmNJbnRlcmZhY2UtPk1vZGUtPlN0YXJ0ZWQsIEZBTFNFKTsN CiAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KQEAgLTI1MzEsNiArMjc2NCw4IEBAIEJCVGVz dFNldFN0YXRpb25JcENvbmZvcm1hbmNlVGVzdCAoDQogICBFRklfU1RBVFVTICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAg ICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICAg ICAgICAgICAgKkJjSW50ZXJmYWNlOw0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAg ICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpEZXZpY2VQYXRoU3RyOw0KDQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJy YXJ5IEludGVyZmFjZQ0KQEAgLTI1NDksNyArMjc4NCwyMyBAQCBCQlRlc3RTZXRTdGF0aW9uSXBD b25mb3JtYW5jZVRlc3QgKA0KICAgLy8gR2V0IHRoZSBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NP TCBQcm90b2NvbCBpbnRlcmZhY2UgdG8gYmUgdGVzdGVkDQogICAvLw0KICAgQmNJbnRlcmZhY2Ug PSAoRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQotDQorICBT dGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZyb21CY0ludGVyZmFjZShCY0ludGVyZmFjZSwmRGV2aWNl UGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAg IERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0 aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0K KyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAg ICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9E RUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQor ICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAg ICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAg ICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAg ICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLyBEaXNhYmxlIEVGSV9Q WEVfQkFTRV9DT0RFX1BST1RPQ09MIHByb3RvY29sIGlmIG5lZWRlZA0KICAgU3RhdHVzID0gQ2hh bmdlUHhlU3RhdGUgKEJjSW50ZXJmYWNlLCBGQUxTRSwgQmNJbnRlcmZhY2UtPk1vZGUtPlN0YXJ0 ZWQsIEZBTFNFKTsNCiAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KQEAgLTI2MDMsNiArMjg1 NCw4IEBAIEJCVGVzdFNldFBhY2tldHNDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX1NUQVRVUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfVEVTVF9BU1NFUlRJT04g ICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfUFhFX0JBU0VfQ09ERV9Q Uk9UT0NPTCAgICAgICAgICAgICpCY0ludGVyZmFjZTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9U T0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCg0KICAgLy8NCiAgIC8vIEdldCB0aGUgU3Rh bmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCkBAIC0yNjIxLDcgKzI4NzQsMjMgQEAgQkJUZXN0U2V0 UGFja2V0c0NvbmZvcm1hbmNlVGVzdCAoDQogICAvLyBHZXQgdGhlIEVGSV9QWEVfQkFTRV9DT0RF X1BST1RPQ09MIFByb3RvY29sIGludGVyZmFjZSB0byBiZSB0ZXN0ZWQNCiAgIC8vDQogICBCY0lu dGVyZmFjZSA9IChFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsN Ci0NCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbUJjSW50ZXJmYWNlKEJjSW50ZXJmYWNl LCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1Mp IHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3RE ZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBO VUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAg ICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NF X0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNc clxuIiwNCisgICAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAg ICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0 cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1 czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vIERpc2Fi bGUgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgcHJvdG9jb2wgaWYgbmVlZGVkDQogICBTdGF0 dXMgPSBDaGFuZ2VQeGVTdGF0ZSAoQmNJbnRlcmZhY2UsIEZBTFNFLCBCY0ludGVyZmFjZS0+TW9k ZS0+U3RhcnRlZCwgRkFMU0UpOw0KICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQpkaWZmIC0t Z2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VD b2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uYyBiL3VlZmktc2N0L1NjdFBr Zy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9QeGVCYXNlQ29kZS9CbGFja0JveFRlc3QvUHhl QmFzZUNvZGVCQlRlc3RNYWluLmMNCmluZGV4IGEyZGIxZmI3N2U1MS4uMTkxZjQ2MDAyMjMwIDEw MDY0NA0KLS0tIGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4 ZUJhc2VDb2RlL0JsYWNrQm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uYw0KKysrIGIvdWVm aS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL1B4ZUJhc2VDb2RlL0JsYWNr Qm94VGVzdC9QeGVCYXNlQ29kZUJCVGVzdE1haW4uYw0KQEAgLTUsMTIgKzUsMTIgQEANCg0KICAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlDQotICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlIGZvdW5kIGF0DQogICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk LWxpY2Vuc2UucGhwDQotDQorDQogICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCiAgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJ RUQuDQotDQorDQogKiovDQogLyorKw0KDQpAQCAtMjgsMzE2ICsyOCw5NCBAQCBBYnN0cmFjdDoN CiAjaW5jbHVkZSAiUHhlQmFzZUNvZGVCQlRlc3RNYWluLmgiDQogI2luY2x1ZGUgIlB4ZUJhc2VD b2RlQkJUZXN0U3VwcG9ydC5oIg0KDQotRUZJX0VWRU5UICAgICAgICAgICAgICAgICAgICAgICBU aW1lckV2ZW50Ow0KLVVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0NhbGxCYWNrSW52 b2tlZDsNCi1FRklfUFhFX0JBU0VfQ09ERV9GVU5DVElPTiAgICAgIGdGdW5jdGlvbjsNCi1FRklf UFhFX0NBTExCQUNLICAgICAgICAgICAgICAgIGdPbGRDYWxsQmFjazsNCi1FRklfSEFORExFICAg ICAgICAgICAgICAgICAgICAgIGdIYW5kbGU7DQorRUZJX0VWRU5UIFRpbWVyRXZlbnQ7DQorVUlO VE4gZ0NhbGxCYWNrSW52b2tlZDsNCitFRklfUFhFX0JBU0VfQ09ERV9GVU5DVElPTiBnRnVuY3Rp b247DQorRUZJX1BYRV9DQUxMQkFDSyBnT2xkQ2FsbEJhY2s7DQorRUZJX0hBTkRMRSBnSGFuZGxl Ow0KDQogRUZJX1BYRV9CQVNFX0NPREVfQ0FMTEJBQ0tfUFJPVE9DT0wgTmV3Q2FsbEJhY2tQcm90 b2NvbCA9IHsNCi0gIEVGSV9QWEVfQkFTRV9DT0RFX0NBTExCQUNLX0lOVEVSRkFDRV9SRVZJU0lP TiwNCi0gIE5ld0NhbGxCYWNrDQotfTsNCisgICAgRUZJX1BYRV9CQVNFX0NPREVfQ0FMTEJBQ0tf SU5URVJGQUNFX1JFVklTSU9OLA0KKyAgICBOZXdDYWxsQmFja307DQoNCiBFRklfQkJfVEVTVF9Q Uk9UT0NPTF9GSUVMRCBnRWZpUHhlQmNUZXN0UHJvdEZpZWxkID0gew0KLSAgUFhFX0JBU0VfQ09E RV9URVNUX1JFVklTSU9OLA0KLSAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0xfR1VJRCwNCi0g IEwiUFhFIEJhc2UgQ29kZSBQcm90b2NvbCBUZXN0IiwNCi0gIEwiVGVzdCBQWEUgQmFzZSBDb2Rl IFByb3RvY29sIg0KLX07DQorICAgIFBYRV9CQVNFX0NPREVfVEVTVF9SRVZJU0lPTiwNCisgICAg RUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0xfR1VJRCwNCisgICAgTCJQWEUgQmFzZSBDb2RlIFBy b3RvY29sIFRlc3QiLA0KKyAgICBMIlRlc3QgUFhFIEJhc2UgQ29kZSBQcm90b2NvbCJ9Ow0KDQog RUZJX0dVSUQgZ1N1cHBvcnRQcm90b2NvbEd1aWQxW10gPSB7DQotICBFRklfU1RBTkRBUkRfVEVT VF9MSUJSQVJZX0dVSUQsDQotICBFRklfTlVMTF9HVUlEDQotfTsNCisgICAgRUZJX1NUQU5EQVJE X1RFU1RfTElCUkFSWV9HVUlELA0KKyAgICBFRklfTlVMTF9HVUlEfTsNCg0KIEVGSV9CQl9URVNU X0VOVFJZX0ZJRUxEIGdQeGVUZXN0RW50cnlGaWVsZFtdID0gew0KLSAgew0KLSAgICBQWEVfU1RB UlRfRlVOQ1RJT05fVEVTVF9HVUlELA0KLSAgICBMIlN0YXJ0X0Z1bmMiLA0KLSAgICBMIkZ1bmN0 aW9uIFRlc3Qgb2YgU3RhcnQiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULA0KLSAgICBn U3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCi0gICAgQkJU ZXN0TmV3U3RhcnRGdW5jdGlvblRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9TVE9QX0ZVTkNU SU9OX1RFU1RfR1VJRCwNCi0gICAgTCJTdG9wX0Z1bmMiLA0KLSAgICBMIkZ1bmN0aW9uIFRlc3Qg b2YgU3RvcCIsDQotICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJv dG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9BVVRPLA0KLSAgICBCQlRlc3ROZXdTdG9w RnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU0VUSVBGSUxURVJfRlVOQ1RJT05f VEVTVF9HVUlELA0KLSAgICBMIlNldElwRmlsdGVyX0Z1bmMiLA0KLSAgICBMIkZ1bmN0aW9uIFRl c3Qgb2YgU2V0SXBGaWx0ZXIiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULA0KLSAgICBn U3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCi0gICAgQkJU ZXN0U2V0SXBGaWx0ZXJGdW5jdGlvblRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9TVEFSVF9D T05GT1JNQU5DRV9URVNUX0dVSUQsDQotICAgIEwiU3RhcnRfQ29uZiIsDQotICAgIEwiQ29uZm9y bWFuY2UgVGVzdCBmb3IgU3RhcnQiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KLSAg ICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCi0gICAg QkJUZXN0TmV3U3RhcnRDb25mb3JtYW5jZVRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9TVE9Q X0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCi0gICAgTCJTdG9wX0NvbmYiLA0KLSAgICBMIkNvbmZv cm1hbmNlIFRlc3QgZm9yIFN0b3AiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KLSAg ICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCi0gICAg QkJUZXN0TmV3U3RvcENvbmZvcm1hbmNlVGVzdA0KLSAgfSwNCi0gIHsNCi0gICAgUFhFX0FSUF9D T05GT1JNQU5DRV9BVVRPX1RFU1RfR1VJRCwNCi0gICAgTCJBcnBfQ29uZiIsDQotICAgIEwiQXV0 byBDb25mb3JtYW5jZSBUZXN0IGZvciBBcnAiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFM LA0KLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywN Ci0gICAgQkJUZXN0QXJwQ29uZm9ybWFuY2VBdXRvVGVzdA0KLSAgfSwNCi0NCi0jaWZkZWYgRUZJ X1RFU1RfRVhIQVVTVElWRSAgICAgICAgICAvL1N3aXRjaCBvZmYgdGhlIDUgb2xkIHRlc3QgY2Fz ZQ0KKyAgICB7UFhFX1NUQVJUX0ZVTkNUSU9OX1RFU1RfR1VJRCwNCisgICAgIEwiU3RhcnRfRnVu YyIsDQorICAgICBMIkZ1bmN0aW9uIFRlc3Qgb2YgU3RhcnQiLA0KKyAgICAgRUZJX1RFU1RfTEVW RUxfREVGQVVMVCwNCisgICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCisgICAgIEVGSV9URVNU X0NBU0VfQVVUTywNCisgICAgIEJCVGVzdE5ld1N0YXJ0RnVuY3Rpb25UZXN0fSwNCisgICAge1BY RV9TVE9QX0ZVTkNUSU9OX1RFU1RfR1VJRCwNCisgICAgIEwiU3RvcF9GdW5jIiwNCisgICAgIEwi RnVuY3Rpb24gVGVzdCBvZiBTdG9wIiwNCisgICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsDQor ICAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQorICAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQor ICAgICBCQlRlc3ROZXdTdG9wRnVuY3Rpb25UZXN0fSwNCisgICAge1BYRV9TRVRJUEZJTFRFUl9G VU5DVElPTl9URVNUX0dVSUQsDQorICAgICBMIlNldElwRmlsdGVyX0Z1bmMiLA0KKyAgICAgTCJG dW5jdGlvbiBUZXN0IG9mIFNldElwRmlsdGVyIiwNCisgICAgIEVGSV9URVNUX0xFVkVMX0RFRkFV TFQsDQorICAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQorICAgICBFRklfVEVTVF9DQVNFX0FV VE8sDQorICAgICBCQlRlc3RTZXRJcEZpbHRlckZ1bmN0aW9uVGVzdH0sDQorICAgIHtQWEVfU1RB UlRfQ09ORk9STUFOQ0VfVEVTVF9HVUlELA0KKyAgICAgTCJTdGFydF9Db25mIiwNCisgICAgIEwi Q29uZm9ybWFuY2UgVGVzdCBmb3IgU3RhcnQiLA0KKyAgICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1B TCwNCisgICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCisgICAgIEVGSV9URVNUX0NBU0VfQVVU TywNCisgICAgIEJCVGVzdE5ld1N0YXJ0Q29uZm9ybWFuY2VUZXN0fSwNCisgICAge1BYRV9TVE9Q X0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCisgICAgIEwiU3RvcF9Db25mIiwNCisgICAgIEwiQ29u Zm9ybWFuY2UgVGVzdCBmb3IgU3RvcCIsDQorICAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0K KyAgICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLA0KKyAgICAgRUZJX1RFU1RfQ0FTRV9BVVRPLA0K KyAgICAgQkJUZXN0TmV3U3RvcENvbmZvcm1hbmNlVGVzdH0sDQorICAgIHtQWEVfQVJQX0NPTkZP Uk1BTkNFX0FVVE9fVEVTVF9HVUlELA0KKyAgICAgTCJBcnBfQ29uZiIsDQorICAgICBMIkF1dG8g Q29uZm9ybWFuY2UgVGVzdCBmb3IgQXJwIiwNCisgICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUws DQorICAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQorICAgICBFRklfVEVTVF9DQVNFX0FVVE8s DQorICAgICBCQlRlc3RBcnBDb25mb3JtYW5jZUF1dG9UZXN0fSwNCisNCisjaWZkZWYgRUZJX1RF U1RfRVhIQVVTVElWRSAvLyBTd2l0Y2ggb2ZmIHRoZSA1IG9sZCB0ZXN0IGNhc2UNCiAgICAgUFhF X1NUQVJUX0ZVTkNUSU9OX1RFU1RfR1VJRCwNCiAgICAgTCJTdGFydF9GdW5jIiwNCiAgICAgTCJG dW5jdGlvbiBUZXN0IG9mIFN0YXJ0IiwNCiAgICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwNCiAg ICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLA0KICAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQotICAg IEJCVGVzdFN0YXJ0RnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU1RPUF9GVU5D VElPTl9URVNUX0dVSUQsDQotICAgIEwiU3RvcF9GdW5jIiwNCi0gICAgTCJGdW5jdGlvbiBUZXN0 IG9mIFN0b3AiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULA0KLSAgICBnU3VwcG9ydFBy b3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfQVVUTywNCi0gICAgQkJUZXN0U3RvcEZ1 bmN0aW9uVGVzdA0KLSAgfSwNCi0gIHsNCi0gICAgUFhFX1NFVElQRklMVEVSX0ZVTkNUSU9OX1RF U1RfR1VJRCwNCi0gICAgTCJTZXRJcEZpbHRlcl9GdW5jIiwNCi0gICAgTCJGdW5jdGlvbiBUZXN0 IG9mIFNldElwRmlsdGVyIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwNCi0gICAgZ1N1 cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQotICAgIEJCVGVz dFNldElwRmlsdGVyRnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU1RBUlRfQ09O Rk9STUFOQ0VfVEVTVF9HVUlELA0KLSAgICBMIlN0YXJ0X0NvbmYiLA0KLSAgICBMIkNvbmZvcm1h bmNlIFRlc3QgZm9yIFN0YXJ0IiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCi0gICAg Z1N1cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQotICAgIEJC VGVzdFN0YXJ0Q29uZm9ybWFuY2VUZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU1RPUF9DT05G T1JNQU5DRV9URVNUX0dVSUQsDQotICAgIEwiU3RvcF9Db25mIiwNCi0gICAgTCJDb25mb3JtYW5j ZSBUZXN0IGZvciBTdG9wIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCi0gICAgZ1N1 cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX0FVVE8sDQotICAgIEJCVGVz dFN0b3BDb25mb3JtYW5jZVRlc3QNCi0gIH0sDQorICAgIEJCVGVzdFN0YXJ0RnVuY3Rpb25UZXN0 fSwNCisgICAgICAgICAgICAgICAgICAgICAgICB7UFhFX1NUT1BfRlVOQ1RJT05fVEVTVF9HVUlE LCBMIlN0b3BfRnVuYyIsIEwiRnVuY3Rpb24gVGVzdCBvZiBTdG9wIiwgRUZJX1RFU1RfTEVWRUxf REVGQVVMVCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX0FVVE8sIEJCVGVz dFN0b3BGdW5jdGlvblRlc3R9LCB7UFhFX1NFVElQRklMVEVSX0ZVTkNUSU9OX1RFU1RfR1VJRCwg TCJTZXRJcEZpbHRlcl9GdW5jIiwgTCJGdW5jdGlvbiBUZXN0IG9mIFNldElwRmlsdGVyIiwgRUZJ X1RFU1RfTEVWRUxfREVGQVVMVCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNF X0FVVE8sIEJCVGVzdFNldElwRmlsdGVyRnVuY3Rpb25UZXN0fSwge1BYRV9TVEFSVF9DT05GT1JN QU5DRV9URVNUX0dVSUQsIEwiU3RhcnRfQ29uZiIsIEwiQ29uZm9ybWFuY2UgVGVzdCBmb3IgU3Rh cnQiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9U RVNUX0NBU0VfQVVUTywgQkJUZXN0U3RhcnRDb25mb3JtYW5jZVRlc3R9LCB7UFhFX1NUT1BfQ09O Rk9STUFOQ0VfVEVTVF9HVUlELCBMIlN0b3BfQ29uZiIsIEwiQ29uZm9ybWFuY2UgVGVzdCBmb3Ig U3RvcCIsIEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJ X1RFU1RfQ0FTRV9BVVRPLCBCQlRlc3RTdG9wQ29uZm9ybWFuY2VUZXN0fSwNCg0KLS8vI2lmZGVm IEVGSV9URVNUX0VYSEFVU1RJVkUNCi0gIHsNCi0gICAgUFhFX0RIQ1BfRlVOQ1RJT05fVEVTVF9H VUlELA0KLSAgICBMIkRoY3BfRnVuY19NYW51YWwiLA0KLSAgICBMIk1hbnVhbCBGdW5jdGlvbiBU ZXN0IG9mIERoY3AiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9ERUZBVUxULA0KLSAgICBnU3VwcG9y dFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfTUFOVUFMLA0KLSAgICBCQlRlc3RE aGNwRnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfRElTQ09WRVJfRlVOQ1RJT05f VEVTVF9HVUlELA0KLSAgICBMIkRpc2NvdmVyX0Z1bmNfTWFudWFsIiwNCi0gICAgTCJNYW51YWwg RnVuY3Rpb24gVGVzdCBvZiBEaXNjb3ZlciIsDQotICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQs DQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUws DQotICAgIEJCVGVzdERpc2NvdmVyRnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVf TVRGVFBfRlVOQ1RJT05fVEVTVF9HVUlELA0KLSAgICBMIk10ZnRwX0Z1bmNfTWFudWFsIiwNCi0g ICAgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBNdGZ0cCIsDQotICAgIEVGSV9URVNUX0xFVkVM X0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FT RV9NQU5VQUwsDQotICAgIEJCVGVzdE10ZnRwRnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAg ICBQWEVfVURQV1JJVEVfRlVOQ1RJT05fVEVTVF9HVUlELA0KLSAgICBMIlVkcFdyaXRlX0Z1bmNf TWFudWFsIiwNCi0gICAgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBVZHBXcml0ZSIsDQotICAg IEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0g ICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdFVkcFdyaXRlRnVuY3Rpb25UZXN0 DQotICB9LA0KLSAgew0KLSAgICBQWEVfVURQUkVBRF9GVU5DVElPTl9URVNUX0dVSUQsDQotICAg IEwiVWRwUmVhZF9GdW5jX01hbnVhbCIsDQotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2Yg VWRwUmVhZCIsDQotICAgIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJv dG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdFVkcFJl YWRGdW5jdGlvblRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9BUlBfRlVOQ1RJT05fVEVTVF9H VUlELA0KLSAgICBMIkFycF9GdW5jX01hbnVhbCIsDQotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRl c3Qgb2YgQXJwIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwNCi0gICAgZ1N1cHBvcnRQ cm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwNCi0gICAgQkJUZXN0QXJw RnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU0VUUEFSQU1FVEVSU19GVU5DVElP Tl9URVNUX0dVSUQsDQotICAgIEwiU2V0UGFyYW1ldGVyc19GdW5jX01hbnVhbCIsDQotICAgIEwi TWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgU2V0UGFyYW1ldGVycyIsDQotICAgIEVGSV9URVNUX0xF VkVMX0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1Rf Q0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdFNldFBhcmFtZXRlcnNGdW5jdGlvblRlc3QNCi0gIH0s DQotICB7DQotICAgIFBYRV9TRVRTVEFUSU9OSVBfRlVOQ1RJT05fVEVTVF9HVUlELA0KLSAgICBM IlNldFN0YXRpb25JcF9GdW5jX01hbnVhbCIsDQotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qg b2YgU2V0U3RhdGlvbklwIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwNCi0gICAgZ1N1 cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwNCi0gICAgQkJU ZXN0U2V0U3RhdGlvbklwRnVuY3Rpb25UZXN0DQotICB9LA0KLSAgew0KLSAgICBQWEVfU0VUUEFD S0VUU19GVU5DVElPTl9URVNUX0dVSUQsDQotICAgIEwiU2V0UGFja2V0c19GdW5jX01hbnVhbCIs DQotICAgIEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgU2V0UGFja2V0cyIsDQotICAgIEVGSV9U RVNUX0xFVkVMX0RFRkFVTFQsDQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJ X1RFU1RfQ0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdFNldFBhY2tldHNGdW5jdGlvblRlc3QNCi0g IH0sDQotICB7DQotICAgIFBYRV9ESENQX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCi0gICAgTCJE aGNwX0NvbmZfTWFudWFsIiwNCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgRGhj cCIsDQotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsDQotICAgIGdTdXBwb3J0UHJvdG9jb2xH dWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdERoY3BDb25mb3Jt YW5jZVRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9ESVNDT1ZFUl9DT05GT1JNQU5DRV9URVNU X0dVSUQsDQotICAgIEwiRGlzY292ZXJfQ29uZl9NYW51YWwiLA0KLSAgICBMIk1hbnVhbCBDb25m b3JtYW5jZSBUZXN0IGZvciBEaXNjb3ZlciIsDQotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUws DQotICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUws DQotICAgIEJCVGVzdERpc2NvdmVyQ29uZm9ybWFuY2VUZXN0DQotICB9LA0KLSAgew0KLSAgICBQ WEVfTXRmdHBfQ09ORk9STUFOQ0VfVEVTVF9HVUlELA0KLSAgICBMIk10ZnRwX0NvbmZfTWFudWFs IiwNCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgTXRmdHAiLA0KLSAgICBFRklf VEVTVF9MRVZFTF9NSU5JTUFMLA0KLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVG SV9URVNUX0NBU0VfTUFOVUFMLA0KLSAgICBCQlRlc3RNdGZ0cENvbmZvcm1hbmNlVGVzdA0KLSAg fSwNCi0gIHsNCi0gICAgUFhFX1VEUFdSSVRFX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCi0gICAg TCJEaGNwX0NvbmZfTWFudWFsIiwNCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3Ig VWRwV3JpdGUiLA0KLSAgICBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLA0KLSAgICBnU3VwcG9ydFBy b3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NBU0VfTUFOVUFMLA0KLSAgICBCQlRlc3RVZHBX cml0ZUNvbmZvcm1hbmNlVGVzdA0KLSAgfSwNCi0gIHsNCi0gICAgUFhFX1VEUFJFQURfQ09ORk9S TUFOQ0VfVEVTVF9HVUlELA0KLSAgICBMIlVkcFJlYWRfQ29uZl9NYW51YWwiLA0KLSAgICBMIk1h bnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBVZHBSZWFkIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxf TUlOSU1BTCwNCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNF X01BTlVBTCwNCi0gICAgQkJUZXN0VWRwUmVhZENvbmZvcm1hbmNlVGVzdA0KLSAgfSwNCi0gIHsN Ci0gICAgUFhFX1NFVElQRklMVEVSX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCi0gICAgTCJTZXRJ cEZpbHRlcl9Db25mX01hbnVhbCIsDQotICAgIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9y IFNldElwRmlsdGVyIiwNCi0gICAgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCi0gICAgZ1N1cHBv cnRQcm90b2NvbEd1aWQxLA0KLSAgICBFRklfVEVTVF9DQVNFX01BTlVBTCwNCi0gICAgQkJUZXN0 U2V0SXBGaWx0ZXJDb25mb3JtYW5jZVRlc3QNCi0gIH0sDQotICB7DQotICAgIFBYRV9BUlBfQ09O Rk9STUFOQ0VfTUFOVUFMX1RFU1RfR1VJRCwNCi0gICAgTCJBUlBfQ29uZl9NYW51YWwiLA0KLSAg ICBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBBUlAiLA0KLSAgICBFRklfVEVTVF9MRVZF TF9NSU5JTUFMLA0KLSAgICBnU3VwcG9ydFByb3RvY29sR3VpZDEsDQotICAgIEVGSV9URVNUX0NB U0VfTUFOVUFMLA0KLSAgICBCQlRlc3RBcnBDb25mb3JtYW5jZU1hbnVhbFRlc3QNCi0gIH0sDQot ICB7DQotICAgIFBYRV9TRVRQQVJBTUVURVJTX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwNCi0gICAg TCJTZXRQYXJhbWV0ZXJzX0NvbmZfTWFudWFsIiwNCi0gICAgTCJNYW51YWwgQ29uZm9ybWFuY2Ug VGVzdCBmb3IgU2V0UGFyYW1ldGVycyIsDQotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsDQot ICAgIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsDQot ICAgIEJCVGVzdFNldFBhcmFtZXRlcnNDb25mb3JtYW5jZVRlc3QNCi0gIH0sDQotICB7DQotICAg IFBYRV9TRVRTVEFUSU9OSVBfQ09ORk9STUFOQ0VfVEVTVF9HVUlELA0KLSAgICBMIlNldFN0YXRp b25JcF9Db25mX01hbnVhbCIsDQotICAgIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIFNl dFN0YXRpb25JcCIsDQotICAgIEVGSV9URVNUX0xFVkVMX01JTklNQUwsDQotICAgIGdTdXBwb3J0 UHJvdG9jb2xHdWlkMSwNCi0gICAgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsDQotICAgIEJCVGVzdFNl dFN0YXRpb25JcENvbmZvcm1hbmNlVGVzdA0KLSAgfSwNCi0gIHsNCi0gICAgUFhFX1NFVFBBQ0tF VFNfQ09ORk9STUFOQ0VfVEVTVF9HVUlELA0KLSAgICBMIlNldFBhY2tldHNfQ29uZl9NYW51YWwi LA0KLSAgICBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBTZXRQYWNrZXRzIiwNCi0gICAg RUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwNCi0gICAgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLA0KLSAg ICBFRklfVEVTVF9DQVNFX01BTlVBTCwNCi0gICAgQkJUZXN0U2V0UGFja2V0c0NvbmZvcm1hbmNl VGVzdA0KLSAgfSwNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAjaWZkZWYgRUZJX1RFU1Rf RVhIQVVTVElWRQ0KKyAgICB7UFhFX0RIQ1BfRlVOQ1RJT05fVEVTVF9HVUlELCBMIkRoY3BfRnVu Y19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9mIERoY3AiLCBFRklfVEVTVF9MRVZF TF9ERUZBVUxULCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBC QlRlc3REaGNwRnVuY3Rpb25UZXN0fSwge1BYRV9ESVNDT1ZFUl9GVU5DVElPTl9URVNUX0dVSUQs IEwiRGlzY292ZXJfRnVuY19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9mIERpc2Nv dmVyIiwgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklf VEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0RGlzY292ZXJGdW5jdGlvblRlc3R9LCB7UFhFX01URlRQ X0ZVTkNUSU9OX1RFU1RfR1VJRCwgTCJNdGZ0cF9GdW5jX01hbnVhbCIsIEwiTWFudWFsIEZ1bmN0 aW9uIFRlc3Qgb2YgTXRmdHAiLCBFRklfVEVTVF9MRVZFTF9ERUZBVUxULCBnU3VwcG9ydFByb3Rv Y29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RNdGZ0cEZ1bmN0aW9uVGVzdH0s IHtQWEVfVURQV1JJVEVfRlVOQ1RJT05fVEVTVF9HVUlELCBMIlVkcFdyaXRlX0Z1bmNfTWFudWFs IiwgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBVZHBXcml0ZSIsIEVGSV9URVNUX0xFVkVMX0RF RkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVz dFVkcFdyaXRlRnVuY3Rpb25UZXN0fSwge1BYRV9VRFBSRUFEX0ZVTkNUSU9OX1RFU1RfR1VJRCwg TCJVZHBSZWFkX0Z1bmNfTWFudWFsIiwgTCJNYW51YWwgRnVuY3Rpb24gVGVzdCBvZiBVZHBSZWFk IiwgRUZJX1RFU1RfTEVWRUxfREVGQVVMVCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVT VF9DQVNFX01BTlVBTCwgQkJUZXN0VWRwUmVhZEZ1bmN0aW9uVGVzdH0sIHtQWEVfQVJQX0ZVTkNU SU9OX1RFU1RfR1VJRCwgTCJBcnBfRnVuY19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0 IG9mIEFycCIsIEVGSV9URVNUX0xFVkVMX0RFRkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwg RUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdEFycEZ1bmN0aW9uVGVzdH0sIHtQWEVfU0VUUEFS QU1FVEVSU19GVU5DVElPTl9URVNUX0dVSUQsIEwiU2V0UGFyYW1ldGVyc19GdW5jX01hbnVhbCIs IEwiTWFudWFsIEZ1bmN0aW9uIFRlc3Qgb2YgU2V0UGFyYW1ldGVycyIsIEVGSV9URVNUX0xFVkVM X0RFRkFVTFQsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJC VGVzdFNldFBhcmFtZXRlcnNGdW5jdGlvblRlc3R9LCB7UFhFX1NFVFNUQVRJT05JUF9GVU5DVElP Tl9URVNUX0dVSUQsIEwiU2V0U3RhdGlvbklwX0Z1bmNfTWFudWFsIiwgTCJNYW51YWwgRnVuY3Rp b24gVGVzdCBvZiBTZXRTdGF0aW9uSXAiLCBFRklfVEVTVF9MRVZFTF9ERUZBVUxULCBnU3VwcG9y dFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RTZXRTdGF0aW9uSXBG dW5jdGlvblRlc3R9LCB7UFhFX1NFVFBBQ0tFVFNfRlVOQ1RJT05fVEVTVF9HVUlELCBMIlNldFBh Y2tldHNfRnVuY19NYW51YWwiLCBMIk1hbnVhbCBGdW5jdGlvbiBUZXN0IG9mIFNldFBhY2tldHMi LCBFRklfVEVTVF9MRVZFTF9ERUZBVUxULCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNU X0NBU0VfTUFOVUFMLCBCQlRlc3RTZXRQYWNrZXRzRnVuY3Rpb25UZXN0fSwge1BYRV9ESENQX0NP TkZPUk1BTkNFX1RFU1RfR1VJRCwgTCJEaGNwX0NvbmZfTWFudWFsIiwgTCJNYW51YWwgQ29uZm9y bWFuY2UgVGVzdCBmb3IgRGhjcCIsIEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJv dG9jb2xHdWlkMSwgRUZJX1RFU1RfQ0FTRV9NQU5VQUwsIEJCVGVzdERoY3BDb25mb3JtYW5jZVRl c3R9LCB7UFhFX0RJU0NPVkVSX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwgTCJEaXNjb3Zlcl9Db25m X01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRlc3QgZm9yIERpc2NvdmVyIiwgRUZJX1RF U1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX01B TlVBTCwgQkJUZXN0RGlzY292ZXJDb25mb3JtYW5jZVRlc3R9LCB7UFhFX010ZnRwX0NPTkZPUk1B TkNFX1RFU1RfR1VJRCwgTCJNdGZ0cF9Db25mX01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1hbmNl IFRlc3QgZm9yIE10ZnRwIiwgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2Nv bEd1aWQxLCBFRklfVEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0TXRmdHBDb25mb3JtYW5jZVRlc3R9 LCB7UFhFX1VEUFdSSVRFX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwgTCJEaGNwX0NvbmZfTWFudWFs IiwgTCJNYW51YWwgQ29uZm9ybWFuY2UgVGVzdCBmb3IgVWRwV3JpdGUiLCBFRklfVEVTVF9MRVZF TF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBC QlRlc3RVZHBXcml0ZUNvbmZvcm1hbmNlVGVzdH0sIHtQWEVfVURQUkVBRF9DT05GT1JNQU5DRV9U RVNUX0dVSUQsIEwiVWRwUmVhZF9Db25mX01hbnVhbCIsIEwiTWFudWFsIENvbmZvcm1hbmNlIFRl c3QgZm9yIFVkcFJlYWQiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29s R3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RVZHBSZWFkQ29uZm9ybWFuY2VUZXN0 fSwge1BYRV9TRVRJUEZJTFRFUl9DT05GT1JNQU5DRV9URVNUX0dVSUQsIEwiU2V0SXBGaWx0ZXJf Q29uZl9NYW51YWwiLCBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBTZXRJcEZpbHRlciIs IEVGSV9URVNUX0xFVkVMX01JTklNQUwsIGdTdXBwb3J0UHJvdG9jb2xHdWlkMSwgRUZJX1RFU1Rf Q0FTRV9NQU5VQUwsIEJCVGVzdFNldElwRmlsdGVyQ29uZm9ybWFuY2VUZXN0fSwge1BYRV9BUlBf Q09ORk9STUFOQ0VfTUFOVUFMX1RFU1RfR1VJRCwgTCJBUlBfQ29uZl9NYW51YWwiLCBMIk1hbnVh bCBDb25mb3JtYW5jZSBUZXN0IGZvciBBUlAiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3Vw cG9ydFByb3RvY29sR3VpZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RBcnBDb25mb3Jt YW5jZU1hbnVhbFRlc3R9LCB7UFhFX1NFVFBBUkFNRVRFUlNfQ09ORk9STUFOQ0VfVEVTVF9HVUlE LCBMIlNldFBhcmFtZXRlcnNfQ29uZl9NYW51YWwiLCBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0 IGZvciBTZXRQYXJhbWV0ZXJzIiwgRUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90 b2NvbEd1aWQxLCBFRklfVEVTVF9DQVNFX01BTlVBTCwgQkJUZXN0U2V0UGFyYW1ldGVyc0NvbmZv cm1hbmNlVGVzdH0sIHtQWEVfU0VUU1RBVElPTklQX0NPTkZPUk1BTkNFX1RFU1RfR1VJRCwgTCJT ZXRTdGF0aW9uSXBfQ29uZl9NYW51YWwiLCBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBT ZXRTdGF0aW9uSXAiLCBFRklfVEVTVF9MRVZFTF9NSU5JTUFMLCBnU3VwcG9ydFByb3RvY29sR3Vp ZDEsIEVGSV9URVNUX0NBU0VfTUFOVUFMLCBCQlRlc3RTZXRTdGF0aW9uSXBDb25mb3JtYW5jZVRl c3R9LCB7UFhFX1NFVFBBQ0tFVFNfQ09ORk9STUFOQ0VfVEVTVF9HVUlELCBMIlNldFBhY2tldHNf Q29uZl9NYW51YWwiLCBMIk1hbnVhbCBDb25mb3JtYW5jZSBUZXN0IGZvciBTZXRQYWNrZXRzIiwg RUZJX1RFU1RfTEVWRUxfTUlOSU1BTCwgZ1N1cHBvcnRQcm90b2NvbEd1aWQxLCBFRklfVEVTVF9D QVNFX01BTlVBTCwgQkJUZXN0U2V0UGFja2V0c0NvbmZvcm1hbmNlVGVzdH0sDQogI2VuZGlmDQoN Ci0gIEVGSV9OVUxMX0dVSUQNCi19Ow0KLQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9O VUxMX0dVSUQNCit9DQorOw0KDQogRUZJX0JCX1RFU1RfUFJPVE9DT0wgKmdCQlRlc3RQcm90b2Nv bEludGVyZmFjZTsNCg0KIEVGSV9TVEFUVVMNCiBFRklBUEkNCi1CQlRlc3RQeGVCY1VubG9hZCAo DQotICBJTiBFRklfSEFORExFICAgICAgIEltYWdlSGFuZGxlDQotICApOw0KK0JCVGVzdFB4ZUJj VW5sb2FkKA0KKyAgICBJTiBFRklfSEFORExFIEltYWdlSGFuZGxlKTsNCg0KIC8qKg0KICAqICBD cmVhdGVzL2luc3RhbGxzIHRoZSBCbGFja0JveCBJbnRlcmZhY2UgYW5kIGVtaW5hdGluZyBFbnRy eSBQb2ludCBub2RlIGxpc3QuDQpAQCAtMzQ5LDM0ICsxMjcsMzQgQEAgQkJUZXN0UHhlQmNVbmxv YWQgKA0KICAqLw0KIEVGSV9TVEFUVVMNCiBFRklBUEkNCi1Jbml0aWFsaXplQkJUZXN0UHhlQkNQ cm90b2NvbCAoDQotICBJTiBFRklfSEFORExFICAgICAgICAgICBJbWFnZUhhbmRsZSwNCi0gIElO IEVGSV9TWVNURU1fVEFCTEUgICAgICpTeXN0ZW1UYWJsZQ0KLSAgKQ0KK0luaXRpYWxpemVCQlRl c3RQeGVCQ1Byb3RvY29sKA0KKyAgICBJTiBFRklfSEFORExFIEltYWdlSGFuZGxlLA0KKyAgICBJ TiBFRklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSkNCiB7DQogICBFRklfU1RBVFVTIFN0YXR1 czsNCg0KLSAgRWZpSW5pdGlhbGl6ZVRlc3RMaWIgKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7 DQotICBTY3RJbml0aWFsaXplTGliIChJbWFnZUhhbmRsZSwgU3lzdGVtVGFibGUpOw0KLSAgU2N0 SW5pdGlhbGl6ZURyaXZlciAoSW1hZ2VIYW5kbGUsIFN5c3RlbVRhYmxlKTsNCisgIEVmaUluaXRp YWxpemVUZXN0TGliKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7DQorICBTY3RJbml0aWFsaXpl TGliKEltYWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7DQorICBTY3RJbml0aWFsaXplRHJpdmVyKElt YWdlSGFuZGxlLCBTeXN0ZW1UYWJsZSk7DQoNCi0gIFN0YXR1cyA9IGd0QlMtPkNyZWF0ZUV2ZW50 IChFVlRfVElNRVIsIDAsIChFRklfRVZFTlRfTk9USUZZKSBOVUxMLCBOVUxMLCAmVGltZXJFdmVu dCk7DQotICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCisgIFN0YXR1cyA9IGd0QlMtPkNyZWF0 ZUV2ZW50KEVWVF9USU1FUiwgMCwgKEVGSV9FVkVOVF9OT1RJRlkpTlVMTCwgTlVMTCwgJlRpbWVy RXZlbnQpOw0KKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgew0KICAgICByZXR1cm4gU3Rh dHVzOw0KICAgfQ0KDQotICBTdGF0dXMgPSBHZXRTeXN0ZW1EZXZpY2VQYXRoQW5kRmlsZVBhdGgg KEltYWdlSGFuZGxlKTsNCi0gIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KKyAgU3RhdHVzID0g R2V0U3lzdGVtRGV2aWNlUGF0aEFuZEZpbGVQYXRoKEltYWdlSGFuZGxlKTsNCisgIGlmIChFRklf RVJST1IoU3RhdHVzKSkNCisgIHsNCiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCg0KLSAgcmV0 dXJuIEVmaUluaXRBbmRJbnN0YWxsQkJUZXN0SW50ZXJmYWNlICgNCi0gICAgICAgICAgICZJbWFn ZUhhbmRsZSwNCi0gICAgICAgICAgICZnRWZpUHhlQmNUZXN0UHJvdEZpZWxkLA0KLSAgICAgICAg ICAgZ1B4ZVRlc3RFbnRyeUZpZWxkLA0KLSAgICAgICAgICAgQkJUZXN0UHhlQmNVbmxvYWQsDQot ICAgICAgICAgICAmZ0JCVGVzdFByb3RvY29sSW50ZXJmYWNlDQotICAgICAgICAgICApOw0KKyAg cmV0dXJuIEVmaUluaXRBbmRJbnN0YWxsQkJUZXN0SW50ZXJmYWNlKA0KKyAgICAgICZJbWFnZUhh bmRsZSwNCisgICAgICAmZ0VmaVB4ZUJjVGVzdFByb3RGaWVsZCwNCisgICAgICBnUHhlVGVzdEVu dHJ5RmllbGQsDQorICAgICAgQkJUZXN0UHhlQmNVbmxvYWQsDQorICAgICAgJmdCQlRlc3RQcm90 b2NvbEludGVyZmFjZSk7DQogfQ0KDQogLyoqDQpAQCAtMzg2LDI5ICsxNjQsMjkgQEAgSW5pdGlh bGl6ZUJCVGVzdFB4ZUJDUHJvdG9jb2wgKA0KICAqLw0KIEVGSV9TVEFUVVMNCiBFRklBUEkNCi1C QlRlc3RQeGVCY1VubG9hZCAoDQotICBJTiBFRklfSEFORExFICAgICAgIEltYWdlSGFuZGxlDQot ICApDQorQkJUZXN0UHhlQmNVbmxvYWQoDQorICAgIElOIEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUp DQogew0KICAgRUZJX1NUQVRVUyBTdGF0dXM7DQoNCi0gIGlmIChnRGV2aWNlUGF0aCAhPSBOVUxM KSB7DQotICAgIGd0QlMtPkZyZWVQb29sIChnRGV2aWNlUGF0aCk7DQorICBpZiAoZ0RldmljZVBh dGggIT0gTlVMTCkNCisgIHsNCisgICAgZ3RCUy0+RnJlZVBvb2woZ0RldmljZVBhdGgpOw0KICAg fQ0KDQotICBpZiAoZ0ZpbGVQYXRoICE9IE5VTEwpIHsNCi0gICAgZ3RCUy0+RnJlZVBvb2wgKGdG aWxlUGF0aCk7DQorICBpZiAoZ0ZpbGVQYXRoICE9IE5VTEwpDQorICB7DQorICAgIGd0QlMtPkZy ZWVQb29sKGdGaWxlUGF0aCk7DQogICB9DQoNCi0gIFN0YXR1cyA9IGd0QlMtPkNsb3NlRXZlbnQg KFRpbWVyRXZlbnQpOw0KLSAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQotDQorICBTdGF0dXMg PSBndEJTLT5DbG9zZUV2ZW50KFRpbWVyRXZlbnQpOw0KKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KQ0KKyAgew0KICAgfQ0KDQotICByZXR1cm4gRWZpVW5pbnN0YWxsQW5kRnJlZUJCVGVzdEludGVy ZmFjZSAoDQotICAgICAgICAgICBJbWFnZUhhbmRsZSwNCi0gICAgICAgICAgIGdCQlRlc3RQcm90 b2NvbEludGVyZmFjZQ0KLSAgICAgICAgICAgKTsNCisgIHJldHVybiBFZmlVbmluc3RhbGxBbmRG cmVlQkJUZXN0SW50ZXJmYWNlKA0KKyAgICAgIEltYWdlSGFuZGxlLA0KKyAgICAgIGdCQlRlc3RQ cm90b2NvbEludGVyZmFjZSk7DQogfQ0KDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiogSW50ZXJuYWwgRnVuY3Rpb24gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lw0KQEAgLTQyMiw0MiArMjAwLDQ0IEBAIEJCVGVzdFB4ZUJjVW5sb2FkICgNCiAgKiAgQHJldHVy biBFRklfU1VDQ0VTUyBGaW5pc2ggdGhlIHRlc3Qgc3VjY2Vzc2Z1bGx5Lg0KICAqLw0KIEVGSV9T VEFUVVMNCi1DaGFuZ2VQeGVTdGF0ZSAoDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NP TCAgICAgKlB4ZUludGVyZmFjZSwNCi0gIElOIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAg ICBVc2luZ0lwdjYsDQotICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgQ3VyLA0K LSAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgIE54dA0KLSAgKQ0KK0NoYW5nZVB4 ZVN0YXRlKA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqUHhlSW50ZXJmYWNl LA0KKyAgICBJTiBCT09MRUFOIFVzaW5nSXB2NiwNCisgICAgSU4gQk9PTEVBTiBDdXIsDQorICAg IElOIEJPT0xFQU4gTnh0KQ0KIHsNCi0gIGlmIChDdXI9PU54dCkgew0KKyAgaWYgKEN1ciA9PSBO eHQpDQorICB7DQogICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiAgIH0NCg0KLSAgaWYgKEN1ciA9 PSBUUlVFKSB7DQotICAgIHJldHVybiBQeGVJbnRlcmZhY2UtPlN0b3AgKFB4ZUludGVyZmFjZSk7 DQorICBpZiAoQ3VyID09IFRSVUUpDQorICB7DQorICAgIHJldHVybiBQeGVJbnRlcmZhY2UtPlN0 b3AoUHhlSW50ZXJmYWNlKTsNCiAgIH0NCg0KLSAgcmV0dXJuIFB4ZUludGVyZmFjZS0+U3RhcnQg KFB4ZUludGVyZmFjZSwgVXNpbmdJcHY2KTsNCisgIHJldHVybiBQeGVJbnRlcmZhY2UtPlN0YXJ0 KFB4ZUludGVyZmFjZSwgVXNpbmdJcHY2KTsNCiB9DQoNCiBFRklfU1RBVFVTDQotUmVJbml0UHhl QmFzZUNvZGUgKA0KLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgICAgKkJjSW50ZXJm YWNlDQotKQ0KK1JlSW5pdFB4ZUJhc2VDb2RlKA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9Q Uk9UT0NPTCAqQmNJbnRlcmZhY2UpDQogew0KLSAgRUZJX1NUQVRVUyAgICAgU3RhdHVzOw0KKyAg RUZJX1NUQVRVUyBTdGF0dXM7DQoNCiAgIC8vIFJlLWluaXRpYWxpemUgdGhlIEVGSV9QWEVfQkFT RV9DT0RFX1BST1RPQ09MDQogICBpZiAoQmNJbnRlcmZhY2UtPk1vZGUtPlN0YXJ0ZWQgPT0gVFJV RSkNCiAgIHsNCi0gICAgU3RhdHVzID0gQmNJbnRlcmZhY2UtPlN0b3AgKEJjSW50ZXJmYWNlKTsN Ci0gICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKXsNCisgICAgU3RhdHVzID0gQmNJbnRlcmZhY2Ut PlN0b3AoQmNJbnRlcmZhY2UpOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgIHsN CiAgICAgICByZXR1cm4gU3RhdHVzOw0KICAgICB9DQogICB9DQoNCi0gIFN0YXR1cyA9IEJjSW50 ZXJmYWNlLT5TdGFydCAoQmNJbnRlcmZhY2UsIEZBTFNFKTsNCi0gIGlmIChFRklfRVJST1IoU3Rh dHVzKSl7DQorICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U3RhcnQoQmNJbnRlcmZhY2UsIEZBTFNF KTsNCisgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgIHsNCiAgICAgcmV0dXJuIFN0YXR1czsN CiAgIH0NCg0KQEAgLTQ2OSwxOSArMjQ5LDE5IEBAIFJlSW5pdFB4ZUJhc2VDb2RlICgNCiAgKiAg QHJldHVybiBUUlVFIHRvIGluZGljYXRlIHVzZXIgb3BlcmF0aW9uIGNvbXBsZXRlLg0KICAqLw0K IEJPT0xFQU4NCi1XYWl0Rm9yQW55SW5wdXQgKCkNCitXYWl0Rm9yQW55SW5wdXQoKQ0KIHsNCi0g IFVJTlROICAgICAgICAgICAgICAgICAgIE5vV2FpdCA9IDEsIFdhaXRJbmRleDsNCi0gIEVGSV9F VkVOVCAgICAgICAgICAgICAgIFdhaXRMaXN0WzFdOw0KLSAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgU3RhdHVzOw0KLSAgRUZJX0lOUFVUX0tFWSAgICAgICAgICAgS2V5Ow0KKyAgVUlOVE4gTm9X YWl0ID0gMSwgV2FpdEluZGV4Ow0KKyAgRUZJX0VWRU5UIFdhaXRMaXN0WzFdOw0KKyAgRUZJX1NU QVRVUyBTdGF0dXM7DQorICBFRklfSU5QVVRfS0VZIEtleTsNCg0KLSAgU2N0UHJpbnQgKEwiUHJl c3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpOw0KKyAgU2N0UHJpbnQoTCJQcmVzcyBhbnkga2V5 IHRvIGNvbnRpbnVlLi4uIik7DQoNCiAgIC8vDQogICAvLyBTZXQgMSBzZWNvbmQgcGVyaW9kaWMg dGltZXINCiAgIC8vDQotICBTdGF0dXMgPSBndEJTLT5TZXRUaW1lciAoVGltZXJFdmVudCwgVGlt ZXJQZXJpb2RpYywgMTAwMDAwMDApOw0KKyAgU3RhdHVzID0gZ3RCUy0+U2V0VGltZXIoVGltZXJF dmVudCwgVGltZXJQZXJpb2RpYywgMTAwMDAwMDApOw0KDQogICAvLw0KICAgLy8gU2V0IHVwIGEg d2FpdCBsaXN0IGZvciBhIGtleSBhbmQgdGhlIHRpbWVyDQpAQCAtNDkyLDUwICsyNzIsNTAgQEAg V2FpdEZvckFueUlucHV0ICgpDQogICAvLw0KICAgLy8gV2FpdCBmb3IgZWl0aGVyDQogICAvLw0K LSAgd2hpbGUgKE5vV2FpdCkgew0KLSAgICBTdGF0dXMgPSBndEJTLT5XYWl0Rm9yRXZlbnQgKE5v V2FpdCwgV2FpdExpc3QsICZXYWl0SW5kZXgpOw0KKyAgd2hpbGUgKE5vV2FpdCkNCisgIHsNCisg ICAgU3RhdHVzID0gZ3RCUy0+V2FpdEZvckV2ZW50KE5vV2FpdCwgV2FpdExpc3QsICZXYWl0SW5k ZXgpOw0KDQotICAgIHN3aXRjaCAoV2FpdEluZGV4KSB7DQotICAgICAgY2FzZSAwOg0KLSAgICAg ICAgLy8NCi0gICAgICAgIC8vIFJlYWQgdGhlIGtleQ0KLSAgICAgICAgLy8NCi0gICAgICAgIFN0 YXR1cyA9IGd0U1QtPkNvbkluLT5SZWFkS2V5U3Ryb2tlIChndFNULT5Db25JbiwgJktleSk7DQot ICAgICAgICBpZiAoRUZJX1NVQ0NFU1MgPT0gU3RhdHVzKQ0KLSAgICAgICAgICBOb1dhaXQgPSAw Ow0KLSAgICAgICAgYnJlYWs7DQorICAgIHN3aXRjaCAoV2FpdEluZGV4KQ0KKyAgICB7DQorICAg IGNhc2UgMDoNCisgICAgICAvLw0KKyAgICAgIC8vIFJlYWQgdGhlIGtleQ0KKyAgICAgIC8vDQor ICAgICAgU3RhdHVzID0gZ3RTVC0+Q29uSW4tPlJlYWRLZXlTdHJva2UoZ3RTVC0+Q29uSW4sICZL ZXkpOw0KKyAgICAgIGlmIChFRklfU1VDQ0VTUyA9PSBTdGF0dXMpDQorICAgICAgICBOb1dhaXQg PSAwOw0KKyAgICAgIGJyZWFrOw0KDQotICAgICAgZGVmYXVsdDoNCi0gICAgICAgIGJyZWFrOw0K KyAgICBkZWZhdWx0Og0KKyAgICAgIGJyZWFrOw0KICAgICB9DQogICB9DQotICBTY3RQcmludCAo TCJcclxuIik7DQorICBTY3RQcmludChMIlxyXG4iKTsNCg0KICAgLy8NCiAgIC8vIERvbmUsIGNh bmNsZSBwZXJpb2RpYyB0aW1lcg0KICAgLy8NCi0gIFN0YXR1cyA9IGd0QlMtPlNldFRpbWVyIChU aW1lckV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQorICBTdGF0dXMgPSBndEJTLT5TZXRUaW1lcihU aW1lckV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQoNCiAgIHJldHVybiBUUlVFOw0KLQ0KIH0NCg0K LQ0KIEJPT0xFQU4NCi1XYWl0Rm9yVXNlckNoZWNrICgpDQorV2FpdEZvclVzZXJDaGVjaygpDQog ew0KLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgTm9XYWl0ID0gMSwgV2FpdEluZGV4Ow0KLSAg RUZJX0VWRU5UICAgICAgICAgICAgICAgV2FpdExpc3RbMV07DQotICBFRklfU1RBVFVTICAgICAg ICAgICAgICBTdGF0dXM7DQotICBFRklfSU5QVVRfS0VZICAgICAgICAgICBLZXk7DQotICBCT09M RUFOICAgICAgICAgICAgICAgICBQcmVzc1llcz1GQUxTRTsNCisgIFVJTlROIE5vV2FpdCA9IDEs IFdhaXRJbmRleDsNCisgIEVGSV9FVkVOVCBXYWl0TGlzdFsxXTsNCisgIEVGSV9TVEFUVVMgU3Rh dHVzOw0KKyAgRUZJX0lOUFVUX0tFWSBLZXk7DQorICBCT09MRUFOIFByZXNzWWVzID0gRkFMU0U7 DQoNCi0gIFNjdFByaW50IChMIlxyXG5QcmVzcyBcIllcIiBvciBcIk5cIi4uLiIpOw0KKyAgU2N0 UHJpbnQoTCJcclxuUHJlc3MgXCJZXCIgb3IgXCJOXCIuLi4iKTsNCg0KICAgLy8NCiAgIC8vIFNl dCAxIHNlY29uZCBwZXJpb2RpYyB0aW1lcg0KICAgLy8NCi0gIFN0YXR1cyA9IGd0QlMtPlNldFRp bWVyIChUaW1lckV2ZW50LCBUaW1lclBlcmlvZGljLCAxMDAwMDAwMCk7DQorICBTdGF0dXMgPSBn dEJTLT5TZXRUaW1lcihUaW1lckV2ZW50LCBUaW1lclBlcmlvZGljLCAxMDAwMDAwMCk7DQoNCiAg IC8vDQogICAvLyBTZXQgdXAgYSB3YWl0IGxpc3QgZm9yIGEga2V5IGFuZCB0aGUgdGltZXINCkBA IC01NDYsODMgKzMyNiw4OCBAQCBXYWl0Rm9yVXNlckNoZWNrICgpDQogICAvLw0KICAgLy8gV2Fp dCBmb3IgZWl0aGVyDQogICAvLw0KLSAgd2hpbGUgKE5vV2FpdCkgew0KLSAgICBTdGF0dXMgPSBn dEJTLT5XYWl0Rm9yRXZlbnQgKE5vV2FpdCwgV2FpdExpc3QsICZXYWl0SW5kZXgpOw0KKyAgd2hp bGUgKE5vV2FpdCkNCisgIHsNCisgICAgU3RhdHVzID0gZ3RCUy0+V2FpdEZvckV2ZW50KE5vV2Fp dCwgV2FpdExpc3QsICZXYWl0SW5kZXgpOw0KDQotICAgIHN3aXRjaCAoV2FpdEluZGV4KSB7DQot ICAgICAgY2FzZSAwOg0KLSAgICAgICAgLy8NCi0gICAgICAgIC8vIFJlYWQgdGhlIGtleQ0KLSAg ICAgICAgLy8NCi0gICAgICAgIFN0YXR1cyA9IGd0U1QtPkNvbkluLT5SZWFkS2V5U3Ryb2tlIChn dFNULT5Db25JbiwgJktleSk7DQotICAgICAgICBTY3RBUHJpbnQgKChjaGFyICopKCZLZXkuVW5p Y29kZUNoYXIpKTsNCi0gICAgICAgIHN3aXRjaCAoS2V5LlVuaWNvZGVDaGFyKSB7DQotICAgICAg ICAgIGNhc2UgJ1knOg0KLSAgICAgICAgICBjYXNlICd5JzoNCi0gICAgICAgICAgICBOb1dhaXQg PSAwOw0KLSAgICAgICAgICAgIFByZXNzWWVzID0gVFJVRTsNCi0gICAgICAgICAgICBicmVhazsN CisgICAgc3dpdGNoIChXYWl0SW5kZXgpDQorICAgIHsNCisgICAgY2FzZSAwOg0KKyAgICAgIC8v DQorICAgICAgLy8gUmVhZCB0aGUga2V5DQorICAgICAgLy8NCisgICAgICBTdGF0dXMgPSBndFNU LT5Db25Jbi0+UmVhZEtleVN0cm9rZShndFNULT5Db25JbiwgJktleSk7DQorICAgICAgU2N0QVBy aW50KChjaGFyICopKCZLZXkuVW5pY29kZUNoYXIpKTsNCisgICAgICBzd2l0Y2ggKEtleS5Vbmlj b2RlQ2hhcikNCisgICAgICB7DQorICAgICAgY2FzZSAnWSc6DQorICAgICAgY2FzZSAneSc6DQor ICAgICAgICBOb1dhaXQgPSAwOw0KKyAgICAgICAgUHJlc3NZZXMgPSBUUlVFOw0KKyAgICAgICAg YnJlYWs7DQoNCi0gICAgICAgICAgY2FzZSAnTic6DQotICAgICAgICAgIGNhc2UgJ24nOg0KLSAg ICAgICAgICAgIE5vV2FpdCA9IDA7DQotICAgICAgICAgICAgUHJlc3NZZXMgPSBGQUxTRTsNCi0g ICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgZGVmYXVsdCA6DQotICAgICAgICAgICAg U2N0UHJpbnQgKEwiXG4iKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCisgICAg ICBjYXNlICdOJzoNCisgICAgICBjYXNlICduJzoNCisgICAgICAgIE5vV2FpdCA9IDA7DQorICAg ICAgICBQcmVzc1llcyA9IEZBTFNFOw0KICAgICAgICAgYnJlYWs7DQoNCiAgICAgICBkZWZhdWx0 Og0KKyAgICAgICAgU2N0UHJpbnQoTCJcbiIpOw0KICAgICAgICAgYnJlYWs7DQorICAgICAgfQ0K KyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAgIGJyZWFrOw0KICAgICB9DQog ICB9DQotICBTY3RQcmludCAoTCJcclxuIik7DQorICBTY3RQcmludChMIlxyXG4iKTsNCg0KICAg Ly8NCiAgIC8vIERvbmUsIGNhbmNsZSBwZXJpb2RpYyB0aW1lcg0KICAgLy8NCi0gIFN0YXR1cyA9 IGd0QlMtPlNldFRpbWVyIChUaW1lckV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQorICBTdGF0dXMg PSBndEJTLT5TZXRUaW1lcihUaW1lckV2ZW50LCBUaW1lckNhbmNlbCwgMCk7DQoNCiAgIHJldHVy biBQcmVzc1llczsNCi0NCiB9DQoNCiBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFDS19TVEFUVVMN CiBFRklBUEkNCi1OZXdDYWxsQmFjayAoDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9DQUxMQkFD S19QUk9UT0NPTCAgKlRoaXMsDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9GVU5DVElPTiAgICAg ICAgICAgRnVuY3Rpb24sDQotICBJTiBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVjZWl2ZWQsDQotICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UGFja2V0TGVuLA0KLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUICAgICAgICAgICAgICpQ YWNrZXQgT1BUSU9OQUwNCi0gICkNCitOZXdDYWxsQmFjaygNCisgICAgSU4gRUZJX1BYRV9CQVNF X0NPREVfQ0FMTEJBQ0tfUFJPVE9DT0wgKlRoaXMsDQorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RF X0ZVTkNUSU9OIEZ1bmN0aW9uLA0KKyAgICBJTiBCT09MRUFOIFJlY2VpdmVkLA0KKyAgICBJTiBV SU5UMzIgUGFja2V0TGVuLA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNLRVQgKlBhY2tl dCBPUFRJT05BTCkNCiB7DQotICBpZiAoRnVuY3Rpb24gPT0gZ0Z1bmN0aW9uKSB7DQotICAgIGdD YWxsQmFja0ludm9rZWQgKys7DQorICBpZiAoRnVuY3Rpb24gPT0gZ0Z1bmN0aW9uKQ0KKyAgew0K KyAgICBnQ2FsbEJhY2tJbnZva2VkKys7DQogICAgIHJldHVybiBFRklfUFhFX0JBU0VfQ09ERV9D QUxMQkFDS19TVEFUVVNfQUJPUlQ7DQotICB9IGVsc2UgaWYgKGdPbGRDYWxsQmFjayAhPSBOVUxM KSB7DQotICAgIHJldHVybiBnT2xkQ2FsbEJhY2sgKFRoaXMsIEZ1bmN0aW9uLCBSZWNlaXZlZCwg UGFja2V0TGVuLCBQYWNrZXQpOw0KLSAgfSBlbHNlIHsNCisgIH0NCisgIGVsc2UgaWYgKGdPbGRD YWxsQmFjayAhPSBOVUxMKQ0KKyAgew0KKyAgICByZXR1cm4gZ09sZENhbGxCYWNrKFRoaXMsIEZ1 bmN0aW9uLCBSZWNlaXZlZCwgUGFja2V0TGVuLCBQYWNrZXQpOw0KKyAgfQ0KKyAgZWxzZQ0KKyAg ew0KICAgICByZXR1cm4gRUZJX1BYRV9CQVNFX0NPREVfQ0FMTEJBQ0tfU1RBVFVTX0NPTlRJTlVF Ow0KICAgfQ0KIH0NCg0KIEVGSV9TVEFUVVMNCi1Ib29rUmV0dXJuQWJvcnRDYWxsQmFjayAoDQot ICBJTiBFRklfUFhFX0JBU0VfQ09ERV9GVU5DVElPTiAgICAgICAgIEZ1bmNOdW0sDQotICBJTiBF RklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAgICAgICpCY0ludGVyZmFjZQ0KLSAgKQ0KK0hv b2tSZXR1cm5BYm9ydENhbGxCYWNrKA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9GVU5DVElP TiBGdW5jTnVtLA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAqQmNJbnRlcmZh Y2UpDQogew0KLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K LSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgKkhhbmRsZUJ1ZmZlcjsNCi0g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZUNvdW50Ow0KLSAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQotICBFRklfUFhFX0JBU0Vf Q09ERV9QUk9UT0NPTCAgICAgICAgICAqSW50ZXJmYWNlOw0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7 DQorICBFRklfSEFORExFICpIYW5kbGVCdWZmZXI7DQorICBVSU5UTiBIYW5kbGVDb3VudDsNCisg IFVJTlROIEluZGV4Ow0KKyAgRUZJX1BYRV9CQVNFX0NPREVfUFJPVE9DT0wgKkludGVyZmFjZTsN CiAgIEVGSV9QWEVfQkFTRV9DT0RFX0NBTExCQUNLX1BST1RPQ09MICpCY0NhbGxCYWNrOw0KLSAg Qk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3TWFrZUNhbGxiYWNrOw0KKyAg Qk9PTEVBTiBOZXdNYWtlQ2FsbGJhY2s7DQoNCiAgIC8vDQogICAvLyBpbml0IGdsb2JhbCB2YXJp YWJsZXMNCkBAIC02MzQsMTQgKzQxOSwxNCBAQCBIb29rUmV0dXJuQWJvcnRDYWxsQmFjayAoDQog ICAvLw0KICAgLy8gTG9jYXRlIGFsbCBoYW5kbGVzIG9mIFB4ZSBwcm90b2NvbA0KICAgLy8NCi0g IFN0YXR1cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1ZmZlciAoDQotICAgICAgICAgICAgICAgICAg IEJ5UHJvdG9jb2wsDQotICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29k ZVByb3RvY29sR3VpZCwNCi0gICAgICAgICAgICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAg ICAgICAgJkhhbmRsZUNvdW50LA0KLSAgICAgICAgICAgICAgICAgICAmSGFuZGxlQnVmZmVyDQot ICAgICAgICAgICAgICAgICAgICk7DQotICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICBT dGF0dXMgPSBndEJTLT5Mb2NhdGVIYW5kbGVCdWZmZXIoDQorICAgICAgQnlQcm90b2NvbCwNCisg ICAgICAmZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVQcm90b2NvbEd1aWQsDQorICAgICAgTlVMTCwN CisgICAgICAmSGFuZGxlQ291bnQsDQorICAgICAgJkhhbmRsZUJ1ZmZlcik7DQorICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpDQorICB7DQogICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KICAgfQ0K DQpAQCAtNjQ5LDY3ICs0MzQsNzAgQEAgSG9va1JldHVybkFib3J0Q2FsbEJhY2sgKA0KICAgLy8g TG9va2luZyBmb3IgdGhlIGhhbmRsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBCY0ludGVyZmFjZQ0K ICAgLy8NCiAgIGdIYW5kbGUgPSBOVUxMOw0KLSAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgSGFu ZGxlQ291bnQ7IEluZGV4ICs9IDEpIHsNCi0gICAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9j b2wgKA0KLSAgICAgICAgICAgICAgICAgICAgIEhhbmRsZUJ1ZmZlcltJbmRleF0sDQotICAgICAg ICAgICAgICAgICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlUHJvdG9jb2xHdWlkLA0KLSAg ICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZJbnRlcmZhY2UNCi0gICAgICAgICAgICAgICAg ICAgKTsNCi0gICAgaWYgKEJjSW50ZXJmYWNlID09IEludGVyZmFjZSkgew0KKyAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDwgSGFuZGxlQ291bnQ7IEluZGV4ICs9IDEpDQorICB7DQorICAgIFN0YXR1 cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKA0KKyAgICAgICAgSGFuZGxlQnVmZmVyW0luZGV4XSwN CisgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZVByb3RvY29sR3VpZCwNCisgICAgICAg IChWT0lEICoqKSZJbnRlcmZhY2UpOw0KKyAgICBpZiAoQmNJbnRlcmZhY2UgPT0gSW50ZXJmYWNl KQ0KKyAgICB7DQogICAgICAgZ0hhbmRsZSA9IEhhbmRsZUJ1ZmZlcltJbmRleF07DQogICAgICAg YnJlYWs7DQogICAgIH0NCiAgIH0NCg0KLSAgZ3RCUy0+RnJlZVBvb2wgKEhhbmRsZUJ1ZmZlcik7 DQorICBndEJTLT5GcmVlUG9vbChIYW5kbGVCdWZmZXIpOw0KDQotICBpZiAoZ0hhbmRsZSA9PSBO VUxMKSB7DQorICBpZiAoZ0hhbmRsZSA9PSBOVUxMKQ0KKyAgew0KICAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCiAgIH0NCg0KICAgLy8NCiAgIC8vIElzIFB4ZSBDYWxsYmFjayBwcm9ib2NvbCBp bnN0YWxsZWQ/DQogICAvLw0KLSAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wgKA0KLSAg ICAgICAgICAgICAgICAgICBnSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAmZ0JsYWNrQm94 RWZpUHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZCwNCi0gICAgICAgICAgICAgICAgICAg KFZPSUQgKiopJkJjQ2FsbEJhY2sNCi0gICAgICAgICAgICAgICAgICAgKTsNCi0gIGlmIChTdGF0 dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKA0K KyAgICAgIGdIYW5kbGUsDQorICAgICAgJmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQ cm90b2NvbEd1aWQsDQorICAgICAgKFZPSUQgKiopJkJjQ2FsbEJhY2spOw0KKyAgaWYgKFN0YXR1 cyA9PSBFRklfU1VDQ0VTUykNCisgIHsNCiAgICAgLy8gUmVwbGFjZSB0aGUgcHJldmlvdXMgY2Fs bCBiYWNrIGZ1bmN0aW9uDQogICAgIGdPbGRDYWxsQmFjayA9IEJjQ2FsbEJhY2stPkNhbGxiYWNr Ow0KICAgICBCY0NhbGxCYWNrLT5DYWxsYmFjayA9IE5ld0NhbGxCYWNrOw0KLSAgfSBlbHNlIHsN CisgIH0NCisgIGVsc2UNCisgIHsNCiAgICAgLy8NCiAgICAgLy8gSW5zdGFsbCBhIGNhbGwgYmFj ayBwcm90b2NvbA0KICAgICAvLw0KLSAgICBTdGF0dXMgPSBndEJTLT5JbnN0YWxsUHJvdG9jb2xJ bnRlcmZhY2UgKA0KLSAgICAgICAgICAgICAgICAgICAgICZnSGFuZGxlLA0KLSAgICAgICAgICAg ICAgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkLA0K LSAgICAgICAgICAgICAgICAgICAgIEVGSV9OQVRJVkVfSU5URVJGQUNFLA0KLSAgICAgICAgICAg ICAgICAgICAgICZOZXdDYWxsQmFja1Byb3RvY29sDQotICAgICAgICAgICAgICAgICAgICAgKTsN Ci0gICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQorICAgIFN0YXR1cyA9IGd0QlMtPkluc3Rh bGxQcm90b2NvbEludGVyZmFjZSgNCisgICAgICAgICZnSGFuZGxlLA0KKyAgICAgICAgJmdCbGFj a0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQcm90b2NvbEd1aWQsDQorICAgICAgICBFRklfTkFU SVZFX0lOVEVSRkFDRSwNCisgICAgICAgICZOZXdDYWxsQmFja1Byb3RvY29sKTsNCisgICAgaWYg KEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICB7DQogICAgICAgcmV0dXJuIFN0YXR1czsNCiAgICAg fQ0KICAgICAvLw0KICAgICAvLyBFbmFibGUgUFhFIHRvIHVzZSBjYWxsIGJhY2sNCiAgICAgLy8N CiAgICAgTmV3TWFrZUNhbGxiYWNrID0gVFJVRTsNCi0gICAgU3RhdHVzID0gQmNJbnRlcmZhY2Ut PlNldFBhcmFtZXRlcnMgKA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCY0ludGVyZmFj ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJk5ld01ha2VDYWxsYmFjaw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0K LSAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpIHsNCi0gICAgICBndEJTLT5Vbmluc3RhbGxQcm90 b2NvbEludGVyZmFjZSAoDQotICAgICAgICAgICAgICBnSGFuZGxlLA0KLSAgICAgICAgICAgICAg JmdCbGFja0JveEVmaVB4ZUJhc2VDb2RlQ2FsbGJhY2tQcm90b2NvbEd1aWQsDQotICAgICAgICAg ICAgICAmTmV3Q2FsbEJhY2tQcm90b2NvbA0KLSAgICAgICAgICAgICAgKTsNCisgICAgU3RhdHVz ID0gQmNJbnRlcmZhY2UtPlNldFBhcmFtZXRlcnMoDQorICAgICAgICBCY0ludGVyZmFjZSwNCisg ICAgICAgIE5VTEwsDQorICAgICAgICBOVUxMLA0KKyAgICAgICAgTlVMTCwNCisgICAgICAgIE5V TEwsDQorICAgICAgICAmTmV3TWFrZUNhbGxiYWNrKTsNCisgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQ0KKyAgICB7DQorICAgICAgZ3RCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UoDQor ICAgICAgICAgIGdIYW5kbGUsDQorICAgICAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29kZUNh bGxiYWNrUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAmTmV3Q2FsbEJhY2tQcm90b2NvbCk7DQog ICAgICAgcmV0dXJuIFN0YXR1czsNCiAgICAgfQ0KICAgfQ0KQEAgLTcxOCw0OCArNTA2LDUwIEBA IEhvb2tSZXR1cm5BYm9ydENhbGxCYWNrICgNCiB9DQoNCiBFRklfU1RBVFVTDQotVW5Ib29rUmV0 dXJuQWJvcnRDYWxsQmFjayAoDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QUk9UT0NPTCAgICAg ICAgICAgICpCY0ludGVyZmFjZQ0KLSAgKQ0KK1VuSG9va1JldHVybkFib3J0Q2FsbEJhY2soDQor ICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpCY0ludGVyZmFjZSkNCiB7DQotICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQorICBFRklfU1RBVFVT IFN0YXR1czsNCiAgIEVGSV9QWEVfQkFTRV9DT0RFX0NBTExCQUNLX1BST1RPQ09MICpCY0NhbGxC YWNrOw0KLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3TWFrZUNhbGxi YWNrOw0KKyAgQk9PTEVBTiBOZXdNYWtlQ2FsbGJhY2s7DQoNCi0gIGlmIChnT2xkQ2FsbEJhY2sg IT0gTlVMTCkgew0KLSAgICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCAoDQotICAgICAg ICAgICAgICAgICAgICAgZ0hhbmRsZSwNCi0gICAgICAgICAgICAgICAgICAgICAmZ0JsYWNrQm94 RWZpUHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZCwNCi0gICAgICAgICAgICAgICAgICAg ICAoVk9JRCAqKikmQmNDYWxsQmFjaw0KLSAgICAgICAgICAgICAgICAgICAgICk7DQotICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkgew0KKyAgaWYgKGdPbGRDYWxsQmFjayAhPSBOVUxMKQ0KKyAg ew0KKyAgICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCgNCisgICAgICAgIGdIYW5kbGUs DQorICAgICAgICAmZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVDYWxsYmFja1Byb3RvY29sR3VpZCwN CisgICAgICAgIChWT0lEICoqKSZCY0NhbGxCYWNrKTsNCisgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQ0KKyAgICB7DQogICAgICAgcmV0dXJuIFN0YXR1czsNCiAgICAgfQ0KICAgICAvLyByZXN0 b3JlIHRoZSBwcmV2aW91cyBjYWxsIGJhY2sgZnVuY3Rpb24NCiAgICAgQmNDYWxsQmFjay0+Q2Fs bGJhY2sgPSBnT2xkQ2FsbEJhY2s7DQogICAgIGdPbGRDYWxsQmFjayA9IE5VTEw7DQotICB9IGVs c2Ugew0KKyAgfQ0KKyAgZWxzZQ0KKyAgew0KICAgICAvLw0KICAgICAvLyBEaXNhYmxlIFBYRSB0 byB1c2UgY2FsbCBiYWNrDQogICAgIC8vDQogICAgIE5ld01ha2VDYWxsYmFjayA9IEZBTFNFOw0K LSAgICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U2V0UGFyYW1ldGVycyAoDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEJjSW50ZXJmYWNlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTmV3TWFrZUNhbGxiYWNrDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQotICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0K KyAgICBTdGF0dXMgPSBCY0ludGVyZmFjZS0+U2V0UGFyYW1ldGVycygNCisgICAgICAgIEJjSW50 ZXJmYWNlLA0KKyAgICAgICAgTlVMTCwNCisgICAgICAgIE5VTEwsDQorICAgICAgICBOVUxMLA0K KyAgICAgICAgTlVMTCwNCisgICAgICAgICZOZXdNYWtlQ2FsbGJhY2spOw0KKyAgICBpZiAoRUZJ X0VSUk9SKFN0YXR1cykpDQorICAgIHsNCiAgICAgICByZXR1cm4gU3RhdHVzOw0KICAgICB9DQot ICAgIFN0YXR1cyA9IGd0QlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCi0gICAgICAg ICAgICAgICAgICAgICBnSGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAgICZnQmxhY2tCb3hF ZmlQeGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkLA0KLSAgICAgICAgICAgICAgICAgICAg ICZOZXdDYWxsQmFja1Byb3RvY29sDQotICAgICAgICAgICAgICAgICAgICAgKTsNCi0gICAgaWYg KEVGSV9FUlJPUihTdGF0dXMpKSB7DQorICAgIFN0YXR1cyA9IGd0QlMtPlVuaW5zdGFsbFByb3Rv Y29sSW50ZXJmYWNlKA0KKyAgICAgICAgZ0hhbmRsZSwNCisgICAgICAgICZnQmxhY2tCb3hFZmlQ eGVCYXNlQ29kZUNhbGxiYWNrUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgJk5ld0NhbGxCYWNrUHJv dG9jb2wpOw0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgIHsNCiAgICAgICByZXR1 cm4gU3RhdHVzOw0KICAgICB9DQogICB9DQpAQCAtNzY4LDQ0ICs1NTgsNDQgQEAgVW5Ib29rUmV0 dXJuQWJvcnRDYWxsQmFjayAoDQogfQ0KDQogQk9PTEVBTg0KLUlzUHhlUGFja2V0VmFsaWQgKA0K LSAgSU4gRUZJX1BYRV9QQUNLRVRfVFlQRSAgICAgICAgIFBhY2tldFR5cGUsDQotICBJTiBFRklf UFhFX0JBU0VfQ09ERV9QQUNLRVQgICAgKlBhY2tldA0KLSAgKQ0KK0lzUHhlUGFja2V0VmFsaWQo DQorICAgIElOIEVGSV9QWEVfUEFDS0VUX1RZUEUgUGFja2V0VHlwZSwNCisgICAgSU4gRUZJX1BY RV9CQVNFX0NPREVfUEFDS0VUICpQYWNrZXQpDQogew0KLSAgLy9Cb290cE9wQ29kZQ0KKyAgLy8g Qm9vdHBPcENvZGUNCiAgIHN3aXRjaCAoUGFja2V0VHlwZSkNCiAgIHsNCi0gICAgY2FzZSBFRklf UFhFX1BBQ0tFVF9UWVBFX0RIQ1BfRElTQ09WRVI6DQotICAgICAgcmV0dXJuIFRSVUU7DQorICBj YXNlIEVGSV9QWEVfUEFDS0VUX1RZUEVfREhDUF9ESVNDT1ZFUjoNCisgICAgcmV0dXJuIFRSVUU7 DQoNCi0gICAgY2FzZSBFRklfUFhFX1BBQ0tFVF9UWVBFX0RIQ1BfQUNLOg0KLSAgICAgIHJldHVy biBUUlVFOw0KKyAgY2FzZSBFRklfUFhFX1BBQ0tFVF9UWVBFX0RIQ1BfQUNLOg0KKyAgICByZXR1 cm4gVFJVRTsNCg0KLSAgICBjYXNlIEVGSV9QWEVfUEFDS0VUX1RZUEVfUFJPWFlfT0ZGRVI6DQot ICAgICAgcmV0dXJuIFRSVUU7DQorICBjYXNlIEVGSV9QWEVfUEFDS0VUX1RZUEVfUFJPWFlfT0ZG RVI6DQorICAgIHJldHVybiBUUlVFOw0KDQotICAgIGNhc2UgRUZJX1BYRV9QQUNLRVRfVFlQRV9Q WEVfRElTQ09WRVI6DQotICAgICAgcmV0dXJuIFRSVUU7DQorICBjYXNlIEVGSV9QWEVfUEFDS0VU X1RZUEVfUFhFX0RJU0NPVkVSOg0KKyAgICByZXR1cm4gVFJVRTsNCg0KLSAgICBjYXNlIEVGSV9Q WEVfUEFDS0VUX1RZUEVfUFhFX09GRkVSOg0KLSAgICAgIHJldHVybiBUUlVFOw0KKyAgY2FzZSBF RklfUFhFX1BBQ0tFVF9UWVBFX1BYRV9PRkZFUjoNCisgICAgcmV0dXJuIFRSVUU7DQoNCi0gICAg ZGVmYXVsdDoNCi0gICAgICByZXR1cm4gRkFMU0U7DQorICBkZWZhdWx0Og0KKyAgICByZXR1cm4g RkFMU0U7DQogICB9DQogfQ0KDQogQk9PTEVBTg0KLUlzQnVmWmVyb2VkICgNCi0gIElOIENIQVI4 ICAgICAgICAgICAgICAgICpCdWYsDQotICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgTGVuDQot ICApDQorSXNCdWZaZXJvZWQoDQorICAgIElOIENIQVI4ICpCdWYsDQorICAgIElOIFVJTlROIExl bikNCiB7DQogICBVSU5UTiBpOw0KDQotICBmb3IgKGk9MDsgaTxMZW47IGkrKykgew0KLSAgICBp ZiAoMCAhPSAqKEJ1ZiArIGkpKSB7DQorICBmb3IgKGkgPSAwOyBpIDwgTGVuOyBpKyspDQorICB7 DQorICAgIGlmICgwICE9ICooQnVmICsgaSkpDQorICAgIHsNCiAgICAgICByZXR1cm4gRkFMU0U7 DQogICAgIH0NCiAgIH0NCkBAIC04MTMsMTI2ICs2MDMsMTIyIEBAIElzQnVmWmVyb2VkICgNCiAg IHJldHVybiBUUlVFOw0KIH0NCg0KLQ0KIEVGSV9TVEFUVVMNCi1QcmludFB4ZVBhY2tldCAoDQot ICBJTiBFRklfVEVTVF9MT0dHSU5HX0xJQlJBUllfUFJPVE9DT0wgKkxvZ2dpbmdMaWIsDQotICBJ TiBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRpdGxlLA0KLSAgSU4gRUZJX1BY RV9CQVNFX0NPREVfUEFDS0VUICAgICAgICAgICpQYWNrZXQNCi0gICkNCitQcmludFB4ZVBhY2tl dCgNCisgICAgSU4gRUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICpMb2dnaW5nTGli LA0KKyAgICBJTiBDSEFSMTYgKlRpdGxlLA0KKyAgICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNL RVQgKlBhY2tldCkNCiB7DQotICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRlbXBVaW50MTY7DQorICBVSU5UMTYgVGVtcFVpbnQxNjsNCg0KICAgaWYgKE5VTEwgPT0gUGFj a2V0IHx8IE5VTEwgPT0gTG9nZ2luZ0xpYikNCiAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCg0KICAgLy8gcHJpbnQgdGhlIHBhY2tldCB0eXBlDQotICBMT0dfQ0hBUjE2X0FTQ0lJ X0RGTFQoTG9nZ2luZ0xpYiwgVGl0bGUsIFNjdFN0ckxlbiAoVGl0bGUpKTsNCisgIExPR19DSEFS MTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBUaXRsZSwgU2N0U3RyTGVuKFRpdGxlKSk7DQoNCiAg IC8vIHByaW50IHRoZSByYXcgcGFja2V0DQotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2lu Z0xpYiwgTCJbUmF3IFBhY2tldF0iLCBTY3RTdHJMZW4gKEwiW1JhdyBQYWNrZXRdIikpOw0KLSAg TE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCAoQ0hBUjE2KikgKFBhY2tldC0+UmF3KSwxNDcy LzIpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW1JhdyBQYWNrZXRd IiwgU2N0U3RyTGVuKEwiW1JhdyBQYWNrZXRdIikpOw0KKyAgTE9HX0JVRl9IRVhfREZMVChMb2dn aW5nTGliLCAoQ0hBUjE2ICopKFBhY2tldC0+UmF3KSwgMTQ3MiAvIDIpOw0KDQogICBUZW1wVWlu dDE2ID0gKFVJTlQxNilQYWNrZXQtPkRoY3B2NC5Cb290cE9wY29kZTsNCi0gIExPR19DSEFSMTZf QVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBPcGNvZGVdIiwgU2N0U3RyTGVuIChMIltC b290cCBPcGNvZGVdIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwi W0Jvb3RwIE9wY29kZV0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgT3Bjb2RlXSIpKTsNCiAgIExPR19V SU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgVGVtcFVpbnQxNik7DQoNCiAgIFRlbXBVaW50MTYg PSAoVUlOVDE2KVBhY2tldC0+RGhjcHY0LkJvb3RwSHdUeXBlOw0KLSAgTE9HX0NIQVIxNl9BU0NJ SV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEh3IFR5cGVdIiwgU2N0U3RyTGVuIChMIltCb290 cCBIdyBUeXBlXSIpKTsNCisgIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltC b290cCBIdyBUeXBlXSIsIFNjdFN0ckxlbihMIltCb290cCBIdyBUeXBlXSIpKTsNCiAgIExPR19V SU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgVGVtcFVpbnQxNik7DQoNCiAgIFRlbXBVaW50MTYg PSAoVUlOVDE2KVBhY2tldC0+RGhjcHY0LkJvb3RwSHdBZGRyTGVuOw0KLSAgTE9HX0NIQVIxNl9B U0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEh3IEFkZHIgTGVuXSIsIFNjdFN0ckxlbiAo TCJbQm9vdHAgSHcgQWRkciBMZW5dIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dp bmdMaWIsIEwiW0Jvb3RwIEh3IEFkZHIgTGVuXSIsIFNjdFN0ckxlbihMIltCb290cCBIdyBBZGRy IExlbl0iKSk7DQogICBMT0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsIFRlbXBVaW50MTYp Ow0KDQogICBUZW1wVWludDE2ID0gKFVJTlQxNilQYWNrZXQtPkRoY3B2NC5Cb290cEdhdGVIb3Bz Ow0KLSAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEdhdGUgSG9w XSIsIFNjdFN0ckxlbiAoTCJbQm9vdHAgR2F0ZSBIb3BdIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJ SV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEdhdGUgSG9wXSIsIFNjdFN0ckxlbihMIltCb290 cCBHYXRlIEhvcF0iKSk7DQogICBMT0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsIFRlbXBV aW50MTYpOw0KDQotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAg SWRlbl0iLCBTY3RTdHJMZW4gKEwiW0Jvb3RwIElkZW5dIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJ SV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIElkZW5dIiwgU2N0U3RyTGVuKEwiW0Jvb3RwIElk ZW5dIikpOw0KICAgTE9HX1VJTlQzMl9IRVhfREZMVChMb2dnaW5nTGliLCAoUGFja2V0LT5EaGNw djQuQm9vdHBJZGVudCkpOw0KDQotICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwg TCJbQm9vdHAgU2Vjb25kc10iLCBTY3RTdHJMZW4gKEwiW0Jvb3RwIFNlY29uZHNdIikpOw0KLSAg TE9HX1VJTlQxNl9IRVhfREZMVChMb2dnaW5nTGliLFBhY2tldC0+RGhjcHY0LkJvb3RwU2Vjb25k cyk7DQorICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgU2Vjb25k c10iLCBTY3RTdHJMZW4oTCJbQm9vdHAgU2Vjb25kc10iKSk7DQorICBMT0dfVUlOVDE2X0hFWF9E RkxUKExvZ2dpbmdMaWIsIFBhY2tldC0+RGhjcHY0LkJvb3RwU2Vjb25kcyk7DQoNCi0gIExPR19D SEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBGbGFnc10iLCBTY3RTdHJMZW4g KEwiW0Jvb3RwIEZsYWdzXSIpKTsNCi0gIExPR19VSU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwo UGFja2V0LT5EaGNwdjQuQm9vdHBGbGFncykpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExv Z2dpbmdMaWIsIEwiW0Jvb3RwIEZsYWdzXSIsIFNjdFN0ckxlbihMIltCb290cCBGbGFnc10iKSk7 DQorICBMT0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsIChQYWNrZXQtPkRoY3B2NC5Cb290 cEZsYWdzKSk7DQoNCi0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290 cCBDaUFkZHJdIiwgU2N0U3RyTGVuIChMIltCb290cCBDaUFkZHJdIikpOw0KKyAgTE9HX0NIQVIx Nl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIENpQWRkcl0iLCBTY3RTdHJMZW4oTCJb Qm9vdHAgQ2lBZGRyXSIpKTsNCiAgIExPR19JUF9IRVhfREZMVChMb2dnaW5nTGliLCBQYWNrZXQt PkRoY3B2NC5Cb290cENpQWRkcik7DQoNCi0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5n TGliLCBMIltCb290cCBZaUFkZHJdIiwgU2N0U3RyTGVuIChMIltCb290cCBZaUFkZHJdIikpOw0K KyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIFlpQWRkcl0iLCBT Y3RTdHJMZW4oTCJbQm9vdHAgWWlBZGRyXSIpKTsNCiAgIExPR19JUF9IRVhfREZMVChMb2dnaW5n TGliLCBQYWNrZXQtPkRoY3B2NC5Cb290cFlpQWRkcik7DQoNCi0gIExPR19DSEFSMTZfQVNDSUlf REZMVChMb2dnaW5nTGliLCBMIltCb290cCBTaUFkZHJdIiwgU2N0U3RyTGVuIChMIltCb290cCBT aUFkZHJdIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3Rw IFNpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgU2lBZGRyXSIpKTsNCiAgIExPR19JUF9IRVhf REZMVChMb2dnaW5nTGliLCBQYWNrZXQtPkRoY3B2NC5Cb290cFNpQWRkcik7DQoNCi0gIExPR19D SEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBHaUFkZHJdIiwgU2N0U3RyTGVu IChMIltCb290cCBHaUFkZHJdIikpOw0KKyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdM aWIsIEwiW0Jvb3RwIEdpQWRkcl0iLCBTY3RTdHJMZW4oTCJbQm9vdHAgR2lBZGRyXSIpKTsNCiAg IExPR19JUF9IRVhfREZMVChMb2dnaW5nTGliLCBQYWNrZXQtPkRoY3B2NC5Cb290cEdpQWRkcik7 DQoNCi0gIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBId0FkZHJd IiwgU2N0U3RyTGVuIChMIltCb290cCBId0FkZHJdIikpOw0KLSAgTE9HX0JVRl9IRVhfREZMVChM b2dnaW5nTGliLCAoQ0hBUjE2KikoUGFja2V0LT5EaGNwdjQuQm9vdHBTcnZOYW1lKSwgMzIpOw0K KyAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIEh3QWRkcl0iLCBT Y3RTdHJMZW4oTCJbQm9vdHAgSHdBZGRyXSIpKTsNCisgIExPR19CVUZfSEVYX0RGTFQoTG9nZ2lu Z0xpYiwgKENIQVIxNiAqKShQYWNrZXQtPkRoY3B2NC5Cb290cFNydk5hbWUpLCAzMik7DQoNCi0g IExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBTcnZOYW1lXSIsIFNj dFN0ckxlbiAoTCJbQm9vdHAgU3J2TmFtZV0iKSk7DQotICBMT0dfQlVGX0hFWF9ERkxUKExvZ2dp bmdMaWIsIChDSEFSMTYqKShQYWNrZXQtPkRoY3B2NC5Cb290cEh3QWRkciksIDgpOw0KKyAgTE9H X0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Jvb3RwIFNydk5hbWVdIiwgU2N0U3Ry TGVuKEwiW0Jvb3RwIFNydk5hbWVdIikpOw0KKyAgTE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGli LCAoQ0hBUjE2ICopKFBhY2tldC0+RGhjcHY0LkJvb3RwSHdBZGRyKSwgOCk7DQoNCi0gIExPR19D SEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltCb290cCBCb290RmlsZV0iLCBTY3RTdHJM ZW4gKEwiW0Jvb3RwIEJvb3RGaWxlXSIpKTsNCi0gIExPR19CVUZfSEVYX0RGTFQoTG9nZ2luZ0xp YiwgKENIQVIxNiopKFBhY2tldC0+RGhjcHY0LkJvb3RwQm9vdEZpbGUpLCA2NCk7DQorICBMT0df Q0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgQm9vdEZpbGVdIiwgU2N0U3Ry TGVuKEwiW0Jvb3RwIEJvb3RGaWxlXSIpKTsNCisgIExPR19CVUZfSEVYX0RGTFQoTG9nZ2luZ0xp YiwgKENIQVIxNiAqKShQYWNrZXQtPkRoY3B2NC5Cb290cEJvb3RGaWxlKSwgNjQpOw0KDQotICBM T0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbQm9vdHAgTWFnaWtdIiwgU2N0U3Ry TGVuIChMIltCb290cCBNYWdpa10iKSk7DQorICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2lu Z0xpYiwgTCJbQm9vdHAgTWFnaWtdIiwgU2N0U3RyTGVuKEwiW0Jvb3RwIE1hZ2lrXSIpKTsNCiAg IExPR19VSU5UMzJfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgUGFja2V0LT5EaGNwdjQuRGhjcE1hZ2lr KTsNCg0KICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KIH0NCg0KIEVGSV9TVEFUVVMNCi1QcmludEFy cFRhYmxlICgNCi0gIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFSWV9QUk9UT0NPTCAqTG9nZ2lu Z0xpYiwNCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX01PREUgICAgICAgICAgICAqTW9kZQ0KLSAg KQ0KK1ByaW50QXJwVGFibGUoDQorICAgIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFSWV9QUk9U T0NPTCAqTG9nZ2luZ0xpYiwNCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVfTU9ERSAqTW9kZSkN CiB7DQotICBVSU5UTiAgICAgICAgICAgICAgICAgIGksIGNudDsNCi0gIENIQVIxNiAgICAgICAg ICAgICAgICAqQnVmZmVyOw0KKyAgVUlOVE4gaSwgY250Ow0KKyAgQ0hBUjE2ICpCdWZmZXI7DQoN Ci0gIExvZ2dpbmdMaWItPkR1bXBCdWYgKExvZ2dpbmdMaWIsIEVGSV9WRVJCT1NFX0xFVkVMX0RF RkFVTFQsIEwiQXJwIEVudHJ5IGlzIiwgKFVJTlQzMilTY3RTdHJMZW4gKEwiQXJwIEVudHJ5IGlz IiksIEVGSV9EVU1QX0FTQ0lJKTsNCisgIExvZ2dpbmdMaWItPkR1bXBCdWYoTG9nZ2luZ0xpYiwg RUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwgTCJBcnAgRW50cnkgaXMiLCAoVUlOVDMyKVNjdFN0 ckxlbihMIkFycCBFbnRyeSBpcyIpLCBFRklfRFVNUF9BU0NJSSk7DQogICBjbnQgPSAwOw0KICAg Zm9yIChpID0gMDsgaSA8IEVGSV9QWEVfQkFTRV9DT0RFX01BWF9BUlBfRU5UUklFUzsgaSsrKQ0K ICAgew0KLSAgICBpZiAoRkFMU0UgPT0gSXNCdWZaZXJvZWQgKChDSEFSOCAqKSgmTW9kZS0+QXJw Q2FjaGVbaV0pLCBzaXplb2YgKEVGSV9QWEVfQkFTRV9DT0RFX0FSUF9FTlRSWSkpKQ0KKyAgICBp ZiAoRkFMU0UgPT0gSXNCdWZaZXJvZWQoKENIQVI4ICopKCZNb2RlLT5BcnBDYWNoZVtpXSksIHNp emVvZihFRklfUFhFX0JBU0VfQ09ERV9BUlBfRU5UUlkpKSkNCiAgICAgew0KLSAgICAgIGNudCAr KzsNCisgICAgICBjbnQrKzsNCiAgICAgICBCdWZmZXIgPSAoQ0hBUjE2ICopKCZNb2RlLT5BcnBD YWNoZVtpXSk7DQotICAgICAgTG9nZ2luZ0xpYi0+RHVtcEJ1ZiAoTG9nZ2luZ0xpYiwgRUZJX1ZF UkJPU0VfTEVWRUxfREVGQVVMVCwgQnVmZmVyLCAoVUlOVDMyKVNjdFN0ckxlbiAoQnVmZmVyKSwg RUZJX0RVTVBfSEVYKTsNCisgICAgICBMb2dnaW5nTGliLT5EdW1wQnVmKExvZ2dpbmdMaWIsIEVG SV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsIEJ1ZmZlciwgKFVJTlQzMilTY3RTdHJMZW4oQnVmZmVy KSwgRUZJX0RVTVBfSEVYKTsNCiAgICAgfQ0KICAgfQ0KDQogICBpZiAoY250ID09IE1vZGUtPkFy cENhY2hlRW50cmllcykNCiAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KDQotICBMT0dfQ0hBUjE2 X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJBcnAgQ2FjaGUgVW5tYXRjaGVkIiwgU2N0U3RyTGVu IChMIkFycCBDYWNoZSBVbm1hdGNoZWQiKSk7DQorICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9n Z2luZ0xpYiwgTCJBcnAgQ2FjaGUgVW5tYXRjaGVkIiwgU2N0U3RyTGVuKEwiQXJwIENhY2hlIFVu bWF0Y2hlZCIpKTsNCiAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQogfQ0KDQogRUZJ X1NUQVRVUw0KIFNldElwQW5kTWFzaygNCi0gIElOIEVGSV9JUF9BRERSRVNTICAgICAgICpFZmlJ cCwNCi0gIElOIEVGSV9JUF9BRERSRVNTICAgICAgICpFZmlNYXNrLA0KLSAgSU4gVUlOVDMyICAg ICAgICAgICAgICAgTnVtSXB2NCwNCi0gIElOIFVJTlQzMiAgICAgICAgICAgICAgIE51bU1hc2sN Ci0gICkNCisgICAgSU4gRUZJX0lQX0FERFJFU1MgKkVmaUlwLA0KKyAgICBJTiBFRklfSVBfQURE UkVTUyAqRWZpTWFzaywNCisgICAgSU4gVUlOVDMyIE51bUlwdjQsDQorICAgIElOIFVJTlQzMiBO dW1NYXNrKQ0KIHsNCi0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgU3RhdHVzOw0KKyAgRUZJX1NU QVRVUyBTdGF0dXM7DQoNCiAgIGlmIChOVUxMICE9IEVmaUlwKQ0KICAgew0KLSAgICBTdGF0dXMg PSBTZXRJcEFkZHJlc3MgKEVmaUlwLCBOdW1JcHY0KTsNCisgICAgU3RhdHVzID0gU2V0SXBBZGRy ZXNzKEVmaUlwLCBOdW1JcHY0KTsNCiAgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KICAgICAg IHJldHVybiBTdGF0dXM7DQogICB9DQoNCiAgIGlmIChOVUxMICE9IEVmaU1hc2spDQogICB7DQot ICAgIFN0YXR1cyA9IFNldElwQWRkcmVzcyAoRWZpTWFzaywgTnVtTWFzayk7DQorICAgIFN0YXR1 cyA9IFNldElwQWRkcmVzcyhFZmlNYXNrLCBOdW1NYXNrKTsNCiAgICAgaWYgKEVGSV9FUlJPUihT dGF0dXMpKQ0KICAgICAgIHJldHVybiBTdGF0dXM7DQogICB9DQpAQCAtOTQwLDEwICs3MjYsOSBA QCBTZXRJcEFuZE1hc2soDQogfQ0KDQogRUZJX1NUQVRVUw0KLVNldElwQWRkcmVzcyAoDQotICBJ TiBPVVQgRUZJX0lQX0FERFJFU1MgKkVmaUlwLA0KLSAgSU4gICAgIFVJTlQzMiAgICAgICAgIE51 bUlwdjQNCi0gICkNCitTZXRJcEFkZHJlc3MoDQorICAgIElOIE9VVCBFRklfSVBfQUREUkVTUyAq RWZpSXAsDQorICAgIElOIFVJTlQzMiBOdW1JcHY0KQ0KIHsNCiAgIGlmIChOVUxMID09IEVmaUlw KQ0KICAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KQEAgLTk1NywyMSArNzQyLDI0 IEBAIFNldElwQWRkcmVzcyAoDQogfQ0KDQogQk9PTEVBTg0KLUlzSXBNYXNrRXF1YWwgKA0KLSAg SU4gRUZJX0lQX0FERFJFU1MgKk5ld1N0YXRpb25JcCwNCi0gIElOIEVGSV9JUF9BRERSRVNTICpO ZXdTdWJuZXRNYXNrLA0KLSAgSU4gRUZJX0lQX0FERFJFU1MgKk9sZFN0YXRpb25JcCwNCi0gIElO IEVGSV9JUF9BRERSRVNTICpPbGRTdWJuZXRNYXNrDQotICApDQorSXNJcE1hc2tFcXVhbCgNCisg ICAgSU4gRUZJX0lQX0FERFJFU1MgKk5ld1N0YXRpb25JcCwNCisgICAgSU4gRUZJX0lQX0FERFJF U1MgKk5ld1N1Ym5ldE1hc2ssDQorICAgIElOIEVGSV9JUF9BRERSRVNTICpPbGRTdGF0aW9uSXAs DQorICAgIElOIEVGSV9JUF9BRERSRVNTICpPbGRTdWJuZXRNYXNrKQ0KIHsNCi0gIGlmIChOVUxM ICE9IE5ld1N0YXRpb25JcCl7DQotICAgIGlmIChGQUxTRSA9PSAoMCA9PSBTY3RDb21wYXJlTWVt IChOZXdTdGF0aW9uSXAsIE9sZFN0YXRpb25JcCwgc2l6ZW9mIChFRklfSVBfQUREUkVTUykpKSkg ew0KKyAgaWYgKE5VTEwgIT0gTmV3U3RhdGlvbklwKQ0KKyAgew0KKyAgICBpZiAoRkFMU0UgPT0g KDAgPT0gU2N0Q29tcGFyZU1lbShOZXdTdGF0aW9uSXAsIE9sZFN0YXRpb25JcCwgc2l6ZW9mKEVG SV9JUF9BRERSRVNTKSkpKQ0KKyAgICB7DQogICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICB9DQog ICB9DQoNCi0gIGlmIChOVUxMICE9IE5ld1N1Ym5ldE1hc2spew0KLSAgICBpZiAoRkFMU0UgPT0g KDAgPT0gU2N0Q29tcGFyZU1lbSAoTmV3U3VibmV0TWFzaywgT2xkU3VibmV0TWFzaywgc2l6ZW9m IChFRklfSVBfQUREUkVTUykpKSl7DQorICBpZiAoTlVMTCAhPSBOZXdTdWJuZXRNYXNrKQ0KKyAg ew0KKyAgICBpZiAoRkFMU0UgPT0gKDAgPT0gU2N0Q29tcGFyZU1lbShOZXdTdWJuZXRNYXNrLCBP bGRTdWJuZXRNYXNrLCBzaXplb2YoRUZJX0lQX0FERFJFU1MpKSkpDQorICAgIHsNCiAgICAgICBy ZXR1cm4gRkFMU0U7DQogICAgIH0NCiAgIH0NCkBAIC05NzksNTUgKzc2Nyw1OSBAQCBJc0lwTWFz a0VxdWFsICgNCiB9DQoNCiBFRklfU1RBVFVTDQotQ29weVB4ZVBhY2tldCAoDQotICBJTiBFRklf UFhFX0JBU0VfQ09ERV9QQUNLRVQgKkRlc3RQYWNrZXQsDQotICBJTiBFRklfUFhFX0JBU0VfQ09E RV9QQUNLRVQgKlNyY1BhY2tldA0KLSAgKQ0KK0NvcHlQeGVQYWNrZXQoDQorICAgIElOIEVGSV9Q WEVfQkFTRV9DT0RFX1BBQ0tFVCAqRGVzdFBhY2tldCwNCisgICAgSU4gRUZJX1BYRV9CQVNFX0NP REVfUEFDS0VUICpTcmNQYWNrZXQpDQogew0KLSAgaWYgKE5VTEwgPT0gRGVzdFBhY2tldCkgew0K KyAgaWYgKE5VTEwgPT0gRGVzdFBhY2tldCkNCisgIHsNCiAgICAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KICAgfQ0KDQotICBpZiAoTlVMTCA9PSBTcmNQYWNrZXQpIHsNCisgIGlmIChOVUxMID09IFNy Y1BhY2tldCkNCisgIHsNCiAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgIH0N Cg0KLSAgU2N0Q29weU1lbSAoRGVzdFBhY2tldCwgU3JjUGFja2V0LCBzaXplb2YgKEVGSV9QWEVf QkFTRV9DT0RFX1BBQ0tFVCkpOw0KKyAgU2N0Q29weU1lbShEZXN0UGFja2V0LCBTcmNQYWNrZXQs IHNpemVvZihFRklfUFhFX0JBU0VfQ09ERV9QQUNLRVQpKTsNCiAgIHJldHVybiBFRklfU1VDQ0VT UzsNCiB9DQoNCiBCT09MRUFODQotSXNQeGVQYWNrZXRFcXVhbCAoDQotICBJTiBFRklfUFhFX0JB U0VfQ09ERV9QQUNLRVQgKkRlc3RQYWNrZXQsDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9QQUNL RVQgKlNyY1BhY2tldA0KLSAgKQ0KK0lzUHhlUGFja2V0RXF1YWwoDQorICAgIElOIEVGSV9QWEVf QkFTRV9DT0RFX1BBQ0tFVCAqRGVzdFBhY2tldCwNCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVf UEFDS0VUICpTcmNQYWNrZXQpDQogew0KLSAgaWYgKE5VTEwgPT0gRGVzdFBhY2tldCAmJiBOVUxM ID09IFNyY1BhY2tldCkgew0KKyAgaWYgKE5VTEwgPT0gRGVzdFBhY2tldCAmJiBOVUxMID09IFNy Y1BhY2tldCkNCisgIHsNCiAgICAgcmV0dXJuIFRSVUU7DQogICB9DQotICBpZiAoMD09U2N0Q29t cGFyZU1lbSAoRGVzdFBhY2tldCwgU3JjUGFja2V0LCBzaXplb2YgKEVGSV9QWEVfQkFTRV9DT0RF X1BBQ0tFVCkpKXsNCisgIGlmICgwID09IFNjdENvbXBhcmVNZW0oRGVzdFBhY2tldCwgU3JjUGFj a2V0LCBzaXplb2YoRUZJX1BYRV9CQVNFX0NPREVfUEFDS0VUKSkpDQorICB7DQogICAgIHJldHVy biBUUlVFOw0KICAgfQ0KICAgcmV0dXJuIEZBTFNFOw0KIH0NCg0KIEJPT0xFQU4NCi1Jc0lwRmls dGVyRXF1YWwgKA0KLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfSVBfRklMVEVSICpTcmNJcEZpbHRl ciwNCi0gIElOIEVGSV9QWEVfQkFTRV9DT0RFX0lQX0ZJTFRFUiAqRHN0SXBGaWx0ZXINCi0gICkN CitJc0lwRmlsdGVyRXF1YWwoDQorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX0lQX0ZJTFRFUiAq U3JjSXBGaWx0ZXIsDQorICAgIElOIEVGSV9QWEVfQkFTRV9DT0RFX0lQX0ZJTFRFUiAqRHN0SXBG aWx0ZXIpDQogew0KLSAgaWYgKE5VTEwgPT0gU3JjSXBGaWx0ZXIgJiYgTlVMTCA9PSBEc3RJcEZp bHRlcikgew0KKyAgaWYgKE5VTEwgPT0gU3JjSXBGaWx0ZXIgJiYgTlVMTCA9PSBEc3RJcEZpbHRl cikNCisgIHsNCiAgICAgcmV0dXJuIFRSVUU7DQogICB9DQoNCiAgIGlmIChOVUxMICE9IFNyY0lw RmlsdGVyICYmIE5VTEwgIT0gRHN0SXBGaWx0ZXIpDQogICB7DQotICAgIGlmIChTcmNJcEZpbHRl ci0+SXBDbnQgIT0gRHN0SXBGaWx0ZXItPklwQ250KSB7DQorICAgIGlmIChTcmNJcEZpbHRlci0+ SXBDbnQgIT0gRHN0SXBGaWx0ZXItPklwQ250KQ0KKyAgICB7DQogICAgICAgcmV0dXJuIEZBTFNF Ow0KICAgICB9DQoNCi0gICAgaWYgKDA9PVNjdENvbXBhcmVNZW0gKFNyY0lwRmlsdGVyLT5JcExp c3QsIERzdElwRmlsdGVyLT5JcExpc3QsIHNpemVvZiAoRUZJX0lQX0FERFJFU1MpICogU3JjSXBG aWx0ZXItPklwQ250KSl7DQorICAgIGlmICgwID09IFNjdENvbXBhcmVNZW0oU3JjSXBGaWx0ZXIt PklwTGlzdCwgRHN0SXBGaWx0ZXItPklwTGlzdCwgc2l6ZW9mKEVGSV9JUF9BRERSRVNTKSAqIFNy Y0lwRmlsdGVyLT5JcENudCkpDQorICAgIHsNCiAgICAgICByZXR1cm4gVFJVRTsNCiAgICAgfQ0K ICAgfQ0KQEAgLTEwMzUsNzEgKzgyNywxNjcgQEAgSXNJcEZpbHRlckVxdWFsICgNCiB9DQoNCiBF RklfU1RBVFVTDQotTG9nVWRwUGFja2V0ICgNCi0gIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFS WV9QUk9UT0NPTCAqTG9nZ2luZ0xpYiwNCi0gIElOIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAg ICAgICAgICAqRGVzdElwLA0KLSAgSU4gRUZJX1BYRV9CQVNFX0NPREVfVURQX1BPUlQgICAgICAg ICpEZXN0UG9ydCwNCi0gIElOIEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAqU3Jj SXAsDQotICBJTiBFRklfUFhFX0JBU0VfQ09ERV9VRFBfUE9SVCAgICAgICAgKlNyY1BvcnQsDQot ICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNpemUsDQotICBJ TiBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlclB0cg0KLSAgKQ0KK0xv Z1VkcFBhY2tldCgNCisgICAgSU4gRUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICpM b2dnaW5nTGliLA0KKyAgICBJTiBFRklfSVBfQUREUkVTUyAqRGVzdElwLA0KKyAgICBJTiBFRklf UFhFX0JBU0VfQ09ERV9VRFBfUE9SVCAqRGVzdFBvcnQsDQorICAgIElOIEVGSV9JUF9BRERSRVNT ICpTcmNJcCwNCisgICAgSU4gRUZJX1BYRV9CQVNFX0NPREVfVURQX1BPUlQgKlNyY1BvcnQsDQor ICAgIElOIFVJTlROIEJ1ZmZlclNpemUsDQorICAgIElOIFZPSUQgKkJ1ZmZlclB0cikNCiB7DQot ICBpZiAoTlVMTCE9RGVzdElwKQ0KKyAgaWYgKE5VTEwgIT0gRGVzdElwKQ0KICAgew0KLSAgICBM T0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbRGVzdCBJUF0iLCBTY3RTdHJMZW4g KEwiW0Rlc3QgSVBdIikpOw0KLSAgICAvL0xPR19JUF9IRVhfREZMVCAoTG9nZ2luZ0xpYiwgRGVz dElwLT52NC5BZGRyKTsNCi0gICAgTE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCAoQ0hBUjE2 KikmRGVzdElwLCBzaXplb2YgKEVGSV9JUF9BRERSRVNTKS8yKTsNCisgICAgTE9HX0NIQVIxNl9B U0NJSV9ERkxUKExvZ2dpbmdMaWIsIEwiW0Rlc3QgSVBdIiwgU2N0U3RyTGVuKEwiW0Rlc3QgSVBd IikpOw0KKyAgICAvLyBMT0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdMaWIsIERlc3RJcC0+djQuQWRk cik7DQorICAgIExPR19CVUZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgKENIQVIxNiAqKSZEZXN0SXAs IHNpemVvZihFRklfSVBfQUREUkVTUykgLyAyKTsNCiAgIH0NCg0KICAgaWYgKE5VTEwgIT0gRGVz dFBvcnQpDQogICB7DQotICAgIExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltE ZXN0IFBvcnRdIiwgU2N0U3RyTGVuIChMIltEZXN0IFBvcnRdIikpOw0KKyAgICBMT0dfQ0hBUjE2 X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbRGVzdCBQb3J0XSIsIFNjdFN0ckxlbihMIltEZXN0 IFBvcnRdIikpOw0KICAgICBMT0dfVUlOVDE2X0hFWF9ERkxUKExvZ2dpbmdMaWIsICpEZXN0UG9y dCk7DQogICB9DQoNCiAgIGlmIChOVUxMICE9IFNyY0lwKQ0KICAgew0KLSAgICBMT0dfQ0hBUjE2 X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJbU3JjIElQXSIsIFNjdFN0ckxlbiAoTCJbU3JjIElQ XSIpKTsNCi0gICAgLy9MT0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdMaWIsIFNyY0lwLT52NC5BZGRy KTsNCi0gICAgTE9HX0JVRl9IRVhfREZMVChMb2dnaW5nTGliLCAoQ0hBUjE2KikmU3JjSXAsIHNp emVvZiAoRUZJX0lQX0FERFJFU1MpLzIpOw0KKyAgICBMT0dfQ0hBUjE2X0FTQ0lJX0RGTFQoTG9n Z2luZ0xpYiwgTCJbU3JjIElQXSIsIFNjdFN0ckxlbihMIltTcmMgSVBdIikpOw0KKyAgICAvLyBM T0dfSVBfSEVYX0RGTFQgKExvZ2dpbmdMaWIsIFNyY0lwLT52NC5BZGRyKTsNCisgICAgTE9HX0JV Rl9IRVhfREZMVChMb2dnaW5nTGliLCAoQ0hBUjE2ICopJlNyY0lwLCBzaXplb2YoRUZJX0lQX0FE RFJFU1MpIC8gMik7DQogICB9DQoNCiAgIGlmIChOVUxMICE9IFNyY1BvcnQpDQogICB7DQotICAg IExPR19DSEFSMTZfQVNDSUlfREZMVChMb2dnaW5nTGliLCBMIltTcmMgUG9ydF0iLCBTY3RTdHJM ZW4gKEwiW1NyYyBQb3J0XSIpKTsNCisgICAgTE9HX0NIQVIxNl9BU0NJSV9ERkxUKExvZ2dpbmdM aWIsIEwiW1NyYyBQb3J0XSIsIFNjdFN0ckxlbihMIltTcmMgUG9ydF0iKSk7DQogICAgIExPR19V SU5UMTZfSEVYX0RGTFQoTG9nZ2luZ0xpYiwgKlNyY1BvcnQpOw0KICAgfQ0KLSAgaWYgKDAhPUJ1 ZmZlclNpemUpDQorICBpZiAoMCAhPSBCdWZmZXJTaXplKQ0KICAgew0KLSAgICBMT0dfQ0hBUjE2 X0FTQ0lJX0RGTFQoTG9nZ2luZ0xpYiwgTCJSZWNlaXZlZCBVRFAgUGFja2V0IiwgU2N0U3RyTGVu IChMIlJlY2VpdmVkIFVEUCBQYWNrZXQiKSk7DQorICAgIExPR19DSEFSMTZfQVNDSUlfREZMVChM b2dnaW5nTGliLCBMIlJlY2VpdmVkIFVEUCBQYWNrZXQiLCBTY3RTdHJMZW4oTCJSZWNlaXZlZCBV RFAgUGFja2V0IikpOw0KICAgICBMT0dfQlVGX0hFWF9ERkxUKExvZ2dpbmdMaWIsIEJ1ZmZlclB0 ciwgQnVmZmVyU2l6ZSk7DQogICB9DQogICByZXR1cm4gRUZJX1NVQ0NFU1M7DQogfQ0KDQogRUZJ X1NUQVRVUw0KLUxvZ0NoYXI4U3RyaW5nICgNCi0gIElOIEVGSV9URVNUX0xPR0dJTkdfTElCUkFS WV9QUk9UT0NPTCAgICAgICAgICAgKkxvZ2dpbmdMaWIsDQotICBJTiBDSEFSOCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQotICBJTiBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW4NCi0gICkNCitMb2dDaGFyOFN0cmlu ZygNCisgICAgSU4gRUZJX1RFU1RfTE9HR0lOR19MSUJSQVJZX1BST1RPQ09MICpMb2dnaW5nTGli LA0KKyAgICBJTiBDSEFSOCAqQnVmZmVyLA0KKyAgICBJTiBVSU5UTiBMZW4pDQogew0KLSAgRUZJ X1NUQVRVUyAgICAgICAgICAgU3RhdHVzOw0KLSAgQ0hBUjE2ICAgICAgICAgICAgICAqVGVtcEJ1 ZmZlcjsNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKyAgQ0hBUjE2ICpUZW1wQnVmZmVyOw0KDQot ICBpZiAoTlVMTCA9PSBCdWZmZXIpIHsNCisgIGlmIChOVUxMID09IEJ1ZmZlcikNCisgIHsNCiAg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgIH0NCg0KLSAgU3RhdHVzID0gZ3RC Uy0+QWxsb2NhdGVQb29sIChFZmlSdW50aW1lU2VydmljZXNEYXRhLCBMZW4gKiBzaXplb2YgKENI QVIxNiksIChWT0lEICoqKSAmVGVtcEJ1ZmZlcik7DQotICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp IHsNCisgIFN0YXR1cyA9IGd0QlMtPkFsbG9jYXRlUG9vbChFZmlSdW50aW1lU2VydmljZXNEYXRh LCBMZW4gKiBzaXplb2YoQ0hBUjE2KSwgKFZPSUQgKiopJlRlbXBCdWZmZXIpOw0KKyAgaWYgKEVG SV9FUlJPUihTdGF0dXMpKQ0KKyAgew0KICAgICByZXR1cm4gU3RhdHVzOw0KICAgfQ0KLSAgU2N0 WmVyb01lbSAoJlRlbXBCdWZmZXIsIExlbiAqIHNpemVvZiAoQ0hBUjE2KSk7DQorICBTY3RaZXJv TWVtKCZUZW1wQnVmZmVyLCBMZW4gKiBzaXplb2YoQ0hBUjE2KSk7DQoNCi0gIExPR19DSEFSMTZf QVNDSUlfREZMVCAoTG9nZ2luZ0xpYiwgVGVtcEJ1ZmZlciwgTGVuKTsNCisgIExPR19DSEFSMTZf QVNDSUlfREZMVChMb2dnaW5nTGliLCBUZW1wQnVmZmVyLCBMZW4pOw0KDQotICBndEJTLT5GcmVl UG9vbCAoVGVtcEJ1ZmZlcik7DQorICBndEJTLT5GcmVlUG9vbChUZW1wQnVmZmVyKTsNCiAgIHJl dHVybiBFRklfU1VDQ0VTUzsNCiB9DQorDQorRUZJX1NUQVRVUyBMb2NhdGVEZXZpY2VQYXRoRnJv bUJjSW50ZXJmYWNlKElOIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpCY0ludGVyZmFjZTIs IElOIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKkRldmljZVBhdGgsIElOIEVGSV9TVEFOREFS RF9URVNUX0xJQlJBUllfUFJPVE9DT0wgKlN0YW5kYXJkTGliKQ0KK3sNCisgIEVGSV9TVEFUVVMg U3RhdHVzOw0KKw0KKyAgVUlOVE4gTm9IYW5kbGVzLCBJbmRleDsNCisgIEVGSV9IQU5ETEUgKkhh bmRsZUJ1ZmZlcjsNCisgIEVGSV9QWEVfQkFTRV9DT0RFX1BST1RPQ09MICpPdGhlckJjSW50ZXJm YWNlMjsNCisNCisgIC8vDQorICAvLyBMb2NhdGUgdGhlIEhhbmRsZSB0aGF0IHRoZSBCY0ludGVy ZmFjZSBpcyBib3VuZCB0bw0KKyAgLy8NCisgIFN0YXR1cyA9IGd0QlMtPkxvY2F0ZUhhbmRsZUJ1 ZmZlcigNCisgICAgICBCeVByb3RvY29sLA0KKyAgICAgICZnQmxhY2tCb3hFZmlQeGVCYXNlQ29k ZVByb3RvY29sR3VpZCwNCisgICAgICBOVUxMLA0KKyAgICAgICZOb0hhbmRsZXMsDQorICAgICAg JkhhbmRsZUJ1ZmZlcik7DQorICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICB7DQorICAgIFN0 YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24oDQorICAgICAgICBTdGFuZGFyZExpYiwNCisgICAg ICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQsDQorICAgICAgICBnVGVzdEdlbmVyaWNGYWls dXJlR3VpZCwNCisgICAgICAgIEwiQlMuTG9jYXRlSGFuZGxlIC0gTG9jYXRlSGFuZGxlIiwNCisg ICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgX19GSUxFX18sDQorICAgICAg ICAoVUlOVE4pX19MSU5FX18sDQorICAgICAgICBTdGF0dXMpOw0KKyAgICByZXR1cm4gU3RhdHVz Ow0KKyAgfQ0KKw0KKyAgaWYgKE5vSGFuZGxlcyA8PSAwKQ0KKyAgew0KKyAgICBTdGFuZGFyZExp Yi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICBFRklf VEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQs DQorICAgICAgICBMIkJTLkxvY2F0ZUhhbmRsZSAtIExvY2F0ZUhhbmRsZSIsDQorICAgICAgICBM IiVhOiVkOkRldmljZSBFcnJvciIsDQorICAgICAgICBfX0ZJTEVfXywNCisgICAgICAgIChVSU5U TilfX0xJTkVfXyk7DQorICAgIHJldHVybiBFRklfREVWSUNFX0VSUk9SOw0KKyAgfQ0KKw0KKyAg Ly8NCisgIC8vIEZpbmQgdGhlIGV4YWN0IGhhbmRsZSB0aGF0IEJjSW50ZXJmYWNlIGJvdW5kIHRv DQorICAvLw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTm9IYW5kbGVzOyBJbmRleCsrKQ0K KyAgew0KKyAgICBTdGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCgNCisgICAgICAgIEhhbmRs ZUJ1ZmZlcltJbmRleF0sDQorICAgICAgICAmZ0JsYWNrQm94RWZpUHhlQmFzZUNvZGVQcm90b2Nv bEd1aWQsDQorICAgICAgICAoVk9JRCAqKikgJk90aGVyQmNJbnRlcmZhY2UyKTsNCisgICAgaWYg KEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFz c2VydGlvbigNCisgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgIEVGSV9URVNUX0FT U0VSVElPTl9GQUlMRUQsDQorICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KKyAg ICAgICAgICBMIkJTLkhhbmRsZVByb3RvY29sIC0gSGFuZGxlUHJvdG9jb2wiLA0KKyAgICAgICAg ICBMIiVhOiVkOlN0YXR1cyAtICVyIiwNCisgICAgICAgICAgX19GSUxFX18sDQorICAgICAgICAg IChVSU5UTilfX0xJTkVfXywNCisgICAgICAgICAgU3RhdHVzKTsNCisNCisgICAgICBndEJTLT5G cmVlUG9vbChIYW5kbGVCdWZmZXIpOw0KKyAgICAgIHJldHVybiBTdGF0dXM7DQorICAgIH0NCisN CisgICAgaWYgKE90aGVyQmNJbnRlcmZhY2UyID09IEJjSW50ZXJmYWNlMikNCisgICAgew0KKyAg ICAgIGJyZWFrOw0KKyAgICB9DQorICB9DQorDQorICAvLw0KKyAgLy8gTG9jYXRlIHRoZSBMb2Fk ZWQgSW1hZ2UgRGV2aWNlUGF0aCBQcm90b2NvbCBib3VuZCB0byBQWEVfQkFTRV9DT0RFIFByb3Rv Y29sDQorICAvLw0KKyAgaWYgKEluZGV4ID49IE5vSGFuZGxlcykNCisgIHsNCisgICAgLy8NCisg ICAgLy8gTm8gSGFuZGxlIEZvdW5kISENCisgICAgLy8NCisgICAgZ3RCUy0+RnJlZVBvb2woSGFu ZGxlQnVmZmVyKTsNCisgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQorICB9DQorDQorICBT dGF0dXMgPSBndEJTLT5IYW5kbGVQcm90b2NvbCgNCisgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhd LA0KKyAgICAgICZnQmxhY2tCb3hFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KKyAgICAgIChW T0lEICoqKSBEZXZpY2VQYXRoKTsNCisNCisgIGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZlcik7 DQorICByZXR1cm4gU3RhdHVzOw0KK30NClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlm ZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1w bGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0Q29uZm9ybWFuY2UuYyBi L3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3Jr L0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3b3JrQkJUZXN0Q29uZm9ybWFuY2UuYw0KaW5kZXggZTcz YzdjZWJjYmNmLi5iMWI5MDA1MDU5YmIgMTAwNjQ0DQotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxl TmV0d29ya0JCVGVzdENvbmZvcm1hbmNlLmMNCisrKyBiL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2Fz ZS9VRUZJL0VGSS9Qcm90b2NvbC9TaW1wbGVOZXR3b3JrL0JsYWNrQm94VGVzdC9TaW1wbGVOZXR3 b3JrQkJUZXN0Q29uZm9ybWFuY2UuYw0KQEAgLTU0LDYgKzU0LDggQEAgQkJUZXN0U3RhcnRDb25m b3JtYW5jZVRlc3QgKA0KICAgRUZJX1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICAgICAgICAgICAq U25wSW50ZXJmYWNlOw0KICAgRUZJX1NJTVBMRV9ORVRXT1JLX1NUQVRFICAgICAgICAgICAgICBT dGF0ZTEsIFN0YXRlMjsNCg0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAg ICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpE ZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAgIC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRl cmZhY2UNCiAgIC8vDQpAQCAtNzIsNiArNzQsMjMgQEAgQkJUZXN0U3RhcnRDb25mb3JtYW5jZVRl c3QgKA0KICAgLy8NCiAgIFNucEludGVyZmFjZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJPVE9D T0wgKilDbGllbnRJbnRlcmZhY2U7DQoNCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNu cEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYg KFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisg ICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAg IGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3Jk TWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAg ICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAg ICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERldmlj ZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMt PkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykp DQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisg ICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdv cmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdGFydGVkLg0KICAgLy8gSWYgbm90LCBj aGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtTdGFydGVkLg0KQEAgLTE2MCw3ICsx NzksOCBAQCBCQlRlc3RTdG9wQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9URVNUX0FTU0VSVElP TiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09S S19QUk9UT0NPTCAgICAgICAgICAgKlNucEludGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09S S19TVEFURSAgICAgICAgICAgICAgU3RhdGUxLCBTdGF0ZTI7DQotDQorICBFRklfREVWSUNFX1BB VEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRo ZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC0xNzksNiArMTk5LDIzIEBA IEJCVGVzdFN0b3BDb25mb3JtYW5jZVRlc3QgKA0KICAgLy8NCiAgIFNucEludGVyZmFjZSA9IChF RklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQoNCisgIFN0YXR1 cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBh dGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBE ZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhU b1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisg ICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAg U3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVG QVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAg ICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICAp Ow0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAg ICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAg IERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdo ZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtT dG9wcGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdv cmtTdG9wcGVkLg0KQEAgLTI2Niw3ICszMDMsOCBAQCBCQlRlc3RJbml0aWFsaXplQ29uZm9ybWFu Y2VUZXN0ICgNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0 aW9uVHlwZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAgICAgICAgICAgKlNucElu dGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAgICAgICAgICAgU3RhdGUx LCBTdGF0ZTI7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRl dmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmlj ZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFj ZQ0KICAgLy8NCkBAIC0yODUsNiArMzIzLDIzIEBAIEJCVGVzdEluaXRpYWxpemVDb25mb3JtYW5j ZVRlc3QgKA0KICAgLy8NCiAgIFNucEludGVyZmFjZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJP VE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQoNCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJv bVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAg aWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsN CisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQor ICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVj b3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAg ICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAg ICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERl dmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0 QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1 cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsN CisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5l dHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90 LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTM3Nyw3 ICs0MzIsOCBAQCBCQlRlc3RSZXNldENvbmZvcm1hbmNlVGVzdCAoDQogICBFRklfVEVTVF9BU1NF UlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklfU0lNUExFX05F VFdPUktfUFJPVE9DT0wgICAgICAgICAgICpTbnBJbnRlcmZhY2U7DQogICBFRklfU0lNUExFX05F VFdPUktfU1RBVEUgICAgICAgICAgICAgIFN0YXRlMSwgU3RhdGUyOw0KLQ0KKyAgRUZJX0RFVklD RV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAgIC8vIEdl dCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCiAgIC8vDQpAQCAtMzk2LDYgKzQ1Miwy MyBAQCBCQlRlc3RSZXNldENvbmZvcm1hbmNlVGVzdCAoDQogICAvLw0KICAgU25wSW50ZXJmYWNl ID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCg0KKyAg U3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFjZSwmRGV2 aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQor ICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNl UGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkg ew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAg ICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZF TF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIs DQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAg ICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0K KyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQor ICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gQ2hl Y2sgd2hldGhlciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2ltcGxlTmV0 d29ya1N0b3BwZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZpU2ltcGxl TmV0d29ya1N0b3BwZWQuDQpAQCAtNDg4LDcgKzU2MSw4IEBAIEJCVGVzdFNodXRkb3duQ29uZm9y bWFuY2VUZXN0ICgNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAgICAgICAgQXNz ZXJ0aW9uVHlwZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAgICAgICAgICAgKlNu cEludGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAgICAgICAgICAgU3Rh dGUxLCBTdGF0ZTI7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAg KkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRl dmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVy ZmFjZQ0KICAgLy8NCkBAIC01MDcsNiArNTgxLDIzIEBAIEJCVGVzdFNodXRkb3duQ29uZm9ybWFu Y2VUZXN0ICgNCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJTVBMRV9ORVRXT1JLX1BS T1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0aEZy b21TbnBJbnRlcmZhY2UoU25wSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsNCisg IGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5VTEw7 DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgpOw0K KyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJl Y29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAg ICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAgICBE ZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMgPSBn dEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihTdGF0 dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5VTEw7 DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzdGF0ZSBvZiBu ZXR3b3JrIGludGVyZmFjZSBpcyBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCiAgIC8vIElmIG5v dCwgY2hhbmdlIHRoZSBzdGF0ZSB0byBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCkBAIC01OTQs NyArNjg1LDggQEAgQkJUZXN0UmVjZWl2ZUZpbHRlckNvbmZvcm1hbmNlVGVzdCAoDQogICBFRklf VEVTVF9BU1NFUlRJT04gICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGU7DQogICBFRklf U0lNUExFX05FVFdPUktfUFJPVE9DT0wgICAgICAgICAgICpTbnBJbnRlcmZhY2U7DQogICBFRklf TUFDX0FERFJFU1MgICAgICAgICAgICAgICAgICAgICAgIE1BQzsNCi0NCisgIEVGSV9ERVZJQ0Vf UEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQg dGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTYxMyw2ICs3MDUsMjMg QEAgQkJUZXN0UmVjZWl2ZUZpbHRlckNvbmZvcm1hbmNlVGVzdCAoDQogICAvLw0KICAgU25wSW50 ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsN Cg0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFj ZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNT KSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0 RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0g TlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAg ICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9T RV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVz XHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAg ICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhT dHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0 dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAg Ly8gQ2hlY2sgd2hldGhlciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2lt cGxlTmV0d29ya1N0b3BwZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZp U2ltcGxlTmV0d29ya1N0b3BwZWQuDQpAQCAtODQwLDcgKzk0OSw4IEBAIEJCVGVzdFN0YXRpb25B ZGRyZXNzQ29uZm9ybWFuY2VUZXN0ICgNCiAgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAg ICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAg ICAgICAgICAgKlNucEludGVyZmFjZTsNCiAgIEVGSV9TSU1QTEVfTkVUV09SS19TVEFURSAgICAg ICAgICAgICAgU3RhdGUxLCBTdGF0ZTI7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wg ICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBM aWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC04NTksNiArOTY5LDIzIEBAIEJCVGVzdFN0YXRp b25BZGRyZXNzQ29uZm9ybWFuY2VUZXN0ICgNCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJ X1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KDQorICBTdGF0dXM9 TG9jYXRlRGV2aWNlUGF0aEZyb21TbnBJbnRlcmZhY2UoU25wSW50ZXJmYWNlLCZEZXZpY2VQYXRo LFN0YW5kYXJkTGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2 aWNlUGF0aFN0ciA9IE5VTEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9T dHIgKERldmljZVBhdGgpOw0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAg ICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0 YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFV TFQsDQorICAgICAgICAgICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAg ICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsN CisgICAgICBTdGF0dXMgPSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBE ZXZpY2VQYXRoU3RyPU5VTEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGVjayB3aGV0 aGVyIHRoZSBzdGF0ZSBvZiBuZXR3b3JrIGludGVyZmFjZSBpcyBFZmlTaW1wbGVOZXR3b3JrU3Rv cHBlZC4NCiAgIC8vIElmIG5vdCwgY2hhbmdlIHRoZSBzdGF0ZSB0byBFZmlTaW1wbGVOZXR3b3Jr U3RvcHBlZC4NCkBAIC05ODgsNyArMTExNSw4IEBAIEJCVGVzdFN0YXRpc3RpY3NDb25mb3JtYW5j ZVRlc3QgKA0KICAgRUZJX1NJTVBMRV9ORVRXT1JLX1NUQVRFICAgICAgICAgICAgICBTdGF0ZTEs IFN0YXRlMjsNCiAgIEVGSV9ORVRXT1JLX1NUQVRJU1RJQ1MgICAgICAgICAgICAgICAgU3RhdGlz dGljc1RhYmxlOw0KICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 aXN0aWNzU2l6ZTsNCi0NCisgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAgICAgICAgICAgICAq RGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2 aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJm YWNlDQogICAvLw0KQEAgLTEwMDcsNiArMTEzNSwyMyBAQCBCQlRlc3RTdGF0aXN0aWNzQ29uZm9y bWFuY2VUZXN0ICgNCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJTVBMRV9ORVRXT1JL X1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0 aEZyb21TbnBJbnRlcmZhY2UoU25wSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsN CisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5V TEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgp Ow0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWIt PlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAg ICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAg ICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAg ICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMg PSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihT dGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5V TEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGVjayB3aGV0aGVyIHRoZSBzdGF0ZSBv ZiBuZXR3b3JrIGludGVyZmFjZSBpcyBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCiAgIC8vIElm IG5vdCwgY2hhbmdlIHRoZSBzdGF0ZSB0byBFZmlTaW1wbGVOZXR3b3JrU3RvcHBlZC4NCkBAIC0x MTY0LDcgKzEzMDksOCBAQCBCQlRlc3RNQ2FzdElwVG9NYWNDb25mb3JtYW5jZVRlc3QgKA0KICAg RUZJX1NJTVBMRV9ORVRXT1JLX1NUQVRFICAgICAgICAgICAgICBTdGF0ZTEsIFN0YXRlMjsNCiAg IEVGSV9JUF9BRERSRVNTICAgICAgICAgICAgICAgICAgICAgICAgSVA7DQogICBFRklfTUFDX0FE RFJFU1MgICAgICAgICAgICAgICAgICAgICAgIE1BQzsNCi0NCisgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIENIQVIxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aFN0cjsNCiAgIC8vDQogICAvLyBHZXQgdGhlIFN0 YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQogICAvLw0KQEAgLTExODMsNiArMTMyOSwyMyBAQCBC QlRlc3RNQ2FzdElwVG9NYWNDb25mb3JtYW5jZVRlc3QgKA0KICAgLy8NCiAgIFNucEludGVyZmFj ZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJPVE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQoNCisg IFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJvbVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRl dmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0K KyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsNCisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmlj ZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQorICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwp IHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAg ICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVW RUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4i LA0KKyAgICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAg ICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsN CisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0K KyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsNCisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENo ZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5ldHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5l dHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBs ZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTEyNzksNiArMTQ0Miw4IEBAIEJCVGVzdE5WRGF0YUNvbmZv cm1hbmNlVGVzdCAoDQogICBFRklfU0lNUExFX05FVFdPUktfU1RBVEUgICAgICAgICAgICAgIFN0 YXRlMSwgU3RhdGUyLCBTdGF0ZTM7DQogICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpCdWZmZXI7DQogICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENoZWNrUG9pbnQxU3RhdGU7DQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAg ICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IElu dGVyZmFjZQ0KICAgLy8NCkBAIC0xMjk3LDYgKzE0NjIsMjMgQEAgQkJUZXN0TlZEYXRhQ29uZm9y bWFuY2VUZXN0ICgNCiAgIC8vDQogICBTbnBJbnRlcmZhY2UgPSAoRUZJX1NJTVBMRV9ORVRXT1JL X1BST1RPQ09MICopQ2xpZW50SW50ZXJmYWNlOw0KDQorICBTdGF0dXM9TG9jYXRlRGV2aWNlUGF0 aEZyb21TbnBJbnRlcmZhY2UoU25wSW50ZXJmYWNlLCZEZXZpY2VQYXRoLFN0YW5kYXJkTGliKTsN CisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgRGV2aWNlUGF0aFN0ciA9IE5V TEw7DQorICAgIERldmljZVBhdGhTdHIgPSBTY3REZXZpY2VQYXRoVG9TdHIgKERldmljZVBhdGgp Ow0KKyAgICBpZiAoRGV2aWNlUGF0aFN0ciAhPSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWIt PlJlY29yZE1lc3NhZ2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAg ICAgICAgICAgICAgICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAg ICAgICAgICAgICAgTCJEZXZpY2UgUGF0aDogJXNcclxuIiwNCisgICAgICAgICAgICAgICAgICAg ICBEZXZpY2VQYXRoU3RyDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAgICBTdGF0dXMg PSBndEJTLT5GcmVlUG9vbCAoRGV2aWNlUGF0aFN0cik7DQorICAgICAgaWYgKEVGSV9FUlJPUihT dGF0dXMpKQ0KKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAgICBEZXZpY2VQYXRoU3RyPU5V TEw7DQorICAgIH0NCisgIH0NCiAgIC8vDQogICAvLyBDaGVjayB3aGV0aGVyIHRoZSBuZXR3b3Jr IGludGVyZmFjZSBzdXBwb3J0IE52RGF0YSBpZiBub3QgcmV0dXJuDQogICAvLw0KQEAgLTE1MjYs NyArMTcwOCw4IEBAIEJCVGVzdEdldFN0YXR1c0NvbmZvcm1hbmNlVGVzdCAoDQogICBWT0lEICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpUeEJ1ZjsNCiAgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJydXB0U3RhdHVzOw0KICAgLy9VSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwSW50ZXJydXB0U3RhdHVzOw0KLQ0KKyAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MICAgICAgICAgICAgICpEZXZpY2VQYXRoOw0KKyAgQ0hBUjE2 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEZXZpY2VQYXRoU3RyOw0KICAgLy8NCiAg IC8vIEdldCB0aGUgU3RhbmRhcmQgTGlicmFyeSBJbnRlcmZhY2UNCiAgIC8vDQpAQCAtMTU0NSw2 ICsxNzI4LDIzIEBAIEJCVGVzdEdldFN0YXR1c0NvbmZvcm1hbmNlVGVzdCAoDQogICAvLw0KICAg U25wSW50ZXJmYWNlID0gKEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVy ZmFjZTsNCg0KKyAgU3RhdHVzPUxvY2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucElu dGVyZmFjZSwmRGV2aWNlUGF0aCxTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9T VUNDRVNTKSB7DQorICAgIERldmljZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3Ry ID0gU2N0RGV2aWNlUGF0aFRvU3RyIChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhT dHIgIT0gTlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAg ICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklf VkVSQk9TRV9MRVZFTF9ERUZBVUxULA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBh dGg6ICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAg ICAgICAgICAgICAgICAgICk7DQorICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmlj ZVBhdGhTdHIpOw0KKyAgICAgIGlmIChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVy biBTdGF0dXM7DQorICAgICAgRGV2aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAv Lw0KICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMg RWZpU2ltcGxlTmV0d29ya1N0b3BwZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUg dG8gRWZpU2ltcGxlTmV0d29ya1N0b3BwZWQuDQpAQCAtMTcxNyw3ICsxOTE3LDggQEAgQkJUZXN0 VHJhbnNtaXRDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX01BQ19BRERSRVNTICAgICAgICAgICAg ICAgICAgICAgICBTcmNBZGRyOw0KICAgRUZJX01BQ19BRERSRVNTICAgICAgICAgICAgICAgICAg ICAgICBEZXN0QWRkcjsNCiAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHJvdG9jb2w7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAgKkRl dmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkRldmlj ZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFyZCBMaWJyYXJ5IEludGVyZmFj ZQ0KICAgLy8NCkBAIC0xNzM2LDYgKzE5MzcsMjMgQEAgQkJUZXN0VHJhbnNtaXRDb25mb3JtYW5j ZVRlc3QgKA0KICAgLy8NCiAgIFNucEludGVyZmFjZSA9IChFRklfU0lNUExFX05FVFdPUktfUFJP VE9DT0wgKilDbGllbnRJbnRlcmZhY2U7DQoNCisgIFN0YXR1cz1Mb2NhdGVEZXZpY2VQYXRoRnJv bVNucEludGVyZmFjZShTbnBJbnRlcmZhY2UsJkRldmljZVBhdGgsU3RhbmRhcmRMaWIpOw0KKyAg aWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICBEZXZpY2VQYXRoU3RyID0gTlVMTDsN CisgICAgRGV2aWNlUGF0aFN0ciA9IFNjdERldmljZVBhdGhUb1N0ciAoRGV2aWNlUGF0aCk7DQor ICAgIGlmIChEZXZpY2VQYXRoU3RyICE9IE5VTEwpIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVj b3JkTWVzc2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAg ICAgICAgICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAg ICAgICAgICBMIkRldmljZSBQYXRoOiAlc1xyXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgIERl dmljZVBhdGhTdHINCisgICAgICAgICAgICAgICAgICAgICApOw0KKyAgICAgIFN0YXR1cyA9IGd0 QlMtPkZyZWVQb29sIChEZXZpY2VQYXRoU3RyKTsNCisgICAgICBpZiAoRUZJX0VSUk9SKFN0YXR1 cykpDQorICAgICAgICByZXR1cm4gU3RhdHVzOw0KKyAgICAgIERldmljZVBhdGhTdHI9TlVMTDsN CisgICAgfQ0KKyAgfQ0KICAgLy8NCiAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHN0YXRlIG9mIG5l dHdvcmsgaW50ZXJmYWNlIGlzIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KICAgLy8gSWYgbm90 LCBjaGFuZ2UgdGhlIHN0YXRlIHRvIEVmaVNpbXBsZU5ldHdvcmtTdG9wcGVkLg0KQEAgLTE5OTMs NyArMjIxMSw4IEBAIEJCVGVzdFJlY2VpdmVDb25mb3JtYW5jZVRlc3QgKA0KICAgRUZJX01BQ19B RERSRVNTICAgICAgICAgICAgICAgICAgICAgICBTcmNBZGRyOw0KICAgRUZJX01BQ19BRERSRVNT ICAgICAgICAgICAgICAgICAgICAgICBEZXN0QWRkcjsNCiAgIFVJTlQxNiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHJvdG9jb2w7DQotDQorICBFRklfREVWSUNFX1BBVEhfUFJPVE9D T0wgICAgICAgICAgICAgKkRldmljZVBhdGg7DQorICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkRldmljZVBhdGhTdHI7DQogICAvLw0KICAgLy8gR2V0IHRoZSBTdGFuZGFy ZCBMaWJyYXJ5IEludGVyZmFjZQ0KICAgLy8NCkBAIC0yMDEyLDYgKzIyMzEsMjMgQEAgQkJUZXN0 UmVjZWl2ZUNvbmZvcm1hbmNlVGVzdCAoDQogICAvLw0KICAgU25wSW50ZXJmYWNlID0gKEVGSV9T SU1QTEVfTkVUV09SS19QUk9UT0NPTCAqKUNsaWVudEludGVyZmFjZTsNCg0KKyAgU3RhdHVzPUxv Y2F0ZURldmljZVBhdGhGcm9tU25wSW50ZXJmYWNlKFNucEludGVyZmFjZSwmRGV2aWNlUGF0aCxT dGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIERldmlj ZVBhdGhTdHIgPSBOVUxMOw0KKyAgICBEZXZpY2VQYXRoU3RyID0gU2N0RGV2aWNlUGF0aFRvU3Ry IChEZXZpY2VQYXRoKTsNCisgICAgaWYgKERldmljZVBhdGhTdHIgIT0gTlVMTCkgew0KKyAgICAg IFN0YW5kYXJkTGliLT5SZWNvcmRNZXNzYWdlICgNCisgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICBFRklfVkVSQk9TRV9MRVZFTF9ERUZBVUxU LA0KKyAgICAgICAgICAgICAgICAgICAgIEwiRGV2aWNlIFBhdGg6ICVzXHJcbiIsDQorICAgICAg ICAgICAgICAgICAgICAgRGV2aWNlUGF0aFN0cg0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgU3RhdHVzID0gZ3RCUy0+RnJlZVBvb2wgKERldmljZVBhdGhTdHIpOw0KKyAgICAgIGlm IChFRklfRVJST1IoU3RhdHVzKSkNCisgICAgICAgIHJldHVybiBTdGF0dXM7DQorICAgICAgRGV2 aWNlUGF0aFN0cj1OVUxMOw0KKyAgICB9DQorICB9DQogICAvLw0KICAgLy8gQ2hlY2sgd2hldGhl ciB0aGUgc3RhdGUgb2YgbmV0d29yayBpbnRlcmZhY2UgaXMgRWZpU2ltcGxlTmV0d29ya1N0b3Bw ZWQuDQogICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgc3RhdGUgdG8gRWZpU2ltcGxlTmV0d29ya1N0 b3BwZWQuDQpkaWZmIC0tZ2l0IGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1By b3RvY29sL1NpbXBsZU5ldHdvcmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3RNYWlu LmMgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0 d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0d29ya0JCVGVzdE1haW4uYw0KaW5kZXggOTE4ZmFj N2RiZDdmLi4yMWQyMGI4MmIwMjUgMTAwNjQ0DQotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENh c2UvVUVGSS9FRkkvUHJvdG9jb2wvU2ltcGxlTmV0d29yay9CbGFja0JveFRlc3QvU2ltcGxlTmV0 d29ya0JCVGVzdE1haW4uYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJ L1Byb3RvY29sL1NpbXBsZU5ldHdvcmsvQmxhY2tCb3hUZXN0L1NpbXBsZU5ldHdvcmtCQlRlc3RN YWluLmMNCkBAIC0zMzYsMyArMzM2LDk5IEBAIEJCVGVzdFNpbXBsZU5ldHdvcmtVbmxvYWQgKA0K ICAgICAgICAgICAgKTsNCiB9DQoNCisNCitFRklfU1RBVFVTIExvY2F0ZURldmljZVBhdGhGcm9t U25wSW50ZXJmYWNlKElOIEVGSV9TSU1QTEVfTkVUV09SS19QUk9UT0NPTCAqU25wSW50ZXJmYWNl MiwgSU4gRUZJX0RFVklDRV9QQVRIX1BST1RPQ09MICoqRGV2aWNlUGF0aCwgSU4gRUZJX1NUQU5E QVJEX1RFU1RfTElCUkFSWV9QUk9UT0NPTCAqU3RhbmRhcmRMaWIpDQorew0KKyAgRUZJX1NUQVRV UyBTdGF0dXM7DQorDQorICBVSU5UTiBOb0hhbmRsZXMsIEluZGV4Ow0KKyAgRUZJX0hBTkRMRSAq SGFuZGxlQnVmZmVyOw0KKyAgRUZJX1NJTVBMRV9ORVRXT1JLX1BST1RPQ09MICpPdGhlclNucElu dGVyZmFjZTI7DQorDQorICAvLw0KKyAgLy8gTG9jYXRlIHRoZSBIYW5kbGUgdGhhdCB0aGUgU25w SW50ZXJmYWNlIGlzIGJvdW5kIHRvDQorICAvLw0KKyAgU3RhdHVzID0gZ3RCUy0+TG9jYXRlSGFu ZGxlQnVmZmVyKA0KKyAgICAgIEJ5UHJvdG9jb2wsDQorICAgICAgJmdCbGFja0JveEVmaVNpbXBs ZU5ldHdvcmtQcm90b2NvbEd1aWQsDQorICAgICAgTlVMTCwNCisgICAgICAmTm9IYW5kbGVzLA0K KyAgICAgICZIYW5kbGVCdWZmZXIpOw0KKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKQ0KKyAgew0K KyAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAgU3RhbmRhcmRMaWIs DQorICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAgICAgICAgZ1Rlc3RHZW5l cmljRmFpbHVyZUd1aWQsDQorICAgICAgICBMIkJTLkxvY2F0ZUhhbmRsZSAtIExvY2F0ZUhhbmRs ZSIsDQorICAgICAgICBMIiVhOiVkOlN0YXR1cyAtICVyIiwNCisgICAgICAgIF9fRklMRV9fLA0K KyAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgU3RhdHVzKTsNCisgICAgcmV0dXJu IFN0YXR1czsNCisgIH0NCisNCisgIGlmIChOb0hhbmRsZXMgPD0gMCkNCisgIHsNCisgICAgU3Rh bmRhcmRMaWItPlJlY29yZEFzc2VydGlvbigNCisgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAg ICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1 cmVHdWlkLA0KKyAgICAgICAgTCJCUy5Mb2NhdGVIYW5kbGUgLSBMb2NhdGVIYW5kbGUiLA0KKyAg ICAgICAgTCIlYTolZDpEZXZpY2UgRXJyb3IiLA0KKyAgICAgICAgX19GSUxFX18sDQorICAgICAg ICAoVUlOVE4pX19MSU5FX18pOw0KKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCisgIH0N CisNCisgIC8vDQorICAvLyBGaW5kIHRoZSBleGFjdCBoYW5kbGUgdGhhdCBTbnBJbnRlcmZhY2Ug Ym91bmQgdG8NCisgIC8vDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOb0hhbmRsZXM7IElu ZGV4KyspDQorICB7DQorICAgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKA0KKyAgICAg ICAgSGFuZGxlQnVmZmVyW0luZGV4XSwNCisgICAgICAgICZnQmxhY2tCb3hFZmlTaW1wbGVOZXR3 b3JrUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgKFZPSUQgKiopICZPdGhlclNucEludGVyZmFjZTIp Ow0KKyAgICBpZiAoRUZJX0VSUk9SKFN0YXR1cykpDQorICAgIHsNCisgICAgICBTdGFuZGFyZExp Yi0+UmVjb3JkQXNzZXJ0aW9uKA0KKyAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAg RUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVy ZUd1aWQsDQorICAgICAgICAgIEwiQlMuSGFuZGxlUHJvdG9jb2wgLSBIYW5kbGVQcm90b2NvbCIs DQorICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgICBfX0ZJTEVfXywN CisgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICBTdGF0dXMpOw0KKw0KKyAg ICAgIGd0QlMtPkZyZWVQb29sKEhhbmRsZUJ1ZmZlcik7DQorICAgICAgcmV0dXJuIFN0YXR1czsN CisgICAgfQ0KKw0KKyAgICBpZiAoT3RoZXJTbnBJbnRlcmZhY2UyID09IFNucEludGVyZmFjZTIp DQorICAgIHsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIExv Y2F0ZSB0aGUgTG9hZGVkIERldmljZVBhdGggUHJvdG9jb2wgYm91bmQgdG8gU0lNUExFX05FVFdP UksgUHJvdG9jb2wNCisgIC8vDQorICBpZiAoSW5kZXggPj0gTm9IYW5kbGVzKQ0KKyAgew0KKyAg ICAvLw0KKyAgICAvLyBObyBIYW5kbGUgRm91bmQhIQ0KKyAgICAvLw0KKyAgICBndEJTLT5GcmVl UG9vbChIYW5kbGVCdWZmZXIpOw0KKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsNCisgIH0N CisNCisgIFN0YXR1cyA9IGd0QlMtPkhhbmRsZVByb3RvY29sKA0KKyAgICAgIEhhbmRsZUJ1ZmZl cltJbmRleF0sDQorICAgICAgJmdCbGFja0JveEVmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQor ICAgICAgKFZPSUQgKiopIERldmljZVBhdGgpOw0KKw0KKyAgZ3RCUy0+RnJlZVBvb2woSGFuZGxl QnVmZmVyKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlDQotLQ0KMi4zNC4xDQoNCgbCruKAucKpwrIqDQrFoHksYuKAucKrecOHwqLCvcOmwqXigJNn wqzCscKoHsKyw4fCp8K2w5ot4oCgKyDCruKAucKpVifCsMO9F8Kp4oCUI8Kn4oCTKcOew5dfeMOf wrhtwrbigLo/w73Dp2TDmg0Kw6jCuuKAuiLCo8O4P3XDq8Oe4oCUw7nFvsKyw4Yge8O9dcO3wo3D uzLDq15OGMKsTsWgYnIbbcKmw4/Dv+KAmsK6LsKmw4jCqMO+a3/Dl07CuMOvXcK6w6PDvn3Ds8Kd PcOsasOowrrigJzCsMKdw6rDnXrDt8Klw7rFkid6wrfCneKAnGgrwqLDqmzFoOKApifCssOmw6xy wrjigLp6G23CpsOPw795w5k24oCawrouwqbDiMKow74Pw516w7fCpcO+w6nDrMK5wrTCrsW+fOKA k2p4GsKuZygNCklNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFu ZCBhbnkgYXR0YWNobWVudHMgYXJlIGNvbmZpZGVudGlhbCBhbmQgbWF5IGFsc28gYmUgcHJpdmls ZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgcGxlYXNlIG5vdGlm eSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnRz IHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9y IGNvcHkgdGhlIGluZm9ybWF0aW9uIGluIGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg0KCi09LT0t PS09LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3Nh Z2VzIHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMTk0ODApOiBodHRw czovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8xMTk0ODAKTXV0ZSBUaGlzIFRvcGlj OiBodHRwczovL2dyb3Vwcy5pby9tdC8xMDY0NzEyNjQvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2 ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMu aW8vZy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09LT0tPS09 LT0tCgoNCg==