From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D376242EDA for ; Thu, 12 May 2022 15:44:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2A68C68B3DE; Thu, 12 May 2022 18:44:08 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066043.outbound.protection.outlook.com [40.92.66.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 767DE68B049 for ; Thu, 12 May 2022 18:44:01 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FuZ28hUUwjvHW95rfe6YCpeTV1eNDn7+wrJgA/L+a0ACdlrAYBaLGO5ohuJh03UPD7y3OSDh5x+JhK3oD9O58AcXRdWHOJPP+5+S8a2hkIKVoTl0rSwogPCsxQp7SAyS0BdlyYz8h/CHvTpOejvfYZR7IF5VejAqi5thaOCGJR8ghhd7zxBDSapdtVKC+VmlzlW1VDnb7fu1ea4qwqfZPwhvXUb9Cmp7zNbOP8iX/xpBISgEbMBYnWuY3XwBm1r5RA6tvBRg2Pn4GYkhQj/Rm3o3FhYyhdURwK9kAgblcVccZSR4ns0c29BAy5da4+xRq2hK7Kxg599Eol/sBMD8GA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QzxUBkWAUDVTuDmkYUa90XvdI7q02OYFJtFklSIlJPk=; b=S2Qh6pgtu+AAnpIkD3wK577BvHB2UMKl2ZV0ulJE9HMY3lamBOMk+5RwL2Dxa7fCtSf5p92fI7F0bTXyLav/6d4juP78FHc75FN1N8F8A54JgmVU6ZIyvW8a7WZ04LYCHaIdsCbT8lkAi8vUP6/FgoOviZ7QLJWXWdRjbu9hlpdsGZV6LKfHaeoUKYzh+7Jz2T0zSxiWmMAwAL/Jw8FeT32uVdhLsqLqqMsaU4zUq85V0RB8kye5rVg3AwzRWMbFi1oJ58j/f4zAGvVZE0MBPw3RxsT/1ZRpt7ikd+DXWfYhvp7JfVJMA17NkdYh2FRqsmhiRxtfUpdQgjNB/cnqjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QzxUBkWAUDVTuDmkYUa90XvdI7q02OYFJtFklSIlJPk=; b=ZGmNb6YHHRJtxJPNGKmZ6T6Zhr2timHq+TrRtJ5VTTE7FehH/SDI2i7CJggMu3ahKjByx/4/rpKgmw5ewukHHwZtZrmH87BipWSGcvz/XMW41gAJ2jPtvnZO1wMsrFIXSvBqvxwWNJX4321Qb2la1mvPW4KrIOU1NDGJDoKKbeIvNwXaKuIdLaz/eE4AI+wznE6CVaTthG29DvbvDJ0+jZTTSHhFPTyMeu0uXoUtr81UyFA0K+XsUF1ebic+QeWlnIiHxAm72NHRC8RYV13qFwfgyS0LaO0O2srtDMhsuE/FpmA11j3VAHzasZBzQaDoLO2lxSpFAvfasUYiA3UQqA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by HE1PR0101MB2441.eurprd01.prod.exchangelabs.com (2603:10a6:3:7c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.22; Thu, 12 May 2022 15:43:59 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%9]) with mapi id 15.20.5227.023; Thu, 12 May 2022 15:43:59 +0000 Message-ID: Date: Thu, 12 May 2022 17:43:57 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20210419141024.8174-1-jamrial@gmail.com> <20210419141024.8174-82-jamrial@gmail.com> From: Andreas Rheinhardt In-Reply-To: X-TMN: [LloA3uQxH3wPEc2d2JoueEhmKexX7M5k] X-ClientProxiedBy: AS9PR06CA0117.eurprd06.prod.outlook.com (2603:10a6:20b:465::32) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <8c31df2f-1334-eb3e-95c0-ae212e499518@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fb3262bf-4aa2-47ee-2c60-08da342e3b0d X-MS-TrafficTypeDiagnostic: HE1PR0101MB2441:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FW+sWgtN/CubqYcrKdpCOm7kjppRqHrgigVEgF5JqT0dsXh4o1x5GdEDFCU7mYicvBkzVloRRCYaoMT7hZJwytV03VxKjIuTUvxrwj8RSK5B97IOwVhYMY8l01zeLRbOR/yydoVvBMKOkN8lrm+qbUdANkmzfMcjcK1lK3tqWfa1iICBpZgtSFAgQxbo+JhVJnhJ24aM/75ZXpwWaGANkuOjDigzGnDNeTOR+MfbsGNUOSR6z398AE/NoBlICvQNQYjMKKBP3mtFyAMdhDTo593Bn/7EoRUqShXulWM9AYTshgMQeUe0VxVG2H7h9MDT00yTrCyAewM8/KFPzn0bbJ7nHOfMYcwH4Its/pxyRguqveRB7/1zDJYbq/SxULB8cgSwVAW56i0V2QfHc1Gyfu5l1MejC6sHj5tEtDgLQ4opojgb9g5DHvRDFxk0V7lwD3sWqVLAk1oILDm3nqr1Xl5HLPXU+Qb32a52u+5EbJgW8ZPajg6eJp6LaYiPUHLK6T0S3N43862IRqGlhKTrQRHQIiGg9rPnEbOjbrg2vJ6OY92iisnbhcRtisYXenTxDIutkOr7z2OihoglWMhiHA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y0R1bklUYXRDK2dTeTc1eEdtUlNRMFlXSTJPQWxQMXd4RDRiV2w4V2o1bkpM?= =?utf-8?B?R3M4ZkNBeTEvSWpFUXNGTVVNclN6bnhJak5RYlhOUFk4bllYTFV2SkxrL2Rt?= =?utf-8?B?NHZHK3NEaDQ5K0Ztc20yd0hSYmtaVDdsRjN2RFNKU2I5WGZrdFdxUEdWK3Rm?= =?utf-8?B?ZUdKU05jUHE5Q2NZWitTQVQ2QVBIWWZNUUJ5V3Z4MFl2bi9uN2MwWjcwdmJn?= =?utf-8?B?TElLdmNZRnpHb3RrcFloWXplUVRSMm9VSG41VlFadEdLVmVDWnNkU0FjaGNl?= =?utf-8?B?Y1djQ3BFcnNnYWdBVmZjZUYrdngwc2dTV2ZUL2trQ00rTCtRMGx5b2ttdmxK?= =?utf-8?B?VVJ0UEZRaWFQcFZ2Q0M3Q3VzNlU5ditHejRoQUFhTS9DRmtia3ZxTnQ4Qk1p?= =?utf-8?B?dE1LdzZmTXh2by9xWW9HZUx0bVZDRFViVWxrM3JqbDJPK1NmTHNNMlpVWmxG?= =?utf-8?B?Zk4rZ2tCdzJqUEUwcERQNCtBMzVWMkJLUUE2K0xGR3ZxTXhqWlRmNng0eVp6?= =?utf-8?B?cEYwcURacWdFZmsvSXFtWTl4QUpNWDFqZHltTS9BQ2haYmdmWkNJdFh3dGNo?= =?utf-8?B?VElFQ2QyNUc4STVKaHora1owa1dJbjNYcitid2h4UVlWUlpEZ05uNW5BK1BD?= =?utf-8?B?ZFV2NmoxUjhwV3dHRUExbXEzc3Y2L1NCN2FhMks2TEFpVW9xd2N0QjVhNnF0?= =?utf-8?B?a1JXRlpSQUtYWFZXaFdUT256ZFBOY3A5cVJBZ3dVd3JMSUhBUDJrM01KaHFW?= =?utf-8?B?Z3JmMTVPaEdVTmRLamhoQTFrUEwrZi9EVzNuQjE3UFAzZWR3YWlaM0Mwa1Rz?= =?utf-8?B?YWxtaWh4UUdTZDVGVlN6eHpxbXFjNkpBRVJCQWs0d0VqbW10YmxPTU1oVjZj?= =?utf-8?B?ZzJWa0lGQ3EvcW1vTUg3R2R1M0ZIZUlzdjN3RU12T3oxS1kxRnRxdmo5dFNa?= =?utf-8?B?cEhrUnF3UEExMlNBRVlzblZlTVJzRU1sRkFyaEVLZjJhRlhiRWt5TGRRc0lt?= =?utf-8?B?N0wwT2toNkJHakNTZTJPNmtBaGNXR0FySHEyNVJCeE1BQXZXRXFXdDh2ZGkz?= =?utf-8?B?V1ovTU5iV2tpU2tpenl4amhpaUdlNW4yTkxEa2owTW11d1VIRVJlVFJiRVF2?= =?utf-8?B?N2tQTkFLeUZNWFEvbTFxNW9IZ2xPNm5LRVVpblRnRkMreUQzTG1ubVpUREkz?= =?utf-8?B?ZFpCSkF6WThDdSt3eWtuNEcyYTNzVmNpLzBpTDc4S2VOOTRvTUx2UldzY0pM?= =?utf-8?B?R2N6VXBITnNpZXprS0lwUktpVmpPV0dKVHpWaHkrbTFiMjN1cWlzRUhHU0Vs?= =?utf-8?B?NDVpRE9VRTYrc2NzQkdwOC9PZ0ZjNE5mUEdrN0kydk1HRmNTTEdSTm8xU1FS?= =?utf-8?B?T09DemsxWWN4NlhUeWdnZjErSElaNlIxViszeFYvR1Ntc0pJdlI1UHducWFt?= =?utf-8?B?NjJiTU5TRWNlUlZuNTlOdmJrMU05MHNiWTdIZWhtR3BFenBVZk1ZaUVQT2d0?= =?utf-8?B?KzRjMDZuQ3J6dXhhbURMM2RWRGZkWnRRVWNaSjM5Mi9vOFFmL3NtTHA4cE1L?= =?utf-8?B?V2dCYUZIZmdtUGVpQ2IyOXZKWitlVXYrcWxzK1FMc1M0YlRxVHNjU0hmdmRQ?= =?utf-8?B?ZlRFRnRMUEE2cmduWUxkUkJGWFd1SHZWdGgvRnNCZE5wRTlDMVNlOEZxTDFV?= =?utf-8?B?ZTNoa2ljMGxFdzlRQ25XSVBqYWt6MGlxeVJ1Y28rSWFXNHByQnpQR2F6aTlU?= =?utf-8?B?OXBSUXNLOHFKUk9oQ0lMUWhUWjZmZzNMNkFKNlEzVUEyUE9tdEgzdVdnWDdD?= =?utf-8?B?cUNkRFNRNzIzVEx4OEZvR2NFRDQwdXFvNjEyaWJSZU5hTVVtTGpiWGVtdTFG?= =?utf-8?B?TFB0NnFkeTZKMlczK3JGNEpPV3ZMOCtMVzNTVGZtQ0QraUpENGxVclFSRFd6?= =?utf-8?B?V1NnaDVSTnppZ3RTVERUK1Z3bGVXOHZQcDNvWXM3clhNR3o5NmtZRlIwOXhB?= =?utf-8?B?VWp1TjhUbnZ3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb3262bf-4aa2-47ee-2c60-08da342e3b0d X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2022 15:43:59.2705 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0101MB2441 Subject: Re: [FFmpeg-devel] [PATCH 81/87] avcodec: Move all AVCodecParser.split functions to remove_extradata_bsf X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Sm9obiBTdGViYmluczoKPiBIaSBhbGwsCj4gCj4gSSBrbm93IHRoaXMgaGFwcGVuZWQgcXVpdGUg c29tZSB0aW1lIGFnbywgYnV0IHdlIGp1c3Qgbm90aWNlZCB0aGUKPiBjaGFuZ2UuCj4gCj4gVGhp cyBlZmZlY3RpdmVseSBkaXNhYmxlcyB0aGUgcHVibGljIEFQSSBBVkNvZGVjUGFyc2VyLnNwbGl0 IGZvciB0aGVzZQo+IGNvZGVjcy4gSGFuZEJyYWtlIHVzZXMgdGhpcyBBUEkgdG8gc3BsaXQgb3V0 IGV4dHJhZGF0YSBmb3IgYSBmZXcKPiBjb2RlY3MuIEFueSBjaGFuY2Ugd2UgY2FuIGJyaW5nIHRo ZXNlIGJhY2s/ICBPdGhlcndpc2UsIHdlIHdpbGwgaGF2ZSB0bwo+IHJlcGxpY2F0ZSB0aGlzIGNv ZGUgaW4gSGFuZEJyYWtlIPCfmJXvuI8KPiAKCkkga25vdyB0aGF0IEFWQ29kZWNQYXJzZXIgd2Fz IGxhY2tpbmcgdGhlIHR5cGljYWwgcHVibGljLXByaXZhdGUKZGVtYXJrYXRpb24sIGJ1dCB5b3Ug YXJlIGFjdHVhbGx5IG5vdCBzdXBwb3NlZCB0byBjYWxsIHRoZXNlIGZ1bmN0aW9uCnBvaW50ZXJz IGRpcmVjdGx5LiBJbiBmYWN0LCBpdCBpcyBub3QgcHVibGljYWxseSBkb2N1bWVudGVkIGF0IGFs bCB3aGF0CkFWQ29kZWNQYXJzZXIuc3BsaXQgZG9lcy4KQW55d2F5LCB1c2UgdGhlIGV4dHJhY3Rf ZXh0cmFkYXRhIEJTRi4gSXQgaXMgdGhlIGludGVuZGVkIHJlcGxhY2VtZW50CmZvciB0aGlzIGZl YXR1cmUuIEl0IGlzIGFsc28gd2hhdCBhdmZvcm1hdF9maW5kX3N0cmVhbV9pbmZvKCkgdXNlcyB0 bwpleHRyYWN0IGV4dHJhZGF0YSBpbiBjYXNlIHRoZSBjb250YWluZXIgZG9lc24ndCBwcm92aWRl IGFueS4KCj4gT24gTW9uLCAyMDIxLTA0LTE5IGF0IDExOjEwIC0wMzAwLCBKYW1lcyBBbG1lciB3 cm90ZToKPj4gRnJvbTogQW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAZ21h aWwuY29tPgo+Pgo+PiBUaGUgcmVtb3ZlX2V4dHJhZGF0YSBic2YgaXMgdGhlIG9ubHkgdXNlciBv ZiB0aGVzZSBmdW5jdGlvbnMuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJk dCA8YW5kcmVhcy5yaGVpbmhhcmR0QGdtYWlsLmNvbT4KPj4gLS0tCj4+IMKgbGliYXZjb2RlYy9N YWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArLQo+PiDCoGxpYmF2 Y29kZWMvYXYxX3BhcnNlci5jwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI1ICstLS0KPj4gwqBs aWJhdmNvZGVjL2F2czJfcGFyc2VyLmPCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSAtCj4+IMKg bGliYXZjb2RlYy9hdnMzX3BhcnNlci5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgLQo+PiDC oGxpYmF2Y29kZWMvY2F2c19wYXJzZXIuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxIC0KPj4g wqBsaWJhdmNvZGVjL2gyNjRfcGFyc2VyLmPCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDM4IC0tLS0t LQo+PiDCoGxpYmF2Y29kZWMvaGV2Y19wYXJzZXIuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMzQg LS0tLS0KPj4gwqBsaWJhdmNvZGVjL21wZWc0dmlkZW9fcGFyc2VyLmPCoMKgwqAgfMKgwqAgMSAt Cj4+IMKgbGliYXZjb2RlYy9tcGVndmlkZW9fcGFyc2VyLmPCoMKgwqDCoCB8wqAgMTggLS0tCj4+ IMKgbGliYXZjb2RlYy9wYXJzZXIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDE0 IC0tLQo+PiDCoGxpYmF2Y29kZWMvcmVtb3ZlX2V4dHJhZGF0YV9ic2YuYyB8IDIwMSArKysrKysr KysrKysrKysrKysrKysrKysrLS0tCj4+IC0tCj4+IMKgbGliYXZjb2RlYy92YzFfcGFyc2VyLmPC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTkgLS0tCj4+IMKgMTIgZmlsZXMgY2hhbmdlZCwgMTcx IGluc2VydGlvbnMoKyksIDE4NiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4+IGluZGV4IGE2NDBjNTQ4ZTUu LmMxOWEzY2I2MGQgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4gKysrIGIv bGliYXZjb2RlYy9NYWtlZmlsZQo+PiBAQCAtMTA3NSw3ICsxMDc1LDcgQEAgT0JKUy0kKENPTkZJ R19BQUNfUEFSU0VSKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9Cj4+IGFhY19wYXJzZXIu byBhYWNfYWMzX3BhcnNlci5vIFwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1wZWc0 YXVkaW8ubwo+PiDCoE9CSlMtJChDT05GSUdfQUMzX1BBUlNFUinCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCArPSBhYzN0YWIubyBhYWNfYWMzX3BhcnNlci5vCj4+IMKgT0JKUy0kKENPTkZJR19B RFhfUEFSU0VSKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGFkeF9wYXJzZXIubyBhZHgu bwo+PiAtT0JKUy0kKENPTkZJR19BVjFfUEFSU0VSKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICs9IGF2MV9wYXJzZXIubyBhdjFfcGFyc2Uubwo+PiArT0JKUy0kKENPTkZJR19BVjFfUEFSU0VS KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGF2MV9wYXJzZXIubwo+PiDCoE9CSlMtJChD T05GSUdfQVZTMl9QQVJTRVIpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGF2czJfcGFyc2Vy Lm8KPj4gwqBPQkpTLSQoQ09ORklHX0FWUzNfUEFSU0VSKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCArPSBhdnMzX3BhcnNlci5vCj4+IMKgT0JKUy0kKENPTkZJR19CTVBfUEFSU0VSKcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICs9IGJtcF9wYXJzZXIubwo+PiBAQCAtMTE1OSw3ICsxMTU5LDcg QEAgT0JKUy0kKENPTkZJR19OVUxMX0JTRinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKz0KPj4gbnVsbF9ic2Yubwo+PiDCoE9CSlMtJChDT05GSUdfT1BVU19NRVRBREFUQV9C U0YpwqDCoMKgwqDCoMKgwqDCoMKgICs9IG9wdXNfbWV0YWRhdGFfYnNmLm8KPj4gwqBPQkpTLSQo Q09ORklHX1BDTV9SRUNIVU5LX0JTRinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IHBjbV9yZWNo dW5rX2JzZi5vCj4+IMKgT0JKUy0kKENPTkZJR19QUk9SRVNfTUVUQURBVEFfQlNGKcKgwqDCoMKg wqDCoMKgICs9IHByb3Jlc19tZXRhZGF0YV9ic2Yubwo+PiAtT0JKUy0kKENPTkZJR19SRU1PVkVf RVhUUkFEQVRBX0JTRinCoMKgwqDCoMKgwqAgKz0gcmVtb3ZlX2V4dHJhZGF0YV9ic2Yubwo+PiAr T0JKUy0kKENPTkZJR19SRU1PVkVfRVhUUkFEQVRBX0JTRinCoMKgwqDCoMKgwqAgKz0gcmVtb3Zl X2V4dHJhZGF0YV9ic2Yubwo+PiBhdjFfcGFyc2Uubwo+PiDCoE9CSlMtJChDT05GSUdfU0VUVFNf QlNGKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gc2V0dHNfYnNmLm8KPj4g wqBPQkpTLSQoQ09ORklHX1RFWFQyTU9WU1VCX0JTRinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9 IG1vdnN1Yl9ic2Yubwo+PiDCoE9CSlMtJChDT05GSUdfVFJBQ0VfSEVBREVSU19CU0YpwqDCoMKg wqDCoMKgwqDCoMKgICs9IHRyYWNlX2hlYWRlcnNfYnNmLm8KPj4gZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvYXYxX3BhcnNlci5jIGIvbGliYXZjb2RlYy9hdjFfcGFyc2VyLmMKPj4gaW5kZXggNTc4 ZjUyOTNjOC4uYjZjODAwNGVlMyAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9hdjFfcGFyc2Vy LmMKPj4gKysrIGIvbGliYXZjb2RlYy9hdjFfcGFyc2VyLmMKPj4gQEAgLTIwLDcgKzIwLDcgQEAK Pj4gwqAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BCj4+IDAyMTEwLTEzMDEgVVNBCj4+IMKgICovCj4+IMKgCj4+IC0jaW5jbHVk ZSAiYXYxX3BhcnNlLmgiCj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4+IMKg I2luY2x1ZGUgImNicy5oIgo+PiDCoCNpbmNsdWRlICJjYnNfYXYxLmgiCj4+IMKgI2luY2x1ZGUg ImludGVybmFsLmgiCj4+IEBAIC0yMDUsMzMgKzIwNSwxMCBAQCBzdGF0aWMgdm9pZAo+PiBhdjFf cGFyc2VyX2Nsb3NlKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpjdHgpCj4+IMKgwqDCoMKgIGZmX2Ni c19jbG9zZSgmcy0+Y2JjKTsKPj4gwqB9Cj4+IMKgCj4+IC1zdGF0aWMgaW50IGF2MV9wYXJzZXJf c3BsaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1 Zl9zaXplKQo+PiAtewo+PiAtwqDCoMKgIEFWMU9CVSBvYnU7Cj4+IC3CoMKgwqAgY29uc3QgdWlu dDhfdCAqcHRyID0gYnVmLCAqZW5kID0gYnVmICsgYnVmX3NpemU7Cj4+IC0KPj4gLcKgwqDCoCB3 aGlsZSAocHRyIDwgZW5kKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpbnQgbGVuID0gZmZfYXYxX2V4 dHJhY3Rfb2J1KCZvYnUsIHB0ciwgYnVmX3NpemUsIGF2Y3R4KTsKPj4gLcKgwqDCoMKgwqDCoMKg IGlmIChsZW4gPCAwKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLQo+PiAt wqDCoMKgwqDCoMKgwqAgaWYgKG9idS50eXBlID09IEFWMV9PQlVfRlJBTUVfSEVBREVSIHx8Cj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9idS50eXBlID09IEFWMV9PQlVfRlJBTUUpIHsKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHB0ciAtIGJ1ZjsKPj4gLcKgwqDCoMKgwqDC oMKgIH0KPj4gLcKgwqDCoMKgwqDCoMKgIHB0csKgwqDCoMKgwqAgKz0gbGVuOwo+PiAtwqDCoMKg wqDCoMKgwqAgYnVmX3NpemUgLT0gbGVuOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIHJl dHVybiAwOwo+PiAtfQo+PiAtCj4+IMKgY29uc3QgQVZDb2RlY1BhcnNlciBmZl9hdjFfcGFyc2Vy ID0gewo+PiDCoMKgwqDCoCAuY29kZWNfaWRzwqDCoMKgwqDCoCA9IHsgQVZfQ09ERUNfSURfQVYx IH0sCj4+IMKgwqDCoMKgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihBVjFQYXJzZUNvbnRleHQp LAo+PiDCoMKgwqDCoCAucGFyc2VyX2luaXTCoMKgwqAgPSBhdjFfcGFyc2VyX2luaXQsCj4+IMKg wqDCoMKgIC5wYXJzZXJfY2xvc2XCoMKgID0gYXYxX3BhcnNlcl9jbG9zZSwKPj4gwqDCoMKgwqAg LnBhcnNlcl9wYXJzZcKgwqAgPSBhdjFfcGFyc2VyX3BhcnNlLAo+PiAtwqDCoMKgIC5zcGxpdMKg wqDCoMKgwqDCoMKgwqDCoCA9IGF2MV9wYXJzZXJfc3BsaXQsCj4+IMKgfTsKPj4gZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvYXZzMl9wYXJzZXIuYyBiL2xpYmF2Y29kZWMvYXZzMl9wYXJzZXIuYwo+ PiBpbmRleCAwNTlmYWY3N2M1Li5iN2Q1ZDc3NzRlIDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVj L2F2czJfcGFyc2VyLmMKPj4gKysrIGIvbGliYXZjb2RlYy9hdnMyX3BhcnNlci5jCj4+IEBAIC05 MSw1ICs5MSw0IEBAIGNvbnN0IEFWQ29kZWNQYXJzZXIgZmZfYXZzMl9wYXJzZXIgPSB7Cj4+IMKg wqDCoMKgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihQYXJzZUNvbnRleHQpLAo+PiDCoMKgwqDC oCAucGFyc2VyX3BhcnNlwqDCoCA9IGF2czJfcGFyc2UsCj4+IMKgwqDCoMKgIC5wYXJzZXJfY2xv c2XCoMKgID0gZmZfcGFyc2VfY2xvc2UsCj4+IC3CoMKgwqAgLnNwbGl0wqDCoMKgwqDCoMKgwqDC oMKgID0gZmZfbXBlZzR2aWRlb19zcGxpdCwKPj4gwqB9Owo+PiBkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9hdnMzX3BhcnNlci5jIGIvbGliYXZjb2RlYy9hdnMzX3BhcnNlci5jCj4+IGluZGV4IGIw ZTcyMGE4NDQuLjFhMDVlYTA0MmUgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvYXZzM19wYXJz ZXIuYwo+PiArKysgYi9saWJhdmNvZGVjL2F2czNfcGFyc2VyLmMKPj4gQEAgLTE3NSw1ICsxNzUs NCBAQCBjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2F2czNfcGFyc2VyID0gewo+PiDCoMKgwqDCoCAu cHJpdl9kYXRhX3NpemUgPSBzaXplb2YoUGFyc2VDb250ZXh0KSwKPj4gwqDCoMKgwqAgLnBhcnNl cl9wYXJzZcKgwqAgPSBhdnMzX3BhcnNlLAo+PiDCoMKgwqDCoCAucGFyc2VyX2Nsb3NlwqDCoCA9 IGZmX3BhcnNlX2Nsb3NlLAo+PiAtwqDCoMKgIC5zcGxpdMKgwqDCoMKgwqDCoMKgwqDCoCA9IGZm X21wZWc0dmlkZW9fc3BsaXQsCj4+IMKgfTsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2F2 c19wYXJzZXIuYyBiL2xpYmF2Y29kZWMvY2F2c19wYXJzZXIuYwo+PiBpbmRleCAyMGFkY2ExZGJj Li4wM2YzOTJjMmU1IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL2NhdnNfcGFyc2VyLmMKPj4g KysrIGIvbGliYXZjb2RlYy9jYXZzX3BhcnNlci5jCj4+IEBAIC0xMDIsNSArMTAyLDQgQEAgY29u c3QgQVZDb2RlY1BhcnNlciBmZl9jYXZzdmlkZW9fcGFyc2VyID0gewo+PiDCoMKgwqDCoCAucHJp dl9kYXRhX3NpemUgPSBzaXplb2YoUGFyc2VDb250ZXh0KSwKPj4gwqDCoMKgwqAgLnBhcnNlcl9w YXJzZcKgwqAgPSBjYXZzdmlkZW9fcGFyc2UsCj4+IMKgwqDCoMKgIC5wYXJzZXJfY2xvc2XCoMKg ID0gZmZfcGFyc2VfY2xvc2UsCj4+IC3CoMKgwqAgLnNwbGl0wqDCoMKgwqDCoMKgwqDCoMKgID0g ZmZfbXBlZzR2aWRlb19zcGxpdCwKPj4gwqB9Owo+PiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9o MjY0X3BhcnNlci5jIGIvbGliYXZjb2RlYy9oMjY0X3BhcnNlci5jCj4+IGluZGV4IDg4MGNjYjUw ZmEuLmQzYzU2Y2MxODggMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvaDI2NF9wYXJzZXIuYwo+ PiArKysgYi9saWJhdmNvZGVjL2gyNjRfcGFyc2VyLmMKPj4gQEAgLTY0NCw0MyArNjQ0LDYgQEAg c3RhdGljIGludCBoMjY0X3BhcnNlKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzLAo+PiDCoMKgwqDC oCByZXR1cm4gbmV4dDsKPj4gwqB9Cj4+IMKgCj4+IC1zdGF0aWMgaW50IGgyNjRfc3BsaXQoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKQo+PiAtewo+PiAtwqDC oMKgIHVpbnQzMl90IHN0YXRlID0gLTE7Cj4+IC3CoMKgwqAgaW50IGhhc19zcHPCoMKgwqAgPSAw Owo+PiAtwqDCoMKgIGludCBoYXNfcHBzwqDCoMKgID0gMDsKPj4gLcKgwqDCoCBjb25zdCB1aW50 OF90ICpwdHIgPSBidWYsICplbmQgPSBidWYgKyBidWZfc2l6ZTsKPj4gLcKgwqDCoCBpbnQgbmFs dV90eXBlOwo+PiAtCj4+IC3CoMKgwqAgd2hpbGUgKHB0ciA8IGVuZCkgewo+PiAtwqDCoMKgwqDC oMKgwqAgcHRyID0gYXZwcml2X2ZpbmRfc3RhcnRfY29kZShwdHIsIGVuZCwgJnN0YXRlKTsKPj4g LcKgwqDCoMKgwqDCoMKgIGlmICgoc3RhdGUgJiAweEZGRkZGRjAwKSAhPSAweDEwMCkKPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IC3CoMKgwqDCoMKgwqDCoCBuYWx1X3R5cGUg PSBzdGF0ZSAmIDB4MUY7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobmFsdV90eXBlID09IEgyNjRf TkFMX1NQUykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoYXNfc3BzID0gMTsKPj4gLcKg wqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAobmFsdV90eXBlID09IEgyNjRfTkFMX1BQUykKPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaGFzX3BwcyA9IDE7Cj4+IC3CoMKgwqDCoMKgwqDCoCAvKiBl bHNlIGlmIChuYWx1X3R5cGUgPT0gMHgwMSB8fAo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKg wqAgbmFsdV90eXBlID09IDB4MDIgfHwKPj4gLcKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgIG5h bHVfdHlwZSA9PSAweDA1KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgICrCoCB9Cj4+IC3CoMKgwqDC oMKgwqDCoMKgICovCj4+IC3CoMKgwqDCoMKgwqDCoCBlbHNlIGlmICgobmFsdV90eXBlICE9IEgy NjRfTkFMX1NFSSB8fCBoYXNfcHBzKSAmJgo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBuYWx1X3R5cGUgIT0gSDI2NF9OQUxfQVVEICYmIG5hbHVfdHlwZSAhPQo+PiBIMjY0 X05BTF9TUFNfRVhUICYmCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5h bHVfdHlwZSAhPSAweDBmKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChoYXNfc3Bz KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKHB0ciAtIDQgPiBi dWYgJiYgcHRyWy01XSA9PSAwKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcHRyLS07Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHB0 ciAtIDQgLSBidWY7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gLcKgwqDCoMKgwqDC oMKgIH0KPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gMDsKPj4gLX0KPj4gLQo+ PiDCoHN0YXRpYyB2b2lkIGgyNjRfY2xvc2UoQVZDb2RlY1BhcnNlckNvbnRleHQgKnMpCj4+IMKg ewo+PiDCoMKgwqDCoCBIMjY0UGFyc2VDb250ZXh0ICpwID0gcy0+cHJpdl9kYXRhOwo+PiBAQCAt NzA4LDUgKzY3MSw0IEBAIGNvbnN0IEFWQ29kZWNQYXJzZXIgZmZfaDI2NF9wYXJzZXIgPSB7Cj4+ IMKgwqDCoMKgIC5wYXJzZXJfaW5pdMKgwqDCoCA9IGluaXQsCj4+IMKgwqDCoMKgIC5wYXJzZXJf cGFyc2XCoMKgID0gaDI2NF9wYXJzZSwKPj4gwqDCoMKgwqAgLnBhcnNlcl9jbG9zZcKgwqAgPSBo MjY0X2Nsb3NlLAo+PiAtwqDCoMKgIC5zcGxpdMKgwqDCoMKgwqDCoMKgwqDCoCA9IGgyNjRfc3Bs aXQsCj4+IMKgfTsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaGV2Y19wYXJzZXIuYyBiL2xp YmF2Y29kZWMvaGV2Y19wYXJzZXIuYwo+PiBpbmRleCAzMjBkNGViNTYyLi5jOTQ0YTZhYWNkIDEw MDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL2hldmNfcGFyc2VyLmMKPj4gKysrIGIvbGliYXZjb2Rl Yy9oZXZjX3BhcnNlci5jCj4+IEBAIC0zMzYsMzkgKzMzNiw2IEBAIHN0YXRpYyBpbnQgaGV2Y19w YXJzZShBVkNvZGVjUGFyc2VyQ29udGV4dCAqcywKPj4gQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+ PiDCoMKgwqDCoCByZXR1cm4gbmV4dDsKPj4gwqB9Cj4+IMKgCj4+IC0vLyBTcGxpdCBhZnRlciB0 aGUgcGFyYW1ldGVyIHNldHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtIGlmCj4+IHRo ZXkgZXhpc3QuCj4+IC1zdGF0aWMgaW50IGhldmNfc3BsaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBjb25zdCB1aW50OF90ICpidWYsIGludAo+PiBidWZfc2l6ZSkKPj4gLXsKPj4gLcKgwqDCoCBj b25zdCB1aW50OF90ICpwdHIgPSBidWYsICplbmQgPSBidWYgKyBidWZfc2l6ZTsKPj4gLcKgwqDC oCB1aW50MzJfdCBzdGF0ZSA9IC0xOwo+PiAtwqDCoMKgIGludCBoYXNfdnBzID0gMDsKPj4gLcKg wqDCoCBpbnQgaGFzX3NwcyA9IDA7Cj4+IC3CoMKgwqAgaW50IGhhc19wcHMgPSAwOwo+PiAtwqDC oMKgIGludCBudXQ7Cj4+IC0KPj4gLcKgwqDCoCB3aGlsZSAocHRyIDwgZW5kKSB7Cj4+IC3CoMKg wqDCoMKgwqDCoCBwdHIgPSBhdnByaXZfZmluZF9zdGFydF9jb2RlKHB0ciwgZW5kLCAmc3RhdGUp Owo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKChzdGF0ZSA+PiA4KSAhPSBTVEFSVF9DT0RFKQo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gLcKgwqDCoMKgwqDCoMKgIG51dCA9IChz dGF0ZSA+PiAxKSAmIDB4M0Y7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAobnV0ID09IEhFVkNfTkFM X1ZQUykKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGFzX3ZwcyA9IDE7Cj4+IC3CoMKgwqDC oMKgwqDCoCBlbHNlIGlmIChudXQgPT0gSEVWQ19OQUxfU1BTKQo+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBoYXNfc3BzID0gMTsKPj4gLcKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKG51dCA9PSBI RVZDX05BTF9QUFMpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhhc19wcHMgPSAxOwo+PiAt wqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoKG51dCAhPSBIRVZDX05BTF9TRUlfUFJFRklYIHx8IGhh c19wcHMpICYmCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51dCAhPSBI RVZDX05BTF9BVUQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGhhc192cHMgJiYg aGFzX3Nwcykgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlIChwdHIg LSA0ID4gYnVmICYmIHB0clstNV0gPT0gMCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHB0ci0tOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBwdHIgLSA0IC0gYnVmOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IC3CoMKg wqDCoMKgwqDCoCB9Cj4+IC3CoMKgwqAgfQo+PiAtwqDCoMKgIHJldHVybiAwOwo+PiAtfQo+PiAt Cj4+IMKgc3RhdGljIHZvaWQgaGV2Y19wYXJzZXJfY2xvc2UoQVZDb2RlY1BhcnNlckNvbnRleHQg KnMpCj4+IMKgewo+PiDCoMKgwqDCoCBIRVZDUGFyc2VyQ29udGV4dCAqY3R4ID0gcy0+cHJpdl9k YXRhOwo+PiBAQCAtMzg1LDUgKzM1Miw0IEBAIGNvbnN0IEFWQ29kZWNQYXJzZXIgZmZfaGV2Y19w YXJzZXIgPSB7Cj4+IMKgwqDCoMKgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihIRVZDUGFyc2Vy Q29udGV4dCksCj4+IMKgwqDCoMKgIC5wYXJzZXJfcGFyc2XCoMKgID0gaGV2Y19wYXJzZSwKPj4g wqDCoMKgwqAgLnBhcnNlcl9jbG9zZcKgwqAgPSBoZXZjX3BhcnNlcl9jbG9zZSwKPj4gLcKgwqDC oCAuc3BsaXTCoMKgwqDCoMKgwqDCoMKgwqAgPSBoZXZjX3NwbGl0LAo+PiDCoH07Cj4+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL21wZWc0dmlkZW9fcGFyc2VyLmMKPj4gYi9saWJhdmNvZGVjL21w ZWc0dmlkZW9fcGFyc2VyLmMKPj4gaW5kZXggYWZhMTBjNzcyNy4uMWIwZTI1NTVkYSAxMDA2NDQK Pj4gLS0tIGEvbGliYXZjb2RlYy9tcGVnNHZpZGVvX3BhcnNlci5jCj4+ICsrKyBiL2xpYmF2Y29k ZWMvbXBlZzR2aWRlb19wYXJzZXIuYwo+PiBAQCAtMTU5LDUgKzE1OSw0IEBAIGNvbnN0IEFWQ29k ZWNQYXJzZXIgZmZfbXBlZzR2aWRlb19wYXJzZXIgPSB7Cj4+IMKgwqDCoMKgIC5wYXJzZXJfaW5p dMKgwqDCoCA9IG1wZWc0dmlkZW9fcGFyc2VfaW5pdCwKPj4gwqDCoMKgwqAgLnBhcnNlcl9wYXJz ZcKgwqAgPSBtcGVnNHZpZGVvX3BhcnNlLAo+PiDCoMKgwqDCoCAucGFyc2VyX2Nsb3NlwqDCoCA9 IGZmX3BhcnNlX2Nsb3NlLAo+PiAtwqDCoMKgIC5zcGxpdMKgwqDCoMKgwqDCoMKgwqDCoCA9IGZm X21wZWc0dmlkZW9fc3BsaXQsCj4+IMKgfTsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbXBl Z3ZpZGVvX3BhcnNlci5jCj4+IGIvbGliYXZjb2RlYy9tcGVndmlkZW9fcGFyc2VyLmMKPj4gaW5k ZXggNGU0ZjU2OWIxMy4uNzg2NDIyNDY0MyAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9tcGVn dmlkZW9fcGFyc2VyLmMKPj4gKysrIGIvbGliYXZjb2RlYy9tcGVndmlkZW9fcGFyc2VyLmMKPj4g QEAgLTIxMywyMyArMjEzLDYgQEAgc3RhdGljIGludCBtcGVndmlkZW9fcGFyc2UoQVZDb2RlY1Bh cnNlckNvbnRleHQKPj4gKnMsCj4+IMKgwqDCoMKgIHJldHVybiBuZXh0Owo+PiDCoH0KPj4gwqAK Pj4gLXN0YXRpYyBpbnQgbXBlZ3ZpZGVvX3NwbGl0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29u c3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCj4+IC17Cj4+IC3CoMKgwqAgaW50IGk7Cj4+ IC3CoMKgwqAgdWludDMyX3Qgc3RhdGU9IC0xOwo+PiAtwqDCoMKgIGludCBmb3VuZD0wOwo+PiAt Cj4+IC3CoMKgwqAgZm9yKGk9MDsgaTxidWZfc2l6ZTsgaSsrKXsKPj4gLcKgwqDCoMKgwqDCoMKg IHN0YXRlPSAoc3RhdGU8PDgpIHwgYnVmW2ldOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYoc3RhdGUg PT0gMHgxQjMpewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3VuZD0xOwo+PiAtwqDCoMKg wqDCoMKgwqAgfWVsc2UgaWYoZm91bmQgJiYgc3RhdGUgIT0gMHgxQjUgJiYgc3RhdGUgPCAweDIw MCAmJiBzdGF0ZQo+Pj4gPSAweDEwMCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IGktMzsKPj4gLcKgwqDCoCB9Cj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+IC19Cj4+IC0KPj4gwqBz dGF0aWMgaW50IG1wZWd2aWRlb19wYXJzZV9pbml0KEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzKQo+ PiDCoHsKPj4gwqDCoMKgwqAgcy0+cGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX05PTkU7IC8v IGZpcnN0IGZyYW1lIG1pZ2h0IGJlCj4+IHBhcnRpYWwKPj4gQEAgLTI0Miw1ICsyMjUsNCBAQCBj b25zdCBBVkNvZGVjUGFyc2VyIGZmX21wZWd2aWRlb19wYXJzZXIgPSB7Cj4+IMKgwqDCoMKgIC5w YXJzZXJfaW5pdMKgwqDCoCA9IG1wZWd2aWRlb19wYXJzZV9pbml0LAo+PiDCoMKgwqDCoCAucGFy c2VyX3BhcnNlwqDCoCA9IG1wZWd2aWRlb19wYXJzZSwKPj4gwqDCoMKgwqAgLnBhcnNlcl9jbG9z ZcKgwqAgPSBmZl9wYXJzZV9jbG9zZSwKPj4gLcKgwqDCoCAuc3BsaXTCoMKgwqDCoMKgwqDCoMKg wqAgPSBtcGVndmlkZW9fc3BsaXQsCj4+IMKgfTsKPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv cGFyc2VyLmMgYi9saWJhdmNvZGVjL3BhcnNlci5jCj4+IGluZGV4IGY4MWE2MmQ1OTIuLmZjNTcy NDY5NjUgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvcGFyc2VyLmMKPj4gKysrIGIvbGliYXZj b2RlYy9wYXJzZXIuYwo+PiBAQCAtMjg1LDE3ICsyODUsMyBAQCB2b2lkIGZmX3BhcnNlX2Nsb3Nl KEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzKQo+PiDCoAo+PiDCoMKgwqDCoCBhdl9mcmVlcCgmcGMt PmJ1ZmZlcik7Cj4+IMKgfQo+PiAtCj4+IC1pbnQgZmZfbXBlZzR2aWRlb19zcGxpdChBVkNvZGVj Q29udGV4dCAqYXZjdHgsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwKPj4gaW50IGJ1Zl9zaXplKQo+PiAt ewo+PiAtwqDCoMKgIHVpbnQzMl90IHN0YXRlID0gLTE7Cj4+IC3CoMKgwqAgY29uc3QgdWludDhf dCAqcHRyID0gYnVmLCAqZW5kID0gYnVmICsgYnVmX3NpemU7Cj4+IC0KPj4gLcKgwqDCoCB3aGls ZSAocHRyIDwgZW5kKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBwdHIgPSBhdnByaXZfZmluZF9zdGFy dF9jb2RlKHB0ciwgZW5kLCAmc3RhdGUpOwo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHN0YXRlID09 IDB4MUIzIHx8IHN0YXRlID09IDB4MUI2KQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcHRyIC0gNCAtIGJ1ZjsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCByZXR1cm4gMDsK Pj4gLX0KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvcmVtb3ZlX2V4dHJhZGF0YV9ic2YuYwo+ PiBiL2xpYmF2Y29kZWMvcmVtb3ZlX2V4dHJhZGF0YV9ic2YuYwo+PiBpbmRleCA1NzgzYjA3NWYw Li4xZDVmMTkzZjg5IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVjL3JlbW92ZV9leHRyYWRhdGFf YnNmLmMKPj4gKysrIGIvbGliYXZjb2RlYy9yZW1vdmVfZXh0cmFkYXRhX2JzZi5jCj4+IEBAIC0y MSw5ICsyMSwxMyBAQAo+PiDCoCNpbmNsdWRlICJsaWJhdnV0aWwvbG9nLmgiCj4+IMKgI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4gwqAKPj4gLSNpbmNsdWRlICJhdmNvZGVjLmgiCj4+ICsj aW5jbHVkZSAiYXYxX3BhcnNlLmgiCj4+IMKgI2luY2x1ZGUgImJzZi5oIgo+PiDCoCNpbmNsdWRl ICJic2ZfaW50ZXJuYWwuaCIKPj4gKyNpbmNsdWRlICJoMjY0LmgiCj4+ICsjaW5jbHVkZSAiaGV2 Yy5oIgo+PiArI2luY2x1ZGUgImludGVybmFsLmgiCj4+ICsjaW5jbHVkZSAidmMxX2NvbW1vbi5o Igo+PiDCoAo+PiDCoGVudW0gUmVtb3ZlRnJlcSB7Cj4+IMKgwqDCoMKgIFJFTU9WRV9GUkVRX0tF WUZSQU1FLAo+PiBAQCAtMzEsNjMgKzM1LDE5NiBAQCBlbnVtIFJlbW92ZUZyZXEgewo+PiDCoMKg wqDCoCBSRU1PVkVfRlJFUV9OT05LRVlGUkFNRSwKPj4gwqB9Owo+PiDCoAo+PiArI2RlZmluZSBT VEFSVF9DT0RFIDB4MDAwMDAxCj4+ICsKPj4gwqB0eXBlZGVmIHN0cnVjdCBSZW1vdmVFeHRyYWRh dGFDb250ZXh0IHsKPj4gwqDCoMKgwqAgY29uc3QgQVZDbGFzcyAqY2xhc3M7Cj4+IMKgwqDCoMKg IGludCBmcmVxOwo+PiAtCj4+IC3CoMKgwqAgQVZDb2RlY1BhcnNlckNvbnRleHQgKnBhcnNlcjsK Pj4gLcKgwqDCoCBBVkNvZGVjQ29udGV4dCAqYXZjdHg7Cj4+IMKgfSBSZW1vdmVFeHRyYWRhdGFD b250ZXh0Owo+PiDCoAo+PiAtc3RhdGljIGludCByZW1vdmVfZXh0cmFkYXRhKEFWQlNGQ29udGV4 dCAqY3R4LCBBVlBhY2tldCAqcGt0KQo+PiArc3RhdGljIGludCBhdjFfc3BsaXQoY29uc3QgdWlu dDhfdCAqYnVmLCBpbnQgYnVmX3NpemUsIHZvaWQgKmxvZ2N0eCkKPj4gwqB7Cj4+IC3CoMKgwqAg UmVtb3ZlRXh0cmFkYXRhQ29udGV4dCAqcyA9IGN0eC0+cHJpdl9kYXRhOwo+PiArwqDCoMKgIEFW MU9CVSBvYnU7Cj4+ICvCoMKgwqAgY29uc3QgdWludDhfdCAqcHRyID0gYnVmLCAqZW5kID0gYnVm ICsgYnVmX3NpemU7Cj4+IMKgCj4+IC3CoMKgwqAgaW50IHJldDsKPj4gK8KgwqDCoCB3aGlsZSAo cHRyIDwgZW5kKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbnQgbGVuID0gZmZfYXYxX2V4dHJhY3Rf b2J1KCZvYnUsIHB0ciwgYnVmX3NpemUsIGxvZ2N0eCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo bGVuIDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgCj4+IC3CoMKg wqAgcmV0ID0gZmZfYnNmX2dldF9wYWNrZXRfcmVmKGN0eCwgcGt0KTsKPj4gLcKgwqDCoCBpZiAo cmV0IDwgMCkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAob2J1LnR5cGUgPT0gQVYxX09CVV9GUkFNRV9IRUFERVIgfHwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgb2J1LnR5cGUgPT0gQVYxX09CVV9GUkFNRSkgewo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcHRyIC0gYnVmOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDC oMKgwqDCoMKgwqAgcHRywqDCoMKgwqDCoCArPSBsZW47Cj4+ICvCoMKgwqDCoMKgwqDCoCBidWZf c2l6ZSAtPSBsZW47Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9 Cj4+IMKgCj4+IC3CoMKgwqAgaWYgKHMtPnBhcnNlciAmJiBzLT5wYXJzZXItPnBhcnNlci0+c3Bs aXQpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChzLT5mcmVxID09IFJFTU9WRV9GUkVRX0FMTCB8 fAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAocy0+ZnJlcSA9PSBSRU1PVkVfRlJFUV9OT05L RVlGUkFNRSAmJiAhKHBrdC0+ZmxhZ3MgJgo+PiBBVl9QS1RfRkxBR19LRVkpKSB8fAo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAocy0+ZnJlcSA9PSBSRU1PVkVfRlJFUV9LRVlGUkFNRSAmJiBw a3QtPmZsYWdzICYKPj4gQVZfUEtUX0ZMQUdfS0VZKSkgewo+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpbnQgaSA9IHMtPnBhcnNlci0+cGFyc2VyLT5zcGxpdChzLT5hdmN0eCwgcGt0LT5kYXRh LAo+PiBwa3QtPnNpemUpOwo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwa3QtPmRhdGEgKz0g aTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGt0LT5zaXplIC09IGk7Cj4+ICtzdGF0aWMg aW50IGgyNjRfc3BsaXQoY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCj4+ICt7Cj4+ ICvCoMKgwqAgY29uc3QgdWludDhfdCAqcHRyID0gYnVmLCAqZW5kID0gYnVmICsgYnVmX3NpemU7 Cj4+ICvCoMKgwqAgdWludDMyX3Qgc3RhdGUgPSAtMTsKPj4gK8KgwqDCoCBpbnQgaGFzX3Nwc8Kg wqDCoCA9IDA7Cj4+ICvCoMKgwqAgaW50IGhhc19wcHPCoMKgwqAgPSAwOwo+PiArwqDCoMKgIGlu dCBuYWx1X3R5cGU7Cj4+ICsKPj4gK8KgwqDCoCB3aGlsZSAocHRyIDwgZW5kKSB7Cj4+ICvCoMKg wqDCoMKgwqDCoCBwdHIgPSBhdnByaXZfZmluZF9zdGFydF9jb2RlKHB0ciwgZW5kLCAmc3RhdGUp Owo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChzdGF0ZSAmIDB4RkZGRkZGMDApICE9IDB4MTAwKQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgIG5hbHVf dHlwZSA9IHN0YXRlICYgMHgxRjsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChuYWx1X3R5cGUgPT0g SDI2NF9OQUxfU1BTKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhhc19zcHMgPSAxOwo+ PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmIChuYWx1X3R5cGUgPT0gSDI2NF9OQUxfUFBTKQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoYXNfcHBzID0gMTsKPj4gK8KgwqDCoMKgwqDCoMKg IC8qIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSAweDAxIHx8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgICrC oMKgwqDCoCBuYWx1X3R5cGUgPT0gMHgwMiB8fAo+PiArwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKg wqAgbmFsdV90eXBlID09IDB4MDUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKsKgIH0KPj4gK8Kg wqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKChuYWx1X3R5cGUg IT0gSDI2NF9OQUxfU0VJIHx8IGhhc19wcHMpICYmCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG5hbHVfdHlwZSAhPSBIMjY0X05BTF9BVUQgJiYgbmFsdV90eXBlICE9Cj4+ IEgyNjRfTkFMX1NQU19FWFQgJiYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbmFsdV90eXBlICE9IDB4MGYpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGhh c19zcHMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAocHRyIC0g NCA+IGJ1ZiAmJiBwdHJbLTVdID09IDApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwdHItLTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcHRyIC0gNCAtIGJ1ZjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKgwqDC oMKgwqDCoMKgIH0KPj4gwqDCoMKgwqAgfQo+PiDCoAo+PiDCoMKgwqDCoCByZXR1cm4gMDsKPj4g wqB9Cj4+IMKgCj4+IC1zdGF0aWMgaW50IHJlbW92ZV9leHRyYWRhdGFfaW5pdChBVkJTRkNvbnRl eHQgKmN0eCkKPj4gKy8vIFNwbGl0IGFmdGVyIHRoZSBwYXJhbWV0ZXIgc2V0cyBhdCB0aGUgYmVn aW5uaW5nIG9mIHRoZSBzdHJlYW0gaWYKPj4gdGhleSBleGlzdC4KPj4gK3N0YXRpYyBpbnQgaGV2 Y19zcGxpdChjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKPj4gwqB7Cj4+IC3CoMKg wqAgUmVtb3ZlRXh0cmFkYXRhQ29udGV4dCAqcyA9IGN0eC0+cHJpdl9kYXRhOwo+PiAtwqDCoMKg IGludCByZXQ7Cj4+ICvCoMKgwqAgY29uc3QgdWludDhfdCAqcHRyID0gYnVmLCAqZW5kID0gYnVm ICsgYnVmX3NpemU7Cj4+ICvCoMKgwqAgdWludDMyX3Qgc3RhdGUgPSAtMTsKPj4gK8KgwqDCoCBp bnQgaGFzX3ZwcyA9IDA7Cj4+ICvCoMKgwqAgaW50IGhhc19zcHMgPSAwOwo+PiArwqDCoMKgIGlu dCBoYXNfcHBzID0gMDsKPj4gK8KgwqDCoCBpbnQgbnV0Owo+PiArCj4+ICvCoMKgwqAgd2hpbGUg KHB0ciA8IGVuZCkgewo+PiArwqDCoMKgwqDCoMKgwqAgcHRyID0gYXZwcml2X2ZpbmRfc3RhcnRf Y29kZShwdHIsIGVuZCwgJnN0YXRlKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICgoc3RhdGUgPj4g OCkgIT0gU1RBUlRfQ09ERSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvC oMKgwqDCoMKgwqDCoCBudXQgPSAoc3RhdGUgPj4gMSkgJiAweDNGOwo+PiArwqDCoMKgwqDCoMKg wqAgaWYgKG51dCA9PSBIRVZDX05BTF9WUFMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhh c192cHMgPSAxOwo+PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAobnV0ID09IEhFVkNfTkFMX1NQ UykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGFzX3NwcyA9IDE7Cj4+ICvCoMKgwqDCoMKg wqDCoCBlbHNlIGlmIChudXQgPT0gSEVWQ19OQUxfUFBTKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBoYXNfcHBzID0gMTsKPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKChudXQgIT0gSEVW Q19OQUxfU0VJX1BSRUZJWCB8fCBoYXNfcHBzKSAmJgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBudXQgIT0gSEVWQ19OQUxfQVVEKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChoYXNfdnBzICYmIGhhc19zcHMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB3aGlsZSAocHRyIC0gNCA+IGJ1ZiAmJiBwdHJbLTVdID09IDApCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdHItLTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcHRyIC0gNCAtIGJ1ZjsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0KPj4gK8KgwqDC oCByZXR1cm4gMDsKPj4gK30KPj4gwqAKPj4gLcKgwqDCoCBzLT5wYXJzZXIgPSBhdl9wYXJzZXJf aW5pdChjdHgtPnBhcl9pbi0+Y29kZWNfaWQpOwo+PiArc3RhdGljIGludCBtcGVndmlkZW9fc3Bs aXQoY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCj4+ICt7Cj4+ICvCoMKgwqAgdWlu dDMyX3Qgc3RhdGUgPSAtMTsKPj4gK8KgwqDCoCBpbnQgZm91bmQgPSAwOwo+PiArCj4+ICvCoMKg wqAgZm9yIChpbnQgaSA9IDA7IGkgPCBidWZfc2l6ZTsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBzdGF0ZSA9IChzdGF0ZSA8PCA4KSB8IGJ1ZltpXTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChz dGF0ZSA9PSAweDFCMykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3VuZCA9IDE7Cj4+ ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKGZvdW5kICYmIHN0YXRlICE9IDB4MUI1ICYmIHN0 YXRlIDwgMHgyMDAgJiYgc3RhdGUKPj4+ID0gMHgxMDApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiBpIC0gMzsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9 Cj4+IMKgCj4+IC3CoMKgwqAgaWYgKHMtPnBhcnNlcikgewo+PiAtwqDCoMKgwqDCoMKgwqAgcy0+ YXZjdHggPSBhdmNvZGVjX2FsbG9jX2NvbnRleHQzKE5VTEwpOwo+PiAtwqDCoMKgwqDCoMKgwqAg aWYgKCFzLT5hdmN0eCkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKPj4gK3N0YXRpYyBpbnQgbXBlZzR2aWRlb19zcGxpdChjb25zdCB1aW50OF90ICpi dWYsIGludCBidWZfc2l6ZSkKPj4gK3sKPj4gK8KgwqDCoCBjb25zdCB1aW50OF90ICpwdHIgPSBi dWYsICplbmQgPSBidWYgKyBidWZfc2l6ZTsKPj4gK8KgwqDCoCB1aW50MzJfdCBzdGF0ZSA9IC0x Owo+PiDCoAo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2Nv bnRleHQocy0+YXZjdHgsIGN0eC0+cGFyX2luKTsKPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyZXQg PCAwKQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArwqDCoMKgIHdo aWxlIChwdHIgPCBlbmQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHB0ciA9IGF2cHJpdl9maW5kX3N0 YXJ0X2NvZGUocHRyLCBlbmQsICZzdGF0ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoc3RhdGUg PT0gMHgxQjMgfHwgc3RhdGUgPT0gMHgxQjYpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBwdHIgLSA0IC0gYnVmOwo+PiDCoMKgwqDCoCB9Cj4+IMKgCj4+IMKgwqDCoMKgIHJldHVy biAwOwo+PiDCoH0KPj4gwqAKPj4gLXN0YXRpYyB2b2lkIHJlbW92ZV9leHRyYWRhdGFfY2xvc2Uo QVZCU0ZDb250ZXh0ICpjdHgpCj4+ICtzdGF0aWMgaW50IHZjMV9zcGxpdChjb25zdCB1aW50OF90 ICpidWYsIGludCBidWZfc2l6ZSkKPj4gK3sKPj4gK8KgwqDCoCBjb25zdCB1aW50OF90ICpwdHIg PSBidWYsICplbmQgPSBidWYgKyBidWZfc2l6ZTsKPj4gK8KgwqDCoCB1aW50MzJfdCBzdGF0ZSA9 IC0xOwo+PiArwqDCoMKgIGludCBjaGFyZ2VkID0gMDsKPj4gKwo+PiArwqDCoMKgIHdoaWxlIChw dHIgPCBlbmQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHB0ciA9IGF2cHJpdl9maW5kX3N0YXJ0X2Nv ZGUocHRyLCBlbmQsICZzdGF0ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoc3RhdGUgPT0gVkMx X0NPREVfU0VRSERSIHx8IHN0YXRlID09Cj4+IFZDMV9DT0RFX0VOVFJZUE9JTlQpIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2hhcmdlZCA9IDE7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVs c2UgaWYgKGNoYXJnZWQgJiYgSVNfTUFSS0VSKHN0YXRlKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHB0ciAtIDQgLSBidWY7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAg cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcmVtb3ZlX2V4dHJhZGF0YShBVkJT RkNvbnRleHQgKmN0eCwgQVZQYWNrZXQgKnBrdCkKPj4gwqB7Cj4+IMKgwqDCoMKgIFJlbW92ZUV4 dHJhZGF0YUNvbnRleHQgKnMgPSBjdHgtPnByaXZfZGF0YTsKPj4gwqAKPj4gLcKgwqDCoCBhdmNv ZGVjX2ZyZWVfY29udGV4dCgmcy0+YXZjdHgpOwo+PiAtwqDCoMKgIGF2X3BhcnNlcl9jbG9zZShz LT5wYXJzZXIpOwo+PiArwqDCoMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBmZl9i c2ZfZ2V0X3BhY2tldF9yZWYoY3R4LCBwa3QpOwo+PiArwqDCoMKgIGlmIChyZXQgPCAwKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gKwo+PiArwqDCoMKgIGlmIChzLT5mcmVxID09 IFJFTU9WRV9GUkVRX0FMTCB8fAo+PiArwqDCoMKgwqDCoMKgwqAgKHMtPmZyZXEgPT0gUkVNT1ZF X0ZSRVFfTk9OS0VZRlJBTUUgJiYgIShwa3QtPmZsYWdzICYKPj4gQVZfUEtUX0ZMQUdfS0VZKSkg fHwKPj4gK8KgwqDCoMKgwqDCoMKgIChzLT5mcmVxID09IFJFTU9WRV9GUkVRX0tFWUZSQU1FICYm IHBrdC0+ZmxhZ3MgJgo+PiBBVl9QS1RfRkxBR19LRVkpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBp bnQgaTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChjdHgtPnBhcl9pbi0+Y29kZWNf aWQpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgQVZfQ09ERUNfSURfQVYxOgo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpID0gYXYxX3NwbGl0KHBrdC0+ZGF0YSwgcGt0LT5zaXplLCBjdHgp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgIGNh c2UgQVZfQ09ERUNfSURfQVZTMjoKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgQVZfQ09ERUNfSURf QVZTMzoKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgQVZfQ09ERUNfSURfQ0FWUzoKPj4gK8KgwqDC oMKgwqDCoMKgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzQ6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGkgPSBtcGVnNHZpZGVvX3NwbGl0KHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIEFWX0NPREVD X0lEX0gyNjQ6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGkgPSBoMjY0X3NwbGl0KHBrdC0+ ZGF0YSwgcGt0LT5zaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvC oMKgwqDCoMKgwqDCoCBjYXNlIEFWX0NPREVDX0lEX0hFVkM6Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGkgPSBoZXZjX3NwbGl0KHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIEFWX0NPREVDX0lE X01QRUcxVklERU86Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIEFWX0NPREVDX0lEX01QRUcyVklE RU86Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGkgPSBtcGVndmlkZW9fc3BsaXQocGt0LT5k YXRhLCBwa3QtPnNpemUpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8Kg wqDCoMKgwqDCoMKgIGNhc2UgQVZfQ09ERUNfSURfVkMxOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpID0gdmMxX3NwbGl0KHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZWZhdWx0Ogo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpID0gMDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDC oMKgwqDCoMKgwqAgcGt0LT5kYXRhICs9IGk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwa3QtPnNpemUg LT0gaTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gwqB9Cj4+IMKg Cj4+IMKgI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoUmVtb3ZlRXh0cmFkYXRhQ29udGV4dCwg eCkKPj4gQEAgLTExMiw3ICsyNDksNSBAQCBjb25zdCBBVkJpdFN0cmVhbUZpbHRlciBmZl9yZW1v dmVfZXh0cmFkYXRhX2JzZiA9Cj4+IHsKPj4gwqDCoMKgwqAgLm5hbWXCoMKgwqDCoMKgwqDCoMKg wqDCoCA9ICJyZW1vdmVfZXh0cmEiLAo+PiDCoMKgwqDCoCAucHJpdl9kYXRhX3NpemUgPSBzaXpl b2YoUmVtb3ZlRXh0cmFkYXRhQ29udGV4dCksCj4+IMKgwqDCoMKgIC5wcml2X2NsYXNzwqDCoMKg wqAgPSAmcmVtb3ZlX2V4dHJhZGF0YV9jbGFzcywKPj4gLcKgwqDCoCAuaW5pdMKgwqDCoMKgwqDC oMKgwqDCoMKgID0gcmVtb3ZlX2V4dHJhZGF0YV9pbml0LAo+PiAtwqDCoMKgIC5jbG9zZcKgwqDC oMKgwqDCoMKgwqDCoCA9IHJlbW92ZV9leHRyYWRhdGFfY2xvc2UsCj4+IMKgwqDCoMKgIC5maWx0 ZXLCoMKgwqDCoMKgwqDCoMKgID0gcmVtb3ZlX2V4dHJhZGF0YSwKPj4gwqB9Owo+PiBkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy92YzFfcGFyc2VyLmMgYi9saWJhdmNvZGVjL3ZjMV9wYXJzZXIuYwo+ PiBpbmRleCAwZjE3ZDI5OWUxLi4wMDg5NmRkYjA5IDEwMDY0NAo+PiAtLS0gYS9saWJhdmNvZGVj L3ZjMV9wYXJzZXIuYwo+PiArKysgYi9saWJhdmNvZGVjL3ZjMV9wYXJzZXIuYwo+PiBAQCAtMjU2 LDI0ICsyNTYsNiBAQCBzdGF0aWMgaW50IHZjMV9wYXJzZShBVkNvZGVjUGFyc2VyQ29udGV4dCAq cywKPj4gwqDCoMKgwqAgcmV0dXJuIG5leHQ7Cj4+IMKgfQo+PiDCoAo+PiAtc3RhdGljIGludCB2 YzFfc3BsaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCB1aW50OF90ICpidWYsIGludCBi dWZfc2l6ZSkKPj4gLXsKPj4gLcKgwqDCoCB1aW50MzJfdCBzdGF0ZSA9IC0xOwo+PiAtwqDCoMKg IGludCBjaGFyZ2VkID0gMDsKPj4gLcKgwqDCoCBjb25zdCB1aW50OF90ICpwdHIgPSBidWYsICpl bmQgPSBidWYgKyBidWZfc2l6ZTsKPj4gLQo+PiAtwqDCoMKgIHdoaWxlIChwdHIgPCBlbmQpIHsK Pj4gLcKgwqDCoMKgwqDCoMKgIHB0ciA9IGF2cHJpdl9maW5kX3N0YXJ0X2NvZGUocHRyLCBlbmQs ICZzdGF0ZSk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoc3RhdGUgPT0gVkMxX0NPREVfU0VRSERS IHx8IHN0YXRlID09Cj4+IFZDMV9DT0RFX0VOVFJZUE9JTlQpIHsKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY2hhcmdlZCA9IDE7Cj4+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKGNoYXJn ZWQgJiYgSVNfTUFSS0VSKHN0YXRlKSkKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHB0ciAtIDQgLSBidWY7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgcmV0dXJuIDA7Cj4+ IC19Cj4+IC0KPj4gwqBzdGF0aWMgYXZfY29sZCBpbnQgdmMxX3BhcnNlX2luaXQoQVZDb2RlY1Bh cnNlckNvbnRleHQgKnMpCj4+IMKgewo+PiDCoMKgwqDCoCBWQzFQYXJzZUNvbnRleHQgKnZwYyA9 IHMtPnByaXZfZGF0YTsKPj4gQEAgLTI5Myw1ICsyNzUsNCBAQCBjb25zdCBBVkNvZGVjUGFyc2Vy IGZmX3ZjMV9wYXJzZXIgPSB7Cj4+IMKgwqDCoMKgIC5wYXJzZXJfaW5pdMKgwqDCoCA9IHZjMV9w YXJzZV9pbml0LAo+PiDCoMKgwqDCoCAucGFyc2VyX3BhcnNlwqDCoCA9IHZjMV9wYXJzZSwKPj4g wqDCoMKgwqAgLnBhcnNlcl9jbG9zZcKgwqAgPSBmZl9wYXJzZV9jbG9zZSwKPj4gLcKgwqDCoCAu c3BsaXTCoMKgwqDCoMKgwqDCoMKgwqAgPSB2YzFfc3BsaXQsCj4+IMKgfTsKPiAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K