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 1stqgk-0029Nx-PK for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Sep 2024 15:45:55 +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 1stqgk-00AJcX-3b for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Sep 2024 15:45:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1stqgj-00AJXh-MG for pgsql-hackers@lists.postgresql.org; Thu, 26 Sep 2024 15:45:53 +0000 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1stqgd-001DKo-J5 for pgsql-hackers@postgresql.org; Thu, 26 Sep 2024 15:45:53 +0000 Received: by mail-pg1-x541.google.com with SMTP id 41be03b00d2f7-7db1f13b14aso859053a12.1 for ; Thu, 26 Sep 2024 08:45:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727365547; x=1727970347; 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=SMKR4BWWVUwf8/8UA8fqgO4L4SRN0cLcD0psMSviTN0=; b=ke8EF7ohb5XQEOqX6D4aWlkrPrhEQD9ZePq9sXO+CMMqdZKM6R5RpokwGrCI3119Z3 GVrqaYMNiJPV64hs7rkgMTHH2INtqUAUuG2zKIp6naLhRdOt3YHl6vAKl4qp48L4lRss 3tqO8cM50gaicRNxyc6HdnnwXTxmldJp+Mpnub8AUlMZUpozAdqdRjPQSXxMuYdgzukW ZKnbVmAYmQ74bX3YOQHhh4uUC5uXuTBzpn3mtdA30O5U+Zsr64UpJzv3VJ4kcjQijXsR 0txsVmAbvc9YfJFlFE/+NB7G+RCQsdrfsNTtlsYHwiljnyV6ta1dQtuTy7pUJ5Sxl6g2 y+fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727365547; x=1727970347; 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=SMKR4BWWVUwf8/8UA8fqgO4L4SRN0cLcD0psMSviTN0=; b=YXZdUlVIyCEwIXoWmRupHc4AFgkibvHb/AKlKWTwYJgOIsZt9Lz/vRdInFZ7kORSOX IT2VtyfYaAcAYnoogJvhOZk403BlOERTba7ey0gqjNrHLu0r2d3N6omhdGn8E9PNUTjf H1VD9osVTQ1P7XX4f456nanIKlCBxzhu6sG5cx/hUvXgUYLKrnzTMAZe+mnHK1xmvfav BqufD825c12wYLNw7s5g3SOiDTrULIEDInjCZ2N63Brs5d5w8ZDM1j7Fs+Yr6G2sVtj+ FJJkR9gnSEMCtHV6IgP/7t1uGEK6BmxToSWxB5cV59FDBqfCfK3tLxDieIsI1gsGvyib e71w== X-Gm-Message-State: AOJu0YzmtcjlWJ5lP8P0L5hUEXOwrhvAsGe72yIjpOIPclyxVKICldTc UadvHKRq1jiJKHJ9mqHtPCMIiWdRyEvbDV/kdVNYZMyV2rX76FZuUJ4Ff0YX3mY6d+rXfHtDPgK N/MWsKye/HP3B0brvzLW/HFEdF8s= X-Google-Smtp-Source: AGHT+IG0kAiwO8N4tCdVnqzOljoal6Nv+d2ABsiekPt3I8o3ATmOMyjXStwmbhWqrNCd05OFJrtcgTsc/vVAs1ezn4k= X-Received: by 2002:a05:6a21:1192:b0:1cf:2a35:6d21 with SMTP id adf61e73a8af0-1d4fa7b53cdmr177594637.45.1727365547274; Thu, 26 Sep 2024 08:45:47 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexandra Wang Date: Thu, 26 Sep 2024 08:45:11 -0700 Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Peter Eisentraut Cc: PostgreSQL Hackers , Andrew Dunstan Content-Type: multipart/mixed; boundary="000000000000d7e7b4062307a1c4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d7e7b4062307a1c4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, I didn=E2=80=99t run pgindent earlier, so here=E2=80=99s the updated versio= n with the correct indentation. Hope this helps! Best, Alex --000000000000d7e7b4062307a1c4 Content-Type: application/octet-stream; name="v4-0001-Add-JSON-JSONB-simplified-accessor.patch" Content-Disposition: attachment; filename="v4-0001-Add-JSON-JSONB-simplified-accessor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1jgstuo0 RnJvbSBlYTI3OGRlZTkyNjE2ZjU0NmJiOTYzNmJjNGMwZjdlMzZmYmE4MTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogVGh1LCAxNSBBdWcgMjAyNCAwMjoxMTozMyAtMDcwMApTdWJqZWN0OiBb UEFUQ0ggdjRdIEFkZCBKU09OL0pTT05CIHNpbXBsaWZpZWQgYWNjZXNzb3IKClRoaXMgcGF0Y2gg aW1wbGVtZW50cyBKU09OL0pTT05CIG1lbWJlciBhY2Nlc3NvciBhbmQgSlNPTi9KU09OQiBhcnJh eQphY2Nlc3NvciBhcyBzcGVjaWZpZWQgaW4gU1FMIDIwMjMuIFNwZWNpZmljYWxseSwgdGhlIGZv bGxvd2luZyBzeXRheGVzCmFyZSBhZGRlZDoKCjEuIFNpbXBsZSBkb3Qtbm90YXRpb24gYWNjZXNz IHRvIEpTT04gYW5kIEpTT05CIG9iamVjdCBmaWVsZHMKMi4gU3Vic2NyaXB0aW5nIGZvciBpbmRl eGVkIGFjY2VzcyB0byBKU09OIGFycmF5IGVsZW1lbnRzCgpFeGFtcGxlczoKCi0tIFNldHVwCmNy ZWF0ZSB0YWJsZSB0KHggaW50LCB5IGpzb24pOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJh IjogMSwgImIiOiA0Mn0nOjpqc29uOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMiwg ImIiOiB7ImMiOiA0Mn19Jzo6anNvbjsKaW5zZXJ0IGludG8gdCBzZWxlY3QgMSwgJ3siYSI6IDMs ICJiIjogeyJjIjogIjQyIn0sICJkIjpbMTEsIDEyXX0nOjpqc29uOwoKLS0gRXhpc3Rpbmcgc3lu dGF4IHByZWRhdGVzIHRoZSBTUUwgc3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZyb20gdDsK c2VsZWN0ICh0LnkpLT4nYictPidjJyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4wIGZyb20g dDsKCi0tIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNRTCBzdGFu ZGFyZDoKc2VsZWN0ICh0LnkpLmIgZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20gdDsKc2Vs ZWN0ICh0LnkpLmRbMF0gZnJvbSB0OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhhdCBzaW1w bGlmaWVkIGFjY2VzcyBpcyBlcXVpdmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICdsYXggJC5K QycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBF UlJPUikKCndoZXJlIFZFUCBpcyB0aGUgPHZhbHVlIGV4cHJlc3Npb24gcHJpbWFyeT4gYW5kIEpD IGlzIHRoZSA8SlNPTgpzaW1wbGlmaWVkIGFjY2Vzc29yIG9wIGNoYWluPi4gRm9yIGV4YW1wbGUs IHRoZSBKU09OX1FVRVJZIGVxdWFsYWxlbmNlCm9mIHRoZSBhYm92ZSBxdWVyaWVzIGlzOgoKc2Vs ZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmInIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBF UiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2VsZWN0IGpzb25fcXVlcnko eSwgJ2xheCAkLmIuYycgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1Q VFkgTlVMTCBPTiBFUlJPUikgZnJvbSB0OwpzZWxlY3QganNvbl9xdWVyeSh5LCAnbGF4ICQuZFsw XScgV0lUSCBDT05ESVRJT05BTCBBUlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBF UlJPUikgZnJvbSB0OwoKVGhpcyBpbXBsZW1lbnRhdGlvbiBlbmFibGVzIGRvdC1ub3RhdGlvbiBh Y2Nlc3MgdG8gSlNPTi9KU09OQiBvYmplY3QKYnkgbWFraW5nIGEgc3ludGF0aWMgc3VnYXIgZm9y IHRoZSBqc29uX29iamVjdF9maWVsZCAiLT4iIG9wZXJhdG9yIGluClBhcnNlRnVuY09yQ29sdW1u KCkgZm9yIGFyZyBvZiBKU09OL0pTT05CIHR5cGUuCgpTaW1pbGFybHksIEpTT04gYXJyYXkgYWNj ZXNzIHZpYSBzdWJzY3JpcHRpbmcgaXMgZW5hYmxlZCBieSBjcmVhdGluZwphbiBPcEV4cHIgZm9y IHRoZSBleGlzdGluZyAiLT4iIG9wZXJhdG9yLiBOb3RlIHRoYXQgdGhlIEpTT04gc3Vic2NyaXB0 aW5nCmltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBKU09OQiBzdWJzY3JpcHRp bmcgY291bnRlcnBhcnQsCmFzIHRoZSBmb3JtZXIgbGV2ZXJhZ2VzIHRoZSAiLT4iIG9wZXJhdG9y IGRpcmVjdGx5LCB3aGlsZSB0aGUgbGF0dGVyCnVzZXMgdGhlIG1vcmUgZ2VuZXJpYyBTdWJzY3Jp cHRpbmdSZWYgaW50ZXJmYWNlLgotLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgIHwgICA4ICsrLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgfCAgOTgg KysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRv ci5kYXQgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9mdW5jLmggICAgIHwgICAz ICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90eXBlLmggICAgIHwgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbi5vdXQgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IHwgIDg2ICsrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb24uc3FsICAgICAgIHwgIDI1 ICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCAgICAgIHwgIDIyICsrKysr KwogOSBmaWxlcyBjaGFuZ2VkLCAzNDcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzNmMxYjdhODhmLi5jNTU1ODJjZGU1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9leHByLmMKQEAgLTQ1Myw3ICs0NTMsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCU5vZGUJICAgKm4g PSBsZmlyc3QoaSk7CiAKIAkJaWYgKElzQShuLCBBX0luZGljZXMpKQotCQkJc3Vic2NyaXB0cyA9 IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7CisJCQlpZiAoZXhwclR5cGUocmVzdWx0KSA9PSBKU09O T0lEKQorCQkJCXJlc3VsdCA9IFBhcnNlSnNvblNpbXBsaWZpZWRBY2Nlc3NvckFycmF5RWxlbWVu dChwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJIGNhc3ROb2RlKEFfSW5kaWNlcywgbiksCisJCQkJ CQkJCQkJCQkJCQkJIHJlc3VsdCwKKwkJCQkJCQkJCQkJCQkJCQkgbG9jYXRpb24pOworCQkJZWxz ZQorCQkJCXN1YnNjcmlwdHMgPSBsYXBwZW5kKHN1YnNjcmlwdHMsIG4pOwogCQllbHNlIGlmIChJ c0EobiwgQV9TdGFyKSkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVu Yy5jCmluZGV4IDliMjMzNDRhM2IuLmExM2MwMDFkZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMu YwpAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNs dWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3Jf ZC5oIgogCiAKIC8qIFBvc3NpYmxlIGVycm9yIGNvZGVzIGZyb20gTG9va3VwRnVuY05hbWVJbnRl cm5hbCAqLwpAQCAtNDgsNiArNTAsOCBAQCBzdGF0aWMgdm9pZCB1bmlmeV9oeXBvdGhldGljYWxf YXJncyhQYXJzZVN0YXRlICpwc3RhdGUsCiBzdGF0aWMgT2lkCUZ1bmNOYW1lQXNUeXBlKExpc3Qg KmZ1bmNuYW1lKTsKIHN0YXRpYyBOb2RlICpQYXJzZUNvbXBsZXhQcm9qZWN0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQkJCQlOb2RlICpmaXJzdF9h cmcsIGludCBsb2NhdGlvbik7CitzdGF0aWMgTm9kZSAqUGFyc2VKc29uU2ltcGxpZmllZEFjY2Vz c29yT2JqZWN0RmllbGQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpmdW5jbmFtZSwK KwkJCQkJCQkJCQkJCQlOb2RlICpmaXJzdF9hcmcsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgT2lk CUxvb2t1cEZ1bmNOYW1lSW50ZXJuYWwoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpmdW5jbmFt ZSwKIAkJCQkJCQkJICAgaW50IG5hcmdzLCBjb25zdCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkg ICBib29sIGluY2x1ZGVfb3V0X2FyZ3VtZW50cywgYm9vbCBtaXNzaW5nX29rLApAQCAtMjI2LDE3 ICsyMzAsMjQgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpm dW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJCQkJCQkgICAhZnVuY192YXJpYWRpYyAmJiBhcmduYW1l cyA9PSBOSUwgJiYKIAkJCQkJCSAgIGxpc3RfbGVuZ3RoKGZ1bmNuYW1lKSA9PSAxICYmCiAJCQkJ CQkgICAoYWN0dWFsX2FyZ190eXBlc1swXSA9PSBSRUNPUkRPSUQgfHwKLQkJCQkJCQlJU0NPTVBM RVgoYWN0dWFsX2FyZ190eXBlc1swXSkpKTsKKwkJCQkJCQlJU0NPTVBMRVgoYWN0dWFsX2FyZ190 eXBlc1swXSkgfHwKKwkJCQkJCQlJU0pTT04oYWN0dWFsX2FyZ190eXBlc1swXSkpKTsKIAogCS8q CiAJICogSWYgaXQncyBjb2x1bW4gc3ludGF4LCBjaGVjayBmb3IgY29sdW1uIHByb2plY3Rpb24g Y2FzZSBmaXJzdC4KIAkgKi8KIAlpZiAoY291bGRfYmVfcHJvamVjdGlvbiAmJiBpc19jb2x1bW4p CiAJewotCQlyZXR2YWwgPSBQYXJzZUNvbXBsZXhQcm9qZWN0aW9uKHBzdGF0ZSwKLQkJCQkJCQkJ CQlzdHJWYWwobGluaXRpYWwoZnVuY25hbWUpKSwKLQkJCQkJCQkJCQlmaXJzdF9hcmcsCi0JCQkJ CQkJCQkJbG9jYXRpb24pOworCQlpZiAoSVNKU09OKGFjdHVhbF9hcmdfdHlwZXNbMF0pKQorCQkJ cmV0dmFsID0gUGFyc2VKc29uU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0RmllbGQocHN0YXRlLAor CQkJCQkJCQkJCQkJCQkJc3RyVmFsKGxpbml0aWFsKGZ1bmNuYW1lKSksCisJCQkJCQkJCQkJCQkJ CQlmaXJzdF9hcmcsCisJCQkJCQkJCQkJCQkJCQlsb2NhdGlvbik7CisJCWVsc2UKKwkJCXJldHZh bCA9IFBhcnNlQ29tcGxleFByb2plY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQlzdHJWYWwobGlu aXRpYWwoZnVuY25hbWUpKSwKKwkJCQkJCQkJCQkJZmlyc3RfYXJnLAorCQkJCQkJCQkJCQlsb2Nh dGlvbik7CiAJCWlmIChyZXR2YWwpCiAJCQlyZXR1cm4gcmV0dmFsOwogCkBAIC0xOTAyLDYgKzE5 MTMsODMgQEAgRnVuY05hbWVBc1R5cGUoTGlzdCAqZnVuY25hbWUpCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyoKKyAqIFBhcnNlSnNvblNpbXBsaWZpZWRBY2Nlc3NvckFycmF5RWxlbWVudCAtCisg KgkgIHRyYW5zZm9ybSBqc29uIHN1YnNjcmlwdCBpbnRvIGpzb25fYXJyYXlfZWxlbWVudCBvcGVy YXRvci4KKyAqLworTm9kZSAqCitQYXJzZUpzb25TaW1wbGlmaWVkQWNjZXNzb3JBcnJheUVsZW1l bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGljZXMgKnN1YnNjcmlwdCwKKwkJCQkJCQkJCQlO b2RlICpmaXJzdF9hcmcsIGludCBsb2NhdGlvbikKK3sKKwlPcEV4cHIJICAgKnJlc3VsdDsKKwlO b2RlCSAgICppbmRleDsKKworCUFzc2VydChleHByVHlwZShmaXJzdF9hcmcpID09IEpTT05PSUQp OworCisJaWYgKHN1YnNjcmlwdC0+aXNfc2xpY2UpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImpzb24g c3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzIikpLAorCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGxvY2F0aW9uKSk7CisKKwlpbmRleCA9IHRyYW5zZm9ybUV4cHIocHN0YXRl LCBzdWJzY3JpcHQtPnVpZHgsIHBzdGF0ZS0+cF9leHByX2tpbmQpOworCWlmICghSXNBKGluZGV4 LCBDb25zdCkgfHwKKwkJY2FzdE5vZGUoQ29uc3QsIGluZGV4KS0+Y29uc3R0eXBlICE9IElOVDRP SUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCSBlcnJtc2coImpzb24gc3Vic2NyaXB0IG11c3QgYmUgY29lcmNpYmxl IHRvIGludGVnZXIiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGluZGV4KSkpOworCisJcmVzdWx0ID0gbWFrZU5vZGUoT3BFeHByKTsKKwlyZXN1bHQtPm9w bm8gPSBPSURfSlNPTl9BUlJBWV9FTEVNRU5UX09QOworCXJlc3VsdC0+b3ByZXN1bHR0eXBlID0g SlNPTk9JRDsKKwlyZXN1bHQtPm9wZnVuY2lkID0gZ2V0X29wY29kZShyZXN1bHQtPm9wbm8pOwor CXJlc3VsdC0+YXJncyA9IGxpc3RfbWFrZTIoZmlyc3RfYXJnLCBpbmRleCk7CisJcmVzdWx0LT5s b2NhdGlvbiA9IGV4cHJMb2NhdGlvbihpbmRleCk7CisKKwlyZXR1cm4gKE5vZGUgKikgcmVzdWx0 OworfQorCisvKgorICogUGFyc2VKc29uU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0RmllbGQgLQor ICoJICBoYW5kbGVzIGZ1bmN0aW9uIGNhbGxzIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgdGhhdCBp cyBvZiBqc29uIHR5cGUuCisgKgkgIElmIHRoZSBmdW5jdGlvbiBjYWxsIGlzIGFjdHVhbGx5IGEg Y29sdW1uIHByb2plY3Rpb24sIHJldHVybiBhIHN1aXRhYmx5CisgKgkgIHRyYW5zZm9ybWVkIGV4 cHJlc3Npb24gdHJlZS4gIElmIG5vdCwgcmV0dXJuIE5VTEwuCisgKi8KK05vZGUgKgorUGFyc2VK c29uU2ltcGxpZmllZEFjY2Vzc29yT2JqZWN0RmllbGQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBjaGFyICpmdW5jbmFtZSwKKwkJCQkJCQkJCSAgIE5vZGUgKmZpcnN0X2FyZywgaW50IGxvY2F0 aW9uKQoreworCU9wRXhwcgkgICAqcmVzdWx0OworCU5vZGUJICAgKnJleHByOworCisJcmV4cHIg PSAoTm9kZSAqKSBtYWtlQ29uc3QoCisJCQkJCQkJICAgVEVYVE9JRCwKKwkJCQkJCQkgICAtMSwK KwkJCQkJCQkgICBJbnZhbGlkT2lkLAorCQkJCQkJCSAgIC0xLAorCQkJCQkJCSAgIENTdHJpbmdH ZXRUZXh0RGF0dW0oZnVuY25hbWUpLAorCQkJCQkJCSAgIGZhbHNlLAorCQkJCQkJCSAgIGZhbHNl KTsKKworCXJlc3VsdCA9IG1ha2VOb2RlKE9wRXhwcik7CisJaWYgKGV4cHJUeXBlKGZpcnN0X2Fy ZykgPT0gSlNPTk9JRCkKKwl7CisJCXJlc3VsdC0+b3BubyA9IE9JRF9KU09OX09CSkVDVF9GSUVM RF9PUDsKKwkJcmVzdWx0LT5vcHJlc3VsdHR5cGUgPSBKU09OT0lEOworCX0KKwllbHNlCisJewor CQlBc3NlcnQoZXhwclR5cGUoZmlyc3RfYXJnKSA9PSBKU09OQk9JRCk7CisJCXJlc3VsdC0+b3Bu byA9IE9JRF9KU09OQl9PQkpFQ1RfRklFTERfT1A7CisJCXJlc3VsdC0+b3ByZXN1bHR0eXBlID0g SlNPTkJPSUQ7CisJfQorCXJlc3VsdC0+b3BmdW5jaWQgPSBnZXRfb3Bjb2RlKHJlc3VsdC0+b3Bu byk7CisJcmVzdWx0LT5hcmdzID0gbGlzdF9tYWtlMihmaXJzdF9hcmcsIHJleHByKTsKKwlyZXN1 bHQtPmxvY2F0aW9uID0gbG9jYXRpb247CisJcmV0dXJuIChOb2RlICopIHJlc3VsdDsKK30KKwog LyoKICAqIFBhcnNlQ29tcGxleFByb2plY3Rpb24gLQogICoJICBoYW5kbGVzIGZ1bmN0aW9uIGNh bGxzIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgdGhhdCBpcyBvZiBjb21wbGV4IHR5cGUuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CmluZGV4IDBlNzUxMWRkZTEuLmUzNzVjNDkyNTIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CkBAIC0zMTU0LDEzICszMTU0LDEzIEBACiAg IG9wcm5hbWUgPT4gJyonLCBvcHJsZWZ0ID0+ICdhbnlyYW5nZScsIG9wcnJpZ2h0ID0+ICdhbnly YW5nZScsCiAgIG9wcnJlc3VsdCA9PiAnYW55cmFuZ2UnLCBvcHJjb20gPT4gJyooYW55cmFuZ2Us YW55cmFuZ2UpJywKICAgb3ByY29kZSA9PiAncmFuZ2VfaW50ZXJzZWN0JyB9LAoteyBvaWQgPT4g JzM5NjInLCBkZXNjciA9PiAnZ2V0IGpzb24gb2JqZWN0IGZpZWxkJywKK3sgb2lkID0+ICczOTYy Jywgb2lkX3N5bWJvbCA9PiAnT0lEX0pTT05fT0JKRUNUX0ZJRUxEX09QJywgZGVzY3IgPT4gJ2dl dCBqc29uIG9iamVjdCBmaWVsZCcsCiAgIG9wcm5hbWUgPT4gJy0+Jywgb3BybGVmdCA9PiAnanNv bicsIG9wcnJpZ2h0ID0+ICd0ZXh0Jywgb3BycmVzdWx0ID0+ICdqc29uJywKICAgb3ByY29kZSA9 PiAnanNvbl9vYmplY3RfZmllbGQnIH0sCiB7IG9pZCA9PiAnMzk2MycsIGRlc2NyID0+ICdnZXQg anNvbiBvYmplY3QgZmllbGQgYXMgdGV4dCcsCiAgIG9wcm5hbWUgPT4gJy0+PicsIG9wcmxlZnQg PT4gJ2pzb24nLCBvcHJyaWdodCA9PiAndGV4dCcsIG9wcnJlc3VsdCA9PiAndGV4dCcsCiAgIG9w cmNvZGUgPT4gJ2pzb25fb2JqZWN0X2ZpZWxkX3RleHQnIH0sCi17IG9pZCA9PiAnMzk2NCcsIGRl c2NyID0+ICdnZXQganNvbiBhcnJheSBlbGVtZW50JywKK3sgb2lkID0+ICczOTY0Jywgb2lkX3N5 bWJvbCA9PiAnT0lEX0pTT05fQVJSQVlfRUxFTUVOVF9PUCcsIGRlc2NyID0+ICdnZXQganNvbiBh cnJheSBlbGVtZW50JywKICAgb3BybmFtZSA9PiAnLT4nLCBvcHJsZWZ0ID0+ICdqc29uJywgb3By cmlnaHQgPT4gJ2ludDQnLCBvcHJyZXN1bHQgPT4gJ2pzb24nLAogICBvcHJjb2RlID0+ICdqc29u X2FycmF5X2VsZW1lbnQnIH0sCiB7IG9pZCA9PiAnMzk2NScsIGRlc2NyID0+ICdnZXQganNvbiBh cnJheSBlbGVtZW50IGFzIHRleHQnLApAQCAtMzE3Miw3ICszMTcyLDcgQEAKIHsgb2lkID0+ICcz OTY3JywgZGVzY3IgPT4gJ2dldCB2YWx1ZSBmcm9tIGpzb24gYXMgdGV4dCB3aXRoIHBhdGggZWxl bWVudHMnLAogICBvcHJuYW1lID0+ICcjPj4nLCBvcHJsZWZ0ID0+ICdqc29uJywgb3BycmlnaHQg PT4gJ190ZXh0Jywgb3BycmVzdWx0ID0+ICd0ZXh0JywKICAgb3ByY29kZSA9PiAnanNvbl9leHRy YWN0X3BhdGhfdGV4dCcgfSwKLXsgb2lkID0+ICczMjExJywgZGVzY3IgPT4gJ2dldCBqc29uYiBv YmplY3QgZmllbGQnLAoreyBvaWQgPT4gJzMyMTEnLCBvaWRfc3ltYm9sID0+ICdPSURfSlNPTkJf T0JKRUNUX0ZJRUxEX09QJywgZGVzY3IgPT4gJ2dldCBqc29uYiBvYmplY3QgZmllbGQnLAogICBv cHJuYW1lID0+ICctPicsIG9wcmxlZnQgPT4gJ2pzb25iJywgb3BycmlnaHQgPT4gJ3RleHQnLCBv cHJyZXN1bHQgPT4gJ2pzb25iJywKICAgb3ByY29kZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkJyB9 LAogeyBvaWQgPT4gJzM0NzcnLCBkZXNjciA9PiAnZ2V0IGpzb25iIG9iamVjdCBmaWVsZCBhcyB0 ZXh0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9mdW5jLmggYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfZnVuYy5oCmluZGV4IGM3YmE5OWRlZTcuLjZiNzc1OWNiYzcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9mdW5jLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2Z1bmMuaApAQCAtMzUsNiArMzUsOSBAQCBleHRlcm4gTm9kZSAq UGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlz dCAqZmFyZ3MsCiAJCQkJCQkJICAgTm9kZSAqbGFzdF9zcmYsIEZ1bmNDYWxsICpmbiwgYm9vbCBw cm9jX2NhbGwsCiAJCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKIAorZXh0ZXJuIE5vZGUgKlBhcnNl SnNvblNpbXBsaWZpZWRBY2Nlc3NvckFycmF5RWxlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIEFf SW5kaWNlcyAqc3Vic2NyaXB0LAorCQkJCQkJCQkJCQkJCSBOb2RlICpmaXJzdF9hcmcsIGludCBs b2NhdGlvbik7CisKIGV4dGVybiBGdW5jRGV0YWlsQ29kZSBmdW5jX2dldF9kZXRhaWwoTGlzdCAq ZnVuY25hbWUsCiAJCQkJCQkJCQkgIExpc3QgKmZhcmdzLCBMaXN0ICpmYXJnbmFtZXMsCiAJCQkJ CQkJCQkgIGludCBuYXJncywgT2lkICphcmd0eXBlcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV90eXBlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCmlu ZGV4IGI2MmU3YTZjZTkuLjljOGIzYmZiMmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNl ci9wYXJzZV90eXBlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaApAQCAt NTcsNSArNTcsNiBAQCBleHRlcm4gYm9vbCBwYXJzZVR5cGVTdHJpbmcoY29uc3QgY2hhciAqc3Ry LCBPaWQgKnR5cGVpZF9wLCBpbnQzMiAqdHlwbW9kX3AsCiAKIC8qIHRydWUgaWYgdHlwZWlkIGlz IGNvbXBvc2l0ZSwgb3IgZG9tYWluIG92ZXIgY29tcG9zaXRlLCBidXQgbm90IFJFQ09SRCAqLwog I2RlZmluZSBJU0NPTVBMRVgodHlwZWlkKSAodHlwZU9yRG9tYWluVHlwZVJlbGlkKHR5cGVpZCkg IT0gSW52YWxpZE9pZCkKKyNkZWZpbmUgSVNKU09OKHR5cGVpZCkgKHR5cGVpZCA9PSBKU09OT0lE IHx8IHR5cGVpZCA9PSBKU09OQk9JRCkKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1RZUEVfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbi5vdXQKaW5kZXggOTZjNDA5MTFjYi4uZjZiN2FmM2Vj ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb24ub3V0CkBAIC0yNzE2LDMgKzI3MTYsMTEwIEBA IHNlbGVjdCB0c19oZWFkbGluZSgnW10nOjpqc29uLCB0c3F1ZXJ5KCdhYWEgJiBiYmInKSk7CiAg W10KICgxIHJvdykKIAorLS0gc2ltcGxlIGRvdCBub3RhdGlvbgorZHJvcCB0YWJsZSBpZiBleGlz dHMgdGVzdF9qc29uX2RvdDsKK05PVElDRTogIHRhYmxlICJ0ZXN0X2pzb25fZG90IiBkb2VzIG5v dCBleGlzdCwgc2tpcHBpbmcKK2NyZWF0ZSB0YWJsZSB0ZXN0X2pzb25fZG90KGlkIGludCwgdGVz dF9qc29uIGpzb24pOworaW5zZXJ0IGludG8gdGVzdF9qc29uX2RvdCBzZWxlY3QgMSwgJ3siYSI6 IDEsICJiIjogNDJ9Jzo6anNvbjsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2VsZWN0IDEs ICd7ImEiOiAyLCAiYiI6IHsiYyI6IDQyfX0nOjpqc29uOworaW5zZXJ0IGludG8gdGVzdF9qc29u X2RvdCBzZWxlY3QgMSwgJ3siYSI6IDMsICJiIjogeyJjIjogIjQyIn0sICJkIjpbMTEsIDEyXX0n Ojpqc29uOworaW5zZXJ0IGludG8gdGVzdF9qc29uX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDMsICJi IjogeyJjIjogIjQyIn0sICJkIjpbeyJ4IjogWzExLCAxMl19LCB7InkiOiBbMjEsIDIyXX1dfSc6 Ompzb247CistLSBtZW1iZXIgb2JqZWN0IGFjY2Vzcworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRl c3RfanNvbikuYiwganNvbl9xdWVyeSh0ZXN0X2pzb24sICdsYXggJC5iJyBXSVRIIENPTkRJVElP TkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBlY3RlZCBmcm9t IHRlc3RfanNvbl9kb3Q7CisgICAgICBiICAgICAgfCAgZXhwZWN0ZWQgICAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIDQyICAgICAgICAgIHwgNDIKKyB7ImMiOiA0Mn0gICB8IHsiYyI6 IDQyfQorIHsiYyI6ICI0MiJ9IHwgeyJjIjogIjQyIn0KKyB7ImMiOiAiNDIifSB8IHsiYyI6ICI0 MiJ9CisoNCByb3dzKQorCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5iLmMsIGpz b25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuYi5jJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIg TlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9k b3Q7CisgIGMgICB8IGV4cGVjdGVkIAorLS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgIHwgCisgNDIg ICB8IDQyCisgIjQyIiB8ICI0MiIKKyAiNDIiIHwgIjQyIgorKDQgcm93cykKKworc2VsZWN0ICh0 ZXN0X2pzb25fZG90LnRlc3RfanNvbikuZCwganNvbl9xdWVyeSh0ZXN0X2pzb24sICdsYXggJC5k JyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBh cyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7CisgICAgICAgICAgICAgICAgIGQgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICBleHBlY3RlZCAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyBbMTEsIDEyXSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgWzExLCAxMl0KKyBbeyJ4IjogWzExLCAxMl19LCB7InkiOiBbMjEsIDIy XX1dIHwgW3sieCI6IFsxMSwgMTJdfSwgeyJ5IjogWzIxLCAyMl19XQorKDQgcm93cykKKworc2Vs ZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuImQiLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwg J2xheCAkLmQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04g RVJST1IpIGFzIGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKKyAgICAgICAgICAgICAgICAg ZCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIGV4cGVjdGVkICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFsxMSwgMTJdICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBbMTEsIDEyXQorIFt7IngiOiBbMTEsIDEyXX0sIHsieSI6 IFsyMSwgMjJdfV0gfCBbeyJ4IjogWzExLCAxMl19LCB7InkiOiBbMjEsIDIyXX1dCisoNCByb3dz KQorCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS4nZCcgZnJvbSB0ZXN0X2pzb25f ZG90OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJ2QnIgorTElORSAxOiBzZWxl Y3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS4nZCcgZnJvbSB0ZXN0X2pzb25fZG90OworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitzZWxlY3QgKHRlc3RfanNv bl9kb3QudGVzdF9qc29uKVsnZCddIGZyb20gdGVzdF9qc29uX2RvdDsKK0VSUk9SOiAganNvbiBz dWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUgdG8gaW50ZWdlcgorTElORSAxOiBzZWxlY3QgKHRl c3RfanNvbl9kb3QudGVzdF9qc29uKVsnZCddIGZyb20gdGVzdF9qc29uX2RvdDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gYXJyYXkgZWxlbWVudCBhY2Nl c3MKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmQtPjAgZnJvbSB0ZXN0X2pzb25f ZG90OworICAgID9jb2x1bW4/ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisgCisgMTEKKyB7 IngiOiBbMTEsIDEyXX0KKyg0IHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pz b24pLmRbMF0sIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuZFswXScgV0lUSCBDT05ESVRJ T05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0ZWQgZnJv bSB0ZXN0X2pzb25fZG90OworICAgICAgICBkICAgICAgICB8ICAgIGV4cGVjdGVkICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIHwgCisg ICAgICAgICAgICAgICAgIHwgCisgMTEgICAgICAgICAgICAgIHwgMTEKKyB7IngiOiBbMTEsIDEy XX0gfCB7IngiOiBbMTEsIDEyXX0KKyg0IHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50 ZXN0X2pzb24pLmRbMV0sIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuZFsxXScgV0lUSCBD T05ESVRJT05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0 ZWQgZnJvbSB0ZXN0X2pzb25fZG90OworICAgICAgICBkICAgICAgICB8ICAgIGV4cGVjdGVkICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg IHwgCisgICAgICAgICAgICAgICAgIHwgCisgMTIgICAgICAgICAgICAgIHwgMTIKKyB7InkiOiBb MjEsIDIyXX0gfCB7InkiOiBbMjEsIDIyXX0KKyg0IHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29u X2RvdC50ZXN0X2pzb24pLmRbMDpdIGZyb20gdGVzdF9qc29uX2RvdDsKK0VSUk9SOiAganNvbiBz dWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCBzbGljZXMKK0xJTkUgMTogc2VsZWN0ICh0ZXN0X2pz b25fZG90LnRlc3RfanNvbikuZFswOl0gZnJvbSB0ZXN0X2pzb25fZG90OworICAgICAgICAgICAg ICAgIF4KK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmRbMDo6aW50XSBmcm9tIHRl c3RfanNvbl9kb3Q7CisgICAgICAgIGQgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyAK KyAxMQorIHsieCI6IFsxMSwgMTJdfQorKDQgcm93cykKKworc2VsZWN0ICh0ZXN0X2pzb25fZG90 LnRlc3RfanNvbikuZFswOjpmbG9hdF0gZnJvbSB0ZXN0X2pzb25fZG90OworRVJST1I6ICBqc29u IHN1YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBpbnRlZ2VyCitMSU5FIDE6IHNlbGVjdCAo dGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLmRbMDo6ZmxvYXRdIGZyb20gdGVzdF9qc29uXy4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK3NlbGVjdCAodGVz dF9qc29uX2RvdC50ZXN0X2pzb24pLmRbMF0ueFsxXSwganNvbl9xdWVyeSh0ZXN0X2pzb24sICds YXggJC5kWzBdLnhbMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5V TEwgT04gRVJST1IpIGFzIGV4cGVjdGVkIGZyb20gdGVzdF9qc29uX2RvdDsKKyB4ICB8IGV4cGVj dGVkIAorLS0tLSstLS0tLS0tLS0tCisgICAgfCAKKyAgICB8IAorICAgIHwgCisgMTIgfCAxMgor KDQgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCA3ZDE2M2ExNTZl Li45NTRlZmU2N2I2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25i Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApAQCAtNTcxNSwz ICs1NzE1LDg5IEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4OwogIDEyMzQ1CiAoMSByb3cpCiAKKy0tIHNp bXBsZSBkb3Qgbm90YXRpb24KK2Ryb3AgdGFibGUgaWYgZXhpc3RzIHRlc3RfanNvbmJfZG90Owor Tk9USUNFOiAgdGFibGUgInRlc3RfanNvbmJfZG90IiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcK K2NyZWF0ZSB0YWJsZSB0ZXN0X2pzb25iX2RvdChpZCBpbnQsIHRlc3RfanNvbmIganNvbmIpOwor aW5zZXJ0IGludG8gdGVzdF9qc29uYl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6 Ompzb247CitpbnNlcnQgaW50byB0ZXN0X2pzb25iX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDIsICJi IjogeyJjIjogNDJ9fSc6Ompzb247CitpbnNlcnQgaW50byB0ZXN0X2pzb25iX2RvdCBzZWxlY3Qg MSwgJ3siYSI6IDMsICJiIjogeyJjIjogIjQyIn0sICJkIjpbMTEsIDEyXX0nOjpqc29uOworLS0g bWVtYmVyIG9iamVjdCBhY2Nlc3MKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYiku YiBmcm9tIHRlc3RfanNvbmJfZG90OworICAgICAgYiAgICAgIAorLS0tLS0tLS0tLS0tLQorIDQy CisgeyJjIjogNDJ9CisgeyJjIjogIjQyIn0KKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29u Yl9kb3QudGVzdF9qc29uYikuYi5jIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgIGMgICAKKy0tLS0t LQorIAorIDQyCisgIjQyIgorKDMgcm93cykKKworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0 X2pzb25iKS5kIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgICAgZCAgICAgCistLS0tLS0tLS0tCisg CisgCisgWzExLCAxMl0KKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9q c29uYikuImQiIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgICAgZCAgICAgCistLS0tLS0tLS0tCisg CisgCisgWzExLCAxMl0KKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9q c29uYikuJ2QnIGZyb20gdGVzdF9qc29uYl9kb3Q7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBv ciBuZWFyICInZCciCitMSU5FIDE6IHNlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYiku J2QnIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKVsnZCddIGZy b20gdGVzdF9qc29uYl9kb3Q7CisgdGVzdF9qc29uYiAKKy0tLS0tLS0tLS0tLQorIAorIAorIFsx MSwgMTJdCisoMyByb3dzKQorCistLSBhcnJheSBlbGVtZW50IGFjY2Vzcworc2VsZWN0ICh0ZXN0 X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzBdIGZyb20gdGVzdF9qc29uYl9kb3Q7CisgZCAgCist LS0tCisgCisgCisgMTEKKygzIHJvd3MpCisKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9q c29uYikuZFswOl0gZnJvbSB0ZXN0X2pzb25iX2RvdDsKK0VSUk9SOiAganNvbmIgc3Vic2NyaXB0 IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCitMSU5FIDE6IHNlbGVjdCAodGVzdF9qc29uYl9kb3Qu dGVzdF9qc29uYikuZFswOl0gZnJvbSB0ZXN0X2pzb25iX2RvdC4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50 ZXN0X2pzb25iKS5kWzA6OmludF0gZnJvbSB0ZXN0X2pzb25iX2RvdDsKKyBkICAKKy0tLS0KKyAK KyAKKyAxMQorKDMgcm93cykKKworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5k WzA6OmZsb2F0XSBmcm9tIHRlc3RfanNvbmJfZG90OworRVJST1I6ICBzdWJzY3JpcHQgdHlwZSBk b3VibGUgcHJlY2lzaW9uIGlzIG5vdCBzdXBwb3J0ZWQKK0xJTkUgMTogc2VsZWN0ICh0ZXN0X2pz b25iX2RvdC50ZXN0X2pzb25iKS5kWzA6OmZsb2F0XSBmcm9tIHRlc3RfanNvLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAganNvbmIgc3Vi c2NyaXB0IG11c3QgYmUgY29lcmNpYmxlIHRvIGVpdGhlciBpbnRlZ2VyIG9yIHRleHQuCitzZWxl Y3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmRbMF0ueFsxXSBmcm9tIHRlc3RfanNvbmJf ZG90OworIHggCistLS0KKyAKKyAKKyAKKygzIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2pzb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbi5zcWwKaW5k ZXggODI1MWY0ZjQwMC4uMjE0NTBjNDk5MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbi5zcWwKQEAgLTg2OSwz ICs4NjksMjggQEAgc2VsZWN0IHRzX2hlYWRsaW5lKCdlbmdsaXNoJywgJ3siYSI6ICJhYWEgYmJi IiwgImIiOiB7ImMiOiAiY2NjIGRkZCBmZmYiLCAiYzEiOgogc2VsZWN0IHRzX2hlYWRsaW5lKCdu dWxsJzo6anNvbiwgdHNxdWVyeSgnYWFhICYgYmJiJykpOwogc2VsZWN0IHRzX2hlYWRsaW5lKCd7 fSc6Ompzb24sIHRzcXVlcnkoJ2FhYSAmIGJiYicpKTsKIHNlbGVjdCB0c19oZWFkbGluZSgnW10n Ojpqc29uLCB0c3F1ZXJ5KCdhYWEgJiBiYmInKSk7CisKKy0tIHNpbXBsZSBkb3Qgbm90YXRpb24K K2Ryb3AgdGFibGUgaWYgZXhpc3RzIHRlc3RfanNvbl9kb3Q7CitjcmVhdGUgdGFibGUgdGVzdF9q c29uX2RvdChpZCBpbnQsIHRlc3RfanNvbiBqc29uKTsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9k b3Qgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6Ompzb247CitpbnNlcnQgaW50byB0ZXN0 X2pzb25fZG90IHNlbGVjdCAxLCAneyJhIjogMiwgImIiOiB7ImMiOiA0Mn19Jzo6anNvbjsKK2lu c2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0 MiJ9LCAiZCI6WzExLCAxMl19Jzo6anNvbjsKK2luc2VydCBpbnRvIHRlc3RfanNvbl9kb3Qgc2Vs ZWN0IDEsICd7ImEiOiAzLCAiYiI6IHsiYyI6ICI0MiJ9LCAiZCI6W3sieCI6IFsxMSwgMTJdfSwg eyJ5IjogWzIxLCAyMl19XX0nOjpqc29uOworCistLSBtZW1iZXIgb2JqZWN0IGFjY2Vzcworc2Vs ZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuYiwganNvbl9xdWVyeSh0ZXN0X2pzb24sICds YXggJC5iJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVS Uk9SKSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9k b3QudGVzdF9qc29uKS5iLmMsIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuYi5jJyBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBl Y3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29u KS5kLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmQnIFdJVEggQ09ORElUSU9OQUwgV1JB UFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGFzIGV4cGVjdGVkIGZyb20gdGVzdF9q c29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pzb24pLiJkIiwganNvbl9xdWVy eSh0ZXN0X2pzb24sICdsYXggJC5kJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgTlVMTCBPTiBF TVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNvbl9kb3Q7CitzZWxl Y3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS4nZCcgZnJvbSB0ZXN0X2pzb25fZG90Oworc2Vs ZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbilbJ2QnXSBmcm9tIHRlc3RfanNvbl9kb3Q7CisK Ky0tIGFycmF5IGVsZW1lbnQgYWNjZXNzCitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29u KS5kLT4wIGZyb20gdGVzdF9qc29uX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uX2RvdC50ZXN0X2pz b24pLmRbMF0sIGpzb25fcXVlcnkodGVzdF9qc29uLCAnbGF4ICQuZFswXScgV0lUSCBDT05ESVRJ T05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhwZWN0ZWQgZnJv bSB0ZXN0X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuZFsxXSwg anNvbl9xdWVyeSh0ZXN0X2pzb24sICdsYXggJC5kWzFdJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQ RVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9SKSBhcyBleHBlY3RlZCBmcm9tIHRlc3RfanNv bl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzA6XSBmcm9tIHRlc3Rf anNvbl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbl9kb3QudGVzdF9qc29uKS5kWzA6OmludF0gZnJv bSB0ZXN0X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNvbikuZFswOjpm bG9hdF0gZnJvbSB0ZXN0X2pzb25fZG90Oworc2VsZWN0ICh0ZXN0X2pzb25fZG90LnRlc3RfanNv bikuZFswXS54WzFdLCBqc29uX3F1ZXJ5KHRlc3RfanNvbiwgJ2xheCAkLmRbMF0ueFsxXScgV0lU SCBDT05ESVRJT05BTCBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikgYXMgZXhw ZWN0ZWQgZnJvbSB0ZXN0X2pzb25fZG90OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvanNvbmIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCmluZGV4IDVmMDE5 MGQ1YTIuLmYwOTVkYzJiYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25i LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKQEAgLTE1NTksMyArMTU1 OSwyNSBAQCBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDI7CiBzZWxlY3Qg JzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpq c29uYjo6aW50NDsKIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjppbnQ4OworCistLSBzaW1wbGUgZG90IG5vdGF0aW9u Citkcm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0X2pzb25iX2RvdDsKK2NyZWF0ZSB0YWJsZSB0ZXN0 X2pzb25iX2RvdChpZCBpbnQsIHRlc3RfanNvbmIganNvbmIpOworaW5zZXJ0IGludG8gdGVzdF9q c29uYl9kb3Qgc2VsZWN0IDEsICd7ImEiOiAxLCAiYiI6IDQyfSc6Ompzb247CitpbnNlcnQgaW50 byB0ZXN0X2pzb25iX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDIsICJiIjogeyJjIjogNDJ9fSc6Ompz b247CitpbnNlcnQgaW50byB0ZXN0X2pzb25iX2RvdCBzZWxlY3QgMSwgJ3siYSI6IDMsICJiIjog eyJjIjogIjQyIn0sICJkIjpbMTEsIDEyXX0nOjpqc29uOworCistLSBtZW1iZXIgb2JqZWN0IGFj Y2Vzcworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5iIGZyb20gdGVzdF9qc29u Yl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmIuYyBmcm9tIHRlc3Rf anNvbmJfZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kIGZyb20gdGVz dF9qc29uYl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLiJkIiBmcm9t IHRlc3RfanNvbmJfZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS4nZCcg ZnJvbSB0ZXN0X2pzb25iX2RvdDsKK3NlbGVjdCAodGVzdF9qc29uYl9kb3QudGVzdF9qc29uYilb J2QnXSBmcm9tIHRlc3RfanNvbmJfZG90OworCistLSBhcnJheSBlbGVtZW50IGFjY2Vzcworc2Vs ZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzBdIGZyb20gdGVzdF9qc29uYl9kb3Q7 CitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmRbMDpdIGZyb20gdGVzdF9qc29u Yl9kb3Q7CitzZWxlY3QgKHRlc3RfanNvbmJfZG90LnRlc3RfanNvbmIpLmRbMDo6aW50XSBmcm9t IHRlc3RfanNvbmJfZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0X2pzb25iKS5kWzA6 OmZsb2F0XSBmcm9tIHRlc3RfanNvbmJfZG90Oworc2VsZWN0ICh0ZXN0X2pzb25iX2RvdC50ZXN0 X2pzb25iKS5kWzBdLnhbMV0gZnJvbSB0ZXN0X2pzb25iX2RvdDsKLS0gCjIuMzkuNSAoQXBwbGUg R2l0LTE1NCkKCg== --000000000000d7e7b4062307a1c4--