Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1llm74-0001Mo-Uz for pgsql-odbc@arkaria.postgresql.org; Wed, 26 May 2021 05:29:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1llm73-0006Ff-K6 for pgsql-odbc@arkaria.postgresql.org; Wed, 26 May 2021 05:29:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1llm72-0006FX-Up for pgsql-odbc@lists.postgresql.org; Wed, 26 May 2021 05:29:49 +0000 Received: from mx08-00574e01.pphosted.com ([185.183.31.38]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1llm6u-00045w-5H for pgsql-odbc@lists.postgresql.org; Wed, 26 May 2021 05:29:46 +0000 Received: from pps.filterd (m0214000.ppops.net [127.0.0.1]) by mx08-00574e01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 14Q3KF6v029438 for ; Wed, 26 May 2021 06:29:37 +0100 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by mx08-00574e01.pphosted.com with ESMTP id 38s5kagmfj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Wed, 26 May 2021 06:29:37 +0100 Received: by mail-wm1-f70.google.com with SMTP id r1-20020a05600c35c1b029018ec2043223so51027wmq.7 for ; Tue, 25 May 2021 22:29:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iress-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=O4OEuTMtnyfirogGSijSA+N/R2U7A5JHns9sard770Q=; b=VL/pqAETle8SV1lF6TDqpRgYB868t9faW6OQGWlGYusGo4XBvkzcginQgvrmwVpbwj EIdoGiANdgwBZkFf7tBfMO8i5X0hSOd+s6UgOcqq5n+M+/72GqT+BygWl7xdW2l5IOgv j/BSQClGfLAREo0EODPuc6/6s0C/AZe92n0f9nt6oXhBUR1pcBf7xOFk8yZtDO0GhBGP d4ph+ixOsQKj938OqDkyRzzmRf456JTkqfdtGE4DXqi1DUMeArhzL5Zd4UU7KNZnVn/j HLVJhvS1mMu/+kQ7ba0ikD9vvRczUbZ3BaO032C3GGsEgAFd77MfCSQ76fWku9FN+39x +9zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=O4OEuTMtnyfirogGSijSA+N/R2U7A5JHns9sard770Q=; b=jbK0kF9Gl2I8ElPDVi6fKgLWLBKocr02/4JddbVvK8bnPCP19Qs2uOjdhRnun2B7Wz /3lb2GDHuJnXMvxoK1sKYzfP8ZJH9+4SNvJvMSne4pb3xgZO6RuRxi23e0nLdNfsfkGs 1vg0VZ46SKickH+ZCSqgmUdJ9dwGanrLRQf2CQUdpL2IQngyuOuCfVujby7TqbfVDOpj Ez3Zx6zcDPYzLY574AnxqKH42w8xiFigoA2Fjv83uyteEFaRVIy3Zm0yqg1V9ufNGXXN Igptv8KpAXIgUZ3Xl+GTEdlZaIiADm8X9Po2r4h8yIkg9triz/qYmiMhyssSaeW+oEJ2 Fzng== X-Gm-Message-State: AOAM531fThLw/hX2zuxESQ2nD3CENq2lspIqzIqjOe5BhgdkJFC4cwSN K9SuyokOntz4muFLW8ga1X+SqfYSWFMqbuAKi1ZBx1FpZcQPv9SGibigL6knFh8WeIiLviNUE5g Qkvi3Bi9ZmsHDhXOO/+3cG5up5f0bLCwDAatLcpUTk9R2jGUaC1mBSg== X-Received: by 2002:a05:600c:2056:: with SMTP id p22mr1606435wmg.146.1622006976866; Tue, 25 May 2021 22:29:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEP+fa06RNEMguRDSwmDxoCc64cQhulvAxNoVaTpkWLSSLcQTPoP5YxtQ3+0GBgIEGSRNVHD6LJ+BE X-Received: by 2002:a05:600c:2056:: with SMTP id p22mr1606406wmg.146.1622006976466; Tue, 25 May 2021 22:29:36 -0700 (PDT) Received: from eu1.smtp.exclaimer.net (eu1.smtp.exclaimer.net. [104.40.229.156]) by smtp-relay.gmail.com with ESMTPS id b6sm1146090wrd.88.2021.05.25.22.29.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 May 2021 22:29:36 -0700 (PDT) X-Relaying-Domain: iress.com Received: from mail-wr1-f69.google.com (209.85.221.69) by eu1.smtp.exclaimer.net (104.40.229.156) with Exclaimer Signature Manager ESMTP Proxy eu1.smtp.exclaimer.net (tlsversion=TLS12, tlscipher=TLS_ECDHE_WITH_AES256_SHA1); Wed, 26 May 2021 05:29:36 +0000 X-ExclaimerHostedSignatures-MessageProcessed: true X-ExclaimerProxyLatency: 5641132 X-ExclaimerImprintLatency: 3297789 X-ExclaimerImprintAction: 0b1fcb21ab544a42a45ea923875eae0e Received: by mail-wr1-f69.google.com with SMTP id p11-20020adfc38b0000b0290111f48b8adfso12009020wrf.7 for ; Tue, 25 May 2021 22:29:35 -0700 (PDT) X-Received: by 2002:a5d:46c5:: with SMTP id g5mr31618018wrs.33.1622006975364; Tue, 25 May 2021 22:29:35 -0700 (PDT) X-Received: by 2002:a5d:46c5:: with SMTP id g5mr31618003wrs.33.1622006975087; Tue, 25 May 2021 22:29:35 -0700 (PDT) MIME-Version: 1.0 From: Adrian Grucza Date: Wed, 26 May 2021 15:29:24 +1000 Message-ID: Subject: Named parameter binding support To: pgsql-odbc@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000009309c205c334edeb" X-Proofpoint-GUID: GQiS857EgLl8Y5VzypDA4pRxNkplac1d X-Proofpoint-ORIG-GUID: GQiS857EgLl8Y5VzypDA4pRxNkplac1d List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --0000000000009309c205c334edeb Content-Type: multipart/alternative; boundary="0000000000009309c105c334ede9" --0000000000009309c105c334ede9 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all, I've attached a patch that adds support for named parameter binding when calling procedures or functions. Applications can use SQLSetDescField to specify parameter names, as described at https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/binding-par= ameters-by-name-named-parameters Notes: * Works for input and output parameters * Regression tests enhanced to include binding parameters by name Regards, Adrian Grucza Technical Lead Tel: +61390185800 adrian.grucza@iress.com www.iress.com Level 16, 385 Bourke Street, Melbourne, Victoria, 3000 The contents of this email originated from Iress. For this purpose Iress in= cludes Iress Limited and/or any of its subsidiaries, holding companies and = trading entities. =E2=80=8BIf you have received this email in error please = notify the sender immediately and delete this email. nosig --0000000000009309c105c334ede9 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hi all,

I've attached a patch that adds suppor= t for named parameter binding when calling procedures or functions. Applica= tions can use=C2=A0SQLSetDescField to specify parameter names, as described= at=C2=A0https://docs.microsof= t.com/en-us/sql/odbc/reference/develop-app/binding-parameters-by-name-named= -parameters

Notes:
* Works for input and o= utput parameters
* Regression tests enhanced to inclu= de=C2=A0binding parameters=C2=A0by name

Regards,
3D"iress.com"
Adrian Grucza​  
<= /table><= /table>
Technical Lead
Tel: +61390185800
<= table cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"font-size:0= ;color:#999999;font-style:normal;font-weight:400;white-space:nowrap;">
adrian.grucza@iress.com
www.iress.com
Level 16, 385 Bourke&n= bsp;Street,
 Melbourne, Victoria, 3000
The contents of= this email originated from Iress. For this purpose Iress includes Iress Li= mited and/or any of its subsidiaries, holding companies and trading entitie= s. ​If you have received this email in error please notify the sender= immediately and delete this email. 
nosig
--0000000000009309c105c334ede9-- --0000000000009309c205c334edeb Content-Type: application/octet-stream; name="0001-Named-parameter-binding-support.patch" Content-Disposition: attachment; filename="0001-Named-parameter-binding-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kp50wcwu0 RnJvbSA2NzI4MWUyZDhlNDliMGFlNjZkNmZkZDc4Y2M1Njg0MzkwZmQxMmVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBZHJpYW4gR3J1Y3phIDxhZHJpYW4uZ3J1Y3phQGlyZXNzLmNv bT4KRGF0ZTogV2VkLCAyNiBNYXkgMjAyMSAxNToxNDoxNiArMTAwMApTdWJqZWN0OiBbUEFUQ0hd IE5hbWVkIHBhcmFtZXRlciBiaW5kaW5nIHN1cHBvcnQKCi0tLQogY29udmVydC5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAxMyArKysrLQogcXJlc3VsdC5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAxNiArKysrKysKIHFyZXN1bHQuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwog c3RhdGVtZW50LmMgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrLQogdGVzdC9leHBlY3Rl ZC9vZGJjLWVzY2FwZXMub3V0ICAgfCA0MCArKysrKysrKysrKysrKwogdGVzdC9leHBlY3RlZC9v ZGJjLWVzY2FwZXNfMS5vdXQgfCA0MCArKysrKysrKysrKysrKwogdGVzdC9zcmMvb2RiYy1lc2Nh cGVzLXRlc3QuYyAgICAgfCA4OSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogNyBm aWxlcyBjaGFuZ2VkLCAxODcgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvY29udmVydC5jIGIvY29udmVydC5jCmluZGV4IDI0NTBjZDcuLmQ5NGZkYjYgMTAwNjQ0 Ci0tLSBhL2NvbnZlcnQuYworKysgYi9jb252ZXJ0LmMKQEAgLTQ1MTIsNyArNDUxMiw3IEBAIE1Z TE9HKERFVEFJTF9MT0dfTEVWRUwsICJwYXJhOiVkKCVkLCVkKVxuIiwgcGFyYW1fbnVtYmVyLCBp cGRvcHRzLT5hbGxvY2F0ZWQsIGFwCiAJCXJldHVybiBTUUxfRVJST1I7CiAJfQogCi1NWUxPRyhE RVRBSUxfTE9HX0xFVkVMLCAiaXBhcmE9JXAgcGFyYW1UeXBlPSVkICVkIHByb2NfcmV0dXJuPSVk XG4iLCBpcGFyYSwgaXBhcmEgPyBpcGFyYS0+cGFyYW1UeXBlIDogLTEsIFBHX1ZFUlNJT05fTFQo Y29ubiwgOC4xKSwgcWItPnByb2NfcmV0dXJuKTsKK01ZTE9HKERFVEFJTF9MT0dfTEVWRUwsICJp cGFyYT0lcCBwYXJhbU5hbWU9JXMgcGFyYW1UeXBlPSVkICVkIHByb2NfcmV0dXJuPSVkXG4iLCBp cGFyYSwgaXBhcmEgPyBQUklOVF9OQU1FKGlwYXJhLT5wYXJhbU5hbWUpIDogUFJJTlRfTlVMTCwg aXBhcmEgPyBpcGFyYS0+cGFyYW1UeXBlIDogLTEsIFBHX1ZFUlNJT05fTFQoY29ubiwgOC4xKSwg cWItPnByb2NfcmV0dXJuKTsKIAlpZiAocGFyYW1fbnVtYmVyIDwgcWItPnByb2NfcmV0dXJuKQog CXsKIAkJaWYgKGlwYXJhICYmIFNRTF9QQVJBTV9PVVRQVVQgIT0gaXBhcmEtPnBhcmFtVHlwZSkK QEAgLTQ1NTgsNiArNDU1OCwxNyBAQCBNWUxPRyhERVRBSUxfTE9HX0xFVkVMLCAiaXBhcmE9JXAg cGFyYW1UeXBlPSVkICVkIHByb2NfcmV0dXJuPSVkXG4iLCBpcGFyYSwgaXBhcgogCQkJcmV0dXJu IFNRTF9TVUNDRVNTX1dJVEhfSU5GTzsKIAkJfQogCX0KKwllbHNlCisJeworCQkvKiBGb3IgcHJv Y2VkdXJlcywgdXNlIG5hbWVkIG5vdGF0aW9uIGlmIGEgcGFyYW1ldGVyIG5hbWUgaXMgc3BlY2lm aWVkICovCisJCWlmICghcmVxX2JpbmQgJiYgaXBhcmEgJiYgTkFNRV9JU19WQUxJRChpcGFyYS0+ cGFyYW1OYW1lKSAmJgorCQkJcXAgJiYgcXAtPnN0YXRlbWVudF90eXBlID09IFNUTVRfVFlQRV9Q Uk9DQ0FMTCkKKwkJeworCQkJY2hhcgluYW1lZF9ub3RhdGlvbltDT0xVTU5fTkFNRV9TVE9SQUdF X0xFTiArIDddOworCQkJU1BSSU5URl9GSVhFRChuYW1lZF9ub3RhdGlvbiwgIlwiJXNcIiA6PSAi LCBHRVRfTkFNRShpcGFyYS0+cGFyYW1OYW1lKSk7CisJCQlDVlRfQVBQRU5EX1NUUihxYiwgbmFt ZWRfbm90YXRpb24pOworCQl9CisJfQogCiAJaWYgKCghYXBhcmEgfHwgIWlwYXJhKSAmJiBxYi0+ cGFyYW1fbW9kZSA9PSBSUE1fRkFLRV9QQVJBTVMpCiAJewpkaWZmIC0tZ2l0IGEvcXJlc3VsdC5j IGIvcXJlc3VsdC5jCmluZGV4IGRiNzkwMWYuLmYyZTE4NDIgMTAwNjQ0Ci0tLSBhL3FyZXN1bHQu YworKysgYi9xcmVzdWx0LmMKQEAgLTE0NjYsMyArMTQ2NiwxOSBAQCBNWUxPRyhERVRBSUxfTE9H X0xFVkVMLCAidHVwbGVGaWVsZD0lcFxuIiwgc2VsZi0+dHVwbGVGaWVsZCk7CiAKIAlyZXR1cm4g VFJVRTsKIH0KKworaW50CitRUl9zZWFyY2hfYnlfZmllbGRuYW1lKFFSZXN1bHRDbGFzcyAqc2Vs ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlpbnQJCWk7CisJY2hhcgkqY29sX25hbWU7CisKKwlm b3IgKGkgPSAwOyBpIDwgUVJfTnVtUmVzdWx0Q29scyhzZWxmKTsgaSsrKQorCXsKKwkJY29sX25h bWUgPSBRUl9nZXRfZmllbGRuYW1lKHNlbGYsIGkpOworCQlpZiAoc3RyY21wKGNvbF9uYW1lLCBu YW1lKSA9PSAwKQorCQkJcmV0dXJuIGk7CisJfQorCisJcmV0dXJuIC0xOworfQpkaWZmIC0tZ2l0 IGEvcXJlc3VsdC5oIGIvcXJlc3VsdC5oCmluZGV4IDBmYjgxMmMuLmEwMzcyOTEgMTAwNjQ0Ci0t LSBhL3FyZXN1bHQuaAorKysgYi9xcmVzdWx0LmgKQEAgLTI0OSw2ICsyNDksNyBAQCB2b2lkCQlR Ul9zZXRfY3Vyc29yKFFSZXN1bHRDbGFzcyAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSk7CiBTUUxM RU4JCWdldE50aFZhbGlkKGNvbnN0IFFSZXN1bHRDbGFzcyAqc2VsZiwgU1FMTEVOIHN0YSwgVVdP UkQgb3JpZW50YXRpb24sIFNRTFVMRU4gbnRoLCBTUUxMRU4gKm5lYXJlc3QpOwogU1FMTEVOCQlR Ul9tb3ZlX2N1cnNvcl90b19sYXN0KFFSZXN1bHRDbGFzcyAqc2VsZiwgU3RhdGVtZW50Q2xhc3Mg KnN0bXQpOwogQk9PTAkJUVJfZ2V0X2xhc3RfYm9va21hcmsoY29uc3QgUVJlc3VsdENsYXNzICpz ZWxmLCBJbnQ0IGluZGV4LCBLZXlTZXQgKmtleXNldCk7CitpbnQJCQlRUl9zZWFyY2hfYnlfZmll bGRuYW1lKGNvbnN0IFFSZXN1bHRDbGFzcyAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSk7CiAKICNk ZWZpbmUgUVJfTUFMTE9DX3JldHVybl93aXRoX2Vycm9yKHQsIHRwLCBzLCBhLCBtLCByKSBcCiBk byB7IFwKZGlmZiAtLWdpdCBhL3N0YXRlbWVudC5jIGIvc3RhdGVtZW50LmMKaW5kZXggYTQyZjdj YS4uZTdmODE2ZiAxMDA2NDQKLS0tIGEvc3RhdGVtZW50LmMKKysrIGIvc3RhdGVtZW50LmMKQEAg LTIyNjgsMTIgKzIyNjgsMjIgQEAgTVlMT0coREVUQUlMX0xPR19MRVZFTCwgIiEhU0NfZmV0Y2gg cmV0dXJuID0lZFxuIiwgcmV0KTsKIAkJCQkJbnVtX3AgPSBpcGRvcHRzLT5hbGxvY2F0ZWQ7CiAJ CQkJZm9yIChpID0gMCwgZ2lkeCA9IDA7IGkgPCBudW1fcDsgaSsrKQogCQkJCXsKKwkJCQkJaW50 IGljb2wgPSBnaWR4OwogCQkJCQlpcGFyYSA9IGlwZG9wdHMtPnBhcmFtZXRlcnMgKyBpOwogCQkJ CQlpZiAoaXBhcmEtPnBhcmFtVHlwZSA9PSBTUUxfUEFSQU1fT1VUUFVUIHx8CiAJCQkJCSAgICBp cGFyYS0+cGFyYW1UeXBlID09IFNRTF9QQVJBTV9JTlBVVF9PVVRQVVQpCiAJCQkJCXsKKwkJCQkJ CWlmIChOQU1FX0lTX1ZBTElEKGlwYXJhLT5wYXJhbU5hbWUpKQorCQkJCQkJeworCQkJCQkJCWlj b2wgPSBRUl9zZWFyY2hfYnlfZmllbGRuYW1lKHJob2xkLmZpcnN0LCBHRVRfTkFNRShpcGFyYS0+ cGFyYW1OYW1lKSk7CisJCQkJCQkJaWYgKGljb2wgPCAwKQorCQkJCQkJCXsKKwkJCQkJCQkJU0Nf c2V0X2Vycm9yKHNlbGYsIFNUTVRfRVhFQ19FUlJPUiwgIk5hbWVkIG91dHB1dCBwYXJhbWV0ZXIg ZG9lcyBub3QgZXhpc3QuIiwgZnVuYyk7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCX0KKwkJCQkJ CX0KIAkJCQkJCWFwYXJhID0gYXBkb3B0cy0+cGFyYW1ldGVycyArIGk7Ci0JCQkJCQlyZXQgPSBQ R0FQSV9HZXREYXRhKGhzdG10LCBnaWR4ICsgMSwgYXBhcmEtPkNUeXBlLCBhcGFyYS0+YnVmZmVy ICsgb2Zmc2V0LCBhcGFyYS0+YnVmbGVuLCBhcGFyYS0+dXNlZCA/IExFTkFERFJfU0hJRlQoYXBh cmEtPnVzZWQsIG9mZnNldCkgOiBOVUxMKTsKKwkJCQkJCXJldCA9IFBHQVBJX0dldERhdGEoaHN0 bXQsIGljb2wgKyAxLCBhcGFyYS0+Q1R5cGUsIGFwYXJhLT5idWZmZXIgKyBvZmZzZXQsIGFwYXJh LT5idWZsZW4sIGFwYXJhLT51c2VkID8gTEVOQUREUl9TSElGVChhcGFyYS0+dXNlZCwgb2Zmc2V0 KSA6IE5VTEwpOwogCQkJCQkJaWYgKCFTUUxfU1VDQ0VFREVEKHJldCkpCiAJCQkJCQl7CiAJCQkJ CQkJU0Nfc2V0X2Vycm9yKHNlbGYsIFNUTVRfRVhFQ19FUlJPUiwgIkdldERhdGEgdG8gUHJvY2Vk dXJlIHJldHVybiBmYWlsZWQuIiwgZnVuYyk7CmRpZmYgLS1naXQgYS90ZXN0L2V4cGVjdGVkL29k YmMtZXNjYXBlcy5vdXQgYi90ZXN0L2V4cGVjdGVkL29kYmMtZXNjYXBlcy5vdXQKaW5kZXggNjRm ZDkyNy4uN2U2YzM5MSAxMDA2NDQKLS0tIGEvdGVzdC9leHBlY3RlZC9vZGJjLWVzY2FwZXMub3V0 CisrKyBiL3Rlc3QvZXhwZWN0ZWQvb2RiYy1lc2NhcGVzLm91dApAQCAtNzEsNiArNzEsMjYgQEAg UmVzdWx0IHNldDoKIDYuOAk3CTIwMTctMDItMjQgMTE6MzQ6NDYKIE9VVCBwYXJhbXM6IDYuOCA6 IDcgOiAyMDE3LTAyLTI0IDExOjM0OjQ2CiAKK1F1ZXJ5OiB7Y2FsbCBhX2JfY19kX2UoPywgPywg PywgPywgPyl9CitQYXJhbSAxIChlKSBpcyBhbiBPVVQgcGFyYW1ldGVyCitQYXJhbSAyIChhKSBp cyBhbiBPVVQgcGFyYW1ldGVyCitQYXJhbSAzIChiKTogMjAxNy0wMi0yMyAxMTozNDo0NgorUGFy YW0gNCAoYykgaXMgYW4gSS1PIHBhcmFtZXRlcgorUGFyYW0gNSAoZCk6IDMuNAorUmVzdWx0IHNl dDoKKzYuOAk3CTIwMTctMDItMjQgMTE6MzQ6NDYKK09VVCBwYXJhbXM6IDYuOCA6IDcgOiAyMDE3 LTAyLTI0IDExOjM0OjQ2CisKK1F1ZXJ5OiB7Y2FsbCBhX2JfY19kX2UoPywgPywgPywgPywgPyl9 CitQYXJhbSAxIChiKTogMjAxNy0wMi0yMyAxMTozNDo0NgorUGFyYW0gMiAoYykgaXMgYW4gSS1P IHBhcmFtZXRlcgorUGFyYW0gMyAoZCk6IDMuNAorUGFyYW0gNCAoZSkgaXMgYW4gT1VUIHBhcmFt ZXRlcgorUGFyYW0gNSAoYSkgaXMgYW4gT1VUIHBhcmFtZXRlcgorUmVzdWx0IHNldDoKKzYuOAk3 CTIwMTctMDItMjQgMTE6MzQ6NDYKK09VVCBwYXJhbXM6IDYuOCA6IDcgOiAyMDE3LTAyLTI0IDEx OjM0OjQ2CisKIC0tIFRFU1QgdXNpbmcgU1FMRXhlY0RpcmVjdAogCiBRdWVyeTogU0VMRUNUIHtm biBDT05DQVQoPywgPykgfQpAQCAtMTQxLDQgKzE2MSwyNCBAQCBQYXJhbSA1IGlzIGFuIE9VVCBw YXJhbWV0ZXIKIFJlc3VsdCBzZXQ6CiA2LjgJNwkyMDE3LTAyLTI0IDExOjM0OjQ2CiBPVVQgcGFy YW1zOiA2LjggOiA3IDogMjAxNy0wMi0yNCAxMTozNDo0NgorCitRdWVyeToge2NhbGwgYV9iX2Nf ZF9lKD8sID8sID8sID8sID8pfQorUGFyYW0gMSAoZSkgaXMgYW4gT1VUIHBhcmFtZXRlcgorUGFy YW0gMiAoYSkgaXMgYW4gT1VUIHBhcmFtZXRlcgorUGFyYW0gMyAoYik6IDIwMTctMDItMjMgMTE6 MzQ6NDYKK1BhcmFtIDQgKGMpIGlzIGFuIEktTyBwYXJhbWV0ZXIKK1BhcmFtIDUgKGQpOiAzLjQK K1Jlc3VsdCBzZXQ6Cis2LjgJNwkyMDE3LTAyLTI0IDExOjM0OjQ2CitPVVQgcGFyYW1zOiA2Ljgg OiA3IDogMjAxNy0wMi0yNCAxMTozNDo0NgorCitRdWVyeToge2NhbGwgYV9iX2NfZF9lKD8sID8s ID8sID8sID8pfQorUGFyYW0gMSAoYik6IDIwMTctMDItMjMgMTE6MzQ6NDYKK1BhcmFtIDIgKGMp IGlzIGFuIEktTyBwYXJhbWV0ZXIKK1BhcmFtIDMgKGQpOiAzLjQKK1BhcmFtIDQgKGUpIGlzIGFu IE9VVCBwYXJhbWV0ZXIKK1BhcmFtIDUgKGEpIGlzIGFuIE9VVCBwYXJhbWV0ZXIKK1Jlc3VsdCBz ZXQ6Cis2LjgJNwkyMDE3LTAyLTI0IDExOjM0OjQ2CitPVVQgcGFyYW1zOiA2LjggOiA3IDogMjAx Ny0wMi0yNCAxMTozNDo0NgogZGlzY29ubmVjdGluZwpkaWZmIC0tZ2l0IGEvdGVzdC9leHBlY3Rl ZC9vZGJjLWVzY2FwZXNfMS5vdXQgYi90ZXN0L2V4cGVjdGVkL29kYmMtZXNjYXBlc18xLm91dApp bmRleCAwNDUyYWRjLi5mZDYwY2M2IDEwMDY0NAotLS0gYS90ZXN0L2V4cGVjdGVkL29kYmMtZXNj YXBlc18xLm91dAorKysgYi90ZXN0L2V4cGVjdGVkL29kYmMtZXNjYXBlc18xLm91dApAQCAtNzEs NiArNzEsMjYgQEAgUmVzdWx0IHNldDoKIDYuNzk5OTk5OTk5OTk5OTk5OAk3CTIwMTctMDItMjQg MTE6MzQ6NDYKIE9VVCBwYXJhbXM6IDYuNzk5OTk5OTk5OTk5OTk5OCA6IDcgOiAyMDE3LTAyLTI0 IDExOjM0OjQ2CiAKK1F1ZXJ5OiB7Y2FsbCBhX2JfY19kX2UoPywgPywgPywgPywgPyl9CitQYXJh bSAxIChlKSBpcyBhbiBPVVQgcGFyYW1ldGVyCitQYXJhbSAyIChhKSBpcyBhbiBPVVQgcGFyYW1l dGVyCitQYXJhbSAzIChiKTogMjAxNy0wMi0yMyAxMTozNDo0NgorUGFyYW0gNCAoYykgaXMgYW4g SS1PIHBhcmFtZXRlcgorUGFyYW0gNSAoZCk6IDMuNAorUmVzdWx0IHNldDoKKzYuNzk5OTk5OTk5 OTk5OTk5OAk3CTIwMTctMDItMjQgMTE6MzQ6NDYKK09VVCBwYXJhbXM6IDYuNzk5OTk5OTk5OTk5 OTk5OCA6IDcgOiAyMDE3LTAyLTI0IDExOjM0OjQ2CisKK1F1ZXJ5OiB7Y2FsbCBhX2JfY19kX2Uo PywgPywgPywgPywgPyl9CitQYXJhbSAxIChiKTogMjAxNy0wMi0yMyAxMTozNDo0NgorUGFyYW0g MiAoYykgaXMgYW4gSS1PIHBhcmFtZXRlcgorUGFyYW0gMyAoZCk6IDMuNAorUGFyYW0gNCAoZSkg aXMgYW4gT1VUIHBhcmFtZXRlcgorUGFyYW0gNSAoYSkgaXMgYW4gT1VUIHBhcmFtZXRlcgorUmVz dWx0IHNldDoKKzYuNzk5OTk5OTk5OTk5OTk5OAk3CTIwMTctMDItMjQgMTE6MzQ6NDYKK09VVCBw YXJhbXM6IDYuNzk5OTk5OTk5OTk5OTk5OCA6IDcgOiAyMDE3LTAyLTI0IDExOjM0OjQ2CisKIC0t IFRFU1QgdXNpbmcgU1FMRXhlY0RpcmVjdAogCiBRdWVyeTogU0VMRUNUIHtmbiBDT05DQVQoPywg PykgfQpAQCAtMTQxLDQgKzE2MSwyNCBAQCBQYXJhbSA1IGlzIGFuIE9VVCBwYXJhbWV0ZXIKIFJl c3VsdCBzZXQ6CiA2Ljc5OTk5OTk5OTk5OTk5OTgJNwkyMDE3LTAyLTI0IDExOjM0OjQ2CiBPVVQg cGFyYW1zOiA2Ljc5OTk5OTk5OTk5OTk5OTggOiA3IDogMjAxNy0wMi0yNCAxMTozNDo0NgorCitR dWVyeToge2NhbGwgYV9iX2NfZF9lKD8sID8sID8sID8sID8pfQorUGFyYW0gMSAoZSkgaXMgYW4g T1VUIHBhcmFtZXRlcgorUGFyYW0gMiAoYSkgaXMgYW4gT1VUIHBhcmFtZXRlcgorUGFyYW0gMyAo Yik6IDIwMTctMDItMjMgMTE6MzQ6NDYKK1BhcmFtIDQgKGMpIGlzIGFuIEktTyBwYXJhbWV0ZXIK K1BhcmFtIDUgKGQpOiAzLjQKK1Jlc3VsdCBzZXQ6Cis2Ljc5OTk5OTk5OTk5OTk5OTgJNwkyMDE3 LTAyLTI0IDExOjM0OjQ2CitPVVQgcGFyYW1zOiA2Ljc5OTk5OTk5OTk5OTk5OTggOiA3IDogMjAx Ny0wMi0yNCAxMTozNDo0NgorCitRdWVyeToge2NhbGwgYV9iX2NfZF9lKD8sID8sID8sID8sID8p fQorUGFyYW0gMSAoYik6IDIwMTctMDItMjMgMTE6MzQ6NDYKK1BhcmFtIDIgKGMpIGlzIGFuIEkt TyBwYXJhbWV0ZXIKK1BhcmFtIDMgKGQpOiAzLjQKK1BhcmFtIDQgKGUpIGlzIGFuIE9VVCBwYXJh bWV0ZXIKK1BhcmFtIDUgKGEpIGlzIGFuIE9VVCBwYXJhbWV0ZXIKK1Jlc3VsdCBzZXQ6Cis2Ljc5 OTk5OTk5OTk5OTk5OTgJNwkyMDE3LTAyLTI0IDExOjM0OjQ2CitPVVQgcGFyYW1zOiA2Ljc5OTk5 OTk5OTk5OTk5OTggOiA3IDogMjAxNy0wMi0yNCAxMTozNDo0NgogZGlzY29ubmVjdGluZwpkaWZm IC0tZ2l0IGEvdGVzdC9zcmMvb2RiYy1lc2NhcGVzLXRlc3QuYyBiL3Rlc3Qvc3JjL29kYmMtZXNj YXBlcy10ZXN0LmMKaW5kZXggZDJlMmJhYS4uMjRhMzA1NiAxMDA2NDQKLS0tIGEvdGVzdC9zcmMv b2RiYy1lc2NhcGVzLXRlc3QuYworKysgYi90ZXN0L3NyYy9vZGJjLWVzY2FwZXMtdGVzdC5jCkBA IC05LDkgKzksMTggQEAKICNpbmNsdWRlICJjb21tb24uaCIKIAogCitzdGF0aWMgdm9pZAorc2V0 UGFyYW1OYW1lKEhTVE1UIGhzdG10LCBpbnQgcGFyYW1ubywgY29uc3QgY2hhciAqcGFyYW1uYW1l KQoreworCVNRTEhERVNDIAloSXBkID0gTlVMTDsKKworCVNRTEdldFN0bXRBdHRyKGhzdG10LCBT UUxfQVRUUl9JTVBfUEFSQU1fREVTQywgJmhJcGQsIDAsIDApOworCVNRTFNldERlc2NGaWVsZCho SXBkLCBwYXJhbW5vLCBTUUxfREVTQ19OQU1FLCBwYXJhbW5hbWUsIFNRTF9OVFMpOworfQorCiAv KiBiaW5kIHN0cmluZyBwYXJhbSBhcyBDSEFSICAqLwogc3RhdGljIHZvaWQKLWJpbmRQYXJhbVN0 cmluZyhIU1RNVCBoc3RtdCwgaW50IHBhcmFtbm8sIGNoYXIgKnN0cikKK2JpbmRQYXJhbVN0cmlu ZyhIU1RNVCBoc3RtdCwgaW50IHBhcmFtbm8sIGNvbnN0IGNoYXIgKnBhcmFtbmFtZSwgY2hhciAq c3RyKQogewogCVNRTFJFVFVSTglyYzsKIAlzdGF0aWMgU1FMTEVOCQljYlBhcmFtc1sxMF07CkBA IC0yNiwxMSArMzUsMTYgQEAgYmluZFBhcmFtU3RyaW5nKEhTVE1UIGhzdG10LCBpbnQgcGFyYW1u bywgY2hhciAqc3RyKQogCQkJCQkJICAwLAkJCS8qIGJ1ZmZlciBsZW4gKi8KIAkJCQkJCSAgJmNi UGFyYW1zW3BhcmFtbm9dCQkvKiBTdHJMZW5fb3JfSW5kUHRyICovKTsKIAlDSEVDS19TVE1UX1JF U1VMVChyYywgIlNRTEJpbmRQYXJhbWV0ZXIgZmFpbGVkIiwgaHN0bXQpOwotCXByaW50ZigiUGFy YW0gJWQ6ICVzXG4iLCBwYXJhbW5vLCBzdHIpOworCXNldFBhcmFtTmFtZShoc3RtdCwgcGFyYW1u bywgcGFyYW1uYW1lKTsKKworCWlmIChwYXJhbW5hbWUpCisJCXByaW50ZigiUGFyYW0gJWQgKCVz KTogJXNcbiIsIHBhcmFtbm8sIHBhcmFtbmFtZSwgc3RyKTsKKwllbHNlCisJCXByaW50ZigiUGFy YW0gJWQ6ICVzXG4iLCBwYXJhbW5vLCBzdHIpOwogfQogCiBzdGF0aWMgdm9pZAotYmluZE91dFBh cmFtU3RyaW5nKEhTVE1UIGhzdG10LCBpbnQgcGFyYW1ubywgY2hhciAqb3V0YnVmLCBpbnQgb3V0 YnVmbGVuLCBCT09MIGlub3V0KQorYmluZE91dFBhcmFtU3RyaW5nKEhTVE1UIGhzdG10LCBpbnQg cGFyYW1ubywgY29uc3QgY2hhciAqcGFyYW1uYW1lLCBjaGFyICpvdXRidWYsIGludCBvdXRidWZs ZW4sIEJPT0wgaW5vdXQpCiB7CiAJU1FMUkVUVVJOCXJjOwogCXN0YXRpYyBTUUxMRU4JCWNiUGFy YW1zWzEwXTsKQEAgLTQ1LDcgKzU5LDEyIEBAIGJpbmRPdXRQYXJhbVN0cmluZyhIU1RNVCBoc3Rt dCwgaW50IHBhcmFtbm8sIGNoYXIgKm91dGJ1ZiwgaW50IG91dGJ1ZmxlbiwgQk9PTCBpCiAJCQkJ CQkgIG91dGJ1ZmxlbiwJLyogYnVmZmVyIGxlbiAqLwogCQkJCQkJICAmY2JQYXJhbXNbcGFyYW1u b10JCS8qIFN0ckxlbl9vcl9JbmRQdHIgKi8pOwogCUNIRUNLX1NUTVRfUkVTVUxUKHJjLCAiU1FM QmluZFBhcmFtZXRlciBmYWlsZWQiLCBoc3RtdCk7Ci0JcHJpbnRmKCJQYXJhbSAlZCBpcyBhbiAl cyBwYXJhbWV0ZXJcbiIsIHBhcmFtbm8sIGlub3V0ID8gIkktTyI6ICJPVVQiKTsKKwlzZXRQYXJh bU5hbWUoaHN0bXQsIHBhcmFtbm8sIHBhcmFtbmFtZSk7CisKKwlpZiAocGFyYW1uYW1lKQorCQlw cmludGYoIlBhcmFtICVkICglcykgaXMgYW4gJXMgcGFyYW1ldGVyXG4iLCBwYXJhbW5vLCBwYXJh bW5hbWUsIGlub3V0ID8gIkktTyI6ICJPVVQiKTsKKwllbHNlCisJCXByaW50ZigiUGFyYW0gJWQg aXMgYW4gJXMgcGFyYW1ldGVyXG4iLCBwYXJhbW5vLCBpbm91dCA/ICJJLU8iOiAiT1VUIik7CiB9 CiAKIHN0YXRpYyBCT09MCWV4ZWNEaXJlY3RNb2RlID0gMDsKQEAgLTkwLDIxICsxMDksMjEgQEAg c3RhdGljIHZvaWQJZXNjYXBlX3Rlc3QoSFNUTVQgaHN0bXQpCiAKIAkvKiBDT05DQVQgKi8KIAlw cmVwYXJlUXVlcnkoaHN0bXQsICJTRUxFQ1Qge2ZuIENPTkNBVCg/LCA/KSB9Iik7Ci0JYmluZFBh cmFtU3RyaW5nKGhzdG10LCAxLCAiZm9vIik7Ci0JYmluZFBhcmFtU3RyaW5nKGhzdG10LCAyLCAi YmFyIik7CisJYmluZFBhcmFtU3RyaW5nKGhzdG10LCAxLCBOVUxMLCAiZm9vIik7CisJYmluZFBh cmFtU3RyaW5nKGhzdG10LCAyLCBOVUxMLCAiYmFyIik7CiAJZXhlY3V0ZVF1ZXJ5KGhzdG10KTsK IAogCS8qIExPQ0FURSAqLwogCXByZXBhcmVRdWVyeShoc3RtdCwgIlNFTEVDVCB7Zm4gTE9DQVRF KD8sID8sIDIpIH0iKTsKLQliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDEsICJuZWVkbGUiKTsKLQli aW5kUGFyYW1TdHJpbmcoaHN0bXQsIDIsICJ0aGlzIGlzIGEgbmVlZGxlIGluIGFuIG9sJyBoYXlz dGFjayIpOworCWJpbmRQYXJhbVN0cmluZyhoc3RtdCwgMSwgTlVMTCwgIm5lZWRsZSIpOworCWJp bmRQYXJhbVN0cmluZyhoc3RtdCwgMiwgTlVMTCwgInRoaXMgaXMgYSBuZWVkbGUgaW4gYW4gb2wn IGhheXN0YWNrIik7CiAJZXhlY3V0ZVF1ZXJ5KGhzdG10KTsKIAogCS8qIExPQ0FURShTVUJTVFJJ TkcsIFNVQlNUUklORykgKi8KIAlwcmVwYXJlUXVlcnkoaHN0bXQsICJTRUxFQ1Qge2ZuIExPQ0FU RSh7Zm4gU1VCU1RSSU5HKD8sIDIsIDQpfSwge2ZuIFNVQlNUUklORyg/LCAzKX0sIDMpIH0iKTsK IAkvKiB1c2luZyB0aGUgc2FtZSBwYXJhbWV0ZXJzICovCi0JYmluZFBhcmFtU3RyaW5nKGhzdG10 LCAxLCAibmVlZGxlIik7Ci0JYmluZFBhcmFtU3RyaW5nKGhzdG10LCAyLCAidGhpcyBpcyBhIG5l ZWRsZSBpbiBhbiBvbCcgaGF5c3RhY2siKTsKKwliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDEsIE5V TEwsICJuZWVkbGUiKTsKKwliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDIsIE5VTEwsICJ0aGlzIGlz IGEgbmVlZGxlIGluIGFuIG9sJyBoYXlzdGFjayIpOwogCWV4ZWN1dGVRdWVyeShoc3RtdCk7CiAK IAkvKiBTUEFDRSAqLwpAQCAtMTE0LDI2ICsxMzMsMjYgQEAgc3RhdGljIHZvaWQJZXNjYXBlX3Rl c3QoSFNUTVQgaHN0bXQpCiAJLyoqKiogQ0FMTCBlc2NhcGVzICoqKiovCiAKIAlwcmVwYXJlUXVl cnkoaHN0bXQsICJ7IGNhbGwgbGVuZ3RoKD8pIH0iKTsKLQliaW5kUGFyYW1TdHJpbmcoaHN0bXQs IDEsICJmb29iYXIiKTsKKwliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDEsIE5VTEwsICJmb29iYXIi KTsKIAlleGVjdXRlUXVlcnkoaHN0bXQpOwogCiAJcHJlcGFyZVF1ZXJ5KGhzdG10LCAieyBjYWxs IHJpZ2h0KD8sID8pIH0iKTsKLQliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDEsICJmb29iYXIiKTsK LQliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDIsICIzIik7CisJYmluZFBhcmFtU3RyaW5nKGhzdG10 LCAxLCBOVUxMLCAiZm9vYmFyIik7CisJYmluZFBhcmFtU3RyaW5nKGhzdG10LCAyLCBOVUxMLCAi MyIpOwogCWV4ZWN1dGVRdWVyeShoc3RtdCk7CiAKIAlwcmVwYXJlUXVlcnkoaHN0bXQsICJ7ID8g PSBjYWxsIGxlbmd0aCgnZm9vJykgfSIpOwogCW1lbXNldChvdXRidWYxLCAwLCBzaXplb2Yob3V0 YnVmMSkpOwotCWJpbmRPdXRQYXJhbVN0cmluZyhoc3RtdCwgMSwgb3V0YnVmMSwgc2l6ZW9mKG91 dGJ1ZjEpIC0gMSwgMCk7CisJYmluZE91dFBhcmFtU3RyaW5nKGhzdG10LCAxLCBOVUxMLCBvdXRi dWYxLCBzaXplb2Yob3V0YnVmMSkgLSAxLCAwKTsKIAlleGVjdXRlUXVlcnkoaHN0bXQpOwogCXBy aW50ZigiT1VUIHBhcmFtOiAlc1xuIiwgb3V0YnVmMSk7CiAKIAkvKiBJdCdzIHByZWZlcmFibGUg dG8gY2FzdCBWQVJJQURJQyBhbnkgZmllbGRzICovCiAJcHJlcGFyZVF1ZXJ5KGhzdG10LCAieyA/ ID0gY2FsbCBjb25jYXQoPzo6dGV4dCwgPzo6dGV4dCkgfSIpOwogCW1lbXNldChvdXRidWYxLCAw LCBzaXplb2Yob3V0YnVmMSkpOwotCWJpbmRPdXRQYXJhbVN0cmluZyhoc3RtdCwgMSwgb3V0YnVm MSwgc2l6ZW9mKG91dGJ1ZjEpIC0gMSwgMCk7Ci0JYmluZFBhcmFtU3RyaW5nKGhzdG10LCAyLCAi Zm9vIik7Ci0JYmluZFBhcmFtU3RyaW5nKGhzdG10LCAzLCAiYmFyIik7CisJYmluZE91dFBhcmFt U3RyaW5nKGhzdG10LCAxLCBOVUxMLCBvdXRidWYxLCBzaXplb2Yob3V0YnVmMSkgLSAxLCAwKTsK KwliaW5kUGFyYW1TdHJpbmcoaHN0bXQsIDIsIE5VTEwsICJmb28iKTsKKwliaW5kUGFyYW1TdHJp bmcoaHN0bXQsIDMsIE5VTEwsICJiYXIiKTsKIAlpZiAodmFyaWFkaWNfdGVzdF9zdWNjZXNzKQog CQlleGVjdXRlUXVlcnkoaHN0bXQpOwogCWVsc2UKQEAgLTE1NCwxMyArMTczLDM5IEBAIHN0YXRp YyB2b2lkCWVzY2FwZV90ZXN0KEhTVE1UIGhzdG10KQogCS8qKioqIGNhbGwgcHJvY2VkdXJlIHdp dGggb3V0IGFuZCBpLW8gcGFyYW1ldGVycyAqKioqLwogCXByZXBhcmVRdWVyeShoc3RtdCwgIntj YWxsIGFfYl9jX2RfZSg/LCA/LCA/LCA/LCA/KX0iKTsKIAltZW1zZXQob3V0YnVmMSwgMCwgc2l6 ZW9mKG91dGJ1ZjEpKTsKLQliaW5kT3V0UGFyYW1TdHJpbmcoaHN0bXQsIDEsIG91dGJ1ZjEsIHNp emVvZihvdXRidWYxKSAtIDEsIDApOwotCWJpbmRQYXJhbVN0cmluZyhoc3RtdCwgMiwgIjIwMTct MDItMjMgMTE6MzQ6NDYiKTsKKwliaW5kT3V0UGFyYW1TdHJpbmcoaHN0bXQsIDEsIE5VTEwsIG91 dGJ1ZjEsIHNpemVvZihvdXRidWYxKSAtIDEsIDApOworCWJpbmRQYXJhbVN0cmluZyhoc3RtdCwg MiwgTlVMTCwgIjIwMTctMDItMjMgMTE6MzQ6NDYiKTsKIAlzdHJjcHkob3V0YnVmMywgIjQiKTsK LQliaW5kT3V0UGFyYW1TdHJpbmcoaHN0bXQsIDMsIG91dGJ1ZjMsIHNpemVvZihvdXRidWYzKSAt IDEsIDEpOwotCWJpbmRQYXJhbVN0cmluZyhoc3RtdCwgNCwgIjMuNCIpOworCWJpbmRPdXRQYXJh bVN0cmluZyhoc3RtdCwgMywgTlVMTCwgb3V0YnVmMywgc2l6ZW9mKG91dGJ1ZjMpIC0gMSwgMSk7 CisJYmluZFBhcmFtU3RyaW5nKGhzdG10LCA0LCBOVUxMLCAiMy40Iik7CiAJbWVtc2V0KG91dGJ1 ZjUsIDAsIHNpemVvZihvdXRidWY1KSk7Ci0JYmluZE91dFBhcmFtU3RyaW5nKGhzdG10LCA1LCBv dXRidWY1LCBzaXplb2Yob3V0YnVmNSkgLSAxLCAwKTsKKwliaW5kT3V0UGFyYW1TdHJpbmcoaHN0 bXQsIDUsIE5VTEwsIG91dGJ1ZjUsIHNpemVvZihvdXRidWY1KSAtIDEsIDApOworCWV4ZWN1dGVR dWVyeShoc3RtdCk7CisJcHJpbnRmKCJPVVQgcGFyYW1zOiAlcyA6ICVzIDogJXNcbiIsIG91dGJ1 ZjEsIG91dGJ1ZjMsIG91dGJ1ZjUpOworCisJLyoqKiogY2FsbCBwcm9jZWR1cmUgcGFyYW1ldGVy cyBieSBuYW1lIChlLGEsYixjLGQpICoqKiovCisJcHJlcGFyZVF1ZXJ5KGhzdG10LCAie2NhbGwg YV9iX2NfZF9lKD8sID8sID8sID8sID8pfSIpOworCW1lbXNldChvdXRidWY1LCAwLCBzaXplb2Yo b3V0YnVmNSkpOworCWJpbmRPdXRQYXJhbVN0cmluZyhoc3RtdCwgMSwgImUiLCBvdXRidWY1LCBz aXplb2Yob3V0YnVmNSkgLSAxLCAwKTsKKwltZW1zZXQob3V0YnVmMSwgMCwgc2l6ZW9mKG91dGJ1 ZjEpKTsKKwliaW5kT3V0UGFyYW1TdHJpbmcoaHN0bXQsIDIsICJhIiwgb3V0YnVmMSwgc2l6ZW9m KG91dGJ1ZjEpIC0gMSwgMCk7CisJYmluZFBhcmFtU3RyaW5nKGhzdG10LCAzLCAiYiIsICIyMDE3 LTAyLTIzIDExOjM0OjQ2Iik7CisJc3RyY3B5KG91dGJ1ZjMsICI0Iik7CisJYmluZE91dFBhcmFt U3RyaW5nKGhzdG10LCA0LCAiYyIsIG91dGJ1ZjMsIHNpemVvZihvdXRidWYzKSAtIDEsIDEpOwor CWJpbmRQYXJhbVN0cmluZyhoc3RtdCwgNSwgImQiLCAiMy40Iik7CisJZXhlY3V0ZVF1ZXJ5KGhz dG10KTsKKwlwcmludGYoIk9VVCBwYXJhbXM6ICVzIDogJXMgOiAlc1xuIiwgb3V0YnVmMSwgb3V0 YnVmMywgb3V0YnVmNSk7CisKKwkvKioqKiBjYWxsIHByb2NlZHVyZSBwYXJhbWV0ZXJzIGJ5IG5h bWUgKGIsYyxkLGUsYSkgKioqKi8KKwlwcmVwYXJlUXVlcnkoaHN0bXQsICJ7Y2FsbCBhX2JfY19k X2UoPywgPywgPywgPywgPyl9Iik7CisJYmluZFBhcmFtU3RyaW5nKGhzdG10LCAxLCAiYiIsICIy MDE3LTAyLTIzIDExOjM0OjQ2Iik7CisJc3RyY3B5KG91dGJ1ZjMsICI0Iik7CisJYmluZE91dFBh cmFtU3RyaW5nKGhzdG10LCAyLCAiYyIsIG91dGJ1ZjMsIHNpemVvZihvdXRidWYzKSAtIDEsIDEp OworCWJpbmRQYXJhbVN0cmluZyhoc3RtdCwgMywgImQiLCAiMy40Iik7CisJbWVtc2V0KG91dGJ1 ZjUsIDAsIHNpemVvZihvdXRidWY1KSk7CisJYmluZE91dFBhcmFtU3RyaW5nKGhzdG10LCA0LCAi ZSIsIG91dGJ1ZjUsIHNpemVvZihvdXRidWY1KSAtIDEsIDApOworCW1lbXNldChvdXRidWYxLCAw LCBzaXplb2Yob3V0YnVmMSkpOworCWJpbmRPdXRQYXJhbVN0cmluZyhoc3RtdCwgNSwgImEiLCBv dXRidWYxLCBzaXplb2Yob3V0YnVmMSkgLSAxLCAwKTsKIAlleGVjdXRlUXVlcnkoaHN0bXQpOwog CXByaW50ZigiT1VUIHBhcmFtczogJXMgOiAlcyA6ICVzXG4iLCBvdXRidWYxLCBvdXRidWYzLCBv dXRidWY1KTsKIH0KLS0gCjIuMzEuMS53aW5kb3dzLjEKCg== --0000000000009309c205c334edeb--