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 33066480AD for ; Sun, 10 Dec 2023 15:58:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 92FD368D103; Sun, 10 Dec 2023 17:58:41 +0200 (EET) Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01olkn2067.outbound.protection.outlook.com [40.92.52.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 220A768CF95 for ; Sun, 10 Dec 2023 17:58:34 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LP16c8f7N0PLsv7qzS8yOQC5L89O9K5ex/Dehb+xDgu2Y3lTuymoOqw1urKEOEPVo6TVzwbG9oICceINht1A7AKYlo/GaH7X5/tN1mbhaav+bmYr4ZbFPKSyZ3hnCZ2BRKXFOyQpM4VKkKNt6cp2azGgNwGJYdb/kckJTkaBqsHbvKvBpudhzf6JgxSS/BK77qi/6POGHje/yqhatyfEFhEmVUpoG8jKRNzneK7OWlvU9eruLXlPhn32bxfKyxqR4L2xmvIHHgUjtz4dz7FRVG0AEA71DjqmWZVa3tWmt/Nc7re0tBSEq073qbEj6b9Uko6+uomIXSWV4v7lYKCL6Q== 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=leD2ZtB6RJy3oezM+4LHN53WgavpZKsdSOqBfyreYlY=; b=c4l9GpOiCDoJVrcdgt0RI0x/QWESK1u/1ffSZB7fJKkSPTgO7588KPOiuRIoH72r/Dq4RARymrvTNWzc4OzVJOXwhb9H7LkzdSe7GeZzKkFd4qsjnpN5IphSJO3DKQzsW9RBZC6V02iI80doP5vtqb9tGicIOjifh0Ukf9M9eIPmcSBzSL4v8VTrP4Y8l/g2fBSmx9BE+rEbBvK+V85XPWI/Evy6grRD9wegku0sumUtzfNkSBYW5nYlDPEN6WU+znk3tph6sQNxhE//LvY2gATw9t+DnO33S3d/dzm5Mx4MP5t7g2ekCUJRaelTpRQVS6cwX2ZogKUuXf0FnLb36w== 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=leD2ZtB6RJy3oezM+4LHN53WgavpZKsdSOqBfyreYlY=; b=EdzNbFgAS0Ym9vhDVZwM+tpCtSdDOZqInv9h61Xnch8vaZn1FUK207zzjaLrNRqO35wUYRZ0xcYvsP6e+StREUA99D8ah+emjODDlMVeveN4DUyhOjNbKbf/VzSigNsVUpposCcwdnKU/XYX4UIVyePdzcEOV8sNSVoFYBgkjyBULbafCuzofZ6wNMhcvHKioBaEMcCsF+QwRQqERqejlyjULlktfAndHBm7F3/SbjyoBmaKrT9RUoIokuCiB8jS4V4NK5dTo6J1cugqg0TypOX0NdNegIeOksNioOZlp363XrLv7zMPmIqhhjwuax4rZxBk9fNa/IQVhZBhq9GaJg== Received: from TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) by SI6PR06MB7272.apcprd06.prod.outlook.com (2603:1096:4:246::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Sun, 10 Dec 2023 15:58:19 +0000 Received: from TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f]) by TYSPR06MB6433.apcprd06.prod.outlook.com ([fe80::80b3:be24:949c:e49f%4]) with mapi id 15.20.7068.030; Sun, 10 Dec 2023 15:58:19 +0000 From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 10 Dec 2023 23:57:57 +0800 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231210155807.4583-1-nuomi2021@gmail.com> References: <20231210155807.4583-1-nuomi2021@gmail.com> X-TMN: [4hrsWowdTF0lcQgNnkTfXuvYapmG8ZRd] X-ClientProxiedBy: SI2PR02CA0051.apcprd02.prod.outlook.com (2603:1096:4:196::10) To TYSPR06MB6433.apcprd06.prod.outlook.com (2603:1096:400:47a::6) X-Microsoft-Original-Message-ID: <20231210155807.4583-4-nuomi2021@gmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 2 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYSPR06MB6433:EE_|SI6PR06MB7272:EE_ X-MS-Office365-Filtering-Correlation-Id: 9bc7d63c-f741-4370-5f09-08dbf998d415 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vsHdPc5aUu3AvQK9uqG1o1/dxKaaMn6VfhIGHb1jkspF9G/6FFn23YFQQF8XbXsZw0B4PSjYTHNH/TZnELfFht2aZOyN+U+rgKvUvuMNbdrg1ooMyZ5/5wuUSXpG0RGG/zNWO01CGDokd+BRbBhVoKyxiGUMQdLVCpOIKLP0DiU3OowonA/muvZbZxNb0DyL+8CzejviR8UsMsNJXZoARWpdmR4po9ALCWS3OLtFNplxMH16A5znTIIq0jgU6wD6Y5DDcBAX5yKPDn2R7TcG7SA09uTHJzQtcLXH/OyBak7tt6BpdrC/3rtneAjNBRL18/r6OF2ZzmVZpvlpxgfkLw+5kKnJQzTY6ppixIhKeKMvSQjlf52La4u0bZghPRUR00I7ODt8M9EN7+PeWXn+/yE1NtWb6eqNK7UroKYtOdlcsDAJhFoIODJED5ouzjXEuBshx1Xw1zFk0eq2+2TiZ7IJ5fACfviTBIPfsfrjBFfQnUEVsZrd5A5mq3qE79vPVWe8/LIyHs15bZXveg66iQpyZaUq6jcpq7nkSZ+aHuLaVkB4lun31ZlRuHYwolf3E/qh1RjuHH+n//fiNnXfVhwjq+XMdP9gO69hbIIRq/Meyl7Z59uHXqm39ymjhcgO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bU0xN3FINmlXWjExUlVVQjZJM2h5dC9RdjNEWXFkTjFEbnZWaWF0MlZ4WlQ3?= =?utf-8?B?M0VselNaVUNUL3ZqbWQyYWNmSE1NckJuTHBWOU5rWTF1Wkp6eW5MMU5uU09L?= =?utf-8?B?QTB1aFNaL2Yzak5kRnBzZmZsU1FFTEVNUTdDV0FvODBKYy9sbHpDQVNwVWtX?= =?utf-8?B?eTVxZW9YNy8vZ25NTWlSa05QT3VHNGd3Z09EcWNYRkUzcnljNE1YKzNTTGxM?= =?utf-8?B?NU1DUk93RzI3OHhTVEczN2xtaWNjMFFQenowblpCMDBGNmJvV2k0L1c0MWZu?= =?utf-8?B?bVZZbmEyVEV2YW1OZ2ZaU1hYNER3YThrSkZiWGhkVWRuSG5xcnBKd0JjM21J?= =?utf-8?B?QlI4RFhya1V2aXFLWVF0VjBDY2Z0UVdaTnlUWDdmMWUyaFZmaFZMK28wejhk?= =?utf-8?B?ZVVaUlp5ZG0rY2VrTkJzMENPMzZSc1B2a2tXUmdPS3RSUzcycUtHMzNteGx2?= =?utf-8?B?TTJneDJzUmJEYnYvWFpDcEw2MkE0NlVVenBmZnJvZzdjT2xtd2daS0UxSVVD?= =?utf-8?B?Y3lVeEduUzlmbWdjL2RaQUpPN1VtWHB2OTFQa2djY1M5Y0RDcXpza0xBRnQx?= =?utf-8?B?L1AvUS9uYThpOW90aEJUZWJWdUxKN3NrOExyZjJ0VHhiZFhRSm1NWWdBK1d2?= =?utf-8?B?OGt2SDNkdXZOTWVxWmJ2MzhyTGNxK1QybUFxSkdVY3hIUTVWQzJTVmd5MlB3?= =?utf-8?B?aHVUbFRkcmZCNGo1UWhORHFKdXhlazNIc3lRb3NnT0x2eTI5eDRDNTV2UGlP?= =?utf-8?B?STVwV1QyaGlWeGhTZ1FsTTBNMUhYUTFhWHlaR3lyS2REUWNtc3ZVRVM0OWY1?= =?utf-8?B?emYzdXJjeGRMWEpsWVcxZkVSZ21yNTVqYUowbFRTaWU0SGFyeFZ5RzJOOU1P?= =?utf-8?B?NGhIeGM1c0xZN0NZdGcyU05hdHZodklGNWEvbTEvUXo2YVVib1RqMW80dnRo?= =?utf-8?B?dkR5RkR1WTRqVnozMmRPYThWbGNZdmp6d1JxYkRCOHQrREE1b213WENudVJh?= =?utf-8?B?ZUs4VlI3ZGtobTluNDNTQkhmMmxrL3o2Rjltdmh0VjlpSG5tY3U0T2U1bS81?= =?utf-8?B?V05lUG5RSW5vbHlJcHExWis1TnljVDJNRnBXQUJhZUk1cEVia2F5VXZRSEhH?= =?utf-8?B?SVIwU3hnNnB0RHdSb2xoTXk1L3c4THhpb1pGcC9Kc0Y0a0wxR2xYNzNkWFR2?= =?utf-8?B?L1FURng0VkVtTld2MzFEeGNBYTVTbVFtK3pEMm51Yis4WE9uSk0vcTk0MDFK?= =?utf-8?B?a216YkZMaCtCaUdVT1lnOWhJMEZCS2x3a3A2ektWc2FVOE0vYnlxV1N2eldt?= =?utf-8?B?OVlaQXljTXYrSGcvU1FtYUg2Wm5ZMjVweDFWVWJ0SHA1VERYdWNJNE1iZUNz?= =?utf-8?B?VHpuOTVDYmZXaUEwODlXcWVNbjBMY0NPaS95T00wTFNBR3NQdkVwMlNWK1JO?= =?utf-8?B?WHBXNXBqdm9oQ1NMdHFQaDZManFJbWhHa1I5NXhJbnFEVkV3MmRUaElEUHRE?= =?utf-8?B?R3djbmZVU1U0VlNxQlhCRFRyWHR3U2ZVbU5IT0YyMzFlMjJJU0didTdESlND?= =?utf-8?B?bFY2ZkZIemlpYzQyTm90Q2hrYWFmYzEzMzVrNXdyYlhqODduMnNZNGpIVmpn?= =?utf-8?B?a1lCL09WcXJvWXNMODBjOXd3aEpJSjR5dkhvcW81L21ZeitRakRiczNKYmFP?= =?utf-8?Q?0NL0dl4zJvdlyT+dttiH?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9bc7d63c-f741-4370-5f09-08dbf998d415 X-MS-Exchange-CrossTenant-AuthSource: TYSPR06MB6433.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2023 15:58:19.4312 (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: SI6PR06MB7272 Subject: [FFmpeg-devel] [PATCH v7 04/14] vvcdec: add cabac decoder 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 Cc: Nuo Mi 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: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgMiArCiBsaWJh dmNvZGVjL3Z2Yy92dmNfY2FiYWMuYyB8IDI0NzYgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaCB8ICAxMjYgKysKIGxpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuYyAgIHwgICAzMiArCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmggICB8 ICA0NjMgKysrKysrKwogbGliYXZjb2RlYy92dmMvdnZjZGVjLmggICAgfCAgICA3ICsKIDYgZmls ZXMgY2hhbmdlZCwgMzEwNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZj b2RlYy92dmMvdnZjX2NhYmFjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92 dmNfY2FiYWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaAoKZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlIGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKaW5kZXgg YjJiMTg3YWM2Zi4uNmMwM2JhMTlhYyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy92dmMvTWFrZWZp bGUKKysrIGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKQEAgLTIsNSArMiw3IEBAIGNsZWFuOjoK IAkkKFJNKSAkKENMRUFOU1VGRklYRVM6JT1saWJhdmNvZGVjL3Z2Yy8lKQogCiBPQkpTLSQoQ09O RklHX1ZWQ19ERUNPREVSKSAgICAgICAgICArPSAgdnZjL3Z2Y2RlYy5vICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfY2FiYWMubyAg ICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZj X2N0dS5vICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdnZjL3Z2Y19kYXRhLm8gICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZ2Yy92dmNfcHMubyAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvdnZjL3Z2Y19jYWJhYy5jIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTE0NWMxMGRjOAotLS0gL2Rldi9udWxs CisrKyBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCkBAIC0wLDAgKzEsMjQ3NiBAQAorLyoK KyAqIFZWQyBDQUJBQyBkZWNvZGVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDIxIE51byBNaQor ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworI2luY2x1ZGUgImxpYmF2Y29k ZWMvY2FiYWNfZnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJ2dmNfY2FiYWMuaCIKKyNpbmNsdWRl ICJ2dmNfY3R1LmgiCisjaW5jbHVkZSAidnZjX2RhdGEuaCIKKworI2RlZmluZSBDQUJBQ19NQVhf QklOIDMxCisKKyNkZWZpbmUgQ05VIDM1CisKK2VudW0gU3ludGF4RWxlbWVudCB7CisgICAgQUxG X0NUQl9GTEFHICAgICAgICAgICAgICAgICAgICA9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMCwKKyAgICBBTEZfVVNFX0FQU19GTEFHICAgICAgICAgICAgICAgID0gQUxGX0NUQl9G TEFHICAgICAgICAgICAgICAgICAgKyA5LAorICAgIEFMRl9DVEJfQ0NfQ0JfSURDLAorICAgIEFM Rl9DVEJfQ0NfQ1JfSURDICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0NDX0NCX0lEQyAgICAgICAg ICAgICArIDMsCisgICAgQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgICA9IEFMRl9DVEJf Q0NfQ1JfSURDICAgICAgICAgICAgICsgMywKKyAgICBTQU9fTUVSR0VfRkxBRyAgICAgICAgICAg ICAgICAgID0gQUxGX0NUQl9GSUxURVJfQUxUX0lEWCAgICAgICAgKyAyLAorICAgIFNBT19UWVBF X0lEWCwKKyAgICBTUExJVF9DVV9GTEFHLAorICAgIFNQTElUX1FUX0ZMQUcgICAgICAgICAgICAg ICAgICAgPSBTUExJVF9DVV9GTEFHICAgICAgICAgICAgICAgICArIDksCisgICAgTVRUX1NQTElU X0NVX1ZFUlRJQ0FMX0ZMQUcgICAgICA9IFNQTElUX1FUX0ZMQUcgICAgICAgICAgICAgICAgICsg NiwKKyAgICBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICAgID0gTVRUX1NQTElUX0NVX1ZF UlRJQ0FMX0ZMQUcgICAgKyA1LAorICAgIE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAgICAg PSBNVFRfU1BMSVRfQ1VfQklOQVJZX0ZMQUcgICAgICArIDQsCisgICAgQ1VfU0tJUF9GTEFHICAg ICAgICAgICAgICAgICAgICA9IE5PTl9JTlRFUl9GTEFHICAgICAgICAgICAgICAgICsgMiwKKyAg ICBQUkVEX01PREVfSUJDX0ZMQUcgICAgICAgICAgICAgID0gQ1VfU0tJUF9GTEFHICAgICAgICAg ICAgICAgICAgKyAzLAorICAgIFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICAgPSBQUkVE X01PREVfSUJDX0ZMQUcgICAgICAgICAgICArIDMsCisgICAgUFJFRF9NT0RFX1BMVF9GTEFHICAg ICAgICAgICAgICA9IFBSRURfTU9ERV9GTEFHICAgICAgICAgICAgICAgICsgMiwKKyAgICBDVV9B Q1RfRU5BQkxFRF9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRkxBRywKKyAgICBJTlRSQV9C RFBDTV9MVU1BX0RJUl9GTEFHLAorICAgIElOVFJBX01JUF9GTEFHLAorICAgIElOVFJBX0xVTUFf UkVGX0lEWCAgICAgICAgICAgICAgPSBJTlRSQV9NSVBfRkxBRyAgICAgICAgICAgICAgICArIDQs CisgICAgSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcgICA9IElOVFJBX0xVTUFfUkVGX0lE WCAgICAgICAgICAgICsgMiwKKyAgICBJTlRSQV9TVUJQQVJUSVRJT05TX1NQTElUX0ZMQUcsCisg ICAgSU5UUkFfTFVNQV9NUE1fRkxBRywKKyAgICBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRywK KyAgICBJTlRSQV9CRFBDTV9DSFJPTUFfRkxBRyAgICAgICAgID0gSU5UUkFfTFVNQV9OT1RfUExB TkFSX0ZMQUcgICAgKyAyLAorICAgIElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxBRywKKyAgICBD Q0xNX01PREVfRkxBRywKKyAgICBDQ0xNX01PREVfSURYLAorICAgIElOVFJBX0NIUk9NQV9QUkVE X01PREUsCisgICAgR0VORVJBTF9NRVJHRV9GTEFHLAorICAgIElOVEVSX1BSRURfSURDLAorICAg IElOVEVSX0FGRklORV9GTEFHICAgICAgICAgICAgICAgPSBJTlRFUl9QUkVEX0lEQyAgICAgICAg ICAgICAgICArIDYsCisgICAgQ1VfQUZGSU5FX1RZUEVfRkxBRyAgICAgICAgICAgICA9IElOVEVS X0FGRklORV9GTEFHICAgICAgICAgICAgICsgMywKKyAgICBTWU1fTVZEX0ZMQUcsCisgICAgUkVG X0lEWF9MWCwKKyAgICBNVlBfTFhfRkxBRyAgICAgICAgICAgICAgICAgICAgID0gUkVGX0lEWF9M WCAgICAgICAgICAgICAgICAgICAgKyAyLAorICAgIEFNVlJfRkxBRywKKyAgICBBTVZSX1BSRUNJ U0lPTl9JRFggICAgICAgICAgICAgID0gQU1WUl9GTEFHICAgICAgICAgICAgICAgICAgICAgKyAy LAorICAgIEJDV19JRFggICAgICAgICAgICAgICAgICAgICAgICAgPSBBTVZSX1BSRUNJU0lPTl9J RFggICAgICAgICAgICArIDMsCisgICAgQ1VfQ09ERURfRkxBRywKKyAgICBDVV9TQlRfRkxBRywK KyAgICBDVV9TQlRfUVVBRF9GTEFHICAgICAgICAgICAgICAgID0gQ1VfU0JUX0ZMQUcgICAgICAg ICAgICAgICAgICAgKyAyLAorICAgIENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcsCisgICAgQ1VfU0JU X1BPU19GTEFHICAgICAgICAgICAgICAgICA9IENVX1NCVF9IT1JJWk9OVEFMX0ZMQUcgICAgICAg ICsgMywKKyAgICBMRk5TVF9JRFgsCisgICAgTVRTX0lEWCAgICAgICAgICAgICAgICAgICAgICAg ICA9IExGTlNUX0lEWCAgICAgICAgICAgICAgICAgICAgICsgMywKKyAgICBDT1BZX0FCT1ZFX1BB TEVUVEVfSU5ESUNFU19GTEFHID0gTVRTX0lEWCAgICAgICAgICAgICAgICAgICAgICAgKyA0LAor ICAgIFBBTEVUVEVfVFJBTlNQT1NFX0ZMQUcsCisgICAgUlVOX0NPUFlfRkxBRywKKyAgICBSRUdV TEFSX01FUkdFX0ZMQUcgICAgICAgICAgICAgID0gUlVOX0NPUFlfRkxBRyAgICAgICAgICAgICAg ICAgKyA4LAorICAgIE1NVkRfTUVSR0VfRkxBRyAgICAgICAgICAgICAgICAgPSBSRUdVTEFSX01F UkdFX0ZMQUcgICAgICAgICAgICArIDIsCisgICAgTU1WRF9DQU5EX0ZMQUcsCisgICAgTU1WRF9E SVNUQU5DRV9JRFgsCisgICAgQ0lJUF9GTEFHLAorICAgIE1FUkdFX1NVQkJMT0NLX0ZMQUcsCisg ICAgTUVSR0VfU1VCQkxPQ0tfSURYICAgICAgICAgICAgICA9IE1FUkdFX1NVQkJMT0NLX0ZMQUcg ICAgICAgICAgICsgMywKKyAgICBNRVJHRV9JRFgsCisgICAgQUJTX01WRF9HUkVBVEVSMF9GTEFH LAorICAgIEFCU19NVkRfR1JFQVRFUjFfRkxBRywKKyAgICBUVV9ZX0NPREVEX0ZMQUcsCisgICAg VFVfQ0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICA9IFRVX1lfQ09ERURfRkxBRyAgICAgICAg ICAgICAgICsgNCwKKyAgICBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICAgID0gVFVfQ0Jf Q09ERURfRkxBRyAgICAgICAgICAgICAgKyAyLAorICAgIENVX1FQX0RFTFRBX0FCUyAgICAgICAg ICAgICAgICAgPSBUVV9DUl9DT0RFRF9GTEFHICAgICAgICAgICAgICArIDMsCisgICAgQ1VfQ0hS T01BX1FQX09GRlNFVF9GTEFHICAgICAgICA9IENVX1FQX0RFTFRBX0FCUyAgICAgICAgICAgICAg ICsgMiwKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0lEWCwKKyAgICBUUkFOU0ZPUk1fU0tJUF9G TEFHLAorICAgIFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICAgPSBUUkFOU0ZPUk1fU0tJ UF9GTEFHICAgICAgICAgICArIDIsCisgICAgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAgICAg ICA9IFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyAgICsgMywKKyAgICBMQVNUX1NJR19DT0VG Rl9ZX1BSRUZJWCAgICAgICAgID0gTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVggICAgICAgKzIzLAor ICAgIFNCX0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICAgPSBMQVNUX1NJR19DT0VGRl9ZX1BS RUZJWCAgICAgICArMjMsCisgICAgU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgICA9IFNC X0NPREVEX0ZMQUcgICAgICAgICAgICAgICAgICsgNywKKyAgICBQQVJfTEVWRUxfRkxBRyAgICAg ICAgICAgICAgICAgID0gU0lHX0NPRUZGX0ZMQUcgICAgICAgICAgICAgICAgKzYzLAorICAgIEFC U19MRVZFTF9HVFhfRkxBRyAgICAgICAgICAgICAgPSBQQVJfTEVWRUxfRkxBRyAgICAgICAgICAg ICAgICArMzMsCisgICAgQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgICA9IEFCU19MRVZF TF9HVFhfRkxBRyAgICAgICAgICAgICs3MiwKKyAgICBTWU5UQVhfRUxFTUVOVF9MQVNUICAgICAg ICAgICAgID0gQ09FRkZfU0lHTl9GTEFHICAgICAgICAgICAgICAgKyA2LAorfTsKKworc3RhdGlj IGNvbnN0IHVpbnQ4X3QgaW5pdF92YWx1ZXNbNF1bU1lOVEFYX0VMRU1FTlRfTEFTVF0gPSB7Cisg ICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICA2MiwgIDM5LCAgMzksICA1NCwg IDM5LCAgMzksICAzMSwgIDM5LCAgMzksCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAg ICAgICA0NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAxOCwgIDMwLCAg MzEsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgsICAzMCwgIDMxLAor ICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMTEsICAxMSwKKyAgICAg ICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAgICA2 MCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQor ICAgICAgICAxMywKKyAgICAgICAgLy9zcGxpdF9jdV9mbGFnCisgICAgICAgIDE5LCAgMjgsICAz OCwgIDI3LCAgMjksICAzOCwgIDIwLCAgMzAsICAzMSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFn CisgICAgICAgIDI3LCAgIDYsICAxNSwgIDI1LCAgMTksICAzNywKKyAgICAgICAgLy9tdHRfc3Bs aXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0MywgIDQyLCAgMjksICAyNywgIDQ0LAorICAg ICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZworICAgICAgICAzNiwgIDQ1LCAgMzYsICA0 NSwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAg Ly9jdV9za2lwX2ZsYWcKKyAgICAgICAgMCwgIDI2LCAgMjgsCisgICAgICAgIC8vcHJlZF9tb2Rl X2liY19mbGFnCisgICAgICAgIDE3LCAgNDIsICAzNiwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxh ZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAgICAg ICAgMjUsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA1MiwKKyAgICAg ICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgMTksCisgICAgICAgIC8vaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxh ZworICAgICAgICAzMywgIDQ5LCAgNTAsICAyNSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9p ZHgKKyAgICAgICAgMjUsICA2MCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVf ZmxhZworICAgICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2Zs YWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICA0 NSwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAxMywgIDI4 LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAgICAg ICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAyNywKKyAgICAgICAgLy9j Y2xtX21vZGVfZmxhZworICAgICAgICA1OSwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAg ICAgIDI3LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgMzQsCisg ICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDI2LAorICAgICAgICAvL2ludGVy X3ByZWRfaWRjCisgICAgICAgIENOVSwgQ05VLCBDTlUsIENOVSwgQ05VLCBDTlUsCisgICAgICAg IC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9j dV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcK KyAgICAgICAgQ05VLAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAgICAg ICAgQ05VLCBDTlUsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAg ICAgIDQyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAg Ly9hbXZyX3ByZWNpc2lvbl9pZHgKKyAgICAgICAgMzUsICAzNCwgIDM1LAorICAgICAgICAvL2Jj d19pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgIDYs CisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAgIC8vY3Vf c2J0X3F1YWRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250YWxf ZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZwor ICAgICAgICBDTlUsCisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgIDI4LCAgNTIsICA0MiwK KyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDI5LCAgIDAsICAyOCwgICAwLAorICAgICAgICAv L2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8v cGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICA0MiwKKyAgICAgICAgLy9ydW5fY29weV9m bGFnCisgICAgICAgIDUwLCAgMzcsICA0NSwgIDMwLCAgNDYsICA0NSwgIDM4LCAgNDYsCisgICAg ICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL21t dmRfbWVyZ2VfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAg ICAgICAgQ05VLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgIENOVSwKKyAg ICAgICAgLy9jaWlwX2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX3N1YmJsb2Nr X2ZsYWcKKyAgICAgICAgQ05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19p ZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAsIGFu ZCBtZXJnZV9ncG1faWR4MQorICAgICAgICAzNCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIw X2ZsYWcKKyAgICAgICAgMTQsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisgICAg ICAgIDQ1LAorICAgICAgICAvL3R1X3lfY29kZWRfZmxhZworICAgICAgICAxNSwgIDEyLCAgIDUs ICAgNywKKyAgICAgICAgLy90dV9jYl9jb2RlZF9mbGFnCisgICAgICAgIDEyLCAgMjEsCisgICAg ICAgIC8vdHVfY3JfY29kZWRfZmxhZworICAgICAgICAzMywgIDI4LCAgMzYsCisgICAgICAgIC8v Y3VfcXBfZGVsdGFfYWJzCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9x cF9vZmZzZXRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNl dF9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICAg ICAgMjUsICAgOSwKKyAgICAgICAgLy90dV9qb2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAgICAg ICAgMTIsICAyMSwgIDM1LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4CisgICAg ICAgIDEzLCAgIDUsICAgNCwgIDIxLCAgMTQsICAgNCwgICA2LCAgMTQsICAyMSwgIDExLCAgMTQs ICAgNywgIDE0LCAgIDUsICAxMSwgIDIxLAorICAgICAgICAzMCwgIDIyLCAgMTMsICA0MiwgIDEy LCAgIDQsICAgMywKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAgICAx MywgICA1LCAgIDQsICAgNiwgIDEzLCAgMTEsICAxNCwgICA2LCAgIDUsICAgMywgIDE0LCAgMjIs ICAgNiwgICA0LCAgIDMsICAgNiwKKyAgICAgICAgMjIsICAyOSwgIDIwLCAgMzQsICAxMiwgICA0 LCAgIDMsCisgICAgICAgIC8vc2JfY29kZWRfZmxhZworICAgICAgICAxOCwgIDMxLCAgMjUsICAx NSwgIDE4LCAgMjAsICAzOCwKKyAgICAgICAgLy9zaWdfY29lZmZfZmxhZworICAgICAgICAyNSwg IDE5LCAgMjgsICAxNCwgIDI1LCAgMjAsICAyOSwgIDMwLCAgMTksICAzNywgIDMwLCAgMzgsICAx MSwgIDM4LCAgNDYsICA1NCwKKyAgICAgICAgMjcsICAzOSwgIDM5LCAgMzksICA0NCwgIDM5LCAg MzksICAzOSwgIDE4LCAgMzksICAzOSwgIDM5LCAgMjcsICAzOSwgIDM5LCAgMzksCisgICAgICAg ICAwLCAgMzksICAzOSwgIDM5LCAgMjUsICAyNywgIDI4LCAgMzcsICAzNCwgIDUzLCAgNTMsICA0 NiwgIDE5LCAgNDYsICAzOCwgIDM5LAorICAgICAgICA1MiwgIDM5LCAgMzksICAzOSwgIDExLCAg MzksICAzOSwgIDM5LCAgMTksICAzOSwgIDM5LCAgMzksICAyNSwgIDI4LCAgMzgsCisgICAgICAg IC8vcGFyX2xldmVsX2ZsYWcKKyAgICAgICAgMzMsICAyNSwgIDE4LCAgMjYsICAzNCwgIDI3LCAg MjUsICAyNiwgIDE5LCAgNDIsICAzNSwgIDMzLCAgMTksICAyNywgIDM1LCAgMzUsCisgICAgICAg IDM0LCAgNDIsICAyMCwgIDQzLCAgMjAsICAzMywgIDI1LCAgMjYsICA0MiwgIDE5LCAgMjcsICAy NiwgIDUwLCAgMzUsICAyMCwgIDQzLAorICAgICAgICAxMSwKKyAgICAgICAgLy9hYnNfbGV2ZWxf Z3R4X2ZsYWcKKyAgICAgICAgMjUsICAyNSwgIDExLCAgMjcsICAyMCwgIDIxLCAgMzMsICAxMiwg IDI4LCAgMjEsICAyMiwgIDM0LCAgMjgsICAyOSwgIDI5LCAgMzAsCisgICAgICAgIDM2LCAgMjks ICA0NSwgIDMwLCAgMjMsICA0MCwgIDMzLCAgMjcsICAyOCwgIDIxLCAgMzcsICAzNiwgIDM3LCAg NDUsICAzOCwgIDQ2LAorICAgICAgICAyNSwgICAxLCAgNDAsICAyNSwgIDMzLCAgMTEsICAxNywg IDI1LCAgMjUsICAxOCwgICA0LCAgMTcsICAzMywgIDI2LCAgMTksICAxMywKKyAgICAgICAgMzMs ICAxOSwgIDIwLCAgMjgsICAyMiwgIDQwLCAgIDksICAyNSwgIDE4LCAgMjYsICAzNSwgIDI1LCAg MjYsICAzNSwgIDI4LCAgMzcsCisgICAgICAgIDExLCAgIDUsICAgNSwgIDE0LCAgMTAsICAgMywg ICAzLCAgIDMsCisgICAgICAgIC8vY29lZmZfc2lnbl9mbGFnCisgICAgICAgIDEyLCAgMTcsICA0 NiwgIDI4LCAgMjUsICA0NiwKKyAgICB9LAorICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcK KyAgICAgICAgMTMsICAyMywgIDQ2LCAgIDQsICA2MSwgIDU0LCAgMTksICA0NiwgIDU0LAorICAg ICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0Yl9j Y19jYl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3Jf aWRjCisgICAgICAgIDE4LCAgMjEsICAzOCwKKyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRf aWR4CisgICAgICAgIDIwLCAgMTIsCisgICAgICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQg c2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAgNjAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1 bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgNSwKKyAgICAgICAgLy9zcGxpdF9j dV9mbGFnCisgICAgICAgIDExLCAgMzUsICA1MywgIDEyLCAgIDYsICAzMCwgIDEzLCAgMTUsICAz MSwKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDIwLCAgMTQsICAyMywgIDE4LCAg MTksICAgNiwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICA0 MywgIDM1LCAgMzcsICAzNCwgIDUyLAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxh ZworICAgICAgICA0MywgIDM3LCAgMjEsICAyMiwKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZwor ICAgICAgICAyNSwgIDEyLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICA1NywgIDU5 LCAgNDUsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAwLCAgNTcsICA0 NCwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAorICAgICAgICAv L3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAwLAorICAgICAgICAvL2N1X2FjdF9lbmFibGVk X2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAgIC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisgICAg ICAgIDQwLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAgMzYs CisgICAgICAgIC8vaW50cmFfbWlwX2ZsYWcKKyAgICAgICAgNDEsICA1NywgIDU4LCAgMjYsCisg ICAgICAgIC8vaW50cmFfbHVtYV9yZWZfaWR4CisgICAgICAgIDI1LCAgNTgsCisgICAgICAgIC8v aW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcKKyAgICAgICAgMzMsCisgICAgICAgIC8vaW50 cmFfc3VicGFydGl0aW9uc19zcGxpdF9mbGFnCisgICAgICAgIDM2LAorICAgICAgICAvL2ludHJh X2x1bWFfbXBtX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9ub3RfcGxh bmFyX2ZsYWcKKyAgICAgICAgMTIsICAyMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFf ZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcK KyAgICAgICAgMTMsCisgICAgICAgIC8vY2NsbV9tb2RlX2ZsYWcKKyAgICAgICAgMzQsCisgICAg ICAgIC8vY2NsbV9tb2RlX2lkeAorICAgICAgICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJvbWFf cHJlZF9tb2RlCisgICAgICAgIDI1LAorICAgICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZworICAg ICAgICAyMSwKKyAgICAgICAgLy9pbnRlcl9wcmVkX2lkYworICAgICAgICAgNywgICA2LCAgIDUs ICAxMiwgICA0LCAgNDAsCisgICAgICAgIC8vaW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgMTIs ICAxMywgIDE0LAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUsCisg ICAgICAgIC8vc3ltX212ZF9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhfbDAg YW5kIHJlZl9pZHhfbDEKKyAgICAgICAgMjAsICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxhZyBh bmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgMzQsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAgICAg IDU5LCAgNTgsCisgICAgICAgIC8vYW12cl9wcmVjaXNpb25faWR4CisgICAgICAgIDYwLCAgNDgs ICA2MCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICA0LAorICAgICAgICAvL2N1X2NvZGVk X2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNTYsICA1 NywKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2N1 X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgMjAsICA0MywgIDEyLAorICAgICAgICAvL2N1 X3NidF9wb3NfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAg MzcsICA0NSwgIDI3LAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgNDUsICA0MCwgIDI3LCAg IDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICA1 OSwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgIDQyLAorICAgICAg ICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTEsICAzMCwgIDMwLCAgMzgsICAyMywgIDM4LCAg NTMsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgMzgsICAgNywK KyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vbW12ZF9j YW5kX2ZsYWcKKyAgICAgICAgNDMsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAg ICAgNjAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgIDU3LAorICAgICAgICAvL21lcmdl X3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgNDgsICA1NywgIDQ0LAorICAgICAgICAvL21lcmdlX3N1 YmJsb2NrX2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9p ZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgMjAsCisgICAgICAgIC8vYWJzX212ZF9n cmVhdGVyMF9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxh ZworICAgICAgICA0MywKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMjMsICAg NSwgIDIwLCAgIDcsCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDI4 LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAyOSwgIDQ1LAorICAg ICAgICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9j aHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAgICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9x cF9vZmZzZXRfaWR4CisgICAgICAgIENOVSwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFn CisgICAgICAgIDI1LCAgIDksCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFn CisgICAgICAgIDI3LCAgMzYsICA0NSwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZp eAorICAgICAgICAgNiwgIDEzLCAgMTIsICAgNiwgICA2LCAgMTIsICAxNCwgIDE0LCAgMTMsICAx MiwgIDI5LCAgIDcsICAgNiwgIDEzLCAgMzYsICAyOCwKKyAgICAgICAgMTQsICAxMywgICA1LCAg MjYsICAxMiwgICA0LCAgMTgsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAg ICAgICAgIDUsICAgNSwgIDEyLCAgIDYsICAgNiwgICA0LCAgIDYsICAxNCwgICA1LCAgMTIsICAx NCwgICA3LCAgMTMsICAgNSwgIDEzLCAgMjEsCisgICAgICAgIDE0LCAgMjAsICAxMiwgIDM0LCAg MTEsICAgNCwgIDE4LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICAzMCwg IDI1LCAgNDUsICAxOCwgIDEyLCAgMjksCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAg ICAgMTcsICA0MSwgIDQyLCAgMjksICAyNSwgIDQ5LCAgNDMsICAzNywgIDMzLCAgNTgsICA1MSwg IDMwLCAgMTksICAzOCwgIDM4LCAgNDYsCisgICAgICAgIDM0LCAgNTQsICA1NCwgIDM5LCAgIDYs ICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgNTQsICAzOSwgIDE5LCAgMzksICAzOSwgIDM5LAor ICAgICAgICA1NiwgIDM5LCAgMzksICAzOSwgIDE3LCAgMzQsICAzNSwgIDIxLCAgNDEsICA1OSwg IDYwLCAgMzgsICAzNSwgIDQ1LCAgNTMsICA1NCwKKyAgICAgICAgNDQsICAzOSwgIDM5LCAgMzks ICAzNCwgIDM4LCAgNjIsICAzOSwgIDI2LCAgMzksICAzOSwgIDM5LCAgNDAsICAzNSwgIDQ0LAor ICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgIDE4LCAgMTcsICAzMywgIDE4LCAgMjYs ICA0MiwgIDI1LCAgMzMsICAyNiwgIDQyLCAgMjcsICAyNSwgIDM0LCAgNDIsICA0MiwgIDM1LAor ICAgICAgICAyNiwgIDI3LCAgNDIsICAyMCwgIDIwLCAgMjUsICAyNSwgIDI2LCAgMTEsICAxOSwg IDI3LCAgMzMsICA0MiwgIDM1LCAgMzUsICA0MywKKyAgICAgICAgIDMsCisgICAgICAgIC8vYWJz X2xldmVsX2d0eF9mbGFnCisgICAgICAgICAwLCAgMTcsICAyNiwgIDE5LCAgMzUsICAyMSwgIDI1 LCAgMzQsICAyMCwgIDI4LCAgMjksICAzMywgIDI3LCAgMjgsICAyOSwgIDIyLAorICAgICAgICAz NCwgIDI4LCAgNDQsICAzNywgIDM4LCAgIDAsICAyNSwgIDE5LCAgMjAsICAxMywgIDE0LCAgNTcs ICA0NCwgIDMwLCAgMzAsICAyMywKKyAgICAgICAgMTcsICAgMCwgICAxLCAgMTcsICAyNSwgIDE4 LCAgIDAsICAgOSwgIDI1LCAgMzMsICAzNCwgICA5LCAgMjUsICAxOCwgIDI2LCAgMjAsCisgICAg ICAgIDI1LCAgMTgsICAxOSwgIDI3LCAgMjksICAxNywgICA5LCAgMjUsICAxMCwgIDE4LCAgIDQs ICAxNywgIDMzLCAgMTksICAyMCwgIDI5LAorICAgICAgICAxOCwgIDExLCAgIDQsICAyOCwgICAy LCAgMTAsICAgMywgICAzLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAgNSwg IDEwLCAgNTMsICA0MywgIDI1LCAgNDYsCisgICAgfSwKKyAgICB7CisgICAgICAgIC8vYWxmX2N0 Yl9mbGFnCisgICAgICAgIDMzLCAgNTIsICA0NiwgIDI1LCAgNjEsICA1NCwgIDI1LCAgNjEsICA1 NCwKKyAgICAgICAgLy9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2Fs Zl9jdGJfY2NfY2JfaWRjCisgICAgICAgIDI1LCAgMzUsICAzOCwKKyAgICAgICAgLy9hbGZfY3Ri X2NjX2NyX2lkYworICAgICAgICAyNSwgIDI4LCAgMzgsCisgICAgICAgIC8vYWxmX2N0Yl9maWx0 ZXJfYWx0X2lkeAorICAgICAgICAxMSwgIDI2LAorICAgICAgICAvL3Nhb19tZXJnZV9sZWZ0X2Zs YWcgYW5kIHNhb19tZXJnZV91cF9mbGFnCisgICAgICAgIDIsCisgICAgICAgIC8vc2FvX3R5cGVf aWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEKKyAgICAgICAgMiwKKyAgICAgICAgLy9z cGxpdF9jdV9mbGFnCisgICAgICAgIDE4LCAgMjcsICAxNSwgIDE4LCAgMjgsICA0NSwgIDI2LCAg IDcsICAyMywKKyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgIDI2LCAgMzYsICAzOCwg IDE4LCAgMzQsICAyMSwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAg ICAgICA0MywgIDQyLCAgMzcsICA0MiwgIDQ0LAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5h cnlfZmxhZworICAgICAgICAyOCwgIDI5LCAgMjgsICAyOSwKKyAgICAgICAgLy9ub25faW50ZXJf ZmxhZworICAgICAgICAyNSwgIDIwLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICA1 NywgIDYwLCAgNDYsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAwLCAg NDMsICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICA0MCwgIDM1LAorICAg ICAgICAvL3ByZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAxNywKKyAgICAgICAgLy9jdV9hY3Rf ZW5hYmxlZF9mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxh ZworICAgICAgICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAg ICAgIDIxLAorICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDU2LCAgNTcsICA1MCwg IDI2LAorICAgICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwgIDU5LAorICAg ICAgICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMzLAorICAgICAg ICAvL2ludHJhX3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywKKyAgICAgICAg Ly9pbnRyYV9sdW1hX21wbV9mbGFnCisgICAgICAgIDQ0LAorICAgICAgICAvL2ludHJhX2x1bWFf bm90X3BsYW5hcl9mbGFnCisgICAgICAgIDEzLCAgIDYsCisgICAgICAgIC8vaW50cmFfYmRwY21f Y2hyb21hX2ZsYWcKKyAgICAgICAgIDAsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rp cl9mbGFnCisgICAgICAgIDI4LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgIDI2 LAorICAgICAgICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAgIC8vaW50cmFf Y2hyb21hX3ByZWRfbW9kZQorICAgICAgICAyNSwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2Zs YWcKKyAgICAgICAgIDYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgMTQsICAx MywgICA1LCAgIDQsICAgMywgIDQwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9mbGFnCisgICAg ICAgIDE5LCAgMTMsICAgNiwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAg IDM1LAorICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAyOCwKKyAgICAgICAgLy9yZWZf aWR4X2wwIGFuZCByZWZfaWR4X2wxCisgICAgICAgICA1LCAgMzUsCisgICAgICAgIC8vbXZwX2ww X2ZsYWcgYW5kIG12cF9sMV9mbGFnCisgICAgICAgIDM0LAorICAgICAgICAvL2FtdnJfZmxhZwor ICAgICAgICA1OSwgIDUwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAz OCwgIDI2LCAgNjAsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICAgNSwKKyAgICAgICAgLy9j dV9jb2RlZF9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2N1X3NidF9mbGFnCisgICAgICAg IDQxLCAgNTcsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRfZmxhZworICAgICAgICA0MiwKKyAgICAg ICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIDM1LCAgNTEsICAyNywKKyAgICAg ICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8vbGZuc3RfaWR4Cisg ICAgICAgIDUyLCAgMzcsICAyNywKKyAgICAgICAgLy9tdHNfaWR4CisgICAgICAgIDQ1LCAgMjUs ICAyNywgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVfcGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAg ICAgICAgNTAsCisgICAgICAgIC8vcGFsZXR0ZV90cmFuc3Bvc2VfZmxhZworICAgICAgICAzNSwK KyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAgIDU4LCAgNDUsICA0NSwgIDMwLCAgMzgs ICA0NSwgIDM4LCAgNDYsCisgICAgICAgIC8vcmVndWxhcl9tZXJnZV9mbGFnCisgICAgICAgIDQ2 LCAgMTUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgIDI1LAorICAgICAgICAv L21tdmRfY2FuZF9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL21tdmRfZGlzdGFuY2VfaWR4 CisgICAgICAgIDU5LAorICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICA1NywKKyAgICAgICAg Ly9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgIDI1LCAgNTgsICA0NSwKKyAgICAgICAgLy9t ZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDQsCisgICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJn ZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAgIDE4LAorICAgICAgICAvL2Fi c19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICA1MSwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0 ZXIxX2ZsYWcKKyAgICAgICAgMzYsCisgICAgICAgIC8vdHVfeV9jb2RlZF9mbGFnCisgICAgICAg IDE1LCAgIDYsICAgNSwgIDE0LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAg MjUsICAzNywKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAgICA5LCAgMzYsICA0 NSwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAgQ05VLCBDTlUsCisgICAgICAg IC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9jdV9j aHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vdHJhbnNmb3JtX3Nr aXBfZmxhZworICAgICAgICAyNSwgIDE3LAorICAgICAgICAvL3R1X2pvaW50X2NiY3JfcmVzaWR1 YWxfZmxhZworICAgICAgICA0MiwgIDQzLCAgNTIsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZf eF9wcmVmaXgKKyAgICAgICAgIDYsICAgNiwgIDEyLCAgMTQsICAgNiwgICA0LCAgMTQsICAgNywg ICA2LCAgIDQsICAyOSwgICA3LCAgIDYsICAgNiwgIDEyLCAgMjgsCisgICAgICAgICA3LCAgMTMs ICAxMywgIDM1LCAgMTksICAgNSwgICA0LAorICAgICAgICAvL2xhc3Rfc2lnX2NvZWZmX3lfcHJl Zml4CisgICAgICAgICA1LCAgIDUsICAyMCwgIDEzLCAgMTMsICAxOSwgIDIxLCAgIDYsICAxMiwg IDEyLCAgMTQsICAxNCwgICA1LCAgIDQsICAxMiwgIDEzLAorICAgICAgICAgNywgIDEzLCAgMTIs ICA0MSwgIDExLCAgIDUsICAyNywKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFnCisgICAgICAgIDI1 LCAgNDUsICAyNSwgIDE0LCAgMTgsICAzNSwgIDQ1LAorICAgICAgICAvL3NpZ19jb2VmZl9mbGFn CisgICAgICAgIDE3LCAgNDEsICA0OSwgIDM2LCAgIDEsICA0OSwgIDUwLCAgMzcsICA0OCwgIDUx LCAgNTgsICA0NSwgIDI2LCAgNDUsICA1MywgIDQ2LAorICAgICAgICA0OSwgIDU0LCAgNjEsICAz OSwgIDM1LCAgMzksICAzOSwgIDM5LCAgMTksICA1NCwgIDM5LCAgMzksICA1MCwgIDM5LCAgMzks ICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAgOSwgIDQ5LCAgNTAsICAzNiwgIDQ4 LCAgNTksICA1OSwgIDM4LCAgMzQsICA0NSwgIDM4LCAgMzEsCisgICAgICAgIDU4LCAgMzksICAz OSwgIDM5LCAgMzQsICAzOCwgIDU0LCAgMzksICA0MSwgIDM5LCAgMzksICAzOSwgIDI1LCAgNTAs ICAzNywKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAgICAzMywgIDQwLCAgMjUsICA0 MSwgIDI2LCAgNDIsICAyNSwgIDMzLCAgMjYsICAzNCwgIDI3LCAgMjUsICA0MSwgIDQyLCAgNDIs ICAzNSwKKyAgICAgICAgMzMsICAyNywgIDM1LCAgNDIsICA0MywgIDMzLCAgMjUsICAyNiwgIDM0 LCAgMTksICAyNywgIDMzLCAgNDIsICA0MywgIDM1LCAgNDMsCisgICAgICAgIDExLAorICAgICAg ICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgMCwgICAwLCAgMzMsICAzNCwgIDM1LCAg MjEsICAyNSwgIDM0LCAgMzUsICAyOCwgIDI5LCAgNDAsICA0MiwgIDQzLCAgMjksICAzMCwKKyAg ICAgICAgNDksICAzNiwgIDM3LCAgNDUsICAzOCwgICAwLCAgNDAsICAzNCwgIDQzLCAgMzYsICAz NywgIDU3LCAgNTIsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1LCAgIDAsICAgMCwgIDE3LCAg MjUsICAyNiwgICAwLCAgIDksICAyNSwgIDMzLCAgMTksICAgMCwgIDI1LCAgMzMsICAyNiwgIDIw LAorICAgICAgICAyNSwgIDMzLCAgMjcsICAzNSwgIDIyLCAgMjUsICAgMSwgIDI1LCAgMzMsICAy NiwgIDEyLCAgMjUsICAzMywgIDI3LCAgMjgsICAzNywKKyAgICAgICAgMTksICAxMSwgICA0LCAg IDYsICAgMywgICA0LCAgIDQsICAgNSwKKyAgICAgICAgLy9jb2VmZl9zaWduX2ZsYWcKKyAgICAg ICAgMzUsICAyNSwgIDQ2LCAgMjgsICAzMywgIDM4LAorICAgIH0sCisgICAgLy9zaGlmdElkeAor ICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgIDAsICAgMCwgICAwLCAgIDQs ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAg ICAgICAgIDAsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgIDQsICAgMSwg ICA0LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgICA0LCAgIDEsICAgNCwK KyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgICAwLCAgIDAsCisgICAg ICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAg IDAsCisgICAgICAgIC8vc2FvX3R5cGVfaWR4X2x1bWEgYW5kIHNhb190eXBlX2lkeF9jaHJvbWEK KyAgICAgICAgIDQsCisgICAgICAgIC8vc3BsaXRfY3VfZmxhZworICAgICAgICAxMiwgIDEzLCAg IDgsICAgOCwgIDEzLCAgMTIsICAgNSwgICA5LCAgIDksCisgICAgICAgIC8vc3BsaXRfcXRfZmxh ZworICAgICAgICAgMCwgICA4LCAgIDgsICAxMiwgIDEyLCAgIDgsCisgICAgICAgIC8vbXR0X3Nw bGl0X2N1X3ZlcnRpY2FsX2ZsYWcKKyAgICAgICAgIDksICAgOCwgICA5LCAgIDgsICAgNSwKKyAg ICAgICAgLy9tdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcKKyAgICAgICAgMTIsICAxMywgIDEyLCAg MTMsCisgICAgICAgIC8vbm9uX2ludGVyX2ZsYWcKKyAgICAgICAgIDEsICAgMCwKKyAgICAgICAg Ly9jdV9za2lwX2ZsYWcKKyAgICAgICAgIDUsICAgNCwgICA4LAorICAgICAgICAvL3ByZWRfbW9k ZV9pYmNfZmxhZworICAgICAgICAgMSwgICA1LCAgIDgsCisgICAgICAgIC8vcHJlZF9tb2RlX2Zs YWcKKyAgICAgICAgIDUsICAgMSwKKyAgICAgICAgLy9wcmVkX21vZGVfcGx0X2ZsYWcKKyAgICAg ICAgIDEsCisgICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICAgMSwKKyAgICAg ICAgLy9pbnRyYV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxh ZworICAgICAgICAgOSwgIDEwLCAgIDksICAgNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9p ZHgKKyAgICAgICAgIDUsICAgOCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVf ZmxhZworICAgICAgICAgOSwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2Zs YWcKKyAgICAgICAgIDIsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICAg NiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAgMSwgICA1 LAorICAgICAgICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAxLAorICAgICAg ICAvL2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9j Y2xtX21vZGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAg ICAgICA5LAorICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgIDUsCisg ICAgICAgIC8vZ2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgICA0LAorICAgICAgICAvL2ludGVy X3ByZWRfaWRjCisgICAgICAgICAwLCAgIDAsICAgMSwgICA0LCAgIDQsICAgMCwKKyAgICAgICAg Ly9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICAgNCwgICAwLCAgIDAsCisgICAgICAgIC8vY3Vf YWZmaW5lX3R5cGVfZmxhZworICAgICAgICAgNCwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcKKyAg ICAgICAgIDUsCisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICAg MCwgICA0LAorICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZworICAgICAgICAx MiwKKyAgICAgICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9hbXZy X3ByZWNpc2lvbl9pZHgKKyAgICAgICAgIDQsICAgNSwgIDAsCisgICAgICAgIC8vYmN3X2lkeAor ICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9jb2RlZF9mbGFnCisgICAgICAgICA0LAorICAgICAg ICAvL2N1X3NidF9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vY3Vfc2J0X3F1YWRf ZmxhZworICAgICAgICAxMCwKKyAgICAgICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAg ICAgICA4LCAgIDQsICAgMSwKKyAgICAgICAgLy9jdV9zYnRfcG9zX2ZsYWcKKyAgICAgICAgMTMs CisgICAgICAgIC8vbGZuc3RfaWR4CisgICAgICAgICA5LCAgIDksICAxMCwKKyAgICAgICAgLy9t dHNfaWR4CisgICAgICAgICA4LCAgIDAsICAgOSwgICAwLAorICAgICAgICAvL2NvcHlfYWJvdmVf cGFsZXR0ZV9pbmRpY2VzX2ZsYWcKKyAgICAgICAgIDksCisgICAgICAgIC8vcGFsZXR0ZV90cmFu c3Bvc2VfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9ydW5fY29weV9mbGFnCisgICAgICAg ICA5LCAgIDYsICAgOSwgIDEwLCAgIDUsICAgMCwgICA5LCAgIDUsCisgICAgICAgIC8vcmVndWxh cl9tZXJnZV9mbGFnCisgICAgICAgICA1LCAgIDUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFn CisgICAgICAgICA0LAorICAgICAgICAvL21tdmRfY2FuZF9mbGFnCisgICAgICAgIDEwLAorICAg ICAgICAvL21tdmRfZGlzdGFuY2VfaWR4CisgICAgICAgICAwLAorICAgICAgICAvL2NpaXBfZmxh ZworICAgICAgICAgMSwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19mbGFnCisgICAgICAgICA0 LCAgIDQsICAgNCwKKyAgICAgICAgLy9tZXJnZV9zdWJibG9ja19pZHgKKyAgICAgICAgIDAsCisg ICAgICAgIC8vbWVyZ2VfaWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisg ICAgICAgICA0LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAgOSwK KyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgIDUsCisgICAgICAgIC8v dHVfeV9jb2RlZF9mbGFnCisgICAgICAgICA1LCAgIDEsICAgOCwgICA5LAorICAgICAgICAvL3R1 X2NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAgMCwKKyAgICAgICAgLy90dV9jcl9jb2RlZF9m bGFnCisgICAgICAgICAyLCAgIDEsICAgMCwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAg ICAgICAgIDgsICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAg ICAgIDgsCisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgIDgsCisg ICAgICAgIC8vdHJhbnNmb3JtX3NraXBfZmxhZworICAgICAgICAgMSwgICAxLAorICAgICAgICAv L3R1X2pvaW50X2NiY3JfcmVzaWR1YWxfZmxhZworICAgICAgICAgMSwgICAxLCAgIDAsCisgICAg ICAgIC8vbGFzdF9zaWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgIDgsICAgNSwgICA0LCAgIDUs ICAgNCwgICA0LCAgIDUsICAgNCwgICAxLCAgIDAsICAgNCwgICAxLCAgIDAsICAgMCwgICAwLCAg IDAsCisgICAgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDUsICAgNCwgICA0LAorICAgICAgICAv L2xhc3Rfc2lnX2NvZWZmX3lfcHJlZml4CisgICAgICAgICA4LCAgIDUsICAgOCwgICA1LCAgIDUs ICAgNCwgICA1LCAgIDUsICAgNCwgICAwLCAgIDUsICAgNCwgICAxLCAgIDAsICAgMCwgICAxLAor ICAgICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDUsICAgNSwKKyAgICAgICAgLy9zYl9j b2RlZF9mbGFnCisgICAgICAgICA4LCAgIDUsICAgNSwgICA4LCAgIDUsICAgOCwgICA4LAorICAg ICAgICAvL3NpZ19jb2VmZl9mbGFnCisgICAgICAgIDEyLCAgIDksICAgOSwgIDEwLCAgIDksICAg OSwgICA5LCAgMTAsICAgOCwgICA4LCAgIDgsICAxMCwgICA5LCAgMTMsICAgOCwgICA4LAorICAg ICAgICAgOCwgICA4LCAgIDgsICAgNSwgICA4LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwgICA4 LCAgIDgsICAgOCwgICAwLCAgIDQsICAgNCwKKyAgICAgICAgIDAsICAgMCwgICAwLCAgIDAsICAx MiwgIDEyLCAgIDksICAxMywgICA0LCAgIDUsICAgOCwgICA5LCAgIDgsICAxMiwgIDEyLCAgIDgs CisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgOCwgICA4LCAgIDgsICAgNCwgICAw LCAgIDAsICAgMCwgIDEzLCAgMTMsICAgOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAg ICAgICAgOCwgICA5LCAgMTIsICAxMywgIDEzLCAgMTMsICAxMCwgIDEzLCAgMTMsICAxMywgIDEz LCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgMTAsICAxMywgIDEzLCAgMTMsICAx MywgICA4LCAgMTIsICAxMiwgIDEyLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMs CisgICAgICAgICA2LAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAgOSwg ICA1LCAgMTAsICAxMywgIDEzLCAgMTAsICAgOSwgIDEwLCAgMTMsICAxMywgIDEzLCAgIDksICAx MCwgIDEwLCAgMTAsICAxMywKKyAgICAgICAgIDgsICAgOSwgIDEwLCAgMTAsICAxMywgICA4LCAg IDgsICAgOSwgIDEyLCAgMTIsICAxMCwgICA1LCAgIDksICAgOSwgICA5LCAgMTMsCisgICAgICAg ICAxLCAgIDUsICAgOSwgICA5LCAgIDksICAgNiwgICA1LCAgIDksICAxMCwgIDEwLCAgIDksICAg OSwgICA5LCAgIDksICAgOSwgICA5LAorICAgICAgICAgNiwgICA4LCAgIDksICAgOSwgIDEwLCAg IDEsICAgNSwgICA4LCAgIDgsICAgOSwgICA2LCAgIDYsICAgOSwgICA4LCAgIDgsICAgOSwKKyAg ICAgICAgIDQsICAgMiwgICAxLCAgIDYsICAgMSwgICAxLCAgIDEsICAgMSwKKyAgICAgICAgLy9j b2VmZl9zaWduX2ZsYWcKKyAgICAgICAgIDEsICAgNCwgICA0LCAgIDUsICAgOCwgICA4LAorICAg IH0KK307CisKKyNkZWZpbmUgTUFYX1NVQl9CTE9DS1MgMTYKKyNkZWZpbmUgTUFYX1NVQl9CTE9D S19TSVpFIDQKKyNkZWZpbmUgTUFYX1RCX1NJWkUgNjQKKwordHlwZWRlZiBzdHJ1Y3QgUmVzaWR1 YWxDb2RpbmcgeworICAgIC8vY29tbW9uIGZvciB0cyBhbmQgbm9uIHRzCisgICAgVHJhbnNmb3Jt QmxvY2sgKnRiOworCisgICAgaW50IGxvZzJfc2JfdzsKKyAgICBpbnQgbG9nMl9zYl9oOworICAg IGludCBsYXN0X3N1Yl9ibG9jazsKKyAgICBpbnQgaGlzdF92YWx1ZTsKKyAgICBpbnQgdXBkYXRl X2hpc3Q7CisgICAgaW50IG51bV9zYl9jb2VmZjsKKyAgICBpbnQgcmVtX2JpbnNfcGFzczE7CisK KyAgICBpbnQgd2lkdGhfaW5fc2JzOworICAgIGludCBoZWlnaHRfaW5fc2JzOworICAgIGludCBu Yl9zYnM7CisKKyAgICBjb25zdCB1aW50OF90ICpzYl9zY2FuX3hfb2ZmOworICAgIGNvbnN0IHVp bnQ4X3QgKnNiX3NjYW5feV9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Nhbl94X29mZjsKKyAg ICBjb25zdCB1aW50OF90ICpzY2FuX3lfb2ZmOworCisgICAgdWludDhfdCBzYl9jb2RlZF9mbGFn W01BWF9TVUJfQkxPQ0tTICogTUFYX1NVQl9CTE9DS1NdOworICAgIGludCBzaWdfY29lZmZfZmxh Z1tNQVhfVEJfU0laRSAqIE1BWF9UQl9TSVpFXTsKKyAgICBpbnQgYWJzX2xldmVsX3Bhc3MxW01B WF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOyAgICAgICAgICAgICAgLy8vPCBBYnNMZXZlbFBhc3Mx W11bXQorICAgIGludCBhYnNfbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07CisKKyAg ICAvL2ZvciB0cyBvbmx5CisgICAgdWludDhfdCBpbmZlcl9zYl9jYmY7CisgICAgaW50IGNvZWZm X3NpZ25fbGV2ZWxbTUFYX1RCX1NJWkUgKiBNQVhfVEJfU0laRV07ICAgICAgICAgICAgIC8vLzwg Q29lZmZTaWduTGV2ZWxbXVtdCisKKyAgICAvL2ZvciBub24gdHMgb25seQorICAgIGludCBxc3Rh dGU7CisgICAgaW50IGxhc3Rfc2Nhbl9wb3M7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeDsKKyAgICBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworfSBSZXNpZHVhbENvZGlu ZzsKKworc3RhdGljIGludCBjYWJhY19yZWluaXQoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAg ICByZXR1cm4gc2tpcF9ieXRlcygmbGMtPmVwLT5jYywgMCkgPT0gTlVMTCA/IEFWRVJST1JfSU5W QUxJRERBVEEgOiAwOworfQorCitzdGF0aWMgdm9pZCBjYWJhY19pbml0X3N0YXRlKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgICAgICA9IGxj LT5mYy0+cHMuc3BzOworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoICAgPSBsYy0+ c2MtPnNoLnI7CisgICAgY29uc3QgaW50IHFwICAgICAgICAgICAgICAgICAgICA9IGF2X2NsaXBf dWludHAyKGxjLT5zYy0+c2guc2xpY2VfcXBfeSwgNik7CisgICAgaW50IGluaXRfdHlwZSAgICAg ICAgICAgICAgICAgICA9IDIgLSByc2gtPnNoX3NsaWNlX3R5cGU7CisKKyAgICBhdl9hc3NlcnQw KFZWQ19DT05URVhUUyA9PSBTWU5UQVhfRUxFTUVOVF9MQVNUKTsKKworICAgIGZmX3Z2Y19lcF9p bml0X3N0YXRfY29lZmYobGMtPmVwLCBzcHMtPmJpdF9kZXB0aCwgc3BzLT5yLT5zcHNfcGVyc2lz dGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnKTsKKworICAgIGlmIChyc2gtPnNoX2Nh YmFjX2luaXRfZmxhZyAmJiAhSVNfSShyc2gpKQorICAgICAgICBpbml0X3R5cGUgXj0gMzsKKwor ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVlZDX0NPTlRFWFRTOyBpKyspIHsKKyAgICAgICAgVlZD Q2FiYWNTdGF0ZSAqc3RhdGUgPSAmbGMtPmVwLT5jYWJhY19zdGF0ZVtpXTsKKyAgICAgICAgY29u c3QgaW50IGluaXRfdmFsdWUgPSBpbml0X3ZhbHVlc1tpbml0X3R5cGVdW2ldOworICAgICAgICBj b25zdCBpbnQgc2hpZnRfaWR4ICA9IGluaXRfdmFsdWVzWzNdW2ldOworICAgICAgICBjb25zdCBp bnQgbSA9IChpbml0X3ZhbHVlID4+IDMpIC0gNDsKKyAgICAgICAgY29uc3QgaW50IG4gPSAoKGlu aXRfdmFsdWUgJiA3KSAqIDE4KSArIDE7CisgICAgICAgIGNvbnN0IGludCBwcmUgPSBhdl9jbGlw KCgobSAqIChxcCAtIDE2KSkgPj4gMSkgKyBuLCAxLCAxMjcpOworCisgICAgICAgIHN0YXRlLT5z dGF0ZVswXSA9IHByZSA8PCAzOworICAgICAgICBzdGF0ZS0+c3RhdGVbMV0gPSBwcmUgPDwgNzsK KyAgICAgICAgc3RhdGUtPnNoaWZ0WzBdID0gKHNoaWZ0X2lkeCA+PiAyICkgKyAyOworICAgICAg ICBzdGF0ZS0+c2hpZnRbMV0gPSAoc2hpZnRfaWR4ICYgMyApICsgMyArIHN0YXRlLT5zaGlmdFsw XTsKKyAgICB9Cit9CisKK2ludCBmZl92dmNfY2FiYWNfaW5pdChWVkNMb2NhbENvbnRleHQgKmxj LAorICAgIGNvbnN0IGludCBjdHVfaWR4LCBjb25zdCBpbnQgcngsIGNvbnN0IGludCByeSkKK3sK KyAgICBpbnQgcmV0ID0gMDsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgICAgICAgICAgICAgID0g bGMtPmZjLT5wcy5wcHM7CisgICAgY29uc3QgaW50IGZpcnN0X2N0Yl9pbl9zbGljZSAgICA9ICFj dHVfaWR4OworICAgIGNvbnN0IGludCBmaXJzdF9jdGJfaW5fdGlsZSAgICAgPSByeCA9PSBwcHMt PmN0Yl90b19jb2xfYmRbcnhdICYmIHJ5ID09IHBwcy0+Y3RiX3RvX3Jvd19iZFtyeV07CisKKyAg ICBpZiAoZmlyc3RfY3RiX2luX3NsaWNlfHwgZmlyc3RfY3RiX2luX3RpbGUpIHsKKyAgICAgICAg aWYgKGxjLT5zYy0+bmJfZXBzID09IDEgJiYgIWZpcnN0X2N0Yl9pbl9zbGljZSkKKyAgICAgICAg ICAgIHJldCA9IGNhYmFjX3JlaW5pdChsYyk7CisgICAgICAgIGlmIChyZXQgPT0gMCkKKyAgICAg ICAgICAgIGNhYmFjX2luaXRfc3RhdGUobGMpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQor CisvL2ZpeG1lCitzdGF0aWMgdm9pZCB2dmNfcmVmaWxsMihDQUJBQ0NvbnRleHQqIGMpIHsKKyAg ICBpbnQgaTsKKyAgICB1bnNpZ25lZCB4OworI2lmICFIQVZFX0ZBU1RfQ0xaCisgICAgeCA9IGMt PmxvdyBeIChjLT5sb3cgLSAxKTsKKyAgICBpID0gNyAtIGZmX2gyNjRfbm9ybV9zaGlmdFt4ID4+ IChDQUJBQ19CSVRTIC0gMSldOworI2Vsc2UKKyAgICBpID0gZmZfY3R6KGMtPmxvdykgLSBDQUJB Q19CSVRTOworI2VuZGlmCisKKyAgICB4ID0gLUNBQkFDX01BU0s7CisKKyNpZiBDQUJBQ19CSVRT ID09IDE2CisgICAgeCArPSAoYy0+Ynl0ZXN0cmVhbVswXSA8PCA5KSArIChjLT5ieXRlc3RyZWFt WzFdIDw8IDEpOworI2Vsc2UKKyAgICB4ICs9IGMtPmJ5dGVzdHJlYW1bMF0gPDwgMTsKKyNlbmRp ZgorCisgICAgYy0+bG93ICs9IHggPDwgaTsKKyNpZiAhVU5DSEVDS0VEX0JJVFNUUkVBTV9SRUFE RVIKKyAgICBpZiAoYy0+Ynl0ZXN0cmVhbSA8IGMtPmJ5dGVzdHJlYW1fZW5kKQorI2VuZGlmCisg ICAgICAgIGMtPmJ5dGVzdHJlYW0gKz0gQ0FCQUNfQklUUyAvIDg7Cit9CisKK3N0YXRpYyBpbnQg aW5saW5lIHZ2Y19nZXRfY2FiYWMoQ0FCQUNDb250ZXh0ICpjLCBWVkNDYWJhY1N0YXRlKiBiYXNl LCBjb25zdCBpbnQgY3R4KQoreworICAgIFZWQ0NhYmFjU3RhdGUgKnMgPSBiYXNlICsgY3R4Owor ICAgIGNvbnN0IGludCBxUmFuZ2VJZHggPSBjLT5yYW5nZSA+PiA1OworICAgIGNvbnN0IGludCBw U3RhdGUgPSBzLT5zdGF0ZVsxXSArIChzLT5zdGF0ZVswXSA8PCA0KTsKKyAgICBjb25zdCBpbnQg dmFsTXBzID0gcFN0YXRlID4+IDE0OworICAgIGNvbnN0IGludCBSYW5nZUxQUyA9IChxUmFuZ2VJ ZHggKiAoKHZhbE1wcyA/IDMyNzY3IC0gcFN0YXRlIDogcFN0YXRlKSA+PiA5ICkgPj4gMSkgKyA0 OworICAgIGludCBiaXQsIGxwc19tYXNrOworCisgICAgYy0+cmFuZ2UgLT0gUmFuZ2VMUFM7Cisg ICAgbHBzX21hc2sgPSAoKGMtPnJhbmdlPDwoQ0FCQUNfQklUUysxKSkgLSBjLT5sb3cpPj4zMTsK KworICAgIGMtPmxvdyAtPSAoYy0+cmFuZ2U8PChDQUJBQ19CSVRTKzEpKSAmIGxwc19tYXNrOwor ICAgIGMtPnJhbmdlICs9IChSYW5nZUxQUyAtIGMtPnJhbmdlKSAmIGxwc19tYXNrOworCisgICAg Yml0ID0gdmFsTXBzIF4gKGxwc19tYXNrICYgMSk7CisKKyAgICBscHNfbWFzayA9IGZmX2gyNjRf bm9ybV9zaGlmdFtjLT5yYW5nZV07CisgICAgYy0+cmFuZ2UgPDw9IGxwc19tYXNrOworICAgIGMt PmxvdyAgPDw9IGxwc19tYXNrOworCisgICAgaWYgKCEoYy0+bG93ICYgQ0FCQUNfTUFTSykpCisg ICAgICAgIHZ2Y19yZWZpbGwyKGMpOworICAgIHMtPnN0YXRlWzBdID0gcy0+c3RhdGVbMF0gLSAo cy0+c3RhdGVbMF0gPj4gcy0+c2hpZnRbMF0pICsgKDEwMjMgKiBiaXQgPj4gcy0+c2hpZnRbMF0p OworICAgIHMtPnN0YXRlWzFdID0gcy0+c3RhdGVbMV0gLSAocy0+c3RhdGVbMV0gPj4gcy0+c2hp ZnRbMV0pICsgKDE2MzgzICogYml0ID4+IHMtPnNoaWZ0WzFdKTsKKyAgICByZXR1cm4gYml0Owor fQorCisjZGVmaW5lIEdFVF9DQUJBQyhjdHgpIHZ2Y19nZXRfY2FiYWMoJmxjLT5lcC0+Y2MsIGxj LT5lcC0+Y2FiYWNfc3RhdGUsIGN0eCkKKworLy85LjMuMy40IFRydW5jYXRlZCBiaW5hcnkgKFRC KSBiaW5hcml6YXRpb24gcHJvY2Vzcworc3RhdGljIGludCB0cnVuY2F0ZWRfYmluYXJ5X2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgY19tYXgpCit7CisgICAgY29uc3QgaW50 IG4gPSBjX21heCArIDE7CisgICAgY29uc3QgaW50IGsgPSBhdl9sb2cyKG4pOworICAgIGNvbnN0 IGludCB1ID0gKDEgPDwgKGsrMSkpIC0gbjsKKyAgICBpbnQgdiA9IDA7CisgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBrOyBpKyspCisgICAgICAgIHYgPSAodiA8PCAxKSB8IGdldF9jYWJhY19ieXBh c3MoJmxjLT5lcC0+Y2MpOworICAgIGlmICh2ID49IHUpIHsKKyAgICAgICAgdiA9ICh2IDw8IDEp IHwgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgICAgIHYgLT0gdTsKKyAgICB9 CisgICAgcmV0dXJuIHY7Cit9CisKKy8vIDkuMy4zLjYgTGltaXRlZCBrLXRoIG9yZGVyIEV4cC1H b2xvbWIgYmluYXJpemF0aW9uIHByb2Nlc3MKK3N0YXRpYyBpbnQgbGltaXRlZF9rdGhfb3JkZXJf ZWdrX2RlY29kZShDQUJBQ0NvbnRleHQgKmMsIGNvbnN0IGludCBrLCBjb25zdCBpbnQgbWF4X3By ZV9leHRfbGVuLCBjb25zdCBpbnQgdHJ1bmNfc3VmZml4X2xlbikKK3sKKyAgICBpbnQgcHJlX2V4 dF9sZW4gPSAwOworICAgIGludCBlc2NhcGVfbGVuZ3RoOworICAgIGludCB2YWwgPSAwOworICAg IHdoaWxlICgocHJlX2V4dF9sZW4gPCBtYXhfcHJlX2V4dF9sZW4pICYmIGdldF9jYWJhY19ieXBh c3MoYykpCisgICAgICAgIHByZV9leHRfbGVuKys7CisgICAgaWYgKHByZV9leHRfbGVuID09IG1h eF9wcmVfZXh0X2xlbikKKyAgICAgICAgZXNjYXBlX2xlbmd0aCA9IHRydW5jX3N1ZmZpeF9sZW47 CisgICAgZWxzZQorICAgICAgICBlc2NhcGVfbGVuZ3RoID0gcHJlX2V4dF9sZW4gKyBrOworICAg IHdoaWxlIChlc2NhcGVfbGVuZ3RoLS0gPiAwKSB7CisgICAgICAgIHZhbCA9ICh2YWwgPDwgMSkg KyBnZXRfY2FiYWNfYnlwYXNzKGMpOworICAgIH0KKyAgICB2YWwgKz0gKCgxIDw8IHByZV9leHRf bGVuKSAtIDEpIDw8IGs7CisgICAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIGF2X2Fsd2F5c19p bmxpbmUKK3ZvaWQgZ2V0X2xlZnRfdG9wKGNvbnN0IFZWQ0xvY2FsQ29udGV4dCAqbGMsIHVpbnQ4 X3QgKmxlZnQsIHVpbnQ4X3QgKnRvcCwKKyAgICBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwg Y29uc3QgdWludDhfdCAqbGVmdF9jdHgsIGNvbnN0IHVpbnQ4X3QgKnRvcF9jdHgpCit7CisgICAg Y29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgID0gbGMtPmZjOworICAgIGNvbnN0IFZWQ1NQUyAq c3BzICAgICAgICAgICA9IGZjLT5wcy5zcHM7CisgICAgY29uc3QgaW50IG1pbl9jYl93aWR0aCAg ICAgID0gZmMtPnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAgIGNvbnN0IGludCB4MGIgPSBhdl9t b2RfdWludHAyKHgwLCBzcHMtPmN0Yl9sb2cyX3NpemVfeSk7CisgICAgY29uc3QgaW50IHkwYiA9 IGF2X21vZF91aW50cDIoeTAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICBjb25zdCBpbnQg eF9jYiA9IHgwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgIGNvbnN0IGludCB5X2Ni ID0geTAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisKKyAgICBpZiAobGMtPmN0Yl9sZWZ0 X2ZsYWcgfHwgeDBiKQorICAgICAgICAqbGVmdCA9IFNBTVBMRV9DVEIobGVmdF9jdHgsIHhfY2Ig LSAxLCB5X2NiKTsKKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnIHx8IHkwYikKKyAgICAgICAgKnRv cCA9IFNBTVBMRV9DVEIodG9wX2N0eCwgeF9jYiwgeV9jYiAtIDEpOworfQorCitzdGF0aWMgYXZf YWx3YXlzX2lubGluZQordWludDhfdCBnZXRfaW5jKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0 IHVpbnQ4X3QgKmN0eCkKK3sKKyAgICB1aW50OF90IGxlZnQgPSAwLCB0b3AgPSAwOworICAgIGdl dF9sZWZ0X3RvcChsYywgJmxlZnQsICZ0b3AsIGxjLT5jdS0+eDAsIGxjLT5jdS0+eTAsIGN0eCwg Y3R4KTsKKyAgICByZXR1cm4gbGVmdCArIHRvcDsKK30KKworaW50IGZmX3Z2Y19zYW9fbWVyZ2Vf ZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KFNBT19NRVJHRV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhfZGVjb2RlKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoU0FPX1RZUEVfSURYKSkK KyAgICAgICAgcmV0dXJuIFNBT19OT1RfQVBQTElFRDsKKworICAgIGlmICghZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIHJldHVybiBTQU9fQkFORDsKKyAgICByZXR1cm4g U0FPX0VER0U7Cit9CisKK2ludCBmZl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IHZhbHVlID0gZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYyk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgdmFs dWUgPSAodmFsdWUgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICBy ZXR1cm4gdmFsdWU7Cit9CisKK2ludCBmZl92dmNfc2FvX29mZnNldF9hYnNfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGkgPSAwOworICAgIGludCBsZW5ndGggPSAoMSA8 PCAoRkZNSU4obGMtPmZjLT5wcy5zcHMtPmJpdF9kZXB0aCwgMTApIC0gNSkpIC0gMTsKKworICAg IHdoaWxlIChpIDwgbGVuZ3RoICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAg ICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWdu X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNfYnlw YXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19zYW9fZW9fY2xhc3NfZGVjb2RlKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IHJldCA9IGdldF9jYWJhY19ieXBhc3MoJmxj LT5lcC0+Y2MpIDw8IDE7CisgICAgcmV0ICAgIHw9IGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBmZl92dmNfYWxmX2N0Yl9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCByeCwgY29uc3QgaW50IHJ5LCBjb25zdCBpbnQgY19p ZHgpCit7CisgICAgaW50IGluYyA9IGNfaWR4ICogMzsKKyAgICBjb25zdCBWVkNGcmFtZUNvbnRl eHQgKmZjID0gbGMtPmZjOworICAgIGlmIChsYy0+Y3RiX2xlZnRfZmxhZykgeworICAgICAgICBj b25zdCBBTEZQYXJhbXMgKmxlZnQgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCAtIDEsIHJ5KTsKKyAg ICAgICAgaW5jICs9IGxlZnQtPmN0Yl9mbGFnW2NfaWR4XTsKKyAgICB9CisgICAgaWYgKGxjLT5j dGJfdXBfZmxhZykgeworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmFib3ZlID0gJkNUQihmYy0+ dGFiLmFsZiwgcngsIHJ5IC0gMSk7CisgICAgICAgIGluYyArPSBhYm92ZS0+Y3RiX2ZsYWdbY19p ZHhdOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKEFMRl9DVEJfRkxBRyArIGluYyk7Cit9 CisKK2ludCBmZl92dmNfYWxmX3VzZV9hcHNfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQorewor ICAgIHJldHVybiBHRVRfQ0FCQUMoQUxGX1VTRV9BUFNfRkxBRyk7Cit9CisKK2ludCBmZl92dmNf YWxmX2x1bWFfcHJldl9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCBsYy0+c2MtPnNoLnItPnNoX251bV9hbGZf YXBzX2lkc19sdW1hIC0gMSk7Cit9CisKK2ludCBmZl92dmNfYWxmX2x1bWFfZml4ZWRfZmlsdGVy X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB0cnVuY2F0ZWRfYmluYXJ5 X2RlY29kZShsYywgMTUpOworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgo VlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGNfaWR4LCBjb25zdCBpbnQgbnVtX2Nocm9t YV9maWx0ZXJzKQoreworICAgIGludCBpID0gMDsKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gbnVt X2Nocm9tYV9maWx0ZXJzIC0gMTsKKworICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIEdFVF9DQUJB QyhBTEZfQ1RCX0ZJTFRFUl9BTFRfSURYICsgY19pZHggLSAxKSkKKyAgICAgICAgaSsrOworICAg IHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2FsZl9jdGJfY2NfaWRjKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCByeCwgY29uc3QgaW50IHJ5LCBjb25zdCBpbnQgaWR4LCBjb25zdCBp bnQgY2NfZmlsdGVyc19zaWduYWxsZWQpCit7CisgICAgaW50IGluYyA9ICFpZHggPyBBTEZfQ1RC X0NDX0NCX0lEQyA6IEFMRl9DVEJfQ0NfQ1JfSURDOworICAgIGludCBpID0gMDsKKyAgICBjb25z dCBWVkNGcmFtZUNvbnRleHQgKmZjID0gbGMtPmZjOworICAgIGlmIChsYy0+Y3RiX2xlZnRfZmxh ZykgeworICAgICAgICBjb25zdCBBTEZQYXJhbXMgKmxlZnQgPSAmQ1RCKGZjLT50YWIuYWxmLCBy eCAtIDEsIHJ5KTsKKyAgICAgICAgaW5jICs9IGxlZnQtPmN0Yl9jY19pZGNbaWR4XSAhPSAwOwor ICAgIH0KKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFt cyAqYWJvdmUgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCwgcnkgLSAxKTsKKyAgICAgICAgaW5jICs9 IGFib3ZlLT5jdGJfY2NfaWRjW2lkeF0gIT0gMDsKKyAgICB9CisKKyAgICBpZiAoIUdFVF9DQUJB QyhpbmMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpKys7CisgICAgd2hpbGUgKGkgPCBjY19m aWx0ZXJzX3NpZ25hbGxlZCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAg ICAgaSsrOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3NwbGl0X2N1X2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAsCisgICAgY29uc3Qg aW50IGNiX3dpZHRoLCBjb25zdCBpbnQgY2JfaGVpZ2h0LCBjb25zdCBpbnQgaXNfY2hyb21hLCBj b25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpm YyA9IGxjLT5mYzsKKyAgICBjb25zdCBWVkNQUFMgKnBwcyAgID0gZmMtPnBzLnBwczsKKyAgICBj b25zdCBpbnQgaXNfaW5zaWRlID0gKHgwICsgY2Jfd2lkdGggPD0gcHBzLT53aWR0aCkgJiYgKHkw ICsgY2JfaGVpZ2h0IDw9IHBwcy0+aGVpZ2h0KTsKKworICAgIGlmICgoYS0+YnR2IHx8IGEtPmJ0 aCB8fCBhLT50dHYgfHwgYS0+dHRoIHx8IGEtPnF0KSAmJiBpc19pbnNpZGUpCisgICAgeworICAg ICAgICB1aW50OF90IGluYyA9IDAsIGxlZnRfaGVpZ2h0ID0gY2JfaGVpZ2h0LCB0b3Bfd2lkdGgg PSBjYl93aWR0aDsKKworICAgICAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2hlaWdodCwgJnRv cF93aWR0aCwgeDAsIHkwLCBmYy0+dGFiLmNiX2hlaWdodFtpc19jaHJvbWFdLCBmYy0+dGFiLmNi X3dpZHRoW2lzX2Nocm9tYV0pOworICAgICAgICBpbmMgKz0gbGVmdF9oZWlnaHQgPCBjYl9oZWln aHQ7CisgICAgICAgIGluYyArPSB0b3Bfd2lkdGggICA8IGNiX3dpZHRoOworICAgICAgICBpbmMg Kz0gKGEtPmJ0diArIGEtPmJ0aCArIGEtPnR0diArIGEtPnR0aCArIDIgKiBhLT5xdCAtIDEpIC8g MiAqIDM7CisKKyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhTUExJVF9DVV9GTEFHICsgaW5jKTsK KworICAgIH0KKyAgICByZXR1cm4gIWlzX2luc2lkZTsKK30KKworc3RhdGljIGludCBzcGxpdF9x dF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGlu dCB5MCwgY29uc3QgaW50IGNoX3R5cGUsIGNvbnN0IGludCBjcXRfZGVwdGgpCit7CisgICAgY29u c3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBpbnQgaW5jID0gMDsKKyAgICB1 aW50OF90IGRlcHRoX2xlZnQgPSAwLCBkZXB0aF90b3AgPSAwOworCisgICAgZ2V0X2xlZnRfdG9w KGxjLCAgJmRlcHRoX2xlZnQsICZkZXB0aF90b3AsIHgwLCB5MCwgZmMtPnRhYi5jcXRfZGVwdGhb Y2hfdHlwZV0sIGZjLT50YWIuY3F0X2RlcHRoW2NoX3R5cGVdKTsKKyAgICBpbmMgKz0gZGVwdGhf bGVmdCA+IGNxdF9kZXB0aDsKKyAgICBpbmMgKz0gZGVwdGhfdG9wICA+IGNxdF9kZXB0aDsKKyAg ICBpbmMgKz0gKGNxdF9kZXB0aCA+PSAyKSAqIDM7CisKKyAgICByZXR1cm4gR0VUX0NBQkFDKFNQ TElUX1FUX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNh bF9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGlu dCB5MCwKKyAgICBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsIGNvbnN0 IGludCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQqIGEpCit7CisgICAgaWYgKChhLT5i dGggfHwgYS0+dHRoKSAmJiAoYS0+YnR2IHx8IGEtPnR0dikpIHsKKyAgICAgICAgaW50IGluYzsK KyAgICAgICAgY29uc3QgaW50IHYgPSBhLT5idHYgKyBhLT50dHY7CisgICAgICAgIGNvbnN0IGlu dCBoID0gYS0+YnRoICsgYS0+dHRoOworICAgICAgICBpZiAodiA+IGgpCisgICAgICAgICAgICBp bmMgPSA0OworICAgICAgICBlbHNlIGlmICh2IDwgaCkKKyAgICAgICAgICAgIGluYyA9IDM7Cisg ICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgID0g bGMtPmZjOworICAgICAgICAgICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgID0gZmMtPnBz LnNwczsKKyAgICAgICAgICAgIGNvbnN0IGludCBtaW5fY2Jfd2lkdGggICAgICA9IGZjLT5wcy5w cHMtPm1pbl9jYl93aWR0aDsKKyAgICAgICAgICAgIGNvbnN0IGludCB4MGIgICAgICAgICAgICAg ICA9IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICAgICAgICAg IGNvbnN0IGludCB5MGIgICAgICAgICAgICAgICA9IGF2X21vZF91aW50cDIoeTAsIHNwcy0+Y3Ri X2xvZzJfc2l6ZV95KTsKKyAgICAgICAgICAgIGNvbnN0IGludCB4X2NiICAgICAgICAgICAgICA9 IHgwID4+IHNwcy0+bWluX2NiX2xvZzJfc2l6ZV95OworICAgICAgICAgICAgY29uc3QgaW50IHlf Y2IgICAgICAgICAgICAgID0geTAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgICAg ICAgICBjb25zdCBpbnQgYXZhaWxhYmxlX2EgICAgICAgPSBsYy0+Y3RiX3VwX2ZsYWcgfHwgeTBi OworICAgICAgICAgICAgY29uc3QgaW50IGF2YWlsYWJsZV9sICAgICAgID0gbGMtPmN0Yl9sZWZ0 X2ZsYWcgfHwgeDBiOworICAgICAgICAgICAgY29uc3QgaW50IGRhICAgICAgICAgICAgICAgID0g Y2Jfd2lkdGggIC8gKGF2YWlsYWJsZV9hID8gU0FNUExFX0NUQihmYy0+dGFiLmNiX3dpZHRoW2No X3R5cGVdLCB4X2NiLCB5X2NiIC0gMSkgOiAxKTsKKyAgICAgICAgICAgIGNvbnN0IGludCBkbCAg ICAgICAgICAgICAgICA9IGNiX2hlaWdodCAvIChhdmFpbGFibGVfbCA/IFNBTVBMRV9DVEIoZmMt PnRhYi5jYl9oZWlnaHRbY2hfdHlwZV0sIHhfY2IgLSAxLCB5X2NiKSA6IDEpOworCisgICAgICAg ICAgICBpZiAoZGEgPT0gZGwgfHwgIWF2YWlsYWJsZV9hIHx8ICFhdmFpbGFibGVfbCkKKyAgICAg ICAgICAgICAgICBpbmMgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoZGEgPCBkbCkKKyAgICAg ICAgICAgICAgICBpbmMgPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlu YyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhNVFRfU1BMSVRfQ1Vf VkVSVElDQUxfRkxBRyArIGluYyk7CisgICAgfQorICAgIHJldHVybiAhKGEtPmJ0aCB8fCBhLT50 dGgpOworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZ19kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnLCBj b25zdCBpbnQgbXR0X2RlcHRoKQoreworICAgIGludCBpbmMgPSAoMiAqIG10dF9zcGxpdF9jdV92 ZXJ0aWNhbF9mbGFnKSArICgobXR0X2RlcHRoIDw9IDEpID8gMSA6IDApOworICAgIHJldHVybiBH RVRfQ0FCQUMoTVRUX1NQTElUX0NVX0JJTkFSWV9GTEFHICsgaW5jKTsKK30KKworVlZDU3BsaXRN b2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwg Y29uc3QgaW50IHkwLCBjb25zdCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsCisg ICAgY29uc3QgaW50IGNxdF9kZXB0aCwgY29uc3QgaW50IG10dF9kZXB0aCwgY29uc3QgaW50IGNo X3R5cGUsIGNvbnN0IFZWQ0FsbG93ZWRTcGxpdCAqYSkKK3sKKyAgICBpbnQgYWxsb3dfbm9fcXQg PSBhLT5idHYgfHwgYS0+YnRoIHx8IGEtPnR0diB8fCBhLT50dGg7CisgICAgaW50IHNwbGl0X3F0 X2ZsYWc7CisgICAgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOworICAgIGludCBtdHRf c3BsaXRfY3VfYmluYXJ5X2ZsYWc7CisgICAgY29uc3QgVlZDU3BsaXRNb2RlIG10dF9zcGxpdF9t b2Rlc1tdID0geworICAgICAgICBTUExJVF9UVF9IT1IsIFNQTElUX0JUX0hPUiwgU1BMSVRfVFRf VkVSLCBTUExJVF9CVF9WRVIsCisgICAgfTsKKyAgICBpZiAoYWxsb3dfbm9fcXQgJiYgYS0+cXQp IHsKKyAgICAgICAgc3BsaXRfcXRfZmxhZyA9IHNwbGl0X3F0X2ZsYWdfZGVjb2RlKGxjLCB4MCwg eTAsIGNoX3R5cGUsIGNxdF9kZXB0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3BsaXRfcXRf ZmxhZyA9ICFhbGxvd19ub19xdCB8fCBhLT5xdDsKKyAgICB9CisgICAgaWYgKHNwbGl0X3F0X2Zs YWcpCisgICAgICAgIHJldHVybiBTUExJVF9RVDsKKyAgICBtdHRfc3BsaXRfY3VfdmVydGljYWxf ZmxhZyA9IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnX2RlY29kZShsYywgeDAsIHkwLCBjYl93 aWR0aCwgY2JfaGVpZ2h0LCBjaF90eXBlLCBhKTsKKyAgICBpZiAoKGEtPmJ0diAmJiBhLT50dHYg JiYgbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcpIHx8CisgICAgICAgIChhLT5idGggJiYgYS0+ dHRoICYmICFtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZykpIHsKKyAgICAgICAgbXR0X3NwbGl0 X2N1X2JpbmFyeV9mbGFnID0gbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29kZShsYywgbXR0 X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWcsIG10dF9kZXB0aCk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgaWYgKCFhLT5idHYgJiYgIWEtPmJ0aCkKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5h cnlfZmxhZyA9IDA7CisgICAgICAgIGVsc2UgaWYgKCFhLT50dHYgJiYgIWEtPnR0aCkKKyAgICAg ICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDE7CisgICAgICAgIGVsc2UgaWYgKGEt PmJ0aCAmJiBhLT50dHYpCisgICAgICAgICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcgPSAx IC0gbXR0X3NwbGl0X2N1X3ZlcnRpY2FsX2ZsYWc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg IG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOwor ICAgIH0KKyAgICByZXR1cm4gbXR0X3NwbGl0X21vZGVzWyhtdHRfc3BsaXRfY3VfdmVydGljYWxf ZmxhZyA8PCAxKSArIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZ107Cit9CisKK2ludCBmZl92dmNf bm9uX2ludGVyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBp bnQgeTAsIGNvbnN0IGludCBjaF90eXBlKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAq ZmMgPSBsYy0+ZmM7CisgICAgdWludDhfdCBpbmMsIGxlZnQgPSAwLCB0b3AgPSAwOworCisgICAg Z2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgeDAsIHkwLCBmYy0+dGFiLmNwbVtjaF90eXBl XSwgZmMtPnRhYi5jcG1bY2hfdHlwZV0pOworICAgIGluYyA9IGxlZnQgfHwgdG9wOworICAgIHJl dHVybiBHRVRfQ0FCQUMoTk9OX0lOVEVSX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX3By ZWRfbW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpc19jaHJvbWEpCit7 CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgICA9IGxjLT5mYzsKKyAgICBjb25zdCBD b2RpbmdVbml0ICpjdSAgICAgICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBpbmMsIGxlZnQgPSAw LCB0b3AgPSAwOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgY3UtPngwLCBj dS0+eTAsIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0sIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0pOwor ICAgIGluYyA9IGxlZnQgfHwgdG9wOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX0ZM QUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX3ByZWRfbW9kZV9wbHRfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX1BMVF9GTEFHKTsK K30KKworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9sdW1hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0xVTUFfRkxBRyk7Cit9CisK K2ludCBmZl92dmNfaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9ESVJfRkxBRyk7Cit9 CisKK2ludCBmZl92dmNfaW50cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9GTEFHKTsKK30K KworaW50IGZmX3Z2Y19pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxB Ryk7Cit9CisKK2ludCBmZl92dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNv bnN0IHVpbnQ4X3QgKmN1X3NraXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2lu YyhsYywgY3Vfc2tpcF9mbGFnKTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NLSVBfRkxBRyAr IGluYyk7Cit9CisKK2ludCBmZl92dmNfcHJlZF9tb2RlX2liY19mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCBpc19jaHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0 ICpmYyA9IGxjLT5mYzsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgICAgPSBsYy0+Y3U7 CisgICAgdWludDhfdCBsZWZ0X21vZGUgPSBNT0RFX0lOVEVSLCB0b3BfbW9kZSA9IE1PREVfSU5U RVI7CisgICAgaW50IGluYzsKKworICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfbW9kZSwgJnRv cF9tb2RlLCBjdS0+eDAsIGN1LT55MCwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSwgZmMtPnRhYi5j cG1baXNfY2hyb21hXSk7CisgICAgaW5jID0gKGxlZnRfbW9kZSA9PSBNT0RFX0lCQykgKyAodG9w X21vZGUgPT0gTU9ERV9JQkMpOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX0lCQ19G TEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9taXBfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjLCBjb25zdCB1aW50OF90ICppbnRyYV9taXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQg dyAgICAgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+ Y2JfaGVpZ2h0OworICAgIGNvbnN0IGludCBpbmMgICA9ICAodyA+IGggKiAyIHx8IGggPiB3ICog MikgPyAzIDogZ2V0X2luYyhsYywgaW50cmFfbWlwX2ZsYWcpOworICAgIHJldHVybiBHRVRfQ0FC QUMoSU5UUkFfTUlQX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF90cmFu c3Bvc2VkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFj X2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZD TG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dp ZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0 IGludCBjX21heCA9ICh3ID09IDQgJiYgaCA9PSA0KSA/IDE1IDoKKyAgICAgICAgKCh3ID09IDQg fHwgaCA9PSA0KSB8fCAodyA9PSA4ICYmIGggPT0gOCkpID8gNzogNTsKKyAgICByZXR1cm4gdHJ1 bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIGNfbWF4KTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9s dW1hX3JlZl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3Ig KGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgIGlmICghR0VUX0NBQkFDKElOVFJBX0xVTUFf UkVGX0lEWCArIGkpKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBp OworfQorCitpbnQgZmZfdnZjX2ludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9TVUJQQVJUSVRJT05T X01PREVfRkxBRyk7Cit9CisKK2VudW0gSXNwVHlwZSBmZl92dmNfaXNwX3NwbGl0X3R5cGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFn KQoreworICAgIGlmICghaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcpCisgICAgICAgIHJl dHVybiBJU1BfTk9fU1BMSVQ7CisgICAgcmV0dXJuIDEgKyBHRVRfQ0FCQUMoSU5UUkFfU1VCUEFS VElUSU9OU19TUExJVF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX21wbV9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1B X01QTV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2Zs YWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyAr ICFpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFf bHVtYV9tcG1faWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9y IChpID0gMDsgaSA8IDQgJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAg ICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19pbnRy YV9sdW1hX21wbV9yZW1haW5kZXIoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g dHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUobGMsIDYwKTsKK30KKworaW50IGZmX3Z2Y19jY2xtX21v ZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ0NM TV9NT0RFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2NjbG1fbW9kZV9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhDQ0xNX01PREVfSURYKSkKKyAgICAgICAg cmV0dXJuIDA7CisgICAgcmV0dXJuIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpICsgMTsK K30KKworaW50IGZmX3Z2Y19pbnRyYV9jaHJvbWFfcHJlZF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgaWYgKCFHRVRfQ0FCQUMoSU5UUkFfQ0hST01BX1BSRURfTU9ERSkpCisgICAg ICAgIHJldHVybiA0OworICAgIHJldHVybiAoZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykg PDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19n ZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VU X0NBQkFDKEdFTkVSQUxfTUVSR0VfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2ludGVyX2Zs YWdfaW5jKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwKQor eworICAgIHVpbnQ4X3QgbGVmdF9tZXJnZSA9IDAsICB0b3BfbWVyZ2UgPSAwOworICAgIHVpbnQ4 X3QgbGVmdF9hZmZpbmUgPSAwLCB0b3BfYWZmaW5lID0gMDsKKyAgICBjb25zdCBWVkNGcmFtZUNv bnRleHQgKmZjID0gbGMtPmZjOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdF9tZXJnZSwg JnRvcF9tZXJnZSwgeDAsIHkwLCBmYy0+dGFiLm1zZiwgZmMtPnRhYi5tc2YpOworICAgIGdldF9s ZWZ0X3RvcChsYywgJmxlZnRfYWZmaW5lLCAmdG9wX2FmZmluZSwgeDAsIHkwLCBmYy0+dGFiLmlh ZiwgZmMtPnRhYi5pYWYpOworICAgIHJldHVybiAobGVmdF9tZXJnZSB8fCBsZWZ0X2FmZmluZSkg KyAodG9wX21lcmdlICsgdG9wX2FmZmluZSk7Cit9CisKK2ludCBmZl92dmNfbWVyZ2Vfc3ViYmxv Y2tfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBpbmMgPSBnZXRf aW50ZXJfZmxhZ19pbmMobGMsIGxjLT5jdS0+eDAsIGxjLT5jdS0+eTApOworICAgIHJldHVybiBH RVRfQ0FCQUMoTUVSR0VfU1VCQkxPQ0tfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfbWVy Z2Vfc3ViYmxvY2tfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBtYXhfbnVtX3N1 YmJsb2NrX21lcmdlX2NhbmQpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFHRVRfQ0FCQUMoTUVS R0VfU1VCQkxPQ0tfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChpID0gMTsgaSA8 IG1heF9udW1fc3ViYmxvY2tfbWVyZ2VfY2FuZCAtIDEgJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30K KworaW50IGZmX3Z2Y19yZWd1bGFyX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29u c3QgaW50IGN1X3NraXBfZmxhZykKK3sKKyAgICBpbnQgaW5jID0gIWN1X3NraXBfZmxhZzsKKyAg ICByZXR1cm4gR0VUX0NBQkFDKFJFR1VMQVJfTUVSR0VfRkxBRyArIGluYyk7Cit9CisKK2ludCBm Zl92dmNfbW12ZF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhNTVZEX01FUkdFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX21tdmRfY2FuZF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhNTVZEX0NB TkRfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgbW12ZF9kaXN0YW5jZV9pZHhfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFHRVRfQ0FCQUMoTU1WRF9E SVNUQU5DRV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAxOyBpIDwgNyAm JiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5n ICovOworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgaW50IG1tdmRfZGlyZWN0aW9uX2lkeF9k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gKGdldF9jYWJhY19ieXBh c3MoJmxjLT5lcC0+Y2MpIDw8IDEpIHwgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9 CisKK3ZvaWQgZmZfdnZjX21tdmRfb2Zmc2V0X2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBN diAqbW12ZF9vZmZzZXQsIGNvbnN0IGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnKQorewor ICAgIGNvbnN0IGludCBzaGlmdCA9IHBoX21tdmRfZnVsbHBlbF9vbmx5X2ZsYWcgPyA0IDogMjsK KyAgICBjb25zdCBpbnQgbW12ZF9kaXN0YW5jZSA9IDEgPDwgKG1tdmRfZGlzdGFuY2VfaWR4X2Rl Y29kZShsYykgKyBzaGlmdCk7CisgICAgY29uc3QgaW50IG1tdmRfZGlyZWN0aW9uX2lkeCA9IG1t dmRfZGlyZWN0aW9uX2lkeF9kZWNvZGUobGMpOworICAgIGNvbnN0IGludCBtbXZkX3NpZ25zW11b Ml0gPSB7IHsxLCAwfSwgey0xLCAwfSwgezAsIDF9LCB7MCwgLTF9IH07CisgICAgbW12ZF9vZmZz ZXQtPnggPSBtbXZkX2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZkX2RpcmVjdGlvbl9pZHhdWzBd OworICAgIG1tdmRfb2Zmc2V0LT55ID0gbW12ZF9kaXN0YW5jZSAqIG1tdmRfc2lnbnNbbW12ZF9k aXJlY3Rpb25faWR4XVsxXTsKK30KKworc3RhdGljIFByZWRNb2RlIGdldF9sdW1hX3ByZWRfbW9k ZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMg ID0gbGMtPmZjOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ID0gbGMtPmN1OworICAgIFByZWRN b2RlIHByZWRfbW9kZTsKKyAgICBpZiAoY3UtPnRyZWVfdHlwZSAhPSBEVUFMX1RSRUVfQ0hST01B KSB7CisgICAgICAgIHByZWRfbW9kZSA9IGN1LT5wcmVkX21vZGU7CisgICAgfSBlbHNlIHsKKyAg ICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICAgID0gY3UtPngwID4+IGZjLT5wcy5zcHMtPm1p bl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgY29uc3QgaW50IHlfY2IgICAgICAgICAgID0gY3Ut PnkwID4+IGZjLT5wcy5zcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgY29uc3QgaW50 IG1pbl9jYl93aWR0aCAgID0gZmMtPnBzLnBwcy0+bWluX2NiX3dpZHRoOworICAgICAgICBwcmVk X21vZGUgPSBTQU1QTEVfQ1RCKGZjLT50YWIuY3BtWzBdLCB4X2NiLCB5X2NiKTsKKyAgICB9Cisg ICAgcmV0dXJuIHByZWRfbW9kZTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9pZHgoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMuc3BzOwor ICAgIGNvbnN0IGludCBpc19pYmMgPSBnZXRfbHVtYV9wcmVkX21vZGUobGMpID09IE1PREVfSUJD OworICAgIGNvbnN0IGludCBjX21heCA9IChpc19pYmMgPyBzcHMtPm1heF9udW1faWJjX21lcmdl X2NhbmQgOiBzcHMtPm1heF9udW1fbWVyZ2VfY2FuZCkgLSAxOworICAgIGludCBpOworCisgICAg aWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3Ig KGkgPSAxOyBpIDwgY19tYXggJiYgZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykK KyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19t ZXJnZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBp ID0gMDsKKworICAgIGZvciAoaW50IGogPSAwOyBqIDwgNjsgaisrKQorICAgICAgICBpID0gKGkg PDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKworICAgIHJldHVybiBpOwor fQorCitpbnQgZmZfdnZjX21lcmdlX2dwbV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg aW50IGlkeCkKK3sKKyAgICBjb25zdCBpbnQgY19tYXggPSBsYy0+ZmMtPnBzLnNwcy0+bWF4X251 bV9ncG1fbWVyZ2VfY2FuZCAtIGlkeCAtIDE7CisgICAgaW50IGk7CisKKyAgICBpZiAoIUdFVF9D QUJBQyhNRVJHRV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoaSA9IDE7IGkg PCBjX21heCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAv KiBub3RoaW5nICovOworCisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfY2lpcF9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDSUlQX0ZMQUcp OworfQorCitQcmVkRmxhZyBmZl92dmNfcHJlZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNv bnN0IGludCBpc19iKQoreworICAgIGNvbnN0IGludCB3ID0gbGMtPmN1LT5jYl93aWR0aDsKKyAg ICBjb25zdCBpbnQgaCA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGlmICghaXNfYikKKyAgICAg ICAgcmV0dXJuICBQRl9MMDsKKyAgICBpZiAodyArIGggPiAxMikgeworICAgICAgICBjb25zdCBp bnQgbG9nMiA9IGF2X2xvZzIodykgKyBhdl9sb2cyKGgpOworICAgICAgICBjb25zdCBpbnQgaW5j ID0gNyAtICgoMSArIGxvZzIpPj4xKTsKKyAgICAgICAgaWYgKEdFVF9DQUJBQyhJTlRFUl9QUkVE X0lEQyArIGluYykpCisgICAgICAgICAgICByZXR1cm4gUEZfQkk7CisgICAgfQorICAgIHJldHVy biBQRl9MMCArIEdFVF9DQUJBQyhJTlRFUl9QUkVEX0lEQyArIDUpOworfQorCitpbnQgZmZfdnZj X2ludGVyX2FmZmluZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50 IGluYyA9IGdldF9pbnRlcl9mbGFnX2luYyhsYywgbGMtPmN1LT54MCwgbGMtPmN1LT55MCk7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRFUl9BRkZJTkVfRkxBRyArIGluYyk7Cit9CisKK2ludCBm Zl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoQ1VfQUZGSU5FX1RZUEVfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc3lt X212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhT WU1fTVZEX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3JlZl9pZHhfbHgoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgdWludDhfdCBuYl9yZWZzKQoreworICAgIGNvbnN0IGludCBjX21heCA9IG5i X3JlZnMgLSAxOworICAgIGNvbnN0IGludCBtYXhfY3R4ID0gRkZNSU4oY19tYXgsIDIpOworICAg IGludCBpID0gMDsKKworICAgIHdoaWxlIChpIDwgbWF4X2N0eCAmJiBHRVRfQ0FCQUMoUkVGX0lE WF9MWCArIGkpKQorICAgICAgICBpKys7CisgICAgaWYgKGkgPT0gMikgeworICAgICAgICB3aGls ZSAoaSA8IGNfbWF4ICYmIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpKQorICAgICAgICAg ICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19hYnNfbXZkX2dy ZWF0ZXIwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFD KEFCU19NVkRfR1JFQVRFUjBfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVy MV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNf TVZEX0dSRUFURVIxX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfbWludXMyKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNv ZGUoJmxjLT5lcC0+Y2MsIDEsIDE1LCAxNyk7Cit9CisKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBnZXRfY2FiYWNfYnlwYXNzKCZs Yy0+ZXAtPmNjKTsKK30KKworaW50IGZmX3Z2Y19tdnBfbHhfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoTVZQX0xYX0ZMQUcpOworfQorCitzdGF0aWMg aW50IGFtdnJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50ZXJfYWZmaW5l X2ZsYWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBTVZSX0ZMQUcgKyBpbnRlcl9hZmZpbmVf ZmxhZyk7Cit9CisKK3N0YXRpYyBpbnQgYW12cl9wcmVjaXNpb25faWR4KFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCBpbmMsIGNvbnN0IGludCBjX21heCkKK3sKKyAgICBpbnQgaSA9IDA7 CisgICAgaWYgKCFHRVRfQ0FCQUMoQU1WUl9QUkVDSVNJT05fSURYICsgaW5jKSkKKyAgICAgICAg cmV0dXJuIDA7CisgICAgaSsrOworICAgIGlmIChpIDwgY19tYXggJiYgR0VUX0NBQkFDKEFNVlJf UFJFQ0lTSU9OX0lEWCArIDEpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2lu dCBmZl92dmNfYW12cl9zaGlmdChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW50ZXJf YWZmaW5lX2ZsYWcsCisgICAgY29uc3QgUHJlZE1vZGUgcHJlZF9tb2RlLCBjb25zdCBpbnQgaGFz X2FtdnJfZmxhZykKK3sKKyAgICBpbnQgYW12cl9zaGlmdCA9IDI7CisgICAgaWYgKGhhc19hbXZy X2ZsYWcpIHsKKyAgICAgICAgaWYgKGFtdnJfZmxhZyhsYywgaW50ZXJfYWZmaW5lX2ZsYWcpKSB7 CisgICAgICAgICAgICBpbnQgaWR4OworICAgICAgICAgICAgaWYgKGludGVyX2FmZmluZV9mbGFn KSB7CisgICAgICAgICAgICAgICAgaWR4ID0gYW12cl9wcmVjaXNpb25faWR4KGxjLCAyLCAxKTsK KyAgICAgICAgICAgICAgICBhbXZyX3NoaWZ0ID0gaWR4ICogNDsKKyAgICAgICAgICAgIH0gZWxz ZSBpZiAocHJlZF9tb2RlID09IE1PREVfSUJDKSB7CisgICAgICAgICAgICAgICAgaWR4ID0gYW12 cl9wcmVjaXNpb25faWR4KGxjLCAxLCAxKTsKKyAgICAgICAgICAgICAgICBhbXZyX3NoaWZ0ID0g NCArIGlkeCAqIDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0YXRp YyBjb25zdCBpbnQgc2hpZnRzW10gPSB7MywgNCwgNn07CisgICAgICAgICAgICAgICAgaWR4ID0g YW12cl9wcmVjaXNpb25faWR4KGxjLCAwLCAyKTsKKyAgICAgICAgICAgICAgICBhbXZyX3NoaWZ0 ID0gc2hpZnRzW2lkeF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0 dXJuIGFtdnJfc2hpZnQ7Cit9CisKK2ludCBmZl92dmNfYmN3X2lkeChWVkNMb2NhbENvbnRleHQg KmxjLCBjb25zdCBpbnQgbm9fYmFja3dhcmRfcHJlZF9mbGFnKQoreworICAgIGNvbnN0IGludCBj X21heCA9IG5vX2JhY2t3YXJkX3ByZWRfZmxhZyA/IDQgOiAyOworICAgIGludCBpID0gMTsKKyAg ICBpZiAoIUdFVF9DQUJBQyhCQ1dfSURYKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgd2hpbGUg KGkgPCBjX21heCAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgaSsr OworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX3R1X2NiX2NvZGVkX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0NCX0NPREVEX0ZMQUcg KyBsYy0+Y3UtPmJkcGNtX2ZsYWdbMV0pOworfQorCitpbnQgZmZfdnZjX3R1X2NyX2NvZGVkX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHR1X2NiX2NvZGVkX2ZsYWcpCit7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhUVV9DUl9DT0RFRF9GTEFHICsgKGxjLT5jdS0+YmRwY21fZmxhZ1sxXSA/ IDIgOiB0dV9jYl9jb2RlZF9mbGFnKSk7Cit9CisKK2ludCBmZl92dmNfdHVfeV9jb2RlZF9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgPSBsYy0+ Y3U7CisgICAgaW50IGluYzsKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbMF0pCisgICAgICAgIGlu YyA9IDE7CisgICAgZWxzZSBpZiAoY3UtPmlzcF9zcGxpdF90eXBlID09IElTUF9OT19TUExJVCkK KyAgICAgICAgaW5jID0gMDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IDIgKyBsYy0+cGFyc2Uu cHJldl90dV9jYmZfeTsKKyAgICBsYy0+cGFyc2UucHJldl90dV9jYmZfeSA9IEdFVF9DQUJBQyhU VV9ZX0NPREVEX0ZMQUcgKyBpbmMpOworICAgIHJldHVybiBsYy0+cGFyc2UucHJldl90dV9jYmZf eTsKK30KKworaW50IGZmX3Z2Y19jdV9xcF9kZWx0YV9hYnMoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICBpbnQgdiwgaSwgazsKKyAgICBpZiAoIUdFVF9DQUJBQyhDVV9RUF9ERUxUQV9BQlMp KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIHByZWZpeFZhbAorICAgIGZvciAodiA9IDE7 IHYgPCA1ICYmIEdFVF9DQUJBQyhDVV9RUF9ERUxUQV9BQlMgKyAxKTsgdisrKQorICAgICAgICAv KiBub3RoaW5nICovOworICAgIGlmICh2IDwgNSkKKyAgICAgICAgcmV0dXJuIHY7CisKKyAgICAv LyA5LjMuMy41IGstdGggb3JkZXIgRXhwLUdvbG9tYiBiaW5hcml6YXRpb24gcHJvY2VzcworICAg IC8vIHN1ZmZpeFZhbAorCisgICAgLy8gQ3VRcERlbHRhVmFsIHNoYWxsIGluIHRoZSByYW5nZSBv ZiDiiJIoIDMyICsgUXBCZE9mZnNldCAvIDIgKSB0byArKCAzMSArIFFwQmRPZmZzZXQgLyAyICkK KyAgICAvLyBzbyBrID0gNiBzaG91bGQgZW5vdWdoCisgICAgZm9yIChrID0gMDsgayA8IDYgJiYg Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGsrKykKKyAgICAgICAgLyogbm90aGluZyAq LzsKKyAgICBpID0gKDEgPDwgaykgLSAxOworICAgIHYgPSAwOworICAgIHdoaWxlIChrLS0pCisg ICAgICAgIHYgPSAodiA8PCAxKSArIGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworICAg IHYgKz0gaTsKKworICAgIHJldHVybiB2ICsgNTsKK30KKworaW50IGZmX3Z2Y19jdV9xcF9kZWx0 YV9zaWduX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFj X2J5cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNl dF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9D SFJPTUFfUVBfT0ZGU0VUX0ZMQUcpOworfQoraW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0 X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBjX21heCA9IGxjLT5m Yy0+cHMucHBzLT5yLT5wcHNfY2hyb21hX3FwX29mZnNldF9saXN0X2xlbl9taW51czE7CisgICAg aW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGNfbWF4ICYmIEdFVF9DQUJBQyhDVV9DSFJPTUFf UVBfT0ZGU0VUX0lEWCk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4g aTsKK30KKworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeHlfcHJlZml4KFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJf c2l6ZSwgY29uc3QgaW50IGxvZzJfem9fdGJfc2l6ZSwgY29uc3QgaW50IGNfaWR4LCBjb25zdCBp bnQgY3R4KQoreworICAgIGludCBpID0gMDsKKyAgICBpbnQgbWF4ID0gKGxvZzJfem9fdGJfc2l6 ZSA8PCAxKSAtIDE7CisgICAgaW50IGN0eF9vZmZzZXQsIGN0eF9zaGlmdDsKKyAgICBpZiAoIWxv ZzJfdGJfc2l6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFjX2lkeCkgeworICAgICAg ICBjb25zdCBpbnQgb2Zmc2V0X3lbXSA9IHswLCAwLCAzLCA2LCAxMCwgMTV9OworICAgICAgICBj dHhfb2Zmc2V0ID0gb2Zmc2V0X3lbbG9nMl90Yl9zaXplIC0gMV07CisgICAgICAgIGN0eF9zaGlm dCAgPSAobG9nMl90Yl9zaXplICsgMSkgPj4gMjsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25z dCBpbnQgc2hpZnRzW10gPSB7MCwgMCwgMCwgMSwgMiwgMiwgMn07CisgICAgICAgIGN0eF9vZmZz ZXQgPSAyMDsKKyAgICAgICAgY3R4X3NoaWZ0ICA9IHNoaWZ0c1tsb2cyX3RiX3NpemVdOworICAg IH0KKyAgICB3aGlsZSAoaSA8IG1heCAmJiBHRVRfQ0FCQUMoY3R4ICsgKGkgPj4gY3R4X3NoaWZ0 KSArIGN0eF9vZmZzZXQpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK3N0YXRp YyBhdl9hbHdheXNfaW5saW5lIGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3hfcHJlZml4X2Rl Y29kZShWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsb2cyX3RiX3dpZHRoLCBj b25zdCBpbnQgbG9nMl96b190Yl93aWR0aCwgY29uc3QgaW50IGNfaWR4KQoreworICAgIHJldHVy biBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9nMl90Yl93aWR0aCwgbG9n Ml96b190Yl93aWR0aCwgY19pZHgsIExBU1RfU0lHX0NPRUZGX1hfUFJFRklYKTsKK30KKworc3Rh dGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeV9wcmVmaXhf ZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJfaGVpZ2h0 LCBjb25zdCBpbnQgbG9nMl96b190Yl9oZWlnaHQsIGNvbnN0IGludCBjX2lkeCkKK3sKKyAgICBy ZXR1cm4gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94eV9wcmVmaXgobGMsIGxvZzJfdGJfaGVpZ2h0 LCBsb2cyX3pvX3RiX2hlaWdodCwgY19pZHgsIExBU1RfU0lHX0NPRUZGX1lfUFJFRklYKTsKK30K Kworc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgaW50IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNv ZGUoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbGFzdF9zaWduaWZpY2FudF9j b2VmZl95X3ByZWZpeCkKK3sKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gKGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeV9wcmVmaXggPj4gMSkgLSAxOworICAgIGludCB2YWx1ZSA9IGdldF9jYWJhY19i eXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBsZW5ndGg7IGkr KykKKyAgICAgICAgdmFsdWUgPSAodmFsdWUgPDwgMSkgfCBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jj cl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB0dV9jYl9jb2Rl ZF9mbGFnLCBjb25zdCBpbnQgdHVfY3JfY29kZWRfZmxhZykKK3sKKyAgICByZXR1cm4gR0VUX0NB QkFDKFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyArIDIgKiB0dV9jYl9jb2RlZF9mbGFnICsg dHVfY3JfY29kZWRfZmxhZyAtIDEpOworfQorCitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1cm4gR0VU X0NBQkFDKFRSQU5TRk9STV9TS0lQX0ZMQUcgKyBpbmMpOworfQorCisvLzkuMy40LjIuNyBEZXJp dmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2YXJpYWJsZXMgbG9jTnVtU2lnLCBsb2NTdW1BYnNQYXNz MQorc3RhdGljIGludCBnZXRfbG9jYWxfc3VtKGNvbnN0IGludCAqbGV2ZWwsIGNvbnN0IGludCB3 LCBjb25zdCBpbnQgaCwKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YywgY29uc3QgaW50 IGhpc3RfdmFsdWUpCit7CisgICAgaW50IGxvY19zdW0gPSAzICogaGlzdF92YWx1ZTsKKyAgICBs ZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBpZiAoeGMgPCB3IC0gMSkgeworICAgICAgICBsb2Nf c3VtICs9IGxldmVsWzFdOworICAgICAgICBpZiAoeGMgPCB3IC0gMikKKyAgICAgICAgICAgIGxv Y19zdW0gKz0gbGV2ZWxbMl0gLSBoaXN0X3ZhbHVlOworICAgICAgICBpZiAoeWMgPCBoIC0gMSkK KyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbdyArIDFdIC0gaGlzdF92YWx1ZTsKKyAgICB9 CisgICAgaWYgKHljIDwgaCAtIDEpIHsKKyAgICAgICAgbG9jX3N1bSArPSBsZXZlbFt3XTsKKyAg ICAgICAgaWYgKHljIDwgaCAtIDIpCisgICAgICAgICAgICBsb2Nfc3VtICs9IGxldmVsW3cgPDwg MV0gLSBoaXN0X3ZhbHVlOworICAgIH0KKyAgICByZXR1cm4gbG9jX3N1bTsKK30KKworLy85LjMu NC4yLjcgRGVyaXZhdGlvbiBwcm9jZXNzIGZvciB0aGUgdmFyaWFibGVzIGxvY051bVNpZywgbG9j U3VtQWJzUGFzczEKK3N0YXRpYyBpbnQgZ2V0X2xvY2FsX3N1bV90cyhjb25zdCBpbnQgKmxldmVs LCBjb25zdCBpbnQgdywgY29uc3QgaW50IGgsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQor eworICAgIGludCBsb2Nfc3VtID0gMDsKKyAgICBsZXZlbCArPSB3ICogeWMgKyB4YzsKKyAgICBp ZiAoeGMgPiAwKQorICAgICAgICBsb2Nfc3VtICs9IGxldmVsWy0xXTsKKyAgICBpZiAoeWMgPiAw KQorICAgICAgICBsb2Nfc3VtICs9IGxldmVsWy13XTsKKyAgICByZXR1cm4gbG9jX3N1bTsKK30K Kworc3RhdGljIGludCBnZXRfZ3R4X2ZsYWdfaW5jKGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywg Y29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMsIGNvbnN0IGludCBsYXN0KQoreworICAgIGNvbnN0 IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworICAgIGlmIChsYXN0 KSB7CisgICAgICAgIGNvbnN0IGludCBpbmNzW10gPSB7MCwgMjEsIDIxfTsKKyAgICAgICAgaW5j ID0gIGluY3NbdGItPmNfaWR4XTsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgZCA9 IHhjICsgeWM7CisgICAgICAgIGNvbnN0IGludCBsb2NhbF9zdW1fc2lnID0gZ2V0X2xvY2FsX3N1 bShyYy0+c2lnX2NvZWZmX2ZsYWcsCisgICAgICAgICAgICAgICAgdGItPnRiX3dpZHRoLHRiLT50 Yl9oZWlnaHQsIHhjLCB5YywgcmMtPmhpc3RfdmFsdWUpOworICAgICAgICBjb25zdCBpbnQgbG9j X3N1bV9hYnNfcGFzczEgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNfbGV2ZWxfcGFzczEsCisgICAg ICAgICAgICAgICAgdGItPnRiX3dpZHRoLCB0Yi0+dGJfaGVpZ2h0LCB4YywgeWMsIHJjLT5oaXN0 X3ZhbHVlKTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldCA9IEZGTUlOKGxvY19zdW1fYWJzX3Bh c3MxIC0gbG9jYWxfc3VtX3NpZywgNCk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpCisgICAg ICAgICAgICBpbmMgPSAgMSArIG9mZnNldCArICghZCA/IDE1IDogKGQgPCAzID8gMTAgOiAoZCA8 IDEwID8gNSA6IDApKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluYyA9IDIyICsgb2Zm c2V0ICsgKCFkID8gNSA6IDApOworICAgIH0KKyAgICByZXR1cm4gaW5jOworfQorCitzdGF0aWMg aW50IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg aW50IGluYykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGlu Yyk7Cit9CisKK3N0YXRpYyBpbnQgcGFyX2xldmVsX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IGludCBpbmMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVWRUxf RkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgcGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGluYyA9IDMyOworICAgIHJldHVy biBHRVRfQ0FCQUMoUEFSX0xFVkVMX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IHNiX2Nv ZGVkX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKnNiX2Nv ZGVkX2ZsYWcsCisgICAgY29uc3QgUmVzaWR1YWxDb2RpbmcgKnJjLCBjb25zdCBpbnQgeHMsIGNv bnN0IGludCB5cykKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCAgID0gbGMt PnNjLT5zaC5yOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAgICAgICAgPSByYy0+dGI7 CisgICAgY29uc3QgaW50IHcgICAgICAgICAgICAgICAgICAgICA9IHJjLT53aWR0aF9pbl9zYnM7 CisgICAgY29uc3QgaW50IGggICAgICAgICAgICAgICAgICAgICA9IHJjLT5oZWlnaHRfaW5fc2Jz OworICAgIGludCBpbmM7CisKKyAgICBpZiAodGItPnRzICYmICFyc2gtPnNoX3RzX3Jlc2lkdWFs X2NvZGluZ19kaXNhYmxlZF9mbGFnKSB7CisgICAgICAgIGNvbnN0IGludCBsZWZ0ID0geHMgPiAw ID8gc2JfY29kZWRfZmxhZ1stMV0gOiAwOworICAgICAgICBjb25zdCBpbnQgYWJvdmUgPSB5cyA+ IDAgPyBzYl9jb2RlZF9mbGFnWy13XSA6IDA7CisgICAgICAgIGluYyA9IGxlZnQgKyBhYm92ZSAr IDQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgaW50IHJpZ2h0ICA9ICh4cyA8IHcgLSAx KSA/IHNiX2NvZGVkX2ZsYWdbMV0gOiAwOworICAgICAgICBjb25zdCBpbnQgYm90dG9tID0gKHlz IDwgaCAtIDEpID8gc2JfY29kZWRfZmxhZ1t3XSA6IDA7CisgICAgICAgIGluYyA9IChyaWdodCB8 IGJvdHRvbSkgKyAodGItPmNfaWR4ID8gMiA6IDApOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NB QkFDKFNCX0NPREVEX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IHNpZ19jb2VmZl9mbGFn X2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNv bnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRl ciAqcnNoICAgPSBsYy0+c2MtPnNoLnI7CisgICAgY29uc3QgVHJhbnNmb3JtQmxvY2sgKnRiICAg ICAgICA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworCisgICAgaWYgKHRiLT50cyAmJiAhcnNoLT5z aF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZykgeworICAgICAgICBjb25zdCBpbnQg bG9jYWxfbnVtX3NpZyA9IGdldF9sb2NhbF9zdW1fdHMocmMtPnNpZ19jb2VmZl9mbGFnLCB0Yi0+ dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7CisgICAgICAgIGluYyA9IDYwICsgbG9j YWxfbnVtX3NpZzsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBpbnQgZCA9IHhjICsgeWM7 CisgICAgICAgIGNvbnN0IGludCBsb2Nfc3VtX2Fic19wYXNzMSA9IGdldF9sb2NhbF9zdW0ocmMt PmFic19sZXZlbF9wYXNzMSwKKyAgICAgICAgICAgICAgICB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9o ZWlnaHQsIHhjLCB5YywgMCk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpIHsKKyAgICAgICAg ICAgIGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1f YWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQgPCAyKSA/IDggOiAoZCA8IDUgPyA0IDogMCkp OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5jID0gMzYgKyA4ICogRkZNQVgoMCwg cmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykg KyAoZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJB QyhTSUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2dldF9yaWNlX3Bh cmFtKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljLCBjb25z dCBpbnQgYmFzZV9sZXZlbCkKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9IGxjLT5mYy0+cHMu c3BzOworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrKiB0YiA9IHJjLT50YjsKKyAgICBjb25zdCBp bnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwg MSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwg MiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9OworICAgIGludCBsb2Nfc3VtX2FiczsKKyAgICBp bnQgc2hpZnRfdmFsOworCisgICAgbG9jX3N1bV9hYnMgPSBnZXRfbG9jYWxfc3VtKHJjLT5hYnNf bGV2ZWwsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hlaWdodCwgeGMsCisgICAgICAgICAgICB5Yywg cmMtPmhpc3RfdmFsdWUpOworCisgICAgaWYgKCFzcHMtPnItPnNwc19ycmNfcmljZV9leHRlbnNp b25fZmxhZykgeworICAgICAgICBzaGlmdF92YWwgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAg IHNoaWZ0X3ZhbCA9IChhdl9sb2cyKEZGTUFYKEZGTUlOKGxvY19zdW1fYWJzLCAyMDQ4KSwgOCkp IC0gMykgJiB+MTsKKyAgICB9CisKKyAgICBsb2Nfc3VtX2FicyA9IGF2X2NsaXBfdWludHAyKChs b2Nfc3VtX2FicyA+PiBzaGlmdF92YWwpIC0gYmFzZV9sZXZlbCAqIDUsIDUpOworCisgICAgcmV0 dXJuIHJpY2VfcGFyYW1zW2xvY19zdW1fYWJzXSArIHNoaWZ0X3ZhbDsKK30KKworc3RhdGljIGlu dCBhYnNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBjX3JpY2VfcGFyYW0p Cit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBp bnQgTUFYX0JJTiA9IDY7CisgICAgaW50IHByZWZpeCA9IDA7CisgICAgaW50IHN1ZmZpeCA9IDA7 CisKKyAgICB3aGlsZSAocHJlZml4IDwgTUFYX0JJTiAmJiBnZXRfY2FiYWNfYnlwYXNzKCZsYy0+ ZXAtPmNjKSkKKyAgICAgICAgcHJlZml4Kys7CisgICAgaWYgKHByZWZpeCA8IE1BWF9CSU4pIHsK KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjX3JpY2VfcGFyYW07IGkrKykgeworICAgICAg ICAgICAgc3VmZml4ID0gKHN1ZmZpeCA8PCAxKSB8IGdldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+ Y2MpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3VmZml4ID0gbGltaXRlZF9r dGhfb3JkZXJfZWdrX2RlY29kZSgmbGMtPmVwLT5jYywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjX3JpY2VfcGFyYW0gKyAxLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2IC0gc3BzLT5sb2cyX3RyYW5zZm9ybV9y YW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHMt PmxvZzJfdHJhbnNmb3JtX3JhbmdlKTsKKyAgICB9CisgICAgcmV0dXJuIHN1ZmZpeCArIChwcmVm aXggPDwgY19yaWNlX3BhcmFtKTsKK30KKworc3RhdGljIGludCBhYnNfcmVtYWluZGVyX2RlY29k ZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGlu dCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFZWQ1NQUyAqc3BzICAgICAgICAgICAg PSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBIMjY2UmF3U2xpY2VIZWFkZXIgKnJzaCA9IGxj LT5zYy0+c2gucjsKKyAgICBjb25zdCBpbnQgYmFzZV9sZXZlbFtdWzJdWzJdID0geworICAgICAg ICB7IHs0LCA0fSwgezQsIDR9IH0sCisgICAgICAgIHsgezMsIDJ9LCB7MiwgMX0gfQorICAgIH07 CisgICAgY29uc3QgaW50IGNfcmljZV9wYXJhbSA9IGFic19nZXRfcmljZV9wYXJhbShsYywgcmMs IHhjLCB5YywKKyAgICAgICAgYmFzZV9sZXZlbFtzcHMtPnItPnNwc19ycmNfcmljZV9leHRlbnNp b25fZmxhZ11bc3BzLT5iaXRfZGVwdGggPiAxMl1bSVNfSShyc2gpXSk7CisgICAgY29uc3QgaW50 IHJlbSA9IGFic19kZWNvZGUobGMsIGNfcmljZV9wYXJhbSk7CisgICAgcmV0dXJuIHJlbTsKK30K Kworc3RhdGljIGludCBhYnNfcmVtYWluZGVyX3RzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxj LCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQor eworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRlciAqcnNoID0gbGMtPnNjLT5zaC5yOworICAg IGNvbnN0IGludCBjX3JpY2VfcGFyYW0gPSByc2gtPnNoX3RzX3Jlc2lkdWFsX2NvZGluZ19yaWNl X2lkeF9taW51czEgKyAxOworICAgIGNvbnN0IGludCByZW0gPSBhYnNfZGVjb2RlKGxjLCBjX3Jp Y2VfcGFyYW0pOworCisgICAgcmV0dXJuIHJlbTsKK30KKworc3RhdGljIGludCBjb2VmZl9zaWdu X2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJh Y19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCisvLzkuMy40LjIuMTAgRGVyaXZhdGlvbiBwcm9j ZXNzIG9mIGN0eEluYyBmb3IgdGhlIHN5bnRheCBlbGVtZW50IGNvZWZmX3NpZ25fZmxhZyBmb3Ig dHJhbnNmb3JtIHNraXAgbW9kZQorc3RhdGljIGludCBjb2VmZl9zaWduX2ZsYWdfdHNfZGVjb2Rl KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IENvZGluZ1VuaXQgKmN1LCBjb25zdCBSZXNpZHVh bENvZGluZyAqcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFRy YW5zZm9ybUJsb2NrICp0YiAgICA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgdyAgICAgICAgICAg ICAgICAgPSB0Yi0+dGJfd2lkdGg7CisgICAgY29uc3QgaW50ICpsZXZlbCAgICAgICAgICAgID0g cmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyB5YyAqIHcgKyB4YzsKKyAgICBjb25zdCBpbnQgbGVmdF9z aWduICAgICAgICAgPSAoeGMgPT0gMCkgPyAwIDogbGV2ZWxbLTFdOworICAgIGNvbnN0IGludCBh Ym92ZV9zaWduICAgICAgICA9ICh5YyA9PSAwKSA/IDAgOiBsZXZlbFstd107CisgICAgY29uc3Qg aW50IGJkcGNtX2ZsYWcgICAgICAgID0gY3UtPmJkcGNtX2ZsYWdbdGItPmNfaWR4XTsKKyAgICBp bnQgaW5jOworCisgICAgaWYgKGxlZnRfc2lnbiA9PSAtYWJvdmVfc2lnbikKKyAgICAgICAgaW5j ID0gYmRwY21fZmxhZyA9PSAwID8gMCA6IDM7CisgICAgZWxzZSBpZiAobGVmdF9zaWduID49IDAg JiYgYWJvdmVfc2lnbiA+PSAwKQorICAgICAgICBpbmMgPSBiZHBjbV9mbGFnID09IDAgPyAxIDog NDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IGJkcGNtX2ZsYWcgPT0gMCA/IDIgOiA1OworICAg IHJldHVybiBHRVRfQ0FCQUMoQ09FRkZfU0lHTl9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGlu dCBhYnNfbGV2ZWxfZ3QxX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0 IENvZGluZ1VuaXQgKmN1LCBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0IGludCB4Yywg Y29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsK KyAgICBjb25zdCBpbnQgKnNpZ19jb2VmZl9mbGFnID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgeWMg KiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICBpbnQgaW5jOworCisgICAgaWYgKGN1LT5iZHBjbV9m bGFnW3RiLT5jX2lkeF0pIHsKKyAgICAgICAgaW5jID0gNjc7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgY29uc3QgaW50IGwgPSB4YyA+IDAgPyBzaWdfY29lZmZfZmxhZ1stMV0gOiAwOworICAgICAg ICBjb25zdCBpbnQgYSA9IHljID4gMCA/IHNpZ19jb2VmZl9mbGFnWy10Yi0+dGJfd2lkdGhdIDog MDsKKyAgICAgICAgaW5jID0gNjQgKyBhICsgbDsKKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJB QyhBQlNfTEVWRUxfR1RYX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50IGFic19sZXZlbF9n dHhfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGopCit7Cisg ICAgY29uc3QgaW50IGluYyA9IDY3ICsgajsKKyAgICByZXR1cm4gR0VUX0NBQkFDKEFCU19MRVZF TF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50OF90IHFzdGF0ZV90cmFu c2xhdGVfdGFibGVbXVsyXSA9IHsKKyAgICB7IDAsIDIgfSwgeyAyLCAwIH0sIHsgMSwgMyB9LCB7 IDMsIDEgfQorfTsKKworc3RhdGljIGludCBkZWNfYWJzX2xldmVsX2RlY29kZShWVkNMb2NhbENv bnRleHQgKmxjLCBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsCisgICAgY29uc3QgaW50IHhjLCBj b25zdCBpbnQgeWMsIGludCAqYWJzX2xldmVsKQoreworICAgIGNvbnN0IGludCBjX3JpY2VfcGFy YW0gID0gYWJzX2dldF9yaWNlX3BhcmFtKGxjLCByYywgeGMsIHljLCAwKTsKKyAgICBjb25zdCBp bnQgZGVjX2Fic19sZXZlbCA9ICBhYnNfZGVjb2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIGNv bnN0IGludCB6ZXJvX3BvcyAgICAgID0gKHJjLT5xc3RhdGUgPCAyID8gMSA6IDIpIDw8IGNfcmlj ZV9wYXJhbTsKKworICAgICphYnNfbGV2ZWwgPSAwOworICAgIGlmIChkZWNfYWJzX2xldmVsICE9 IHplcm9fcG9zKSB7CisgICAgICAgICphYnNfbGV2ZWwgPSBkZWNfYWJzX2xldmVsOworICAgICAg ICBpZiAoZGVjX2Fic19sZXZlbCA8IHplcm9fcG9zKQorICAgICAgICAgICAgKmFic19sZXZlbCAr PSAxOworICAgIH0KKyAgICByZXR1cm4gZGVjX2Fic19sZXZlbDsKK30KKworc3RhdGljIHZvaWQg ZXBfdXBkYXRlX2hpc3QoRW50cnlQb2ludCAqZXAsIFJlc2lkdWFsQ29kaW5nICpyYywKKyAgICBj b25zdCBpbnQgcmVtYWluZGVyLCBjb25zdCBpbnQgYWRkaW4pCit7CisgICAgaW50ICpzdGF0ID0g ZXAtPnN0YXRfY29lZmYgKyByYy0+dGItPmNfaWR4OworICAgIGlmIChyYy0+dXBkYXRlX2hpc3Qg JiYgcmVtYWluZGVyID4gMCkgeworICAgICAgICAqc3RhdCA9ICgqc3RhdCArIGF2X2xvZzIocmVt YWluZGVyKSArIGFkZGluKSA+PiAxOworICAgICAgICByYy0+dXBkYXRlX2hpc3QgPSAwOworICAg IH0KK30KKworc3RhdGljIHZvaWQgaW5pdF9yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0 ICpsYywgUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgICAgICBjb25zdCBpbnQgbG9nMl96b190Yl93 aWR0aCwgY29uc3QgaW50IGxvZzJfem9fdGJfaGVpZ2h0LAorICAgICAgICBUcmFuc2Zvcm1CbG9j ayAqdGIpCit7CisgICAgY29uc3QgVlZDU1BTICpzcHMgICA9IGxjLT5mYy0+cHMuc3BzOworICAg IGludCBsb2cyX3NiX3cgPSAoRkZNSU4obG9nMl96b190Yl93aWR0aCwgbG9nMl96b190Yl9oZWln aHQgKSA8IDIgPyAxIDogMiApOworICAgIGludCBsb2cyX3NiX2ggPSBsb2cyX3NiX3c7CisKKyAg ICBpZiAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cyX3pvX3RiX2hlaWdodCA+IDMgKSB7CisgICAg ICAgIGlmICggbG9nMl96b190Yl93aWR0aCA8IDIgKSB7CisgICAgICAgICAgICBsb2cyX3NiX3cg PSBsb2cyX3pvX3RiX3dpZHRoOworICAgICAgICAgICAgbG9nMl9zYl9oID0gNCAtIGxvZzJfc2Jf dzsKKyAgICAgICAgfSBlbHNlIGlmICggbG9nMl96b190Yl9oZWlnaHQgPCAyICkgeworICAgICAg ICAgICAgbG9nMl9zYl9oID0gbG9nMl96b190Yl9oZWlnaHQ7CisgICAgICAgICAgICBsb2cyX3Ni X3cgPSA0IC0gbG9nMl9zYl9oOworICAgICAgICB9CisgICAgfQorICAgIHJjLT5sb2cyX3NiX3cg PSBsb2cyX3NiX3c7CisgICAgcmMtPmxvZzJfc2JfaCA9IGxvZzJfc2JfaDsKKyAgICByYy0+bnVt X3NiX2NvZWZmICAgPSAxIDw8IChsb2cyX3NiX3cgKyBsb2cyX3NiX2gpOworICAgIHJjLT5sYXN0 X3N1Yl9ibG9jayA9ICggMSA8PCAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cyX3pvX3RiX2hlaWdo dCAtIChsb2cyX3NiX3cgKyBsb2cyX3NiX2gpKSkgLSAxOworICAgIHJjLT5oaXN0X3ZhbHVlICAg ICA9IHNwcy0+ci0+c3BzX3BlcnNpc3RlbnRfcmljZV9hZGFwdGF0aW9uX2VuYWJsZWRfZmxhZyA/ ICgxIDw8IGxjLT5lcC0+c3RhdF9jb2VmZlt0Yi0+Y19pZHhdKSA6IDA7CisgICAgcmMtPnVwZGF0 ZV9oaXN0ICAgID0gc3BzLT5yLT5zcHNfcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxl ZF9mbGFnID8gMSA6IDA7CisgICAgcmMtPnJlbV9iaW5zX3Bhc3MxID0gKCggMSA8PCAoIGxvZzJf em9fdGJfd2lkdGggKyBsb2cyX3pvX3RiX2hlaWdodCkpICogNyApID4+IDI7CisKKworICAgIHJj LT5zYl9zY2FuX3hfb2ZmID0gZmZfdnZjX2RpYWdfc2Nhbl94W2xvZzJfem9fdGJfd2lkdGggLSBs b2cyX3NiX3ddW2xvZzJfem9fdGJfaGVpZ2h0IC0gbG9nMl9zYl9oXTsKKyAgICByYy0+c2Jfc2Nh bl95X29mZiA9IGZmX3Z2Y19kaWFnX3NjYW5feVtsb2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9zYl93 XVtsb2cyX3pvX3RiX2hlaWdodCAtIGxvZzJfc2JfaF07CisKKyAgICByYy0+c2Nhbl94X29mZiA9 IGZmX3Z2Y19kaWFnX3NjYW5feFtsb2cyX3NiX3ddW2xvZzJfc2JfaF07CisgICAgcmMtPnNjYW5f eV9vZmYgPSBmZl92dmNfZGlhZ19zY2FuX3lbbG9nMl9zYl93XVtsb2cyX3NiX2hdOworCisgICAg cmMtPmluZmVyX3NiX2NiZiA9IDE7CisKKyAgICByYy0+d2lkdGhfaW5fc2JzICA9ICgxIDw8IChs b2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9zYl93KSk7CisgICAgcmMtPmhlaWdodF9pbl9zYnMgPSAo MSA8PCAobG9nMl96b190Yl9oZWlnaHQgLSBsb2cyX3NiX2gpKTsKKyAgICByYy0+bmJfc2JzICAg ICAgICA9IHJjLT53aWR0aF9pbl9zYnMgKiByYy0+aGVpZ2h0X2luX3NiczsKKworICAgIHJjLT5s YXN0X3NjYW5fcG9zID0gcmMtPm51bV9zYl9jb2VmZjsKKyAgICByYy0+cXN0YXRlICAgICAgICA9 IDA7CisKKyAgICByYy0+dGIgPSB0YjsKK30KKworc3RhdGljIGludCByZXNpZHVhbF90c19jb2Rp bmdfc3ViYmxvY2soVlZDTG9jYWxDb250ZXh0ICpsYywgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25z dCBpbnQgaSkKK3sKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICA9IGxjLT5jdTsKKyAgICBU cmFuc2Zvcm1CbG9jayAqdGIgICAgICA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgYmRwY21fZmxh ZyAgICA9IGN1LT5iZHBjbV9mbGFnW3RiLT5jX2lkeF07CisgICAgY29uc3QgaW50IHhzICAgICAg ICAgICAgPSByYy0+c2Jfc2Nhbl94X29mZltpXTsKKyAgICBjb25zdCBpbnQgeXMgICAgICAgICAg ICA9IHJjLT5zYl9zY2FuX3lfb2ZmW2ldOworICAgIHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcgID0g cmMtPnNiX2NvZGVkX2ZsYWcgKyB5cyAqIHJjLT53aWR0aF9pbl9zYnMgKyB4czsKKyAgICBpbnQg aW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIGludCBsYXN0X3NjYW5fcG9zX3Bhc3Mx ID0gLTEsIGxhc3Rfc2Nhbl9wb3NfcGFzczIgPSAtMSwgbjsKKyAgICBpbnQgYWJzX2xldmVsX2d0 eF9mbGFnW01BWF9TVUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRV07CisgICAgaW50 IGFic19sZXZlbF9wYXNzMltNQVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVd OyAgICAgICAvLy88IEFic0xldmVsUGFzczIKKworICAgIGlmIChpICE9IHJjLT5sYXN0X3N1Yl9i bG9jayB8fCAhcmMtPmluZmVyX3NiX2NiZikKKyAgICAgICAgKnNiX2NvZGVkX2ZsYWcgPSBzYl9j b2RlZF9mbGFnX2RlY29kZShsYywgc2JfY29kZWRfZmxhZywgcmMsIHhzLCB5cyk7CisgICAgZWxz ZQorICAgICAgICAqc2JfY29kZWRfZmxhZyA9IDE7CisgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYm IGkgPCByYy0+bGFzdF9zdWJfYmxvY2spCisgICAgICAgIHJjLT5pbmZlcl9zYl9jYmYgPSAwOwor CisgICAgLy9maXJzdCBzY2FuIHBhc3MKKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9j b2VmZiAmJiByYy0+cmVtX2JpbnNfcGFzczEgPj0gNDsgbisrKSB7CisgICAgICAgIGNvbnN0IGlu dCB4YyAgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAg ICAgY29uc3QgaW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2Zm W25dOworICAgICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAg ICAgICAgaW50ICpzaWdfY29lZmZfZmxhZyAgID0gcmMtPnNpZ19jb2VmZl9mbGFnICsgb2ZmOwor ICAgICAgICBpbnQgKmFic19sZXZlbF9wYXNzMSAgPSByYy0+YWJzX2xldmVsX3Bhc3MxICsgb2Zm OworICAgICAgICBpbnQgKmNvZWZmX3NpZ25fbGV2ZWwgPSByYy0+Y29lZmZfc2lnbl9sZXZlbCAr IG9mZjsKKyAgICAgICAgaW50IHBhcl9sZXZlbF9mbGFnICAgID0gMDsKKworICAgICAgICBhYnNf bGV2ZWxfZ3R4X2ZsYWdbbl0gPSAwOworICAgICAgICBsYXN0X3NjYW5fcG9zX3Bhc3MxID0gbjsK KyAgICAgICAgaWYgKCpzYl9jb2RlZF9mbGFnICYmIChuICE9IHJjLT5udW1fc2JfY29lZmYgLSAx IHx8ICFpbmZlcl9zYl9zaWdfY29lZmZfZmxhZykpIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZf ZmxhZyA9IHNpZ19jb2VmZl9mbGFnX2RlY29kZShsYywgcmMsIHhjLCB5Yyk7CisgICAgICAgICAg ICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAgIGlmICgqc2lnX2NvZWZmX2ZsYWcp CisgICAgICAgICAgICAgICAgaW5mZXJfc2Jfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9mbGFnID0gKG4gPT0gcmMtPm51bV9zYl9j b2VmZiAtIDEpICYmIGluZmVyX3NiX3NpZ19jb2VmZl9mbGFnICYmICpzYl9jb2RlZF9mbGFnOwor ICAgICAgICB9CisgICAgICAgICpjb2VmZl9zaWduX2xldmVsID0gMDsKKyAgICAgICAgaWYgKCpz aWdfY29lZmZfZmxhZykgeworICAgICAgICAgICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAxIC0gMiAq IGNvZWZmX3NpZ25fZmxhZ190c19kZWNvZGUobGMsIGN1LCByYywgeGMsIHljKTsKKyAgICAgICAg ICAgIGFic19sZXZlbF9ndHhfZmxhZ1tuXSA9IGFic19sZXZlbF9ndDFfZmxhZ190c19kZWNvZGUo bGMsIGN1LCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMSAtPSAy OworICAgICAgICAgICAgaWYgKGFic19sZXZlbF9ndHhfZmxhZ1tuXSkgeworICAgICAgICAgICAg ICAgIHBhcl9sZXZlbF9mbGFnID0gcGFyX2xldmVsX2ZsYWdfdHNfZGVjb2RlKGxjKTsKKyAgICAg ICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgICAgICAqYWJzX2xldmVsX3Bhc3MxID0gKnNpZ19jb2VmZl9mbGFnICsgcGFyX2xldmVs X2ZsYWcgKyBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl07CisgICAgfQorCisgICAgLy9ncmVhdGVyIHRo YW4geCBzY2FuIHBhc3MKKyAgICBmb3IgKG4gPSAwOyBuIDwgcmMtPm51bV9zYl9jb2VmZiAmJiBy Yy0+cmVtX2JpbnNfcGFzczEgPj0gNDsgbisrKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgPSAo eHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsKKyAgICAgICAgY29uc3Qg aW50IHljICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAg ICAgICBjb25zdCBpbnQgb2ZmID0geWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKworICAgICAgICBh YnNfbGV2ZWxfcGFzczJbbl0gPSByYy0+YWJzX2xldmVsX3Bhc3MxW29mZl07CisgICAgICAgIGZv ciAoaW50IGogPSAxOyBqIDwgNSAmJiBhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl07IGorKykgeworICAg ICAgICAgICAgYWJzX2xldmVsX2d0eF9mbGFnW25dID0gYWJzX2xldmVsX2d0eF9mbGFnX3RzX2Rl Y29kZShsYywgaik7CisgICAgICAgICAgICBhYnNfbGV2ZWxfcGFzczJbbl0gKz0gYWJzX2xldmVs X2d0eF9mbGFnW25dIDw8IDE7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAg ICAgICAgfQorICAgICAgICBsYXN0X3NjYW5fcG9zX3Bhc3MyID0gbjsKKyAgICB9CisKKyAgICAv KiByZW1haW5kZXIgc2NhbiBwYXNzICovCisgICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2Jf Y29lZmY7IG4rKykgeworICAgICAgICBjb25zdCBpbnQgeGMgID0gKHhzIDw8IHJjLT5sb2cyX3Ni X3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgPSAoeXMgPDwg cmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9m ZiA9IHljICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGNvbnN0IGludCAqYWJzX2xldmVs X3Bhc3MxICA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyBvZmY7CisgICAgICAgIGludCAqYWJzX2xl dmVsICAgICAgICAgICAgICA9IHJjLT5hYnNfbGV2ZWwgKyBvZmY7CisgICAgICAgIGludCAqY29l ZmZfc2lnbl9sZXZlbCAgICAgICA9IHJjLT5jb2VmZl9zaWduX2xldmVsICsgb2ZmOworICAgICAg ICBpbnQgYWJzX3JlbWFpbmRlciA9IDA7CisKKyAgICAgICAgaWYgKChuIDw9IGxhc3Rfc2Nhbl9w b3NfcGFzczIgJiYgYWJzX2xldmVsX3Bhc3MyW25dID49IDEwKSB8fAorICAgICAgICAgICAgKG4g PiBsYXN0X3NjYW5fcG9zX3Bhc3MyICYmIG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMSAmJgorICAg ICAgICAgICAgKmFic19sZXZlbF9wYXNzMSA+PSAyKSB8fAorICAgICAgICAgICAgKG4gPiBsYXN0 X3NjYW5fcG9zX3Bhc3MxICYmICAqc2JfY29kZWRfZmxhZykpCisgICAgICAgICAgICBhYnNfcmVt YWluZGVyID0gYWJzX3JlbWFpbmRlcl90c19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAg ICBpZiAobiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MyKSB7CisgICAgICAgICAgICAqYWJzX2xldmVs ID0gYWJzX2xldmVsX3Bhc3MyW25dICsgMiAqIGFic19yZW1haW5kZXI7CisgICAgICAgIH0gZWxz ZSBpZiAobiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MxKSB7CisgICAgICAgICAgICAqYWJzX2xldmVs ID0gKmFic19sZXZlbF9wYXNzMSArIDIgKiBhYnNfcmVtYWluZGVyOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgKmFic19sZXZlbCA9IGFic19yZW1haW5kZXI7CisgICAgICAgICAgICBp ZiAoYWJzX3JlbWFpbmRlcikgeworICAgICAgICAgICAgICAgIC8vbiA+IGxhc3RTY2FuUG9zUGFz czEKKyAgICAgICAgICAgICAgICAqY29lZmZfc2lnbl9sZXZlbCA9IDEgLSAyICogY29lZmZfc2ln bl9mbGFnX2RlY29kZShsYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg KCFiZHBjbV9mbGFnICYmIG4gPD0gbGFzdF9zY2FuX3Bvc19wYXNzMSkgeworICAgICAgICAgICAg Y29uc3QgaW50IGxlZnQgID0geGMgPiAwID8gYWJzX2xldmVsWy0xXSA6IDA7CisgICAgICAgICAg ICBjb25zdCBpbnQgYWJvdmUgPSB5YyA+IDAgPyBhYnNfbGV2ZWxbLXRiLT50Yl93aWR0aF0gOiAw OworICAgICAgICAgICAgY29uc3QgaW50IHByZWQgPSBGRk1BWChsZWZ0LCBhYm92ZSk7CisKKyAg ICAgICAgICAgIGlmICgqYWJzX2xldmVsID09IDEgJiYgcHJlZCA+IDApCisgICAgICAgICAgICAg ICAgKmFic19sZXZlbCA9IHByZWQ7CisgICAgICAgICAgICBlbHNlIGlmICgqYWJzX2xldmVsID4g MCAmJiAqYWJzX2xldmVsIDw9IHByZWQpCisgICAgICAgICAgICAgICAgKCphYnNfbGV2ZWwpLS07 CisgICAgICAgIH0KKyAgICAgICAgaWYgKCphYnNfbGV2ZWwpIHsKKyAgICAgICAgICAgIHRiLT5j b2VmZnNbb2ZmXSA9ICpjb2VmZl9zaWduX2xldmVsICogKmFic19sZXZlbDsKKyAgICAgICAgICAg IHRiLT5tYXhfc2Nhbl94ID0gRkZNQVgoeGMsIHRiLT5tYXhfc2Nhbl94KTsKKyAgICAgICAgICAg IHRiLT5tYXhfc2Nhbl95ID0gRkZNQVgoeWMsIHRiLT5tYXhfc2Nhbl95KTsKKyAgICAgICAgICAg IHRiLT5taW5fc2Nhbl94ID0gRkZNSU4oeGMsIHRiLT5taW5fc2Nhbl94KTsKKyAgICAgICAgICAg IHRiLT5taW5fc2Nhbl95ID0gRkZNSU4oeWMsIHRiLT5taW5fc2Nhbl95KTsKKyAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgIHRiLT5jb2VmZnNbb2ZmXSA9IDA7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBobHNfcmVzaWR1YWxfdHNfY29kaW5n KFZWQ0xvY2FsQ29udGV4dCAqbGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBSZXNpZHVh bENvZGluZyByYzsKKyAgICB0Yi0+bWluX3NjYW5feCA9IHRiLT5taW5fc2Nhbl95ID0gSU5UX01B WDsKKyAgICBpbml0X3Jlc2lkdWFsX2NvZGluZyhsYywgJnJjLCB0Yi0+bG9nMl90Yl93aWR0aCwg dGItPmxvZzJfdGJfaGVpZ2h0LCB0Yik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmMubGFz dF9zdWJfYmxvY2s7IGkrKykgeworICAgICAgICBpbnQgcmV0ID0gcmVzaWR1YWxfdHNfY29kaW5n X3N1YmJsb2NrKGxjLCAmcmMsIGkpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAg IHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUg aW50IHJlc2lkdWFsX2NvZGluZ19zdWJibG9jayhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVh bENvZGluZyAqcmMsIGNvbnN0IGludCBpKQoreworICAgIGNvbnN0IEgyNjZSYXdTbGljZUhlYWRl ciAqcnNoICAgPSBsYy0+c2MtPnNoLnI7CisgICAgVHJhbnNmb3JtQmxvY2sgKnRiICAgICAgICAg ICAgICA9IHJjLT50YjsKKyAgICBpbnQgZmlyc3Rfc2lnX3NjYW5fcG9zX3NiLCBsYXN0X3NpZ19z Y2FuX3Bvc19zYjsKKyAgICBpbnQgZmlyc3RfcG9zX21vZGUwLCBmaXJzdF9wb3NfbW9kZTE7Cisg ICAgaW50IGluZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAgICBpbnQgbiwgc2lnX2hp ZGRlbl9mbGFnLCBzdW0gPSAwOworICAgIGludCBhYnNfbGV2ZWxfZ3QyX2ZsYWdbTUFYX1NVQl9C TE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFXTsKKyAgICBjb25zdCBpbnQgc3RhcnRfcXN0 YXRlX3NiID0gcmMtPnFzdGF0ZTsKKyAgICBjb25zdCBpbnQgeHMgPSByYy0+c2Jfc2Nhbl94X29m ZltpXTsKKyAgICBjb25zdCBpbnQgeXMgPSByYy0+c2Jfc2Nhbl95X29mZltpXTsKKyAgICB1aW50 OF90ICpzYl9jb2RlZF9mbGFnID0gcmMtPnNiX2NvZGVkX2ZsYWcgKyB5cyAqIHJjLT53aWR0aF9p bl9zYnMgKyB4czsKKworCisgICAgYXZfYXNzZXJ0MChyYy0+bnVtX3NiX2NvZWZmIDw9IE1BWF9T VUJfQkxPQ0tfU0laRSAqIE1BWF9TVUJfQkxPQ0tfU0laRSk7CisgICAgaWYgKGkgPCByYy0+bGFz dF9zdWJfYmxvY2sgJiYgaSA+IDApIHsKKyAgICAgICAgKnNiX2NvZGVkX2ZsYWcgPSBzYl9jb2Rl ZF9mbGFnX2RlY29kZShsYywgc2JfY29kZWRfZmxhZywgcmMsIHhzLCB5cyk7CisgICAgICAgIGlu ZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICAqc2Jf Y29kZWRfZmxhZyA9IDE7CisgICAgfQorICAgIGlmICgqc2JfY29kZWRfZmxhZyAmJiAoeHMgPiAz IHx8IHlzID4gMykgJiYgdGItPmNfaWR4ID09IDApCisgICAgICAgIGxjLT5wYXJzZS5tdHNfemVy b19vdXRfc2lnX2NvZWZmX2ZsYWcgPSAwOworCisgICAgaWYgKCEqc2JfY29kZWRfZmxhZykKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IgPSByYy0+bnVtX3Ni X2NvZWZmOworICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gLTE7CisgICAgZmlyc3RfcG9zX21v ZGUwID0gKGkgPT0gcmMtPmxhc3Rfc3ViX2Jsb2NrID8gcmMtPmxhc3Rfc2Nhbl9wb3MgOiByYy0+ bnVtX3NiX2NvZWZmIC0xKTsKKyAgICBmaXJzdF9wb3NfbW9kZTEgPSBmaXJzdF9wb3NfbW9kZTA7 CisgICAgZm9yIChuID0gZmlyc3RfcG9zX21vZGUwOyBuID49IDAgJiYgcmMtPnJlbV9iaW5zX3Bh c3MxID49IDQ7IG4tLSkgeworICAgICAgICBjb25zdCBpbnQgeGMgICA9ICh4cyA8PCByYy0+bG9n Ml9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgICA9ICh5 cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25dOworICAgICAgICBjb25zdCBp bnQgbGFzdCA9ICh4YyA9PSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl94ICYmIHljID09IHJj LT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3kpOworICAgICAgICBpbnQgKmFic19sZXZlbF9wYXNz MSA9IHJjLT5hYnNfbGV2ZWxfcGFzczEgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAg ICBpbnQgKnNpZ19jb2VmZl9mbGFnICA9IHJjLT5zaWdfY29lZmZfZmxhZyArIHljICogdGItPnRi X3dpZHRoICsgeGM7CisKKyAgICAgICAgaWYgKChuID4gMCB8fCAhaW5mZXJfc2JfZGNfc2lnX2Nv ZWZmX2ZsYWcgKSAmJiAhbGFzdCkgeworICAgICAgICAgICAgKnNpZ19jb2VmZl9mbGFnID0gc2ln X2NvZWZmX2ZsYWdfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIHJjLT5yZW1f Ymluc19wYXNzMS0tOworICAgICAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykKKyAgICAgICAg ICAgICAgICBpbmZlcl9zYl9kY19zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSBsYXN0IHx8ICghcmMtPnNjYW5feF9vZmZb bl0gJiYgIXJjIC0+c2Nhbl95X29mZltuXSAmJgorICAgICAgICAgICAgICAgIGluZmVyX3NiX2Rj X3NpZ19jb2VmZl9mbGFnKTsKKyAgICAgICAgfQorICAgICAgICAqYWJzX2xldmVsX3Bhc3MxID0g MDsKKyAgICAgICAgaWYgKCpzaWdfY29lZmZfZmxhZykgeworICAgICAgICAgICAgaW50IGFic19s ZXZlbF9ndDFfZmxhZywgcGFyX2xldmVsX2ZsYWcgPSAwOworICAgICAgICAgICAgY29uc3QgaW50 IGluYyA9IGdldF9ndHhfZmxhZ19pbmMocmMsIHhjLCB5YywgbGFzdCk7CisgICAgICAgICAgICBh YnNfbGV2ZWxfZ3QxX2ZsYWcgPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxjLCBpbmMpOwor ICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICBpZiAoYWJzX2xl dmVsX2d0MV9mbGFnKSB7CisgICAgICAgICAgICAgICAgcGFyX2xldmVsX2ZsYWcgPSBwYXJfbGV2 ZWxfZmxhZ19kZWNvZGUobGMsIGluYyk7CisgICAgICAgICAgICAgICAgYWJzX2xldmVsX2d0Ml9m bGFnW25dID0gYWJzX2xldmVsX2d0eF9mbGFnX2RlY29kZShsYywgaW5jICsgMzIpOworICAgICAg ICAgICAgICAgIHJjLT5yZW1fYmluc19wYXNzMSAtPSAyOworICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSAwOworICAgICAgICAgICAg fQorICAgICAgICAgICAgaWYgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiID09IC0xKQorICAgICAgICAg ICAgICAgIGxhc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKyAgICAgICAgICAgIGZpcnN0X3NpZ19z Y2FuX3Bvc19zYiA9IG47CisKKyAgICAgICAgICAgICphYnNfbGV2ZWxfcGFzczEgPQorICAgICAg ICAgICAgICAgIDEgICsgcGFyX2xldmVsX2ZsYWcgKyBhYnNfbGV2ZWxfZ3QxX2ZsYWcgKyAoYWJz X2xldmVsX2d0Ml9mbGFnW25dIDw8IDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg YWJzX2xldmVsX2d0Ml9mbGFnW25dID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyc2gt PnNoX2RlcF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgICAgICByYy0+cXN0YXRlID0gcXN0YXRl X3RyYW5zbGF0ZV90YWJsZVtyYy0+cXN0YXRlXVsqYWJzX2xldmVsX3Bhc3MxICYgMV07CisKKyAg ICAgICAgZmlyc3RfcG9zX21vZGUxID0gbiAtIDE7CisgICAgfQorICAgIGZvciAobiA9IGZpcnN0 X3Bvc19tb2RlMDsgbiA+IGZpcnN0X3Bvc19tb2RlMTsgbi0tKSB7CisgICAgICAgIGNvbnN0IGlu dCB4YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAg ICBjb25zdCBpbnQgeWMgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltu XTsKKyAgICAgICAgY29uc3QgaW50ICphYnNfbGV2ZWxfcGFzczEgID0gcmMtPmFic19sZXZlbF9w YXNzMSArIHljICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGludCAqYWJzX2xldmVsICAg ICAgICAgICAgICA9IHJjLT5hYnNfbGV2ZWwgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworCisg ICAgICAgICphYnNfbGV2ZWwgPSAqYWJzX2xldmVsX3Bhc3MxOworICAgICAgICBpZiAoYWJzX2xl dmVsX2d0Ml9mbGFnW25dKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgYWJzX3JlbWFpbmRlciA9 IGFic19yZW1haW5kZXJfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgICAgIGVwX3Vw ZGF0ZV9oaXN0KGxjLT5lcCwgcmMsIGFic19yZW1haW5kZXIsIDIpOworICAgICAgICAgICAgKmFi c19sZXZlbCArPSAyICogYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig KG4gPSBmaXJzdF9wb3NfbW9kZTE7IG4gPj0gMDsgbi0tKSB7CisgICAgICAgIGNvbnN0IGludCB4 YyAgICA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAg ICBjb25zdCBpbnQgeWMgICAgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29m ZltuXTsKKyAgICAgICAgaW50ICphYnNfbGV2ZWwgID0gcmMtPmFic19sZXZlbCArIHljICogdGIt PnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgaWYgKCpzYl9jb2RlZF9mbGFnKSB7CisgICAgICAg ICAgICBjb25zdCBpbnQgZGVjX2Fic19sZXZlbCA9IGRlY19hYnNfbGV2ZWxfZGVjb2RlKGxjLCBy YywgeGMsIHljLCBhYnNfbGV2ZWwpOworICAgICAgICAgICAgZXBfdXBkYXRlX2hpc3QobGMtPmVw LCByYywgZGVjX2Fic19sZXZlbCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCphYnNfbGV2 ZWwgPiAwKSB7CisgICAgICAgICAgICBpZiAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPT0gLTEpCisg ICAgICAgICAgICAgICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSBuOworICAgICAgICAgICAgZmly c3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocnNoLT5zaF9k ZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0ZSA9IHFzdGF0ZV90cmFu c2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbCAmIDFdOworICAgIH0KKyAgICBzaWdf aGlkZGVuX2ZsYWcgPSByc2gtPnNoX3NpZ25fZGF0YV9oaWRpbmdfdXNlZF9mbGFnICYmCisgICAg ICAgIChsYXN0X3NpZ19zY2FuX3Bvc19zYiAtIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA+IDMgPyAx IDogMCk7CisKKyAgICBpZiAocnNoLT5zaF9kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICBy Yy0+cXN0YXRlID0gc3RhcnRfcXN0YXRlX3NiOworICAgIG4gPSAoaSA9PSByYy0+bGFzdF9zdWJf YmxvY2sgPyByYy0+bGFzdF9zY2FuX3BvcyA6IHJjLT5udW1fc2JfY29lZmYgLTEpOworICAgIGZv ciAoLyogbm90aGluZyAqLzsgbiA+PSAwOyBuLS0pIHsKKyAgICAgICAgaW50IHRyYW5zX2NvZWZm X2xldmVsOworICAgICAgICBjb25zdCBpbnQgeGMgID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsg cmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgPSAoeXMgPDwgcmMtPmxv ZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9mZiA9IHlj ICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGNvbnN0IGludCAqYWJzX2xldmVsID0gcmMt PmFic19sZXZlbCArIG9mZjsKKworICAgICAgICBpZiAoKmFic19sZXZlbCA+IDApIHsKKyAgICAg ICAgICAgIGludCBzaWduID0gMTsKKyAgICAgICAgICAgIGlmICghc2lnX2hpZGRlbl9mbGFnIHx8 IChuICE9IGZpcnN0X3NpZ19zY2FuX3Bvc19zYikpCisgICAgICAgICAgICAgICAgc2lnbiA9IDEg LSAyICogY29lZmZfc2lnbl9mbGFnX2RlY29kZShsYyk7CisgICAgICAgICAgICBpZiAocnNoLT5z aF9kZXBfcXVhbnRfdXNlZF9mbGFnKSB7CisgICAgICAgICAgICAgICAgdHJhbnNfY29lZmZfbGV2 ZWwgPSAoMiAqICphYnNfbGV2ZWwgLSAocmMtPnFzdGF0ZSA+IDEpKSAqIHNpZ247CisgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRyYW5zX2NvZWZmX2xldmVsID0gKmFic19s ZXZlbCAqIHNpZ247CisgICAgICAgICAgICAgICAgaWYgKHNpZ19oaWRkZW5fZmxhZykgeworICAg ICAgICAgICAgICAgICAgICBzdW0gKz0gKmFic19sZXZlbDsKKyAgICAgICAgICAgICAgICAgICAg aWYgKG4gPT0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiICYmIChzdW0gJSAyKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRyYW5zX2NvZWZmX2xldmVsID0gLXRyYW5zX2NvZWZmX2xldmVsOworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRiLT5jb2VmZnNbb2Zm XSA9IHRyYW5zX2NvZWZmX2xldmVsOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3ggPSBGRk1B WCh4YywgdGItPm1heF9zY2FuX3gpOworICAgICAgICAgICAgdGItPm1heF9zY2FuX3kgPSBGRk1B WCh5YywgdGItPm1heF9zY2FuX3kpOworICAgICAgICB9CisgICAgICAgIGlmIChyc2gtPnNoX2Rl cF9xdWFudF91c2VkX2ZsYWcpCisgICAgICAgICAgICByYy0+cXN0YXRlID0gcXN0YXRlX3RyYW5z bGF0ZV90YWJsZVtyYy0+cXN0YXRlXVsqYWJzX2xldmVsICYgMV07CisgICAgfQorCisgICAgcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGRlcml2ZV9sYXN0X3NjYW5fcG9zKFJlc2lkdWFsQ29k aW5nICpyYywKKyAgICBjb25zdCBpbnQgbG9nMl96b190Yl93aWR0aCwgaW50IGxvZzJfem9fdGJf aGVpZ2h0KQoreworICAgIGludCB4YywgeWMsIHhzLCB5czsKKyAgICBkbyB7CisgICAgICAgIGlm IChyYy0+bGFzdF9zY2FuX3BvcyA9PSAwKSB7CisgICAgICAgICAgICByYy0+bGFzdF9zY2FuX3Bv cyA9IHJjLT5udW1fc2JfY29lZmY7CisgICAgICAgICAgICByYy0+bGFzdF9zdWJfYmxvY2stLTsK KyAgICAgICAgfQorICAgICAgICByYy0+bGFzdF9zY2FuX3Bvcy0tOworICAgICAgICB4cyA9IHJj LT5zYl9zY2FuX3hfb2ZmW3JjLT5sYXN0X3N1Yl9ibG9ja107CisgICAgICAgIHlzID0gcmMtPnNi X3NjYW5feV9vZmZbcmMtPmxhc3Rfc3ViX2Jsb2NrXTsKKyAgICAgICAgeGMgPSAoeHMgPDwgcmMt PmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltyYy0+bGFzdF9zY2FuX3Bvc107CisgICAgICAg IHljID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbcmMtPmxhc3Rfc2Nh bl9wb3NdOworICAgIH0gd2hpbGUgKCh4YyAhPSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl94 KSB8fCAoeWMgIT0gcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSkpOworfQorCitzdGF0aWMg dm9pZCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3hfeV9kZWNvZGUoUmVzaWR1YWxDb2RpbmcgKnJj LCBWVkNMb2NhbENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBj b25zdCBpbnQgbG9nMl96b190Yl9oZWlnaHQpCit7CisgICAgY29uc3QgSDI2NlJhd1NsaWNlSGVh ZGVyICpyc2ggICA9IGxjLT5zYy0+c2gucjsKKyAgICBjb25zdCBUcmFuc2Zvcm1CbG9jayAqdGIg ICAgICAgID0gcmMtPnRiOworICAgIGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3gsIGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeTsKKworICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9IGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeF9wcmVmaXhfZGVjb2RlKGxjLAorICAgICAgICAgICAgdGIt PmxvZzJfdGJfd2lkdGgsIGxvZzJfem9fdGJfd2lkdGgsIHRiLT5jX2lkeCk7CisKKyAgICBsYXN0 X3NpZ25pZmljYW50X2NvZWZmX3kgPSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3lfcHJlZml4X2Rl Y29kZShsYywKKyAgICAgICAgdGItPmxvZzJfdGJfaGVpZ2h0LCBsb2cyX3pvX3RiX2hlaWdodCwg dGItPmNfaWR4KTsKKworICAgIGlmIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPiAzKSB7Cisg ICAgICAgIGludCBzdWZmaXggPSBsYXN0X3NpZ19jb2VmZl9zdWZmaXhfZGVjb2RlKGxjLCBsYXN0 X3NpZ25pZmljYW50X2NvZWZmX3gpOworICAgICAgICBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3gg PSAoMSA8PCAoKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA+PiAxKSAtIDEpKSAqCisgICAgICAg ICAgICAoMiArIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggJiAxKSkgKyBzdWZmaXg7CisgICAg fQorICAgIGlmIChsYXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPiAzKSB7CisgICAgICAgIGludCBz dWZmaXggPSBsYXN0X3NpZ19jb2VmZl9zdWZmaXhfZGVjb2RlKGxjLCBsYXN0X3NpZ25pZmljYW50 X2NvZWZmX3kpOworICAgICAgICBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3kgPSAoMSA8PCAoKGxh c3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA+PiAxKSAtIDEpKSAqCisgICAgICAgICAgICAoMiArIChs YXN0X3NpZ25pZmljYW50X2NvZWZmX3kgJiAxKSkgKyBzdWZmaXg7CisgICAgfQorICAgIGlmIChy c2gtPnNoX3JldmVyc2VfbGFzdF9zaWdfY29lZmZfZmxhZykgeworICAgICAgICBsYXN0X3NpZ25p ZmljYW50X2NvZWZmX3ggPSAoMSA8PCBsb2cyX3pvX3RiX3dpZHRoKSAtIDEgLSBsYXN0X3NpZ25p ZmljYW50X2NvZWZmX3g7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9ICgxIDw8 IGxvZzJfem9fdGJfaGVpZ2h0KSAtIDEgLSBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3k7CisgICAg fQorICAgIHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3ggPSBsYXN0X3NpZ25pZmljYW50X2Nv ZWZmX3g7CisgICAgcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9IGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeTsKK30KKworc3RhdGljIGludCBobHNfcmVzaWR1YWxfY29kaW5nKFZWQ0xvY2Fs Q29udGV4dCAqbGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNw cyAgICAgICAgICAgPSBsYy0+ZmMtPnBzLnNwczsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAg ICAgICAgPSBsYy0+Y3U7CisgICAgY29uc3QgaW50IGxvZzJfdGJfd2lkdGggICAgID0gdGItPmxv ZzJfdGJfd2lkdGg7CisgICAgY29uc3QgaW50IGxvZzJfdGJfaGVpZ2h0ICAgID0gdGItPmxvZzJf dGJfaGVpZ2h0OworICAgIGNvbnN0IGludCBjX2lkeCAgICAgICAgICAgICA9IHRiLT5jX2lkeDsK KyAgICBpbnQgbG9nMl96b190Yl93aWR0aCwgbG9nMl96b190Yl9oZWlnaHQ7CisgICAgUmVzaWR1 YWxDb2RpbmcgcmM7CisKKyAgICBpZiAoc3BzLT5yLT5zcHNfbXRzX2VuYWJsZWRfZmxhZyAmJiBj dS0+c2J0X2ZsYWcgJiYgY19pZHggPT0gMCAmJiBsb2cyX3RiX3dpZHRoID09IDUgJiYgbG9nMl90 Yl9oZWlnaHQgPCA2KQorICAgICAgICBsb2cyX3pvX3RiX3dpZHRoID0gNDsKKyAgICBlbHNlCisg ICAgICAgIGxvZzJfem9fdGJfd2lkdGggPSBGRk1JTihsb2cyX3RiX3dpZHRoLCA1ICk7CisKKyAg ICBpZiAoc3BzLT5yLT5zcHNfbXRzX2VuYWJsZWRfZmxhZyAmJiBjdS0+c2J0X2ZsYWcgJiYgY19p ZHggPT0gMCAmJiBsb2cyX3RiX3dpZHRoIDwgNiAmJiBsb2cyX3RiX2hlaWdodCA9PSA1ICkKKyAg ICAgICAgbG9nMl96b190Yl9oZWlnaHQgPSA0OworICAgIGVsc2UKKyAgICAgICAgbG9nMl96b190 Yl9oZWlnaHQgPSBGRk1JTihsb2cyX3RiX2hlaWdodCwgNSk7CisKKyAgICBpbml0X3Jlc2lkdWFs X2NvZGluZyhsYywgJnJjLCBsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCwgdGIp OworICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeF95X2RlY29kZSgmcmMsIGxjLCBsb2cyX3pv X3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCk7CisgICAgZGVyaXZlX2xhc3Rfc2Nhbl9wb3Mo JnJjLCBsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodCk7CisKKyAgICBpZiAocmMu bGFzdF9zdWJfYmxvY2sgPT0gMCAmJiBsb2cyX3RiX3dpZHRoID49IDIgJiYgbG9nMl90Yl9oZWln aHQgPj0gMiAmJiAhdGItPnRzICYmIHJjLmxhc3Rfc2Nhbl9wb3MgPiAwKQorICAgICAgICBsYy0+ cGFyc2UubGZuc3RfZGNfb25seSA9IDA7CisgICAgaWYgKChyYy5sYXN0X3N1Yl9ibG9jayA+IDAg JiYgbG9nMl90Yl93aWR0aCA+PSAyICYmIGxvZzJfdGJfaGVpZ2h0ID49IDIgKSB8fAorICAgICAg ICAgKHJjLmxhc3Rfc2Nhbl9wb3MgPiA3ICYmIChsb2cyX3RiX3dpZHRoID09IDIgfHwgbG9nMl90 Yl93aWR0aCA9PSAzICkgJiYKKyAgICAgICAgIGxvZzJfdGJfd2lkdGggPT0gbG9nMl90Yl9oZWln aHQpKQorICAgICAgICBsYy0+cGFyc2UubGZuc3RfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWcgPSAw OworICAgIGlmICgocmMubGFzdF9zdWJfYmxvY2sgPiAwIHx8IHJjLmxhc3Rfc2Nhbl9wb3MgPiAw ICkgJiYgY19pZHggPT0gMCkKKyAgICAgICAgbGMtPnBhcnNlLm10c19kY19vbmx5ID0gMDsKKwor ICAgIG1lbXNldCh0Yi0+Y29lZmZzLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICog c2l6ZW9mKCp0Yi0+Y29lZmZzKSk7CisgICAgbWVtc2V0KHJjLmFic19sZXZlbCwgMCwgdGItPnRi X3dpZHRoICogdGItPnRiX2hlaWdodCAqIHNpemVvZihyYy5hYnNfbGV2ZWxbMF0pKTsKKyAgICBt ZW1zZXQocmMuc2JfY29kZWRfZmxhZywgMCwgcmMubmJfc2JzKTsKKyAgICBtZW1zZXQocmMuYWJz X2xldmVsX3Bhc3MxLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVpZ2h0ICogc2l6ZW9mKHJj LmFic19sZXZlbF9wYXNzMVswXSkpOworICAgIG1lbXNldChyYy5zaWdfY29lZmZfZmxhZywgMCwg dGItPnRiX3dpZHRoICogdGItPnRiX2hlaWdodCAqIHNpemVvZihyYy5zaWdfY29lZmZfZmxhZ1sw XSkpOworCisgICAgZm9yIChpbnQgaSA9IHJjLmxhc3Rfc3ViX2Jsb2NrOyBpID49IDA7IGktLSkg eworICAgICAgICBpbnQgcmV0ID0gcmVzaWR1YWxfY29kaW5nX3N1YmJsb2NrKGxjLCAmcmMsIGkp OworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBmZl92dmNfcmVzaWR1YWxfY29kaW5nKFZWQ0xvY2Fs Q29udGV4dCAqbGMsIFRyYW5zZm9ybUJsb2NrICp0YikKK3sKKyAgICBjb25zdCBIMjY2UmF3U2xp Y2VIZWFkZXIgKnJzaCAgID0gbGMtPnNjLT5zaC5yOworICAgIGNvbnN0IGludCB0cyAgICAgICAg ICAgICAgICAgICAgPSAhcnNoLT5zaF90c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJsZWRfZmxhZyAm JiB0Yi0+dHM7CisKKyAgICByZXR1cm4gdHMgPyBobHNfcmVzaWR1YWxfdHNfY29kaW5nKGxjLCB0 YikgOiBobHNfcmVzaWR1YWxfY29kaW5nKGxjLCB0Yik7Cit9CisKK2ludCBmZl92dmNfY3VfY29k ZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1Vf Q09ERURfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc2J0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0 IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0IGludCBpbmMgICA9IHcg KiBoIDw9IDI1NjsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NCVF9GTEFHICsgaW5jKTsKK30K KworaW50IGZmX3Z2Y19zYnRfcXVhZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg cmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRfUVVBRF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19zYnRf aG9yaXpvbnRhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IHcg PSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoID0gbGMtPmN1LT5jYl9oZWlnaHQ7 CisgICAgY29uc3QgaW50IGluYyA9ICh3ID09IGgpID8gMCA6ICgodyA8IGgpID8gMSA6IDIpOwor ICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX0hPUklaT05UQUxfRkxBRyArIGluYyk7Cit9CisK K2ludCBmZl92dmNfc2J0X3Bvc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhDVV9TQlRfUE9TX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX2xmbnN0X2lk eChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW5jKQoreworICAgIGlmICghR0VUX0NB QkFDKExGTlNUX0lEWCArIGluYykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghR0VUX0NB QkFDKExGTlNUX0lEWCArIDIpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gMjsKK30K KworaW50IGZmX3Z2Y19tdHNfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7 CisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICBpZiAoIUdFVF9DQUJBQyhN VFNfSURYICsgaSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIGk7 Cit9CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY190ZXJtaW5hdGUoJmxjLT5lcC0+Y2MpOwor fQorCitpbnQgZmZfdnZjX2VuZF9vZl90aWxlX29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gZ2V0X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7Cit9CisKK2lu dCBmZl92dmNfZW5kX29mX3N1YnNldF9vbmVfYml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIGdldF9jYWJhY190ZXJtaW5hdGUoJmxjLT5lcC0+Y2MpOworfQpkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmggYi9saWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xNzJhYjI3MmZmCi0tLSAv ZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKQEAgLTAsMCArMSwxMjYg QEAKKy8qCisgKiBWVkMgQ0FCQUMgZGVjb2RlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBO dW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVn IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBB VkNPREVDX1ZWQ19WVkNfQ0FCQUNfSAorI2RlZmluZSBBVkNPREVDX1ZWQ19WVkNfQ0FCQUNfSAor CisjaW5jbHVkZSAidnZjX2N0dS5oIgorCitpbnQgZmZfdnZjX2NhYmFjX2luaXQoVlZDTG9jYWxD b250ZXh0ICpsYywgaW50IGN0dV9pZHgsIGludCByeCwgaW50IHJ5KTsKKworLy9zYW8KK2ludCBm Zl92dmNfc2FvX21lcmdlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZm X3Z2Y19zYW9fdHlwZV9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2 Y19zYW9fYmFuZF9wb3NpdGlvbl9kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX3Nhb19vZmZzZXRfYWJzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfc2FvX29mZnNldF9zaWduX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfc2FvX2VvX2NsYXNzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9hbGYKK2lu dCBmZl92dmNfYWxmX2N0Yl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCByeCwgaW50IHJ5 LCBpbnQgY19pZHgpOworaW50IGZmX3Z2Y19hbGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfbHVtYV9wcmV2X2ZpbHRlcl9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2FsZl9sdW1hX2ZpeGVkX2ZpbHRlcl9pZHgoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgoVlZDTG9jYWxD b250ZXh0ICpsYywgaW50IGNfaWR4LCBpbnQgbnVtX2Nocm9tYV9maWx0ZXJzKTsKK2ludCBmZl92 dmNfYWxmX2N0Yl9jY19pZGMoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IHJ4LCBpbnQgcnksIGlu dCBpZHgsIGludCBjY19maWx0ZXJzX3NpZ25hbGxlZCk7CisKKy8vY29kaW5nX3RyZWUKK2ludCBm Zl92dmNfc3BsaXRfY3VfZmxhZyhWVkNMb2NhbENvbnRleHQqIGxjLCBpbnQgeDAsIGludCB5MCwg aW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBjaF90eXBlLCBjb25zdCBWVkNB bGxvd2VkU3BsaXQgKmEpOworVlZDU3BsaXRNb2RlIGZmX3Z2Y19zcGxpdF9tb2RlKFZWQ0xvY2Fs Q29udGV4dCAqbGMsICBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0 LAorICAgIGludCBjcXRfZGVwdGgsIGludCBtdHRfZGVwdGgsIGludCBjaF90eXBlLCBjb25zdCBW VkNBbGxvd2VkU3BsaXQgKmEpOworaW50IGZmX3Z2Y19ub25faW50ZXJfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjLCBpbnQgeDAsIGludCB5MCwgaW50IGNoX3R5cGUpOworCisvL2NvZGluZyB1bml0 CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpc19j aHJvbWEpOworaW50IGZmX3Z2Y19wcmVkX21vZGVfcGx0X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps Yyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfaW50cmFfYmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfaW50cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9kaXJfZmxhZyhWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMs IGNvbnN0IHVpbnQ4X3QgKmN1X3NraXBfZmxhZyk7CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9pYmNf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgY2hfdHlwZSk7CitpbnQgZmZfdnZjX2N1X2Nv ZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX2Fi cyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfcXBfZGVsdGFfc2lnbl9mbGFn KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYnRfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3F1YWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfc2J0X2hvcml6b250YWxfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2lu dCBmZl92dmNfc2J0X3Bvc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworCisvL2ludHJhCitp bnQgZmZfdnZjX2ludHJhX21pcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4 X3QgKmludHJhX21pcF9mbGFnKTsKK2ludCBmZl92dmNfaW50cmFfbWlwX3RyYW5zcG9zZWRfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfbWlwX21vZGUoVlZDTG9j YWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfcmVmX2lkeChWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYyk7CitlbnVtIElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZW Q0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7Citp bnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQg ZmZfdnZjX2ludHJhX2x1bWFfbm90X3BsYW5hcl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGlu dCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFf bXBtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1f cmVtYWluZGVyKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19jY2xtX21vZGVfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY2NsbV9tb2RlX2lkeChWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfY2hyb21hX3ByZWRfbW9kZShWVkNMb2Nh bENvbnRleHQgKmxjKTsKKworLy9pbnRlcgoraW50IGZmX3Z2Y19nZW5lcmFsX21lcmdlX2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdlX3N1YmJsb2NrX2lkeChWVkNMb2Nh bENvbnRleHQgKmxjLCBpbnQgbWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5kKTsKK2ludCBmZl92 dmNfcmVndWxhcl9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBjdV9za2lwX2Zs YWcpOworaW50IGZmX3Z2Y19tZXJnZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX21tdmRfbWVyZ2VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbW12 ZF9jYW5kX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7Cit2b2lkIGZmX3Z2Y19tbXZkX29mZnNl dF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgTXYgKm12ZF9vZmZzZXQsIGludCBwaF9tbXZk X2Z1bGxwZWxfb25seV9mbGFnKTsKK2ludCBmZl92dmNfY2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMpOworaW50IGZmX3Z2Y19tZXJnZV9ncG1fcGFydGl0aW9uX2lkeChWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBp bnQgaWR4KTsKK1ByZWRGbGFnIGZmX3Z2Y19wcmVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg aW50IGlzX2IpOworaW50IGZmX3Z2Y19pbnRlcl9hZmZpbmVfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfc3ltX212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZm X3Z2Y19yZWZfaWR4X2x4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIHVpbnQ4X3QgbmJfcmVmcyk7Citp bnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2lu dCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50 IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNf bXZkX3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbXZwX2x4X2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2FtdnJfc2hpZnQoVlZDTG9jYWxD b250ZXh0ICpsYywgaW50IGludGVyX2FmZmluZV9mbGFnLCBQcmVkTW9kZSBwcmVkX21vZGUsIGlu dCBoYXNfYW12cl9mbGFnKTsKK2ludCBmZl92dmNfYmN3X2lkeChWVkNMb2NhbENvbnRleHQgKmxj LCBpbnQgbm9fYmFja3dhcmRfcHJlZF9mbGFnKTsKKworLy90cmFuc2Zvcm0KK2ludCBmZl92dmNf dHVfY2JfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfY3Jf Y29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgdHVfY2JfY29kZWRfZmxhZyk7Citp bnQgZmZfdnZjX3R1X3lfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfY3VfY2hyb21hX3FwX29mZnNldF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZm X3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBm Zl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGlu dCB0dV9jYl9jb2RlZF9mbGFnLCBpbnQgdHVfY3JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3Ry YW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGN0eCk7CitpbnQgZmZf dnZjX3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxjLCBUcmFuc2Zvcm1CbG9jayAq dGIpOworaW50IGZmX3Z2Y19sZm5zdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGluYyk7 CitpbnQgZmZfdnZjX210c19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKK2ludCBmZl92dmNf ZW5kX29mX3NsaWNlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2 Y19lbmRfb2ZfdGlsZV9vbmVfYml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19l bmRfb2Zfc3Vic2V0X29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICpsYyk7CisKKyNlbmRpZiAvL0FW Q09ERUNfVlZDX1ZWQ19DQUJBQ19ICmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1 LmMgYi9saWJhdmNvZGVjL3Z2Yy92dmNfY3R1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNzhiMTNmZmIwMAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvdnZj L3Z2Y19jdHUuYwpAQCAtMCwwICsxLDMyIEBACisvKgorICogVlZDIENUVShDb2RpbmcgVHJlZSBV bml0KSBwYXJzZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTnVvIE1pCisgKgorICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z dG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJ2dmNfY3R1LmgiCisKK3Zv aWQgZmZfdnZjX2VwX2luaXRfc3RhdF9jb2VmZihFbnRyeVBvaW50ICplcCwKKwljb25zdCBpbnQg Yml0X2RlcHRoLCBjb25zdCBpbnQgcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9m bGFnKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoZXAtPnN0 YXRfY29lZmYpOyArK2kpIHsKKyAgICAgICAgZXAtPnN0YXRfY29lZmZbaV0gPQorICAgICAgICAg ICAgcGVyc2lzdGVudF9yaWNlX2FkYXB0YXRpb25fZW5hYmxlZF9mbGFnID8gMiAqIChhdl9sb2cy KGJpdF9kZXB0aCAtIDEwKSkgOiAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv dnZjL3Z2Y19jdHUuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMmI4MmY1MzhlCi0tLSAvZGV2L251bGwKKysrIGIvbGli YXZjb2RlYy92dmMvdnZjX2N0dS5oCkBAIC0wLDAgKzEsNDYzIEBACisvKgorICogVlZDIENUVShD b2RpbmcgVHJlZSBVbml0KSBwYXJzZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTnVvIE1p CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpZm5kZWYgQVZDT0RF Q19WVkNfVlZDX0NUVV9ICisjZGVmaW5lIEFWQ09ERUNfVlZDX1ZWQ19DVFVfSAorCisjaW5jbHVk ZSAibGliYXZjb2RlYy9jYWJhYy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9tZW1faW50ZXJuYWwu aCIKKworI2luY2x1ZGUgInZ2Y2RlYy5oIgorCisjZGVmaW5lIE1BWF9DVFVfU0laRSAgICAgICAg ICAgIDEyOAorCisjZGVmaW5lIE1BWF9DVV9TSVpFICAgICAgICAgICAgIE1BWF9DVFVfU0laRQor I2RlZmluZSBNSU5fQ1VfU0laRSAgICAgICAgICAgICA0CisjZGVmaW5lIE1JTl9DVV9MT0cyICAg ICAgICAgICAgIDIKKyNkZWZpbmUgTUFYX0NVX0RFUFRIICAgICAgICAgICAgNworCisjZGVmaW5l IE1BWF9QQVJUU19JTl9DVFUgICAgICAgICgoTUFYX0NUVV9TSVpFID4+IE1JTl9DVV9MT0cyKSAq IChNQVhfQ1RVX1NJWkUgPj4gTUlOX0NVX0xPRzIpKQorCisjZGVmaW5lIE1JTl9QVV9TSVpFICAg ICAgICAgICAgIDQKKworI2RlZmluZSBNQVhfVEJfU0laRSAgICAgICAgICAgICA2NAorI2RlZmlu ZSBNSU5fVFVfU0laRSAgICAgICAgICAgICA0CisjZGVmaW5lIE1BWF9UVVNfSU5fQ1UgICAgICAg ICAgIDY0CisKKyNkZWZpbmUgTUFYX1FQICAgICAgICAgICAgICAgICAgNjMKKworI2RlZmluZSBN QVhfUEJfU0laRSAgICAgICAgICAgICAxMjgKKyNkZWZpbmUgRURHRV9FTVVfQlVGRkVSX1NUUklE RSAgKE1BWF9QQl9TSVpFICsgMzIpCisKKyNkZWZpbmUgQ0hST01BX0VYVFJBX0JFRk9SRSAgICAg MQorI2RlZmluZSBDSFJPTUFfRVhUUkFfQUZURVIgICAgICAyCisjZGVmaW5lIENIUk9NQV9FWFRS QSAgICAgICAgICAgIDMKKyNkZWZpbmUgTFVNQV9FWFRSQV9CRUZPUkUgICAgICAgMworI2RlZmlu ZSBMVU1BX0VYVFJBX0FGVEVSICAgICAgICA0CisjZGVmaW5lIExVTUFfRVhUUkEgICAgICAgICAg ICAgIDcKKyNkZWZpbmUgQklMSU5FQVJfRVhUUkFfQkVGT1JFICAgMAorI2RlZmluZSBCSUxJTkVB Ul9FWFRSQV9BRlRFUiAgICAxCisjZGVmaW5lIEJJTElORUFSX0VYVFJBICAgICAgICAgIDEKKwor I2RlZmluZSBNQVhfQ09OVFJPTF9QT0lOVFMgICAgICAzCisKKyNkZWZpbmUgQUZGSU5FX01JTl9C TE9DS19TSVpFICAgNAorCisjZGVmaW5lIE1SR19NQVhfTlVNX0NBTkRTICAgICAgIDYKKyNkZWZp bmUgTUFYX05VTV9ITVZQX0NBTkRTICAgICAgNQorCisjZGVmaW5lIFNBT19QQURESU5HX1NJWkUg ICAgICAgIDEKKworI2RlZmluZSBBTEZfUEFERElOR19TSVpFICAgICAgICA4CisjZGVmaW5lIEFM Rl9CTE9DS19TSVpFICAgICAgICAgIDQKKworI2RlZmluZSBBTEZfQk9SREVSX0xVTUEgICAgICAg ICAzCisjZGVmaW5lIEFMRl9CT1JERVJfQ0hST01BICAgICAgIDIKKworI2RlZmluZSBBTEZfVkJf UE9TX0FCT1ZFX0xVTUEgICA0CisjZGVmaW5lIEFMRl9WQl9QT1NfQUJPVkVfQ0hST01BIDIKKwor I2RlZmluZSBBTEZfR1JBRElFTlRfU1RFUCAgICAgICAyCisjZGVmaW5lIEFMRl9HUkFESUVOVF9C T1JERVIgICAgIDIKKyNkZWZpbmUgQUxGX0dSQURJRU5UX1NJWkUgICAgICAgKChNQVhfQ1VfU0la RSArIEFMRl9HUkFESUVOVF9CT1JERVIgKiAyKSAvIEFMRl9HUkFESUVOVF9TVEVQKQorI2RlZmlu ZSBBTEZfTlVNX0RJUiAgICAgICAgICAgICA0CisKKworLyoqCisgKiBWYWx1ZSBvZiB0aGUgbHVt YSBzYW1wbGUgYXQgcG9zaXRpb24gKHgsIHkpIGluIHRoZSAyRCBhcnJheSB0YWIuCisgKi8KKyNk ZWZpbmUgU0FNUExFKHRhYiwgeCwgeSkgKCh0YWIpWyh5KSAqIHMtPnNwcy0+d2lkdGggKyAoeCld KQorI2RlZmluZSBTQU1QTEVfQ1RCKHRhYiwgeCwgeSkgKCh0YWIpWyh5KSAqIG1pbl9jYl93aWR0 aCArICh4KV0pCisjZGVmaW5lIENUQih0YWIsIHgsIHkpICgodGFiKVsoeSkgKiBmYy0+cHMucHBz LT5jdGJfd2lkdGggKyAoeCldKQorCitlbnVtIFNBT1R5cGUgeworICAgIFNBT19OT1RfQVBQTElF RCA9IDAsCisgICAgU0FPX0JBTkQsCisgICAgU0FPX0VER0UsCit9OworCitlbnVtIFNBT0VPQ2xh c3MgeworICAgIFNBT19FT19IT1JJWiA9IDAsCisgICAgU0FPX0VPX1ZFUlQsCisgICAgU0FPX0VP XzEzNUQsCisgICAgU0FPX0VPXzQ1RCwKK307CisKK3R5cGVkZWYgc3RydWN0IE5laWdoYm91ckF2 YWlsYWJsZSB7CisgICAgaW50IGNhbmRfbGVmdDsKKyAgICBpbnQgY2FuZF91cDsKKyAgICBpbnQg Y2FuZF91cF9sZWZ0OworICAgIGludCBjYW5kX3VwX3JpZ2h0OworICAgIGludCBjYW5kX3VwX3Jp Z2h0X3NhcDsKK30gTmVpZ2hib3VyQXZhaWxhYmxlOworCitlbnVtIElzcFR5cGV7CisgICAgSVNQ X05PX1NQTElULAorICAgIElTUF9IT1JfU1BMSVQsCisgICAgSVNQX1ZFUl9TUExJVCwKK307CisK K3R5cGVkZWYgZW51bSBWVkNTcGxpdE1vZGUgeworICAgIFNQTElUX05PTkUsCisgICAgU1BMSVRf VFRfSE9SLAorICAgIFNQTElUX0JUX0hPUiwKKyAgICBTUExJVF9UVF9WRVIsCisgICAgU1BMSVRf QlRfVkVSLAorICAgIFNQTElUX1FULAorfSBWVkNTcGxpdE1vZGU7CisKK3R5cGVkZWYgZW51bSBN dHNJZHggeworICAgIE1UU19EQ1QyX0RDVDIsCisgICAgTVRTX0RTVDdfRFNUNywKKyAgICBNVFNf RFNUN19EQ1Q4LAorICAgIE1UU19EQ1Q4X0RTVDcsCisgICAgTVRTX0RDVDhfRENUOCwKK30gTXRz SWR4OworCit0eXBlZGVmIHN0cnVjdCBUcmFuc2Zvcm1CbG9jayB7CisgICAgdWludDhfdCBoYXNf Y29lZmZzOworICAgIHVpbnQ4X3QgY19pZHg7CisgICAgdWludDhfdCB0czsgICAgICAgICAgICAg Ly8vPCAgdHJhbnNmb3JtX3NraXBfZmxhZworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisKKyAg ICBpbnQgdGJfd2lkdGg7CisgICAgaW50IHRiX2hlaWdodDsKKyAgICBpbnQgbG9nMl90Yl93aWR0 aDsKKyAgICBpbnQgbG9nMl90Yl9oZWlnaHQ7CisKKyAgICBpbnQgbWF4X3NjYW5feDsKKyAgICBp bnQgbWF4X3NjYW5feTsKKyAgICBpbnQgbWluX3NjYW5feDsKKyAgICBpbnQgbWluX3NjYW5feTsK KworICAgIGludCBxcDsKKyAgICBpbnQgcmVjdF9ub25fdHNfZmxhZzsKKyAgICBpbnQgYmRfc2hp ZnQ7CisgICAgaW50IGJkX29mZnNldDsKKworICAgIGludCAqY29lZmZzOworfSBUcmFuc2Zvcm1C bG9jazsKKwordHlwZWRlZiBlbnVtIFZWQ1RyZWVUeXBlIHsKKyAgICBTSU5HTEVfVFJFRSwKKyAg ICBEVUFMX1RSRUVfTFVNQSwKKyAgICBEVUFMX1RSRUVfQ0hST01BLAorfSBWVkNUcmVlVHlwZTsK KwordHlwZWRlZiBzdHJ1Y3QgVHJhbnNmb3JtVW5pdCB7CisgICAgaW50IHgwOworICAgIGludCB5 MDsKKyAgICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKworICAgIHVpbnQ4X3Qgam9pbnRf Y2Jjcl9yZXNpZHVhbF9mbGFnOyAgICAgICAgICAgICAgICAgICAvLy88IHR1X2pvaW50X2NiY3Jf cmVzaWR1YWxfZmxhZworCisgICAgdWludDhfdCBjb2RlZF9mbGFnW1ZWQ19NQVhfU0FNUExFX0FS UkFZU107ICAgICAgICAgIC8vLzwgdHVfeV9jb2RlZF9mbGFnLCB0dV9jYl9jb2RlZF9mbGFnLCB0 dV9jcl9jb2RlZF9mbGFnCisgICAgdWludDhfdCBuYl90YnM7CisgICAgVHJhbnNmb3JtQmxvY2sg dGJzW1ZWQ19NQVhfU0FNUExFX0FSUkFZU107CisKKyAgICBzdHJ1Y3QgVHJhbnNmb3JtVW5pdCAq bmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCit9 IFRyYW5zZm9ybVVuaXQ7CisKK3R5cGVkZWYgZW51bSBQcmVkTW9kZSB7CisgICAgTU9ERV9JTlRF UiwKKyAgICBNT0RFX0lOVFJBLAorICAgIE1PREVfU0tJUCwKKyAgICBNT0RFX1BMVCwKKyAgICBN T0RFX0lCQywKK30gUHJlZE1vZGU7CisKK3R5cGVkZWYgc3RydWN0IE12IHsKKyAgICBpbnQgeDsg IC8vLzwgaG9yaXpvbnRhbCBjb21wb25lbnQgb2YgbW90aW9uIHZlY3RvcgorICAgIGludCB5OyAg Ly8vPCB2ZXJ0aWNhbCBjb21wb25lbnQgb2YgbW90aW9uIHZlY3RvcgorfSBNdjsKKwordHlwZWRl ZiBzdHJ1Y3QgTXZGaWVsZCB7CisgICAgREVDTEFSRV9BTElHTkVEKDQsIE12LCBtdilbMl07ICAv Ly88IG12TDAsIHZ2TDEKKyAgICBpbnQ4X3QgIHJlZl9pZHhbMl07ICAgICAgICAgICAgIC8vLzwg cmVmSWR4TDAsIHJlZklkeEwxCisgICAgdWludDhfdCBocGVsX2lmX2lkeDsgICAgICAgICAgICAv Ly88IGhwZWxJZklkeAorICAgIHVpbnQ4X3QgYmN3X2lkeDsgICAgICAgICAgICAgICAgLy8vPCBi Y3dJZHgKKyAgICB1aW50OF90IHByZWRfZmxhZzsKKyAgICB1aW50OF90IGNpaXBfZmxhZzsgICAg ICAgICAgICAgIC8vLzwgY2lpcF9mbGFnCit9IE12RmllbGQ7CisKK3R5cGVkZWYgc3RydWN0IERN VlJJbmZvIHsKKyAgICBERUNMQVJFX0FMSUdORUQoNCwgTXYsIG12KVsyXTsgIC8vLzwgbXZMMCwg dnZMMQorICAgIHVpbnQ4X3QgZG12cl9lbmFibGVkOworfSBETVZSSW5mbzsKKwordHlwZWRlZiBl bnVtIE1vdGlvbk1vZGVsSWRjIHsKKyAgICBNT1RJT05fVFJBTlNMQVRJT04sCisgICAgTU9USU9O XzRfUEFSQU1TX0FGRklORSwKKyAgICBNT1RJT05fNl9QQVJBTVNfQUZGSU5FLAorfSBNb3Rpb25N b2RlbElkYzsKKwordHlwZWRlZiBlbnVtIFByZWRGbGFnIHsKKyAgICBQRl9JTlRSQSA9IDB4MCwK KyAgICBQRl9MMCAgICA9IDB4MSwKKyAgICBQRl9MMSAgICA9IDB4MiwKKyAgICBQRl9CSSAgICA9 IDB4MywKK30gUHJlZEZsYWc7CisKK3R5cGVkZWYgZW51bSBJbnRyYVByZWRNb2RlIHsKKyAgICBJ TlRSQV9JTlZBTElEICAgPSAtMSwKKyAgICBJTlRSQV9QTEFOQVIgICAgPSAwLAorICAgIElOVFJB X0RDLAorICAgIElOVFJBX0hPUlogICAgICA9IDE4LAorICAgIElOVFJBX0RJQUcgICAgICA9IDM0 LAorICAgIElOVFJBX1ZFUlQgICAgICA9IDUwLAorICAgIElOVFJBX1ZESUFHICAgICA9IDY2LAor ICAgIElOVFJBX0xUX0NDTE0gICA9IDgxLAorICAgIElOVFJBX0xfQ0NMTSwKKyAgICBJTlRSQV9U X0NDTE0KK30gSW50cmFQcmVkTW9kZTsKKwordHlwZWRlZiBzdHJ1Y3QgTW90aW9uSW5mbyB7Cisg ICAgTW90aW9uTW9kZWxJZGMgbW90aW9uX21vZGVsX2lkYzsgLy8vPCBNb3Rpb25Nb2RlbElkYwor ICAgIGludDhfdCAgIHJlZl9pZHhbMl07ICAgICAgICAgICAgIC8vLzwgcmVmSWR4TDAsIHJlZklk eEwxCisgICAgdWludDhfdCAgaHBlbF9pZl9pZHg7ICAgICAgICAgICAgLy8vPCBocGVsSWZJZHgK KyAgICB1aW50OF90ICBiY3dfaWR4OyAgICAgICAgICAgICAgICAvLy88IGJjd0lkeAorICAgIFBy ZWRGbGFnIHByZWRfZmxhZzsKKworICAgIE12IG12WzJdW01BWF9DT05UUk9MX1BPSU5UU107CisK KyAgICBpbnQgbnVtX3NiX3gsIG51bV9zYl95OworfSBNb3Rpb25JbmZvOworCit0eXBlZGVmIHN0 cnVjdCBQcmVkaWN0aW9uVW5pdCB7CisgICAgdWludDhfdCBnZW5lcmFsX21lcmdlX2ZsYWc7Cisg ICAgdWludDhfdCBtbXZkX21lcmdlX2ZsYWc7CisgICAgLy9JbnRlclByZWRJZGMgaW50ZXJfcHJl ZF9pZGM7CisgICAgdWludDhfdCBpbnRlcl9hZmZpbmVfZmxhZzsKKworICAgIC8vc3ViYmxvY2sg cHJlZGljdAorICAgIHVpbnQ4X3QgbWVyZ2Vfc3ViYmxvY2tfZmxhZzsKKworICAgIHVpbnQ4X3Qg bWVyZ2VfZ3BtX2ZsYWc7CisgICAgdWludDhfdCBncG1fcGFydGl0aW9uX2lkeDsKKyAgICBNdkZp ZWxkIGdwbV9tdlsyXTsKKworICAgIGludCBzeW1fbXZkX2ZsYWc7CisKKyAgICBNb3Rpb25JbmZv IG1pOworCisgICAgLy8gZm9yIHJlZ3VsYXIgcHJlZGljdGlvbiBvbmx5CisgICAgdWludDhfdCBk bXZyX2ZsYWc7CisgICAgdWludDhfdCBiZG9mX2ZsYWc7CisKKyAgICBpbnQxNl90IGRpZmZfbXZf eFsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8v LzwgZGlmZk12TFgKKyAgICBpbnQxNl90IGRpZmZfbXZfeVsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJ WkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQgY2Jf cHJvZl9mbGFnWzJdOworfSBQcmVkaWN0aW9uVW5pdDsKKwordHlwZWRlZiBzdHJ1Y3QgQ29kaW5n VW5pdCB7CisgICAgVlZDVHJlZVR5cGUgdHJlZV90eXBlOworICAgIGludCB4MDsKKyAgICBpbnQg eTA7CisgICAgaW50IGNiX3dpZHRoOworICAgIGludCBjYl9oZWlnaHQ7CisgICAgaW50IGNoX3R5 cGU7CisgICAgaW50IGNxdF9kZXB0aDsKKworICAgIHVpbnQ4X3QgY29kZWRfZmxhZzsKKworICAg IHVpbnQ4X3Qgc2J0X2ZsYWc7CisgICAgdWludDhfdCBzYnRfaG9yaXpvbnRhbF9mbGFnOworICAg IHVpbnQ4X3Qgc2J0X3Bvc19mbGFnOworCisgICAgaW50IGxmbnN0X2lkeDsKKyAgICBNdHNJZHgg bXRzX2lkeDsKKworICAgIHVpbnQ4X3QgYWN0X2VuYWJsZWRfZmxhZzsKKworICAgIHVpbnQ4X3Qg aW50cmFfbHVtYV9yZWZfaWR4OyAgICAgICAgICAgICAgICAgICAgIC8vLzwgSW50cmFMdW1hUmVm TGluZUlkeFtdW10KKyAgICB1aW50OF90IGludHJhX21pcF9mbGFnOyAgICAgICAgICAgICAgICAg ICAgICAgICAvLy88IGludHJhX21pcF9mbGFnCisgICAgdWludDhfdCBza2lwX2ZsYWc7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBjdV9za2lwX2ZsYWc7CisKKyAgICAvL2ludGVy CisgICAgdWludDhfdCBjaWlwX2ZsYWc7CisKKyAgICAvLyBJbmZlcnJlZCBwYXJhbWV0ZXJzCisg ICAgZW51bSBJc3BUeXBlIGlzcF9zcGxpdF90eXBlOyAgICAgICAgICAgICAgICAgICAgLy8vPCBJ bnRyYVN1YlBhcnRpdGlvbnNTcGxpdFR5cGUKKworICAgIGVudW0gUHJlZE1vZGUgcHJlZF9tb2Rl OyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUHJlZE1vZGUKKworICAgIGludCBudW1faW50 cmFfc3VicGFydGl0aW9uczsKKworICAgIEludHJhUHJlZE1vZGUgaW50cmFfcHJlZF9tb2RlX3k7 ICAgICAgICAgICAgICAgIC8vLzwgSW50cmFQcmVkTW9kZVkKKyAgICBJbnRyYVByZWRNb2RlIGlu dHJhX3ByZWRfbW9kZV9jOyAgICAgICAgICAgICAgICAvLy88IEludHJhUHJlZE1vZGVDCisgICAg aW50IG1pcF9jaHJvbWFfZGlyZWN0X2ZsYWc7ICAgICAgICAgICAgICAgICAgICAgLy8vPCBNaXBD aHJvbWFEaXJlY3RGbGFnCisKKyAgICBpbnQgYmRwY21fZmxhZ1tWVkNfTUFYX1NBTVBMRV9BUlJB WVNdOyAgICAgICAgICAvLy88IEJkcGNtRmxhZworCisgICAgaW50IGFwcGx5X2xmbnN0X2ZsYWdb VlZDX01BWF9TQU1QTEVfQVJSQVlTXTsgICAgLy8vPCBBcHBseUxmbnN0RmxhZ1tdCisKKyAgICBz dHJ1Y3QgeworICAgICAgICBUcmFuc2Zvcm1Vbml0ICpoZWFkOyAgICAgICAgICAgICAgICAgICAg ICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgICAgICBUcmFuc2Zvcm1Vbml0ICp0YWls OyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZQorICAgIH0g dHVzOworCisgICAgaW50OF90IHFwWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8vPCBRcFksIFFw4oCyQ2IsIFFw4oCyQ3IsIFFw4oCyQ2JDcgorCisgICAgUHJlZGljdGlv blVuaXQgcHU7CisKKyAgICBzdHJ1Y3QgQ29kaW5nVW5pdCAqbmV4dDsgICAgICAgICAgICAgICAg ICAgICAgICAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2UKK30gQ29kaW5nVW5pdDsKKwordHlwZWRl ZiBzdHJ1Y3QgQ1RVIHsKKyAgICBDb2RpbmdVbml0ICpjdXM7CisgICAgaW50IG1heF95WzJdW1ZW Q19NQVhfUkVGX0VOVFJJRVNdOworICAgIGludCBtYXhfeV9pZHhbMl07Cit9IENUVTsKKwordHlw ZWRlZiBzdHJ1Y3QgUmVjb25zdHJ1Y3RlZEFyZWEgeworICAgIGludCB4OworICAgIGludCB5Owor ICAgIGludCB3OworICAgIGludCBoOworfSBSZWNvbnN0cnVjdGVkQXJlYTsKKwordHlwZWRlZiBz dHJ1Y3QgVlZDQ2FiYWNTdGF0ZSB7CisgICAgdWludDE2X3Qgc3RhdGVbMl07CisgICAgdWludDhf dCAgc2hpZnRbMl07Cit9IFZWQ0NhYmFjU3RhdGU7CisKKy8vIFZWQ19DT05URVhUUyBtYXRjaGVk IHdpdGggU1lOVEFYX0VMRU1FTlRfTEFTVCwgaXQncyBjaGVja2VkIGJ5IGNhYmFjX2luaXRfc3Rh dGUuCisjZGVmaW5lIFZWQ19DT05URVhUUyAzNzgKK3R5cGVkZWYgc3RydWN0IEVudHJ5UG9pbnQg eworICAgIGludDhfdCBxcF95OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v LzwgUXBZCisKKyAgICBpbnQgc3RhdF9jb2VmZltWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOyAgICAg ICAgICAvLy88IFN0YXRDb2VmZgorCisgICAgVlZDQ2FiYWNTdGF0ZSBjYWJhY19zdGF0ZVtWVkNf Q09OVEVYVFNdOworICAgIENBQkFDQ29udGV4dCBjYzsKKworICAgIGludCBjdHVfc3RhcnQ7Cisg ICAgaW50IGN0dV9lbmQ7CisKKyAgICB1aW50OF90IGlzX2ZpcnN0X3FnOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBmaXJzdCBxdWFudGl6YXRpb24gZ3JvdXAKKyAgICBNdkZpZWxkIGht dnBbTUFYX05VTV9ITVZQX0NBTkRTXTsgICAgICAgICAgICAgICAvLy88IEhtdnBDYW5kTGlzdAor ICAgIGludCAgICAgbnVtX2htdnA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwg TnVtSG12cENhbmQKK30gRW50cnlQb2ludDsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDTG9jYWxDb250 ZXh0IHsKKyAgICB1aW50OF90IGN0Yl9sZWZ0X2ZsYWc7CisgICAgdWludDhfdCBjdGJfdXBfZmxh ZzsKKyAgICB1aW50OF90IGN0Yl91cF9yaWdodF9mbGFnOworICAgIHVpbnQ4X3QgY3RiX3VwX2xl ZnRfZmxhZzsKKyAgICBpbnQgICAgIGVuZF9vZl90aWxlc194OworICAgIGludCAgICAgZW5kX29m X3RpbGVzX3k7CisKKyAgICAvKiArNyBpcyBmb3Igc3VicGl4ZWwgaW50ZXJwb2xhdGlvbiwgKjIg Zm9yIGhpZ2ggYml0IGRlcHRocyAqLworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwg ZWRnZV9lbXVfYnVmZmVyKVsoTUFYX1BCX1NJWkUgKyA3KSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJ REUgKiAyXTsKKyAgICAvKiBUaGUgZXh0ZW5kZWQgc2l6ZSBiZXR3ZWVuIHRoZSBuZXcgZWRnZSBl bXUgYnVmZmVyIGlzIGFidXNlZCBieSBTQU8gKi8KKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVp bnQ4X3QsIGVkZ2VfZW11X2J1ZmZlcjIpWyhNQVhfUEJfU0laRSArIDcpICogRURHRV9FTVVfQlVG RkVSX1NUUklERSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MTZfdCwgdG1wKVtN QVhfUEJfU0laRSAqIE1BWF9QQl9TSVpFXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIGludDE2 X3QsIHRtcDEpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkVdOworICAgIERFQ0xBUkVfQUxJR05F RCgzMiwgaW50MTZfdCwgdG1wMilbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRV07CisgICAgREVD TEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBjaWlwX3RtcDEpW01BWF9QQl9TSVpFICogTUFYX1BC X1NJWkUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGNpaXBfdG1wMilb TUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwg dWludDhfdCwgc2FvX2J1ZmZlcilbKE1BWF9DVFVfU0laRSArIDIgKiBTQU9fUEFERElOR19TSVpF KSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIs IHVpbnQ4X3QsIGFsZl9idWZmZXJfbHVtYSlbKE1BWF9DVFVfU0laRSArIDIgKiBBTEZfUEFERElO R19TSVpFKSAqIEVER0VfRU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdO RUQoMzIsIHVpbnQ4X3QsIGFsZl9idWZmZXJfY2hyb21hKVsoTUFYX0NUVV9TSVpFICsgMiAqIEFM Rl9QQURESU5HX1NJWkUpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJdOworICAgIERFQ0xB UkVfQUxJR05FRCgzMiwgaW50MzJfdCwgYWxmX2dyYWRpZW50X3RtcClbQUxGX0dSQURJRU5UX1NJ WkUgKiBBTEZfR1JBRElFTlRfU0laRSAqIEFMRl9OVU1fRElSXTsKKworICAgIHN0cnVjdCB7Cisg ICAgICAgIGludCBzYnRfbnVtX2ZvdXJ0aHNfdGIwOyAgICAgICAgICAgICAgICAvLy88IFNidE51 bUZvdXJ0aHNUYjAKKworICAgICAgICB1aW50OF90IGlzX2N1X3FwX2RlbHRhX2NvZGVkOyAgICAg ICAgICAgLy8vPCBJc0N1UXBEZWx0YUNvZGVkCisgICAgICAgIGludCBjdV9xZ190b3BfbGVmdF94 OyAgICAgICAgICAgICAgICAgICAvLy88IEN1UWdUb3BMZWZ0WAorICAgICAgICBpbnQgY3VfcWdf dG9wX2xlZnRfeTsgICAgICAgICAgICAgICAgICAgLy8vPCBDdVFnVG9wTGVmdFkKKyAgICAgICAg aW50IGlzX2N1X2Nocm9tYV9xcF9vZmZzZXRfY29kZWQ7ICAgICAgIC8vLzwgSXNDdUNocm9tYVFw T2Zmc2V0Q29kZWQKKyAgICAgICAgaW50IGNocm9tYV9xcF9vZmZzZXRbM107ICAgICAgICAgICAg ICAgIC8vLzwgQ3VRcE9mZnNldENiLCBDdVFwT2Zmc2V0Q3IsIEN1UXBPZmZzZXRDYkNyCisKKyAg ICAgICAgaW50IGluZmVyX3R1X2NiZl9sdW1hOyAgICAgICAgICAgICAgICAgIC8vLzwgSW5mZXJU dUNiZkx1bWEKKyAgICAgICAgaW50IHByZXZfdHVfY2JmX3k7ICAgICAgICAgICAgICAgICAgICAg IC8vLzwgcHJldlR1Q2JmWTsKKworICAgICAgICBpbnQgbGZuc3RfZGNfb25seTsgICAgICAgICAg ICAgICAgICAgICAgLy8vPCBMZm5zdERjT25seQorICAgICAgICBpbnQgbGZuc3RfemVyb19vdXRf c2lnX2NvZWZmX2ZsYWc7ICAgICAgLy8vPCBMZm5zdFplcm9PdXRTaWdDb2VmZkZsYWcKKworICAg ICAgICBpbnQgbXRzX2RjX29ubHk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBNdHNEY09u bHkKKyAgICAgICAgaW50IG10c196ZXJvX291dF9zaWdfY29lZmZfZmxhZzsgICAgICAgIC8vLzwg TXRzWmVyb091dFNpZ0NvZWZmRmxhZzsKKyAgICB9IHBhcnNlOworCisgICAgc3RydWN0IHsKKyAg ICAgICAgLy8gbG1jcyBjYWNoZSwgZm9yIHJlY29uIG9ubHkKKyAgICAgICAgaW50IGNocm9tYV9z Y2FsZTsKKyAgICAgICAgaW50IHhfdnBkdTsKKyAgICAgICAgaW50IHlfdnBkdTsKKyAgICB9IGxt Y3M7CisKKyAgICBDb2RpbmdVbml0ICpjdTsKKyAgICBSZWNvbnN0cnVjdGVkQXJlYSByYXNbMl1b TUFYX1BBUlRTX0lOX0NUVV07CisgICAgaW50ICBudW1fcmFzWzJdOworCisgICAgTmVpZ2hib3Vy QXZhaWxhYmxlIG5hOworCisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfU0xJQ0UgICAgICgxIDw8IDAp CisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfVElMRSAgICAgICgxIDw8IDEpCisjZGVmaW5lIEJPVU5E QVJZX1VQUEVSX1NMSUNFICAgICgxIDw8IDIpCisjZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1RJTEUg ICAgICgxIDw8IDMpCisgICAgLyogcHJvcGVydGllcyBvZiB0aGUgYm91bmRhcnkgb2YgdGhlIGN1 cnJlbnQgQ1RCIGZvciB0aGUgcHVycG9zZXMKKyAgICAgKiBvZiB0aGUgZGVibG9ja2luZyBmaWx0 ZXIgKi8KKyAgICBpbnQgYm91bmRhcnlfZmxhZ3M7CisKKyAgICBTbGljZUNvbnRleHQgKnNjOwor ICAgIFZWQ0ZyYW1lQ29udGV4dCAqZmM7CisgICAgRW50cnlQb2ludCAqZXA7CisgICAgaW50ICpj b2VmZnM7Cit9IFZWQ0xvY2FsQ29udGV4dDsKKwordHlwZWRlZiBzdHJ1Y3QgVlZDQWxsb3dlZFNw bGl0IHsKKyAgICBpbnQgcXQ7CisgICAgaW50IGJ0djsKKyAgICBpbnQgYnRoOworICAgIGludCB0 dHY7CisgICAgaW50IHR0aDsKK30gVlZDQWxsb3dlZFNwbGl0OworCit0eXBlZGVmIHN0cnVjdCBT QU9QYXJhbXMgeworICAgIGludCBvZmZzZXRfYWJzWzNdWzRdOyAgICAgICAgICAgICAgIC8vLzwg c2FvX29mZnNldF9hYnMKKyAgICBpbnQgb2Zmc2V0X3NpZ25bM11bNF07ICAgICAgICAgICAgICAv Ly88IHNhb19vZmZzZXRfc2lnbgorCisgICAgdWludDhfdCBiYW5kX3Bvc2l0aW9uWzNdOyAgICAg ICAgICAgLy8vPCBzYW9fYmFuZF9wb3NpdGlvbgorCisgICAgaW50IGVvX2NsYXNzWzNdOyAgICAg ICAgICAgICAgICAgICAgLy8vPCBzYW9fZW9fY2xhc3MKKworICAgIGludDE2X3Qgb2Zmc2V0X3Zh bFszXVs1XTsgICAgICAgICAgIC8vLzxTYW9PZmZzZXRWYWwKKworICAgIHVpbnQ4X3QgdHlwZV9p ZHhbM107ICAgICAgICAgICAgICAgIC8vLzwgc2FvX3R5cGVfaWR4Cit9IFNBT1BhcmFtczsKKwor dHlwZWRlZiBzdHJ1Y3QgQUxGUGFyYW1zIHsKKyAgICB1aW50OF90IGN0Yl9mbGFnWzNdOyAgICAg ICAgICAgICAgICAvLy88IGFsZl9jdGJfZmxhZ1tdCisgICAgdWludDhfdCBjdGJfZmlsdF9zZXRf aWR4X3k7ICAgICAgICAgLy8vPCBBbGZDdGJGaWx0U2V0SWR4WQorICAgIHVpbnQ4X3QgYWxmX2N0 Yl9maWx0ZXJfYWx0X2lkeFsyXTsgIC8vLzwgYWxmX2N0Yl9maWx0ZXJfYWx0X2lkeFtdCisgICAg dWludDhfdCBjdGJfY2NfaWRjWzJdOyAgICAgICAgICAgICAgLy8vPCBhbGZfY3RiX2NjX2NiX2lk YywgYWxmX2N0Yl9jY19jcl9pZGMKKworICAgIHVpbnQ4X3QgYXBwbGllZFszXTsKK30gQUxGUGFy YW1zOworCit2b2lkIGZmX3Z2Y19lcF9pbml0X3N0YXRfY29lZmYoRW50cnlQb2ludCAqZXAsIGlu dCBiaXRfZGVwdGgsIGludCBwZXJzaXN0ZW50X3JpY2VfYWRhcHRhdGlvbl9lbmFibGVkX2ZsYWcp OworCisjZW5kaWYgLy8gQVZDT0RFQ19WVkNfVlZDX0NUVV9ICmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL3Z2Yy92dmNkZWMuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCmluZGV4IGIxNzU3YjAw YjUuLjFlZjcxYTQ4MzIgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCisrKyBi L2xpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5oCkBAIC04MCw2ICs4MCw3IEBAIHR5cGVkZWYgc3RydWN0 IFZWQ0ZyYW1lIHsKIAogdHlwZWRlZiBzdHJ1Y3QgU2xpY2VDb250ZXh0IHsKICAgICBpbnQgc2xp Y2VfaWR4OworICAgIFZWQ1NIIHNoOwogICAgIHN0cnVjdCBFbnRyeVBvaW50ICplcHM7CiAgICAg aW50IG5iX2VwczsKICAgICBSZWZQaWNMaXN0ICpycGw7CkBAIC05NSw2ICs5Niw4IEBAIHR5cGVk ZWYgc3RydWN0IFZWQ0ZyYW1lQ29udGV4dCB7CiAgICAgc3RydWN0IEFWRnJhbWUgKmZyYW1lOwog ICAgIHN0cnVjdCBBVkZyYW1lICpvdXRwdXRfZnJhbWU7CiAKKyAgICBWVkNGcmFtZVBhcmFtU2V0 cyBwczsKKwogICAgIFNsaWNlQ29udGV4dCAgKipzbGljZXM7CiAgICAgaW50IG5iX3NsaWNlczsK ICAgICBpbnQgbmJfc2xpY2VzX2FsbG9jYXRlZDsKQEAgLTExNCw2ICsxMTcsMTAgQEAgdHlwZWRl ZiBzdHJ1Y3QgVlZDRnJhbWVDb250ZXh0IHsKICAgICBzdHJ1Y3QgewogICAgICAgICBpbnQxNl90 ICpzbGljZV9pZHg7CiAKKyAgICAgICAgREJQYXJhbXMgICpkZWJsb2NrOworICAgICAgICBzdHJ1 Y3QgU0FPUGFyYW1zICpzYW87CisgICAgICAgIHN0cnVjdCBBTEZQYXJhbXMgKmFsZjsKKwogICAg ICAgICBpbnQgICAgICpjYl9wb3NfeFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88 IENiUG9zWFtdW11bXQogICAgICAgICBpbnQgICAgICpjYl9wb3NfeVsyXTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLy88IENiUG9zWVtdW11bXQogICAgICAgICB1aW50OF90ICpjYl93aWR0 aFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IENiV2lkdGhbXVtdW10KLS0gCjIu MjUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2Zm bXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn IHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=