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 8B1594E34B for ; Wed, 9 Jul 2025 13:36:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id B63AE68F6FB; Wed, 9 Jul 2025 16:36:24 +0300 (EEST) Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 959DA68F6E5 for ; Wed, 9 Jul 2025 16:36:17 +0300 (EEST) Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-ae0de0c03e9so952557766b.2 for ; Wed, 09 Jul 2025 06:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752068177; x=1752672977; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oN8QmuYTPL3ludHuUJWzWatriaoxFpXNvNxck8DB5I4=; b=XN5EwfsXrHBpoU93HsPIx342Mq1aK1FBT1U8LPxsx+iribPE6CRAPWxMK2L92T5HZu udP8+Bq7VfMghH1CBbKHSGHFo3v3JTQyyBu24T6U6CNhYZaXZUlQbHv9hEBkanWmE1RJ y91uNjPVyjgszajLURAqdtUZykb93fHDNQ3fwPMtC466a6RWgYyP8dQXvhm0e9enXQ8e 8tswQAeOzvp9txKYZ6jjt+4SYW7JsrVLRizj+VExzFlB/fdOKZiQCIWEX712QivHKZRj d6/ft2UcGzxgtROkp+ucqAkLeyx2iG1DsMn0MzORHebk7AGwuVDukMgWoZ7BdyyYdTPk IRtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752068177; x=1752672977; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oN8QmuYTPL3ludHuUJWzWatriaoxFpXNvNxck8DB5I4=; b=awI7b4L6Pu3lMHDJneuuFLgjPEJ1LOBGCGhoK7bNkkBwC9v0Rt7kQqvm+DGodexD9N Kx0eVUxE0LXRsflZLgdsCJwUNzdkIFtLr+aXLe4ABmai33tv+Lhe1UVmDe+IJLO0ot8H 3MKxn3IpIhJPKFKnvC7Kxd+SlO78fEeJV2ZC4cpS32eOKSQGCLNIh8KxFDdiSIH1MWSO hLnPDm6vZ3+RCtDRYzy09uzkotE5U5HyJhAdQo3ncvwSM/3D5kRLzLf8KK0mMvz+jKDT WgFC/xc8ZfeAhNMrqh4Szb0UiASGVAULrQy2YNeaDTVkGfnPEY3KPWIXTuWgR1C83Rkw fLsw== X-Gm-Message-State: AOJu0YzcJ5nAvE45si90noFmbKTVaGRQrXLHBlBEtpigMzIV7gHfpjeG FxhH7Q9kp8pHHR1LoXUApMdy6/tHJBR9B04v0mwr3DKk1evjUSp31/AMMkKD8Q== X-Gm-Gg: ASbGncvpF+5ufFdjAKVcXg1eDNovcAF1hj28/KpFnprEf2DbO7onyaDL5l9WKcX607N Ysc3O9VhgL4tSAIKPat4FAQfDtWaGUpe+qRqxvhMYFxo8j4Ru8rVVqsTEY1he98eN77IhaXegTT LqONo/Ehzbfj9C2TSVZI8Gr0k1r6xQ+0DG3FIVL2WplZ9b8ienfRtel6L0qbWflyhyIRLsZV7xv Lod0MV6k2b9R+uWgvvghGHieOV7WakWaHQlcxjPidBUwnJiv6/yK7oFsm6gJf12/AkX7p2NME7W H8gTPYakZTAfu0YWSKPdJZrdfjE2yF1DVADH6aAZajEvrPibNAtON547Y432RyhVazkZBcQI3Pe x1U1e+4GgBgmr3JJKfmrmqmK1Rc5nMXzNI9uzGOf1VCsJkoG93Q67vJ9ZfB/C6AEc95ACreiohn EF X-Google-Smtp-Source: AGHT+IH2Y0XSb7BKVkzszcFiwUtlE9SFKCvXEWi8KAuTb5ynyyBqKl+KyjhXkbro8vwMDgK1TN9+0w== X-Received: by 2002:a17:907:7215:b0:ae0:cae0:cb35 with SMTP id a640c23a62f3a-ae6cf7639efmr274841966b.37.1752068176428; Wed, 09 Jul 2025 06:36:16 -0700 (PDT) Received: from [192.168.178.143] (p200301023701fa00258573ace0251429.dip0.t-ipconnect.de. [2003:102:3701:fa00:2585:73ac:e025:1429]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ae3f66d1c37sm1105508966b.35.2025.07.09.06.36.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jul 2025 06:36:15 -0700 (PDT) From: Marvin Scholz To: FFmpeg development discussions and patches Date: Wed, 09 Jul 2025 15:36:15 +0200 X-Mailer: MailMate Free Mode (2.0r6222) Message-ID: <7BDD446F-9ECB-4BBF-88EF-21BCFF80D5EF@gmail.com> In-Reply-To: <20250709072350.578693-1-vpalmisano@gmail.com> References: <20250709072350.578693-1-vpalmisano@gmail.com> MIME-Version: 1.0 Subject: Re: [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 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: CgpPbiA5IEp1bCAyMDI1LCBhdCA5OjIzLCBWaXR0b3JpbyBQYWxtaXNhbm8gd3JvdGU6Cgo+IEl0 IGFkZHMgYSBuZXcgYXVkaW8gZmlsdGVyIGZvciBydW5uaW5nIGF1ZGlvIHRyYW5zY3JpcHRpb25z IHdpdGggdGhlIHdoaXNwZXIgbW9kZWwuCj4gRG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXMgYXJl IGluY2x1ZGVkIGludG8gdGhlIHBhdGNoLgo+Cj4gU2lnbmVkLW9mZi1ieTogVml0dG9yaW8gUGFs bWlzYW5vIDx2cGFsbWlzYW5vQGdtYWlsLmNvbT4KPiAtLS0KPiAgY29uZmlndXJlICAgICAgICAg ICAgICAgIHwgICA1ICsKPiAgZG9jL2ZpbHRlcnMudGV4aSAgICAgICAgIHwgMTAxICsrKysrKysr Cj4gIGxpYmF2ZmlsdGVyL01ha2VmaWxlICAgICB8ICAgMiArCj4gIGxpYmF2ZmlsdGVyL2FmX3do aXNwZXIuYyB8IDQ5NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg bGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIHwgICAyICsKPiAgNSBmaWxlcyBjaGFuZ2VkLCA2MDQg aW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvYWZfd2hpc3Bl ci5jCj4KPiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4gaW5kZXggMmNjYWZl N2MyMC4uNTczZGZjNjdkYyAxMDA3NTUKPiAtLS0gYS9jb25maWd1cmUKPiArKysgYi9jb25maWd1 cmUKPiBAQCAtMzM3LDYgKzMzNyw3IEBAIEV4dGVybmFsIGxpYnJhcnkgc3VwcG9ydDoKPiAgICAt LWVuYWJsZS12YXBvdXJzeW50aCAgICAgZW5hYmxlIFZhcG91clN5bnRoIGRlbXV4ZXIgW25vXQo+ ICAgIC0tZGlzYWJsZS14bGliICAgICAgICAgICBkaXNhYmxlIHhsaWIgW2F1dG9kZXRlY3RdCj4g ICAgLS1kaXNhYmxlLXpsaWIgICAgICAgICAgIGRpc2FibGUgemxpYiBbYXV0b2RldGVjdF0KPiAr ICAtLWVuYWJsZS13aGlzcGVyICAgICAgICAgZW5hYmxlIHdoaXNwZXIgZmlsdGVyIFtub10KPgo+ ICAgIFRoZSBmb2xsb3dpbmcgbGlicmFyaWVzIHByb3ZpZGUgdmFyaW91cyBoYXJkd2FyZSBhY2Nl bGVyYXRpb24gZmVhdHVyZXM6Cj4gICAgLS1kaXNhYmxlLWFtZiAgICAgICAgICAgIGRpc2FibGUg QU1GIHZpZGVvIGVuY29kaW5nIGNvZGUgW2F1dG9kZXRlY3RdCj4gQEAgLTIwMDMsNiArMjAwNCw3 IEBAIEVYVEVSTkFMX0xJQlJBUllfTElTVD0iCj4gICAgICBwb2NrZXRzcGhpbngKPiAgICAgIHZh cG91cnN5bnRoCj4gICAgICB2dWxrYW5fc3RhdGljCj4gKyAgICB3aGlzcGVyCj4gICIKPgo+ICBI V0FDQ0VMX0FVVE9ERVRFQ1RfTElCUkFSWV9MSVNUPSIKPiBAQCAtNDA1OSw2ICs0MDYxLDcgQEAg eHN0YWNrX3Fzdl9maWx0ZXJfZGVwcz0ibGlibWZ4Igo+ICB4c3RhY2tfcXN2X2ZpbHRlcl9zZWxl Y3Q9InFzdnZwcCIKPiAgcGFkX3ZhYXBpX2ZpbHRlcl9kZXBzPSJ2YWFwaV8xIgo+ICBkcmF3Ym94 X3ZhYXBpX2ZpbHRlcl9kZXBzPSJ2YWFwaV8xIgo+ICt3aGlzcGVyX2ZpbHRlcl9kZXBzPSJ3aGlz cGVyIgo+Cj4gICMgZXhhbXBsZXMKPiAgYXZpb19odHRwX3NlcnZlX2ZpbGVzX2RlcHM9ImF2Zm9y bWF0IGF2dXRpbCBmb3JrIgo+IEBAIC03MTA4LDYgKzcxMTEsOCBAQCBlbmFibGVkIGxpYnZvX2Ft cndiZW5jICAgICYmIHJlcXVpcmUgbGlidm9fYW1yd2JlbmMgdm8tYW1yd2JlbmMvZW5jX2lmLmgg RV9JRl9pbgo+ICBlbmFibGVkIGxpYnZvcmJpcyAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZp ZyBsaWJ2b3JiaXMgdm9yYmlzIHZvcmJpcy9jb2RlYy5oIHZvcmJpc19pbmZvX2luaXQgJiYKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlX3BrZ19jb25maWcgbGlidm9yYmlz ZW5jIHZvcmJpc2VuYyB2b3JiaXMvdm9yYmlzZW5jLmggdm9yYmlzX2VuY29kZV9pbml0Cj4KPiAr ZW5hYmxlZCB3aGlzcGVyICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgd2hpc3BlciAi d2hpc3BlciA+PSAxLjcuNSIgd2hpc3Blci5oIHdoaXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9w YXJhbXMKPiArCj4gIGVuYWJsZWQgbGlidnB4ICAgICAgICAgICAgJiYgewo+ICAgICAgZW5hYmxl ZCBsaWJ2cHhfdnA4X2RlY29kZXIgJiYgewo+ICAgICAgICAgIGNoZWNrX3BrZ19jb25maWcgbGli dnB4X3ZwOF9kZWNvZGVyICJ2cHggPj0gMS40LjAiICJ2cHgvdnB4X2RlY29kZXIuaCB2cHgvdnA4 ZHguaCIgdnB4X2NvZGVjX3ZwOF9keCB8fAo+IGRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhp IGIvZG9jL2ZpbHRlcnMudGV4aQo+IGluZGV4IGVkMjk1NmZlNzUuLmMwMGU3MzQ3OGYgMTAwNjQ0 Cj4gLS0tIGEvZG9jL2ZpbHRlcnMudGV4aQo+ICsrKyBiL2RvYy9maWx0ZXJzLnRleGkKPiBAQCAt NzY4Miw2ICs3NjgyLDEwNyBAQCBUaGVyZSBhcmUgNiBzYW1wbGVzIGF0IC00IGRCLCA2MiBhdCAt NSBkQiwgMjg2IGF0IC02IGRCLCBldGMuCj4gIEluIG90aGVyIHdvcmRzLCByYWlzaW5nIHRoZSB2 b2x1bWUgYnkgKzQgZEIgZG9lcyBub3QgY2F1c2UgYW55IGNsaXBwaW5nLAo+ICByYWlzaW5nIGl0 IGJ5ICs1IGRCIGNhdXNlcyBjbGlwcGluZyBmb3IgNiBzYW1wbGVzLCBldGMuCj4KPiArQGFuY2hv cnt3aGlzcGVyfQo+ICtAc2VjdGlvbiB3aGlzcGVyCj4gKwo+ICtJdCBydW5zIGEgYXV0b21hdGlj IHNwZWVjaCByZWNvZ25pdGlvbiB1c2luZyB0aGUgT3BlbkFJ4oCZcyBXaGlzcGVyIG1vZGVsLgo+ ICsKPiArSXQgcmVxdWlyZXMgdGhlIHdoaXNwZXIuY3BwIGxpYnJhcnkgKGh0dHBzOi8vZ2l0aHVi LmNvbS9nZ21sLW9yZy93aGlzcGVyLmNwcCkKPiArYXMgYSBwcmUtcmVxdWlzaXRlLiBBZnRlciBp bnN0YWxsaW5nIHRoZSBsaWJyYXJ5IGl0IGNhbiBiZSBlbmFibGVkIHVzaW5nOgo+ICtAY29kZXsu L2NvbmZpZ3VyZSAtLWVuYWJsZS13aGlzcGVyfS4KPiArCj4gK1RoZSBmaWx0ZXIgaGFzIGZvbGxv d2luZyBvcHRpb25zOgo+ICsKPiArQHRhYmxlIEBvcHRpb24KPiArQGl0ZW0gbW9kZWwKPiArVGhl IGZpbGUgcGF0aCBvZiB0aGUgZG93bmxvYWRlZCB3aGlzcGVyLmNwcCBtb2RlbCAobWFuZGF0b3J5 KS4KPiArCj4gK0BpdGVtIGxhbmd1YWdlCj4gK1RoZSBsYW5ndWFnZSB0byB1c2UgZm9yIHRyYW5z Y3JpcHRpb24gKCdhdXRvJyBmb3IgYXV0by1kZXRlY3QpLgo+ICtEZWZhdWx0IHZhbHVlOiBAY29k ZXsiYXV0byJ9Cj4gKwo+ICtAaXRlbSBxdWV1ZQo+ICtUaGUgbWF4aW11bSBzaXplIGluIG1pbGxp c2Vjb25kcyB0aGF0IHdpbGwgYmUgcXVldWVkIGludG8gdGhlIGZpbHRlciBiZWZvcmUKPiArcHJv Y2Vzc2luZyB0aGUgYXVkaW8gd2l0aCB3aGlzcGVyCj4gK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIz MDAwIn0KPiArCj4gK0BpdGVtIHVzZV9ncHUKPiArSWYgdGhlIEdQVSBzdXBwb3J0IHNob3VsZCBi ZSBlbmFibGVkLgo+ICtEZWZhdWx0IHZhbHVlOiBAY29kZXsidHJ1ZSJ9Cj4gKwo+ICtAaXRlbSBn cHVfZGV2aWNlCj4gK1RoZSBHUFUgZGV2aWNlIHRvIHVzZS4KPiArRGVmYXVsdCB2YWx1ZTogQGNv ZGV7IjAifQo+ICsKPiArQGl0ZW0gZGVzdGluYXRpb24KPiArSWYgc2V0LCB0aGUgdHJhbnNjcmlw dGlvbiBvdXRwdXQgd2lsbCBiZSBzZW50IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBvciBVUkwKPiAr KHVzZSBvbmUgb2YgdGhlIEZGbXBlZyBBVklPIHByb3RvY29scyk7IG90aGVyd2lzZSwgdGhlIG91 dHB1dCB3aWxsIGJlIGxvZ2dlZCBhcwo+ICtpbmZvIG1lc3NhZ2VzLgo+ICtUaGUgb3V0cHV0IHdp bGwgYWxzbyBiZSBzZXQgaW4gdGhlICJsYXZmaS53aGlzcGVyLnRleHQiIGZyYW1lIG1ldGFkYXRh Lgo+ICsKPiArQGl0ZW0gZm9ybWF0Cj4gK1RoZSBkZXN0aW5hdGlvbiBmb3JtYXQgc3RyaW5nOyBp dCBjb3VsZCBiZSAidGV4dCIgKG9ubHkgdGhlIHRyYW5zY3JpYmVkIHRleHQKPiArd2lsbCBiZSBz ZW50IHRvIHRoZSBkZXN0aW5hdGlvbiksICJzcnQiIChzdWJ0aXRsZSBmb3JtYXQpIG9yICJqc29u Ii4KPiArRGVmYXVsdCB2YWx1ZTogQGNvZGV7InRleHQifQo+ICsKPiArQGl0ZW0gdmFkX21vZGVs Cj4gK1BhdGggdG8gdGhlIFZBRCBtb2RlbCBmaWxlLiBJZiBzZXQsIHRoZSBmaWx0ZXIgd2lsbCBs b2FkIGFuIGFkZGl0aW9uYWwgdm9pY2UKPiArYWN0aXZpdHkgZGV0ZWN0aW9uIG1vZHVsZSAoaHR0 cHM6Ly9naXRodWIuY29tL3NuYWtlcnM0L3NpbGVyby12YWQpIHRoYXQgd2lsbCBiZQo+ICt1c2Vk IHRvIGZyYWdtZW50IHRoZSBhdWRpbyBxdWV1ZTsgdXNlIHRoaXMgb3B0aW9uIHNldHRpbmcgYSB2 YWxpZCBwYXRoIG9idGFpbmVkCj4gK2Zyb20gdGhlIHdoaXNwZXIuY3BwIHJlcG9zaXRvcnkgKGUu Zy4gIi4uL3doaXNwZXIuY3BwL21vZGVscy9nZ21sLXNpbGVyby12NS4xLjIuYmluIikKPiArYW5k IGluY3JlYXNlIHRoZSBxdWV1ZSBwYXJhbWV0ZXIgdG8gYW4gaGlnaGVyIHZhbHVlIChlLmcuIDEw MDAwKQo+ICsKPiArQGl0ZW0gdmFkX3RocmVzaG9sZAo+ICtUaGUgVkFEIHRocmVzaG9sZCB0byB1 c2UuCj4gK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIwLjUifQo+ICsKPiArQGl0ZW0gdmFkX21pbl9z cGVlY2hfZHVyYXRpb24KPiArVGhlIG1pbmltdW0gVkFEIHNwZWFraW5nIGR1cmF0aW9uIGluIG1p bGxpc2Vjb25kcy4KPiArRGVmYXVsdCB2YWx1ZTogQGNvZGV7IjUwIn0KPiArCj4gK0BpdGVtIHZh ZF9taW5fc2lsZW5jZV9kdXJhdGlvbgo+ICtUaGUgbWluaW11bSBWQUQgc2lsZW5jZSBkdXJhdGlv biBpbiBtaWxsaXNlY29uZHMuCj4gK0RlZmF1bHQgdmFsdWU6IEBjb2RleyI1MDAifQo+ICsKPiAr QGVuZCB0YWJsZQo+ICsKPiArQHN1YnNlY3Rpb24gRXhhbXBsZXMKPiArQGl0ZW1pemUKPiArCj4g K0BpdGVtCj4gK1J1biBhIHRyYW5zY3JpcHRpb24gd2l0aCBzcnQgZmlsZSBnZW5lcmF0aW9uOgo+ ICtAZXhhbXBsZQo+ICtmZm1wZWcgLWkgaW5wdXQubXA0IC12biAtYWYgImFmb3JtYXQ9c2FtcGxl X3JhdGVzPTE2MDAwOmNoYW5uZWxfbGF5b3V0cz1tb25vLHdoaXNwZXI9bW9kZWw9Li4vd2hpc3Bl ci5jcHAvbW9kZWxzL2dnbWwtYmFzZS5lbi5iaW5cCj4gKzpsYW5ndWFnZT1lblwKPiArOnF1ZXVl PTMwMDBcCj4gKzpkZXN0aW5hdGlvbj1vdXRwdXQuc3J0XAo+ICs6Zm9ybWF0PXNydCIgLWYgbnVs bCAtCj4gK0BlbmQgZXhhbXBsZQo+ICsKPiArQGl0ZW0KPiArUnVuIGEgdHJhbnNjcmlwdGlvbiBh bmQgc2VuZCB0aGUgb3V0cHV0IGluIEpTT04gZm9ybWF0IHRvIGFuIEhUVFAgc2VydmljZToKPiAr QGV4YW1wbGUKPiArZmZtcGVnIC1pIGlucHV0Lm1wNCAtdm4gLWFmICJhZm9ybWF0PXNhbXBsZV9y YXRlcz0xNjAwMDpjaGFubmVsX2xheW91dHM9bW9ubyx3aGlzcGVyPW1vZGVsPS4uL3doaXNwZXIu Y3BwL21vZGVscy9nZ21sLWJhc2UuZW4uYmluXAo+ICs6bGFuZ3VhZ2U9ZW5cCj4gKzpxdWV1ZT0z MDAwXAo+ICs6ZGVzdGluYXRpb249aHR0cFxcOi8vbG9jYWxob3N0XFw6MzAwMFwKPiArOmZvcm1h dD1qc29uJyAtZiBudWxsIC0KPiArQGVuZCBleGFtcGxlCj4gKwo+ICtAaXRlbQo+ICtUcmFuc2Ny aWJlIHRoZSBtaWNyb3Bob25lIGlucHV0IHVzaW5nIHRoZSBWQUQgb3B0aW9uOgo+ICtAZXhhbXBs ZQo+ICtmZm1wZWcgLWxvZ2xldmVsIHdhcm5pbmcgLWYgcHVsc2UgLWkgZGVmYXVsdCBcCj4gKy1h ZiAnaGlnaHBhc3M9Zj0yMDAsbG93cGFzcz1mPTMwMDAsYWZvcm1hdD1zYW1wbGVfcmF0ZXM9MTYw MDA6Y2hhbm5lbF9sYXlvdXRzPW1vbm8sd2hpc3Blcj1tb2RlbD0uLi93aGlzcGVyLmNwcC9tb2Rl bHMvZ2dtbC1tZWRpdW0uYmluXAo+ICs6bGFuZ3VhZ2U9ZW5cCj4gKzpxdWV1ZT0xMDAwMFwKPiAr OmRlc3RpbmF0aW9uPS1cCj4gKzpmb3JtYXQ9anNvblwKPiArOnZhZF9tb2RlbD0uLi93aGlzcGVy LmNwcC9tb2RlbHMvZ2dtbC1zaWxlcm8tdjUuMS4yLmJpbicgLWYgbnVsbCAtCj4gK0BlbmQgZXhh bXBsZQo+ICsKPiArQGVuZCBpdGVtaXplCj4gKwo+ICBAYyBtYW4gZW5kIEFVRElPIEZJTFRFUlMK Pgo+ICBAY2hhcHRlciBBdWRpbyBTb3VyY2VzCj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL01h a2VmaWxlIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKPiBpbmRleCA5ZTkxNTNmNWIwLi5lMTMzNDIy Y2E0IDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gKysrIGIvbGliYXZmaWx0 ZXIvTWFrZWZpbGUKPiBAQCAtMTg4LDYgKzE4OCw4IEBAIE9CSlMtJChDT05GSUdfSElMQkVSVF9G SUxURVIpICAgICAgICAgICAgICAgICs9IGFzcmNfaGlsYmVydC5vCj4gIE9CSlMtJChDT05GSUdf U0lOQ19GSUxURVIpICAgICAgICAgICAgICAgICAgICs9IGFzcmNfc2luYy5vCj4gIE9CSlMtJChD T05GSUdfU0lORV9GSUxURVIpICAgICAgICAgICAgICAgICAgICs9IGFzcmNfc2luZS5vCj4KPiAr T0JKUy0kKENPTkZJR19XSElTUEVSX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gYWZfd2hpc3Bl ci5vCj4gKwo+ICBPQkpTLSQoQ09ORklHX0FOVUxMU0lOS19GSUxURVIpICAgICAgICAgICAgICAr PSBhc2lua19hbnVsbHNpbmsubwo+Cj4gICMgdmlkZW8gZmlsdGVycwo+IGRpZmYgLS1naXQgYS9s aWJhdmZpbHRlci9hZl93aGlzcGVyLmMgYi9saWJhdmZpbHRlci9hZl93aGlzcGVyLmMKPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjdiZmRkM2E5ZGMKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jCj4gQEAgLTAsMCArMSw0OTQg QEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDI1IFZpdHRvcmlvIFBhbG1pc2Fubwo+ICsg Kgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCj4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCj4gKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYWxvbmcgd2l0aCBGRm1wZWc7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKPiAr ICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3RkaW50 Lmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1 dGlsLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0 aWwvY2hhbm5lbF9sYXlvdXQuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9zYW1wbGVmbXQuaCIK PiArI2luY2x1ZGUgImxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgiCj4gKyNpbmNsdWRlICJsaWJhdmZp bHRlci9hdWRpby5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgo+ICsjaW5jbHVkZSAi bGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIK PiArI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2aW8uaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC90 aHJlYWQuaCIKPiArCj4gKyNpbmNsdWRlICJmb3JtYXRzLmgiCj4gKwo+ICsjaW5jbHVkZSAid2hp c3Blci5oIgo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgV2hpc3BlckNvbnRleHQKPiArewo+ICsgICAg Y29uc3QgQVZDbGFzcyAqY2xhc3M7Cj4gKyAgICBjaGFyICptb2RlbF9wYXRoOwo+ICsgICAgY2hh ciAqbGFuZ3VhZ2U7Cj4gKyAgICBib29sIHVzZV9ncHU7Cj4gKyAgICBpbnQgZ3B1X2RldmljZTsK PiArICAgIGNoYXIgKnZhZF9tb2RlbF9wYXRoOwo+ICsgICAgZmxvYXQgdmFkX3RocmVzaG9sZDsK PiArICAgIGludCB2YWRfbWluX3NwZWVjaF9kdXJhdGlvbjsKPiArICAgIGludCB2YWRfbWluX3Np bGVuY2VfZHVyYXRpb247Cj4gKwo+ICsgICAgaW50IHF1ZXVlOwo+ICsgICAgY2hhciAqZGVzdGlu YXRpb247Cj4gKyAgICBjaGFyICpmb3JtYXQ7Cj4gKwo+ICsgICAgc3RydWN0IHdoaXNwZXJfY29u dGV4dCAqY3R4X3dzcDsKPiArICAgIHN0cnVjdCB3aGlzcGVyX3N0YXRlICp3aGlzcGVyX3N0YXRl Owo+ICsgICAgc3RydWN0IHdoaXNwZXJfdmFkX2NvbnRleHQgKmN0eF92YWQ7Cj4gKyAgICBzdHJ1 Y3Qgd2hpc3Blcl92YWRfcGFyYW1zIHZhZF9wYXJhbXM7Cj4gKwo+ICsgICAgZmxvYXQgKmF1ZGlv X2J1ZmZlcjsKPiArICAgIGludCBhdWRpb19idWZmZXJfcXVldWVfc2l6ZTsKPiArICAgIGludCBh dWRpb19idWZmZXJfZmlsbF9zaXplOwo+ICsgICAgaW50IGF1ZGlvX2J1ZmZlcl92YWRfc2l6ZTsK PiArCj4gKyAgICBpbnQgZW9mOwo+ICsgICAgaW50NjRfdCBuZXh0X3B0czsKPiArCj4gKyAgICBB VklPQ29udGV4dCAqYXZpb19jb250ZXh0Owo+ICsgICAgaW50IGluZGV4Owo+ICsgICAgaW50NjRf dCB0aW1lc3RhbXA7Cj4gK30gV2hpc3BlckNvbnRleHQ7Cj4gKwo+ICtzdGF0aWMgdm9pZCBjYl9s b2dfZGlzYWJsZShlbnVtIGdnbWxfbG9nX2xldmVsLCBjb25zdCBjaGFyICosIHZvaWQgKikge30K PiArCj4gK3N0YXRpYyBpbnQgaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiArewo+ICsgICAg V2hpc3BlckNvbnRleHQgKndjdHggPSBjdHgtPnByaXY7Cj4gKwo+ICsgICAgZ2dtbF9iYWNrZW5k X2xvYWRfYWxsKCk7Cj4gKyAgICB3aGlzcGVyX2xvZ19zZXQoY2JfbG9nX2Rpc2FibGUsIE5VTEwp Owo+ICsKPiArICAgIC8vIEluaXQgd2hpc3BlciBjb250ZXh0Cj4gKyAgICBpZiAoIXdjdHgtPm1v ZGVsX3BhdGgpCj4gKyAgICB7Cj4gKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAi Tm8gd2hpc3BlciBtb2RlbCBwYXRoIHNwZWNpZmllZC4gVXNlIHRoZSAnbW9kZWwnIG9wdGlvbi5c biIpOwo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgc3RydWN0IHdoaXNwZXJfY29udGV4dF9wYXJhbXMgcGFyYW1zID0gd2hpc3Blcl9jb250ZXh0 X2RlZmF1bHRfcGFyYW1zKCk7Cj4gKyAgICBwYXJhbXMudXNlX2dwdSA9IHdjdHgtPnVzZV9ncHU7 Cj4gKyAgICBwYXJhbXMuZ3B1X2RldmljZSA9IHdjdHgtPmdwdV9kZXZpY2U7Cj4gKwo+ICsgICAg d2N0eC0+Y3R4X3dzcCA9IHdoaXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMod2N0eC0+ bW9kZWxfcGF0aCwgcGFyYW1zKTsKPiArICAgIGlmICh3Y3R4LT5jdHhfd3NwID09IE5VTEwpCj4g KyAgICB7Cj4gKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGlu aXRpYWxpemUgd2hpc3BlciBjb250ZXh0IGZyb20gbW9kZWw6ICVzXG4iLCB3Y3R4LT5tb2RlbF9w YXRoKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwo+ICsgICAgfQo+ICsKPiArICAg IHdjdHgtPndoaXNwZXJfc3RhdGUgPSB3aGlzcGVyX2luaXRfc3RhdGUod2N0eC0+Y3R4X3dzcCk7 Cj4gKyAgICBpZiAod2N0eC0+d2hpc3Blcl9zdGF0ZSA9PSBOVUxMKQo+ICsgICAgewo+ICsgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBnZXQgd2hpc3BlciBzdGF0 ZSBmcm9tIGNvbnRleHRcbiIpOwo+ICsgICAgICAgIHdoaXNwZXJfZnJlZSh3Y3R4LT5jdHhfd3Nw KTsKPiArICAgICAgICB3Y3R4LT5jdHhfd3NwID0gTlVMTDsKPiArICAgICAgICByZXR1cm4gQVZF UlJPUihFSU8pOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIEluaXQgVkFEIG1vZGVsIGNvbnRleHQK PiArICAgIGlmICh3Y3R4LT52YWRfbW9kZWxfcGF0aCkKPiArICAgIHsKPiArICAgICAgICBzdHJ1 Y3Qgd2hpc3Blcl92YWRfY29udGV4dF9wYXJhbXMgY3R4X3BhcmFtcyA9IHdoaXNwZXJfdmFkX2Rl ZmF1bHRfY29udGV4dF9wYXJhbXMoKTsKPiArICAgICAgICBjdHhfcGFyYW1zLm5fdGhyZWFkcyA9 IDQ7Cj4gKyAgICAgICAgLy8gY3R4X3BhcmFtcy51c2VfZ3B1ID0gd2N0eC0+dXNlX2dwdTsgVE9E TyAoc2VlOiB3aGlzcGVyX3ZhZF9pbml0X2NvbnRleHQpCj4gKyAgICAgICAgY3R4X3BhcmFtcy5n cHVfZGV2aWNlID0gd2N0eC0+Z3B1X2RldmljZTsKPiArICAgICAgICB3Y3R4LT5jdHhfdmFkID0g d2hpc3Blcl92YWRfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMoCj4gKyAgICAgICAgICAgIHdj dHgtPnZhZF9tb2RlbF9wYXRoLAo+ICsgICAgICAgICAgICBjdHhfcGFyYW1zKTsKPiArCj4gKyAg ICAgICAgd2N0eC0+dmFkX3BhcmFtcyA9IHdoaXNwZXJfdmFkX2RlZmF1bHRfcGFyYW1zKCk7Cj4g KyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcy50aHJlc2hvbGQgPSB3Y3R4LT52YWRfdGhyZXNob2xk Owo+ICsgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMubWluX3NwZWVjaF9kdXJhdGlvbl9tcyA9IHdj dHgtPnZhZF9taW5fc3BlZWNoX2R1cmF0aW9uOwo+ICsgICAgICAgIHdjdHgtPnZhZF9wYXJhbXMu bWluX3NpbGVuY2VfZHVyYXRpb25fbXMgPSB3Y3R4LT52YWRfbWluX3NpbGVuY2VfZHVyYXRpb247 Cj4gKyAgICAgICAgd2N0eC0+dmFkX3BhcmFtcy5tYXhfc3BlZWNoX2R1cmF0aW9uX3MgPSAoZmxv YXQpKHdjdHgtPmF1ZGlvX2J1ZmZlcl9xdWV1ZV9zaXplIC8gMTAwMC4wZik7Cj4gKyAgICAgICAg d2N0eC0+dmFkX3BhcmFtcy5zcGVlY2hfcGFkX21zID0gMDsKPiArICAgICAgICB3Y3R4LT52YWRf cGFyYW1zLnNhbXBsZXNfb3ZlcmxhcCA9IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gSW5pdCBi dWZmZXIKPiArICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9xdWV1ZV9zaXplID0gV0hJU1BFUl9TQU1Q TEVfUkFURSAqIHdjdHgtPnF1ZXVlIC8gMTAwMDsKPiArICAgIHdjdHgtPmF1ZGlvX2J1ZmZlciA9 IGF2X21hbGxvYyh3Y3R4LT5hdWRpb19idWZmZXJfcXVldWVfc2l6ZSAqIHNpemVvZihmbG9hdCkp Owo+ICsgICAgaWYgKCF3Y3R4LT5hdWRpb19idWZmZXIpCj4gKyAgICB7Cj4gKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgIH0KPiArCj4gKyAgICB3Y3R4LT5hdWRpb19idWZm ZXJfZmlsbF9zaXplID0gMDsKPiArCj4gKyAgICB3Y3R4LT5uZXh0X3B0cyA9IEFWX05PUFRTX1ZB TFVFOwo+ICsKPiArICAgIHdjdHgtPmF2aW9fY29udGV4dCA9IE5VTEw7Cj4gKyAgICBpZiAod2N0 eC0+ZGVzdGluYXRpb24gJiYgc3RyY21wKCIiLCB3Y3R4LT5kZXN0aW5hdGlvbikpCj4gKyAgICB7 Cj4gKyAgICAgICAgaW50IHJldCA9IDA7Cj4gKwo+ICsgICAgICAgIGlmICghc3RyY21wKCItIiwg d2N0eC0+ZGVzdGluYXRpb24pKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcmV0ID0gYXZp b19vcGVuKCZ3Y3R4LT5hdmlvX2NvbnRleHQsICJwaXBlOjEiLCBBVklPX0ZMQUdfV1JJVEUpOwo+ ICsgICAgICAgIH0KPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBy ZXQgPSBhdmlvX29wZW4oJndjdHgtPmF2aW9fY29udGV4dCwgd2N0eC0+ZGVzdGluYXRpb24sIEFW SU9fRkxBR19XUklURSk7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAocmV0IDwgMCkK PiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkNv dWxkIG5vdCBvcGVuICVzOiAlc1xuIiwKPiArICAgICAgICAgICAgICAgICAgIHdjdHgtPmRlc3Rp bmF0aW9uLCBhdl9lcnIyc3RyKHJldCkpOwo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsg ICAgICAgIH0KPiArCj4gKyAgICAgICAgd2N0eC0+YXZpb19jb250ZXh0LT5kaXJlY3QgPSBBVklP X0ZMQUdfRElSRUNUOwo+ICsgICAgfQo+ICsKPiArICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAiV2hpc3BlciBmaWx0ZXIgaW5pdGlhbGl6ZWQ6IG1vZGVsOiAlcyBsYW5nOiAlcyBxdWV1ZTog JWQgbXNcbiIsCj4gKyAgICAgICAgICAgd2N0eC0+bW9kZWxfcGF0aCwgd2N0eC0+bGFuZ3VhZ2Us IHdjdHgtPnF1ZXVlKTsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgdW5pbml0KEFWRmlsdGVyQ29udGV4dCAqY3R4KQo+ICt7Cj4gKyAgICBXaGlzcGVyQ29udGV4 dCAqd2N0eCA9IGN0eC0+cHJpdjsKPiArCj4gKyAgICBpZiAod2N0eC0+YXVkaW9fYnVmZmVyX2Zp bGxfc2l6ZSA+IDApCj4gKyAgICB7Cj4gKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5J TkcsICJSZW1haW5pbmcgYXVkaW8gYnVmZmVyICVkIHNhbXBsZXMgKCVkIHNlY29uZHMpIGFmdGVy IHN0b3BwaW5nXG4iLAo+ICsgICAgICAgICAgICAgICB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9z aXplLAo+ICsgICAgICAgICAgICAgICB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplIC8gV0hJ U1BFUl9TQU1QTEVfUkFURSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHdjdHgtPmN0eF92YWQp Cj4gKyAgICB7Cj4gKyAgICAgICAgd2hpc3Blcl92YWRfZnJlZSh3Y3R4LT5jdHhfdmFkKTsKPiAr ICAgICAgICB3Y3R4LT5jdHhfdmFkID0gTlVMTDsKPiArICAgIH0KPiArCj4gKyAgICBpZiAod2N0 eC0+d2hpc3Blcl9zdGF0ZSkKPiArICAgIHsKPiArICAgICAgICB3aGlzcGVyX2ZyZWVfc3RhdGUo d2N0eC0+d2hpc3Blcl9zdGF0ZSk7Cj4gKyAgICAgICAgd2N0eC0+d2hpc3Blcl9zdGF0ZSA9IE5V TEw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKHdjdHgtPmN0eF93c3ApCj4gKyAgICB7Cj4gKyAg ICAgICAgd2hpc3Blcl9mcmVlKHdjdHgtPmN0eF93c3ApOwo+ICsgICAgICAgIHdjdHgtPmN0eF93 c3AgPSBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIGF2X2ZyZWVwKCZ3Y3R4LT5hdWRpb19idWZm ZXIpOwo+ICsKPiArICAgIGlmICh3Y3R4LT5hdmlvX2NvbnRleHQpCj4gKyAgICB7Cj4gKyAgICAg ICAgYXZpb19jbG9zZXAoJndjdHgtPmF2aW9fY29udGV4dCk7Cj4gKyAgICB9Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIHJ1bl90cmFuc2NyaXB0aW9uKEFWRmlsdGVyQ29udGV4dCAqY3R4LCBBVkRp Y3Rpb25hcnkgKiptZXRhZGF0YSwgaW50IGVuZF9wb3MpCj4gK3sKPiArICAgIFdoaXNwZXJDb250 ZXh0ICp3Y3R4ID0gY3R4LT5wcml2Owo+ICsgICAgZW5kX3BvcyA9IEZGTUlOKGVuZF9wb3MsIHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUpOwo+ICsKPiArICAgIGlmICghd2N0eC0+Y3R4X3dz cCB8fCBlbmRfcG9zID09IDApCj4gKyAgICB7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ ICsKPiArICAgIGlmICghd2N0eC0+Y3R4X3dzcCkKPiArICAgIHsKPiArICAgICAgICByZXR1cm47 Cj4gKyAgICB9Cj4gKwo+ICsgICAgZmxvYXQgZHVyYXRpb24gPSAoZmxvYXQpZW5kX3BvcyAvIFdI SVNQRVJfU0FNUExFX1JBVEU7Cj4gKwo+ICsgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0lORk8sICJy dW4gdHJhbnNjcmlwdGlvbiAlZC8lZCBzYW1wbGVzICglLjJmIHNlY29uZHMpLi4uXG4iLAo+ICsg ICAgICAgICAgIGVuZF9wb3MsIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUsCj4gKyAgICAg ICAgICAgZHVyYXRpb24pOwo+ICsKPiArICAgIHN0cnVjdCB3aGlzcGVyX2Z1bGxfcGFyYW1zIHBh cmFtcyA9IHdoaXNwZXJfZnVsbF9kZWZhdWx0X3BhcmFtcyhXSElTUEVSX1NBTVBMSU5HX0dSRUVE WSk7Cj4gKyAgICBwYXJhbXMubGFuZ3VhZ2UgPSB3Y3R4LT5sYW5ndWFnZTsKPiArICAgIHBhcmFt cy5wcmludF9zcGVjaWFsID0gMDsKPiArICAgIHBhcmFtcy5wcmludF9wcm9ncmVzcyA9IDA7Cj4g KyAgICBwYXJhbXMucHJpbnRfcmVhbHRpbWUgPSAwOwo+ICsgICAgcGFyYW1zLnByaW50X3RpbWVz dGFtcHMgPSAwOwo+ICsKPiArICAgIGlmICh3aGlzcGVyX2Z1bGwod2N0eC0+Y3R4X3dzcCwgcGFy YW1zLCB3Y3R4LT5hdWRpb19idWZmZXIsIGVuZF9wb3MpICE9IDApCj4gKyAgICB7Cj4gKyAgICAg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHByb2Nlc3MgYXVkaW8gd2l0 aCB3aGlzcGVyLmNwcFxuIik7Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAg IGNvbnN0IGludCBuX3NlZ21lbnRzID0gd2hpc3Blcl9mdWxsX25fc2VnbWVudHNfZnJvbV9zdGF0 ZSh3Y3R4LT53aGlzcGVyX3N0YXRlKTsKPiArICAgIGNoYXIgKnNlZ21lbnRzX3RleHQgPSBOVUxM Owo+ICsKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbl9zZWdtZW50czsgKytpKQo+ICsgICAg ewo+ICsgICAgICAgIGNvbnN0IGJvb2wgdHVybiA9IHdoaXNwZXJfZnVsbF9nZXRfc2VnbWVudF9z cGVha2VyX3R1cm5fbmV4dCh3Y3R4LT5jdHhfd3NwLCBpKTsKPiArICAgICAgICBjb25zdCBpbnQ2 NF90IHQwID0gd2hpc3Blcl9mdWxsX2dldF9zZWdtZW50X3QwKHdjdHgtPmN0eF93c3AsIGkpICog MTA7Cj4gKyAgICAgICAgY29uc3QgaW50NjRfdCB0MSA9IHdoaXNwZXJfZnVsbF9nZXRfc2VnbWVu dF90MSh3Y3R4LT5jdHhfd3NwLCBpKSAqIDEwOwo+ICsgICAgICAgIGNvbnN0IGNoYXIgKnRleHQg PSB3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRfdGV4dCh3Y3R4LT5jdHhfd3NwLCBpKTsKPiArICAg ICAgICBjaGFyICp0ZXh0X2NsZWFuZWQgPSBhdl9zdHJpcmVwbGFjZSh0ZXh0ICsgMSwgIltCTEFO S19BVURJT10iLCAiIik7Cj4gKwo+ICsgICAgICAgIGlmIChhdl9zdHJubGVuKHRleHRfY2xlYW5l ZCwgMSkgPT0gMCkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGF2X2ZyZWUodGV4dF9jbGVh bmVkKTsKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGF2 X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiICBbJWxkLSVsZCVzXTogXCIlc1wiXG4iLCB3Y3R4LT50 aW1lc3RhbXAgKyB0MCwgd2N0eC0+dGltZXN0YW1wICsgdDEsIHR1cm4gPyAiICh0dXJuKSIgOiAi IiwgdGV4dF9jbGVhbmVkKTsKPiArCj4gKyAgICAgICAgaWYgKHNlZ21lbnRzX3RleHQpCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBjaGFyICpuZXdfdGV4dCA9IGF2X2FzcHJpbnRmKCIlcyVz Iiwgc2VnbWVudHNfdGV4dCwgdGV4dF9jbGVhbmVkKTsKPiArICAgICAgICAgICAgYXZfZnJlZShz ZWdtZW50c190ZXh0KTsKPiArICAgICAgICAgICAgc2VnbWVudHNfdGV4dCA9IG5ld190ZXh0Owo+ ICsgICAgICAgIH0KPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBz ZWdtZW50c190ZXh0ID0gYXZfc3RyZHVwKHRleHRfY2xlYW5lZCk7Cj4gKyAgICAgICAgfQo+ICsK PiArICAgICAgICBpZiAod2N0eC0+YXZpb19jb250ZXh0KQo+ICsgICAgICAgIHsKPiArICAgICAg ICAgICAgY29uc3QgaW50NjRfdCBzdGFydF90ID0gd2N0eC0+dGltZXN0YW1wICsgdDA7Cj4gKyAg ICAgICAgICAgIGNvbnN0IGludDY0X3QgZW5kX3QgPSB3Y3R4LT50aW1lc3RhbXAgKyB0MTsKPiAr ICAgICAgICAgICAgY2hhciAqYnVmID0gTlVMTDsKPiArCj4gKyAgICAgICAgICAgIGlmICghYXZf c3RyY2FzZWNtcCh3Y3R4LT5mb3JtYXQsICJzcnQiKSkKPiArICAgICAgICAgICAgewo+ICsgICAg ICAgICAgICAgICAgYnVmID0gYXZfYXNwcmludGYoIiVkXG4lMDJsZDolMDJsZDolMDJsZC4lMDNs ZCAtLT4gJTAybGQ6JTAybGQ6JTAybGQuJTAzbGRcbiVzXG5cbiIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3Y3R4LT5pbmRleCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXJ0X3QgLyAzNjAwMDAwLCAoc3RhcnRfdCAvIDYwMDAwKSAlIDYwLCAo c3RhcnRfdCAvIDEwMDApICUgNjAsIHN0YXJ0X3QgJSAxMDAwLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW5kX3QgLyAzNjAwMDAwLCAoZW5kX3QgLyA2MDAwMCkgJSA2MCwg KGVuZF90IC8gMTAwMCkgJSA2MCwgZW5kX3QgJSAxMDAwLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGV4dF9jbGVhbmVkKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICBlbHNlIGlmICghYXZfc3RyY2FzZWNtcCh3Y3R4LT5mb3JtYXQsICJqc29uIikpCj4gKyAg ICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGJ1ZiA9IGF2X2FzcHJpbnRmKCJ7XCJzdGFy dFwiOiVsZCxcImVuZFwiOiVsZCxcInRleHRcIjpcIiVzXCIsXCJ0dXJuXCI6JXN9XG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfdCwgZW5kX3QsIHRleHRfY2xl YW5lZCwgdHVybiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgIGVsc2UKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgYnVmID0gYXZf c3RyZHVwKHRleHRfY2xlYW5lZCk7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAg IGlmIChidWYpCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIGF2aW9fd3JpdGUo d2N0eC0+YXZpb19jb250ZXh0LCBidWYsIHN0cmxlbihidWYpKTsKPiArICAgICAgICAgICAgICAg IGF2X2ZyZWUoYnVmKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAg ICAgYXZfZnJlZSh0ZXh0X2NsZWFuZWQpOwo+ICsgICAgfQo+ICsKPiArICAgIHdjdHgtPmluZGV4 Kys7Cj4gKyAgICB3Y3R4LT50aW1lc3RhbXAgKz0gKGludDY0X3QpKGR1cmF0aW9uICogMTAwMCk7 Cj4gKwo+ICsgICAgaWYgKG1ldGFkYXRhICYmIHNlZ21lbnRzX3RleHQpCj4gKyAgICB7Cj4gKyAg ICAgICAgYXZfZGljdF9zZXQobWV0YWRhdGEsICJsYXZmaS53aGlzcGVyLnRleHQiLCBzZWdtZW50 c190ZXh0LCAwKTsKPiArICAgICAgICBjaGFyICpkdXJhdGlvbl90ZXh0ID0gYXZfYXNwcmludGYo IiVmIiwgZHVyYXRpb24pOwo+ICsgICAgICAgIGF2X2RpY3Rfc2V0KG1ldGFkYXRhLCAibGF2Zmku d2hpc3Blci5kdXJhdGlvbiIsIGR1cmF0aW9uX3RleHQsIDApOwo+ICsgICAgICAgIGF2X2ZyZWUo ZHVyYXRpb25fdGV4dCk7Cj4gKyAgICB9Cj4gKyAgICBpZiAoc2VnbWVudHNfdGV4dCkKPiArICAg IHsKPiArICAgICAgICBhdl9mcmVlKHNlZ21lbnRzX3RleHQpOwo+ICsgICAgfQo+ICsKPiArICAg IG1lbWNweSh3Y3R4LT5hdWRpb19idWZmZXIsIHdjdHgtPmF1ZGlvX2J1ZmZlciArIGVuZF9wb3Ms IGVuZF9wb3MgKiBzaXplb2YoZmxvYXQpKTsKPiArICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxs X3NpemUgLT0gZW5kX3BvczsKPiArICAgIHdjdHgtPmF1ZGlvX2J1ZmZlcl92YWRfc2l6ZSA9IHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZmlsdGVy X2ZyYW1lKEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICpmcmFtZSkKPiArewo+ICsgICAg QVZGaWx0ZXJDb250ZXh0ICpjdHggPSBpbmxpbmstPmRzdDsKPiArICAgIFdoaXNwZXJDb250ZXh0 ICp3Y3R4ID0gY3R4LT5wcml2Owo+ICsgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5v dXRwdXRzWzBdOwo+ICsgICAgQVZEaWN0aW9uYXJ5ICoqbWV0YWRhdGEgPSAmZnJhbWUtPm1ldGFk YXRhOwo+ICsKPiArICAgIGNvbnN0IGludCBzYW1wbGVzID0gZnJhbWUtPm5iX3NhbXBsZXM7Cj4g KyAgICBjb25zdCBmbG9hdCAqaW5wdXRfZGF0YSA9IChjb25zdCBmbG9hdCAqKWZyYW1lLT5kYXRh WzBdOwo+ICsKPiArICAgIGlmICh3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplICsgc2FtcGxl cyA+IHdjdHgtPmF1ZGlvX2J1ZmZlcl9xdWV1ZV9zaXplKQo+ICsgICAgewo+ICsgICAgICAgIHJ1 bl90cmFuc2NyaXB0aW9uKGN0eCwgbWV0YWRhdGEsIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3Np emUpOwo+ICsgICAgfQo+ICsKPiArICAgIG1lbWNweSh3Y3R4LT5hdWRpb19idWZmZXIgKyB3Y3R4 LT5hdWRpb19idWZmZXJfZmlsbF9zaXplLCBpbnB1dF9kYXRhLCBzYW1wbGVzICogc2l6ZW9mKGZs b2F0KSk7Cj4gKyAgICB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplICs9IHNhbXBsZXM7Cj4g Kwo+ICsgICAgaWYgKHdjdHgtPmN0eF92YWQgJiYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3Np emUgLSB3Y3R4LT5hdWRpb19idWZmZXJfdmFkX3NpemUpID49Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgV0hJU1BFUl9TQU1QTEVfUkFURSAqICh3Y3R4LT52YWRfbWluX3NwZWVjaF9k dXJhdGlvbiArIHdjdHgtPnZhZF9taW5fc2lsZW5jZV9kdXJhdGlvbikgLyAxMDAwKQo+ICsgICAg ewo+ICsgICAgICAgIHN0cnVjdCB3aGlzcGVyX3ZhZF9zZWdtZW50cyAqc2VnbWVudHMgPSB3aGlz cGVyX3ZhZF9zZWdtZW50c19mcm9tX3NhbXBsZXMoCj4gKyAgICAgICAgICAgIHdjdHgtPmN0eF92 YWQsIHdjdHgtPnZhZF9wYXJhbXMsIHdjdHgtPmF1ZGlvX2J1ZmZlciwgd2N0eC0+YXVkaW9fYnVm ZmVyX2ZpbGxfc2l6ZSk7Cj4gKyAgICAgICAgd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9zaXplID0g d2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZTsKPiArCj4gKyAgICAgICAgaWYgKCFzZWdtZW50 cykKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg ImZhaWxlZCB0byBkZXRlY3QgVkFEXG4iKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgZWxzZQo+ ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaW50IG5fc2VnbWVudHMgPSB3aGlzcGVyX3ZhZF9z ZWdtZW50c19uX3NlZ21lbnRzKHNlZ21lbnRzKTsKPiArCj4gKyAgICAgICAgICAgIGlmIChuX3Nl Z21lbnRzID4gMCkKPiArICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgY29uc3QgaW50 NjRfdCBzdGFydF9tcyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRzX2dldF9zZWdtZW50X3QwKHNlZ21l bnRzLCBuX3NlZ21lbnRzIC0gMSkgKiAxMDsKPiArICAgICAgICAgICAgICAgIGNvbnN0IGludDY0 X3QgZW5kX21zID0gd2hpc3Blcl92YWRfc2VnbWVudHNfZ2V0X3NlZ21lbnRfdDEoc2VnbWVudHMs IG5fc2VnbWVudHMgLSAxKSAqIDEwOwo+ICsgICAgICAgICAgICAgICAgaW50IGVuZF9wb3MgPSAo aW50KShlbmRfbXMgKiBXSElTUEVSX1NBTVBMRV9SQVRFIC8gMTAwMCk7Cj4gKwo+ICsgICAgICAg ICAgICAgICAgaWYgKGVuZF9wb3MgPCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKQo+ICsg ICAgICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xP R19JTkZPLCAiVkFEIGRldGVjdGVkICVkIHNlZ21lbnRzLCBzdGFydDogJWxkIG1zLCBlbmQ6ICVs ZCBtcyAoYnVmZmVyOiAlZCBtcylcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5f c2VnbWVudHMsIHN0YXJ0X21zLCBlbmRfbXMsIDEwMDAgKiB3Y3R4LT5hdWRpb19idWZmZXJfZmls bF9zaXplIC8gV0hJU1BFUl9TQU1QTEVfUkFURSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgcnVu X3RyYW5zY3JpcHRpb24oY3R4LCBtZXRhZGF0YSwgZW5kX3Bvcyk7Cj4gKyAgICAgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIHdoaXNwZXJfdmFkX2ZyZWVf c2VnbWVudHMoc2VnbWVudHMpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArICAgIGVsc2UgaWYg KHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPj0gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVl X3NpemUpCj4gKyAgICB7Cj4gKyAgICAgICAgcnVuX3RyYW5zY3JpcHRpb24oY3R4LCBtZXRhZGF0 YSwgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgd2N0 eC0+bmV4dF9wdHMgPSBmcmFtZS0+cHRzICsgYXZfcmVzY2FsZV9xKGZyYW1lLT5uYl9zYW1wbGVz LCAoQVZSYXRpb25hbCl7MSwgaW5saW5rLT5zYW1wbGVfcmF0ZX0sIGlubGluay0+dGltZV9iYXNl KTsKPiArICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJhbWUpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHB1c2hfbGFzdF9mcmFtZShBVkZpbHRlckxpbmsgKm91dGxpbmspCj4g K3sKPiArICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+c3JjOwo+ICsgICAgV2hp c3BlckNvbnRleHQgKndjdHggPSBjdHgtPnByaXY7Cj4gKyAgICBBVkZyYW1lICpmcmFtZTsKPiAr ICAgIGludCBuX291dCA9IDE7Cj4gKwo+ICsgICAgaWYgKGN0eC0+aXNfZGlzYWJsZWQgfHwgd2N0 eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSA9PSAwKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsg ICAgZnJhbWUgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKG91dGxpbmssIG5fb3V0KTsKPiArICAgIGlm ICghZnJhbWUpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gKyAgICBh dl9zYW1wbGVzX3NldF9zaWxlbmNlKGZyYW1lLT5leHRlbmRlZF9kYXRhLCAwLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBuX291dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVscywKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgZnJhbWUtPmZvcm1hdCk7Cj4gKwo+ICsgICAgZnJhbWUtPnB0cyA9IHdjdHgtPm5leHRfcHRz Owo+ICsgICAgaWYgKHdjdHgtPm5leHRfcHRzICE9IEFWX05PUFRTX1ZBTFVFKQo+ICsgICAgICAg IHdjdHgtPm5leHRfcHRzICs9IGF2X3Jlc2NhbGVfcShuX291dCwgKEFWUmF0aW9uYWwpezEsIG91 dGxpbmstPnNhbXBsZV9yYXRlfSwgb3V0bGluay0+dGltZV9iYXNlKTsKPiArCj4gKyAgICBydW5f dHJhbnNjcmlwdGlvbihjdHgsICZmcmFtZS0+bWV0YWRhdGEsIHdjdHgtPmF1ZGlvX2J1ZmZlcl9m aWxsX3NpemUpOwo+ICsKPiArICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJh bWUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFjdGl2YXRlKEFWRmlsdGVyQ29udGV4dCAqY3R4 KQo+ICt7Cj4gKyAgICBBVkZpbHRlckxpbmsgKmlubGluayA9IGN0eC0+aW5wdXRzWzBdOwo+ICsg ICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBdOwo+ICsgICAgV2hpc3Bl ckNvbnRleHQgKndjdHggPSBjdHgtPnByaXY7Cj4gKyAgICBpbnQ2NF90IHB0czsKPiArICAgIGlu dCBzdGF0dXM7Cj4gKwo+ICsgICAgRkZfRklMVEVSX0ZPUldBUkRfU1RBVFVTX0JBQ0sob3V0bGlu aywgaW5saW5rKTsKPiArCj4gKyAgICBpZiAoIXdjdHgtPmVvZiAmJiBmZl9pbmxpbmtfcXVldWVk X2ZyYW1lcyhpbmxpbmspKQo+ICsgICAgewo+ICsgICAgICAgIEFWRnJhbWUgKmZyYW1lID0gTlVM TDsKPiArICAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgICByZXQgPSBmZl9pbmxpbmtfY29u c3VtZV9mcmFtZShpbmxpbmssICZmcmFtZSk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gKyAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgaWYgKHJldCA+IDApCj4gKyAgICAgICAg ICAgIHJldHVybiBmaWx0ZXJfZnJhbWUoaW5saW5rLCBmcmFtZSk7Cj4gKyAgICB9Cj4gKwo+ICsg ICAgaWYgKCF3Y3R4LT5lb2YgJiYgZmZfaW5saW5rX2Fja25vd2xlZGdlX3N0YXR1cyhpbmxpbmss ICZzdGF0dXMsICZwdHMpKQo+ICsgICAgICAgIHdjdHgtPmVvZiA9IHN0YXR1cyA9PSBBVkVSUk9S X0VPRjsKPiArCj4gKyAgICBpZiAod2N0eC0+ZW9mKQo+ICsgICAgewo+ICsgICAgICAgIHB1c2hf bGFzdF9mcmFtZShvdXRsaW5rKTsKPiArCj4gKyAgICAgICAgZmZfb3V0bGlua19zZXRfc3RhdHVz KG91dGxpbmssIEFWRVJST1JfRU9GLCB3Y3R4LT5uZXh0X3B0cyk7Cj4gKyAgICAgICAgcmV0dXJu IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgRkZfRklMVEVSX0ZPUldBUkRfV0FOVEVEKG91dGxpbmss IGlubGluayk7Cj4gKwo+ICsgICAgcmV0dXJuIEZGRVJST1JfTk9UX1JFQURZOwo+ICt9Cj4gKwo+ ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihXaGlzcGVyQ29udGV4dCwgeCkKPiArI2RlZmlu ZSBGTEFHUyBBVl9PUFRfRkxBR19BVURJT19QQVJBTSB8IEFWX09QVF9GTEFHX0ZJTFRFUklOR19Q QVJBTQo+ICsKPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIHdoaXNwZXJfb3B0aW9uc1tdID0gewo+ ICsgICAgeyJtb2RlbCIsICJQYXRoIHRvIHRoZSB3aGlzcGVyLmNwcCBtb2RlbCBmaWxlIiwgT0ZG U0VUKG1vZGVsX3BhdGgpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIC5mbGFncyA9IEZMQUdTfSwKPiAr ICAgIHsibGFuZ3VhZ2UiLCAiTGFuZ3VhZ2UgZm9yIHRyYW5zY3JpcHRpb24gKCdhdXRvJyBmb3Ig YXV0by1kZXRlY3QpIiwgT0ZGU0VUKGxhbmd1YWdlKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0 ciA9ICJhdXRvIn0sIC5mbGFncyA9IEZMQUdTfSwKPiArICAgIHsicXVldWUiLCAiQXVkaW8gcXVl dWUgc2l6ZSBpbiBtaWxsaXNlY29uZHMiLCBPRkZTRVQocXVldWUpLCBBVl9PUFRfVFlQRV9JTlQs IHsuaTY0ID0gMzAwMH0sIDIwLCBJTlRfTUFYLCAuZmxhZ3MgPSBGTEFHU30sCgpUaGlzIHNob3Vs ZCBwcm9iYWJseSBiZSBBVl9PUFRfVFlQRV9EVVJBVElPTi4KCj4gKyAgICB7InVzZV9ncHUiLCAi VXNlIEdQVSBmb3IgcHJvY2Vzc2luZyIsIE9GRlNFVCh1c2VfZ3B1KSwgQVZfT1BUX1RZUEVfQk9P TCwgey5pNjQgPSAxfSwgMCwgMSwgLmZsYWdzID0gRkxBR1N9LAo+ICsgICAgeyJncHVfZGV2aWNl IiwgIkdQVSBkZXZpY2UgdG8gdXNlIiwgT0ZGU0VUKGdwdV9kZXZpY2UpLCBBVl9PUFRfVFlQRV9J TlQsIHsuaTY0ID0gMH0sIDAsIElOVF9NQVgsIC5mbGFncyA9IEZMQUdTfSwKPiArICAgIHsiZGVz dGluYXRpb24iLCAiT3V0cHV0IGRlc3RpbmF0aW9uIiwgT0ZGU0VUKGRlc3RpbmF0aW9uKSwgQVZf T1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICIifSwgLmZsYWdzID0gRkxBR1N9LAo+ICsgICAgeyJm b3JtYXQiLCAiT3V0cHV0IGZvcm1hdCAodGV4dHxzcnR8anNvbikiLCBPRkZTRVQoZm9ybWF0KSwg QVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICJ0ZXh0In0sIC5mbGFncyA9IEZMQUdTfSwKPiAr ICAgIHsidmFkX21vZGVsIiwgIlBhdGggdG8gdGhlIFZBRCBtb2RlbCBmaWxlIiwgT0ZGU0VUKHZh ZF9tb2RlbF9wYXRoKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCAuZmxhZ3MgPSBGTEFHU30sCj4gKyAg ICB7InZhZF90aHJlc2hvbGQiLCAiVkFEIHRocmVzaG9sZCIsIE9GRlNFVCh2YWRfdGhyZXNob2xk KSwgQVZfT1BUX1RZUEVfRkxPQVQsIHsuZGJsID0gMC41fSwgMC4wLCAxLjAsIC5mbGFncyA9IEZM QUdTfSwKPiArICAgIHsidmFkX21pbl9zcGVlY2hfZHVyYXRpb24iLCAiTWluaW11bSBzcGVlY2gg ZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzIGZvciBWQUQiLCBPRkZTRVQodmFkX21pbl9zcGVlY2hf ZHVyYXRpb24pLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gNTB9LCAyMCwgSU5UX01BWCwgLmZs YWdzID0gRkxBR1N9LAo+ICsgICAgeyJ2YWRfbWluX3NpbGVuY2VfZHVyYXRpb24iLCAiTWluaW11 bSBzaWxlbmNlIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcyBmb3IgVkFEIiwgT0ZGU0VUKHZhZF9t aW5fc2lsZW5jZV9kdXJhdGlvbiksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSA1MDB9LCAwLCBJ TlRfTUFYLCAuZmxhZ3MgPSBGTEFHU30sCgpUaGVzZSBzaG91bGQgYmUgQVZfT1BUX1RZUEVfRFVS QVRJT04gdG9vLgoKPiArICAgIHtOVUxMfX07Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyB3 aGlzcGVyX2NsYXNzID0gewo+ICsgICAgLmNsYXNzX25hbWUgPSAid2hpc3BlciIsCj4gKyAgICAu aXRlbV9uYW1lID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCj4gKyAgICAub3B0aW9uID0gd2hpc3Bl cl9vcHRpb25zLAo+ICsgICAgLnZlcnNpb24gPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZGaWx0ZXJQYWQgd2hpc3Blcl9vdXRwdXRzW10gPSB7Cj4g KyAgICB7Cj4gKyAgICAgICAgLm5hbWUgPSAiZGVmYXVsdCIsCj4gKyAgICAgICAgLnR5cGUgPSBB Vk1FRElBX1RZUEVfQVVESU8sCj4gKyAgICB9LAo+ICt9Owo+ICsKPiArY29uc3QgRkZGaWx0ZXIg ZmZfYWZfd2hpc3BlciA9IHsKPiArICAgIC5wLm5hbWUgPSAid2hpc3BlciIsCj4gKyAgICAucC5k ZXNjcmlwdGlvbiA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJUcmFuc2NyaWJlIGF1ZGlvIHVzaW5n IHdoaXNwZXIuY3BwLiIpLAo+ICsgICAgLnAucHJpdl9jbGFzcyA9ICZ3aGlzcGVyX2NsYXNzLAo+ ICsgICAgLnAuZmxhZ3MgPSBBVkZJTFRFUl9GTEFHX01FVEFEQVRBX09OTFksCj4gKyAgICAuaW5p dCA9IGluaXQsCj4gKyAgICAudW5pbml0ID0gdW5pbml0LAo+ICsgICAgLmFjdGl2YXRlID0gYWN0 aXZhdGUsCj4gKyAgICAucHJpdl9zaXplID0gc2l6ZW9mKFdoaXNwZXJDb250ZXh0KSwKPiArICAg IEZJTFRFUl9JTlBVVFMoZmZfYXVkaW9fZGVmYXVsdF9maWx0ZXJwYWQpLAo+ICsgICAgRklMVEVS X09VVFBVVFMod2hpc3Blcl9vdXRwdXRzKSwKPiArICAgIEZJTFRFUl9TQU1QTEVGTVRTKEFWX1NB TVBMRV9GTVRfRkxULCBBVl9TQU1QTEVfRk1UX0ZMVFApLAo+ICt9Owo+IGRpZmYgLS1naXQgYS9s aWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKPiBpbmRl eCA0MDkwOTliZjFmLi5lYWYwYzhmZTZmIDEwMDY0NAo+IC0tLSBhL2xpYmF2ZmlsdGVyL2FsbGZp bHRlcnMuYwo+ICsrKyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwo+IEBAIC0xNjMsNiArMTYz LDggQEAgZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3ZpcnR1YWxiYXNzOwo+ICBleHRlcm4g Y29uc3QgRkZGaWx0ZXIgZmZfYWZfdm9sdW1lOwo+ICBleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZf YWZfdm9sdW1lZGV0ZWN0Owo+Cj4gK2V4dGVybiBjb25zdCBGRkZpbHRlciBmZl9hZl93aGlzcGVy Owo+ICsKPiAgZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FzcmNfYWV2YWxzcmM7Cj4gIGV4dGVy biBjb25zdCBGRkZpbHRlciBmZl9hc3JjX2FmZGVsYXlzcmM7Cj4gIGV4dGVybiBjb25zdCBGRkZp bHRlciBmZl9hc3JjX2FmaXJlcXNyYzsKPiAtLSAKPiAyLjQzLjAKPgo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcg bGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3Vi amVjdCAidW5zdWJzY3JpYmUiLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==