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 04A7445656 for ; Mon, 13 Mar 2023 20:23:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 79F6468BB61; Mon, 13 Mar 2023 22:23:03 +0200 (EET) Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D425768A8C0 for ; Mon, 13 Mar 2023 22:22:57 +0200 (EET) Received: by mail-qt1-f182.google.com with SMTP id z6so14682938qtv.0 for ; Mon, 13 Mar 2023 13:22:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; t=1678738976; 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=fsjl2rVnJMCaEIjNCmMuJRF+9kfcUMrviw1a3Ky0OXM=; b=a8fbS09IF2P0IjErZpj5Q2n+FCYj/cnh3o4W/jFUS8N50y2yIksuNYrR8oi4aoq+vw EOx4o4Pt7/REQzY1P38bWRXejJa5K8tW/qwtMgINJDslzJQmniKx8NpOPWkbgoYCRYLW y2wY2QgkMy5X5IPozBv6nZV/CzJlM4wi8Gxe0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678738976; 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=fsjl2rVnJMCaEIjNCmMuJRF+9kfcUMrviw1a3Ky0OXM=; b=H5RW9rNVUqPXJJH52/aLgmX0DRz8j//Ot0bdhBPm7UzsNHGwPf6yjc5ZIK9c1yM06N vphKUfwB5EgD7xdFVlzklNIk3z9+Wkf9KhLctfE0Dt6+SxlxQN39hcZCcImttxtSfh22 w6U8YOJ63e7Pitf1I0236NBzF3kS7HDD4ff/InlTmVjHeI4OjKRSAvEIE4o1fnhJ9x+6 4zJS9izyQEwD6lu5yLusSru61Q1Mhw/aYyV8Tn2TGtrz5XkEYhfibVazLCu3iJFCtZAB YyneUIZ1/e4KEQs+FXSJG+TyeLOjOGeLyGGQ24tqOvC9jeKG6aEKSoi8pM/+39zCVSmt LWEw== X-Gm-Message-State: AO0yUKU6s1sOZSRqK8RwIblNd5aVXGS+Q6YdenrRjvt2bW6sHmuJdq5p 6CQUCK3fj3Ofr+QAfdvvxVq7dkSvkKFJ56QtzWRpJw== X-Google-Smtp-Source: AK7set+ax5nRH5tmlMoc7IssrHbPtdqmNumbOc0r+ZB5NCMZHEmW/zNYvSd2edZJZ+vJkmJ4LDTPZg== X-Received: by 2002:a05:622a:609:b0:3bf:c388:cbea with SMTP id z9-20020a05622a060900b003bfc388cbeamr63454703qta.43.1678738975579; Mon, 13 Mar 2023 13:22:55 -0700 (PDT) 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 q9-20020a37f709000000b0073d873df3fesm377682qkj.30.2023.03.13.13.22.54 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Mar 2023 13:22:55 -0700 (PDT) Message-ID: Date: Mon, 13 Mar 2023 16:22:54 -0400 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 v4 1/2] avcodec/avutil: move dynamic HDR10+ 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: U2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgWnVtZXIgPHJ6dW1lckB0ZWJha28ubmV0PgotLS0KIGxp YmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAyICstCiBsaWJhdmNvZGVjL2R5bmFt aWNfaGRyMTBfcGx1cy5jICB8IDE5OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oICB8ICAzNSAtLS0tLS0KIGxpYmF2Y29kZWMv aDI2NDVfc2VpLmMgICAgICAgICAgIHwgICA2ICstCiBsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0 YWRhdGEuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuaCB8ICAxMSArKwogNiBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0 aW9ucygrKSwgMjM3IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMv ZHluYW1pY19oZHIxMF9wbHVzLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2R5bmFt aWNfaGRyMTBfcGx1cy5oCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2 Y29kZWMvTWFrZWZpbGUKaW5kZXggYWJhZTQ5MDlkMi4uZThhYjU1ZjE2ZSAxMDA2NDQKLS0tIGEv bGliYXZjb2RlYy9NYWtlZmlsZQorKysgYi9saWJhdmNvZGVjL01ha2VmaWxlCkBAIC0xMDQsNyAr MTA0LDcgQEAgT0JKUy0kKENPTkZJR19IMjY0X1NFSSkgICAgICAgICAgICAgICAgKz0gaDI2NF9z ZWkubyBoMjY0NV9zZWkubwogT0JKUy0kKENPTkZJR19IRVZDUEFSU0UpICAgICAgICAgICAgICAg Kz0gaGV2Y19wYXJzZS5vIGhldmNfcHMubyBoZXZjX2RhdGEubyBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoMjY0NWRhdGEubyBoMjY0NV9wYXJzZS5vIGgyNjQ1 X3Z1aS5vCiBPQkpTLSQoQ09ORklHX0hFVkNfU0VJKSAgICAgICAgICAgICAgICArPSBoZXZjX3Nl aS5vIGgyNjQ1X3NlaS5vIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGR5bmFtaWNfaGRyMTBfcGx1cy5vIGR5bmFtaWNfaGRyX3ZpdmlkLm8KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfaGRyX3ZpdmlkLm8KIE9CSlMt JChDT05GSUdfSFBFTERTUCkgICAgICAgICAgICAgICAgICs9IGhwZWxkc3AubwogT0JKUy0kKENP TkZJR19IVUZGTUFOKSAgICAgICAgICAgICAgICAgKz0gaHVmZm1hbi5vCiBPQkpTLSQoQ09ORklH X0hVRkZZVVZEU1ApICAgICAgICAgICAgICArPSBodWZmeXV2ZHNwLm8KZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMgYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBf cGx1cy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGE0NGFhYzY1Li4wMDAwMDAw MDAwCi0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKKysrIC9kZXYvbnVsbApA QCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAq Ci0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwot Ci0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCi0jaW5jbHVkZSAiZ2V0X2JpdHMuaCIK LQotc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7Ci1zdGF0aWMgY29uc3Qg aW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4gPSAxNTsKLXN0YXRpYyBjb25zdCBpbnQ2NF90IHJn Yl9kZW4gPSAxMDAwMDA7Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBmcmFjdGlvbl9waXhlbF9kZW4g PSAxMDAwOwotc3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0MDk1Owotc3Rh dGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwotc3RhdGljIGNvbnN0 IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsKLQotaW50IGZmX3BhcnNlX2l0dV90 X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWlu dDhfdCAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBzaXplKQotewotICAgIEdldEJpdENvbnRleHQgZ2JjLCAqZ2IgPSAmZ2JjOwotICAgIGlu dCByZXQ7Ci0KLSAgICBpZiAoIXMpCi0gICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0K LSAgICByZXQgPSBpbml0X2dldF9iaXRzOChnYiwgZGF0YSwgc2l6ZSk7Ci0gICAgaWYgKHJldCA8 IDApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAx MCkKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0KLSAgICBzLT5hcHBsaWNh dGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwotICAgIHMtPm51bV93aW5kb3dzID0gZ2V0 X2JpdHMoZ2IsIDIpOwotCi0gICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2lu ZG93cyA+IDMpIHsKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgfQot Ci0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAqIDggKyAxKSAqIChzLT5udW1fd2lu ZG93cyAtIDEpKSkKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0KLSAgICBm b3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKLSAgICAgICAgLy8gVGhl IGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcyBoZXJlLiBUaGV5IHNob3Vs ZCBiZQotICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChp biBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgotICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9y bVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKLSAgICAgICAgcGFyYW1zLT53aW5kb3df dXBwZXJfbGVmdF9jb3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kg PQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9OwotICAgICAg ICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZS YXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X2xv d2VyX3JpZ2h0X2Nvcm5lcl95ID0KLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKLQotICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3ggPSBnZXRf Yml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRf Yml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xlID0gZ2V0X2JpdHMo Z2IsIDgpOwotICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2ludGVybmFsX2VsbGlwc2Ug PSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2V4dGVy bmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPnNlbWltaW5v cl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJh bXMtPm92ZXJsYXBfcHJvY2Vzc19vcHRpb24gPSBnZXRfYml0czEoZ2IpOwotICAgIH0KLQotICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKLQotICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5h bmNlID0KLSAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5h bmNlX2Rlbn07Ci0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVt aW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwotCi0gICAgaWYgKHMtPnRhcmdldGVkX3N5c3Rl bV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Ci0gICAgICAgIGludCByb3dz LCBjb2xzOwotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2Is IDUpOwotICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBpZiAoKChyb3dz IDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewot ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgIH0KLSAgICAg ICAgcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5h bmNlID0gcm93czsKLSAgICAgICAgcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlf YWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Ci0g ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewotICAgICAgICAgICAg ICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtq XSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBl YWtfbHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg Zm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Ci0gICAgICAgIEFWSERS UGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwotICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkKLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgMzsgaSsrKSB7Ci0gICAgICAgICAgICBwYXJhbXMtPm1heHNjbFtpXSA9Ci0gICAgICAgICAg ICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59OwotICAgICAgICB9 Ci0gICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQotICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59OwotICAgICAgICBwYXJhbXMtPm51bV9kaXN0 cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQpOwotCi0gICAgICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8Ci0gICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJp YnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyAqIDI0KSkKLSAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5u dW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Ci0gICAgICAgICAgICBw YXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3 KTsKLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50aWxl ID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rl bn07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKLSAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIHBhcmFtcy0+ ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBm cmFjdGlvbl9waXhlbF9kZW59OwotICAgIH0KLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAx KQotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICBzLT5tYXN0ZXJpbmdf ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Ci0gICAg aWYgKHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Ci0g ICAgICAgIGludCByb3dzLCBjb2xzOwotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAx MCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICByb3dz ID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAg ICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChj b2xzID4gMjUpKSkgewotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0g ICAgICAgIH0KLSAgICAgICAgcy0+bnVtX3Jvd3NfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3Bl YWtfbHVtaW5hbmNlID0gcm93czsKLSAgICAgICAgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKLQotICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7 Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewotICAgICAgICAg ICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9 Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtf bHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBm b3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKLSAgICAgICAgQVZIRFJQ bHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Ci0gICAgICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCi0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKLQotICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19mbGFnID0gZ2V0X2Jp dHMxKGdiKTsKLSAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5nX2ZsYWcpIHsKLSAgICAg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQotICAgICAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRf eCA9Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVf cG9pbnRfZGVufTsKLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF95ID0KLSAgICAgICAg ICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwga25lZV9wb2ludF9kZW59Owot ICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhn YiwgNCk7Ci0KLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChwYXJhbXMtPm51 bV9iZXppZXJfY3VydmVfYW5jaG9ycyAqIDEwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKLQotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJh bXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcGFy YW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiZXppZXJfYW5jaG9yX2Rlbn07Ci0gICAgICAgICAg ICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQotICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAgIHBhcmFtcy0+Y29s b3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwotICAgICAgICBpZiAo cGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZykgewotICAgICAgICAgICAgaWYg KGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKLSAgICAgICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl93ZWlnaHQg PQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNiksIHNhdHVyYXRp b25fd2VpZ2h0X2Rlbn07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggYi9saWJhdmNvZGVjL2R5 bmFtaWNfaGRyMTBfcGx1cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDdhY2Yw NDMyLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKKysr IC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BMVVNfSAotI2RlZmlu ZSBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19ICi0KLSNpbmNsdWRlICJsaWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuaCIKLQotLyoqCi0gKiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lz dGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSUGx1cykuCi0gKiBAcGFy YW0gcyBBIHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0 cnVjdHVyZS4KLSAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJh dyBJVFUtVCBULjM1IGRhdGEuCi0gKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5 IGluIGJ5dGVzLgotICoKLSAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVy bnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCi0gKi8KLWludCBmZl9wYXJzZV9pdHVfdF90MzVf dG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3Qg KmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg c2l6ZSk7Ci0KLSNlbmRpZiAvKiBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19IICovCmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jIGIvbGliYXZjb2RlYy9oMjY0NV9zZWkuYwpp bmRleCA2ZTRhOWExYWYyLi42M2FiNzExYmM5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjQ1 X3NlaS5jCisrKyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKQEAgLTI3LDEzICsyNywxMyBAQAog CiAjaW5jbHVkZSAibGliYXZ1dGlsL2FtYmllbnRfdmlld2luZ19lbnZpcm9ubWVudC5oIgogI2lu Y2x1ZGUgImxpYmF2dXRpbC9kaXNwbGF5LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2hkcl9keW5h bWljX21ldGFkYXRhLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL2ZpbG1fZ3JhaW5fcGFyYW1zLmgi CiAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvc3Rl cmVvM2QuaCIKIAogI2luY2x1ZGUgImF0c2NfYTUzLmgiCiAjaW5jbHVkZSAiYXZjb2RlYy5oIgot I2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgogI2luY2x1ZGUgImR5bmFtaWNfaGRyX3Zp dmlkLmgiCiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKICNpbmNsdWRlICJnb2xvbWIuaCIKQEAgLTUy LDggKzUyLDggQEAgc3RhdGljIGludCBkZWNvZGVfcmVnaXN0ZXJlZF91c2VyX2RhdGFfZHluYW1p Y19oZHJfcGx1cyhIRVZDU0VJRHluYW1pY0hEUlBsdXMgKnMKICAgICBpZiAoIW1ldGFkYXRhKQog ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgZXJyID0gZmZfcGFyc2VfaXR1 X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhtZXRhZGF0YSwgZ2ItPmJ1ZmZlciwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0y X2dldF9ieXRlc19sZWZ0KGdiKSk7CisgICAgZXJyID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9t X3QzNShtZXRhZGF0YSwgZ2ItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7CiAgICAgaWYgKGVyciA8 IDApIHsKICAgICAgICAgYXZfZnJlZShtZXRhZGF0YSk7CiAgICAgICAgIHJldHVybiBlcnI7CmRp ZmYgLS1naXQgYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuYyBiL2xpYmF2dXRpbC9o ZHJfZHluYW1pY19tZXRhZGF0YS5jCmluZGV4IDBmYTFlZTgyZGUuLjk4ZjM5OWIwMzIgMTAwNjQ0 Ci0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCisrKyBiL2xpYmF2dXRpbC9o ZHJfZHluYW1pY19tZXRhZGF0YS5jCkBAIC0yMCw2ICsyMCwxNiBAQAogCiAjaW5jbHVkZSAiaGRy X2R5bmFtaWNfbWV0YWRhdGEuaCIKICNpbmNsdWRlICJtZW0uaCIKKyNpbmNsdWRlICJsaWJhdmNv ZGVjL2dldF9iaXRzLmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9wdXRfYml0cy5oIgorCitzdGF0 aWMgY29uc3QgaW50NjRfdCBsdW1pbmFuY2VfZGVuID0gMTsKK3N0YXRpYyBjb25zdCBpbnQzMl90 IHBlYWtfbHVtaW5hbmNlX2RlbiA9IDE1Oworc3RhdGljIGNvbnN0IGludDY0X3QgcmdiX2RlbiA9 IDEwMDAwMDsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2RlbiA9IDEwMDA7 CitzdGF0aWMgY29uc3QgaW50MzJfdCBrbmVlX3BvaW50X2RlbiA9IDQwOTU7CitzdGF0aWMgY29u c3QgaW50MzJfdCBiZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7CitzdGF0aWMgY29uc3QgaW50MzJf dCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4OwogCiBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5h bWljX2hkcl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSkKIHsKQEAgLTQ1LDMgKzU1LDE3MyBAQCBB VkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVzX2NyZWF0ZV9zaWRlX2RhdGEoQVZG cmFtZSAqZnJhbWUpCiAKICAgICByZXR1cm4gKEFWRHluYW1pY0hEUlBsdXMgKilzaWRlX2RhdGEt PmRhdGE7CiB9CisKK2ludCBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KEFWRHluYW1pY0hE UlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc2l6ZSkKK3sKKyAgICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdiYzsK KyAgICBpbnQgcmV0OworCisgICAgaWYgKCFzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOworCisgICAgcmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOworICAgIGlm IChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMTApCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgcy0+ YXBwbGljYXRpb25fdmVyc2lvbiA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBzLT5udW1fd2luZG93 cyA9IGdldF9iaXRzKGdiLCAyKTsKKworICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+ bnVtX3dpbmRvd3MgPiAzKSB7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor ICAgIH0KKworICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgoMTkgKiA4ICsgMSkgKiAocy0+ bnVtX3dpbmRvd3MgLSAxKSkpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwor CisgICAgZm9yIChpbnQgdyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAg IC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMgaGVyZS4gVGhl eSBzaG91bGQgYmUKKyAgICAgICAgLy8gY29udmVydGVkIHRvIHRoZSByZWxhdGl2ZSBjb29yZGlu YXRlcyAoaW4gWzAsIDFdKSBpbiB0aGUgZGVjb2Rlci4KKyAgICAgICAgQVZIRFJQbHVzQ29sb3JU cmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107CisgICAgICAgIHBhcmFtcy0+ d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3ggPQorICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAxNiksIDF9OworICAgICAgICBwYXJhbXMtPndpbmRvd191cHBlcl9sZWZ0X2Nv cm5lcl95ID0KKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsK KyAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3ggPQorICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9OworICAgICAgICBwYXJhbXMtPndp bmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeSA9CisgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE2KSwgMX07CisKKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94 ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95 ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5yb3RhdGlvbl9hbmdsZSA9IGdl dF9iaXRzKGdiLCA4KTsKKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9l bGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhp c19leHRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5z ZW1pbWlub3JfYXhpc19leHRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAg ICAgcGFyYW1zLT5vdmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKKyAgICB9 CisKKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKKyAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CisKKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVt X2x1bWluYW5jZSA9CisgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyks IGx1bWluYW5jZV9kZW59OworICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9w ZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKKworICAgIGlmIChzLT50YXJnZXRl ZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBp bnQgcm93cywgY29sczsKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCisgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgcm93cyA9IGdldF9i aXRzKGdiLCA1KTsKKyAgICAgICAgY29scyA9IGdldF9iaXRzKGdiLCA1KTsKKyAgICAgICAgaWYg KCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1 KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9 CisgICAgICAgIHMtPm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZSA9IHJvd3M7CisgICAgICAgIHMtPm51bV9jb2xzX3RhcmdldGVkX3N5c3RlbV9k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7CisKKyAgICAgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCisgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkr KykgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKKyAgICAg ICAgICAgICAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFu Y2VbaV1bal0gPQorICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is IDQpLCBwZWFrX2x1bWluYW5jZV9kZW59OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgeworICAgICAg ICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsK KyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKDMgKiAxNyArIDE3ICsgNCkpCisgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICAgICAgcGFyYW1zLT5tYXhzY2xbaV0gPQorICAg ICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAg ICAgICAgfQorICAgICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4cmdiID0KKyAgICAgICAgICAgIChB VlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgcGFyYW1zLT5u dW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9iaXRzKGdiLCA0KTsKKwor ICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPAorICAgICAgICAgICAgKHBhcmFtcy0+bnVt X2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgKiAyNCkpCisgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBh cmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXM7IGkrKykgeworICAgICAg ICAgICAgcGFyYW1zLT5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRhZ2UgPSBnZXRfYml0 cyhnYiwgNyk7CisgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVy Y2VudGlsZSA9CisgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyks IHJnYl9kZW59OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MTApCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBw YXJhbXMtPmZyYWN0aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is IDEwKSwgZnJhY3Rpb25fcGl4ZWxfZGVufTsKKyAgICB9CisgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgcy0+bWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2Ip OworICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxh ZykgeworICAgICAgICBpbnQgcm93cywgY29sczsKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMTApCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAg ICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsKKyAgICAgICAgY29scyA9IGdldF9iaXRzKGdiLCA1 KTsKKyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAy KSB8fCAoY29scyA+IDI1KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOworICAgICAgICB9CisgICAgICAgIHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2Fj dHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7CisgICAgICAgIHMtPm51bV9jb2xzX21hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7CisKKyAgICAgICAgaWYgKGdl dF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCisgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7 IGkrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKKyAg ICAgICAgICAgICAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2Vb aV1bal0gPQorICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQp LCBwZWFrX2x1bWluYW5jZV9kZW59OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor CisgICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAg IEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwor ICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQorICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfZmxhZyA9 IGdldF9iaXRzMShnYik7CisgICAgICAgIGlmIChwYXJhbXMtPnRvbmVfbWFwcGluZ19mbGFnKSB7 CisgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKKyAgICAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgcGFyYW1zLT5rbmVl X3BvaW50X3ggPQorICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIp LCBrbmVlX3BvaW50X2Rlbn07CisgICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeSA9Cisg ICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRf ZGVufTsKKyAgICAgICAgICAgIHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzID0gZ2V0 X2JpdHMoZ2IsIDQpOworCisgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFy YW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgKiAxMCkpCisgICAgICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnM7IGkrKykgeworICAgICAgICAgICAg ICAgIHBhcmFtcy0+YmV6aWVyX2N1cnZlX2FuY2hvcnNbaV0gPQorICAgICAgICAgICAgICAgICAg ICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgYmV6aWVyX2FuY2hvcl9kZW59OworICAg ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MSkKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICBwYXJh bXMtPmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKKyAgICAg ICAgaWYgKHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKKyAgICAgICAg ICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25f d2VpZ2h0ID0KKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDYpLCBz YXR1cmF0aW9uX3dlaWdodF9kZW59OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCBiL2xpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCmluZGV4IDJkNzJkZTU2YWUuLjFmOTUzZWYxZjUg MTAwNjQ0Ci0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCisrKyBiL2xpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCkBAIC0zNDAsNCArMzQwLDE1IEBAIEFWRHluYW1p Y0hEUlBsdXMgKmF2X2R5bmFtaWNfaGRyX3BsdXNfYWxsb2Moc2l6ZV90ICpzaXplKTsKICAqLwog QVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFW RnJhbWUgKmZyYW1lKTsKIAorLyoqCisgKiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQg SVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSUGx1cykuCisgKiBAcGFyYW0gcyBB IHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVy ZS4KKyAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUt VCBULjM1IGRhdGEuCisgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5 dGVzLgorICoKKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhl IGFwcHJvcHJpYXRlIEFWRVJST1IuCisgKi8KK2ludCBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21f dDM1KEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7CisKICNlbmRpZiAvKiBBVlVUSUxfSERS X0RZTkFNSUNfTUVUQURBVEFfSCAqLwotLSAKMi4zOS4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBl Zy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zm bXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZm bXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIu Cg==