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 1145C4E33E for ; Wed, 9 Jul 2025 07:24:20 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 97D5268E1C3; Wed, 9 Jul 2025 10:24:13 +0300 (EEST) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 59A4668E0F9 for ; Wed, 9 Jul 2025 10:24:07 +0300 (EEST) Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3a507e88b0aso4048482f8f.1 for ; Wed, 09 Jul 2025 00:24:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752045846; x=1752650646; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=e3lr3ABwruWVvFTFeTkcPloUIxeOQSwBH8U1FI6XALk=; b=J/krU7UMHmlpF2RROIprki+k/1lVOM5SVgMmyBbvxM21ynho/KgL7+CJFWm4T1/drJ rV+PFJd4ORjtaqR/L4bZygr8fG1xX4rZNJDHhnoQwXUBNkZQrIfDuGyQ8v+H7SAge9OI mXiZG40gSSGRYhJ0mbBQ3uncY+UWfoLsxkI6peeQYoaE5v/3wLI0KCGUPPiBDNEstLQw 3q9oqsT5Ypa2uKdB20MKg+KwkDt30RXEco2kHl85ST3SqAzsdOU0K6Gg5FVYmHnlCMCH qshyVmOalKa3R5F+3encZq1jaacFyQ7+Xn+ONWsRAAZ/aW04hSS5/8WyZue4arALtPXz o2/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752045846; x=1752650646; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e3lr3ABwruWVvFTFeTkcPloUIxeOQSwBH8U1FI6XALk=; b=OjSkNntJZtqPBVgHijsNluXeFP62P+d4lXpO45aJFcA4wwnfCTGl13/MfWwWGALrEO c2jL8VXZz9CjyRPqS46fS5DyDkPuPg9JoqDMy3REgHIf3UMyPhxp4vBJUokgNNc+mDft joaWixAx7L6RPx/hIm0agcCVllhfOm6x8XKMNUfs8Vp85QjVX7Ii4ekrQzzv19Zhofci 441s1s0tWqmf/0PhBVJtfXdPUgurJVrP0ebmRnsStEXQI78MTRvVN5KZu3RsoxpYELX9 A+c++v3ihwnma/R4C2bxzOO4RtfXlkFFPwyCblS7Sy7bCV1hpXxasf/IBJR4+LeDoWxC ZEBQ== X-Gm-Message-State: AOJu0YzkTuZ9gGGAtg6ZHxA4srYvGzh4F045y5SSI7G5LkgzTRTCgPD/ sy1HvwHbIyvUIeLqEXFfz0G3pAlGJcI/3kR/cLEonkCy07VREgH9DdZFF8iZ8Q== X-Gm-Gg: ASbGncvg1Y4c4Fq4ObKrLWnq52ImbAa0hRWI4NqvdG0OANscNw5udEvillMIwWrBkfa Ii8G4GzuhiinyuR/EL+cepNF2pQKNZoTnwXXfs15t1dgqfdnb3k/mQrPgdqMRgs3gxQIq0ry07s PzrR9HzHvlXSe3BsyUWZP0oMH3llFpDlOJmb1Vpnm4quVAIxbRg6JzX7pyQKj/V5pje7iP0cp4e Gl3swnI5owAGB7QmF4twKVpknCeIPWz+Z6gAbBIxmYOm4lx1SbsgYbduoySP9neu7kbG2WmaFDD dJKj37iuQQ2OQ+6m5msC4iRDDZGxZQNqWWJ5YA1qCcx+BkfYAP/6LM1/mArXsdrPq0R/KKWXLOE p4yQu5HtI+NrKRuEQVKg/7T1gOWhIP3Hx4Wd6a3zvqcj3f3j+ X-Google-Smtp-Source: AGHT+IH2md2Vtne4cnEJyChDe00E3Dj5piNia4WPOZESvij7wZX6UzgNH8RHjFzft+ZXpyZ/Cxo4Mg== X-Received: by 2002:a05:6000:2489:b0:3a4:eb7a:2cda with SMTP id ffacd0b85a97d-3b5e4526343mr900199f8f.30.1752045845660; Wed, 09 Jul 2025 00:24:05 -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 5b1f17b1804b1-454d50616e5sm13160975e9.20.2025.07.09.00.24.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Jul 2025 00:24:05 -0700 (PDT) From: Vittorio Palmisano To: ffmpeg-devel@ffmpeg.org Date: Wed, 9 Jul 2025 09:23:48 +0200 Message-ID: <20250709072350.578693-1-vpalmisano@gmail.com> X-Mailer: git-send-email 2.43.0 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 bHRlci9NYWtlZmlsZSAgICAgfCAgIDIgKwogbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jIHwgNDk0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZmaWx0ZXIvYWxs ZmlsdGVycy5jIHwgICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgNjA0IGluc2VydGlvbnMoKykKIGNy 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 aXNwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43YmZkZDNhOWRj Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jCkBAIC0wLDAgKzEs NDk0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFZpdHRvcmlvIFBhbG1pc2FubworICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorICogYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4K KyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImxp YmF2dXRpbC9hdnV0aWwuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCisjaW5jbHVkZSAi bGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3NhbXBsZWZt dC5oIgorI2luY2x1ZGUgImxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgiCisjaW5jbHVkZSAibGliYXZm aWx0ZXIvYXVkaW8uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCisjaW5jbHVkZSAibGli YXZ1dGlsL2F2c3RyaW5nLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCisjaW5j bHVkZSAibGliYXZmb3JtYXQvYXZpby5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC90aHJlYWQuaCIK KworI2luY2x1ZGUgImZvcm1hdHMuaCIKKworI2luY2x1ZGUgIndoaXNwZXIuaCIKKwordHlwZWRl ZiBzdHJ1Y3QgV2hpc3BlckNvbnRleHQKK3sKKyAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKKyAg ICBjaGFyICptb2RlbF9wYXRoOworICAgIGNoYXIgKmxhbmd1YWdlOworICAgIGJvb2wgdXNlX2dw dTsKKyAgICBpbnQgZ3B1X2RldmljZTsKKyAgICBjaGFyICp2YWRfbW9kZWxfcGF0aDsKKyAgICBm bG9hdCB2YWRfdGhyZXNob2xkOworICAgIGludCB2YWRfbWluX3NwZWVjaF9kdXJhdGlvbjsKKyAg ICBpbnQgdmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uOworCisgICAgaW50IHF1ZXVlOworICAgIGNo YXIgKmRlc3RpbmF0aW9uOworICAgIGNoYXIgKmZvcm1hdDsKKworICAgIHN0cnVjdCB3aGlzcGVy X2NvbnRleHQgKmN0eF93c3A7CisgICAgc3RydWN0IHdoaXNwZXJfc3RhdGUgKndoaXNwZXJfc3Rh dGU7CisgICAgc3RydWN0IHdoaXNwZXJfdmFkX2NvbnRleHQgKmN0eF92YWQ7CisgICAgc3RydWN0 IHdoaXNwZXJfdmFkX3BhcmFtcyB2YWRfcGFyYW1zOworCisgICAgZmxvYXQgKmF1ZGlvX2J1ZmZl cjsKKyAgICBpbnQgYXVkaW9fYnVmZmVyX3F1ZXVlX3NpemU7CisgICAgaW50IGF1ZGlvX2J1ZmZl cl9maWxsX3NpemU7CisgICAgaW50IGF1ZGlvX2J1ZmZlcl92YWRfc2l6ZTsKKworICAgIGludCBl b2Y7CisgICAgaW50NjRfdCBuZXh0X3B0czsKKworICAgIEFWSU9Db250ZXh0ICphdmlvX2NvbnRl eHQ7CisgICAgaW50IGluZGV4OworICAgIGludDY0X3QgdGltZXN0YW1wOworfSBXaGlzcGVyQ29u dGV4dDsKKworc3RhdGljIHZvaWQgY2JfbG9nX2Rpc2FibGUoZW51bSBnZ21sX2xvZ19sZXZlbCwg Y29uc3QgY2hhciAqLCB2b2lkICopIHt9CisKK3N0YXRpYyBpbnQgaW5pdChBVkZpbHRlckNvbnRl eHQgKmN0eCkKK3sKKyAgICBXaGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKworICAg IGdnbWxfYmFja2VuZF9sb2FkX2FsbCgpOworICAgIHdoaXNwZXJfbG9nX3NldChjYl9sb2dfZGlz YWJsZSwgTlVMTCk7CisKKyAgICAvLyBJbml0IHdoaXNwZXIgY29udGV4dAorICAgIGlmICghd2N0 eC0+bW9kZWxfcGF0aCkKKyAgICB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg Ik5vIHdoaXNwZXIgbW9kZWwgcGF0aCBzcGVjaWZpZWQuIFVzZSB0aGUgJ21vZGVsJyBvcHRpb24u XG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBzdHJ1 Y3Qgd2hpc3Blcl9jb250ZXh0X3BhcmFtcyBwYXJhbXMgPSB3aGlzcGVyX2NvbnRleHRfZGVmYXVs dF9wYXJhbXMoKTsKKyAgICBwYXJhbXMudXNlX2dwdSA9IHdjdHgtPnVzZV9ncHU7CisgICAgcGFy YW1zLmdwdV9kZXZpY2UgPSB3Y3R4LT5ncHVfZGV2aWNlOworCisgICAgd2N0eC0+Y3R4X3dzcCA9 IHdoaXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMod2N0eC0+bW9kZWxfcGF0aCwgcGFy YW1zKTsKKyAgICBpZiAod2N0eC0+Y3R4X3dzcCA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgd2hpc3BlciBjb250 ZXh0IGZyb20gbW9kZWw6ICVzXG4iLCB3Y3R4LT5tb2RlbF9wYXRoKTsKKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlPKTsKKyAgICB9CisKKyAgICB3Y3R4LT53aGlzcGVyX3N0YXRlID0gd2hpc3Bl cl9pbml0X3N0YXRlKHdjdHgtPmN0eF93c3ApOworICAgIGlmICh3Y3R4LT53aGlzcGVyX3N0YXRl ID09IE5VTEwpCisgICAgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJGYWls ZWQgdG8gZ2V0IHdoaXNwZXIgc3RhdGUgZnJvbSBjb250ZXh0XG4iKTsKKyAgICAgICAgd2hpc3Bl cl9mcmVlKHdjdHgtPmN0eF93c3ApOworICAgICAgICB3Y3R4LT5jdHhfd3NwID0gTlVMTDsKKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKKyAgICB9CisKKyAgICAvLyBJbml0IFZBRCBtb2Rl bCBjb250ZXh0CisgICAgaWYgKHdjdHgtPnZhZF9tb2RlbF9wYXRoKQorICAgIHsKKyAgICAgICAg c3RydWN0IHdoaXNwZXJfdmFkX2NvbnRleHRfcGFyYW1zIGN0eF9wYXJhbXMgPSB3aGlzcGVyX3Zh ZF9kZWZhdWx0X2NvbnRleHRfcGFyYW1zKCk7CisgICAgICAgIGN0eF9wYXJhbXMubl90aHJlYWRz ID0gNDsKKyAgICAgICAgLy8gY3R4X3BhcmFtcy51c2VfZ3B1ID0gd2N0eC0+dXNlX2dwdTsgVE9E TyAoc2VlOiB3aGlzcGVyX3ZhZF9pbml0X2NvbnRleHQpCisgICAgICAgIGN0eF9wYXJhbXMuZ3B1 X2RldmljZSA9IHdjdHgtPmdwdV9kZXZpY2U7CisgICAgICAgIHdjdHgtPmN0eF92YWQgPSB3aGlz cGVyX3ZhZF9pbml0X2Zyb21fZmlsZV93aXRoX3BhcmFtcygKKyAgICAgICAgICAgIHdjdHgtPnZh ZF9tb2RlbF9wYXRoLAorICAgICAgICAgICAgY3R4X3BhcmFtcyk7CisKKyAgICAgICAgd2N0eC0+ dmFkX3BhcmFtcyA9IHdoaXNwZXJfdmFkX2RlZmF1bHRfcGFyYW1zKCk7CisgICAgICAgIHdjdHgt PnZhZF9wYXJhbXMudGhyZXNob2xkID0gd2N0eC0+dmFkX3RocmVzaG9sZDsKKyAgICAgICAgd2N0 eC0+dmFkX3BhcmFtcy5taW5fc3BlZWNoX2R1cmF0aW9uX21zID0gd2N0eC0+dmFkX21pbl9zcGVl Y2hfZHVyYXRpb247CisgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMubWluX3NpbGVuY2VfZHVyYXRp b25fbXMgPSB3Y3R4LT52YWRfbWluX3NpbGVuY2VfZHVyYXRpb247CisgICAgICAgIHdjdHgtPnZh ZF9wYXJhbXMubWF4X3NwZWVjaF9kdXJhdGlvbl9zID0gKGZsb2F0KSh3Y3R4LT5hdWRpb19idWZm ZXJfcXVldWVfc2l6ZSAvIDEwMDAuMGYpOworICAgICAgICB3Y3R4LT52YWRfcGFyYW1zLnNwZWVj aF9wYWRfbXMgPSAwOworICAgICAgICB3Y3R4LT52YWRfcGFyYW1zLnNhbXBsZXNfb3ZlcmxhcCA9 IDA7CisgICAgfQorCisgICAgLy8gSW5pdCBidWZmZXIKKyAgICB3Y3R4LT5hdWRpb19idWZmZXJf cXVldWVfc2l6ZSA9IFdISVNQRVJfU0FNUExFX1JBVEUgKiB3Y3R4LT5xdWV1ZSAvIDEwMDA7Cisg ICAgd2N0eC0+YXVkaW9fYnVmZmVyID0gYXZfbWFsbG9jKHdjdHgtPmF1ZGlvX2J1ZmZlcl9xdWV1 ZV9zaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgaWYgKCF3Y3R4LT5hdWRpb19idWZmZXIpCisg ICAgeworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKworICAgIHdjdHgt PmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPSAwOworCisgICAgd2N0eC0+bmV4dF9wdHMgPSBBVl9O T1BUU19WQUxVRTsKKworICAgIHdjdHgtPmF2aW9fY29udGV4dCA9IE5VTEw7CisgICAgaWYgKHdj dHgtPmRlc3RpbmF0aW9uICYmIHN0cmNtcCgiIiwgd2N0eC0+ZGVzdGluYXRpb24pKQorICAgIHsK KyAgICAgICAgaW50IHJldCA9IDA7CisKKyAgICAgICAgaWYgKCFzdHJjbXAoIi0iLCB3Y3R4LT5k ZXN0aW5hdGlvbikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IGF2aW9fb3Blbigmd2N0 eC0+YXZpb19jb250ZXh0LCAicGlwZToxIiwgQVZJT19GTEFHX1dSSVRFKTsKKyAgICAgICAgfQor ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IGF2aW9fb3Blbigmd2N0 eC0+YXZpb19jb250ZXh0LCB3Y3R4LT5kZXN0aW5hdGlvbiwgQVZJT19GTEFHX1dSSVRFKTsKKyAg ICAgICAgfQorCisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBh dl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsCisgICAg ICAgICAgICAgICAgICAgd2N0eC0+ZGVzdGluYXRpb24sIGF2X2VycjJzdHIocmV0KSk7CisgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAgd2N0eC0+YXZpb19jb250 ZXh0LT5kaXJlY3QgPSBBVklPX0ZMQUdfRElSRUNUOworICAgIH0KKworICAgIGF2X2xvZyhjdHgs IEFWX0xPR19JTkZPLCAiV2hpc3BlciBmaWx0ZXIgaW5pdGlhbGl6ZWQ6IG1vZGVsOiAlcyBsYW5n OiAlcyBxdWV1ZTogJWQgbXNcbiIsCisgICAgICAgICAgIHdjdHgtPm1vZGVsX3BhdGgsIHdjdHgt Pmxhbmd1YWdlLCB3Y3R4LT5xdWV1ZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZv aWQgdW5pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIFdoaXNwZXJDb250ZXh0ICp3 Y3R4ID0gY3R4LT5wcml2OworCisgICAgaWYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUg PiAwKQorICAgIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5JTkcsICJSZW1haW5p bmcgYXVkaW8gYnVmZmVyICVkIHNhbXBsZXMgKCVkIHNlY29uZHMpIGFmdGVyIHN0b3BwaW5nXG4i LAorICAgICAgICAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSwKKyAgICAgICAg ICAgICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgLyBXSElTUEVSX1NBTVBMRV9SQVRF KTsKKyAgICB9CisKKyAgICBpZiAod2N0eC0+Y3R4X3ZhZCkKKyAgICB7CisgICAgICAgIHdoaXNw ZXJfdmFkX2ZyZWUod2N0eC0+Y3R4X3ZhZCk7CisgICAgICAgIHdjdHgtPmN0eF92YWQgPSBOVUxM OworICAgIH0KKworICAgIGlmICh3Y3R4LT53aGlzcGVyX3N0YXRlKQorICAgIHsKKyAgICAgICAg d2hpc3Blcl9mcmVlX3N0YXRlKHdjdHgtPndoaXNwZXJfc3RhdGUpOworICAgICAgICB3Y3R4LT53 aGlzcGVyX3N0YXRlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAod2N0eC0+Y3R4X3dzcCkKKyAg ICB7CisgICAgICAgIHdoaXNwZXJfZnJlZSh3Y3R4LT5jdHhfd3NwKTsKKyAgICAgICAgd2N0eC0+ Y3R4X3dzcCA9IE5VTEw7CisgICAgfQorCisgICAgYXZfZnJlZXAoJndjdHgtPmF1ZGlvX2J1ZmZl cik7CisKKyAgICBpZiAod2N0eC0+YXZpb19jb250ZXh0KQorICAgIHsKKyAgICAgICAgYXZpb19j bG9zZXAoJndjdHgtPmF2aW9fY29udGV4dCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBydW5f dHJhbnNjcmlwdGlvbihBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZEaWN0aW9uYXJ5ICoqbWV0YWRh dGEsIGludCBlbmRfcG9zKQoreworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2 OworICAgIGVuZF9wb3MgPSBGRk1JTihlbmRfcG9zLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9z aXplKTsKKworICAgIGlmICghd2N0eC0+Y3R4X3dzcCB8fCBlbmRfcG9zID09IDApCisgICAgewor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3Y3R4LT5jdHhfd3NwKQorICAgIHsK KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IGR1cmF0aW9uID0gKGZsb2F0KWVu ZF9wb3MgLyBXSElTUEVSX1NBTVBMRV9SQVRFOworCisgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0lO Rk8sICJydW4gdHJhbnNjcmlwdGlvbiAlZC8lZCBzYW1wbGVzICglLjJmIHNlY29uZHMpLi4uXG4i LAorICAgICAgICAgICBlbmRfcG9zLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplLAorICAg ICAgICAgICBkdXJhdGlvbik7CisKKyAgICBzdHJ1Y3Qgd2hpc3Blcl9mdWxsX3BhcmFtcyBwYXJh bXMgPSB3aGlzcGVyX2Z1bGxfZGVmYXVsdF9wYXJhbXMoV0hJU1BFUl9TQU1QTElOR19HUkVFRFkp OworICAgIHBhcmFtcy5sYW5ndWFnZSA9IHdjdHgtPmxhbmd1YWdlOworICAgIHBhcmFtcy5wcmlu dF9zcGVjaWFsID0gMDsKKyAgICBwYXJhbXMucHJpbnRfcHJvZ3Jlc3MgPSAwOworICAgIHBhcmFt cy5wcmludF9yZWFsdGltZSA9IDA7CisgICAgcGFyYW1zLnByaW50X3RpbWVzdGFtcHMgPSAwOwor CisgICAgaWYgKHdoaXNwZXJfZnVsbCh3Y3R4LT5jdHhfd3NwLCBwYXJhbXMsIHdjdHgtPmF1ZGlv X2J1ZmZlciwgZW5kX3BvcykgIT0gMCkKKyAgICB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xP R19FUlJPUiwgIkZhaWxlZCB0byBwcm9jZXNzIGF1ZGlvIHdpdGggd2hpc3Blci5jcHBcbiIpOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgaW50IG5fc2VnbWVudHMgPSB3aGlz cGVyX2Z1bGxfbl9zZWdtZW50c19mcm9tX3N0YXRlKHdjdHgtPndoaXNwZXJfc3RhdGUpOworICAg IGNoYXIgKnNlZ21lbnRzX3RleHQgPSBOVUxMOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu X3NlZ21lbnRzOyArK2kpCisgICAgeworICAgICAgICBjb25zdCBib29sIHR1cm4gPSB3aGlzcGVy X2Z1bGxfZ2V0X3NlZ21lbnRfc3BlYWtlcl90dXJuX25leHQod2N0eC0+Y3R4X3dzcCwgaSk7Cisg ICAgICAgIGNvbnN0IGludDY0X3QgdDAgPSB3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRfdDAod2N0 eC0+Y3R4X3dzcCwgaSkgKiAxMDsKKyAgICAgICAgY29uc3QgaW50NjRfdCB0MSA9IHdoaXNwZXJf ZnVsbF9nZXRfc2VnbWVudF90MSh3Y3R4LT5jdHhfd3NwLCBpKSAqIDEwOworICAgICAgICBjb25z dCBjaGFyICp0ZXh0ID0gd2hpc3Blcl9mdWxsX2dldF9zZWdtZW50X3RleHQod2N0eC0+Y3R4X3dz cCwgaSk7CisgICAgICAgIGNoYXIgKnRleHRfY2xlYW5lZCA9IGF2X3N0cmlyZXBsYWNlKHRleHQg KyAxLCAiW0JMQU5LX0FVRElPXSIsICIiKTsKKworICAgICAgICBpZiAoYXZfc3Rybmxlbih0ZXh0 X2NsZWFuZWQsIDEpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGF2X2ZyZWUodGV4dF9j bGVhbmVkKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGF2X2xv ZyhjdHgsIEFWX0xPR19JTkZPLCAiICBbJWxkLSVsZCVzXTogXCIlc1wiXG4iLCB3Y3R4LT50aW1l c3RhbXAgKyB0MCwgd2N0eC0+dGltZXN0YW1wICsgdDEsIHR1cm4gPyAiICh0dXJuKSIgOiAiIiwg dGV4dF9jbGVhbmVkKTsKKworICAgICAgICBpZiAoc2VnbWVudHNfdGV4dCkKKyAgICAgICAgewor ICAgICAgICAgICAgY2hhciAqbmV3X3RleHQgPSBhdl9hc3ByaW50ZigiJXMlcyIsIHNlZ21lbnRz X3RleHQsIHRleHRfY2xlYW5lZCk7CisgICAgICAgICAgICBhdl9mcmVlKHNlZ21lbnRzX3RleHQp OworICAgICAgICAgICAgc2VnbWVudHNfdGV4dCA9IG5ld190ZXh0OworICAgICAgICB9CisgICAg ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc2VnbWVudHNfdGV4dCA9IGF2X3N0cmR1 cCh0ZXh0X2NsZWFuZWQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdjdHgtPmF2aW9fY29u dGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50NjRfdCBzdGFydF90ID0gd2N0 eC0+dGltZXN0YW1wICsgdDA7CisgICAgICAgICAgICBjb25zdCBpbnQ2NF90IGVuZF90ID0gd2N0 eC0+dGltZXN0YW1wICsgdDE7CisgICAgICAgICAgICBjaGFyICpidWYgPSBOVUxMOworCisgICAg ICAgICAgICBpZiAoIWF2X3N0cmNhc2VjbXAod2N0eC0+Zm9ybWF0LCAic3J0IikpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgYnVmID0gYXZfYXNwcmludGYoIiVkXG4lMDJsZDolMDJs ZDolMDJsZC4lMDNsZCAtLT4gJTAybGQ6JTAybGQ6JTAybGQuJTAzbGRcbiVzXG5cbiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2N0eC0+aW5kZXgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdCAvIDM2MDAwMDAsIChzdGFydF90IC8gNjAwMDAp ICUgNjAsIChzdGFydF90IC8gMTAwMCkgJSA2MCwgc3RhcnRfdCAlIDEwMDAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW5kX3QgLyAzNjAwMDAwLCAoZW5kX3QgLyA2MDAwMCkg JSA2MCwgKGVuZF90IC8gMTAwMCkgJSA2MCwgZW5kX3QgJSAxMDAwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRleHRfY2xlYW5lZCk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBlbHNlIGlmICghYXZfc3RyY2FzZWNtcCh3Y3R4LT5mb3JtYXQsICJqc29uIikpCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmID0gYXZfYXNwcmludGYoIntcInN0YXJ0XCI6 JWxkLFwiZW5kXCI6JWxkLFwidGV4dFwiOlwiJXNcIixcInR1cm5cIjolc31cbiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdCwgZW5kX3QsIHRleHRfY2xlYW5lZCwg dHVybiA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZiA9IGF2X3N0cmR1cCh0ZXh0X2Ns ZWFuZWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnVmKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUod2N0eC0+YXZpb19jb250ZXh0LCBidWYs IHN0cmxlbihidWYpKTsKKyAgICAgICAgICAgICAgICBhdl9mcmVlKGJ1Zik7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKworICAgICAgICBhdl9mcmVlKHRleHRfY2xlYW5lZCk7CisgICAgfQor CisgICAgd2N0eC0+aW5kZXgrKzsKKyAgICB3Y3R4LT50aW1lc3RhbXAgKz0gKGludDY0X3QpKGR1 cmF0aW9uICogMTAwMCk7CisKKyAgICBpZiAobWV0YWRhdGEgJiYgc2VnbWVudHNfdGV4dCkKKyAg ICB7CisgICAgICAgIGF2X2RpY3Rfc2V0KG1ldGFkYXRhLCAibGF2Zmkud2hpc3Blci50ZXh0Iiwg c2VnbWVudHNfdGV4dCwgMCk7CisgICAgICAgIGNoYXIgKmR1cmF0aW9uX3RleHQgPSBhdl9hc3By aW50ZigiJWYiLCBkdXJhdGlvbik7CisgICAgICAgIGF2X2RpY3Rfc2V0KG1ldGFkYXRhLCAibGF2 Zmkud2hpc3Blci5kdXJhdGlvbiIsIGR1cmF0aW9uX3RleHQsIDApOworICAgICAgICBhdl9mcmVl KGR1cmF0aW9uX3RleHQpOworICAgIH0KKyAgICBpZiAoc2VnbWVudHNfdGV4dCkKKyAgICB7Cisg ICAgICAgIGF2X2ZyZWUoc2VnbWVudHNfdGV4dCk7CisgICAgfQorCisgICAgbWVtY3B5KHdjdHgt PmF1ZGlvX2J1ZmZlciwgd2N0eC0+YXVkaW9fYnVmZmVyICsgZW5kX3BvcywgZW5kX3BvcyAqIHNp emVvZihmbG9hdCkpOworICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgLT0gZW5kX3Bv czsKKyAgICB3Y3R4LT5hdWRpb19idWZmZXJfdmFkX3NpemUgPSB3Y3R4LT5hdWRpb19idWZmZXJf ZmlsbF9zaXplOworfQorCitzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmlu bGluaywgQVZGcmFtZSAqZnJhbWUpCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBpbmxp bmstPmRzdDsKKyAgICBXaGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKyAgICBBVkZp bHRlckxpbmsgKm91dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07CisgICAgQVZEaWN0aW9uYXJ5ICoq bWV0YWRhdGEgPSAmZnJhbWUtPm1ldGFkYXRhOworCisgICAgY29uc3QgaW50IHNhbXBsZXMgPSBm cmFtZS0+bmJfc2FtcGxlczsKKyAgICBjb25zdCBmbG9hdCAqaW5wdXRfZGF0YSA9IChjb25zdCBm bG9hdCAqKWZyYW1lLT5kYXRhWzBdOworCisgICAgaWYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxs X3NpemUgKyBzYW1wbGVzID4gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUpCisgICAgewor ICAgICAgICBydW5fdHJhbnNjcmlwdGlvbihjdHgsIG1ldGFkYXRhLCB3Y3R4LT5hdWRpb19idWZm ZXJfZmlsbF9zaXplKTsKKyAgICB9CisKKyAgICBtZW1jcHkod2N0eC0+YXVkaW9fYnVmZmVyICsg d2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSwgaW5wdXRfZGF0YSwgc2FtcGxlcyAqIHNpemVv ZihmbG9hdCkpOworICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgKz0gc2FtcGxlczsK KworICAgIGlmICh3Y3R4LT5jdHhfdmFkICYmICh3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXpl IC0gd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9zaXplKSA+PQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBXSElTUEVSX1NBTVBMRV9SQVRFICogKHdjdHgtPnZhZF9taW5fc3BlZWNoX2R1cmF0 aW9uICsgd2N0eC0+dmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uKSAvIDEwMDApCisgICAgeworICAg ICAgICBzdHJ1Y3Qgd2hpc3Blcl92YWRfc2VnbWVudHMgKnNlZ21lbnRzID0gd2hpc3Blcl92YWRf c2VnbWVudHNfZnJvbV9zYW1wbGVzKAorICAgICAgICAgICAgd2N0eC0+Y3R4X3ZhZCwgd2N0eC0+ dmFkX3BhcmFtcywgd2N0eC0+YXVkaW9fYnVmZmVyLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9z aXplKTsKKyAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9zaXplID0gd2N0eC0+YXVkaW9f YnVmZmVyX2ZpbGxfc2l6ZTsKKworICAgICAgICBpZiAoIXNlZ21lbnRzKQorICAgICAgICB7Cisg ICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJmYWlsZWQgdG8gZGV0ZWN0IFZB RFxuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBp bnQgbl9zZWdtZW50cyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRzX25fc2VnbWVudHMoc2VnbWVudHMp OworCisgICAgICAgICAgICBpZiAobl9zZWdtZW50cyA+IDApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgY29uc3QgaW50NjRfdCBzdGFydF9tcyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRz X2dldF9zZWdtZW50X3QwKHNlZ21lbnRzLCBuX3NlZ21lbnRzIC0gMSkgKiAxMDsKKyAgICAgICAg ICAgICAgICBjb25zdCBpbnQ2NF90IGVuZF9tcyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRzX2dldF9z ZWdtZW50X3QxKHNlZ21lbnRzLCBuX3NlZ21lbnRzIC0gMSkgKiAxMDsKKyAgICAgICAgICAgICAg ICBpbnQgZW5kX3BvcyA9IChpbnQpKGVuZF9tcyAqIFdISVNQRVJfU0FNUExFX1JBVEUgLyAxMDAw KTsKKworICAgICAgICAgICAgICAgIGlmIChlbmRfcG9zIDwgd2N0eC0+YXVkaW9fYnVmZmVyX2Zp bGxfc2l6ZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhj dHgsIEFWX0xPR19JTkZPLCAiVkFEIGRldGVjdGVkICVkIHNlZ21lbnRzLCBzdGFydDogJWxkIG1z LCBlbmQ6ICVsZCBtcyAoYnVmZmVyOiAlZCBtcylcbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBuX3NlZ21lbnRzLCBzdGFydF9tcywgZW5kX21zLCAxMDAwICogd2N0eC0+YXVkaW9fYnVm ZmVyX2ZpbGxfc2l6ZSAvIFdISVNQRVJfU0FNUExFX1JBVEUpOworICAgICAgICAgICAgICAgICAg ICBydW5fdHJhbnNjcmlwdGlvbihjdHgsIG1ldGFkYXRhLCBlbmRfcG9zKTsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaXNwZXJfdmFkX2ZyZWVfc2Vn bWVudHMoc2VnbWVudHMpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHdjdHgtPmF1 ZGlvX2J1ZmZlcl9maWxsX3NpemUgPj0gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUpCisg ICAgeworICAgICAgICBydW5fdHJhbnNjcmlwdGlvbihjdHgsIG1ldGFkYXRhLCB3Y3R4LT5hdWRp b19idWZmZXJfZmlsbF9zaXplKTsKKyAgICB9CisKKyAgICB3Y3R4LT5uZXh0X3B0cyA9IGZyYW1l LT5wdHMgKyBhdl9yZXNjYWxlX3EoZnJhbWUtPm5iX3NhbXBsZXMsIChBVlJhdGlvbmFsKXsxLCBp bmxpbmstPnNhbXBsZV9yYXRlfSwgaW5saW5rLT50aW1lX2Jhc2UpOworICAgIHJldHVybiBmZl9m aWx0ZXJfZnJhbWUob3V0bGluaywgZnJhbWUpOworfQorCitzdGF0aWMgaW50IHB1c2hfbGFzdF9m cmFtZShBVkZpbHRlckxpbmsgKm91dGxpbmspCit7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHgg PSBvdXRsaW5rLT5zcmM7CisgICAgV2hpc3BlckNvbnRleHQgKndjdHggPSBjdHgtPnByaXY7Cisg ICAgQVZGcmFtZSAqZnJhbWU7CisgICAgaW50IG5fb3V0ID0gMTsKKworICAgIGlmIChjdHgtPmlz X2Rpc2FibGVkIHx8IHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPT0gMCkKKyAgICAgICAg cmV0dXJuIDA7CisgICAgZnJhbWUgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIG5fb3V0 KTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgYXZfc2FtcGxlc19zZXRfc2lsZW5jZShmcmFtZS0+ZXh0ZW5kZWRfZGF0YSwgMCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5fb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGZyYW1lLT5mb3JtYXQpOworCisgICAgZnJhbWUtPnB0cyA9IHdjdHgtPm5leHRfcHRzOworICAg IGlmICh3Y3R4LT5uZXh0X3B0cyAhPSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgd2N0eC0+bmV4 dF9wdHMgKz0gYXZfcmVzY2FsZV9xKG5fb3V0LCAoQVZSYXRpb25hbCl7MSwgb3V0bGluay0+c2Ft cGxlX3JhdGV9LCBvdXRsaW5rLT50aW1lX2Jhc2UpOworCisgICAgcnVuX3RyYW5zY3JpcHRpb24o Y3R4LCAmZnJhbWUtPm1ldGFkYXRhLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKTsKKwor ICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJhbWUpOworfQorCitzdGF0aWMg aW50IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEFWRmlsdGVyTGluayAq aW5saW5rID0gY3R4LT5pbnB1dHNbMF07CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4 LT5vdXRwdXRzWzBdOworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworICAg IGludDY0X3QgcHRzOworICAgIGludCBzdGF0dXM7CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9T VEFUVVNfQkFDSyhvdXRsaW5rLCBpbmxpbmspOworCisgICAgaWYgKCF3Y3R4LT5lb2YgJiYgZmZf aW5saW5rX3F1ZXVlZF9mcmFtZXMoaW5saW5rKSkKKyAgICB7CisgICAgICAgIEFWRnJhbWUgKmZy YW1lID0gTlVMTDsKKyAgICAgICAgaW50IHJldDsKKworICAgICAgICByZXQgPSBmZl9pbmxpbmtf Y29uc3VtZV9mcmFtZShpbmxpbmssICZmcmFtZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAg ICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgaWYgKHJldCA+IDApCisgICAgICAgICAgICBy ZXR1cm4gZmlsdGVyX2ZyYW1lKGlubGluaywgZnJhbWUpOworICAgIH0KKworICAgIGlmICghd2N0 eC0+ZW9mICYmIGZmX2lubGlua19hY2tub3dsZWRnZV9zdGF0dXMoaW5saW5rLCAmc3RhdHVzLCAm cHRzKSkKKyAgICAgICAgd2N0eC0+ZW9mID0gc3RhdHVzID09IEFWRVJST1JfRU9GOworCisgICAg aWYgKHdjdHgtPmVvZikKKyAgICB7CisgICAgICAgIHB1c2hfbGFzdF9mcmFtZShvdXRsaW5rKTsK KworICAgICAgICBmZl9vdXRsaW5rX3NldF9zdGF0dXMob3V0bGluaywgQVZFUlJPUl9FT0YsIHdj dHgtPm5leHRfcHRzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRkZfRklMVEVS X0ZPUldBUkRfV0FOVEVEKG91dGxpbmssIGlubGluayk7CisKKyAgICByZXR1cm4gRkZFUlJPUl9O T1RfUkVBRFk7Cit9CisKKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNldG9mKFdoaXNwZXJDb250ZXh0 LCB4KQorI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxBR19BVURJT19QQVJBTSB8IEFWX09QVF9GTEFH X0ZJTFRFUklOR19QQVJBTQorCitzdGF0aWMgY29uc3QgQVZPcHRpb24gd2hpc3Blcl9vcHRpb25z W10gPSB7CisgICAgeyJtb2RlbCIsICJQYXRoIHRvIHRoZSB3aGlzcGVyLmNwcCBtb2RlbCBmaWxl IiwgT0ZGU0VUKG1vZGVsX3BhdGgpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIC5mbGFncyA9IEZMQUdT fSwKKyAgICB7Imxhbmd1YWdlIiwgIkxhbmd1YWdlIGZvciB0cmFuc2NyaXB0aW9uICgnYXV0bycg Zm9yIGF1dG8tZGV0ZWN0KSIsIE9GRlNFVChsYW5ndWFnZSksIEFWX09QVF9UWVBFX1NUUklORywg ey5zdHIgPSAiYXV0byJ9LCAuZmxhZ3MgPSBGTEFHU30sCisgICAgeyJxdWV1ZSIsICJBdWRpbyBx dWV1ZSBzaXplIGluIG1pbGxpc2Vjb25kcyIsIE9GRlNFVChxdWV1ZSksIEFWX09QVF9UWVBFX0lO VCwgey5pNjQgPSAzMDAwfSwgMjAsIElOVF9NQVgsIC5mbGFncyA9IEZMQUdTfSwKKyAgICB7InVz ZV9ncHUiLCAiVXNlIEdQVSBmb3IgcHJvY2Vzc2luZyIsIE9GRlNFVCh1c2VfZ3B1KSwgQVZfT1BU X1RZUEVfQk9PTCwgey5pNjQgPSAxfSwgMCwgMSwgLmZsYWdzID0gRkxBR1N9LAorICAgIHsiZ3B1 X2RldmljZSIsICJHUFUgZGV2aWNlIHRvIHVzZSIsIE9GRlNFVChncHVfZGV2aWNlKSwgQVZfT1BU X1RZUEVfSU5ULCB7Lmk2NCA9IDB9LCAwLCBJTlRfTUFYLCAuZmxhZ3MgPSBGTEFHU30sCisgICAg eyJkZXN0aW5hdGlvbiIsICJPdXRwdXQgZGVzdGluYXRpb24iLCBPRkZTRVQoZGVzdGluYXRpb24p LCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gIiJ9LCAuZmxhZ3MgPSBGTEFHU30sCisgICAg eyJmb3JtYXQiLCAiT3V0cHV0IGZvcm1hdCAodGV4dHxzcnR8anNvbikiLCBPRkZTRVQoZm9ybWF0 KSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICJ0ZXh0In0sIC5mbGFncyA9IEZMQUdTfSwK KyAgICB7InZhZF9tb2RlbCIsICJQYXRoIHRvIHRoZSBWQUQgbW9kZWwgZmlsZSIsIE9GRlNFVCh2 YWRfbW9kZWxfcGF0aCksIEFWX09QVF9UWVBFX1NUUklORywgLmZsYWdzID0gRkxBR1N9LAorICAg IHsidmFkX3RocmVzaG9sZCIsICJWQUQgdGhyZXNob2xkIiwgT0ZGU0VUKHZhZF90aHJlc2hvbGQp LCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAwLjV9LCAwLjAsIDEuMCwgLmZsYWdzID0gRkxB R1N9LAorICAgIHsidmFkX21pbl9zcGVlY2hfZHVyYXRpb24iLCAiTWluaW11bSBzcGVlY2ggZHVy YXRpb24gaW4gbWlsbGlzZWNvbmRzIGZvciBWQUQiLCBPRkZTRVQodmFkX21pbl9zcGVlY2hfZHVy YXRpb24pLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gNTB9LCAyMCwgSU5UX01BWCwgLmZsYWdz ID0gRkxBR1N9LAorICAgIHsidmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uIiwgIk1pbmltdW0gc2ls ZW5jZSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgZm9yIFZBRCIsIE9GRlNFVCh2YWRfbWluX3Np bGVuY2VfZHVyYXRpb24pLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gNTAwfSwgMCwgSU5UX01B WCwgLmZsYWdzID0gRkxBR1N9LAorICAgIHtOVUxMfX07CisKK3N0YXRpYyBjb25zdCBBVkNsYXNz IHdoaXNwZXJfY2xhc3MgPSB7CisgICAgLmNsYXNzX25hbWUgPSAid2hpc3BlciIsCisgICAgLml0 ZW1fbmFtZSA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gPSB3aGlzcGVyX29w dGlvbnMsCisgICAgLnZlcnNpb24gPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCit9OworCitzdGF0 aWMgY29uc3QgQVZGaWx0ZXJQYWQgd2hpc3Blcl9vdXRwdXRzW10gPSB7CisgICAgeworICAgICAg ICAubmFtZSA9ICJkZWZhdWx0IiwKKyAgICAgICAgLnR5cGUgPSBBVk1FRElBX1RZUEVfQVVESU8s CisgICAgfSwKK307CisKK2NvbnN0IEZGRmlsdGVyIGZmX2FmX3doaXNwZXIgPSB7CisgICAgLnAu bmFtZSA9ICJ3aGlzcGVyIiwKKyAgICAucC5kZXNjcmlwdGlvbiA9IE5VTExfSUZfQ09ORklHX1NN QUxMKCJUcmFuc2NyaWJlIGF1ZGlvIHVzaW5nIHdoaXNwZXIuY3BwLiIpLAorICAgIC5wLnByaXZf Y2xhc3MgPSAmd2hpc3Blcl9jbGFzcywKKyAgICAucC5mbGFncyA9IEFWRklMVEVSX0ZMQUdfTUVU QURBVEFfT05MWSwKKyAgICAuaW5pdCA9IGluaXQsCisgICAgLnVuaW5pdCA9IHVuaW5pdCwKKyAg ICAuYWN0aXZhdGUgPSBhY3RpdmF0ZSwKKyAgICAucHJpdl9zaXplID0gc2l6ZW9mKFdoaXNwZXJD b250ZXh0KSwKKyAgICBGSUxURVJfSU5QVVRTKGZmX2F1ZGlvX2RlZmF1bHRfZmlsdGVycGFkKSwK KyAgICBGSUxURVJfT1VUUFVUUyh3aGlzcGVyX291dHB1dHMpLAorICAgIEZJTFRFUl9TQU1QTEVG TVRTKEFWX1NBTVBMRV9GTVRfRkxULCBBVl9TQU1QTEVfRk1UX0ZMVFApLAorfTsKZGlmZiAtLWdp dCBhL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwpp bmRleCA0MDkwOTliZjFmLi5lYWYwYzhmZTZmIDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9hbGxm aWx0ZXJzLmMKKysrIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCkBAIC0xNjMsNiArMTYzLDgg QEAgZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3ZpcnR1YWxiYXNzOwogZXh0ZXJuIGNvbnN0 IEZGRmlsdGVyIGZmX2FmX3ZvbHVtZTsKIGV4dGVybiBjb25zdCBGRkZpbHRlciBmZl9hZl92b2x1 bWVkZXRlY3Q7CiAKK2V4dGVybiBjb25zdCBGRkZpbHRlciBmZl9hZl93aGlzcGVyOworCiBleHRl cm4gY29uc3QgRkZGaWx0ZXIgZmZfYXNyY19hZXZhbHNyYzsKIGV4dGVybiBjb25zdCBGRkZpbHRl ciBmZl9hc3JjX2FmZGVsYXlzcmM7CiBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfYXNyY19hZmly ZXFzcmM7Ci0tIAoyLjQzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K