From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 5BDD550278 for ; Thu, 10 Jul 2025 10:26:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 55B3568FB59; Thu, 10 Jul 2025 13:26:07 +0300 (EEST) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 19C6968EAA1 for ; Thu, 10 Jul 2025 13:26:01 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3a4f72cba73so1223253f8f.1 for ; Thu, 10 Jul 2025 03:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752143160; x=1752747960; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hqgM+ZKtvS0CoXAHIzNM2XmVCMRw3WGvQJxT6v7cp4o=; b=cZvMjPLIojU/YMspkHmdp9EUV+MLKYmoTniH9yLfoEIIg5pcxXOZXifQ/UhRU152+G Z+D5voK059bAM1wQR7+KKJ0FtezBoxl0gnOwNvSBd8RVhwDi5qxDAUtOiZxSySjHyA/d RWs6zWYQhWEqljwMFxS2Sl7f/13LmJT8Hbf4bFG+D+61OeFiaKo/ViZVqtJPCt1WionG Re/rJ02gzL2WW4euM+BF1fdu7ZyGLmqlzH4r/CdQ+L5HdzJw1v3MfGegWCt5LsjOIt+a jEEmUizD03N2vNYt7VXeS0hYwrVFADm+K1LPRPbR8FrSEN0x+kOKRdgfN+Od++ojRE5T Xj3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752143160; x=1752747960; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hqgM+ZKtvS0CoXAHIzNM2XmVCMRw3WGvQJxT6v7cp4o=; b=adxVFwjgLI/Eo4qYz0TKtGCX6h3aa3es3IqE94g/7qXtctv6wsDyLts53XzPLcIhgl rEF9IrpzcuxdILYzAIyF97ZlSsy5WnKPb9M8my/Gvfr1t+OgBHwAhkY7mgyaakz6g5UH x9OFvp05O5xQVtQiMzdHc4SSNAkuWrNz+1Hlh9On57dfpPc6jDFm7WydQU6IT1+JXjh9 ml8eF67xZt+UUMIqF73bFvi5VkNiNTskfY2uD5FijHF/3vrGSJZkBSdTIlDpDxX4CzMe BDfho267MMwfYGTx7LimWIeNFEE39HP1cJTL23Y0wFLPeAEg4Dd8qYBxj/P5GYTDMHgs o8Zg== X-Gm-Message-State: AOJu0YxdUOH3llExX9ZixmPxIpGpaMxzIuNi9X4y0HHnLw5ueqR/zhoE KLWCCH1N+d4wKhuKu1RbR57yEIAHXdMVFXT+nSHtgS2k0x79qMrwNk0hIbzfsA== X-Gm-Gg: ASbGncva+UOXfle1OlTKUCiL4fTJYmF+zbenEyEDvrTGjOg613th7S8s8NKMvB8lwWc mpXcg/oNqzkK5zDjP3AiBI19TF7Ix+7JwWHfAAl/pAVgDMHiaPpPbGJjyvCOuMdu4dIR3mcA2fx UlF2c5Y9VtQLJd0RP2/hCB1Ga1HBRWUwQkm/5JpHLrkO8CeSv545kcse3xZ7J889rWFBk3rdZjw 7GGzaq2UP518IT+QqigN9J4ZZcBSIaxzWvZP02bnXorJWcOIK69sMkKUyb3FMcaVOaWFXvQenOu yZRfAjlMwqI6KYFvRPQHghGnWMz1h3ltbEqK7YvFFFUrVru6DUq2EfWlCZB4K8PsWGUofJpkMFo Zylq05hPYKCXI7rvOQu/HJ1MjZUswB96/LVVZQg== X-Google-Smtp-Source: AGHT+IEQV7uGMND/CeUrWaand4JkMFn0Tu9UresD/uhedr0cDXiAn4pAswNgSf2FPZflENNK/uSMZA== X-Received: by 2002:a5d:5f54:0:b0:3b4:9909:6fbd with SMTP id ffacd0b85a97d-3b5e7f2f825mr2404529f8f.29.1752143159541; Thu, 10 Jul 2025 03:25:59 -0700 (PDT) Received: from thinkpad.fritz.box (host-79-47-79-16.retail.telecomitalia.it. [79.47.79.16]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3b5e8e1e3bdsm1452809f8f.81.2025.07.10.03.25.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Jul 2025 03:25:58 -0700 (PDT) From: Vittorio Palmisano To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Jul 2025 12:25:41 +0200 Message-ID: <20250710102543.1002696-1-vpalmisano@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] Whisper audio filter 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: Vittorio Palmisano 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: SXQgYWRkcyBhIG5ldyBhdWRpbyBmaWx0ZXIgZm9yIHJ1bm5pbmcgYXVkaW8gdHJhbnNjcmlwdGlv bnMgd2l0aCB0aGUgd2hpc3BlciBtb2RlbC4KRG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXMgYXJl IGluY2x1ZGVkIGludG8gdGhlIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTogVml0dG9yaW8gUGFsbWlz YW5vIDx2cGFsbWlzYW5vQGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAg fCAgIDUgKwogZG9jL2ZpbHRlcnMudGV4aSAgICAgICAgIHwgMTAxICsrKysrKysrCiBsaWJhdmZp bHRlci9NYWtlZmlsZSAgICAgfCAgIDIgKwogbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jIHwgNDg4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZmaWx0ZXIvYWxs ZmlsdGVycy5jIHwgICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgNTk4IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9hZl93aGlzcGVyLmMKCmRpZmYgLS1naXQgYS9j b25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMmNjYWZlN2MyMC4uNTczZGZjNjdkYyAxMDA3NTUK LS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMzM3LDYgKzMzNyw3IEBAIEV4dGVy bmFsIGxpYnJhcnkgc3VwcG9ydDoKICAgLS1lbmFibGUtdmFwb3Vyc3ludGggICAgIGVuYWJsZSBW YXBvdXJTeW50aCBkZW11eGVyIFtub10KICAgLS1kaXNhYmxlLXhsaWIgICAgICAgICAgIGRpc2Fi bGUgeGxpYiBbYXV0b2RldGVjdF0KICAgLS1kaXNhYmxlLXpsaWIgICAgICAgICAgIGRpc2FibGUg emxpYiBbYXV0b2RldGVjdF0KKyAgLS1lbmFibGUtd2hpc3BlciAgICAgICAgIGVuYWJsZSB3aGlz cGVyIGZpbHRlciBbbm9dCiAKICAgVGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgcHJvdmlkZSB2YXJp b3VzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmZWF0dXJlczoKICAgLS1kaXNhYmxlLWFtZiAgICAg ICAgICAgIGRpc2FibGUgQU1GIHZpZGVvIGVuY29kaW5nIGNvZGUgW2F1dG9kZXRlY3RdCkBAIC0y MDAzLDYgKzIwMDQsNyBAQCBFWFRFUk5BTF9MSUJSQVJZX0xJU1Q9IgogICAgIHBvY2tldHNwaGlu eAogICAgIHZhcG91cnN5bnRoCiAgICAgdnVsa2FuX3N0YXRpYworICAgIHdoaXNwZXIKICIKIAog SFdBQ0NFTF9BVVRPREVURUNUX0xJQlJBUllfTElTVD0iCkBAIC00MDU5LDYgKzQwNjEsNyBAQCB4 c3RhY2tfcXN2X2ZpbHRlcl9kZXBzPSJsaWJtZngiCiB4c3RhY2tfcXN2X2ZpbHRlcl9zZWxlY3Q9 InFzdnZwcCIKIHBhZF92YWFwaV9maWx0ZXJfZGVwcz0idmFhcGlfMSIKIGRyYXdib3hfdmFhcGlf ZmlsdGVyX2RlcHM9InZhYXBpXzEiCit3aGlzcGVyX2ZpbHRlcl9kZXBzPSJ3aGlzcGVyIgogCiAj IGV4YW1wbGVzCiBhdmlvX2h0dHBfc2VydmVfZmlsZXNfZGVwcz0iYXZmb3JtYXQgYXZ1dGlsIGZv cmsiCkBAIC03MTA4LDYgKzcxMTEsOCBAQCBlbmFibGVkIGxpYnZvX2FtcndiZW5jICAgICYmIHJl cXVpcmUgbGlidm9fYW1yd2JlbmMgdm8tYW1yd2JlbmMvZW5jX2lmLmggRV9JRl9pbgogZW5hYmxl ZCBsaWJ2b3JiaXMgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlidm9yYmlzIHZvcmJp cyB2b3JiaXMvY29kZWMuaCB2b3JiaXNfaW5mb19pbml0ICYmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ2b3JiaXNlbmMgdm9yYmlzZW5jIHZvcmJp cy92b3JiaXNlbmMuaCB2b3JiaXNfZW5jb2RlX2luaXQKIAorZW5hYmxlZCB3aGlzcGVyICAgICAg ICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgd2hpc3BlciAid2hpc3BlciA+PSAxLjcuNSIgd2hp c3Blci5oIHdoaXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMKKwogZW5hYmxlZCBsaWJ2 cHggICAgICAgICAgICAmJiB7CiAgICAgZW5hYmxlZCBsaWJ2cHhfdnA4X2RlY29kZXIgJiYgewog ICAgICAgICBjaGVja19wa2dfY29uZmlnIGxpYnZweF92cDhfZGVjb2RlciAidnB4ID49IDEuNC4w IiAidnB4L3ZweF9kZWNvZGVyLmggdnB4L3ZwOGR4LmgiIHZweF9jb2RlY192cDhfZHggfHwKZGlm ZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCmluZGV4IGVkMjk1 NmZlNzUuLmMwMGU3MzQ3OGYgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRleGkKKysrIGIvZG9j L2ZpbHRlcnMudGV4aQpAQCAtNzY4Miw2ICs3NjgyLDEwNyBAQCBUaGVyZSBhcmUgNiBzYW1wbGVz IGF0IC00IGRCLCA2MiBhdCAtNSBkQiwgMjg2IGF0IC02IGRCLCBldGMuCiBJbiBvdGhlciB3b3Jk cywgcmFpc2luZyB0aGUgdm9sdW1lIGJ5ICs0IGRCIGRvZXMgbm90IGNhdXNlIGFueSBjbGlwcGlu ZywKIHJhaXNpbmcgaXQgYnkgKzUgZEIgY2F1c2VzIGNsaXBwaW5nIGZvciA2IHNhbXBsZXMsIGV0 Yy4KIAorQGFuY2hvcnt3aGlzcGVyfQorQHNlY3Rpb24gd2hpc3BlcgorCitJdCBydW5zIGEgYXV0 b21hdGljIHNwZWVjaCByZWNvZ25pdGlvbiB1c2luZyB0aGUgT3BlbkFJ4oCZcyBXaGlzcGVyIG1v ZGVsLgorCitJdCByZXF1aXJlcyB0aGUgd2hpc3Blci5jcHAgbGlicmFyeSAoaHR0cHM6Ly9naXRo dWIuY29tL2dnbWwtb3JnL3doaXNwZXIuY3BwKSAKK2FzIGEgcHJlLXJlcXVpc2l0ZS4gQWZ0ZXIg aW5zdGFsbGluZyB0aGUgbGlicmFyeSBpdCBjYW4gYmUgZW5hYmxlZCB1c2luZzoKK0Bjb2Rley4v Y29uZmlndXJlIC0tZW5hYmxlLXdoaXNwZXJ9LgorCitUaGUgZmlsdGVyIGhhcyBmb2xsb3dpbmcg b3B0aW9uczoKKworQHRhYmxlIEBvcHRpb24KK0BpdGVtIG1vZGVsCitUaGUgZmlsZSBwYXRoIG9m IHRoZSBkb3dubG9hZGVkIHdoaXNwZXIuY3BwIG1vZGVsIChtYW5kYXRvcnkpLgorCitAaXRlbSBs YW5ndWFnZQorVGhlIGxhbmd1YWdlIHRvIHVzZSBmb3IgdHJhbnNjcmlwdGlvbiAoJ2F1dG8nIGZv ciBhdXRvLWRldGVjdCkuCitEZWZhdWx0IHZhbHVlOiBAY29kZXsiYXV0byJ9CisKK0BpdGVtIHF1 ZXVlCitUaGUgbWF4aW11bSBzaXplIGluIG1pbGxpc2Vjb25kcyB0aGF0IHdpbGwgYmUgcXVldWVk IGludG8gdGhlIGZpbHRlciBiZWZvcmUgCitwcm9jZXNzaW5nIHRoZSBhdWRpbyB3aXRoIHdoaXNw ZXIKK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIzMDAwIn0KKworQGl0ZW0gdXNlX2dwdQorSWYgdGhl IEdQVSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7InRy dWUifQorCitAaXRlbSBncHVfZGV2aWNlCitUaGUgR1BVIGRldmljZSB0byB1c2UuCitEZWZhdWx0 IHZhbHVlOiBAY29kZXsiMCJ9CisKK0BpdGVtIGRlc3RpbmF0aW9uCitJZiBzZXQsIHRoZSB0cmFu c2NyaXB0aW9uIG91dHB1dCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNwZWNpZmllZCBmaWxlIG9yIFVS TAorKHVzZSBvbmUgb2YgdGhlIEZGbXBlZyBBVklPIHByb3RvY29scyk7IG90aGVyd2lzZSwgdGhl IG91dHB1dCB3aWxsIGJlIGxvZ2dlZCBhcworaW5mbyBtZXNzYWdlcy4KK1RoZSBvdXRwdXQgd2ls bCBhbHNvIGJlIHNldCBpbiB0aGUgImxhdmZpLndoaXNwZXIudGV4dCIgZnJhbWUgbWV0YWRhdGEu CisKK0BpdGVtIGZvcm1hdAorVGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBzdHJpbmc7IGl0IGNvdWxk IGJlICJ0ZXh0IiAob25seSB0aGUgdHJhbnNjcmliZWQgdGV4dAord2lsbCBiZSBzZW50IHRvIHRo ZSBkZXN0aW5hdGlvbiksICJzcnQiIChzdWJ0aXRsZSBmb3JtYXQpIG9yICJqc29uIi4KK0RlZmF1 bHQgdmFsdWU6IEBjb2RleyJ0ZXh0In0KKworQGl0ZW0gdmFkX21vZGVsCitQYXRoIHRvIHRoZSBW QUQgbW9kZWwgZmlsZS4gSWYgc2V0LCB0aGUgZmlsdGVyIHdpbGwgbG9hZCBhbiBhZGRpdGlvbmFs IHZvaWNlCithY3Rpdml0eSBkZXRlY3Rpb24gbW9kdWxlIChodHRwczovL2dpdGh1Yi5jb20vc25h a2VyczQvc2lsZXJvLXZhZCkgdGhhdCB3aWxsIGJlCit1c2VkIHRvIGZyYWdtZW50IHRoZSBhdWRp byBxdWV1ZTsgdXNlIHRoaXMgb3B0aW9uIHNldHRpbmcgYSB2YWxpZCBwYXRoIG9idGFpbmVkCitm cm9tIHRoZSB3aGlzcGVyLmNwcCByZXBvc2l0b3J5IChlLmcuICIuLi93aGlzcGVyLmNwcC9tb2Rl bHMvZ2dtbC1zaWxlcm8tdjUuMS4yLmJpbiIpCithbmQgaW5jcmVhc2UgdGhlIHF1ZXVlIHBhcmFt ZXRlciB0byBhbiBoaWdoZXIgdmFsdWUgKGUuZy4gMTAwMDApCisKK0BpdGVtIHZhZF90aHJlc2hv bGQKK1RoZSBWQUQgdGhyZXNob2xkIHRvIHVzZS4KK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIwLjUi fQorCitAaXRlbSB2YWRfbWluX3NwZWVjaF9kdXJhdGlvbgorVGhlIG1pbmltdW0gVkFEIHNwZWFr aW5nIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4KK0RlZmF1bHQgdmFsdWU6IEBjb2RleyI1MCJ9 CisKK0BpdGVtIHZhZF9taW5fc2lsZW5jZV9kdXJhdGlvbgorVGhlIG1pbmltdW0gVkFEIHNpbGVu Y2UgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7IjUwMCJ9 CisKK0BlbmQgdGFibGUKKworQHN1YnNlY3Rpb24gRXhhbXBsZXMKK0BpdGVtaXplCisKK0BpdGVt CitSdW4gYSB0cmFuc2NyaXB0aW9uIHdpdGggc3J0IGZpbGUgZ2VuZXJhdGlvbjoKK0BleGFtcGxl CitmZm1wZWcgLWkgaW5wdXQubXA0IC12biAtYWYgImFmb3JtYXQ9c2FtcGxlX3JhdGVzPTE2MDAw OmNoYW5uZWxfbGF5b3V0cz1tb25vLHdoaXNwZXI9bW9kZWw9Li4vd2hpc3Blci5jcHAvbW9kZWxz L2dnbWwtYmFzZS5lbi5iaW5cCis6bGFuZ3VhZ2U9ZW5cCis6cXVldWU9MzAwMFwKKzpkZXN0aW5h dGlvbj1vdXRwdXQuc3J0XAorOmZvcm1hdD1zcnQiIC1mIG51bGwgLQorQGVuZCBleGFtcGxlCisK K0BpdGVtCitSdW4gYSB0cmFuc2NyaXB0aW9uIGFuZCBzZW5kIHRoZSBvdXRwdXQgaW4gSlNPTiBm b3JtYXQgdG8gYW4gSFRUUCBzZXJ2aWNlOgorQGV4YW1wbGUKK2ZmbXBlZyAtaSBpbnB1dC5tcDQg LXZuIC1hZiAiYWZvcm1hdD1zYW1wbGVfcmF0ZXM9MTYwMDA6Y2hhbm5lbF9sYXlvdXRzPW1vbm8s d2hpc3Blcj1tb2RlbD0uLi93aGlzcGVyLmNwcC9tb2RlbHMvZ2dtbC1iYXNlLmVuLmJpblwKKzps YW5ndWFnZT1lblwKKzpxdWV1ZT0zMDAwXAorOmRlc3RpbmF0aW9uPWh0dHBcXDovL2xvY2FsaG9z dFxcOjMwMDBcCis6Zm9ybWF0PWpzb24nIC1mIG51bGwgLQorQGVuZCBleGFtcGxlCisKK0BpdGVt CitUcmFuc2NyaWJlIHRoZSBtaWNyb3Bob25lIGlucHV0IHVzaW5nIHRoZSBWQUQgb3B0aW9uOgor QGV4YW1wbGUKK2ZmbXBlZyAtbG9nbGV2ZWwgd2FybmluZyAtZiBwdWxzZSAtaSBkZWZhdWx0IFwK Ky1hZiAnaGlnaHBhc3M9Zj0yMDAsbG93cGFzcz1mPTMwMDAsYWZvcm1hdD1zYW1wbGVfcmF0ZXM9 MTYwMDA6Y2hhbm5lbF9sYXlvdXRzPW1vbm8sd2hpc3Blcj1tb2RlbD0uLi93aGlzcGVyLmNwcC9t b2RlbHMvZ2dtbC1tZWRpdW0uYmluXAorOmxhbmd1YWdlPWVuXAorOnF1ZXVlPTEwMDAwXAorOmRl c3RpbmF0aW9uPS1cCis6Zm9ybWF0PWpzb25cCis6dmFkX21vZGVsPS4uL3doaXNwZXIuY3BwL21v ZGVscy9nZ21sLXNpbGVyby12NS4xLjIuYmluJyAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitA ZW5kIGl0ZW1pemUKKwogQGMgbWFuIGVuZCBBVURJTyBGSUxURVJTCiAKIEBjaGFwdGVyIEF1ZGlv IFNvdXJjZXMKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZmaWx0ZXIv TWFrZWZpbGUKaW5kZXggOWU5MTUzZjViMC4uZTEzMzQyMmNhNCAxMDA2NDQKLS0tIGEvbGliYXZm aWx0ZXIvTWFrZWZpbGUKKysrIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKQEAgLTE4OCw2ICsxODgs OCBAQCBPQkpTLSQoQ09ORklHX0hJTEJFUlRfRklMVEVSKSAgICAgICAgICAgICAgICArPSBhc3Jj X2hpbGJlcnQubwogT0JKUy0kKENPTkZJR19TSU5DX0ZJTFRFUikgICAgICAgICAgICAgICAgICAg Kz0gYXNyY19zaW5jLm8KIE9CSlMtJChDT05GSUdfU0lORV9GSUxURVIpICAgICAgICAgICAgICAg ICAgICs9IGFzcmNfc2luZS5vCiAKK09CSlMtJChDT05GSUdfV0hJU1BFUl9GSUxURVIpICAgICAg ICAgICAgICAgICs9IGFmX3doaXNwZXIubworCiBPQkpTLSQoQ09ORklHX0FOVUxMU0lOS19GSUxU RVIpICAgICAgICAgICAgICArPSBhc2lua19hbnVsbHNpbmsubwogCiAjIHZpZGVvIGZpbHRlcnMK ZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FmX3doaXNwZXIuYyBiL2xpYmF2ZmlsdGVyL2FmX3do aXNwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MWQ5MGE3N2Q3 Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jCkBAIC0wLDAgKzEs NDg4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFZpdHRvcmlvIFBhbG1pc2FubworICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImxp YmF2dXRpbC9hdnV0aWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisjaW5jbHVkZSAi bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3NhbXBsZWZt dC5oIgorI2luY2x1ZGUgImxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgiCisjaW5jbHVkZSAibGliYXZm aWx0ZXIvYXVkaW8uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5jbHVkZSAibGli YXZ1dGlsL2F2c3RyaW5nLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCisjaW5j bHVkZSAibGliYXZmb3JtYXQvYXZpby5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC90aHJlYWQuaCIK KworI2luY2x1ZGUgImZvcm1hdHMuaCIKKworI2luY2x1ZGUgIndoaXNwZXIuaCIKKwordHlwZWRl ZiBzdHJ1Y3QgV2hpc3BlckNvbnRleHQgeworICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOworICAg IGNoYXIgKm1vZGVsX3BhdGg7CisgICAgY2hhciAqbGFuZ3VhZ2U7CisgICAgYm9vbCB1c2VfZ3B1 OworICAgIGludCBncHVfZGV2aWNlOworICAgIGNoYXIgKnZhZF9tb2RlbF9wYXRoOworICAgIGZs b2F0IHZhZF90aHJlc2hvbGQ7CisgICAgaW50IHZhZF9taW5fc3BlZWNoX2R1cmF0aW9uOworICAg IGludCB2YWRfbWluX3NpbGVuY2VfZHVyYXRpb247CisKKyAgICBpbnQgcXVldWU7CisgICAgY2hh ciAqZGVzdGluYXRpb247CisgICAgY2hhciAqZm9ybWF0OworCisgICAgc3RydWN0IHdoaXNwZXJf Y29udGV4dCAqY3R4X3dzcDsKKyAgICBzdHJ1Y3Qgd2hpc3Blcl92YWRfY29udGV4dCAqY3R4X3Zh ZDsKKyAgICBzdHJ1Y3Qgd2hpc3Blcl92YWRfcGFyYW1zIHZhZF9wYXJhbXM7CisKKyAgICBmbG9h dCAqYXVkaW9fYnVmZmVyOworICAgIGludCBhdWRpb19idWZmZXJfcXVldWVfc2l6ZTsKKyAgICBp bnQgYXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZTsKKyAgICBpbnQgYXVkaW9fYnVmZmVyX3ZhZF9zaXpl OworCisgICAgaW50IGVvZjsKKyAgICBpbnQ2NF90IG5leHRfcHRzOworCisgICAgQVZJT0NvbnRl eHQgKmF2aW9fY29udGV4dDsKKyAgICBpbnQgaW5kZXg7CisgICAgaW50NjRfdCB0aW1lc3RhbXA7 Cit9IFdoaXNwZXJDb250ZXh0OworCitzdGF0aWMgdm9pZCBjYl9sb2dfZGlzYWJsZShlbnVtIGdn bWxfbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICp0ZXh0LCB2b2lkICp1c2VyX2RhdGEpCit7 Cit9CisKK3N0YXRpYyBpbnQgaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAgICBXaGlz cGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKworICAgIGdnbWxfYmFja2VuZF9sb2FkX2Fs bCgpOworICAgIHdoaXNwZXJfbG9nX3NldChjYl9sb2dfZGlzYWJsZSwgTlVMTCk7CisKKyAgICAv LyBJbml0IHdoaXNwZXIgY29udGV4dAorICAgIGlmICghd2N0eC0+bW9kZWxfcGF0aCkgeworICAg ICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAiTm8gd2hpc3Bl ciBtb2RlbCBwYXRoIHNwZWNpZmllZC4gVXNlIHRoZSAnbW9kZWwnIG9wdGlvbi5cbiIpOworICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHN0cnVjdCB3aGlzcGVy X2NvbnRleHRfcGFyYW1zIHBhcmFtcyA9CisgICAgICAgIHdoaXNwZXJfY29udGV4dF9kZWZhdWx0 X3BhcmFtcygpOworICAgIHBhcmFtcy51c2VfZ3B1ID0gd2N0eC0+dXNlX2dwdTsKKyAgICBwYXJh bXMuZ3B1X2RldmljZSA9IHdjdHgtPmdwdV9kZXZpY2U7CisKKyAgICB3Y3R4LT5jdHhfd3NwID0K KyAgICAgICAgd2hpc3Blcl9pbml0X2Zyb21fZmlsZV93aXRoX3BhcmFtcyh3Y3R4LT5tb2RlbF9w YXRoLCBwYXJhbXMpOworICAgIGlmICh3Y3R4LT5jdHhfd3NwID09IE5VTEwpIHsKKyAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbml0 aWFsaXplIHdoaXNwZXIgY29udGV4dCBmcm9tIG1vZGVsOiAlc1xuIiwKKyAgICAgICAgICAgICAg IHdjdHgtPm1vZGVsX3BhdGgpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOworICAgIH0K KworICAgIC8vIEluaXQgVkFEIG1vZGVsIGNvbnRleHQKKyAgICBpZiAod2N0eC0+dmFkX21vZGVs X3BhdGgpIHsKKyAgICAgICAgc3RydWN0IHdoaXNwZXJfdmFkX2NvbnRleHRfcGFyYW1zIGN0eF9w YXJhbXMgPQorICAgICAgICAgICAgd2hpc3Blcl92YWRfZGVmYXVsdF9jb250ZXh0X3BhcmFtcygp OworICAgICAgICBjdHhfcGFyYW1zLm5fdGhyZWFkcyA9IDQ7CisgICAgICAgIC8vIGN0eF9wYXJh bXMudXNlX2dwdSA9IHdjdHgtPnVzZV9ncHU7IFRPRE8gKHNlZTogd2hpc3Blcl92YWRfaW5pdF9j b250ZXh0KQorICAgICAgICBjdHhfcGFyYW1zLmdwdV9kZXZpY2UgPSB3Y3R4LT5ncHVfZGV2aWNl OworICAgICAgICB3Y3R4LT5jdHhfdmFkID0KKyAgICAgICAgICAgIHdoaXNwZXJfdmFkX2luaXRf ZnJvbV9maWxlX3dpdGhfcGFyYW1zKHdjdHgtPnZhZF9tb2RlbF9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X3BhcmFtcyk7CisKKyAg ICAgICAgd2N0eC0+dmFkX3BhcmFtcyA9IHdoaXNwZXJfdmFkX2RlZmF1bHRfcGFyYW1zKCk7Cisg ICAgICAgIHdjdHgtPnZhZF9wYXJhbXMudGhyZXNob2xkID0gd2N0eC0+dmFkX3RocmVzaG9sZDsK KyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcy5taW5fc3BlZWNoX2R1cmF0aW9uX21zID0KKyAgICAg ICAgICAgIHdjdHgtPnZhZF9taW5fc3BlZWNoX2R1cmF0aW9uOworICAgICAgICB3Y3R4LT52YWRf cGFyYW1zLm1pbl9zaWxlbmNlX2R1cmF0aW9uX21zID0KKyAgICAgICAgICAgIHdjdHgtPnZhZF9t aW5fc2lsZW5jZV9kdXJhdGlvbjsKKyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcy5tYXhfc3BlZWNo X2R1cmF0aW9uX3MgPQorICAgICAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUg LyAxMDAwLjBmOworICAgICAgICB3Y3R4LT52YWRfcGFyYW1zLnNwZWVjaF9wYWRfbXMgPSAwOwor ICAgICAgICB3Y3R4LT52YWRfcGFyYW1zLnNhbXBsZXNfb3ZlcmxhcCA9IDA7CisgICAgfQorICAg IC8vIEluaXQgYnVmZmVyCisgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUgPQorICAg ICAgICBXSElTUEVSX1NBTVBMRV9SQVRFICogd2N0eC0+cXVldWUgLyAxMDAwOworICAgIHdjdHgt PmF1ZGlvX2J1ZmZlciA9CisgICAgICAgIGF2X21hbGxvYyh3Y3R4LT5hdWRpb19idWZmZXJfcXVl dWVfc2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIGlmICghd2N0eC0+YXVkaW9fYnVmZmVyKQor ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgd2N0eC0+bmV4dF9wdHMgPSBB Vl9OT1BUU19WQUxVRTsKKworICAgIGlmICh3Y3R4LT5kZXN0aW5hdGlvbiAmJiBzdHJjbXAoIiIs IHdjdHgtPmRlc3RpbmF0aW9uKSkgeworICAgICAgICBjb25zdCBjaGFyICpkc3QgPSB3Y3R4LT5k ZXN0aW5hdGlvbjsKKyAgICAgICAgaWYgKCFzdHJjbXAoIi0iLCBkc3QpKQorICAgICAgICAgICAg ZHN0ID0gInBpcGU6MSI7CisgICAgICAgIGludCByZXQgPSBhdmlvX29wZW4oJndjdHgtPmF2aW9f Y29udGV4dCwgZHN0LCBBVklPX0ZMQUdfV1JJVEUpOworCisgICAgICAgIGlmIChyZXQgPCAwKSB7 CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgb3BlbiAl czogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgd2N0eC0+ZGVzdGluYXRpb24sIGF2X2VycjJz dHIocmV0KSk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAg d2N0eC0+YXZpb19jb250ZXh0LT5kaXJlY3QgPSBBVklPX0ZMQUdfRElSRUNUOworICAgIH0KKwor ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLAorICAgICAgICAgICAiV2hpc3BlciBmaWx0ZXIg aW5pdGlhbGl6ZWQ6IG1vZGVsOiAlcyBsYW5nOiAlcyBxdWV1ZTogJWQgbXNcbiIsCisgICAgICAg ICAgIHdjdHgtPm1vZGVsX3BhdGgsIHdjdHgtPmxhbmd1YWdlLCB3Y3R4LT5xdWV1ZSk7CisKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdW5pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4 KQoreworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworCisgICAgaWYgKHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPiAwKSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgIlJlbWFpbmluZyBhdWRpbyBidWZmZXIgJWQg c2FtcGxlcyAoJWQgc2Vjb25kcykgYWZ0ZXIgc3RvcHBpbmdcbiIsCisgICAgICAgICAgICAgICB3 Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplLAorICAgICAgICAgICAgICAgd2N0eC0+YXVkaW9f YnVmZmVyX2ZpbGxfc2l6ZSAvIFdISVNQRVJfU0FNUExFX1JBVEUpOworICAgIH0KKworICAgIGlm ICh3Y3R4LT5jdHhfdmFkKSB7CisgICAgICAgIHdoaXNwZXJfdmFkX2ZyZWUod2N0eC0+Y3R4X3Zh ZCk7CisgICAgICAgIHdjdHgtPmN0eF92YWQgPSBOVUxMOworICAgIH0KKworICAgIGlmICh3Y3R4 LT5jdHhfd3NwKSB7CisgICAgICAgIHdoaXNwZXJfZnJlZSh3Y3R4LT5jdHhfd3NwKTsKKyAgICAg ICAgd2N0eC0+Y3R4X3dzcCA9IE5VTEw7CisgICAgfQorCisgICAgYXZfZnJlZXAoJndjdHgtPmF1 ZGlvX2J1ZmZlcik7CisKKyAgICBpZiAod2N0eC0+YXZpb19jb250ZXh0KQorICAgICAgICBhdmlv X2Nsb3NlcCgmd2N0eC0+YXZpb19jb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQgcnVuX3RyYW5z Y3JpcHRpb24oQVZGaWx0ZXJDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBVkRpY3Rpb25hcnkgKiptZXRhZGF0YSwgaW50IGVuZF9wb3MpCit7CisgICAgV2hpc3Bl ckNvbnRleHQgKndjdHggPSBjdHgtPnByaXY7CisgICAgZW5kX3BvcyA9IEZGTUlOKGVuZF9wb3Ms IHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUpOworCisgICAgaWYgKCF3Y3R4LT5jdHhfd3Nw IHx8IGVuZF9wb3MgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgZHVyYXRpb24g PSAoZmxvYXQpIGVuZF9wb3MgLyBXSElTUEVSX1NBTVBMRV9SQVRFOworCisgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0lORk8sCisgICAgICAgICAgICJydW4gdHJhbnNjcmlwdGlvbiAlZC8lZCBzYW1w bGVzICglLjJmIHNlY29uZHMpLi4uXG4iLCBlbmRfcG9zLAorICAgICAgICAgICB3Y3R4LT5hdWRp b19idWZmZXJfZmlsbF9zaXplLCBkdXJhdGlvbik7CisKKyAgICBzdHJ1Y3Qgd2hpc3Blcl9mdWxs X3BhcmFtcyBwYXJhbXMgPQorICAgICAgICB3aGlzcGVyX2Z1bGxfZGVmYXVsdF9wYXJhbXMoV0hJ U1BFUl9TQU1QTElOR19HUkVFRFkpOworICAgIHBhcmFtcy5sYW5ndWFnZSA9IHdjdHgtPmxhbmd1 YWdlOworICAgIHBhcmFtcy5wcmludF9zcGVjaWFsID0gMDsKKyAgICBwYXJhbXMucHJpbnRfcHJv Z3Jlc3MgPSAwOworICAgIHBhcmFtcy5wcmludF9yZWFsdGltZSA9IDA7CisgICAgcGFyYW1zLnBy aW50X3RpbWVzdGFtcHMgPSAwOworCisgICAgaWYgKHdoaXNwZXJfZnVsbCh3Y3R4LT5jdHhfd3Nw LCBwYXJhbXMsIHdjdHgtPmF1ZGlvX2J1ZmZlciwgZW5kX3BvcykgIT0KKyAgICAgICAgMCkgewor ICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAiRmFpbGVk IHRvIHByb2Nlc3MgYXVkaW8gd2l0aCB3aGlzcGVyLmNwcFxuIik7CisgICAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICBjb25zdCBpbnQgbl9zZWdtZW50cyA9IHdoaXNwZXJfZnVsbF9uX3NlZ21l bnRzKHdjdHgtPmN0eF93c3ApOworICAgIGNoYXIgKnNlZ21lbnRzX3RleHQgPSBOVUxMOworCisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuX3NlZ21lbnRzOyArK2kpIHsKKyAgICAgICAgY29uc3Qg Ym9vbCB0dXJuID0KKyAgICAgICAgICAgIHdoaXNwZXJfZnVsbF9nZXRfc2VnbWVudF9zcGVha2Vy X3R1cm5fbmV4dCh3Y3R4LT5jdHhfd3NwLCBpKTsKKyAgICAgICAgY29uc3QgaW50NjRfdCB0MCA9 CisgICAgICAgICAgICB3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRfdDAod2N0eC0+Y3R4X3dzcCwg aSkgKiAxMDsKKyAgICAgICAgY29uc3QgaW50NjRfdCB0MSA9CisgICAgICAgICAgICB3aGlzcGVy X2Z1bGxfZ2V0X3NlZ21lbnRfdDEod2N0eC0+Y3R4X3dzcCwgaSkgKiAxMDsKKyAgICAgICAgY29u c3QgY2hhciAqdGV4dCA9IHdoaXNwZXJfZnVsbF9nZXRfc2VnbWVudF90ZXh0KHdjdHgtPmN0eF93 c3AsIGkpOworICAgICAgICBjaGFyICp0ZXh0X2NsZWFuZWQgPSBhdl9zdHJpcmVwbGFjZSh0ZXh0 ICsgMSwgIltCTEFOS19BVURJT10iLCAiIik7CisKKyAgICAgICAgaWYgKGF2X3N0cm5sZW4odGV4 dF9jbGVhbmVkLCAxKSA9PSAwKSB7CisgICAgICAgICAgICBhdl9mcmVlcCgmdGV4dF9jbGVhbmVk KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19JTkZPLCAiICBbJWxkLSVsZCVzXTogXCIlc1wiXG4iLAorICAgICAgICAgICAgICAg d2N0eC0+dGltZXN0YW1wICsgdDAsIHdjdHgtPnRpbWVzdGFtcCArIHQxLAorICAgICAgICAgICAg ICAgdHVybiA/ICIgKHR1cm4pIiA6ICIiLCB0ZXh0X2NsZWFuZWQpOworCisgICAgICAgIGlmIChz ZWdtZW50c190ZXh0KSB7CisgICAgICAgICAgICBjaGFyICpuZXdfdGV4dCA9CisgICAgICAgICAg ICAgICAgYXZfYXNwcmludGYoIiVzJXMiLCBzZWdtZW50c190ZXh0LCB0ZXh0X2NsZWFuZWQpOwor ICAgICAgICAgICAgYXZfZnJlZXAoJnNlZ21lbnRzX3RleHQpOworICAgICAgICAgICAgc2VnbWVu dHNfdGV4dCA9IG5ld190ZXh0OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlZ21lbnRz X3RleHQgPSBhdl9zdHJkdXAodGV4dF9jbGVhbmVkKTsKKworICAgICAgICBpZiAod2N0eC0+YXZp b19jb250ZXh0KSB7CisgICAgICAgICAgICBjb25zdCBpbnQ2NF90IHN0YXJ0X3QgPSB3Y3R4LT50 aW1lc3RhbXAgKyB0MDsKKyAgICAgICAgICAgIGNvbnN0IGludDY0X3QgZW5kX3QgPSB3Y3R4LT50 aW1lc3RhbXAgKyB0MTsKKyAgICAgICAgICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisKKyAgICAgICAg ICAgIGlmICghYXZfc3RyY2FzZWNtcCh3Y3R4LT5mb3JtYXQsICJzcnQiKSkgeworICAgICAgICAg ICAgICAgIGJ1ZiA9CisgICAgICAgICAgICAgICAgICAgIGF2X2FzcHJpbnRmCisgICAgICAgICAg ICAgICAgICAgICgiJWRcbiUwMmxkOiUwMmxkOiUwMmxkLiUwM2xkIC0tPiAlMDJsZDolMDJsZDol MDJsZC4lMDNsZFxuJXNcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHdjdHgtPmluZGV4LCBz dGFydF90IC8gMzYwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgIChzdGFydF90IC8gNjAwMDAp ICUgNjAsIChzdGFydF90IC8gMTAwMCkgJSA2MCwKKyAgICAgICAgICAgICAgICAgICAgIHN0YXJ0 X3QgJSAxMDAwLCBlbmRfdCAvIDM2MDAwMDAsIChlbmRfdCAvIDYwMDAwKSAlIDYwLAorICAgICAg ICAgICAgICAgICAgICAgKGVuZF90IC8gMTAwMCkgJSA2MCwgZW5kX3QgJSAxMDAwLCB0ZXh0X2Ns ZWFuZWQpOworICAgICAgICAgICAgfSBlbHNlIGlmICghYXZfc3RyY2FzZWNtcCh3Y3R4LT5mb3Jt YXQsICJqc29uIikpIHsKKyAgICAgICAgICAgICAgICBidWYgPQorICAgICAgICAgICAgICAgICAg ICBhdl9hc3ByaW50ZgorICAgICAgICAgICAgICAgICAgICAoIntcInN0YXJ0XCI6JWxkLFwiZW5k XCI6JWxkLFwidGV4dFwiOlwiJXNcIixcInR1cm5cIjolc31cbiIsCisgICAgICAgICAgICAgICAg ICAgICBzdGFydF90LCBlbmRfdCwgdGV4dF9jbGVhbmVkLAorICAgICAgICAgICAgICAgICAgICAg dHVybiA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg ICAgICAgYnVmID0gYXZfc3RyZHVwKHRleHRfY2xlYW5lZCk7CisKKyAgICAgICAgICAgIGlmIChi dWYpIHsKKyAgICAgICAgICAgICAgICBhdmlvX3dyaXRlKHdjdHgtPmF2aW9fY29udGV4dCwgYnVm LCBzdHJsZW4oYnVmKSk7CisgICAgICAgICAgICAgICAgYXZfZnJlZXAoJmJ1Zik7CisgICAgICAg ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhdl9mcmVlcCgmdGV4dF9jbGVhbmVkKTsKKyAg ICB9CisKKyAgICB3Y3R4LT5pbmRleCsrOworICAgIHdjdHgtPnRpbWVzdGFtcCArPSAoaW50NjRf dCkgKGR1cmF0aW9uICogMTAwMCk7CisKKyAgICBpZiAobWV0YWRhdGEgJiYgc2VnbWVudHNfdGV4 dCkgeworICAgICAgICBhdl9kaWN0X3NldChtZXRhZGF0YSwgImxhdmZpLndoaXNwZXIudGV4dCIs IHNlZ21lbnRzX3RleHQsIDApOworICAgICAgICBjaGFyICpkdXJhdGlvbl90ZXh0ID0gYXZfYXNw cmludGYoIiVmIiwgZHVyYXRpb24pOworICAgICAgICBhdl9kaWN0X3NldChtZXRhZGF0YSwgImxh dmZpLndoaXNwZXIuZHVyYXRpb24iLCBkdXJhdGlvbl90ZXh0LCAwKTsKKyAgICAgICAgYXZfZnJl ZXAoJmR1cmF0aW9uX3RleHQpOworICAgIH0KKyAgICBhdl9mcmVlcCgmc2VnbWVudHNfdGV4dCk7 CisKKyAgICBtZW1jcHkod2N0eC0+YXVkaW9fYnVmZmVyLCB3Y3R4LT5hdWRpb19idWZmZXIgKyBl bmRfcG9zLAorICAgICAgICAgICBlbmRfcG9zICogc2l6ZW9mKGZsb2F0KSk7CisgICAgd2N0eC0+ YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSAtPSBlbmRfcG9zOworICAgIHdjdHgtPmF1ZGlvX2J1ZmZl cl92YWRfc2l6ZSA9IHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemU7Cit9CisKK3N0YXRpYyBp bnQgZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICpmcmFtZSkKK3sK KyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IGlubGluay0+ZHN0OworICAgIFdoaXNwZXJDb250 ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworICAgIEFWRmlsdGVyTGluayAqb3V0bGluayA9IGN0eC0+ b3V0cHV0c1swXTsKKyAgICBBVkRpY3Rpb25hcnkgKiptZXRhZGF0YSA9ICZmcmFtZS0+bWV0YWRh dGE7CisKKyAgICBjb25zdCBpbnQgc2FtcGxlcyA9IGZyYW1lLT5uYl9zYW1wbGVzOworICAgIGNv bnN0IGZsb2F0ICppbnB1dF9kYXRhID0gKGNvbnN0IGZsb2F0ICopIGZyYW1lLT5kYXRhWzBdOwor CisgICAgaWYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgKyBzYW1wbGVzID4KKyAgICAg ICAgd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUpIHsKKyAgICAgICAgcnVuX3RyYW5zY3Jp cHRpb24oY3R4LCBtZXRhZGF0YSwgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSk7CisgICAg fQorCisgICAgbWVtY3B5KHdjdHgtPmF1ZGlvX2J1ZmZlciArIHdjdHgtPmF1ZGlvX2J1ZmZlcl9m aWxsX3NpemUsIGlucHV0X2RhdGEsCisgICAgICAgICAgIHNhbXBsZXMgKiBzaXplb2YoZmxvYXQp KTsKKyAgICB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplICs9IHNhbXBsZXM7CisKKyAgICBp ZiAod2N0eC0+Y3R4X3ZhZAorICAgICAgICAmJiAod2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6 ZSAtIHdjdHgtPmF1ZGlvX2J1ZmZlcl92YWRfc2l6ZSkgPj0KKyAgICAgICAgV0hJU1BFUl9TQU1Q TEVfUkFURSAqICh3Y3R4LT52YWRfbWluX3NwZWVjaF9kdXJhdGlvbiArCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2N0eC0+dmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uKSAvIDEwMDAp IHsKKyAgICAgICAgc3RydWN0IHdoaXNwZXJfdmFkX3NlZ21lbnRzICpzZWdtZW50cyA9CisgICAg ICAgICAgICB3aGlzcGVyX3ZhZF9zZWdtZW50c19mcm9tX3NhbXBsZXMod2N0eC0+Y3R4X3ZhZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3R4LT52YWRf cGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdj dHgtPmF1ZGlvX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3Y3R4LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdWRpb19idWZmZXJfZmlsbF9zaXplKTsKKyAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVy X3ZhZF9zaXplID0gd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZTsKKworICAgICAgICBpZiAo IXNlZ21lbnRzKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJmYWls ZWQgdG8gZGV0ZWN0IFZBRFxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQg bl9zZWdtZW50cyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRzX25fc2VnbWVudHMoc2VnbWVudHMpOwor CisgICAgICAgICAgICBpZiAobl9zZWdtZW50cyA+IDApIHsKKyAgICAgICAgICAgICAgICBjb25z dCBpbnQ2NF90IHN0YXJ0X21zID0KKyAgICAgICAgICAgICAgICAgICAgd2hpc3Blcl92YWRfc2Vn bWVudHNfZ2V0X3NlZ21lbnRfdDAoc2VnbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fc2VnbWVudHMgLQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSAqIDEwOworICAg ICAgICAgICAgICAgIGNvbnN0IGludDY0X3QgZW5kX21zID0KKyAgICAgICAgICAgICAgICAgICAg d2hpc3Blcl92YWRfc2VnbWVudHNfZ2V0X3NlZ21lbnRfdDEoc2VnbWVudHMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fc2VnbWVudHMg LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAxKSAqIDEwOworICAgICAgICAgICAgICAgIGludCBlbmRfcG9zID0gKGludCkgKGVuZF9tcyAq IFdISVNQRVJfU0FNUExFX1JBVEUgLyAxMDAwKTsKKworICAgICAgICAgICAgICAgIGlmIChlbmRf cG9zIDwgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSkgeworICAgICAgICAgICAgICAgICAg ICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJW QUQgZGV0ZWN0ZWQgJWQgc2VnbWVudHMsIHN0YXJ0OiAlbGQgbXMsIGVuZDogJWxkIG1zIChidWZm ZXI6ICVkIG1zKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fc2VnbWVudHMsIHN0 YXJ0X21zLCBlbmRfbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwICogd2N0eC0+ YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXSElT UEVSX1NBTVBMRV9SQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuX3RyYW5zY3JpcHRpb24o Y3R4LCBtZXRhZGF0YSwgZW5kX3Bvcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorCisgICAgICAgICAgICB3aGlzcGVyX3ZhZF9mcmVlX3NlZ21lbnRzKHNlZ21lbnRzKTsKKyAg ICAgICAgfQorICAgIH0gZWxzZSBpZiAod2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSA+PQor ICAgICAgICAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUpCisgICAgICAgIHJ1 bl90cmFuc2NyaXB0aW9uKGN0eCwgbWV0YWRhdGEsIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3Np emUpOworCisgICAgd2N0eC0+bmV4dF9wdHMgPQorICAgICAgICBmcmFtZS0+cHRzICsgYXZfcmVz Y2FsZV9xKGZyYW1lLT5uYl9zYW1wbGVzLCAoQVZSYXRpb25hbCkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDEsIGlubGluay0+c2FtcGxlX3JhdGV9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCBpbmxpbmstPnRpbWVfYmFzZSk7CisgICAgcmV0dXJuIGZm X2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBmcmFtZSk7Cit9CisKK3N0YXRpYyBpbnQgcHVzaF9sYXN0 X2ZyYW1lKEFWRmlsdGVyTGluayAqb3V0bGluaykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0 eCA9IG91dGxpbmstPnNyYzsKKyAgICBXaGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsK KyAgICBBVkZyYW1lICpmcmFtZTsKKyAgICBpbnQgbl9vdXQgPSAxOworCisgICAgaWYgKGN0eC0+ aXNfZGlzYWJsZWQgfHwgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSA9PSAwKQorICAgICAg ICByZXR1cm4gMDsKKyAgICBmcmFtZSA9IGZmX2dldF9hdWRpb19idWZmZXIob3V0bGluaywgbl9v dXQpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisK KyAgICBhdl9zYW1wbGVzX3NldF9zaWxlbmNlKGZyYW1lLT5leHRlbmRlZF9kYXRhLCAwLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgbl9vdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBmcmFtZS0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBmcmFtZS0+Zm9ybWF0KTsKKworICAgIGZy YW1lLT5wdHMgPSB3Y3R4LT5uZXh0X3B0czsKKyAgICBpZiAod2N0eC0+bmV4dF9wdHMgIT0gQVZf Tk9QVFNfVkFMVUUpCisgICAgICAgIHdjdHgtPm5leHRfcHRzICs9IGF2X3Jlc2NhbGVfcShuX291 dCwgKEFWUmF0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEsIG91dGxpbmstPnNhbXBsZV9yYXRlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLCBvdXRsaW5rLT50aW1lX2Jhc2UpOworCisgICAgcnVuX3RyYW5zY3JpcHRpb24o Y3R4LCAmZnJhbWUtPm1ldGFkYXRhLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKTsKKwor ICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJhbWUpOworfQorCitzdGF0aWMg aW50IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEFWRmlsdGVyTGluayAq aW5saW5rID0gY3R4LT5pbnB1dHNbMF07CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4 LT5vdXRwdXRzWzBdOworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworICAg IGludDY0X3QgcHRzOworICAgIGludCBzdGF0dXM7CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9T VEFUVVNfQkFDSyhvdXRsaW5rLCBpbmxpbmspOworCisgICAgaWYgKCF3Y3R4LT5lb2YgJiYgZmZf aW5saW5rX3F1ZXVlZF9mcmFtZXMoaW5saW5rKSkgeworICAgICAgICBBVkZyYW1lICpmcmFtZSA9 IE5VTEw7CisgICAgICAgIGludCByZXQ7CisKKyAgICAgICAgcmV0ID0gZmZfaW5saW5rX2NvbnN1 bWVfZnJhbWUoaW5saW5rLCAmZnJhbWUpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAg ICAgIHJldHVybiByZXQ7CisgICAgICAgIGlmIChyZXQgPiAwKQorICAgICAgICAgICAgcmV0dXJu IGZpbHRlcl9mcmFtZShpbmxpbmssIGZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoIXdjdHgtPmVv ZiAmJiBmZl9pbmxpbmtfYWNrbm93bGVkZ2Vfc3RhdHVzKGlubGluaywgJnN0YXR1cywgJnB0cykp CisgICAgICAgIHdjdHgtPmVvZiA9IHN0YXR1cyA9PSBBVkVSUk9SX0VPRjsKKworICAgIGlmICh3 Y3R4LT5lb2YpIHsKKyAgICAgICAgcHVzaF9sYXN0X2ZyYW1lKG91dGxpbmspOworCisgICAgICAg IGZmX291dGxpbmtfc2V0X3N0YXR1cyhvdXRsaW5rLCBBVkVSUk9SX0VPRiwgd2N0eC0+bmV4dF9w dHMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9X QU5URUQob3V0bGluaywgaW5saW5rKTsKKworICAgIHJldHVybiBGRkVSUk9SX05PVF9SRUFEWTsK K30KKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoV2hpc3BlckNvbnRleHQsIHgpCisjZGVm aW5lIEZMQUdTIEFWX09QVF9GTEFHX0FVRElPX1BBUkFNIHwgQVZfT1BUX0ZMQUdfRklMVEVSSU5H X1BBUkFNCisKK3N0YXRpYyBjb25zdCBBVk9wdGlvbiB3aGlzcGVyX29wdGlvbnNbXSA9IHsKKyAg ICB7ICJtb2RlbCIsICJQYXRoIHRvIHRoZSB3aGlzcGVyLmNwcCBtb2RlbCBmaWxlIiwgT0ZGU0VU KG1vZGVsX3BhdGgpLAorICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsLmZsYWdzID0gRkxBR1MgfSwK KyAgICB7ICJsYW5ndWFnZSIsICJMYW5ndWFnZSBmb3IgdHJhbnNjcmlwdGlvbiAoJ2F1dG8nIGZv ciBhdXRvLWRldGVjdCkiLAorICAgICBPRkZTRVQobGFuZ3VhZ2UpLCBBVl9PUFRfVFlQRV9TVFJJ TkcsIHsuc3RyID0gImF1dG8ifSwuZmxhZ3MgPQorICAgICBGTEFHUyB9LAorICAgIHsgInF1ZXVl IiwgIkF1ZGlvIHF1ZXVlIHNpemUgaW4gbWlsbGlzZWNvbmRzIiwgT0ZGU0VUKHF1ZXVlKSwKKyAg ICAgQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDMwMDB9LCAyMCwgSU5UX01BWCwuZmxhZ3MgPSBG TEFHUyB9LAorICAgIHsgInVzZV9ncHUiLCAiVXNlIEdQVSBmb3IgcHJvY2Vzc2luZyIsIE9GRlNF VCh1c2VfZ3B1KSwKKyAgICAgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAxfSwgMCwgMSwuZmxh Z3MgPSBGTEFHUyB9LAorICAgIHsgImdwdV9kZXZpY2UiLCAiR1BVIGRldmljZSB0byB1c2UiLCBP RkZTRVQoZ3B1X2RldmljZSksCisgICAgIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAwfSwgMCwg SU5UX01BWCwuZmxhZ3MgPSBGTEFHUyB9LAorICAgIHsgImRlc3RpbmF0aW9uIiwgIk91dHB1dCBk ZXN0aW5hdGlvbiIsIE9GRlNFVChkZXN0aW5hdGlvbiksCisgICAgIEFWX09QVF9UWVBFX1NUUklO Rywgey5zdHIgPSAiIn0sLmZsYWdzID0gRkxBR1MgfSwKKyAgICB7ICJmb3JtYXQiLCAiT3V0cHV0 IGZvcm1hdCAodGV4dHxzcnR8anNvbikiLCBPRkZTRVQoZm9ybWF0KSwKKyAgICAgQVZfT1BUX1RZ UEVfU1RSSU5HLCB7LnN0ciA9ICJ0ZXh0In0sLmZsYWdzID0gRkxBR1MgfSwKKyAgICB7ICJ2YWRf bW9kZWwiLCAiUGF0aCB0byB0aGUgVkFEIG1vZGVsIGZpbGUiLCBPRkZTRVQodmFkX21vZGVsX3Bh dGgpLAorICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsLmZsYWdzID0gRkxBR1MgfSwKKyAgICB7ICJ2 YWRfdGhyZXNob2xkIiwgIlZBRCB0aHJlc2hvbGQiLCBPRkZTRVQodmFkX3RocmVzaG9sZCksCisg ICAgIEFWX09QVF9UWVBFX0ZMT0FULCB7LmRibCA9IDAuNX0sIDAuMCwgMS4wLC5mbGFncyA9IEZM QUdTIH0sCisgICAgeyAidmFkX21pbl9zcGVlY2hfZHVyYXRpb24iLAorICAgICAiTWluaW11bSBz cGVlY2ggZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIGZvciBWQUQiLAorICAgICBPRkZTRVQodmFk X21pbl9zcGVlY2hfZHVyYXRpb24pLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gNTB9LCAyMCwK KyAgICAgSU5UX01BWCwuZmxhZ3MgPSBGTEFHUyB9LAorICAgIHsgInZhZF9taW5fc2lsZW5jZV9k dXJhdGlvbiIsCisgICAgICJNaW5pbXVtIHNpbGVuY2UgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRz IGZvciBWQUQiLAorICAgICBPRkZTRVQodmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uKSwgQVZfT1BU X1RZUEVfSU5ULCB7Lmk2NCA9IDUwMH0sIDAsCisgICAgIElOVF9NQVgsLmZsYWdzID0gRkxBR1Mg fSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xhc3Mgd2hpc3Blcl9jbGFz cyA9IHsKKyAgICAuY2xhc3NfbmFtZSA9ICJ3aGlzcGVyIiwKKyAgICAuaXRlbV9uYW1lID0gYXZf ZGVmYXVsdF9pdGVtX25hbWUsCisgICAgLm9wdGlvbiA9IHdoaXNwZXJfb3B0aW9ucywKKyAgICAu dmVyc2lvbiA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKK307CisKK3N0YXRpYyBjb25zdCBBVkZp bHRlclBhZCB3aGlzcGVyX291dHB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1lID0gImRl ZmF1bHQiLAorICAgICAgICAudHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTywKKyAgICB9LAorfTsK KworY29uc3QgRkZGaWx0ZXIgZmZfYWZfd2hpc3BlciA9IHsKKyAgICAucC5uYW1lID0gIndoaXNw ZXIiLAorICAgIC5wLmRlc2NyaXB0aW9uID0KKyAgICAgICAgTlVMTF9JRl9DT05GSUdfU01BTEwo IlRyYW5zY3JpYmUgYXVkaW8gdXNpbmcgd2hpc3Blci5jcHAuIiksCisgICAgLnAucHJpdl9jbGFz cyA9ICZ3aGlzcGVyX2NsYXNzLAorICAgIC5wLmZsYWdzID0gQVZGSUxURVJfRkxBR19NRVRBREFU QV9PTkxZLAorICAgIC5pbml0ID0gaW5pdCwKKyAgICAudW5pbml0ID0gdW5pbml0LAorICAgIC5h Y3RpdmF0ZSA9IGFjdGl2YXRlLAorICAgIC5wcml2X3NpemUgPSBzaXplb2YoV2hpc3BlckNvbnRl eHQpLAorICAgIEZJTFRFUl9JTlBVVFMoZmZfYXVkaW9fZGVmYXVsdF9maWx0ZXJwYWQpLAorICAg IEZJTFRFUl9PVVRQVVRTKHdoaXNwZXJfb3V0cHV0cyksCisgICAgRklMVEVSX1NBTVBMRUZNVFMo QVZfU0FNUExFX0ZNVF9GTFQsIEFWX1NBTVBMRV9GTVRfRkxUUCksCit9OwpkaWZmIC0tZ2l0IGEv bGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCmluZGV4 IDQwOTA5OWJmMWYuLmVhZjBjOGZlNmYgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRl cnMuYworKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKQEAgLTE2Myw2ICsxNjMsOCBAQCBl eHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfYWZfdmlydHVhbGJhc3M7CiBleHRlcm4gY29uc3QgRkZG aWx0ZXIgZmZfYWZfdm9sdW1lOwogZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3ZvbHVtZWRl dGVjdDsKIAorZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3doaXNwZXI7CisKIGV4dGVybiBj b25zdCBGRkZpbHRlciBmZl9hc3JjX2FldmFsc3JjOwogZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZm X2FzcmNfYWZkZWxheXNyYzsKIGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl9hc3JjX2FmaXJlcXNy YzsKLS0gCjIuNDMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vi c2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=