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 EBCE7453B5 for ; Mon, 27 Feb 2023 17:33:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 02DAE689DEE; Mon, 27 Feb 2023 19:33:52 +0200 (EET) Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 67DFB6809C7 for ; Mon, 27 Feb 2023 19:33:46 +0200 (EET) Received: by mail-qt1-f171.google.com with SMTP id r5so7520253qtp.4 for ; Mon, 27 Feb 2023 09:33:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=j7h71zIwYzaw9MiwPYlQEVgPVHvY9qX8pHLfnkeRFyU=; b=J085HUphaSLxLMJsGsVSVaxQgWmpshTK9EBVz63CINIttwY+oEfSZ61G2MRzEnqDqk Gd6f7AXe7c8UATX9tfQhDzt9R5dGXojWY87HFxk0ph61okhLANeocVry34ka7hgaGHll J+lNgte/6StifM0mbn3ZLtUMf6gHFl8TKUGEQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=j7h71zIwYzaw9MiwPYlQEVgPVHvY9qX8pHLfnkeRFyU=; b=uAKh30Xem8zIk90Z7m7Dtqa8ZbIz8Au0xQedHGek8MwenGOALomkffddXaWg+Ws2FI xJyFq48JyJ0XYE1eJt48SmD5Ip5PpsWC5nAOwryZDwblwzBAoHITX5bZcpgsjeU0p9Yy 52NSt9jkR021V8sI96LFJwFVbbHNbNzZ4y6vLGI2yARYGUDsCKPOP6TqSbz04vTtllW/ Yd722r0UEXkcxnOwQSAqG05ejTgdc4raEjo5r0fPLMrPm2kggjaos82CGO3qiesYKMqP 6kme+NPfDS4jRLX6s8q1hsPJ6WrYKOsb5e6XBQTzP5xDYyCuf9+Ccjc57lk6ZlMZgNdo OX0Q== X-Gm-Message-State: AO0yUKVJQAGfNhD2UQIgCuy5LQfx1ruKYm+bGY6MD7kIuK8iqneFrZwi Kj+qEVQ7v3KY4DKa9YEhpWz+4m93+S/we6Mljpc= X-Google-Smtp-Source: AK7set9bKwye4f3L/e2vCwXVOkXtAeFWNmhYr/2vxXs2p79noPUt8tjRZRS1vtOVa6FJCSwhreI+oA== X-Received: by 2002:ac8:5f10:0:b0:3bf:da89:1946 with SMTP id x16-20020ac85f10000000b003bfda891946mr244724qta.1.1677519223904; Mon, 27 Feb 2023 09:33:43 -0800 (PST) Received: from ?IPV6:2600:4041:6c:7000:1f01:20c:8ba9:815b? ([2600:4041:6c:7000:1f01:20c:8ba9:815b]) by smtp.gmail.com with ESMTPSA id j3-20020a378703000000b00742bc037f29sm1195231qkd.120.2023.02.27.09.33.43 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Feb 2023 09:33:43 -0800 (PST) Message-ID: <9078bd19-6b49-3cad-adb1-9f7a67a3e598@vimeo.com> Date: Mon, 27 Feb 2023 12:33:42 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 From: =?UTF-8?Q?Rapha=c3=abl_Zumer?= To: ffmpeg-devel@ffmpeg.org Content-Language: en-US, fr-FR Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/avutil: move dynamic HDR metadata parsing to libavutil X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: UmVzZW5kaW5nIHRoaXMgcGF0Y2ggc2V0IGR1ZSB0byBteSBtYWlsIGNsaWVudCBtZXNzaW5nIHdp dGggdGhlIGxpbmUgd3JhcHBpbmcgaW4gdGhlIG1lc3NhZ2VzIEkgc2VudCBlYXJsaWVyIHRvZGF5 LgoKQmVsb3cgaXMgYSBjb3B5IG9mIHRoZSBpbml0aWFsIGV4cGxhbmF0aW9uLgoKVGhpcyBwYXRj aCBzZXQgaW1wbGVtZW50cyBzZXJpYWxpemF0aW9uIGZvciBIRFIxMCsgZHluYW1pYyBtZXRhZGF0 YSAKKEFWRHluYW1pY0hEUlBsdXMpLCB3aGljaCBpcyB0aGUgaW52ZXJzZSBvcGVyYXRpb24gb2Yg dGhlIGV4aXN0aW5nIApmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKCkg ZnVuY3Rpb24uIEl0IGFsc28gbW92ZXMgYm90aCAKZnVuY3Rpb25zIGZyb20gbGliYXZjb2RlYyB0 byBsaWJhdnV0aWwgYW5kIG1ha2VzIHRoZW0gcHVibGljLiBGb3IgCmNvbnNpc3RlbmN5LCB0aGUg ZXF1aXZhbGVudCB2aXZpZCBIRFIgcGFyc2luZyBmdW5jdGlvbiBpcyBhbHNvIG1pZ3JhdGVkLCAK YnV0IEkgZGlkIG5vdCBpbXBsZW1lbnQgc2VyaWFsaXphdGlvbiBmb3IgaXQuIEZpbmFsbHksIHRo ZSBwYXRjaCByZW5hbWVzIAp0aG9zZSBmdW5jdGlvbnMgdG8gYXZfZHluYW1pY19oZHJfcGx1c19m cm9tX3QzNSgpIChmb3IgcGFyc2luZykgYW5kIAphdl9keW5hbWljX2hkcl9wbHVzX3RvX3QzNSAo Zm9yIHNlcmlhbGl6YXRpb24pLCB3aXRoIHRoZSBlcXVpdmFsZW50IApjaGFuZ2UgYmVpbmcgbWFk ZSBmb3Igdml2aWQgYXMgd2VsbC4KClRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSBpcyB0 byBhbGxvdyB1c2VycyB0byBlYXNpbHkgY29udmVydCAKSERSMTArIHNpZGUgZGF0YSAod2hpY2gg aXMgcGFyc2VkIGludG8gQVZEeW5hbWljSERSUGx1cykgdG8gYSBzdGFuZGFyZCAKSVRVLVQgVC4z NSBwYXlsb2FkIHRoYXQgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byBhcHBsaWNhdGlvbnMgdGhh dCAKZXhwZWN0IEhEUjEwKyBkeW5hbWljIG1ldGFkYXRhIGluIHRoYXQgZm9ybWF0IChlLmcuIHgy NjUgYW5kIHJhdjFlIAplbmNvZGVycykuCgpUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBzZXJpYWxp emF0aW9uIGZ1bmN0aW9uIGlzIEFWQnVmZmVyUmVmKiwgd2hpY2ggSSAKZXhwZWN0IHRvIGJlIGNv bnRlbnRpb3VzLiBQYXlsb2FkIHNpemUgaXMgbm90IGVtYmVkZGVkIGluIHRoZSBULjM1IGRhdGEs IApzbyBpdCBtdXN0IGJlIGNhbGN1bGF0ZWQsIHVzZWQgdG8gYWxsb2NhdGUgYSBidWZmZXIsIGFu ZCByZXR1cm5lZCBhbG9uZyAKd2l0aCB0aGF0IGJ1ZmZlciB0byB0aGUgdXNlci4gQXMgZmFyIGFz IEknbSBhd2FyZSwgQVZCdWZmZXJSZWYgaXMgdGhlIApzaW1wbGVzdCB3YXkgdG8gZG8gdGhhdCwg YnV0IEkgd2lsbCBiZSBoYXBweSB0byBjb25zaWRlciBhbHRlcm5hdGl2ZSAKc29sdXRpb25zLgoK UGxlYXNlIGxldCBtZSBrbm93IGlmIGl0IGlzIHByZWZlcnJlZCB0byBidW1wIGxpYmF2dXRpbCB3 aXRoIHRoZSBmaXJzdCAKY29tbWl0LCBvciB3aXRoIGJvdGggb2YgdGhlbSwgY29uc2lkZXJpbmcg dGhlcmUgYXJlIHB1YmxpYyBBUEkgY2hhbmdlcyAKYXNzb2NpYXRlZCB3aXRoIGVhY2ggb25lLgoK UmFwaGHDq2wgWnVtZXIKClNpZ25lZC1vZmYtYnk6IFJhcGhhw6tsIFp1bWVyIDxyenVtZXJAdGVi YWtvLm5ldD4KLS0tCiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAg MyArLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyAgICAgICAgfCAxOTggLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCAgICAg ICAgfCAgMzUgLS0tLS0KIGxpYmF2Y29kZWMvZHluYW1pY19oZHJfdml2aWQuYyAgICAgICAgIHwg MTM5IC0tLS0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmggICAg ICAgICB8ICAzNSAtLS0tLQogbGliYXZjb2RlYy9oMjY0NV9zZWkuYyAgICAgICAgICAgICAgICAg fCAgMTIgKy0KIGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jICAgICAgIHwgMTgwICsr KysrKysrKysrKysrKysrKysrKysKIGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oICAg ICAgIHwgIDExICsrCiBsaWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuYyB8IDEy MCArKysrKysrKysrKysrKysKIGxpYmF2dXRpbC9oZHJfZHluYW1pY192aXZpZF9tZXRhZGF0YS5o IHwgIDExICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMjkgaW5zZXJ0aW9ucygrKSwgNDE1IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVz LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCiBk ZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcl92aXZpZC5jCiBkZWxldGUg bW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcl92aXZpZC5oCgpkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKaW5kZXggMzg5MjUzZjVk MC4uNGJkZmNiYWIxMiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQorKysgYi9saWJh dmNvZGVjL01ha2VmaWxlCkBAIC0xMDMsOCArMTAzLDcgQEAgT0JKUy0kKENPTkZJR19IMjY0UVBF TCkgICAgICAgICAgICAgICAgKz0gaDI2NHFwZWwubwogT0JKUy0kKENPTkZJR19IMjY0X1NFSSkg ICAgICAgICAgICAgICAgKz0gaDI2NF9zZWkubyBoMjY0NV9zZWkubwogT0JKUy0kKENPTkZJR19I RVZDUEFSU0UpICAgICAgICAgICAgICAgKz0gaGV2Y19wYXJzZS5vIGhldmNfcHMubyBoZXZjX2Rh dGEubyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMjY0NWRh dGEubyBoMjY0NV9wYXJzZS5vIGgyNjQ1X3Z1aS5vCi1PQkpTLSQoQ09ORklHX0hFVkNfU0VJKSAg ICAgICAgICAgICAgICArPSBoZXZjX3NlaS5vIGgyNjQ1X3NlaS5vIFwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfaGRyMTBfcGx1cy5vIGR5bmFtaWNf aGRyX3ZpdmlkLm8KK09CSlMtJChDT05GSUdfSEVWQ19TRUkpICAgICAgICAgICAgICAgICs9IGhl dmNfc2VpLm8gaDI2NDVfc2VpLm8KIE9CSlMtJChDT05GSUdfSFBFTERTUCkgICAgICAgICAgICAg ICAgICs9IGhwZWxkc3AubwogT0JKUy0kKENPTkZJR19IVUZGTUFOKSAgICAgICAgICAgICAgICAg Kz0gaHVmZm1hbi5vCiBPQkpTLSQoQ09ORklHX0hVRkZZVVZEU1ApICAgICAgICAgICAgICArPSBo dWZmeXV2ZHNwLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMg Yi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzNGE0NGFhYzY1Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19o ZHIxMF9wbHVzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAq IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVz LmgiCi0jaW5jbHVkZSAiZ2V0X2JpdHMuaCIKLQotc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5h bmNlX2RlbiA9IDE7Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4gPSAx NTsKLXN0YXRpYyBjb25zdCBpbnQ2NF90IHJnYl9kZW4gPSAxMDAwMDA7Ci1zdGF0aWMgY29uc3Qg aW50MzJfdCBmcmFjdGlvbl9waXhlbF9kZW4gPSAxMDAwOwotc3RhdGljIGNvbnN0IGludDMyX3Qg a25lZV9wb2ludF9kZW4gPSA0MDk1Owotc3RhdGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hv cl9kZW4gPSAxMDIzOwotc3RhdGljIGNvbnN0IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVu ID0gODsKLQotaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZE eW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQotewotICAgIEdldEJpdENvbnRl eHQgZ2JjLCAqZ2IgPSAmZ2JjOwotICAgIGludCByZXQ7Ci0KLSAgICBpZiAoIXMpCi0gICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0KLSAgICByZXQgPSBpbml0X2dldF9iaXRzOChnYiwg ZGF0YSwgc2l6ZSk7Ci0gICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Ci0KLSAgICBzLT5hcHBsaWNhdGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgp OwotICAgIHMtPm51bV93aW5kb3dzID0gZ2V0X2JpdHMoZ2IsIDIpOwotCi0gICAgaWYgKHMtPm51 bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2luZG93cyA+IDMpIHsKLSAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Ci0gICAgfQotCi0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg KCgxOSAqIDggKyAxKSAqIChzLT5udW1fd2luZG93cyAtIDEpKSkKLSAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Ci0KLSAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5k b3dzOyB3KyspIHsKLSAgICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBj b29yZGluYXRlcyBoZXJlLiBUaGV5IHNob3VsZCBiZQotICAgICAgICAvLyBjb252ZXJ0ZWQgdG8g dGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgotICAg ICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3 XTsKLSAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeCA9Ci0gICAgICAg ICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+ d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kgPQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAxNiksIDF9OwotICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9j b3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07 Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl95ID0KLSAgICAgICAg ICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKLQotICAgICAgICBwYXJhbXMt PmNlbnRlcl9vZl9lbGxpcHNlX3ggPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMt PmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMt PnJvdGF0aW9uX2FuZ2xlID0gZ2V0X2JpdHMoZ2IsIDgpOwotICAgICAgICBwYXJhbXMtPnNlbWlt YWpvcl9heGlzX2ludGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBw YXJhbXMtPnNlbWltYWpvcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYp OwotICAgICAgICBwYXJhbXMtPnNlbWltaW5vcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRf Yml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPm92ZXJsYXBfcHJvY2Vzc19vcHRpb24gPSBn ZXRfYml0czEoZ2IpOwotICAgIH0KLQotICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQot ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgIHMtPnRhcmdldGVkX3N5 c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5hbmNlID0KLSAgICAgICAgKEFWUmF0aW9uYWwpe2dl dF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Ci0gICAgcy0+dGFyZ2V0ZWRfc3lz dGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwot Ci0gICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnKSB7Ci0gICAgICAgIGludCByb3dzLCBjb2xzOwotICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAxMCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwot ICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBjb2xzID0gZ2V0X2JpdHMo Z2IsIDUpOwotICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29s cyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Ci0gICAgICAgIH0KLSAgICAgICAgcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVt X2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKLSAgICAgICAgcy0+bnVtX2Nv bHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsK LQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKLSAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8 IGNvbHM7IGorKykgewotICAgICAgICAgICAgICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAg ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2lu ZG93czsgdysrKSB7Ci0gICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJh bXMgPSAmcy0+cGFyYW1zW3ddOwotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAq IDE3ICsgMTcgKyA0KSkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwot Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgICAgICBwYXJh bXMtPm1heHNjbFtpXSA9Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCAxNyksIHJnYl9kZW59OwotICAgICAgICB9Ci0gICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhy Z2IgPQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59 OwotICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0g Z2V0X2JpdHMoZ2IsIDQpOwotCi0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8Ci0gICAg ICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyAqIDI0 KSkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50 aWxlczsgaSsrKSB7Ci0gICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0u cGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3KTsKLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJp YnV0aW9uX21heHJnYltpXS5wZXJjZW50aWxlID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAxMCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwotCi0gICAgICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBmcmFjdGlvbl9waXhlbF9kZW59OwotICAgIH0KLSAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKLSAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2Vf ZmxhZyA9IGdldF9iaXRzMShnYik7Ci0gICAgaWYgKHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Ci0gICAgICAgIGludCByb3dzLCBjb2xzOwotICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwotICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBj b2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3Mg PiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewotICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgIH0KLSAgICAgICAgcy0+bnVtX3Jvd3Nf bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKLSAgICAgICAg cy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29s czsKLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkK LSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsg aiA8IGNvbHM7IGorKykgewotICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2Fj dHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAgICB9 Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5k b3dzOyB3KyspIHsKLSAgICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFt cyA9ICZzLT5wYXJhbXNbd107Ci0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCi0g ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgICAgICBwYXJhbXMt PnRvbmVfbWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKLSAgICAgICAgaWYgKHBhcmFtcy0+ dG9uZV9tYXBwaW5nX2ZsYWcpIHsKLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IDI4KQotICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAg ICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKLSAgICAgICAgICAgIHBhcmFt cy0+a25lZV9wb2ludF95ID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDEyKSwga25lZV9wb2ludF9kZW59OwotICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVy X2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Ci0KLSAgICAgICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IChwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyAqIDEwKSkK LSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgICAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsg aSsrKSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9 Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiZXpp ZXJfYW5jaG9yX2Rlbn07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAxKQotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7Ci0gICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcgPSBn ZXRfYml0czEoZ2IpOwotICAgICAgICBpZiAocGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBp bmdfZmxhZykgewotICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKLSAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgIHBhcmFt cy0+Y29sb3Jfc2F0dXJhdGlvbl93ZWlnaHQgPQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFs KXtnZXRfYml0cyhnYiwgNiksIHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Ci0gICAgICAgIH0KLSAg ICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19o ZHIxMF9wbHVzLmggYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBjZDdhY2YwNDMyLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29k ZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0v KgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot ICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19E WU5BTUlDX0hEUjEwX1BMVVNfSAotI2RlZmluZSBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19I Ci0KLSNpbmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKLQotLyoqCi0g KiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAo QVZEeW5hbWljSERSUGx1cykuCi0gKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmluZyB0aGUg ZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KLSAqIEBwYXJhbSBkYXRhIFRoZSBi eXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEuCi0gKiBAcGFyYW0g c2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVzLgotICoKLSAqIEByZXR1cm4gMCBp ZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCi0g Ki8KLWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1p Y0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7Ci0KLSNlbmRpZiAvKiBBVkNPREVDX0RZ TkFNSUNfSERSMTBfUExVU19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRy X3ZpdmlkLmMgYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyX3ZpdmlkLmMKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGQ2ODk2NjlkZWMuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9k eW5hbWljX2hkcl92aXZpZC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0g KiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCi0gKgotICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSAqCi0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM aWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgImR5bmFtaWNfaGRy X3ZpdmlkLmgiCi0jaW5jbHVkZSAiZ2V0X2JpdHMuaCIKLQotc3RhdGljIGNvbnN0IGludDMyX3Qg bWF4cmdiX2RlbiA9IDQwOTU7Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBjb2xvcl9zYXR1cmF0aW9u X2dhaW5fZGVuID0gMTI4Owotc3RhdGljIGNvbnN0IGludDMyX3QgbWF4aW11bV9sdW1pbmFuY2Vf ZGVuID0gNDA5NTsKLXN0YXRpYyBjb25zdCBpbnQzMl90IGJhc2VfcGFyYW1fbV9wX2RlbiA9IDE2 MzgzOwotc3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJhbV9tX21fZGVuID0gMTA7Ci1zdGF0 aWMgY29uc3QgaW50MzJfdCBiYXNlX3BhcmFtX21fYV9kZW4gPSAxMDIzOwotc3RhdGljIGNvbnN0 IGludDMyX3QgYmFzZV9wYXJhbV9tX2JfZGVuID0gMTAyMzsKLXN0YXRpYyBjb25zdCBpbnQzMl90 IGJhc2VfcGFyYW1fbV9uX2RlbiA9IDEwOwotc3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJh bV9EZWx0YV9kZW4gPSAxMjc7Ci0KLWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19o ZHJfdml2aWQoQVZEeW5hbWljSERSVml2aWQgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKLXsKLSAg ICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdiYzsKLSAgICBpbnQgcmV0OwotCi0gICAgaWYg KCFzKQotICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotCi0gICAgcmV0ID0gaW5pdF9n ZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwotICAgIGlmIChyZXQgPCAwKQotICAgICAgICByZXR1 cm4gcmV0OwotCi0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgOCkKLSAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0KLSAgICBzLT5zeXN0ZW1fc3RhcnRfY29kZSA9IGdldF9i aXRzKGdiLCA4KTsKLSAgICBpZiAocy0+c3lzdGVtX3N0YXJ0X2NvZGUgPT0gMHgwMSkgewotICAg ICAgICBzLT5udW1fd2luZG93cyA9IDE7Ci0KLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgMTIgKiA0ICogcy0+bnVtX3dpbmRvd3MpCi0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKLSAgICAgICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsg dysrKSB7Ci0gICAgICAgICAgICBBVkhEUlZpdmlkQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFt cyA9ICZzLT5wYXJhbXNbd107Ci0KLSAgICAgICAgICAgIHBhcmFtcy0+bWluaW11bV9tYXhyZ2Ig ID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1heHJnYl9kZW59OwotICAgICAgICAg ICAgcGFyYW1zLT5hdmVyYWdlX21heHJnYiAgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEy KSwgbWF4cmdiX2Rlbn07Ci0gICAgICAgICAgICBwYXJhbXMtPnZhcmlhbmNlX21heHJnYiA9IChB VlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBtYXhyZ2JfZGVufTsKLSAgICAgICAgICAgIHBh cmFtcy0+bWF4aW11bV9tYXhyZ2IgID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1h eHJnYl9kZW59OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MiAqIHMtPm51bV93aW5kb3dzKQotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Ci0gICAgICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewot ICAgICAgICAgICAgQVZIRFJWaXZpZENvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+ cGFyYW1zW3ddOwotCi0gICAgICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19tb2RlX2ZsYWcg PSBnZXRfYml0cyhnYiwgMSk7Ci0gICAgICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdf bW9kZV9mbGFnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSAp Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAg ICAgICAgICAgIHBhcmFtcy0+dG9uZV9tYXBwaW5nX3BhcmFtX251bSA9IGdldF9iaXRzKGdiLCAx KSArIDE7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPnRvbmVf bWFwcGluZ19wYXJhbV9udW07IGkrKykgewotICAgICAgICAgICAgICAgICAgICBBVkhEUlZpdmlk Q29sb3JUb25lTWFwcGluZ1BhcmFtcyAqdG1fcGFyYW1zID0gJnBhcmFtcy0+dG1fcGFyYW1zW2ld OwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEzKQotICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAg ICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9s dW1pbmFuY2UgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgbWF4aW11bV9sdW1pbmFu Y2VfZGVufTsKLSAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX2VuYWJsZV9mbGFn ID0gZ2V0X2JpdHMoZ2IsIDEpOwotICAgICAgICAgICAgICAgICAgICBpZiAodG1fcGFyYW1zLT5i YXNlX2VuYWJsZV9mbGFnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAoMTQgKyA2ICsgMTAgKyAxMCArIDYgKyA4ICsgMTApKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICAgICAg ICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX21fcCA9IChBVlJhdGlvbmFsKXtnZXRf Yml0cyhnYiwgMTQpLCBiYXNlX3BhcmFtX21fcF9kZW59OwotICAgICAgICAgICAgICAgICAgICAg ICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX21fbSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg IDYpLCBiYXNlX3BhcmFtX21fbV9kZW59OwotICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFy YW1zLT5iYXNlX3BhcmFtX21fYSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiYXNl X3BhcmFtX21fYV9kZW59OwotICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNl X3BhcmFtX21fYiA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiYXNlX3BhcmFtX21f Yl9kZW59OwotICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX21f biA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgIDYpLCBiYXNlX3BhcmFtX21fbl9kZW59Owot ICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX2sxID0gZ2V0X2Jp dHMoZ2IsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFt X2syID0gZ2V0X2JpdHMoZ2IsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1z LT5iYXNlX3BhcmFtX2szID0gZ2V0X2JpdHMoZ2IsIDQpOwotICAgICAgICAgICAgICAgICAgICAg ICAgdG1fcGFyYW1zLT5iYXNlX3BhcmFtX0RlbHRhX2VuYWJsZV9tb2RlID0gZ2V0X2JpdHMoZ2Is IDMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9E ZWx0YV9lbmFibGVfbW9kZSA9PSAyIHx8IHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YV9lbmFi bGVfbW9kZSA9PSA2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFz ZV9wYXJhbV9EZWx0YSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNykgKiAtMSwgYmFzZV9w YXJhbV9EZWx0YV9kZW59OwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YSA9IChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgNyksIGJhc2VfcGFyYW1fRGVsdGFfZGVufTsKLQotICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICAg ICAgICAgICAgIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX2VuYWJsZV9mbGFnID0gZ2V0X2JpdHMo Z2IsIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtX3BhcmFtcy0+dGhyZWVfU3Bs aW5lX2VuYWJsZV9mbGFnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgMSArIHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX251bSAqICgyICsgMTIg KyAyOCArIDEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRo cmVlX1NwbGluZV9udW0gPSBnZXRfYml0cyhnYiwgMSkgKyAxOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfbnVt OyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJl ZV9TcGxpbmVfVEhfbW9kZSA9IGdldF9iaXRzKGdiLCAyKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX1RIX21vZGUgPT0gMCB8fCB0 bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9tb2RlID09IDIpIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDgpCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1Nw bGluZV9USF9lbmFibGVfTUIgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDgpLCAgMjU1fTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9lbmFibGUgPSAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDEyKSwgIDQwOTV9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9EZWx0YTEgPSAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDEwKSwgIDEwMjN9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9EZWx0YTIgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDEwKSwgIDEwMjN9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJh bXMtPnRocmVlX1NwbGluZV9lbmFibGVfU3RyZW5ndGggPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsICA4KSwgIDI1NX07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9w YXJhbXMtPnRocmVlX1NwbGluZV9udW0gICAgID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9tb2RlID0gMDsKLSAgICAgICAgICAgICAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbWFw cGluZ19mbGFnID0gZ2V0X2JpdHMoZ2IsIDEpOwotICAgICAgICAgICAgaWYgKHBhcmFtcy0+Y29s b3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ2V0X2Jp dHNfbGVmdChnYikgPCAzICsgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX251bSAqIDgpCi0gICAg ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgICAg ICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX251bSA9IGdldF9iaXRzKGdiLCAzKTsKLSAg ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlv bl9udW07IGkrKykgewotICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRp b25fZ2FpbltpXSA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgOCksIGNvbG9yX3NhdHVyYXRp b25fZ2Fpbl9kZW59OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg fQotICAgIH0KLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5h bWljX2hkcl92aXZpZC5oIGIvbGliYXZjb2RlYy9keW5hbWljX2hkcl92aXZpZC5oCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTIxYjNkMjYzLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2 Y29kZWMvZHluYW1pY19oZHJfdml2aWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK LS8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCi0gKgotICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy Ci0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Ci0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lmbmRlZiBBVkNPREVD X0RZTkFNSUNfSERSX1ZJVklEX0gKLSNkZWZpbmUgQVZDT0RFQ19EWU5BTUlDX0hEUl9WSVZJRF9I Ci0KLSNpbmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfdml2aWRfbWV0YWRhdGEuaCIKLQot LyoqCi0gKiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1 ZmZlciAoQVZEeW5hbWljSERSVml2aWQpLgotICogQHBhcmFtIHMgQSBwb2ludGVyIGNvbnRhaW5p bmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSVml2aWQgc3RydWN0dXJlLgotICogQHBhcmFtIGRh dGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1UIFQuMzUgZGF0YS4KLSAq IEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0ZXMuCi0gKgotICogQHJl dHVybiAwIGlmIHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZF UlJPUi4KLSAqLwotaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcl92aXZpZChB VkR5bmFtaWNIRFJWaXZpZCAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKLQotI2VuZGlmIC8qIEFW Q09ERUNfRFlOQU1JQ19IRFJfVklWSURfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0 NV9zZWkuYyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKaW5kZXggNmU0YTlhMWFmMi4uN2E5NmJj NjA1NiAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9oMjY0NV9zZWkuYworKysgYi9saWJhdmNvZGVj L2gyNjQ1X3NlaS5jCkBAIC0yNywxNCArMjcsMTQgQEAKIAogI2luY2x1ZGUgImxpYmF2dXRpbC9h bWJpZW50X3ZpZXdpbmdfZW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvZGlzcGxh eS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgorI2luY2x1 ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY192aXZpZF9tZXRhZGF0YS5oIgogI2luY2x1ZGUgImxp YmF2dXRpbC9maWxtX2dyYWluX3BhcmFtcy5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNj LmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL3N0ZXJlbzNkLmgiCiAKICNpbmNsdWRlICJhdHNjX2E1 My5oIgogI2luY2x1ZGUgImF2Y29kZWMuaCIKLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3BsdXMu aCIKLSNpbmNsdWRlICJkeW5hbWljX2hkcl92aXZpZC5oIgogI2luY2x1ZGUgImdldF9iaXRzLmgi CiAjaW5jbHVkZSAiZ29sb21iLmgiCiAjaW5jbHVkZSAiaDI2NDVfc2VpLmgiCkBAIC01Miw4ICs1 Miw4IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3JlZ2lzdGVyZWRfdXNlcl9kYXRhX2R5bmFtaWNfaGRy X3BsdXMoSEVWQ1NFSUR5bmFtaWNIRFJQbHVzICpzCiAgICAgaWYgKCFtZXRhZGF0YSkKICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKIAotICAgIGVyciA9IGZmX3BhcnNlX2l0dV90X3Qz NV90b19keW5hbWljX2hkcjEwX3BsdXMobWV0YWRhdGEsIGdiLT5idWZmZXIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRf Ynl0ZXNfbGVmdChnYikpOworICAgIGVyciA9IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUo bWV0YWRhdGEsIGdiLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikpOwogICAgIGlmIChlcnIgPCAwKSB7 CiAgICAgICAgIGF2X2ZyZWUobWV0YWRhdGEpOwogICAgICAgICByZXR1cm4gZXJyOwpAQCAtNzgs OCArNzgsOCBAQCBzdGF0aWMgaW50IGRlY29kZV9yZWdpc3RlcmVkX3VzZXJfZGF0YV9keW5hbWlj X2hkcl92aXZpZChIRVZDU0VJRHluYW1pY0hEUlZpdmlkCiAgICAgaWYgKCFtZXRhZGF0YSkKICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKIAotICAgIGVyciA9IGZmX3BhcnNlX2l0dV90 X3QzNV90b19keW5hbWljX2hkcl92aXZpZChtZXRhZGF0YSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ItPmJ1ZmZlciwgYnl0ZXN0cmVhbTJfZ2V0 X2J5dGVzX2xlZnQoZ2IpKTsKKyAgICBlcnIgPSBhdl9keW5hbWljX2hkcl92aXZpZF9mcm9tX3Qz NShtZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYi0+ YnVmZmVyLCBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikpOwogICAgIGlmIChlcnIgPCAw KSB7CiAgICAgICAgIGF2X2ZyZWUobWV0YWRhdGEpOwogICAgICAgICByZXR1cm4gZXJyOwpkaWZm IC0tZ2l0IGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMgYi9saWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuYwppbmRleCAwZmExZWU4MmRlLi45OGYzOTliMDMyIDEwMDY0NAot LS0gYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuYworKysgYi9saWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuYwpAQCAtMjAsNiArMjAsMTYgQEAKIAogI2luY2x1ZGUgImhkcl9k eW5hbWljX21ldGFkYXRhLmgiCiAjaW5jbHVkZSAibWVtLmgiCisjaW5jbHVkZSAibGliYXZjb2Rl Yy9nZXRfYml0cy5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvcHV0X2JpdHMuaCIKKworc3RhdGlj IGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7CitzdGF0aWMgY29uc3QgaW50MzJfdCBw ZWFrX2x1bWluYW5jZV9kZW4gPSAxNTsKK3N0YXRpYyBjb25zdCBpbnQ2NF90IHJnYl9kZW4gPSAx MDAwMDA7CitzdGF0aWMgY29uc3QgaW50MzJfdCBmcmFjdGlvbl9waXhlbF9kZW4gPSAxMDAwOwor c3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0MDk1Oworc3RhdGljIGNvbnN0 IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOworc3RhdGljIGNvbnN0IGludDMyX3Qg c2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsKIAogQVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1p Y19oZHJfcGx1c19hbGxvYyhzaXplX3QgKnNpemUpCiB7CkBAIC00NSwzICs1NSwxNzMgQEAgQVZE eW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFWRnJh bWUgKmZyYW1lKQogCiAgICAgcmV0dXJuIChBVkR5bmFtaWNIRFJQbHVzICopc2lkZV9kYXRhLT5k YXRhOwogfQorCitpbnQgYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShBVkR5bmFtaWNIRFJQ bHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHNpemUpCit7CisgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7Cisg ICAgaW50IHJldDsKKworICAgIGlmICghcykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKKworICAgIHJldCA9IGluaXRfZ2V0X2JpdHM4KGdiLCBkYXRhLCBzaXplKTsKKyAgICBpZiAo cmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEwKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIHMtPmFw cGxpY2F0aW9uX3ZlcnNpb24gPSBnZXRfYml0cyhnYiwgOCk7CisgICAgcy0+bnVtX3dpbmRvd3Mg PSBnZXRfYml0cyhnYiwgMik7CisKKyAgICBpZiAocy0+bnVtX3dpbmRvd3MgPCAxIHx8IHMtPm51 bV93aW5kb3dzID4gMykgeworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAg ICB9CisKKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoKDE5ICogOCArIDEpICogKHMtPm51 bV93aW5kb3dzIC0gMSkpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKwor ICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgeworICAgICAgICAv LyBUaGUgY29ybmVycyBhcmUgc2V0IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhlcmUuIFRoZXkg c2hvdWxkIGJlCisgICAgICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgcmVsYXRpdmUgY29vcmRpbmF0 ZXMgKGluIFswLCAxXSkgaW4gdGhlIGRlY29kZXIuCisgICAgICAgIEFWSERSUGx1c0NvbG9yVHJh bnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOworICAgICAgICBwYXJhbXMtPndp bmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94ID0KKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRf Yml0cyhnYiwgMTYpLCAxfTsKKyAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3Ju ZXJfeSA9CisgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cisg ICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl94ID0KKyAgICAgICAgICAg IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKKyAgICAgICAgcGFyYW1zLT53aW5k b3dfbG93ZXJfcmlnaHRfY29ybmVyX3kgPQorICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzKGdiLCAxNiksIDF9OworCisgICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9 IGdldF9iaXRzKGdiLCAxNik7CisgICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeSA9 IGdldF9iaXRzKGdiLCAxNik7CisgICAgICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBnZXRf Yml0cyhnYiwgOCk7CisgICAgICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNfaW50ZXJuYWxfZWxs aXBzZSA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNf ZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgICAgIHBhcmFtcy0+c2Vt aW1pbm9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgICAg IHBhcmFtcy0+b3ZlcmxhcF9wcm9jZXNzX29wdGlvbiA9IGdldF9iaXRzMShnYik7CisgICAgfQor CisgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCisgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOworCisgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9s dW1pbmFuY2UgPQorICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHNfbG9uZyhnYiwgMjcpLCBs dW1pbmFuY2VfZGVufTsKKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7CisKKyAgICBpZiAocy0+dGFyZ2V0ZWRf c3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKKyAgICAgICAgaW50 IHJvd3MsIGNvbHM7CisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQorICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgIHJvd3MgPSBnZXRfYml0 cyhnYiwgNSk7CisgICAgICAgIGNvbHMgPSBnZXRfYml0cyhnYiwgNSk7CisgICAgICAgIGlmICgo KHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwgKChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkp KSB7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQor ICAgICAgICBzLT5udW1fcm93c190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19s dW1pbmFuY2UgPSByb3dzOworICAgICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSBjb2xzOworCisgICAgICAgIGlmIChnZXRfYml0 c19sZWZ0KGdiKSA8IChyb3dzICogY29scyAqIDQpKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKysp IHsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7CisgICAgICAg ICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNl W2ldW2pdID0KKyAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0 KSwgcGVha19sdW1pbmFuY2VfZGVufTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K KyAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKKyAgICAgICAg QVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cisg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgzICogMTcgKyAxNyArIDQpKQorICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgICAgIHBhcmFtcy0+bWF4c2NsW2ldID0KKyAgICAg ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07CisgICAg ICAgIH0KKyAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21heHJnYiA9CisgICAgICAgICAgICAoQVZS YXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07CisgICAgICAgIHBhcmFtcy0+bnVt X2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgPSBnZXRfYml0cyhnYiwgNCk7CisKKyAg ICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwKKyAgICAgICAgICAgIChwYXJhbXMtPm51bV9k aXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzICogMjQpKQorICAgICAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJh bXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzOyBpKyspIHsKKyAgICAgICAg ICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMo Z2IsIDcpOworICAgICAgICAgICAgcGFyYW1zLT5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNl bnRpbGUgPQorICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCBy Z2JfZGVufTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEw KQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgcGFy YW1zLT5mcmFjdGlvbl9icmlnaHRfcGl4ZWxzID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAx MCksIGZyYWN0aW9uX3BpeGVsX2Rlbn07CisgICAgfQorICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIHMtPm1hc3Rl cmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsK KyAgICBpZiAocy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcp IHsKKyAgICAgICAgaW50IHJvd3MsIGNvbHM7CisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEwKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAg IHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7CisgICAgICAgIGNvbHMgPSBnZXRfYml0cyhnYiwgNSk7 CisgICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwgKChjb2xzIDwgMikg fHwgKGNvbHMgPiAyNSkpKSB7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKKyAgICAgICAgfQorICAgICAgICBzLT5udW1fcm93c19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1 YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOworICAgICAgICBzLT5udW1fY29sc19tYXN0ZXJpbmdf ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSBjb2xzOworCisgICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IChyb3dzICogY29scyAqIDQpKQorICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBp KyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7CisgICAg ICAgICAgICAgICAgcy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ld W2pdID0KKyAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwg cGVha19sdW1pbmFuY2VfZGVufTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor ICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgeworICAgICAgICBB VkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKKyAg ICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKKyAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOworCisgICAgICAgIHBhcmFtcy0+dG9uZV9tYXBwaW5nX2ZsYWcgPSBn ZXRfYml0czEoZ2IpOworICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdfZmxhZykgewor ICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCisgICAgICAgICAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgICAgIHBhcmFtcy0+a25lZV9w b2ludF94ID0KKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwg a25lZV9wb2ludF9kZW59OworICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3kgPQorICAg ICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50X2Rl bn07CisgICAgICAgICAgICBwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyA9IGdldF9i aXRzKGdiLCA0KTsKKworICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHBhcmFt cy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQorICAgICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzOyBpKyspIHsKKyAgICAgICAgICAgICAg ICBwYXJhbXMtPmJlemllcl9jdXJ2ZV9hbmNob3JzW2ldID0KKyAgICAgICAgICAgICAgICAgICAg KEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVufTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEp CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgcGFyYW1z LT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7CisgICAgICAg IGlmIChwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKSB7CisgICAgICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA2KQorICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX3dl aWdodCA9CisgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA2KSwgc2F0 dXJhdGlvbl93ZWlnaHRfZGVufTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOwor fQpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmggYi9saWJhdnV0 aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaAppbmRleCAyZDcyZGU1NmFlLi4xZjk1M2VmMWY1IDEw MDY0NAotLS0gYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaAorKysgYi9saWJhdnV0 aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaApAQCAtMzQwLDQgKzM0MCwxNSBAQCBBVkR5bmFtaWNI RFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSk7CiAgKi8KIEFW RHluYW1pY0hEUlBsdXMgKmF2X2R5bmFtaWNfaGRyX3BsdXNfY3JlYXRlX3NpZGVfZGF0YShBVkZy YW1lICpmcmFtZSk7CiAKKy8qKgorICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVkIElU VS1UIFQuMzUgdG8gQVZidWZmZXIgKEFWRHluYW1pY0hEUlBsdXMpLgorICogQHBhcmFtIHMgQSBw b2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUu CisgKiBAcGFyYW0gZGF0YSBUaGUgYnl0ZSBhcnJheSBjb250YWluaW5nIHRoZSByYXcgSVRVLVQg VC4zNSBkYXRhLgorICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgZGF0YSBhcnJheSBpbiBieXRl cy4KKyAqCisgKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBh cHByb3ByaWF0ZSBBVkVSUk9SLgorICovCitpbnQgYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3Qz NShBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOworCiAjZW5kaWYgLyogQVZVVElMX0hEUl9E WU5BTUlDX01FVEFEQVRBX0ggKi8KZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY192 aXZpZF9tZXRhZGF0YS5jIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21ldGFkYXRhLmMK aW5kZXggMzJkYTAxZjU4Ny4uMTIxODY0NDEyMyAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL2hkcl9k eW5hbWljX3ZpdmlkX21ldGFkYXRhLmMKKysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX3Zpdmlk X21ldGFkYXRhLmMKQEAgLTIwLDYgKzIwLDE3IEBACiAKICNpbmNsdWRlICJoZHJfZHluYW1pY192 aXZpZF9tZXRhZGF0YS5oIgogI2luY2x1ZGUgIm1lbS5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMv Z2V0X2JpdHMuaCIKKworc3RhdGljIGNvbnN0IGludDMyX3QgbWF4cmdiX2RlbiA9IDQwOTU7Citz dGF0aWMgY29uc3QgaW50MzJfdCBjb2xvcl9zYXR1cmF0aW9uX2dhaW5fZGVuID0gMTI4Oworc3Rh dGljIGNvbnN0IGludDMyX3QgbWF4aW11bV9sdW1pbmFuY2VfZGVuID0gNDA5NTsKK3N0YXRpYyBj b25zdCBpbnQzMl90IGJhc2VfcGFyYW1fbV9wX2RlbiA9IDE2MzgzOworc3RhdGljIGNvbnN0IGlu dDMyX3QgYmFzZV9wYXJhbV9tX21fZGVuID0gMTA7CitzdGF0aWMgY29uc3QgaW50MzJfdCBiYXNl X3BhcmFtX21fYV9kZW4gPSAxMDIzOworc3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJhbV9t X2JfZGVuID0gMTAyMzsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGJhc2VfcGFyYW1fbV9uX2RlbiA9 IDEwOworc3RhdGljIGNvbnN0IGludDMyX3QgYmFzZV9wYXJhbV9EZWx0YV9kZW4gPSAxMjc7CiAK IEFWRHluYW1pY0hEUlZpdmlkICphdl9keW5hbWljX2hkcl92aXZpZF9hbGxvYyhzaXplX3QgKnNp emUpCiB7CkBAIC00NSwzICs1NiwxMTIgQEAgQVZEeW5hbWljSERSVml2aWQgKmF2X2R5bmFtaWNf aGRyX3ZpdmlkX2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpCiAKICAgICByZXR1cm4g KEFWRHluYW1pY0hEUlZpdmlkICopc2lkZV9kYXRhLT5kYXRhOwogfQorCitpbnQgYXZfZHluYW1p Y19oZHJfdml2aWRfZnJvbV90MzUoQVZEeW5hbWljSERSVml2aWQgKnMsIGNvbnN0IHVpbnQ4X3Qg KmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpCit7Cisg ICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7CisgICAgaW50IHJldDsKKworICAgIGlm ICghcykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIHJldCA9IGluaXRf Z2V0X2JpdHM4KGdiLCBkYXRhLCBzaXplKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDgpCisgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgcy0+c3lzdGVtX3N0YXJ0X2NvZGUgPSBnZXRf Yml0cyhnYiwgOCk7CisgICAgaWYgKHMtPnN5c3RlbV9zdGFydF9jb2RlID09IDB4MDEpIHsKKyAg ICAgICAgcy0+bnVtX3dpbmRvd3MgPSAxOworCisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEyICogNCAqIHMtPm51bV93aW5kb3dzKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7CisgICAgICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7 IHcrKykgeworICAgICAgICAgICAgQVZIRFJWaXZpZENvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJh bXMgPSAmcy0+cGFyYW1zW3ddOworCisgICAgICAgICAgICBwYXJhbXMtPm1pbmltdW1fbWF4cmdi ICA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBtYXhyZ2JfZGVufTsKKyAgICAgICAg ICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAx MiksIG1heHJnYl9kZW59OworICAgICAgICAgICAgcGFyYW1zLT52YXJpYW5jZV9tYXhyZ2IgPSAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwgbWF4cmdiX2Rlbn07CisgICAgICAgICAgICBw YXJhbXMtPm1heGltdW1fbWF4cmdiICA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBt YXhyZ2JfZGVufTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IDIgKiBzLT5udW1fd2luZG93cykKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOworICAgICAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsK KyAgICAgICAgICAgIEFWSERSVml2aWRDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMt PnBhcmFtc1t3XTsKKworICAgICAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfbW9kZV9mbGFn ID0gZ2V0X2JpdHMoZ2IsIDEpOworICAgICAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5n X21vZGVfZmxhZykgeworICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEg KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAg ICAgICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19wYXJhbV9udW0gPSBnZXRfYml0cyhnYiwg MSkgKyAxOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT50b25l X21hcHBpbmdfcGFyYW1fbnVtOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQVZIRFJWaXZp ZENvbG9yVG9uZU1hcHBpbmdQYXJhbXMgKnRtX3BhcmFtcyA9ICZwYXJhbXMtPnRtX3BhcmFtc1tp XTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMykKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAg ICAgICAgICAgICAgICB0bV9wYXJhbXMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1f bHVtaW5hbmNlID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIG1heGltdW1fbHVtaW5h bmNlX2Rlbn07CisgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9lbmFibGVfZmxh ZyA9IGdldF9iaXRzKGdiLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRtX3BhcmFtcy0+ YmFzZV9lbmFibGVfZmxhZykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldF9iaXRz X2xlZnQoZ2IpIDwgKDE0ICsgNiArIDEwICsgMTAgKyA2ICsgOCArIDEwKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9tX3AgPSAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE0KSwgYmFzZV9wYXJhbV9tX3BfZGVufTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9tX20gPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is ICA2KSwgYmFzZV9wYXJhbV9tX21fZGVufTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3Bh cmFtcy0+YmFzZV9wYXJhbV9tX2EgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgYmFz ZV9wYXJhbV9tX2FfZGVufTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFz ZV9wYXJhbV9tX2IgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgYmFzZV9wYXJhbV9t X2JfZGVufTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9t X24gPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsICA2KSwgYmFzZV9wYXJhbV9tX25fZGVufTsK KyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9rMSA9IGdldF9i aXRzKGdiLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJh bV9rMiA9IGdldF9iaXRzKGdiLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFt cy0+YmFzZV9wYXJhbV9rMyA9IGdldF9iaXRzKGdiLCA0KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRtX3BhcmFtcy0+YmFzZV9wYXJhbV9EZWx0YV9lbmFibGVfbW9kZSA9IGdldF9iaXRzKGdi LCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bV9wYXJhbXMtPmJhc2VfcGFyYW1f RGVsdGFfZW5hYmxlX21vZGUgPT0gMiB8fCB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fRGVsdGFfZW5h YmxlX21vZGUgPT0gNikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJh c2VfcGFyYW1fRGVsdGEgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDcpICogLTEsIGJhc2Vf cGFyYW1fRGVsdGFfZGVufTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0bV9wYXJhbXMtPmJhc2VfcGFyYW1fRGVsdGEgPSAoQVZSYXRp b25hbCl7Z2V0X2JpdHMoZ2IsIDcpLCBiYXNlX3BhcmFtX0RlbHRhX2Rlbn07CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAg ICAgICAgICAgICB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9lbmFibGVfZmxhZyA9IGdldF9iaXRz KGdiLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bV9wYXJhbXMtPnRocmVlX1Nw bGluZV9lbmFibGVfZmxhZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDEgKyB0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9udW0gKiAoMiArIDEy ICsgMjggKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50 aHJlZV9TcGxpbmVfbnVtID0gZ2V0X2JpdHMoZ2IsIDEpICsgMTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRtX3BhcmFtcy0+dGhyZWVfU3BsaW5lX251 bTsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtX3BhcmFtcy0+dGhy ZWVfU3BsaW5lX1RIX21vZGUgPSBnZXRfYml0cyhnYiwgMik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh0bV9wYXJhbXMtPnRocmVlX1NwbGluZV9USF9tb2RlID09IDAgfHwg dG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfbW9kZSA9PSAyKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA4KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJlZV9T cGxpbmVfVEhfZW5hYmxlX01CID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA4KSwgIDI1NX07 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfZW5hYmxlID0gKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxMiksICA0MDk1fTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfRGVsdGExID0gKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAxMCksICAxMDIzfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfRGVsdGEyID0gKEFWUmF0aW9uYWwpe2dldF9iaXRz KGdiLCAxMCksICAxMDIzfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1fcGFy YW1zLT50aHJlZV9TcGxpbmVfZW5hYmxlX1N0cmVuZ3RoID0gKEFWUmF0aW9uYWwpe2dldF9iaXRz KGdiLCAgOCksICAyNTV9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1f cGFyYW1zLT50aHJlZV9TcGxpbmVfbnVtICAgICA9IDE7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG1fcGFyYW1zLT50aHJlZV9TcGxpbmVfVEhfbW9kZSA9IDA7CisgICAgICAgICAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21h cHBpbmdfZmxhZyA9IGdldF9iaXRzKGdiLCAxKTsKKyAgICAgICAgICAgIGlmIChwYXJhbXMtPmNv bG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKSB7CisgICAgICAgICAgICAgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgMyArIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9udW0gKiA4KQorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAg ICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9udW0gPSBnZXRfYml0cyhnYiwgMyk7Cisg ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPmNvbG9yX3NhdHVyYXRp b25fbnVtOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0 aW9uX2dhaW5baV0gPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDgpLCBjb2xvcl9zYXR1cmF0 aW9uX2dhaW5fZGVufTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJf ZHluYW1pY192aXZpZF9tZXRhZGF0YS5oIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX3ZpdmlkX21l dGFkYXRhLmgKaW5kZXggYTM0ZjgzMDcyYy4uMTZhODRjZTM0MyAxMDA2NDQKLS0tIGEvbGliYXZ1 dGlsL2hkcl9keW5hbWljX3ZpdmlkX21ldGFkYXRhLmgKKysrIGIvbGliYXZ1dGlsL2hkcl9keW5h bWljX3ZpdmlkX21ldGFkYXRhLmgKQEAgLTI4Miw0ICsyODIsMTUgQEAgQVZEeW5hbWljSERSVml2 aWQgKmF2X2R5bmFtaWNfaGRyX3ZpdmlkX2FsbG9jKHNpemVfdCAqc2l6ZSk7CiAgKi8KIEFWRHlu YW1pY0hEUlZpdmlkICphdl9keW5hbWljX2hkcl92aXZpZF9jcmVhdGVfc2lkZV9kYXRhKEFWRnJh bWUgKmZyYW1lKTsKIAorLyoqCisgKiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRV LVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSVml2aWQpLgorICogQHBhcmFtIHMgQSBw b2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSVml2aWQgc3RydWN0dXJl LgorICogQHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1U IFQuMzUgZGF0YS4KKyAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0 ZXMuCisgKgorICogQHJldHVybiAwIGlmIHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUg YXBwcm9wcmlhdGUgQVZFUlJPUi4KKyAqLworaW50IGF2X2R5bmFtaWNfaGRyX3ZpdmlkX2Zyb21f dDM1KEFWRHluYW1pY0hEUlZpdmlkICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKKwogI2VuZGlmIC8qIEFWVVRJTF9I RFJfRFlOQU1JQ19WSVZJRF9NRVRBREFUQV9IICovCi0tIAoyLjM5LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K