From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 57910496F6 for <ffmpegdev@gitmailbox.com>; Wed, 23 Apr 2025 14:12:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A04A9687DDE; Wed, 23 Apr 2025 17:12:34 +0300 (EEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BAEEA687D29 for <ffmpeg-devel@ffmpeg.org>; Wed, 23 Apr 2025 17:12:31 +0300 (EEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20250423141231euoutp01c7105ea831c8494384d88aecf4312f3b~4_APmjWMf2674726747euoutp01L for <ffmpeg-devel@ffmpeg.org>; Wed, 23 Apr 2025 14:12:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20250423141231euoutp01c7105ea831c8494384d88aecf4312f3b~4_APmjWMf2674726747euoutp01L DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1745417551; bh=qy16GxupPqWAmt/Tf96mW7HSi9O/1x/tJtlOknB9U98=; h=From:To:Cc:Subject:Date:References:From; b=gIVOpsjAj3RDhIrE/owOETcd9ZJM/fhI6nCMCu0lNwsgAdvI72uND9/fCeTO2DH0G FbJ8h+jfM0CGN8juDiI4gUM3GQRN2EZfOo0p0Nx3YoasxwRBH4PkXH4cBV4aEPJxiW GCzuHuYyFrbkM1ZGjsjNtSrUNbaivkrhiWXQa0Fg= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20250423141231eucas1p1a78c69837f58e058155730216290b18f~4_APbLCa62616026160eucas1p1g; Wed, 23 Apr 2025 14:12:31 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id BD.38.17807.E45F8086; Wed, 23 Apr 2025 15:12:30 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8~4_AO016OX2816128161eucas1p1T; Wed, 23 Apr 2025 14:12:30 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20250423141230eusmtrp2962f459ab4bf0f113fb505e67d90d936~4_AO0XlX40771107711eusmtrp2l; Wed, 23 Apr 2025 14:12:30 +0000 (GMT) X-AuditID: cbfec7f4-1fbfe7000000458f-09-6808f54edc37 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 5C.D7.19654.E45F8086; Wed, 23 Apr 2025 15:12:30 +0100 (BST) Received: from AMDC5021.local (unknown [106.120.41.33]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20250423141230eusmtip2fc2785b9d482ba60db7574d00881d5b2~4_AOhACMe2743827438eusmtip2G; Wed, 23 Apr 2025 14:12:30 +0000 (GMT) From: Dawid Kozinski <d.kozinski@samsung.com> To: ffmpeg-devel@ffmpeg.org Date: Wed, 23 Apr 2025 16:12:26 +0200 Message-Id: <20250423141226.1857892-1-d.kozinski@samsung.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsWy7djPc7p+XzkyDLovmVms/PabxeLbpzPM DkwefxZtZvHo27KKMYApissmJTUnsyy1SN8ugStjVa9vwY29TBUzLwg2MM58w9jFyMkhIWAi sbD3IGsXIxeHkMAKRokXh06zQDhfGCU2vXvIBOF8ZpQ483sHXMuRWbfYIRLLGSX2zv0P1f+G UeLx6u2sIFVsAroSLz88YgKxRQSkJSbt3cEMYjMLaEusu/udDcQWFoiQeLl8J5jNIqAqcWj6 QbB6XgFbiY+L1zJBbJOX2H/wLDNEXFDi5MwnLBBz5CWat85mBlksIfCTXeL9lnVQ57lIHL08 E6pZWOLV8S3sELaMxP+d84HiHEB2scShfgcIs0bi0I90iApribeNxxlBwswCmhLrd+lDhB0l 9iw/yQ5RzSdx460gxAF8EpO2TWeGCPNKdLQJQZgqEn2dYhCNUhJPl81hhrA9JLa8Og92iZBA rMSz5Y3MExgVZiH5ahaSr2YhnLCAkXkVo3hqaXFuemqxUV5quV5xYm5xaV66XnJ+7iZGYFo4 /e/4lx2My1991DvEyMTBeIhRgoNZSYT3lxt7hhBvSmJlVWpRfnxRaU5q8SFGaQ4WJXHeRftb 04UE0hNLUrNTUwtSi2CyTBycUg1MzNWu/8qf8/UeKko02HPA+CvXneIi99JdPkY9FxRWZgQU nquJeWx97tLmK69TbAVl2Pjn75Zb+SFsTkTV5G02Bydq3gzo+ySw9bJi2bIpC2olvRo/xTQ0 MmbcaO5g6BW/l61zVXm2UK5nh47JIff/J0+5e5zSNsoweLjI5MqP/TUf/89haIne9GDpaobO lolbBF2kP+X4biotWuQfMk82+/nuSWtkjRmOxk9WqFGrXMNhnruUp2pftnOCxZ01jIs2OE7e lLHG0LuaTaFW6UFCpPviWrdbCSuakzWf6dvYssc/Szh9pkA9aKpF++b53l1z1/51eNGR7RLU rbNkxgS5ol6pYzt3Gsa9CfnO+kKJpTgj0VCLuag4EQDhzUYDegMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOLMWRmVeSWpSXmKPExsVy+t/xe7p+XzkyDCbNE7ZY+e03i8W3T2eY HZg8/izazOLRt2UVYwBTlJ5NUX5pSapCRn5xia1StKGFkZ6hpYWekYmlnqGxeayVkamSvp1N SmpOZllqkb5dgl7Gql7fght7mSpmXhBsYJz5hrGLkZNDQsBE4sisW+xdjFwcQgJLGSXWb18N lZCSWLp0EZQtLPHnWhcbRNErRonP818xgyTYBHQlXn54xARiiwhIS0zauwMsziygLbHu7nc2 EFtYIEzi+qaz7CA2i4CqxKHpB8HqeQVsJT4uXssEsUBeYv/Bs8wQcUGJkzOfsHQxcgDNUZdY P08IYqS8RPPW2cwTGPlnIamahVA1C0nVAkbmVYwiqaXFuem5xUZ6xYm5xaV56XrJ+bmbGIEh vO3Yzy07GFe++qh3iJGJg/EQowQHs5II7y839gwh3pTEyqrUovz4otKc1OJDjKZAV09klhJN zgdGUV5JvKGZgamhiZmlgamlmbGSOC/blfNpQgLpiSWp2ampBalFMH1MHJxSDUxR746+/BjP f9FtzaNNAR+3T7h0sqjjwFYmwYr5fbWfmOeo7FM894E5d5fvtLliPQeqv6++etD9w8L1sUVX tXu+b1jwSuXFO9bVOaJ9jtJ8at+rbqx+cWNzmWrbAo8Mvh9CCfpNjywlW8RCxPdqmilv86me 6HZZclGIVvubm9FCkyqK4tYq3bN6+LyMue7p6k9bY19GWrjNOrVhR8q0tR4Jm2+de/Li5brA aLY4dtlcpoYZ9pvuTurJmCq6/1P+xNCMmjaPVx3Vp/2va4vab3diCTMPzTbbnpXFtFb9ybWw tZ+ds/QFnhW/KJzy3s927dcrns/FvlRtNZBcsSrjyJJnOz65ek3dzvBZ+yrPQl8hJZbijERD Leai4kQAmhn3AOoCAAA= X-CMS-MailID: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8 X-Msg-Generator: CA X-RootMTR: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20250423141230eucas1p1962c2698d09aced37fa5551493a693b8 References: <CGME20250423141230eucas1p1962c2698d09aced37fa5551493a693b8@eucas1p1.samsung.com> Subject: [FFmpeg-devel] [PATCH v1 2/8] avcodec/apv_parser: Added parser implementation for APV format X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: Dawid Kozinski <d.kozinski@samsung.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250423141226.1857892-1-d.kozinski@samsung.com/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> LSBBZGRlZCBjb25zdGFudHMgZGVmaW5pdGlvbnMgZm9yIEFQViBwYXJzZXIKLSBQcm92aWRlZCBw YXJzaW5nIGZvbGxvd2luZyBBUFYgUkZDCi0gQVBWIHBhcnNlciByZWdpc3RyYXRpb24KClNpZ25l ZC1vZmYtYnk6IERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1bmcuY29tPgotLS0KIGNv bmZpZ3VyZSAgICAgICAgICAgICAgIHwgICAyICsKIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgIHwg ICAyICsKIGxpYmF2Y29kZWMvYXB2LmggICAgICAgIHwgIDkzICsrKysrKysrCiBsaWJhdmNvZGVj L2Fwdl9wYXJzZS5jICB8ICAzMiArKysKIGxpYmF2Y29kZWMvYXB2X3BhcnNlLmggIHwgIDgxICsr KysrKysKIGxpYmF2Y29kZWMvYXB2X3BhcnNlci5jIHwgMTQxICsrKysrKysrKysrCiBsaWJhdmNv ZGVjL2Fwdl9wcy5jICAgICB8IDUwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBsaWJhdmNvZGVjL2Fwdl9wcy5oICAgICB8IDE4OCArKysrKysrKysrKysrKysKIGxp YmF2Y29kZWMvcGFyc2Vycy5jICAgIHwgICAxICsKIDkgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hcHYuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYXB2X3BhcnNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmNvZGVjL2Fwdl9wYXJzZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hcHZfcGFy c2VyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2Fwdl9wcy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliYXZjb2RlYy9hcHZfcHMuaAoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2Nv bmZpZ3VyZQppbmRleCBjOTRiOGVhYzQzLi4yOTRmN2U0YTlkIDEwMDc1NQotLS0gYS9jb25maWd1 cmUKKysrIGIvY29uZmlndXJlCkBAIC0yNTU1LDYgKzI1NTUsNyBAQCBDT05GSUdfRVhUUkE9Igog ICAgIGFhbmRjdHRhYmxlcwogICAgIGFjM2RzcAogICAgIGFkdHNfaGVhZGVyCisgICAgYXB2cGFy c2UKICAgICBhdHNjX2E1MwogICAgIGF1ZGlvX2ZyYW1lX3F1ZXVlCiAgICAgYXVkaW9kc3AKQEAg LTM0ODEsNiArMzQ4Miw3IEBAIHZ2Y19xc3ZfZGVjb2Rlcl9zZWxlY3Q9InZ2Y19tcDR0b2FubmV4 Yl9ic2YgcXN2ZGVjIgogCiAjIHBhcnNlcnMKIGFhY19wYXJzZXJfc2VsZWN0PSJhZHRzX2hlYWRl ciBtcGVnNGF1ZGlvIgorYXB2X3BhcnNlcl9zZWxlY3Q9ImFwdnBhcnNlIgogYXYxX3BhcnNlcl9z ZWxlY3Q9ImNic19hdjEiCiBldmNfcGFyc2VyX3NlbGVjdD0iZXZjcGFyc2UiCiBmZnYxX3BhcnNl cl9zZWxlY3Q9InJhbmdlY29kZXIiCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIv bGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCA3YmQxZGJlYzlhLi4zYWU2ZGQxN2VhIDEwMDY0NAot LS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTc2 LDYgKzc2LDcgQEAgT0JKUy0kKENPTkZJR19BQU5EQ1RUQUJMRVMpICAgICAgICAgICAgKz0gYWFu ZGN0dGFiLm8KIE9CSlMtJChDT05GSUdfQUMzRFNQKSAgICAgICAgICAgICAgICAgICs9IGFjM2Rz cC5vIGFjMy5vIGFjM3RhYi5vCiBPQkpTLSQoQ09ORklHX0FEVFNfSEVBREVSKSAgICAgICAgICAg ICArPSBhZHRzX2hlYWRlci5vIG1wZWc0YXVkaW9fc2FtcGxlX3JhdGVzLm8KIE9CSlMtJChDT05G SUdfQU1GKSAgICAgICAgICAgICAgICAgICAgICs9IGFtZmVuYy5vIGFtZmRlYy5vCitPQkpTLSQo Q09ORklHX0FQVlBBUlNFKSAgICAgICAgICAgICAgICArPSBhcHZfcGFyc2UubyBhcHZfcHMubwog T0JKUy0kKENPTkZJR19BVURJT19GUkFNRV9RVUVVRSkgICAgICAgKz0gYXVkaW9fZnJhbWVfcXVl dWUubwogT0JKUy0kKENPTkZJR19BVFNDX0E1MykgICAgICAgICAgICAgICAgKz0gYXRzY19hNTMu bwogT0JKUy0kKENPTkZJR19BVURJT0RTUCkgICAgICAgICAgICAgICAgKz0gYXVkaW9kc3AubwpA QCAtMTE5Niw2ICsxMTk3LDcgQEAgT0JKUy0kKENPTkZJR19BQzNfUEFSU0VSKSAgICAgICAgICAg ICAgKz0gYWFjX2FjM19wYXJzZXIubyBhYzN0YWIubyBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYzNfY2hhbm5lbF9sYXlvdXRfdGFiLm8KIE9CSlMtJChDT05G SUdfQURYX1BBUlNFUikgICAgICAgICAgICAgICs9IGFkeF9wYXJzZXIubwogT0JKUy0kKENPTkZJ R19BTVJfUEFSU0VSKSAgICAgICAgICAgICAgKz0gYW1yX3BhcnNlci5vCitPQkpTLSQoQ09ORklH X0FQVl9QQVJTRVIpICAgICAgICAgICAgICArPSBhcHZfcGFyc2VyLm8KIE9CSlMtJChDT05GSUdf QVYxX1BBUlNFUikgICAgICAgICAgICAgICs9IGF2MV9wYXJzZXIubyBhdjFfcGFyc2UubwogT0JK Uy0kKENPTkZJR19BVlMyX1BBUlNFUikgICAgICAgICAgICAgKz0gYXZzMi5vIGF2czJfcGFyc2Vy Lm8KIE9CSlMtJChDT05GSUdfQVZTM19QQVJTRVIpICAgICAgICAgICAgICs9IGF2czNfcGFyc2Vy Lm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXB2LmggYi9saWJhdmNvZGVjL2Fwdi5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmY0MDUxNTQ0MGIKLS0tIC9kZXYvbnVs bAorKysgYi9saWJhdmNvZGVjL2Fwdi5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBBUFYgZGVm aW5pdGlvbnMgYW5kIGVudW1zCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI1IERhd2lkIEtvemlu c2tpIDxkLmtvemluc2tpQHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNfQVBWX0gKKyNkZWZpbmUgQVZDT0RFQ19BUFZf SAorCisvLyBUaGUgbGVuZ3RoIGZpZWxkIHRoYXQgaW5kaWNhdGVzIHRoZSBsZW5ndGggaW4gYnl0 ZXMgb2YgdGhlIGZvbGxvd2luZyBGcmFtZSBEYXRhIGlzIGNvbmZpZ3VyZWQgdG8gYmUgb2YgNCBi eXRlcworLy8gQSBmb3VyLWJ5dGUgbGVuZ3RoIEZyYW1lIERhdGEgU2l6ZSBzeW50YXggZWxlbWVu dCwgd2hpY2ggaW5kaWNhdGVzIHRoZSBzaXplIG9mIHRoZSBGcmFtZSBEYXRhIGluIGJ5dGVzLCBt YXkgcHJlY2VkZSB0aGUgRnJhbWUgRGF0YSwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4K KyNkZWZpbmUgQVBWX0FVX1NJWkVfUFJFRklYX0xFTkdUSCAgICAgICAgICAgKDQpICAvKiBieXRl ICovCisjZGVmaW5lIEFQVl9QQlVfU0laRV9QUkVGSVhfTEVOR1RIICAgICAgICAgICg0KSAgLyog Ynl0ZSAqLworI2RlZmluZSBBUFZfU0lHTkFUVVJFX0xFTkdUSCAgICAgICAgICAgICAgICAoNCkg IC8qIGJ5dGUgKi8KKworLy8gQGRlcHJlY2F0ZWQKKyNkZWZpbmUgQVBWX0ZSQU1FX0RBVEFfU0la RV9QUkVGSVhfTEVOR1RIICAgKDQpICAvKiBieXRlICovCisKKy8vIEBzZWUgaHR0cHM6Ly93d3cu aWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlvbi01LjMuMwor I2RlZmluZSBBUFZfUEJVX0hFQURFUl9TSVpFICAgICAgICAgICAgICAgICAoNCkgIC8qIGJ5dGUg Ki8KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1h cHYtMDQuaHRtbCNzZWN0aW9uLTUuMy42CisjZGVmaW5lIEFQVl9GUkFNRV9JTkZPX1NJWkUgICAg ICAgICAgICAgICAgICgxNCkgIC8qIGJ5dGUgKi8KKworLyogc2l6ZSBvZiBtYWNyb2Jsb2NrICov CisjZGVmaW5lIEFQVl9MT0cyX01CICAgICAgICAgICAgICAgICAgICAgKDQpCisjZGVmaW5lIEFQ Vl9NQiAgICAgICAgICAgICAgICAgICAgICAgICAgKDE8PEFQVl9MT0cyX01CKQorI2RlZmluZSBB UFZfTUJfVyAgICAgICAgICAgICAgICAgICAgICAgICgxPDxBUFZfTE9HMl9NQikKKyNkZWZpbmUg QVBWX01CX0ggICAgICAgICAgICAgICAgICAgICAgICAoMTw8QVBWX0xPRzJfTUIpCisjZGVmaW5l IEFQVl9NQl9EICAgICAgICAgICAgICAgICAgICAgICAgKEFQVl9NQl9XICogQVBWX01CX0gpCisK Ky8qIHNpemUgb2YgYmxvY2sgKi8KKyNkZWZpbmUgQVBWX0xPRzJfQkxPQ0sgICAgICAgICAgICAg ICAgICAoMykKKyNkZWZpbmUgQVBWX0JMT0NLICAgICAgICAgICAgICAgICAgICAgICAoMTw8QVBW X0xPRzJfQkxPQ0spCisjZGVmaW5lIEFQVl9CTE9DS19XICAgICAgICAgICAgICAgICAgICAgKDE8 PEFQVl9MT0cyX0JMT0NLKQorI2RlZmluZSBBUFZfQkxPQ0tfSCAgICAgICAgICAgICAgICAgICAg ICgxPDxBUFZfTE9HMl9CTE9DSykKKyNkZWZpbmUgQVBWX0JMT0NLX0QgICAgICAgICAgICAgICAg ICAgICAoQVBWX0JMT0NLX1cgKiBBUFZfQkxPQ0tfSCkKKworLyogQHNlZSBXRDEgQVBWIHNwZWMg c2VjdGlvbiA3LjMuMi4yKi8KKyNkZWZpbmUgQVBWX1BSRVZfRENfRElGRiA0MAorCisvKiBzaXpl IG9mIG1hY3JvYmxvY2sgKi8KK2VudW0geworICAgIEFQVl9NQl9XSURUSCAgICA9IDE2LAorICAg IEFQVl9NQl9IRUlHSFQgICA9IDE2LAorfTsKKworLyogQ29sb3IgY29tcG9uZW50cyAqLworZW51 bSB7IAorICAgIEFQVl9DT0xPUl9DT01QX1kgICAgPSAwLCAgICAvKiBZIGx1bWEgKi8KKyAgICBB UFZfQ09MT1JfQ09NUF9VICAgID0gMSwgICAgLyogQ2IgQ2hyb21hICovCisgICAgQVBWX0NPTE9S X0NPTVBfViAgICA9IDIsICAgIC8qIENyIENocm9tYSAqLworICAgIEFQVl9DT0xPUl9DT01QX0Eg ICAgPSAzLCAgICAvKiBBbHBoYSAqLworICAgIEFQVl9DT0xPUl9DT01QX05VTSAgPSA0ICAgICAv KiBudW1iZXIgb2YgY29sb3IgY29tcG9uZW50ICovCit9OworCisvKiBzaXplIG9mIGJsb2NrICov CisjZGVmaW5lIExPRzJfQkxLICAgICAgICAgICAgICAgICAgICgzKQorI2RlZmluZSBMT0cyX0JM S19XICAgICAgICAgICAgICAgICAoMykKKyNkZWZpbmUgTE9HMl9CTEtfSCAgICAgICAgICAgICAg ICAgKDMpCisjZGVmaW5lIEJMS19XICAgICAgICAgICAgICAgICAgICAgICgxIDw8IExPRzJfQkxL KQorI2RlZmluZSBCTEtfSCAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBMT0cyX0JMSykKKyNk ZWZpbmUgQkxLX0QgICAgICAgICAgICAgICAgICAgICAgKEJMS19XICogQkxLX0gpCisKK2NvbnN0 IHN0YXRpYyB1aW50MTZfdCBTY2FuT3JkZXJbQkxLX0RdID0KK3sKKyAgICAwLCAgICAxLCAgICA4 LCAgIDE2LCAgICA5LCAgICAyLCAgICAzLCAgIDEwLAorICAgIDE3LCAgIDI0LCAgIDMyLCAgIDI1 LCAgIDE4LCAgIDExLCAgICA0LCAgICA1LAorICAgIDEyLCAgIDE5LCAgIDI2LCAgIDMzLCAgIDQw LCAgIDQ4LCAgIDQxLCAgIDM0LAorICAgIDI3LCAgIDIwLCAgIDEzLCAgICA2LCAgICA3LCAgIDE0 LCAgIDIxLCAgIDI4LAorICAgIDM1LCAgIDQyLCAgIDQ5LCAgIDU2LCAgIDU3LCAgIDUwLCAgIDQz LCAgIDM2LAorICAgIDI5LCAgIDIyLCAgIDE1LCAgIDIzLCAgIDMwLCAgIDM3LCAgIDQ0LCAgIDUx LAorICAgIDU4LCAgIDU5LCAgIDUyLCAgIDQ1LCAgIDM4LCAgIDMxLCAgIDM5LCAgIDQ2LAorICAg IDUzLCAgIDYwLCAgIDYxLCAgIDU0LCAgIDQ3LCAgIDU1LCAgIDYyLCAgIDYzLAorfTsKKworI2Vu ZGlmIC8vIEFWQ09ERUNfQVBWX0gKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYXB2X3BhcnNlLmMg Yi9saWJhdmNvZGVjL2Fwdl9wYXJzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLmM2YjE2Njc5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2Fwdl9wYXJz ZS5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgRGF3aWQgS296 aW5za2kgPGQua296aW5za2lAc2Ftc3VuZy5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQg b2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZG bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwg SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0x MzAxIFVTQQorICovCisKKyNpbmNsdWRlICJwYXJzZXIuaCIKKworI2luY2x1ZGUgImFwdi5oIgor I2luY2x1ZGUgImFwdl9wYXJzZS5oIgorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUKK2ludCBmZl9hcHZfcGFy c2VfZnJhbWVfZGF0YShHZXRCaXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCkKK3sKKyAg ICBmZl9hcHZfcGFyc2VfZnJhbWVfaGVhZGVyKGdiLCAmZmQtPmZyYW1lX2RhdGFfaGVhZGVyKTsK KworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcHZfcGFyc2UuaCBi L2xpYmF2Y29kZWMvYXB2X3BhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNzhhZjlkOGY4OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvYXB2X3BhcnNl LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyNSBEYXdpZCBLb3pp bnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBv ZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1w ZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEz MDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZQorICogQVBWIGRlY29kZXIvcGFyc2VyIHNoYXJl ZCBjb2RlCisgKi8KKworI2lmbmRlZiBBVkNPREVDX0FQVl9QQVJTRV9ICisjZGVmaW5lIEFWQ09E RUNfQVBWX1BBUlNFX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAibGliYXZ1 dGlsL2xvZy5oIgorI2luY2x1ZGUgImFwdi5oIgorI2luY2x1ZGUgImFwdl9wcy5oIgorCitzdGF0 aWMgaW5saW5lIHVpbnQzMl90IGFwdl9yZWFkX2ZyYW1lX2RhdGFfc2l6ZShjb25zdCB1aW50OF90 ICpiaXRzLCBpbnQgYml0c19zaXplLCB2b2lkICpsb2djdHgpCit7CisgICAgdWludDMyX3QgZnJh bWVfZGF0YV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfRlJBTUVfREFUQV9T SVpFX1BSRUZJWF9MRU5HVEgpIHsKKyAgICAgICAgYXZfbG9nKGxvZ2N0eCwgQVZfTE9HX0VSUk9S LCAiQ2FuJ3QgcmVhZCBGcmFtZSBEYXRhIHNpemVcbiIpOworICAgICAgICByZXR1cm4gMDsKKyAg ICB9CisKKyAgICBmcmFtZV9kYXRhX3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJu IGZyYW1lX2RhdGFfc2l6ZTsKK30KKworLy8gQHNlZSAxMi4xLiBSYXcgYml0c3RyZWFtIGZvcm1h dCBbaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwj c2VjdGlvbi0xMi4xXQorc3RhdGljIGlubGluZSB1aW50MzJfdCBhcHZfcmVhZF9hdV9zaXplKGNv bnN0IHVpbnQ4X3QgKmJpdHMsIGludCBiaXRzX3NpemUsIHZvaWQgKmxvZ2N0eCkKK3sKKyAgICB1 aW50MzJfdCBhdV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfQVVfU0laRV9Q UkVGSVhfTEVOR1RIKSB7CisgICAgICAgIGF2X2xvZyhsb2djdHgsIEFWX0xPR19FUlJPUiwgIkNh bid0IHJlYWQgQWNjZXNzIFVuaXQgc2l6ZVxuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0K KworICAgIGF1X3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJuIGF1X3NpemU7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYXB2X3JlYWRfcGJ1X3NpemUoY29uc3QgdWludDhf dCAqYml0cywgaW50IGJpdHNfc2l6ZSwgdm9pZCAqbG9nY3R4KQoreworICAgIHVpbnQzMl90IHBi dV9zaXplID0gMDsKKworICAgIGlmIChiaXRzX3NpemUgPCBBUFZfUEJVX1NJWkVfUFJFRklYX0xF TkdUSCkgeworICAgICAgICBhdl9sb2cobG9nY3R4LCBBVl9MT0dfRVJST1IsICJDYW4ndCByZWFk IFBCVSAocHJpbWl0aXZlIGJpdHN0cmVhbSB1bml0KSBzaXplXG4iKTsKKyAgICAgICAgcmV0dXJu IDA7CisgICAgfQorCisgICAgcGJ1X3NpemUgPSBBVl9SQjMyKGJpdHMpOworCisgICAgcmV0dXJu IHBidV9zaXplOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQv ZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUKK2ludCBmZl9hcHZfcGFyc2VfZnJhbWVf ZGF0YShHZXRCaXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCk7CisKKyNlbmRpZiAvKiBB VkNPREVDX0FQVl9QQVJTRV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fwdl9wYXJzZXIu YyBiL2xpYmF2Y29kZWMvYXB2X3BhcnNlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmNjNWI1OWUyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2Fwdl9w YXJzZXIuYwpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIEFQViBmb3JtYXQgcGFyc2VyCisgKgor ICogQ29weXJpZ2h0IChDKSAyMDI1IERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1bmcu Y29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAi cGFyc2VyLmgiCisjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgorI2luY2x1ZGUgImFwdi5oIgorI2lu Y2x1ZGUgImFwdl9wYXJzZS5oIgorCit0eXBlZGVmIHN0cnVjdCBBUFZQYXJzZXJDb250ZXh0IHsK KyAgICBBUFZQYXJhbVNldHMgcHM7CisKKyAgICBpbnQgcGFyc2VkX2V4dHJhZGF0YTsKK30gQVBW UGFyc2VyQ29udGV4dDsKKworLyoqCisgKiBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tMTIuMQorICogCisgKiBQYXJzZSBB UFYgYml0c3RyZWFtCisgKgorICogQHBhcmFtIHMgY29kZWMgcGFyc2VyIGNvbnRleHQKKyAqIEBw YXJhbSBhdmN0eCBjb2RlYyBjb250ZXh0CisgKiBAcGFyYW0gYnVmIGJ1ZmZlciB3aXRoIGZpZWxk L2ZyYW1lIGRhdGEKKyAqIEBwYXJhbSBidWZfc2l6ZSBzaXplIG9mIHRoZSBidWZmZXIKKyAqLwor c3RhdGljIGludCBwYXJzZV9hcHZfYml0c3RyZWFtKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzLCBB VkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKQor eworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBidWY7CisgICAgaW50IGRhdGFfc2l6ZSA9IGJ1 Zl9zaXplOworCisgICAgaWYgKGRhdGFfc2l6ZSA+IDApIHsKKyAgICAgICAgaW50IGF1X3NpemUg PSAwOworICAgICAgICAKKyAgICAgICAgLy8gQnVmZmVyIHNpemUgaXMgbm90IGVub3VnaCBmb3Ig YnVmZmVyIHRvIHN0b3JlIEZyYW1lIERhdGEgNC1ieXRlcyBwcmVmaXggKGxlbmd0aCkKKyAgICAg ICAgaWYgKGRhdGFfc2l6ZSA8IEFQVl9BVV9TSVpFX1BSRUZJWF9MRU5HVEgpCisgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBhdV9zaXplID0gYXB2X3Jl YWRfYXVfc2l6ZShkYXRhLCBBUFZfQVVfU0laRV9QUkVGSVhfTEVOR1RILCBhdmN0eCk7CisKKyAg ICAgICAgaWYgKCFhdV9zaXplIHx8IGF1X3NpemUgPiBJTlRfTUFYKQorICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZGF0YSArPSBBUFZfQVVfU0laRV9Q UkVGSVhfTEVOR1RIOworICAgICAgICBkYXRhX3NpemUgLT0gQVBWX0FVX1NJWkVfUFJFRklYX0xF TkdUSDsKKworICAgICAgICBpZiAoZGF0YV9zaXplIDwgYXVfc2l6ZSkKKyAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLy8g RGVjb2RpbmcgRnJhbWUgRGF0YSBmcm9tIGFwdkMgKEFQVkRlY29kZXJDb25maWd1cmF0aW9uUmVj b3JkKQorc3RhdGljIGludCBkZWNvZGVfZXh0cmFkYXRhKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpz LCBBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGF2 Y3R4LT5leHRyYWRhdGE7CisgICAgaW50IHNpemUgPSBhdmN0eC0+ZXh0cmFkYXRhX3NpemU7Cisg ICAgaW50IHJldCA9IDA7CisgICAgaWYgKCFkYXRhIHx8IHNpemUgPD0gMCkKKyAgICAgICAgcmV0 dXJuIC0xOworICAgIAorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYXB2X3BhcnNl KEFWQ29kZWNQYXJzZXJDb250ZXh0ICpzLCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICoqcG91dGJ1ZiwgaW50ICpwb3V0YnVmX3NpemUs CisgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkK K3sKKyAgICBpbnQgbmV4dDsKKyAgICBpbnQgcmV0OworICAgIEFQVlBhcnNlckNvbnRleHQgKmN0 eCA9IHMtPnByaXZfZGF0YTsKKworICAgIHMtPnBpY3R1cmVfc3RydWN0dXJlID0gQVZfUElDVFVS RV9TVFJVQ1RVUkVfRlJBTUU7CisgICAgcy0+a2V5X2ZyYW1lID0gMTsKKworICAgIGlmIChhdmN0 eC0+ZXh0cmFkYXRhICYmICFjdHgtPnBhcnNlZF9leHRyYWRhdGEpIHsKKyAgICAgICAgZGVjb2Rl X2V4dHJhZGF0YShzLCBhdmN0eCk7CisgICAgICAgIGN0eC0+cGFyc2VkX2V4dHJhZGF0YSA9IDE7 CisgICAgfQorCisgICAgbmV4dCA9IGJ1Zl9zaXplOworCisgICAgcmV0ID0gcGFyc2VfYXB2X2Jp dHN0cmVhbShzLCBhdmN0eCwgYnVmLCBidWZfc2l6ZSk7CisgICAgaWYocmV0IDwgMCkgeworICAg ICAgICAqcG91dGJ1ZiAgICAgID0gTlVMTDsKKyAgICAgICAgKnBvdXRidWZfc2l6ZSA9IDA7Cisg ICAgICAgIHJldHVybiBidWZfc2l6ZTsKKyAgICB9CisKKyAgICAvLyBwb3V0YnVmIGNvbnRhaW5z IGp1c3Qgb25lIEFjY2VzcyBVbml0CisgICAgKnBvdXRidWYgICAgICA9IGJ1ZjsKKyAgICAqcG91 dGJ1Zl9zaXplID0gYnVmX3NpemU7CisKKyAgICByZXR1cm4gbmV4dDsKK30KKworc3RhdGljIHZv aWQgYXB2X3BhcnNlcl9jbG9zZShBVkNvZGVjUGFyc2VyQ29udGV4dCAqcykKK3sKKyAgICBBUFZQ YXJzZXJDb250ZXh0ICpjdHggPSBzLT5wcml2X2RhdGE7CisKKyAgICBpZihjdHgtPnBzLmZyYW1l X2RhdGEuZnJhbWVfZGF0YV9oZWFkZXIudGlsZV9pbmZvLkNvbFN0YXJ0cykgeworICAgICAgICBm cmVlKGN0eC0+cHMuZnJhbWVfZGF0YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uQ29sU3Rh cnRzKTsKKyAgICAgICAgY3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVf aW5mby5Db2xTdGFydHMgPSBOVUxMOworICAgIH0KKworICAgIGlmKGN0eC0+cHMuZnJhbWVfZGF0 YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uUm93U3RhcnRzKSB7CisgICAgICAgIGZyZWUo Y3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVfaW5mby5Sb3dTdGFydHMp OworICAgICAgICBjdHgtPnBzLmZyYW1lX2RhdGEuZnJhbWVfZGF0YV9oZWFkZXIudGlsZV9pbmZv LlJvd1N0YXJ0cyA9IE5VTEw7CisgICAgfQorICAgIAorICAgIGlmKGN0eC0+cHMuZnJhbWVfZGF0 YS5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8udGlsZV9zaXplX2luX2ZoKSB7CisgICAgICAg IGZyZWUoY3R4LT5wcy5mcmFtZV9kYXRhLmZyYW1lX2RhdGFfaGVhZGVyLnRpbGVfaW5mby50aWxl X3NpemVfaW5fZmgpOworICAgICAgICBjdHgtPnBzLmZyYW1lX2RhdGEuZnJhbWVfZGF0YV9oZWFk ZXIudGlsZV9pbmZvLnRpbGVfc2l6ZV9pbl9maCA9IE5VTEw7CisgICAgfQorCisgICAgZmZfYXB2 X3BzX2ZyZWUoJmN0eC0+cHMpOworfQorCitjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2Fwdl9wYXJz ZXIgPSB7CisgICAgLmNvZGVjX2lkcyAgICAgID0geyBBVl9DT0RFQ19JRF9BUFYgfSwKKyAgICAu cHJpdl9kYXRhX3NpemUgPSBzaXplb2YoQVBWUGFyc2VyQ29udGV4dCksCisgICAgLnBhcnNlcl9w YXJzZSAgID0gYXB2X3BhcnNlLAorICAgIC5wYXJzZXJfY2xvc2UgICA9IGFwdl9wYXJzZXJfY2xv c2UsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hcHZfcHMuYyBiL2xpYmF2Y29kZWMvYXB2 X3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYTlmYTBjODAzMAot LS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvYXB2X3BzLmMKQEAgLTAsMCArMSw1MDMgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgRGF3aWQgS296aW5za2kgPGQua296aW5za2lAc2Ft c3VuZy5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNs dWRlICJnb2xvbWIuaCIKKyNpbmNsdWRlICJwYXJzZXIuaCIKKyNpbmNsdWRlICJhcHYuaCIKKyNp bmNsdWRlICJhcHZfcHMuaCIKKworI2RlZmluZSBmZmFwdl9tYXgoYSxiKSAgICAgICAgICAgICBc CisoeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX3R5cGVvZl9fIChhKSBfYSA9 IChhKTsgXAorICAgIF9fdHlwZW9mX18gKGIpIF9iID0gKGIpOyBcCisgICAgX2EgPiBfYiA/IF9h IDogX2I7ICAgICAgIFwKK30pCisKKyNkZWZpbmUgZmZhcHZfbWluKGEsYikgICAgICAgICAgICAg XAorKHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX190eXBlb2ZfXyAoYSkgX2Eg PSAoYSk7IFwKKyAgICBfX3R5cGVvZl9fIChiKSBfYiA9IChiKTsgXAorICAgIF9hIDwgX2IgPyBf YSA6IF9iOyAgICAgICBcCit9KQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtYXJpdGhtZXRpYy1vcGVyYXRvcnMKKyNk ZWZpbmUgZmZhcHZfY2xpcDMobWluLCBtYXgsIHZhbCkgZmZhcHZfbWF4KCAobWluKSwgZmZhcHZf bWluKChtYXgpLCAodmFsKSkgKQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tNS4zLjMKKy8vIEBzZWUgaHR0cHM6 Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1wcmlt aXRpdmUtYml0c3RyZWFtLXVuaXQtaGUKK2ludCBmZl9hcHZfcGFyc2VfcGJ1X2hlYWRlcihHZXRC aXRDb250ZXh0ICpnYiwgQVBWUEJVSGVhZGVyICpwYnVoKQoreworICAgIHBidWgtPnBidV90eXBl ICAgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDgpOworICAgIHBidWgtPmdyb3Vw X2lkICAgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICBwYnVoLT5y ZXNlcnZlZF96ZXJfOGJpdHMgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICAgICAg CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2 ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS10aWxlLWluZm8KK2ludCBmZl9hcHZfdGls ZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwg QVBWVGlsZUluZm8gKnRpKQoreworICAgIC8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJj aGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1zb3VyY2UtZGVjb2RlZC1hbmQtb3V0 cHV0LWYKKyAgICBpbnQgTWJXaWR0aCA9IEFQVl9NQl9XSURUSDsKKyAgICBpbnQgTWJIZWlnaHQg PSBBUFZfTUJfSEVJR0hUOworCisgICAgaW50IEZyYW1lV2lkdGhJblNhbXBsZXNZOworICAgIGlu dCBGcmFtZUhlaWdodEluU2FtcGxlc1k7CisgICAgaW50IEZyYW1lV2lkdGhJbk1ic1k7CisgICAg aW50IEZyYW1lSGVpZ2h0SW5NYnNZOworCisgICAgaW50IHN0YXJ0TWIgPSAwOworICAgIGludCBp ID0gMDsKKworICAgIHRpLT50aWxlX3dpZHRoX2luX21icyA9IGdldF9iaXRzKGdiLCAyMCk7Cisg ICAgdGktPnRpbGVfaGVpZ2h0X2luX21icyA9IGdldF9iaXRzKGdiLCAyMCk7CisKKyAgICBGcmFt ZVdpZHRoSW5TYW1wbGVzWSA9IGZkaC0+ZnJhbWVfaW5mby5mcmFtZV93aWR0aDsKKyAgICBGcmFt ZUhlaWdodEluU2FtcGxlc1kgPSBmZGgtPmZyYW1lX2luZm8uZnJhbWVfaGVpZ2h0OworICAgIEZy YW1lV2lkdGhJbk1ic1kgPSBjZWlsKCBGcmFtZVdpZHRoSW5TYW1wbGVzWSAvIE1iV2lkdGggKTsK KyAgICBGcmFtZUhlaWdodEluTWJzWSA9IGNlaWwoIEZyYW1lSGVpZ2h0SW5TYW1wbGVzWSAvIE1i SGVpZ2h0ICk7CisKKyAgICBpZighdGktPkNvbFN0YXJ0cykKKyAgICAgICAgZnJlZSh0aS0+Q29s U3RhcnRzKTsKKworICAgIC8vIEB0b2RvIHJlbWVtYmVyIHRvIGZyZWUgaXQKKyAgICB0aS0+Q29s U3RhcnRzID0gbWFsbG9jKHNpemVvZihpbnQpICogRnJhbWVXaWR0aEluTWJzWSk7CisKKyAgICBm b3IoIGkgPSAwOyBzdGFydE1iIDwgRnJhbWVXaWR0aEluTWJzWTsgaSsrICkgeworICAgICAgICB0 aS0+Q29sU3RhcnRzWyBpIF0gPSBzdGFydE1iICogTWJXaWR0aDsKKyAgICAgICAgc3RhcnRNYiAr PSB0aS0+dGlsZV93aWR0aF9pbl9tYnM7CisgICAgfQorCisgICAgdGktPkNvbFN0YXJ0c1sgaSBd ID0gRnJhbWVXaWR0aEluTWJzWSAqIE1iV2lkdGg7CisgICAgdGktPlRpbGVDb2xzID0gaTsKKwor ICAgIHN0YXJ0TWIgPSAwOworCisgICAgaWYoIXRpLT5Sb3dTdGFydHMpCisgICAgICAgIGZyZWUo dGktPlJvd1N0YXJ0cyk7CisKKyAgICAvLyBAdG9kbyByZW1lbWJlciB0byBmcmVlIGl0CisgICAg dGktPlJvd1N0YXJ0cyA9IG1hbGxvYyhzaXplb2YoaW50KSAqIEZyYW1lSGVpZ2h0SW5NYnNZKTsK KworICAgIGZvciggaSA9IDA7IHN0YXJ0TWIgPCBGcmFtZUhlaWdodEluTWJzWTsgaSsrICkgewor ICAgICAgICB0aS0+Um93U3RhcnRzWyBpIF0gPSBzdGFydE1iICogTWJIZWlnaHQ7CisgICAgICAg IHN0YXJ0TWIgKz0gdGktPnRpbGVfaGVpZ2h0X2luX21icyArIDE7CisgICAgfQorCisgICAgdGkt PlJvd1N0YXJ0c1sgaSBdID0gRnJhbWVIZWlnaHRJbk1ic1kgKiBNYkhlaWdodDsKKyAgICB0aS0+ VGlsZVJvd3MgPSBpOworICAgIHRpLT5OdW1UaWxlcyA9IHRpLT5UaWxlQ29scyAqIHRpLT5UaWxl Um93czsKKworICAgIGlmKCF0aS0+dGlsZV9zaXplX2luX2ZoKQorICAgICAgICBmcmVlKHRpLT50 aWxlX3NpemVfaW5fZmgpOworCisgICAgLy8gQHRvZG8gcmVtZW1iZXIgdG8gZnJlZSBpdAorICAg IHRpLT50aWxlX3NpemVfaW5fZmggPSBtYWxsb2Moc2l6ZW9mKHVpbnQzMl90KSAqIHRpLT5OdW1U aWxlcyk7CisKKyAgICBmb3IoIGkgPSAwOyBpIDwgdGktPk51bVRpbGVzIDsgaSsrICkKKyAgICAg ICAgdGktPnRpbGVfc2l6ZV9pbl9maFtpXSA9IGdldF9iaXRzKGdiLCAzMik7CisKKyAgICByZXR1 cm4gMDsKK30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0 LWxpbS1hcHYtMDQuaHRtbCNuYW1lLWJ5dGVfYWxpZ25lZAorLy8gYnl0ZV9hbGlnbmVkKCApIGlz IHNwZWNpZmllZCBhcyBmb2xsb3dzOgorLy8g4oCUIElmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlu IHRoZSBiaXRzdHJlYW0gaXMgb24gYSBieXRlIGJvdW5kYXJ5LCBpLmUuLCB0aGUgbmV4dCBiaXQg aW4gdGhlIGJpdHN0cmVhbSBpcyB0aGUgZmlyc3QgYml0IGluIGEgYnl0ZSwgdGhlIHJldHVybiB2 YWx1ZSBvZiBieXRlX2FsaWduZWQoICkgaXMgZXF1YWwgdG8gVFJVRS4KKy8vIOKAlCBPdGhlcndp c2UsIHRoZSByZXR1cm4gdmFsdWUgb2YgYnl0ZV9hbGlnbmVkKCApIGlzIGVxdWFsIHRvIEZBTFNF LgorLy8KK3N0YXRpYyBpbnQgYnl0ZV9hbGlnbmVkKEdldEJpdENvbnRleHQgKmdiKQoreworICAg IGludCBiaXRzX2NvdW50ID0gZ2V0X2JpdHNfY291bnQoZ2IpOworICAgIGlmIChiaXRzX2NvdW50 ICUgOCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30K KworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYt MDQuaHRtbCNuYW1lLWJ5dGUtYWxpZ25tZW50CitpbnQgZmZfYXB2X2J5dGVfYWxpZ25tZW50KEdl dEJpdENvbnRleHQgKmdiLCBBUFZCeXRlQWxpZ25lbW50ICpiYSkKK3sKKyAgICB3aGlsZSghYnl0 ZV9hbGlnbmVkKGdiKSkKKyAgICAgICAgYmEtPmFsaWdubWVudF9iaXRfZXF1YWxfdG9femVybyA9 IGdldF9iaXRzMShnYik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cu aWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1xdWFudGl6YXRp b24tbWF0cml4CitpbnQgZmZfYXB2X3F1YW50aXphdGlvbl9tYXRyaXgoR2V0Qml0Q29udGV4dCAq Z2IsIGludCBudW1fY29tcCwgQVBWUXVhbnRpemF0aW9uTWF0cml4ICpxbSkKK3sKKyAgICBmb3Io IGludCBjSWR4ID0gMDsgY0lkeCA8IG51bV9jb21wOyBjSWR4ICsrICkgeworICAgICAgICBmb3Io IGludCB5ID0gMDsgeSA8IDg7IHkgKysgKSB7CisgICAgICAgICAgICBmb3IoIGludCB4ID0gMDsg eCA8IDg7IHggKysgKQorICAgICAgICAgICAgICAgIHFtLT5xX21hdHJpeFsgY0lkeCBdWyB4IF1b IHkgXSA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsK K30KKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0 Lmh0bWwjbmFtZS1mcmFtZS1pbmZvcm1hdGlvbgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9pbmZv KEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZUluZm8gKmZyYW1lX2luZm8pCit7CisgICAgZnJh bWVfaW5mby0+cHJvZmlsZV9pZGMgICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDgp OworICAgIGZyYW1lX2luZm8tPmxldmVsX2lkYyAgICAgICAgICAgICAgICAgICAgICA9IGdldF9i aXRzKGdiLCA4KTsKKyAgICBmcmFtZV9pbmZvLT5iYW5kX2lkYyAgICAgICAgICAgICAgICAgICAg ICAgPSBnZXRfYml0cyhnYiwgMyk7CisgICAgZnJhbWVfaW5mby0+cmVzZXJ2ZWRfemVyb181Yml0 cyAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDUpOworICAgIGZyYW1lX2luZm8tPmZyYW1lX3dp ZHRoICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCAyNCk7CisgICAgZnJhbWVfaW5m by0+ZnJhbWVfaGVpZ2h0ICAgICAgICAgICAgICAgICAgID0gZ2V0X2JpdHMoZ2IsIDI0KTsKKyAg ICBmcmFtZV9pbmZvLT5jaHJvbWFfZm9ybWF0X2lkYyAgICAgICAgICAgICAgPSBnZXRfYml0cyhn YiwgNCk7CisgICAgZnJhbWVfaW5mby0+Yml0X2RlcHRoX21pbnVzOCAgICAgICAgICAgICAgID0g Z2V0X2JpdHMoZ2IsIDQpOworICAgIGZyYW1lX2luZm8tPmNhcHR1cmVfdGltZV9kaXN0YW5jZSAg ICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBmcmFtZV9pbmZvLT5yZXNlcnZlZF96ZXJv XzhiaXRzICAgICAgICAgICAgPSBnZXRfYml0cyhnYiwgOCk7CisgICAgCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgbnVtX2NvbXBvbmVudChpbnQgY2hyb21hX2Zvcm1hdF9pZGMpIHsK KyAgICBpbnQgTnVtQ29tcHMgPSAwOworICAgIAorICAgIHN3aXRjaCAoY2hyb21hX2Zvcm1hdF9p ZGMpCisgICAgeworICAgIGNhc2UgMDoKKyAgICAgICAgTnVtQ29tcHMgPSAxOworICAgICAgICBi cmVhazsKKyAgICBjYXNlIDI6CisgICAgY2FzZSAzOgorICAgICAgICBOdW1Db21wcyA9IDM7Cisg ICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgTnVtQ29tcHMgPSA0OworICAgICAg ICBicmVhazsKKyAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg cmV0dXJuIE51bUNvbXBzOworfQorCitzdGF0aWMgaW50IHN1Yl93aWR0aF9jKGludCBjaHJvbWFf Zm9ybWF0X2lkYykgeworICAgIGludCBTdWJXaWR0aEMgPSAwOworICAgIAorICAgIHN3aXRjaCAo Y2hyb21hX2Zvcm1hdF9pZGMpCisgICAgeworICAgIGNhc2UgMDoKKyAgICAgICAgU3ViV2lkdGhD ID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBTdWJXaWR0aEMgPSAy OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIFN1YldpZHRoQyA9IDE7Cisg ICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgU3ViV2lkdGhDID0gMTsKKyAgICAg ICAgYnJlYWs7CisgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg IHJldHVybiBTdWJXaWR0aEM7Cit9CisKK3N0YXRpYyBpbnQgYXB2X3BhcnNlX3BidV9oZWFkZXIo R2V0Qml0Q29udGV4dCAqZ2IsIEFQVlBCVUhlYWRlciAqcGJ1aCkKK3sKKyAgICBwYnVoLT5wYnVf dHlwZSAgICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBwYnVoLT5n cm91cF9pZCAgICAgICAgICAgICAgICAgICAgICA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgcGJ1 aC0+cmVzZXJ2ZWRfemVyXzhiaXRzICAgICAgICAgICAgPSBnZXRfYml0cyhnYiwgOCk7CisgICAg ICAgIAorICAgIHJldHVybiAwOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUtaGVhZGVyCisKK2ludCBm Zl9hcHZfcGFyc2VfZnJhbWVfaGVhZGVyKEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZURhdGFI ZWFkZXIgKmZyYW1lX2hlYWRlcikKK3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgTnVtQ29t cHMgPSBBUFZfQ09MT1JfQ09NUF9OVU07CisKKyAgICByZXQgPSBmZl9hcHZfcGFyc2VfZnJhbWVf aW5mbyhnYiwgJmZyYW1lX2hlYWRlci0+ZnJhbWVfaW5mbyk7CisgICAgCisgICAgZnJhbWVfaGVh ZGVyLT5yZXNlcnZlZF96ZXJvXzhiaXRzID0gZ2V0X2JpdHMoZ2IsIDgpOworICAgIGZyYW1lX2hl YWRlci0+Y29sb3JfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFnID0gZ2V0X2JpdHMoZ2IsIDEpOwor CisgICAgaWYoZnJhbWVfaGVhZGVyLT5jb2xvcl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWcpIHsK KyAgICAgICAgZnJhbWVfaGVhZGVyLT5jb2xvcl9wcmltYXJpZXMgPSBnZXRfYml0cyhnYiwgOCk7 CisgICAgICAgIGZyYW1lX2hlYWRlci0+dHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzID0gZ2V0X2Jp dHMoZ2IsIDgpOworICAgICAgICBmcmFtZV9oZWFkZXItPm1hdHJpeF9jb2VmZmljaWVudHMgPSBn ZXRfYml0cyhnYiwgOCk7CisgICAgfQorICAgIAorICAgIGZyYW1lX2hlYWRlci0+dXNlX3FfbWF0 cml4ID0gZ2V0X2JpdHMoZ2IsIDEpOworCisgICAgTnVtQ29tcHMgPSBudW1fY29tcG9uZW50KGZy YW1lX2hlYWRlci0+ZnJhbWVfaW5mby5jaHJvbWFfZm9ybWF0X2lkYyk7CisgICAgaWYoTnVtQ29t cHMgPT0gMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIGlmKGZyYW1l X2hlYWRlci0+dXNlX3FfbWF0cml4KQorICAgICAgICByZXQgPSBmZl9hcHZfcXVhbnRpemF0aW9u X21hdHJpeChnYiwgTnVtQ29tcHMsICZmcmFtZV9oZWFkZXItPnF1YW50aXphdGlvbl9tYXRyaXgp OworCisgICAgZmZfYXB2X3RpbGVfaW5mbyhnYiwgZnJhbWVfaGVhZGVyLCAmZnJhbWVfaGVhZGVy LT50aWxlX2luZm8pOworICAgIGZyYW1lX2hlYWRlci0+cmVzZXJ2ZWRfemVyb184Yml0c18yID0g Z2V0X2JpdHMoZ2IsIDgpOworCisgICAgZmZfYXB2X2J5dGVfYWxpZ25tZW50KGdiLCAmZnJhbWVf aGVhZGVyLT5ieXRlX2FsaWduZW50KTsKKworICAgIHJldHVybiByZXQ7Cit9CisKKy8vIEBzZWUg aHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFt ZS1wcm9jZXNzLWZvci12YXJpYWJsZS1sZW5ndGgtCitzdGF0aWMgaW50IHJlYWRfdmxjKEdldEJp dENvbnRleHQgKmdiLCB1aW50MzJfdCBrUGFyYW0pCit7CisKKyAgICB1aW50MzJfdCBzeW1ib2xW YWx1ZSA9IDA7CisgICAgdWludDhfdCBwYXJzZUV4cEdvbG9tYiA9IDE7CisgICAgdWludDMyX3Qg ayA9IGtQYXJhbTsKKyAgICB1aW50MzJfdCBzdG9wTG9vcCA9IDA7CisKKyAgICBpZiggZ2V0X2Jp dHMoZ2IsIDEpID09IDEgKQorICAgICAgICBwYXJzZUV4cEdvbG9tYiA9IDA7CisgICAgZWxzZSB7 CisgICAgICAgIGlmKCBnZXRfYml0cyhnYiwgMSkgPT0gMCApIHsKKyAgICAgICAgICAgIHN5bWJv bFZhbHVlICs9ICggMSA8PCBrICk7CisgICAgICAgICAgICBwYXJzZUV4cEdvbG9tYiA9IDA7Cisg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzeW1ib2xWYWx1ZSArPSAoIDIgPDwgayApOwor ICAgICAgICAgICAgcGFyc2VFeHBHb2xvbWIgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAg aWYoIHBhcnNlRXhwR29sb21iICkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiggZ2V0 X2JpdHMoZ2IsIDEpID09IDEgKQorICAgICAgICAgICAgICAgIHN0b3BMb29wID0gMTsKKyAgICAg ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN5bWJvbFZhbHVlICs9ICggMSA8PCBrICk7 CisgICAgICAgICAgICAgICAgaysrOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlKCAh c3RvcExvb3AgKTsKKyAgICB9CisKKyAgICBpZiggayA+IDAgKQorICAgICAgICBzeW1ib2xWYWx1 ZSArPSBnZXRfYml0cyhnYiwgayk7CisKKyAgICByZXR1cm4gc3ltYm9sVmFsdWU7Cit9CisKKy8v IEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0 bWwjbmFtZS1hYy1jb2VmZmljaWVudC1jb2RpbmcKK3N0YXRpYyB2b2lkIGFjX2NvZWZmX2NvZGlu ZyggR2V0Qml0Q29udGV4dCAqZ2IsIHVpbnQzMl90IFByZXYxc3RBY0xldmVsLCBpbnQzMl90IFRy YW5zQ29lZmZbQVBWX0NPTE9SX0NPTVBfTlVNXVtBUFZfTUJfV0lEVEhdW0FQVl9NQl9IRUlHSFRd LCB1aW50MzJfdCB4MCwgdWludDMyX3QgeTAsIGludCBsb2cyQmxrV2lkdGgsIGludCBsb2cyQmxr SGVpZ2h0LCBpbnQgY0lkeCApCit7CisgICAgaW50IHNjYW5Qb3MgPSAxOworICAgIGludCBmaXJz dEFDID0gMTsKKyAgICBpbnQgUHJldkxldmVsID0gUHJldjFzdEFjTGV2ZWw7CisgICAgaW50IFBy ZXZSdW4gPSAwOworCisgICAgZG8geworICAgICAgICBpbnQga1BhcmFtID0gZmZhcHZfY2xpcDMo IDAsIDIsIFByZXZSdW4gPj4gMiApOworICAgICAgICBpbnQgY29lZmZfemVyb19ydW4gPSByZWFk X3ZsYyhnYiwga1BhcmFtKTsgLy8gaCh2KQorCisgICAgICAgIGZvciggaW50IGkgPSAwOyBpIDwg Y29lZmZfemVyb19ydW47IGkrKyApIHsKKyAgICAgICAgICAgIGludCBibGtQb3MgPSBTY2FuT3Jk ZXJbIHNjYW5Qb3MgXTsKKyAgICAgICAgICAgIGludCB4QyA9IGJsa1BvcyAmICggKCAxIDw8IGxv ZzJCbGtXaWR0aCApIC0gMSApOworICAgICAgICAgICAgaW50IHlDID0gYmxrUG9zID4+IGxvZzJC bGtXaWR0aDsKKyAgICAgICAgICAgIFRyYW5zQ29lZmZbIGNJZHggXVsgeDAgKyB4QyBdWyB5MCAr IHlDIF0gPSAwOworICAgICAgICAgICAgc2NhblBvcysrOworICAgICAgICB9CisgICAgICAgIFBy ZXZSdW4gPSBjb2VmZl96ZXJvX3J1bjsKKyAgICAgICAgaWYoIHNjYW5Qb3MgPCAoIDEgPDwgKCBs b2cyQmxrV2lkdGggKyBsb2cyQmxrSGVpZ2h0ICkgKSApIHsKKyAgICAgICAgICAgIGludCBrUGFy YW0gPSBmZmFwdl9jbGlwMyggMCwgNCwgUHJldkxldmVsID4+IDIgKTsKKyAgICAgICAgICAgIGlu dCBhYnNfYWNfY29lZmZfbWludXMxID0gcmVhZF92bGMoZ2IsIGtQYXJhbSk7CisKKyAgICAgICAg ICAgIHVpbnQ4X3Qgc2lnbl9hY19jb2VmZiA9IGdldF9iaXRzMShnYik7CisgICAgICAgICAgICBp bnQgbGV2ZWwgPSAoIGFic19hY19jb2VmZl9taW51czEgKyAxICkgKiAoIDEgLSAyICogc2lnbl9h Y19jb2VmZiApOworICAgICAgICAgICAgdWludDE2X3QgYmxrUG9zID0gU2Nhbk9yZGVyWyBzY2Fu UG9zIF07CisgICAgICAgICAgICBpbnQgeEMgPSBibGtQb3MgJiAoICggMSA8PCBsb2cyQmxrV2lk dGggKSAtIDEgKTsKKyAgICAgICAgICAgIGludCB5QyA9IGJsa1BvcyA+PiBsb2cyQmxrV2lkdGg7 CisgICAgICAgICAgICBUcmFuc0NvZWZmWyBjSWR4IF1bIHgwICsgeEMgXVsgeTAgKyB5QyBdID0g bGV2ZWw7CisgICAgICAgICAgICBzY2FuUG9zKys7CisgICAgICAgICAgICBQcmV2TGV2ZWwgPSBh YnNfYWNfY29lZmZfbWludXMxICsgMTsKKyAgICAgICAgICAgIGlmKCBmaXJzdEFDID09IDEgKSB7 CisgICAgICAgICAgICAgICAgZmlyc3RBQyA9IDA7CisgICAgICAgICAgICAgICAgUHJldjFzdEFj TGV2ZWwgPSBQcmV2TGV2ZWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IHdoaWxl ICggc2NhblBvcyA8ICggMSA8PCAoIGxvZzJCbGtXaWR0aCArIGxvZzJCbGtIZWlnaHQgKSApICk7 Cit9CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0t YXB2LTA0Lmh0bWwjbmFtZS1tYWNyb2Jsb2NrLWxheWVyCitzdGF0aWMgaW50IG1hY3JvYmxvY2tf bGF5ZXIoIEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwg dWludDMyX3QgUHJldjFzdEFjTGV2ZWwsICB1aW50MzJfdCB4TWIsIHVpbnQzMl90IHlNYiwgdWlu dDMyX3QgY0lkeCApCit7CisKKyAgICB1aW50MzJfdCBNYldpZHRoID0gQVBWX01CX1dJRFRIOwor ICAgIHVpbnQzMl90IE1iSGVpZ2h0ID0gQVBWX01CX0hFSUdIVDsKKworICAgIC8vIEBzZWUgNi4y IFNvdXJjZSwgZGVjb2RlZCBhbmQgb3V0cHV0IGZyYW1lIGZvcm1hdHMKKyAgICAvLyBAc2VlIFRh YmxlIDIg4oCUIFN1YldpZHRoQyBhbmQgU3ViSGVpZ2h0QyB2YWx1ZXMgZGVyaXZlZCBmcm9tIGNo cm9tYV9mb3JtYXRfaWRjCisgICAgdWludDMyX3QgU3ViV2lkdGhDID0gKGZkaC0+ZnJhbWVfaW5m by5jaHJvbWFfZm9ybWF0X2lkYyA9PSAyKSA/IDIgOiAxOworICAgIHVpbnQzMl90IFN1YkhlaWdo dEMgPSAxOworCisgICAgLy8gQHNlZSA2LjIgU291cmNlLCBkZWNvZGVkIGFuZCBvdXRwdXQgZnJh bWUgZm9ybWF0cworICAgIHVpbnQzMl90IE1iV2lkdGhDID0gTWJXaWR0aCAvIFN1YldpZHRoQzsK KyAgICB1aW50MzJfdCBNYkhlaWdodEMgPSBNYkhlaWdodCAvIFN1YkhlaWdodEM7CisKKyAgICB1 aW50MzJfdCBzdWJXID0gKCBjSWR4ID09IDAgKSA/IDEgOiBTdWJXaWR0aEM7CisgICAgdWludDMy X3Qgc3ViSCA9ICggY0lkeCA9PSAwICkgPyAxIDogU3ViSGVpZ2h0QzsKKyAgICB1aW50MzJfdCBi bGtXaWR0aCA9ICggY0lkeCA9PSAwICkgPyBNYldpZHRoIDogTWJXaWR0aEM7CisgICAgdWludDMy X3QgYmxrSGVpZ2h0ID0gKCBjSWR4ID09IDAgKSA/IE1iSGVpZ2h0IDogTWJIZWlnaHRDOworCisg ICAgdWludDMyX3QgVHJTaXplID0gODsKKworICAgIC8vIG1vdmVkIGZyb20gdGlsZV9kYXRhCisg ICAgdWludDMyX3QgUHJldkRDID0gMDsKKyAgICB1aW50MzJfdCBQcmV2RGNEaWZmID0gQVBWX1BS RVZfRENfRElGRjsKKworICAgIGludDMyX3QgVHJhbnNDb2VmZltBUFZfQ09MT1JfQ09NUF9OVU1d W0FQVl9NQl9XSURUSF1bQVBWX01CX0hFSUdIVF07CisKKyAgICBmb3IoIGludCB5ID0gMDsgeSA8 IGJsa0hlaWdodDsgeSArPSBUclNpemUgKSB7CisgICAgICAgIGZvciggaW50IHggPSAwOyB4IDwg YmxrV2lkdGg7IHggKz0gVHJTaXplICkgeworCisgICAgICAgICAgICBpbnQga1BhcmFtID0gZmZh cHZfY2xpcDMoIDAsIDUsIFByZXZEY0RpZmYgPj4gMiApOworICAgICAgICAgICAgaW50IGFic19k Y19jb2VmZl9kaWZmID0gcmVhZF92bGMoZ2IsIGtQYXJhbSk7IC8vICBoKHYpCisgICAgICAgICAg ICBpbnQgc2lnbl9kY19jb2VmZl9kaWZmOyAvLyB1KDEpCisKKyAgICAgICAgICAgIGlmKCBhYnNf ZGNfY29lZmZfZGlmZiApCisgICAgICAgICAgICAgICAgc2lnbl9kY19jb2VmZl9kaWZmID0gZ2V0 X2JpdHMxKGdiKTsgLy8gdSgxKQorCisgICAgICAgICAgICBUcmFuc0NvZWZmWyBjSWR4IF1bIHhN YiAvIHN1YlcgKyB4IF1bIHlNYiAvIHN1YkggKyB5IF0gPSBQcmV2REMgKyBhYnNfZGNfY29lZmZf ZGlmZiAqICggMSAtIDIgKiBzaWduX2RjX2NvZWZmX2RpZmYgKTsKKyAgICAgICAgICAgIFByZXZE QyA9IFRyYW5zQ29lZmZbIGNJZHggXVsgeE1iIC8gc3ViVyArIHggXVsgeU1iIC8gc3ViSCArIHkg XTsKKyAgICAgICAgICAgIFByZXZEY0RpZmYgPSBhYnNfZGNfY29lZmZfZGlmZjsKKyAgICAgICAg ICAgIGFjX2NvZWZmX2NvZGluZyggZ2IsIFByZXYxc3RBY0xldmVsLCBUcmFuc0NvZWZmLCB4TWIg LyBzdWJXICsgeCwgeU1iIC8gc3ViSCArIHksIGxvZzIoIFRyU2l6ZSApLCBsb2cyKCBUclNpemUg KSwgY0lkeCApOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvLyBAc2Vl IGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25h bWUtdGlsZS1oZWFkZXIKK3N0YXRpYyBpbnQgdGlsZV9oZWFkZXIoR2V0Qml0Q29udGV4dCAqZ2Is ICBjb25zdCBBUFZGcmFtZURhdGFIZWFkZXIgKmZkaCwgQVBWVGlsZUhlYWRlciAqdGgpCit7Cisg ICAgaW50IE51bUNvbXBzID0gbnVtX2NvbXBvbmVudChmZGgtPmZyYW1lX2luZm8uY2hyb21hX2Zv cm1hdF9pZGMpOworICAgIAorICAgIHRoLT50aWxlX2hlYWRlcl9zaXplID0gZ2V0X2JpdHMoZ2Is IDE2KTsKKyAgICB0aC0+dGlsZV9pbmRleCA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgCisgICAg Zm9yKGludCBpPTA7IGk8TnVtQ29tcHM7IGkrKykgeworICAgICAgICB0aC0+dGlsZV9kYXRhX3Np emVbaV0gPSBnZXRfYml0cyhnYiwgMzIpOworICAgIH0KKyAgICAKKyAgICBmb3IoaW50IGk9MDsg aTxOdW1Db21wczsgaSsrKSB7CisgICAgICAgIHRoLT50aWxlX3FwW2ldID0gZ2V0X2JpdHMoZ2Is IDgpOworICAgIH0KKworICAgIHRoLT5yZXNlcnZlZF96ZXJvXzhiaXRzID0gZ2V0X2JpdHMoZ2Is IDgpOworICAgIAorICAgIGZmX2Fwdl9ieXRlX2FsaWdubWVudChnYiwgJnRoLT5ieXRlX2FsaWdu ZW50KTsKKworICAgIHJldHVybiAwOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3Jn L2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtdGlsZS1kYXRhCisKKy8vIEBw YXJhbSBjSWR4IHNwZWNpZnlpbmcgdGhlIGNvbG9yIGNvbXBvbmVudCBvZiB0aGUgY3VycmVudCBi bG9jaywKK3N0YXRpYyBpbnQgdGlsZV9kYXRhKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZG cmFtZURhdGFIZWFkZXIgKmZkaCwgQVBWVGlsZSAqdGlsZSwgdWludDhfdCB0aWxlSWR4LCB1aW50 OF90IGNJZHgpCit7CisgICAgaW50IE1iV2lkdGggPSBBUFZfTUJfV0lEVEg7CisgICAgaW50IE1i SGVpZ2h0ID0gQVBWX01CX0hFSUdIVDsKKworICAgIHVpbnQzMl90IHgwID0gZmRoLT50aWxlX2lu Zm8uQ29sU3RhcnRzWyB0aWxlSWR4ICUgZmRoLT50aWxlX2luZm8uVGlsZUNvbHMgXTsKKyAgICB1 aW50MzJfdCB5MCA9IGZkaC0+dGlsZV9pbmZvLlJvd1N0YXJ0c1sgdGlsZUlkeCAvIGZkaC0+dGls ZV9pbmZvLlRpbGVDb2xzIF07CisKKyAgICB1aW50MzJfdCBudW1NYkNvbHNJblRpbGUgPSAoIGZk aC0+dGlsZV9pbmZvLkNvbFN0YXJ0c1sgdGlsZUlkeCAlIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xz ICsgMSBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGZkaC0+dGlsZV9pbmZv LkNvbFN0YXJ0c1sgdGlsZUlkeCAlIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzIF0gKSAvIE1iV2lk dGg7CisKKyAgICB1aW50MzJfdCBudW1NYlJvd3NJblRpbGUgPSAoIGZkaC0+dGlsZV9pbmZvLlJv d1N0YXJ0c1sgdGlsZUlkeCAvIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzICsgMSBdCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtIGZkaC0+dGlsZV9pbmZvLlJvd1N0YXJ0c1sgdGls ZUlkeCAvIGZkaC0+dGlsZV9pbmZvLlRpbGVDb2xzXSApIC8gTWJIZWlnaHQ7CisKKyAgICB1aW50 MzJfdCBudW1NYnNJblRpbGUgPSBudW1NYkNvbHNJblRpbGUgKiBudW1NYlJvd3NJblRpbGU7CisK KyAgICB1aW50MzJfdCBQcmV2MXN0QWNMZXZlbCA9IDA7CisgICAgZm9yKCBpbnQgaSA9IDA7IGkg PCBudW1NYnNJblRpbGU7IGkrKyApIHsKKyAgICAgICAgdWludDMyX3QgeE1iID0geDAgKyAoIGkg JSBudW1NYkNvbHNJblRpbGUgKSAqIE1iV2lkdGg7CisgICAgICAgIHVpbnQzMl90IHlNYiA9IHkw ICsgKCBpIC8gbnVtTWJDb2xzSW5UaWxlICkgKiBNYkhlaWdodDsKKyAgICAgICAgbWFjcm9ibG9j a19sYXllciggZ2IsIGZkaCwgUHJldjFzdEFjTGV2ZWwsIHhNYiwgeU1iLCBjSWR4ICk7CisgICAg fQorICAgIGZmX2Fwdl9ieXRlX2FsaWdubWVudChnYiwgJnRpbGUtPnRpbGVfZGF0YS0+Ynl0ZV9h bGlnbmVudCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRm Lm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1lLXRpbGUKK2ludCBmZl9h cHZfcGFyc2VfdGlsZShHZXRCaXRDb250ZXh0ICpnYiwgY29uc3QgQVBWRnJhbWVEYXRhSGVhZGVy ICpmZGgsIEFQVlRpbGUgKnRpbGUsIHVpbnQ4X3QgdGlsZUlkeCkKK3sKKyAgICBpbnQgcmV0ID0g MDsKKyAgICBpbnQgTnVtQ29tcHMgPSBudW1fY29tcG9uZW50KGZkaC0+ZnJhbWVfaW5mby5jaHJv bWFfZm9ybWF0X2lkYyk7CisKKyAgICB0aWxlX2hlYWRlcihnYiwgZmRoLCAmdGlsZS0+dGlsZV9o ZWFkZXIpOworCisgICAgZm9yKGludCBpPTA7IGk8TnVtQ29tcHM7IGkrKykgeworICAgICAgICB0 aWxlX2RhdGEoZ2IsIGZkaCwgdGlsZSwgdGlsZUlkeCwgaSk7CisgICAgfQorCisgICAgcmV0dXJu IHJldDsKK30KKwordm9pZCBmZl9hcHZfcHNfZnJlZShBUFZQYXJhbVNldHMgKnBzKQoreworICAg IEFQVkZyYW1lRGF0YSogZmQgPSAmcHMtPmZyYW1lX2RhdGE7CisgICAgaW50IG51bV90aWxlcyA9 IGZkLT5mcmFtZV9kYXRhX2hlYWRlci50aWxlX2luZm8uTnVtVGlsZXM7CisKKyAgICBmb3IoIGlu dCBpID0gMDsgaSA8IG51bV90aWxlczsgaSsrICkKKyAgICAgICAgZnJlZShmZC0+dGlsZXNbaV0p OworCisgICAgZnJlZShmZC0+dGlsZXMpOworfQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYu b3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtbWV0YWRhdGEtcGF5bG9h ZC1zeW50YXgKK3N0YXRpYyBpbnQgbWV0YWRhdGFfcGF5bG9hZCggR2V0Qml0Q29udGV4dCAqZ2Is IHVpbnQzMl90IG1ldGFkYXRhU2l6ZSApCit7CisgICAgZG8geworICAgICAgICB1aW50MTZfdCBz aXplOworCisgICAgICAgIHNraXBfYml0cyhnYiwgMTYpOyAgICAgICAgICAvLyB1KDE2KQorCisg ICAgICAgIHNpemUgPSBnZXRfYml0cyhnYiwgMTYpOyAgICAvLyB1KDE2KQorCisgICAgICAgIHNr aXBfYml0cyhnYiwgc2l6ZSAqIDgpOyAgICAvLyB2YWx1ZSB1KHNpemUqOCk7CisKKyAgICB9IHdo aWxlIChnZXRfYml0cyhnYiwgMTYpICE9IDB4RkZGRik7CisKKyAgICByZXR1cm4gMDsKK30KKwor Ly8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQu aHRtbCNuYW1lLW1ldGFkYXRhCitpbnQgZmZfYXB2X3BhcnNlX21ldGFkYXRhKEdldEJpdENvbnRl eHQgKmdiLCBBUFZGcmFtZURhdGEgKmZkKQoreworICAgIHVpbnQxNl90IG1ldGFkYXRhX251bSA9 IGdldF9iaXRzKGdiLCAxNik7IC8vIHUoMTYpCisgICAgZm9yKGludCBpID0gMDsgaSA8IG1ldGFk YXRhX251bTsgaSsrICkgeworICAgICAgICB1aW50MzJfdCBtZXRhZGF0YV9zaXplX21pbnVzMSA9 IGdldF9iaXRzX2xvbmcoZ2IsIDMyKTsgLy8gdSgzMikKKyAgICAgICAgbWV0YWRhdGFfcGF5bG9h ZCggZ2IsIG1ldGFkYXRhX3NpemVfbWludXMxICsgMSApOworICAgIH0KKyAgICByZXR1cm4gMDsK K30KKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1h cHYtMDQuaHRtbCNuYW1lLWZpbGxlcgoraW50IGZmX2Fwdl9wYXJzZV9maWxsZXJfZGF0YShHZXRC aXRDb250ZXh0ICpnYiwgQVBWRnJhbWVEYXRhICpmZCkKK3sKKyAgICB1aW50OF90IGZmX2J5dGUg PSAwOworICAgIHdoaWxlKCAgZ2V0X2JpdHMoZ2IsIDgpID09IDB4RkYgKQorICAgICAgICBmZl9i eXRlID0gMHhmZjsgLy8gZXF1YWwgdG8gMHhGRgorCisgICAgcmV0dXJuIGZmX2J5dGU7Cit9CmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fwdl9wcy5oIGIvbGliYXZjb2RlYy9hcHZfcHMuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xNzgwOWRkNmJmCi0tLSAvZGV2L251 bGwKKysrIGIvbGliYXZjb2RlYy9hcHZfcHMuaApAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIENv cHlyaWdodCAoYykgMjAyNSBEYXdpZCBLb3ppbnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNvbT4K KyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBAZmlsZQor ICogQVBWIGRlY29kZXIvcGFyc2VyIHNoYXJlZCBjb2RlCisgKi8KKworI2lmbmRlZiBBVkNPREVD X0FQVl9QU19ICisjZGVmaW5lIEFWQ09ERUNfQVBWX1BTX0gKKworI2luY2x1ZGUgPHN0ZGludC5o PgorCisjaW5jbHVkZSAiYXB2LmgiCisjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKKworLyogc2l6ZSBv ZiBibG9jayAqLworI2RlZmluZSBBUFZfTE9HMl9CTE9DSyAgICAgICAgICAgICAgICAgICgzKQor I2RlZmluZSBBUFZfQkxPQ0sgICAgICAgICAgICAgICAgICAgICAgICgxPDxBUFZfTE9HMl9CTE9D SykKKyNkZWZpbmUgQVBWX0JMT0NLX1cgICAgICAgICAgICAgICAgICAgICAoMTw8QVBWX0xPRzJf QkxPQ0spCisjZGVmaW5lIEFQVl9CTE9DS19IICAgICAgICAgICAgICAgICAgICAgKDE8PEFQVl9M T0cyX0JMT0NLKQorI2RlZmluZSBBUFZfQkxPQ0tfRCAgICAgICAgICAgICAgICAgICAgIChBUFZf QkxPQ0tfVyAqIEFQVl9CTE9DS19IKQorCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2Fy Y2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI3NlY3Rpb24tNS4zLjE3Cit0eXBlZGVmIHN0 cnVjdCBBUFZCeXRlQWxpZ25lbW50IHsKKyAgICB1aW50OF90IGFsaWdubWVudF9iaXRfZXF1YWxf dG9femVybzsgLyogZXF1YWwgdG8gMCovIC8vIGYoMSkKK30gQVBWQnl0ZUFsaWduZW1udDsKKwor Ly8gVGhlIHN0dXJjdHVyZSByZWZsZWN0cyBUaWxlIEhlYWRlciBsYXlvdXQKKy8vIEBzZWUgaHR0 cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlv bi01LjMuMTMKKworLy8gVGhlIGZvbGxvd2luZyBkZXNjcmlwdG9ycyBzcGVjaWZ5IHRoZSBwYXJz aW5nIHByb2Nlc3Mgb2YgZWFjaCBlbGVtZW50CisvLyB1KG4pIC0gdW5zaWduZWQgaW50ZWdlciB1 c2luZyBuIGJpdHMKKy8vIHVlKHYpIC0gdW5zaWduZWQgaW50ZWdlciAwLXRoIG9yZGVyIEV4cF9H b2xvbWItY29kZWQgc3ludGF4IGVsZW1lbnQgd2l0aCB0aGUgbGVmdCBiaXQgZmlyc3QKK3R5cGVk ZWYgc3RydWN0IEFQVlRpbGVIZWFkZXIgeworICAgIHVpbnQxNl90IHRpbGVfaGVhZGVyX3NpemU7 ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDE2KQorICAgIHVpbnQxNl90IHRpbGVfaW5k ZXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDE2KQorCisgICAgdWludDMy X3QgdGlsZV9kYXRhX3NpemVbQVBWX0NPTE9SX0NPTVBfTlVNXTsgICAgICAgIC8vIHUoMzIpCisK KworICAgIHVpbnQ4X3QgdGlsZV9xcFtBUFZfQ09MT1JfQ09NUF9OVU1dOyAgICAgICAgICAgICAg ICAvLyB1KDgpCisgICAgdWludDhfdCByZXNlcnZlZF96ZXJvXzhiaXRzOyAgICAgICAgICAgICAg ICAgICAgICAgIC8vIHUoOCkKKyAgICAKKyAgICBBUFZCeXRlQWxpZ25lbW50IGJ5dGVfYWxpZ25l bnQ7CisKK30gQVBWVGlsZUhlYWRlcjsKKworLy8gVGhlIHN0dXJjdHVyZSByZWZsZWN0cyBUaWxl IEluZm8gc3R1cmN0dXJlIGxheW91dAorLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNo aXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNzZWN0aW9uLTUuMy44CisvLworLy8gVGhlIGZv bGxvd2luZyBkZXNjcmlwdG9ycyBzcGVjaWZ5IHRoZSBwYXJzaW5nIHByb2Nlc3Mgb2YgZWFjaCBl bGVtZW50CisvLyB1KG4pIC0gdW5zaWduZWQgaW50ZWdlciB1c2luZyBuIGJpdHMKKy8vIHVlKHYp IC0gdW5zaWduZWQgaW50ZWdlciAwLXRoIG9yZGVyIEV4cF9Hb2xvbWItY29kZWQgc3ludGF4IGVs ZW1lbnQgd2l0aCB0aGUgbGVmdCBiaXQgZmlyc3QKK3R5cGVkZWYgc3RydWN0IEFQVlRpbGVJbmZv IHsKKyAgICB1aW50MzJfdCB0aWxlX3dpZHRoX2luX21iczsgICAgICAgICAgICAgICAgICAgICAv LyB1KDIwKQorICAgIHVpbnQzMl90IHRpbGVfaGVpZ2h0X2luX21iczsgICAgICAgICAgICAgICAg ICAgIC8vIHUoMjApCisgICAgdWludDhfdCAgdGlsZV9zaXplX3ByZXNlbnRfaW5fZmhfZmxhZzsg ICAgICAgICAgLy8gdSgxKQorICAgIHVpbnQzMl90ICp0aWxlX3NpemVfaW5fZmg7ICAgICAgICAg ICAgICAgICAgICAgIC8vIHRhYmxlIG9mIHNpemUgTnVtVGlsZXM7IGVsZW1lbnRzIG9mIHUoMzIp IHR5cGUKKworICAgIHVpbnQzMl90ICpDb2xTdGFydHM7IC8vIHRhYmxlIG9mIHNpemUgRnJhbWVX aWR0aEluTWJzWQorICAgIHVpbnQzMl90ICpSb3dTdGFydHM7IC8vIHRhYmxlIG9mIHNpemUgRnJh bWVIZWlnaHRJbk1ic1kKKyAgICB1aW50MzJfdCBUaWxlQ29sczsKKyAgICB1aW50MzJfdCBUaWxl Um93czsKKyAgICB1aW50MzJfdCBOdW1UaWxlczsKKworfSBBUFZUaWxlSW5mbzsKKworLy8gQHNl ZSBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNu YW1lLXF1YW50aXphdGlvbi1tYXRyaXgKK3R5cGVkZWYgc3RydWN0IEFQVlF1YW50aXphdGlvbk1h dHJpeCB7CisgICAgdWludDhfdCBxX21hdHJpeFszXVs4XVs4XTsKK30gQVBWUXVhbnRpemF0aW9u TWF0cml4OworCisvLyBAc2VlICBodHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0 LWxpbS1hcHYtMDQuaHRtbCNuYW1lLWZyYW1lLWluZm9ybWF0aW9uCisvLyA1LjMuNi4gRnJhbWUg aW5mb3JtYXRpb24KK3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lSW5mbyB7CisgICAgdWludDhfdCBw cm9maWxlX2lkYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKyAgICB1aW50 OF90IGxldmVsX2lkYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdSg4KQorICAg IHVpbnQ4X3QgYmFuZF9pZGM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDMp CisgICAgdWludDhfdCByZXNlcnZlZF96ZXJvXzViaXRzOyAgICAgICAgICAgICAgICAgICAgIC8v IHUoNSkKKyAgICB1aW50MzJfdCBmcmFtZV93aWR0aDsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLy8gdSgyNCkKKyAgICB1aW50MzJfdCBmcmFtZV9oZWlnaHQ7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gdSgyNCkKKyAgICB1aW50OF90IGNocm9tYV9mb3JtYXRfaWRjOyAgICAgICAg ICAgICAgICAgICAgICAgLy8gdSg0KQorICAgIHVpbnQ4X3QgYml0X2RlcHRoX21pbnVzODsgICAg ICAgICAgICAgICAgICAgICAgICAvLyB1KDQpCisgICAgdWludDhfdCBjYXB0dXJlX3RpbWVfZGlz dGFuY2U7ICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKyAgICB1aW50MTZfdCByZXNlcnZlZF96 ZXJvXzhiaXRzOyAgICAgICAgICAgICAgICAgICAgLy8gdSg4KQorfSBBUFZGcmFtZUluZm87CisK K3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lRGF0YUhlYWRlciB7CisgICAgCisgICAgc3RydWN0IEFQ VkZyYW1lSW5mbyBmcmFtZV9pbmZvOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRfemVyb184Yml0czsg ICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIHVpbnQ4X3QgY29sb3JfZGVzY3JpcHRp b25fcHJlc2VudF9mbGFnOyAgICAgICAgIC8vIHUoMSkKKyAgICB1aW50OF90IGNvbG9yX3ByaW1h cmllczsgICAgICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCisgICAgdWludDhfdCB0cmFuc2Zl cl9jaGFyYWN0ZXJpc3RpY3M7ICAgICAgICAgICAgICAgLy8gdSg4KQorICAgIHVpbnQ4X3QgbWF0 cml4X2NvZWZmaWNpZW50czsgICAgICAgICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIHVpbnQ4 X3QgdXNlX3FfbWF0cml4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHUoMSkKKworICAg IEFQVlF1YW50aXphdGlvbk1hdHJpeCBxdWFudGl6YXRpb25fbWF0cml4OworICAgIEFQVlRpbGVJ bmZvIHRpbGVfaW5mbzsKKworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRfemVyb184Yml0c18yOyAgICAg ICAgICAgICAgICAgIC8vIHUoOCkKKworICAgIEFQVkJ5dGVBbGlnbmVtbnQgYnl0ZV9hbGlnbmVu dDsKKworfSBBUFZGcmFtZURhdGFIZWFkZXI7CisKKy8vIEBzZWUgaHR0cHM6Ly93d3cuaWV0Zi5v cmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjc2VjdGlvbi01LjMuMwordHlwZWRl ZiBzdHJ1Y3QgQVBWUEJVSGVhZGVyIHsKKyAgICB1aW50OF90IHBidV90eXBlOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCisgICAgdWludDhfdCBncm91cF9pZDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdSgxNikKKyAgICB1aW50OF90IHJlc2VydmVkX3pl cl84Yml0czsgICAgICAgICAgICAgICAgICAgICAvLyB1KDgpCit9IEFQVlBCVUhlYWRlcjsKKwor dHlwZWRlZiBzdHJ1Y3QgQVBWVGlsZURhdGEgeworICAgIHVpbnQzMl90IFByZXZEYzsKKyAgICB1 aW50MzJfdCBQcmV2RGNEaWZmOworICAgIHVpbnQzMl90IG51bU1iQ29sc0luVGlsZTsKKyAgICB1 aW50MzJfdCBudW1NYlJvd3NJblRpbGU7CisgICAgdWludDMyX3QgbnVtTWJzSW5UaWxlOworICAg IHVpbnQzMl90IFByZXYxc3RBY0xldmVsOworCisgICAgQVBWQnl0ZUFsaWduZW1udCBieXRlX2Fs aWduZW50OworfSBBUFZUaWxlRGF0YTsKKwordHlwZWRlZiBzdHJ1Y3QgQVBWVGlsZSB7CisgICAg QVBWVGlsZUhlYWRlciB0aWxlX2hlYWRlcjsKKyAgICBBUFZUaWxlRGF0YSB0aWxlX2RhdGFbM107 Cit9IEFQVlRpbGU7CisKK3R5cGVkZWYgc3RydWN0IEFQVkZyYW1lRGF0YSB7CisgICAgQVBWRnJh bWVEYXRhSGVhZGVyIGZyYW1lX2RhdGFfaGVhZGVyOworICAgIEFQVlRpbGUgKip0aWxlczsgLy8g dGFibGUgb2YgcG9pbnRlcnMgdG8gZWxlbWVudHMgb2YgdHlwZSBBUFZUaWxlOyB0aGUgc2l6ZSBv ZiB0YWJsZSBpcyBOdW1UaWxlcworfSBBUFZGcmFtZURhdGE7CisKK3R5cGVkZWYgc3RydWN0IEFQ VlBhcmFtU2V0cyB7CisgICAgQVBWRnJhbWVEYXRhIGZyYW1lX2RhdGE7Cit9IEFQVlBhcmFtU2V0 czsKKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0 Lmh0bWwjbmFtZS1wcmltaXRpdmUtYml0c3RyZWFtLXVuaXQtaGUKK2ludCBmZl9hcHZfcGFyc2Vf cGJ1X2hlYWRlcihHZXRCaXRDb250ZXh0ICpnYiwgQVBWUEJVSGVhZGVyICpmZGgpOworCisvLyBo dHRwczovL3d3dy5pZXRmLm9yZy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1l LWZyYW1lLWhlYWRlcgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9oZWFkZXIoR2V0Qml0Q29udGV4 dCAqZ2IsIEFQVkZyYW1lRGF0YUhlYWRlciAqZmRoKTsKKworLy8gaHR0cHM6Ly93d3cuaWV0Zi5v cmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1mcmFtZS1pbmZvcm1hdGlv bgoraW50IGZmX2Fwdl9wYXJzZV9mcmFtZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBBUFZGcmFt ZUluZm8gKmZyYW1lX2luZm8pOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtZnJhbWUtaW5mb3JtYXRpb24KK2ludCBm Zl9hcHZfdGlsZV9pbmZvKEdldEJpdENvbnRleHQgKmdiLCBjb25zdCBBUFZGcmFtZURhdGFIZWFk ZXIgKmZkaCwgQVBWVGlsZUluZm8gKnRpKTsKKworLy8gQHNlZSBodHRwczovL3d3dy5pZXRmLm9y Zy9hcmNoaXZlL2lkL2RyYWZ0LWxpbS1hcHYtMDQuaHRtbCNuYW1lLXRpbGUKK2ludCBmZl9hcHZf cGFyc2VfdGlsZShHZXRCaXRDb250ZXh0ICpnYiwgY29uc3QgQVBWRnJhbWVEYXRhSGVhZGVyICpm ZGgsIEFQVlRpbGUgKnRpbGUsIHVpbnQ4X3QgdGlsZUlkeCk7CisKKy8vIEBzZWUgaHR0cHM6Ly93 d3cuaWV0Zi5vcmcvYXJjaGl2ZS9pZC9kcmFmdC1saW0tYXB2LTA0Lmh0bWwjbmFtZS1ieXRlLWFs aWdubWVudAoraW50IGZmX2Fwdl9ieXRlX2FsaWdubWVudChHZXRCaXRDb250ZXh0ICpnYiwgQVBW Qnl0ZUFsaWduZW1udCAqYmEpOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hp dmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtcXVhbnRpemF0aW9uLW1hdHJpeAoraW50 IGZmX2Fwdl9xdWFudGl6YXRpb25fbWF0cml4KEdldEJpdENvbnRleHQgKmdiLCBpbnQgbnVtX2Nv bXAsIEFQVlF1YW50aXphdGlvbk1hdHJpeCAqcW0pOworCisvLyBAc2VlIGh0dHBzOi8vd3d3Lmll dGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGltLWFwdi0wNC5odG1sI25hbWUtbWV0YWRhdGEKK2lu dCBmZl9hcHZfcGFyc2VfbWV0YWRhdGEoR2V0Qml0Q29udGV4dCAqZ2IsIEFQVkZyYW1lRGF0YSAq ZmQpOworCisvLyBAc2VlIGh0dHBzOi8vd3d3LmlldGYub3JnL2FyY2hpdmUvaWQvZHJhZnQtbGlt LWFwdi0wNC5odG1sI25hbWUtZmlsbGVyCitpbnQgZmZfYXB2X3BhcnNlX2ZpbGxlcl9kYXRhKEdl dEJpdENvbnRleHQgKmdiLCBBUFZGcmFtZURhdGEgKmZkKTsKKwordm9pZCBmZl9hcHZfcHNfZnJl ZShBUFZQYXJhbVNldHMgKnBzKTsKKworI2VuZGlmIC8qIEFWQ09ERUNfQVBWX1BTX0ggKi8KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvcGFyc2Vycy5jIGIvbGliYXZjb2RlYy9wYXJzZXJzLmMKaW5k ZXggNTM4NzM1MWZkMC4uMjExNjRmMzc1MSAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9wYXJzZXJz LmMKKysrIGIvbGliYXZjb2RlYy9wYXJzZXJzLmMKQEAgLTI1LDYgKzI1LDcgQEAgZXh0ZXJuIGNv bnN0IEFWQ29kZWNQYXJzZXIgZmZfYWFjX2xhdG1fcGFyc2VyOwogZXh0ZXJuIGNvbnN0IEFWQ29k ZWNQYXJzZXIgZmZfYWMzX3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2Fk eF9wYXJzZXI7CiBleHRlcm4gY29uc3QgQVZDb2RlY1BhcnNlciBmZl9hbXJfcGFyc2VyOworZXh0 ZXJuIGNvbnN0IEFWQ29kZWNQYXJzZXIgZmZfYXB2X3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNv ZGVjUGFyc2VyIGZmX2F2MV9wYXJzZXI7CiBleHRlcm4gY29uc3QgQVZDb2RlY1BhcnNlciBmZl9h dnMyX3BhcnNlcjsKIGV4dGVybiBjb25zdCBBVkNvZGVjUGFyc2VyIGZmX2F2czNfcGFyc2VyOwot LSAKMi4zNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==