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 D36B045645 for ; Mon, 13 Mar 2023 16:09:22 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AAAEB68BBEA; Mon, 13 Mar 2023 18:09:18 +0200 (EET) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03olkn2013.outbound.protection.outlook.com [40.92.57.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C2AA668A1DD for ; Mon, 13 Mar 2023 18:09:11 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NJy4k2SYt8Js5WPoFjIZ8+4ZPNZEg1WRVTN+rJlGCqblQrdAgTc+MVHY816VXT25pRT7r08zgd7DTRGZiNtsfbqbOtvHza+0THqB2Gy2NocpXqwinUEXjuDoKp3F7koeKHJJ+JtnOW1Kppyzyev6regWEkflBL5Rw58FnttsLOV8LKfhGOmXdA4iixvCQhHCMj2CtWLSkWZCJKlhmFUCAF+fLL1mxaSe0qO1SON8Z0vBs1ScPu1L0/tJ9nAz0ABIfN0cY14nxAXbsRlhk75vMQ7Mb9n60UEUOMKkFwZIgHeDPL9HPJ5NGKh9lhIQ9uzel5W7v2YHoLdsxvMh+PO/9A== 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=f+w2ckTqURD5XxakRwE6ofLDltNFaPbgPJK57V95eBM=; b=HNeMG9xx8FVaqUwAJs+Q3xmiMd5B6mQ3JKQncO66e0z2owALynrRl4+7Z+KaCuHn4sgzTYc4DA1/cviQwR1TyMge+xa2yKgFECu/LMN3dm3O5VcHYxn0NhoedPw8AB3nYlIuF+fIX4H+bJY34mthotHg1RNCAXEdqmX5zKZxEPUedAfr427rEf6AONm6cuJ8BiK6dlssX8XLOtDY5nTQOHa2abRzc1/BxDrL3jf6V+kAPHBkfjal7Q6dtoLP9Em68g7LSZVYSvWqcZcuKHtB9v3uRgWRVEe7kdM8w1oslySrAj6VORrUthyJ0kFQKcxrOYVbTFq9BbKdiuvPxqvVIQ== 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=f+w2ckTqURD5XxakRwE6ofLDltNFaPbgPJK57V95eBM=; b=bDIVS5QaYDY23DbHAR0IzJAv87bwoqr8U0f92TmyRUJ7vYIQugTOeL0I9kocscAb/RJkbLtVXS6K20UZdYIt3podSZTxRGB88pXTDxGcWfAP+1EqtInBvZ2tkiMYuJX9xojKGdlo2xCht4OLIMu/4e/2rL0uyOMMzTe7/nKdIXz8PQw6p8+Jn3iHZao518ik+gxbxvABM0R/YAgZgro9FErM73VpoOvcB4XAP4R8ZsD4wRYzg+eGg2/gfV8gaZoywEzvhiUZh4pLdfB6w2/O+usVAwlKtTmieVmot76dpNFE5/1ZbxU0DZs/mkAg9sNXJtW3EX2O0PzUF2Tb/TXJLQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0211.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Mon, 13 Mar 2023 16:09:09 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b%3]) with mapi id 15.20.6178.015; Mon, 13 Mar 2023 16:09:09 +0000 Message-ID: Date: Mon, 13 Mar 2023 17:09:45 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <9078bd19-6b49-3cad-adb1-9f7a67a3e598@vimeo.com> From: Andreas Rheinhardt In-Reply-To: <9078bd19-6b49-3cad-adb1-9f7a67a3e598@vimeo.com> X-TMN: [aVeTVezi6kNSFT6rnOWZ6W4/CcbAiYgfuLeP8SLwMOk=] X-ClientProxiedBy: ZR0P278CA0198.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::12) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0211:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b9ae8b7-4860-4c6c-5f52-08db23dd4756 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ix8RlwSuTXPt5ECdOb3zVEBxu45g83tlBwbcIjEvAaD61AAQj2VRJlEP8sSRpcH0gsuZHrs3tNN3fW1Xcq9NXLwLE+kd1Xx9BLXJDkVGavIghdaUJOqKDZHtm4a0lrLBnrRpOJmga2g08vMd5qdVhlkF25ideNiypV02dTNluu4vlI51ehGMUNY2vcjFneDWPL54KJZRx2N6RF7jE2+1FxMx45odpsbibftWp+h2fVRrRr3H0QpQNIxCve1LSbdrdr2sFh+X0omcL+xLqSKK9TJw77H3PyzT0AYgplC5LVpn4nMpbHjO8UeQyIWeWs5sSVQH1Ou+eKmqBX/k7blYHHcJwqpzDGK/uOkNvD8WlImdWKH5FlufiZ8sGPPyMvxARmO66uOUbZw+Bwpt9jtHgNBmLatdkQgdETURXI+KPnSzw9jyTxJ/KZdwqs4dqlWGA1tAGwtQAlri8ENrX2EhwEWZ0IPPpHGjgcuabF2sElgRZ/VkyA4tOGlsH3SsUfq/HTpBoAiwMukTXtb+P0wEVqW4y7sRVV8nC56lpVzhfs6cGGRMYgK/oRaJCcowReWTkv1y9bor1liYY1wjDWJpwfQrAWVsGcmn7ihjVxi0l4LipBIKu2YU6IbIb9HQI3wMQSmPgo0ChEEF1HsfcSiU4rlTwdOKkmzBEg5KIS58lcQ= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TEs0MjdXSUV6UlBONi84aklhRlZvUm5PaWFTaEFJeUlyU2NiNjRPd0Y3b3N0?= =?utf-8?B?ZGU1RHc1Z0dUMmsrNnMvSkxGeXpKbS9iM3dYRjRBNko0OGhPdlA2U2tET0oy?= =?utf-8?B?ZFozUTZoYk9KRHdLbVJBa2tMMmlkRGRmMGE2VXB3S0RBM2MxQWp0cjBBVUNT?= =?utf-8?B?d0YrZVIwN2RmYjl2VlpiWURKYlhWeXJSS25sM1FyOFYreFdZd09qdXJINjdV?= =?utf-8?B?M1c5SzBoS1RWT0owd0psamhISnN6ZTBnL29NQng4OVc3Vm5NeVpaVXhsNVBt?= =?utf-8?B?NEpXc1F6UTNzMm9Ob2p3bVE3Zm9pKzNRamFTNDdTVnUwZHBHNFE4L3prOG9q?= =?utf-8?B?OWJORloyNkMwK25acU5scmxMZHpxS3pMQUdsdzhhcnp1c0ZMSHdXQzNvb1o2?= =?utf-8?B?NiszQUt4ekFZeEZ1TXlMWVA5R1V4VUQ1blI5T3Q4UlRhbGw1STdYTWVEY3pl?= =?utf-8?B?ZXlLY0lmdTVJcWxDcUFpUElkaDBNVGZuTmoxUWxGaTQ4QVNKanVBQnA0UHlY?= =?utf-8?B?WDJ2YTg1WDBpZ1IrV1k5SG5FNHd2alVVb3dMcjY1TWFLMkdvbmZiQnZwRzhv?= =?utf-8?B?TFZkbXQ3V0VnUi8rMDNXM1dnM1Q0NVRTZ0plYnpoZFhFMVdxemtPeFJSTURD?= =?utf-8?B?eExSUVMrWU9EdkNYdGJ1M0pmdUkzMUtYeUhNTWU4MmZyelNBd0xHNEdNcmxI?= =?utf-8?B?UTl0TnM0aWlCM1Q2S2dOMVBIZGFnR2tFM2NwNTdwMCthcTc1YThDcnphNnlV?= =?utf-8?B?enY1RWxpcy92Y3dXdXpualZ1ekJMYjZ2Q1pMVlA4ZUFLM0s3V3JQV3FUbzVm?= =?utf-8?B?aXkvYmN5NDZFWHFnUGZhVmI3Y0JHNDJXYzNKcExkUVlVdXNYd2k0dkJGM0dh?= =?utf-8?B?TDZ3WmxtVjI4NGZkQnVrZ0ZMWGo3RGZkS2JENUxjVjF6L0ZkMVpDZDBrKytG?= =?utf-8?B?dUZ1RXVqOVRBUU1YaWE3TWdjQ1pTS052dCtHdVpDSFl1SFduOUFGOG5vaW5w?= =?utf-8?B?a2w5K2ovQzZiK0ZwRHFGOWVNeng2SUhZaVRrblFuN2gxbThPeitFRlZReFdW?= =?utf-8?B?SS8rcTl6MTdxQk1IY0kxV3haaWY3ZitzMGpCY25KZWMyL3ZCSWlsVXZQNXYy?= =?utf-8?B?SlZ0UFNjcDkvL3ZOMXR1amkyR1FUeEFMUFFWRHRqajNGWlF4V3p2U3RxSjlr?= =?utf-8?B?RE1YdVV0TlZLTDdycUNnTFlVbmVhVDZZQUp4Mlc1Y2VoZERLdWkvWTZZVjJm?= =?utf-8?B?YnFFSWNzQmlDMm9yS0ptZnNGenhmZ2ZPUnBDaWRGZWVNWEdmY0pacHlobFBY?= =?utf-8?B?ZTF1TmNGWmQyZndZSWhrSDJxdzliWTlBS0x1NEYxS1VWaGNaK05GTVRGSXc2?= =?utf-8?B?UjVBUjU0WklpMXBzR0NYWTYvTCszNTVYWHViYmVrdjdPZHJZNUgxbWdXM2ZW?= =?utf-8?B?aDdTenptMVN3dURTQkZCc1ZKVldzdG5LbUJORitlQi8vWGNWTmxBL2ZpaGpT?= =?utf-8?B?RHh1eFNhakRsaHBmUkFmZUFqT2Z3V0JYb2V2R0JvazVhaGdFSTYxZWhnbUxy?= =?utf-8?B?eThiSnVDR2pMNFpZT002V2N3NXhtU2ppZHdrWVIvVUphaHZLYXhlU29wZ05l?= =?utf-8?B?TWtLbzdVOTZJN0hLUC96Q3Y2Q1BCVDgrTXJzdWlFZ1J1bDJwbkJKd1pkd3Iw?= =?utf-8?B?ZlJjT1h4eWpJMmxwdzQ5QmNHSkFoTWQvM080SGo1MGY1UVBFVFNLSXJOaHdG?= =?utf-8?Q?9KmIPZ4OgOT63XWoSPvQQHfTcmVLv26HRc/QJMb?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b9ae8b7-4860-4c6c-5f52-08db23dd4756 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Mar 2023 16:09:09.6844 (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: PR3P250MB0211 Subject: Re: [FFmpeg-devel] [PATCH 1/2] avcodec/avutil: move dynamic HDR metadata parsing to libavutil 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: UmFwaGHDq2wgWnVtZXI6Cj4gUmVzZW5kaW5nIHRoaXMgcGF0Y2ggc2V0IGR1ZSB0byBteSBtYWls IGNsaWVudCBtZXNzaW5nIHdpdGggdGhlIGxpbmUgd3JhcHBpbmcgaW4gdGhlIG1lc3NhZ2VzIEkg c2VudCBlYXJsaWVyIHRvZGF5Lgo+IAo+IEJlbG93IGlzIGEgY29weSBvZiB0aGUgaW5pdGlhbCBl eHBsYW5hdGlvbi4KPiAKPiBUaGlzIHBhdGNoIHNldCBpbXBsZW1lbnRzIHNlcmlhbGl6YXRpb24g Zm9yIEhEUjEwKyBkeW5hbWljIG1ldGFkYXRhIAo+IChBVkR5bmFtaWNIRFJQbHVzKSwgd2hpY2gg aXMgdGhlIGludmVyc2Ugb3BlcmF0aW9uIG9mIHRoZSBleGlzdGluZyAKPiBmZl9wYXJzZV9pdHVf dF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKCkgZnVuY3Rpb24uIEl0IGFsc28gbW92ZXMgYm90 aCAKPiBmdW5jdGlvbnMgZnJvbSBsaWJhdmNvZGVjIHRvIGxpYmF2dXRpbCBhbmQgbWFrZXMgdGhl bSBwdWJsaWMuIEZvciAKPiBjb25zaXN0ZW5jeSwgdGhlIGVxdWl2YWxlbnQgdml2aWQgSERSIHBh cnNpbmcgZnVuY3Rpb24gaXMgYWxzbyBtaWdyYXRlZCwgCj4gYnV0IEkgZGlkIG5vdCBpbXBsZW1l bnQgc2VyaWFsaXphdGlvbiBmb3IgaXQuIEZpbmFsbHksIHRoZSBwYXRjaCByZW5hbWVzIAo+IHRo b3NlIGZ1bmN0aW9ucyB0byBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KCkgKGZvciBwYXJz aW5nKSBhbmQgCj4gYXZfZHluYW1pY19oZHJfcGx1c190b190MzUgKGZvciBzZXJpYWxpemF0aW9u KSwgd2l0aCB0aGUgZXF1aXZhbGVudCAKPiBjaGFuZ2UgYmVpbmcgbWFkZSBmb3Igdml2aWQgYXMg d2VsbC4KPiAKPiBUaGUgbW90aXZhdGlvbiBmb3IgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgdXNl cnMgdG8gZWFzaWx5IGNvbnZlcnQgCj4gSERSMTArIHNpZGUgZGF0YSAod2hpY2ggaXMgcGFyc2Vk IGludG8gQVZEeW5hbWljSERSUGx1cykgdG8gYSBzdGFuZGFyZCAKPiBJVFUtVCBULjM1IHBheWxv YWQgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIGFwcGxpY2F0aW9ucyB0aGF0IAo+IGV4 cGVjdCBIRFIxMCsgZHluYW1pYyBtZXRhZGF0YSBpbiB0aGF0IGZvcm1hdCAoZS5nLiB4MjY1IGFu ZCByYXYxZSAKPiBlbmNvZGVycykuCj4gCj4gVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgc2VyaWFs aXphdGlvbiBmdW5jdGlvbiBpcyBBVkJ1ZmZlclJlZiosIHdoaWNoIEkgCj4gZXhwZWN0IHRvIGJl IGNvbnRlbnRpb3VzLiBQYXlsb2FkIHNpemUgaXMgbm90IGVtYmVkZGVkIGluIHRoZSBULjM1IGRh dGEsIAo+IHNvIGl0IG11c3QgYmUgY2FsY3VsYXRlZCwgdXNlZCB0byBhbGxvY2F0ZSBhIGJ1ZmZl ciwgYW5kIHJldHVybmVkIGFsb25nIAo+IHdpdGggdGhhdCBidWZmZXIgdG8gdGhlIHVzZXIuIEFz IGZhciBhcyBJJ20gYXdhcmUsIEFWQnVmZmVyUmVmIGlzIHRoZSAKPiBzaW1wbGVzdCB3YXkgdG8g ZG8gdGhhdCwgYnV0IEkgd2lsbCBiZSBoYXBweSB0byBjb25zaWRlciBhbHRlcm5hdGl2ZSAKPiBz b2x1dGlvbnMuCj4gCj4gUGxlYXNlIGxldCBtZSBrbm93IGlmIGl0IGlzIHByZWZlcnJlZCB0byBi dW1wIGxpYmF2dXRpbCB3aXRoIHRoZSBmaXJzdCAKPiBjb21taXQsIG9yIHdpdGggYm90aCBvZiB0 aGVtLCBjb25zaWRlcmluZyB0aGVyZSBhcmUgcHVibGljIEFQSSBjaGFuZ2VzIAo+IGFzc29jaWF0 ZWQgd2l0aCBlYWNoIG9uZS4KPiAKPiBSYXBoYcOrbCBadW1lcgo+IAo+IFNpZ25lZC1vZmYtYnk6 IFJhcGhhw6tsIFp1bWVyIDxyenVtZXJAdGViYWtvLm5ldD4KPiAtLS0KPiAgbGliYXZjb2RlYy9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KPiAgbGliYXZjb2RlYy9keW5hbWlj X2hkcjEwX3BsdXMuYyAgICAgICAgfCAxOTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oICAgICAgICB8ICAzNSAtLS0tLQo+ICBsaWJh dmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmMgICAgICAgICB8IDEzOSAtLS0tLS0tLS0tLS0tLS0t LQo+ICBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmggICAgICAgICB8ICAzNSAtLS0tLQo+ ICBsaWJhdmNvZGVjL2gyNjQ1X3NlaS5jICAgICAgICAgICAgICAgICB8ICAxMiArLQo+ICBsaWJh dnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuYyAgICAgICB8IDE4MCArKysrKysrKysrKysrKysr KysrKysrCj4gIGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oICAgICAgIHwgIDExICsr Cj4gIGxpYmF2dXRpbC9oZHJfZHluYW1pY192aXZpZF9tZXRhZGF0YS5jIHwgMTIwICsrKysrKysr KysrKysrKwo+ICBsaWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuaCB8ICAxMSAr Kwo+ICAxMCBmaWxlcyBjaGFuZ2VkLCAzMjkgaW5zZXJ0aW9ucygrKSwgNDE1IGRlbGV0aW9ucygt KQo+ICBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYwo+ ICBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaAo+ICBk ZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcl92aXZpZC5jCj4gIGRlbGV0 ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmgKPiAKPiBkaWZmIC0t Z2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiBpbmRleCAz ODkyNTNmNWQwLi40YmRmY2JhYjEyIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUK PiArKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gQEAgLTEwMyw4ICsxMDMsNyBAQCBPQkpTLSQo Q09ORklHX0gyNjRRUEVMKSAgICAgICAgICAgICAgICArPSBoMjY0cXBlbC5vCj4gIE9CSlMtJChD T05GSUdfSDI2NF9TRUkpICAgICAgICAgICAgICAgICs9IGgyNjRfc2VpLm8gaDI2NDVfc2VpLm8K PiAgT0JKUy0kKENPTkZJR19IRVZDUEFSU0UpICAgICAgICAgICAgICAgKz0gaGV2Y19wYXJzZS5v IGhldmNfcHMubyBoZXZjX2RhdGEubyBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGgyNjQ1ZGF0YS5vIGgyNjQ1X3BhcnNlLm8gaDI2NDVfdnVpLm8KPiAtT0JK Uy0kKENPTkZJR19IRVZDX1NFSSkgICAgICAgICAgICAgICAgKz0gaGV2Y19zZWkubyBoMjY0NV9z ZWkubyBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFt aWNfaGRyMTBfcGx1cy5vIGR5bmFtaWNfaGRyX3ZpdmlkLm8KPiArT0JKUy0kKENPTkZJR19IRVZD X1NFSSkgICAgICAgICAgICAgICAgKz0gaGV2Y19zZWkubyBoMjY0NV9zZWkubwo+ICBPQkpTLSQo Q09ORklHX0hQRUxEU1ApICAgICAgICAgICAgICAgICArPSBocGVsZHNwLm8KPiAgT0JKUy0kKENP TkZJR19IVUZGTUFOKSAgICAgICAgICAgICAgICAgKz0gaHVmZm1hbi5vCj4gIE9CSlMtJChDT05G SUdfSFVGRllVVkRTUCkgICAgICAgICAgICAgICs9IGh1ZmZ5dXZkc3Aubwo+IGRpZmYgLS1naXQg YS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jIGIvbGliYXZjb2RlYy9keW5hbWljX2hk cjEwX3BsdXMuYwo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDM0YTQ0YWFjNjUu LjAwMDAwMDAwMDAKPiAtLS0gYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCj4gKysr IC9kZXYvbnVsbAo+IEBAIC0xLDE5OCArMCwwIEBACj4gLS8qCj4gLSAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEZGbXBlZy4KPiAtICoKPiAtICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IC0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gLSAqIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+IC0gKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KPiAtICoKPiAtICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gLSAqIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gLSAqCj4gLSAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKPiAtICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQo+IC0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCj4gLSAqLwo+IC0KPiAtI2lu Y2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgo+IC0jaW5jbHVkZSAiZ2V0X2JpdHMuaCIKPiAt Cj4gLXN0YXRpYyBjb25zdCBpbnQ2NF90IGx1bWluYW5jZV9kZW4gPSAxOwo+IC1zdGF0aWMgY29u c3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4gPSAxNTsKPiAtc3RhdGljIGNvbnN0IGludDY0 X3QgcmdiX2RlbiA9IDEwMDAwMDsKPiAtc3RhdGljIGNvbnN0IGludDMyX3QgZnJhY3Rpb25fcGl4 ZWxfZGVuID0gMTAwMDsKPiAtc3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0 MDk1Owo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7Cj4g LXN0YXRpYyBjb25zdCBpbnQzMl90IHNhdHVyYXRpb25fd2VpZ2h0X2RlbiA9IDg7Cj4gLQo+IC1p bnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQ bHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKPiAtewo+IC0gICAgR2V0Qml0Q29udGV4dCBn YmMsICpnYiA9ICZnYmM7Cj4gLSAgICBpbnQgcmV0Owo+IC0KPiAtICAgIGlmICghcykKPiAtICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+IC0KPiAtICAgIHJldCA9IGluaXRfZ2V0X2Jp dHM4KGdiLCBkYXRhLCBzaXplKTsKPiAtICAgIGlmIChyZXQgPCAwKQo+IC0gICAgICAgIHJldHVy biByZXQ7Cj4gLQo+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gLSAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgcy0+YXBwbGljYXRpb25fdmVy c2lvbiA9IGdldF9iaXRzKGdiLCA4KTsKPiAtICAgIHMtPm51bV93aW5kb3dzID0gZ2V0X2JpdHMo Z2IsIDIpOwo+IC0KPiAtICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+bnVtX3dpbmRv d3MgPiAzKSB7Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICB9 Cj4gLQo+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAqIDggKyAxKSAqIChzLT5u dW1fd2luZG93cyAtIDEpKSkKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiAtCj4gLSAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAt ICAgICAgICAvLyBUaGUgY29ybmVycyBhcmUgc2V0IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhl cmUuIFRoZXkgc2hvdWxkIGJlCj4gLSAgICAgICAgLy8gY29udmVydGVkIHRvIHRoZSByZWxhdGl2 ZSBjb29yZGluYXRlcyAoaW4gWzAsIDFdKSBpbiB0aGUgZGVjb2Rlci4KPiAtICAgICAgICBBVkhE UlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiAtICAg ICAgICBwYXJhbXMtPndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94ID0KPiAtICAgICAgICAgICAg KEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+IC0gICAgICAgIHBhcmFtcy0+d2lu ZG93X3VwcGVyX2xlZnRfY29ybmVyX3kgPQo+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE2KSwgMX07Cj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRf Y29ybmVyX3ggPQo+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwg MX07Cj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kgPQo+IC0g ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gLQo+IC0gICAg ICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9IGdldF9iaXRzKGdiLCAxNik7Cj4gLSAg ICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiAt ICAgICAgICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xlID0gZ2V0X2JpdHMoZ2IsIDgpOwo+IC0gICAg ICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdi LCAxNik7Cj4gLSAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19leHRlcm5hbF9lbGxpcHNl ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiAtICAgICAgICBwYXJhbXMtPnNlbWltaW5vcl9heGlzX2V4 dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+IC0gICAgICAgIHBhcmFtcy0+b3Zl cmxhcF9wcm9jZXNzX29wdGlvbiA9IGdldF9iaXRzMShnYik7Cj4gLSAgICB9Cj4gLQo+IC0gICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gLQo+IC0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9s dW1pbmFuY2UgPQo+IC0gICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyks IGx1bWluYW5jZV9kZW59Owo+IC0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFs X3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+IC0KPiAtICAgIGlmIChzLT50 YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+IC0g ICAgICAgIGludCByb3dzLCBjb2xzOwo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IDEwKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAg ICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+IC0gICAgICAgIGNvbHMgPSBnZXRfYml0cyhnYiwg NSk7Cj4gLSAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMg PCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIHMtPm51bV9yb3dzX3RhcmdldGVkX3N5 c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7Cj4gLSAgICAgICAgcy0+ bnVtX2NvbHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0g Y29sczsKPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xz ICogNCkpCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAt ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+IC0gICAgICAgICAgICBm b3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+IC0gICAgICAgICAgICAgICAgcy0+dGFy Z2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPiAtICAg ICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWlu YW5jZV9kZW59Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0gICAg Zm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4gLSAgICAgICAgQVZI RFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cj4gLSAg ICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKDMgKiAxNyArIDE3ICsgNCkpCj4gLSAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IDM7IGkrKykgewo+IC0gICAgICAgICAgICBwYXJhbXMtPm1heHNjbFtpXSA9 Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rl bn07Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQo+IC0g ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gLSAg ICAgICAgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9i aXRzKGdiLCA0KTsKPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwKPiAtICAg ICAgICAgICAgKHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgKiAy NCkpCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2Jf cGVyY2VudGlsZXM7IGkrKykgewo+IC0gICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9t YXhyZ2JbaV0ucGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3KTsKPiAtICAgICAgICAgICAgcGFy YW1zLT5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRpbGUgPQo+IC0gICAgICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59Owo+IC0gICAgICAgIH0K PiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICBwYXJhbXMtPmZyYWN0 aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rp b25fcGl4ZWxfZGVufTsKPiAtICAgIH0KPiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEp Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICBzLT5tYXN0ZXJp bmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4g LSAgICBpZiAocy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcp IHsKPiAtICAgICAgICBpbnQgcm93cywgY29sczsKPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAxMCkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g LSAgICAgICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsKPiAtICAgICAgICBjb2xzID0gZ2V0X2Jp dHMoZ2IsIDUpOwo+IC0gICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwg KChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4gLSAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBzLT5udW1fcm93c19tYXN0 ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+IC0gICAgICAgIHMt Pm51bV9jb2xzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7 Cj4gLQo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChyb3dzICogY29scyAqIDQp KQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPiAtICAgICAgICAgICAgZm9yIChp bnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKPiAtICAgICAgICAgICAgICAgIHMtPm1hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4gLSAgICAgICAgICAgICAg ICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsK PiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtCj4gLSAgICBmb3IgKGlu dCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAtICAgICAgICBBVkhEUlBsdXND b2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiAtICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPiAtCj4gLSAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfZmxhZyA9IGdl dF9iaXRzMShnYik7Cj4gLSAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5nX2ZsYWcpIHsK PiAtICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCj4gLSAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICAgICAgICAgIHBhcmFt cy0+a25lZV9wb2ludF94ID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTIpLCBrbmVlX3BvaW50X2Rlbn07Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9w b2ludF95ID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIp LCBrbmVlX3BvaW50X2Rlbn07Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2 ZV9hbmNob3JzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+IC0KPiAtICAgICAgICAgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgKHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQo+ IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAg ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNo b3JzOyBpKyspIHsKPiAtICAgICAgICAgICAgICAgIHBhcmFtcy0+YmV6aWVyX2N1cnZlX2FuY2hv cnNbaV0gPQo+IC0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg MTApLCBiZXppZXJfYW5jaG9yX2Rlbn07Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4g LQo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gLSAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0gICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJh dGlvbl9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+IC0gICAgICAgIGlmIChwYXJhbXMt PmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKSB7Cj4gLSAgICAgICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDYpCj4gLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiAtICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX3dlaWdodCA9 Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDYpLCBzYXR1cmF0 aW9uX3dlaWdodF9kZW59Owo+IC0gICAgICAgIH0KPiAtICAgIH0KPiAtCj4gLSAgICByZXR1cm4g MDsKPiAtfQo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oIGIv bGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IGNkN2FjZjA0MzIuLjAwMDAwMDAwMDAKPiAtLS0gYS9saWJhdmNvZGVjL2R5bmFt aWNfaGRyMTBfcGx1cy5oCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDM1ICswLDAgQEAKPiAtLyoK PiAtICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gLSAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAt ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCj4gLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiAtICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiAtICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKPiAtICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPiAtICoKPiAtICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gLSAqIEZvdW5kYXRpb24sIEluYy4s IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV U0EKPiAtICovCj4gLQo+IC0jaWZuZGVmIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVTX0gKPiAt I2RlZmluZSBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19ICj4gLQo+IC0jaW5jbHVkZSAibGli YXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgiCj4gLQo+IC0vKioKPiAtICogUGFyc2UgdGhl IHVzZXIgZGF0YSByZWdpc3RlcmVkIElUVS1UIFQuMzUgdG8gQVZidWZmZXIgKEFWRHluYW1pY0hE UlBsdXMpLgo+IC0gKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBB VkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KPiAtICogQHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJy YXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1UIFQuMzUgZGF0YS4KPiAtICogQHBhcmFtIHNpemUg U2l6ZSBvZiB0aGUgZGF0YSBhcnJheSBpbiBieXRlcy4KPiAtICoKPiAtICogQHJldHVybiAwIGlm IHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZFUlJPUi4KPiAt ICovCj4gLWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHlu YW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKPiAtCj4gLSNlbmRpZiAvKiBB VkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv ZHluYW1pY19oZHJfdml2aWQuYyBiL2xpYmF2Y29kZWMvZHluYW1pY19oZHJfdml2aWQuYwo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGQ2ODk2NjlkZWMuLjAwMDAwMDAwMDAKPiAt LS0gYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmMKPiArKysgL2Rldi9udWxsCj4gQEAg LTEsMTM5ICswLDAgQEAKPiAtLyoKPiAtICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ IC0gKgo+IC0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCj4gLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKPiAtICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiBG Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK PiAtICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKPiAtICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiAtICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAtICoKPiAtICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4g LSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv c3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiAtICovCj4gLQo+IC0jaW5jbHVkZSAiZHluYW1pY19o ZHJfdml2aWQuaCIKPiAtI2luY2x1ZGUgImdldF9iaXRzLmgiCj4gLQo+IC1zdGF0aWMgY29uc3Qg aW50MzJfdCBtYXhyZ2JfZGVuID0gNDA5NTsKPiAtc3RhdGljIGNvbnN0IGludDMyX3QgY29sb3Jf c2F0dXJhdGlvbl9nYWluX2RlbiA9IDEyODsKPiAtc3RhdGljIGNvbnN0IGludDMyX3QgbWF4aW11 bV9sdW1pbmFuY2VfZGVuID0gNDA5NTsKPiAtc3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJh bV9tX3BfZGVuID0gMTYzODM7Cj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGJhc2VfcGFyYW1fbV9t X2RlbiA9IDEwOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiYXNlX3BhcmFtX21fYV9kZW4gPSAx MDIzOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiYXNlX3BhcmFtX21fYl9kZW4gPSAxMDIzOwo+ IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiYXNlX3BhcmFtX21fbl9kZW4gPSAxMDsKPiAtc3RhdGlj IGNvbnN0IGludDMyX3QgYmFzZV9wYXJhbV9EZWx0YV9kZW4gPSAxMjc7Cj4gLQo+IC1pbnQgZmZf cGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyX3ZpdmlkKEFWRHluYW1pY0hEUlZpdmlkICpz LCBjb25zdCB1aW50OF90ICpkYXRhLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc2l6ZSkKPiAtewo+IC0gICAgR2V0Qml0Q29udGV4dCBnYmMsICpn YiA9ICZnYmM7Cj4gLSAgICBpbnQgcmV0Owo+IC0KPiAtICAgIGlmICghcykKPiAtICAgICAgICBy ZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+IC0KPiAtICAgIHJldCA9IGluaXRfZ2V0X2JpdHM4KGdi LCBkYXRhLCBzaXplKTsKPiAtICAgIGlmIChyZXQgPCAwKQo+IC0gICAgICAgIHJldHVybiByZXQ7 Cj4gLQo+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgOCkKPiAtICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICBzLT5zeXN0ZW1fc3RhcnRfY29kZSA9IGdl dF9iaXRzKGdiLCA4KTsKPiAtICAgIGlmIChzLT5zeXN0ZW1fc3RhcnRfY29kZSA9PSAweDAxKSB7 Cj4gLSAgICAgICAgcy0+bnVtX3dpbmRvd3MgPSAxOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2Jp dHNfbGVmdChnYikgPCAxMiAqIDQgKiBzLT5udW1fd2luZG93cykKPiAtICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgZm9yIChpbnQgdyA9IDA7IHcgPCBz LT5udW1fd2luZG93czsgdysrKSB7Cj4gLSAgICAgICAgICAgIEFWSERSVml2aWRDb2xvclRyYW5z Zm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiAtCj4gLSAgICAgICAgICAgIHBh cmFtcy0+bWluaW11bV9tYXhyZ2IgID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1h eHJnYl9kZW59Owo+IC0gICAgICAgICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4cmdiICA9IChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBtYXhyZ2JfZGVufTsKPiAtICAgICAgICAgICAgcGFy YW1zLT52YXJpYW5jZV9tYXhyZ2IgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgbWF4 cmdiX2Rlbn07Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+bWF4aW11bV9tYXhyZ2IgID0gKEFWUmF0 aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1heHJnYl9kZW59Owo+IC0gICAgICAgIH0KPiAtCj4g LSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMiAqIHMtPm51bV93aW5kb3dzKQo+IC0g ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICBmb3IgKGlu dCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAtICAgICAgICAgICAgQVZIRFJW aXZpZENvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+IC0KPiAt ICAgICAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfbW9kZV9mbGFnID0gZ2V0X2JpdHMoZ2Is IDEpOwo+IC0gICAgICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdfbW9kZV9mbGFnKSB7 Cj4gLSAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxICkKPiAtICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICAgICAg ICAgIHBhcmFtcy0+dG9uZV9tYXBwaW5nX3BhcmFtX251bSA9IGdldF9iaXRzKGdiLCAxKSArIDE7 Cj4gLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+dG9uZV9tYXBw aW5nX3BhcmFtX251bTsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgQVZIRFJWaXZpZENv bG9yVG9uZU1hcHBpbmdQYXJhbXMgKnRtX3BhcmFtcyA9ICZwYXJhbXMtPnRtX3BhcmFtc1tpXTsK PiAtCj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTMpCj4g LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0g ICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4 aW11bV9sdW1pbmFuY2UgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgbWF4aW11bV9s dW1pbmFuY2VfZGVufTsKPiAtICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfZW5h YmxlX2ZsYWcgPSBnZXRfYml0cyhnYiwgMSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKHRt X3BhcmFtcy0+YmFzZV9lbmFibGVfZmxhZykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMTQgKyA2ICsgMTAgKyAxMCArIDYgKyA4ICsgMTApKQo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9tX3AgPSAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE0KSwgYmFzZV9wYXJhbV9tX3BfZGVufTsKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX21fbSA9IChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgIDYpLCBiYXNlX3BhcmFtX21fbV9kZW59Owo+IC0gICAgICAgICAg ICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fbV9hID0gKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAxMCksIGJhc2VfcGFyYW1fbV9hX2Rlbn07Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9tX2IgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDEwKSwgYmFzZV9wYXJhbV9tX2JfZGVufTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAg dG1fcGFyYW1zLT5iYXNlX3BhcmFtX21fbiA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgIDYp LCBiYXNlX3BhcmFtX21fbl9kZW59Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJh bXMtPmJhc2VfcGFyYW1fazEgPSBnZXRfYml0cyhnYiwgMik7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9rMiA9IGdldF9iaXRzKGdiLCAyKTsKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX2szID0gZ2V0X2JpdHMo Z2IsIDQpOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1f RGVsdGFfZW5hYmxlX21vZGUgPSBnZXRfYml0cyhnYiwgMyk7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIGlmICh0bV9wYXJhbXMtPmJhc2VfcGFyYW1fRGVsdGFfZW5hYmxlX21vZGUgPT0gMiB8 fCB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fRGVsdGFfZW5hYmxlX21vZGUgPT0gNikKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YSA9IChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgNykgKiAtMSwgYmFzZV9wYXJhbV9EZWx0YV9kZW59Owo+IC0g ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fRGVsdGEgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is IDcpLCBiYXNlX3BhcmFtX0RlbHRhX2Rlbn07Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAg IHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX2VuYWJsZV9mbGFnID0gZ2V0X2JpdHMoZ2IsIDEpOwo+ IC0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfZW5h YmxlX2ZsYWcpIHsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiKSA8IDEgKyB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9udW0gKiAoMiArIDEyICsgMjgg KyAxKSkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhy ZWVfU3BsaW5lX251bSA9IGdldF9iaXRzKGdiLCAxKSArIDE7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX251 bTsgaisrKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50 aHJlZV9TcGxpbmVfVEhfbW9kZSA9IGdldF9iaXRzKGdiLCAyKTsKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAodG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfbW9kZSA9PSAw IHx8IHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX1RIX21vZGUgPT0gMikgewo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA4KQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFt cy0+dGhyZWVfU3BsaW5lX1RIX2VuYWJsZV9NQiA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg OCksICAyNTV9Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9lbmFi bGUgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgIDQwOTV9Owo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX1RIX0RlbHRhMSA9 IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCAgMTAyM307Cj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfRGVsdGEyID0gKEFW UmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksICAxMDIzfTsKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9lbmFibGVfU3RyZW5ndGggPSAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsICA4KSwgIDI1NX07Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9udW0gICAgID0g MTsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5l X1RIX21vZGUgPSAwOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICB9Cj4gLQo+IC0gICAgICAg ICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfQo+IC0K PiAtICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdl dF9iaXRzKGdiLCAxKTsKPiAtICAgICAgICAgICAgaWYgKHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlv bl9tYXBwaW5nX2ZsYWcpIHsKPiAtICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDMgKyBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbnVtICogOCkKPiAtICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICAgICAgICAgICAg ICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbnVtID0gZ2V0X2JpdHMoZ2IsIDMpOwo+IC0gICAg ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25f bnVtOyBpKyspIHsKPiAtICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRp b25fZ2FpbltpXSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgOCksIGNvbG9yX3NhdHVyYXRp b25fZ2Fpbl9kZW59Owo+IC0gICAgICAgICAgICAgICAgfQo+IC0gICAgICAgICAgICB9Cj4gLSAg ICAgICAgfQo+IC0gICAgfQo+IC0KPiAtICAgIHJldHVybiAwOwo+IC19Cj4gZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvZHluYW1pY19oZHJfdml2aWQuaCBiL2xpYmF2Y29kZWMvZHluYW1pY19oZHJf dml2aWQuaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGQ1MjFiM2QyNjMuLjAw MDAwMDAwMDAKPiAtLS0gYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmgKPiArKysgL2Rl di9udWxsCj4gQEAgLTEsMzUgKzAsMCBAQAo+IC0vKgo+IC0gKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiBGRm1wZWcuCj4gLSAqCj4gLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAtICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiAtICogdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4g LSAqCj4gLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAo+IC0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+IC0gKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+IC0gKgo+IC0gKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4g LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKPiAtICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYg QVZDT0RFQ19EWU5BTUlDX0hEUl9WSVZJRF9ICj4gLSNkZWZpbmUgQVZDT0RFQ19EWU5BTUlDX0hE Ul9WSVZJRF9ICj4gLQo+IC0jaW5jbHVkZSAibGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21l dGFkYXRhLmgiCj4gLQo+IC0vKioKPiAtICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVk IElUVS1UIFQuMzUgdG8gQVZidWZmZXIgKEFWRHluYW1pY0hEUlZpdmlkKS4KPiAtICogQHBhcmFt IHMgQSBwb2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSVml2aWQgc3Ry dWN0dXJlLgo+IC0gKiBAcGFyYW0gZGF0YSBUaGUgYnl0ZSBhcnJheSBjb250YWluaW5nIHRoZSBy YXcgSVRVLVQgVC4zNSBkYXRhLgo+IC0gKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFy cmF5IGluIGJ5dGVzLgo+IC0gKgo+IC0gKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNl LCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBBVkVSUk9SLgo+IC0gKi8KPiAtaW50IGZmX3BhcnNl X2l0dV90X3QzNV90b19keW5hbWljX2hkcl92aXZpZChBVkR5bmFtaWNIRFJWaXZpZCAqcywgY29u c3QgdWludDhfdCAqZGF0YSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHNpemUpOwo+IC0KPiAtI2VuZGlmIC8qIEFWQ09ERUNfRFlOQU1JQ19IRFJf VklWSURfSCAqLwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jIGIvbGliYXZj b2RlYy9oMjY0NV9zZWkuYwo+IGluZGV4IDZlNGE5YTFhZjIuLjdhOTZiYzYwNTYgMTAwNjQ0Cj4g LS0tIGEvbGliYXZjb2RlYy9oMjY0NV9zZWkuYwo+ICsrKyBiL2xpYmF2Y29kZWMvaDI2NDVfc2Vp LmMKPiBAQCAtMjcsMTQgKzI3LDE0IEBACj4gIAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2FtYmll bnRfdmlld2luZ19lbnZpcm9ubWVudC5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2Rpc3BsYXku aCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICsjaW5j bHVkZSAibGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21ldGFkYXRhLmgiCj4gICNpbmNsdWRl ICJsaWJhdnV0aWwvZmlsbV9ncmFpbl9wYXJhbXMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9w aXhkZXNjLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvc3RlcmVvM2QuaCIKPiAgCj4gICNpbmNs dWRlICJhdHNjX2E1My5oIgo+ICAjaW5jbHVkZSAiYXZjb2RlYy5oIgo+IC0jaW5jbHVkZSAiZHlu YW1pY19oZHIxMF9wbHVzLmgiCj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcl92aXZpZC5oIgo+ICAj aW5jbHVkZSAiZ2V0X2JpdHMuaCIKPiAgI2luY2x1ZGUgImdvbG9tYi5oIgo+ICAjaW5jbHVkZSAi aDI2NDVfc2VpLmgiCj4gQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIGludCBkZWNvZGVfcmVnaXN0 ZXJlZF91c2VyX2RhdGFfZHluYW1pY19oZHJfcGx1cyhIRVZDU0VJRHluYW1pY0hEUlBsdXMgKnMK PiAgICAgIGlmICghbWV0YWRhdGEpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK PiAgCj4gLSAgICBlcnIgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVz KG1ldGFkYXRhLCBnYi0+YnVmZmVyLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikpOwo+ICsg ICAgZXJyID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShtZXRhZGF0YSwgZ2ItPmJ1ZmZl ciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJf Z2V0X2J5dGVzX2xlZnQoZ2IpKTsKPiAgICAgIGlmIChlcnIgPCAwKSB7Cj4gICAgICAgICAgYXZf ZnJlZShtZXRhZGF0YSk7Cj4gICAgICAgICAgcmV0dXJuIGVycjsKPiBAQCAtNzgsOCArNzgsOCBA QCBzdGF0aWMgaW50IGRlY29kZV9yZWdpc3RlcmVkX3VzZXJfZGF0YV9keW5hbWljX2hkcl92aXZp ZChIRVZDU0VJRHluYW1pY0hEUlZpdmlkCj4gICAgICBpZiAoIW1ldGFkYXRhKQo+ICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gIAo+IC0gICAgZXJyID0gZmZfcGFyc2VfaXR1X3Rf dDM1X3RvX2R5bmFtaWNfaGRyX3ZpdmlkKG1ldGFkYXRhLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdiLT5idWZmZXIsIGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KGdiKSk7Cj4gKyAgICBlcnIgPSBhdl9keW5hbWljX2hkcl92aXZpZF9mcm9t X3QzNShtZXRhZGF0YSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdiLT5idWZmZXIsIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7Cj4gICAgICBpZiAo ZXJyIDwgMCkgewo+ICAgICAgICAgIGF2X2ZyZWUobWV0YWRhdGEpOwo+ICAgICAgICAgIHJldHVy biBlcnI7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jIGIv bGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPiBpbmRleCAwZmExZWU4MmRlLi45OGYz OTliMDMyIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCj4g KysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPiBAQCAtMjAsNiArMjAsMTYg QEAKPiAgCj4gICNpbmNsdWRlICJoZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAi bWVtLmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL2dldF9iaXRzLmgiCj4gKyNpbmNsdWRlICJs aWJhdmNvZGVjL3B1dF9iaXRzLmgiCj4gKwo+ICtzdGF0aWMgY29uc3QgaW50NjRfdCBsdW1pbmFu Y2VfZGVuID0gMTsKPiArc3RhdGljIGNvbnN0IGludDMyX3QgcGVha19sdW1pbmFuY2VfZGVuID0g MTU7Cj4gK3N0YXRpYyBjb25zdCBpbnQ2NF90IHJnYl9kZW4gPSAxMDAwMDA7Cj4gK3N0YXRpYyBj b25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2RlbiA9IDEwMDA7Cj4gK3N0YXRpYyBjb25zdCBp bnQzMl90IGtuZWVfcG9pbnRfZGVuID0gNDA5NTsKPiArc3RhdGljIGNvbnN0IGludDMyX3QgYmV6 aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBzYXR1cmF0aW9u X3dlaWdodF9kZW4gPSA4Owo+ICAKPiAgQVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJf cGx1c19hbGxvYyhzaXplX3QgKnNpemUpCj4gIHsKPiBAQCAtNDUsMyArNTUsMTczIEBAIEFWRHlu YW1pY0hEUlBsdXMgKmF2X2R5bmFtaWNfaGRyX3BsdXNfY3JlYXRlX3NpZGVfZGF0YShBVkZyYW1l ICpmcmFtZSkKPiAgCj4gICAgICByZXR1cm4gKEFWRHluYW1pY0hEUlBsdXMgKilzaWRlX2RhdGEt PmRhdGE7Cj4gIH0KPiArCj4gK2ludCBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KEFWRHlu YW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzaXplKQo+ICt7Cj4gKyAgICBHZXRCaXRDb250ZXh0IGdiYywg KmdiID0gJmdiYzsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgaWYgKCFzKQo+ICsgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsgICAgcmV0ID0gaW5pdF9nZXRfYml0czgo Z2IsIGRhdGEsIHNpemUpOwo+ICsgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgcmV0dXJuIHJl dDsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiArICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICBzLT5hcHBsaWNhdGlvbl92ZXJzaW9u ID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgcy0+bnVtX3dpbmRvd3MgPSBnZXRfYml0cyhnYiwg Mik7Cj4gKwo+ICsgICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2luZG93cyA+ IDMpIHsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgIH0KPiAr Cj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoKDE5ICogOCArIDEpICogKHMtPm51bV93 aW5kb3dzIC0gMSkpKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsK PiArICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsgICAg ICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMgaGVyZS4g VGhleSBzaG91bGQgYmUKPiArICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHJlbGF0aXZlIGNv b3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgo+ICsgICAgICAgIEFWSERSUGx1 c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+ICsgICAgICAg IHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3ggPQo+ICsgICAgICAgICAgICAoQVZS YXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gKyAgICAgICAgcGFyYW1zLT53aW5kb3df dXBwZXJfbGVmdF9jb3JuZXJfeSA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3Ju ZXJfeCA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsK PiArICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeSA9Cj4gKyAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArCj4gKyAgICAgICAg cGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiArICAgICAg ICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRfYml0cyhnYiwgMTYpOwo+ICsgICAg ICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBnZXRfYml0cyhnYiwgOCk7Cj4gKyAgICAgICAg cGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2 KTsKPiArICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBn ZXRfYml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBhcmFtcy0+c2VtaW1pbm9yX2F4aXNfZXh0ZXJu YWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4gKyAgICAgICAgcGFyYW1zLT5vdmVybGFw X3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiArCj4gKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWlu YW5jZSA9Cj4gKyAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVt aW5hbmNlX2Rlbn07Cj4gKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKwo+ICsgICAgaWYgKHMtPnRhcmdl dGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Cj4gKyAgICAg ICAgaW50IHJvd3MsIGNvbHM7Cj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTAp Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgIHJv d3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gKyAgICAgICAgY29scyA9IGdldF9iaXRzKGdiLCA1KTsK PiArICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIp IHx8IChjb2xzID4gMjUpKSkgewo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVt X2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPiArICAgICAgICBzLT5udW1f Y29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSBjb2xz Owo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0 KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4gKyAgICAgICAgICAgIGZvciAo aW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4gKyAgICAgICAgICAgICAgICBzLT50YXJnZXRl ZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPQo+ICsgICAgICAg ICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNl X2Rlbn07Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBmb3Ig KGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICBBVkhEUlBs dXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkKPiArICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgMzsgaSsrKSB7Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+bWF4c2NsW2ldID0KPiAr ICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsK PiArICAgICAgICB9Cj4gKyAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21heHJnYiA9Cj4gKyAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKPiArICAgICAg ICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMo Z2IsIDQpOwo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPAo+ICsgICAgICAg ICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyAqIDI0KSkK PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJj ZW50aWxlczsgaSsrKSB7Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJn YltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMoZ2IsIDcpOwo+ICsgICAgICAgICAgICBwYXJhbXMt PmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGlsZSA9Cj4gKyAgICAgICAgICAgICAgICAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gKyAgICAgICAgfQo+ICsK PiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiArICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAgIHBhcmFtcy0+ZnJhY3Rpb25f YnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBmcmFjdGlvbl9w aXhlbF9kZW59Owo+ICsgICAgfQo+ICsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiAr ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgIHMtPm1hc3RlcmluZ19k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiArICAg IGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+ ICsgICAgICAgIGludCByb3dzLCBjb2xzOwo+ICsgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEwKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAg ICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+ICsgICAgICAgIGNvbHMgPSBnZXRfYml0cyhn YiwgNSk7Cj4gKyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNv bHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHMtPm51bV9yb3dzX21hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7Cj4gKyAgICAgICAgcy0+bnVt X2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKPiAr Cj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCj4g KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+ICsgICAgICAgICAgICBmb3IgKGludCBq ID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAgICAgICAgICAgICAgcy0+bWFzdGVyaW5nX2Rp c3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPiArICAgICAgICAgICAgICAgICAg ICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5jZV9kZW59Owo+ICsg ICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoaW50IHcg PSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsgICAgICAgIEFWSERSUGx1c0NvbG9y VHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+ICsgICAgICAgIGlmIChn ZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ICsKPiArICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19mbGFnID0gZ2V0X2Jp dHMxKGdiKTsKPiArICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdfZmxhZykgewo+ICsg ICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiArICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICAgICAgcGFyYW1zLT5r bmVlX3BvaW50X3ggPQo+ICsgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiArICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50 X3kgPQo+ICsgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtu ZWVfcG9pbnRfZGVufTsKPiArICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2Fu Y2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gKwo+ICsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgKiAxMCkpCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICAgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnM7 IGkrKykgewo+ICsgICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tp XSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCks IGJlemllcl9hbmNob3JfZGVufTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiArICAgICAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9u X21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKyAgICAgICAgaWYgKHBhcmFtcy0+Y29s b3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKPiArICAgICAgICAgICAgaWYgKGdldF9iaXRz X2xlZnQoZ2IpIDwgNikKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICsgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fd2VpZ2h0ID0KPiAr ICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNiksIHNhdHVyYXRpb25f d2VpZ2h0X2Rlbn07Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIGIvbGli YXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPiBpbmRleCAyZDcyZGU1NmFlLi4xZjk1M2Vm MWY1IDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCj4gKysr IGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPiBAQCAtMzQwLDQgKzM0MCwxNSBA QCBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6 ZSk7Cj4gICAqLwo+ICBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVzX2NyZWF0 ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpOwo+ICAKPiArLyoqCj4gKyAqIFBhcnNlIHRoZSB1 c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjM1IHRvIEFWYnVmZmVyIChBVkR5bmFtaWNIRFJQ bHVzKS4KPiArICogQHBhcmFtIHMgQSBwb2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZE eW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCj4gKyAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5 IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEuCj4gKyAqIEBwYXJhbSBzaXplIFNp emUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0ZXMuCj4gKyAqCj4gKyAqIEByZXR1cm4gMCBpZiBz dWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCj4gKyAq Lwo+ICtpbnQgYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShBVkR5bmFtaWNIRFJQbHVzICpz LCBjb25zdCB1aW50OF90ICpkYXRhLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgc2l6ZSk7Cj4gKwo+ICAjZW5kaWYgLyogQVZVVElMX0hEUl9EWU5BTUlDX01FVEFEQVRB X0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21ldGFkYXRh LmMgYi9saWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuYwo+IGluZGV4IDMyZGEw MWY1ODcuLjEyMTg2NDQxMjMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX3Zp dmlkX21ldGFkYXRhLmMKPiArKysgYi9saWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRh dGEuYwo+IEBAIC0yMCw2ICsyMCwxNyBAQAo+ICAKPiAgI2luY2x1ZGUgImhkcl9keW5hbWljX3Zp dmlkX21ldGFkYXRhLmgiCj4gICNpbmNsdWRlICJtZW0uaCIKPiArI2luY2x1ZGUgImxpYmF2Y29k ZWMvZ2V0X2JpdHMuaCIKPiArCj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IG1heHJnYl9kZW4gPSA0 MDk1Owo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBjb2xvcl9zYXR1cmF0aW9uX2dhaW5fZGVuID0g MTI4Owo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBtYXhpbXVtX2x1bWluYW5jZV9kZW4gPSA0MDk1 Owo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBiYXNlX3BhcmFtX21fcF9kZW4gPSAxNjM4MzsKPiAr c3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJhbV9tX21fZGVuID0gMTA7Cj4gK3N0YXRpYyBj b25zdCBpbnQzMl90IGJhc2VfcGFyYW1fbV9hX2RlbiA9IDEwMjM7Cj4gK3N0YXRpYyBjb25zdCBp bnQzMl90IGJhc2VfcGFyYW1fbV9iX2RlbiA9IDEwMjM7Cj4gK3N0YXRpYyBjb25zdCBpbnQzMl90 IGJhc2VfcGFyYW1fbV9uX2RlbiA9IDEwOwo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBiYXNlX3Bh cmFtX0RlbHRhX2RlbiA9IDEyNzsKPiAgCj4gIEFWRHluYW1pY0hEUlZpdmlkICphdl9keW5hbWlj X2hkcl92aXZpZF9hbGxvYyhzaXplX3QgKnNpemUpCj4gIHsKPiBAQCAtNDUsMyArNTYsMTEyIEBA IEFWRHluYW1pY0hEUlZpdmlkICphdl9keW5hbWljX2hkcl92aXZpZF9jcmVhdGVfc2lkZV9kYXRh KEFWRnJhbWUgKmZyYW1lKQo+ICAKPiAgICAgIHJldHVybiAoQVZEeW5hbWljSERSVml2aWQgKilz aWRlX2RhdGEtPmRhdGE7Cj4gIH0KPiArCj4gK2ludCBhdl9keW5hbWljX2hkcl92aXZpZF9mcm9t X3QzNShBVkR5bmFtaWNIRFJWaXZpZCAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQo+ICt7Cj4gKyAgICBHZXRCaXRD b250ZXh0IGdiYywgKmdiID0gJmdiYzsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgaWYgKCFz KQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsgICAgcmV0ID0gaW5p dF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwo+ICsgICAgaWYgKHJldCA8IDApCj4gKyAgICAg ICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA4KQo+ICsg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgIHMtPnN5c3RlbV9z dGFydF9jb2RlID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgaWYgKHMtPnN5c3RlbV9zdGFydF9j b2RlID09IDB4MDEpIHsKPiArICAgICAgICBzLT5udW1fd2luZG93cyA9IDE7Cj4gKwo+ICsgICAg ICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEyICogNCAqIHMtPm51bV93aW5kb3dzKQo+ICsg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICBmb3IgKGlu dCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICAgICAgQVZIRFJW aXZpZENvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+ICsKPiAr ICAgICAgICAgICAgcGFyYW1zLT5taW5pbXVtX21heHJnYiAgPSAoQVZSYXRpb25hbCl7Z2V0X2Jp dHMoZ2IsIDEyKSwgbWF4cmdiX2Rlbn07Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+YXZlcmFnZV9t YXhyZ2IgID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1heHJnYl9kZW59Owo+ICsg ICAgICAgICAgICBwYXJhbXMtPnZhcmlhbmNlX21heHJnYiA9IChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTIpLCBtYXhyZ2JfZGVufTsKPiArICAgICAgICAgICAgcGFyYW1zLT5tYXhpbXVtX21h eHJnYiAgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgbWF4cmdiX2Rlbn07Cj4gKyAg ICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyICogcy0+bnVt X3dpbmRvd3MpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsg ICAgICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsgICAg ICAgICAgICBBVkhEUlZpdmlkQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJh bXNbd107Cj4gKwo+ICsgICAgICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19tb2RlX2ZsYWcg PSBnZXRfYml0cyhnYiwgMSk7Cj4gKyAgICAgICAgICAgIGlmIChwYXJhbXMtPnRvbmVfbWFwcGlu Z19tb2RlX2ZsYWcpIHsKPiArICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IDEgKQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ ICsgICAgICAgICAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfcGFyYW1fbnVtID0gZ2V0X2Jp dHMoZ2IsIDEpICsgMTsKPiArICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFy YW1zLT50b25lX21hcHBpbmdfcGFyYW1fbnVtOyBpKyspIHsKPiArICAgICAgICAgICAgICAgICAg ICBBVkhEUlZpdmlkQ29sb3JUb25lTWFwcGluZ1BhcmFtcyAqdG1fcGFyYW1zID0gJnBhcmFtcy0+ dG1fcGFyYW1zW2ldOwo+ICsKPiArICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAxMykKPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gKyAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50YXJnZXRlZF9zeXN0 ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg MTIpLCBtYXhpbXVtX2x1bWluYW5jZV9kZW59Owo+ICsgICAgICAgICAgICAgICAgICAgIHRtX3Bh cmFtcy0+YmFzZV9lbmFibGVfZmxhZyA9IGdldF9iaXRzKGdiLCAxKTsKPiArICAgICAgICAgICAg ICAgICAgICBpZiAodG1fcGFyYW1zLT5iYXNlX2VuYWJsZV9mbGFnKSB7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgxNCArIDYgKyAxMCArIDEwICsg NiArIDggKyAxMCkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNl X3BhcmFtX21fcCA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTQpLCBiYXNlX3BhcmFtX21f cF9kZW59Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1f bV9tID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAgNiksIGJhc2VfcGFyYW1fbV9tX2Rlbn07 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9tX2EgPSAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgYmFzZV9wYXJhbV9tX2FfZGVufTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX21fYiA9IChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgMTApLCBiYXNlX3BhcmFtX21fYl9kZW59Owo+ICsgICAgICAgICAg ICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fbV9uID0gKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAgNiksIGJhc2VfcGFyYW1fbV9uX2Rlbn07Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9rMSA9IGdldF9iaXRzKGdiLCAyKTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX2syID0gZ2V0X2JpdHMo Z2IsIDIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1f azMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFt cy0+YmFzZV9wYXJhbV9EZWx0YV9lbmFibGVfbW9kZSA9IGdldF9iaXRzKGdiLCAzKTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YV9lbmFi bGVfbW9kZSA9PSAyIHx8IHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YV9lbmFibGVfbW9kZSA9 PSA2KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFt X0RlbHRhID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA3KSAqIC0xLCBiYXNlX3BhcmFtX0Rl bHRhX2Rlbn07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YSA9IChBVlJhdGlvbmFs KXtnZXRfYml0cyhnYiwgNyksIGJhc2VfcGFyYW1fRGVsdGFfZGVufTsKPiArCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAg ICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfZW5hYmxlX2ZsYWcgPSBnZXRf Yml0cyhnYiwgMSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bV9wYXJhbXMtPnRo cmVlX1NwbGluZV9lbmFibGVfZmxhZykgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSArIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX251bSAq ICgyICsgMTIgKyAyOCArIDEpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfbnVtID0gZ2V0X2JpdHMoZ2IsIDEpICsgMTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdG1fcGFyYW1zLT50 aHJlZV9TcGxpbmVfbnVtOyBqKyspIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9tb2RlID0gZ2V0X2JpdHMoZ2IsIDIpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bV9wYXJhbXMtPnRocmVlX1NwbGlu ZV9USF9tb2RlID09IDAgfHwgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfbW9kZSA9PSAyKSB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0 KGdiKSA8IDgpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfZW5hYmxlX01CID0gKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCA4KSwgIDI1NX07Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVf U3BsaW5lX1RIX2VuYWJsZSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCAgNDA5NX07 Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxp bmVfVEhfRGVsdGExID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksICAxMDIzfTsKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9U SF9EZWx0YTIgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgIDEwMjN9Owo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX2VuYWJs ZV9TdHJlbmd0aCA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgIDgpLCAgMjU1fTsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVfU3Bs aW5lX251bSAgICAgPSAxOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1z LT50aHJlZV9TcGxpbmVfVEhfbW9kZSA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0K PiArCj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAg ICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbWFw cGluZ19mbGFnID0gZ2V0X2JpdHMoZ2IsIDEpOwo+ICsgICAgICAgICAgICBpZiAocGFyYW1zLT5j b2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZykgewo+ICsgICAgICAgICAgICAgICAgaWYgKGdl dF9iaXRzX2xlZnQoZ2IpIDwgMyArIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9udW0gKiA4KQo+ ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiAr ICAgICAgICAgICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9udW0gPSBnZXRfYml0cyhn YiwgMyk7Cj4gKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+Y29s b3Jfc2F0dXJhdGlvbl9udW07IGkrKykgewo+ICsgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+ Y29sb3Jfc2F0dXJhdGlvbl9nYWluW2ldID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA4KSwg Y29sb3Jfc2F0dXJhdGlvbl9nYWluX2Rlbn07Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30K PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21ldGFkYXRhLmggYi9s aWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuaAo+IGluZGV4IGEzNGY4MzA3MmMu LjE2YTg0Y2UzNDMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21l dGFkYXRhLmgKPiArKysgYi9saWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuaAo+ IEBAIC0yODIsNCArMjgyLDE1IEBAIEFWRHluYW1pY0hEUlZpdmlkICphdl9keW5hbWljX2hkcl92 aXZpZF9hbGxvYyhzaXplX3QgKnNpemUpOwo+ICAgKi8KPiAgQVZEeW5hbWljSERSVml2aWQgKmF2 X2R5bmFtaWNfaGRyX3ZpdmlkX2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpOwo+ICAK PiArLyoqCj4gKyAqIFBhcnNlIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjM1IHRv IEFWYnVmZmVyIChBVkR5bmFtaWNIRFJWaXZpZCkuCj4gKyAqIEBwYXJhbSBzIEEgcG9pbnRlciBj b250YWluaW5nIHRoZSBkZWNvZGVkIEFWRHluYW1pY0hEUlZpdmlkIHN0cnVjdHVyZS4KPiArICog QHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1UIFQuMzUg ZGF0YS4KPiArICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgZGF0YSBhcnJheSBpbiBieXRlcy4K PiArICoKPiArICogQHJldHVybiAwIGlmIHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUg YXBwcm9wcmlhdGUgQVZFUlJPUi4KPiArICovCj4gK2ludCBhdl9keW5hbWljX2hkcl92aXZpZF9m cm9tX3QzNShBVkR5bmFtaWNIRFJWaXZpZCAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKCldobyBoYXMgYW4gaW50 ZXJlc3QgaW4gdGhpcyBmdW5jdGlvbiBiZWluZyBwdWJsaWM/CgotIEFuZHJlYXMKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K