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.94.2) (envelope-from ) id 1uYXJ1-007Tuz-J8 for pgsql-hackers@arkaria.postgresql.org; Sun, 06 Jul 2025 21:53:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uYXI0-00FFMs-AC for pgsql-hackers@arkaria.postgresql.org; Sun, 06 Jul 2025 21:52:48 +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.94.2) (envelope-from ) id 1uYXHz-00FFMe-Nk for pgsql-hackers@lists.postgresql.org; Sun, 06 Jul 2025 21:52:48 +0000 Received: from mail-qt1-x832.google.com ([2607:f8b0:4864:20::832]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uYXHx-005vrK-38 for pgsql-hackers@postgresql.org; Sun, 06 Jul 2025 21:52:47 +0000 Received: by mail-qt1-x832.google.com with SMTP id d75a77b69052e-4a7fc24ed5cso1311771cf.1 for ; Sun, 06 Jul 2025 14:52:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1751838765; x=1752443565; 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=b1VFCu84OXnJB6rVMtGT02Ti/RMXJDJQC/R/Nw0HOxo=; b=dJKyvsBqjmwYE0RRX3JWDIg8KUfNrpN4DtwFQG6UzgJOyJkX/FYsdo3BzIqtVoJ68v vRL+ERxImMLzLo2FSz+jIirFiXwKQPW4CDeQhXbDnIZEF3+Ca1pLxj6p9eSq0GSFezDa 0x3C4/4F995nSnEzfCL4cZfC78HObAyKAZls34nn5/iIlzgSppqMgBbuF5R2gcLxqd3R dHF/m+aCOp01klEwnSu1KlD8JnhrNMTmxZpKpRJ4mr2bz/M7EbJMAPt29c75gtS0FH9h PZbqhGSt8m17ECu2a6plC8miymmW1itGMnSuKPbBAPX7ww6znJ9bN7ZjD+fuf9uem3k9 ldlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751838765; x=1752443565; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=b1VFCu84OXnJB6rVMtGT02Ti/RMXJDJQC/R/Nw0HOxo=; b=Uk0JjkqNF58YRt88bSFDOrjTLCKe/XoN7k6iNZnUxZcjiulvcGjdmcr0ScUiSAdnZr dYgMKl11dpFIKrMy3nLiPZ/V5RvEn9XBnZQ+1vGg5HdD2/Bs474XJVz4cxSTvd+uxyfL 6ZiWNR2e+2u4VoEGfsUC/6tUnh/kArPTqo7g3hSFr0ENFubuGdDmMVLpwq815ECRVAIA 9iiHiiq+03RqQyfSgN5d2ZUtQtIl8AQb70IoMBkEPmt+INoupj5arDlFo8GomQ6mhpdp X+WgfuLOag5AsCLKFPCo5rsB5bYC3NLZADKvMzDujFLb+HNciY+JCC4oDe7lQnZ6TAHB JTPw== X-Forwarded-Encrypted: i=1; AJvYcCVZ36xWmBMBIODF2TYil5FRCrBSKjFrVI9Z65cKJLsZ86o8s5ANO2okQUlJO09buA05TQPFIKDCGOrrYFqF@postgresql.org X-Gm-Message-State: AOJu0YzZ4xlNBK3K3XncdYUKS4Bwo2N7ZH/LBDkSde+V/gO6e4sQvsxK 3NnFJz6mbei23qdLwdHT45SgVtsBfcpI8lNsbNnV2mhQI/Tj7HdrpE96zOd1ic3YsqcnvshgPR2 1JxcKwI6RrnD0O4iqAoIb+l81hwdn6T7cGfZv+6PD X-Gm-Gg: ASbGncvYGwFPOTsbbxKwbBc46kulO/+AUbvKixVATu5FBwAMvQGm3LoFrSV+z592HUH Cqt6kuXnx2PdVqghuk4tCO++T1+CmSS3SxU9u9d1lcgzOyQr683eqf7qli4B9UVs9J01y/smG7e ziUiNAfFJYUnP8WZfg4ne6W1cKcvIUdo7IQeYcRCh2vFg= X-Google-Smtp-Source: AGHT+IGHXrxBIyQXxQ/w3OeQxXmcpDP5ysRbQem8StAWS1bkDN5EBCpJB4z0IN3Xk0NeNtu0JsRFjgOvKtnNGnIeIfQ= X-Received: by 2002:a05:622a:9010:b0:480:dde:aa4c with SMTP id d75a77b69052e-4a9933d8079mr9116331cf.4.1751838764249; Sun, 06 Jul 2025 14:52:44 -0700 (PDT) MIME-Version: 1.0 References: <20230814150737.GA1395427@nathanxps13> <20230815153423.GB2296544@nathanxps13> In-Reply-To: From: Hannu Krosing Date: Sun, 6 Jul 2025 23:52:31 +0200 X-Gm-Features: Ac12FXxymZSIlb3mQqxd5LF39lfqAnG2IfcBia707Ww8kU2zDgdvOOffZ1a5I08 Message-ID: Subject: Re: pgbench - adding pl/pgsql versions of tests To: Robert Haas Cc: Nathan Bossart , Fabien COELHO , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000003fedd1063949bf0e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003fedd1063949bf0e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 3, 2024 at 8:54=E2=80=AFAM Hannu Krosing wr= ote: > > My justification for adding pl/pgsql tests as part of the immediately ava= ilable tests > is that pl/pgsql itself is always enabled, so having a no-effort way to t= est its > performance benefits would be really helpful. > We also should have "tps-b-like as SQL function" to round up the "test wh= at's available in server" set. Finally got around to adding the tests for all out-of-the box supported languages - pl/pgsql, and old and new SQL. Also added the documentation. --0000000000003fedd1063949bf0e Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-added-new-and-old-style-SQL-functions-and-documen.patch" Content-Disposition: attachment; filename="v2-0001-added-new-and-old-style-SQL-functions-and-documen.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcs7bjrt0 RnJvbSA3MmVkZTg4MTJmNjFlZDQ4NzlmNWMwMDVhMTgxMzFjMzJiYTI3NjhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW5udSBLcm9zaW5nIDxoYW5udWtAZ29vZ2xlLmNvbT4KRGF0 ZTogU3VuLCA2IEp1bCAyMDI1IDIzOjQxOjQ2ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2Ml0gYWRk ZWQgbmV3IGFuZCBvbGQgc3R5bGUgU1FMIGZ1bmN0aW9ucyBhbmQgZG9jdW1lbnRhdGlvbgoKLS0t CiBkb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbCB8ICA0MyArKysrKysrLQogc3JjL2Jpbi9w Z2JlbmNoL3BnYmVuY2guYyAgICAgfCAxODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQogMiBmaWxlcyBjaGFuZ2VkLCAyMjMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcGdiZW5jaC5zZ21sCmluZGV4IGFiMjUyZDlmYzc0Li42ZDczM2NmZjFhZiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wZ2JlbmNoLnNnbWwKQEAgLTEwNSw4ICsxMDUsOSBAQCBwZ2JlbmNoIC1pIDxvcHRpb25hbD4g PHJlcGxhY2VhYmxlPm90aGVyLW9wdGlvbnM8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8cmVw bAogICAgIDxsaXRlcmFsPnBnYmVuY2ggLWk8L2xpdGVyYWw+IGNyZWF0ZXMgZm91ciB0YWJsZXMg PHN0cnVjdG5hbWU+cGdiZW5jaF9hY2NvdW50czwvc3RydWN0bmFtZT4sCiAgICAgPHN0cnVjdG5h bWU+cGdiZW5jaF9icmFuY2hlczwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfaGlz dG9yeTwvc3RydWN0bmFtZT4sIGFuZAogICAgIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfdGVsbGVyczwv c3RydWN0bmFtZT4sCi0gICAgZGVzdHJveWluZyBhbnkgZXhpc3RpbmcgdGFibGVzIG9mIHRoZXNl IG5hbWVzLgotICAgIEJlIHZlcnkgY2FyZWZ1bCB0byB1c2UgYW5vdGhlciBkYXRhYmFzZSBpZiB5 b3UgaGF2ZSB0YWJsZXMgaGF2aW5nIHRoZXNlCisgICAgZGVzdHJveWluZyBhbnkgZXhpc3Rpbmcg dGFibGVzIG9mIHRoZXNlIG5hbWVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuCisgICAgSXQgYWxz byBjcmVhdGVzIDYgZnVuY3Rpb25zIHN0YXJ0aW5nIHdpdGggPHN0cnVjdG5hbWU+cGdiZW5jaF88 L3N0cnVjdG5hbWU+LgorICAgIEJlIHZlcnkgY2FyZWZ1bCB0byB1c2UgYW5vdGhlciBkYXRhYmFz ZSBpZiB5b3UgaGF2ZSB0YWJsZXMgb3IgZnVuY3Rpb25zIGhhdmluZyB0aGVzZQogICAgIG5hbWVz IQogICAgPC9wYXJhPgogICA8L2NhdXRpb24+CkBAIC0zNjEsNiArMzYyLDE1IEBAIHBnYmVuY2gg PG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+ IDxyZXBsYWNlYWJsZT5kCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJwZ2JlbmNoLW9wdGlvbi1uby1mdW5jdGlvbnMiPgor ICAgICAgPHRlcm0+PG9wdGlvbj4tLW5vLWZ1bmN0aW9uczwvb3B0aW9uPjwvdGVybT4KKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRG8gbm90IGNyZWF0ZSBwbC9wZ3Nx bCBhbmQgU1FMIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwgc2NyaXB0cy4KKyAgICAgICA8L3BhcmE+ CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlz dGVudHJ5IGlkPSJwZ2JlbmNoLW9wdGlvbi1wYXJ0aXRpb24tbWV0aG9kIj4KICAgICAgIDx0ZXJt PjxvcHRpb24+LS1wYXJ0aXRpb24tbWV0aG9kPTxyZXBsYWNlYWJsZT5OQU1FPC9yZXBsYWNlYWJs ZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CkBAIC00MjcsOCArNDM3LDM1IEBA IHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IDwv b3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5kCiAgICAgICAgIEF2YWlsYWJsZSBidWlsdC1pbiBzY3Jp cHRzIGFyZTogPGxpdGVyYWw+dHBjYi1saWtlPC9saXRlcmFsPiwKICAgICAgICAgPGxpdGVyYWw+ c2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNlbGVjdC1vbmx5PC9saXRlcmFs Pi4KICAgICAgICAgVW5hbWJpZ3VvdXMgcHJlZml4ZXMgb2YgYnVpbHQtaW4gbmFtZXMgYXJlIGFj Y2VwdGVkLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVW5sZXNzIGRp c2FibGVkIHdpdGggPGxpdGVyYWw+LS1uby1mdW5jdGlvbnM8L2xpdGVyYWw+IG9wdGlvbiBhdCBk YXRhYmFzZSAKKyAgICAgICAgaW5pdCB0aGUgPGxpdGVyYWw+dHBjYi1saWtlPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+c2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4KKyAgICAgICAgc2NyaXB0cyBhcmUg YWxzbyBpbXBsZW1lbnRlZCBhcyBVc2VyLURlZmluZWQgZnVuY3Rpb25zIGluIHRoZSBkYXRhYmFz ZSB3aGljaCAKKyAgICAgICAgY2FuIGJlIHRlc3RlZCB1c2luZyBzY3JpcHRzIG5hbWVkIDxsaXRl cmFsPnBscGdzcWwtdHBjYi1saWtlPC9saXRlcmFsPiwgCisgICAgICAgIDxsaXRlcmFsPnNxbGZ1 bmMtdHBjYi1saWtlPC9saXRlcmFsPiwgPGxpdGVyYWw+b2xkc3FsZi10cGNiLWxpa2U8L2xpdGVy YWw+LCAKKyAgICAgICAgPGxpdGVyYWw+cGxwZ3NxbC1zaW1wbGUtdXBkYXRlPC9saXRlcmFsPiwg PGxpdGVyYWw+c3FsZnVuYy1zaW1wbGUtdXBkYXRlPC9saXRlcmFsPgorICAgICAgICBhbmQgPGxp dGVyYWw+b2xkc3FsZi1zaW1wbGUtdXBkYXRlPC9saXRlcmFsPi4KKyAgICAgICAgVGhlIDxsaXRl cmFsPnNxbGZ1bmMtKjwvbGl0ZXJhbD4gdmVyc2lvbnMgdXNlIHRoZSBuZXcgU1FMLXN0YW5kYXJk IFNRTCBmdW5jdGlvbnMgYW5kIAorICAgICAgICB0aGUgPGxpdGVyYWw+b2xkc3FsZi0qPC9saXRl cmFsPiB1c2UgdGhlIFNRTCBmdW5jdGlvbnMgZGVmaW5lZCB1c2luZyA8bGl0ZXJhbD5MQU5HVUFH RSBTUUw8L2xpdGVyYWw+LgorICAgICAgICBVc2UgPGxpdGVyYWw+LS1zaG93LXNjcmlwdD1zY3Jp cHRuYW1lPC9saXRlcmFsPiB0byBzZWUgd2hhdCBpcyBhY3R1YWxseSBydW4uCisgICAgICAgPC9w YXJhPgorICAgICAgIDxwYXJhPgogICAgICAgICBXaXRoIHRoZSBzcGVjaWFsIG5hbWUgPGxpdGVy YWw+bGlzdDwvbGl0ZXJhbD4sIHNob3cgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gc2NyaXB0cwotICAg ICAgICBhbmQgZXhpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgYW5kIGV4aXQgaW1tZWRpYXRlbHkg OgorPHByb2dyYW1saXN0aW5nPgorJCBwZ2JlbmNoIC1iIGxpc3QKK0F2YWlsYWJsZSBidWlsdGlu IHNjcmlwdHM6CisgICAgICAgICAgICAgIHRwY2ItbGlrZTogPGJ1aWx0aW46IFRQQy1CIChzb3J0 IG9mKT4KKyAgICAgIHBscGdzcWwtdHBjYi1saWtlOiA8YnVpbHRpbjogVFBDLUIgKHNvcnQgb2Yp IC0gcGwvcGdzcWwgVURGPgorICAgICAgc3FsZnVuYy10cGNiLWxpa2U6IDxidWlsdGluOiBUUEMt QiAoc29ydCBvZikgLSAnQkVHSU4gQVRPTUlDJyBTUUwgVURGPgorICAgICAgb2xkc3FsZi10cGNi LWxpa2U6IDxidWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5HVUFHRSBTUUwgVURGPgorICAg ICAgICAgIHNpbXBsZS11cGRhdGU6IDxidWlsdGluOiBzaW1wbGUgdXBkYXRlPgorICBwbHBnc3Fs LXNpbXBsZS11cGRhdGU6IDxidWlsdGluOiBzaW1wbGUgdXBkYXRlIC0gcGwvcGdzcWwgVURGPgor ICBzcWxmdW5jLXNpbXBsZS11cGRhdGU6IDxidWlsdGluOiBzaW1wbGUgdXBkYXRlIC0gJ0JFR0lO IEFUT01JQycgU1FMIFVERj4KKyAgb2xkc3FsZi1zaW1wbGUtdXBkYXRlOiA8YnVpbHRpbjogc2lt cGxlIHVwZGF0ZSAtIExBTkdVQUdFIFNRTCBVREY+CisgICAgICAgICAgICBzZWxlY3Qtb25seTog PGJ1aWx0aW46IHNlbGVjdCBvbmx5PgorPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8L3BhcmE+ CiAgICAgICAgPHBhcmE+CiAgICAgICAgIE9wdGlvbmFsbHksIHdyaXRlIGFuIGludGVnZXIgd2Vp Z2h0IGFmdGVyIDxsaXRlcmFsPkA8L2xpdGVyYWw+IHRvCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn YmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCA0OTdhOTM2 YzE0MS4uMjFkMmZkNjQ1NDggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMK KysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYwpAQCAtMTYwLDggKzE2MCw4IEBAIHR5cGVk ZWYgc3RydWN0IHNvY2tldF9zZXQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogc29tZSBjb25maWd1cmFibGUg cGFyYW1ldGVycyAqLwogCi0jZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRl ZmF1bHQgLUkgc2V0dGluZyAqLwotI2RlZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyog YWxsIHBvc3NpYmxlIHN0ZXBzICovCisjZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZFl0Z3Zw eSIJLyogZGVmYXVsdCAtSSBzZXR0aW5nICovCisjZGVmaW5lIEFMTF9JTklUX1NURVBTICJkWXRn R3ZwZnkiCS8qIGFsbCBwb3NzaWJsZSBzdGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09O RFMJNQkvKiBzZWNvbmRzIGJldHdlZW4gbG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRf TlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54YWN0cyAqLwpAQCAtNzk2LDYgKzc5NiwzMyBAQCBzdGF0 aWMgY29uc3QgQnVpbHRpblNjcmlwdCBidWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VSVCBJTlRP IHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKDp0 aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQkiRU5EO1xu IgogCX0sCisJeworCQkicGxwZ3NxbC10cGNiLWxpa2UiLAorCQkiPGJ1aWx0aW46IFRQQy1CIChz b3J0IG9mKSAtIHBsL3Bnc3FsIFVERj4iLAorCQkiXFxzZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFz U3RyaW5nMihuYWNjb3VudHMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBiaWQgcmFuZG9tKDEs ICIgQ3BwQXNTdHJpbmcyKG5icmFuY2hlcykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IHRpZCBy YW5kb20oMSwgIiBDcHBBc1N0cmluZzIobnRlbGxlcnMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNl dCBkZWx0YSByYW5kb20oLTUwMDAsIDUwMDApXG4iCisJCSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hf dHBjYl9saWtlKDphaWQsIDpiaWQsIDp0aWQsIDpkZWx0YSk7XG4iCisJfSwKKwl7CisJCSJzcWxm dW5jLXRwY2ItbGlrZSIsCisJCSI8YnVpbHRpbjogVFBDLUIgKHNvcnQgb2YpIC0gJ0JFR0lOIEFU T01JQycgU1FMIFVERj4iLAorCQkiXFxzZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihu YWNjb3VudHMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBiaWQgcmFuZG9tKDEsICIgQ3BwQXNT dHJpbmcyKG5icmFuY2hlcykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IHRpZCByYW5kb20oMSwg IiBDcHBBc1N0cmluZzIobnRlbGxlcnMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBkZWx0YSBy YW5kb20oLTUwMDAsIDUwMDApXG4iCisJCSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hfdHBjYl9saWtl X3NxbGZ1bmMoOmFpZCwgOmJpZCwgOnRpZCwgOmRlbHRhKTtcbiIKKwl9LAorCXsKKwkJIm9sZHNx bGYtdHBjYi1saWtlIiwKKwkJIjxidWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5HVUFHRSBT UUwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50 cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIo bmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFz U3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgt NTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5jaF90cGNiX2xpa2Vfb2xkc3Fs ZnVuYyg6YWlkLCA6YmlkLCA6dGlkLCA6ZGVsdGEpO1xuIgorCX0sCiAJewogCQkic2ltcGxlLXVw ZGF0ZSIsCiAJCSI8YnVpbHRpbjogc2ltcGxlIHVwZGF0ZT4iLApAQCAtODA5LDYgKzgzNiwzMyBA QCBzdGF0aWMgY29uc3QgQnVpbHRpblNjcmlwdCBidWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VS VCBJTlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxV RVMgKDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQki RU5EO1xuIgogCX0sCisJeworCQkicGxwZ3NxbC1zaW1wbGUtdXBkYXRlIiwKKwkJIjxidWlsdGlu OiBzaW1wbGUgdXBkYXRlIC0gcGwvcGdzcWwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEs ICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCBy YW5kb20oMSwgIiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxz ZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIK KwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgtNTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00g cGdiZW5jaF9zaW1wbGVfdXBkYXRlKDphaWQsIDpiaWQsIDp0aWQsIDpkZWx0YSk7XG4iCisJfSwK Kwl7CisJCSJzcWxmdW5jLXNpbXBsZS11cGRhdGUiLAorCQkiPGJ1aWx0aW46IHNpbXBsZSB1cGRh dGUgLSAnQkVHSU4gQVRPTUlDJyBTUUwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIg Q3BwQXNTdHJpbmcyKG5hY2NvdW50cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5k b20oMSwgIiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQg dGlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJ Ilxcc2V0IGRlbHRhIHJhbmRvbSgtNTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdi ZW5jaF9zaW1wbGVfdXBkYXRlX3NxbGZ1bmMoOmFpZCwgOmJpZCwgOnRpZCwgOmRlbHRhKTtcbiIK Kwl9LAorCXsKKwkJIm9sZHNxbGYtc2ltcGxlLXVwZGF0ZSIsCisJCSI8YnVpbHRpbjogc2ltcGxl IHVwZGF0ZSAtIExBTkdVQUdFIFNRTCBVREY+IiwKKwkJIlxcc2V0IGFpZCByYW5kb20oMSwgIiBD cHBBc1N0cmluZzIobmFjY291bnRzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgYmlkIHJhbmRv bSgxLCAiIENwcEFzU3RyaW5nMihuYnJhbmNoZXMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCB0 aWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG50ZWxsZXJzKSAiICogOnNjYWxlKVxuIgorCQki XFxzZXQgZGVsdGEgcmFuZG9tKC01MDAwLCA1MDAwKVxuIgorCQkiU0VMRUNUIDEgRlJPTSBwZ2Jl bmNoX3NpbXBsZV91cGRhdGVfb2xkc3FsZnVuYyg6YWlkLCA6YmlkLCA6dGlkLCA6ZGVsdGEpO1xu IgorCX0sCiAJewogCQkic2VsZWN0LW9ubHkiLAogCQkiPGJ1aWx0aW46IHNlbGVjdCBvbmx5PiIs CkBAIC05MTUsNiArOTY5LDcgQEAgdXNhZ2Uodm9pZCkKIAkJICAgIiAgLXEsIC0tcXVpZXQgICAg ICAgICAgICAgIHF1aWV0IGxvZ2dpbmcgKG9uZSBtZXNzYWdlIGVhY2ggNSBzZWNvbmRzKVxuIgog CQkgICAiICAtcywgLS1zY2FsZT1OVU0gICAgICAgICAgc2NhbGluZyBmYWN0b3JcbiIKIAkJICAg IiAgLS1mb3JlaWduLWtleXMgICAgICAgICAgIGNyZWF0ZSBmb3JlaWduIGtleSBjb25zdHJhaW50 cyBiZXR3ZWVuIHRhYmxlc1xuIgorCQkgICAiICAtLW5vLWZ1bmN0aW9ucyAgICAgICAgICAgZG8g bm90IGNyZWF0ZSBwbC9wZ3NxbCBhbmQgU1FMIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwgc2NyaXB0 c1xuIgogCQkgICAiICAtLWluZGV4LXRhYmxlc3BhY2U9VEFCTEVTUEFDRVxuIgogCQkgICAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIGluZGV4ZXMgaW4gdGhlIHNwZWNpZmllZCB0 YWJsZXNwYWNlXG4iCiAJCSAgICIgIC0tcGFydGl0aW9uLW1ldGhvZD0ocmFuZ2V8aGFzaClcbiIK QEAgLTQ3NTAsNyArNDgwNSw3IEBAIGluaXREcm9wVGFibGVzKFBHY29ubiAqY29uKQogCQkJCQkg InBnYmVuY2hfYWNjb3VudHMsICIKIAkJCQkJICJwZ2JlbmNoX2JyYW5jaGVzLCAiCiAJCQkJCSAi cGdiZW5jaF9oaXN0b3J5LCAiCi0JCQkJCSAicGdiZW5jaF90ZWxsZXJzIik7CisJCQkJCSAicGdi ZW5jaF90ZWxsZXJzIGNhc2NhZGUiKTsKIH0KIAogLyoKQEAgLTQ4MjUsNiArNDg4MCwxMDcgQEAg Y3JlYXRlUGFydGl0aW9ucyhQR2Nvbm4gKmNvbikKIAl0ZXJtUFFFeHBCdWZmZXIoJnF1ZXJ5KTsK IH0KIAorLyoKKyAqIENyZWF0ZSB0aGUgZnVuY3Rpb25zIG5lZWRlZCBmb3IgcGxwZ3NxbC0qIGJ1 aWx0aW5nIHNjcmlwdHMKKyAqLworc3RhdGljIHZvaWQKK2luaXRDcmVhdGVGdW50aW9ucyhQR2Nv bm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImNyZWF0aW5nIGZ1bmN0aW9ucy4uLlxuIik7 CisKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwgCisJCSJDUkVBVEUgRlVOQ1RJT04gcGdiZW5jaF90 cGNiX2xpa2UoX2FpZCBpbnQsIF9iaWQgaW50LCBfdGlkIGludCwgX2RlbHRhIGludClcbiIKKwkJ IlJFVFVSTlMgdm9pZFxuIgorCQkiTEFOR1VBR0UgcGxwZ3NxbFxuIgorCQkiQVMgJHBscGdzcWwk XG4iCisJCSJCRUdJTlxuIgorCQkiICAgIFVQREFURSBwZ2JlbmNoX2FjY291bnRzIFNFVCBhYmFs YW5jZSA9IGFiYWxhbmNlICsgX2RlbHRhIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCSIgICAgUEVS Rk9STSBhYmFsYW5jZSBGUk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgYWlkID0gX2FpZDtcbiIK KwkJIiAgICBVUERBVEUgcGdiZW5jaF90ZWxsZXJzIFNFVCB0YmFsYW5jZSA9IHRiYWxhbmNlICsg X2RlbHRhIFdIRVJFIHRpZCA9IF90aWQ7XG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYnJhbmNo ZXMgU0VUIGJiYWxhbmNlID0gYmJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYmlkID0gX2JpZDtcbiIK KwkJIiAgICBJTlNFUlQgSU5UTyBwZ2JlbmNoX2hpc3RvcnkgKHRpZCwgYmlkLCBhaWQsIGRlbHRh LCBtdGltZSkgVkFMVUVTIChfdGlkLCBfYmlkLCBfYWlkLCBfZGVsdGEsIENVUlJFTlRfVElNRVNU QU1QKTtcbiIKKwkJIkVORDtcbiIKKwkJIiRwbHBnc3FsJDtcbiIpOworCWV4ZWN1dGVTdGF0ZW1l bnQoY29uLAorCQkiQ1JFQVRFIEZVTkNUSU9OIHBnYmVuY2hfc2ltcGxlX3VwZGF0ZShfYWlkIGlu dCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KVxuIgorCQkiUkVUVVJOUyB2b2lkXG4i CisJCSJMQU5HVUFHRSBwbHBnc3FsXG4iCisJCSJBUyAkcGxwZ3NxbCRcbiIKKwkJIkJFR0lOXG4i CisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0gYWJhbGFuY2Ug KyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBQRVJGT1JNIGFiYWxhbmNlIEZS T00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkiICAgIElOU0VSVCBJ TlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMg KF90aWQsIF9iaWQsIF9haWQsIF9kZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgorCQkiRU5E O1xuIgorCQkiJHBscGdzcWwkO1xuIik7CisJaWYgKChQUXNlcnZlclZlcnNpb24oY29uKSA+PSAx NDAwMDApKQorCXsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sIAorCQkJIkNSRUFURSBGVU5DVElP TiBwZ2JlbmNoX3RwY2JfbGlrZV9zcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQs IF9kZWx0YSBpbnQpXG4iCisJCQkiUkVUVVJOUyB2b2lkXG4iCisJCQkiQkVHSU4gQVRPTUlDXG4i CisJCQkiICAgIFVQREFURSBwZ2JlbmNoX2FjY291bnRzIFNFVCBhYmFsYW5jZSA9IGFiYWxhbmNl ICsgX2RlbHRhIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIFNFTEVDVCBhYmFsYW5jZSBG Uk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJCSIgICAgVVBEQVRF IHBnYmVuY2hfdGVsbGVycyBTRVQgdGJhbGFuY2UgPSB0YmFsYW5jZSArIF9kZWx0YSBXSEVSRSB0 aWQgPSBfdGlkO1xuIgorCQkJIiAgICBVUERBVEUgcGdiZW5jaF9icmFuY2hlcyBTRVQgYmJhbGFu Y2UgPSBiYmFsYW5jZSArIF9kZWx0YSBXSEVSRSBiaWQgPSBfYmlkO1xuIgorCQkJIiAgICBJTlNF UlQgSU5UTyBwZ2JlbmNoX2hpc3RvcnkgKHRpZCwgYmlkLCBhaWQsIGRlbHRhLCBtdGltZSkgVkFM VUVTIChfdGlkLCBfYmlkLCBfYWlkLCBfZGVsdGEsIENVUlJFTlRfVElNRVNUQU1QKTtcbiIKKwkJ CSJFTkQ7XG4iKTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sCisJCQkiQ1JFQVRFIEZVTkNUSU9O IHBnYmVuY2hfc2ltcGxlX3VwZGF0ZV9zcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBp bnQsIF9kZWx0YSBpbnQpXG4iCisJCQkiUkVUVVJOUyB2b2lkXG4iCisJCQkiQkVHSU4gQVRPTUlD XG4iCisJCQkiICAgIFVQREFURSBwZ2JlbmNoX2FjY291bnRzIFNFVCBhYmFsYW5jZSA9IGFiYWxh bmNlICsgX2RlbHRhIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIFNFTEVDVCBhYmFsYW5j ZSBGUk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJCSIgICAgSU5T RVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZB TFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJ CQkiRU5EO1xuIik7CisJfQorCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAKKwkJIkNSRUFURSBGVU5D VElPTiBwZ2JlbmNoX3RwY2JfbGlrZV9vbGRzcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3Rp ZCBpbnQsIF9kZWx0YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHNx bFxuIgorCQkiQVMgJHNxbCRcbiIKKwkJIi0tIEJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVu Y2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0gYWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0g X2FpZDtcbiIKKwkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdI RVJFIGFpZCA9IF9haWQ7XG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfdGVsbGVycyBTRVQgdGJh bGFuY2UgPSB0YmFsYW5jZSArIF9kZWx0YSBXSEVSRSB0aWQgPSBfdGlkO1xuIgorCQkiICAgIFVQ REFURSBwZ2JlbmNoX2JyYW5jaGVzIFNFVCBiYmFsYW5jZSA9IGJiYWxhbmNlICsgX2RlbHRhIFdI RVJFIGJpZCA9IF9iaWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0 aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2Rl bHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCSItLSBFTkQ7XG4iCisJCSIkc3FsJDtcbiIp OworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkiQ1JFQVRFIEZVTkNUSU9OIHBnYmVuY2hfc2lt cGxlX3VwZGF0ZV9vbGRzcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0 YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHNxbFxuIgorCQkiQVMg JHNxbCRcbiIKKwkJIi0tIEJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMg U0VUIGFiYWxhbmNlID0gYWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJ IiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9h aWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlk LCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5U X1RJTUVTVEFNUCk7XG4iCisJCSItLSBFTkQ7XG4iCisJCSIkc3FsJDtcbiIpOworfQorCisvKgor ICogUmVtb3ZlIG9sZCBwZ2JlbmNoIGZ1bmN0aW9ucywgaWYgYW55IGV4aXN0CisgKi8KK3N0YXRp YyB2b2lkCitpbml0RHJvcEZ1bmN0aW9ucyhQR2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVy ciwgImRyb3BwaW5nIG9sZCBmdW5jdGlvbnMuLi5cbiIpOworCisJZXhlY3V0ZVN0YXRlbWVudChj b24sIAorCQkiRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF90cGNiX2xpa2UoX2FpZCBp bnQsIF9iaWQgaW50LCBfdGlkIGludCwgX2RlbHRhIGludCk7XG4iKTsKKwlleGVjdXRlU3RhdGVt ZW50KGNvbiwKKwkJIkRST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHBnYmVuY2hfc2ltcGxlX3VwZGF0 ZShfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KTtcbiIpOworCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAKKwkJIkRST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHBnYmVuY2hfdHBj Yl9saWtlX3NxbGZ1bmMoX2FpZCBpbnQsIF9iaWQgaW50LCBfdGlkIGludCwgX2RlbHRhIGludCk7 XG4iKTsKKwlleGVjdXRlU3RhdGVtZW50KGNvbiwKKwkJIkRST1AgRlVOQ1RJT04gSUYgRVhJU1RT IHBnYmVuY2hfc2ltcGxlX3VwZGF0ZV9zcWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBp bnQsIF9kZWx0YSBpbnQpO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVudChjb24sIAorCQkiRFJPUCBG VU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF90cGNiX2xpa2Vfb2xkc3FsZnVuYyhfYWlkIGludCwg X2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQo Y29uLAorCQkiRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF9zaW1wbGVfdXBkYXRlX29s ZHNxbGZ1bmMoX2FpZCBpbnQsIF9iaWQgaW50LCBfdGlkIGludCwgX2RlbHRhIGludCk7XG4iKTsK K30KKwogLyoKICAqIENyZWF0ZSBwZ2JlbmNoJ3Mgc3RhbmRhcmQgdGFibGVzCiAgKi8KQEAgLTUz MTEsNiArNTQ2NywxNCBAQCBydW5Jbml0U3RlcHMoY29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVw cykKIAkJCQlvcCA9ICJmb3JlaWduIGtleXMiOwogCQkJCWluaXRDcmVhdGVGS2V5cyhjb24pOwog CQkJCWJyZWFrOworCQkJY2FzZSAnWSc6CisJCQkJb3AgPSAiZHJvcCBmdW5jdGlvbnMiOworCQkJ CWluaXREcm9wRnVuY3Rpb25zKGNvbik7CisJCQkJYnJlYWs7CisJCQljYXNlICd5JzoKKwkJCQlv cCA9ICJjcmVhdGUgZnVuY3Rpb25zIjsKKwkJCQlpbml0Q3JlYXRlRnVudGlvbnMoY29uKTsKKwkJ CQlicmVhazsKIAkJCWNhc2UgJyAnOgogCQkJCWJyZWFrOwkJCS8qIGlnbm9yZSAqLwogCQkJZGVm YXVsdDoKQEAgLTYxNDYsNyArNjMxMCw3IEBAIGxpc3RBdmFpbGFibGVTY3JpcHRzKHZvaWQpCiAK IAlmcHJpbnRmKHN0ZGVyciwgIkF2YWlsYWJsZSBidWlsdGluIHNjcmlwdHM6XG4iKTsKIAlmb3Ig KGkgPSAwOyBpIDwgbGVuZ3Rob2YoYnVpbHRpbl9zY3JpcHQpOyBpKyspCi0JCWZwcmludGYoc3Rk ZXJyLCAiICAlMTNzOiAlc1xuIiwgYnVpbHRpbl9zY3JpcHRbaV0ubmFtZSwgYnVpbHRpbl9zY3Jp cHRbaV0uZGVzYyk7CisJCWZwcmludGYoc3RkZXJyLCAiICAlMjFzOiAlc1xuIiwgYnVpbHRpbl9z Y3JpcHRbaV0ubmFtZSwgYnVpbHRpbl9zY3JpcHRbaV0uZGVzYyk7CiAJZnByaW50ZihzdGRlcnIs ICJcbiIpOwogfQogCkBAIC02NzA1LDYgKzY4NjksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKIAkJeyJ2ZXJib3NlLWVycm9ycyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxNX0sCiAJCXsi ZXhpdC1vbi1hYm9ydCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAxNn0sCiAJCXsiZGVidWciLCBub19h cmd1bWVudCwgTlVMTCwgMTd9LAorCQl7Im5vLWZ1bmN0aW9ucyIsIG5vX2FyZ3VtZW50LCBOVUxM LCAxOH0sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTY3MTIsNiArNjg3Nyw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWJvb2wJCWlzX2luaXRfbW9kZSA9IGZhbHNl OwkvKiBpbml0aWFsaXplIG1vZGU/ICovCiAJY2hhcgkgICAqaW5pdGlhbGl6ZV9zdGVwcyA9IE5V TEw7CiAJYm9vbAkJZm9yZWlnbl9rZXlzID0gZmFsc2U7CisJYm9vbAkJbm9fZnVuY3Rpb25zID0g ZmFsc2U7CiAJYm9vbAkJaXNfbm9fdmFjdXVtID0gZmFsc2U7CiAJYm9vbAkJZG9fdmFjdXVtX2Fj Y291bnRzID0gZmFsc2U7IC8qIHZhY3V1bSBhY2NvdW50cyB0YWJsZT8gKi8KIAlpbnQJCQlvcHRp bmRleDsKQEAgLTcwNTgsNiArNzIyNCwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCWNhc2UgMTc6CQkJLyogZGVidWcgKi8KIAkJCQlwZ19sb2dnaW5nX2luY3JlYXNlX3ZlcmJv c2l0eSgpOwogCQkJCWJyZWFrOworCQkJY2FzZSAxODoJCQkJLyogbm8tZnVuY3Rpb25zICovCisJ CQkJaW5pdGlhbGl6YXRpb25fb3B0aW9uX3NldCA9IHRydWU7CisJCQkJbm9fZnVuY3Rpb25zID0g dHJ1ZTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFk eSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKQEAgLTcxNTUsNiAr NzMyNSwxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkqcCA9ICcgJzsKIAkJ fQogCisJCWlmIChub19mdW5jdGlvbnMpCisJCXsKKwkJCS8qIFJlbW92ZSBjcmVhdGUgZnVuY3Rp b24gc3RlcCBpbiBpbml0aWFsaXplX3N0ZXBzICovCisJCQljaGFyCSAgICpwOworCisJCQl3aGls ZSAoKHAgPSBzdHJjaHIoaW5pdGlhbGl6ZV9zdGVwcywgJ3knKSkgIT0gTlVMTCkKKwkJCQkqcCA9 ICcgJzsKKwkJfQorCiAJCWlmIChmb3JlaWduX2tleXMpCiAJCXsKIAkJCS8qIEFkZCAnZicgdG8g ZW5kIG9mIGluaXRpYWxpemVfc3RlcHMsIGlmIG5vdCBhbHJlYWR5IHRoZXJlICovCi0tIAoyLjUw LjAuNzI3LmdiZjdkYzE4ZmY0LWdvb2cKCg== --0000000000003fedd1063949bf0e--