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 76AC64E65A for ; Fri, 11 Jul 2025 09:07:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5CC1468FE2F; Fri, 11 Jul 2025 12:07:24 +0300 (EEST) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 257AB68FCD5 for ; Fri, 11 Jul 2025 12:07:17 +0300 (EEST) Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-455b00339c8so2216565e9.3 for ; Fri, 11 Jul 2025 02:07:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752224836; x=1752829636; 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=dcypGmmtLo4Mebkd/5pW+6TufLb8VHZj6BrPYWG1l9w=; b=G5rxj4fegreD0Nf55OZ3U8bfY86kdis/3FYe8pgcGFrL1SNc1NDsFDIGCjCcbxeb9j 8UmE+2Dr4MlkmpLSifbd8MdZLjFI5PpihBwP//0z225OxUMcTQQc5oYikbTkyskZpVdA zArEcFiYE4w6IYvaamGvWfa/ctIr0yRTcv9IJko2TFoPdXYsCIX/G5KmcrJOVjymEGB1 o1r36iC3juemrfkdTy5njBJ+j1SjOsXMErssvouEq3DbWGTJ8dhRXXSt0jBGzZsrR3MX 9VUQEZfsXuvO6K/1xxfnVL1CTiqRAf9a3DraSoH6HHgWWefwodbiCONqy56LXXDG9goW jifw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752224836; x=1752829636; 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=dcypGmmtLo4Mebkd/5pW+6TufLb8VHZj6BrPYWG1l9w=; b=UElIeSAv2ojicbmoEwDQBvX+j/wI5OTPVDQ+kRjShhTHKxnSork+jSU9d6+B4LC0Sw 6nEVSEcuJsWJhPaUHXech6GF/23pACl4H6Tyyybj1oapzXicUAzzexhH3/HMzgWwMS+g 9+j15JVeA5oFbelsOctYKJxb/E+QVw/JTX3j8hIb96l7ATz/udpPJnwYeG2/SSQmu25y flAxBPXuDNpSl4qa/eD/xg+BZ0pUTV2rN/traKnEJsadB66FwfhzOyX0Y0hudqpMWR+a r/KkvuIc1nd+4UxGorrZLnL9BrGdWXYNZtYEV29T2T3jhZJfoUdFF4VT98N7p6SQS0Ji pm8w== X-Gm-Message-State: AOJu0Yz9qCZAh6lHkMSQkjZ1ccxW3mvO++T8ckJxiWfk5l3GOxKLbPs4 lisI5GvVnUFUgs+b3TpwnPvepNJ32DHOB7JLxPH5APrgeykOYmBMWrOLKJGYDg== X-Gm-Gg: ASbGncsmJk5Z5X62L1N+YhgkFTODx39h1o5misprdA+NWuEbUYn3GLczL/Yqsur3jdu +80Zf2fGHBeFnR7ZDsVD+MizynK6z3rXPQ6hLh0Ea5iruip0KkV8MA64J0yRmnLiMeqbbqrSrJA PFBqdXh8ORiE6d2CjZll2mGWIichLZCYpBUzN5KPBE2CTUSfwux0cam4erASm/oVL9/V12Cy5Bu KCCp+jNtGPgL8fNwm9xqG/tgF0Z03JAvyntrJ5wvgwH2KUjPP4U9VdmxPwhakNJqcoMkvZ3ZLKm klxRrnhPYzaLBvtkhBbBz4jaG80rEDOPyAo2Ji8jmIlllVNnTO9wprtlNyCrAX0B/MXTbVc84c1 1jmjch4JpEG36Kf9GCCSFuh4Vy7qK5RG3tBPo7TwqdoDc4dJkT0h1DgqKdVcWhqzW4g6Qm8Mefw == X-Google-Smtp-Source: AGHT+IHqGY7UP1gs4XPlN0vkeqGrO9MK9gOvLZ2TTNxFLhX5Qc5bDahDztNkiSmxkvPDfr0oQi1aiQ== X-Received: by 2002:a05:600c:468d:b0:441:b3eb:570a with SMTP id 5b1f17b1804b1-454ec151c5dmr21850875e9.2.1752224835265; Fri, 11 Jul 2025 02:07:15 -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-454d50dcc84sm83257065e9.24.2025.07.11.02.07.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jul 2025 02:07:14 -0700 (PDT) From: Vittorio Palmisano To: ffmpeg-devel@ffmpeg.org Date: Fri, 11 Jul 2025 11:07:05 +0200 Message-ID: <20250711090708.2156378-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 fCAgIDUgKwogZG9jL2ZpbHRlcnMudGV4aSAgICAgICAgIHwgMTA1ICsrKysrKysrKwogbGliYXZm aWx0ZXIvTWFrZWZpbGUgICAgIHwgICAyICsKIGxpYmF2ZmlsdGVyL2FmX3doaXNwZXIuYyB8IDQ2 OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2ZmlsdGVyL2Fs bGZpbHRlcnMuYyB8ICAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDU4MyBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jCgpkaWZmIC0tZ2l0IGEv Y29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDJjY2FmZTdjMjAuLjU3M2RmYzY3ZGMgMTAwNzU1 Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTMzNyw2ICszMzcsNyBAQCBFeHRl cm5hbCBsaWJyYXJ5IHN1cHBvcnQ6CiAgIC0tZW5hYmxlLXZhcG91cnN5bnRoICAgICBlbmFibGUg VmFwb3VyU3ludGggZGVtdXhlciBbbm9dCiAgIC0tZGlzYWJsZS14bGliICAgICAgICAgICBkaXNh YmxlIHhsaWIgW2F1dG9kZXRlY3RdCiAgIC0tZGlzYWJsZS16bGliICAgICAgICAgICBkaXNhYmxl IHpsaWIgW2F1dG9kZXRlY3RdCisgIC0tZW5hYmxlLXdoaXNwZXIgICAgICAgICBlbmFibGUgd2hp c3BlciBmaWx0ZXIgW25vXQogCiAgIFRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIHByb3ZpZGUgdmFy aW91cyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gZmVhdHVyZXM6CiAgIC0tZGlzYWJsZS1hbWYgICAg ICAgICAgICBkaXNhYmxlIEFNRiB2aWRlbyBlbmNvZGluZyBjb2RlIFthdXRvZGV0ZWN0XQpAQCAt MjAwMyw2ICsyMDA0LDcgQEAgRVhURVJOQUxfTElCUkFSWV9MSVNUPSIKICAgICBwb2NrZXRzcGhp bngKICAgICB2YXBvdXJzeW50aAogICAgIHZ1bGthbl9zdGF0aWMKKyAgICB3aGlzcGVyCiAiCiAK IEhXQUNDRUxfQVVUT0RFVEVDVF9MSUJSQVJZX0xJU1Q9IgpAQCAtNDA1OSw2ICs0MDYxLDcgQEAg eHN0YWNrX3Fzdl9maWx0ZXJfZGVwcz0ibGlibWZ4IgogeHN0YWNrX3Fzdl9maWx0ZXJfc2VsZWN0 PSJxc3Z2cHAiCiBwYWRfdmFhcGlfZmlsdGVyX2RlcHM9InZhYXBpXzEiCiBkcmF3Ym94X3ZhYXBp X2ZpbHRlcl9kZXBzPSJ2YWFwaV8xIgord2hpc3Blcl9maWx0ZXJfZGVwcz0id2hpc3BlciIKIAog IyBleGFtcGxlcwogYXZpb19odHRwX3NlcnZlX2ZpbGVzX2RlcHM9ImF2Zm9ybWF0IGF2dXRpbCBm b3JrIgpAQCAtNzEwOCw2ICs3MTExLDggQEAgZW5hYmxlZCBsaWJ2b19hbXJ3YmVuYyAgICAmJiBy ZXF1aXJlIGxpYnZvX2FtcndiZW5jIHZvLWFtcndiZW5jL2VuY19pZi5oIEVfSUZfaW4KIGVuYWJs ZWQgbGlidm9yYmlzICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnZvcmJpcyB2b3Ji aXMgdm9yYmlzL2NvZGVjLmggdm9yYmlzX2luZm9faW5pdCAmJgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXF1aXJlX3BrZ19jb25maWcgbGlidm9yYmlzZW5jIHZvcmJpc2VuYyB2b3Ji aXMvdm9yYmlzZW5jLmggdm9yYmlzX2VuY29kZV9pbml0CiAKK2VuYWJsZWQgd2hpc3BlciAgICAg ICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIHdoaXNwZXIgIndoaXNwZXIgPj0gMS43LjUiIHdo aXNwZXIuaCB3aGlzcGVyX2luaXRfZnJvbV9maWxlX3dpdGhfcGFyYW1zCisKIGVuYWJsZWQgbGli dnB4ICAgICAgICAgICAgJiYgewogICAgIGVuYWJsZWQgbGlidnB4X3ZwOF9kZWNvZGVyICYmIHsK ICAgICAgICAgY2hlY2tfcGtnX2NvbmZpZyBsaWJ2cHhfdnA4X2RlY29kZXIgInZweCA+PSAxLjQu MCIgInZweC92cHhfZGVjb2Rlci5oIHZweC92cDhkeC5oIiB2cHhfY29kZWNfdnA4X2R4IHx8CmRp ZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQppbmRleCBlZDI5 NTZmZTc1Li43YWVhYjE0OTQ4IDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhpCisrKyBiL2Rv Yy9maWx0ZXJzLnRleGkKQEAgLTc2ODIsNiArNzY4MiwxMTEgQEAgVGhlcmUgYXJlIDYgc2FtcGxl cyBhdCAtNCBkQiwgNjIgYXQgLTUgZEIsIDI4NiBhdCAtNiBkQiwgZXRjLgogSW4gb3RoZXIgd29y ZHMsIHJhaXNpbmcgdGhlIHZvbHVtZSBieSArNCBkQiBkb2VzIG5vdCBjYXVzZSBhbnkgY2xpcHBp bmcsCiByYWlzaW5nIGl0IGJ5ICs1IGRCIGNhdXNlcyBjbGlwcGluZyBmb3IgNiBzYW1wbGVzLCBl dGMuCiAKK0BhbmNob3J7d2hpc3Blcn0KK0BzZWN0aW9uIHdoaXNwZXIKKworSXQgcnVucyBhIGF1 dG9tYXRpYyBzcGVlY2ggcmVjb2duaXRpb24gdXNpbmcgdGhlIE9wZW5BSeKAmXMgV2hpc3BlciBt b2RlbC4KKworSXQgcmVxdWlyZXMgdGhlIHdoaXNwZXIuY3BwIGxpYnJhcnkgKGh0dHBzOi8vZ2l0 aHViLmNvbS9nZ21sLW9yZy93aGlzcGVyLmNwcCkgCithcyBhIHByZS1yZXF1aXNpdGUuIEFmdGVy IGluc3RhbGxpbmcgdGhlIGxpYnJhcnkgaXQgY2FuIGJlIGVuYWJsZWQgdXNpbmc6CitAY29kZXsu L2NvbmZpZ3VyZSAtLWVuYWJsZS13aGlzcGVyfS4KKworVGhlIGZpbHRlciBoYXMgZm9sbG93aW5n IG9wdGlvbnM6CisKK0B0YWJsZSBAb3B0aW9uCitAaXRlbSBtb2RlbAorVGhlIGZpbGUgcGF0aCBv ZiB0aGUgZG93bmxvYWRlZCB3aGlzcGVyLmNwcCBtb2RlbCAobWFuZGF0b3J5KS4KKworQGl0ZW0g bGFuZ3VhZ2UKK1RoZSBsYW5ndWFnZSB0byB1c2UgZm9yIHRyYW5zY3JpcHRpb24gKCdhdXRvJyBm b3IgYXV0by1kZXRlY3QpLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7ImF1dG8ifQorCitAaXRlbSBx dWV1ZQorVGhlIG1heGltdW0gc2l6ZSBpbiBtaWxsaXNlY29uZHMgdGhhdCB3aWxsIGJlIHF1ZXVl ZCBpbnRvIHRoZSBmaWx0ZXIgYmVmb3JlIAorcHJvY2Vzc2luZyB0aGUgYXVkaW8gd2l0aCB3aGlz cGVyCitEZWZhdWx0IHZhbHVlOiBAY29kZXsiMzAwMCJ9CisKK0BpdGVtIHVzZV9ncHUKK0lmIHRo ZSBHUFUgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZC4KK0RlZmF1bHQgdmFsdWU6IEBjb2RleyJ0 cnVlIn0KKworQGl0ZW0gZ3B1X2RldmljZQorVGhlIEdQVSBkZXZpY2UgdG8gdXNlLgorRGVmYXVs dCB2YWx1ZTogQGNvZGV7IjAifQorCitAaXRlbSB0aHJlYWRzCitUaGUgbnVtYmVyIG9mIHRocmVh ZHMgdG8gdXNlLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7IjQifQorCitAaXRlbSBkZXN0aW5hdGlv bgorSWYgc2V0LCB0aGUgdHJhbnNjcmlwdGlvbiBvdXRwdXQgd2lsbCBiZSBzZW50IHRvIHRoZSBz cGVjaWZpZWQgZmlsZSBvciBVUkwKKyh1c2Ugb25lIG9mIHRoZSBGRm1wZWcgQVZJTyBwcm90b2Nv bHMpOyBvdGhlcndpc2UsIHRoZSBvdXRwdXQgd2lsbCBiZSBsb2dnZWQgYXMKK2luZm8gbWVzc2Fn ZXMuCitUaGUgb3V0cHV0IHdpbGwgYWxzbyBiZSBzZXQgaW4gdGhlICJsYXZmaS53aGlzcGVyLnRl eHQiIGZyYW1lIG1ldGFkYXRhLgorCitAaXRlbSBmb3JtYXQKK1RoZSBkZXN0aW5hdGlvbiBmb3Jt YXQgc3RyaW5nOyBpdCBjb3VsZCBiZSAidGV4dCIgKG9ubHkgdGhlIHRyYW5zY3JpYmVkIHRleHQK K3dpbGwgYmUgc2VudCB0byB0aGUgZGVzdGluYXRpb24pLCAic3J0IiAoc3VidGl0bGUgZm9ybWF0 KSBvciAianNvbiIuCitEZWZhdWx0IHZhbHVlOiBAY29kZXsidGV4dCJ9CisKK0BpdGVtIHZhZF9t b2RlbAorUGF0aCB0byB0aGUgVkFEIG1vZGVsIGZpbGUuIElmIHNldCwgdGhlIGZpbHRlciB3aWxs IGxvYWQgYW4gYWRkaXRpb25hbCB2b2ljZQorYWN0aXZpdHkgZGV0ZWN0aW9uIG1vZHVsZSAoaHR0 cHM6Ly9naXRodWIuY29tL3NuYWtlcnM0L3NpbGVyby12YWQpIHRoYXQgd2lsbCBiZQordXNlZCB0 byBmcmFnbWVudCB0aGUgYXVkaW8gcXVldWU7IHVzZSB0aGlzIG9wdGlvbiBzZXR0aW5nIGEgdmFs aWQgcGF0aCBvYnRhaW5lZAorZnJvbSB0aGUgd2hpc3Blci5jcHAgcmVwb3NpdG9yeSAoZS5nLiAi Li4vd2hpc3Blci5jcHAvbW9kZWxzL2dnbWwtc2lsZXJvLXY1LjEuMi5iaW4iKQorYW5kIGluY3Jl YXNlIHRoZSBxdWV1ZSBwYXJhbWV0ZXIgdG8gYW4gaGlnaGVyIHZhbHVlIChlLmcuIDEwMDAwKQor CitAaXRlbSB2YWRfdGhyZXNob2xkCitUaGUgVkFEIHRocmVzaG9sZCB0byB1c2UuCitEZWZhdWx0 IHZhbHVlOiBAY29kZXsiMC41In0KKworQGl0ZW0gdmFkX21pbl9zcGVlY2hfZHVyYXRpb24KK1Ro ZSBtaW5pbXVtIFZBRCBzcGVha2luZyBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuCitEZWZhdWx0 IHZhbHVlOiBAY29kZXsiNTAifQorCitAaXRlbSB2YWRfbWluX3NpbGVuY2VfZHVyYXRpb24KK1Ro ZSBtaW5pbXVtIFZBRCBzaWxlbmNlIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4KK0RlZmF1bHQg dmFsdWU6IEBjb2RleyI1MDAifQorCitAZW5kIHRhYmxlCisKK0BzdWJzZWN0aW9uIEV4YW1wbGVz CitAaXRlbWl6ZQorCitAaXRlbQorUnVuIGEgdHJhbnNjcmlwdGlvbiB3aXRoIHNydCBmaWxlIGdl bmVyYXRpb246CitAZXhhbXBsZQorZmZtcGVnIC1pIGlucHV0Lm1wNCAtdm4gLWFmICJ3aGlzcGVy PW1vZGVsPS4uL3doaXNwZXIuY3BwL21vZGVscy9nZ21sLWJhc2UuZW4uYmluXAorOmxhbmd1YWdl PWVuXAorOnF1ZXVlPTMwMDBcCis6ZGVzdGluYXRpb249b3V0cHV0LnNydFwKKzpmb3JtYXQ9c3J0 IiAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorUnVuIGEgdHJhbnNjcmlwdGlvbiBh bmQgc2VuZCB0aGUgb3V0cHV0IGluIEpTT04gZm9ybWF0IHRvIGFuIEhUVFAgc2VydmljZToKK0Bl eGFtcGxlCitmZm1wZWcgLWkgaW5wdXQubXA0IC12biAtYWYgIndoaXNwZXI9bW9kZWw9Li4vd2hp c3Blci5jcHAvbW9kZWxzL2dnbWwtYmFzZS5lbi5iaW5cCis6bGFuZ3VhZ2U9ZW5cCis6cXVldWU9 MzAwMFwKKzpkZXN0aW5hdGlvbj1odHRwXFw6Ly9sb2NhbGhvc3RcXDozMDAwXAorOmZvcm1hdD1q c29uJyAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorVHJhbnNjcmliZSB0aGUgbWlj cm9waG9uZSBpbnB1dCB1c2luZyB0aGUgVkFEIG9wdGlvbjoKK0BleGFtcGxlCitmZm1wZWcgLWxv Z2xldmVsIHdhcm5pbmcgLWYgcHVsc2UgLWkgZGVmYXVsdCBcCistYWYgJ2hpZ2hwYXNzPWY9MjAw LGxvd3Bhc3M9Zj0zMDAwLHdoaXNwZXI9bW9kZWw9Li4vd2hpc3Blci5jcHAvbW9kZWxzL2dnbWwt bWVkaXVtLmJpblwKKzpsYW5ndWFnZT1lblwKKzpxdWV1ZT0xMDAwMFwKKzpkZXN0aW5hdGlvbj0t XAorOmZvcm1hdD1qc29uXAorOnZhZF9tb2RlbD0uLi93aGlzcGVyLmNwcC9tb2RlbHMvZ2dtbC1z aWxlcm8tdjUuMS4yLmJpbicgLWYgbnVsbCAtCitAZW5kIGV4YW1wbGUKKworQGVuZCBpdGVtaXpl CisKIEBjIG1hbiBlbmQgQVVESU8gRklMVEVSUwogCiBAY2hhcHRlciBBdWRpbyBTb3VyY2VzCmRp ZmYgLS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCmlu ZGV4IDllOTE1M2Y1YjAuLmUxMzM0MjJjYTQgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL01ha2Vm aWxlCisrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCkBAIC0xODgsNiArMTg4LDggQEAgT0JKUy0k KENPTkZJR19ISUxCRVJUX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gYXNyY19oaWxiZXJ0Lm8K IE9CSlMtJChDT05GSUdfU0lOQ19GSUxURVIpICAgICAgICAgICAgICAgICAgICs9IGFzcmNfc2lu Yy5vCiBPQkpTLSQoQ09ORklHX1NJTkVfRklMVEVSKSAgICAgICAgICAgICAgICAgICArPSBhc3Jj X3NpbmUubwogCitPQkpTLSQoQ09ORklHX1dISVNQRVJfRklMVEVSKSAgICAgICAgICAgICAgICAr PSBhZl93aGlzcGVyLm8KKwogT0JKUy0kKENPTkZJR19BTlVMTFNJTktfRklMVEVSKSAgICAgICAg ICAgICAgKz0gYXNpbmtfYW51bGxzaW5rLm8KIAogIyB2aWRlbyBmaWx0ZXJzCmRpZmYgLS1naXQg YS9saWJhdmZpbHRlci9hZl93aGlzcGVyLmMgYi9saWJhdmZpbHRlci9hZl93aGlzcGVyLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYWYwM2U4NTZlMgotLS0gL2Rldi9u dWxsCisrKyBiL2xpYmF2ZmlsdGVyL2FmX3doaXNwZXIuYwpAQCAtMCwwICsxLDQ2OSBAQAorLyoK KyAqIENvcHlyaWdodCAoYykgMjAyNSBWaXR0b3JpbyBQYWxtaXNhbm8KKyAqCisgKiBUaGlzIGZp bGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIu MSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs b25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4sCisgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s IE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8 c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDx3aGlzcGVyLmg+CisK KyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5o IgorI2luY2x1ZGUgImxpYmF2dXRpbC9jaGFubmVsX2xheW91dC5oIgorI2luY2x1ZGUgImxpYmF2 dXRpbC9zYW1wbGVmbXQuaCIKKyNpbmNsdWRlICJsaWJhdmZpbHRlci9hdmZpbHRlci5oIgorI2lu Y2x1ZGUgImxpYmF2ZmlsdGVyL2F1ZGlvLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgor I2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRl cm5hbC5oIgorI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW8uaCIKKyNpbmNsdWRlICJsaWJhdnV0 aWwvdGhyZWFkLmgiCisKKyNpbmNsdWRlICJmb3JtYXRzLmgiCisKK3R5cGVkZWYgc3RydWN0IFdo aXNwZXJDb250ZXh0IHsKKyAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKKyAgICBjaGFyICptb2Rl bF9wYXRoOworICAgIGNoYXIgKmxhbmd1YWdlOworICAgIGludCB0aHJlYWRzOworICAgIGJvb2wg dXNlX2dwdTsKKyAgICBpbnQgZ3B1X2RldmljZTsKKyAgICBjaGFyICp2YWRfbW9kZWxfcGF0aDsK KyAgICBmbG9hdCB2YWRfdGhyZXNob2xkOworICAgIGludCB2YWRfbWluX3NwZWVjaF9kdXJhdGlv bjsKKyAgICBpbnQgdmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uOworCisgICAgaW50IHF1ZXVlOwor ICAgIGNoYXIgKmRlc3RpbmF0aW9uOworICAgIGNoYXIgKmZvcm1hdDsKKworICAgIHN0cnVjdCB3 aGlzcGVyX2NvbnRleHQgKmN0eF93c3A7CisgICAgc3RydWN0IHdoaXNwZXJfdmFkX2NvbnRleHQg KmN0eF92YWQ7CisgICAgc3RydWN0IHdoaXNwZXJfdmFkX3BhcmFtcyB2YWRfcGFyYW1zOworCisg ICAgZmxvYXQgKmF1ZGlvX2J1ZmZlcjsKKyAgICBpbnQgYXVkaW9fYnVmZmVyX3F1ZXVlX3NpemU7 CisgICAgaW50IGF1ZGlvX2J1ZmZlcl9maWxsX3NpemU7CisgICAgaW50IGF1ZGlvX2J1ZmZlcl92 YWRfc2l6ZTsKKworICAgIGludCBlb2Y7CisgICAgaW50NjRfdCBuZXh0X3B0czsKKworICAgIEFW SU9Db250ZXh0ICphdmlvX2NvbnRleHQ7CisgICAgaW50IGluZGV4OworICAgIGludDY0X3QgdGlt ZXN0YW1wOworfSBXaGlzcGVyQ29udGV4dDsKKworc3RhdGljIHZvaWQgY2JfbG9nKGVudW0gZ2dt bF9sb2dfbGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKnRleHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sK KyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IChBVkZpbHRlckNvbnRleHQgKikgdXNlcl9kYXRh OworICAgIHN3aXRjaCAobGV2ZWwpIHsKKyAgICBjYXNlIEdHTUxfTE9HX0xFVkVMX0VSUk9SOgor ICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICIlcyIsIHRleHQpOworICAgICAgICBi cmVhazsKKyAgICBjYXNlIEdHTUxfTE9HX0xFVkVMX1dBUk46CisgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19XQVJOSU5HLCAiJXMiLCB0ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH R01MX0xPR19MRVZFTF9JTkZPOgorICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIiVz IiwgdGV4dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR0dNTF9MT0dfTEVWRUxfREVCVUc6 CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIiVzIiwgdGV4dCk7CisgICAgICAg IGJyZWFrOworICAgIH0KK30KKworc3RhdGljIGludCBpbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4 KQoreworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworCisgICAgc3RhdGlj IEFWT25jZSBpbml0X3N0YXRpY19vbmNlID0gQVZfT05DRV9JTklUOworICAgIGZmX3RocmVhZF9v bmNlKCZpbml0X3N0YXRpY19vbmNlLCBnZ21sX2JhY2tlbmRfbG9hZF9hbGwpOworCisgICAgd2hp c3Blcl9sb2dfc2V0KGNiX2xvZywgY3R4KTsKKworICAgIC8vIEluaXQgd2hpc3BlciBjb250ZXh0 CisgICAgaWYgKCF3Y3R4LT5tb2RlbF9wYXRoKSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xP R19FUlJPUiwgIk5vIHdoaXNwZXIgbW9kZWwgcGF0aCBzcGVjaWZpZWQuIFVzZSB0aGUgJ21vZGVs JyBvcHRpb24uXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisK KyAgICBzdHJ1Y3Qgd2hpc3Blcl9jb250ZXh0X3BhcmFtcyBwYXJhbXMgPSB3aGlzcGVyX2NvbnRl eHRfZGVmYXVsdF9wYXJhbXMoKTsKKyAgICBwYXJhbXMudXNlX2dwdSA9IHdjdHgtPnVzZV9ncHU7 CisgICAgcGFyYW1zLmdwdV9kZXZpY2UgPSB3Y3R4LT5ncHVfZGV2aWNlOworCisgICAgd2N0eC0+ Y3R4X3dzcCA9IHdoaXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMod2N0eC0+bW9kZWxf cGF0aCwgcGFyYW1zKTsKKyAgICBpZiAod2N0eC0+Y3R4X3dzcCA9PSBOVUxMKSB7CisgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBpbml0aWFsaXplIHdoaXNwZXIg Y29udGV4dCBmcm9tIG1vZGVsOiAlc1xuIiwgd2N0eC0+bW9kZWxfcGF0aCk7CisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTyk7CisgICAgfQorICAgIC8vIEluaXQgVkFEIG1vZGVsIGNvbnRleHQK KyAgICBpZiAod2N0eC0+dmFkX21vZGVsX3BhdGgpIHsKKyAgICAgICAgc3RydWN0IHdoaXNwZXJf dmFkX2NvbnRleHRfcGFyYW1zIGN0eF9wYXJhbXMgPSB3aGlzcGVyX3ZhZF9kZWZhdWx0X2NvbnRl eHRfcGFyYW1zKCk7CisgICAgICAgIGN0eF9wYXJhbXMubl90aHJlYWRzID0gd2N0eC0+dGhyZWFk czsKKyAgICAgICAgLy8gY3R4X3BhcmFtcy51c2VfZ3B1ID0gd2N0eC0+dXNlX2dwdTsgVE9ETyAo c2VlOiB3aGlzcGVyX3ZhZF9pbml0X2NvbnRleHQpCisgICAgICAgIGN0eF9wYXJhbXMuZ3B1X2Rl dmljZSA9IHdjdHgtPmdwdV9kZXZpY2U7CisgICAgICAgIHdjdHgtPmN0eF92YWQgPSB3aGlzcGVy X3ZhZF9pbml0X2Zyb21fZmlsZV93aXRoX3BhcmFtcyh3Y3R4LT52YWRfbW9kZWxfcGF0aCwgY3R4 X3BhcmFtcyk7CisKKyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcyA9IHdoaXNwZXJfdmFkX2RlZmF1 bHRfcGFyYW1zKCk7CisgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMudGhyZXNob2xkID0gd2N0eC0+ dmFkX3RocmVzaG9sZDsKKyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcy5taW5fc3BlZWNoX2R1cmF0 aW9uX21zID0gd2N0eC0+dmFkX21pbl9zcGVlY2hfZHVyYXRpb247CisgICAgICAgIHdjdHgtPnZh ZF9wYXJhbXMubWluX3NpbGVuY2VfZHVyYXRpb25fbXMgPSB3Y3R4LT52YWRfbWluX3NpbGVuY2Vf ZHVyYXRpb247CisgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMubWF4X3NwZWVjaF9kdXJhdGlvbl9z ID0gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUgLyAxMDAwLjBmOworICAgICAgICB3Y3R4 LT52YWRfcGFyYW1zLnNwZWVjaF9wYWRfbXMgPSAwOworICAgICAgICB3Y3R4LT52YWRfcGFyYW1z LnNhbXBsZXNfb3ZlcmxhcCA9IDA7CisgICAgfQorICAgIC8vIEluaXQgYnVmZmVyCisgICAgd2N0 eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUgPSBXSElTUEVSX1NBTVBMRV9SQVRFICogd2N0eC0+ cXVldWUgLyAxMDAwOworICAgIHdjdHgtPmF1ZGlvX2J1ZmZlciA9IGF2X21hbGxvYyh3Y3R4LT5h dWRpb19idWZmZXJfcXVldWVfc2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgIGlmICghd2N0eC0+ YXVkaW9fYnVmZmVyKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgd2N0 eC0+bmV4dF9wdHMgPSBBVl9OT1BUU19WQUxVRTsKKworICAgIGlmICh3Y3R4LT5kZXN0aW5hdGlv biAmJiBzdHJjbXAoIiIsIHdjdHgtPmRlc3RpbmF0aW9uKSkgeworICAgICAgICBjb25zdCBjaGFy ICpkc3QgPSB3Y3R4LT5kZXN0aW5hdGlvbjsKKyAgICAgICAgaWYgKCFzdHJjbXAoIi0iLCBkc3Qp KQorICAgICAgICAgICAgZHN0ID0gInBpcGU6MSI7CisgICAgICAgIGludCByZXQgPSBhdmlvX29w ZW4oJndjdHgtPmF2aW9fY29udGV4dCwgZHN0LCBBVklPX0ZMQUdfV1JJVEUpOworCisgICAgICAg IGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJD b3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIHdjdHgtPmRlc3RpbmF0aW9uLCBhdl9lcnIyc3RyKHJl dCkpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHdjdHgt PmF2aW9fY29udGV4dC0+ZGlyZWN0ID0gQVZJT19GTEFHX0RJUkVDVDsKKyAgICB9CisKKyAgICBh dl9sb2coY3R4LCBBVl9MT0dfSU5GTywKKyAgICAgICAgICAgIldoaXNwZXIgZmlsdGVyIGluaXRp YWxpemVkOiBtb2RlbDogJXMgbGFuZzogJXMgcXVldWU6ICVkIG1zXG4iLAorICAgICAgICAgICB3 Y3R4LT5tb2RlbF9wYXRoLCB3Y3R4LT5sYW5ndWFnZSwgd2N0eC0+cXVldWUpOworCisgICAgcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sK KyAgICBXaGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKworICAgIGlmICh3Y3R4LT5h dWRpb19idWZmZXJfZmlsbF9zaXplID4gMCkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df V0FSTklORywKKyAgICAgICAgICAgICAgICJSZW1haW5pbmcgYXVkaW8gYnVmZmVyICVkIHNhbXBs ZXMgKCVkIHNlY29uZHMpIGFmdGVyIHN0b3BwaW5nXG4iLAorICAgICAgICAgICAgICAgd2N0eC0+ YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSwgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSAvIFdI SVNQRVJfU0FNUExFX1JBVEUpOworICAgIH0KKworICAgIGlmICh3Y3R4LT5jdHhfdmFkKSB7Cisg ICAgICAgIHdoaXNwZXJfdmFkX2ZyZWUod2N0eC0+Y3R4X3ZhZCk7CisgICAgICAgIHdjdHgtPmN0 eF92YWQgPSBOVUxMOworICAgIH0KKworICAgIGlmICh3Y3R4LT5jdHhfd3NwKSB7CisgICAgICAg IHdoaXNwZXJfZnJlZSh3Y3R4LT5jdHhfd3NwKTsKKyAgICAgICAgd2N0eC0+Y3R4X3dzcCA9IE5V TEw7CisgICAgfQorCisgICAgYXZfZnJlZXAoJndjdHgtPmF1ZGlvX2J1ZmZlcik7CisKKyAgICBp ZiAod2N0eC0+YXZpb19jb250ZXh0KQorICAgICAgICBhdmlvX2Nsb3NlcCgmd2N0eC0+YXZpb19j b250ZXh0KTsKK30KKworc3RhdGljIHZvaWQgcnVuX3RyYW5zY3JpcHRpb24oQVZGaWx0ZXJDb250 ZXh0ICpjdHgsIEFWRGljdGlvbmFyeSAqKm1ldGFkYXRhLCBpbnQgZW5kX3BvcykKK3sKKyAgICBX aGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKyAgICBlbmRfcG9zID0gRkZNSU4oZW5k X3Bvcywgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSk7CisKKyAgICBpZiAoIXdjdHgtPmN0 eF93c3AgfHwgZW5kX3BvcyA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCBkdXJh dGlvbiA9IChmbG9hdCkgZW5kX3BvcyAvIFdISVNQRVJfU0FNUExFX1JBVEU7CisKKyAgICBhdl9s b2coY3R4LCBBVl9MT0dfSU5GTywKKyAgICAgICAgICAgInJ1biB0cmFuc2NyaXB0aW9uICVkLyVk IHNhbXBsZXMgKCUuMmYgc2Vjb25kcykuLi5cbiIsIGVuZF9wb3MsIHdjdHgtPmF1ZGlvX2J1ZmZl cl9maWxsX3NpemUsIGR1cmF0aW9uKTsKKworICAgIHN0cnVjdCB3aGlzcGVyX2Z1bGxfcGFyYW1z IHBhcmFtcyA9IHdoaXNwZXJfZnVsbF9kZWZhdWx0X3BhcmFtcyhXSElTUEVSX1NBTVBMSU5HX0dS RUVEWSk7CisgICAgcGFyYW1zLmxhbmd1YWdlID0gd2N0eC0+bGFuZ3VhZ2U7CisgICAgcGFyYW1z Lm5fdGhyZWFkcyA9IHdjdHgtPnRocmVhZHM7CisgICAgcGFyYW1zLnByaW50X3NwZWNpYWwgPSAw OworICAgIHBhcmFtcy5wcmludF9wcm9ncmVzcyA9IDA7CisgICAgcGFyYW1zLnByaW50X3JlYWx0 aW1lID0gMDsKKyAgICBwYXJhbXMucHJpbnRfdGltZXN0YW1wcyA9IDA7CisKKyAgICBpZiAod2hp c3Blcl9mdWxsKHdjdHgtPmN0eF93c3AsIHBhcmFtcywgd2N0eC0+YXVkaW9fYnVmZmVyLCBlbmRf cG9zKSAhPSAwKSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byBwcm9jZXNzIGF1ZGlvIHdpdGggd2hpc3Blci5jcHBcbiIpOworICAgICAgICByZXR1cm47Cisg ICAgfQorCisgICAgY29uc3QgaW50IG5fc2VnbWVudHMgPSB3aGlzcGVyX2Z1bGxfbl9zZWdtZW50 cyh3Y3R4LT5jdHhfd3NwKTsKKyAgICBjaGFyICpzZWdtZW50c190ZXh0ID0gTlVMTDsKKworICAg IGZvciAoaW50IGkgPSAwOyBpIDwgbl9zZWdtZW50czsgKytpKSB7CisgICAgICAgIGNvbnN0IGJv b2wgdHVybiA9IHdoaXNwZXJfZnVsbF9nZXRfc2VnbWVudF9zcGVha2VyX3R1cm5fbmV4dCh3Y3R4 LT5jdHhfd3NwLCBpKTsKKyAgICAgICAgY29uc3QgaW50NjRfdCB0MCA9IHdoaXNwZXJfZnVsbF9n ZXRfc2VnbWVudF90MCh3Y3R4LT5jdHhfd3NwLCBpKSAqIDEwOworICAgICAgICBjb25zdCBpbnQ2 NF90IHQxID0gd2hpc3Blcl9mdWxsX2dldF9zZWdtZW50X3QxKHdjdHgtPmN0eF93c3AsIGkpICog MTA7CisgICAgICAgIGNvbnN0IGNoYXIgKnRleHQgPSB3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRf dGV4dCh3Y3R4LT5jdHhfd3NwLCBpKTsKKyAgICAgICAgY2hhciAqdGV4dF9jbGVhbmVkID0gYXZf c3RyaXJlcGxhY2UodGV4dCArIDEsICJbQkxBTktfQVVESU9dIiwgIiIpOworCisgICAgICAgIGlm IChhdl9zdHJubGVuKHRleHRfY2xlYW5lZCwgMSkgPT0gMCkgeworICAgICAgICAgICAgYXZfZnJl ZXAoJnRleHRfY2xlYW5lZCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg ICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgIiAgWyVsZC0lbGQlc106IFwiJXNcIlxuIiwK KyAgICAgICAgICAgICAgIHdjdHgtPnRpbWVzdGFtcCArIHQwLCB3Y3R4LT50aW1lc3RhbXAgKyB0 MSwgdHVybiA/ICIgKHR1cm4pIiA6ICIiLCB0ZXh0X2NsZWFuZWQpOworCisgICAgICAgIGlmIChz ZWdtZW50c190ZXh0KSB7CisgICAgICAgICAgICBjaGFyICpuZXdfdGV4dCA9IGF2X2FzcHJpbnRm KCIlcyVzIiwgc2VnbWVudHNfdGV4dCwgdGV4dF9jbGVhbmVkKTsKKyAgICAgICAgICAgIGF2X2Zy ZWVwKCZzZWdtZW50c190ZXh0KTsKKyAgICAgICAgICAgIHNlZ21lbnRzX3RleHQgPSBuZXdfdGV4 dDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzZWdtZW50c190ZXh0ID0gYXZfc3RyZHVw KHRleHRfY2xlYW5lZCk7CisKKyAgICAgICAgaWYgKHdjdHgtPmF2aW9fY29udGV4dCkgeworICAg ICAgICAgICAgY29uc3QgaW50NjRfdCBzdGFydF90ID0gd2N0eC0+dGltZXN0YW1wICsgdDA7Cisg ICAgICAgICAgICBjb25zdCBpbnQ2NF90IGVuZF90ID0gd2N0eC0+dGltZXN0YW1wICsgdDE7Cisg ICAgICAgICAgICBjaGFyICpidWYgPSBOVUxMOworCisgICAgICAgICAgICBpZiAoIWF2X3N0cmNh c2VjbXAod2N0eC0+Zm9ybWF0LCAic3J0IikpIHsKKyAgICAgICAgICAgICAgICBidWYgPQorICAg ICAgICAgICAgICAgICAgICBhdl9hc3ByaW50ZgorICAgICAgICAgICAgICAgICAgICAoIiVkXG4l MDJsZDolMDJsZDolMDJsZC4lMDNsZCAtLT4gJTAybGQ6JTAybGQ6JTAybGQuJTAzbGRcbiVzXG5c biIsCisgICAgICAgICAgICAgICAgICAgICB3Y3R4LT5pbmRleCwgc3RhcnRfdCAvIDM2MDAwMDAs CisgICAgICAgICAgICAgICAgICAgICAoc3RhcnRfdCAvIDYwMDAwKSAlIDYwLCAoc3RhcnRfdCAv IDEwMDApICUgNjAsCisgICAgICAgICAgICAgICAgICAgICBzdGFydF90ICUgMTAwMCwgZW5kX3Qg LyAzNjAwMDAwLCAoZW5kX3QgLyA2MDAwMCkgJSA2MCwKKyAgICAgICAgICAgICAgICAgICAgIChl bmRfdCAvIDEwMDApICUgNjAsIGVuZF90ICUgMTAwMCwgdGV4dF9jbGVhbmVkKTsKKyAgICAgICAg ICAgIH0gZWxzZSBpZiAoIWF2X3N0cmNhc2VjbXAod2N0eC0+Zm9ybWF0LCAianNvbiIpKSB7Cisg ICAgICAgICAgICAgICAgYnVmID0gYXZfYXNwcmludGYoIntcInN0YXJ0XCI6JWxkLFwiZW5kXCI6 JWxkLFwidGV4dFwiOlwiJXNcIn1cbiIsIHN0YXJ0X3QsIGVuZF90LCB0ZXh0X2NsZWFuZWQpOwor ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnVmID0gYXZfc3RyZHVwKHRleHRf Y2xlYW5lZCk7CisKKyAgICAgICAgICAgIGlmIChidWYpIHsKKyAgICAgICAgICAgICAgICBhdmlv X3dyaXRlKHdjdHgtPmF2aW9fY29udGV4dCwgYnVmLCBzdHJsZW4oYnVmKSk7CisgICAgICAgICAg ICAgICAgYXZfZnJlZXAoJmJ1Zik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg ICBhdl9mcmVlcCgmdGV4dF9jbGVhbmVkKTsKKyAgICB9CisKKyAgICB3Y3R4LT5pbmRleCsrOwor ICAgIHdjdHgtPnRpbWVzdGFtcCArPSBkdXJhdGlvbiAqIDEwMDA7CisKKyAgICBpZiAobWV0YWRh dGEgJiYgc2VnbWVudHNfdGV4dCkgeworICAgICAgICBhdl9kaWN0X3NldChtZXRhZGF0YSwgImxh dmZpLndoaXNwZXIudGV4dCIsIHNlZ21lbnRzX3RleHQsIDApOworICAgICAgICBjaGFyICpkdXJh dGlvbl90ZXh0ID0gYXZfYXNwcmludGYoIiVmIiwgZHVyYXRpb24pOworICAgICAgICBhdl9kaWN0 X3NldChtZXRhZGF0YSwgImxhdmZpLndoaXNwZXIuZHVyYXRpb24iLCBkdXJhdGlvbl90ZXh0LCBB Vl9ESUNUX0RPTlRfU1RSRFVQX1ZBTCk7CisgICAgfQorICAgIGF2X2ZyZWVwKCZzZWdtZW50c190 ZXh0KTsKKworICAgIG1lbWNweSh3Y3R4LT5hdWRpb19idWZmZXIsIHdjdHgtPmF1ZGlvX2J1ZmZl ciArIGVuZF9wb3MsIGVuZF9wb3MgKiBzaXplb2YoZmxvYXQpKTsKKyAgICB3Y3R4LT5hdWRpb19i dWZmZXJfZmlsbF9zaXplIC09IGVuZF9wb3M7CisgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9z aXplID0gd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZTsKK30KKworc3RhdGljIGludCBmaWx0 ZXJfZnJhbWUoQVZGaWx0ZXJMaW5rICppbmxpbmssIEFWRnJhbWUgKmZyYW1lKQoreworICAgIEFW RmlsdGVyQ29udGV4dCAqY3R4ID0gaW5saW5rLT5kc3Q7CisgICAgV2hpc3BlckNvbnRleHQgKndj dHggPSBjdHgtPnByaXY7CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRz WzBdOworICAgIEFWRGljdGlvbmFyeSAqKm1ldGFkYXRhID0gJmZyYW1lLT5tZXRhZGF0YTsKKwor ICAgIGNvbnN0IGludCBzYW1wbGVzID0gZnJhbWUtPm5iX3NhbXBsZXM7CisgICAgY29uc3QgZmxv YXQgKmlucHV0X2RhdGEgPSAoY29uc3QgZmxvYXQgKikgZnJhbWUtPmRhdGFbMF07CisKKyAgICBp ZiAod2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSArIHNhbXBsZXMgPiB3Y3R4LT5hdWRpb19i dWZmZXJfcXVldWVfc2l6ZSkgeworICAgICAgICBydW5fdHJhbnNjcmlwdGlvbihjdHgsIG1ldGFk YXRhLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKTsKKyAgICB9CisKKyAgICBtZW1jcHko d2N0eC0+YXVkaW9fYnVmZmVyICsgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSwgaW5wdXRf ZGF0YSwgc2FtcGxlcyAqIHNpemVvZihmbG9hdCkpOworICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9m aWxsX3NpemUgKz0gc2FtcGxlczsKKworICAgIGlmICh3Y3R4LT5jdHhfdmFkCisgICAgICAgICYm ICh3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplIC0gd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9z aXplKSA+PQorICAgICAgICBXSElTUEVSX1NBTVBMRV9SQVRFICogKHdjdHgtPnZhZF9taW5fc3Bl ZWNoX2R1cmF0aW9uICsgd2N0eC0+dmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uKSAvIDEwMDApIHsK KyAgICAgICAgc3RydWN0IHdoaXNwZXJfdmFkX3NlZ21lbnRzICpzZWdtZW50cyA9IHdoaXNwZXJf dmFkX3NlZ21lbnRzX2Zyb21fc2FtcGxlcyh3Y3R4LT5jdHhfdmFkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2N0 eC0+YXVkaW9fYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjdHgtPmF1ZGlvX2J1 ZmZlcl9maWxsX3NpemUpOworICAgICAgICB3Y3R4LT5hdWRpb19idWZmZXJfdmFkX3NpemUgPSB3 Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplOworCisgICAgICAgIGlmICghc2VnbWVudHMpIHsK KyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgImZhaWxlZCB0byBkZXRlY3Qg VkFEXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBuX3NlZ21lbnRzID0g d2hpc3Blcl92YWRfc2VnbWVudHNfbl9zZWdtZW50cyhzZWdtZW50cyk7CisKKyAgICAgICAgICAg IGlmIChuX3NlZ21lbnRzID4gMCkgeworICAgICAgICAgICAgICAgIGNvbnN0IGludDY0X3Qgc3Rh cnRfbXMgPSB3aGlzcGVyX3ZhZF9zZWdtZW50c19nZXRfc2VnbWVudF90MChzZWdtZW50cywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbl9zZWdtZW50cyAtIDEpICogMTA7CisgICAgICAgICAgICAgICAg Y29uc3QgaW50NjRfdCBlbmRfbXMgPSB3aGlzcGVyX3ZhZF9zZWdtZW50c19nZXRfc2VnbWVudF90 MShzZWdtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fc2VnbWVudHMgLSAxKSAqIDEwOworICAg ICAgICAgICAgICAgIGludCBlbmRfcG9zID0gKGludCkgKGVuZF9tcyAqIFdISVNQRVJfU0FNUExF X1JBVEUgLyAxMDAwKTsKKworICAgICAgICAgICAgICAgIGlmIChlbmRfcG9zIDwgd2N0eC0+YXVk aW9fYnVmZmVyX2ZpbGxfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJWQUQgZGV0ZWN0ZWQgJWQg c2VnbWVudHMsIHN0YXJ0OiAlbGQgbXMsIGVuZDogJWxkIG1zIChidWZmZXI6ICVkIG1zKVxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fc2VnbWVudHMsIHN0YXJ0X21zLCBlbmRfbXMs IDEwMDAgKiB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplIC8gV0hJU1BFUl9TQU1QTEVfUkFU RSk7CisgICAgICAgICAgICAgICAgICAgIHJ1bl90cmFuc2NyaXB0aW9uKGN0eCwgbWV0YWRhdGEs IGVuZF9wb3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgd2hpc3Blcl92YWRfZnJlZV9zZWdtZW50cyhzZWdtZW50cyk7CisgICAgICAgIH0KKyAgICB9 IGVsc2UgaWYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPj0gd2N0eC0+YXVkaW9fYnVm ZmVyX3F1ZXVlX3NpemUpCisgICAgICAgIHJ1bl90cmFuc2NyaXB0aW9uKGN0eCwgbWV0YWRhdGEs IHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUpOworCisgICAgd2N0eC0+bmV4dF9wdHMgPSBm cmFtZS0+cHRzICsgYXZfcmVzY2FsZV9xKGZyYW1lLT5uYl9zYW1wbGVzLCAoQVZSYXRpb25hbCkg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBpbmxp bmstPnNhbXBsZV9yYXRlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsIGlubGluay0+dGltZV9iYXNlKTsKKyAgICByZXR1cm4gZmZfZmlsdGVyX2ZyYW1l KG91dGxpbmssIGZyYW1lKTsKK30KKworc3RhdGljIGludCBwdXNoX2xhc3RfZnJhbWUoQVZGaWx0 ZXJMaW5rICpvdXRsaW5rKQoreworICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+ c3JjOworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworICAgIEFWRnJhbWUg KmZyYW1lOworICAgIGludCBuX291dCA9IDE7CisKKyAgICBpZiAoY3R4LT5pc19kaXNhYmxlZCB8 fCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplID09IDApCisgICAgICAgIHJldHVybiAwOwor ICAgIGZyYW1lID0gZmZfZ2V0X2F1ZGlvX2J1ZmZlcihvdXRsaW5rLCBuX291dCk7CisgICAgaWYg KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGF2X3NhbXBs ZXNfc2V0X3NpbGVuY2UoZnJhbWUtPmV4dGVuZGVkX2RhdGEsIDAsIG5fb3V0LCBmcmFtZS0+Y2hf bGF5b3V0Lm5iX2NoYW5uZWxzLCBmcmFtZS0+Zm9ybWF0KTsKKworICAgIGZyYW1lLT5wdHMgPSB3 Y3R4LT5uZXh0X3B0czsKKyAgICBpZiAod2N0eC0+bmV4dF9wdHMgIT0gQVZfTk9QVFNfVkFMVUUp CisgICAgICAgIHdjdHgtPm5leHRfcHRzICs9IGF2X3Jlc2NhbGVfcShuX291dCwgKEFWUmF0aW9u YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG91dGxpbmst PnNhbXBsZV9yYXRlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBv dXRsaW5rLT50aW1lX2Jhc2UpOworCisgICAgcnVuX3RyYW5zY3JpcHRpb24oY3R4LCAmZnJhbWUt Pm1ldGFkYXRhLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKTsKKworICAgIHJldHVybiBm Zl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJhbWUpOworfQorCitzdGF0aWMgaW50IGFjdGl2YXRl KEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEFWRmlsdGVyTGluayAqaW5saW5rID0gY3R4 LT5pbnB1dHNbMF07CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBd OworICAgIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworICAgIGludDY0X3QgcHRz OworICAgIGludCBzdGF0dXM7CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9TVEFUVVNfQkFDSyhv dXRsaW5rLCBpbmxpbmspOworCisgICAgaWYgKCF3Y3R4LT5lb2YgJiYgZmZfaW5saW5rX3F1ZXVl ZF9mcmFtZXMoaW5saW5rKSkgeworICAgICAgICBBVkZyYW1lICpmcmFtZSA9IE5VTEw7CisgICAg ICAgIGludCByZXQ7CisKKyAgICAgICAgcmV0ID0gZmZfaW5saW5rX2NvbnN1bWVfZnJhbWUoaW5s aW5rLCAmZnJhbWUpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBy ZXQ7CisgICAgICAgIGlmIChyZXQgPiAwKQorICAgICAgICAgICAgcmV0dXJuIGZpbHRlcl9mcmFt ZShpbmxpbmssIGZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoIXdjdHgtPmVvZiAmJiBmZl9pbmxp bmtfYWNrbm93bGVkZ2Vfc3RhdHVzKGlubGluaywgJnN0YXR1cywgJnB0cykpCisgICAgICAgIHdj dHgtPmVvZiA9IHN0YXR1cyA9PSBBVkVSUk9SX0VPRjsKKworICAgIGlmICh3Y3R4LT5lb2YpIHsK KyAgICAgICAgcHVzaF9sYXN0X2ZyYW1lKG91dGxpbmspOworCisgICAgICAgIGZmX291dGxpbmtf c2V0X3N0YXR1cyhvdXRsaW5rLCBBVkVSUk9SX0VPRiwgd2N0eC0+bmV4dF9wdHMpOworICAgICAg ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBGRl9GSUxURVJfRk9SV0FSRF9XQU5URUQob3V0bGlu aywgaW5saW5rKTsKKworICAgIHJldHVybiBGRkVSUk9SX05PVF9SRUFEWTsKK30KKworc3RhdGlj IGludCBxdWVyeV9mb3JtYXRzKGNvbnN0IEFWRmlsdGVyQ29udGV4dCAqY3R4LAorICAgICAgICAg ICAgICAgICAgICAgICAgIEFWRmlsdGVyRm9ybWF0c0NvbmZpZyAqKmNmZ19pbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBBVkZpbHRlckZvcm1hdHNDb25maWcgKipjZmdfb3V0KQoreworICAg IHN0YXRpYyBjb25zdCBlbnVtIEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mbXRzW10gPSB7IEFWX1NB TVBMRV9GTVRfRkxULCBBVl9TQU1QTEVfRk1UX05PTkUgfTsKKyAgICBBVkNoYW5uZWxMYXlvdXQg Y2hsYXlvdXRzW10gPSB7IEZGX0NPVU5UMkxBWU9VVCgxKSwgeyAwIH0gfTsKKyAgICBpbnQgc2Ft cGxlX3JhdGVzW10gPSB7IDE2MDAwLCAtMSB9OworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBm Zl9zZXRfY29tbW9uX2Zvcm1hdHNfZnJvbV9saXN0MihjdHgsIGNmZ19pbiwgY2ZnX291dCwgc2Ft cGxlX2ZtdHMpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAg cmV0ID0gZmZfc2V0X2NvbW1vbl9jaGFubmVsX2xheW91dHNfZnJvbV9saXN0MihjdHgsIGNmZ19p biwgY2ZnX291dCwgY2hsYXlvdXRzKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJu IHJldDsKKworICAgIHJldHVybiBmZl9zZXRfY29tbW9uX3NhbXBsZXJhdGVzX2Zyb21fbGlzdDIo Y3R4LCBjZmdfaW4sIGNmZ19vdXQsIHNhbXBsZV9yYXRlcyk7Cit9CisKKyNkZWZpbmUgT0ZGU0VU KHgpIG9mZnNldG9mKFdoaXNwZXJDb250ZXh0LCB4KQorI2RlZmluZSBGTEFHUyBBVl9PUFRfRkxB R19BVURJT19QQVJBTSB8IEFWX09QVF9GTEFHX0ZJTFRFUklOR19QQVJBTQorCitzdGF0aWMgY29u c3QgQVZPcHRpb24gd2hpc3Blcl9vcHRpb25zW10gPSB7CisgICAgeyAibW9kZWwiLCAiUGF0aCB0 byB0aGUgd2hpc3Blci5jcHAgbW9kZWwgZmlsZSIsIE9GRlNFVChtb2RlbF9wYXRoKSwgQVZfT1BU X1RZUEVfU1RSSU5HLC5mbGFncyA9IEZMQUdTIH0sCisgICAgeyAibGFuZ3VhZ2UiLCAiTGFuZ3Vh Z2UgZm9yIHRyYW5zY3JpcHRpb24gKCdhdXRvJyBmb3IgYXV0by1kZXRlY3QpIiwgT0ZGU0VUKGxh bmd1YWdlKSwgQVZfT1BUX1RZUEVfU1RSSU5HLAorICAgICB7LnN0ciA9ICJhdXRvIn0sLmZsYWdz ID0gRkxBR1MgfSwKKyAgICB7ICJxdWV1ZSIsICJBdWRpbyBxdWV1ZSBzaXplIGluIG1pbGxpc2Vj b25kcyIsIE9GRlNFVChxdWV1ZSksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAzMDAwfSwgMjAs IElOVF9NQVgsLmZsYWdzID0KKyAgICAgRkxBR1MgfSwKKyAgICB7ICJ1c2VfZ3B1IiwgIlVzZSBH UFUgZm9yIHByb2Nlc3NpbmciLCBPRkZTRVQodXNlX2dwdSksIEFWX09QVF9UWVBFX0JPT0wsIHsu aTY0ID0gMX0sIDAsIDEsLmZsYWdzID0gRkxBR1MgfSwKKyAgICB7ICJncHVfZGV2aWNlIiwgIkdQ VSBkZXZpY2UgdG8gdXNlIiwgT0ZGU0VUKGdwdV9kZXZpY2UpLCBBVl9PUFRfVFlQRV9JTlQsIHsu aTY0ID0gMH0sIDAsIElOVF9NQVgsLmZsYWdzID0gRkxBR1MgfSwKKyAgICB7ICJ0aHJlYWRzIiwg Ik51bWJlciBvZiB0aHJlYWRzIHRvIHVzZSIsIE9GRlNFVCh0aHJlYWRzKSwgQVZfT1BUX1RZUEVf SU5ULCB7Lmk2NCA9IDR9LCAwLCBJTlRfTUFYLC5mbGFncyA9IEZMQUdTIH0sCisgICAgeyAiZGVz dGluYXRpb24iLCAiT3V0cHV0IGRlc3RpbmF0aW9uIiwgT0ZGU0VUKGRlc3RpbmF0aW9uKSwgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICIifSwuZmxhZ3MgPSBGTEFHUyB9LAorICAgIHsgImZv cm1hdCIsICJPdXRwdXQgZm9ybWF0ICh0ZXh0fHNydHxqc29uKSIsIE9GRlNFVChmb3JtYXQpLCBB Vl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gInRleHQifSwuZmxhZ3MgPSBGTEFHUyB9LAorICAg IHsgInZhZF9tb2RlbCIsICJQYXRoIHRvIHRoZSBWQUQgbW9kZWwgZmlsZSIsIE9GRlNFVCh2YWRf bW9kZWxfcGF0aCksIEFWX09QVF9UWVBFX1NUUklORywuZmxhZ3MgPSBGTEFHUyB9LAorICAgIHsg InZhZF90aHJlc2hvbGQiLCAiVkFEIHRocmVzaG9sZCIsIE9GRlNFVCh2YWRfdGhyZXNob2xkKSwg QVZfT1BUX1RZUEVfRkxPQVQsIHsuZGJsID0gMC41fSwgMC4wLCAxLjAsLmZsYWdzID0KKyAgICAg RkxBR1MgfSwKKyAgICB7ICJ2YWRfbWluX3NwZWVjaF9kdXJhdGlvbiIsICJNaW5pbXVtIHNwZWVj aCBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgZm9yIFZBRCIsIE9GRlNFVCh2YWRfbWluX3NwZWVj aF9kdXJhdGlvbiksCisgICAgIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSA1MH0sIDIwLCBJTlRf TUFYLC5mbGFncyA9IEZMQUdTIH0sCisgICAgeyAidmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uIiwg Ik1pbmltdW0gc2lsZW5jZSBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMgZm9yIFZBRCIsIE9GRlNF VCh2YWRfbWluX3NpbGVuY2VfZHVyYXRpb24pLAorICAgICBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0 ID0gNTAwfSwgMCwgSU5UX01BWCwuZmxhZ3MgPSBGTEFHUyB9LAorICAgIHsgTlVMTCB9Cit9Owor CitzdGF0aWMgY29uc3QgQVZDbGFzcyB3aGlzcGVyX2NsYXNzID0geworICAgIC5jbGFzc19uYW1l ID0gIndoaXNwZXIiLAorICAgIC5pdGVtX25hbWUgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKKyAg ICAub3B0aW9uID0gd2hpc3Blcl9vcHRpb25zLAorICAgIC52ZXJzaW9uID0gTElCQVZVVElMX1ZF UlNJT05fSU5ULAorfTsKKworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHdoaXNwZXJfb3V0cHV0 c1tdID0geworICAgIHsKKyAgICAgLm5hbWUgPSAiZGVmYXVsdCIsCisgICAgIC50eXBlID0gQVZN RURJQV9UWVBFX0FVRElPLAorICAgICAgfSwKK307CisKK2NvbnN0IEZGRmlsdGVyIGZmX2FmX3do aXNwZXIgPSB7CisgICAgLnAubmFtZSA9ICJ3aGlzcGVyIiwKKyAgICAucC5kZXNjcmlwdGlvbiA9 IE5VTExfSUZfQ09ORklHX1NNQUxMKCJUcmFuc2NyaWJlIGF1ZGlvIHVzaW5nIHdoaXNwZXIuY3Bw LiIpLAorICAgIC5wLnByaXZfY2xhc3MgPSAmd2hpc3Blcl9jbGFzcywKKyAgICAucC5mbGFncyA9 IEFWRklMVEVSX0ZMQUdfTUVUQURBVEFfT05MWSwKKyAgICAuaW5pdCA9IGluaXQsCisgICAgLnVu aW5pdCA9IHVuaW5pdCwKKyAgICAuYWN0aXZhdGUgPSBhY3RpdmF0ZSwKKyAgICAucHJpdl9zaXpl ID0gc2l6ZW9mKFdoaXNwZXJDb250ZXh0KSwKKyAgICBGSUxURVJfSU5QVVRTKGZmX2F1ZGlvX2Rl ZmF1bHRfZmlsdGVycGFkKSwKKyAgICBGSUxURVJfT1VUUFVUUyh3aGlzcGVyX291dHB1dHMpLAor ICAgIEZJTFRFUl9RVUVSWV9GVU5DMihxdWVyeV9mb3JtYXRzKSwKK307CmRpZmYgLS1naXQgYS9s aWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKaW5kZXgg NDA5MDk5YmYxZi4uZWFmMGM4ZmU2ZiAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVy cy5jCisrKyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwpAQCAtMTYzLDYgKzE2Myw4IEBAIGV4 dGVybiBjb25zdCBGRkZpbHRlciBmZl9hZl92aXJ0dWFsYmFzczsKIGV4dGVybiBjb25zdCBGRkZp bHRlciBmZl9hZl92b2x1bWU7CiBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfYWZfdm9sdW1lZGV0 ZWN0OwogCitleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfYWZfd2hpc3BlcjsKKwogZXh0ZXJuIGNv bnN0IEZGRmlsdGVyIGZmX2FzcmNfYWV2YWxzcmM7CiBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZf YXNyY19hZmRlbGF5c3JjOwogZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FzcmNfYWZpcmVxc3Jj OwotLSAKMi40My4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==