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 B416B443AF for ; Thu, 8 Sep 2022 01:22:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E5ADD68B4EC; Thu, 8 Sep 2022 04:22:27 +0300 (EEST) Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 76BB068B94D for ; Thu, 8 Sep 2022 04:22:21 +0300 (EEST) Received: by mail-pl1-f202.google.com with SMTP id d6-20020a170902cec600b00174be1616c4so10984858plg.22 for ; Wed, 07 Sep 2022 18:22:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date; bh=KVuTXDTBCj1fVSsC9K/WADw4qNosgSpd/DPBJM4Cozk=; b=cpdeRr1lWLqkfW0pXkp+sqjbrQm5gkghoOdmwrsLW+aWXEAdWFeqd3lRU9SQfGfaFZ kKuYbvM3gfr5+byAvy2qJfDoA1hxPPLaOOjrzALJ0sV9e2EiN3QF7HZF/t9bCfsLDvJJ EN/X0BHKdp6ST0C5YpoGnbX5TnIjKyvD65whV70NcrW2ByfLiRZJEbhjOdApValanmXE nTV1pynXT2U6ydOa8g7kfmmlYOX4KBOChfoK0id84nYAHBkHvUB0zqIO2NE2Wv/m7rf7 FAjid/sLJrjGa6tBD1tUuwCOxQWr8rHL9x8yJXpIqkd5D8n63UjPLPRbseQckIgeEoqC LuJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date; bh=KVuTXDTBCj1fVSsC9K/WADw4qNosgSpd/DPBJM4Cozk=; b=N5zZDt+KMQWP3CsYbke23DbuzbpTXNiXwfSZjy2cVaFrsvta2O5G+QhHCXQBmKu1Y2 hq3PaH26LPjxEi8yyosb89d6R38jKigV3Uh7OnrimN074qynTgDthHg24FiUM1l7zciP 3n6wL2P1nfYwagPpFi3hYl3NgyZo4cn7oHRpZoIKxHJH+jMZ3LL7PQa9HAWeopmOPZkt tpmpOad+bq0tDHn0lBMo29iqbNaqXyKCwVRLlqtOvttIKloDcUxrOWW6AnIZy1fh/PaP v2jEg1c+QXNx/wJIT5VcKaFp1sZR6i+AjqEMdUln3MO16rNmr2AT25/+HPziq7Xbjyzs XJ8w== X-Gm-Message-State: ACgBeo3WVi/MiHPqElyCpUvAn94NEjhLhMSE9zhCdKNkMsOHCm0lSz5x /Itr6LP2aqczUkyIs8rQkiFvP7vtFUvO6uX/CVEsi6Os+UydAdrW/g0YvIWpuGc/SJHPHb/1C49 1K6YDC06Ge6K3yT2nvBAnu6li5U1ivz6S9mtrcU5HISEuM6v8pb5D8zW7L5tY X-Google-Smtp-Source: AA6agR4LMx1VSfbKcZBnmGFmxIOYthheMvoIch8bzLilNfscBz7/JJFRHqDtc2/GafufrKwG5cADdMnChg== X-Received: from izadi.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:1f26]) (user=izadi job=sendgmr) by 2002:a05:6a00:27a0:b0:52f:8947:4cc5 with SMTP id bd32-20020a056a0027a000b0052f89474cc5mr6875466pfb.16.1662600138684; Wed, 07 Sep 2022 18:22:18 -0700 (PDT) Date: Thu, 8 Sep 2022 01:22:14 +0000 In-Reply-To: <0c396bde-b983-9722-2aa0-bf5c4eec77c3@gmail.com> Mime-Version: 1.0 References: <0c396bde-b983-9722-2aa0-bf5c4eec77c3@gmail.com> X-Mailer: git-send-email 2.37.2.789.g6183377224-goog Message-ID: <20220908012214.1556959-1-izadi@google.com> From: Mohammad Izadi To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avformat/matroska: Support HDR10+ metadata in Matroska. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Mohammad Izadi 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: VGhlIGZhdGUgdGVzdCBmaWxlIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2RyaXZlLmdvb2ds ZS5jb20vZmlsZS9kLzFqR1czZjk0cmdsTGZyNVdHbU1RZTNTRW5wMVlrYk1SeS92aWV3P3VzcD1k cml2ZXNkawpUaGUgdmlkZW8gZmlsZSBuZWVkcyB0byBiZSBjb3BpZWQgdG8gZmF0ZS1zdWl0ZS9t a3YvCi0tLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyAgICAgICAgICAgICB8IDI2 OSArKysrKysrKysrKysrKysrKy0tLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCAg ICAgICAgICAgICB8ICAyNiArLQogbGliYXZmb3JtYXQvbWF0cm9za2EuaCAgICAgICAgICAgICAg ICAgICAgICB8ICAgNSArCiBsaWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrLQogbGliYXZmb3JtYXQvbWF0cm9za2FlbmMuYyAgICAgICAgICAgICAgICAg ICB8ICA0NCArKystCiB0ZXN0cy9mYXRlL21hdHJvc2thLm1hayAgICAgICAgICAgICAgICAgICAg IHwgICA2ICsKIHRlc3RzL3JlZi9mYXRlL21hdHJvc2thLWhkcjEwLXBsdXMtbWV0YWRhdGEgfCAg NzQgKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDM5NyBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlv bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9yZWYvZmF0ZS9tYXRyb3NrYS1oZHIxMC1w bHVzLW1ldGFkYXRhCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMu YyBiL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKaW5kZXggMzRhNDRhYWM2NS4uZDA1 ZjIxMWM5NCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYworKysg Yi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCkBAIC0xOCw2ICsxOCwxMiBAQAogCiAj aW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKKyNp bmNsdWRlICJwdXRfYml0cy5oIgorCitzdGF0aWMgY29uc3QgdWludDhfdCB1c2FfY291bnRyeV9j b2RlID0gMHhCNTsKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBzbXB0ZV9wcm92aWRlcl9jb2RlID0g MHgwMDNDOworc3RhdGljIGNvbnN0IHVpbnQxNl90IHNtcHRlMjA5NF80MF9wcm92aWRlcl9vcmll bnRlZF9jb2RlID0gMHgwMDAxOworc3RhdGljIGNvbnN0IHVpbnQxNl90IHNtcHRlMjA5NF80MF9h cHBsaWNhdGlvbl9pZGVudGlmaWVyID0gMHgwNDsKIAogc3RhdGljIGNvbnN0IGludDY0X3QgbHVt aW5hbmNlX2RlbiA9IDE7CiBzdGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4g PSAxNTsKQEAgLTI3LDggKzMzLDggQEAgc3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9k ZW4gPSA0MDk1Owogc3RhdGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIz Owogc3RhdGljIGNvbnN0IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsKIAotaW50 IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1 cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBzaXplKQoraW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5h bWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyogcywgY29uc3QgdWludDhfdCogZGF0YSwK KwkJCQkJICAgICBpbnQgc2l6ZSkKIHsKICAgICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdi YzsKICAgICBpbnQgcmV0OwpAQCAtNDAsMTAgKzQ2LDEyIEBAIGludCBmZl9wYXJzZV9pdHVfdF90 MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4 X3QKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIHJldDsKIAotICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDEwKQorICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDgpCiAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICBzLT5hcHBsaWNhdGlvbl92ZXJz aW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwogCi0gICAgcy0+YXBwbGljYXRpb25fdmVyc2lvbiA9IGdl dF9iaXRzKGdiLCA4KTsKKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKICAgICBzLT5udW1fd2luZG93cyA9IGdldF9iaXRz KGdiLCAyKTsKIAogICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+bnVtX3dpbmRvd3Mg PiAzKSB7CkBAIC01NiwxNSArNjQsMTEgQEAgaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5h bWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdAogICAgIGZv ciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewogICAgICAgICAvLyBUaGUg Y29ybmVycyBhcmUgc2V0IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhlcmUuIFRoZXkgc2hvdWxk IGJlCiAgICAgICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgcmVsYXRpdmUgY29vcmRpbmF0ZXMgKGlu IFswLCAxXSkgaW4gdGhlIGRlY29kZXIuCi0gICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3Jt UGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwotICAgICAgICBwYXJhbXMtPndpbmRvd191 cHBlcl9sZWZ0X2Nvcm5lcl94ID0KLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKLSAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9 Ci0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAg IHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl94ID0KLSAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKLSAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93 ZXJfcmlnaHRfY29ybmVyX3kgPQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCAxNiksIDF9OworICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyogcGFyYW1z ID0gJnMtPnBhcmFtc1t3XTsKKyAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3Ju ZXJfeCA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxNiksIDEgfTsKKyAgICAgICAgcGFy YW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRz KGdiLCAxNiksIDEgfTsKKyAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVy X3ggPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTYpLCAxIH07CisgICAgICAgIHBhcmFt cy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl95ID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMo Z2IsIDE2KSwgMSB9OwogCiAgICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9IGdl dF9iaXRzKGdiLCAxNik7CiAgICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeSA9IGdl dF9iaXRzKGdiLCAxNik7CkBAIC03OCw4ICs4Miw3IEBAIGludCBmZl9wYXJzZV9pdHVfdF90MzVf dG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QK ICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7CiAKLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1 bWluYW5jZSA9Ci0gICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyksIGx1 bWluYW5jZV9kZW59OworICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVt aW5hbmNlID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHNfbG9uZyhnYiwgMjcpLCBsdW1pbmFuY2Vf ZGVuIH07CiAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5h bmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwogCiAgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7CkBAIC05OSwyMiArMTAyLDE5IEBA IGludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hE UlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJv d3M7IGkrKykgewogICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsK LSAgICAgICAgICAgICAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19s dW1pbmFuY2VbaV1bal0gPQotICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2Jp dHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5jZV9kZW59OworICAgICAgICAgICAgICAgIHMtPnRhcmdl dGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9IChBVlJhdGlv bmFsKSB7IGdldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVuIH07CiAgICAgICAgICAg ICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2lu ZG93czsgdysrKSB7Ci0gICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJh bXMgPSAmcy0+cGFyYW1zW3ddOworICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFt cyogcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgKDMgKiAxNyArIDE3ICsgNCkpCiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykgewotICAgICAgICAg ICAgcGFyYW1zLT5tYXhzY2xbaV0gPQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRf Yml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgICAgIHBhcmFtcy0+bWF4c2NsW2ldID0g KEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2RlbiB9OwogICAgICAgICB9Ci0g ICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQotICAgICAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59OworICAgICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4 cmdiID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2RlbiB9OwogICAgICAg ICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMo Z2IsIDQpOwogCiAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8CkBAIC0xMjMsMTQgKzEy MywxMyBAQCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5 bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzOyBpKyspIHsK ICAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0g Z2V0X2JpdHMoZ2IsIDcpOwotICAgICAgICAgICAgcGFyYW1zLT5kaXN0cmlidXRpb25fbWF4cmdi W2ldLnBlcmNlbnRpbGUgPQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJn YltpXS5wZXJjZW50aWxlID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rl biB9OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCiAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKIAotICAgICAgICBwYXJhbXMt PmZyYWN0aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwg ZnJhY3Rpb25fcGl4ZWxfZGVufTsKKyAgICAgICAgcGFyYW1zLT5mcmFjdGlvbl9icmlnaHRfcGl4 ZWxzID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rpb25fcGl4ZWxfZGVu IH07CiAgICAgfQogICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCiAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwpAQCAtMTUyLDE0ICsxNTEsMTMgQEAgaW50IGZmX3BhcnNl X2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29u c3QgdWludDhfdAogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7CiAg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewotICAgICAgICAgICAg ICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Ci0g ICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVt aW5hbmNlX2Rlbn07CisgICAgICAgICAgICAgICAgcy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFs X3BlYWtfbHVtaW5hbmNlW2ldW2pdID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDQpLCBw ZWFrX2x1bWluYW5jZV9kZW4gfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAog ICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewotICAgICAgICBB VkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKKyAg ICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMqIHBhcmFtcyA9ICZzLT5wYXJhbXNb d107CiAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCiAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKIApAQCAtMTY4LDE4ICsxNjYsMTUgQEAgaW50IGZmX3Bh cnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywg Y29uc3QgdWludDhfdAogICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCiAg ICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CiAKLSAgICAgICAgICAg IHBhcmFtcy0+a25lZV9wb2ludF94ID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDEyKSwga25lZV9wb2ludF9kZW59OwotICAgICAgICAgICAgcGFyYW1zLT5rbmVl X3BvaW50X3kgPQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIp LCBrbmVlX3BvaW50X2Rlbn07CisgICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9IChB VlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVuIH07CisgICAgICAg ICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAx MiksIGtuZWVfcG9pbnRfZGVuIH07CiAgICAgICAgICAgICBwYXJhbXMtPm51bV9iZXppZXJfY3Vy dmVfYW5jaG9ycyA9IGdldF9iaXRzKGdiLCA0KTsKIAogICAgICAgICAgICAgaWYgKGdldF9iaXRz X2xlZnQoZ2IpIDwgKHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQogICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogCiAgICAgICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzOyBpKysp IHsKLSAgICAgICAgICAgICAgICBwYXJhbXMtPmJlemllcl9jdXJ2ZV9hbmNob3JzW2ldID0KLSAg ICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksIGJlemllcl9h bmNob3JfZGVufTsKKyAgICAgICAgICAgICAgICBwYXJhbXMtPmJlemllcl9jdXJ2ZV9hbmNob3Jz W2ldID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDEwKSwgYmV6aWVyX2FuY2hvcl9kZW4g fTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xOTYsMyArMTkxLDIwOSBAQCBpbnQg ZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVz ICpzLCBjb25zdCB1aW50OF90CiAKICAgICByZXR1cm4gMDsKIH0KKworaW50IGF2X3BhcnNlX2Z1 bGxfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzKiBzLCBj b25zdCB1aW50OF90KiBkYXRhLAorCQkJCQkgICAgIGludCBzaXplKQoreworICAgIHVpbnQ4X3Qg Y291bnRyeV9jb2RlOworICAgIHVpbnQxNl90IHByb3ZpZGVyX2NvZGU7CisgICAgdWludDE2X3Qg cHJvdmlkZXJfb3JpZW50ZWRfY29kZTsKKyAgICB1aW50OF90IGFwcGxpY2F0aW9uX2lkZW50aWZp ZXI7CisgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7CisgICAgaW50IHJldCwgb2Zm c2V0OworCisgICAgaWYgKCFzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgaWYgKHNpemUgPCA3KQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKwor ICAgIHJldCA9IGluaXRfZ2V0X2JpdHM4KGdiLCBkYXRhLCBzaXplKTsKKyAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGNvdW50cnlfY29kZSA9IGdldF9iaXRzKGdi LCA4KTsKKyAgICBwcm92aWRlcl9jb2RlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKworICAgIGlmIChj b3VudHJ5X2NvZGUgIT0gdXNhX2NvdW50cnlfY29kZSB8fAorICAgICAgICBwcm92aWRlcl9jb2Rl ICE9IHNtcHRlX3Byb3ZpZGVyX2NvZGUpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOworCisgICAgLy8gQS8zNDEgQW1lbmRtZW50IOKAkyAyMDk0LTQwCisgICAgcHJvdmlkZXJf b3JpZW50ZWRfY29kZSA9IGdldF9iaXRzKGdiLCAxNik7CisgICAgYXBwbGljYXRpb25faWRlbnRp ZmllciA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBpZiAocHJvdmlkZXJfb3JpZW50ZWRfY29kZSAh PSBzbXB0ZTIwOTRfNDBfcHJvdmlkZXJfb3JpZW50ZWRfY29kZSB8fAorICAgICAgICBhcHBsaWNh dGlvbl9pZGVudGlmaWVyICE9IHNtcHRlMjA5NF80MF9hcHBsaWNhdGlvbl9pZGVudGlmaWVyKQor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIG9mZnNldCA9IGdldF9i aXRzX2NvdW50KGdiKSAvIDg7CisKKyAgICByZXR1cm4gZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5 bmFtaWNfaGRyMTBfcGx1cyhzLCBnYi0+YnVmZmVyICsgb2Zmc2V0LCBzaXplIC0gb2Zmc2V0KTsK K30KKworc3RhdGljIGludCBmZl9pdHVfdF90MzVfYnVmZmVyX3NpemUoY29uc3QgQVZEeW5hbWlj SERSUGx1cyogcykKK3sKKyAgICBpbnQgYml0X2NvdW50ID0gMDsKKyAgICBpbnQgdywgc2l6ZTsK KworICAgIGlmICghcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyA3IGJ5dGVzIGZvciBj b3VudHJ5IGNvZGUsIHByb3ZpZGVyIGNvZGUsIGFuZCB1c2VyIGlkZW50aWZpZXIuCisgICAgYml0 X2NvdW50ICs9IDU2OworCisgICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2lu ZG93cyA+IDMpCisgICAgICAgIHJldHVybiAwOworICAgIC8vIENvdW50IGJpdHMgZm9yIHdpbmRv dyBwYXJhbXMuCisgICAgYml0X2NvdW50ICs9IDIgKyAoKDE5ICogOCArIDEpICogKHMtPm51bV93 aW5kb3dzIC0gMSkpOworCisgICAgYml0X2NvdW50ICs9IDI4OworICAgIGlmIChzLT50YXJnZXRl ZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBp bnQgcm93cywgY29sczsKKyAgICAgICAgcm93cyA9IHMtPm51bV9yb3dzX3RhcmdldGVkX3N5c3Rl bV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgY29scyA9IHMtPm51bV9j b2xzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAg ICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29s cyA+IDI1KSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBiaXRfY291bnQgKz0g KDEwICsgcm93cyAqIGNvbHMgKiA0KTsKKyAgICB9CisgICAgZm9yICh3ID0gMDsgdyA8IHMtPm51 bV93aW5kb3dzOyB3KyspIHsKKyAgICAgICAgYml0X2NvdW50ICs9ICgzICogMTcgKyAxNyArIDQg KyAxMCkgKyAocy0+cGFyYW1zW3ddLm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVz ICogMjQpOworICAgIH0KKyAgICBiaXRfY291bnQrKzsKKworICAgIGlmIChzLT5tYXN0ZXJpbmdf ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBpbnQgcm93cywg Y29sczsKKyAgICAgICAgcm93cyA9IHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgY29scyA9IHMtPm51bV9jb2xzX21hc3RlcmluZ19k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8 IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpCisgICAgICAgICAg ICByZXR1cm4gMDsKKworICAgICAgICBiaXRfY291bnQgKz0gKDEwICsgcm93cyAqIGNvbHMgKiA0 KTsKKyAgICB9CisKKyAgICBmb3IgKHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewor ICAgICAgICBiaXRfY291bnQrKzsKKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50b25lX21hcHBp bmdfZmxhZykKKyAgICAgICAgICAgIGJpdF9jb3VudCArPSAoMjggKyBzLT5wYXJhbXNbd10ubnVt X2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApOworCisgICAgICAgIGJpdF9jb3VudCsrOworICAg ICAgICBpZiAocy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKQorICAg ICAgICAgICAgYml0X2NvdW50ICs9IDY7CisgICAgfQorICAgIHNpemUgPSBiaXRfY291bnQgLyA4 OworICAgIGlmIChiaXRfY291bnQgJSA4ICE9IDApCisgICAgICAgIHNpemUrKzsKKyAgICByZXR1 cm4gc2l6ZTsKK30KKworaW50IGF2X3dyaXRlX2R5bmFtaWNfaGRyMTBfcGx1c190b19mdWxsX2l0 dV90X3QzNShjb25zdCBBVkR5bmFtaWNIRFJQbHVzKiBzLCB1aW50OF90KiogZGF0YSwgc2l6ZV90 KiBzaXplKQoreworICAgIGludCB3LCBpLCBqOworICAgIFB1dEJpdENvbnRleHQgcGJjLCAqcGIg PSAmcGJjOworCisgICAgaWYgKCFzIHx8ICFzaXplKQorICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOworCisgICAgKnNpemUgPSBmZl9pdHVfdF90MzVfYnVmZmVyX3NpemUocyk7CisgICAg aWYgKCpzaXplIDw9IDApCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgKmRh dGEgPSBhdl9tYWxsb2N6KCpzaXplKTsKKyAgICBpbml0X3B1dF9iaXRzKHBiLCAqZGF0YSwgKnNp emUpOworICAgIGlmIChwdXRfYml0c19sZWZ0KHBiKSA8ICpzaXplKSB7CisgICAgICAgIGF2X2Zy ZWVwKGRhdGEpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKyAgICBw dXRfYml0cyhwYiwgOCwgdXNhX2NvdW50cnlfY29kZSk7CisKKyAgICBwdXRfYml0cyhwYiwgMTYs IHNtcHRlX3Byb3ZpZGVyX2NvZGUpOworICAgIHB1dF9iaXRzKHBiLCAxNiwgc21wdGUyMDk0XzQw X3Byb3ZpZGVyX29yaWVudGVkX2NvZGUpOworICAgIHB1dF9iaXRzKHBiLCA4LCBzbXB0ZTIwOTRf NDBfYXBwbGljYXRpb25faWRlbnRpZmllcik7CisgICAgcHV0X2JpdHMocGIsIDgsIHMtPmFwcGxp Y2F0aW9uX3ZlcnNpb24pOworCisgICAgcHV0X2JpdHMocGIsIDIsIHMtPm51bV93aW5kb3dzKTsK KworICAgIGZvciAodyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAgIHB1 dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94Lm51 bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeC5kZW4pOworICAgICAg ICBwdXRfYml0cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJf eS5udW0gLyBzLT5wYXJhbXNbd10ud2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kuZGVuKTsKKyAg ICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93X2xvd2VyX3JpZ2h0X2Nv cm5lcl94Lm51bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3guZGVu KTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93X2xvd2VyX3Jp Z2h0X2Nvcm5lcl95Lm51bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVy X3kuZGVuKTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uY2VudGVyX29m X2VsbGlwc2VfeCk7CisgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLmNlbnRl cl9vZl9lbGxpcHNlX3kpOworICAgICAgICBwdXRfYml0cyhwYiwgOCwgcy0+cGFyYW1zW3ddLnJv dGF0aW9uX2FuZ2xlKTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uc2Vt aW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBzZSk7CisgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwg cy0+cGFyYW1zW3ddLnNlbWltYWpvcl9heGlzX2V4dGVybmFsX2VsbGlwc2UpOworICAgICAgICBw dXRfYml0cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS5zZW1pbWlub3JfYXhpc19leHRlcm5hbF9lbGxp cHNlKTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDEsIHMtPnBhcmFtc1t3XS5vdmVybGFwX3Byb2Nl c3Nfb3B0aW9uKTsKKyAgICB9CisgICAgcHV0X2JpdHMocGIsIDI3LAorICAgICAgICAgICAgIHMt PnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5hbmNlLm51bSAqIGx1bWluYW5j ZV9kZW4gLyBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZS5kZW4p OworICAgIHB1dF9iaXRzKHBiLCAxLCBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxf cGVha19sdW1pbmFuY2VfZmxhZyk7CisgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7CisgICAgICAgIGludCByb3dzLCBjb2xzOwor ICAgICAgICByb3dzID0gcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFs X3BlYWtfbHVtaW5hbmNlOworICAgICAgICBjb2xzID0gcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lz dGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlOworICAgICAgICBwdXRfYml0cyhwYiwg NSwgcm93cyk7CisgICAgICAgIHB1dF9iaXRzKHBiLCA1LCBjb2xzKTsKKyAgICAgICAgZm9yIChp ID0gMDsgaSA8IHJvd3M7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbHM7 IGorKykgeworICAgICAgICAgICAgICAgIHB1dF9iaXRzKAorICAgICAgICAgICAgICAgICAgICBw YiwgNCwKKyAgICAgICAgICAgICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0 dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdLm51bSAqIHBlYWtfbHVtaW5hbmNlX2RlbiAvIHMtPnRh cmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXS5kZW4pOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAodyA9IDA7IHcgPCBzLT5u dW1fd2luZG93czsgdysrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAg ICAgICAgICAgIHB1dF9iaXRzKHBiLCAxNywKKyAgICAgICAgICAgICAgICAgICAgIHMtPnBhcmFt c1t3XS5tYXhzY2xbaV0ubnVtICogcmdiX2RlbiAvIHMtPnBhcmFtc1t3XS5tYXhzY2xbaV0uZGVu KTsKKyAgICAgICAgfQorICAgICAgICBwdXRfYml0cyhwYiwgMTcsCisgICAgICAgICAgICAgICAg IHMtPnBhcmFtc1t3XS5hdmVyYWdlX21heHJnYi5udW0gKiByZ2JfZGVuIC8gcy0+cGFyYW1zW3dd LmF2ZXJhZ2VfbWF4cmdiLmRlbik7CisgICAgICAgIHB1dF9iaXRzKHBiLCA0LCBzLT5wYXJhbXNb d10ubnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMpOworCisgICAgICAgIGZvciAo aSA9IDA7IGkgPCBzLT5wYXJhbXNbd10ubnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGls ZXM7IGkrKykgeworICAgICAgICAgICAgcHV0X2JpdHMocGIsIDcsIHMtPnBhcmFtc1t3XS5kaXN0 cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRhZ2UpOworICAgICAgICAgICAgcHV0X2JpdHMocGIs IDE3LAorICAgICAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlvbl9tYXhy Z2JbaV0ucGVyY2VudGlsZS5udW0gKiByZ2JfZGVuIC8gcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlv bl9tYXhyZ2JbaV0ucGVyY2VudGlsZS5kZW4pOworICAgICAgICB9CisgICAgICAgIHB1dF9iaXRz KHBiLCAxMCwKKyAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmZyYWN0aW9uX2JyaWdodF9w aXhlbHMubnVtICogZnJhY3Rpb25fcGl4ZWxfZGVuIC8gcy0+cGFyYW1zW3ddLmZyYWN0aW9uX2Jy aWdodF9waXhlbHMuZGVuKTsKKyAgICB9CisgICAgcHV0X2JpdHMocGIsIDEsIHMtPm1hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKTsKKyAgICBpZiAocy0+bWFzdGVy aW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKKyAgICAgICAgaW50IHJv d3MsIGNvbHM7CisgICAgICAgIHJvd3MgPSBzLT5udW1fcm93c19tYXN0ZXJpbmdfZGlzcGxheV9h Y3R1YWxfcGVha19sdW1pbmFuY2U7CisgICAgICAgIGNvbHMgPSBzLT5udW1fY29sc19tYXN0ZXJp bmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7CisgICAgICAgIHB1dF9iaXRzKHBiLCA1 LCByb3dzKTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDUsIGNvbHMpOworICAgICAgICBmb3IgKGkg PSAwOyBpIDwgcm93czsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY29sczsg aisrKSB7CisgICAgICAgICAgICAgICAgcHV0X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHBi LCA0LAorICAgICAgICAgICAgICAgICAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VbaV1bal0ubnVtICogcGVha19sdW1pbmFuY2VfZGVuIC8gcy0+bWFzdGVyaW5n X2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdLmRlbik7CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7 IHcrKykgeworICAgICAgICBwdXRfYml0cyhwYiwgMSwgcy0+cGFyYW1zW3ddLnRvbmVfbWFwcGlu Z19mbGFnKTsKKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50b25lX21hcHBpbmdfZmxhZykgewor ICAgICAgICAgICAgcHV0X2JpdHMocGIsIDEyLAorICAgICAgICAgICAgICAgICAgICAgcy0+cGFy YW1zW3ddLmtuZWVfcG9pbnRfeC5udW0gKiBrbmVlX3BvaW50X2RlbiAvIHMtPnBhcmFtc1t3XS5r bmVlX3BvaW50X3guZGVuKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKHBiLCAxMiwKKyAgICAgICAg ICAgICAgICAgICAgIHMtPnBhcmFtc1t3XS5rbmVlX3BvaW50X3kubnVtICoga25lZV9wb2ludF9k ZW4gLyBzLT5wYXJhbXNbd10ua25lZV9wb2ludF95LmRlbik7CisgICAgICAgICAgICBwdXRfYml0 cyhwYiwgNCwgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyk7CisgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9y czsgaSsrKSB7CisgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIsIDEwLAorICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPnBhcmFtc1t3XS5iZXppZXJfY3VydmVfYW5jaG9yc1tpXS5udW0gKiBi ZXppZXJfYW5jaG9yX2RlbiAvIHMtPnBhcmFtc1t3XS5iZXppZXJfY3VydmVfYW5jaG9yc1tpXS5k ZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHB1dF9iaXRzKHBiLCAxLCBz LT5wYXJhbXNbd10uY29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpOworICAgICAgICBpZiAo cy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKQorICAgICAgICAgICAg cHV0X2JpdHMocGIsIDYsCisgICAgICAgICAgICAgICAgICAgICBzLT5wYXJhbXNbd10uY29sb3Jf c2F0dXJhdGlvbl93ZWlnaHQubnVtICogc2F0dXJhdGlvbl93ZWlnaHRfZGVuIC8gcy0+cGFyYW1z W3ddLmNvbG9yX3NhdHVyYXRpb25fd2VpZ2h0LmRlbik7CisgICAgfQorICAgIGZsdXNoX3B1dF9i aXRzKHBiKTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1p Y19oZHIxMF9wbHVzLmggYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCmluZGV4IGNk N2FjZjA0MzIuLmQ1MmMzZTU1MmQgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIx MF9wbHVzLmgKKysrIGIvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaApAQCAtMjksNyAr MjksMjkgQEAKICAqCiAgKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5z IHRoZSBhcHByb3ByaWF0ZSBBVkVSUk9SLgogICovCi1pbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3Rv X2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpk YXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNp emUpOworaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5h bWljSERSUGx1cyogcywgY29uc3QgdWludDhfdCogZGF0YSwKKwkJCQkJICAgICBpbnQgc2l6ZSk7 CisKKy8qKgorICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVkIElUVS1UIFQuMzUgd2l0 aCBoZWFkZXIgdG8gQVZEeW5hbWljSERSUGx1cy4gQXQgZmlyc3QgY2hlY2sKKyAqIHRoZSBoZWFk ZXIgaWYgdGhlIHByb3ZpZGVyIGNvZGUgaXMgU01QVEUtMjA5NC00MC4gVGhlbiB3aWxsIHBhcnNl IHRoZSBkYXRhIHRvIEFWRHluYW1pY0hEUlBsdXMuCisgKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29u dGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KKyAqIEBwYXJh bSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEg d2l0aCBoZWFkZXIuCisgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5 dGVzLgorICoKKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhl IGFwcHJvcHJpYXRlIEFWRVJST1IuCisgKi8KK2ludCBhdl9wYXJzZV9mdWxsX2l0dV90X3QzNV90 b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyogcywgY29uc3QgdWludDhfdCog ZGF0YSwKKwkJCQkJICAgICBpbnQgc2l6ZSk7CisKKy8qKgorICogRW5jb2RlIGFuZCB3cml0ZSBB VkR5bmFtaWNIRFJQbHVzIHRvIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjMgd2l0 aCBoZWFkZXIgKGNvbnRhaW5pbmcgdGhlIHByb3ZpZGVyIGNvZGUpLgorICogQHBhcmFtIHMgQSBw b2ludGVyIGNvbnRhaW5pbmcgdGhlIEFWRHluYW1pY0hEUlBsdXMgc3RydWN0dXJlLgorICogQHBh cmFtIGRhdGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1UIFQuMzUgZGF0 YSB3aXRoIGhlYWRlci4KKyAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSByYXcgSVRVLVQg VC4zNSBkYXRhLgorICoKKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVy bnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCisgKi8KK2ludCBhdl93cml0ZV9keW5hbWljX2hk cjEwX3BsdXNfdG9fZnVsbF9pdHVfdF90MzUoY29uc3QgQVZEeW5hbWljSERSUGx1cyogcywgdWlu dDhfdCoqIGRhdGEsIHNpemVfdCogc2l6ZSk7CiAKICNlbmRpZiAvKiBBVkNPREVDX0RZTkFNSUNf SERSMTBfUExVU19IICovCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tYXRyb3NrYS5oIGIvbGli YXZmb3JtYXQvbWF0cm9za2EuaAppbmRleCA0NTA3N2VkMzNmLi5jM2NmOWVlZjUzIDEwMDY0NAot LS0gYS9saWJhdmZvcm1hdC9tYXRyb3NrYS5oCisrKyBiL2xpYmF2Zm9ybWF0L21hdHJvc2thLmgK QEAgLTM1OCw2ICszNTgsMTEgQEAgdHlwZWRlZiBlbnVtIHsKICAgTUFUUk9TS0FfVklERU9fUFJP SkVDVElPTl9UWVBFX01FU0ggICAgICAgICAgICAgICA9IDMsCiB9IE1hdHJvc2thVmlkZW9Qcm9q ZWN0aW9uVHlwZTsKIAordHlwZWRlZiBlbnVtIHsKKyAgTUFUUk9TS0FfQkxPQ0tfQUREX0lEX0RF RkFVTFQgICAgICAgICAgICAgICAgICAgICA9IDAsCisgIE1BVFJPU0tBX0JMT0NLX0FERF9JRF9E WU5BTUlDX0hEUjEwX1BMVVMgICAgICAgICAgPSA0LAorfSBNYXRyb3NrYUJsb2NrQWRkSUQ7CisK IC8qCiAgKiBNYXRyb3NrYSBDb2RlYyBJRHMsIHN0cmluZ3MKICAqLwpkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvbWF0cm9za2FkZWMuYyBiL2xpYmF2Zm9ybWF0L21hdHJvc2thZGVjLmMKaW5kZXgg MTZhM2U5MzYxMS4uN2ZhNDQ4M2JhNCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvbWF0cm9za2Fk ZWMuYworKysgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCkBAIC01MCw2ICs1MCw3IEBACiAj aW5jbHVkZSAibGliYXZ1dGlsL3NwaGVyaWNhbC5oIgogCiAjaW5jbHVkZSAibGliYXZjb2RlYy9i eXRlc3RyZWFtLmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCIK ICNpbmNsdWRlICJsaWJhdmNvZGVjL2ZsYWMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWc0 YXVkaW8uaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL3BhY2tldF9pbnRlcm5hbC5oIgpAQCAtMzYz NiwxNSArMzYzNywyOCBAQCBzdGF0aWMgaW50IG1hdHJvc2thX3BhcnNlX2ZyYW1lKE1hdHJvc2th RGVtdXhDb250ZXh0ICptYXRyb3NrYSwKICAgICBwa3QtPnN0cmVhbV9pbmRleCA9IHN0LT5pbmRl eDsKIAogICAgIGlmIChhZGRpdGlvbmFsX3NpemUgPiAwKSB7Ci0gICAgICAgIHVpbnQ4X3QgKnNp ZGVfZGF0YSA9IGF2X3BhY2tldF9uZXdfc2lkZV9kYXRhKHBrdCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfTUFUUk9TS0Ff QkxPQ0tBRERJVElPTkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhZGRpdGlvbmFsX3NpemUgKyA4KTsKLSAgICAgICAgaWYgKCFzaWRlX2Rh dGEpIHsKLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihwa3QpOwotICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgaWYgKGFkZGl0aW9uYWxfaWQgPT0gTUFUUk9T S0FfQkxPQ0tfQUREX0lEX0RZTkFNSUNfSERSMTBfUExVUykgeworICAgICAgICAgICAgQVZEeW5h bWljSERSUGx1cyBoZHIxMF9wbHVzOworICAgICAgICAgICAgaWYgKCFhdl9wYXJzZV9mdWxsX2l0 dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoJmhkcjEwX3BsdXMsIGFkZGl0aW9uYWwsIGFk ZGl0aW9uYWxfc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpzaWRlX2RhdGEgPSBh dl9wYWNrZXRfbmV3X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX0RZTkFNSUNfSERSMTBfUExV Uywgc2l6ZW9mKGhkcjEwX3BsdXMpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNpZGVfZGF0YSkg eworICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKyAgICAgICAgICAg ICAgICAgICAgYXZfZnJlZShwa3QpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtZW1jcHkoc2lk ZV9kYXRhLCAodWludDhfdCopKCZoZHIxMF9wbHVzKSwgc2l6ZW9mKGhkcjEwX3BsdXMpKTsKKyAg ICAgICAgICAgICAgICB9CisJfSBlbHNlIHsKKwkgICAgdWludDhfdCAqc2lkZV9kYXRhID0gYXZf cGFja2V0X25ld19zaWRlX2RhdGEocGt0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJ VElPTkFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWRkaXRpb25hbF9zaXplICsgOCk7CisgICAgICAgICAgICBpZiAoIXNpZGVfZGF0 YSkgeworICAgICAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihwa3QpOworICAgICAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBB Vl9XQjY0KHNpZGVfZGF0YSwgYWRkaXRpb25hbF9pZCk7CisgICAgICAgICAgICBtZW1jcHkoc2lk ZV9kYXRhICsgOCwgYWRkaXRpb25hbCwgYWRkaXRpb25hbF9zaXplKTsKICAgICAgICAgfQotICAg ICAgICBBVl9XQjY0KHNpZGVfZGF0YSwgYWRkaXRpb25hbF9pZCk7Ci0gICAgICAgIG1lbWNweShz aWRlX2RhdGEgKyA4LCBhZGRpdGlvbmFsLCBhZGRpdGlvbmFsX3NpemUpOwogICAgIH0KIAogICAg IGlmIChkaXNjYXJkX3BhZGRpbmcpIHsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21hdHJvc2th ZW5jLmMgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWVuYy5jCmluZGV4IGVkMWFkNTAzOWQuLjY2NWUz YjdlYzYgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21hdHJvc2thZW5jLmMKKysrIGIvbGliYXZm b3JtYXQvbWF0cm9za2FlbmMuYwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImxpYmF2dXRp bC9zdGVyZW8zZC5oIgogCiAjaW5jbHVkZSAibGliYXZjb2RlYy9hdjEuaCIKKyNpbmNsdWRlICJs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMveGlw aC5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIgogCkBAIC0yNDkwLDcgKzI0 OTEsNyBAQCBzdGF0aWMgaW50IG1rdl93cml0ZV9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQog CiAjaWYgQ09ORklHX01BVFJPU0tBX01VWEVSCiBzdGF0aWMgaW50IG1rdl9yZWZvcm1hdF9oMjY0 NShNYXRyb3NrYU11eENvbnRleHQgKm1rdiwgQVZJT0NvbnRleHQgKnBiLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgQVZQYWNrZXQgKnBrdCwgaW50ICpzaXplKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWUGFja2V0ICpwa3QsIGludCAqc2l6ZSkK IHsKICAgICBpbnQgcmV0OwogICAgIGlmIChwYikgewpAQCAtMjU5MSw4ICsyNTkyLDExIEBAIHN0 YXRpYyBpbnQgbWt2X3dyaXRlX2Jsb2NrKHZvaWQgKmxvZ2N0eCwgTWF0cm9za2FNdXhDb250ZXh0 ICpta3YsCiB7CiAgICAgdWludDhfdCAqc2lkZV9kYXRhOwogICAgIHNpemVfdCBzaWRlX2RhdGFf c2l6ZTsKLSAgICB1aW50NjRfdCBhZGRpdGlvbmFsX2lkOworICAgIHVpbnQ2NF90IGFkZGl0aW9u YWxfaWQgPSAwOwogICAgIHVuc2lnbmVkIHRyYWNrX251bWJlciA9IHRyYWNrLT50cmFja19udW07 CisgICAgaW50IGhhc19jb2RlY19zcGVjaWZpY19ibG9ja21vcmUgPSAwOworICAgIHVpbnQ4X3Qg KmhkcjEwX3BsdXNfaXR1X3RfdDM1OworICAgIHNpemVfdCBoZHIxMF9wbHVzX2l0dV90X3QzNV9z aXplID0gMDsKICAgICBFQk1MX1dSSVRFUig5KTsKIAogICAgIG1rdi0+Y3VyX2Jsb2NrLnRyYWNr ICA9IHRyYWNrOwpAQCAtMjYyNywyNCArMjYzMSwzOCBAQCBzdGF0aWMgaW50IG1rdl93cml0ZV9i bG9jayh2b2lkICpsb2djdHgsIE1hdHJvc2thTXV4Q29udGV4dCAqbWt2LAogICAgICAgICAgICAg ZWJtbF93cml0ZXJfYWRkX3NpbnQoJndyaXRlciwgTUFUUk9TS0FfSURfRElTQ0FSRFBBRERJTkcs IGRpc2NhcmRfcGFkZGluZyk7CiAgICAgICAgIH0KICAgICB9CisgICAgc2lkZV9kYXRhID0gYXZf cGFja2V0X2dldF9zaWRlX2RhdGEocGt0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFWX1BLVF9EQVRBX0RZTkFNSUNfSERSMTBfUExVUywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc2lkZV9kYXRhX3NpemUpOworICAgIGlmIChzaWRl X2RhdGEgJiYgc2lkZV9kYXRhX3NpemUgPiAwKQorICAgICAgICBhdl93cml0ZV9keW5hbWljX2hk cjEwX3BsdXNfdG9fZnVsbF9pdHVfdF90MzUoKEFWRHluYW1pY0hEUlBsdXMqKXNpZGVfZGF0YSwg JmhkcjEwX3BsdXNfaXR1X3RfdDM1LCAmaGRyMTBfcGx1c19pdHVfdF90MzVfc2l6ZSk7CiAKICAg ICBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJ VElPTkFMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaWRlX2Rh dGFfc2l6ZSk7Ci0gICAgaWYgKHNpZGVfZGF0YSAmJiBzaWRlX2RhdGFfc2l6ZSA+PSA4ICYmCi0g ICAgICAgIC8vIE9ubHkgdGhlIENvZGVjLXNwZWNpZmljIEJsb2NrTW9yZSAoaWQgPT0gMSkgaXMg Y3VycmVudGx5IHN1cHBvcnRlZC4KLSAgICAgICAgKGFkZGl0aW9uYWxfaWQgPSBBVl9SQjY0KHNp ZGVfZGF0YSkpID09IDEpIHsKKyAgICBoYXNfY29kZWNfc3BlY2lmaWNfYmxvY2ttb3JlID0gc2lk ZV9kYXRhICYmIHNpZGVfZGF0YV9zaXplID49IDggJiYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFkZGl0aW9uYWxfaWQgPSBBVl9SQjY0KHNpZGVfZGF0YSkpID09IDE7Cisg ICAgLy8gVGhlIENvZGVjLXNwZWNpZmljIEJsb2NrTW9yZSAoaWQgPT0gMSkgYW5kIEhEUjEwKyAo aWQgPT0gNCkgYXJlIHN1cHBvcnRlZC4KKyAgICBpZiAoaGFzX2NvZGVjX3NwZWNpZmljX2Jsb2Nr bW9yZSB8fCBoZHIxMF9wbHVzX2l0dV90X3QzNV9zaXplID4gMCkgewogICAgICAgICBlYm1sX3dy aXRlcl9vcGVuX21hc3Rlcigmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS0FERElUSU9OUyk7Ci0g ICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NL TU9SRSk7Ci0gICAgICAgIC8qIFVudGlsIGRiYzUwZjhhIG91ciBkZW11eGVyIHVzZWQgYSB3cm9u ZyBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAqIG9mIEJsb2NrQWRkSUQsIHNvIHdlIHdyaXRlIGl0 IHVuY29uZGl0aW9uYWxseS4gKi8KLSAgICAgICAgZWJtbF93cml0ZXJfYWRkX3VpbnQoJndyaXRl ciwgTUFUUk9TS0FfSURfQkxPQ0tBRERJRCwgYWRkaXRpb25hbF9pZCk7Ci0gICAgICAgIGVibWxf d3JpdGVyX2FkZF9iaW4gKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05BTCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhICsgOCwgc2lkZV9kYXRhX3NpemUg LSA4KTsKLSAgICAgICAgZWJtbF93cml0ZXJfY2xvc2VfbWFzdGVyKCZ3cml0ZXIpOworCWlmICho YXNfY29kZWNfc3BlY2lmaWNfYmxvY2ttb3JlKSB7CisgICAgICAgICAgICBlYm1sX3dyaXRlcl9v cGVuX21hc3Rlcigmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS01PUkUpOworICAgICAgICAgICAg LyogVW50aWwgZGJjNTBmOGEgb3VyIGRlbXV4ZXIgdXNlZCBhIHdyb25nIGRlZmF1bHQgdmFsdWUK KyAgICAgICAgICAgICAqIG9mIEJsb2NrQWRkSUQsIHNvIHdlIHdyaXRlIGl0IHVuY29uZGl0aW9u YWxseS4gKi8KKyAgICAgICAgICAgIGVibWxfd3JpdGVyX2FkZF91aW50KCZ3cml0ZXIsIE1BVFJP U0tBX0lEX0JMT0NLQURESUQsIGFkZGl0aW9uYWxfaWQpOworICAgICAgICAgICAgZWJtbF93cml0 ZXJfYWRkX2JpbiAoJndyaXRlciwgTUFUUk9TS0FfSURfQkxPQ0tBRERJVElPTkFMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhICsgOCwgc2lkZV9kYXRhX3NpemUg LSA4KTsKKyAgICAgICAgICAgIGVibWxfd3JpdGVyX2Nsb3NlX21hc3Rlcigmd3JpdGVyKTsKKwl9 CisJaWYgKGhkcjEwX3BsdXNfaXR1X3RfdDM1X3NpemUgPiAwKSB7CisgICAgICAgICAgICBlYm1s X3dyaXRlcl9vcGVuX21hc3Rlcigmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS01PUkUpOworICAg ICAgICAgICAgZWJtbF93cml0ZXJfYWRkX3VpbnQoJndyaXRlciwgTUFUUk9TS0FfSURfQkxPQ0tB RERJRCwgTUFUUk9TS0FfQkxPQ0tfQUREX0lEX0RZTkFNSUNfSERSMTBfUExVUyk7CisgICAgICAg ICAgICBlYm1sX3dyaXRlcl9hZGRfYmluICgmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS0FERElU SU9OQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZHIxMF9wbHVzX2l0dV90 X3QzNSwgaGRyMTBfcGx1c19pdHVfdF90MzVfc2l6ZSk7CisgICAgICAgICAgICBlYm1sX3dyaXRl cl9jbG9zZV9tYXN0ZXIoJndyaXRlcik7CisJfQogICAgICAgICBlYm1sX3dyaXRlcl9jbG9zZV9t YXN0ZXIoJndyaXRlcik7CiAgICAgfQotCiAgICAgaWYgKCFmb3JjZV9ibG9ja2dyb3VwICYmIHdy aXRlci5uYl9lbGVtZW50cyA9PSAyKSB7CiAgICAgICAgIC8qIE5vdGhpbmcgZXhjZXB0IHRoZSBC bG9ja0dyb3VwICsgQmxvY2suIENhbiB1c2UgYSBTaW1wbGVCbG9jay4gKi8KICAgICAgICAgd3Jp dGVyLmVsZW1lbnRzKys7ICAgIC8vIFNraXAgdGhlIEJsb2NrR3JvdXAuCmRpZmYgLS1naXQgYS90 ZXN0cy9mYXRlL21hdHJvc2thLm1hayBiL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFrCmluZGV4IDYz ZTgxZjEyMWIuLjA2OGYxNzhkOWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFr CisrKyBiL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFrCkBAIC0xNDgsNiArMTQ4LDEyIEBAIEZBVEVf TUFUUk9TS0FfRkZNUEVHX0ZGUFJPQkUtJChjYWxsIFRSQU5TQ09ERSwgUENNX1MzMkxFIE1QMiwg TUFUUk9TS0EsICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBBUkVTQU1QTEVfRklMVEVSICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTV9TMzJCRV9FTkNPREVSKSAgICAgICAg ICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSBmYXRlLW1hdHJvc2thLWgy NjQtcmVtdXgKKworIyBUaGUgaW5wdXQgZmlsZSBvZiB0aGUgZm9sbG93aW5nIHRlc3QgY29udGFp bnMgSERSMTArIG1ldGFkYXRhIGFuZCBzbyB0aGlzCisjIHRlc3QgdGVzdHMgY29ycmVjdCBlbmNv ZGluZyBhbmQgZGVjb2RpbmcgSERSMTArIGZvciBWUDkvTUtWLgorRkFURV9NQVRST1NLQV9GRlBS T0JFLSQoY2FsbCBBTExZRVMsIE1BVFJPU0tBX0RFTVVYRVIpICs9IGZhdGUtbWF0cm9za2EtaGRy MTAtcGx1cy1tZXRhZGF0YQorZmF0ZS1tYXRyb3NrYS1oZHIxMC1wbHVzLW1ldGFkYXRhOiBDTUQg PSBydW4gZmZwcm9iZSQoUFJPR1NTVUYpJChFWEVTVUYpIC1zaG93X2ZyYW1lcyAtc2VsZWN0X3N0 cmVhbXMgdiAtdiAwICQoVEFSR0VUX1NBTVBMRVMpL21rdi9oZHIxMF9wbHVzX3ZwOV9zYW1wbGUu bWt2CisKIGZhdGUtbWF0cm9za2EtaDI2NC1yZW11eDogQ01EID0gdHJhbnNjb2RlIG1wZWd0cyAk KFRBUkdFVF9TQU1QTEVTKS9oMjY0L2gyNjRfaW50cmFfZmlyc3Qtc21hbGwudHMgbWF0cm9za2Eg Ii1tYXAgMDowIC1tYXAgMCAtYzp2IGNvcHkgLXNhcjowIDM6NCAtYnNmOnY6MSBoMjY0X21ldGFk YXRhPWF1ZD1yZW1vdmU6ZGVsZXRlX2ZpbGxlcj0xIC1kaXNwb3NpdGlvbjp2ICtoZWFyaW5nX2lt cGFpcmVkIC1hZiBhcmVzYW1wbGUgLWM6YTowIHBjbV9zMzJsZSAtYzphOjEgcGNtX3MzMmJlIC1k aXNwb3NpdGlvbjphOjAgb3JpZ2luYWwgLW1ldGFkYXRhOnM6YTowIHRpdGxlPXN3ZWRpc2hfc2ls ZW5jZSAtbWV0YWRhdGE6czphOjEgdGl0bGU9bm9yd2VnaWFuX3NpbGVuY2UgLWRpc3Bvc2l0aW9u OmE6MSBkdWIiICItbWFwIDA6diIgIi1zaG93X2VudHJpZXMgc3RyZWFtPWluZGV4LGNvZGVjX25h bWU6c3RyZWFtX3RhZ3M9dGl0bGUsbGFuZ3VhZ2UiCiAKICMgVGVzdHMgd3JpdGluZyBCbG9ja0Fk ZGl0aW9uYWwgYW5kIEJsb2NrR3JvdXBzIHdpdGggUmVmZXJlbmNlQmxvY2sgZWxlbWVudHM7CmRp ZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9tYXRyb3NrYS1oZHIxMC1wbHVzLW1ldGFkYXRhIGIv dGVzdHMvcmVmL2ZhdGUvbWF0cm9za2EtaGRyMTAtcGx1cy1tZXRhZGF0YQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZjlhZDMzMWFkCi0tLSAvZGV2L251bGwKKysrIGIv dGVzdHMvcmVmL2ZhdGUvbWF0cm9za2EtaGRyMTAtcGx1cy1tZXRhZGF0YQpAQCAtMCwwICsxLDc0 IEBACitbRlJBTUVdCittZWRpYV90eXBlPXZpZGVvCitzdHJlYW1faW5kZXg9MAora2V5X2ZyYW1l PTEKK3B0cz0wCitwdHNfdGltZT0wLjAwMDAwMAorcGt0X2R0cz0wCitwa3RfZHRzX3RpbWU9MC4w MDAwMDAKK2Jlc3RfZWZmb3J0X3RpbWVzdGFtcD0wCitiZXN0X2VmZm9ydF90aW1lc3RhbXBfdGlt ZT0wLjAwMDAwMAorcGt0X2R1cmF0aW9uPTQwCitwa3RfZHVyYXRpb25fdGltZT0wLjA0MDAwMAor ZHVyYXRpb249NDAKK2R1cmF0aW9uX3RpbWU9MC4wNDAwMDAKK3BrdF9wb3M9NTYxCitwa3Rfc2l6 ZT0xMzM1MAord2lkdGg9MTI4MAoraGVpZ2h0PTcyMAorcGl4X2ZtdD15dXY0MjBwMTBsZQorc2Ft cGxlX2FzcGVjdF9yYXRpbz0xOjEKK3BpY3RfdHlwZT1JCitjb2RlZF9waWN0dXJlX251bWJlcj0w CitkaXNwbGF5X3BpY3R1cmVfbnVtYmVyPTAKK2ludGVybGFjZWRfZnJhbWU9MAordG9wX2ZpZWxk X2ZpcnN0PTAKK3JlcGVhdF9waWN0PTAKK2NvbG9yX3JhbmdlPXR2Citjb2xvcl9zcGFjZT11bmtu b3duCitjb2xvcl9wcmltYXJpZXM9dW5rbm93bgorY29sb3JfdHJhbnNmZXI9dW5rbm93bgorY2hy b21hX2xvY2F0aW9uPXVuc3BlY2lmaWVkCitbU0lERV9EQVRBXQorc2lkZV9kYXRhX3R5cGU9SERS IER5bmFtaWMgTWV0YWRhdGEgU01QVEUyMDk0LTQwIChIRFIxMCspCithcHBsaWNhdGlvbiB2ZXJz aW9uPTEKK251bV93aW5kb3dzPTEKK3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVt aW5hbmNlPTQwMC8xCittYXhzY2w9MzM0MC8xMDAwMDAKK21heHNjbD0yODcwLzEwMDAwMAorbWF4 c2NsPTI3MjAvMTAwMDAwCithdmVyYWdlX21heHJnYj01MTAvMTAwMDAwCitudW1fZGlzdHJpYnV0 aW9uX21heHJnYl9wZXJjZW50aWxlcz05CitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9 MQorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTMwLzEwMDAwMAorZGlzdHJpYnV0aW9u X21heHJnYl9wZXJjZW50YWdlPTUKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZT0yOTQw LzEwMDAwMAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50YWdlPTEwCitkaXN0cmlidXRpb25f bWF4cmdiX3BlcmNlbnRpbGU9MjU1LzEwMDAwMAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50 YWdlPTI1CitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGU9NzAvMTAwMDAwCitkaXN0cmli dXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9NTAKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGls ZT0xMzQwLzEwMDAwMAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50YWdlPTc1CitkaXN0cmli dXRpb25fbWF4cmdiX3BlcmNlbnRpbGU9MTYwMC8xMDAwMDAKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2Jf cGVyY2VudGFnZT05MAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTE4NTAvMTAwMDAw CitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9OTUKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2Jf cGVyY2VudGlsZT0xOTUwLzEwMDAwMAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50YWdlPTk5 CitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGU9Mjk0MC8xMDAwMDAKK2ZyYWN0aW9uX2Jy aWdodF9waXhlbHM9MS8xMDAwCitrbmVlX3BvaW50X3g9MC80MDk1CitrbmVlX3BvaW50X3k9MC80 MDk1CitudW1fYmV6aWVyX2N1cnZlX2FuY2hvcnM9OQorYmV6aWVyX2N1cnZlX2FuY2hvcnM9MTAy LzEwMjMKK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTIwNS8xMDIzCitiZXppZXJfY3VydmVfYW5jaG9y cz0zMDcvMTAyMworYmV6aWVyX2N1cnZlX2FuY2hvcnM9NDEwLzEwMjMKK2Jlemllcl9jdXJ2ZV9h bmNob3JzPTUxMi8xMDIzCitiZXppZXJfY3VydmVfYW5jaG9ycz02MTQvMTAyMworYmV6aWVyX2N1 cnZlX2FuY2hvcnM9NzE3LzEwMjMKK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTgxOS8xMDIzCitiZXpp ZXJfY3VydmVfYW5jaG9ycz05MjIvMTAyMworWy9TSURFX0RBVEFdCitbL0ZSQU1FXQotLSAKMi4z Ny4yLjc4OS5nNjE4MzM3NzIyNC1nb29nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==