Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4KXQ-0025lY-2k for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Mar 2026 15:16:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4KXN-00DVYe-2O for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Mar 2026 15:16:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4KXN-00DVYW-03 for pgsql-hackers@lists.postgresql.org; Sun, 22 Mar 2026 15:16:21 +0000 Received: from mail-ot1-x32c.google.com ([2607:f8b0:4864:20::32c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4KXH-00000000U4E-08V4 for pgsql-hackers@postgresql.org; Sun, 22 Mar 2026 15:16:20 +0000 Received: by mail-ot1-x32c.google.com with SMTP id 46e09a7af769-7d86eb7c854so479328a34.3 for ; Sun, 22 Mar 2026 08:16:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774192574; cv=none; d=google.com; s=arc-20240605; b=afZ6hO+mZYzNGDiPWjW+R9ZSNqvSPY+26y3Po+DU5e2lrS2RccgfTWekqCEBhNGboz tBaDkK2vBXJtAaTF+JzEqu1aW+iT4mRkh+dpGjquRt0FNpS6Fp/g/FE8mtOlxR/XX1VH mCtmfnmKB1v71LZf7inln4VszyMRcEO+Ki7ql6m/lBRrVlbKjMuqn/Xuu646FRI0vjtx 5wUY/HEcnaDQYzH4pgTndSaehVTSLrxgXlR6icqKLmzLKFyC2SySgIlUctC4OSNLMQn2 JFUfqBYt2mFPOcLbVbvR+w4xDgRMjlQgaIA2eG5cubay8sw6XoDBiZ7MkOxhBWJoO8QE YBBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=t3EfclCl8775Tf7O5ooX0kWcU3J3KcsKGn+jGTPWUMQ=; fh=KL3PfAhIqPxFCDIHdCWDGE0zYaiHr7OXfoS/Xtu4OwY=; b=JCZwfQo/lkjBUqb6XZvi5qTO1NqHRUws/pK3GfLQp1LDPuO16GrKH0umckK6D8pFH0 TfRmfRTVlU7LqvooITGd9Vy/34Zge9FQCnhwXYJAWlyzk757O5fvFyC1FUdbECjTmz79 lxpT9cwdnjmT5KVrxldvA2mfk1XYThB/ZEUnu/FFRXxAhtlgfH1rQ77gqD2ey5TYefa5 6XI9at61tB/k3tvUsY/myCfY27MTFCdlbmwBAzmqYZVYEPW6/y7LcCgLneap4l3ec5jL ZBH57surprFL4zkpEoUZtyi+PcUQJg5AzQ6Odn8jZ8XwqDglrBZVSjfKyapyiDiapfzA gmhQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774192574; x=1774797374; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=t3EfclCl8775Tf7O5ooX0kWcU3J3KcsKGn+jGTPWUMQ=; b=LEodOVF4gbjiF03f8nKv+XRPZ+gK6wLbKhiFkI2hvIYLkFbE0SkdSvWtOla+xoSrrd v2QGViqoEYbJD8qf6CuXq0NMZAIyCZPjJLXIUDrvR/UnmzGSFb+XOqQYdO2PKtvzNOKl gNMc7jEt1qAgkSQ4sOWSQkl4KYR3VIVZHSWNqzN/ErNIQ0vVjFrYKrSiXW8p5D0HCH+l WVrkOoyaO8xxlTYioS1bM1JnOIz7ciJKVG7yUZzR23g+TH6Xms0VwQuQlSdmvcJ4htlf uNox1eN+9EyaWkMu7pjMsrRD+dt/wDeOpaJoPtkiSCA3Et8Iu2XGRvB8/rHv0wkralg/ OiKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774192574; x=1774797374; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=t3EfclCl8775Tf7O5ooX0kWcU3J3KcsKGn+jGTPWUMQ=; b=FtSbT5uydOtzXi4Z3s9Nz8nC7LnnYKWL71RNjYKID9Qw2FupClIM3YDrZcP+QxkhHE b0Q+EWm35fM4VPL9B7U1ju++UYFQ8oijK+LlZpkX2jA7MZbMRcnABpfLPUmDewNDtAi0 m8SAEAjVnBOjsw3BcG8AvTWn9OOHdUmb003Mz5tnx7+Fc0XPCN1R6ddHaNGaLy4AIzZP BxR49oslWC/bnQ1d2SXAfYLppaB8yRq5e4/JY920QMx7W5npInkLcW0OQaw2ht1dxBAv 1Zw+Z9aeBVc1Eghnpfhjkn+hKwpWb0L1BU1WKbvXp5HvfLAIJry8V4Z3GuyUN91zlY8B 1uRA== X-Forwarded-Encrypted: i=1; AJvYcCVKnFitbZhkozk+y6zYJPtFAC/H54nYgjeXOJtY3oVZwgIUJuWpvuWq6q4xyfeadOgU5xiOgQGQ1dC4qETg@postgresql.org X-Gm-Message-State: AOJu0YwnpZoCGhHLbrhaP2EPcSsKShnTwY00dXpgs57Wzi4Yaz20eEIE OU1glZ/Hu73xuYiJWDKpQ+tPRZExr9BjRh6IolCbk3rO99EoS0vYFR9GH5990/oG4oCQad8/iit MgpUvMCvNHQqyUklCS88BudJz4SgF0vo= X-Gm-Gg: ATEYQzzV6lsmfiB5IYgl7J6k5mlOGf8YV/69lhxQetfljaAGWbgwtu7SJygZwGVS5P5 m8rPQpktYyCR7B18eNbp+qREoIhf2HIKKvASZby7qcB3tILZnifsbrx6+zl4lj5GzEVq9dF0L5y 45tjtpZlqp8Lsabb+vXm6FNM0m4elWQGjzoDmssmZvg10ZCjI5dfsrINzATmRpBX2Cy/fHq5xVX Oogb+OwdUVr5d9Ssmd7WF8njwZ5etUFGEdczbTuMSaaPKPs9yuw+KMjxXunHTA3uSCrtAuTWQMa 9UayBMHkh4ZocQOdBVWamvaVaDDdJZ1WvJhAWt+RSwghb02no7U= X-Received: by 2002:a05:6820:818b:b0:67b:e3cf:a416 with SMTP id 006d021491bc7-67c22ec467emr8033443eaf.25.1774192573974; Sun, 22 Mar 2026 08:16:13 -0700 (PDT) MIME-Version: 1.0 References: <8c9b9b7d-0868-46d4-963c-8b1906bd7a1b@eisentraut.org> <72f6995a-75a6-4579-9e93-45a80f6bd956@eisentraut.org> <2597072.1737232674@sss.pgh.pa.us> In-Reply-To: From: Greg Sabino Mullane Date: Sun, 22 Mar 2026 11:15:38 -0400 X-Gm-Features: AQROBzADqOuM7LBmh0wnmaFh7agVsCfQdOi8OY4PPIeabhA5B5MKeybcB3QYgoI Message-ID: Subject: Re: Adding comments to help understand psql hidden queries To: Maiquel Grassi Cc: David Christensen , Tom Lane , Peter Eisentraut , Jim Jones , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000229f24064d9e668b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000229f24064d9e668b Content-Type: multipart/alternative; boundary="000000000000229f22064d9e6689" --000000000000229f22064d9e6689 Content-Type: text/plain; charset="UTF-8" Going back through all the feedback and comments, plus having some time to think things through, I am including a new patch, v7, that greatly simplifies things, and only makes changes inside of describe.c. In the spirit of not letting the perfect be the enemy of the good, I'm not worrying at all about the number of stars, or the width, and simply adding a small consistent description at the top of each query. I also realized that having these queries show up in someone's server log could be quite confusing, so I had them output as part of the query itself. In other words, they show up in both psql -E and the server logs. A few benefits to doing this: * Simplifies the code * Makes searching the web for what generated this code a lot easier (a comment versus a giant blob of SQL) * Makes all the SQL a little bit self-documented everywhere it shows up * Easier to maintain describe.c, as the comment is always printfPQExpBuffer, and everything else is appendPQExpBuffer, rather than trying to figure out which to use for each section of SQL. Also removes bugs like the append-first in objectDescription() Here's what the new output looks like via psql -E: /******** QUERY *********/ /* Get matching aggregates */ SELECT n.nspname as "Schema", p.proname AS "Name", pg_catalog.format_type(p.prorettype, NULL) AS "Result data type", CASE WHEN p.pronargs = 0 THEN CAST('*' AS pg_catalog.text) ELSE pg_catalog.pg_get_function_arguments(p.oid) END AS "Argument data types", pg_catalog.obj_description(p.oid, 'pg_proc') as "Description" FROM pg_catalog.pg_proc p LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace WHERE p.prokind = 'a' AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND pg_catalog.pg_function_is_visible(p.oid) ORDER BY 1, 2, 4; /************************/ and more examples: /******** QUERY *********/ /* Get publications that exclude this table */ SELECT pubname FROM pg_catalog.pg_publication p JOIN pg_catalog.pg_publication_rel pr ON p.oid = pr.prpubid WHERE (pr.prrelid = '16403' OR pr.prrelid = pg_catalog.pg_partition_root('16403')) AND pr.prexcept ORDER BY 1; /************************/ /******** QUERY *********/ /* Get parent tables */ SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid = i.inhparent AND i.inhrelid = '16403' AND c.relkind != 'p' AND c.relkind != 'I' ORDER BY inhseqno; /************************/ Cheers, Greg --000000000000229f22064d9e6689 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Going back through all the feedback and c= omments, plus having some time to think things through, I am including a ne= w patch, v7, that greatly simplifies things, and only makes changes inside = of describe.c. In the spirit of not letting the perfect be the enemy of the= good, I'm not worrying at all about the number of stars, or the width,= and simply adding a small consistent description at the top of each query.= I also realized that having these queries show up in someone's server = log could be quite confusing, so I had them output as part of the query its= elf. In other words, they show up in both psql -E and the server logs. A fe= w benefits to doing this:

* Simplifies the code
* Makes searching= the web for what generated this code a lot easier (a comment versus a gian= t blob of SQL)
* Makes all the SQL a little bit self-documented everywhe= re it shows up
* Easier to maintain describe.c, as the comment is always= printfPQExpBuffer, and everything
else is appendPQExpBuffer, rather th= an trying to figure out which to use for each section of SQL.
Also remo= ves bugs like the append-first in objectDescription()

Here's wha= t the new output looks like via psql -E:

/******** QUERY *********/<= br>/* Get matching aggregates */
SELECT n.nspname as "Schema",=
=C2=A0 p.proname AS "Name",
=C2=A0 pg_catalog.format_type(= p.prorettype, NULL) AS "Result data type",
=C2=A0 CASE WHEN p.= pronargs =3D 0
=C2=A0 =C2=A0 THEN CAST('*' AS pg_catalog.text)=C2=A0 =C2=A0 ELSE pg_catalog.pg_get_function_arguments(p.oid)
=C2=A0 = END AS "Argument data types",
=C2=A0 pg_catalog.obj_descriptio= n(p.oid, 'pg_proc') as "Description"
FROM pg_catalog.p= g_proc p
=C2=A0 =C2=A0 =C2=A0LEFT JOIN pg_catalog.pg_namespace n ON n.oi= d =3D p.pronamespace
WHERE p.prokind =3D 'a'
=C2=A0 =C2=A0 = =C2=A0 AND n.nspname <> 'pg_catalog'
=C2=A0 =C2=A0 =C2=A0 = AND n.nspname <> 'information_schema'
=C2=A0 AND pg_catalo= g.pg_function_is_visible(p.oid)
ORDER BY 1, 2, 4;
/******************= ******/

and more examples:

/******** QUERY *********/
/* G= et publications that exclude this table */
SELECT pubname
FROM pg_cat= alog.pg_publication p
JOIN pg_catalog.pg_publication_rel pr ON p.oid =3D= pr.prpubid
WHERE (pr.prrelid =3D '16403' OR pr.prrelid =3D pg_c= atalog.pg_partition_root('16403'))
AND pr.prexcept
ORDER BY 1= ;
/************************/

/******** QUERY *********/
/* Get= parent tables */
SELECT c.oid::pg_catalog.regclass
FROM pg_catalog.p= g_class c, pg_catalog.pg_inherits i
WHERE c.oid =3D i.inhparent AND i.in= hrelid =3D '16403'
=C2=A0 AND c.relkind !=3D 'p' AND c.r= elkind !=3D 'I'
ORDER BY inhseqno;
/************************/=

<= div>Cheers,
Greg

--000000000000229f22064d9e6689-- --000000000000229f24064d9e668b Content-Type: application/octet-stream; name="0007-Add-comment-header-for-generated-SQL-inside-psql.patch" Content-Disposition: attachment; filename="0007-Add-comment-header-for-generated-SQL-inside-psql.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn1w7o7d0 RnJvbSA4ZTljYzhiN2RlZjM2MTRmMGY2NDNmMDgxMWJjNTZiOTlkOWZmZTNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIFNhYmlubyBNdWxsYW5lIDxncmVnQHR1cm5zdGVwLmNv bT4KRGF0ZTogU3VuLCAyMiBNYXIgMjAyNiAxMTowNjowMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBjb21tZW50IGhlYWRlciBmb3IgZ2VuZXJhdGVkIFNRTCBpbnNpZGUgcHNxbAoKLS0tCiBz cmMvYmluL3BzcWwvZGVzY3JpYmUuYyB8IDI2NSArKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTc2IGluc2VydGlvbnMoKyksIDg5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggZWFmYjMzMTQzZDkuLmYwOWNkNDk4NTBjIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpA QCAtODQsNyArODQsOCBAQCBkZXNjcmliZUFnZ3JlZ2F0ZXMoY29uc3QgY2hhciAqcGF0dGVybiwg Ym9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7 CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIv KiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIGFnZ3JlZ2F0ZXMiKSk7CisJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCiAJCQkJ CSAgIiAgcC5wcm9uYW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLmZvcm1h dF90eXBlKHAucHJvcmV0dHlwZSwgTlVMTCkgQVMgXCIlc1wiLFxuIgpAQCAtMTY1LDcgKzE2Niw4 IEBAIGRlc2NyaWJlQWNjZXNzTWV0aG9kcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UpCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5n IGFjY2VzcyBtZXRob2RzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNF TEVDVCBhbW5hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIENBU0UgYW10eXBlIgogCQkJCQkg ICIgV0hFTiAiIENwcEFzU3RyaW5nMihBTVRZUEVfSU5ERVgpICIgVEhFTiAnJXMnIgpAQCAtMjI4 LDcgKzIzMCw4IEBAIGRlc2NyaWJlVGFibGVzcGFjZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBt YXRjaGluZyB0YWJsZXNwYWNlcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkg ICJTRUxFQ1Qgc3BjbmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19n ZXRfdXNlcmJ5aWQoc3Bjb3duZXIpIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9n LnBnX3RhYmxlc3BhY2VfbG9jYXRpb24ob2lkKSBBUyBcIiVzXCIiLApAQCAtMzM4LDcgKzM0MSw4 IEBAIGRlc2NyaWJlRnVuY3Rpb25zKGNvbnN0IGNoYXIgKmZ1bmN0eXBlcywgY29uc3QgY2hhciAq ZnVuY19wYXR0ZXJuLAogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdl dCBtYXRjaGluZyBmdW5jdGlvbnMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJ ICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgcC5wcm9uYW1lIGFz IFwiJXNcIixcbiIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEiKSwKQEAgLTY0NSw3ICs2 NDksOCBAQCBkZXNjcmliZVR5cGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwg Ym9vbCBzaG93U3lzdGVtKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8o IkdldCBtYXRjaGluZyB0eXBlcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkg ICJTRUxFQ1Qgbi5uc3BuYW1lIGFzIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLmZv cm1hdF90eXBlKHQub2lkLCBOVUxMKSBBUyBcIiVzXCIsXG4iLAogCQkJCQkgIGdldHRleHRfbm9v cCgiU2NoZW1hIiksCkBAIC04MTksNyArODI0LDggQEAgZGVzY3JpYmVPcGVyYXRvcnMoY29uc3Qg Y2hhciAqb3Blcl9wYXR0ZXJuLAogCSAqIHRvIHByZS12MTQgc2VydmVycy4KIAkgKi8KIAotCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICov XG4iLCBfKCJHZXQgbWF0Y2hpbmcgb3BlcmF0b3JzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZi dWYsCiAJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIgIG8u b3BybmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgQ0FTRSBXSEVOIG8ub3Bya2luZD0nbCcg VEhFTiBOVUxMIEVMU0UgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZShvLm9wcmxlZnQsIE5VTEwpIEVO RCBBUyBcIiVzXCIsXG4iCkBAIC05NTIsNyArOTU4LDggQEAgbGlzdEFsbERicyhjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAq L1xuIiwgXygiR2V0IG1hdGNoaW5nIGRhdGFiYXNlcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigm YnVmLAogCQkJCQkgICJTRUxFQ1RcbiIKIAkJCQkJICAiICBkLmRhdG5hbWUgYXMgXCIlc1wiLFxu IgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGQuZGF0ZGJhKSBhcyBcIiVz XCIsXG4iCkBAIC0xMDYwLDcgKzEwNjcsOCBAQCBwZXJtaXNzaW9uc0xpc3QoY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCBzaG93U3lzdGVtKQogCS8qCiAJICogd2UgaWdub3JlIGluZGV4ZXMgYW5k IHRvYXN0IHRhYmxlcyBzaW5jZSB0aGV5IGhhdmUgbm8gbWVhbmluZ2Z1bCByaWdodHMKIAkgKi8K LQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAl cyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIGFjY2VzcyBwcml2aWxlZ2VzIikpOworCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgog CQkJCQkgICIgIGMucmVsbmFtZSBhcyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgQ0FTRSBjLnJlbGtp bmQiCkBAIC0xMjI0LDcgKzEyMzIsOCBAQCBsaXN0RGVmYXVsdEFDTHMoY29uc3QgY2hhciAqcGF0 dGVybikKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hp bmcgZGVmYXVsdCBBQ0xzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNF TEVDVCBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChkLmRlZmFjbHJvbGUpIEFTIFwiJXNcIixc biIKIAkJCQkJICAiICBuLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIENBU0UgZC5k ZWZhY2xvYmp0eXBlICIKQEAgLTEzMDUsNiArMTMxNCw3IEBAIG9iamVjdERlc2NyaXB0aW9uKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkKIAogCWluaXRQUUV4cEJ1ZmZlcigm YnVmKTsKIAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1h dGNoaW5nIG9iamVjdCBjb21tZW50cyIpKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJ CQkgICJTRUxFQ1QgRElTVElOQ1QgdHQubnNwbmFtZSBBUyBcIiVzXCIsIHR0Lm5hbWUgQVMgXCIl c1wiLCB0dC5vYmplY3QgQVMgXCIlc1wiLCBkLmRlc2NyaXB0aW9uIEFTIFwiJXNcIlxuIgogCQkJ CQkgICJGUk9NIChcbiIsCkBAIC0xNDk3LDcgKzE1MDcsOCBAQCBkZXNjcmliZVRhYmxlRGV0YWls cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAog CWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgcmVsYXRp b25zIHRvIGRlc2NyaWJlIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNF TEVDVCBjLm9pZCxcbiIKIAkJCQkJICAiICBuLm5zcG5hbWUsXG4iCiAJCQkJCSAgIiAgYy5yZWxu YW1lXG4iCkBAIC0xNjMzLDkgKzE2NDQsMTAgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29u c3QgY2hhciAqc2NoZW1hbmFtZSwKIAlpbml0UFFFeHBCdWZmZXIoJnRtcGJ1Zik7CiAKIAkvKiBH ZXQgZ2VuZXJhbCB0YWJsZSBpbmZvICovCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVz ICovXG4iLCBfKCJHZXQgZ2VuZXJhbCByZWxhdGlvbiBpbmZvcm1hdGlvbiIpKTsKIAlpZiAocHNl dC5zdmVyc2lvbiA+PSAxMjAwMDApCiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJl bGtpbmQsIGMucmVsaGFzaW5kZXgsIGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFz dHJpZ2dlcnMsIGMucmVscm93c2VjdXJpdHksIGMucmVsZm9yY2Vyb3dzZWN1cml0eSwgIgogCQkJ CQkJICAiZmFsc2UgQVMgcmVsaGFzb2lkcywgYy5yZWxpc3BhcnRpdGlvbiwgJXMsIGMucmVsdGFi bGVzcGFjZSwgIgpAQCAtMTY1Myw3ICsxNjY1LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAl9CiAJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSAx MDAwMDApCiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBjLnJlbGtpbmQsIGMucmVsaGFz aW5kZXgsIGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVsaGFzdHJpZ2dlcnMsIGMucmVs cm93c2VjdXJpdHksIGMucmVsZm9yY2Vyb3dzZWN1cml0eSwgIgogCQkJCQkJICAiYy5yZWxoYXNv aWRzLCBjLnJlbGlzcGFydGl0aW9uLCAlcywgYy5yZWx0YWJsZXNwYWNlLCAiCkBAIC0xNjcwLDcg KzE2ODIsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1l LAogCX0KIAllbHNlIGlmIChwc2V0LnN2ZXJzaW9uID49IDkwNTAwKQogCXsKLQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVD VCBjLnJlbGNoZWNrcywgYy5yZWxraW5kLCBjLnJlbGhhc2luZGV4LCBjLnJlbGhhc3J1bGVzLCAi CiAJCQkJCQkgICJjLnJlbGhhc3RyaWdnZXJzLCBjLnJlbHJvd3NlY3VyaXR5LCBjLnJlbGZvcmNl cm93c2VjdXJpdHksICIKIAkJCQkJCSAgImMucmVsaGFzb2lkcywgZmFsc2UgYXMgcmVsaXNwYXJ0 aXRpb24sICVzLCBjLnJlbHRhYmxlc3BhY2UsICIKQEAgLTE2ODcsNyArMTY5OSw3IEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJfQogCWVsc2UgaWYg KHBzZXQuc3ZlcnNpb24gPj0gOTA0MDApCiAJewotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAor CQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGMucmVsY2hlY2tzLCBj LnJlbGtpbmQsIGMucmVsaGFzaW5kZXgsIGMucmVsaGFzcnVsZXMsICIKIAkJCQkJCSAgImMucmVs aGFzdHJpZ2dlcnMsIGZhbHNlLCBmYWxzZSwgYy5yZWxoYXNvaWRzLCAiCiAJCQkJCQkgICJmYWxz ZSBhcyByZWxpc3BhcnRpdGlvbiwgJXMsIGMucmVsdGFibGVzcGFjZSwgIgpAQCAtMTcwNCw3ICsx NzE2LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAl9CiAJZWxzZQogCXsKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBjLnJlbGNoZWNrcywgYy5yZWxraW5kLCBjLnJl bGhhc2luZGV4LCBjLnJlbGhhc3J1bGVzLCAiCiAJCQkJCQkgICJjLnJlbGhhc3RyaWdnZXJzLCBm YWxzZSwgZmFsc2UsIGMucmVsaGFzb2lkcywgIgogCQkJCQkJICAiZmFsc2UgYXMgcmVsaXNwYXJ0 aXRpb24sICVzLCBjLnJlbHRhYmxlc3BhY2UsICIKQEAgLTE3NjUsOSArMTc3NywxMCBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlwcmludFF1ZXJ5 T3B0IG15b3B0ID0gcHNldC5wb3B0OwogCQljaGFyCSAgICpmb290ZXJzWzNdID0ge05VTEwsIE5V TEwsIE5VTEx9OwogCisJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygi R2V0IHNlcXVlbmNlIGluZm9ybWF0aW9uIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAw MDApCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHNlcXR5cGlk LCBOVUxMKSBBUyBcIiVzXCIsXG4iCiAJCQkJCQkJICAiICAgICAgIHNlcXN0YXJ0IEFTIFwiJXNc IixcbiIKIAkJCQkJCQkgICIgICAgICAgc2VxbWluIEFTIFwiJXNcIixcbiIKQEAgLTE3OTEsNyAr MTgwNCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUs CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgJ2JpZ2ludCcgQVMgXCIlc1wiLFxu IgogCQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSBBUyBcIiVzXCIsXG4iCiAJCQkJCQkJICAi ICAgICAgIG1pbl92YWx1ZSBBUyBcIiVzXCIsXG4iCkBAIC0xODE4LDcgKzE4MzEsOCBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJZ290byBlcnJv cl9yZXR1cm47CiAKIAkJLyogR2V0IHRoZSBjb2x1bW4gdGhhdCBvd25zIHRoaXMgc2VxdWVuY2Ug Ki8KLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KG5zcG5hbWUpIHx8ICcuJyB8fCIKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVz ICovXG4iLCBfKCJHZXQgdGhlIGNvbHVtbiB0aGF0IG93bnMgdGhpcyBzZXF1ZW5jZSIpKTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2lkZW50KG5z cG5hbWUpIHx8ICcuJyB8fCIKIAkJCQkJCSAgIlxuICAgcGdfY2F0YWxvZy5xdW90ZV9pZGVudChy ZWxuYW1lKSB8fCAnLicgfHwiCiAJCQkJCQkgICJcbiAgIHBnX2NhdGFsb2cucXVvdGVfaWRlbnQo YXR0bmFtZSksIgogCQkJCQkJICAiXG4gICBkLmRlcHR5cGUiCkBAIC0xODYyLDcgKzE4NzYsOCBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBQ cmludCBhbnkgcHVibGljYXRpb25zICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkK IAkJewotCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwdWJuYW1lIEZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwIgorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8q ICVzICovXG4iLCBfKCJHZXQgcHVibGljYXRpb25zIGNvbnRhaW5pbmcgdGhpcyBzZXF1ZW5jZSIp KTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1QgcHVibmFtZSBGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gcCIKIAkJCQkJCQkgICJcbldIRVJFIHAucHViYWxsc2VxdWVu Y2VzIgogCQkJCQkJCSAgIlxuIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hh YmxlKCclcycpIgogCQkJCQkJCSAgIlxuT1JERVIgQlkgMSIsCkBAIC0xOTIxLDcgKzE5MzYsOCBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlwcmlu dFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwogCQljaGFyCSAgICpmb290ZXJzWzNdID0ge05V TEwsIE5VTEwsIE5VTEx9OwogCi0JCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IHByb3BlcnR5IGdyYXBoIGluZm9y bWF0aW9uIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGUu cGdlYWxpYXMgQVMgXCIlc1wiLCIKIAkJCQkJCSAgIlxuICAgICBwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KG4ubnNwbmFtZSkgfHwgJy4nIHx8IgogCQkJCQkJICAiXG4gICAgICAgICAgcGdfY2F0YWxv Zy5xdW90ZV9pZGVudChjLnJlbG5hbWUpIEFTIFwiJXNcIiwiCkBAIC0yMDAzLDcgKzIwMTksOCBA QCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCSAqIGR1 cGxpY2F0aXZlIHRlc3QgbG9naWMgYmVsb3cuCiAJICovCiAJY29scyA9IDA7Ci0JcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBhLmF0dG5hbWUiKTsKKwlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBjb2x1bW5zIGZvciB0aGlzIHJlbGF0aW9uIikpOwor CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1QgYS5hdHRuYW1lIik7CiAJYXR0bmFtZV9j b2wgPSBjb2xzKys7CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIixcbiAgcGdfY2F0YWxv Zy5mb3JtYXRfdHlwZShhLmF0dHR5cGlkLCBhLmF0dHR5cG1vZCkiKTsKIAlhdHR0eXBlX2NvbCA9 IGNvbHMrKzsKQEAgLTIzMDUsNyArMjMyMiw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNv bnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvb3RlciBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0 aXRpb24gY2hpbGQgdGFibGUgKi8KIAkJUEdyZXN1bHQgICAqcmVzdWx0OwogCi0JCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCisJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwg XygiR2V0IHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhpcyB0YWJsZSIpKTsKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBpbmhwYXJlbnQ6OnBnX2NhdGFsb2cu cmVnY2xhc3MsXG4iCiAJCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKSxcbiAgIik7CiAKQEAgLTIzODIsNyArMjQwMCw4IEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIEZvciBhIFRPQVNUIHRh YmxlLCBwcmludCBuYW1lIG9mIG93bmluZyB0YWJsZSAqLwogCQlQR3Jlc3VsdCAgICpyZXN1bHQ7 CiAKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg Ii8qICVzICovXG4iLCBfKCJHZXQgdGhlIHRhYmxlIHdoaWNoIG93bnMgdGhpcyBUT0FTVCB0YWJs ZSIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBuLm5zcG5h bWUsIGMucmVsbmFtZVxuIgogCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMiCiAJ CQkJCQkgICIgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIgpAQCAtMjQxMCw3ICsyNDI5 LDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJ LyogRm9vdGVyIGluZm9ybWF0aW9uIGFib3V0IGFuIGluZGV4ICovCiAJCVBHcmVzdWx0ICAgKnJl c3VsdDsKIAotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBpbmRleCBkZXRhaWxzIikpOworCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNUIGkuaW5kaXN1bmlxdWUsIGkuaW5kaXNwcmlt YXJ5LCBpLmluZGlzY2x1c3RlcmVkLCAiCiAJCQkJCQkgICJpLmluZGlzdmFsaWQsXG4iCiAJCQkJ CQkgICIgIChOT1QgaS5pbmRpbW1lZGlhdGUpIEFORCAiCkBAIC0yNTMxLDcgKzI1NTEsOCBAQCBk ZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBwcmlu dCBpbmRleGVzICovCiAJCWlmICh0YWJsZWluZm8uaGFzaW5kZXgpCiAJCXsKLQkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIs IF8oIkdldCBpbmRleGVzIGZvciB0aGlzIHRhYmxlIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYzIucmVsbmFtZSwgaS5pbmRpc3ByaW1hcnksIGkuaW5k aXN1bmlxdWUsICIKIAkJCQkJCQkgICJpLmluZGlzY2x1c3RlcmVkLCBpLmluZGlzdmFsaWQsICIK IAkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9pbmRleGRlZihpLmluZGV4cmVsaWQsIDAsIHRy dWUpLFxuICAiCkBAIC0yNjM1LDcgKzI2NTYsOSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkvKiBwcmludCB0YWJsZSAoYW5kIGNvbHVtbikgY2hl Y2sgY29uc3RyYWludHMgKi8KIAkJaWYgKHRhYmxlaW5mby5jaGVja3MpCiAJCXsKLQkJCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAq L1xuIiwgXygiR2V0IGNoZWNrIGNvbnN0cmFpbnRzIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgci5jb25uYW1lLCAiCiAJCQkJCQkJICAicGdfY2F0YWxv Zy5wZ19nZXRfY29uc3RyYWludGRlZihyLm9pZCwgdHJ1ZSlcbiIKIAkJCQkJCQkgICJGUk9NIHBn X2NhdGFsb2cucGdfY29uc3RyYWludCByXG4iCkBAIC0yNjY2LDYgKzI2ODksNyBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9CiAKIAkJLyogUHJp bnQgZm9yZWlnbi1rZXkgY29uc3RyYWludHMgKi8KKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg Ii8qICVzICovXG4iLCBfKCJHZXQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMiKSk7CiAJCWlmIChw c2V0LnN2ZXJzaW9uID49IDEyMDAwMCAmJgogCQkJKHRhYmxlaW5mby5pc3BhcnRpdGlvbiB8fCB0 YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSkKIAkJewpAQCAt MjY3Myw3ICsyNjk3LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2No ZW1hbmFtZSwKIAkJCSAqIFB1dCB0aGUgY29uc3RyYWludHMgZGVmaW5lZCBpbiB0aGlzIHRhYmxl IGZpcnN0LCBmb2xsb3dlZCBieQogCQkJICogdGhlIGNvbnN0cmFpbnRzIGRlZmluZWQgaW4gYW5j ZXN0b3IgcGFydGl0aW9uZWQgdGFibGVzLgogCQkJICovCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgY29ucmVs aWQgPSAnJXMnOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFTIHNhbWV0YWJsZSxcbiIKIAkJCQkJCQkg ICIgICAgICAgY29ubmFtZSxcbiIKIAkJCQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRf Y29uc3RyYWludGRlZihvaWQsIHRydWUpIEFTIGNvbmRlZixcbiIKQEAgLTI2ODYsNyArMjcxMCw3 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCX0K IAkJZWxzZQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgdHJ1ZSBhcyBzYW1ldGFibGUsIGNvbm5hbWUs XG4iCiAJCQkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKHIub2lkLCB0 cnVlKSBhcyBjb25kZWYsXG4iCiAJCQkJCQkJICAiICBjb25yZWxpZDo6cGdfY2F0YWxvZy5yZWdj bGFzcyBBUyBvbnRhYmxlXG4iCkBAIC0yNzM2LDkgKzI3NjAsMTAgQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJUFFjbGVhcihyZXN1bHQpOwogCiAJ CS8qIHByaW50IGluY29taW5nIGZvcmVpZ24ta2V5IHJlZmVyZW5jZXMgKi8KKwkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgZm9yZWlnbiBrZXlzIHJlZmVyZW5j aW5nIHRoaXMgdGFibGUiKSk7CiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDEyMDAwMCkKIAkJewot CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCQkJICAiU0VMRUNUIGNvbm5hbWUsIGNvbnJlbGlkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzIEFT IG9udGFibGUsXG4iCiAJCQkJCQkJICAiICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFp bnRkZWYob2lkLCB0cnVlKSBBUyBjb25kZWZcbiIKIAkJCQkJCQkgICIgIEZST00gcGdfY2F0YWxv Zy5wZ19jb25zdHJhaW50IGNcbiIKQEAgLTI3NTAsNyArMjc3NSw3IEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJ CQkgICJTRUxFQ1QgY29ubmFtZSwgY29ucmVsaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MgQVMgb250 YWJsZSxcbiIKIAkJCQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRl ZihvaWQsIHRydWUpIEFTIGNvbmRlZlxuIgogCQkJCQkJCSAgIiAgRlJPTSBwZ19jYXRhbG9nLnBn X2NvbnN0cmFpbnRcbiIKQEAgLTI3ODcsNyArMjgxMiw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRh aWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIHByaW50IGFueSByb3ctbGV2ZWwgcG9s aWNpZXMgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA1MDApCiAJCXsKLQkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsICJTRUxFQ1QgcG9sLnBvbG5hbWUsIik7CisJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCByb3ctbGV2ZWwgcG9saWNpZXMgZm9yIHRo aXMgdGFibGUiKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIHBvbC5wb2xu YW1lLCIpOwogCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTAwMDAwKQogCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsCiAJCQkJCQkJCQkgIiBwb2wucG9scGVybWlzc2l2ZSxcbiIpOwpAQCAt Mjg2Nyw5ICsyODkzLDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCX0KIAogCQkvKiBwcmludCBhbnkgZXh0ZW5kZWQgc3RhdGlzdGljcyAqLwor CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBleHRlbmRlZCBz dGF0aXN0aWNzIGZvciB0aGlzIHRhYmxlIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAw MDApCiAJCXsKLQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBvaWQsICIKIAkJCQkJCQkgICJzdHhyZWxpZDo6cGdf Y2F0YWxvZy5yZWdjbGFzcywgIgogCQkJCQkJCSAgInN0eG5hbWVzcGFjZTo6cGdfY2F0YWxvZy5y ZWduYW1lc3BhY2U6OnBnX2NhdGFsb2cudGV4dCBBUyBuc3AsICIKQEAgLTI5NjcsNyArMjk5NCw3 IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCX0K IAkJZWxzZSBpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJCXsKLQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVD VCBvaWQsICIKIAkJCQkJCQkgICJzdHhyZWxpZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgIgogCQkJ CQkJCSAgInN0eG5hbWVzcGFjZTo6cGdfY2F0YWxvZy5yZWduYW1lc3BhY2UgQVMgbnNwLCAiCkBA IC0zMDQ2LDcgKzMwNzMsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkvKiBwcmludCBydWxlcyAqLwogCQlpZiAodGFibGVpbmZvLmhhc3J1bGVz ICYmIHRhYmxlaW5mby5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVykKIAkJewotCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xu IiwgXygiR2V0IHJ1bGVzIGZvciB0aGlzIHRhYmxlIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1Qgci5ydWxlbmFtZSwgdHJpbSh0cmFpbGluZyAnOycgZnJv bSBwZ19jYXRhbG9nLnBnX2dldF9ydWxlZGVmKHIub2lkLCB0cnVlKSksICIKIAkJCQkJCQkgICJl dl9lbmFibGVkXG4iCiAJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3Jld3JpdGUgclxuIgpA QCAtMzEyOSw5ICszMTU3LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJCS8qIHByaW50IGFueSBwdWJsaWNhdGlvbnMgKi8KIAkJaWYgKHBzZXQu c3ZlcnNpb24gPj0gMTAwMDAwKQogCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyog JXMgKi9cbiIsIF8oIkdldCBwdWJsaWNhdGlvbnMgdGhhdCB1c2UgdGhpcyB0YWJsZSIpKTsKIAkJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKIAkJCXsKLQkJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlNFTEVDVCBw dWJuYW1lXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBOVUxMXG4iCiAJCQkJCQkJCSAgIiAgICAgLCBO VUxMXG4iCkBAIC0zMTkxLDcgKzMyMjAsNyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiU0VM RUNUIHB1Ym5hbWVcbiIKIAkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKIAkJCQkJCQkJICAiICAg ICAsIE5VTExcbiIKQEAgLTMyNDEsNyArMzI3MCw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCS8qIFByaW50IHB1YmxpY2F0aW9ucyB3aGVyZSB0 aGUgdGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAkJaWYgKHBzZXQuc3ZlcnNpb24g Pj0gMTkwMDAwKQogCQl7Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgcHVibGljYXRpb25zIHRoYXQgZXhj bHVkZSB0aGlzIHRhYmxlIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkg ICJTRUxFQ1QgcHVibmFtZVxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbiBwXG4iCiAJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBw ciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKQEAgLTMyNzMsNyArMzMwMyw4IEBAIGRlc2NyaWJl T25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCSAqLwogCQlpZiAodmVy Ym9zZSkKIAkJewotCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG5vdCBudWxsIGNvbnN0cmFpbnRzIGZvciB0 aGlzIHRhYmxlIikpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxF Q1QgYy5jb25uYW1lLCBhLmF0dG5hbWUsIGMuY29ubm9pbmhlcml0LFxuIgogCQkJCQkJCSAgIiAg Yy5jb25pc2xvY2FsLCBjLmNvbmluaGNvdW50IDw+IDAsXG4iCiAJCQkJCQkJICAiICBjLmNvbnZh bGlkYXRlZFxuIgpAQCAtMzM0Niw3ICszMzc3LDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMo Y29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJLyogcHJpbnQgcnVsZXMgKi8KIAkJaWYgKHRhYmxl aW5mby5oYXNydWxlcykKIAkJewotCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IHJ1bGVzIGZvciB0aGlzIHZp ZXciKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCByLnJ1 bGVuYW1lLCB0cmltKHRyYWlsaW5nICc7JyBmcm9tIHBnX2NhdGFsb2cucGdfZ2V0X3J1bGVkZWYo ci5vaWQsIHRydWUpKVxuIgogCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19yZXdyaXRlIHJc biIKIAkJCQkJCQkgICJXSEVSRSByLmV2X2NsYXNzID0gJyVzJyBBTkQgci5ydWxlbmFtZSAhPSAn X1JFVFVSTicgT1JERVIgQlkgMTsiLApAQCAtMzM4Myw3ICszNDE1LDggQEAgZGVzY3JpYmVPbmVU YWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJUEdyZXN1bHQgICAqcmVzdWx0 OwogCQlpbnQJCQl0dXBsZXM7CiAKLQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgdHJpZ2dlcnMgZm9yIHRoaXMg dGFibGUiKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1QgdC50 Z25hbWUsICIKIAkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X3RyaWdnZXJkZWYodC5vaWQsIHRy dWUpLCAiCiAJCQkJCQkgICJ0LnRnZW5hYmxlZCwgdC50Z2lzaW50ZXJuYWwsXG4iKTsKQEAgLTM1 NjYsNyArMzU5OSw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJCQljaGFyCSAgICpmdG9wdGlvbnM7CiAKIAkJCS8qIEZvb3RlciBpbmZvcm1hdGlv biBhYm91dCBmb3JlaWduIHRhYmxlICovCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgZm9yZWlnbiBzZXJ2 ZXIiKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlNFTEVDVCBzLnNy dm5hbWUsXG4iCiAJCQkJCQkJICAiICBwZ19jYXRhbG9nLmFycmF5X3RvX3N0cmluZyhBUlJBWShc biIKIAkJCQkJCQkgICIgICAgU0VMRUNUIHBnX2NhdGFsb2cucXVvdGVfaWRlbnQob3B0aW9uX25h bWUpIgpAQCAtMzYwMSw3ICszNjM1LDggQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJfQogCiAJCS8qIHByaW50IHRhYmxlcyBpbmhlcml0ZWQgZnJv bSAoZXhjbHVkZSBwYXJ0aXRpb25lZCBwYXJlbnRzKSAqLwotCQlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLAorCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBwYXJl bnQgdGFibGVzIikpOworCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiU0VMRUNU IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzXG4iCiAJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpXG4iCiAJCQkJCQkgICJXSEVSRSBj Lm9pZCA9IGkuaW5ocGFyZW50IEFORCBpLmluaHJlbGlkID0gJyVzJ1xuIgpAQCAtMzYzOCw4ICsz NjczLDkgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAkJfQogCiAJCS8qIHByaW50IGNoaWxkIHRhYmxlcyAod2l0aCBhZGRpdGlvbmFsIGluZm8gaWYg cGFydGl0aW9ucykgKi8KKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBf KCJHZXQgY2hpbGQgdGFibGVzIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDApCi0J CQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJ CQkJCQkgICJTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwiCiAJ CQkJCQkJICAiIGluaGRldGFjaHBlbmRpbmcsIgogCQkJCQkJCSAgIiBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZClcbiIKQEAgLTM2NDksNyArMzY4NSw3IEBAIGRl c2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJICAi IGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7IiwKIAkJCQkJCQkg IG9pZCk7CiAJCWVsc2UgaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTAwMDAwKQotCQkJcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIgogCQkJCQkJCSAgIiBm YWxzZSBBUyBpbmhkZXRhY2hwZW5kaW5nLCIKIAkJCQkJCQkgICIgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpXG4iCkBAIC0zNjU5LDcgKzM2OTUsNyBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCSAgIiBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OyIsCiAJCQkJCQkJICBv aWQpOwogCQllbHNlCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVsa2luZCwiCiAJCQkJCQkJICAiIGZhbHNlIEFTIGluaGRldGFjaHBlbmRpbmcsIE5VTExc biIKIAkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19p bmhlcml0cyBpXG4iCkBAIC0zODk0LDcgKzM5MzAsOCBAQCBkZXNjcmliZVJvbGVzKGNvbnN0IGNo YXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCiAJaW5pdFBRRXhw QnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyByb2xlcyIpKTsKKwlhcHBl bmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1Qgci5yb2xuYW1lLCByLnJvbHN1cGVy LCByLnJvbGluaGVyaXQsXG4iCiAJCQkJCSAgIiAgci5yb2xjcmVhdGVyb2xlLCByLnJvbGNyZWF0 ZWRiLCByLnJvbGNhbmxvZ2luLFxuIgogCQkJCQkgICIgIHIucm9sY29ubmxpbWl0LCByLnJvbHZh bGlkdW50aWwiKTsKQEAgLTQwMzMsNyArNDA3MCw4IEBAIGxpc3REYlJvbGVTZXR0aW5ncyhjb25z dCBjaGFyICpwYXR0ZXJuLCBjb25zdCBjaGFyICpwYXR0ZXJuMikKIAogCWluaXRQUUV4cEJ1ZmZl cigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICJTRUxFQ1Qgcm9sbmFtZSBBUyBc IiVzXCIsIGRhdG5hbWUgQVMgXCIlc1wiLFxuIgorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIv KiAlcyAqL1xuIiwgXygiR2V0IHBlci1kYXRhYmFzZSBhbmQgcGVyLXJvbGUgc2V0dGluZ3MiKSk7 CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCByb2xuYW1lIEFTIFwiJXNcIiwgZGF0 bmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgInBnX2NhdGFsb2cuYXJyYXlfdG9fc3RyaW5nKHNl dGNvbmZpZywgRSdcXG4nKSBBUyBcIiVzXCJcbiIKIAkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBn X2RiX3JvbGVfc2V0dGluZyBzXG4iCiAJCQkJCSAgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2Rh dGFiYXNlIGQgT04gZC5vaWQgPSBzZXRkYXRhYmFzZVxuIgpAQCAtNDEwMCw3ICs0MTM4LDggQEAg ZGVzY3JpYmVSb2xlR3JhbnRzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkK IAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwogCiAJaW5pdFBRRXhwQnVmZmVyKCZi dWYpOwotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1Ziwg Ii8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgcm9sZSBncmFudHMiKSk7CisJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIG0ucm9sbmFtZSBBUyBcIiVzXCIsIHIucm9s bmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5jb25jYXRfd3MoJywgJyxc biIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJSb2xlIG5hbWUiKSwKQEAgLTQxOTksNyArNDIzOCw4 IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAK LQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAl cyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIHJlbGF0aW9ucyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIGFzIFwiJXNcIixcbiIKIAkJCQkJICAi ICBjLnJlbG5hbWUgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIgIENBU0UgYy5yZWxraW5kIgpAQCAt NDQ4Miw3ICs0NTIyLDggQEAgbGlzdFBhcnRpdGlvbmVkVGFibGVzKGNvbnN0IGNoYXIgKnJlbHR5 cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAKIAlpbml0UFFFeHBCdWZm ZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIHBhcnRpdGlvbmVkIHRhYmxlcyIp KTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIGFz IFwiJXNcIixcbiIKIAkJCQkJICAiICBjLnJlbG5hbWUgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIg IHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGMucmVsb3duZXIpIGFzIFwiJXNcIiIsCkBAIC00 NjU3LDcgKzQ2OTgsOCBAQCBsaXN0TGFuZ3VhZ2VzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0J cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMg Ki9cbiIsIF8oIkdldCBtYXRjaGluZyBsYW5ndWFnZXMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJICAiU0VMRUNUIGwubGFubmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAg ICAgICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChsLmxhbm93bmVyKSBhcyBcIiVzXCIsXG4i CiAJCQkJCSAgIiAgICAgICBsLmxhbnBsdHJ1c3RlZCBBUyBcIiVzXCIiLApAQCAtNDczMyw3ICs0 Nzc1LDggQEAgbGlzdERvbWFpbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBi b29sIHNob3dTeXN0ZW0pCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygi R2V0IG1hdGNoaW5nIGRvbWFpbnMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJ ICAiU0VMRUNUIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgICAgICB0LnR5cG5h bWUgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIgICAgICAgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZSh0 LnR5cGJhc2V0eXBlLCB0LnR5cHR5cG1vZCkgYXMgXCIlc1wiLFxuIgpAQCAtNDgxOCw3ICs0ODYx LDggQEAgbGlzdENvbnZlcnNpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwg Ym9vbCBzaG93U3lzdGVtKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8o IkdldCBtYXRjaGluZyBjb252ZXJzaW9ucyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAog CQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICAgICAgIGMu Y29ubmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgICAgICBwZ19jYXRhbG9nLnBnX2VuY29k aW5nX3RvX2NoYXIoYy5jb25mb3JlbmNvZGluZykgQVMgXCIlc1wiLFxuIgpAQCAtNDg5Niw3ICs0 OTQwLDkgQEAgZGVzY3JpYmVDb25maWd1cmF0aW9uUGFyYW1ldGVycyhjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UsCiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAog CWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCisJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgY29uZmln dXJhdGlvbiBwYXJhbWV0ZXJzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAg IlNFTEVDVCBzLm5hbWUgQVMgXCIlc1wiLCAiCiAJCQkJCSAgInBnX2NhdGFsb2cuY3VycmVudF9z ZXR0aW5nKHMubmFtZSkgQVMgXCIlc1wiIiwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlBhcmFtZXRl ciIpLApAQCAtNDk3Niw3ICs1MDIyLDggQEAgbGlzdEV2ZW50VHJpZ2dlcnMoY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9c biIsIF8oIkdldCBtYXRjaGluZyBldmVudCB0cmlnZ2VycyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkgICJTRUxFQ1QgZXZ0bmFtZSBhcyBcIiVzXCIsICIKIAkJCQkJICAiZXZ0 ZXZlbnQgYXMgXCIlc1wiLCAiCiAJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGUu ZXZ0b3duZXIpIGFzIFwiJXNcIixcbiIKQEAgLTUwNTMsNyArNTEwMCw5IEBAIGxpc3RFeHRlbmRl ZFN0YXRzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl9CiAKIAlpbml0UFFF eHBCdWZmZXIoJmJ1Zik7Ci0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKworCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIGV4dGVuZGVkIHN0YXRp c3RpY3MiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIFxuIgog CQkJCQkgICJlcy5zdHhuYW1lc3BhY2U6OnBnX2NhdGFsb2cucmVnbmFtZXNwYWNlOjpwZ19jYXRh bG9nLnRleHQgQVMgXCIlc1wiLCBcbiIKIAkJCQkJICAiZXMuc3R4bmFtZSBBUyBcIiVzXCIsIFxu IiwKQEAgLTUxNDYsNyArNTE5NSw4IEBAIGxpc3RDYXN0cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UpCiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0 IG1hdGNoaW5nIGNhc3RzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNF TEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKGNhc3Rzb3VyY2UsIE5VTEwpIEFTIFwiJXNcIixc biIKIAkJCQkJICAiICAgICAgIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUoY2FzdHRhcmdldCwgTlVM TCkgQVMgXCIlc1wiLFxuIiwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlNvdXJjZSB0eXBlIiksCkBA IC01MjcwLDcgKzUzMjAsOCBAQCBsaXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsK IAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8q ICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgY29sbGF0aW9ucyIpKTsKKwlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1RcbiIKIAkJCQkJICAiICBuLm5zcG5hbWUgQVMgXCIl c1wiLFxuIgogCQkJCQkgICIgIGMuY29sbG5hbWUgQVMgXCIlc1wiLFxuIiwKQEAgLTUzOTMsNyAr NTQ0NCw5IEBAIGxpc3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwg Ym9vbCBzaG93U3lzdGVtKQogCWNoYXIJICAqKmZvb3RlcnMgPSBOVUxMOwogCiAJaW5pdFBRRXhw QnVmZmVyKCZidWYpOwotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisKKwlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyBzY2hlbWFzIikpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgQVMgXCIlc1wi LFxuIgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKG4ubnNwb3duZXIpIEFT IFwiJXNcIiIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiksCkBAIC01NDM2LDcgKzU0ODks OCBAQCBsaXN0U2NoZW1hcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wg c2hvd1N5c3RlbSkKIAkJUEdyZXN1bHQgICAqcmVzdWx0OwogCQlpbnQJCQlpOwogCi0JCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xu IiwgXygiR2V0IHB1YmxpY2F0aW9ucyB0aGF0IHVzZSB0aGlzIHNjaGVtYSIpKTsKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIlNFTEVDVCBwdWJuYW1lIFxuIgogCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCSAgIiAgICAgSk9JTiBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBwLm9pZCA9IHBuLnBucHVi aWRcbiIKQEAgLTU1MTYsNyArNTU3MCw4IEBAIGxpc3RUU1BhcnNlcnMoY29uc3QgY2hhciAqcGF0 dGVybiwgYm9vbCB2ZXJib3NlKQogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIs IF8oIkdldCBtYXRjaGluZyB0ZXh0IHNlYXJjaCBwYXJzZXJzIikpOworCWFwcGVuZFBRRXhwQnVm ZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVFxuIgogCQkJCQkgICIgIG4ubnNwbmFtZSBhcyBcIiVz XCIsXG4iCiAJCQkJCSAgIiAgcC5wcnNuYW1lIGFzIFwiJXNcIixcbiIKQEAgLTU1NjUsNyArNTYy MCw4IEBAIGxpc3RUU1BhcnNlcnNWZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAKIAlpbml0 UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIHRleHQgc2VhcmNo IHBhcnNlcnMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIHAu b2lkLFxuIgogCQkJCQkgICIgIG4ubnNwbmFtZSxcbiIKIAkJCQkJICAiICBwLnByc25hbWVcbiIK QEAgLTU2NDIsNyArNTY5OCw4IEBAIGRlc2NyaWJlT25lVFNQYXJzZXIoY29uc3QgY2hhciAqb2lk LCBjb25zdCBjaGFyICpuc3BuYW1lLCBjb25zdCBjaGFyICpwcnNuYW1lKQogCiAJaW5pdFBRRXhw QnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCB0ZXh0IHNlYXJjaCBwYXJzZXIgZGV0YWls cyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1QgJyVzJyBBUyBc IiVzXCIsXG4iCiAJCQkJCSAgIiAgIHAucHJzc3RhcnQ6OnBnX2NhdGFsb2cucmVncHJvYyBBUyBc IiVzXCIsXG4iCiAJCQkJCSAgIiAgIHBnX2NhdGFsb2cub2JqX2Rlc2NyaXB0aW9uKHAucHJzc3Rh cnQsICdwZ19wcm9jJykgYXMgXCIlc1wiXG4iCkBAIC01NzEwLDcgKzU3NjcsOCBAQCBkZXNjcmli ZU9uZVRTUGFyc2VyKGNvbnN0IGNoYXIgKm9pZCwgY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3Qg Y2hhciAqcHJzbmFtZSkKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJH ZXQgdGV4dCBzZWFyY2ggcGFyc2VyIHRva2VucyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LAogCQkJCQkgICJTRUxFQ1QgdC5hbGlhcyBhcyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgdC5kZXNj cmlwdGlvbiBhcyBcIiVzXCJcbiIKIAkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnRzX3Rva2VuX3R5 cGUoICclcyc6OnBnX2NhdGFsb2cub2lkICkgYXMgdFxuIgpAQCAtNTc2MCw3ICs1ODE4LDggQEAg bGlzdFRTRGljdGlvbmFyaWVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAog CWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgdGV4dCBz ZWFyY2ggZGljdGlvbmFyaWVzIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAg IlNFTEVDVFxuIgogCQkJCQkgICIgIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAg ZC5kaWN0bmFtZSBhcyBcIiVzXCIsXG4iLApAQCAtNTgyNSw4ICs1ODg0LDkgQEAgbGlzdFRTVGVt cGxhdGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAogCWluaXRQUUV4cEJ1 ZmZlcigmYnVmKTsKIAorCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygi R2V0IG1hdGNoaW5nIHRleHQgc2VhcmNoIHRlbXBsYXRlcyIpKTsKIAlpZiAodmVyYm9zZSkKLQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJ CSAgIlNFTEVDVFxuIgogCQkJCQkJICAiICBuLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkJ ICAiICB0LnRtcGxuYW1lIEFTIFwiJXNcIixcbiIKQEAgLTU4MzksNyArNTg5OSw3IEBAIGxpc3RU U1RlbXBsYXRlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJCQkJCQkgIGdl dHRleHRfbm9vcCgiTGV4aXplIiksCiAJCQkJCQkgIGdldHRleHRfbm9vcCgiRGVzY3JpcHRpb24i KSk7CiAJZWxzZQotCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQlhcHBlbmRQUUV4cEJ1ZmZl cigmYnVmLAogCQkJCQkJICAiU0VMRUNUXG4iCiAJCQkJCQkgICIgIG4ubnNwbmFtZSBBUyBcIiVz XCIsXG4iCiAJCQkJCQkgICIgIHQudG1wbG5hbWUgQVMgXCIlc1wiLFxuIgpAQCAtNTg5Myw3ICs1 OTUzLDggQEAgbGlzdFRTQ29uZmlncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Up CiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAor CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIHRl eHQgc2VhcmNoIGNvbmZpZ3VyYXRpb25zIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJ CQkJCSAgIlNFTEVDVFxuIgogCQkJCQkgICIgICBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgogCQkJ CQkgICIgICBjLmNmZ25hbWUgYXMgXCIlc1wiLFxuIgpAQCAtNTkzOSw3ICs2MDAwLDggQEAgbGlz dFRTQ29uZmlnc1ZlcmJvc2UoY29uc3QgY2hhciAqcGF0dGVybikKIAogCWluaXRQUUV4cEJ1ZmZl cigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgdGV4dCBzZWFyY2ggY29uZmlndXJh dGlvbnMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIGMub2lk LCBjLmNmZ25hbWUsXG4iCiAJCQkJCSAgIiAgIG4ubnNwbmFtZSxcbiIKIAkJCQkJICAiICAgcC5w cnNuYW1lLFxuIgpAQCAtNjAyNSw3ICs2MDg3LDggQEAgZGVzY3JpYmVPbmVUU0NvbmZpZyhjb25z dCBjaGFyICpvaWQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsIGNvbnN0IGNoYXIgKmNmZ25hbWUsCiAK IAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IHRleHQgc2VhcmNoIGNv bmZpZ3VyYXRpb24gZGV0YWlscyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkg ICJTRUxFQ1RcbiIKIAkJCQkJICAiICAoIFNFTEVDVCB0LmFsaWFzIEZST01cbiIKIAkJCQkJICAi ICAgIHBnX2NhdGFsb2cudHNfdG9rZW5fdHlwZShjLmNmZ3BhcnNlcikgQVMgdFxuIgpAQCAtNjA5 Myw3ICs2MTU2LDkgQEAgbGlzdEZvcmVpZ25EYXRhV3JhcHBlcnMoY29uc3QgY2hhciAqcGF0dGVy biwgYm9vbCB2ZXJib3NlKQogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CiAKIAlp bml0UFFFeHBCdWZmZXIoJmJ1Zik7Ci0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKworCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IG1hdGNoaW5nIGZvcmVpZ24t ZGF0YSB3cmFwcGVycyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxF Q1QgZmR3LmZkd25hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0 X3VzZXJieWlkKGZkdy5mZHdvd25lcikgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIGZkdy5mZHdo YW5kbGVyOjpwZ19jYXRhbG9nLnJlZ3Byb2MgQVMgXCIlc1wiLFxuIgpAQCAtNjE2NCw3ICs2MjI5 LDkgQEAgbGlzdEZvcmVpZ25TZXJ2ZXJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSkKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwogCiAJaW5pdFBRRXhwQnVmZmVy KCZidWYpOwotCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisKKwlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyBmb3JlaWduIHNlcnZlcnMiKSk7CisJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIHMuc3J2bmFtZSBBUyBcIiVz XCIsXG4iCiAJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5aWQocy5zcnZvd25lcikg QVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIGYuZmR3bmFtZSBBUyBcIiVzXCIiLApAQCAtNjI0MCw3 ICs2MzA3LDkgQEAgbGlzdFVzZXJNYXBwaW5ncyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAogCWluaXRQUUV4cEJ1 ZmZlcigmYnVmKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCisJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgdXNlciBtYXBwaW5ncyIpKTsK KwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1QgdW0uc3J2bmFtZSBBUyBc IiVzXCIsXG4iCiAJCQkJCSAgIiAgdW0udXNlbmFtZSBBUyBcIiVzXCIiLAogCQkJCQkgIGdldHRl eHRfbm9vcCgiU2VydmVyIiksCkBAIC02Mjk1LDcgKzYzNjQsOSBAQCBsaXN0Rm9yZWlnblRhYmxl cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBteW9w dCA9IHBzZXQucG9wdDsKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKLQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJH ZXQgbWF0Y2hpbmcgZm9yZWlnbiB0YWJsZXMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK IAkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSBBUyBcIiVzXCIsXG4iCiAJCQkJCSAgIiAgYy5yZWxu YW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBzLnNydm5hbWUgQVMgXCIlc1wiIiwKQEAgLTYz NjcsNyArNjQzOCw5IEBAIGxpc3RFeHRlbnNpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsK LQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8q ICVzICovXG4iLCBfKCJHZXQgbWF0Y2hpbmcgZXh0ZW5zaW9ucyIpKTsKKwlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1QgZS5leHRuYW1lIEFTIFwiJXNcIiwgIgogCQkJCQkg ICJlLmV4dHZlcnNpb24gQVMgXCIlc1wiLCBhZS5kZWZhdWx0X3ZlcnNpb24gQVMgXCIlc1wiLCIK IAkJCQkJICAibi5uc3BuYW1lIEFTIFwiJXNcIiwgZC5kZXNjcmlwdGlvbiBBUyBcIiVzXCJcbiIK QEAgLTY0MjEsNyArNjQ5NCw5IEBAIGxpc3RFeHRlbnNpb25Db250ZW50cyhjb25zdCBjaGFyICpw YXR0ZXJuKQogCWludAkJCWk7CiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7Ci0JcHJpbnRmUFFF eHBCdWZmZXIoJmJ1ZiwKKworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwg XygiR2V0IG1hdGNoaW5nIGluc3RhbGxlZCBleHRlbnNpb25zIikpOworCWFwcGVuZFBRRXhwQnVm ZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBlLmV4dG5hbWUsIGUub2lkXG4iCiAJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19leHRlbnNpb24gZVxuIik7CiAKQEAgLTY0ODksNyArNjU2NCw5IEBA IGxpc3RPbmVFeHRlbnNpb25Db250ZW50cyhjb25zdCBjaGFyICpleHRuYW1lLCBjb25zdCBjaGFy ICpvaWQpCiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAogCWluaXRQUUV4cEJ1 ZmZlcigmYnVmKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCisJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgaW5zdGFsbGVkIGV4dGVuc2lvbiBkZXRhaWxz IikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9n LnBnX2Rlc2NyaWJlX29iamVjdChjbGFzc2lkLCBvYmppZCwgMCkgQVMgXCIlc1wiXG4iCiAJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19kZXBlbmRcbiIKIAkJCQkJICAiV0hFUkUgcmVmY2xhc3Np ZCA9ICdwZ19jYXRhbG9nLnBnX2V4dGVuc2lvbic6OnBnX2NhdGFsb2cucmVnY2xhc3MgQU5EIHJl Zm9iamlkID0gJyVzJyBBTkQgZGVwdHlwZSA9ICdlJ1xuIgpAQCAtNjU5Nyw3ICs2Njc0LDggQEAg bGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCiAJaW5pdFBRRXhwQnVmZmVy KCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyBwdWJsaWNhdGlvbnMiKSk7CisJYXBw ZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUIHB1Ym5hbWUgQVMgXCIlc1wiLFxu IgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKHB1Ym93bmVyKSBBUyBcIiVz XCIsXG4iCiAJCQkJCSAgIiAgcHViYWxsdGFibGVzIEFTIFwiJXNcIiIsCkBAIC02NzQ4LDcgKzY4 MjYsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCiAJaW5p dFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBkZXRhaWxzIGFib3V0IG1hdGNo aW5nIHB1YmxpY2F0aW9ucyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJT RUxFQ1Qgb2lkLCBwdWJuYW1lLFxuIgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJi eWlkKHB1Ym93bmVyKSBBUyBvd25lcixcbiIKIAkJCQkJICAiICBwdWJhbGx0YWJsZXMiKTsKQEAg LTY4ODQsOCArNjk2Myw4IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCWlmICghcHViYWxsdGFibGVzKQogCQl7CiAJCQkvKiBHZXQgdGhlIHRhYmxlcyBmb3Ig dGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbiAqLwotCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK LQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lLCBjLnJlbG5hbWUiKTsKKwkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IHRhYmxlcyB1c2VkIGJ5IHRoaXMgcHVi bGljYXRpb24iKSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiU0VMRUNUIG4ubnNwbmFt ZSwgYy5yZWxuYW1lIik7CiAJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCiAJCQl7CiAJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKQEAgLTY5MjEsNyArNzAwMCw4IEBAIGRlc2Ny aWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlpZiAocHNldC5zdmVyc2lv biA+PSAxNTAwMDApCiAJCQl7CiAJCQkJLyogR2V0IHRoZSBzY2hlbWFzIGZvciB0aGUgc3BlY2lm aWVkIHB1YmxpY2F0aW9uICovCi0JCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBzY2hlbWFzIHVzZWQgYnkg dGhpcyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJ CQkgICJTRUxFQ1Qgbi5uc3BuYW1lXG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19u YW1lc3BhY2UgblxuIgogCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2UgcG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCkBAIC02OTM3LDcgKzcw MTcsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQogCQkJewogCQkJCS8qIEdldCB0YWJsZXMgaW4gdGhl IEVYQ0VQVCBjbGF1c2UgZm9yIHRoaXMgcHVibGljYXRpb24gKi8KLQkJCQlwcmludGZQUUV4cEJ1 ZmZlcigmYnVmLAorCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygi R2V0IHRhYmxlcyBleGNsdWRlZCBieSB0aGlzIHB1YmxpY2F0aW9uIikpOworCQkJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgfHwgJy4nIHx8IGMu cmVsbmFtZVxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgogCQkJ CQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMu cmVsbmFtZXNwYWNlXG4iCkBAIC02OTk3LDcgKzcwNzgsOCBAQCBkZXNjcmliZVN1YnNjcmlwdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCiAJaW5pdFBRRXhwQnVmZmVy KCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigm YnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyBzdWJzY3JpcHRpb25zIikpOworCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBzdWJuYW1lIEFTIFwiJXNcIlxu IgogCQkJCQkgICIsICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChzdWJvd25lcikgQVMgXCIl c1wiXG4iCiAJCQkJCSAgIiwgIHN1YmVuYWJsZWQgQVMgXCIlc1wiXG4iCkBAIC03MTY2LDcgKzcy NDgsOCBAQCBsaXN0T3BlcmF0b3JDbGFzc2VzKGNvbnN0IGNoYXIgKmFjY2Vzc19tZXRob2RfcGF0 dGVybiwKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgbWF0Y2hp bmcgb3BlcmF0b3IgY2xhc3NlcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkg ICJTRUxFQ1RcbiIKIAkJCQkJICAiICBhbS5hbW5hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIg IHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUoYy5vcGNpbnR5cGUsIE5VTEwpIEFTIFwiJXNcIixcbiIK QEAgLTcyNjcsNyArNzM1MCw4IEBAIGxpc3RPcGVyYXRvckZhbWlsaWVzKGNvbnN0IGNoYXIgKmFj Y2Vzc19tZXRob2RfcGF0dGVybiwKIAogCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKIAotCXByaW50 ZlBRRXhwQnVmZmVyKCZidWYsCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4i LCBfKCJHZXQgbWF0Y2hpbmcgb3BlcmF0b3IgZmFtaWxpZXMiKSk7CisJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJICAiU0VMRUNUXG4iCiAJCQkJCSAgIiAgYW0uYW1uYW1lIEFTIFwiJXNc IixcbiIKIAkJCQkJICAiICBDQVNFXG4iCkBAIC03MzU3LDcgKzc0NDEsOCBAQCBsaXN0T3BGYW1p bHlPcGVyYXRvcnMoY29uc3QgY2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAogCiAJaW5pdFBR RXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBvcGVyYXRvcnMgb2YgbWF0Y2hpbmcg b3BlcmF0b3IgZmFtaWxpZXMiKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAi U0VMRUNUXG4iCiAJCQkJCSAgIiAgYW0uYW1uYW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBD QVNFXG4iCkBAIC03NDYzLDcgKzc1NDgsOCBAQCBsaXN0T3BGYW1pbHlGdW5jdGlvbnMoY29uc3Qg Y2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLAogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwog Ci0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiLyog JXMgKi9cbiIsIF8oIkdldCBtYXRjaGluZyBzdXBwb3J0IGZ1bmN0aW9ucyBvZiBvcGVyYXRvciBm YW1pbGllcyIpKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkgICJTRUxFQ1RcbiIK IAkJCQkJICAiICBhbS5hbW5hbWUgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIENBU0VcbiIKQEAg LTc1NDksNyArNzYzNSw4IEBAIGxpc3RMYXJnZU9iamVjdHMoYm9vbCB2ZXJib3NlKQogCiAJaW5p dFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCBsYXJnZSBvYmplY3RzIikpOwor CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCSAgIlNFTEVDVCBvaWQgYXMgXCIlc1wiLFxu IgogCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKGxvbW93bmVyKSBhcyBcIiVz XCIsXG4gICIsCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJJRCIpLAotLSAKMi40Ny4zCgo= --000000000000229f24064d9e668b--