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 1tnnFg-0026uG-16 for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Feb 2025 23:25:13 +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 1tnnEi-007rvG-L9 for pgsql-hackers@arkaria.postgresql.org; Thu, 27 Feb 2025 23:24:11 +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 1tnnEh-007rtZ-Pf for pgsql-hackers@lists.postgresql.org; Thu, 27 Feb 2025 23:24:10 +0000 Received: from mail-pj1-x1041.google.com ([2607:f8b0:4864:20::1041]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tnnEe-0003o7-0n for pgsql-hackers@postgresql.org; Thu, 27 Feb 2025 23:24:09 +0000 Received: by mail-pj1-x1041.google.com with SMTP id 98e67ed59e1d1-2feae794508so1612577a91.0 for ; Thu, 27 Feb 2025 15:24:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740698647; x=1741303447; 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=c2vQ8L8gynkZtcM/zij2BFM6zJsWV4Tl+9QUpFoFG4E=; b=LxQziTdo8UfpMiG4ajlWLJ2v+A2TW5QZEz83UzAEDFA+lHpjtcHHC9uW2xN314ptnB g4JzWYvMF8bNrDiJ2iJiXnSFpNC7lS2SQ+MEny3DqPO4d8EOKMC0IGLWIe5IcrxYxWBS hfZYsGt6H5YmtDE00+EF7fhoIHTR1tNQFiiqOfpgQSrDmX77BrF1ZJDFcgsFT51CbwZn uBYMoXQ6GyuCNht1H+BnyZBhFiVr8e6aGXm/VbxBwIlI5y5dLqgJZ+n2iDeRjd8evdi6 DrtVXcWL0cbUDBq74J3gxiL0Ft7w0FVtPPweGqgZ3BR7ZYZsKi1biEYfN5tTsve4HIhT rYng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740698647; x=1741303447; 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=c2vQ8L8gynkZtcM/zij2BFM6zJsWV4Tl+9QUpFoFG4E=; b=ZP6JmBQ2PlxwOXRryN96VrwBSb+yEbYDbMoJwAYMtUQ7DdlV9GAh59wvdFiULQa37u bFFdIgbupNDYf6iGj57NOWCysF1rcK53+lC0OPQCpPTBBeQwfBSMl4b/Hy7DzGmySPtt 1bsjYqdcl3Dw9cmxr25ikjAdwbvxnqvAdRGWw7Qy/0iTGqxytca/HGSUE4DL8I+P03Uh 92xwzfjuRqWot2OgXv8VLebGbwF01SvESAWybVCR0biNZW/besD8NOIlecQliJ4eMMzk hZJph4W+pfJPyRbd+IPXSOwUwnjLJP8PHo+OMroVy3Hb5iQUA5lKT1jQ++wEefUFqd8S 8LPQ== X-Forwarded-Encrypted: i=1; AJvYcCXcJCKlRqluG/he5o6E89T766QDKvnfKvgws7p6OAAcoUaNdrzuBi7W+5PgICxK4Hnsh4TtqhtEPpuODs4A@postgresql.org X-Gm-Message-State: AOJu0Yyee6xul+cqrGMtiRJ8IFSLQcCyvmJAFqAqsPvU5WsQTueDt03c JvfDeMhoUdiL9a5bzwxgUWAnDrYo5PkJCFZ65mkNH4W3jpket7Gr31UtJFz9aVizWXGQRpPPCtz PGq2gNfG/KuDI2GYn3/TNMcqizZE= X-Gm-Gg: ASbGncscKSdf/SjTjVMqvtG0ujvfOhZv+k0E3ZxvDeX36slcWFZ4+wmzWpGBly5Pl9x PPbiM+GvxphWd6PouBXF5bPW3WSoS4T9TfVMIuar4TNeQhwy0wD2DO41kQfzlJKklwRvRVXAG0W 5zUQbJdsShZX7w7yTZLwdyFZ7olPHwUwp/NzXcGs4= X-Google-Smtp-Source: AGHT+IHt1vpUZKIrBhPyW1gFK3hPMt0wxMaoMAIIZ122hJjL5nVlaPPoXL+1an1cv3ki/3dWgAIDQzljcSnD3xZ+ReE= X-Received: by 2002:a17:90b:3fcc:b0:2ee:f22a:61dd with SMTP id 98e67ed59e1d1-2febabe3828mr1576142a91.32.1740698646888; Thu, 27 Feb 2025 15:24:06 -0800 (PST) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: From: Alexandra Wang Date: Thu, 27 Feb 2025 17:23:30 -0600 X-Gm-Features: AQ5f1Jr45Vib2bXNIdSVPqmStf7v-AO0rStKifJ6tFX7h2rKE4szSadVaH7jYvM Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Peter Eisentraut Cc: Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" , jian he , matheusssilv97@gmail.com Content-Type: multipart/mixed; boundary="00000000000082952a062f27fc96" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000082952a062f27fc96 Content-Type: multipart/alternative; boundary="000000000000829529062f27fc94" --000000000000829529062f27fc94 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello hackers, On Thu, Feb 27, 2025 at 9:46=E2=80=AFAM Alexandra Wang wrote: > Summary of changes: > > v8-0001 through v8-0005: > Refactoring and preparatory steps for the actual implementation. > > v8-0006 (Implement read-only dot notation for JSONB): > I removed the vars field (introduced in v7) from JsonbSubWorkspace > after realizing that JsonPathVariable is not actually needed for > dot-notation. > > v8-0007 (Allow wildcard member access for JSONB): > I'm aware that the #if 0 in check_indirection() is not ideal. I > haven=E2=80=99t removed it yet because I=E2=80=99m still reviewing other = cases=E2=80=94beyond > our JSONB simplified accessor use case=E2=80=94where this check should re= main > strict. I=E2=80=99ll post an additional patch to address this. > I made the following minor changes in v9: - More detailed commit messages - Additional tests - Use "?column?" as the column name for trailing .*. Other than that, the patches remain the same as the previous version: 0001 - 0005: preparation steps for the actual implementation and do not change or add new behavior. 0006: jsonb dot notation and sliced subscripting 0007: jsonb wildcard member access Thanks, Alex --000000000000829529062f27fc94 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello hackers,

On Thu, Feb 27, 2= 025 at 9:46=E2=80=AFAM Alexandra Wang <alexandra.wang.oss@gmail.com> wrote:
Summary of changes:=

v8-0001 through v8-0005:
Refactoring and preparatory steps for t= he actual implementation.

v8-0006 (Implement read-only dot notation = for JSONB):
I removed the vars field (introduced in v7) from JsonbSubWor= kspace
after realizing that JsonPathVariable is not actually needed for<= br>dot-notation.

v8-0007 (Allow wildcard member access for JSONB):I'm aware that the #if 0 in check_indirection() is not ideal. I
ha= ven=E2=80=99t removed it yet because I=E2=80=99m still reviewing other case= s=E2=80=94beyond
our JSONB simplified accessor use case=E2=80=94where th= is check should remain
strict. I=E2=80=99ll post an additional patch to = address this.

I made the followin= g minor changes in v9:=C2=A0
- More detailed commit messages
- Additional tests
- Use "?column?" as the column= name for trailing .*.

Other than that, the patche= s remain the same as the previous
version:
0001 - 0005: preparation s= teps for the actual implementation and do
not change or add new behavior= .
0006: jsonb dot notation and sliced subscripting
0007: jsonb wildca= rd member access

Thanks,
Alex
= =C2=A0
--000000000000829529062f27fc94-- --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0003-Export-jsonPathFromParseResult.patch" Content-Disposition: attachment; filename="v9-0003-Export-jsonPathFromParseResult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaen2 RnJvbSA2MDI5YTI3ZmNhZDAwM2YxYzY2NDNkZGJhMDExZmMzNjYwZGIyMWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNTo1NSArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djkgMy83XSBFeHBvcnQganNvblBhdGhGcm9tUGFyc2VSZXN1bHQoKQoKVGhpcyBpcyBhIHByZXBh cmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2UgdGhlCmFmb3Jl bWVudGlvbmVkIGZ1bmN0aW9uLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5j IHwgMTkgKysrKysrKysrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaCAg ICAgfCAgNCArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGguYwppbmRleCA3NjJmN2U4YTA5ZC4uMTUzNjc5 N2NmMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jCkBAIC0xNjYsMTUgKzE2NiwxMyBAQCBq c29ucGF0aF9zZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCiAgKiBDb252ZXJ0cyBDLXN0cmluZyB0byBh IGpzb25wYXRoIHZhbHVlLgogICoKICAqIFVzZXMganNvbnBhdGggcGFyc2VyIHRvIHR1cm4gc3Ry aW5nIGludG8gYW4gQVNULCB0aGVuCi0gKiBmbGF0dGVuSnNvblBhdGhQYXJzZUl0ZW0oKSBkb2Vz IHNlY29uZCBwYXNzIHR1cm5pbmcgQVNUIGludG8gYmluYXJ5CisgKiBqc29uUGF0aEZyb21QYXJz ZVJlc3VsdCgpIGRvZXMgc2Vjb25kIHBhc3MgdHVybmluZyBBU1QgaW50byBiaW5hcnkKICAqIHJl cHJlc2VudGF0aW9uIG9mIGpzb25wYXRoLgogICovCiBzdGF0aWMgRGF0dW0KIGpzb25QYXRoRnJv bUNzdHJpbmcoY2hhciAqaW4sIGludCBsZW4sIHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiB7CiAJ SnNvblBhdGhQYXJzZVJlc3VsdCAqanNvbnBhdGggPSBwYXJzZWpzb25wYXRoKGluLCBsZW4sIGVz Y29udGV4dCk7Ci0JSnNvblBhdGggICAqcmVzOwotCVN0cmluZ0luZm9EYXRhIGJ1ZjsKIAogCWlm IChTT0ZUX0VSUk9SX09DQ1VSUkVEKGVzY29udGV4dCkpCiAJCXJldHVybiAoRGF0dW0pIDA7CkBA IC0xODUsOCArMTgzLDIxIEBAIGpzb25QYXRoRnJvbUNzdHJpbmcoY2hhciAqaW4sIGludCBsZW4s IHN0cnVjdCBOb2RlICplc2NvbnRleHQpCiAJCQkJIGVycm1zZygiaW52YWxpZCBpbnB1dCBzeW50 YXggZm9yIHR5cGUgJXM6IFwiJXNcIiIsICJqc29ucGF0aCIsCiAJCQkJCQlpbikpKTsKIAorCXJl dHVybiBqc29uUGF0aEZyb21QYXJzZVJlc3VsdChqc29ucGF0aCwgNCAqIGxlbiwgZXNjb250ZXh0 KTsKK30KKworLyoKKyAqIENvbnZlcnRzIGpzb25wYXRoIEFTVCBpbnRvIGpzb25wYXRoIHZhbHVl IGluIGJpbmFyeS4KKyAqLworRGF0dW0KK2pzb25QYXRoRnJvbVBhcnNlUmVzdWx0KEpzb25QYXRo UGFyc2VSZXN1bHQgKmpzb25wYXRoLCBpbnQgZXN0aW1hdGVkX2xlbiwKKwkJCQkJCXN0cnVjdCBO b2RlICplc2NvbnRleHQpCit7CisJSnNvblBhdGggICAqcmVzOworCVN0cmluZ0luZm9EYXRhIGJ1 ZjsKKwogCWluaXRTdHJpbmdJbmZvKCZidWYpOwotCWVubGFyZ2VTdHJpbmdJbmZvKCZidWYsIDQg KiBsZW4gLyogZXN0aW1hdGlvbiAqLyApOworCWVubGFyZ2VTdHJpbmdJbmZvKCZidWYsIGVzdGlt YXRlZF9sZW4pOwogCiAJYXBwZW5kU3RyaW5nSW5mb1NwYWNlcygmYnVmLCBKU09OUEFUSF9IRFJT Wik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggYi9zcmMvaW5j bHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDIzYTc2ZDIzM2U5Li5lMDU5NDE2MjNlNyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9qc29ucGF0aC5oCkBAIC0yODEsNiArMjgxLDEwIEBAIGV4dGVybiBKc29uUGF0aFBhcnNl UmVzdWx0ICpwYXJzZWpzb25wYXRoKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbiwKIGV4dGVybiBi b29sIGpzcENvbnZlcnRSZWdleEZsYWdzKHVpbnQzMiB4ZmxhZ3MsIGludCAqcmVzdWx0LAogCQkJ CQkJCQkgc3RydWN0IE5vZGUgKmVzY29udGV4dCk7CiAKK2V4dGVybiBEYXR1bSBqc29uUGF0aEZy b21QYXJzZVJlc3VsdChKc29uUGF0aFBhcnNlUmVzdWx0ICpqc29ucGF0aCwKKwkJCQkJCQkJCSBp bnQgZXN0aW1hdGVkX2xlbiwKKwkJCQkJCQkJCSBzdHJ1Y3QgTm9kZSAqZXNjb250ZXh0KTsKKwog LyoKICAqIFN0cnVjdCBmb3IgZGV0YWlscyBhYm91dCBleHRlcm5hbCB2YXJpYWJsZXMgcGFzc2Vk IGludG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-Not.patch" Content-Disposition: attachment; filename="v9-0002-Allow-Generic-Type-Subscripting-to-Accept-Dot-Not.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaem1 RnJvbSAwNTA3MDNjY2I0ZTE3ODY3MTA3MjJiNDUxZWFiY2YxYTkwOGNkNzYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjoyMToyMCArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djkgMi83XSBBbGxvdyBHZW5lcmljIFR5cGUgU3Vic2NyaXB0aW5nIHRvIEFjY2VwdCBEb3QgTm90 YXRpb24KICguKSBhcyBJbnB1dAoKVGhpcyBjaGFuZ2UgZXh0ZW5kcyBnZW5lcmljIHR5cGUgc3Vi c2NyaXB0aW5nIHRvIHJlY29nbml6ZSBkb3QKbm90YXRpb24gKC4pIGluIGFkZGl0aW9uIHRvIGJy YWNrZXQgbm90YXRpb24gKFtdKS4gV2hpbGUgdGhpcyBkb2VzIG5vdAp5ZXQgcHJvdmlkZSBmdWxs IHN1cHBvcnQgZm9yIGRvdCBub3RhdGlvbiwgaXQgZW5hYmxlcyBzdWJzY3JpcHRpbmcKY29udGFp bmVycyB0byBwcm9jZXNzIGl0IGluIHRoZSBmdXR1cmUuCgpGb3Igbm93LCBjb250YWluZXItc3Bl Y2lmaWMgdHJhbnNmb3JtIGZ1bmN0aW9ucyBvbmx5IGhhbmRsZQpzdWJzY3JpcHRpbmcgaW5kaWNl cyBhbmQgc3RvcCBwcm9jZXNzaW5nIHdoZW4gZW5jb3VudGVyaW5nIGRvdApub3RhdGlvbi4gSXQg aXMgdXAgdG8gaW5kaXZpZHVhbCBjb250YWluZXJzIHRvIGRlY2lkZSBob3cgdG8gdHJhbnNmb3Jt CmRvdCBub3RhdGlvbiBpbiBzdWJzZXF1ZW50IHVwZGF0ZXMuCi0tLQogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYyAgIHwgNjYgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyAgIHwgNDEgKysrKysrKysrKysrKysrKyst LQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIHwgIDMgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheXN1YnMuYyB8IDEzICsrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jIHwgMTEgKysrKystCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o ICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggMmMwZjRhNTBiMjEuLjhlYTUxMTc2 MTk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTQ0Miw4ICs0NDIsOSBAQCB0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAlM aXN0Q2VsbCAgICppOwogCiAJLyoKLQkgKiBXZSBoYXZlIHRvIHNwbGl0IGFueSBmaWVsZC1zZWxl Y3Rpb24gb3BlcmF0aW9ucyBhcGFydCBmcm9tCi0JICogc3Vic2NyaXB0aW5nLiAgQWRqYWNlbnQg QV9JbmRpY2VzIG5vZGVzIGhhdmUgdG8gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZQorCSAqIENvbWJp bmUgZmllbGQgbmFtZXMgYW5kIHN1YnNjcmlwdHMgaW50byBhIHNpbmdsZSBpbmRpcmVjdGlvbiBs aXN0LCBhcworCSAqIHNvbWUgc3Vic2NyaXB0aW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMganNvbmIs IHN1cHBvcnQgZmllbGQgYWNjZXNzIHVzaW5nCisJICogZG90IG5vdGF0aW9uLiBBZGphY2VudCBB X0luZGljZXMgbm9kZXMgaGF2ZSB0byBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlCiAJICogbXVsdGlk aW1lbnNpb25hbCBzdWJzY3JpcHQgb3BlcmF0aW9uLgogCSAqLwogCWZvcmVhY2goaSwgaW5kLT5p bmRpcmVjdGlvbikKQEAgLTQ2MSwxOSArNDYyLDQzIEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCQl9CiAJCWVsc2UKIAkJewot CQkJTm9kZQkgICAqbmV3cmVzdWx0OwotCiAJCQlBc3NlcnQoSXNBKG4sIFN0cmluZykpOworCQkJ c3Vic2NyaXB0cyA9IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7CisJCX0KKwl9CisKKwl3aGlsZSAo c3Vic2NyaXB0cykKKwl7CisJCS8qIHRyeSBwcm9jZXNzaW5nIGNvbnRhaW5lciBzdWJzY3JpcHRz IGZpcnN0ICovCisJCU5vZGUJICAgKm5ld3Jlc3VsdCA9IChOb2RlICopCisJCQl0cmFuc2Zvcm1D b250YWluZXJTdWJzY3JpcHRzKHBzdGF0ZSwKKwkJCQkJCQkJCQkgcmVzdWx0LAorCQkJCQkJCQkJ CSBleHByVHlwZShyZXN1bHQpLAorCQkJCQkJCQkJCSBleHByVHlwbW9kKHJlc3VsdCksCisJCQkJ CQkJCQkJICZzdWJzY3JpcHRzLAorCQkJCQkJCQkJCSBmYWxzZSwKKwkJCQkJCQkJCQkgdHJ1ZSk7 CisKKwkJaWYgKCFuZXdyZXN1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBnZW5lcmljIHN1YnNjcmlw dGluZyBmYWlsZWQ7IGZhbGxpbmcgYmFjayB0byBmdW5jdGlvbiBjYWxsIG9yCisJCQkgKiBmaWVs ZCBzZWxlY3Rpb24gZm9yIGEgY29tcG9zaXRlIHR5cGUuCisJCQkgKi8KKwkJCU5vZGUJICAgKm47 CisKKwkJCUFzc2VydChzdWJzY3JpcHRzKTsKIAotCQkJLyogcHJvY2VzcyBzdWJzY3JpcHRzIGJl Zm9yZSB0aGlzIGZpZWxkIHNlbGVjdGlvbiAqLwotCQkJd2hpbGUgKHN1YnNjcmlwdHMpCi0JCQkJ cmVzdWx0ID0gKE5vZGUgKikgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhwc3RhdGUsCi0J CQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJCQkJCQkJCQkJCQkgICBleHByVHlwZShyZXN1 bHQpLAotCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cG1vZChyZXN1bHQpLAotCQkJCQkJCQkJCQkJ CQkJICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJCQkgICBmYWxzZSk7CisJCQluID0gbGlu aXRpYWwoc3Vic2NyaXB0cyk7CisKKwkJCWlmICghSXNBKG4sIFN0cmluZykpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJ CQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qg c3VwcG9ydCBzdWJzY3JpcHRpbmciLAorCQkJCQkJCQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShy ZXN1bHQpKSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9u KHJlc3VsdCkpKSk7CiAKKwkJCS8qIHRyeSB0byBmaW5kIGZ1bmN0aW9uIGZvciBmaWVsZCBzZWxl Y3Rpb24gKi8KIAkJCW5ld3Jlc3VsdCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJ CQkJCQkgIGxpc3RfbWFrZTEobiksCiAJCQkJCQkJCQkJICBsaXN0X21ha2UxKHJlc3VsdCksCkBA IC00ODEsMTkgKzUwNiwxNiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJCQkJCQkJCQkgIE5VTEwsCiAJCQkJCQkJCQkJICBm YWxzZSwKIAkJCQkJCQkJCQkgIGxvY2F0aW9uKTsKLQkJCWlmIChuZXdyZXN1bHQgPT0gTlVMTCkK KworCQkJaWYgKCFuZXdyZXN1bHQpCiAJCQkJdW5rbm93bl9hdHRyaWJ1dGUocHN0YXRlLCByZXN1 bHQsIHN0clZhbChuKSwgbG9jYXRpb24pOwotCQkJcmVzdWx0ID0gbmV3cmVzdWx0OworCisJCQkv KiBjb25zdW1lIGZpZWxkIHNlbGVjdCAqLworCQkJc3Vic2NyaXB0cyA9IGxpc3RfZGVsZXRlX2Zp cnN0KHN1YnNjcmlwdHMpOwogCQl9CisKKwkJcmVzdWx0ID0gbmV3cmVzdWx0OwogCX0KLQkvKiBw cm9jZXNzIHRyYWlsaW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLwotCXdoaWxlIChzdWJzY3JpcHRz KQotCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKHBzdGF0 ZSwKLQkJCQkJCQkJCQkJCQkgICByZXN1bHQsCi0JCQkJCQkJCQkJCQkJICAgZXhwclR5cGUocmVz dWx0KSwKLQkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJCQkJCQkJ ICAgJnN1YnNjcmlwdHMsCi0JCQkJCQkJCQkJCQkJICAgZmFsc2UpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2RlLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCmluZGV4IDE5YTZiNjc4ZTY3Li5iM2U0NzZlYjE4 MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCkBAIC0yMzgsNiArMjM4LDggQEAgdHJhbnNmb3Jt Q29udGFpbmVyVHlwZShPaWQgKmNvbnRhaW5lclR5cGUsIGludDMyICpjb250YWluZXJUeXBtb2Qp CiAgKiBjb250YWluZXJUeXBNb2QJdHlwbW9kIGZvciB0aGUgY29udGFpbmVyCiAgKiBpbmRpcmVj dGlvbgkJVW50cmFuc2Zvcm1lZCBsaXN0IG9mIHN1YnNjcmlwdHMgKG11c3Qgbm90IGJlIE5JTCkK ICAqIGlzQXNzaWdubWVudAkJVHJ1ZSBpZiB0aGlzIHdpbGwgYmVjb21lIGEgY29udGFpbmVyIGFz c2lnbm1lbnQuCisgKiBub0Vycm9yCQkJVHJ1ZSBmb3IgcmV0dXJuIE5VTEwgd2l0aCBubyBlcnJv ciwgaWYgdGhlIGNvbnRhaW5lciB0eXBlCisgKiAJCQkJCWlzIG5vdCBzdWJzY3JpcHRhYmxlLgog ICovCiBTdWJzY3JpcHRpbmdSZWYgKgogdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJz ZVN0YXRlICpwc3RhdGUsCkBAIC0yNDUsMTMgKzI0NywxNSBAQCB0cmFuc2Zvcm1Db250YWluZXJT dWJzY3JpcHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgT2lkIGNvbnRhaW5lclR5cGUs CiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKIAkJCQkJCQkgTGlzdCAqKmluZGlyZWN0 aW9uLAotCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCkKKwkJCQkJCQkgYm9vbCBpc0Fzc2lnbm1l bnQsCisJCQkJCQkJIGJvb2wgbm9FcnJvcikKIHsKIAlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZjsK IAljb25zdCBTdWJzY3JpcHRSb3V0aW5lcyAqc2Jzcm91dGluZXM7CiAJT2lkCQkJZWxlbWVudFR5 cGU7CiAJYm9vbAkJaXNTbGljZSA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmlkeDsKKwlpbnQJCQlp bmRpcmVjdGlvbl9sZW5ndGggPSBsaXN0X2xlbmd0aCgqaW5kaXJlY3Rpb24pOwogCiAJLyoKIAkg KiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBjb250YWluZXIgdHlwZSwgc21hc2hpbmcgYW55IGRvbWFp bi4gIEluIHRoZQpAQCAtMjY3LDExICsyNzEsMTYgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2Ny aXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICovCiAJc2Jzcm91dGluZXMgPSBnZXRTdWJzY3Jp cHRpbmdSb3V0aW5lcyhjb250YWluZXJUeXBlLCAmZWxlbWVudFR5cGUpOwogCWlmICghc2Jzcm91 dGluZXMpCisJeworCQlpZiAobm9FcnJvcikKKwkJCXJldHVybiBOVUxMOworCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCiAJCQkJIGVy cm1zZygiY2Fubm90IHN1YnNjcmlwdCB0eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9y dCBzdWJzY3JpcHRpbmciLAogCQkJCQkJZm9ybWF0X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAog CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oY29udGFpbmVyQmFz ZSkpKSk7CisJfQogCiAJLyoKIAkgKiBEZXRlY3Qgd2hldGhlciBhbnkgb2YgdGhlIGluZGlyZWN0 aW9uIGl0ZW1zIGFyZSBzbGljZSBzcGVjaWZpZXJzLgpAQCAtMjgyLDkgKzI5MSw5IEBAIHRyYW5z Zm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCSAqLwogCWZvcmVh Y2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2Rl KEFfSW5kaWNlcywgaWR4KTsKKwkJTm9kZQkgICAqYWkgPSBsZmlyc3QoaWR4KTsKIAotCQlpZiAo YWktPmlzX3NsaWNlKQorCQlpZiAoSXNBKGFpLCBBX0luZGljZXMpICYmIGNhc3ROb2RlKEFfSW5k aWNlcywgYWkpLT5pc19zbGljZSkKIAkJewogCQkJaXNTbGljZSA9IHRydWU7CiAJCQlicmVhazsK QEAgLTMxMiw2ICszMjEsMzIgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJc2Jzcm91dGluZXMtPnRyYW5zZm9ybShzYnNyZWYsIGluZGlyZWN0aW9u LCBwc3RhdGUsCiAJCQkJCQkgICBpc1NsaWNlLCBpc0Fzc2lnbm1lbnQpOwogCisJLyoKKwkgKiBF cnJvciBvdXQsIGlmIGRhdGF0eXBlIGZhaWxlZCB0byBjb25zdW1lIGFueSBpbmRpcmVjdGlvbiBl bGVtZW50cy4KKwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoKmluZGlyZWN0aW9uKSA9PSBpbmRpcmVj dGlvbl9sZW5ndGgpCisJeworCQlOb2RlCSAgICppbmQgPSBsaW5pdGlhbCgqaW5kaXJlY3Rpb24p OworCisJCWlmIChub0Vycm9yKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJaWYgKElzQShpbmQsIFN0 cmluZykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidHlwZSAlcyBkb2VzIG5vdCBzdXBwb3J0IGRvdCBu b3RhdGlvbiIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoY29udGFpbmVyVHlwZSkpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGNvbnRhaW5lckJhc2UpKSkp OworCQllbHNlIGlmIChJc0EoaW5kLCBBX0luZGljZXMpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInR5 cGUgJXMgZG9lcyBub3Qgc3VwcG9ydCBhcnJheSBzdWJzY3JpcHRpbmciLAorCQkJCQkJCWZvcm1h dF90eXBlX2JlKGNvbnRhaW5lclR5cGUpKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGV4cHJMb2NhdGlvbihjb250YWluZXJCYXNlKSkpKTsKKwkJZWxzZQorCQkJZWxvZyhFUlJP UiwgImludmFsaWQgaW5kaXJlY3Rpb24gb3BlcmF0aW9uOiAlZCIsIG5vZGVUYWcoaW5kKSk7CisJ fQorCiAJLyoKIAkgKiBWZXJpZnkgd2UgZ290IGEgdmFsaWQgdHlwZSAodGhpcyBkZWZlbmRzLCBm b3IgZXhhbXBsZSwgYWdhaW5zdCBzb21lb25lCiAJICogdXNpbmcgYXJyYXlfc3Vic2NyaXB0X2hh bmRsZXIgYXMgdHlwc3Vic2NyaXB0IHdpdGhvdXQgc2V0dGluZyB0eXBlbGVtKS4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYwppbmRleCA0Njc1YTUyMzA0NS4uM2VmNTg5N2YyZWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdGFyZ2V0LmMKQEAgLTkzNyw3ICs5MzcsOCBAQCB0cmFuc2Zvcm1Bc3NpZ25t ZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJICBjb250YWluZXJU eXBlLAogCQkJCQkJCQkJCSAgY29udGFpbmVyVHlwTW9kLAogCQkJCQkJCQkJCSAgJnN1YnNjcmlw dHMsCi0JCQkJCQkJCQkJICB0cnVlKTsKKwkJCQkJCQkJCQkgIHRydWUsCisJCQkJCQkJCQkJICBm YWxzZSk7CiAKIAl0eXBlTmVlZGVkID0gc2JzcmVmLT5yZWZyZXN0eXBlOwogCXR5cG1vZE5lZWRl ZCA9IHNic3JlZi0+cmVmdHlwbW9kOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5c3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5c3Vicy5jCmluZGV4IDIz NGMyYzI3OGMxLi5kMDNkMzUxOWRmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5c3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYwpAQCAt NjIsNiArNjIsNyBAQCBhcnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAq c2JzcmVmLAogCUxpc3QJICAgKnVwcGVySW5kZXhwciA9IE5JTDsKIAlMaXN0CSAgICpsb3dlcklu ZGV4cHIgPSBOSUw7CiAJTGlzdENlbGwgICAqaWR4OworCWludAkJCW5kaW07CiAKIAkvKgogCSAq IFRyYW5zZm9ybSB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLCBhbmQgc2VwYXJhdGUgdXBwZXIg YW5kIGxvd2VyCkBAIC03Myw5ICs3NCwxNCBAQCBhcnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1 YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCSAqLwogCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24p CiAJewotCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKKwkJ QV9JbmRpY2VzICAqYWk7CiAJCU5vZGUJICAgKnN1YmV4cHI7CiAKKwkJaWYgKCFJc0EobGZpcnN0 KGlkeCksIEFfSW5kaWNlcykpCisJCQlicmVhazsKKworCQlhaSA9IGxmaXJzdF9ub2RlKEFfSW5k aWNlcywgaWR4KTsKKwogCQlpZiAoaXNTbGljZSkKIAkJewogCQkJaWYgKGFpLT5saWR4KQpAQCAt MTQ1LDE0ICsxNTEsMTUgQEAgYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdS ZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciA9IGxvd2VySW5kZXhwcjsKIAog CS8qIFZlcmlmeSBzdWJzY3JpcHQgbGlzdCBsZW5ndGhzIGFyZSB3aXRoaW4gaW1wbGVtZW50YXRp b24gbGltaXQgKi8KLQlpZiAobGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSA+IE1BWERJTSkKKwlu ZGltID0gbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKTsKKwlpZiAobmRpbSA+IE1BWERJTSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1fTElNSVRfRVhDRUVE RUQpLAogCQkJCSBlcnJtc2coIm51bWJlciBvZiBhcnJheSBkaW1lbnNpb25zICglZCkgZXhjZWVk cyB0aGUgbWF4aW11bSBhbGxvd2VkICglZCkiLAogCQkJCQkJbGlzdF9sZW5ndGgodXBwZXJJbmRl eHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQgbm90IGNoZWNrIGxvd2VySW5kZXhwciBzZXBh cmF0ZWx5ICovCiAKLQkqaW5kaXJlY3Rpb24gPSBOSUw7CisJKmluZGlyZWN0aW9uID0gbGlzdF9k ZWxldGVfZmlyc3RfbigqaW5kaXJlY3Rpb24sIG5kaW0pOwogCiAJLyoKIAkgKiBEZXRlcm1pbmUg dGhlIHJlc3VsdCB0eXBlIG9mIHRoZSBzdWJzY3JpcHRpbmcgb3BlcmF0aW9uLiAgSXQncyB0aGUg c2FtZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCmluZGV4IDhhZDZhYTFhZDRmLi5hMGQzOGEw ZmQ4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYnN1YnMuYwpAQCAtNTUsOSArNTUsMTQgQEAganNv bmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkgKi8KIAlm b3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsKLQkJQV9JbmRpY2VzICAqYWkgPSBsZmlyc3Rf bm9kZShBX0luZGljZXMsIGlkeCk7CisJCUFfSW5kaWNlcyAgKmFpOwogCQlOb2RlCSAgICpzdWJF eHByOwogCisJCWlmICghSXNBKGxmaXJzdChpZHgpLCBBX0luZGljZXMpKQorCQkJYnJlYWs7CisK KwkJYWkgPSBsZmlyc3Rfbm9kZShBX0luZGljZXMsIGlkeCk7CisKIAkJaWYgKGlzU2xpY2UpCiAJ CXsKIAkJCU5vZGUJICAgKmV4cHIgPSBhaS0+dWlkeCA/IGFpLT51aWR4IDogYWktPmxpZHg7CkBA IC0xNjAsNyArMTY1LDkgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdS ZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBKU09OQk9JRDsKIAlzYnNyZWYtPnJl ZnR5cG1vZCA9IC0xOwogCi0JKmluZGlyZWN0aW9uID0gTklMOworCS8qIFJlbW92ZSBwcm9jZXNz ZWQgZWxlbWVudHMgKi8KKwlpZiAodXBwZXJJbmRleHByKQorCQkqaW5kaXJlY3Rpb24gPSBsaXN0 X2RlbGV0ZV9maXJzdF9uKCppbmRpcmVjdGlvbiwgbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCA1YWUxMWNjZWMzMy4uNzFiMDRi ZDUwM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzc4LDcgKzM3OCw4IEBAIGV4dGVy biBTdWJzY3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJCSBPaWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJ CQkgaW50MzIgY29udGFpbmVyVHlwTW9kLAogCQkJCQkJCQkJCQkJCSBMaXN0ICoqaW5kaXJlY3Rp b24sCi0JCQkJCQkJCQkJCQkJIGJvb2wgaXNBc3NpZ25tZW50KTsKKwkJCQkJCQkJCQkJCQkgYm9v bCBpc0Fzc2lnbm1lbnQsCisJCQkJCQkJCQkJCQkJIGJvb2wgbm9FcnJvcik7CiBleHRlcm4gQ29u c3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29uc3QpOwogCiAj ZW5kaWYJCQkJCQkJLyogUEFSU0VfTk9ERV9IICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQp Cgo= --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0004-Extract-coerce_jsonpath_subscript.patch" Content-Disposition: attachment; filename="v9-0004-Extract-coerce_jsonpath_subscript.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaep3 RnJvbSBmMDNmYTE2MzAxMjI1NjEwMDYyNTRiOTU4YWI5YzE0ZTRjYjViYzA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmEgV2FuZyA8YWxleGFuZHJhLndhbmcub3NzQGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyNiBGZWIgMjAyNSAxMzowMzoyNyAtMDYwMApTdWJqZWN0OiBb UEFUQ0ggdjkgNC83XSBFeHRyYWN0IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoKQoKVGhpcyBp cyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGEgZnV0dXJlIGNvbW1pdCB0aGF0IHdpbGwgcmV1c2Ug dGhlCmFmb3JlbWVudGlvbmVkIGZ1bmN0aW9uLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYnN1YnMuYyB8IDE0MiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmJzdWJzLmMKaW5kZXggYTBkMzhhMGZkODAuLjNmZmU0MGNmYTQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25ic3Vicy5jCkBAIC0zMiw2ICszMiw4MyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1 YldvcmtzcGFjZQogCURhdHVtCSAgICppbmRleDsJCQkvKiBTdWJzY3JpcHQgdmFsdWVzIGluIERh dHVtIGZvcm1hdCAqLwogfSBKc29uYlN1YldvcmtzcGFjZTsKIAorc3RhdGljIE9pZAoranNvbmJf c3Vic2NyaXB0X3R5cGUoTm9kZSAqZXhwcikKK3sKKwlpZiAoZXhwciAmJiBJc0EoZXhwciwgU3Ry aW5nKSkKKwkJcmV0dXJuIFRFWFRPSUQ7CisKKwlyZXR1cm4gZXhwclR5cGUoZXhwcik7Cit9CisK K3N0YXRpYyBOb2RlICoKK2NvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpzdWJFeHByLCBPaWQgbnVtdHlwZSkKK3sKKwlPaWQJCQlzdWJFeHByVHlwZSA9 IGpzb25iX3N1YnNjcmlwdF90eXBlKHN1YkV4cHIpOworCU9pZAkJCXRhcmdldFR5cGUgPSBVTktO T1dOT0lEOworCisJaWYgKHN1YkV4cHJUeXBlICE9IFVOS05PV05PSUQpCisJeworCQlPaWQJCQl0 YXJnZXRzWzJdID0ge251bXR5cGUsIFRFWFRPSUR9OworCisJCS8qCisJCSAqIEpzb25iIGNhbiBo YW5kbGUgbXVsdGlwbGUgc3Vic2NyaXB0IHR5cGVzLCBidXQgY2FzZXMgd2hlbiBhCisJCSAqIHN1 YnNjcmlwdCBjb3VsZCBiZSBjb2VyY2VkIHRvIG11bHRpcGxlIHRhcmdldCB0eXBlcyBtdXN0IGJl CisJCSAqIGF2b2lkZWQsIHNpbWlsYXIgdG8gb3ZlcmxvYWRlZCBmdW5jdGlvbnMuIEl0IGNvdWxk IGJlIHBvc3NpYmx5CisJCSAqIGV4dGVuZCB3aXRoIGpzb25wYXRoIGluIHRoZSBmdXR1cmUuCisJ CSAqLworCQlmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKKwkJeworCQkJaWYgKGNhbl9jb2Vy Y2VfdHlwZSgxLCAmc3ViRXhwclR5cGUsICZ0YXJnZXRzW2ldLCBDT0VSQ0lPTl9JTVBMSUNJVCkp CisJCQl7CisJCQkJLyoKKwkJCQkgKiBPbmUgdHlwZSBoYXMgYWxyZWFkeSBzdWNjZWVkZWQsIGl0 IG1lYW5zIHRoZXJlIGFyZSB0d28KKwkJCQkgKiBjb2VyY2lvbiB0YXJnZXRzIHBvc3NpYmxlLCBm YWlsdXJlLgorCQkJCSAqLworCQkJCWlmICh0YXJnZXRUeXBlICE9IFVOS05PV05PSUQpCisJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCQkJIGVycm1zZygic3Vic2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIs IGZvcm1hdF90eXBlX2JlKHN1YkV4cHJUeXBlKSksCisJCQkJCQkJIGVycmhpbnQoImpzb25iIHN1 YnNjcmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBvbmx5IG9uZSB0eXBlLCBpbnRlZ2VyIG9yIHRl eHQuIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbihz dWJFeHByKSkpKTsKKworCQkJCXRhcmdldFR5cGUgPSB0YXJnZXRzW2ldOworCQkJfQorCQl9CisK KwkJLyoKKwkJICogTm8gc3VpdGFibGUgdHlwZXMgd2VyZSBmb3VuZCwgZmFpbHVyZS4KKwkJICov CisJCWlmICh0YXJnZXRUeXBlID09IFVOS05PV05PSUQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygic3Vi c2NyaXB0IHR5cGUgJXMgaXMgbm90IHN1cHBvcnRlZCIsIGZvcm1hdF90eXBlX2JlKHN1YkV4cHJU eXBlKSksCisJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3JpcHQgbXVzdCBiZSBjb2VyY2libGUg dG8gZWl0aGVyIGludGVnZXIgb3IgdGV4dC4iKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGV4cHJMb2NhdGlvbihzdWJFeHByKSkpKTsKKwl9CisJZWxzZQorCQl0YXJnZXRUeXBl ID0gVEVYVE9JRDsKKworCS8qCisJICogV2Uga25vd24gZnJvbSBjYW5fY29lcmNlX3R5cGUgdGhh dCBjb2VyY2lvbiB3aWxsIHN1Y2NlZWQsIHNvCisJICogY29lcmNlX3R5cGUgY291bGQgYmUgdXNl ZC4gTm90ZSB0aGUgaW1wbGljaXQgY29lcmNpb24gY29udGV4dCwgd2hpY2ggaXMKKwkgKiByZXF1 aXJlZCB0byBoYW5kbGUgc3Vic2NyaXB0cyBvZiBkaWZmZXJlbnQgdHlwZXMsIHNpbWlsYXIgdG8g b3ZlcmxvYWRlZAorCSAqIGZ1bmN0aW9ucy4KKwkgKi8KKwlzdWJFeHByID0gY29lcmNlX3R5cGUo cHN0YXRlLAorCQkJCQkJICBzdWJFeHByLCBzdWJFeHByVHlwZSwKKwkJCQkJCSAgdGFyZ2V0VHlw ZSwgLTEsCisJCQkJCQkgIENPRVJDSU9OX0lNUExJQ0lULAorCQkJCQkJICBDT0VSQ0VfSU1QTElD SVRfQ0FTVCwKKwkJCQkJCSAgLTEpOworCWlmIChzdWJFeHByID09IE5VTEwpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVy cm1zZygianNvbmIgc3Vic2NyaXB0IG11c3QgaGF2ZSB0ZXh0IHR5cGUiKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1YkV4cHIpKSkpOworCisJcmV0dXJu IHN1YkV4cHI7Cit9CiAKIC8qCiAgKiBGaW5pc2ggcGFyc2UgYW5hbHlzaXMgb2YgYSBTdWJzY3Jp cHRpbmdSZWYgZXhwcmVzc2lvbiBmb3IgYSBqc29uYi4KQEAgLTc1LDcxICsxNTIsOCBAQCBqc29u Yl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCiAJCWlmIChh aS0+dWlkeCkKIAkJewotCQkJT2lkCQkJc3ViRXhwclR5cGUgPSBJbnZhbGlkT2lkLAotCQkJCQkJ dGFyZ2V0VHlwZSA9IFVOS05PV05PSUQ7Ci0KIAkJCXN1YkV4cHIgPSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgYWktPnVpZHgsIHBzdGF0ZS0+cF9leHByX2tpbmQpOwotCQkJc3ViRXhwclR5cGUgPSBl eHByVHlwZShzdWJFeHByKTsKLQotCQkJaWYgKHN1YkV4cHJUeXBlICE9IFVOS05PV05PSUQpCi0J CQl7Ci0JCQkJT2lkCQkJdGFyZ2V0c1syXSA9IHtJTlQ0T0lELCBURVhUT0lEfTsKLQotCQkJCS8q Ci0JCQkJICogSnNvbmIgY2FuIGhhbmRsZSBtdWx0aXBsZSBzdWJzY3JpcHQgdHlwZXMsIGJ1dCBj YXNlcyB3aGVuIGEKLQkJCQkgKiBzdWJzY3JpcHQgY291bGQgYmUgY29lcmNlZCB0byBtdWx0aXBs ZSB0YXJnZXQgdHlwZXMgbXVzdCBiZQotCQkJCSAqIGF2b2lkZWQsIHNpbWlsYXIgdG8gb3Zlcmxv YWRlZCBmdW5jdGlvbnMuIEl0IGNvdWxkIGJlCi0JCQkJICogcG9zc2libHkgZXh0ZW5kIHdpdGgg anNvbnBhdGggaW4gdGhlIGZ1dHVyZS4KLQkJCQkgKi8KLQkJCQlmb3IgKGludCBpID0gMDsgaSA8 IDI7IGkrKykKLQkJCQl7Ci0JCQkJCWlmIChjYW5fY29lcmNlX3R5cGUoMSwgJnN1YkV4cHJUeXBl LCAmdGFyZ2V0c1tpXSwgQ09FUkNJT05fSU1QTElDSVQpKQotCQkJCQl7Ci0JCQkJCQkvKgotCQkJ CQkJICogT25lIHR5cGUgaGFzIGFscmVhZHkgc3VjY2VlZGVkLCBpdCBtZWFucyB0aGVyZSBhcmUK LQkJCQkJCSAqIHR3byBjb2VyY2lvbiB0YXJnZXRzIHBvc3NpYmxlLCBmYWlsdXJlLgotCQkJCQkJ ICovCi0JCQkJCQlpZiAodGFyZ2V0VHlwZSAhPSBVTktOT1dOT0lEKQotCQkJCQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJ CQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBlICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3Jt YXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAotCQkJCQkJCQkJIGVycmhpbnQoImpzb25iIHN1YnNj cmlwdCBtdXN0IGJlIGNvZXJjaWJsZSB0byBvbmx5IG9uZSB0eXBlLCBpbnRlZ2VyIG9yIHRleHQu IiksCi0JCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1 YkV4cHIpKSkpOwotCi0JCQkJCQl0YXJnZXRUeXBlID0gdGFyZ2V0c1tpXTsKLQkJCQkJfQotCQkJ CX0KLQotCQkJCS8qCi0JCQkJICogTm8gc3VpdGFibGUgdHlwZXMgd2VyZSBmb3VuZCwgZmFpbHVy ZS4KLQkJCQkgKi8KLQkJCQlpZiAodGFyZ2V0VHlwZSA9PSBVTktOT1dOT0lEKQotCQkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAot CQkJCQkJCSBlcnJtc2coInN1YnNjcmlwdCB0eXBlICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBmb3Jt YXRfdHlwZV9iZShzdWJFeHByVHlwZSkpLAotCQkJCQkJCSBlcnJoaW50KCJqc29uYiBzdWJzY3Jp cHQgbXVzdCBiZSBjb2VyY2libGUgdG8gZWl0aGVyIGludGVnZXIgb3IgdGV4dC4iKSwKLQkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1YkV4cHIpKSkpOwot CQkJfQotCQkJZWxzZQotCQkJCXRhcmdldFR5cGUgPSBURVhUT0lEOwotCi0JCQkvKgotCQkJICog V2Uga25vd24gZnJvbSBjYW5fY29lcmNlX3R5cGUgdGhhdCBjb2VyY2lvbiB3aWxsIHN1Y2NlZWQs IHNvCi0JCQkgKiBjb2VyY2VfdHlwZSBjb3VsZCBiZSB1c2VkLiBOb3RlIHRoZSBpbXBsaWNpdCBj b2VyY2lvbiBjb250ZXh0LAotCQkJICogd2hpY2ggaXMgcmVxdWlyZWQgdG8gaGFuZGxlIHN1YnNj cmlwdHMgb2YgZGlmZmVyZW50IHR5cGVzLAotCQkJICogc2ltaWxhciB0byBvdmVybG9hZGVkIGZ1 bmN0aW9ucy4KLQkJCSAqLwotCQkJc3ViRXhwciA9IGNvZXJjZV90eXBlKHBzdGF0ZSwKLQkJCQkJ CQkJICBzdWJFeHByLCBzdWJFeHByVHlwZSwKLQkJCQkJCQkJICB0YXJnZXRUeXBlLCAtMSwKLQkJ CQkJCQkJICBDT0VSQ0lPTl9JTVBMSUNJVCwKLQkJCQkJCQkJICBDT0VSQ0VfSU1QTElDSVRfQ0FT VCwKLQkJCQkJCQkJICAtMSk7Ci0JCQlpZiAoc3ViRXhwciA9PSBOVUxMKQotCQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJ CSBlcnJtc2coImpzb25iIHN1YnNjcmlwdCBtdXN0IGhhdmUgdGV4dCB0eXBlIiksCi0JCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHN1YkV4cHIpKSkpOworCQkJ c3ViRXhwciA9IGNvZXJjZV9qc29ucGF0aF9zdWJzY3JpcHQocHN0YXRlLCBzdWJFeHByLCBJTlQ0 T0lEKTsKIAkJfQogCQllbHNlCiAJCXsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0001-Allow-transformation-of-only-a-sublist-of-subscri.patch" Content-Disposition: attachment; filename="v9-0001-Allow-transformation-of-only-a-sublist-of-subscri.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaeg0 RnJvbSBiZDk0NmRiODhkMGYxNDlmMDczZjc2ZWFhMjUwMWU0ODQ1YjliMmI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IEZyaSwgMTQgT2N0IDIwMjIgMTU6MzU6MjIgKzAzMDAKU3ViamVjdDogW1BBVENI IHY5IDEvN10gQWxsb3cgdHJhbnNmb3JtYXRpb24gb2Ygb25seSBhIHN1Ymxpc3Qgb2Ygc3Vic2Ny aXB0cwoKVGhpcyBpcyBhIHByZXBhcmF0aW9uIHN0ZXAgZm9yIGFsbG93aW5nIHN1YnNjcmlwdGlu ZyBjb250YWluZXJzIHRvCnRyYW5zZm9ybSBvbmx5IGEgcHJlZml4IG9mIGFuIGluZGlyZWN0aW9u IGxpc3QgYW5kIG1vZGlmeSB0aGUgbGlzdAppbi1wbGFjZSBieSByZW1vdmluZyB0aGUgcHJvY2Vz c2VkIGVsZW1lbnRzLiBDdXJyZW50bHksIGFsbCBlbGVtZW50cwphcmUgY29uc3VtZWQsIGFuZCB0 aGUgbGlzdCBpcyBzZXQgdG8gTklMIGFmdGVyIHRyYW5zZm9ybWF0aW9uLgoKSW4gdGhlIGZvbGxv d2luZyBjb21taXQsIHN1YnNjcmlwdGluZyBjb250YWluZXJzIHdpbGwgZ2FpbiB0aGUKZmxleGli aWxpdHkgdG8gc3RvcCB0cmFuc2Zvcm1hdGlvbiB3aGVuIGVuY291bnRlcmluZyBhbiB1bnN1cHBv cnRlZAppbmRpcmVjdGlvbiBhbmQgcmV0dXJuIHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIHRv IHRoZSBjYWxsZXIuCi0tLQogY29udHJpYi9oc3RvcmUvaHN0b3JlX3N1YnMuYyAgICAgIHwgMTAg KysrKysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgIHwgIDkgKysrKy0t LS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfbm9kZS5jICAgfCAgNCArKy0tCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FycmF5c3Vicy5jIHwgIDYgKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJzdWJz LmMgfCAgNiArKysrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3N1YnNjcmlwdGluZy5oICB8ICA3ICsr KysrKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICB8ICAyICstCiA4IGZpbGVz IGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvaHN0b3JlL2hzdG9yZV9zdWJzLmMgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vi cy5jCmluZGV4IDNkMDNmNjZmYTBkLi4xYjI5NTQzYWI2NyAxMDA2NDQKLS0tIGEvY29udHJpYi9o c3RvcmUvaHN0b3JlX3N1YnMuYworKysgYi9jb250cmliL2hzdG9yZS9oc3RvcmVfc3Vicy5jCkBA IC00MCw3ICs0MCw3IEBACiAgKi8KIHN0YXRpYyB2b2lkCiBoc3RvcmVfc3Vic2NyaXB0X3RyYW5z Zm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgIExpc3QgKmluZGlyZWN0aW9u LAorCQkJCQkJICAgTGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJICAgYm9vbCBpc1NsaWNlLAogCQkJCQkJICAgYm9vbCBpc0Fzc2lnbm1lbnQp CkBAIC00OSwxNSArNDksMTUgQEAgaHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0 aW5nUmVmICpzYnNyZWYsCiAJTm9kZQkgICAqc3ViZXhwcjsKIAogCS8qIFdlIHN1cHBvcnQgb25s eSBzaW5nbGUtc3Vic2NyaXB0LCBub24tc2xpY2UgY2FzZXMgKi8KLQlpZiAoaXNTbGljZSB8fCBs aXN0X2xlbmd0aChpbmRpcmVjdGlvbikgIT0gMSkKKwlpZiAoaXNTbGljZSB8fCBsaXN0X2xlbmd0 aCgqaW5kaXJlY3Rpb24pICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImhzdG9yZSBhbGxvd3Mg b25seSBvbmUgc3Vic2NyaXB0IiksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCi0J CQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgaW5kaXJlY3Rpb24pKSkpOworCQkJCQkJCQkJ ZXhwckxvY2F0aW9uKChOb2RlICopICppbmRpcmVjdGlvbikpKSk7CiAKIAkvKiBUcmFuc2Zvcm0g dGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIHRvIHR5cGUgdGV4dCAqLwotCWFpID0gbGluaXRpYWxf bm9kZShBX0luZGljZXMsIGluZGlyZWN0aW9uKTsKKwlhaSA9IGxpbml0aWFsX25vZGUoQV9JbmRp Y2VzLCAqaW5kaXJlY3Rpb24pOwogCUFzc2VydChhaS0+dWlkeCAhPSBOVUxMICYmIGFpLT5saWR4 ID09IE5VTEwgJiYgIWFpLT5pc19zbGljZSk7CiAKIAlzdWJleHByID0gdHJhbnNmb3JtRXhwcihw c3RhdGUsIGFpLT51aWR4LCBwc3RhdGUtPnBfZXhwcl9raW5kKTsKQEAgLTgxLDYgKzgxLDggQEAg aHN0b3JlX3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJLyog RGV0ZXJtaW5lIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUgc3Vic2NyaXB0aW5nIG9wZXJhdGlvbjsg YWx3YXlzIHRleHQgKi8KIAlzYnNyZWYtPnJlZnJlc3R5cGUgPSBURVhUT0lEOwogCXNic3JlZi0+ cmVmdHlwbW9kID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwppbmRleCBiYWQxZGY3MzJlYS4uMmMwZjRhNTBiMjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwpAQCAtNDY2LDE0ICs0NjYsMTMgQEAgdHJhbnNmb3JtSW5kaXJlY3Rpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpCiAJCQlBc3NlcnQoSXNBKG4s IFN0cmluZykpOwogCiAJCQkvKiBwcm9jZXNzIHN1YnNjcmlwdHMgYmVmb3JlIHRoaXMgZmllbGQg c2VsZWN0aW9uICovCi0JCQlpZiAoc3Vic2NyaXB0cykKKwkJCXdoaWxlIChzdWJzY3JpcHRzKQog CQkJCXJlc3VsdCA9IChOb2RlICopIHRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMocHN0YXRl LAogCQkJCQkJCQkJCQkJCQkJICAgcmVzdWx0LAogCQkJCQkJCQkJCQkJCQkJICAgZXhwclR5cGUo cmVzdWx0KSwKIAkJCQkJCQkJCQkJCQkJCSAgIGV4cHJUeXBtb2QocmVzdWx0KSwKLQkJCQkJCQkJ CQkJCQkJCSAgIHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJ CQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKLQkJCXN1YnNjcmlwdHMgPSBOSUw7CiAKIAkJCW5ld3Jl c3VsdCA9IFBhcnNlRnVuY09yQ29sdW1uKHBzdGF0ZSwKIAkJCQkJCQkJCQkgIGxpc3RfbWFrZTEo biksCkBAIC00ODgsMTIgKzQ4NywxMiBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJfQogCX0KIAkvKiBwcm9jZXNzIHRyYWls aW5nIHN1YnNjcmlwdHMsIGlmIGFueSAqLwotCWlmIChzdWJzY3JpcHRzKQorCXdoaWxlIChzdWJz Y3JpcHRzKQogCQlyZXN1bHQgPSAoTm9kZSAqKSB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRz KHBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgICByZXN1bHQsCiAJCQkJCQkJCQkJCQkJICAgZXhwclR5 cGUocmVzdWx0KSwKIAkJCQkJCQkJCQkJCQkgICBleHByVHlwbW9kKHJlc3VsdCksCi0JCQkJCQkJ CQkJCQkJICAgc3Vic2NyaXB0cywKKwkJCQkJCQkJCQkJCQkgICAmc3Vic2NyaXB0cywKIAkJCQkJ CQkJCQkJCQkgICBmYWxzZSk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX25vZGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2Rl LmMKaW5kZXggZDZmZWIxNmFlZjMuLjE5YTZiNjc4ZTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ub2Rl LmMKQEAgLTI0NCw3ICsyNDQsNyBAQCB0cmFuc2Zvcm1Db250YWluZXJTdWJzY3JpcHRzKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgTm9kZSAqY29udGFpbmVyQmFzZSwKIAkJCQkJCQkgT2lk IGNvbnRhaW5lclR5cGUsCiAJCQkJCQkJIGludDMyIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkg TGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJCQkJIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkg Ym9vbCBpc0Fzc2lnbm1lbnQpCiB7CiAJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWY7CkBAIC0yODAs NyArMjgwLDcgQEAgdHJhbnNmb3JtQ29udGFpbmVyU3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJICogZWxlbWVudC4gIElmIGFueSBvZiB0aGUgaXRlbXMgYXJlIHNsaWNlIHNwZWNpZmll cnMgKGxvd2VyOnVwcGVyKSwgdGhlbgogCSAqIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBtZWFu cyBhIGNvbnRhaW5lciBzbGljZSBvcGVyYXRpb24uCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGly ZWN0aW9uKQorCWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICph aSA9IGxmaXJzdF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Rhcmdl dC5jCmluZGV4IDRhYmEwZDlkNGQ1Li40Njc1YTUyMzA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYwpAQCAtOTM2LDcgKzkzNiw3IEBAIHRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3JpcHRz KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkgIGJhc2Vub2RlLAogCQkJCQkJCQkJCSAg Y29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkgIGNvbnRhaW5lclR5cE1vZCwKLQkJCQkJCQkJCQkg IHN1YnNjcmlwdHMsCisJCQkJCQkJCQkJICAmc3Vic2NyaXB0cywKIAkJCQkJCQkJCQkgIHRydWUp OwogCiAJdHlwZU5lZWRlZCA9IHNic3JlZi0+cmVmcmVzdHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eXN1YnMuYwppbmRleCAyOTQwZmI4ZThkNy4uMjM0YzJjMjc4YzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9hcnJheXN1YnMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv YXJyYXlzdWJzLmMKQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlTdWJXb3Jr c3BhY2UKICAqLwogc3RhdGljIHZvaWQKIGFycmF5X3N1YnNjcmlwdF90cmFuc2Zvcm0oU3Vic2Ny aXB0aW5nUmVmICpzYnNyZWYsCi0JCQkJCQkgIExpc3QgKmluZGlyZWN0aW9uLAorCQkJCQkJICBM aXN0ICoqaW5kaXJlY3Rpb24sCiAJCQkJCQkgIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAg Ym9vbCBpc1NsaWNlLAogCQkJCQkJICBib29sIGlzQXNzaWdubWVudCkKQEAgLTcxLDcgKzcxLDcg QEAgYXJyYXlfc3Vic2NyaXB0X3RyYW5zZm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAkg KiBpbmRpcmVjdGlvbiBpdGVtcyB0byBzbGljZXMgYnkgdHJlYXRpbmcgdGhlIHNpbmdsZSBzdWJz Y3JpcHQgYXMgdGhlCiAJICogdXBwZXIgYm91bmQgYW5kIHN1cHBseWluZyBhbiBhc3N1bWVkIGxv d2VyIGJvdW5kIG9mIDEuCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQorCWZvcmVh Y2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJzdF9ub2Rl KEFfSW5kaWNlcywgaWR4KTsKIAkJTm9kZQkgICAqc3ViZXhwcjsKQEAgLTE1Miw2ICsxNTIsOCBA QCBhcnJheV9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQkJ CQkJbGlzdF9sZW5ndGgodXBwZXJJbmRleHByKSwgTUFYRElNKSkpOwogCS8qIFdlIG5lZWQgbm90 IGNoZWNrIGxvd2VySW5kZXhwciBzZXBhcmF0ZWx5ICovCiAKKwkqaW5kaXJlY3Rpb24gPSBOSUw7 CisKIAkvKgogCSAqIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGlu ZyBvcGVyYXRpb24uICBJdCdzIHRoZSBzYW1lCiAJICogYXMgdGhlIGFycmF5IHR5cGUgaWYgd2Un cmUgc2xpY2luZywgZWxzZSBpdCdzIHRoZSBlbGVtZW50IHR5cGUuICBJbgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jCmluZGV4IGRlNjRkNDk4NTEyLi44YWQ2YWExYWQ0ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwpAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBKc29uYlN1 YldvcmtzcGFjZQogICovCiBzdGF0aWMgdm9pZAoganNvbmJfc3Vic2NyaXB0X3RyYW5zZm9ybShT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKLQkJCQkJCSAgTGlzdCAqaW5kaXJlY3Rpb24sCisJCQkJ CQkgIExpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJICBib29sIGlzU2xpY2UsCiAJCQkJCQkgIGJvb2wgaXNBc3NpZ25tZW50KQpAQCAtNTMsNyAr NTMsNyBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVm LAogCSAqIFRyYW5zZm9ybSBhbmQgY29udmVydCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb25zLiBK c29uYiBzdWJzY3JpcHRpbmcKIAkgKiBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcywgbG9vayBvbmx5 IGFuZCB0aGUgdXBwZXIgaW5kZXguCiAJICovCi0JZm9yZWFjaChpZHgsIGluZGlyZWN0aW9uKQor CWZvcmVhY2goaWR4LCAqaW5kaXJlY3Rpb24pCiAJewogCQlBX0luZGljZXMgICphaSA9IGxmaXJz dF9ub2RlKEFfSW5kaWNlcywgaWR4KTsKIAkJTm9kZQkgICAqc3ViRXhwcjsKQEAgLTE1OSw2ICsx NTksOCBAQCBqc29uYl9zdWJzY3JpcHRfdHJhbnNmb3JtKFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVm LAogCS8qIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVy YXRpb247IGFsd2F5cyBqc29uYiAqLwogCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwog CXNic3JlZi0+cmVmdHlwbW9kID0gLTE7CisKKwkqaW5kaXJlY3Rpb24gPSBOSUw7CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9zdWJzY3JpcHRpbmcuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3N1YnNjcmlwdGluZy5oCmluZGV4IDIzNGU4YWQ4MDEyLi41ZDU3NmFmMzQ2ZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvc3Vic2NyaXB0aW5nLmgKQEAgLTcxLDYgKzcxLDExIEBAIHN0cnVjdCBTdWJz Y3JpcHRFeGVjU3RlcHM7CiAgKiBkb2VzIG5vdCBjYXJlIHRvIHN1cHBvcnQgc2xpY2luZywgaXQg Y2FuIGp1c3QgdGhyb3cgYW4gZXJyb3IgaWYgaXNTbGljZS4pCiAgKiBTZWUgYXJyYXlfc3Vic2Ny aXB0X3RyYW5zZm9ybSgpIGZvciBzYW1wbGUgY29kZS4KICAqCisgKiBUaGUgdHJhbnNmb3JtIG1l dGhvZCByZWNlaXZlcyBhIHBvaW50ZXIgdG8gYSBsaXN0IG9mIHJhdyBpbmRpcmVjdGlvbnMuCisg KiBUaGlzIGFsbG93cyB0aGUgbWV0aG9kIHRvIHBhcnNlIGEgc3VibGlzdCBvZiB0aGUgaW5kaXJl Y3Rpb25zICh0eXBpY2FsbHkKKyAqIHRoZSBwcmVmaXgpIGFuZCBtb2RpZnkgdGhlIG9yaWdpbmFs IGxpc3QgaW4gcGxhY2UsIGVuYWJsaW5nIHRoZSBjYWxsZXIgdG8KKyAqIGVpdGhlciBwcm9jZXNz IHRoZSByZW1haW5pbmcgaW5kaXJlY3Rpb25zIGRpZmZlcmVudGx5IG9yIHJhaXNlIGFuIGVycm9y LgorICoKICAqIFRoZSB0cmFuc2Zvcm0gbWV0aG9kIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGlk ZW50aWZ5aW5nIHRoZSByZXN1bHQgdHlwZQogICogb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRp b24uICBBdCBjYWxsLCByZWZjb250YWluZXJ0eXBlIGFuZCByZWZ0eXBtb2QKICAqIGRlc2NyaWJl IHRoZSBjb250YWluZXIgdHlwZSAodGhpcyB3aWxsIGJlIGEgYmFzZSB0eXBlIG5vdCBhIGRvbWFp biksIGFuZApAQCAtOTMsNyArOTgsNyBAQCBzdHJ1Y3QgU3Vic2NyaXB0RXhlY1N0ZXBzOwogICog YXNzaWdubWVudCBtdXN0IHJldHVybi4KICAqLwogdHlwZWRlZiB2b2lkICgqU3Vic2NyaXB0VHJh bnNmb3JtKSAoU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCi0JCQkJCQkJCQlMaXN0ICppbmRpcmVj dGlvbiwKKwkJCQkJCQkJCUxpc3QgKippbmRpcmVjdGlvbiwKIAkJCQkJCQkJCXN0cnVjdCBQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlib29sIGlzU2xpY2UsCiAJCQkJCQkJCQlib29sIGlz QXNzaWdubWVudCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCA5OTQyODQwMTlmYi4uNWFl MTFjY2VjMzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMzc3LDcgKzM3Nyw3IEBAIGV4 dGVybiBTdWJzY3JpcHRpbmdSZWYgKnRyYW5zZm9ybUNvbnRhaW5lclN1YnNjcmlwdHMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJCSBOb2RlICpjb250YWluZXJCYXNlLAogCQkJCQkJ CQkJCQkJCSBPaWQgY29udGFpbmVyVHlwZSwKIAkJCQkJCQkJCQkJCQkgaW50MzIgY29udGFpbmVy VHlwTW9kLAotCQkJCQkJCQkJCQkJCSBMaXN0ICppbmRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJCQkg TGlzdCAqKmluZGlyZWN0aW9uLAogCQkJCQkJCQkJCQkJCSBib29sIGlzQXNzaWdubWVudCk7CiBl eHRlcm4gQ29uc3QgKm1ha2VfY29uc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0NvbnN0ICphY29u c3QpOwogCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0006-Implement-read-only-dot-notation-for-jsonb.patch" Content-Disposition: attachment; filename="v9-0006-Implement-read-only-dot-notation-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaer5 RnJvbSAxMTMyMWMyYzkzZGI5YTZmNjMyMTdkNzg0NTZjY2JjZDc3MWNkYjZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNzo1MyArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djkgNi83XSBJbXBsZW1lbnQgcmVhZC1vbmx5IGRvdCBub3RhdGlvbiBmb3IganNvbmIKClRoaXMg cGF0Y2ggaW50cm9kdWNlcyBKU09OQiBtZW1iZXIgYWNjZXNzIHVzaW5nIGRvdCBub3RhdGlvbiwg d2lsZGNhcmQKYWNjZXNzLCBhbmQgYXJyYXkgc3Vic2NyaXB0aW5nIHdpdGggc2xpY2luZywgYWxp Z25pbmcgd2l0aCB0aGUgSlNPTgpzaW1wbGlmaWVkIGFjY2Vzc29yIHNwZWNpZmllZCBpbiBTUUw6 MjAyMy4gU3BlY2lmaWNhbGx5LCB0aGUgZm9sbG93aW5nCnN5bnRheCBlbmhhbmNlbWVudHMgYXJl IGFkZGVkOgoKMS4gU2ltcGxlIGRvdC1ub3RhdGlvbiBhY2Nlc3MgdG8gSlNPTkIgb2JqZWN0IGZp ZWxkcwoyLiBXaWxkY2FyZCBkb3Qtbm90YXRpb24gYWNjZXNzIHRvIEpTT05CIG9iamVjdCBmaWVs ZHMKMi4gU3Vic2NyaXB0aW5nIGZvciBpbmRleCByYW5nZSBhY2Nlc3MgdG8gSlNPTkIgYXJyYXkg ZWxlbWVudHMKCkV4YW1wbGVzOgoKLS0gU2V0dXAKY3JlYXRlIHRhYmxlIHQoeCBpbnQsIHkganNv bmIpOwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMSwgImIiOiA0Mn0nOjpqc29uYjsK aW5zZXJ0IGludG8gdCBzZWxlY3QgMSwgJ3siYSI6IDIsICJiIjogeyJjIjogNDJ9fSc6Ompzb25i OwppbnNlcnQgaW50byB0IHNlbGVjdCAxLCAneyJhIjogMywgImIiOiB7ImMiOiAiNDIifSwgImQi OlsxMSwgMTJdfSc6Ompzb25iOwoKLS0gRXhpc3Rpbmcgc3ludGF4IHByZWRhdGVzIHRoZSBTUUwg c3RhbmRhcmQ6CnNlbGVjdCAodC55KS0+J2InIGZyb20gdDsKc2VsZWN0ICh0LnkpLT4nYictPidj JyBmcm9tIHQ7CnNlbGVjdCAodC55KS0+J2QnLT4wIGZyb20gdDsKCi0tIEpTT04gc2ltcGxpZmll ZCBhY2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIFNRTCBzdGFuZGFyZDoKc2VsZWN0ICh0LnkpLmIg ZnJvbSB0OwpzZWxlY3QgKHQueSkuYi5jIGZyb20gdDsKc2VsZWN0ICh0LnkpLmRbMF0gZnJvbSB0 OwoKVGhlIFNRTCBzdGFuZGFyZCBzdGF0ZXMgdGhhdCBzaW1wbGlmaWVkIGFjY2VzcyBpcyBlcXVp dmFsZW50IHRvOgpKU09OX1FVRVJZIChWRVAsICdsYXggJC5KQycgV0lUSCBDT05ESVRJT05BTCBB UlJBWSBXUkFQUEVSIE5VTEwgT04gRU1QVFkgTlVMTCBPTiBFUlJPUikKCndoZXJlOgogIFZFUCA9 IDx2YWx1ZSBleHByZXNzaW9uIHByaW1hcnk+CiAgSkMgPSA8SlNPTiBzaW1wbGlmaWVkIGFjY2Vz c29yIG9wIGNoYWluPgoKRm9yIGV4YW1wbGUsIHRoZSBKU09OX1FVRVJZIGVxdWl2YWxlbnRzIG9m IHRoZSBhYm92ZSBxdWVyaWVzIGFyZToKCnNlbGVjdCBqc29uX3F1ZXJ5KHksICdsYXggJC5iJyBX SVRIIENPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIgTlVMTCBPTiBFTVBUWSBOVUxMIE9OIEVSUk9S KSBmcm9tIHQ7CnNlbGVjdCBqc29uX3F1ZXJ5KHksICdsYXggJC5iLmMnIFdJVEggQ09ORElUSU9O QUwgQVJSQVkgV1JBUFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGZyb20gdDsKc2Vs ZWN0IGpzb25fcXVlcnkoeSwgJ2xheCAkLmRbMF0nIFdJVEggQ09ORElUSU9OQUwgQVJSQVkgV1JB UFBFUiBOVUxMIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpIGZyb20gdDsKCkltcGxlbWVudGF0aW9u IGRldGFpbHM6CgpFeHRlbmRzIHRoZSBleGlzdGluZyBjb250YWluZXIgc3Vic2NyaXB0aW5nIGlu dGVyZmFjZSB0byBzdXBwb3J0CmNvbnRhaW5lci1zcGVjaWZpYyBpbmZvcm1hdGlvbiwgc3BlY2lm aWNhbGx5IGEgSlNPTlBhdGggZXhwcmVzc2lvbiBmb3IKanNvbmIuCgpEdXJpbmcgcXVlcnkgdHJh bnNmb3JtYXRpb24sIGRldGVjdHMgZG90LW5vdGF0aW9uLCB3aWxkY2FyZCBhY2Nlc3MsCmFuZCBz bGljZWQgc3Vic2NyaXB0aW5nLiBJZiBhbnkgb2YgdGhlc2UgYWNjZXNzb3JzIGFyZSBwcmVzZW50 LApjb25zdHJ1Y3RzIGEgSlNPTlBhdGggZXhwcmVzc2lvbiByZXByZXNlbnRpbmcgdGhlIGFjY2Vz cyBjaGFpbi4KCkR1cmluZyBleGVjdXRpb24sIGlmIGEgSlNPTlBhdGggZXhwcmVzc2lvbiBpcyBw cmVzZW50IGluCkpzb25iU3ViV29ya3NwYWNlLCBleGVjdXRlcyBpdCB2aWEgSnNvblBhdGhRdWVy eSgpLgoKRG9lcyBub3QgdHJhbnNmb3JtIGFjY2Vzc29ycyBkaXJlY3RseSBpbnRvIEpTT05fUVVF UlkgZHVyaW5nCnRyYW5zZm9ybWF0aW9uIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBxdWVyeSBz dHJ1Y3R1cmUgZm9yIEVYUExBSU4KYW5kIENSRUFURSBWSUVXLgotLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uYnN1YnMuYyAgIHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0K IHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgIHwgICA3ICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IHwgMjQ5ICsrKysrKysrKysrKysrKysrKysrKystCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAgICB8ICA0NSArKysrKwogNCBmaWxlcyBj aGFuZ2VkLCA1NjggaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25ic3Vicy5jCmluZGV4IDNmZmU0MGNmYTQwLi40MDljYjIwNTM5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25ic3Vicy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uYnN1YnMuYwpAQCAtMTUsMjEgKzE1LDMwIEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCisjaW5jbHVkZSAibm9kZXMvbWFr ZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMv c3Vic2NyaXB0aW5nLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9leHByLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCiAKIAot LyogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBqc29uYiBzdWJzY3JpcHRpbmcg ZXhlY3V0aW9uICovCisvKgorICogU3Vic2NyaXB0aW5nUmVmU3RhdGUud29ya3NwYWNlIGZvciBn ZW5lcmljIGpzb25iIHN1YnNjcmlwdGluZyBleGVjdXRpb24uCisgKgorICogU3RvcmVzIHN0YXRl IGZvciBib3RoIGpzb25iIHNpbXBsZSBzdWJzY3JpcHRpbmcgYW5kIGRvdCBub3RhdGlvbiBhY2Nl c3MuCisgKiBEb3Qgbm90YXRpb24gYWRkaXRpb25hbGx5IHVzZXMgYGpzb25wYXRoYCBmb3IgSnNv blBhdGggZXZhbHVhdGlvbi4KKyAqLwogdHlwZWRlZiBzdHJ1Y3QgSnNvbmJTdWJXb3Jrc3BhY2UK IHsKIAlib29sCQlleHBlY3RBcnJheTsJLyoganNvbmIgcm9vdCBpcyBleHBlY3RlZCB0byBiZSBh biBhcnJheSAqLwogCU9pZAkJICAgKmluZGV4T2lkOwkJLyogT0lEIG9mIGNvZXJjZWQgc3Vic2Ny aXB0IGV4cHJlc3Npb24sIGNvdWxkCiAJCQkJCQkJCSAqIGJlIG9ubHkgaW50ZWdlciBvciB0ZXh0 ICovCiAJRGF0dW0JICAgKmluZGV4OwkJCS8qIFN1YnNjcmlwdCB2YWx1ZXMgaW4gRGF0dW0gZm9y bWF0ICovCisJSnNvblBhdGggICAqanNvbnBhdGg7CQkvKiBKc29uUGF0aCBmb3IgZG90IG5vdGF0 aW9uIGV4ZWN1dGlvbiB2aWEKKwkJCQkJCQkJICogSnNvblBhdGhRdWVyeSgpICovCiB9IEpzb25i U3ViV29ya3NwYWNlOwogCiBzdGF0aWMgT2lkCkBAIC0xMTAsNiArMTE5LDIyOCBAQCBjb2VyY2Vf anNvbnBhdGhfc3Vic2NyaXB0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqc3ViRXhwciwgT2lk IG51bXR5cGUpCiAJcmV0dXJuIHN1YkV4cHI7CiB9CiAKKy8qCisgKiBEdXJpbmcgdHJhbnNmb3Jt YXRpb24sIGRldGVybWluZSB3aGV0aGVyIHRvIGJ1aWxkIGEgSnNvblBhdGgKKyAqIGZvciBKc29u UGF0aFF1ZXJ5KCkgZXhlY3V0aW9uLgorICoKKyAqIEpzb25QYXRoIGlzIG5lZWRlZCBpZiB0aGUg aW5kaXJlY3Rpb24gbGlzdCBpbmNsdWRlczoKKyAqIC0gU3RyaW5nLWJhc2VkIGFjY2VzcyAoZG90 IG5vdGF0aW9uKQorICogLSBXaWxkY2FyZCAoYCpgKQorICogLSBTbGljZS1iYXNlZCBzdWJzY3Jp cHRpbmcKKyAqCisgKiBPdGhlcndpc2UsIHNpbXBsZSBqc29uYiBzdWJzY3JpcHRpbmcgaXMgc3Vm ZmljaWVudC4KKyAqLworc3RhdGljIGJvb2wKK2pzb25iX2NoZWNrX2pzb25wYXRoX25lZWRlZChM aXN0ICppbmRpcmVjdGlvbikKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGlu ZGlyZWN0aW9uKQorCXsKKwkJTm9kZQkgICAqYWNjZXNzb3IgPSBsZmlyc3QobGMpOworCisJCWlm IChJc0EoYWNjZXNzb3IsIFN0cmluZykgfHwKKwkJCUlzQShhY2Nlc3NvciwgQV9TdGFyKSkKKwkJ CXJldHVybiB0cnVlOworCQllbHNlCisJCXsKKwkJCUFfSW5kaWNlcyAgKmFpOworCisJCQlBc3Nl cnQoSXNBKGFjY2Vzc29yLCBBX0luZGljZXMpKTsKKwkJCWFpID0gY2FzdE5vZGUoQV9JbmRpY2Vz LCBhY2Nlc3Nvcik7CisKKwkJCWlmICghYWktPnVpZHggfHwgYWktPmxpZHgpCisJCQl7CisJCQkJ QXNzZXJ0KGFpLT5pc19zbGljZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBjb25zdHJ1 Y3RpbmcgSnNvblBhdGggZXhwcmVzc2lvbnMuCisgKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlv bnMgY3JlYXRlIHZhcmlvdXMgdHlwZXMgb2YgSnNvblBhdGhQYXJzZUl0ZW0gbm9kZXMsCisgKiB3 aGljaCBhcmUgdXNlZCB0byBidWlsZCBKc29uUGF0aCBleHByZXNzaW9ucyBmb3IganNvbmIgc2lt cGxpZmllZCBhY2Nlc3Nvci4KKyAqLworCitzdGF0aWMgSnNvblBhdGhQYXJzZUl0ZW0gKgorbWFr ZV9qc29ucGF0aF9pdGVtKEpzb25QYXRoSXRlbVR5cGUgdHlwZSkKK3sKKwlKc29uUGF0aFBhcnNl SXRlbSAqdiA9IHBhbGxvYyhzaXplb2YoKnYpKTsKKworCXYtPnR5cGUgPSB0eXBlOworCXYtPm5l eHQgPSBOVUxMOworCisJcmV0dXJuIHY7Cit9CisKK3N0YXRpYyBKc29uUGF0aFBhcnNlSXRlbSAq CittYWtlX2pzb25wYXRoX2l0ZW1faW50KGludDMyIHZhbCwgTGlzdCAqKmV4cHJzKQoreworCUpz b25QYXRoUGFyc2VJdGVtICpqcGkgPSBtYWtlX2pzb25wYXRoX2l0ZW0oanBpTnVtZXJpYyk7CisK KwlqcGktPnZhbHVlLm51bWVyaWMgPQorCQlEYXR1bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25D YWxsMShpbnQ0X251bWVyaWMsIEludDMyR2V0RGF0dW0odmFsKSkpOworCisJKmV4cHJzID0gbGFw cGVuZCgqZXhwcnMsIG1ha2VDb25zdChJTlQ0T0lELCAtMSwgSW52YWxpZE9pZCwgNCwKKwkJCQkJ CQkJCSAgIEludDMyR2V0RGF0dW0odmFsKSwgZmFsc2UsIHRydWUpKTsKKworCXJldHVybiBqcGk7 Cit9CisKKy8qCisgKiBDb252ZXJ0IGFuIGV4cHJlc3Npb24gaW50byBhIEpzb25QYXRoUGFyc2VJ dGVtLgorICogSWYgdGhlIGV4cHJlc3Npb24gaXMgYSBjb25zdGFudCBpbnRlZ2VyLCBjcmVhdGUg YSBkaXJlY3QgbnVtZXJpYyBpdGVtLgorICogT3RoZXJ3aXNlLCBjcmVhdGUgYSB2YXJpYWJsZSBy ZWZlcmVuY2UgYW5kIGFkZCBpdCB0byB0aGUgZXhwcmVzc2lvbiBsaXN0LgorICovCitzdGF0aWMg SnNvblBhdGhQYXJzZUl0ZW0gKgorbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpleHByLCBMaXN0ICoqZXhwcnMpCit7CisJQ29uc3QJICAgKmNuc3Q7CisK KwlleHByID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIGV4cHIsIHBzdGF0ZS0+cF9leHByX2tpbmQp OworCisJaWYgKCFJc0EoZXhwciwgQ29uc3QpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coImpzb25iIHNpbXBs aWZpZWQgYWNjZXNzb3Igc3VwcG9ydHMgc3Vic2NyaXB0aW5nIGluIGNvbnN0IGludDQsIGdvdCB0 eXBlOiAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShleHByVHlwZShleHByKSkpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oZXhwcikpKSk7CisKKwljbnN0 ID0gKENvbnN0ICopIGV4cHI7CisKKwlpZiAoY25zdC0+Y29uc3R0eXBlID09IElOVDRPSUQgJiYg IWNuc3QtPmNvbnN0aXNudWxsKQorCXsKKwkJaW50MzIJCXZhbCA9IERhdHVtR2V0SW50MzIoY25z dC0+Y29uc3R2YWx1ZSk7CisKKwkJcmV0dXJuIG1ha2VfanNvbnBhdGhfaXRlbV9pbnQodmFsLCBl eHBycyk7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZ UEVfTUlTTUFUQ0gpLAorCQkJIGVycm1zZygianNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzdXBw b3J0cyBzdWJzY3JpcHRpbmcgaW4gdHlwZTogSU5UNCwgZ290IHR5cGU6ICVzIiwKKwkJCQkJZm9y bWF0X3R5cGVfYmUoY25zdC0+Y29uc3R0eXBlKSksCisJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSkpOworfQorCisvKgorICoganNvbmJfc3Vic2NyaXB0 X21ha2VfanNvbnBhdGgKKyAqCisgKiBDb25zdHJ1Y3RzIGEgSnNvblBhdGggZXhwcmVzc2lvbiBm cm9tIGEgbGlzdCBvZiBpbmRpcmVjdGlvbnMuCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgd2hl biBqc29uYiBzdWJzY3JpcHRpbmcgaW52b2x2ZXMgZG90IG5vdGF0aW9uLAorICogd2lsZGNhcmRz ICgqKSwgb3Igc2xpY2UtYmFzZWQgc3Vic2NyaXB0aW5nLCByZXF1aXJpbmcgSnNvblBhdGgtYmFz ZWQKKyAqIGV2YWx1YXRpb24uCisgKgorICogVGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBpbmRp cmVjdGlvbiBsaXN0IGluIHBsYWNlLCByZW1vdmluZyBwcm9jZXNzZWQKKyAqIGVsZW1lbnRzIGFz IGl0IGNvbnZlcnRzIHRoZW0gaW50byBKc29uUGF0aCBjb21wb25lbnRzLCBhcyBmb2xsb3dzOgor ICogLSBTdHJpbmcga2V5cyAoZG90IG5vdGF0aW9uKSAtPiBqcGlLZXkgaXRlbXMuCisgKiAtIFdp bGRjYXJkICgqKSAtPiBqcGlBbnlLZXkgaXRlbS4KKyAqIC0gQXJyYXkgaW5kaWNlcyBhbmQgc2xp Y2VzIC0+IGpwaUluZGV4QXJyYXkgaXRlbXMuCisgKgorICogUGFyYW1ldGVyczoKKyAqIC0gcHN0 YXRlOiBQYXJzZSBzdGF0ZSBjb250ZXh0LgorICogLSBpbmRpcmVjdGlvbjogTGlzdCBvZiBzdWJz Y3JpcHRpbmcgZXhwcmVzc2lvbnMgKG1vZGlmaWVkIGluLXBsYWNlKS4KKyAqIC0gdWV4cHJzOiBV cHBlci1ib3VuZCBleHByZXNzaW9ucyBleHRyYWN0ZWQgZnJvbSBzdWJzY3JpcHRzLgorICogLSBs ZXhwcnM6IExvd2VyLWJvdW5kIGV4cHJlc3Npb25zIGV4dHJhY3RlZCBmcm9tIHN1YnNjcmlwdHMu CisgKiBSZXR1cm5zOgorICogLSBhIENvbnN0IG5vZGUgY29udGFpbmluZyB0aGUgdHJhbnNmb3Jt ZWQgSnNvblBhdGggZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIE5vZGUgKgoranNvbmJfc3Vic2Ny aXB0X21ha2VfanNvbnBhdGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICoqaW5kaXJlY3Rpb24s CisJCQkJCQkJICBMaXN0ICoqdWV4cHJzLCBMaXN0ICoqbGV4cHJzKQoreworCUpzb25QYXRoUGFy c2VSZXN1bHQganByZXM7CisJSnNvblBhdGhQYXJzZUl0ZW0gKnBhdGggPSBtYWtlX2pzb25wYXRo X2l0ZW0oanBpUm9vdCk7CisJTGlzdENlbGwgICAqbGM7CisJRGF0dW0JCWpzcDsKKwlpbnQJCQlw YXRobGVuID0gMDsKKworCSp1ZXhwcnMgPSBOSUw7CisJKmxleHBycyA9IE5JTDsKKworCWpwcmVz LmV4cHIgPSBwYXRoOworCWpwcmVzLmxheCA9IHRydWU7CisKKwlmb3JlYWNoKGxjLCAqaW5kaXJl Y3Rpb24pCisJeworCQlOb2RlCSAgICphY2Nlc3NvciA9IGxmaXJzdChsYyk7CisJCUpzb25QYXRo UGFyc2VJdGVtICpqcGk7CisKKwkJaWYgKElzQShhY2Nlc3NvciwgU3RyaW5nKSkKKwkJeworCQkJ Y2hhcgkgICAqZmllbGQgPSBzdHJWYWwoYWNjZXNzb3IpOworCisJCQlqcGkgPSBtYWtlX2pzb25w YXRoX2l0ZW0oanBpS2V5KTsKKwkJCWpwaS0+dmFsdWUuc3RyaW5nLnZhbCA9IGZpZWxkOworCQkJ anBpLT52YWx1ZS5zdHJpbmcubGVuID0gc3RybGVuKGZpZWxkKTsKKworCQkJKnVleHBycyA9IGxh cHBlbmQoKnVleHBycywgYWNjZXNzb3IpOworCQl9CisJCWVsc2UgaWYgKElzQShhY2Nlc3Nvciwg QV9TdGFyKSkKKwkJeworCQkJanBpID0gbWFrZV9qc29ucGF0aF9pdGVtKGpwaUFueUtleSk7CisK KwkJCSp1ZXhwcnMgPSBsYXBwZW5kKCp1ZXhwcnMsIE5VTEwpOworCQl9CisJCWVsc2UgaWYgKElz QShhY2Nlc3NvciwgQV9JbmRpY2VzKSkKKwkJeworCQkJQV9JbmRpY2VzICAqYWkgPSBjYXN0Tm9k ZShBX0luZGljZXMsIGFjY2Vzc29yKTsKKworCQkJanBpID0gbWFrZV9qc29ucGF0aF9pdGVtKGpw aUluZGV4QXJyYXkpOworCQkJanBpLT52YWx1ZS5hcnJheS5uZWxlbXMgPSAxOworCQkJanBpLT52 YWx1ZS5hcnJheS5lbGVtcyA9IHBhbGxvYyhzaXplb2YoanBpLT52YWx1ZS5hcnJheS5lbGVtc1sw XSkpOworCisJCQlpZiAoYWktPmlzX3NsaWNlKQorCQkJeworCQkJCXdoaWxlIChsaXN0X2xlbmd0 aCgqbGV4cHJzKSA8IGxpc3RfbGVuZ3RoKCp1ZXhwcnMpKQorCQkJCQkqbGV4cHJzID0gbGFwcGVu ZCgqbGV4cHJzLCBOVUxMKTsKKworCQkJCWlmIChhaS0+bGlkeCkKKwkJCQkJanBpLT52YWx1ZS5h cnJheS5lbGVtc1swXS5mcm9tID0gbWFrZV9qc29ucGF0aF9pdGVtX2V4cHIocHN0YXRlLCBhaS0+ bGlkeCwgbGV4cHJzKTsKKwkJCQllbHNlCisJCQkJCWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0u ZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9pbnQoMCwgbGV4cHJzKTsKKworCQkJCWlmIChhaS0+ dWlkeCkKKwkJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2VfanNvbnBhdGhf aXRlbV9leHByKHBzdGF0ZSwgYWktPnVpZHgsIHVleHBycyk7CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1swXS50byA9IG1ha2VfanNvbnBhdGhfaXRlbShqcGlM YXN0KTsKKwkJCQkJKnVleHBycyA9IGxhcHBlbmQoKnVleHBycywgTlVMTCk7CisJCQkJfQorCQkJ fQorCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChhaS0+dWlkeCAmJiAhYWktPmxpZHgpOworCQkJ CWpwaS0+dmFsdWUuYXJyYXkuZWxlbXNbMF0uZnJvbSA9IG1ha2VfanNvbnBhdGhfaXRlbV9leHBy KHBzdGF0ZSwgYWktPnVpZHgsIHVleHBycyk7CisJCQkJanBpLT52YWx1ZS5hcnJheS5lbGVtc1sw XS50byA9IE5VTEw7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisKKwkJLyogYXBwZW5k IHBhdGggaXRlbSAqLworCQlwYXRoLT5uZXh0ID0ganBpOworCQlwYXRoID0ganBpOworCQlwYXRo bGVuKys7CisJfQorCisJaWYgKCpsZXhwcnMpCisJeworCQl3aGlsZSAobGlzdF9sZW5ndGgoKmxl eHBycykgPCBsaXN0X2xlbmd0aCgqdWV4cHJzKSkKKwkJCSpsZXhwcnMgPSBsYXBwZW5kKCpsZXhw cnMsIE5VTEwpOworCX0KKworCSppbmRpcmVjdGlvbiA9IGxpc3RfZGVsZXRlX2ZpcnN0X24oKmlu ZGlyZWN0aW9uLCBwYXRobGVuKTsKKworCWpzcCA9IGpzb25QYXRoRnJvbVBhcnNlUmVzdWx0KCZq cHJlcywgMCwgTlVMTCk7CisKKwlyZXR1cm4gKE5vZGUgKikgbWFrZUNvbnN0KEpTT05QQVRIT0lE LCAtMSwgSW52YWxpZE9pZCwgLTEsIGpzcCwgZmFsc2UsIGZhbHNlKTsKK30KKwogLyoKICAqIEZp bmlzaCBwYXJzZSBhbmFseXNpcyBvZiBhIFN1YnNjcmlwdGluZ1JlZiBleHByZXNzaW9uIGZvciBh IGpzb25iLgogICoKQEAgLTEyNiwxOSArMzU3LDMyIEBAIGpzb25iX3N1YnNjcmlwdF90cmFuc2Zv cm0oU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYsCiAJTGlzdAkgICAqdXBwZXJJbmRleHByID0gTklM OwogCUxpc3RDZWxsICAgKmlkeDsKIAorCS8qIERldGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2Yg dGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFsd2F5cyBqc29uYiAqLworCXNic3JlZi0+cmVm cmVzdHlwZSA9IEpTT05CT0lEOworCXNic3JlZi0+cmVmdHlwbW9kID0gLTE7CisKKwlpZiAoanNv bmJfY2hlY2tfanNvbnBhdGhfbmVlZGVkKCppbmRpcmVjdGlvbikpCisJeworCQlzYnNyZWYtPnJl Zmpzb25icGF0aCA9CisJCQlqc29uYl9zdWJzY3JpcHRfbWFrZV9qc29ucGF0aChwc3RhdGUsIGlu ZGlyZWN0aW9uLAorCQkJCQkJCQkJCSAgJnNic3JlZi0+cmVmdXBwZXJpbmRleHByLAorCQkJCQkJ CQkJCSAgJnNic3JlZi0+cmVmbG93ZXJpbmRleHByKTsKKwkJcmV0dXJuOworCX0KKwogCS8qCiAJ ICogVHJhbnNmb3JtIGFuZCBjb252ZXJ0IHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbnMuIEpzb25i IHN1YnNjcmlwdGluZwogCSAqIGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzLCBsb29rIG9ubHkgYW5k IHRoZSB1cHBlciBpbmRleC4KIAkgKi8KIAlmb3JlYWNoKGlkeCwgKmluZGlyZWN0aW9uKQogCXsK KwkJTm9kZQkgICAqaSA9IGxmaXJzdChpZHgpOwogCQlBX0luZGljZXMgICphaTsKIAkJTm9kZQkg ICAqc3ViRXhwcjsKIAotCQlpZiAoIUlzQShsZmlyc3QoaWR4KSwgQV9JbmRpY2VzKSkKLQkJCWJy ZWFrOworCQlBc3NlcnQoSXNBKGksIEFfSW5kaWNlcykpOwogCi0JCWFpID0gbGZpcnN0X25vZGUo QV9JbmRpY2VzLCBpZHgpOworCQlhaSA9IGNhc3ROb2RlKEFfSW5kaWNlcywgaSk7CiAKIAkJaWYg KGlzU2xpY2UpCiAJCXsKQEAgLTE3NSwxMCArNDE5LDYgQEAganNvbmJfc3Vic2NyaXB0X3RyYW5z Zm9ybShTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwKIAlzYnNyZWYtPnJlZnVwcGVyaW5kZXhwciA9 IHVwcGVySW5kZXhwcjsKIAlzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciA9IE5JTDsKIAotCS8qIERl dGVybWluZSB0aGUgcmVzdWx0IHR5cGUgb2YgdGhlIHN1YnNjcmlwdGluZyBvcGVyYXRpb247IGFs d2F5cyBqc29uYiAqLwotCXNic3JlZi0+cmVmcmVzdHlwZSA9IEpTT05CT0lEOwotCXNic3JlZi0+ cmVmdHlwbW9kID0gLTE7Ci0KIAkvKiBSZW1vdmUgcHJvY2Vzc2VkIGVsZW1lbnRzICovCiAJaWYg KHVwcGVySW5kZXhwcikKIAkJKmluZGlyZWN0aW9uID0gbGlzdF9kZWxldGVfZmlyc3RfbigqaW5k aXJlY3Rpb24sIGxpc3RfbGVuZ3RoKHVwcGVySW5kZXhwcikpOwpAQCAtMjMzLDcgKzQ3Myw3IEBA IGpzb25iX3N1YnNjcmlwdF9jaGVja19zdWJzY3JpcHRzKEV4cHJTdGF0ZSAqc3RhdGUsCiAJCQkg KiBGb3IganNvbmIgZmV0Y2ggYW5kIGFzc2lnbiBmdW5jdGlvbnMgd2UgbmVlZCB0byBwcm92aWRl IHBhdGggaW4KIAkJCSAqIHRleHQgZm9ybWF0LiBDb252ZXJ0IGlmIGl0J3Mgbm90IGFscmVhZHkg dGV4dC4KIAkJCSAqLwotCQkJaWYgKHdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPT0gSU5UNE9JRCkK KwkJCWlmICghd29ya3NwYWNlLT5qc29ucGF0aCAmJiB3b3Jrc3BhY2UtPmluZGV4T2lkW2ldID09 IElOVDRPSUQpCiAJCQl7CiAJCQkJRGF0dW0JCWRhdHVtID0gc2JzcmVmc3RhdGUtPnVwcGVyaW5k ZXhbaV07CiAJCQkJY2hhcgkgICAqY3MgPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25D YWxsMShpbnQ0b3V0LCBkYXR1bSkpOwpAQCAtMjYxLDE3ICs1MDEsMzIgQEAganNvbmJfc3Vic2Ny aXB0X2ZldGNoKEV4cHJTdGF0ZSAqc3RhdGUsCiB7CiAJU3Vic2NyaXB0aW5nUmVmU3RhdGUgKnNi c3JlZnN0YXRlID0gb3AtPmQuc2JzcmVmLnN0YXRlOwogCUpzb25iU3ViV29ya3NwYWNlICp3b3Jr c3BhY2UgPSAoSnNvbmJTdWJXb3Jrc3BhY2UgKikgc2JzcmVmc3RhdGUtPndvcmtzcGFjZTsKLQlK c29uYgkgICAqanNvbmJTb3VyY2U7CiAKIAkvKiBTaG91bGQgbm90IGdldCBoZXJlIGlmIHNvdXJj ZSBqc29uYiAob3IgYW55IHN1YnNjcmlwdCkgaXMgbnVsbCAqLwogCUFzc2VydCghKCpvcC0+cmVz bnVsbCkpOwogCi0JanNvbmJTb3VyY2UgPSBEYXR1bUdldEpzb25iUCgqb3AtPnJlc3ZhbHVlKTsK LQkqb3AtPnJlc3ZhbHVlID0ganNvbmJfZ2V0X2VsZW1lbnQoanNvbmJTb3VyY2UsCi0JCQkJCQkJ CQkgIHdvcmtzcGFjZS0+aW5kZXgsCi0JCQkJCQkJCQkgIHNic3JlZnN0YXRlLT5udW11cHBlciwK LQkJCQkJCQkJCSAgb3AtPnJlc251bGwsCi0JCQkJCQkJCQkgIGZhbHNlKTsKKwlpZiAod29ya3Nw YWNlLT5qc29ucGF0aCkKKwl7CisJCWJvb2wJCWVtcHR5ID0gZmFsc2U7CisJCWJvb2wJCWVycm9y ID0gZmFsc2U7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IEpzb25QYXRoUXVlcnkoKm9wLT5yZXN2YWx1 ZSwgd29ya3NwYWNlLT5qc29ucGF0aCwKKwkJCQkJCQkJCSAgSlNXX0NPTkRJVElPTkFMLAorCQkJ CQkJCQkJICAmZW1wdHksICZlcnJvciwgTlVMTCwKKwkJCQkJCQkJCSAgTlVMTCk7CisKKwkJKm9w LT5yZXNudWxsID0gZW1wdHkgfHwgZXJyb3I7CisJfQorCWVsc2UKKwl7CisJCUpzb25iCSAgICpq c29uYlNvdXJjZSA9IERhdHVtR2V0SnNvbmJQKCpvcC0+cmVzdmFsdWUpOworCisJCSpvcC0+cmVz dmFsdWUgPSBqc29uYl9nZXRfZWxlbWVudChqc29uYlNvdXJjZSwKKwkJCQkJCQkJCQkgIHdvcmtz cGFjZS0+aW5kZXgsCisJCQkJCQkJCQkJICBzYnNyZWZzdGF0ZS0+bnVtdXBwZXIsCisJCQkJCQkJ CQkJICBvcC0+cmVzbnVsbCwKKwkJCQkJCQkJCQkgIGZhbHNlKTsKKwl9CiB9CiAKIC8qCkBAIC0z ODEsNiArNjM2LDcgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNi c3JlZiwKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQludXBwZXIgPSBzYnNyZWYtPnJlZnVwcGVy aW5kZXhwci0+bGVuZ3RoOwogCWNoYXIJICAgKnB0cjsKKwlib29sCQl1c2VKc29ucGF0aCA9IHNi c3JlZi0+cmVmanNvbmJwYXRoICE9IE5VTEw7CiAKIAkvKiBBbGxvY2F0ZSB0eXBlLXNwZWNpZmlj IHdvcmtzcGFjZSB3aXRoIHNwYWNlIGZvciBwZXItc3Vic2NyaXB0IGRhdGEgKi8KIAl3b3Jrc3Bh Y2UgPSBwYWxsb2MwKE1BWEFMSUdOKHNpemVvZihKc29uYlN1YldvcmtzcGFjZSkpICsKQEAgLTM4 OCw2ICs2NDQsOSBAQCBqc29uYl9leGVjX3NldHVwKGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqc2Jz cmVmLAogCXdvcmtzcGFjZS0+ZXhwZWN0QXJyYXkgPSBmYWxzZTsKIAlwdHIgPSAoKGNoYXIgKikg d29ya3NwYWNlKSArIE1BWEFMSUdOKHNpemVvZihKc29uYlN1YldvcmtzcGFjZSkpOwogCisJaWYg KHVzZUpzb25wYXRoKQorCQl3b3Jrc3BhY2UtPmpzb25wYXRoID0gRGF0dW1HZXRKc29uUGF0aFAo Y2FzdE5vZGUoQ29uc3QsIHNic3JlZi0+cmVmanNvbmJwYXRoKS0+Y29uc3R2YWx1ZSk7CisKIAkv KgogCSAqIFRoaXMgY29kaW5nIGFzc3VtZXMgc2l6ZW9mKERhdHVtKSA+PSBzaXplb2YoT2lkKSwg ZWxzZSB3ZSBtaWdodAogCSAqIG1pc2FsaWduIHRoZSBpbmRleE9pZCBwb2ludGVyCkBAIC00MDQs NyArNjYzLDcgQEAganNvbmJfZXhlY19zZXR1cChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwKIAkJTm9kZQkgICAqZXhwciA9IGxmaXJzdChsYyk7CiAJCWludAkJCWkgPSBmb3JlYWNoX2N1 cnJlbnRfaW5kZXgobGMpOwogCi0JCXdvcmtzcGFjZS0+aW5kZXhPaWRbaV0gPSBleHByVHlwZShl eHByKTsKKwkJd29ya3NwYWNlLT5pbmRleE9pZFtpXSA9IGpzb25iX3N1YnNjcmlwdF90eXBlKGV4 cHIpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGQwNTc2ZGEzZTI1Li45ZDM4 MGVkNjBkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTcxOCw2ICs3MTgsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW5nUmVmCiAJRXhwcgkgICAqcmVmZXhwcjsKIAkvKiBleHByZXNz aW9uIGZvciB0aGUgc291cmNlIHZhbHVlLCBvciBOVUxMIGlmIGZldGNoICovCiAJRXhwcgkgICAq cmVmYXNzZ25leHByOworCisJLyoKKwkgKiBjb250YWluZXItc3BlY2lmaWMgZXh0cmEgaW5mb3Jt YXRpb24sIGN1cnJlbnRseSB1c2VkIG9ubHkgYnkganNvbmIuCisJICogc3RvcmVzIGEgSnNvblBh dGggZXhwcmVzc2lvbiB3aGVuIGpzb25iIGRvdCBub3RhdGlvbiBpcyB1c2VkLiBOVUxMIGZvcgor CSAqIHNpbXBsZSBzdWJzY3JpcHRpbmcuCisJICovCisJTm9kZQkgICAqcmVmanNvbmJwYXRoOwog fSBTdWJzY3JpcHRpbmdSZWY7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2pzb25iLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0Cmlu ZGV4IDJiYWZmOTMxYmYyLi40ODBlY2I0NGE5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9qc29uYi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKQEAgLTQ5MzksNiArNDkzOSwxMiBAQCBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsK ICAKICgxIHJvdykKIAorc2VsZWN0ICgnMTIzJzo6anNvbmIpLmE7CisgYSAKKy0tLQorIAorKDEg cm93KQorCiBzZWxlY3QgKCcxMjMnOjpqc29uYilbMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC00 OTUxLDEyICs0OTU3LDI0IEBAIHNlbGVjdCAoJzEyMyc6Ompzb25iKVtOVUxMXTsKICAKICgxIHJv dykKIAorc2VsZWN0ICgnMTIzJzo6anNvbmIpLk5VTEw7CisgbnVsbCAKKy0tLS0tLQorIAorKDEg cm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVsnYSddOwogIGpzb25iIAogLS0tLS0t LQogIDEKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuYTsKKyBhIAorLS0t CisgMQorKDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25iKVswXTsKICBqc29uYiAK IC0tLS0tLS0KQEAgLTQ5NjksNiArNDk4NywxMiBAQCBzZWxlY3QgKCd7ImEiOiAxfSc6Ompzb25i KVsnbm90X2V4aXN0J107CiAgCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIp LiJub3RfZXhpc3QiOworIG5vdF9leGlzdCAKKy0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIHNl bGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpW05VTExdOwogIGpzb25iIAogLS0tLS0tLQpAQCAtNDk4 MSw2ICs1MDA1LDEyIEBAIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWydhJ107CiAg CiAoMSByb3cpCiAKK3NlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpLmE7CisgYSAKKy0t LQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVswXTsKICBq c29uYiAKIC0tLS0tLS0KQEAgLTQ5OTMsNiArNTAyMywxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKVsnMSddOwogICIyIgogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKS4iMSI7CisgMSAKKy0tLQorIAorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwg IjIiLCBudWxsXSc6Ompzb25iKVsxLjBdOwogRVJST1I6ICBzdWJzY3JpcHQgdHlwZSBudW1lcmlj IGlzIG5vdCBzdXBwb3J0ZWQKIExJTkUgMTogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29u YilbMS4wXTsKQEAgLTUwMjIsNiArNTA1OCwxMiBAQCBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6 Ompzb25iKVsxXVsnYSddOwogIAogKDEgcm93KQogCitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6 Ompzb25iKVsxXS5hOworIGEgCistLS0KKyAKKygxIHJvdykKKwogc2VsZWN0ICgnWzEsICIyIiwg bnVsbF0nOjpqc29uYilbMV1bMF07CiAganNvbmIgCiAtLS0tLS0tCkBAIC01MDM0LDczICs1MDc2 LDEzOSBAQCBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNv bmIpWydiJ107CiAgImMiCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAi ZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuYjsKKyAgYiAgCistLS0tLQorICJjIgorKDEgcm93KQor CiBzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydk J107CiAgICBqc29uYiAgIAogLS0tLS0tLS0tLS0KICBbMSwgMiwgM10KICgxIHJvdykKIAorc2Vs ZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kOworICAg ICBkICAgICAKKy0tLS0tLS0tLS0tCisgWzEsIDIsIDNdCisoMSByb3cpCisKIHNlbGVjdCAoJ3si YSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAyLCAzXX0nOjpqc29uYilbJ2QnXVsxXTsKICBqc29u YiAKIC0tLS0tLS0KICAyCiAoMSByb3cpCiAKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAi ZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsxXTsKKyBkIAorLS0tCisgMgorKDEgcm93KQorCiBz ZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119Jzo6anNvbmIpWydkJ11b J2EnXTsKICBqc29uYiAKIC0tLS0tLS0KICAKICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjogMSwg ImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kWydhJ107CitFUlJPUjogIGpzb25i IHNpbXBsaWZpZWQgYWNjZXNzb3Igc3VwcG9ydHMgc3Vic2NyaXB0aW5nIGluIHR5cGU6IElOVDQs IGdvdCB0eXBlOiB1bmtub3duCitMSU5FIDE6IHNlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAi ZCI6IFsxLCAyLCAzXX0nOjpqc29uYikuZFsnYSddOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorc2VsZWN0ICgneyJhIjog MSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kLmE7CisgYSAKKy0tLQorIAor KDEgcm93KQorCiBzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJi YiIsICJjIjogImNjYyJ9Jzo6anNvbmIpWydhJ11bJ2ExJ107CiAgICAgIGpzb25iICAgICAKIC0t LS0tLS0tLS0tLS0tLQogIHsiYTIiOiAiYWFhIn0KICgxIHJvdykKIAorc2VsZWN0ICgneyJhIjog eyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKS5h LmExOworICAgICAgYTEgICAgICAgCistLS0tLS0tLS0tLS0tLS0KKyB7ImEyIjogImFhYSJ9Ciso MSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IHsiYTEiOiB7ImEyIjogImFhYSJ9fSwgImIiOiAiYmJi IiwgImMiOiAiY2NjIn0nOjpqc29uYilbJ2EnXVsnYTEnXVsnYTInXTsKICBqc29uYiAKIC0tLS0t LS0KICAiYWFhIgogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiB7ImExIjogeyJhMiI6ICJhYWEi fX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEuYTEuYTI7CisgIGEyICAgCist LS0tLS0tCisgImFhYSIKKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAi YWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMidd WydhMyddOwogIGpzb25iIAogLS0tLS0tLQogIAogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiB7 ImExIjogeyJhMiI6ICJhYWEifX0sICJiIjogImJiYiIsICJjIjogImNjYyJ9Jzo6anNvbmIpLmEu YTEuYTIuYTM7CisgYTMgCistLS0tCisgCisoMSByb3cpCisKIHNlbGVjdCAoJ3siYSI6IFsiYTEi LCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjogImJiIn0nOjpqc29uYilbJ2En XVsxXVsnYjEnXTsKICAgICAgICAgIGpzb25iICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIFsiYWFhIiwgImJiYiIsICJjY2MiXQogKDEgcm93KQogCitzZWxlY3QgKCd7ImEiOiBb ImExIiwgeyJiMSI6IFsiYWFhIiwgImJiYiIsICJjY2MiXX1dLCAiYiI6ICJiYiJ9Jzo6anNvbmIp LmFbMV0uYjE7CisgICAgICAgICAgYjEgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBbImFhYSIsICJiYmIiLCAiY2NjIl0KKygxIHJvdykKKwogc2VsZWN0ICgneyJhIjogWyJh MSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsn YSddWzFdWydiMSddWzJdOwogIGpzb25iIAogLS0tLS0tLQogICJjY2MiCiAoMSByb3cpCiAKK3Nl bGVjdCAoJ3siYSI6IFsiYTEiLCB7ImIxIjogWyJhYWEiLCAiYmJiIiwgImNjYyJdfV0sICJiIjog ImJiIn0nOjpqc29uYikuYVsxXS5iMVsyXTsKKyAgYjEgICAKKy0tLS0tLS0KKyAiY2NjIgorKDEg cm93KQorCiAtLSBzbGljZXMgYXJlIG5vdCBzdXBwb3J0ZWQKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6 anNvbmIpWydhJzonYiddOwotRVJST1I6ICBqc29uYiBzdWJzY3JpcHQgZG9lcyBub3Qgc3VwcG9y dCBzbGljZXMKK0VSUk9SOiAganNvbmIgc2ltcGxpZmllZCBhY2Nlc3NvciBzdXBwb3J0cyBzdWJz Y3JpcHRpbmcgaW4gdHlwZTogSU5UNCwgZ290IHR5cGU6IHVua25vd24KIExJTkUgMTogc2VsZWN0 ICgneyJhIjogMX0nOjpqc29uYilbJ2EnOidiJ107Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIHNl bGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzE6Ml07Ci1FUlJPUjogIGpzb25iIHN1YnNj cmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElORSAxOiBzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKVsxOjJdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKyAgICBqc29uYiAgICAKKy0tLS0tLS0tLS0tLS0KKyBbIjIiLCBudWxsXQorKDEg cm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07CiBFUlJPUjogIGpz b25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwogTElORSAxOiBzZWxlY3QgKCdb MSwgIjIiLCBudWxsXSc6Ompzb25iKVs6Ml07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOl07Ci1F UlJPUjogIGpzb25iIHN1YnNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHNsaWNlcwotTElORSAxOiBz ZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVsxOl07Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICBqc29uYiAgICAKKy0tLS0tLS0tLS0tLS0KKyBb IjIiLCBudWxsXQorKDEgcm93KQorCiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVs6 XTsKLUVSUk9SOiAganNvbmIgc3Vic2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc2xpY2VzCisgICAg IGpzb25iICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgWzEsICIyIiwgbnVsbF0KKygxIHJvdykK KwogY3JlYXRlIFRFTVAgVEFCTEUgdGVzdF9qc29uYl9zdWJzY3JpcHQgKAogICAgICAgIGlkIGlu dCwKICAgICAgICB0ZXN0X2pzb24ganNvbmIKQEAgLTU3ODEsMyArNTg4OSwxMjYgQEAgc2VsZWN0 ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6 anNvbmI6OmludDg7CiAgMTIzNDUKICgxIHJvdykKIAorLS0gZG90IG5vdGF0aW9uCitDUkVBVEUg VEFCTEUgdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gQVMKK1NFTEVDVCAneyJhIjogWzEsIDIsIHsi YiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6 eiJ9fV0sICJiIjogWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpa In19XX0nOjpqc29uYiBqYjsKK1NFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbMSwgMiwgeyJiIjog ImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19 XQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4iYSIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsgLS0gZG91YmxlIHF1b3RlIHNob3VsZCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAiZiIsICJ4Ijog eyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0KKygxIHJvdykKKworU0VMRUNUIChqYikuJ2EnIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247IC0tIHNpbmdsZSBxdW90ZSBzaG91bGQgbm90IHdv cmsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIidhJyIKK0xJTkUgMTogU0VMRUNU IChqYikuJ2EnIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCAoamIpLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg ICAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWzMsIDQsIHsiYiI6 ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XQorKDEgcm93KQorCitTRUxFQ1Qg KGpiKS5jIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgYyAKKy0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAg YiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitTRUxFQ1QgKGpi KS5hWzJdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgYiAgCistLS0tLQorICJj IgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hWzI6M10uYiBGUk9NIHRlc3RfanNvbmJfZG90X25v dGF0aW9uOworICAgICBiICAgICAgCistLS0tLS0tLS0tLS0KKyBbImMiLCAiZCJdCisoMSByb3cp CisKK1NFTEVDVCAoamIpLmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg ICAgYiAgICAgIAorLS0tLS0tLS0tLS0tCisgWyJjIiwgImQiXQorKDEgcm93KQorCitTRUxFQ1Qg KGpiKS5hWzoyXS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgIGIgIAorLS0tLS0K KyAiYyIKKygxIHJvdykKKworU0VMRUNUIChqYikuYVs6XS5iIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisgICAgIGIgICAgICAKKy0tLS0tLS0tLS0tLQorIFsiYyIsICJkIl0KKygxIHJv dykKKworU0VMRUNUIChqYikuYS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAg IHkgICAKKy0tLS0tLS0KKyAieXl5IgorKDEgcm93KQorCitTRUxFQ1QgKChqYikuYilbOl0ueCBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICB4ICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn0K KygxIHJvdykKKworU0VMRUNUIChqYikuYi54LnogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv bjsKKyAgIHogICAKKy0tLS0tLS0KKyAiWlpaIgorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLmIu YyBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworIGMgCistLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIHR5 cGUganNvbmIgaXMgbm90IGNvbXBvc2l0ZQorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIHR5cGUg anNvbmIgaXMgbm90IGNvbXBvc2l0ZQorU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEg U2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdAorICAgT3V0cHV0OiBqYi5h CisoMiByb3dzKQorCitTRUxFQ1QgKHQuamIpLmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlv biB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsxLCAyLCB7ImIiOiAi YyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1d CisoMSByb3cpCisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsx XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25vdGF0aW9uCisg ICBPdXRwdXQ6IGpiLmFbMV0KKygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9q c29uYi5zcWwKaW5kZXggNTQ0YmI2MTBlMmQuLjU1YjZjMDdmNDYyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNv bmIuc3FsCkBAIC0xMjg2LDMwICsxMjg2LDQ3IEBAIHNlbGVjdCBqc29uYl9pbnNlcnQoJ3siYSI6 IHsiYiI6ICJ2YWx1ZSJ9fScsICd7YSwgYn0nLCAnIm5ld192YWx1ZSInLCB0cnVlKTsKIAogLS0g anNvbmIgc3Vic2NyaXB0CiBzZWxlY3QgKCcxMjMnOjpqc29uYilbJ2EnXTsKK3NlbGVjdCAoJzEy Myc6Ompzb25iKS5hOwogc2VsZWN0ICgnMTIzJzo6anNvbmIpWzBdOwogc2VsZWN0ICgnMTIzJzo6 anNvbmIpW05VTExdOworc2VsZWN0ICgnMTIzJzo6anNvbmIpLk5VTEw7CiBzZWxlY3QgKCd7ImEi OiAxfSc6Ompzb25iKVsnYSddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuYTsKIHNlbGVj dCAoJ3siYSI6IDF9Jzo6anNvbmIpWzBdOwogc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYilbJ25v dF9leGlzdCddOworc2VsZWN0ICgneyJhIjogMX0nOjpqc29uYikuIm5vdF9leGlzdCI7CiBzZWxl Y3QgKCd7ImEiOiAxfSc6Ompzb25iKVtOVUxMXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6 anNvbmIpWydhJ107CitzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKS5hOwogc2VsZWN0 ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMF07CiBzZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6 Ompzb25iKVsnMSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYikuIjEiOwogc2Vs ZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbMS4wXTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51 bGxdJzo6anNvbmIpWzJdOwogc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilbM107CiBz ZWxlY3QgKCdbMSwgIjIiLCBudWxsXSc6Ompzb25iKVstMl07CiBzZWxlY3QgKCdbMSwgIjIiLCBu dWxsXSc6Ompzb25iKVsxXVsnYSddOworc2VsZWN0ICgnWzEsICIyIiwgbnVsbF0nOjpqc29uYilb MV0uYTsKIHNlbGVjdCAoJ1sxLCAiMiIsIG51bGxdJzo6anNvbmIpWzFdWzBdOwogc2VsZWN0ICgn eyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnYiddOworc2VsZWN0 ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5iOwogc2VsZWN0 ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddOworc2Vs ZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5kOwogc2Vs ZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKVsnZCddWzFd Oworc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25iKS5k WzFdOwogc2VsZWN0ICgneyJhIjogMSwgImIiOiAiYyIsICJkIjogWzEsIDIsIDNdfSc6Ompzb25i KVsnZCddWydhJ107CitzZWxlY3QgKCd7ImEiOiAxLCAiYiI6ICJjIiwgImQiOiBbMSwgMiwgM119 Jzo6anNvbmIpLmRbJ2EnXTsKK3NlbGVjdCAoJ3siYSI6IDEsICJiIjogImMiLCAiZCI6IFsxLCAy LCAzXX0nOjpqc29uYikuZC5hOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19 LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddOworc2VsZWN0ICgn eyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompz b25iKS5hLmExOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJi YmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMiddOworc2VsZWN0ICgneyJh IjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6Ompzb25i KS5hLmExLmEyOwogc2VsZWN0ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJi YmIiLCAiYyI6ICJjY2MifSc6Ompzb25iKVsnYSddWydhMSddWydhMiddWydhMyddOworc2VsZWN0 ICgneyJhIjogeyJhMSI6IHsiYTIiOiAiYWFhIn19LCAiYiI6ICJiYmIiLCAiYyI6ICJjY2MifSc6 Ompzb25iKS5hLmExLmEyLmEzOwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIs ICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddOworc2Vs ZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAi YmIifSc6Ompzb25iKS5hWzFdLmIxOwogc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFh YSIsICJiYmIiLCAiY2NjIl19XSwgImIiOiAiYmIifSc6Ompzb25iKVsnYSddWzFdWydiMSddWzJd Oworc2VsZWN0ICgneyJhIjogWyJhMSIsIHsiYjEiOiBbImFhYSIsICJiYmIiLCAiY2NjIl19XSwg ImIiOiAiYmIifSc6Ompzb25iKS5hWzFdLmIxWzJdOwogCiAtLSBzbGljZXMgYXJlIG5vdCBzdXBw b3J0ZWQKIHNlbGVjdCAoJ3siYSI6IDF9Jzo6anNvbmIpWydhJzonYiddOwpAQCAtMTU3MiwzICsx NTg5LDMxIEBAIHNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDg7CiBzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50MjsKIHNlbGVj dCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6 Ompzb25iOjppbnQ0Owogc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDg7CisKKy0tIGRvdCBub3RhdGlvbgorQ1JF QVRFIFRBQkxFIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIEFTCitTRUxFQ1QgJ3siYSI6IFsxLCAy LCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6 ICJ6enoifX1dLCAiYiI6IFszLCA0LCB7ImIiOiAiZyIsICJ4IjogeyJ5IjogIllZWSIsICJ6Ijog IlpaWiJ9fV19Jzo6anNvbmIgamI7CisKK1NFTEVDVCAoamIpLmEgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiJhIiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OyAtLSBkb3VibGUgcXVvdGUgc2hvdWxkIHdvcmsKK1NFTEVDVCAoamIpLidhJyBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOyAtLSBzaW5nbGUgcXVvdGUgc2hvdWxkIG5vdCB3b3JrCitTRUxF Q1QgKGpiKS5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5jIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmFbMl0uYiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOworU0VMRUNUIChqYikuYVsyOjNdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKK1NFTEVDVCAoamIpLmFbMjpdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K1NFTEVDVCAoamIpLmFbOjJdLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVD VCAoamIpLmFbOl0uYiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYiku YS54LnkgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoKGpiKS5iKVs6XS54 IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLmIueC56IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYyBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuKiBGUk9N IHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKHQuamIp LmEgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworU0VMRUNUICh0LmpiKS5hIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikg U0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChq YikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotLSAKMi4zOS41IChBcHBsZSBH aXQtMTU0KQoK --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0007-Allow-wild-card-member-access-for-jsonb.patch" Content-Disposition: attachment; filename="v9-0007-Allow-wild-card-member-access-for-jsonb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaet6 RnJvbSAyNmM0MWNjNjM4Y2Y5ODliYzVlNTBkOWJkYTc4ODk0OTc5ODczZjA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAyMzoxNToyNiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djkgNy83XSBBbGxvdyB3aWxkIGNhcmQgbWVtYmVyIGFjY2VzcyBmb3IganNvbmIKCi0tLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2V4cHIuYyAgICAgfCAgMzQgKysrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV90YXJnZXQuYyAgIHwgIDY3ICsrKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZXhwci5oICAgICB8 ICAgMyArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDE5MiArKysrKysr KysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgICAg ICB8ICAzMSArKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyOTkgaW5zZXJ0aW9ucygrKSwgMzYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2Q5OWM5MzU1YzYuLjA0MTk2OGMzNWRiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKQEAgLTE4OTY4LDYgKzE4OTY4LDcgQEAgY2hlY2tfZnVuY19uYW1lKExpc3QgKm5h bWVzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIHN0YXRpYyBMaXN0ICoKIGNoZWNrX2luZGly ZWN0aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIHsKKyNp ZiAwCiAJTGlzdENlbGwgICAqbDsKIAogCWZvcmVhY2gobCwgaW5kaXJlY3Rpb24pCkBAIC0xODk3 OCw2ICsxODk3OSw3IEBAIGNoZWNrX2luZGlyZWN0aW9uKExpc3QgKmluZGlyZWN0aW9uLCBjb3Jl X3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJCQlwYXJzZXJfeXllcnJvcigiaW1wcm9wZXIgdXNlIG9m IFwiKlwiIik7CiAJCX0KIAl9CisjZW5kaWYKIAlyZXR1cm4gaW5kaXJlY3Rpb247CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDhlYTUxMTc2MTk2Li41MTJhYzViNDk3MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jCkBAIC03NCw3ICs3NCw2IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybVdob2xlUm93UmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJ ICBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkJCQkJICBpbnQgc3VibGV2ZWxzX3Vw LCBpbnQgbG9jYXRpb24pOwotc3RhdGljIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zv cm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0Yyk7CiBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIENvbGxhdGVDbGF1 c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25PYmplY3RDb25zdHJ1Y3RvcihQYXJz ZVN0YXRlICpwc3RhdGUsCkBAIC0xNTgsNyArMTU3LDcgQEAgdHJhbnNmb3JtRXhwclJlY3Vyc2Uo UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX0Ff SW5kaXJlY3Rpb246Ci0JCQlyZXN1bHQgPSB0cmFuc2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUsIChB X0luZGlyZWN0aW9uICopIGV4cHIpOworCQkJcmVzdWx0ID0gdHJhbnNmb3JtSW5kaXJlY3Rpb24o cHN0YXRlLCAoQV9JbmRpcmVjdGlvbiAqKSBleHByLCBOVUxMKTsKIAkJCWJyZWFrOwogCiAJCWNh c2UgVF9BX0FycmF5RXhwcjoKQEAgLTQzMiw4ICs0MzEsOSBAQCB1bmtub3duX2F0dHJpYnV0ZShQ YXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnJlbHJlZiwgY29uc3QgY2hhciAqYXR0bmFtZSwKIAl9 CiB9CiAKLXN0YXRpYyBOb2RlICoKLXRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQorTm9kZSAqCit0cmFuc2Zvcm1JbmRpcmVjdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKKwkJCQkJIGJvb2wgKnRyYWls aW5nX3N0YXJfZXhwYW5zaW9uKQogewogCU5vZGUJICAgKmxhc3Rfc3JmID0gcHN0YXRlLT5wX2xh c3Rfc3JmOwogCU5vZGUJICAgKnJlc3VsdCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwg aW5kLT5hcmcpOwpAQCAtNDU0LDEyICs0NTQsNyBAQCB0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCkKIAkJaWYgKElzQShuLCBBX0luZGlj ZXMpKQogCQkJc3Vic2NyaXB0cyA9IGxhcHBlbmQoc3Vic2NyaXB0cywgbik7CiAJCWVsc2UgaWYg KElzQShuLCBBX1N0YXIpKQotCQl7Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInJvdyBleHBhbnNp b24gdmlhIFwiKlwiIGlzIG5vdCBzdXBwb3J0ZWQgaGVyZSIpLAotCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7Ci0JCX0KKwkJCXN1YnNjcmlwdHMgPSBsYXBwZW5k KHN1YnNjcmlwdHMsIG4pOwogCQllbHNlCiAJCXsKIAkJCUFzc2VydChJc0EobiwgU3RyaW5nKSk7 CkBAIC00OTEsNyArNDg2LDIxIEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKQogCiAJCQluID0gbGluaXRpYWwoc3Vic2NyaXB0cyk7 CiAKLQkJCWlmICghSXNBKG4sIFN0cmluZykpCisJCQlpZiAoSXNBKG4sIEFfU3RhcikpCisJCQl7 CisJCQkJLyogU3VjY2VzcywgaWYgdHJhaWxpbmcgc3RhciBleHBhbnNpb24gaXMgYWxsb3dlZCAq LworCQkJCWlmICh0cmFpbGluZ19zdGFyX2V4cGFuc2lvbiAmJiBsaXN0X2xlbmd0aChzdWJzY3Jp cHRzKSA9PSAxKQorCQkJCXsKKwkJCQkJKnRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uID0gdHJ1ZTsK KwkJCQkJcmV0dXJuIHJlc3VsdDsKKwkJCQl9CisKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi cm93IGV4cGFuc2lvbiB2aWEgXCIqXCIgaXMgbm90IHN1cHBvcnRlZCBoZXJlIiksCisJCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CisJCQl9CisJCQllbHNlIGlm ICghSXNBKG4sIFN0cmluZykpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAogCQkJCQkJIGVycm1zZygiY2Fubm90IHN1YnNjcmlw dCB0eXBlICVzIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCBzdWJzY3JpcHRpbmciLApAQCAt NTE3LDYgKzUyNiw5IEBAIHRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QV9JbmRpcmVjdGlvbiAqaW5kKQogCQlyZXN1bHQgPSBuZXdyZXN1bHQ7CiAJfQogCisJaWYgKHRy YWlsaW5nX3N0YXJfZXhwYW5zaW9uKQorCQkqdHJhaWxpbmdfc3Rhcl9leHBhbnNpb24gPSBmYWxz ZTsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwppbmRl eCAzZWY1ODk3ZjJlYi4uMTQxZmMxZGZlYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMK QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFzc2lnbm1lbnRTdWJzY3Jp cHRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIHN0YXRpYyBMaXN0ICpFeHBhbmRDb2x1bW5SZWZTdGFy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmLAogCQkJCQkJCQkgYm9vbCBtYWtl X3RhcmdldF9lbnRyeSk7CiBzdGF0aWMgTGlzdCAqRXhwYW5kQWxsVGFibGVzKFBhcnNlU3RhdGUg KnBzdGF0ZSwgaW50IGxvY2F0aW9uKTsKLXN0YXRpYyBMaXN0ICpFeHBhbmRJbmRpcmVjdGlvblN0 YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQsCitzdGF0aWMgTm9kZSAq RXhwYW5kSW5kaXJlY3Rpb25TdGFyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9JbmRpcmVjdGlvbiAq aW5kLAogCQkJCQkJCQkgICBib29sIG1ha2VfdGFyZ2V0X2VudHJ5LCBQYXJzZUV4cHJLaW5kIGV4 cHJLaW5kKTsKIHN0YXRpYyBMaXN0ICpFeHBhbmRTaW5nbGVUYWJsZShQYXJzZVN0YXRlICpwc3Rh dGUsIFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQkJCQkJCSAgIGludCBzdWJsZXZlbHNf dXAsIGludCBsb2NhdGlvbiwKQEAgLTEzNCw2ICsxMzQsNyBAQCB0cmFuc2Zvcm1UYXJnZXRMaXN0 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAlmb3JlYWNoKG9fdGFyZ2V0 LCB0YXJnZXRsaXN0KQogCXsKIAkJUmVzVGFyZ2V0ICAqcmVzID0gKFJlc1RhcmdldCAqKSBsZmly c3Qob190YXJnZXQpOworCQlOb2RlCSAgICp0cmFuc2Zvcm1lZCA9IE5VTEw7CiAKIAkJLyoKIAkJ ICogQ2hlY2sgZm9yICJzb21ldGhpbmcuKiIuICBEZXBlbmRpbmcgb24gdGhlIGNvbXBsZXhpdHkg b2YgdGhlCkBAIC0xNjIsMTMgKzE2MywxOSBAQCB0cmFuc2Zvcm1UYXJnZXRMaXN0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqdGFyZ2V0bGlzdCwKIAogCQkJCWlmIChJc0EobGxhc3QoaW5kLT5p bmRpcmVjdGlvbiksIEFfU3RhcikpCiAJCQkJewotCQkJCQkvKiBJdCBpcyBzb21ldGhpbmcuKiwg ZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KLQkJCQkJcF90YXJnZXQgPSBsaXN0X2NvbmNh dChwX3RhcmdldCwKLQkJCQkJCQkJCQkgICBFeHBhbmRJbmRpcmVjdGlvblN0YXIocHN0YXRlLAot CQkJCQkJCQkJCQkJCQkJCSBpbmQsCi0JCQkJCQkJCQkJCQkJCQkJIHRydWUsCi0JCQkJCQkJCQkJ CQkJCQkJIGV4cHJLaW5kKSk7Ci0JCQkJCWNvbnRpbnVlOworCQkJCQlOb2RlCSAgICpjb2x1bW5z ID0gRXhwYW5kSW5kaXJlY3Rpb25TdGFyKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCQlpbmQsCisJ CQkJCQkJCQkJCQkJCQkJdHJ1ZSwKKwkJCQkJCQkJCQkJCQkJCQlleHByS2luZCk7CisKKwkJCQkJ aWYgKElzQShjb2x1bW5zLCBMaXN0KSkKKwkJCQkJeworCQkJCQkJLyogSXQgaXMgc29tZXRoaW5n LiosIGV4cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCisJCQkJCQlwX3RhcmdldCA9IGxpc3Rf Y29uY2F0KHBfdGFyZ2V0LCAoTGlzdCAqKSBjb2x1bW5zKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJ CQl9CisKKwkJCQkJdHJhbnNmb3JtZWQgPSAoTm9kZSAqKSBjb2x1bW5zOwogCQkJCX0KIAkJCX0K IAkJfQpAQCAtMTgwLDcgKzE4Nyw3IEBAIHRyYW5zZm9ybVRhcmdldExpc3QoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICp0YXJnZXRsaXN0LAogCQlwX3RhcmdldCA9IGxhcHBlbmQocF90YXJnZXQs CiAJCQkJCQkgICB0cmFuc2Zvcm1UYXJnZXRFbnRyeShwc3RhdGUsCiAJCQkJCQkJCQkJCQlyZXMt PnZhbCwKLQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQl0cmFuc2Zvcm1lZCwKIAkJCQkJ CQkJCQkJCWV4cHJLaW5kLAogCQkJCQkJCQkJCQkJcmVzLT5uYW1lLAogCQkJCQkJCQkJCQkJZmFs c2UpKTsKQEAgLTI1MSwxMCArMjU4LDE1IEBAIHRyYW5zZm9ybUV4cHJlc3Npb25MaXN0KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAKIAkJCWlmIChJc0EobGxhc3QoaW5kLT5p bmRpcmVjdGlvbiksIEFfU3RhcikpCiAJCQl7Ci0JCQkJLyogSXQgaXMgc29tZXRoaW5nLiosIGV4 cGFuZCBpbnRvIG11bHRpcGxlIGl0ZW1zICovCi0JCQkJcmVzdWx0ID0gbGlzdF9jb25jYXQocmVz dWx0LAotCQkJCQkJCQkJIEV4cGFuZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsIGluZCwKLQkJCQkJ CQkJCQkJCQkJICAgZmFsc2UsIGV4cHJLaW5kKSk7CisJCQkJTm9kZQkgICAqY29scyA9IEV4cGFu ZEluZGlyZWN0aW9uU3Rhcihwc3RhdGUsIGluZCwKKwkJCQkJCQkJCQkJCQkJIGZhbHNlLCBleHBy S2luZCk7CisKKwkJCQlpZiAoIWNvbHMgfHwgSXNBKGNvbHMsIExpc3QpKQorCQkJCQkvKiBJdCBp cyBzb21ldGhpbmcuKiwgZXhwYW5kIGludG8gbXVsdGlwbGUgaXRlbXMgKi8KKwkJCQkJcmVzdWx0 ID0gbGlzdF9jb25jYXQocmVzdWx0LCAoTGlzdCAqKSBjb2xzKTsKKwkJCQllbHNlCisJCQkJCXJl c3VsdCA9IGxhcHBlbmQocmVzdWx0LCBjb2xzKTsKKwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQl9 CkBAIC0xMzQ1LDIyICsxMzU3LDMwIEBAIEV4cGFuZEFsbFRhYmxlcyhQYXJzZVN0YXRlICpwc3Rh dGUsIGludCBsb2NhdGlvbikKICAqIEZvciByb2J1c3RuZXNzLCB3ZSB1c2UgYSBzZXBhcmF0ZSAi bWFrZV90YXJnZXRfZW50cnkiIGZsYWcgdG8gY29udHJvbAogICogdGhpcyByYXRoZXIgdGhhbiBy ZWx5aW5nIG9uIGV4cHJLaW5kLgogICovCi1zdGF0aWMgTGlzdCAqCitzdGF0aWMgTm9kZSAqCiBF eHBhbmRJbmRpcmVjdGlvblN0YXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICpp bmQsCiAJCQkJCSAgYm9vbCBtYWtlX3RhcmdldF9lbnRyeSwgUGFyc2VFeHByS2luZCBleHByS2lu ZCkKIHsKIAlOb2RlCSAgICpleHByOworCVBhcnNlRXhwcktpbmQgc3ZfZXhwcl9raW5kOworCWJv b2wJCXRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uID0gZmFsc2U7CisKKwkvKiBTYXZlIGFuZCByZXN0 b3JlIGlkZW50aXR5IG9mIGV4cHJlc3Npb24gdHlwZSB3ZSdyZSBwYXJzaW5nICovCisJQXNzZXJ0 KGV4cHJLaW5kICE9IEVYUFJfS0lORF9OT05FKTsKKwlzdl9leHByX2tpbmQgPSBwc3RhdGUtPnBf ZXhwcl9raW5kOworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBleHByS2luZDsKIAogCS8qIFN0cmlw IG9mZiB0aGUgJyonIHRvIGNyZWF0ZSBhIHJlZmVyZW5jZSB0byB0aGUgcm93dHlwZSBvYmplY3Qg Ki8KLQlpbmQgPSBjb3B5T2JqZWN0KGluZCk7Ci0JaW5kLT5pbmRpcmVjdGlvbiA9IGxpc3RfdHJ1 bmNhdGUoaW5kLT5pbmRpcmVjdGlvbiwKLQkJCQkJCQkJCSBsaXN0X2xlbmd0aChpbmQtPmluZGly ZWN0aW9uKSAtIDEpOworCWV4cHIgPSB0cmFuc2Zvcm1JbmRpcmVjdGlvbihwc3RhdGUsIGluZCwg JnRyYWlsaW5nX3N0YXJfZXhwYW5zaW9uKTsKKworCXBzdGF0ZS0+cF9leHByX2tpbmQgPSBzdl9l eHByX2tpbmQ7CiAKLQkvKiBBbmQgdHJhbnNmb3JtIHRoYXQgKi8KLQlleHByID0gdHJhbnNmb3Jt RXhwcihwc3RhdGUsIChOb2RlICopIGluZCwgZXhwcktpbmQpOworCS8qICcqJyB3YXMgY29uc3Vt ZWQgYnkgZ2VuZXJpYyB0eXBlIHN1YnNjcmlwdGluZyAqLworCWlmICghdHJhaWxpbmdfc3Rhcl9l eHBhbnNpb24pCisJCXJldHVybiBleHByOwogCiAJLyogRXhwYW5kIHRoZSByb3d0eXBlIGV4cHJl c3Npb24gaW50byBpbmRpdmlkdWFsIGZpZWxkcyAqLwotCXJldHVybiBFeHBhbmRSb3dSZWZlcmVu Y2UocHN0YXRlLCBleHByLCBtYWtlX3RhcmdldF9lbnRyeSk7CisJcmV0dXJuIChOb2RlICopIEV4 cGFuZFJvd1JlZmVyZW5jZShwc3RhdGUsIGV4cHIsIG1ha2VfdGFyZ2V0X2VudHJ5KTsKIH0KIAog LyoKQEAgLTE3ODUsMTMgKzE4MDUsMTggQEAgRmlndXJlQ29sbmFtZUludGVybmFsKE5vZGUgKm5v ZGUsIGNoYXIgKipuYW1lKQogCQkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKIAkJCQlMaXN0Q2Vs bCAgICpsOwogCi0JCQkJLyogZmluZCBsYXN0IGZpZWxkIG5hbWUsIGlmIGFueSwgaWdub3Jpbmcg IioiIGFuZCBzdWJzY3JpcHRzICovCisJCQkJLyoKKwkJCQkgKiBmaW5kIGxhc3QgZmllbGQgbmFt ZSwgaWYgYW55LCBpZ25vcmluZyBzdWJzY3JpcHRzLCBhbmQgdXNlCisJCQkJICogJz9jb2x1bW4/ JyB3aGVuIHRoZXJlJ3MgYSB0cmFpbGluZyAnKicuCisJCQkJICovCiAJCQkJZm9yZWFjaChsLCBp bmQtPmluZGlyZWN0aW9uKQogCQkJCXsKIAkJCQkJTm9kZQkgICAqaSA9IGxmaXJzdChsKTsKIAog CQkJCQlpZiAoSXNBKGksIFN0cmluZykpCiAJCQkJCQlmbmFtZSA9IHN0clZhbChpKTsKKwkJCQkJ ZWxzZSBpZiAoSXNBKGksIEFfU3RhcikpCisJCQkJCQlmbmFtZSA9ICI/Y29sdW1uPyI7CiAJCQkJ fQogCQkJCWlmIChmbmFtZSkKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXgg Y2ZhZTgxNTlhNzYuLjFiYzI5MmM1YzQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBA IC0xMjkyNiw3ICsxMjkyNiwxMSBAQCBwcmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5nUmVmICpz YnNyZWYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAl7CiAJCU5vZGUJICAgKnVwID0gKE5v ZGUgKikgbGZpcnN0KHVwbGlzdF9pdGVtKTsKIAotCQlpZiAoSXNBKHVwLCBTdHJpbmcpKQorCQlp ZiAoIXVwKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIi4qIik7CisJCX0K KwkJZWxzZSBpZiAoSXNBKHVwLCBTdHJpbmcpKQogCQl7CiAJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICcuJyk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRp ZmllcihzdHJWYWwodXApKSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf ZXhwci5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaAppbmRleCBlZmJhZmY4ZTcx MC4uYzlmNmE3NzI0YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9leHBy LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2V4cHIuaApAQCAtMjIsNCArMjIsNyBA QCBleHRlcm4gTm9kZSAqdHJhbnNmb3JtRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4 cHIsIFBhcnNlRXhwcktpbmQgZXhwcktpbgogCiBleHRlcm4gY29uc3QgY2hhciAqUGFyc2VFeHBy S2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCk7CiAKK2V4dGVybiBOb2RlICp0cmFuc2Zv cm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5kaXJlY3Rpb24gKmluZCwKKwkJ CQkJCQkJICBib29sICp0cmFpbGluZ19zdGFyX2V4cGFuc2lvbik7CisKICNlbmRpZgkJCQkJCQkv KiBQQVJTRV9FWFBSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv anNvbmIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQKaW5kZXggNDgw ZWNiNDRhOTQuLmFhYjY5YjQ3MjJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pzb25iLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dApA QCAtNTk4MCwxMiArNTk4MCwxNzIgQEAgU0VMRUNUIChqYikuYS5iLmMgRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKICAKICgxIHJvdykKIAorLyogd2lsZCBjYXJkIG1lbWJlciBhY2Nlc3Mg Ki8KIFNFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwotRVJST1I6 ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKKyAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBbImMiLCAiZCIsICJmIiwgeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9XQorKDEgcm93 KQorCitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1 bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6 ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwg IngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKworU0VMRUNUIChqYiku KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJiIjogImQiLCAiZSI6ICJmIiwgIngiOiB7Inki OiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQsIHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZ IiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKworU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAy LCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjogImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6 ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAieCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloi fX1dXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFtbMSwgMiwgeyJiIjogImMifSwgeyJi IjogImQiLCAiZSI6ICJmIiwgIngiOiB7InkiOiAieXl5IiwgInoiOiAienp6In19XSwgWzMsIDQs IHsiYiI6ICJnIiwgIngiOiB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn19XV0KKygxIHJvdykKKwor U0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitFUlJPUjogIG1p c3NpbmcgRlJPTS1jbGF1c2UgZW50cnkgZm9yIHRhYmxlICJ0IgorTElORSAxOiBTRUxFQ1QgKHQu amIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICBeCitT RUxFQ1QgKHQuamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29sdW1u PyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBbWzEsIDIsIHsiYiI6ICJjIn0sIHsiYiI6ICJkIiwgImUiOiAi ZiIsICJ4IjogeyJ5IjogInl5eSIsICJ6IjogInp6eiJ9fV0sIFszLCA0LCB7ImIiOiAiZyIsICJ4 IjogeyJ5IjogIllZWSIsICJ6IjogIlpaWiJ9fV1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEu KiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICA/Y29sdW1u PyAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFsiYyIsICJkIiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCisoMSBy b3cpCisKK1NFTEVDVCAoamIpLmEuKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247Cisg YiAKKy0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLioueCBGUk9NIHRlc3RfanNvbmJf ZG90X25vdGF0aW9uOworIHggCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qLnkg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgIHkgICAKKy0tLS0tLS0KKyAieXl5Igor KDEgcm93KQorCitTRUxFQ1QgKGpiKS5hLiouKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworICAgID9jb2x1bW4/ICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgInp6eiJdCiso MSByb3cpCisKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwor ICAgICAgICAgICAgICAgICAgICAgICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBb eyJ5IjogInl5eSIsICJ6IjogInp6eiJ9LCB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn1dCisoMSBy b3cpCisKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHggICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFt7 InkiOiAieXl5IiwgInoiOiAienp6In0sIHsieSI6ICJZWVkiLCAieiI6ICJaWloifV0KKygxIHJv dykKKworU0VMRUNUICgoamIpLiopLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0Owor IHggCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUICgoamIpLiopLnggRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbiB0OworIHggCistLS0KKyAKKygxIHJvdykKKworU0VMRUNUICgoamIpLiop WzpdLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OworICAgICAgICAgICAgICAgICAg ICAgICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6Ijog Inp6eiJ9LCB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn1dCisoMSByb3cpCisKK1NFTEVDVCAoamIp LioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICAgICAg ICAgICB4ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBbeyJ5IjogInl5eSIsICJ6IjogInp6 eiJ9LCB7InkiOiAiWVlZIiwgInoiOiAiWlpaIn1dCisoMSByb3cpCisKK1NFTEVDVCAoamIpLiou eC4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgID9jb2x1bW4/ICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsieXl5IiwgInp6eiIs ICJZWVkiLCAiWlpaIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi54LnkgRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICB5ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBb Inl5eSIsICJZWVkiXQorKDEgcm93KQorCitTRUxFQ1QgKGpiKS4qLngueiBGUk9NIHRlc3RfanNv bmJfZG90X25vdGF0aW9uOworICAgICAgIHogICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFsi enp6IiwgIlpaWiJdCisoMSByb3cpCisKK1NFTEVDVCAoamIpLiouKi55IEZST00gdGVzdF9qc29u Yl9kb3Rfbm90YXRpb247CisgICAgICAgeSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgWyJ5 eXkiLCAiWVlZIl0KKygxIHJvdykKKworU0VMRUNUIChqYikuKi4qLiogRlJPTSB0ZXN0X2pzb25i X2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgWyJ5eXkiLCAienp6IiwgIllZWSIsICJaWloiXQorKDEg cm93KQorCitTRUxFQ1QgKGpiKS4qLiouKi4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAoamIpLmEuYi5j LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIChqYikuYS4qKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247IC0tIG5vdCBzdXBwb3J0ZWQKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIg IioqIgorTElORSAxOiBTRUxFQ1QgKGpiKS5hLioqLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3Rh dGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICBeCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpIFNFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLUVSUk9SOiAg dHlwZSBqc29uYiBpcyBub3QgY29tcG9zaXRlCisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91 dHB1dDogamIuKgorKDIgcm93cykKKwogU0VMRUNUIChqYikuKiBGUk9NIHRlc3RfanNvbmJfZG90 X25vdGF0aW9uOwotRVJST1I6ICB0eXBlIGpzb25iIGlzIG5vdCBjb21wb3NpdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVt bj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgW1sxLCAyLCB7ImIiOiAiYyJ9LCB7ImIiOiAiZCIsICJlIjog ImYiLCAieCI6IHsieSI6ICJ5eXkiLCAieiI6ICJ6enoifX1dLCBbMywgNCwgeyJiIjogImciLCAi eCI6IHsieSI6ICJZWVkiLCAieiI6ICJaWloifX1dXQorKDEgcm93KQorCiBFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0 aW9uIHQ7CiAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MDEyLDMg KzYxNzIsMjkgQEAgU0VMRUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OwogIDIKICgxIHJvdykKIAorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKGpi KS5hLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlv bgorICAgT3V0cHV0OiBqYi5hLioKKygyIHJvd3MpCisKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOworICAgICAgICAgICAgICAgICA/Y29sdW1uPyAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFsiYyIsICJkIiwgImYiLCB7InkiOiAieXl5IiwgInoiOiAienp6In1dCisoMSByb3cpCisKK0VY UExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4qWzE6Ml0uKi5iIEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb247CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBwdWJsaWMudGVzdF9qc29uYl9kb3Rfbm90YXRpb24KKyAgIE91dHB1 dDogamIuYS4qWzE6Ml0uKi5iCisoMiByb3dzKQorCitTRUxFQ1QgKGpiKS5hLipbMToyXS4qLmIg RlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKKyBiIAorLS0tCisgCisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25iLnNxbAppbmRleCA1NWI2YzA3ZjQ2Mi4uN2Q2MDJiZDhkYWMgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25iLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9qc29uYi5zcWwKQEAgLTE2MDksNyArMTYwOSwzNCBAQCBTRUxFQ1QgKGpiKS5hLngueSBG Uk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUICgoamIpLmIpWzpdLnggRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbiB0OwogU0VMRUNUIChqYikuYi54LnogRlJPTSB0ZXN0X2pz b25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAoamIpLmEuYi5jIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb247CisKKy8qIHdpbGQgY2FyZCBtZW1iZXIgYWNjZXNzICovCiBTRUxFQ1QgKGpiKS5h LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbiB0OworU0VMRUNUICh0LmpiKS4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24g dDsKK1NFTEVDVCAoamIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAo dC5qYikuKiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUICh0LmpiKS4qIEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoamIpLmEuKiBGUk9NIHRlc3Rf anNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuYS4qLmIgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLmEuKi54IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRp b247CitTRUxFQ1QgKGpiKS5hLioueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VM RUNUIChqYikuYS4qLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIp LioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi54IEZST00g dGVzdF9qc29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpiKS4qKS54IEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb24gdDsKK1NFTEVDVCAoKGpiKS4qKVs6XS54IEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKK1NFTEVDVCAoamIpLioueCBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u OworU0VMRUNUIChqYikuKi54LiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVD VCAoamIpLioueC55IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4q LngueiBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworU0VMRUNUIChqYikuKi4qLnkgRlJP TSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKK1NFTEVDVCAoamIpLiouKi4qIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS4qLiouKi4qIEZST00gdGVzdF9qc29uYl9k b3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLmIuYy4qIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb247CitTRUxFQ1QgKGpiKS5hLioqLnggRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsg LS0gbm90IHN1cHBvcnRlZAogCiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAo amIpLiogRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAoamIpLiogRlJPTSB0 ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKQEAgLTE2MTcsMyArMTY0NCw3IEBAIEVYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rfbm90 YXRpb24gdDsKIFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7 CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYS4q IEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1QgKGpiKS5hLiogRlJPTSB0ZXN0 X2pzb25iX2RvdF9ub3RhdGlvbjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNU IChqYikuYS4qWzE6Ml0uKi5iIEZST00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitTRUxFQ1Qg KGpiKS5hLipbMToyXS4qLmIgRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKLS0gCjIuMzku NSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000082952a062f27fc96 Content-Type: application/octet-stream; name="v9-0005-Eanble-String-node-as-field-accessors-in-generic-.patch" Content-Disposition: attachment; filename="v9-0005-Eanble-String-node-as-field-accessors-in-generic-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7nyzaeq4 RnJvbSA5ZTQ2NDEzYzdkZmU0NTA4ZTBiYTc4ZWZiNzczM2M4NDU3ODliMDU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8u cnU+CkRhdGU6IFNhdCwgMSBBcHIgMjAyMyAxNjoyMToyMCArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djkgNS83XSBFYW5ibGUgU3RyaW5nIG5vZGUgYXMgZmllbGQgYWNjZXNzb3JzIGluIGdlbmVyaWMK IHN1YnNjcmlwdGluZwoKTm93IHRoYXQgd2UgYXJlIGFsbG93aW5nIGNvbnRhaW5lciBnZW5lcmlj IHN1YnNjcmlwdGluZyB0byB0YWtlIGRvdApub3RhdGlvbiBpbiB0aGUgbGlzdCBvZiBpbmRpcmVj dGlvbnMsIGFuZCBpdCBpcyB0cmFuc2Zvcm1lZCBhcyBhClN0cmluZyBub2RlLgoKRm9yIGpzb25i LCB3ZSB3YW50IHRvIHJlcHJlc2VudCBmaWVsZCBhY2Nlc3NvcnMgYXMgU3RyaW5nIG5vZGVzIGlu CnJlZnVwcGVyZXhwcnMgZm9yIGRpc3Rpbmd1aXNoaW5nIGZyb20gb3JkaW5hcnkgdGV4dCBzdWJz Y3JpcHRzIHdoaWNoCmNhbiBiZSBuZWVkZWQgZm9yIGNvcnJlY3QgRVhQTEFJTi4KClN0cmluZ3Mg bm9kZSBpcyBubyBsb25nZXIgYSB2YWxpZCBleHByZXNzaW9uIG5vZGVzLCBzbyBhZGRlZCBzcGVj aWFsCmhhbmRsaW5nIGZvciB0aGVtIGluIHdhbGtlcnMgaW4gbm9kZUZ1bmNzIGV0Yy4KLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgIHwgMjQgKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICB8IDczICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyB8IDIyICsrKysrKyst LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICB8IDI5ICsrKysrKysrLS0tLQog NCBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggMDM1NjZjNGQxODEuLmJlNDIxMzQ1NWU1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTMzMjgsOSArMzMyOCwxNSBAQCBFeGVjSW5pdFN1YnNjcmlw dGluZ1JlZihFeHByRXZhbFN0ZXAgKnNjcmF0Y2gsIFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAog CQl7CiAJCQlzYnNyZWZzdGF0ZS0+dXBwZXJwcm92aWRlZFtpXSA9IHRydWU7CiAJCQkvKiBFYWNo IHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQgaW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwot CQkJRXhlY0luaXRFeHByUmVjKGUsIHN0YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJp bmRleFtpXSwKLQkJCQkJCQkmc2JzcmVmc3RhdGUtPnVwcGVyaW5kZXhudWxsW2ldKTsKKwkJCWlm IChJc0EoZSwgU3RyaW5nKSkKKwkJCXsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleFtpXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oc3RyVmFsKGUpKTsKKwkJCQlzYnNyZWZzdGF0ZS0+dXBwZXJp bmRleG51bGxbaV0gPSBmYWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlFeGVjSW5pdEV4cHJSZWMo ZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNyZWZzdGF0ZS0+dXBwZXJpbmRleFtpXSwKKwkJCQkJCQkJ JnNic3JlZnN0YXRlLT51cHBlcmluZGV4bnVsbFtpXSk7CiAJCX0KIAkJaSsrOwogCX0KQEAgLTMz NTEsOSArMzM1NywxNSBAQCBFeGVjSW5pdFN1YnNjcmlwdGluZ1JlZihFeHByRXZhbFN0ZXAgKnNj cmF0Y2gsIFN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmLAogCQl7CiAJCQlzYnNyZWZzdGF0ZS0+bG93 ZXJwcm92aWRlZFtpXSA9IHRydWU7CiAJCQkvKiBFYWNoIHN1YnNjcmlwdCBpcyBldmFsdWF0ZWQg aW50byBhcHByb3ByaWF0ZSBhcnJheSBlbnRyeSAqLwotCQkJRXhlY0luaXRFeHByUmVjKGUsIHN0 YXRlLAotCQkJCQkJCSZzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKLQkJCQkJCQkmc2JzcmVm c3RhdGUtPmxvd2VyaW5kZXhudWxsW2ldKTsKKwkJCWlmIChJc0EoZSwgU3RyaW5nKSkKKwkJCXsK KwkJCQlzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oc3Ry VmFsKGUpKTsKKwkJCQlzYnNyZWZzdGF0ZS0+bG93ZXJpbmRleG51bGxbaV0gPSBmYWxzZTsKKwkJ CX0KKwkJCWVsc2UKKwkJCQlFeGVjSW5pdEV4cHJSZWMoZSwgc3RhdGUsCisJCQkJCQkJCSZzYnNy ZWZzdGF0ZS0+bG93ZXJpbmRleFtpXSwKKwkJCQkJCQkJJnNic3JlZnN0YXRlLT5sb3dlcmluZGV4 bnVsbFtpXSk7CiAJCX0KIAkJaSsrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggN2JjODIz NTA3ZjEuLmE5YzI5YWI4ZjI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjE4MiwxMiArMjE4 MiwyOCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJY2FzZSBU X1N1YnNjcmlwdGluZ1JlZjoKIAkJCXsKIAkJCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChT dWJzY3JpcHRpbmdSZWYgKikgbm9kZTsKKwkJCQlMaXN0Q2VsbCAgICpsYzsKKworCQkJCS8qCisJ CQkJICogUmVjdXJzZSBkaXJlY3RseSBmb3IgdXBwZXIvbG93ZXIgY29udGFpbmVyIGluZGV4IGxp c3RzLAorCQkJCSAqIHNraXBwaW5nIFN0cmluZyBzdWJzY3JpcHRzIHVzZWQgZm9yIGRvdCBub3Rh dGlvbi4KKwkJCQkgKi8KKwkJCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikK KwkJCQl7CisJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMpOworCisJCQkJCWlmIChleHBy ICYmICFJc0EoZXhwciwgU3RyaW5nKSAmJiBXQUxLKGV4cHIpKQorCQkJCQkJcmV0dXJuIHRydWU7 CisJCQkJfQorCisJCQkJZm9yZWFjaChsYywgc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpCisJCQkJ eworCQkJCQlOb2RlCSAgICpleHByID0gbGZpcnN0KGxjKTsKKworCQkJCQlpZiAoZXhwciAmJiAh SXNBKGV4cHIsIFN0cmluZykgJiYgV0FMSyhleHByKSkKKwkJCQkJCXJldHVybiB0cnVlOworCQkJ CX0KIAotCQkJCS8qIHJlY3Vyc2UgZGlyZWN0bHkgZm9yIHVwcGVyL2xvd2VyIGNvbnRhaW5lciBp bmRleCBsaXN0cyAqLwotCQkJCWlmIChMSVNUX1dBTEsoc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIp KQotCQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCQlpZiAoTElTVF9XQUxLKHNic3JlZi0+cmVmbG93ZXJp bmRleHByKSkKLQkJCQkJcmV0dXJuIHRydWU7CiAJCQkJLyogd2Fsa2VyIG11c3Qgc2VlIHRoZSBy ZWZleHByIGFuZCByZWZhc3NnbmV4cHIsIGhvd2V2ZXIgKi8KIAkJCQlpZiAoV0FMSyhzYnNyZWYt PnJlZmV4cHIpKQogCQkJCQlyZXR1cm4gdHJ1ZTsKQEAgLTMwODIsMTIgKzMwOTgsNTEgQEAgZXhw cmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJewogCQkJCVN1YnNjcmlw dGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGluZ1JlZiAqKSBub2RlOwogCQkJCVN1YnNjcmlw dGluZ1JlZiAqbmV3bm9kZTsKKwkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQlMaXN0CSAgICpleHBy cyA9IE5JTDsKIAogCQkJCUZMQVRDT1BZKG5ld25vZGUsIHNic3JlZiwgU3Vic2NyaXB0aW5nUmVm KTsKLQkJCQlNVVRBVEUobmV3bm9kZS0+cmVmdXBwZXJpbmRleHByLCBzYnNyZWYtPnJlZnVwcGVy aW5kZXhwciwKLQkJCQkJICAgTGlzdCAqKTsKLQkJCQlNVVRBVEUobmV3bm9kZS0+cmVmbG93ZXJp bmRleHByLCBzYnNyZWYtPnJlZmxvd2VyaW5kZXhwciwKLQkJCQkJICAgTGlzdCAqKTsKKworCQkJ CWZvcmVhY2gobGMsIHNic3JlZi0+cmVmdXBwZXJpbmRleHByKQorCQkJCXsKKwkJCQkJTm9kZQkg ICAqZXhwciA9IGxmaXJzdChsYyk7CisKKwkJCQkJaWYgKGV4cHIgJiYgSXNBKGV4cHIsIFN0cmlu ZykpCisJCQkJCXsKKwkJCQkJCVN0cmluZwkgICAqc3RyOworCisJCQkJCQlGTEFUQ09QWShzdHIs IGV4cHIsIFN0cmluZyk7CisJCQkJCQlleHByID0gKE5vZGUgKikgc3RyOworCQkJCQl9CisJCQkJ CWVsc2UKKwkJCQkJCWV4cHIgPSBtdXRhdG9yKGV4cHIsIGNvbnRleHQpOworCisJCQkJCWV4cHJz ID0gbGFwcGVuZChleHBycywgZXhwcik7CisJCQkJfQorCisJCQkJbmV3bm9kZS0+cmVmdXBwZXJp bmRleHByID0gZXhwcnM7CisKKwkJCQlleHBycyA9IE5JTDsKKworCQkJCWZvcmVhY2gobGMsIHNi c3JlZi0+cmVmbG93ZXJpbmRleHByKQorCQkJCXsKKwkJCQkJTm9kZQkgICAqZXhwciA9IGxmaXJz dChsYyk7CisKKwkJCQkJaWYgKGV4cHIgJiYgSXNBKGV4cHIsIFN0cmluZykpCisJCQkJCXsKKwkJ CQkJCVN0cmluZwkgICAqc3RyOworCisJCQkJCQlGTEFUQ09QWShzdHIsIGV4cHIsIFN0cmluZyk7 CisJCQkJCQlleHByID0gKE5vZGUgKikgc3RyOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWV4 cHIgPSBtdXRhdG9yKGV4cHIsIGNvbnRleHQpOworCisJCQkJCWV4cHJzID0gbGFwcGVuZChleHBy cywgZXhwcik7CisJCQkJfQorCisJCQkJbmV3bm9kZS0+cmVmbG93ZXJpbmRleHByID0gZXhwcnM7 CisKIAkJCQlNVVRBVEUobmV3bm9kZS0+cmVmZXhwciwgc2JzcmVmLT5yZWZleHByLAogCQkJCQkg ICBFeHByICopOwogCQkJCU1VVEFURShuZXdub2RlLT5yZWZhc3NnbmV4cHIsIHNic3JlZi0+cmVm YXNzZ25leHByLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKaW5kZXggZDJlMjE4MzUzZjMu LmJlNmRlYTZmZmQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMKQEAgLTY4MCwxMSAr NjgwLDI1IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3NpZ25fY29s bGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQogCQkJCQkJCSAqIGNvbnRyaWJ1dGUgYW55dGhpbmcu KQogCQkJCQkJCSAqLwogCQkJCQkJCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlw dGluZ1JlZiAqKSBub2RlOworCQkJCQkJCUxpc3RDZWxsICAgKmxjOworCisJCQkJCQkJLyogc2tp cCBTdHJpbmcgc3Vic2NyaXB0cyB1c2VkIGZvciBkb3Qgbm90YXRpb24gKi8KKwkJCQkJCQlmb3Jl YWNoKGxjLCBzYnNyZWYtPnJlZnVwcGVyaW5kZXhwcikKKwkJCQkJCQl7CisJCQkJCQkJCU5vZGUJ ICAgKmV4cHIgPSBsZmlyc3QobGMpOworCisJCQkJCQkJCWlmIChleHByICYmICFJc0EoZXhwciwg U3RyaW5nKSkKKwkJCQkJCQkJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMoY29udGV4dC0+cHN0YXRl LCBleHByKTsKKwkJCQkJCQl9CisKKwkJCQkJCQlmb3JlYWNoKGxjLCBzYnNyZWYtPnJlZmxvd2Vy aW5kZXhwcikKKwkJCQkJCQl7CisJCQkJCQkJCU5vZGUJICAgKmV4cHIgPSBsZmlyc3QobGMpOwor CisJCQkJCQkJCWlmIChleHByICYmICFJc0EoZXhwciwgU3RyaW5nKSkKKwkJCQkJCQkJCWFzc2ln bl9leHByX2NvbGxhdGlvbnMoY29udGV4dC0+cHN0YXRlLCBleHByKTsKKwkJCQkJCQl9CiAKLQkJ CQkJCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKGNvbnRleHQtPnBzdGF0ZSwKLQkJCQkJCQkJCQkJ CSAgIChOb2RlICopIHNic3JlZi0+cmVmdXBwZXJpbmRleHByKTsKLQkJCQkJCQlhc3NpZ25fZXhw cl9jb2xsYXRpb25zKGNvbnRleHQtPnBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgIChOb2RlICopIHNi c3JlZi0+cmVmbG93ZXJpbmRleHByKTsKIAkJCQkJCQkodm9pZCkgYXNzaWduX2NvbGxhdGlvbnNf d2Fsa2VyKChOb2RlICopIHNic3JlZi0+cmVmZXhwciwKIAkJCQkJCQkJCQkJCQkJCSZsb2Njb250 ZXh0KTsKIAkJCQkJCQkodm9pZCkgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2VyKChOb2RlICopIHNi c3JlZi0+cmVmYXNzZ25leHByLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGQxMWE4 YTIwZWVhLi5jZmFlODE1OWE3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNDcs NiArNDcsNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVz L25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhdGhub2Rlcy5oIgorI2luY2x1ZGUgIm5v ZGVzL3N1YnNjcmlwdGluZy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfYWdnLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMu aCIKQEAgLTEyOTIzLDE3ICsxMjkyNCwyOSBAQCBwcmludFN1YnNjcmlwdHMoU3Vic2NyaXB0aW5n UmVmICpzYnNyZWYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAlsb3dsaXN0X2l0ZW0gPSBs aXN0X2hlYWQoc2JzcmVmLT5yZWZsb3dlcmluZGV4cHIpOwkvKiBjb3VsZCBiZSBOVUxMICovCiAJ Zm9yZWFjaCh1cGxpc3RfaXRlbSwgc2JzcmVmLT5yZWZ1cHBlcmluZGV4cHIpCiAJewotCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICdbJyk7Ci0JCWlmIChsb3dsaXN0X2l0ZW0pCisJCU5vZGUJ ICAgKnVwID0gKE5vZGUgKikgbGZpcnN0KHVwbGlzdF9pdGVtKTsKKworCQlpZiAoSXNBKHVwLCBT dHJpbmcpKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcuJyk7CisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihzdHJWYWwodXApKSk7CisJ CX0KKwkJZWxzZQogCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICdbJyk7CisJCQlp ZiAobG93bGlzdF9pdGVtKQorCQkJeworCQkJCS8qIElmIHN1YmV4cHJlc3Npb24gaXMgTlVMTCwg Z2V0X3J1bGVfZXhwciBwcmludHMgbm90aGluZyAqLworCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUg KikgbGZpcnN0KGxvd2xpc3RfaXRlbSksIGNvbnRleHQsIGZhbHNlKTsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICc6Jyk7CisJCQl9CiAJCQkvKiBJZiBzdWJleHByZXNzaW9uIGlzIE5V TEwsIGdldF9ydWxlX2V4cHIgcHJpbnRzIG5vdGhpbmcgKi8KLQkJCWdldF9ydWxlX2V4cHIoKE5v ZGUgKikgbGZpcnN0KGxvd2xpc3RfaXRlbSksIGNvbnRleHQsIGZhbHNlKTsKLQkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKGJ1ZiwgJzonKTsKLQkJCWxvd2xpc3RfaXRlbSA9IGxuZXh0KHNic3JlZi0+ cmVmbG93ZXJpbmRleHByLCBsb3dsaXN0X2l0ZW0pOworCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAq KSBsZmlyc3QodXBsaXN0X2l0ZW0pLCBjb250ZXh0LCBmYWxzZSk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICddJyk7CiAJCX0KLQkJLyogSWYgc3ViZXhwcmVzc2lvbiBpcyBOVUxMLCBn ZXRfcnVsZV9leHByIHByaW50cyBub3RoaW5nICovCi0JCWdldF9ydWxlX2V4cHIoKE5vZGUgKikg bGZpcnN0KHVwbGlzdF9pdGVtKSwgY29udGV4dCwgZmFsc2UpOwotCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcihidWYsICddJyk7CisKKwkJaWYgKGxvd2xpc3RfaXRlbSkKKwkJCWxvd2xpc3RfaXRlbSA9 IGxuZXh0KHNic3JlZi0+cmVmbG93ZXJpbmRleHByLCBsb3dsaXN0X2l0ZW0pOwogCX0KIH0KIAot LSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --00000000000082952a062f27fc96--