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 0E0234ABCB for ; Fri, 14 Jun 2024 02:17:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 96CF168D45C; Fri, 14 Jun 2024 05:17:55 +0300 (EEST) Received: from AUS01-SY4-obe.outbound.protection.outlook.com (mail-sy4aus01olkn2180.outbound.protection.outlook.com [40.92.62.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59A4168D0E4 for ; Fri, 14 Jun 2024 05:17:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hm2GgcXhSOfDAXmzcgU9Zi8NXn9zPEhHRQdkCLpPpgu2OmF4Fe6aYN8ElAvs35TzPTDEd3FFsVrDA+DRDubGbOCiadxGxEZBvaXspQ9WXrE86u33AL3G/74xgjFC90CTfKgOHoHn4H2eQH1YP6k6wg+Uv9UeFMUYHTWaMXwA2IHsucrUEv98r89JwMkQHngREDKqqe3ah6mFiiwjxJzYM/TKqfMotCeu7/uIw961dwle5lwm2u6tXm2SY0ABnhDaTn2sSCT/3gg/FoJo8aksui4Pqk8yT8pMeVQsGmWmuu4AphfaF3fwl05dZZq4EK5tsbnab3MeB5uWDHBACNxpDg== 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=anc4HJHZRsaHTaYo8ZjrGujN84mucwUvCNqyq503a7I=; b=eEMr0G6KS5T2at/YaHKpPD8XA+yY3pKlKFtY2ZgbjWJYaJl0ZluMDcIJKkaEtFGvuub1EDMcW9kCnf/Os7MrmKdTRQ6d+1sXGx/WufzoNDXZJELmbKjyo5GcZwWhr0BVdjsS9M0aoQ2YayNsKzTVItxFKz78DeAO4COKSV7aJz6gewg+njvlC5eBhu2PHevQbM//IPs7sqIlw9dGvRSul0/qPYw2wubpl/gaJGFYrRQw68rAX07pBzZhMFOmJkX2/lglgke7ekjklvegy3zPgLfwkqKD6uMWHyTSffjzPcIC9OAqEYnQgY5JC850wGm777otw+/qNUpHfJdLi2Mjrg== 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=msn.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=anc4HJHZRsaHTaYo8ZjrGujN84mucwUvCNqyq503a7I=; b=LGnxHjUSmQ4d/ryAt8RokEHtkdfILLwrjlMjyBGfvfV+SvXSqkOodfU5u+HrDfKiyPZIGo+vuu05VygpCDNgnQUR52cDMtbjsgD4ZhjzEvYxtnw4iucIOKz164pw+C+4DgVBNQazULBpuVkRpm8SPM5MfIglUHvS8O/Q7LIWUWgPYHAySQsJFz+P/5jJcxLtnIwWOKujB+G0Y1hYG1tA/Tr4WgQicezJGmiEKAr8HNEPWh3E+uSbVAD9Ti+DB55SaXM8E5kJcAtg+rsS9TOvdjvc9D2GMp2XUEkOralsBa5oMQHwAmlgsiAfGdPJbZv8gVTk+ICiCu7Uli0m3XhRIQ== Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) by ME0P282MB4718.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:222::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.25; Fri, 14 Jun 2024 02:17:41 +0000 Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a]) by MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a%2]) with mapi id 15.20.7677.024; Fri, 14 Jun 2024 02:17:41 +0000 Message-ID: Date: Fri, 14 Jun 2024 10:17:36 +0800 User-Agent: Mozilla Thunderbird From: ftaft2000 To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-TMN: [xJM/qKE78u6iLIGH9cPSdPrLN8TVot1D] X-ClientProxiedBy: TYCPR01CA0169.jpnprd01.prod.outlook.com (2603:1096:400:2b2::12) To MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MEYP282MB1592:EE_|ME0P282MB4718:EE_ X-MS-Office365-Filtering-Correlation-Id: b4b778db-27e3-494c-0796-08dc8c182b72 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199023|56899028|3430499029|440099023|3412199020; X-Microsoft-Antispam-Message-Info: Lz4uqgWLZHKRCdaPDBbUvWSg69qjCdU77YWIpX5333Kmkt2XHpJKJXO7G2pw5izRC/kP1wc94PNcNfiUhILVO303obx2/4VEI1z2dsyq1KZtnsag/9tZRXWY1s5pIirNhhKg0Ck6y1nSVs5T8/T177V1eyQYTAPheK+KRJ/4tMcva/a+bAfOwjqq45LCS/y/N6rNneSCmD9GZBiINWW2Tz3PdVxr/tFrwOTeo4nsmnOW6zCtuACDdqoKF0W/7yER/Gfb+Wl12kA/R4VTviUKzVUdf4ODAPfjtJ454gGXZlLqD2vx+TAPvzen6God9CzIStGmwjxuXHiDIBbXXdz3dbVH4L+OpkVknoo9tnLIlj3/F2Tc4xbjBX+W3BFHzCH+MxqiAIQrjt/GjZn84mHquhHxZPSgljQ82hVlPFyRhl3A2n7jTAtwGg09scM5+j2BBCinr5Cb8+LMjq+9JkVsQFMOA55ODD3TUHe+TDr86z/e5Aq2OvCCoQ+E1e7YTxm9o/DM21yIARJg2IOovz8v5OdQEHlTdiwN4VZhw7ou9pAXtvtxAzRpgQmR/rYBMikU X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aGxDM2NGOUFHcVVPVnU2SXhjdmVzM1pFNEhnOTFJMnk1MmpXY1VBTDNCbHZV?= =?utf-8?B?cXV0Wno1ODlKN2V0Wm9lMkJvU3JWVlA2Y3I4K05FWXAzY3hBSDRmWHVlUlky?= =?utf-8?B?ZjNqeEN6aEN6NnlVUHpaYjlHZmU2R1FpZE9Id1dFMXBETEtKc0dacG5wV1Ro?= =?utf-8?B?MzJWcDF4WWpnSHdPUjFoV3p0UjlRNnVyWnBxL1QyemgvdktsSER6emVJVDBX?= =?utf-8?B?RGIzM2lJcTIvVm5TRDBSS2thdmFZZElsNzBERTg1eGxmY0RWOUd0YUZlMzhX?= =?utf-8?B?bVhMY3RxajFjZGdIaGFmdFRETzRXdy9nNXJnTThZeGkvb1ZFZXJpaDVoY3dO?= =?utf-8?B?V2Zxb3VlTlc1WDRNdk1IeXNLdU9Eckx1S0F5RUVVYUVaa05zNms3NWZTVE9n?= =?utf-8?B?Y1c5NGJrcFdkNXR1eFZhU3lJRjBrMkdWd3BSeG9HWnRXWUtZRWdRN2Y3bklR?= =?utf-8?B?WW9BOEs1UmpFb1F1WGFuRS9DOUlxMmljMVhPSjdSSCtKS0l0d1lLeGYxaDBV?= =?utf-8?B?ZmlLb1J6SS9jUlBZME0rM3o0UUVZZ0s2eUFEKzlNY0MrZnlVTlRoVHozSEhv?= =?utf-8?B?d3FFeU9YVlRvQm9HWnIwNDlrZitlK3RMSmhmNmZROWtVL2ljeE1hajNJTEZk?= =?utf-8?B?alhLZk9HdnNLZU0xcGpUb0Y2bXhjcG5IREtQUDUwZVliSmFWN0l5ejJQWkJi?= =?utf-8?B?QTlsRHdKKzNQTGdlZHY5WUxnZkZnLzdteWRDb1NEU3BCcjNSdWpWYUVySk5q?= =?utf-8?B?TkUrUjk0K0VsZGNIeWQwZTRubDNiYVR4ZWorNkF1K05HUWdLVDFKczdJZlJs?= =?utf-8?B?NDMwTUFWRzhnZmNnR1dpOFJDNjBtWEhLT1ZxSlJSdmtRd2pGWkNnWno3Sk5O?= =?utf-8?B?d0xIejQyVnk1bmkzVFdSQVNQWkVUZStKaFhuSGo2NTlwa2k3Tm04UWU2MW5P?= =?utf-8?B?a1VFMlNNYjZ5QVlHdFdzTmtJRHlnNU0yZFp3a1ZkWTRFcm5TS0EwUStKNnpN?= =?utf-8?B?RHY3M0ZqaklpazhqekgvcjExcm1vTjI1UG1MVDBjQXNmaDY4WHkrOG1KN3hI?= =?utf-8?B?SFhBQmZ6Q043QUdUd2pRU1lOekZ6VEJpNlpqYng0Tzc2NUFYL2k2ZTJyNGFB?= =?utf-8?B?RmFRRXNoOVhhWkxLdHJja09GTUFtV0gwM21GOHFCWTNqK1c5SCs2YWl1VnJn?= =?utf-8?B?My9oMEtXVmFXRklNb3NlOVhIODE3NktuM3JoekErbWJzZzVGT1ZqcGZiWHBH?= =?utf-8?B?dUcrLzFCMm9IZXRBanAwZ0xaRGFBTjNqUDZva1dPaWRqY3JSSmZETWgwM3lO?= =?utf-8?B?aVNLM3hwYWRXOHhCdjVwVmIwMXJwdEhZZUtjRFNsS0Y1eEtDR2FXaDV5ZzFP?= =?utf-8?B?dzNsUHF3MG4xeFF3ZFBCNWlZSmY1SFcwVTRUZ0JnRFM1K3RDK2k0WUxBZk55?= =?utf-8?B?QVFTckNRUTZtWnNGdWlkZm9LS3dTSGlUdnVaSlFxbGFpNUZIc1ppWTN3L0Zy?= =?utf-8?B?ZzMzNGx6NktxbzB5RGtQelZzcVdwbmg4a05rZ0tpMEwrZjZUNHYyaFpVT0hw?= =?utf-8?B?K3ZJYTlCSjRPc01DYWxFMjZMUlVJYmxvcEVUYml2VEk2STllaGRNNktLdUVn?= =?utf-8?Q?+odwfw+ESB5L9Ce8zPk3XfYd8QvH0MqsT6xdv0ryVxvg=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-746f3.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: b4b778db-27e3-494c-0796-08dc8c182b72 X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2024 02:17:41.9519 (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: ME0P282MB4718 Subject: [FFmpeg-devel] [PATCH] rtp enc/dec update for vvc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: U2lnbmVkLW9mZi1ieTogc2hpcWlmZW5nIDxzaGlxaWZlbmdAYm9lLmNvbS5jbj4KLS0tCiAgLmdp dGlnbm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKICBjb25maWd1cmUgICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKwogIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICB8ICAg MSArCiAgbGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgICAgICAgIHwgICAxICsKICBsaWJhdmNvZGVj L2xpYnZ2ZW5jLmMgICAgICAgICAgfCA1NjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAgbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKICBsaWJhdmZvcm1h dC9ydHBkZWMuYyAgICAgICAgICAgfCAgIDEgKwogIGxpYmF2Zm9ybWF0L3J0cGRlY19mb3JtYXRz LmggICB8ICAgMSArCiAgbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jICAgICAgIHwgMzQ5ICsrKysr KysrKysrKysrKysrKysrCiAgbGliYXZmb3JtYXQvcnRwZW5jLmMgICAgICAgICAgIHwgICAyICsK ICBsaWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMgfCAgOTQgKysrKystCiAgbGliYXZmb3Jt YXQvc2RwLmMgICAgICAgICAgICAgIHwgMTgyICsrKysrKysrKysrCiAgMTIgZmlsZXMgY2hhbmdl ZCwgMTE5NyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL2xpYnZ2ZW5jLmMKICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQv cnRwZGVjX3Z2Yy5jCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXgg ZTgxMGQxMTEwNy4uZDc0NDFhNmNkYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0 aWdub3JlCkBAIC00MSwzICs0MSw0IEBACiAgL3NyYwogIC9tYXBmaWxlCiAgL3Rvb2xzL3B5dGhv bi9fX3B5Y2FjaGVfXy8KKy9idWlsZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA4MzI4NDQyN2RmLi5kMzMxNjg4ZWI0 IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0yOTYsNiArMjk2LDcg QEAgRXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0OgogICAgLS1lbmFibGUtbGlid2VicCAgICAgICAg IGVuYWJsZSBXZWJQIGVuY29kaW5nIHZpYSBsaWJ3ZWJwIFtub10KICAgIC0tZW5hYmxlLWxpYngy NjQgICAgICAgICBlbmFibGUgSC4yNjQgZW5jb2RpbmcgdmlhIHgyNjQgW25vXQogICAgLS1lbmFi bGUtbGlieDI2NSAgICAgICAgIGVuYWJsZSBIRVZDIGVuY29kaW5nIHZpYSB4MjY1IFtub10KKyAg LS1lbmFibGUtbGlidnZlbmMgICAgICAgIGVuYWJsZSBILjI2Ni9WVkMgZW5jb2RpbmcgdmlhIHZ2 ZW5jIFtub10KICAgIC0tZW5hYmxlLWxpYnhldmUgICAgICAgICBlbmFibGUgRVZDIGVuY29kaW5n IHZpYSBsaWJ4ZXZlIFtub10KICAgIC0tZW5hYmxlLWxpYnhldmQgICAgICAgICBlbmFibGUgRVZD IGRlY29kaW5nIHZpYSBsaWJ4ZXZkIFtub10KICAgIC0tZW5hYmxlLWxpYnhhdnMgICAgICAgICBl bmFibGUgQVZTIGVuY29kaW5nIHZpYSB4YXZzIFtub10KQEAgLTE4NjcsNiArMTg2OCw3IEBAIEVY VEVSTkFMX0xJQlJBUllfR1BMX0xJU1Q9IgogICAgICBsaWJ2aWRzdGFiCiAgICAgIGxpYngyNjQK ICAgICAgbGlieDI2NQorICAgIGxpYnZ2ZW5jCiAgICAgIGxpYnhhdnMKICAgICAgbGlieGF2czIK ICAgICAgbGlieHZpZApAQCAtMzU2OSw2ICszNTcxLDcgQEAgbGlieDI2NHJnYl9lbmNvZGVyX2Rl cHM9ImxpYngyNjQiCiAgbGlieDI2NHJnYl9lbmNvZGVyX3NlbGVjdD0ibGlieDI2NF9lbmNvZGVy IgogIGxpYngyNjVfZW5jb2Rlcl9kZXBzPSJsaWJ4MjY1IgogIGxpYngyNjVfZW5jb2Rlcl9zZWxl Y3Q9ImF0c2NfYTUzIGRvdmlfcnB1ZW5jIgorbGlidnZlbmNfZW5jb2Rlcl9kZXBzPSJsaWJ2dmVu YyIKICBsaWJ4YXZzX2VuY29kZXJfZGVwcz0ibGlieGF2cyIKICBsaWJ4YXZzMl9lbmNvZGVyX2Rl cHM9ImxpYnhhdnMyIgogIGxpYnhldmRfZGVjb2Rlcl9kZXBzPSJsaWJ4ZXZkIgpAQCAtNzA0MSw2 ICs3MDQ0LDcgQEAgZW5hYmxlZCBsaWJ4MjY0ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25m aWcgCmxpYngyNjQgeDI2NCAic3RkaW50LmggeDI2NC5oIiB4CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGVja19jcHBfY29uZGl0aW9uIGxpYngyNjIgeDI2NC5oIAoiWDI2NF9NUEVH MiIKICBlbmFibGVkIGxpYngyNjUgICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ4 MjY1IHgyNjUgeDI2NS5oIAp4MjY1X2FwaV9nZXQgJiYKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlcXVpcmVfY3BwX2NvbmRpdGlvbiBsaWJ4MjY1IHgyNjUuaCAKIlgyNjVfQlVJTEQg Pj0gODkiCitlbmFibGVkIGxpYnZ2ZW5jICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBs aWJ2dmVuYyAibGlidnZlbmMgPj0gCjEuNi4xIiAidnZlbmMvdnZlbmMuaCIgdnZlbmNfZ2V0X3Zl cnNpb24KICBlbmFibGVkIGxpYnhhdnMgICAgICAgICAgICYmIHJlcXVpcmUgbGlieGF2cyAic3Rk aW50LmggeGF2cy5oIiAKeGF2c19lbmNvZGVyX2VuY29kZSAiLWx4YXZzICRwdGhyZWFkc19leHRy YWxpYnMgJGxpYm1fZXh0cmFsaWJzIgogIGVuYWJsZWQgbGlieGF2czIgICAgICAgICAgJiYgcmVx dWlyZV9wa2dfY29uZmlnIGxpYnhhdnMyICJ4YXZzMiA+PSAKMS4zLjAiICJzdGRpbnQuaCB4YXZz Mi5oIiB4YXZzMl9hcGlfZ2V0CiAgZW5hYmxlZCBsaWJ4ZXZkICAgICAgICAgICAmJiByZXF1aXJl X3BrZ19jb25maWcgbGlieGV2ZCAieGV2ZCA+PSAKMC40LjEiICJ4ZXZkLmgiIHhldmRfZGVjb2Rl CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpp bmRleCAxYTQ0MzUyOTA2Li4yZTk4ZTFjNzJmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2Vm aWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTExNTUsNiArMTE1NSw3IEBAIE9CSlMt JChDT05GSUdfTElCV0VCUF9BTklNX0VOQ09ERVIpICAgICAgICs9IApsaWJ3ZWJwZW5jX2NvbW1v bi5vIGxpYndlYnBlbmNfYW5pbQogIE9CSlMtJChDT05GSUdfTElCWDI2Ml9FTkNPREVSKSAgICAg ICAgICAgICs9IGxpYngyNjQubwogIE9CSlMtJChDT05GSUdfTElCWDI2NF9FTkNPREVSKSAgICAg ICAgICAgICs9IGxpYngyNjQubwogIE9CSlMtJChDT05GSUdfTElCWDI2NV9FTkNPREVSKSAgICAg ICAgICAgICs9IGxpYngyNjUubworT0JKUy0kKENPTkZJR19MSUJWVkVOQ19FTkNPREVSKSAgICAg ICAgICAgKz0gbGlidnZlbmMubwogIE9CSlMtJChDT05GSUdfTElCWEFWU19FTkNPREVSKSAgICAg ICAgICAgICs9IGxpYnhhdnMubwogIE9CSlMtJChDT05GSUdfTElCWEFWUzJfRU5DT0RFUikgICAg ICAgICAgICs9IGxpYnhhdnMyLm8KICBPQkpTLSQoQ09ORklHX0xJQlhFVkRfREVDT0RFUikgICAg ICAgICAgICArPSBsaWJ4ZXZkLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMg Yi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCmluZGV4IGIxMDJhODA2OWUuLjc2NTBhYmViZTQgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKKysrIGIvbGliYXZjb2RlYy9hbGxjb2Rl Y3MuYwpAQCAtODA3LDYgKzgwNyw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYngyNjJf ZW5jb2RlcjsKICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4MjY0X2VuY29kZXI7CiAgZXh0 ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlieDI2NHJnYl9lbmNvZGVyOwogIGV4dGVybiBGRkNvZGVj IGZmX2xpYngyNjVfZW5jb2RlcjsKK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnZ2ZW5jX2Vu Y29kZXI7CiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlieGV2ZV9lbmNvZGVyOwogIGV4dGVy biBjb25zdCBGRkNvZGVjIGZmX2xpYnhldmRfZGVjb2RlcjsKICBleHRlcm4gY29uc3QgRkZDb2Rl YyBmZl9saWJ4YXZzX2VuY29kZXI7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMg Yi9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNzhkNGY1NWEyYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvbGlidnZlbmMu YwpAQCAtMCwwICsxLDU2NiBAQAorLyoKKyAqIEguMjY2IGVuY29kaW5nIHVzaW5nIHRoZSBWVmVu QyBsaWJyYXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyLCBUaG9tYXMgU2llZGVsCisgKgor ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQSAKMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnX2Nv bXBvbmVudHMuaCIKKworI2luY2x1ZGUgPHZ2ZW5jL3Z2ZW5jLmg+CisjaW5jbHVkZSA8dnZlbmMv dnZlbmNDZmcuaD4KKyNpbmNsdWRlIDx2dmVuYy92ZXJzaW9uLmg+CisKKyNpbmNsdWRlICJhdmNv ZGVjLmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJlbmNvZGUuaCIK KyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInBhY2tldF9pbnRlcm5hbC5oIgorI2lu Y2x1ZGUgInByb2ZpbGVzLmgiCisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL21lbS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIK KyNpbmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvZnJh bWUuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbG9nLmgiCisKK3R5cGVkZWYgc3RydWN0IFZWZW5D T3B0aW9ucyB7CisgICAgaW50IHByZXNldDsgICAgICAgICAgICAgICAgIC8vIHByZXNldCAwOiBm YXN0ZXIgIDQ6IHNsb3dlcgorICAgIGludCBxcDsgICAgICAgICAgICAgICAgICAgICAvLyBxdWFu dGl6YXRpb24gcGFyYW1ldGVyIDAtNjMKKyAgICBpbnQgc3ViamVjdGl2ZU9wdGltaXphdGlvbjsg Ly8gcGVyY2VwdHVhbGx5IG1vdGl2YXRlZCBRUCAKYWRhcHRhdGlvbiwgWFBTTlIgYmFzZWQKKyAg ICBpbnQgZmxhZzhiaXRDb2Rpbmc7ICAgICAgICAgLy8gZW5jb2RlIGluIDhiaXQgaW5zdGVhZCBv ZiAxMGJpdAorICAgIGludCBpbnRyYVJlZnJlc2hTZWM7ICAgICAgICAvLyBpbnRyYSBwZXJpb2Qv cmVmcmVzaCBpbiBzZWNvbmRzCisgICAgaW50IGxldmVsSWRjOyAgICAgICAgICAgICAgIC8vIHZ2 YyBsZXZlbF9pZGMKKyAgICBpbnQgdGllcjsgICAgICAgICAgICAgICAgICAgLy8gdnZjIHRpZXIK KyAgICBBVkRpY3Rpb25hcnkgKnZ2ZW5jX29wdHM7Cit9IFZWZW5DT3B0aW9uczsKKwordHlwZWRl ZiBzdHJ1Y3QgVlZlbkNDb250ZXh0IHsKKyAgICBBVkNsYXNzICAgICAgICAgKmF2X2NsYXNzOwor ICAgIFZWZW5DT3B0aW9ucyAgICBvcHRpb25zOyAgICAgIC8vIGVuY29kZXIgb3B0aW9ucworICAg IHZ2ZW5jRW5jb2RlciAgICAqdnZlbmNFbmM7CisgICAgdnZlbmNBY2Nlc3NVbml0ICpwQVU7Cisg ICAgYm9vbCAgICAgICAgICAgIGVuY29kZURvbmU7Cit9IFZWZW5DQ29udGV4dDsKKworCitzdGF0 aWMgYXZfY29sZCB2b2lkIGZmX3Z2ZW5jX2xvZ19jYWxsYmFjayh2b2lkICpjdHgsIGludCBsZXZl bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KmZtdCwgdmFfbGlzdCBhcmdzKQoreworICAgIHZ2ZW5jX2NvbmZpZyBwYXJhbXM7CisgICAgdnZl bmNFbmNvZGVyICp2dmVuY0VuYyA9ICh2dmVuY0VuY29kZXIgKiljdHg7CisgICAgaWYgKHZ2ZW5j RW5jKXsKKyAgICAgICAgdnZlbmNfY29uZmlnX2RlZmF1bHQoJnBhcmFtcyk7CisgICAgICAgIHZ2 ZW5jX2dldF9jb25maWcodnZlbmNFbmMsICZwYXJhbXMpOworICAgICAgICBpZiAoKGludClwYXJh bXMubV92ZXJib3NpdHkgPj0gbGV2ZWwpCisgICAgICAgICAgICB2ZnByaW50ZihsZXZlbCA9PSAx ID8gc3RkZXJyIDogc3Rkb3V0LCBmbXQsIGFyZ3MpOworICAgIH0KK30KKworc3RhdGljIHZvaWQg ZmZfdnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyogcGFyYW1zICkKK3sKKyAgICBw YXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfVkVSQk9TRTsKKyAgICBpZiAoYXZfbG9nX2dldF9s ZXZlbCgpID49IEFWX0xPR19ERUJVRykKKyAgICAgICAgcGFyYW1zLT5tX3ZlcmJvc2l0eSA9IFZW RU5DX0RFVEFJTFM7CisgICAgZWxzZSBpZiAoYXZfbG9nX2dldF9sZXZlbCgpID49IEFWX0xPR19W RVJCT1NFKQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfTk9USUNFOyAgICAg IC8vIG91dHB1dCBwZXIgcGljdHVyZSBpbmZvCisgICAgZWxzZSBpZiAoYXZfbG9nX2dldF9sZXZl bCgpID49IEFWX0xPR19JTkZPKQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNf V0FSTklORzsgICAgIC8vIGZmbXBlZyBkZWZhdWx0IApmZm1wZWcgbG9nbGV2ZWwKKyAgICBlbHNl CisgICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBWVkVOQ19TSUxFTlQ7Cit9CisKK3N0YXRp YyBpbnQgZmZfdnZlbmNfc2V0X3BpY19mb3JtYXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVu Y19jb25maWcqIApwYXJhbXMgKQoreworICAgIFZWZW5DQ29udGV4dCAqcyA9KFZWZW5DQ29udGV4 dCAqKSBhdmN0eC0+cHJpdl9kYXRhOworCisgICAgcGFyYW1zLT5tX2ludGVybkNocm9tYUZvcm1h dCA9IFZWRU5DX0NIUk9NQV80MjA7CisgICAgcGFyYW1zLT5tX2lucHV0Qml0RGVwdGhbMF0gICA9 IDEwOworCisgICAgaWYgKGF2Y3R4LT5waXhfZm10ICE9IEFWX1BJWF9GTVRfWVVWNDIwUDEwTEUp eworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICJ1 bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgJXMsIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgZm9yIAp5 dXY0MjBwMTBsZVxuIiwKKyAgICAgICAgICAgICAgICBhdl9nZXRfcGl4X2ZtdF9uYW1lKGF2Y3R4 LT5waXhfZm10KSk7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisg ICAgaWYgKHMtPm9wdGlvbnMuZmxhZzhiaXRDb2RpbmcpIHsKKyNpZiBWVkVOQ19WRVJTSU9OX01B Sk9SID4gMSB8fCAoVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYmIApWVkVOQ19WRVJTSU9OX01J Tk9SID4gOSkgfHwgKFZWRU5DX1ZFUlNJT05fTUFKT1IgPT0gMSAmJiAKVlZFTkNfVkVSU0lPTl9N SU5PUiA+PSA5ICYmIFZWRU5DX1ZFUlNJT05fUEFUQ0ggPj0gMSkKKyAgICAgICAgICAgIHBhcmFt cy0+bV9pbnRlcm5hbEJpdERlcHRoWzBdID0gODsKKyNlbHNlCisgICAgICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgOGJpdCBj b2RpbmcgbW9kZS4gOGJpdCBjb2RpbmcgbmVlZHMgYXQgCmxlYXN0IHZ2ZW5jIHZlcnNpb24gPj0g MS45LjEgIgorICAgICAgICAgICAgICAgICIoY3VycmVudCB2ZXJzaW9uICVzKVxuIiwgdnZlbmNf Z2V0X3ZlcnNpb24oKSApOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyNl bmRpZgorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmZfdnZlbmNfc2V0 X2NvbG9yX2Zvcm1hdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIAp2dmVuY19jb25maWcqIHBhcmFt cyApCit7CisgICAgaWYgKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BF Q0lGSUVEKQorICAgICAgICBwYXJhbXMtPm1fY29sb3VyUHJpbWFyaWVzID0gKGludCkgYXZjdHgt PmNvbG9yX3ByaW1hcmllczsKKyAgICBpZiAoYXZjdHgtPmNvbG9yc3BhY2UgIT0gQVZDT0xfU1BD X1VOU1BFQ0lGSUVEKQorICAgICAgICBwYXJhbXMtPm1fbWF0cml4Q29lZmZpY2llbnRzID0gKGlu dCkgYXZjdHgtPmNvbG9yc3BhY2U7CisgICAgaWYgKGF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xf VFJDX1VOU1BFQ0lGSUVEKSB7CisgICAgICAgIHBhcmFtcy0+bV90cmFuc2ZlckNoYXJhY3Rlcmlz dGljcyA9IChpbnQpIGF2Y3R4LT5jb2xvcl90cmM7CisKKyAgICAgICAgaWYgKGF2Y3R4LT5jb2xv cl90cmMgPT0gQVZDT0xfVFJDX1NNUFRFMjA4NCkKKyAgICAgICAgICAgIHBhcmFtcy0+bV9IZHJN b2RlID0gKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgPT0gCkFWQ09MX1BSSV9CVDIwMjApID8KKyAg ICAgICAgICAgICAgICBWVkVOQ19IRFJfUFFfQlQyMDIwIDogVlZFTkNfSERSX1BROworICAgICAg ICBlbHNlIGlmIChhdmN0eC0+Y29sb3JfdHJjID09IEFWQ09MX1RSQ19CVDIwMjBfMTAKKyAgICAg ICAgICAgICAgICAgfHwgYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNfQVJJQl9TVERfQjY3 KQorICAgICAgICAgICAgcGFyYW1zLT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3RyYyA9PSBB VkNPTF9UUkNfQlQyMDIwXzEwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2 Y3R4LT5jb2xvcl9wcmltYXJpZXMgPT0gCkFWQ09MX1BSSV9CVDIwMjAgfHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgPT0gCkFWQ09MX1NQQ19CVDIw MjBfTkNMIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcnNw YWNlID09IEFWQ09MX1NQQ19CVDIwMjBfQ0wpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBWVkVOQ19IRFJfSExHX0JUMjAyMCA6IFZWRU5DX0hEUl9ITEc7CisgICAgfQorCisgICAg aWYgKHBhcmFtcy0+bV9IZHJNb2RlID09IFZWRU5DX0hEUl9PRkYKKyAgICAgICAgJiYgKGF2Y3R4 LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVECisgICAgICAgICAgICB8 fCBhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpKSB7CisgICAgICAg IHBhcmFtcy0+bV92dWlQYXJhbWV0ZXJzUHJlc2VudCA9IDE7CisgICAgICAgIHBhcmFtcy0+bV9j b2xvdXJEZXNjcmlwdGlvblByZXNlbnQgPSB0cnVlOworICAgIH0KK30KKworc3RhdGljIHZvaWQg ZmZfdnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2ZW5jX2NvbmZp ZyogCnBhcmFtcyApCit7CisgICAgcGFyYW1zLT5tX0ZyYW1lUmF0ZSA9IGF2Y3R4LT50aW1lX2Jh c2UuZGVuOworICAgIHBhcmFtcy0+bV9GcmFtZVNjYWxlID0gYXZjdHgtPnRpbWVfYmFzZS5udW07 CisKK0ZGX0RJU0FCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKKworI2lmIEZGX0FQSV9USUNLU19Q RVJfRlJBTUUKKyAgICBpZiAoYXZjdHgtPnRpY2tzX3Blcl9mcmFtZSA9PSAxKSB7CisjZW5kaWYK KyAgICAgICAgcGFyYW1zLT5tX1RpY2tzUGVyU2Vjb25kID0gLTE7ICAgLy8gYXV0byBtb2RlIGZv ciB0aWNrcyBwZXIgCmZyYW1lID0gMQorI2lmIEZGX0FQSV9USUNLU19QRVJfRlJBTUUKKyAgICB9 IGVsc2UgeworICAgICAgICBwYXJhbXMtPm1fVGlja3NQZXJTZWNvbmQgPQorICAgICAgICAgICAg Y2VpbCgoYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyAoZG91YmxlKSBhdmN0eC0+dGltZV9iYXNlLm51 bSkgKgorICAgICAgICAgICAgICAgICAoZG91YmxlKSBhdmN0eC0+dGlja3NfcGVyX2ZyYW1lKTsK KyAgICB9CisjZW5kaWYKK0ZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUworfQorCitzdGF0 aWMgaW50IGZmX3Z2ZW5jX3BhcnNlX3Z2ZW5jX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgs IAp2dmVuY19jb25maWcqIHBhcmFtcywgY2hhciogc3RhdHNmaWxlICkKK3sKKyAgICBpbnQgcGFy c2VfcmV0LCByZXQ7CisgICAgVlZlbkNDb250ZXh0ICpzOworICAgIEFWRGljdGlvbmFyeUVudHJ5 ICplbiA9IE5VTEw7CisgICAgcyA9KFZWZW5DQ29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOwor ICAgIHJldCA9IDA7CisKKyAgICB3aGlsZSAoKGVuID0gYXZfZGljdF9nZXQocy0+b3B0aW9ucy52 dmVuY19vcHRzLCAiIiwgZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0RJQ1Rf SUdOT1JFX1NVRkZJWCkpKSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAi dnZlbmNfc2V0X3BhcmFtOiAnJXM6JXMnXG4iLCBlbi0+a2V5LAorICAgICAgICAgICAgICAgZW4t PnZhbHVlKTsKKyAgICAgICAgcGFyc2VfcmV0ID0gdnZlbmNfc2V0X3BhcmFtKHBhcmFtcywgZW4t PmtleSwgZW4tPnZhbHVlKTsKKyAgICAgICAgc3dpdGNoIChwYXJzZV9yZXQpIHsKKyAgICAgICAg Y2FzZSBWVkVOQ19QQVJBTV9CQURfTkFNRToKKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLCAiVW5rbm93biB2dmVuYyBvcHRpb246ICVzLlxuIiwKKyAgICAgICAgICAgICAg ICAgICBlbi0+a2V5KTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFZWRU5DX1BBUkFNX0JBRF9WQUxVRToKKyAgICAg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJJ bnZhbGlkIHZ2ZW5jIHZhbHVlIGZvciAlczogJXMuXG4iLCBlbi0+a2V5LCAKZW4tPnZhbHVlKTsK KyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICBpZiAobWVtY21wKGVuLT5rZXksICJyY3N0YXRzZmlsZSIsIDExKSA9PSAwIHx8CisgICAgICAg ICAgICBtZW1jbXAoZW4tPmtleSwgIlJDU3RhdHNGaWxlIiwgMTEpID09IDApIHsKKyAgICAgICAg ICAgIHN0cm5jcHkoc3RhdHNmaWxlLCBlbi0+dmFsdWUsIHN0cmxlbihzdGF0c2ZpbGUpKTsKKyAg ICAgICAgICAgIHN0YXRzZmlsZVtzdHJsZW4oc3RhdHNmaWxlKV0gPSAnXDAnOworICAgICAgICB9 CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZmZfdnZlbmNfc2V0X3Jj X21vZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcqIApwYXJhbXMpCit7Cisg ICAgaWYgKHBhcmFtcy0+bV9SQ1Bhc3MgIT0gLTEgJiYgcGFyYW1zLT5tX1JDTnVtUGFzc2VzID09 IDEpCisgICAgICAgIHBhcmFtcy0+bV9SQ051bVBhc3NlcyA9IDI7ICAgICAgIC8qIGVuYWJsZSAy cGFzcyBtb2RlICovCisKKyAgICBpZihhdmN0eC0+cmNfbWF4X3JhdGUpIHsKKyNpZiBWVkVOQ19W RVJTSU9OX01BSk9SID4gMSB8fCAoVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYmIApWVkVOQ19W RVJTSU9OX01JTk9SID4gOCkKKyAgICAgICAgcGFyYW1zLT5tX1JDTWF4Qml0cmF0ZSA9IGF2Y3R4 LT5yY19tYXhfcmF0ZTsKKyNlbmRpZgorCisjaWYgVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYm IFZWRU5DX1ZFUlNJT05fTUlOT1IgPCAxMQorICAgICAgICAvKiByY19tYXhfcmF0ZSB3aXRob3V0 IGEgYml0X3JhdGUgZW5hYmxlcyBjYXBwZWQgQ1FGIG1vZGUuCisgICAgICAgIChRUCArIHN1Ymou IG9wdGltaXphdGlvbiArIG1heC4gYml0cmF0ZSkgKi8KKyAgICAgICAgaWYoIWF2Y3R4LT5iaXRf cmF0ZSkgeworICAgICAgICAgICAgYXZfbG9nKCBhdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAg ICAgICAgICAgICJDYXBwZWQgQ29uc3RhbnQgUXVhbGl0eSBGYWN0b3IgbW9kZSAoY2FwcGVkIENR RikgbmVlZHMgCmF0ICIKKyAgICAgICAgICAgICAgICAibGVhc3QgdnZlbmMgdmVyc2lvbiA+PSAx LjExLjAgKGN1cnJlbnQgdmVyc2lvbiAlcylcbiIsCisgICAgICAgICAgICAgICAgdnZlbmNfZ2V0 X3ZlcnNpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAg ICB9CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmZfdnZl bmNfaW5pdF9leHRyYWRhdGEoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBWVmVuQ0NvbnRleHQgKnMp Cit7CisgICAgaW50IHJldDsKKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19H TE9CQUxfSEVBREVSKSB7CisgICAgICAgIHJldCA9IHZ2ZW5jX2dldF9oZWFkZXJzKHMtPnZ2ZW5j RW5jLCBzLT5wQVUpOworICAgICAgICBpZiAoMCAhPSByZXQpIHsKKyAgICAgICAgICAgIGF2X2xv ZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IGhl YWRlcnMgKFNQUyxQUFMpIGZyb20gdnZjIAplbmNvZGVyKHZ2ZW5jKTogJXNcbiIsCisgICAgICAg ICAgICAgICAgICAgdnZlbmNfZ2V0X2xhc3RfZXJyb3Iocy0+dnZlbmNFbmMpKTsKKyAgICAgICAg ICAgIHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+dnZlbmNFbmMpOworICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzLT5wQVUtPnBheWxv YWRVc2VkU2l6ZSA8PSAwKSB7CisgICAgICAgICAgICB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2 ZW5jRW5jKTsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAg ICB9CisKKyAgICAgICAgYXZjdHgtPmV4dHJhZGF0YV9zaXplID0gcy0+cEFVLT5wYXlsb2FkVXNl ZFNpemU7CisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGEgPQorICAgICAgICAgICAgYXZfbWFsbG9j eihhdmN0eC0+ZXh0cmFkYXRhX3NpemUgKyAKQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7 CisgICAgICAgIGlmICghYXZjdHgtPmV4dHJhZGF0YSkgeworICAgICAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBhbGxvY2F0ZSBW VkMgaGVhZGVyIG9mIHNpemUgJWQuXG4iLAorICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5leHRy YWRhdGFfc2l6ZSk7CisgICAgICAgICAgICB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5jRW5j KTsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIH0KKworICAg ICAgICBtZW1jcHkoYXZjdHgtPmV4dHJhZGF0YSwgcy0+cEFVLT5wYXlsb2FkLCBhdmN0eC0+ZXh0 cmFkYXRhX3NpemUpOworICAgICAgICBtZW1zZXQoYXZjdHgtPmV4dHJhZGF0YSArIGF2Y3R4LT5l eHRyYWRhdGFfc2l6ZSwgMCwKKyAgICAgICAgICAgICAgIEFWX0lOUFVUX0JVRkZFUl9QQURESU5H X1NJWkUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgaW50IGZm X3Z2ZW5jX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAgICBpbnQgcmV0 OworICAgIGludCBmcmFtZXJhdGUsIHFwOworICAgIFZWZW5DQ29udGV4dCAqczsKKyAgICB2dmVu Y19jb25maWcgcGFyYW1zOworICAgIHZ2ZW5jUHJlc2V0TW9kZSBwcmVzZXQ7CisgICAgY2hhciBz dGF0c2ZpbGVbMTAyNF0gPSAidnZlbmMtcmNzdGF0cy5qc29uIjsKKworICAgIHMgPSAoVlZlbkND b250ZXh0ICopIGF2Y3R4LT5wcml2X2RhdGE7CisgICAgcXAgPSBzLT5vcHRpb25zLnFwOworICAg IHByZXNldCA9ICh2dmVuY1ByZXNldE1vZGUpIHMtPm9wdGlvbnMucHJlc2V0OworCisgICAgaWYg KGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QpIHsKKyAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAiZmZfdnZlbmNfZW5j b2RlX2luaXQ6OmluaXQoKSBpbnRlcmxhY2VkIGVuY29kaW5nIG5vdCAKc3VwcG9ydGVkIHlldFxu Iik7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIHZ2 ZW5jX2NvbmZpZ19kZWZhdWx0KCZwYXJhbXMpOworCisgICAgZnJhbWVyYXRlID0gYXZjdHgtPnRp bWVfYmFzZS5kZW4gLyBhdmN0eC0+dGltZV9iYXNlLm51bTsKKyAgICB2dmVuY19pbml0X2RlZmF1 bHQoJnBhcmFtcywgYXZjdHgtPndpZHRoLCBhdmN0eC0+aGVpZ2h0LCBmcmFtZXJhdGUsCisgICAg ICAgICAgICAgICAgICAgICAgIChxcCA+PSAwKSA/IDAgOiBhdmN0eC0+Yml0X3JhdGUsIChxcCA8 IDApID8gMzIgOiAKcXAsIHByZXNldCk7CisKKyAgICBmZl92dmVuY19zZXRfdmVyYm9zaXRvcnko JnBhcmFtcyk7CisKKyAgICBpZiAoYXZjdHgtPnRocmVhZF9jb3VudCA+IDApCisgICAgICAgIHBh cmFtcy5tX251bVRocmVhZHMgPSBhdmN0eC0+dGhyZWFkX2NvdW50OworCisgICAgLyogR09QIHNl dHRpbmdzIChJRFIvQ1JBKSAqLworICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFH X0NMT1NFRF9HT1ApCisgICAgICAgIHBhcmFtcy5tX0RlY29kaW5nUmVmcmVzaFR5cGUgPSBWVkVO Q19EUlRfSURSOworCisgICAgaWYgKGF2Y3R4LT5nb3Bfc2l6ZSA9PSAxKSB7CisgICAgICAgIHBh cmFtcy5tX0dPUFNpemUgPSAxOworICAgICAgICBwYXJhbXMubV9JbnRyYVBlcmlvZCA9IDE7Cisg ICAgfSBlbHNlIHsKKyAgICAgICAgcGFyYW1zLm1fSW50cmFQZXJpb2RTZWMgPSBzLT5vcHRpb25z LmludHJhUmVmcmVzaFNlYzsKKyAgICB9CisKKyAgICBwYXJhbXMubV9BY2Nlc3NVbml0RGVsaW1p dGVyID0gdHJ1ZTsKKyAgICBwYXJhbXMubV9SQ051bVBhc3NlcyA9IDE7CisKKyAgICBwYXJhbXMu bV91c2VQZXJjZXB0UVBBID0gcy0+b3B0aW9ucy5zdWJqZWN0aXZlT3B0aW1pemF0aW9uOworICAg IHBhcmFtcy5tX2xldmVsICAgICAgICAgPSAodnZlbmNMZXZlbCkgcy0+b3B0aW9ucy5sZXZlbElk YzsKKyAgICBwYXJhbXMubV9sZXZlbFRpZXIgICAgID0gKHZ2ZW5jVGllcikgcy0+b3B0aW9ucy50 aWVyOworCisgICAgZmZfdnZlbmNfc2V0X2ZyYW1lcmF0ZShhdmN0eCwgJnBhcmFtcyk7CisKKyAg ICByZXQgPSBmZl92dmVuY19zZXRfcGljX2Zvcm1hdChhdmN0eCwgJnBhcmFtcyk7CisgICAgaWYo IHJldCAhPSAwICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGZmX3Z2ZW5jX3NldF9jb2xv cl9mb3JtYXQoYXZjdHgsICZwYXJhbXMpOworCisgICAgcmV0ID0gZmZfdnZlbmNfcGFyc2VfdnZl bmNfcGFyYW1zKGF2Y3R4LCAmcGFyYW1zLCAmc3RhdHNmaWxlWzBdKTsKKyAgICBpZiggcmV0ICE9 IDAgKQorICAgICAgICByZXR1cm4gcmV0OworCisKKyAgICByZXQgPSBmZl92dmVuY19zZXRfcmNf bW9kZShhdmN0eCwgJnBhcmFtcyk7CisgICAgaWYoIHJldCAhPSAwICkKKyAgICAgICAgcmV0dXJu IHJldDsKKworICAgIHMtPnZ2ZW5jRW5jID0gdnZlbmNfZW5jb2Rlcl9jcmVhdGUoKTsKKyAgICBp ZiAoTlVMTCA9PSBzLT52dmVuY0VuYykgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19F UlJPUiwgImNhbm5vdCBjcmVhdGUgdnZjIGVuY29kZXIgKHZ2ZW5jKVxuIik7CisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgdnZlbmNfc2V0X21zZ19jYWxsYmFj aygmcGFyYW1zLCBzLT52dmVuY0VuYywgZmZfdnZlbmNfbG9nX2NhbGxiYWNrKTsKKyAgICByZXQg PSB2dmVuY19lbmNvZGVyX29wZW4ocy0+dnZlbmNFbmMsICZwYXJhbXMpOworICAgIGlmICgwICE9 IHJldCkgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImNhbm5vdCBvcGVu IHZ2YyBlbmNvZGVyICh2dmVuYyk6IAolc1xuIiwKKyAgICAgICAgICAgICAgIHZ2ZW5jX2dldF9s YXN0X2Vycm9yKHMtPnZ2ZW5jRW5jKSk7CisgICAgICAgIHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+ dnZlbmNFbmMpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAg IHZ2ZW5jX2dldF9jb25maWcocy0+dnZlbmNFbmMsICZwYXJhbXMpOyAgICAgLyogZ2V0IHRoZSBh ZGFwdGVkIApjb25maWcgKi8KKworICAgIGF2X2xvZyhhdmN0eCwgYXZfbG9nX2dldF9sZXZlbCgp LCAidnZlbmMgdmVyc2lvbjogJXNcbiIsIAp2dmVuY19nZXRfdmVyc2lvbigpKTsKKyAgICBhdl9s b2coYXZjdHgsIGF2X2xvZ19nZXRfbGV2ZWwoKSwgIiVzXG4iLAorICAgICAgICAgICAgdnZlbmNf Z2V0X2NvbmZpZ19hc19zdHJpbmcoJnBhcmFtcywgcGFyYW1zLm1fdmVyYm9zaXR5KSk7CisKKyAg ICBpZiAocGFyYW1zLm1fUkNOdW1QYXNzZXMgPT0gMikgeworICAgICAgICByZXQgPSB2dmVuY19p bml0X3Bhc3Mocy0+dnZlbmNFbmMsIHBhcmFtcy5tX1JDUGFzcyAtIDEsIAomc3RhdHNmaWxlWzBd KTsKKyAgICAgICAgaWYgKDAgIT0gcmV0KSB7CisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAiY2Fubm90IGluaXQgcGFzcyAlZCBmb3Ig dnZjIGVuY29kZXIgKHZ2ZW5jKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgcGFyYW1zLm1f UkNQYXNzLCB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT52dmVuY0VuYykpOworICAgICAgICAgICAg dnZlbmNfZW5jb2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7CisgICAgICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOworICAgICAgICB9CisgICAgfQorCisgICAgcy0+cEFVID0gdnZlbmNfYWNj ZXNzVW5pdF9hbGxvYygpOworICAgIGlmKCAhcy0+cEFVICl7CisgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0ZBVEFMLCAiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgQVUgCnBheWxvYWRc biIpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKyAgICB2dmVuY19h Y2Nlc3NVbml0X2FsbG9jX3BheWxvYWQocy0+cEFVLCBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVp Z2h0KTsKKyAgICBpZiggIXMtPnBBVSApeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19G QVRBTCwgImNhbm5vdCBhbGxvY2F0ZSBwYXlsb2FkIG1lbW9yeSBvZiAKc2l6ZSAlZFxuIiwKKyAg ICAgICAgICAgICAgICBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0ICk7CisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgcmV0ID0gZmZfdnZlbmNfaW5pdF9l eHRyYWRhdGEoYXZjdHgsIHMpOworICAgIGlmKCByZXQgIT0gMCApCisgICAgICAgIHJldHVybiBy ZXQ7CisKKyAgICBzLT5lbmNvZGVEb25lID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBhdl9jb2xkIGludCBmZl92dmVuY19lbmNvZGVfY2xvc2UoQVZDb2RlY0NvbnRleHQgKiBh dmN0eCkKK3sKKyAgICBWVmVuQ0NvbnRleHQgKnMgPSAoVlZlbkNDb250ZXh0ICopIGF2Y3R4LT5w cml2X2RhdGE7CisgICAgaWYgKHMtPnZ2ZW5jRW5jKSB7CisgICAgICAgIGlmIChhdl9sb2dfZ2V0 X2xldmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpCisgICAgICAgICAgICB2dmVuY19wcmludF9zdW1t YXJ5KHMtPnZ2ZW5jRW5jKTsKKworICAgICAgICBpZiAoMCAhPSB2dmVuY19lbmNvZGVyX2Nsb3Nl KHMtPnZ2ZW5jRW5jKSkgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJjYW5ub3QgY2xvc2UgdnZlbmNcbiIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAg ICB9CisgICAgfQorCisgICAgdnZlbmNfYWNjZXNzVW5pdF9mcmVlKHMtPnBBVSwgdHJ1ZSk7CisK KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgaW50IGZmX3Z2ZW5jX2VuY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIApBVlBhY2tldCAqcGt0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpmcmFtZSwgaW50IAoq Z290X3BhY2tldCkKK3sKKyAgICBWVmVuQ0NvbnRleHQgKnMgPSAoVlZlbkNDb250ZXh0ICopIGF2 Y3R4LT5wcml2X2RhdGE7CisgICAgdnZlbmNZVVZCdWZmZXIgKnB5dXZidWY7CisgICAgdnZlbmNZ VVZCdWZmZXIgeXV2YnVmOworICAgIGludCBwaWN0X3R5cGU7CisgICAgaW50IHJldDsKKworICAg IHB5dXZidWYgPSBOVUxMOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBpZiAoYXZjdHgtPnBp eF9mbXQgPT0gQVZfUElYX0ZNVF9ZVVY0MjBQMTBMRSkgeworICAgICAgICAgICAgdnZlbmNfWVVW QnVmZmVyX2RlZmF1bHQoJnl1dmJ1Zik7CisgICAgICAgICAgICB5dXZidWYucGxhbmVzWzBdLnB0 ciA9IChpbnQxNl90ICopIGZyYW1lLT5kYXRhWzBdOworICAgICAgICAgICAgeXV2YnVmLnBsYW5l c1sxXS5wdHIgPSAoaW50MTZfdCAqKSBmcmFtZS0+ZGF0YVsxXTsKKyAgICAgICAgICAgIHl1dmJ1 Zi5wbGFuZXNbMl0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMl07CisKKyAgICAgICAg ICAgIHl1dmJ1Zi5wbGFuZXNbMF0ud2lkdGggPSBmcmFtZS0+d2lkdGg7CisgICAgICAgICAgICB5 dXZidWYucGxhbmVzWzBdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQ7CisgICAgICAgICAgICAvKiBz dHJpZGUgaXMgdXNlZCBpbiAxNmJpdHNhbXBsZXMgKDE2Yml0KSBpbiB2dmVuYywgZmZtcGVnIAp1 c2VzIHN0cmlkZSBpbiBieXRlcyAqLworICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1swXS5zdHJp ZGUgPSBmcmFtZS0+bGluZXNpemVbMF0gPj4gMTsKKworICAgICAgICAgICAgeXV2YnVmLnBsYW5l c1sxXS53aWR0aCA9IGZyYW1lLT53aWR0aCA+PiAxOworICAgICAgICAgICAgeXV2YnVmLnBsYW5l c1sxXS5oZWlnaHQgPSBmcmFtZS0+aGVpZ2h0ID4+IDE7CisgICAgICAgICAgICB5dXZidWYucGxh bmVzWzFdLnN0cmlkZSA9IGZyYW1lLT5saW5lc2l6ZVsxXSA+PiAxOworCisgICAgICAgICAgICB5 dXZidWYucGxhbmVzWzJdLndpZHRoID0gZnJhbWUtPndpZHRoID4+IDE7CisgICAgICAgICAgICB5 dXZidWYucGxhbmVzWzJdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQgPj4gMTsKKyAgICAgICAgICAg IHl1dmJ1Zi5wbGFuZXNbMl0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzJdID4+IDE7CisKKyAg ICAgICAgICAgIHl1dmJ1Zi5jdHMgPSBmcmFtZS0+cHRzOworICAgICAgICAgICAgeXV2YnVmLmN0 c1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIHB5dXZidWYgPSAmeXV2YnVmOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAg ICAgICAgICAgICAgInVuc3VwcG9ydGVkIGlucHV0IGNvbG9yc3BhY2UhIGlucHV0IG11c3QgYmUg Cnl1djQyMHAxMGxlIik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAg ICAgICB9CisgICAgfQorCisgICAgaWYgKCFzLT5lbmNvZGVEb25lKSB7CisgICAgICAgIHJldCA9 IHZ2ZW5jX2VuY29kZShzLT52dmVuY0VuYywgcHl1dmJ1Ziwgcy0+cEFVLCAmcy0+ZW5jb2RlRG9u ZSk7CisgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfRVJST1IsICJlcnJvciBpbiB2dmVuYzo6ZW5jb2RlIC0gCnJldDolZFxuIiwKKyAgICAg ICAgICAgICAgICAgICByZXQpOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgICpnb3RfcGFja2V0ID0gMDsKKyAgICAg ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHMtPnBBVS0+cGF5bG9hZFVzZWRTaXplID4g MCkgeworICAgICAgICByZXQgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0eCwgcGt0LCBzLT5w QVUtPnBheWxvYWRVc2VkU2l6ZSwgMCk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAg ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVycm9yIGdldHRpbmcgb3V0cHV0IHBh Y2tldC5cbiIpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAg IG1lbWNweShwa3QtPmRhdGEsIHMtPnBBVS0+cGF5bG9hZCwgcy0+cEFVLT5wYXlsb2FkVXNlZFNp emUpOworCisgICAgICAgIGlmIChzLT5wQVUtPmN0c1ZhbGlkKQorICAgICAgICAgICAgcGt0LT5w dHMgPSBzLT5wQVUtPmN0czsKKyAgICAgICAgaWYgKHMtPnBBVS0+ZHRzVmFsaWQpCisgICAgICAg ICAgICBwa3QtPmR0cyA9IHMtPnBBVS0+ZHRzOworICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BL VF9GTEFHX0tFWSAqIHMtPnBBVS0+cmFwOworCisgICAgICAgIHN3aXRjaCAocy0+cEFVLT5zbGlj ZVR5cGUpIHsKKyAgICAgICAgY2FzZSBWVkVOQ19JX1NMSUNFOgorICAgICAgICAgICAgcGljdF90 eXBlID0gQVZfUElDVFVSRV9UWVBFX0k7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz ZSBWVkVOQ19QX1NMSUNFOgorICAgICAgICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBF X1A7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWVkVOQ19CX1NMSUNFOgorICAg ICAgICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0I7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VS Uk9SLCAiVW5rbm93biBwaWN0dXJlIHR5cGUgCmVuY291bnRlcmVkLlxuIik7CisgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKKyAgICAgICAgfQorCisgICAgICAgIGZmX3NpZGVf ZGF0YV9zZXRfZW5jb2Rlcl9zdGF0cyhwa3QsIDAsIE5VTEwsIDAsIHBpY3RfdHlwZSk7CisKKyAg ICAgICAgKmdvdF9wYWNrZXQgPSAxOworCisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7 CisgICAgICAgICpnb3RfcGFja2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2Zt dHNfdnZlbmNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAxMExFLAorICAgIEFWX1BJWF9G TVRfTk9ORQorfTsKKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVlZlbkNDb250ZXh0LCB4 KQorI2RlZmluZSBWRSBBVl9PUFRfRkxBR19WSURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09E SU5HX1BBUkFNCitzdGF0aWMgY29uc3QgQVZPcHRpb24gbGlidnZlbmNfb3B0aW9uc1tdID0gewor ICAgIHsicHJlc2V0IiwgInNldCBlbmNvZGluZyBwcmVzZXQoMDogZmFzdGVyIC0gNDogc2xvd2Vy IiwgT0ZGU0VUKCAKb3B0aW9ucy5wcmVzZXQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMn0g LCAwICwgNCAsIFZFLCAicHJlc2V0In0sCisgICAgICAgIHsgImZhc3RlciIsICIwIiwgMCwgQVZf T1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfRkFTVEVSfSwgCklOVF9NSU4sIElOVF9NQVgs IFZFLCAicHJlc2V0IiB9LAorICAgICAgICB7ICJmYXN0IiwgICAiMSIsIDAsIEFWX09QVF9UWVBF X0NPTlNULCB7Lmk2NCA9IFZWRU5DX0ZBU1R9LCAKSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVz ZXQiIH0sCisgICAgICAgIHsgIm1lZGl1bSIsICIyIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsu aTY0ID0gVlZFTkNfTUVESVVNfSwgCklOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAor ICAgICAgICB7ICJzbG93IiwgICAiMyIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZW RU5DX1NMT1d9LCAKSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVzZXQiIH0sCisgICAgICAgIHsg InNsb3dlciIsICI0IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfU0xPV0VS fSwgCklOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAorICAgIHsgInFwIiAgICAgLCAi c2V0IHF1YW50aXphdGlvbiIsIE9GRlNFVChvcHRpb25zLnFwKSwgCkFWX09QVF9UWVBFX0lOVCwg IHsuaTY0ID0gLTF9LCAtMSAsIDYzICxWRSwgInFwX21vZGUiIH0sCisgICAgeyAicGVyaW9kIiAs ICJzZXQgKGludHJhKSByZWZyZXNoIHBlcmlvZCBpbiBzZWNvbmRzIiwgCk9GRlNFVChvcHRpb25z LmludHJhUmVmcmVzaFNlYyksIEFWX09QVF9UWVBFX0lOVCwgIHsuaTY0ID0gMX0sICAxICwgCklO VF9NQVggLFZFLCJpcmVmcmVzaHNlYyIgfSwKKyAgICB7ICJzdWJqb3B0IiwgInNldCBzdWJqZWN0 aXZlIChwZXJjZXB0dWFsbHkgbW90aXZhdGVkKSAKb3B0aW1pemF0aW9uIiwgT0ZGU0VUKG9wdGlv bnMuc3ViamVjdGl2ZU9wdGltaXphdGlvbiksIEFWX09QVF9UWVBFX0JPT0wsIAp7Lmk2NCA9IDF9 LCAgMCAsIDEsIFZFfSwKKyAgICB7ICJiaXRkZXB0aDgiLCAic2V0IDhiaXQgY29kaW5nIG1vZGUi LCAKT0ZGU0VUKG9wdGlvbnMuZmxhZzhiaXRDb2RpbmcpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2 NCA9IDB9LCAgMCAsIDEsIFZFfSwKKyAgICB7ICJ2dmVuYy1wYXJhbXMiLCAic2V0IHRoZSB2dmVu YyBjb25maWd1cmF0aW9uIHVzaW5nIGEgOi1zZXBhcmF0ZWQgCmxpc3Qgb2Yga2V5PXZhbHVlIHBh cmFtZXRlcnMiLCBPRkZTRVQob3B0aW9ucy52dmVuY19vcHRzKSwgCkFWX09QVF9UWVBFX0RJQ1Qs IHsgMCB9LCAwLCAwLCBWRSB9LAorICAgIHsgImxldmVsaWRjIiwgInZ2YyBsZXZlbF9pZGMiLCBP RkZTRVQoIG9wdGlvbnMubGV2ZWxJZGMpLCAKQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDB9LCAw LCAxMDUsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiMCIsICAgImF1dG8iLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgey5pNjQgPSAwfSwgIElOVF9NSU4sIApJTlRfTUFYLCBWRSwgImxldmVs aWRjIn0sCisgICAgICAgIHsgIjEiLCAgICIxIiAgICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsu aTY0ID0gMTZ9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAorICAgICAgICB7 ICIyIiwgICAiMiIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDMyfSwgSU5UX01J TiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiMi4xIiwgIjIuMSIgLCAw LCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAzNX0sIElOVF9NSU4sIApJTlRfTUFYLCBWRSwg ImxldmVsaWRjIn0sCisgICAgICAgIHsgIjMiLCAgICIzIiAgICwgMCwgQVZfT1BUX1RZUEVfQ09O U1QsIHsuaTY0ID0gNDh9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAorICAg ICAgICB7ICIzLjEiLCAiMy4xIiAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDUxfSwg SU5UX01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNCIsICAgIjQi ICAgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA2NH0sIElOVF9NSU4sIApJTlRfTUFY LCBWRSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjQuMSIsICI0LjEiICwgMCwgQVZfT1BUX1RZ UEVfQ09OU1QsIHsuaTY0ID0gNjd9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9 LAorICAgICAgICB7ICI1IiwgICAiNSIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9 IDgwfSwgSU5UX01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNS4x IiwgIjUuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA4M30sIElOVF9NSU4sIApJ TlRfTUFYLCBWRSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjUuMiIsICI1LjIiICwgMCwgQVZf T1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gODZ9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZl bGlkYyJ9LAorICAgICAgICB7ICI2IiwgICAiNiIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7 Lmk2NCA9IDk2fSwgSU5UX01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAg eyAiNi4xIiwgIjYuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA5OX0sIElOVF9N SU4sIApJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjYuMiIsICI2LjIiICwg MCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMTAyfSwgSU5UX01JTiwgCklOVF9NQVgsIFZF LCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNi4zIiwgIjYuMyIgLCAwLCBBVl9PUFRfVFlQRV9D T05TVCwgey5pNjQgPSAxMDV9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAor ICAgIHsgInRpZXIiLCAic2V0IHZ2YyB0aWVyIiwgT0ZGU0VUKCBvcHRpb25zLnRpZXIpLCBBVl9P UFRfVFlQRV9JTlQsIAp7Lmk2NCA9IDB9LCAgMCAsIDEgLCBWRSwgInRpZXIifSwKKyAgICAgICAg eyAibWFpbiIsICJtYWluIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMH0sIElOVF9N SU4sIApJTlRfTUFYLCBWRSwgInRpZXIifSwKKyAgICAgICAgeyAiaGlnaCIsICJoaWdoIiwgMCwg QVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMX0sIElOVF9NSU4sIApJTlRfTUFYLCBWRSwgInRp ZXIifSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBjb25zdCBBVkNsYXNzIGNsYXNzX2xpYnZ2 ZW5jID0geworICAgIC5jbGFzc19uYW1lID0gImxpYnZ2ZW5jLXZ2YyBlbmNvZGVyIiwKKyAgICAu aXRlbV9uYW1lICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gICAgID0gbGli dnZlbmNfb3B0aW9ucywKKyAgICAudmVyc2lvbiAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwK K307CisKK3N0YXRpYyBjb25zdCBGRkNvZGVjRGVmYXVsdCB2dmVuY19kZWZhdWx0c1tdID0gewor ICAgIHsgImIiLCAiMCIgfSwKKyAgICB7ICJnIiwgIi0xIiB9LAorICAgIHsgTlVMTCB9LAorfTsK KworRkZDb2RlYyBmZl9saWJ2dmVuY19lbmNvZGVyID0geworICAgIC5wLm5hbWUgICAgICAgICA9 ICJsaWJ2dmVuYyIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJILjI2NiAvIFZWQyBFbmNvZGVyIFZW ZW5DIiksCisgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5w LmlkICAgICAgICAgICA9IEFWX0NPREVDX0lEX1ZWQywKKyAgICAucC5jYXBhYmlsaXRpZXMgPSBB Vl9DT0RFQ19DQVBfREVMQVkgfCBBVl9DT0RFQ19DQVBfT1RIRVJfVEhSRUFEUywKKyAgICAucC5w cm9maWxlcyAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTChmZl92dmNfcHJvZmlsZXMpLAorICAg IC5wLnByaXZfY2xhc3MgICA9ICZjbGFzc19saWJ2dmVuYywKKyAgICAucC53cmFwcGVyX25hbWUg PSAibGlidnZlbmMiLAorICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWVmVuQ0NvbnRleHQp LAorICAgIC5wLnBpeF9mbXRzICAgICA9IHBpeF9mbXRzX3Z2ZW5jLAorICAgIC5pbml0ICAgICAg ICAgICA9IGZmX3Z2ZW5jX2VuY29kZV9pbml0LAorICAgIEZGX0NPREVDX0VOQ09ERV9DQihmZl92 dmVuY19lbmNvZGVfZnJhbWUpLAorICAgIC5jbG9zZSAgICAgICAgICA9IGZmX3Z2ZW5jX2VuY29k ZV9jbG9zZSwKKyAgICAuZGVmYXVsdHMgICAgICAgICA9IHZ2ZW5jX2RlZmF1bHRzLAorICAgIC5j YXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMsCit9OwpkaWZmIC0tZ2l0 IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCBhZjMx ZDZmNzk1Li43ZjZkYjNkNmQ2IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysg Yi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNTQsNiArNTQsNyBAQCBPQkpTLSQoQ09ORklHX1JU UERFQykgICAgICAgICAgICAgICAgICAgICs9IHJkdC5vIAogICAgICAgICAgICAgICAgICBcCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBkZWNfaDI2M19y ZmMyMTkwLm8gICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnRwZGVjX2gyNjQubyAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19oZXZjLm8gICAgICAgICAgICAgICBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY192dmMubyAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBydHBkZWNfaWxiYy5vICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnRwZGVjX2pwZWcubyAgICAgICAgICAgICAgIFwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19sYXRtLm8g ICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBkZWMuYyBiL2xpYmF2 Zm9ybWF0L3J0cGRlYy5jCmluZGV4IDcyOWJmODM2ODUuLjM0ZWY5MmEyYTAgMTAwNjQ0Ci0tLSBh L2xpYmF2Zm9ybWF0L3J0cGRlYy5jCisrKyBiL2xpYmF2Zm9ybWF0L3J0cGRlYy5jCkBAIC05OCw2 ICs5OCw3IEBAIHN0YXRpYyBjb25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyICpjb25zdCAK cnRwX2R5bmFtaWNfcHJvdG9jb2xfaGFuZGxlcl9saXN0WwogICAgICAmZmZfaDI2M19yZmMyMTkw X2R5bmFtaWNfaGFuZGxlciwKICAgICAgJmZmX2gyNjRfZHluYW1pY19oYW5kbGVyLAogICAgICAm ZmZfaGV2Y19keW5hbWljX2hhbmRsZXIsCisgICAgJmZmX3Z2Y19keW5hbWljX2hhbmRsZXIsCiAg ICAgICZmZl9pbGJjX2R5bmFtaWNfaGFuZGxlciwKICAgICAgJmZmX2pwZWdfZHluYW1pY19oYW5k bGVyLAogICAgICAmZmZfbXA0YV9sYXRtX2R5bmFtaWNfaGFuZGxlciwKZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L3J0cGRlY19mb3JtYXRzLmggYi9saWJhdmZvcm1hdC9ydHBkZWNfZm9ybWF0cy5o CmluZGV4IGRhZDJiOGFjMWIuLmFmMmUxN2ZiOTkgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3J0 cGRlY19mb3JtYXRzLmgKKysrIGIvbGliYXZmb3JtYXQvcnRwZGVjX2Zvcm1hdHMuaApAQCAtNjUs NiArNjUsNyBAQCBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciAKZmZfaDI2 M18yMDAwX2R5bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29s SGFuZGxlciBmZl9oMjYzX3JmYzIxOTBfZHluYW1pY19oYW5kbGVyOwogIGV4dGVybiBjb25zdCBS VFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2gyNjRfZHluYW1pY19oYW5kbGVyOwogIGV4dGVy biBjb25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2hldmNfZHluYW1pY19oYW5kbGVy OworZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgZmZfdnZjX2R5bmFtaWNf aGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl9pbGJj X2R5bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxl ciBmZl9qcGVnX2R5bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3Rv Y29sSGFuZGxlciBmZl9tcDRhX2xhdG1fZHluYW1pY19oYW5kbGVyOwpkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvcnRwZGVjX3Z2Yy5jIGIvbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg2ZjAxODJiMDEKLS0tIC9kZXYvbnVsbAor KysgYi9saWJhdmZvcm1hdC9ydHBkZWNfdnZjLmMKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBS VFAgcGFyc2VyIGZvciBWVkMvSC4yNjYgcGF5bG9hZCBmb3JtYXQgKGRyYWZ0IHZlcnNpb24gMC4x KQorICogQ29weXJpZ2h0IChjKSAyMDI0IFJvYmluU2hpIDxzaGlxaWZlbmdAZ21haWwuY29tPgor ICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgCjAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2 dXRpbC9hdmFzc2VydC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgorI2luY2x1 ZGUgImxpYmF2dXRpbC9tZW0uaCIKKworI2luY2x1ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAi aW50ZXJuYWwuaCIKKyNpbmNsdWRlICJydHBkZWMuaCIKKyNpbmNsdWRlICJydHBkZWNfZm9ybWF0 cy5oIgorCisjZGVmaW5lIFJUUF9WVkNfUEFZTE9BRF9IRUFERVJfU0laRSAgICAgICAyCisjZGVm aW5lIFJUUF9WVkNfRlVfSEVBREVSX1NJWkUgICAgICAgICAgICAxCisjZGVmaW5lIFJUUF9WVkNf RE9OTF9GSUVMRF9TSVpFICAgICAgICAgICAyCisjZGVmaW5lIFJUUF9WVkNfRE9ORF9GSUVMRF9T SVpFICAgICAgICAgICAxCisjZGVmaW5lIFJUUF9WVkNfQVBfTkFMVV9MRU5HVEhfRklFTERfU0la RSAyCisjZGVmaW5lIFZWQ19TUEVDSUZJRURfTkFMX1VOSVRfVFlQRVMgICAgICAyOAorCisvKiBT RFAgb3V0LW9mLWJhbmQgc2lnbmFsaW5nIGRhdGEgKi8KK3N0cnVjdCBQYXlsb2FkQ29udGV4dCB7 CisgICAgaW50IHVzaW5nX2RvbmxfZmllbGQ7CisgICAgaW50IHByb2ZpbGVfaWQ7CisgICAgdWlu dDhfdCAqc3BzLCAqcHBzLCAqdnBzLCAqc2VpOworICAgIGludCBzcHNfc2l6ZSwgcHBzX3NpemUs IHZwc19zaXplLCBzZWlfc2l6ZTsKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IHN0YXJ0X3Nl cXVlbmNlW10gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEgfTsKKworc3RhdGljIGF2X2NvbGQg aW50IHZ2Y19zZHBfcGFyc2VfZm10cF9jb25maWcoQVZGb3JtYXRDb250ZXh0ICpzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFtICpzdHJlYW0s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZENv bnRleHQgKnZ2Y19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmF0dHIsIGNvbnN0IApjaGFyICp2YWx1ZSkKK3sKKyAgICAvKiBw cm9maWxlLXNwYWNlOiAwLTMgKi8KKyAgICAvKiBwcm9maWxlLWlkOiAwLTMxICovCisgICAgaWYg KCFzdHJjbXAoYXR0ciwgInByb2ZpbGUtaWQiKSkgeworICAgICAgICB2dmNfZGF0YS0+cHJvZmls ZV9pZCA9IGF0b2kodmFsdWUpOworICAgICAgICBhdl9sb2cocywgQVZfTE9HX1RSQUNFLCAiU0RQ OiBmb3VuZCBwcm9maWxlLWlkOiAlZFxuIiwgCnZ2Y19kYXRhLT5wcm9maWxlX2lkKTsKKyAgICB9 CisKKyAgICAvKiB0aWVyLWZsYWc6IDAtMSAqLworICAgIC8qIGxldmVsLWlkOiAwLTI1NSAqLwor ICAgIC8qIGludGVyb3AtY29uc3RyYWludHM6IFtiYXNlMTZdICovCisgICAgLyogcHJvZmlsZS1j b21wYXRpYmlsaXR5LWluZGljYXRvcjogW2Jhc2UxNl0gKi8KKyAgICAvKiBzcHJvcC1zdWItbGF5 ZXItaWQ6IDAtNiwgZGVmaW5lcyBoaWdoZXN0IHBvc3NpYmxlIHZhbHVlIGZvciBUSUQsIApkZWZh dWx0OiA2ICovCisgICAgLyogcmVjdi1zdWItbGF5ZXItaWQ6IDAtNiAqLworICAgIC8qIG1heC1y ZWN2LWxldmVsLWlkOiAwLTI1NSAqLworICAgIC8qIHR4LW1vZGU6IE1TTSxTU00gKi8KKyAgICAv KiBzcHJvcC12cHM6IFtiYXNlNjRdICovCisgICAgLyogc3Byb3Atc3BzOiBbYmFzZTY0XSAqLwor ICAgIC8qIHNwcm9wLXBwczogW2Jhc2U2NF0gKi8KKyAgICAvKiBzcHJvcC1zZWk6IFtiYXNlNjRd ICovCisgICAgaWYgKCFzdHJjbXAoYXR0ciwgInNwcm9wLXZwcyIpIHx8ICFzdHJjbXAoYXR0ciwg InNwcm9wLXNwcyIpIHx8CisgICAgICAgICFzdHJjbXAoYXR0ciwgInNwcm9wLXBwcyIpIHx8ICFz dHJjbXAoYXR0ciwgInNwcm9wLXNlaSIpKSB7CisgICAgICAgIHVpbnQ4X3QgKipkYXRhX3B0ciA9 IE5VTEw7CisgICAgICAgIGludCAqc2l6ZV9wdHIgPSBOVUxMOworICAgICAgICBpZiAoIXN0cmNt cChhdHRyLCAic3Byb3AtdnBzIikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRh LT52cHM7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+dnBzX3NpemU7CisgICAg ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3Atc3BzIikpIHsKKyAgICAgICAgICAg IGRhdGFfcHRyID0gJnZ2Y19kYXRhLT5zcHM7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNf ZGF0YS0+c3BzX3NpemU7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3At cHBzIikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRhLT5wcHM7CisgICAgICAg ICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+cHBzX3NpemU7CisgICAgICAgIH0gZWxzZSBpZiAo IXN0cmNtcChhdHRyLCAic3Byb3Atc2VpIikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2 Y19kYXRhLT5zZWk7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+c2VpX3NpemU7 CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXZfYXNzZXJ0MCgwKTsKKworICAgICAgICBm Zl9oMjY0X3BhcnNlX3Nwcm9wX3BhcmFtZXRlcl9zZXRzKHMsIGRhdGFfcHRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfcHRyLCB2YWx1ZSk7CisgICAg fQorCisgICAgLyogbWF4LWxzciwgbWF4LWxwcywgbWF4LWNwYiwgbWF4LWRwYiwgbWF4LWJyLCBt YXgtdHIsIG1heC10YyAqLworICAgIC8qIG1heC1mcHMgKi8KKworICAgIC8qIHNwcm9wLW1heC1k b24tZGlmZjogMC0zMjc2NworCisgICAgICAgICBXaGVuIHRoZSBSVFAgc3RyZWFtIGRlcGVuZHMg b24gb25lIG9yIG1vcmUgb3RoZXIgUlRQCisgICAgICAgICBzdHJlYW1zIChpbiB0aGlzIGNhc2Ug dHgtbW9kZSBNVVNUIGJlIGVxdWFsIHRvICJNU00iIGFuZAorICAgICAgICAgTVNNIGlzIGluIHVz ZSksIHRoaXMgcGFyYW1ldGVyIE1VU1QgYmUgcHJlc2VudCBhbmQgdGhlCisgICAgICAgICB2YWx1 ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiAwLgorICAgICovCisgICAgaWYgKCFzdHJjbXAoYXR0ciwg InNwcm9wLW1heC1kb24tZGlmZiIpKSB7CisgICAgICAgIGlmIChhdG9pKHZhbHVlKSA+IDApCisg ICAgICAgICAgICB2dmNfZGF0YS0+dXNpbmdfZG9ubF9maWVsZCA9IDE7CisgICAgICAgIGF2X2xv ZyhzLCBBVl9MT0dfVFJBQ0UsICJGb3VuZCBzcHJvcC1tYXgtZG9uLWRpZmYgaW4gU0RQLCBET04g CmZpZWxkIHVzYWdlIGlzOiAlZFxuIiwKKyAgICAgICAgICAgICAgICB2dmNfZGF0YS0+dXNpbmdf ZG9ubF9maWVsZCk7CisgICAgfQorICAgIC8vIFZWQyBkb250IGhhdmUgc3Byb3AtZGVwYWNrLWJ1 Zi1uYWx1cyBzZXR0aW5nIGFjY29yZGluZyB0byAKcmZjOTMyOCArICAgIC8qIHNwcm9wLWRlcGFj ay1idWYtYnl0ZXM6IDAtNDI5NDk2NzI5NSAqLworICAgIC8qIGRlcGFjay1idWYtY2FwICovCisg ICAgLyogc3Byb3Atc2VnbWVudGF0aW9uLWlkOiAwLTMgKi8KKyAgICAvKiBzcHJvcC1zcGF0aWFs LXNlZ21lbnRhdGlvbi1pZGM6IFtiYXNlMTZdICovCisgICAgLyogZGVjLXBhcmFsbGVsLWNhOiAq LworICAgIC8qIGluY2x1ZGUtZHBoICovCisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2 X2NvbGQgaW50IHZ2Y19wYXJzZV9zZHBfbGluZShBVkZvcm1hdENvbnRleHQgKmN0eCwgaW50IHN0 X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZENv bnRleHQgKnZ2Y19kYXRhLCBjb25zdCAKY2hhciAqbGluZSkKK3sKKyAgICBBVlN0cmVhbSAqY3Vy cmVudF9zdHJlYW07CisgICAgQVZDb2RlY1BhcmFtZXRlcnMgKnBhcjsKKyAgICBjb25zdCBjaGFy ICpzZHBfbGluZV9wdHIgPSBsaW5lOworCisgICAgaWYgKHN0X2luZGV4IDwgMCkKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICBjdXJyZW50X3N0cmVhbSA9IGN0eC0+c3RyZWFtc1tzdF9pbmRleF07 CisgICAgcGFyICA9IGN1cnJlbnRfc3RyZWFtLT5jb2RlY3BhcjsKKworICAgIGlmIChhdl9zdHJz dGFydChzZHBfbGluZV9wdHIsICJmcmFtZXNpemU6IiwgJnNkcF9saW5lX3B0cikpIHsKKyAgICAg ICAgZmZfaDI2NF9wYXJzZV9mcmFtZXNpemUocGFyLCBzZHBfbGluZV9wdHIpOworICAgIH0gZWxz ZSBpZiAoYXZfc3Ryc3RhcnQoc2RwX2xpbmVfcHRyLCAiZm10cDoiLCAmc2RwX2xpbmVfcHRyKSkg eworICAgICAgICBpbnQgcmV0ID0gZmZfcGFyc2VfZm10cChjdHgsIGN1cnJlbnRfc3RyZWFtLCB2 dmNfZGF0YSwgCnNkcF9saW5lX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dnZjX3NkcF9wYXJzZV9mbXRwX2NvbmZpZyk7CisgICAgICAgIGlmICh2dmNfZGF0YS0+dnBzX3Np emUgfHwgdnZjX2RhdGEtPnNwc19zaXplIHx8CisgICAgICAgICAgICB2dmNfZGF0YS0+cHBzX3Np emUgfHwgdnZjX2RhdGEtPnNlaV9zaXplKSB7CisgICAgICAgICAgICBwYXItPmV4dHJhZGF0YV9z aXplID0gdnZjX2RhdGEtPnZwc19zaXplICsgdnZjX2RhdGEtPnNwc19zaXplICsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2dmNfZGF0YS0+cHBzX3NpemUgKyB2dmNfZGF0YS0+ c2VpX3NpemU7CisgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2FsbG9jX2V4dHJhZGF0YShwYXIs IHBhci0+ZXh0cmFkYXRhX3NpemUpKSA+PSAKMCkgeworICAgICAgICAgICAgICAgIGludCBwb3Mg PSAwOworICAgICAgICAgICAgICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2Rh dGEtPnZwcywgCnZ2Y19kYXRhLT52cHNfc2l6ZSk7CisgICAgICAgICAgICAgICAgcG9zICs9IHZ2 Y19kYXRhLT52cHNfc2l6ZTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocGFyLT5leHRyYWRhdGEg KyBwb3MsIHZ2Y19kYXRhLT5zcHMsIAp2dmNfZGF0YS0+c3BzX3NpemUpOworICAgICAgICAgICAg ICAgIHBvcyArPSB2dmNfZGF0YS0+c3BzX3NpemU7CisgICAgICAgICAgICAgICAgbWVtY3B5KHBh ci0+ZXh0cmFkYXRhICsgcG9zLCB2dmNfZGF0YS0+cHBzLCAKdnZjX2RhdGEtPnBwc19zaXplKTsK KyAgICAgICAgICAgICAgICBwb3MgKz0gdnZjX2RhdGEtPnBwc19zaXplOworICAgICAgICAgICAg ICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEtPnNlaSwgCnZ2Y19kYXRh LT5zZWlfc2l6ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNf ZGF0YS0+dnBzKTsKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0YS0+c3BzKTsKKyAgICAg ICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0YS0+cHBzKTsKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2 dmNfZGF0YS0+c2VpKTsKKyAgICAgICAgICAgIHZ2Y19kYXRhLT52cHNfc2l6ZSA9IDA7CisgICAg ICAgICAgICB2dmNfZGF0YS0+c3BzX3NpemUgPSAwOworICAgICAgICAgICAgdnZjX2RhdGEtPnBw c19zaXplID0gMDsKKyAgICAgICAgICAgIHZ2Y19kYXRhLT5zZWlfc2l6ZSA9IDA7CisgICAgICAg IH0KKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCB2dmNfaGFuZGxlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKmN0eCwgUGF5bG9hZENv bnRleHQgCipydHBfdnZjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWU3Ry ZWFtICpzdCwgQVZQYWNrZXQgKnBrdCwgdWludDMyX3QgCip0aW1lc3RhbXAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBsZW4sIHVpbnQxNl90 IHNlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykKK3sKKyAgICBj b25zdCB1aW50OF90ICpydHBfcGwgPSBidWY7CisgICAgaW50IHRpZCwgbGlkLCBuYWxfdHlwZTsK KyAgICBpbnQgZmlyc3RfZnJhZ21lbnQsIGxhc3RfZnJhZ21lbnQsIHBpY19mcmFnbWVudCwgZnVf dHlwZTsKKyAgICB1aW50OF90IG5ld19uYWxfaGVhZGVyWzJdOworICAgIGludCByZXMgPSAwOwor CisgICAgLyogc2FuaXR5IGNoZWNrIGZvciBzaXplIG9mIGlucHV0IHBhY2tldDogMSBieXRlIHBh eWxvYWQgYXQgbGVhc3QgKi8KKyAgICBpZiAobGVuIDwgUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9T SVpFICsgMSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJUb28gc2hvcnQg UlRQL1ZWQyBwYWNrZXQsIGdvdCAlZCAKYnl0ZXNcbiIsIGxlbik7CisgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIC8qCisgICAgICogZGVjb2RlIHRoZSBW VkMgcGF5bG9hZCBoZWFkZXIgYWNjb3JkaW5nIHRvIHNlY3Rpb24gNCBvZiBkcmFmdCAKdmVyc2lv biA2OgorICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsK KyAgICAgKiAgIHwwfDF8MnwzfDR8NXw2fDd8MHwxfDJ8M3w0fDV8Nnw3fAorICAgICAqICAgKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgICAgICogICB8RnxafCBMYXllcklEICAg fCBUeXBlICAgIHwgVElEIHwKKyAgICAgKiAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKworICAgICAqCisgICAgICogICAgICBGb3JiaWRkZW4gemVybyAoRik6IDEgYml0CisgICAg ICogICAgICBSZXNlcnZlZCAoWik6IDEgYml0cworICAgICAqICAgICAgTlVIIGxheWVyIElEIChM YXllcklkKTogNiBiaXRzCisgICAgICogICAgICBOQUwgdW5pdCB0eXBlIChUeXBlKTogNSBiaXRz CisgICAgICogICAgICBOVUggdGVtcG9yYWwgSUQgcGx1cyAxIChUSUQpOiAzIGJpdHMKKyAgICAg Ki8KKyAgICBuYWxfdHlwZSA9ICAoYnVmWzFdID4+IDMpICYgMHgxZjsKKyAgICBsaWQgID0gYnVm WzBdICYgMHgzZjsKKyAgICB0aWQgID0gYnVmWzFdICYgMHgwNzsKKworICAgIC8qIHNhbml0eSBj aGVjayBmb3IgY29ycmVjdCBsYXllciBJRCAqLworICAgIGlmIChsaWQpIHsKKyAgICAgICAgLyog ZnV0dXJlIHNjYWxhYmxlIG9yIDNEIHZpZGVvIGNvZGluZyBleHRlbnNpb25zICovCisgICAgICAg IGF2cHJpdl9yZXBvcnRfbWlzc2luZ19mZWF0dXJlKGN0eCwgIk11bHRpLWxheWVyIFZWQyBjb2Rp bmciKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOworICAgIH0KKworICAg IC8qIHNhbml0eSBjaGVjayBmb3IgY29ycmVjdCB0ZW1wb3JhbCBJRCAqLworICAgIGlmICghdGlk KSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIklsbGVnYWwgdGVtcG9yYWwg SUQgaW4gUlRQL1ZWQyAKcGFja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgfQorCisgICAgLyogc2FuaXR5IGNoZWNrIGZvciBjb3JyZWN0IE5BTCB1bml0 IHR5cGUgKi8KKyAgICBpZiAobmFsX3R5cGUgPiAzMSkgeworICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfRVJST1IsICJVbnN1cHBvcnRlZCAoVlZDKSBOQUwgdHlwZSAoJWQpXG4iLCAKbmFsX3R5 cGUpOworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICBz d2l0Y2ggKG5hbF90eXBlKSB7CisgICAgLyogdmlkZW8gcGFyYW1ldGVyIHNldCAoVlBTKSAqLwor ICAgIGNhc2UgMTQ6CisgICAgLyogc2VxdWVuY2UgcGFyYW1ldGVyIHNldCAoU1BTKSAqLworICAg IGNhc2UgMTU6CisgICAgLyogcGljdHVyZSBwYXJhbWV0ZXIgc2V0IChQUFMpICovCisgICAgY2Fz ZSAxNjoKKyAgICAvKiAgc3VwcGxlbWVudGFsIGVuaGFuY2VtZW50IGluZm9ybWF0aW9uIChTRUkp ICovCisgICAgY2FzZSAyMzoKKyAgICBjYXNlIDI0OgorICAgIC8qIHNpbmdsZSBOQUwgdW5pdCBw YWNrZXQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBjcmVhdGUgQS9WIHBhY2tldCAqLwor ICAgICAgICBpZiAoKHJlcyA9IGF2X25ld19wYWNrZXQocGt0LCBzaXplb2Yoc3RhcnRfc2VxdWVu Y2UpICsgbGVuKSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogQS9W IHBhY2tldDogY29weSBzdGFydCBzZXF1ZW5jZSAqLworICAgICAgICBtZW1jcHkocGt0LT5kYXRh LCBzdGFydF9zZXF1ZW5jZSwgc2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSk7CisgICAgICAgIC8qIEEv ViBwYWNrZXQ6IGNvcHkgTkFMIHVuaXQgZGF0YSAqLworICAgICAgICBtZW1jcHkocGt0LT5kYXRh ICsgc2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSwgYnVmLCBsZW4pOworCisgICAgICAgIGJyZWFrOwor ICAgIC8qIGFnZ3JlZ2F0ZWQgcGFja2V0IChBUCkgLSB3aXRoIHR3byBvciBtb3JlIE5BTCB1bml0 cyAqLworICAgIGNhc2UgMjg6CisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBwYXlsb2FkIGhlYWRl ciAqLworICAgICAgICBidWYgKz0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworICAgICAg ICBsZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworCisgICAgICAgIC8qIHBhc3Mg dGhlIFZWQyBET05MIGZpZWxkICovCisgICAgICAgIGlmIChydHBfdnZjX2N0eC0+dXNpbmdfZG9u bF9maWVsZCkgeworICAgICAgICAgICAgYnVmICs9IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOwor ICAgICAgICAgICAgbGVuIC09IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOworICAgICAgICB9CisK KyAgICAgICAgcmVzID0gZmZfaDI2NF9oYW5kbGVfYWdncmVnYXRlZF9wYWNrZXQoY3R4LCBydHBf dnZjX2N0eCwgcGt0LCAKYnVmLCBsZW4sCisgCnJ0cF92dmNfY3R4LT51c2luZ19kb25sX2ZpZWxk ID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQX1ZW Q19ET05EX0ZJRUxEX1NJWkUgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApCisgICAgICAgICAg ICByZXR1cm4gcmVzOworICAgICAgICBicmVhazsKKyAgICAvKiBmcmFnbWVudGF0aW9uIHVuaXQg KEZVKSAqLworICAgIGNhc2UgMjk6CisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBwYXlsb2FkIGhl YWRlciAqLworICAgICAgICBidWYgKz0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworICAg ICAgICBsZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworCisgICAgICAgIC8qCisg ICAgICAgICogICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyCisgICAgICAgICoKKyAgICAgICAgKiAg ICAgMCAxIDIgMyA0IDUgNiA3CisgICAgICAgICogICAgICstLS0tLS0tLS0tLS0tLS0rCisgICAg ICAgICogICAgIHwwfDF8MnwzfDR8NXw2fDd8CisgICAgICAgICogICAgICstKy0rLSstKy0rLSst Ky0rCisgICAgICAgICogICAgIHxTfEV8UHwgRnVUeXBlIHwKKyAgICAgICAgKiAgICAgKy0tLS0t LS0tLS0tLS0tLSsKKyAgICAgICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUKKyAgICAgICAg KiAgICAgICBFICAgICAgID0gdmFyaWFibGUKKyAgICAgICAgKiAgICAgICBQICAgICAgID0gdmFy aWFibGUKKyAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVuaXQgdHlwZQorICAgICAgICAq LworICAgICAgICBmaXJzdF9mcmFnbWVudCA9IGJ1ZlswXSAmIDB4ODA7CisgICAgICAgIGxhc3Rf ZnJhZ21lbnQgID0gYnVmWzBdICYgMHg0MDsKKyAgICAgICAgcGljX2ZyYWdtZW50ICAgPSBidWZb MF0gJiAweDEwOworICAgICAgICBmdV90eXBlICAgICAgICA9IGJ1ZlswXSAmIDB4M2Y7CisKKyAg ICAgICAgLyogcGFzcyB0aGUgVlZDIEZVIGhlYWRlciAqLworICAgICAgICBidWYgKz0gUlRQX1ZW Q19GVV9IRUFERVJfU0laRTsKKyAgICAgICAgbGVuIC09IFJUUF9WVkNfRlVfSEVBREVSX1NJWkU7 CisKKyAgICAgICAgLyogcGFzcyB0aGUgVlZDIERPTkwgZmllbGQgKi8KKyAgICAgICAgaWYgKHJ0 cF92dmNfY3R4LT51c2luZ19kb25sX2ZpZWxkKSB7CisgICAgICAgICAgICBidWYgKz0gUlRQX1ZW Q19ET05MX0ZJRUxEX1NJWkU7CisgICAgICAgICAgICBsZW4gLT0gUlRQX1ZWQ19ET05MX0ZJRUxE X1NJWkU7CisgICAgICAgIH0KKworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVFJBQ0UsICIg RlUgdHlwZSAlZCB3aXRoICVkIGJ5dGVzXG4iLCAKZnVfdHlwZSwgbGVuKTsKKworICAgICAgICAv KiBzYW5pdHkgY2hlY2sgZm9yIHNpemUgb2YgaW5wdXQgcGFja2V0OiAxIGJ5dGUgcGF5bG9hZCBh dCAKbGVhc3QgKi8KKyAgICAgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICAgICAgICBpZiAobGVu IDwgMCkgeworICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAg ICAgICAgICAgICAgICAgICAgIlRvbyBzaG9ydCBSVFAvVlZDIHBhY2tldCwgZ290ICVkIGJ5dGVz IG9mIE5BTCAKdW5pdCB0eXBlICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBsZW4sIG5h bF90eXBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUFHQUlO KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaXJzdF9mcmFnbWVu dCAmJiBsYXN0X2ZyYWdtZW50KSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsICJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIFMgYW5kIEUgCmJpdCBpbiBSVFAvVlZDIHBhY2tl dFxuIik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAg fQorCisgICAgICAgIG5ld19uYWxfaGVhZGVyWzBdID0gcnRwX3BsWzBdOworICAgICAgICBuZXdf bmFsX2hlYWRlclsxXSA9IHJ0cF9wbFsxXTsKKworICAgICAgICBuZXdfbmFsX2hlYWRlclsxXSA9 IChuZXdfbmFsX2hlYWRlclsxXSAmIDB4MDcpIHwgKGZ1X3R5cGUgPDwgMyk7CisKKyAgICAgICAg cmVzID0gZmZfaDI2NF9oYW5kbGVfZnJhZ19wYWNrZXQocGt0LCBidWYsIGxlbiwgZmlyc3RfZnJh Z21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19uYWxf aGVhZGVyLCAKc2l6ZW9mKG5ld19uYWxfaGVhZGVyKSk7CisKKyAgICAgICAgYnJlYWs7CisgICAg LyogUEFDSSBwYWNrZXQgKi8KKyAgICBjYXNlIDMwOgorICAgICAgICAvKiBUZW1wb3JhbCBzY2Fs YWJpbGl0eSBjb250cm9sIGluZm9ybWF0aW9uIChUU0NJKSAqLworICAgICAgICBhdnByaXZfcmVw b3J0X21pc3NpbmdfZmVhdHVyZShjdHgsICJQQUNJIHBhY2tldHMgZm9yIFJUUC9WVkMiKTsKKyAg ICAgICAgcmVzID0gQVZFUlJPUl9QQVRDSFdFTENPTUU7CisgICAgICAgIGJyZWFrOworICAgIH0K KworICAgIHBrdC0+c3RyZWFtX2luZGV4ID0gc3QtPmluZGV4OworCisgICAgcmV0dXJuIHJlczsK K30KKworY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl92dmNfZHluYW1pY19oYW5k bGVyID0geworICAgIC5lbmNfbmFtZSAgICAgICAgID0gIkgyNjYiLAorICAgIC5jb2RlY190eXBl ICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5jb2RlY19pZCAgICAgICAgID0gQVZf Q09ERUNfSURfVlZDLAorICAgIC5uZWVkX3BhcnNpbmcgICAgID0gQVZTVFJFQU1fUEFSU0VfRlVM TCwKKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihQYXlsb2FkQ29udGV4dCksCisgICAg LnBhcnNlX3NkcF9hX2xpbmUgPSB2dmNfcGFyc2Vfc2RwX2xpbmUsCisgICAgLnBhcnNlX3BhY2tl dCAgICAgPSB2dmNfaGFuZGxlX3BhY2tldCwKK307CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9y dHBlbmMuYyBiL2xpYmF2Zm9ybWF0L3J0cGVuYy5jCmluZGV4IDdiNGFlMzdkMTMuLjg0OGIyNDVh ZDcgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3J0cGVuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L3J0 cGVuYy5jCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyBpbnQgaXNfc3VwcG9ydGVkKGVudW0gQVZD b2RlY0lEIGlkKQogICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjNQOgogICAgICBjYXNlIEFWX0NP REVDX0lEX0gyNjQ6CiAgICAgIGNhc2UgQVZfQ09ERUNfSURfSEVWQzoKKyAgICBjYXNlIEFWX0NP REVDX0lEX1ZWQzoKICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPOgogICAgICBjYXNl IEFWX0NPREVDX0lEX01QRUcyVklERU86CiAgICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzQ6CkBA IC02MDUsNiArNjA2LDcgQEAgc3RhdGljIGludCBydHBfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29u dGV4dCAqczEsIApBVlBhY2tldCAqcGt0KQogICAgICAgICAgZmZfcnRwX3NlbmRfaDI2MyhzMSwg cGt0LT5kYXRhLCBzaXplKTsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIEFWX0NPREVDX0lE X0hFVkM6CisgICAgY2FzZSBBVl9DT0RFQ19JRF9WVkM6CiAgICAgICAgICBmZl9ydHBfc2VuZF9o MjY0X2hldmMoczEsIHBrdC0+ZGF0YSwgc2l6ZSk7CiAgICAgICAgICBicmVhazsKICAgICAgY2Fz ZSBBVl9DT0RFQ19JRF9WT1JCSVM6CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBlbmNfaDI2 NF9oZXZjLmMgYi9saWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMKaW5kZXggMGM4OGZjMmEy My4uN2RiZDlmM2UxMSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvcnRwZW5jX2gyNjRfaGV2Yy5j CisrKyBiL2xpYmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYwpAQCAtODQsOSArODQsMzggQEAg c3RhdGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpzMSwgY29uc3QgCnVpbnQ4X3Qg KmJ1ZiwgaW50IHNpemUsIGludCBsYXN0CiAgICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkX3NpemUg PT0gMCkgewogICAgICAgICAgICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCkg ewogICAgICAgICAgICAgICAgICAgICAgKnMtPmJ1Zl9wdHIrKyA9IDI0OwotICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlYyA9PSBBVl9DT0RF Q19JRF9IRVZDKSB7CiAgICAgICAgICAgICAgICAgICAgICAqcy0+YnVmX3B0cisrID0gNDggPDwg MTsKICAgICAgICAgICAgICAgICAgICAgICpzLT5idWZfcHRyKysgPSAxOworICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFZWQyBjYXNlLCByZmM5MzI4LCBw YWdlIDIwCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmlyc3RfbmFsX3R5cGUgPSBidWZb MF07CisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbGFzdF9uYWxfdHlwZSA9IGJ1ZlsxXTsK KyAgICAgICAgICAgICAgICAgICAgZmlyc3RfbmFsX3R5cGUgJj0gfigxPDw3KTsgLy8gY2xlYXIg dGhlIEYgYml0LCAKaW5pdGlhbGx5CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFsX3R5cGUg PSAobGFzdF9uYWxfdHlwZSAmIDB4MDcpIHwgKDI4IDw8IDMpOworICAgICAgICAgICAgICAgICAg ICAqcy0+YnVmX3B0cisrID0gZmlyc3RfbmFsX3R5cGU7CisgICAgICAgICAgICAgICAgICAgICpz LT5idWZfcHRyKysgPSBsYXN0X25hbF90eXBlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0gZWxzZSBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfVlZDKSB7CisgICAgICAgICAgICAg ICAgLy8gVlZDIGNhc2UsIHJmYzkzMjgsIHBhZ2UgMjAsIHVzZSBsb3dlc3QgbGF5ZXJpZC90aWQK KyAgICAgICAgICAgICAgICB1aW50OF90IGZpcnN0X25hbF90eXBlID0gcy0+YnVmWzBdOworICAg ICAgICAgICAgICAgIHVpbnQ4X3QgbGFzdF9uYWxfdHlwZSA9IHMtPmJ1ZlsxXTsKKyAgICAgICAg ICAgICAgICB1aW50OF90IG5ld19maXJzdF9uYWxfdHlwZSA9IGJ1ZlswXTsKKyAgICAgICAgICAg ICAgICB1aW50OF90IG5ld19sYXN0X25hbF90eXBlID0gYnVmWzFdOworICAgICAgICAgICAgICAg IGludCBjdXJfZiA9IGZpcnN0X25hbF90eXBlID4+IDc7CisgICAgICAgICAgICAgICAgaW50IG5l d19mID0gbmV3X2ZpcnN0X25hbF90eXBlID4+IDc7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJf ZiAmJiBuZXdfZikgeworICAgICAgICAgICAgICAgICAgICBzLT5idWZbMF0gfD0gMSA8PCA3Owor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX2xpZCA9IGZpcnN0X25h bF90eXBlICYgMHgzZjsKKyAgICAgICAgICAgICAgICBpbnQgbmV3X2xpZCA9IG5ld19maXJzdF9u YWxfdHlwZSAmIDB4M2Y7CisgICAgICAgICAgICAgICAgaWYgKGN1cl9saWQgPiBuZXdfbGlkKSB7 CisgICAgICAgICAgICAgICAgICAgIHMtPmJ1ZlswXSB8PSBuZXdfbGlkOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX3RpZCA9IGxhc3RfbmFsX3R5cGUgJiAweDA3 OworICAgICAgICAgICAgICAgIGludCBuZXdfdGlkID0gbmV3X2xhc3RfbmFsX3R5cGUgJiAweDA3 OworICAgICAgICAgICAgICAgIGlmIChjdXJfdGlkID4gbmV3X3RpZCkgeworICAgICAgICAgICAg ICAgICAgICBzLT5idWZbMV0gfD0gbmV3X3RpZDsKICAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICBBVl9XQjE2KHMtPmJ1Zl9wdHIsIHNpemUpOwpAQCAtMTAw LDYgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNv bnN0IAp1aW50OF90ICpidWYsIGludCBzaXplLCBpbnQgbGFzdAogICAgICAgICAgfQogICAgICB9 IGVsc2UgewogICAgICAgICAgaW50IGZsYWdfYnl0ZSwgaGVhZGVyX3NpemU7CisgICAgICAgIHVp bnQ4X3QgbmFsX3R5cGU7CiAgICAgICAgICBmbHVzaF9idWZmZXJlZChzMSwgMCk7CiAgICAgICAg ICBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCAmJiAocy0+ZmxhZ3MgJiAKRkZfUlRQX0ZM QUdfSDI2NF9NT0RFMCkpIHsKICAgICAgICAgICAgICBhdl9sb2coczEsIEFWX0xPR19FUlJPUiwK QEAgLTEwOSwyMCArMTM5LDIwIEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4 dCAqczEsIGNvbnN0IAp1aW50OF90ICpidWYsIGludCBzaXplLCBpbnQgbGFzdAogICAgICAgICAg fQogICAgICAgICAgYXZfbG9nKHMxLCBBVl9MT0dfREVCVUcsICJOQUwgc2l6ZSAlZCA+ICVkXG4i LCBzaXplLCAKcy0+bWF4X3BheWxvYWRfc2l6ZSk7CiAgICAgICAgICBpZiAoY29kZWMgPT0gQVZf Q09ERUNfSURfSDI2NCkgewotICAgICAgICAgICAgdWludDhfdCB0eXBlID0gYnVmWzBdICYgMHgx RjsKKyAgICAgICAgICAgIG5hbF90eXBlID0gYnVmWzBdICYgMHgxRjsKICAgICAgICAgICAgICB1 aW50OF90IG5yaSA9IGJ1ZlswXSAmIDB4NjA7CiAgICAgICAgICAgICAgIHMtPmJ1ZlswXSA9IDI4 OyAgICAgICAgLyogRlUgSW5kaWNhdG9yOyBUeXBlID0gMjggLS0tPiAKRlUtQSAqLwogICAgICAg ICAgICAgIHMtPmJ1ZlswXSB8PSBucmk7Ci0gICAgICAgICAgICBzLT5idWZbMV0gPSB0eXBlOwor ICAgICAgICAgICAgcy0+YnVmWzFdID0gbmFsX3R5cGU7CiAgICAgICAgICAgICAgcy0+YnVmWzFd IHw9IDEgPDwgNzsKICAgICAgICAgICAgICBidWYgICs9IDE7CiAgICAgICAgICAgICAgc2l6ZSAt PSAxOwogICAgICAgICAgICAgICBmbGFnX2J5dGUgICA9IDE7CiAgICAgICAgICAgICAgaGVhZGVy X3NpemUgPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdWludDhfdCBuYWxfdHlw ZSA9IChidWZbMF0gPj4gMSkgJiAweDNGOworICAgICAgICB9IGVsc2UgaWYgKGNvZGVjID09IEFW X0NPREVDX0lEX0hFVkMpIHsKKyAgICAgICAgICAgIG5hbF90eXBlID0gKGJ1ZlswXSA+PiAxKSAm IDB4M0Y7CiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIEhFVkMg cGF5bG9hZCBoZWFkZXIgYW5kIHRyYW5zbWl0IHRoZSBidWZmZXIgCmFzIGZyYWdtZW50YXRpb24g dW5pdHMgKEZVKQogICAgICAgICAgICAgICAqCkBAIC0xNTQsOCArMTg0LDU0IEBAIHN0YXRpYyB2 b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNvbnN0IAp1aW50OF90ICpidWYsIGlu dCBzaXplLCBpbnQgbGFzdAogICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgIHMtPmJ1Zlsy XSAgPSBuYWxfdHlwZTsKICAgICAgICAgICAgICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0 YXJ0IGZyYWdtZW50ICovCi0gICAgICAgICAgICBzLT5idWZbMl0gfD0gMSA8PCA3OworICAgICAg ICAgICAgcy0+YnVmWzFdID0gKHMtPmJ1ZlsxXSAmIDB4MDcpIHwgKDI5IDw8IDMpOworCisgICAg ICAgICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVhZGVyICovCisgICAgICAgICAgICBi dWYgICs9IDI7CisgICAgICAgICAgICBzaXplIC09IDI7CisKKyAgICAgICAgICAgIGZsYWdfYnl0 ZSAgID0gMjsKKyAgICAgICAgICAgIGhlYWRlcl9zaXplID0gMzsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIHMtPmJ1ZlswXSA9IGJ1ZlswXTsKKyAgICAgICAgICAgIHMtPmJ1ZlsxXSA9 IGJ1ZlsxXTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIFZWQyBw YXlsb2FkIGhlYWRlciBhbmQgdHJhbnNtaXQgdGhlIGJ1ZmZlciBhcyAKZnJhZ21lbnRhdGlvbiB1 bml0cyAoRlUpCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogICArLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAqICAgfDB8MXwyfDN8NHw1fDZ8N3ww fDF8MnwzfDR8NXw2fDd8CisgICAgICAgICAgICAgKiAgICstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKworICAgICAgICAgICAgICogICB8RnxafCBMYXllcklEICAgfCBUeXBlICAgIHwg VElEIHwKKyAgICAgICAgICAgICAqICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r CisgICAgICAgICAgICAgKiAgICAgIEYgICAgICAgPSAwCisgICAgICAgICAgICAgKiAgICAgIFR5 cGUgICAgPSAyOSAoZnJhZ21lbnRhdGlvbiB1bml0IChGVSkpCisgICAgICAgICAgICAgKiAgICAg IExheWVySWQgPSAwCisgICAgICAgICAgICAgKiAgICAgIFRJRCAgICAgPSAxCisgICAgICAgICAg ICAgKi8KKyAgICAgICAgICAgIG5hbF90eXBlID0gKGJ1ZlsxXSA+PiAzKSAmIDB4MUY7CisgICAg ICAgICAgICBzLT5idWZbMV0gPSAocy0+YnVmWzFdICYgMHgwNykgfCAoMjkgPDwgMyk7CiAgKyAg ICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiAgICAgY3JlYXRlIHRoZSBGVSBoZWFkZXIKKyAg ICAgICAgICAgICAqCisgICAgICAgICAgICAgKiAgICAgMCAxIDIgMyA0IDUgNiA3CisgICAgICAg ICAgICAgKiAgICAgKy0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAqICAgICB8MHwxfDJ8 M3w0fDV8Nnw3fAorICAgICAgICAgICAgICogICAgICstKy0rLSstKy0rLSstKy0rCisgICAgICAg ICAgICAgKiAgICAgfFN8RXxQfCBGdVR5cGUgfAorICAgICAgICAgICAgICogICAgICstLS0tLS0t LS0tLS0tLS0rCisgICAgICAgICAgICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUKKyAgICAg ICAgICAgICAqICAgICAgIEUgICAgICAgPSB2YXJpYWJsZQorICAgICAgICAgICAgICogICAgICAg UCAgICAgICA9IHZhcmlhYmxlCisgICAgICAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVu aXQgdHlwZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzLT5idWZbMl0gID0gbmFsX3R5 cGU7CisgICAgICAgICAgICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0YXJ0IGZyYWdtZW50 ICovCisgICAgICAgICAgICBzLT5idWZbMl0gfD0gMSA8PCA3OworICAgICAgICAgICAgLy8gU2V0 IHRoZSBQIGJpdCBpZiBpdCdzIHRoZSBsYXN0IGZyYWdtZW50IGFuZCBpZiBpdCdzIGEgClZDTCBO QUwgdW5pdAorICAgICAgICAgICAgaWYgKG5hbF90eXBlIDw9IDExKSB7CisgICAgICAgICAgICAg ICAgcy0+YnVmWzJdICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCBvdGhlcndpc2UK KyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVh ZGVyICovCiAgICAgICAgICAgICAgYnVmICArPSAyOwogICAgICAgICAgICAgIHNpemUgLT0gMjsK QEAgLTE3MCw4ICsyNDYsMTQgQEAgc3RhdGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0 ICpzMSwgY29uc3QgCnVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUsIGludCBsYXN0CiAgICAgICAgICAg ICAgYnVmICArPSBzLT5tYXhfcGF5bG9hZF9zaXplIC0gaGVhZGVyX3NpemU7CiAgICAgICAgICAg ICAgc2l6ZSAtPSBzLT5tYXhfcGF5bG9hZF9zaXplIC0gaGVhZGVyX3NpemU7CiAgICAgICAgICAg ICAgcy0+YnVmW2ZsYWdfYnl0ZV0gJj0gfigxIDw8IDcpOworICAgICAgICAgICAgaWYgKGNvZGVj ID09IEFWX0NPREVDX0lEX1ZWQyAmJiBuYWxfdHlwZSA8PSAxMSkgeworICAgICAgICAgICAgICAg IHMtPmJ1ZltmbGFnX2J5dGVdICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCAKb3Ro ZXJ3aXNlCisgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBzLT5idWZbZmxhZ19i eXRlXSB8PSAxIDw8IDY7CisgICAgICAgIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19JRF9WVkMgJiYg bmFsX3R5cGUgPD0gMTEpIHsKKyAgICAgICAgICAgIHMtPmJ1ZltmbGFnX2J5dGVdIHw9IDEgPDwg NTsgIC8vIFNldCB0aGUgUCBiaXQKKyAgICAgICAgfQogICAgICAgICAgbWVtY3B5KCZzLT5idWZb aGVhZGVyX3NpemVdLCBidWYsIHNpemUpOwogICAgICAgICAgZmZfcnRwX3NlbmRfZGF0YShzMSwg cy0+YnVmLCBzaXplICsgaGVhZGVyX3NpemUsIGxhc3QpOwogICAgICB9CmRpZmYgLS1naXQgYS9s aWJhdmZvcm1hdC9zZHAuYyBiL2xpYmF2Zm9ybWF0L3NkcC5jCmluZGV4IGNjZmFhOGFmZjUuLjJm YmYxNzNlNDEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3NkcC5jCisrKyBiL2xpYmF2Zm9ybWF0 L3NkcC5jCkBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgI2luY2x1 ZGUgImF2Yy5oIgogICNpbmNsdWRlICJoZXZjLmgiCisjaW5jbHVkZSAidnZjLmgiCiAgI2luY2x1 ZGUgInJ0cC5oIgogICNpbmNsdWRlICJ2ZXJzaW9uLmgiCiAgI2lmIENPTkZJR19ORVRXT1JLCkBA IC0zNDcsNiArMzQ4LDE3NiBAQCBlcnI6CiAgICAgIHJldHVybiByZXQ7CiAgfQogICsKK3N0YXRp YyBpbnQgY2FsY3VsYXRlX3B0bF9zaXplKHVpbnQ4X3QgKmV4dHJhZGF0YSkgeworICAgIGludCBv ZmZzZXQgPSAwOworICAgIC8qCisgICAgICAgICogdW5zaWduZWQgaW50KDkpIG9sc19pZHg7Cisg ICAgICAgICogdW5zaWduZWQgaW50KDMpIG51bV9zdWJsYXllcnM7CisgICAgICAgICogdW5zaWdu ZWQgaW50KDIpIGNvbnN0YW50X2ZyYW1lX3JhdGU7CisgICAgICAgICogdW5zaWduZWQgaW50KDIp IGNocm9tYV9mb3JtYXRfaWRjOyAgICAgKi8KKyAgICB1aW50OF90IG51bV9zdWJsYXllcnMgPSAo QVZfUkIxNigmZXh0cmFkYXRhW29mZnNldF0pID4+IDQpICYgMHgwNzsKKyAgICBvZmZzZXQgKz0g MjsKKyAgICAvKiAgdW5zaWduZWQgaW50KDMpIGJpdF9kZXB0aF9taW51czg7CisgICAgICAgIGJp dCg1KSByZXNlcnZlZCA9IOKAmDExMTEx4oCZYjsgKi8KKyAgICBvZmZzZXQgKz0gMTsKKyAgICAv KiAgYml0KDIpIHJlc2VydmVkID0g4oCYMDDigJliOworICAgICAgICB1bnNpZ25lZCBpbnQgKDYp IG51bV9ieXRlc19jb25zdHJhaW50X2luZm8gKi8KKyAgICB1aW50OF90IG51bV9ieXRlc19jb25z dHJhaW50X2luZm8gPSBBVl9SQjgoJmV4dHJhZGF0YVtvZmZzZXRdKSAmIDB4M2Y7CisgICAgb2Zm c2V0ICs9IDE7CisgICAgLyogIHVuc2lnbmVkIGludCAoNykgZ2VuZXJhbF9wcm9maWxlX2lkYwor ICAgICAgICB1bnNpZ25lZCBpbnQgKDEpIGdlbmVyYWxfdGllcl9mbGFnICovCisgICAgb2Zmc2V0 ICs9IDE7CisgICAgLyogIHVuc2lnbmVkIGludCAoOCkgZ2VuZXJhbF9sZXZlbF9pZGMgKi8KKyAg ICBvZmZzZXQgKz0gMTsKKyAgICAvKgorICAgICogICB1bnNpZ25lZCBpbnQgKDEpIHB0bF9mcmFt ZV9vbmx5X2NvbnN0cmFpbnRfZmxhZworICAgICogICB1bnNpZ25lZCBpbnQgKDEpIHB0bF9tdWx0 aWxheWVyX2VuYWJsZWRfZmxhZworICAgICogICB1bnNpZ25lZCBpbnQgKDgqbnVtX2J5dGVzX2Nv bnN0cmFpbnRfaW5mbyAtMikgCmdlbmVyYWxfY29uc3RyYWludF9pbmZvICovCisgICAgb2Zmc2V0 ICs9IG51bV9ieXRlc19jb25zdHJhaW50X2luZm87CisKKyAgICBpZiAobnVtX3N1YmxheWVycyA+ IDEpIHsKKyAgICAgICAgLy8gcHRsX3N1YmxheWVyX2xldmVsX3ByZXNlbnRfZmxhZ3MKKyAgICAg ICAgdWludDhfdCBwdGxfc3VibGF5ZXJfbGV2ZWxfcHJlc2VudF9mbGFncyA9IGV4dHJhZGF0YVtv ZmZzZXRdOworICAgICAgICBvZmZzZXQgKz0gMTsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBu dW1iZXIgb2Ygc3VibGF5ZXJfbGV2ZWxfaWRjIGJ5dGVzCisgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbnVtX3N1YmxheWVycyAtIDE7IGkrKykgeworICAgICAgICAgICAgaWYgKHB0bF9zdWJs YXllcl9sZXZlbF9wcmVzZW50X2ZsYWdzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICAgICBv ZmZzZXQgKz0gMTsgLy8gQWRkIGEgYnl0ZSBmb3IgZWFjaCBzdWJsYXllcl9sZXZlbF9pZGMKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAvKiAgdW5zaWduZWQgaW50KDgpIG51 bV9zdWJfcHJvZmlsZXM7ICovCisgICAgdWludDhfdCBwdGxfbnVtX3N1Yl9wcm9maWxlcyA9IGV4 dHJhZGF0YVtvZmZzZXRdOworICAgIG9mZnNldCArPSAxOworICAgIC8qICB1bnNpZ25lZCBpbnQo MzIpIGdlbmVyYWxfc3ViX3Byb2ZpbGVfaWRjW2pdOyAqLworICAgIG9mZnNldCArPSA0ICogcHRs X251bV9zdWJfcHJvZmlsZXM7CisgICAgLy9FbmQgb2YgVnZjUFRMUmVjb3JkCisgICAgLyoKKyAg ICAqICAgdW5zaWduZWQgaW50KDE2KSBtYXhfcGljdHVyZV93aWR0aDsqLworICAgIG9mZnNldCAr PSAyOworICAgIC8qCisgICAgKiAgIHVuc2lnbmVkIGludCgxNikgbWF4X3BpY3R1cmVfaGVpZ2h0 OyovCisgICAgb2Zmc2V0ICs9IDI7CisgICAgLyoKKyAgICAqICAgdW5zaWduZWQgaW50KDE2KSBh dmdfZnJhbWVfcmF0ZTsgKi8KKyAgICBvZmZzZXQgKz0gMjsKKyAgICByZXR1cm4gb2Zmc2V0Owor fQorCitzdGF0aWMgaW50IGV4dHJhZGF0YTJwc2V0c192dmNjKGNvbnN0IEFWQ29kZWNQYXJhbWV0 ZXJzICpwYXIsIGNoYXIgKipvdXQpCit7CisgICAgY2hhciAqcHNldHM7CisgICAgdWludDhfdCAq ZXh0cmFkYXRhID0gcGFyLT5leHRyYWRhdGE7CisgICAgaW50IGV4dHJhZGF0YV9zaXplID0gcGFy LT5leHRyYWRhdGFfc2l6ZTsKKyAgICB1aW50OF90ICp0bXBidWYgPSBOVUxMOworICAgIGludCBw c19wb3NbM10gPSB7IDAgfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBzX25hbWVz WzNdID0geyAidnBzIiwgInNwcyIsICJwcHMiIH07CisgICAgaW50IG51bV9hcnJheXMsIG51bV9u YWx1czsKKyAgICBpbnQgcG9zLCBpLCBqLCByZXQgPSAwOworCisgICAgKm91dCA9IE5VTEw7CisK KyAgICBpZiAocGFyLT5leHRyYWRhdGFbMF0gIT0gMSkgeworICAgICAgICBBVklPQ29udGV4dCAq cGI7CisKKyAgICAgICAgcmV0ID0gYXZpb19vcGVuX2R5bl9idWYoJnBiKTsKKyAgICAgICAgaWYg KHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHJldCA9IGZmX2lz b21fd3JpdGVfdnZjYyhwYiwgcGFyLT5leHRyYWRhdGEsIApwYXItPmV4dHJhZGF0YV9zaXplLCAw KTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIGF2aW9fY2xvc2VfZHluX2J1 ZihwYiwgJnRtcGJ1Zik7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgICAg ICBleHRyYWRhdGFfc2l6ZSA9IGF2aW9fY2xvc2VfZHluX2J1ZihwYiwgJmV4dHJhZGF0YSk7Cisg ICAgICAgIHRtcGJ1ZiA9IGV4dHJhZGF0YTsKKyAgICB9CisKKyAgICBpbnQgcHRsX3ByZXNlbnRf ZmxhZyA9IChleHRyYWRhdGFbMF0gJiAweDAxKTsKKworICAgIHBvcyA9IDE7IC8vIFN0YXJ0IGFm dGVyIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gYnl0ZQorICAgIGlmIChwdGxfcHJlc2VudF9m bGFnKSB7CisgICAgICAgIC8vIFBUTCBpcyBwcmVzZW50LCBzbyBwYXJzZSBQVEwgZmllbGRzICh0 aGUgbnVtYmVyIG9mIGJ5dGVzIApkZXBlbmRzIG9uIFBUTCBzdHJ1Y3R1cmUpCisgICAgICAgIHBv cyArPSBjYWxjdWxhdGVfcHRsX3NpemUoZXh0cmFkYXRhICsgMSk7CisgICAgfQorICAgIGlmIChw b3MgKyAxID4gZXh0cmFkYXRhX3NpemUpCisgICAgICAgIGdvdG8gZXJyOworICAgIG51bV9hcnJh eXMgPSBleHRyYWRhdGFbcG9zKytdOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYXJyYXlzOyBp KyspIHsKKyAgICAgICAgaW50IG51bV9uYWx1cywgbmFsdV90eXBlOworICAgICAgICBpZiAocG9z ICsgMyA+IGV4dHJhZGF0YV9zaXplKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIG5h bHVfdHlwZSA9IGV4dHJhZGF0YVtwb3NdICYgMHgxZjsKKyAgICAgICAgaWYgKG5hbHVfdHlwZSA9 PSAxNCkgLy8gVlBTCisgICAgICAgICAgICBwc19wb3NbMF0gPSBwb3M7CisgICAgICAgIGVsc2Ug aWYgKG5hbHVfdHlwZSA9PSAxNSkgLy8gU1BTCisgICAgICAgICAgICBwc19wb3NbMV0gPSBwb3M7 CisgICAgICAgIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSAxNikgLy8gUFBTCisgICAgICAgICAgICBw c19wb3NbMl0gPSBwb3M7CisgICAgICAgIG51bV9uYWx1cyA9IEFWX1JCMTYoJmV4dHJhZGF0YVtw b3MgKyAxXSk7CisgICAgICAgIHBvcyArPSAzOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbnVt X25hbHVzOyBqKyspIHsKKyAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICBpZiAocG9z ICsgMiA+IGV4dHJhZGF0YV9zaXplKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAg ICAgICAgbGVuID0gQVZfUkIxNigmZXh0cmFkYXRhW3Bvc10pOworICAgICAgICAgICAgcG9zICs9 IDI7CisgICAgICAgICAgICBpZiAocG9zICsgbGVuID4gZXh0cmFkYXRhX3NpemUpCisgICAgICAg ICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBwb3MgKz0gbGVuOworICAgICAgICB9Cisg ICAgfQorICAgIGlmICghcHNfcG9zWzFdIHx8ICFwc19wb3NbMl0pCisgICAgICAgIGdvdG8gZXJy OworICAgIHBzZXRzID0gYXZfbWFsbG9jeihNQVhfUFNFVF9TSVpFKTsKKyAgICBpZiAoIXBzZXRz KSB7CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBlcnI7Cisg ICAgfQorCisgICAgcHNldHNbMF0gPSAnXDAnOworCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkr KykgeworICAgICAgICBpZiAoIXBzX3Bvc1tpXSkgeworICAgICAgICAgICAgY29udGludWU7Cisg ICAgICAgIH0KKyAgICAgICAgcG9zID0gcHNfcG9zW2ldOworCisgICAgICAgIGlmIChpID4gMCAm JiBwc19wb3NbaS0xXSkKKyAgICAgICAgICAgIGF2X3N0cmxjYXQocHNldHMsICI7ICIsIE1BWF9Q U0VUX1NJWkUpOworICAgICAgICBhdl9zdHJsY2F0Zihwc2V0cywgTUFYX1BTRVRfU0laRSwgInNw cm9wLSVzPSIsIHBzX25hbWVzW2ldKTsKKworICAgICAgICAvLyBTa2lwcGluZyBib3VuZGFyeSBj aGVja3MgaW4gdGhlIGlucHV0IGhlcmU7IHdlJ3ZlIGFscmVhZHkgCnRyYXZlcnNlZAorICAgICAg ICAvLyB0aGUgd2hvbGUgaHZjYyBzdHJ1Y3R1cmUgYWJvdmUgd2l0aG91dCBpc3N1ZXMKKyAgICAg ICAgbnVtX25hbHVzID0gQVZfUkIxNigmZXh0cmFkYXRhW3BvcyArIDFdKTsKKyAgICAgICAgcG9z ICs9IDM7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW1fbmFsdXM7IGorKykgeworICAgICAg ICAgICAgaW50IGxlbiA9IEFWX1JCMTYoJmV4dHJhZGF0YVtwb3NdKTsKKyAgICAgICAgICAgIGlu dCBzdHJwb3M7CisgICAgICAgICAgICBwb3MgKz0gMjsKKyAgICAgICAgICAgIGlmIChqID4gMCkK KyAgICAgICAgICAgICAgICBhdl9zdHJsY2F0KHBzZXRzLCAiLCIsIE1BWF9QU0VUX1NJWkUpOwor ICAgICAgICAgICAgc3RycG9zID0gc3RybGVuKHBzZXRzKTsKKyAgICAgICAgICAgIGlmICghYXZf YmFzZTY0X2VuY29kZShwc2V0cyArIHN0cnBvcywgTUFYX1BTRVRfU0laRSAtIHN0cnBvcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmFkYXRhW3Bvc10sIGxlbikpIHsK KyAgICAgICAgICAgICAgICBhdl9mcmVlKHBzZXRzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcyArPSBsZW47CisgICAgICAgIH0KKyAg ICB9CisgICAgYXZfZnJlZSh0bXBidWYpOworCisgICAgKm91dCA9IHBzZXRzOworICAgIHJldHVy biAwOworZXJyOgorICAgIGlmIChyZXQgPj0gMCkKKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZB TElEREFUQTsKKyAgICBhdl9mcmVlKHRtcGJ1Zik7CisgICAgcmV0dXJuIHJldDsKK30KKwogIHN0 YXRpYyBpbnQgZXh0cmFkYXRhMmNvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMsIGNvbnN0IApBVkNv ZGVjUGFyYW1ldGVycyAqcGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq b3V0KQogIHsKQEAgLTU3OSw2ICs3NTAsMTcgQEAgc3RhdGljIGludCBzZHBfd3JpdGVfbWVkaWFf YXR0cmlidXRlcyhjaGFyICpidWZmLCAKaW50IHNpemUsIGNvbnN0IEFWU3RyZWFtICpzdCwKICAg ICAgICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXplLCAiYT1mbXRwOiVkICVzXHJcbiIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfdHlwZSwgY29uZmln KTsKICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVZfQ09ERUNfSURfVlZDOgorICAgICAgICBp ZiAocC0+ZXh0cmFkYXRhX3NpemUpIHsKKyAgICAgICAgICAgIHJldCA9IGV4dHJhZGF0YTJwc2V0 c192dmNjKHAsICZjb25maWcpOworICAgICAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBz aXplLCAiYT1ydHBtYXA6JWQgSDI2Ni85MDAwMFxyXG4iLCAKcGF5bG9hZF90eXBlKTsKKyAgICAg ICAgaWYgKGNvbmZpZykKKyAgICAgICAgICAgIGF2X3N0cmxjYXRmKGJ1ZmYsIHNpemUsICJhPWZt dHA6JWQgJXNcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXls b2FkX3R5cGUsIGNvbmZpZyk7CisgICAgICAgIGJyZWFrOwogICAgICBjYXNlIEFWX0NPREVDX0lE X01QRUc0OgogICAgICAgICAgaWYgKHAtPmV4dHJhZGF0YV9zaXplKSB7CiAgICAgICAgICAgICAg cmV0ID0gZXh0cmFkYXRhMmNvbmZpZyhmbXQsIHAsICZjb25maWcpOwotLSAKMi4zNC4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwg bWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCg==