Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wg7Vt-005wSR-1B for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Jul 2026 21:03:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wg7Vq-00Ayld-1f for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Jul 2026 21:02:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wg7Vp-00AylV-32 for pgsql-hackers@lists.postgresql.org; Sat, 04 Jul 2026 21:02:58 +0000 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wg7Vm-00000001kvT-2cBt for pgsql-hackers@postgresql.org; Sat, 04 Jul 2026 21:02:57 +0000 Received: by mail-qv1-xf2c.google.com with SMTP id 6a1803df08f44-8ef7b7651ecso19993316d6.1 for ; Sat, 04 Jul 2026 14:02:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783198972; cv=none; d=google.com; s=arc-20260327; b=WLiyz5XPQiGfctwwXcjChwqNlFn2U18jhE2t9B3VqPSDpeatIYkXV1USkc6RY27s29 /9BkxxF16ZfUVg4u+NXDzyrwY/3k/Y/6UawdrSB+p4/Zhf/omHb07JC2jeQjZY+fO8R9 CGWa/ZKTLcoZil4aFnPqcbvfMfRe4wQYLWUZhbK0ZTAd/hsxsCEZ1R+/M8dmBBdId7BW AqLK8/v3lUs/2neIWc+C724rvETrCPEudbJ0QfV7tZS/88uvP/yx7rGwW0miCAsIanTs oyeG+wLZvm8GrZYEjHVikWQ99XYngBta+kfNaTMvXS8ji6GhWINeW02pBjPElAKOdmlC n44Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=tAvZMBvfectRlKBBz8gfwzCpyO8dVZOwAphju4iB6kA=; fh=9qgpqi//NP0kRA/d9uh/MiCElYacvtU/6KhSJdw8Kjg=; b=ZhzYwcENpbeMJMJ4Y3t1A6CW05abwQ1vR5n5fv66/hvL+7soPbZVGoRg5yxJe/bUbB T5v9q6ifXD3u7++T//JoLIb32PlhN0/Fhi2UTujxcs4cpdHGSWvM9+B1hm6a/w3G+H38 VG4oEtdFuEJ3vD9C+SpDyhYSli2HvVNEnF5lK7M56YU7O/ikfiUjaQFawxNpKPZ7G3HL r0UVz72L/QURAUke8p35wkg/NCbEy4Og1eO+Gu3EBYZeBRLqKiZjSz5KhhhnJLUdCJ2d ZluIbcsveBLti7L7UBDpjIfFG9pHJYsE1wio3UFxSQAhk3nOuqI4kJHQL0SNH1j52IBb B1RQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783198972; x=1783803772; 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=tAvZMBvfectRlKBBz8gfwzCpyO8dVZOwAphju4iB6kA=; b=hMtnhchFBeLdHyWmYOty7XCETs5/x8Mpv85GHaScSiU6HvM06wJNyxlQ2TcLWfoy18 RDATIVvlGqzsA6p+kyx3dfRttbnZSC7CSGf+bqzl/BI9D9tpOAsWvmDDITP3KUjNyghW wQCZxz7xTfWlEuogWByFno0y0h80t0+ohDpY9p2mlxnFzp+ZWKlVRqPPjHSNVb12+Yrr 1h+oeOT1qavcPnvNQIGiQP8dJz16OOK4IQCstgtC0bfa3xQyvc5I/YeT/9tXD+eSeQGM z2GZgZPKHkF7ETCaZ8ua7uGzR/7cGnVXmGErZnKwYC2Zl7rA+hWuqBfB9WWCtJUgDeEk MmEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783198972; x=1783803772; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tAvZMBvfectRlKBBz8gfwzCpyO8dVZOwAphju4iB6kA=; b=BMiWqSBmC9UTLC/iAVSChA6Ym6qlGsuMEzAApnT3kWdSveM/psKpUv7nSP+hbrPfTQ 1NFs2ZDhDcMRxf1THCh+I7BP0zgvk89sgaiD+jRVGtbEaMZtEB3D9niOVdYDjhbS5npB aApWCLDv6I0m/8R7a1GbLGN2Lsjc2J4h9akEi8Y29QWUVI4nGaI93Hb5A7gyKtHtZwZ3 64Jlv9lspGXYM8pYp6ZN5mLIJCdsT4OEMNucyr2WAPtkZZ/bdGCddj3VL5KxZ9FJ9aHY S5L0ifYcbuQErWJbZl76rqi0H40RkOc7LzEqvoSXhZb+KPQX/mCubvo/e55XXXnSkvLI KfOQ== X-Forwarded-Encrypted: i=1; AHgh+RqECV0dGf84c6XTZKwkRXSOa+P2EgHsg60wL5vUPNsirVGyCpfECAdAuOcWPbwY7/X4b6kceyFm7DHAZeJF@postgresql.org X-Gm-Message-State: AOJu0YxEmPvfbfreRrfRibYjeiTmo46EkxX/mvOgodmf0utHCD1D/YK7 VQ3NISljFj/DKuO3bWDuBNdryqofcl0aV1xPNMP5ki6WyN+MoAj7S7j5yXGgY+96hG6hJsCpwS2 +MUJy9+uLYtbK1M1dteCg2U7hE/5tgW4= X-Gm-Gg: AfdE7ckWKyhqFmHuKGEibwbWfiSbNW6ly+aR9b+YmXiVX573KtwWG9B8extCnr/WzBo CO3IQanC1TjYVholQxffqRlITYmX2JgTt9clpJ7mwDH3mqu5/9jH8NBPyKG3aG3bkFNR0GmFUrx +YPinItoO/iaOgAvfWgMjUTe3Pc5VEtDkXedTUJmc0hY9+SFPKby43mzDQxEB4x82CYsmj3Xkr+ aPqdpCIjvQ99e2BffluEcOJ2ZvZBIboRZ9+UwCH7/N7tr/4ISMrceBLpMXQeGhCmx54kpkDb/UU ELLmBueWO4Fz+uUNHt9kk4iaSTfZKBAoO+8bVrcOTSA6lOHK3I1NQeYPiYbfgzzP/+DxdQ== X-Received: by 2002:a05:6214:408:b0:8ef:545c:9b6c with SMTP id 6a1803df08f44-8f7519babb9mr62285136d6.13.1783198971892; Sat, 04 Jul 2026 14:02:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alexander Korotkov Date: Sun, 5 Jul 2026 00:02:40 +0300 X-Gm-Features: AVVi8CfVmWkTeFM4qiNVTipED5-MYDjqSmAhYiXTtEAJxH3dSKowGvG0qwzW7m8 Message-ID: Subject: Re: SQL/JSON json_table plan clause To: Nikita Malakhov Cc: Amit Langote , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000491fab0655cf5d0e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000491fab0655cf5d0e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Nikita! On Fri, May 15, 2026 at 2:53=E2=80=AFPM Nikita Malakhov = wrote: > Again, Alexander and Amit, thanks for the review. I've rebased the patch = and made > some changes according to Alexander's notes. I've slightly rearranged fil= es between > patches for it to be easier to review, so now there are 3 patches: > v23-0001-json-table-plan-clause.patch - main code changes > v23-0002-json-table-plan-tests.patch - test cases and out file changes > v23-0003-json-table-plan-docs.patch - docs package > > <...> > >1. IsA(planstate, JsonTableSiblingJoin) is wrong. planstate is not a > >node, thus IsA() can't be applied to it. You should instead do > >IsA(planstate->plan, JsonTableSiblingJoin). It wasn't catched, > >because regression tests don't exercise this branch. So, you also > >need to improve the coverage. > - done; > > >2. get_json_table() with patch uses JSON_BEHAVIOR_EMPTY as the default > >value for deparsing, while parsing still uses > >JSON_BEHAVIOR_EMPTY_ARRAY. Looks plain wrong. I'm not sure what is > >intention here. > - looks like leftover from older version, changed to default behavior, so= unnecessary > emission of ERROR is omitted; > > >3. PLAN clause is always emitted during deparsing even if user didn't > >specify anything. I would prefer to skip PLAN clause in this case > >unless there is strong reason to do the opposite (this reason must be > >pointed if any). > - done, this made test cases much more readable; > > >4. Unused typedefs in src/tools/pgindent/typedefs.list: > >JsonTableScanState, JsonPathSpec, JsonTablePlanStateType, > >JsonTableJoinState. > - done; > > >5. Empty comment in JsonTablePlanState definition. Pointed by Amit, > >but not fixed. > - done; > > >6. Rename passingArgs to passing_Args for no reason in parse_jsontable.c= . > - done; > > >7. Patch lacks documentation (also pointed by Amit) > - done, documentation is provided in separate patch; > > >8. Patch could use pgindent run. > - not done yet but would provide a newer version with it. Thank you. I've made following additional changes. 1. Actually, I don't see my previous item 3 fully addressed. We still had PLAN clause deparsed in the case user didn't specify it. I see this as an undesirable behavior. And there are at least two ways to fix this: don't output PLAN clause if it's not the default, remember if user specified as a special flag or even original clause. I found first way (don't output default) more appealing as it don't require additional struct members and we already do this in other similar cases (NULLS FIRST/LAST, ON EMPTY/ON ERROR). So, I did this for PLAN clause. 2. Simplification for JsonTablePlanNextRow(): no reason to check (planstate->advanceNested || planstate->nested) if we already issued break for (planstate->nested =3D=3D NULL). 3. Similar simplification for transformJsonTableNestedColumns(). ------ Regards, Alexander Korotkov Supabase --000000000000491fab0655cf5d0e Content-Type: application/octet-stream; name="v24-0001-JSON_TABLE-PLAN-Clause-1-3.patch" Content-Disposition: attachment; filename="v24-0001-JSON_TABLE-PLAN-Clause-1-3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr6tsfl70 RnJvbSBhYmRhY2RkMjZiNmFiYzdlMmJkNWJkOTdmNWZiM2RjNGFiZjFlYjdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IEZyaSwgMTUgTWF5IDIwMjYgMTQ6Mzc6NTAgKzAzMDAKU3ViamVjdDogW1BB VENIIHYyNCAxLzNdIEpTT05fVEFCTEUgUExBTiBDbGF1c2UgKDEvMykKTUlNRS1WZXJzaW9uOiAx LjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBK U09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUgdXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20g bmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFsbG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGlu IHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBh bGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFs aW5nIHdpdGggc2libGluZyBvciBjaGlsZCBuZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZm aWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5 IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFOIGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2Vy IHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRvIGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVk IHBhdGguCgpUaGUgZmlyc3QgcGF0Y2ggaW4gc2VyaWVzIGludHJvZHVjZXMgbWFpbiBjb3JlIGNo YW5nZXMgYW5kIGdyYW1tYXIKZXh0ZW5zaW9uLgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5n bHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fl di5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6 IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3 IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0 bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9yOiBBbnRvbiBNZWxuaWtvdiA8YS5tZWxuaWtvdkBw b3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZAcG9zdGdy ZXNwcm8ucnU+CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAoaW4gbm8gcGFydGljdWxhciBvcmRl cikgQW5kcmVzIEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292LCBQYXZlbCBTdGVodWxlLCBBbmRy ZXcgQWxzdXAsIEVyaWsgUmlqa2VycywgWmlob25nIFl1LApIaW1hbnNodSBVcGFkaHlheWEsIERh bmllbCBHdXN0YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2YXJvIEhlcnJlcmEsCmppYW4gaGUK CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5MzUtMDE1OC03OGE3LTA4YjUt OTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFwMy5hbmFyYXplbC5kZQpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFhNjYtZjIzMC0zZDZkLTczNDgx N2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v Q0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1haWwu Z21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICB8ICA1 NCArKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgIHwgMTAxICsrKysr Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYyAgfCAzODQgKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMg fCAxNzEgKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAg IHwgIDk5ICsrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgfCAg IDUgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICB8ICA0MyArKysKIHNy Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgfCAgIDIgKwogc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICB8ICAgMyArCiA5IGZpbGVzIGNoYW5nZWQsIDc1NSBp bnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA0 MGIwOTk1OGFjMi4uY2RjMDJiMjc0ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC05NjMsNiAr OTYzLDYwIEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSBidHlwZSwgTm9kZSAq ZXhwciwgaW50IGxvY2F0aW9uKQogCXJldHVybiBiZWhhdmlvcjsKIH0KIAorLyoKKyAqIG1ha2VK c29uVGFibGVEZWZhdWx0UGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNwZWMg bm9kZSB0byByZXByZXNlbnQgYSAiZGVmYXVsdCIgSlNPTl9UQUJMRSBwbGFuCisgKgkgICB3aXRo IGdpdmVuIGpvaW4gc3RyYXRlZ3kKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlRGVmYXVsdFBs YW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZSwgaW50IGxvY2F0aW9uKQoreworCUpz b25UYWJsZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+ cGxhbl90eXBlID0gSlNUUF9ERUZBVUxUOworCW4tPmpvaW5fdHlwZSA9IGpvaW5fdHlwZTsKKwlu LT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8qCisg KiBtYWtlSnNvblRhYmxlU2ltcGxlUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxh blNwZWMgbm9kZSB0byByZXByZXNlbnQgYSAic2ltcGxlIiBKU09OX1RBQkxFIHBsYW4KKyAqCSAg IGZvciBnaXZlbiBQQVRICisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4oY2hh ciAqcGF0aG5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuU3BlYyAqbiA9IG1h a2VOb2RlKEpzb25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBfU0lNUExF OworCW4tPnBhdGhuYW1lID0gcGF0aG5hbWU7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKKwor CXJldHVybiAoTm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4g LQorICoJICAgY3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5vZGUgdG8gcmVwcmVzZW50IGpv aW4gYmV0d2VlbiB0aGUgZ2l2ZW4KKyAqCSAgIHBhaXIgb2YgcGxhbnMKKyAqLworTm9kZSAqCitt YWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwgTm9kZSAq cGxhbjEsIE5vZGUgKnBsYW4yLAorCQkJCQkJaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJsZVBs YW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+cGxhbl90eXBl ID0gSlNUUF9KT0lORUQ7CisJbi0+am9pbl90eXBlID0gdHlwZTsKKwluLT5wbGFuMSA9IGNhc3RO b2RlKEpzb25UYWJsZVBsYW5TcGVjLCBwbGFuMSk7CisJbi0+cGxhbjIgPSBjYXN0Tm9kZShKc29u VGFibGVQbGFuU3BlYywgcGxhbjIpOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwlyZXR1 cm4gKE5vZGUgKikgbjsKK30KKwogLyoKICAqIG1ha2VKc29uS2V5VmFsdWUgLQogICoJICBjcmVh dGVzIGEgSnNvbktleVZhbHVlIG5vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZmNGUxMzg4YzU1Li45ZTA1 YTMxNDcwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NzIsNiArNjcyLDE0IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJCQkJanNvbl90YWJsZQogCQkJCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRp b24KIAkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxl X3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fdGFibGVfcGxhbgorCQkJCWpzb25fdGFibGVfcGxh bl9zaW1wbGUKKwkJCQlqc29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJCQlqc29uX3RhYmxlX3BsYW5f aW5uZXIKKwkJCQlqc29uX3RhYmxlX3BsYW5fdW5pb24KKwkJCQlqc29uX3RhYmxlX3BsYW5fY3Jv c3MKKwkJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQogJXR5cGUgPGxpc3Q+CWpzb25fbmFtZV9h bmRfdmFsdWVfbGlzdAogCQkJCWpzb25fdmFsdWVfZXhwcl9saXN0CiAJCQkJanNvbl9hcnJheV9h Z2dyZWdhdGVfb3JkZXJfYnlfY2xhdXNlX29wdApAQCAtNjgzLDYgKzY5MSw5IEBAIHN0YXRpYyBO b2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAldHlwZSA8aXZhbD4JanNvbl9iZWhhdmlvcl90eXBlCiAJCQkJanNv bl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CiAJCQkJanNvbl9xdW90ZXNfY2xhdXNlX29wdAor CQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMKKwkJCQlqc29uX3RhYmxlX2RlZmF1 bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJCWpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Ny b3NzCiAJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCiAldHlwZSA8Ym9vbGVhbj4JanNvbl9rZXlf dW5pcXVlbmVzc19jb25zdHJhaW50X29wdAogCQkJCWpzb25fb2JqZWN0X2NvbnN0cnVjdG9yX251 bGxfY2xhdXNlX29wdApAQCAtMTUxODgsNiArMTUxOTksNyBAQCBqc29uX3RhYmxlOgogCQkJCWpz b25fdmFsdWVfZXhwciAnLCcgYV9leHByIGpzb25fdGFibGVfcGF0aF9uYW1lX29wdAogCQkJCWpz b25fcGFzc2luZ19jbGF1c2Vfb3B0CiAJCQkJQ09MVU1OUyAnKCcganNvbl90YWJsZV9jb2x1bW5f ZGVmaW5pdGlvbl9saXN0ICcpJworCQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0CiAJCQkJ anNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0CiAJCQknKScKIAkJCQl7CkBAIC0xNTE5OSwxMyArMTUy MTEsMTUgQEAganNvbl90YWJsZToKIAkJCQkJCWNhc3ROb2RlKEFfQ29uc3QsICQ1KS0+dmFsLm5v ZGUudHlwZSAhPSBUX1N0cmluZykKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJCQllcnJtc2coIm9ubHkg c3RyaW5nIGNvbnN0YW50cyBhcmUgc3VwcG9ydGVkIGluIEpTT05fVEFCTEUgcGF0aCBzcGVjaWZp Y2F0aW9uIiksCisJCQkJCQkJCWVycm1zZygib25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBw b3J0ZWQgaW4iCisJCQkJCQkJCQkgICAiIEpTT05fVEFCTEUgcGF0aCBzcGVjaWZpY2F0aW9uIiks CiAJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOwogCQkJCQlwYXRoc3RyaW5nID0gY2Fz dE5vZGUoQV9Db25zdCwgJDUpLT52YWwuc3ZhbC5zdmFsOwogCQkJCQluLT5wYXRoc3BlYyA9IG1h a2VKc29uVGFibGVQYXRoU3BlYyhwYXRoc3RyaW5nLCAkNiwgQDUsIEA2KTsKIAkJCQkJbi0+cGFz c2luZyA9ICQ3OwogCQkJCQluLT5jb2x1bW5zID0gJDEwOwotCQkJCQluLT5vbl9lcnJvciA9IChK c29uQmVoYXZpb3IgKikgJDEyOworCQkJCQluLT5wbGFuc3BlYyA9IChKc29uVGFibGVQbGFuU3Bl YyAqKSAkMTI7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkMTM7CiAJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xNTI5 Nyw4ICsxNTMxMSw3IEBAIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb246CiAJCQkJCUpzb25U YWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CiAKIAkJCQkJbi0+Y29s dHlwZSA9IEpUQ19ORVNURUQ7Ci0JCQkJCW4tPnBhdGhzcGVjID0gKEpzb25UYWJsZVBhdGhTcGVj ICopCi0JCQkJCQltYWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsIE5VTEwsIEAzLCAtMSk7CisJCQkJ CW4tPnBhdGhzcGVjID0gbWFrZUpzb25UYWJsZVBhdGhTcGVjKCQzLCBOVUxMLCBAMywgLTEpOwog CQkJCQluLT5jb2x1bW5zID0gJDY7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQkID0g KE5vZGUgKikgbjsKQEAgLTE1MzA5LDggKzE1MzIyLDcgQEAganNvbl90YWJsZV9jb2x1bW5fZGVm aW5pdGlvbjoKIAkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxlQ29s dW1uKTsKIAogCQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKLQkJCQkJbi0+cGF0aHNwZWMg PSAoSnNvblRhYmxlUGF0aFNwZWMgKikKLQkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYygkMywg JDUsIEAzLCBANSk7CisJCQkJCW4tPnBhdGhzcGVjID0gbWFrZUpzb25UYWJsZVBhdGhTcGVjKCQz LCAkNSwgQDMsIEA1KTsKIAkJCQkJbi0+Y29sdW1ucyA9ICQ4OwogCQkJCQluLT5sb2NhdGlvbiA9 IEAxOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0xNTMyOSw2ICsxNTM0MSw4MyBAQCBqc29u X3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQ6CiAJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwog Citqc29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdDoKKwkJCVBMQU4gJygnIGpzb25fdGFibGVfcGxh biAnKScKKwkJCQl7ICQkID0gJDM7IH0KKwkJCXwgUExBTiBERUZBVUxUICcoJyBqc29uX3RhYmxl X2RlZmF1bHRfcGxhbl9jaG9pY2VzICcpJworCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlRGVmYXVs dFBsYW4oJDQsIEAxKTsgfQorCQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBOVUxMOyB9CisJ CTsKKworanNvbl90YWJsZV9wbGFuOgorCQkJanNvbl90YWJsZV9wbGFuX3NpbXBsZQorCQkJfCBq c29uX3RhYmxlX3BsYW5fb3V0ZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX2lubmVyCisJCQl8IGpz b25fdGFibGVfcGxhbl91bmlvbgorCQkJfCBqc29uX3RhYmxlX3BsYW5fY3Jvc3MKKwkJOworCitq c29uX3RhYmxlX3BsYW5fc2ltcGxlOgorCQkJbmFtZQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxl U2ltcGxlUGxhbigkMSwgQDEpOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX291dGVyOgorCQkJ anNvbl90YWJsZV9wbGFuX3NpbXBsZSBPVVRFUl9QIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJ CQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9PVVRFUiwgJDEsICQz LCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5faW5uZXI6CisJCQlqc29uX3RhYmxlX3Bs YW5fc2ltcGxlIElOTkVSX1AganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFr ZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX0lOTkVSLCAkMSwgJDMsIEAxKTsgfQorCQk7 CisKK2pzb25fdGFibGVfcGxhbl91bmlvbjoKKwkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5IFVO SU9OIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29uVGFibGVKb2lu ZWRQbGFuKEpTVFBfSk9JTl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJCXwganNvbl90YWJsZV9w bGFuX3VuaW9uIFVOSU9OIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VK c29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9VTklPTiwgJDEsICQzLCBAMSk7IH0KKwkJOwor Citqc29uX3RhYmxlX3BsYW5fY3Jvc3M6CisJCQlqc29uX3RhYmxlX3BsYW5fcHJpbWFyeSBDUk9T UyBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVk UGxhbihKU1RQX0pPSU5fQ1JPU1MsICQxLCAkMywgQDEpOyB9CisJCQl8IGpzb25fdGFibGVfcGxh bl9jcm9zcyBDUk9TUyBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJCXsgJCQgPSBtYWtlSnNv blRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fQ1JPU1MsICQxLCAkMywgQDEpOyB9CisJCTsKKwor anNvbl90YWJsZV9wbGFuX3ByaW1hcnk6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlCisJCQkJ eyAkJCA9ICQxOyB9CisJCQl8ICcoJyBqc29uX3RhYmxlX3BsYW4gJyknCisJCQkJeworCQkJCQlj YXN0Tm9kZShKc29uVGFibGVQbGFuU3BlYywgJDIpLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9 ICQyOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzOgorCQkJ anNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQl7ICQkID0gJDEgfCBKU1RQ X0pPSU5fVU5JT047IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5fdW5pb25fY3Jvc3MK KwkJCQl7ICQkID0gJDEgfCBKU1RQX0pPSU5fT1VURVI7IH0KKwkJCXwganNvbl90YWJsZV9kZWZh dWx0X3BsYW5faW5uZXJfb3V0ZXIgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Ny b3NzCisJCQkJeyAkJCA9ICQxIHwgJDM7IH0KKwkJCXwganNvbl90YWJsZV9kZWZhdWx0X3BsYW5f dW5pb25fY3Jvc3MgJywnIGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2lubmVyX291dGVyCisJCQkJ eyAkJCA9ICQxIHwgJDM7IH0KKwkJOworCitqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9v dXRlcjoKKwkJCUlOTkVSX1AJCQkJCQl7ICQkID0gSlNUUF9KT0lOX0lOTkVSOyB9CisJCQl8IE9V VEVSX1AJCQkJCXsgJCQgPSBKU1RQX0pPSU5fT1VURVI7IH0KKwkJOworCitqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl91bmlvbl9jcm9zczoKKwkJCVVOSU9OCQkJCQkJeyAkJCA9IEpTVFBfSk9JTl9V TklPTjsgfQorCQkJfCBDUk9TUwkJCQkJCXsgJCQgPSBKU1RQX0pPSU5fQ1JPU1M7IH0KKwkJOwor CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglUeXBlIHN5bnRheApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2pzb250YWJsZS5jCmluZGV4IDMyYTFlODYyOWIyLi43YWM4Y2VmMzYwMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwpAQCAtMzksMTcgKzM5LDIyIEBAIHR5cGVkZWYg c3RydWN0IEpzb25UYWJsZVBhcnNlQ29udGV4dAogfSBKc29uVGFibGVQYXJzZUNvbnRleHQ7CiAK IHN0YXRpYyBKc29uVGFibGVQbGFuICp0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJs ZVBhcnNlQ29udGV4dCAqY3h0LAorCQkJCQkJCQkJCQkJSnNvblRhYmxlUGxhblNwZWMgKnBsYW5z cGVjLAogCQkJCQkJCQkJCQkJTGlzdCAqY29sdW1ucywKIAkJCQkJCQkJCQkJCUxpc3QgKnBhc3Np bmdBcmdzLAogCQkJCQkJCQkJCQkJSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjKTsKIHN0YXRp YyBKc29uVGFibGVQbGFuICp0cmFuc2Zvcm1Kc29uVGFibGVOZXN0ZWRDb2x1bW5zKEpzb25UYWJs ZVBhcnNlQ29udGV4dCAqY3h0LAorCQkJCQkJCQkJCQkJCSAgSnNvblRhYmxlUGxhblNwZWMgKnBs YW4sCiAJCQkJCQkJCQkJCQkJICBMaXN0ICpwYXNzaW5nQXJncywKIAkJCQkJCQkJCQkJCQkgIExp c3QgKmNvbHVtbnMpOwogc3RhdGljIEpzb25GdW5jRXhwciAqdHJhbnNmb3JtSnNvblRhYmxlQ29s dW1uKEpzb25UYWJsZUNvbHVtbiAqanRjLAogCQkJCQkJCQkJCQkgIE5vZGUgKmNvbnRleHRJdGVt RXhwciwKLQkJCQkJCQkJCQkJICBMaXN0ICpwYXNzaW5nQXJncyk7CisJCQkJCQkJCQkJCSAgTGlz dCAqcGFzc2luZ0FyZ3MsCisJCQkJCQkJCQkJCSAgYm9vbCBlcnJvck9uRXJyb3IpOwogc3RhdGlj IGJvb2wgaXNDb21wb3NpdGVUeXBlKE9pZCB0eXBpZCk7Ci1zdGF0aWMgSnNvblRhYmxlUGxhbiAq bWFrZUpzb25UYWJsZVBhdGhTY2FuKEpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYywKK3N0YXRp YyBKc29uVGFibGVQbGFuICptYWtlSnNvblRhYmxlUGF0aFNjYW4oSnNvblRhYmxlUGFyc2VDb250 ZXh0ICpjeHQsCisJCQkJCQkJCQkJCUpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYywKKwkJCQkJ CQkJCQkJSnNvblRhYmxlUGxhblNwZWMgKnBsYW5zcGVjLAogCQkJCQkJCQkJCQlib29sIGVycm9y T25FcnJvciwKIAkJCQkJCQkJCQkJaW50IGNvbE1pbiwgaW50IGNvbE1heCwKIAkJCQkJCQkJCQkJ SnNvblRhYmxlUGxhbiAqY2hpbGRwbGFuKTsKQEAgLTU3LDggKzYyLDE0IEBAIHN0YXRpYyB2b2lk IENoZWNrRHVwbGljYXRlQ29sdW1uT3JQYXRoTmFtZXMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICpj eHQsCiAJCQkJCQkJCQkJCUxpc3QgKmNvbHVtbnMpOwogc3RhdGljIGJvb2wgTG9va3VwUGF0aE9y Q29sdW1uTmFtZShKc29uVGFibGVQYXJzZUNvbnRleHQgKmN4dCwgY2hhciAqbmFtZSk7CiBzdGF0 aWMgY2hhciAqZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShKc29uVGFibGVQYXJzZUNvbnRleHQg KmN4dCk7Ci1zdGF0aWMgSnNvblRhYmxlUGxhbiAqbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKEpz b25UYWJsZVBsYW4gKmxwbGFuLAorc3RhdGljIHZvaWQgdmFsaWRhdGVKc29uVGFibGVDaGlsZFBs YW4oUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJICAgSnNvblRhYmxlUGxhblNwZWMgKnBs YW4sCisJCQkJCQkJCQkgICBMaXN0ICpjb2x1bW5zKTsKK3N0YXRpYyBKc29uVGFibGVQbGFuICpt YWtlSnNvblRhYmxlU2libGluZ0pvaW4oYm9vbCBjcm9zcywKKwkJCQkJCQkJCQkJICAgSnNvblRh YmxlUGxhbiAqbHBsYW4sCiAJCQkJCQkJCQkJCSAgIEpzb25UYWJsZVBsYW4gKnJwbGFuKTsKK3N0 YXRpYyB2b2lkCisJCQlhcHBlbmRKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4 dCAqY3h0LCBMaXN0ICpjb2x1bW5zLCBMaXN0ICpwYXNzaW5nQXJncyk7CiAKIC8qCiAgKiB0cmFu c2Zvcm1Kc29uVGFibGUgLQpAQCAtNzYsNiArODcsNyBAQCB0cmFuc2Zvcm1Kc29uVGFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KQogCVRhYmxlRnVuYyAgKnRmOwogCUpzb25G dW5jRXhwciAqamZlOwogCUpzb25FeHByICAgKmplOworCUpzb25UYWJsZVBsYW5TcGVjICpwbGFu ID0ganQtPnBsYW5zcGVjOwogCUpzb25UYWJsZVBhdGhTcGVjICpyb290UGF0aFNwZWMgPSBqdC0+ cGF0aHNwZWM7CiAJYm9vbAkJaXNfbGF0ZXJhbDsKIAlKc29uVGFibGVQYXJzZUNvbnRleHQgY3h0 ID0ge3BzdGF0ZX07CkBAIC05NCw4ICsxMDYsMjEgQEAgdHJhbnNmb3JtSnNvblRhYmxlKFBhcnNl U3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxlICpqdCkKIAkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBqdC0+b25fZXJyb3ItPmxvY2F0aW9uKSk7CiAKIAljeHQucGF0aE5hbWVJZCA9IDA7CisK IAlpZiAocm9vdFBhdGhTcGVjLT5uYW1lID09IE5VTEwpCisJeworCQlpZiAoanQtPnBsYW5zcGVj ICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uIiks CisJCQkJCSBlcnJkZXRhaWwoIkpTT05fVEFCTEUgcGF0aCBtdXN0IGNvbnRhaW4iCisJCQkJCQkJ ICAgIiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlmIgorCQkJCQkJCSAgICIg ZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgcm9vdFBhdGhTcGVjLT5sb2NhdGlvbikpKTsKKwogCQlyb290UGF0aFNwZWMtPm5h bWUgPSBnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKCZjeHQpOworCX0KKwogCWN4dC5wYXRoTmFt ZXMgPSBsaXN0X21ha2UxKHJvb3RQYXRoU3BlYy0+bmFtZSk7CiAJQ2hlY2tEdXBsaWNhdGVDb2x1 bW5PclBhdGhOYW1lcygmY3h0LCBqdC0+Y29sdW1ucyk7CiAKQEAgLTEzNSw3ICsxNjAsNyBAQCB0 cmFuc2Zvcm1Kc29uVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KQogCSAq LwogCWN4dC5qdCA9IGp0OwogCWN4dC50ZiA9IHRmOwotCXRmLT5wbGFuID0gKE5vZGUgKikgdHJh bnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBqdC0+Y29sdW1ucywKKwl0Zi0+cGxhbiA9IChO b2RlICopIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoJmN4dCwgcGxhbiwganQtPmNvbHVtbnMs CiAJCQkJCQkJCQkJCQkgIGp0LT5wYXNzaW5nLAogCQkJCQkJCQkJCQkJICByb290UGF0aFNwZWMp OwogCkBAIC0yNDYsMjUgKzI3MSwxMTAgQEAgZ2VuZXJhdGVKc29uVGFibGVQYXRoTmFtZShKc29u VGFibGVQYXJzZUNvbnRleHQgKmN4dCkKICAqIHRoZWlyIHR5cGUvY29sbGF0aW9uIGluZm9ybWF0 aW9uIHRvIGN4dC0+dGYuCiAgKi8KIHN0YXRpYyBKc29uVGFibGVQbGFuICoKLXRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoSnNvblRhYmxlUGFyc2VDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMs Cit0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqY3h0LAor CQkJCQkJICBKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMsCisJCQkJCQkgIExpc3QgKmNvbHVt bnMsCiAJCQkJCQkgIExpc3QgKnBhc3NpbmdBcmdzLAogCQkJCQkJICBKc29uVGFibGVQYXRoU3Bl YyAqcGF0aHNwZWMpCiB7Ci0JUGFyc2VTdGF0ZSAqcHN0YXRlID0gY3h0LT5wc3RhdGU7CiAJSnNv blRhYmxlICAqanQgPSBjeHQtPmp0OwogCVRhYmxlRnVuYyAgKnRmID0gY3h0LT50ZjsKLQlMaXN0 Q2VsbCAgICpjb2w7Ci0JYm9vbAkJb3JkaW5hbGl0eV9mb3VuZCA9IGZhbHNlOworCUpzb25UYWJs ZVBhdGhTY2FuICpzY2FuOworCUpzb25UYWJsZVBsYW5TcGVjICpjaGlsZFBsYW5TcGVjOworCWJv b2wJCWRlZmF1bHRQbGFuID0gcGxhbnNwZWMgPT0gTlVMTCB8fAorCQlwbGFuc3BlYy0+cGxhbl90 eXBlID09IEpTVFBfREVGQVVMVDsKIAlib29sCQllcnJvck9uRXJyb3IgPSBqdC0+b25fZXJyb3Ig JiYKIAkJanQtPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOwotCU9pZAkJ CWNvbnRleHRJdGVtVHlwaWQgPSBleHByVHlwZSh0Zi0+ZG9jZXhwcik7CiAJaW50CQkJY29sTWlu LAogCQkJCWNvbE1heDsKLQlKc29uVGFibGVQbGFuICpjaGlsZHBsYW47CisJSnNvblRhYmxlUGxh biAqY2hpbGRwbGFuID0gTlVMTDsKIAogCS8qIFN0YXJ0IG9mIGNvbHVtbiByYW5nZSAqLwogCWNv bE1pbiA9IGxpc3RfbGVuZ3RoKHRmLT5jb2x2YWxleHBycyk7CiAKKwlpZiAoZGVmYXVsdFBsYW4p CisJCWNoaWxkUGxhblNwZWMgPSBwbGFuc3BlYzsKKwllbHNlCisJeworCQkvKiB2YWxpZGF0ZSBw YXJlbnQgYW5kIGNoaWxkIHBsYW5zICovCisJCUpzb25UYWJsZVBsYW5TcGVjICpwYXJlbnRQbGFu U3BlYzsKKworCQlpZiAocGxhbnNwZWMtPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwkJewor CQkJaWYgKHBsYW5zcGVjLT5qb2luX3R5cGUgIT0gSlNUUF9KT0lOX0lOTkVSICYmCisJCQkJcGxh bnNwZWMtPmpvaW5fdHlwZSAhPSBKU1RQX0pPSU5fT1VURVIpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImlu dmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZSIpLAorCQkJCQkJIGVycmRldGFpbCgiRXhwZWN0 ZWQgSU5ORVIgb3IgT1VURVIuIiksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0 YXRlLCBwbGFuc3BlYy0+bG9jYXRpb24pKSk7CisKKwkJCXBhcmVudFBsYW5TcGVjID0gcGxhbnNw ZWMtPnBsYW4xOworCQkJY2hpbGRQbGFuU3BlYyA9IHBsYW5zcGVjLT5wbGFuMjsKKworCQkJQXNz ZXJ0KHBhcmVudFBsYW5TcGVjLT5wbGFuX3R5cGUgIT0gSlNUUF9KT0lORUQpOworCQkJQXNzZXJ0 KHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwYXJlbnRQ bGFuU3BlYyA9IHBsYW5zcGVjOworCQkJY2hpbGRQbGFuU3BlYyA9IE5VTEw7CisJCX0KKworCQlp ZiAoc3RyY21wKHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSwgcGF0aHNwZWMtPm5hbWUpICE9IDAp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJMRSBwbGFuIiksCisJCQkJCSBlcnJkZXRh aWwoIlBBVEggbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJXMgYnV0ICVzIGlzIGdpdmVuLiIsCisJ CQkJCQkJICAgcGF0aHNwZWMtPm5hbWUsIHBhcmVudFBsYW5TcGVjLT5wYXRobmFtZSksCisJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW5zcGVjLT5sb2NhdGlvbikpKTsK KworCQl2YWxpZGF0ZUpzb25UYWJsZUNoaWxkUGxhbihjeHQtPnBzdGF0ZSwgY2hpbGRQbGFuU3Bl YywgY29sdW1ucyk7CisJfQorCisJYXBwZW5kSnNvblRhYmxlQ29sdW1ucyhjeHQsIGNvbHVtbnMs IHBhc3NpbmdBcmdzKTsKKworCS8qIEVuZCBvZiBjb2x1bW4gcmFuZ2UuICovCisJaWYgKGxpc3Rf bGVuZ3RoKHRmLT5jb2x2YWxleHBycykgPT0gY29sTWluKQorCXsKKwkJLyogTm8gY29sdW1ucyBp biB0aGlzIFNjYW4gYmVzaWRlIHRoZSBuZXN0ZWQgb25lcy4gKi8KKwkJY29sTWF4ID0gY29sTWlu ID0gLTE7CisJfQorCWVsc2UKKwkJY29sTWF4ID0gbGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJz KSAtIDE7CisKKwlpZiAoY2hpbGRQbGFuU3BlYyB8fCBkZWZhdWx0UGxhbikKKwl7CisJCS8qIHRy YW5zZm9ybSByZWN1cnNpdmVseSBuZXN0ZWQgY29sdW1ucyAqLworCQljaGlsZHBsYW4gPSB0cmFu c2Zvcm1Kc29uVGFibGVOZXN0ZWRDb2x1bW5zKGN4dCwgY2hpbGRQbGFuU3BlYywKKwkJCQkJCQkJ CQkJCQljb2x1bW5zLCBwYXNzaW5nQXJncyk7CisJfQorCisJLyogdHJhbnNmb3JtIG9ubHkgbm9u LW5lc3RlZCBjb2x1bW5zICovCisJc2NhbiA9IChKc29uVGFibGVQYXRoU2NhbiAqKSBtYWtlSnNv blRhYmxlUGF0aFNjYW4oY3h0LCBwYXRoc3BlYywKKwkJCQkJCQkJCQkJCQkgICBwbGFuc3BlYywK KwkJCQkJCQkJCQkJCQkgICBlcnJvck9uRXJyb3IsCisJCQkJCQkJCQkJCQkJICAgY29sTWluLAor CQkJCQkJCQkJCQkJCSAgIGNvbE1heCwKKwkJCQkJCQkJCQkJCQkgICBjaGlsZHBsYW4pOworCisJ cmV0dXJuIChKc29uVGFibGVQbGFuICopIHNjYW47Cit9CisKKy8qIEFwcGVuZCB0cmFuc2Zvcm1l ZCBub24tbmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyB0byB0aGUgVGFibGVGdW5jIG5vZGUgKi8K K3N0YXRpYyB2b2lkCithcHBlbmRKc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4 dCAqY3h0LCBMaXN0ICpjb2x1bW5zLCBMaXN0ICpwYXNzaW5nQXJncykKK3sKKwlMaXN0Q2VsbCAg ICpjb2w7CisJUGFyc2VTdGF0ZSAqcHN0YXRlID0gY3h0LT5wc3RhdGU7CisJSnNvblRhYmxlICAq anQgPSBjeHQtPmp0OworCVRhYmxlRnVuYyAgKnRmID0gY3h0LT50ZjsKKwlib29sCQlvcmRpbmFs aXR5X2ZvdW5kID0gZmFsc2U7CisJSnNvbkJlaGF2aW9yICpvbl9lcnJvciA9IGp0LT5vbl9lcnJv cjsKKwlib29sCQllcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJgorCQlvbl9lcnJvci0+YnR5cGUg PT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKwlPaWQJCQljb250ZXh0SXRlbVR5cGlkID0gZXhwclR5 cGUodGYtPmRvY2V4cHIpOworCiAJZm9yZWFjaChjb2wsIGNvbHVtbnMpCiAJewogCQlKc29uVGFi bGVDb2x1bW4gKnJhd2MgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChjb2wpKTsK QEAgLTI3MywxMiArMzgzLDkgQEAgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQ YXJzZUNvbnRleHQgKmN4dCwgTGlzdCAqY29sdW1ucywKIAkJT2lkCQkJdHlwY29sbCA9IEludmFs aWRPaWQ7CiAJCU5vZGUJICAgKmNvbGV4cHI7CiAKLQkJaWYgKHJhd2MtPmNvbHR5cGUgIT0gSlRD X05FU1RFRCkKLQkJewotCQkJQXNzZXJ0KHJhd2MtPm5hbWUpOworCQlpZiAocmF3Yy0+bmFtZSkK IAkJCXRmLT5jb2xuYW1lcyA9IGxhcHBlbmQodGYtPmNvbG5hbWVzLAogCQkJCQkJCQkgICBtYWtl U3RyaW5nKHBzdHJkdXAocmF3Yy0+bmFtZSkpKTsKLQkJfQogCiAJCS8qCiAJCSAqIERldGVybWlu ZSB0aGUgdHlwZSBhbmQgdHlwbW9kIGZvciB0aGUgbmV3IGNvbHVtbi4gRk9SIE9SRElOQUxJVFkK QEAgLTMyNCw3ICs0MzEsNyBAQCB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW5zKEpzb25UYWJsZVBh cnNlQ29udGV4dCAqY3h0LCBMaXN0ICpjb2x1bW5zLAogCQkJCQlwYXJhbS0+dHlwZU1vZCA9IC0x OwogCiAJCQkJCWpmZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihyYXdjLCAoTm9kZSAqKSBw YXJhbSwKLQkJCQkJCQkJCQkJCSAgIHBhc3NpbmdBcmdzKTsKKwkJCQkJCQkJCQkJCSAgIHBhc3Np bmdBcmdzLCBlcnJvck9uRXJyb3IpOwogCiAJCQkJCWNvbGV4cHIgPSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgKE5vZGUgKikgamZlLAogCQkJCQkJCQkJCQlFWFBSX0tJTkRfRlJPTV9GVU5DVElPTik7 CkBAIC0zNDksMjIgKzQ1Niw2IEBAIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoSnNvblRhYmxl UGFyc2VDb250ZXh0ICpjeHQsIExpc3QgKmNvbHVtbnMsCiAJCXRmLT5jb2xjb2xsYXRpb25zID0g bGFwcGVuZF9vaWQodGYtPmNvbGNvbGxhdGlvbnMsIHR5cGNvbGwpOwogCQl0Zi0+Y29sdmFsZXhw cnMgPSBsYXBwZW5kKHRmLT5jb2x2YWxleHBycywgY29sZXhwcik7CiAJfQotCi0JLyogRW5kIG9m IGNvbHVtbiByYW5nZS4gKi8KLQlpZiAobGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJzKSA9PSBj b2xNaW4pCi0JewotCQkvKiBObyBjb2x1bW5zIGluIHRoaXMgU2NhbiBiZXNpZGUgdGhlIG5lc3Rl ZCBvbmVzLiAqLwotCQljb2xNYXggPSBjb2xNaW4gPSAtMTsKLQl9Ci0JZWxzZQotCQljb2xNYXgg PSBsaXN0X2xlbmd0aCh0Zi0+Y29sdmFsZXhwcnMpIC0gMTsKLQotCS8qIFJlY3Vyc2l2ZWx5IHRy YW5zZm9ybSBuZXN0ZWQgY29sdW1ucyAqLwotCWNoaWxkcGxhbiA9IHRyYW5zZm9ybUpzb25UYWJs ZU5lc3RlZENvbHVtbnMoY3h0LCBwYXNzaW5nQXJncywgY29sdW1ucyk7Ci0KLQkvKiBDcmVhdGUg YSAicGFyZW50IiBzY2FuIHJlc3BvbnNpYmxlIGZvciBhbGwgY29sdW1ucyBoYW5kbGVkIGFib3Zl LiAqLwotCXJldHVybiBtYWtlSnNvblRhYmxlUGF0aFNjYW4ocGF0aHNwZWMsIGVycm9yT25FcnJv ciwgY29sTWluLCBjb2xNYXgsCi0JCQkJCQkJCSBjaGlsZHBsYW4pOwogfQogCiAvKgpAQCAtMzk1 LDcgKzQ4Niw3IEBAIGlzQ29tcG9zaXRlVHlwZShPaWQgdHlwaWQpCiAgKi8KIHN0YXRpYyBKc29u RnVuY0V4cHIgKgogdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbHVtbiAqanRj LCBOb2RlICpjb250ZXh0SXRlbUV4cHIsCi0JCQkJCQkgTGlzdCAqcGFzc2luZ0FyZ3MpCisJCQkJ CQkgTGlzdCAqcGFzc2luZ0FyZ3MsIGJvb2wgZXJyb3JPbkVycm9yKQogewogCU5vZGUJICAgKnBh dGhzcGVjOwogCUpzb25GdW5jRXhwciAqamZleHByID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHByKTsK QEAgLTQzNyw2ICs1MjgsOCBAQCB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1bW4oSnNvblRhYmxlQ29s dW1uICpqdGMsIE5vZGUgKmNvbnRleHRJdGVtRXhwciwKIAlqZmV4cHItPm91dHB1dC0+cmV0dXJu aW5nLT5mb3JtYXQgPSBqdGMtPmZvcm1hdDsKIAlqZmV4cHItPm9uX2VtcHR5ID0ganRjLT5vbl9l bXB0eTsKIAlqZmV4cHItPm9uX2Vycm9yID0ganRjLT5vbl9lcnJvcjsKKwlpZiAoamZleHByLT5v bl9lcnJvciA9PSBOVUxMICYmIGVycm9yT25FcnJvcikKKwkJamZleHByLT5vbl9lcnJvciA9IG1h a2VKc29uQmVoYXZpb3IoSlNPTl9CRUhBVklPUl9FUlJPUiwgTlVMTCwgLTEpOwogCWpmZXhwci0+ cXVvdGVzID0ganRjLT5xdW90ZXM7CiAJamZleHByLT53cmFwcGVyID0ganRjLT53cmFwcGVyOwog CWpmZXhwci0+bG9jYXRpb24gPSBqdGMtPmxvY2F0aW9uOwpAQCAtNDQ0LDU3ICs1MzcsMTM3IEBA IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihKc29uVGFibGVDb2x1bW4gKmp0YywgTm9kZSAqY29u dGV4dEl0ZW1FeHByLAogCXJldHVybiBqZmV4cHI7CiB9CiAKK3N0YXRpYyBKc29uVGFibGVDb2x1 bW4gKgorZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihMaXN0ICpjb2x1bW5zLCBjb25zdCBjaGFy ICpwYXRobmFtZSkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGNvbHVtbnMp CisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwg bGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEICYmCisJCQlq dGMtPnBhdGhzcGVjLT5uYW1lICYmCisJCQkhc3RyY21wKGp0Yy0+cGF0aHNwZWMtPm5hbWUsIHBh dGhuYW1lKSkKKwkJCXJldHVybiBqdGM7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKIC8qCiAg KiBSZWN1cnNpdmVseSB0cmFuc2Zvcm0gbmVzdGVkIGNvbHVtbnMgYW5kIGNyZWF0ZSBjaGlsZCBw bGFuKHMpIHRoYXQgd2lsbCBiZQogICogdXNlZCB0byBldmFsdWF0ZSB0aGVpciByb3cgcGF0dGVy bnMuCisgKgorICogRGVmYXVsdCBwbGFuIGlzIHRyYW5zZm9ybWVkIGludG8gYSBjcm9zcy91bmlv biBqb2luIG9mIGl0cyBuZXN0ZWQgY29sdW1ucy4KKyAqIFNpbXBsZSBhbmQgb3V0ZXIvaW5uZXIg cGxhbnMgYXJlIHRyYW5zZm9ybWVkIGludG8gYSBKc29uVGFibGVQbGFuIGJ5CisgKiBmaW5kaW5n IGFuZCB0cmFuc2Zvcm1pbmcgY29ycmVzcG9uZGluZyBuZXN0ZWQgY29sdW1uLgorICogU2libGlu ZyBwbGFucyBhcmUgcmVjdXJzaXZlbHkgdHJhbnNmb3JtZWQgaW50byBhIEpzb25UYWJsZVNpYmxp bmdKb2luLgogICovCiBzdGF0aWMgSnNvblRhYmxlUGxhbiAqCiB0cmFuc2Zvcm1Kc29uVGFibGVO ZXN0ZWRDb2x1bW5zKEpzb25UYWJsZVBhcnNlQ29udGV4dCAqY3h0LAotCQkJCQkJCQlMaXN0ICpw YXNzaW5nQXJncywKLQkJCQkJCQkJTGlzdCAqY29sdW1ucykKKwkJCQkJCQkJSnNvblRhYmxlUGxh blNwZWMgKnBsYW5zcGVjLAorCQkJCQkJCQlMaXN0ICpjb2x1bW5zLAorCQkJCQkJCQlMaXN0ICpw YXNzaW5nQXJncykKIHsKLQlKc29uVGFibGVQbGFuICpwbGFuID0gTlVMTDsKLQlMaXN0Q2VsbCAg ICpsYzsKKwlKc29uVGFibGVDb2x1bW4gKmp0YyA9IE5VTEw7CiAKLQkvKgotCSAqIElmIHRoZXJl IGFyZSBtdWx0aXBsZSBORVNURUQgQ09MVU1OUyBjbGF1c2VzIGluICdjb2x1bW5zJywgdGhlaXIK LQkgKiByZXNwZWN0aXZlIHBsYW5zIHdpbGwgYmUgY29tYmluZWQgdXNpbmcgYSAic2libGluZyBq b2luIiBwbGFuLCB3aGljaAotCSAqIGVmZmVjdGl2ZWx5IGRvZXMgYSBVTklPTiBvZiB0aGUgc2V0 cyBvZiByb3dzIGNvbWluZyBmcm9tIGVhY2ggbmVzdGVkCi0JICogcGxhbi4KLQkgKi8KLQlmb3Jl YWNoKGxjLCBjb2x1bW5zKQorCWlmICghcGxhbnNwZWMgfHwgcGxhbnNwZWMtPnBsYW5fdHlwZSA9 PSBKU1RQX0RFRkFVTFQpCiAJewotCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpz b25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7Ci0JCUpzb25UYWJsZVBsYW4gKm5lc3RlZDsKKwkJ LyogdW5zcGVjaWZpZWQgb3IgZGVmYXVsdCBwbGFuICovCisJCUpzb25UYWJsZVBsYW4gKnBsYW4g PSBOVUxMOworCQlMaXN0Q2VsbCAgICpsYzsKKwkJYm9vbAkJY3Jvc3MgPSBwbGFuc3BlYyAmJiAo cGxhbnNwZWMtPmpvaW5fdHlwZSAmIEpTVFBfSk9JTl9DUk9TUyk7CiAKLQkJaWYgKGp0Yy0+Y29s dHlwZSAhPSBKVENfTkVTVEVEKQotCQkJY29udGludWU7CisJCS8qCisJCSAqIElmIHRoZXJlIGFy ZSBtdWx0aXBsZSBORVNURUQgQ09MVU1OUyBjbGF1c2VzIGluICdjb2x1bW5zJywgdGhlaXIKKwkJ ICogcmVzcGVjdGl2ZSBwbGFucyB3aWxsIGJlIGNvbWJpbmVkIHVzaW5nIGEgInNpYmxpbmcgam9p biIgcGxhbiwKKwkJICogd2hpY2ggZWZmZWN0aXZlbHkgZG9lcyBhIFVOSU9OIG9mIHRoZSBzZXRz IG9mIHJvd3MgY29taW5nIGZyb20gZWFjaAorCQkgKiBuZXN0ZWQgcGxhbi4KKwkJICovCisJCWZv cmVhY2gobGMsIGNvbHVtbnMpCisJCXsKKwkJCUpzb25UYWJsZUNvbHVtbiAqY29sID0gY2FzdE5v ZGUoSnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMpKTsKKwkJCUpzb25UYWJsZVBsYW4gKm5lc3Rl ZDsKIAotCQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQotCQkJanRjLT5wYXRoc3Bl Yy0+bmFtZSA9IGdlbmVyYXRlSnNvblRhYmxlUGF0aE5hbWUoY3h0KTsKKwkJCWlmIChjb2wtPmNv bHR5cGUgIT0gSlRDX05FU1RFRCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGNvbC0+cGF0aHNw ZWMtPm5hbWUgPT0gTlVMTCkKKwkJCXsKKwkJCQljb2wtPnBhdGhzcGVjLT5uYW1lID0gZ2VuZXJh dGVKc29uVGFibGVQYXRoTmFtZShjeHQpOworCQkJfQogCi0JCW5lc3RlZCA9IHRyYW5zZm9ybUpz b25UYWJsZUNvbHVtbnMoY3h0LCBqdGMtPmNvbHVtbnMsIHBhc3NpbmdBcmdzLAotCQkJCQkJCQkJ CSAgIGp0Yy0+cGF0aHNwZWMpOworCQkJbmVzdGVkID0gdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1u cyhjeHQsIHBsYW5zcGVjLCBjb2wtPmNvbHVtbnMsCisJCQkJCQkJCQkJCSAgIHBhc3NpbmdBcmdz LAorCQkJCQkJCQkJCQkgICBjb2wtPnBhdGhzcGVjKTsKIAotCQlpZiAocGxhbikKLQkJCXBsYW4g PSBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4ocGxhbiwgbmVzdGVkKTsKKwkJCS8qIEpvaW4gbmVz dGVkIHBsYW4gd2l0aCBwcmV2aW91cyBzaWJsaW5nIG5lc3RlZCBwbGFucy4gKi8KKwkJCWlmIChw bGFuKQorCQkJCXBsYW4gPSBtYWtlSnNvblRhYmxlU2libGluZ0pvaW4oY3Jvc3MsIHBsYW4sIG5l c3RlZCk7CisJCQllbHNlCisJCQkJcGxhbiA9IG5lc3RlZDsKKwkJfQorCisJCXJldHVybiBwbGFu OworCX0KKwllbHNlIGlmIChwbGFuc3BlYy0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQorCXsK KwkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVtbihjb2x1bW5zLCBwbGFuc3BlYy0+cGF0 aG5hbWUpOworCX0KKwllbHNlIGlmIChwbGFuc3BlYy0+cGxhbl90eXBlID09IEpTVFBfSk9JTkVE KQorCXsKKwkJaWYgKHBsYW5zcGVjLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX0lOTkVSIHx8CisJ CQlwbGFuc3BlYy0+am9pbl90eXBlID09IEpTVFBfSk9JTl9PVVRFUikKKwkJeworCQkJQXNzZXJ0 KHBsYW5zcGVjLT5wbGFuMS0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKTsKKwkJCWp0YyA9IGZp bmROZXN0ZWRKc29uVGFibGVDb2x1bW4oY29sdW1ucywgcGxhbnNwZWMtPnBsYW4xLT5wYXRobmFt ZSk7CisJCX0KIAkJZWxzZQotCQkJcGxhbiA9IG5lc3RlZDsKKwkJeworCQkJSnNvblRhYmxlUGxh biAqbHBsYW4gPSB0cmFuc2Zvcm1Kc29uVGFibGVOZXN0ZWRDb2x1bW5zKGN4dCwKKwkJCQkJCQkJ CQkJCQkJCQkgICBwbGFuc3BlYy0+cGxhbjEsCisJCQkJCQkJCQkJCQkJCQkJICAgY29sdW1ucywK KwkJCQkJCQkJCQkJCQkJCQkgICBwYXNzaW5nQXJncyk7CisJCQlKc29uVGFibGVQbGFuICpycGxh biA9IHRyYW5zZm9ybUpzb25UYWJsZU5lc3RlZENvbHVtbnMoY3h0LAorCQkJCQkJCQkJCQkJCQkJ CSAgIHBsYW5zcGVjLT5wbGFuMiwKKwkJCQkJCQkJCQkJCQkJCQkgICBjb2x1bW5zLAorCQkJCQkJ CQkJCQkJCQkJCSAgIHBhc3NpbmdBcmdzKTsKKworCQkJcmV0dXJuIG1ha2VKc29uVGFibGVTaWJs aW5nSm9pbihwbGFuc3BlYy0+am9pbl90eXBlID09IEpTVFBfSk9JTl9DUk9TUywKKwkJCQkJCQkJ CQkJbHBsYW4sIHJwbGFuKTsKKwkJfQogCX0KKwllbHNlCisJCWVsb2coRVJST1IsICJpbnZhbGlk IEpTT05fVEFCTEUgcGxhbiB0eXBlICVkIiwgcGxhbnNwZWMtPnBsYW5fdHlwZSk7CiAKLQlyZXR1 cm4gcGxhbjsKKwlpZiAoIWp0YykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4g Y2xhdXNlIiksCisJCQkJIGVycmRldGFpbCgiUEFUSCBuYW1lIHdhcyAlcyBub3QgZm91bmQgaW4g bmVzdGVkIGNvbHVtbnMgbGlzdC4iLAorCQkJCQkJICAgcGxhbnNwZWMtPnBhdGhuYW1lKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuc3BlYy0+bG9jYXRpb24pKSk7 CisKKwlyZXR1cm4gdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhjeHQsIHBsYW5zcGVjLCBqdGMt PmNvbHVtbnMsCisJCQkJCQkJCQkgcGFzc2luZ0FyZ3MsCisJCQkJCQkJCQkganRjLT5wYXRoc3Bl Yyk7CiB9CiAKIC8qCi0gKiBDcmVhdGUgYSBKc29uVGFibGVQbGFuIGZvciBnaXZlbiBwYXRoIGFu ZCBPTiBFUlJPUiBiZWhhdmlvci4KKyAqIENyZWF0ZSB0cmFuc2Zvcm1lZCBKU09OX1RBQkxFIHBh cmVudCBwbGFuIG5vZGUgYnkgYXBwZW5kaW5nIGFsbCBub24tbmVzdGVkCisgKiBjb2x1bW5zIHRv IHRoZSBUYWJsZUZ1bmMgbm9kZSBhbmQgcmVtZW1iZXJpbmcgdGhlaXIgaW5kaWNlcyBpbiB0aGUK KyAqIGNvbHZhbGV4cHJzIGxpc3QuCiAgKgotICogY29sTWluIGFuZCBjb2xNaW4gZ2l2ZSB0aGUg cmFuZ2Ugb2YgY29sdW1ucyBjb21wdXRlZCBieSB0aGlzIHNjYW4gaW4gdGhlCisgKiBjb2xNaW4g YW5kIGNvbE1heCBnaXZlIHRoZSByYW5nZSBvZiBjb2x1bW5zIGNvbXB1dGVkIGJ5IHRoaXMgc2Nh biBpbiB0aGUKICAqIGdsb2JhbCBmbGF0IGxpc3Qgb2YgY29sdW1uIGV4cHJlc3Npb25zIHRoYXQg d2lsbCBiZSBwYXNzZWQgdG8gdGhlCiAgKiBKU09OX1RBQkxFJ3MgVGFibGVGdW5jLiAgQm90aCBh cmUgLTEgd2hlbiBhbGwgb2YgY29sdW1ucyBhcmUgbmVzdGVkIGFuZAogICogdGh1cyBjb21wdXRl ZCBieSAnY2hpbGRwbGFuJy4KICAqLwogc3RhdGljIEpzb25UYWJsZVBsYW4gKgotbWFrZUpzb25U YWJsZVBhdGhTY2FuKEpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYywgYm9vbCBlcnJvck9uRXJy b3IsCittYWtlSnNvblRhYmxlUGF0aFNjYW4oSnNvblRhYmxlUGFyc2VDb250ZXh0ICpjeHQsIEpz b25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYywKKwkJCQkJICBKc29uVGFibGVQbGFuU3BlYyAqcGxh bnNwZWMsCisJCQkJCSAgYm9vbCBlcnJvck9uRXJyb3IsCiAJCQkJCSAgaW50IGNvbE1pbiwgaW50 IGNvbE1heCwKIAkJCQkJICBKc29uVGFibGVQbGFuICpjaGlsZHBsYW4pCiB7CkBAIC01MTgsNiAr NjkxLDExIEBAIG1ha2VKc29uVGFibGVQYXRoU2NhbihKc29uVGFibGVQYXRoU3BlYyAqcGF0aHNw ZWMsIGJvb2wgZXJyb3JPbkVycm9yLAogCXNjYW4tPmNvbE1pbiA9IGNvbE1pbjsKIAlzY2FuLT5j b2xNYXggPSBjb2xNYXg7CiAKKwlpZiAoc2Nhbi0+Y2hpbGQpCisJCXNjYW4tPm91dGVySm9pbiA9 IHBsYW5zcGVjID09IE5VTEwgfHwKKwkJCShwbGFuc3BlYy0+am9pbl90eXBlICYgSlNUUF9KT0lO X09VVEVSKTsKKwkvKiBlbHNlOiBkZWZhdWx0IHBsYW4gY2FzZSwgbm8gY2hpbGRyZW4gZm91bmQg Ki8KKwogCXJldHVybiAoSnNvblRhYmxlUGxhbiAqKSBzY2FuOwogfQogCkBAIC01MjksMTMgKzcw NywxMDEgQEAgbWFrZUpzb25UYWJsZVBhdGhTY2FuKEpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3Bl YywgYm9vbCBlcnJvck9uRXJyb3IsCiAgKiBzZXRzIG9mIHJvd3MgZnJvbSAnbHBsYW4nIGFuZCAn cnBsYW4nLgogICovCiBzdGF0aWMgSnNvblRhYmxlUGxhbiAqCi1tYWtlSnNvblRhYmxlU2libGlu Z0pvaW4oSnNvblRhYmxlUGxhbiAqbHBsYW4sIEpzb25UYWJsZVBsYW4gKnJwbGFuKQorbWFrZUpz b25UYWJsZVNpYmxpbmdKb2luKGJvb2wgY3Jvc3MsIEpzb25UYWJsZVBsYW4gKmxwbGFuLCBKc29u VGFibGVQbGFuICpycGxhbikKIHsKIAlKc29uVGFibGVTaWJsaW5nSm9pbiAqam9pbiA9IG1ha2VO b2RlKEpzb25UYWJsZVNpYmxpbmdKb2luKTsKIAogCWpvaW4tPnBsYW4udHlwZSA9IFRfSnNvblRh YmxlU2libGluZ0pvaW47CiAJam9pbi0+bHBsYW4gPSBscGxhbjsKIAlqb2luLT5ycGxhbiA9IHJw bGFuOworCWpvaW4tPmNyb3NzID0gY3Jvc3M7CiAKIAlyZXR1cm4gKEpzb25UYWJsZVBsYW4gKikg am9pbjsKIH0KKworLyogQ29sbGVjdCBzaWJsaW5nIHBhdGggbmFtZXMgZnJvbSBwbGFuIHRvIHRo ZSBzcGVjaWZpZWQgbGlzdC4gKi8KK3N0YXRpYyB2b2lkCitjb2xsZWN0U2libGluZ1BhdGhzSW5K c29uVGFibGVQbGFuKEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLCBMaXN0ICoqcGF0aHMpCit7CisJ aWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBMRSkKKwkJKnBhdGhzID0gbGFwcGVuZCgq cGF0aHMsIHBsYW4tPnBhdGhuYW1lKTsKKwllbHNlIGlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNU UF9KT0lORUQpCisJeworCQlpZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9JTk5FUiB8 fAorCQkJcGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9PVVRFUikKKwkJeworCQkJQXNzZXJ0 KHBsYW4tPnBsYW4xLT5wbGFuX3R5cGUgPT0gSlNUUF9TSU1QTEUpOworCQkJKnBhdGhzID0gbGFw cGVuZCgqcGF0aHMsIHBsYW4tPnBsYW4xLT5wYXRobmFtZSk7CisJCX0KKwkJZWxzZSBpZiAocGxh bi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9DUk9TUyB8fAorCQkJCSBwbGFuLT5qb2luX3R5cGUg PT0gSlNUUF9KT0lOX1VOSU9OKQorCQl7CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29uVGFi bGVQbGFuKHBsYW4tPnBsYW4xLCBwYXRocyk7CisJCQljb2xsZWN0U2libGluZ1BhdGhzSW5Kc29u VGFibGVQbGFuKHBsYW4tPnBsYW4yLCBwYXRocyk7CisJCX0KKwkJZWxzZQorCQkJZWxvZyhFUlJP UiwgImludmFsaWQgSlNPTl9UQUJMRSBqb2luIHR5cGUgJWQiLAorCQkJCSBwbGFuLT5qb2luX3R5 cGUpOworCX0KK30KKworLyoKKyAqIFZhbGlkYXRlIGNoaWxkIEpTT05fVEFCTEUgcGxhbiBieSBj aGVja2luZyB0aGF0OgorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhhdmUgcGF0aCBuYW1lcyBz cGVjaWZpZWQKKyAqICAtIGFsbCBuZXN0ZWQgY29sdW1ucyBoYXZlIGNvcnJlc3BvbmRpbmcgbm9k ZSBpbiB0aGUgc2libGluZyBwbGFuCisgKiAgLSBwbGFuIGRvZXMgbm90IGNvbnRhaW4gZHVwbGlj YXRlIG9yIGV4dHJhIG5vZGVzCisgKi8KK3N0YXRpYyB2b2lkCit2YWxpZGF0ZUpzb25UYWJsZUNo aWxkUGxhbihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuLAorCQkJ CQkJICAgTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzE7CisJTGlzdAkgICAqc2li bGluZ3MgPSBOSUw7CisJaW50CQkJbmNoaWxkcmVuID0gMDsKKworCWlmIChwbGFuKQorCQljb2xs ZWN0U2libGluZ1BhdGhzSW5Kc29uVGFibGVQbGFuKHBsYW4sICZzaWJsaW5ncyk7CisKKwlmb3Jl YWNoKGxjMSwgY29sdW1ucykKKwl7CisJCUpzb25UYWJsZUNvbHVtbiAqanRjID0gY2FzdE5vZGUo SnNvblRhYmxlQ29sdW1uLCBsZmlyc3QobGMxKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBK VENfTkVTVEVEKQorCQl7CisJCQlMaXN0Q2VsbCAgICpsYzI7CisJCQlib29sCQlmb3VuZCA9IGZh bHNlOworCisJCQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1z ZygibmVzdGVkIEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4iCisJCQkJCQkJICAgIiBh biBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIgorCQkJCQkJCSAgICIgaWYgYW4g ZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwganRjLT5sb2NhdGlvbikpOworCisJCQkvKiBmaW5kIG5lc3RlZCBwYXRoIG5hbWUg aW4gdGhlIGxpc3Qgb2Ygc2libGluZyBwYXRoIG5hbWVzICovCisJCQlmb3JlYWNoKGxjMiwgc2li bGluZ3MpCisJCQl7CisJCQkJaWYgKChmb3VuZCA9ICFzdHJjbXAoanRjLT5wYXRoc3BlYy0+bmFt ZSwgbGZpcnN0KGxjMikpKSkKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCWlmICghZm91bmQpCisJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkJZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbiIpLAorCQkJCQkJ ZXJyZGV0YWlsKCJQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggJXMgd2FzIG5vdCBmb3VuZC4i LAorCQkJCQkJCQkgIGp0Yy0+cGF0aHNwZWMtPm5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwganRjLT5sb2NhdGlvbikpOworCisJCQluY2hpbGRyZW4rKzsKKwkJfQorCX0K KworCWlmIChsaXN0X2xlbmd0aChzaWJsaW5ncykgPiBuY2hpbGRyZW4pCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJZXJybXNnKCJpbnZh bGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UiKSwKKwkJCQllcnJkZXRhaWwoIlBMQU4gY2xhdXNl IGNvbnRhaW5zIHNvbWUgZXh0cmEgb3IgZHVwbGljYXRlIHNpYmxpbmcgbm9kZXMuIiksCisJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcGxhbiA/IHBsYW4tPmxvY2F0aW9uIDogLTEpKTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCmluZGV4IDliZjhlY2RjZDBjLi5i NjljODdkODU4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4 ZWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCkBAIC0yNDAs NiArMjQwLDE0IEBAIHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBsYW5TdGF0ZQogCiAJLyogUGFy ZW50IHBsYW4sIGlmIHRoaXMgaXMgYSBuZXN0ZWQgcGxhbiAqLwogCXN0cnVjdCBKc29uVGFibGVQ bGFuU3RhdGUgKnBhcmVudDsKKworCS8qIEpvaW4gdHlwZSAqLworCWJvb2wJCWNyb3NzOworCWJv b2wJCW91dGVySm9pbjsKKwkvKiBQbGFubmluZyBjb250cm9sIGZpZWxkcyAqLworCWJvb2wJCWFk dmFuY2VOZXN0ZWQ7CisJYm9vbAkJYWR2YW5jZVJpZ2h0OworCWJvb2wJCXJlc2V0OwogfSBKc29u VGFibGVQbGFuU3RhdGU7CiAKIC8qIFJhbmRvbSBudW1iZXIgdG8gaWRlbnRpZnkgSnNvblRhYmxl RXhlY0NvbnRleHQgZm9yIHNhbml0eSBjaGVja2luZyAqLwpAQCAtMzg4LDEzICszOTYsMTMgQEAg c3RhdGljIEpzb25UYWJsZVBsYW5TdGF0ZSAqSnNvblRhYmxlSW5pdFBsYW4oSnNvblRhYmxlRXhl Y0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgbWN4dCk7CiBzdGF0aWMg dm9pZCBKc29uVGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBEYXR1 bSB2YWx1ZSk7CiBzdGF0aWMgdm9pZCBKc29uVGFibGVSZXNldFJvd1BhdHRlcm4oSnNvblRhYmxl UGxhblN0YXRlICpwbGFuc3RhdGUsIERhdHVtIGl0ZW0pOworc3RhdGljIHZvaWQgSnNvblRhYmxl UmVzY2FuKEpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlKTsKIHN0YXRpYyBib29sIEpzb25U YWJsZUZldGNoUm93KFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOwogc3RhdGljIERhdHVtIEpz b25UYWJsZUdldFZhbHVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBjb2xudW0sCiAJ CQkJCQkJICAgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGJvb2wgKmlzbnVsbCk7CiBzdGF0aWMg dm9pZCBKc29uVGFibGVEZXN0cm95T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOwog c3RhdGljIGJvb2wgSnNvblRhYmxlUGxhblNjYW5OZXh0Um93KEpzb25UYWJsZVBsYW5TdGF0ZSAq cGxhbnN0YXRlKTsKIHN0YXRpYyB2b2lkIEpzb25UYWJsZVJlc2V0TmVzdGVkUGxhbihKc29uVGFi bGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSk7Ci1zdGF0aWMgYm9vbCBKc29uVGFibGVQbGFuSm9pbk5l eHRSb3coSnNvblRhYmxlUGxhblN0YXRlICpwbGFuc3RhdGUpOwogc3RhdGljIGJvb2wgSnNvblRh YmxlUGxhbk5leHRSb3coSnNvblRhYmxlUGxhblN0YXRlICpwbGFuc3RhdGUpOwogCiBjb25zdCBU YWJsZUZ1bmNSb3V0aW5lIEpzb25iVGFibGVSb3V0aW5lID0KQEAgLTQ1MTQsNiArNDUyMiw3IEBA IEpzb25UYWJsZUluaXRQbGFuKEpzb25UYWJsZUV4ZWNDb250ZXh0ICpjeHQsIEpzb25UYWJsZVBs YW4gKnBsYW4sCiAJCUpzb25UYWJsZVBhdGhTY2FuICpzY2FuID0gKEpzb25UYWJsZVBhdGhTY2Fu ICopIHBsYW47CiAJCWludAkJCWk7CiAKKwkJcGxhbnN0YXRlLT5vdXRlckpvaW4gPSBzY2FuLT5v dXRlckpvaW47CiAJCXBsYW5zdGF0ZS0+cGF0aCA9IERhdHVtR2V0SnNvblBhdGhQKHNjYW4tPnBh dGgtPnZhbHVlLT5jb25zdHZhbHVlKTsKIAkJcGxhbnN0YXRlLT5hcmdzID0gYXJnczsKIAkJcGxh bnN0YXRlLT5tY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKG1jeHQsICJKc29uVGFibGVFeGVj Q29udGV4dCIsCkBAIC00NTMzLDYgKzQ1NDIsOCBAQCBKc29uVGFibGVJbml0UGxhbihKc29uVGFi bGVFeGVjQ29udGV4dCAqY3h0LCBKc29uVGFibGVQbGFuICpwbGFuLAogCXsKIAkJSnNvblRhYmxl U2libGluZ0pvaW4gKmpvaW4gPSAoSnNvblRhYmxlU2libGluZ0pvaW4gKikgcGxhbjsKIAorCQlw bGFuc3RhdGUtPmNyb3NzID0gam9pbi0+Y3Jvc3M7CisKIAkJcGxhbnN0YXRlLT5sZWZ0ID0gSnNv blRhYmxlSW5pdFBsYW4oY3h0LCBqb2luLT5scGxhbiwgcGFyZW50c3RhdGUsCiAJCQkJCQkJCQkJ CWFyZ3MsIG1jeHQpOwogCQlwbGFuc3RhdGUtPnJpZ2h0ID0gSnNvblRhYmxlSW5pdFBsYW4oY3h0 LCBqb2luLT5ycGxhbiwgcGFyZW50c3RhdGUsCkBAIC00NTg3LDExICs0NTk4LDcgQEAgSnNvblRh YmxlUmVzZXRSb3dQYXR0ZXJuKEpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBEYXR1bSBp dGVtKQogCQlKc29uVmFsdWVMaXN0Q2xlYXIoJnBsYW5zdGF0ZS0+Zm91bmQpOwogCX0KIAotCS8q IFJlc2V0IHBsYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaXRlbSBsaXN0ICov Ci0JSnNvblZhbHVlTGlzdEluaXRJdGVyYXRvcigmcGxhbnN0YXRlLT5mb3VuZCwgJnBsYW5zdGF0 ZS0+aXRlcik7Ci0JcGxhbnN0YXRlLT5jdXJyZW50LnZhbHVlID0gUG9pbnRlckdldERhdHVtKE5V TEwpOwotCXBsYW5zdGF0ZS0+Y3VycmVudC5pc251bGwgPSB0cnVlOwotCXBsYW5zdGF0ZS0+b3Jk aW5hbCA9IDA7CisJSnNvblRhYmxlUmVzY2FuKHBsYW5zdGF0ZSk7CiB9CiAKIC8qCkBAIC00NjAy LDE2ICs0NjA5LDkzIEBAIEpzb25UYWJsZVJlc2V0Um93UGF0dGVybihKc29uVGFibGVQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgRGF0dW0gaXRlbSkKIHN0YXRpYyBib29sCiBKc29uVGFibGVQbGFuTmV4 dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKnBsYW5zdGF0ZSkKIHsKLQlpZiAoSXNBKHBsYW5zdGF0 ZS0+cGxhbiwgSnNvblRhYmxlUGF0aFNjYW4pKQotCQlyZXR1cm4gSnNvblRhYmxlUGxhblNjYW5O ZXh0Um93KHBsYW5zdGF0ZSk7Ci0JZWxzZSBpZiAoSXNBKHBsYW5zdGF0ZS0+cGxhbiwgSnNvblRh YmxlU2libGluZ0pvaW4pKQotCQlyZXR1cm4gSnNvblRhYmxlUGxhbkpvaW5OZXh0Um93KHBsYW5z dGF0ZSk7CisJaWYgKElzQShwbGFuc3RhdGUtPnBsYW4sIEpzb25UYWJsZVNpYmxpbmdKb2luKSkK Kwl7CisJCWlmIChwbGFuc3RhdGUtPmFkdmFuY2VSaWdodCkKKwkJeworCQkJLyogZmV0Y2ggbmV4 dCBpbm5lciByb3cgKi8KKwkJCWlmIChKc29uVGFibGVQbGFuTmV4dFJvdyhwbGFuc3RhdGUtPnJp Z2h0KSkKKwkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJLyogaW5uZXIgcm93cyBhcmUgZXhoYXVzdGVk ICovCisJCQlpZiAocGxhbnN0YXRlLT5jcm9zcykKKwkJCQlwbGFuc3RhdGUtPmFkdmFuY2VSaWdo dCA9IGZhbHNlOwkvKiBuZXh0IG91dGVyIHJvdyAqLworCQkJZWxzZQorCQkJCXJldHVybiBmYWxz ZTsJLyogZW5kIG9mIHNjYW4gKi8KKwkJfQorCisJCXdoaWxlICghcGxhbnN0YXRlLT5hZHZhbmNl UmlnaHQpCisJCXsKKwkJCS8qIGZldGNoIG5leHQgb3V0ZXIgcm93ICovCisJCQlib29sCQltb3Jl ID0gSnNvblRhYmxlUGxhbk5leHRSb3cocGxhbnN0YXRlLT5sZWZ0KTsKKworCQkJaWYgKHBsYW5z dGF0ZS0+Y3Jvc3MpCisJCQl7CisJCQkJaWYgKCFtb3JlKQorCQkJCQlyZXR1cm4gZmFsc2U7CS8q IGVuZCBvZiBzY2FuICovCisKKwkJCQlKc29uVGFibGVSZXNjYW4ocGxhbnN0YXRlLT5yaWdodCk7 CisKKwkJCQlpZiAoIUpzb25UYWJsZVBsYW5OZXh0Um93KHBsYW5zdGF0ZS0+cmlnaHQpKQorCQkJ CQljb250aW51ZTsJLyogbmV4dCBvdXRlciByb3cgKi8KKworCQkJCXBsYW5zdGF0ZS0+YWR2YW5j ZVJpZ2h0ID0gdHJ1ZTsgLyogbmV4dCBpbm5lciByb3cgKi8KKwkJCX0KKwkJCWVsc2UgaWYgKCFt b3JlKQorCQkJeworCQkJCWlmICghSnNvblRhYmxlUGxhbk5leHRSb3cocGxhbnN0YXRlLT5yaWdo dCkpCisJCQkJCXJldHVybiBmYWxzZTsJLyogZW5kIG9mIHNjYW4gKi8KKworCQkJCXBsYW5zdGF0 ZS0+YWR2YW5jZVJpZ2h0ID0gdHJ1ZTsgLyogbmV4dCBpbm5lciByb3cgKi8KKwkJCX0KKworCQkJ YnJlYWs7CisJCX0KKwl9CiAJZWxzZQotCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uVGFibGVQ bGFuICVkIiwgKGludCkgcGxhbnN0YXRlLT5wbGFuLT50eXBlKTsKKwl7CisJCS8qIHJlc2V0IGNv bnRleHQgaXRlbSBpZiByZXF1ZXN0ZWQgKi8KKwkJaWYgKHBsYW5zdGF0ZS0+cmVzZXQpCisJCXsK KwkJCUpzb25UYWJsZVBsYW5TdGF0ZSAqcGFyZW50ID0gcGxhbnN0YXRlLT5wYXJlbnQ7CisKKwkJ CUFzc2VydChwYXJlbnQgIT0gTlVMTCAmJiAhcGFyZW50LT5jdXJyZW50LmlzbnVsbCk7CisJCQlK c29uVGFibGVSZXNldFJvd1BhdHRlcm4ocGxhbnN0YXRlLCBwYXJlbnQtPmN1cnJlbnQudmFsdWUp OworCQkJcGxhbnN0YXRlLT5yZXNldCA9IGZhbHNlOworCQl9CisKKwkJaWYgKHBsYW5zdGF0ZS0+ YWR2YW5jZU5lc3RlZCkKKwkJeworCQkJLyogZmV0Y2ggbmV4dCBuZXN0ZWQgcm93ICovCisJCQlw bGFuc3RhdGUtPmFkdmFuY2VOZXN0ZWQgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhwbGFuc3RhdGUt Pm5lc3RlZCk7CisJCQlpZiAocGxhbnN0YXRlLT5hZHZhbmNlTmVzdGVkKQorCQkJCXJldHVybiB0 cnVlOworCQl9CisKKwkJZm9yICg7OykKKwkJeworCQkJaWYgKCFKc29uVGFibGVQbGFuU2Nhbk5l eHRSb3cocGxhbnN0YXRlKSkKKwkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCWlmIChwbGFuc3RhdGUt Pm5lc3RlZCA9PSBOVUxMKQorCQkJCWJyZWFrOworCisJCQlKc29uVGFibGVSZXNldE5lc3RlZFBs YW4ocGxhbnN0YXRlLT5uZXN0ZWQpOworCQkJcGxhbnN0YXRlLT5hZHZhbmNlTmVzdGVkID0gSnNv blRhYmxlUGxhbk5leHRSb3cocGxhbnN0YXRlLT5uZXN0ZWQpOworCisJCQlpZiAoIXBsYW5zdGF0 ZS0+YWR2YW5jZU5lc3RlZCAmJiAhcGxhbnN0YXRlLT5vdXRlckpvaW4pCisJCQkJY29udGludWU7 CiAKLQlBc3NlcnQoZmFsc2UpOwotCS8qIEFwcGVhc2UgY29tcGlsZXIgKi8KLQlyZXR1cm4gZmFs c2U7CisJCQkvKgorCQkJICogV2UgaGF2ZSBhIHJvdyB0byByZXR1cm46IGVpdGhlciB0aGUgbmVz dGVkIHBsYW4gcHJvZHVjZWQgb25lLAorCQkJICogb3IgdGhpcyBpcyBhbiBvdXRlciBqb2luIGFu ZCB3ZSBlbWl0IHRoZSBwYXJlbnQgcm93IHdpdGggdGhlCisJCQkgKiBuZXN0ZWQgY29sdW1ucyBz ZXQgdG8gTlVMTC4KKwkJCSAqLworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsK IH0KIAogLyoKQEAgLTQ2OTcsNDcgKzQ3ODEsMjcgQEAgSnNvblRhYmxlUmVzZXROZXN0ZWRQbGFu KEpzb25UYWJsZVBsYW5TdGF0ZSAqcGxhbnN0YXRlKQogCXsKIAkJSnNvblRhYmxlUGxhblN0YXRl ICpwYXJlbnQgPSBwbGFuc3RhdGUtPnBhcmVudDsKIAotCQlpZiAoIXBhcmVudC0+Y3VycmVudC5p c251bGwpCi0JCQlKc29uVGFibGVSZXNldFJvd1BhdHRlcm4ocGxhbnN0YXRlLCBwYXJlbnQtPmN1 cnJlbnQudmFsdWUpOworCQlwbGFuc3RhdGUtPnJlc2V0ID0gdHJ1ZTsKKwkJcGxhbnN0YXRlLT5h ZHZhbmNlTmVzdGVkID0gZmFsc2U7CisKKwkJaWYgKHBsYW5zdGF0ZS0+bmVzdGVkKQorCQkJSnNv blRhYmxlUmVzZXROZXN0ZWRQbGFuKHBsYW5zdGF0ZS0+bmVzdGVkKTsKIAogCQkvKgogCQkgKiBJ ZiB0aGlzIHBsYW4gaXRzZWxmIGhhcyBhIGNoaWxkIG5lc3RlZCBwbGFuLCBpdCB3aWxsIGJlIHJl c2V0IHdoZW4KIAkJICogdGhlIGNhbGxlciBjYWxscyBKc29uVGFibGVQbGFuTmV4dFJvdygpIG9u IHRoaXMgcGxhbi4KIAkJICovCisJCWlmICghcGFyZW50LT5jdXJyZW50LmlzbnVsbCkKKwkJCUpz b25UYWJsZVJlc2V0Um93UGF0dGVybihwbGFuc3RhdGUsIHBhcmVudC0+Y3VycmVudC52YWx1ZSk7 CiAJfQogCWVsc2UgaWYgKElzQShwbGFuc3RhdGUtPnBsYW4sIEpzb25UYWJsZVNpYmxpbmdKb2lu KSkKIAl7CiAJCUpzb25UYWJsZVJlc2V0TmVzdGVkUGxhbihwbGFuc3RhdGUtPmxlZnQpOwogCQlK c29uVGFibGVSZXNldE5lc3RlZFBsYW4ocGxhbnN0YXRlLT5yaWdodCk7CisJCXBsYW5zdGF0ZS0+ YWR2YW5jZVJpZ2h0ID0gZmFsc2U7CiAJfQogfQogCi0vKgotICogRmV0Y2ggdGhlIG5leHQgcm93 IGZyb20gYSBKc29uVGFibGVTaWJsaW5nSm9pbi4KLSAqCi0gKiBUaGlzIGlzIGVzc2VudGlhbGx5 IGEgVU5JT04gYmV0d2VlbiB0aGUgcm93cyBmcm9tIGxlZnQgYW5kIHJpZ2h0IHNpYmxpbmdzLgot ICovCi1zdGF0aWMgYm9vbAotSnNvblRhYmxlUGxhbkpvaW5OZXh0Um93KEpzb25UYWJsZVBsYW5T dGF0ZSAqcGxhbnN0YXRlKQotewotCi0JLyogRmV0Y2ggcm93IGZyb20gbGVmdCBzaWJsaW5nLiAq LwotCWlmICghSnNvblRhYmxlUGxhbk5leHRSb3cocGxhbnN0YXRlLT5sZWZ0KSkKLQl7Ci0JCS8q Ci0JCSAqIExlZnQgc2libGluZyByYW4gb3V0IG9mIHJvd3MsIHNvIHN0YXJ0IGZldGNoaW5nIGZy b20gdGhlIHJpZ2h0Ci0JCSAqIHNpYmxpbmcuCi0JCSAqLwotCQlpZiAoIUpzb25UYWJsZVBsYW5O ZXh0Um93KHBsYW5zdGF0ZS0+cmlnaHQpKQotCQl7Ci0JCQkvKiBSaWdodCBzaWJsaW5nIHJhbiBv dXQgb2Ygcm93cyB0b28sIHNvIHRoZXJlIGFyZSBubyBtb3JlIHJvd3MuICovCi0JCQlyZXR1cm4g ZmFsc2U7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQogLyoKICAqIEpzb25UYWJsZUZl dGNoUm93CiAgKgkJUHJlcGFyZSB0aGUgbmV4dCAiY3VycmVudCIgcm93IGZvciB1cGNvbWluZyBH ZXRWYWx1ZSBjYWxscy4KQEAgLTQ4MDIsMyArNDg2NiwyNiBAQCBKc29uVGFibGVHZXRWYWx1ZShU YWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAogCiAJcmV0dXJuIHJlc3VsdDsK IH0KKworLyogUmVjdXJzaXZlbHkgcmVzZXQgcGxhbnN0YXRlIGFuZCBpdHMgY2hpbGQgbm9kZXMg Ki8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVSZXNjYW4oSnNvblRhYmxlUGxhblN0YXRlICpwbGFu c3RhdGUpCit7CisJaWYgKElzQShwbGFuc3RhdGUtPnBsYW4sIEpzb25UYWJsZVBhdGhTY2FuKSkK Kwl7CisJCS8qIFJlc2V0IHBsYW4gaXRlcmF0b3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaXRl bSBsaXN0ICovCisJCUpzb25WYWx1ZUxpc3RJbml0SXRlcmF0b3IoJnBsYW5zdGF0ZS0+Zm91bmQs ICZwbGFuc3RhdGUtPml0ZXIpOworCQlwbGFuc3RhdGUtPmN1cnJlbnQudmFsdWUgPSBQb2ludGVy R2V0RGF0dW0oTlVMTCk7CisJCXBsYW5zdGF0ZS0+Y3VycmVudC5pc251bGwgPSB0cnVlOworCQlw bGFuc3RhdGUtPm9yZGluYWwgPSAwOworCisJCWlmIChwbGFuc3RhdGUtPm5lc3RlZCkKKwkJCUpz b25UYWJsZVJlc2NhbihwbGFuc3RhdGUtPm5lc3RlZCk7CisJfQorCWVsc2UgaWYgKElzQShwbGFu c3RhdGUtPnBsYW4sIEpzb25UYWJsZVNpYmxpbmdKb2luKSkKKwl7CisJCUpzb25UYWJsZVJlc2Nh bihwbGFuc3RhdGUtPmxlZnQpOworCQlKc29uVGFibGVSZXNjYW4ocGxhbnN0YXRlLT5yaWdodCk7 CisJCXBsYW5zdGF0ZS0+YWR2YW5jZVJpZ2h0ID0gZmFsc2U7CisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCmluZGV4IDg4ZGU1YzA0ODFjLi44YjcyNWVkMWFkYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYwpAQCAtMTI2NzUsNiArMTI2NzUsODkgQEAgZ2V0X2pzb25fdGFibGVf bmVzdGVkX2NvbHVtbnMoVGFibGVGdW5jICp0ZiwgSnNvblRhYmxlUGxhbiAqcGxhbiwKIAl9CiB9 CiAKKy8qCisgKiBqc29uX3RhYmxlX3BsYW5faXNfZGVmYXVsdCAtIGRvZXMgdGhpcyBwbGFuIG1h dGNoIHRoZSBpbXBsaWNpdCBkZWZhdWx0PworICoKKyAqIFdoZW4gbm8gUExBTiBjbGF1c2UgaXMg Z2l2ZW4sIEpTT05fVEFCTEUgYnVpbGRzIGEgZGVmYXVsdCBwbGFuIHRoYXQgam9pbnMKKyAqIGV2 ZXJ5IG5lc3RlZCBwYXRoIHRvIGl0cyBwYXJlbnQgd2l0aCBPVVRFUiBhbmQgZXZlcnkgc2V0IG9m IHNpYmxpbmcgcGF0aHMKKyAqIHdpdGggVU5JT04gKHNlZSB0cmFuc2Zvcm1Kc29uVGFibGVDb2x1 bW5zKCkpLiAgU3VjaCBhIHBsYW4gaXMgZnVsbHkgaW1wbGllZAorICogYnkgdGhlIE5FU1RFRCBD T0xVTU5TIHN0cnVjdHVyZSwgc28gd2UgbmVlZCBub3QgKGFuZCwgdG8gbWF0Y2ggdGhlIGlucHV0 LAorICogc2hvdWxkIG5vdCkgcHJpbnQgYSBQTEFOIGNsYXVzZSBmb3IgaXQ7IHdlIG9ubHkgZGVw YXJzZSBhIFBMQU4gY2xhdXNlIHdoZW4KKyAqIHRoZSBwbGFuIGRldmlhdGVzIGZyb20gdGhlIGRl ZmF1bHQsIGkuZS4gdXNlcyBhbiBJTk5FUiBvciBDUk9TUyBqb2luCisgKiBzb21ld2hlcmUuICBU aGlzIGZvbGxvd3MgdGhlIHVzdWFsIHJ1bGV1dGlscyBjb252ZW50aW9uIG9mIG9taXR0aW5nIGEg Y2xhdXNlCisgKiB0aGF0IG1lcmVseSByZXN0YXRlcyB0aGUgZGVmYXVsdCAoY2YuIGdldF9qc29u X2V4cHJfb3B0aW9ucygpIGZvciBPTgorICogRU1QVFkvT04gRVJST1IsIG9yIHRoZSBOVUxMUyBG SVJTVC9MQVNUIGhhbmRsaW5nIGluIGdldF9ydWxlX29yZGVyYnkoKSkuCisgKi8KK3N0YXRpYyBi b29sCitqc29uX3RhYmxlX3BsYW5faXNfZGVmYXVsdChKc29uVGFibGVQbGFuICpwbGFuKQorewor CWlmIChJc0EocGxhbiwgSnNvblRhYmxlUGF0aFNjYW4pKQorCXsKKwkJSnNvblRhYmxlUGF0aFNj YW4gKnNjYW4gPSBjYXN0Tm9kZShKc29uVGFibGVQYXRoU2NhbiwgcGxhbik7CisKKwkJaWYgKHNj YW4tPmNoaWxkKQorCQl7CisJCQlpZiAoIXNjYW4tPm91dGVySm9pbikKKwkJCQlyZXR1cm4gZmFs c2U7CS8qIElOTkVSIGlzIG5vdCB0aGUgZGVmYXVsdCAqLworCQkJcmV0dXJuIGpzb25fdGFibGVf cGxhbl9pc19kZWZhdWx0KHNjYW4tPmNoaWxkKTsKKwkJfQorCisJCXJldHVybiB0cnVlOworCX0K KwllbHNlCisJeworCQlKc29uVGFibGVTaWJsaW5nSm9pbiAqam9pbiA9IGNhc3ROb2RlKEpzb25U YWJsZVNpYmxpbmdKb2luLCBwbGFuKTsKKworCQlpZiAoam9pbi0+Y3Jvc3MpCisJCQlyZXR1cm4g ZmFsc2U7CQkvKiBDUk9TUyBpcyBub3QgdGhlIGRlZmF1bHQgKi8KKwkJcmV0dXJuIGpzb25fdGFi bGVfcGxhbl9pc19kZWZhdWx0KGpvaW4tPmxwbGFuKSAmJgorCQkJanNvbl90YWJsZV9wbGFuX2lz X2RlZmF1bHQoam9pbi0+cnBsYW4pOworCX0KK30KKworLyoKKyAqIGdldF9qc29uX3RhYmxlX3Bs YW4gLSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBwbGFuCisgKi8KK3N0YXRpYyB2b2lkCitnZXRf anNvbl90YWJsZV9wbGFuKFRhYmxlRnVuYyAqdGYsIEpzb25UYWJsZVBsYW4gKnBsYW4sIGRlcGFy c2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJYm9vbCBwYXJlbnRoZXNpemUpCit7CisJaWYgKHBh cmVudGhlc2l6ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoY29udGV4dC0+YnVmLCAnKCcpOwor CisJaWYgKElzQShwbGFuLCBKc29uVGFibGVQYXRoU2NhbikpCisJeworCQlKc29uVGFibGVQYXRo U2NhbiAqcyA9IGNhc3ROb2RlKEpzb25UYWJsZVBhdGhTY2FuLCBwbGFuKTsKKworCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwgcXVvdGVfaWRlbnRpZmllcihzLT5wYXRoLT5u YW1lKSk7CisKKwkJaWYgKHMtPmNoaWxkKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KGNvbnRleHQtPmJ1ZiwKKwkJCQkJCQkJICAgcy0+b3V0ZXJKb2luID8gIiBPVVRFUiAiIDogIiBJ Tk5FUiAiKTsKKwkJCWdldF9qc29uX3RhYmxlX3BsYW4odGYsIHMtPmNoaWxkLCBjb250ZXh0LAor CQkJCQkJCQlJc0Eocy0+Y2hpbGQsIEpzb25UYWJsZVNpYmxpbmdKb2luKSk7CisJCX0KKwl9CisJ ZWxzZSBpZiAoSXNBKHBsYW4sIEpzb25UYWJsZVNpYmxpbmdKb2luKSkKKwl7CisJCUpzb25UYWJs ZVNpYmxpbmdKb2luICpqID0gKEpzb25UYWJsZVNpYmxpbmdKb2luICopIHBsYW47CisKKwkJZ2V0 X2pzb25fdGFibGVfcGxhbih0Ziwgai0+bHBsYW4sIGNvbnRleHQsCisJCQkJCQkJSXNBKGotPmxw bGFuLCBKc29uVGFibGVTaWJsaW5nSm9pbikgfHwKKwkJCQkJCQljYXN0Tm9kZShKc29uVGFibGVQ YXRoU2Nhbiwgai0+bHBsYW4pLT5jaGlsZCk7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhj b250ZXh0LT5idWYsIGotPmNyb3NzID8gIiBDUk9TUyAiIDogIiBVTklPTiAiKTsKKworCQlnZXRf anNvbl90YWJsZV9wbGFuKHRmLCBqLT5ycGxhbiwgY29udGV4dCwKKwkJCQkJCQlJc0Eoai0+cnBs YW4sIEpzb25UYWJsZVNpYmxpbmdKb2luKSB8fAorCQkJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBh dGhTY2FuLCBqLT5ycGxhbiktPmNoaWxkKTsKKwl9CisKKwlpZiAocGFyZW50aGVzaXplKQorCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcpJyk7Cit9CisKIC8qCiAgKiBnZXRf anNvbl90YWJsZV9jb2x1bW5zIC0gUGFyc2UgYmFjayBKU09OX1RBQkxFIGNvbHVtbnMKICAqLwpA QCAtMTI2ODQsNiArMTI3NjcsNyBAQCBnZXRfanNvbl90YWJsZV9jb2x1bW5zKFRhYmxlRnVuYyAq dGYsIEpzb25UYWJsZVBhdGhTY2FuICpzY2FuLAogCQkJCQkgICBib29sIHNob3dpbXBsaWNpdCkK IHsKIAlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKKwlKc29uRXhwciAgICpqZXhwciA9 IGNhc3ROb2RlKEpzb25FeHByLCB0Zi0+ZG9jZXhwcik7CiAJTGlzdENlbGwgICAqbGNfY29sbmFt ZTsKIAlMaXN0Q2VsbCAgICpsY19jb2x0eXBlOwogCUxpc3RDZWxsICAgKmxjX2NvbHR5cG1vZDsK QEAgLTEyNzYzLDYgKzEyODQ3LDkgQEAgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMg KnRmLCBKc29uVGFibGVQYXRoU2NhbiAqc2NhbiwKIAkJCWRlZmF1bHRfYmVoYXZpb3IgPSBKU09O X0JFSEFWSU9SX05VTEw7CiAJCX0KIAorCQlpZiAoamV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBK U09OX0JFSEFWSU9SX0VSUk9SKQorCQkJZGVmYXVsdF9iZWhhdmlvciA9IEpTT05fQkVIQVZJT1Jf RVJST1I7CisKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgUEFUSCAiKTsKIAogCQln ZXRfanNvbl9wYXRoX3NwZWMoY29sZXhwci0+cGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGlj aXQpOwpAQCAtMTI4NDAsNiArMTI5MjcsMTggQEAgZ2V0X2pzb25fdGFibGUoVGFibGVGdW5jICp0 ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKIAlnZXRfanNv bl90YWJsZV9jb2x1bW5zKHRmLCBjYXN0Tm9kZShKc29uVGFibGVQYXRoU2NhbiwgdGYtPnBsYW4p LCBjb250ZXh0LAogCQkJCQkJICAgc2hvd2ltcGxpY2l0KTsKIAorCS8qCisJICogRGVwYXJzZSBh IFBMQU4gY2xhdXNlIG9ubHkgZm9yIGEgbm9uLWRlZmF1bHQgcGxhbjsgdGhlIGRlZmF1bHQgcGxh biBpcworCSAqIGltcGxpZWQgYnkgdGhlIE5FU1RFRCBDT0xVTU5TIHN0cnVjdHVyZSAoc2VlCisJ ICoganNvbl90YWJsZV9wbGFuX2lzX2RlZmF1bHQpLgorCSAqLworCWlmIChyb290LT5jaGlsZCAm JiAhanNvbl90YWJsZV9wbGFuX2lzX2RlZmF1bHQoKEpzb25UYWJsZVBsYW4gKikgcm9vdCkpCisJ eworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZENvbnRleHRLZXl3 b3JkKGNvbnRleHQsICJQTEFOICIsIDAsIDAsIDApOworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRm LCAoSnNvblRhYmxlUGxhbiAqKSByb290LCBjb250ZXh0LCB0cnVlKTsKKwl9CisKIAlpZiAoamV4 cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZKQogCQlnZXRf anNvbl9iZWhhdmlvcihqZXhwci0+b25fZXJyb3IsIGNvbnRleHQsICJFUlJPUiIpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVz L21ha2VmdW5jcy5oCmluZGV4IGJmNTRkMzlmZWIwLi40YzlkMmVjN2MwOSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFr ZWZ1bmNzLmgKQEAgLTEyNCw1ICsxMjQsMTAgQEAgZXh0ZXJuIEpzb25UYWJsZVBhdGggKm1ha2VK c29uVGFibGVQYXRoKENvbnN0ICpwYXRodmFsdWUsIGNoYXIgKnBhdGhuYW1lKTsKIGV4dGVybiBK c29uVGFibGVQYXRoU3BlYyAqbWFrZUpzb25UYWJsZVBhdGhTcGVjKGNoYXIgKnN0cmluZywgY2hh ciAqbmFtZSwKIAkJCQkJCQkJCQkJCWludCBzdHJpbmdfbG9jYXRpb24sCiAJCQkJCQkJCQkJCQlp bnQgbmFtZV9sb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZURlZmF1bHRQbGFu KEpzb25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGUsCisJCQkJCQkJCQkgIGludCBsb2NhdGlv bik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4oY2hhciAqcGF0aG5hbWUs IGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSnNv blRhYmxlUGxhbkpvaW5UeXBlIHR5cGUsCisJCQkJCQkJCQkgTm9kZSAqcGxhbjEsIE5vZGUgKnBs YW4yLCBpbnQgbG9jYXRpb24pOwogCiAjZW5kaWYJCQkJCQkJLyogTUFLRUZVTkNfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGUwMzU1NjM5OWFiLi43N2Y2OWY5NDYwNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtMTk4Miw2ICsxOTgyLDQ4IEBAIHR5cGVkZWYgc3RydWN0IEpzb25U YWJsZVBhdGhTcGVjCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiBsb2NhdGlvbiBvZiAnc3RyaW5n JyAqLwogfSBKc29uVGFibGVQYXRoU3BlYzsKIAorLyoKKyAqIEpzb25UYWJsZVBsYW5UeXBlIC0K KyAqCQlmbGFncyBmb3IgSlNPTl9UQUJMRSBwbGFuIG5vZGUgdHlwZXMgcmVwcmVzZW50YXRpb24K KyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZVBsYW5UeXBlCit7CisJSlNUUF9ERUZBVUxULAor CUpTVFBfU0lNUExFLAorCUpTVFBfSk9JTkVELAorfSBKc29uVGFibGVQbGFuVHlwZTsKKworLyoK KyAqIEpzb25UYWJsZVBsYW5Kb2luVHlwZSAtCisgKgkJSlNPTl9UQUJMRSBqb2luIHR5cGVzIGZv ciBKU1RQX0pPSU5FRCBwbGFucworICovCit0eXBlZGVmIGVudW0gSnNvblRhYmxlUGxhbkpvaW5U eXBlCit7CisJSlNUUF9KT0lOX0lOTkVSID0gMHgwMSwKKwlKU1RQX0pPSU5fT1VURVIgPSAweDAy LAorCUpTVFBfSk9JTl9DUk9TUyA9IDB4MDQsCisJSlNUUF9KT0lOX1VOSU9OID0gMHgwOCwKK30g SnNvblRhYmxlUGxhbkpvaW5UeXBlOworCisvKgorICogSnNvblRhYmxlUGxhblNwZWMgLQorICoJ CXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRSdzIFBMQU4gY2xhdXNl CisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBsYW5TcGVjCit7CisJTm9kZVRhZwkJdHlw ZTsKKworCUpzb25UYWJsZVBsYW5UeXBlIHBsYW5fdHlwZTsJLyogcGxhbiB0eXBlICovCisJSnNv blRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZTsJLyogam9pbiB0eXBlIChmb3Igam9pbmVkIHBs YW4gb25seSkgKi8KKwljaGFyCSAgICpwYXRobmFtZTsJCS8qIHBhdGggbmFtZSAoZm9yIHNpbXBs ZSBwbGFuIG9ubHkpICovCisKKwkvKiBGb3Igam9pbmVkIHBsYW5zICovCisJc3RydWN0IEpzb25U YWJsZVBsYW5TcGVjICpwbGFuMTsJLyogZmlyc3Qgam9pbmVkIHBsYW4gKi8KKwlzdHJ1Y3QgSnNv blRhYmxlUGxhblNwZWMgKnBsYW4yOwkvKiBzZWNvbmQgam9pbmVkIHBsYW4gKi8KKworCVBhcnNl TG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30g SnNvblRhYmxlUGxhblNwZWM7CisKIC8qCiAgKiBKc29uVGFibGUgLQogICoJCXVudHJhbnNmb3Jt ZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRQpAQCAtMTk5Myw2ICsyMDM1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgSnNvblRhYmxlCiAJSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjOwkvKiBK U09OIHBhdGggc3BlY2lmaWNhdGlvbiAqLwogCUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9m IFBBU1NJTkcgY2xhdXNlIGFyZ3VtZW50cywgaWYgYW55ICovCiAJTGlzdAkgICAqY29sdW1uczsJ CS8qIGxpc3Qgb2YgSnNvblRhYmxlQ29sdW1uICovCisJSnNvblRhYmxlUGxhblNwZWMgKnBsYW5z cGVjOwkvKiBqb2luIHBsYW4sIGlmIHNwZWNpZmllZCAqLwogCUpzb25CZWhhdmlvciAqb25fZXJy b3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLwogCUFsaWFzCSAgICphbGlhczsJCQkvKiB0YWJs ZSBhbGlhcyBpbiBGUk9NIGNsYXVzZSAqLwogCWJvb2wJCWxhdGVyYWw7CQkvKiBkb2VzIGl0IGhh dmUgTEFURVJBTCBwcmVmaXg/ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGJiMDVhZWViZWU0 Li5jYWNlZjdkNDE1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTE5MjYsNiArMTkyNiw3IEBA IHR5cGVkZWYgc3RydWN0IEpzb25UYWJsZVBhdGhTY2FuCiAKIAkvKiBQbGFuKHMpIGZvciBuZXN0 ZWQgY29sdW1ucywgaWYgYW55LiAqLwogCUpzb25UYWJsZVBsYW4gKmNoaWxkOworCWJvb2wJCW91 dGVySm9pbjsJCS8qIG91dGVyIG9yIGlubmVyIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLwog CiAJLyoKIAkgKiAwLWJhc2VkIGluZGV4IGluIFRhYmxlRnVuYy5jb2x2YWxleHBycyBvZiB0aGUg MXN0IGFuZCB0aGUgbGFzdCBjb2x1bW4KQEAgLTE5NDcsNiArMTk0OCw3IEBAIHR5cGVkZWYgc3Ry dWN0IEpzb25UYWJsZVNpYmxpbmdKb2luCiAKIAlKc29uVGFibGVQbGFuICpscGxhbjsKIAlKc29u VGFibGVQbGFuICpycGxhbjsKKwlib29sCQljcm9zczsKIH0gSnNvblRhYmxlU2libGluZ0pvaW47 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMTE3 ZTczNzlmMTAuLjg4N2E2MWZhN2YzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTUw OCw3ICsxNTA4LDEwIEBAIEpzb25UYWJsZVBhdGhTY2FuCiBKc29uVGFibGVQYXRoU3BlYwogSnNv blRhYmxlUGxhbgogSnNvblRhYmxlUGxhblJvd1NvdXJjZQorSnNvblRhYmxlUGxhblNwZWMKIEpz b25UYWJsZVBsYW5TdGF0ZQorSnNvblRhYmxlUGxhbkpvaW5UeXBlCitKc29uVGFibGVQbGFuVHlw ZQogSnNvblRhYmxlU2libGluZ0pvaW4KIEpzb25Ub2tlblR5cGUKIEpzb25UcmFuc2Zvcm1TdHJp bmdWYWx1ZXNBY3Rpb24KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000491fab0655cf5d0e Content-Type: application/octet-stream; name="v24-0002-JSON_TABLE-PLAN-Clause-2-3.patch" Content-Disposition: attachment; filename="v24-0002-JSON_TABLE-PLAN-Clause-2-3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr6tsfli1 RnJvbSA1YjQ1NTkzYTY1MjhiOWExYzA1Zjg4YThmNzQ4NGRiYmQ0MTRmNzNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IEZyaSwgMTUgTWF5IDIwMjYgMTQ6Mzk6NDEgKzAzMDAKU3ViamVjdDogW1BB VENIIHYyNCAyLzNdIEpTT05fVEFCTEUgUExBTiBDbGF1c2UgKDIvMykKTUlNRS1WZXJzaW9uOiAx LjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBK U09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUgdXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20g bmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFsbG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGlu IHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBh bGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFs aW5nIHdpdGggc2libGluZyBvciBjaGlsZCBuZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZm aWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5 IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFOIGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2Vy IHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRvIGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVk IHBhdGguCgpUaGUgc2Vjb25kIHBhdGNoIGluIHNlcmllcyBwcm92aWRlcyB0ZXN0IGNhc2VzIGFu ZCByZXN1bHRzIGNoYW5nZXMKZm9yIFBMQU4gY2xhdXNlLgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hv diA8bi5nbHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhvcjogVGVvZG9yIFNpZ2FldiA8dGVvZG9y QHNpZ2Fldi5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92IDxvYmFydHVub3ZAZ21haWwuY29tPgpB dXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkF1dGhvcjog QW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3Rl IDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9yOiBBbnRvbiBNZWxuaWtvdiA8YS5tZWxu aWtvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZA cG9zdGdyZXNwcm8ucnU+CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAoaW4gbm8gcGFydGljdWxh ciBvcmRlcikgQW5kcmVzIEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292LCBQYXZlbCBTdGVodWxl LCBBbmRyZXcgQWxzdXAsIEVyaWsgUmlqa2VycywgWmlob25nIFl1LApIaW1hbnNodSBVcGFkaHlh eWEsIERhbmllbCBHdXN0YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2YXJvIEhlcnJlcmEsCmpp YW4gaGUKCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5MzUtMDE1OC03OGE3 LTA4YjUtOTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFwMy5hbmFyYXplbC5k ZQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFhNjYtZjIzMC0zZDZk LTczNDgxN2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJn QG1haWwuZ21haWwuY29tCi0tLQogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFi bGUub3V0ICAgIHwgNjMzICsrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3FsanNvbl9qc29udGFibGUuc3FsICAgIHwgNDE3ICsrKysrKysrKysrKwogMiBmaWxlcyBjaGFu Z2VkLCAxMDQ5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fanNvbnRhYmxlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CmluZGV4IDQ1OGM1YWFhNWIwLi44 M2RjN2I3OGUxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29u X2pzb250YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pz b250YWJsZS5vdXQKQEAgLTc3NCw2ICs3NzQsMjIyIEBAIFNFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKIEVSUk9SOiAgZHVwbGljYXRlIEpTT05fVEFCTEUgY29sdW1uIG9yIHBhdGggbmFtZTogYQog TElORSAxMDogICAgTkVTVEVEIFBBVEggJyQnIEFTIGEKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBKU09OX1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCistLSBTaG91 bGQgZmFpbCAoSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29udGFpbiBleHBsaWNpdCBBUyBwYXRo CistLSBzcGVjaWZpY2F0aW9ucyBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkKQorU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdbXScsICckJyAtLSBBUyA8cGF0 aCBuYW1lPiByZXF1aXJlZCBoZXJlCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBm b28gaW50IFBBVEggJyQnCisgICAgICAgKQorICAgICAgIFBMQU4gREVGQVVMVCAoVU5JT04pCisp IGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSAyOiAgICAg ICAganNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUgcGF0aCBtdXN0IGNv bnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQTEFO IGNsYXVzZSBpcyB1c2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIg J1tdJywgJyQnIEFTIHBhdGgxCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJCcgQ09MVU1OUyAoIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKyAg ICAgICAgICAgICAgICAgICAgICAgZm9vIGludCBQQVRIICckJworICAgICAgICAgICAgICAgKQor ICAgICAgICkKKyAgICAgICBQTEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKKyBmb28gCistLS0t LQorICAgIAorKDEgcm93KQorCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAor ICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENP TFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICck JyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAg ICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAxKQorKSBqdDsKK0VSUk9SOiAgaW52 YWxpZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTI6ICAgICAgICBQTEFOIChwMSkKKyAgICAgICAg ICAgICAgICAgICAgICBeCitERVRBSUw6ICBQQVRIIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkIHAw IGJ1dCBwMSBpcyBnaXZlbi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBO RVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xV TU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xV TU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBMQU4g KHAwKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJ TkUgNDogICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBh dGggcDEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBM QU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNp ZmljYXRpb24KK0xJTkUgNDogICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENP TFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBm b3IgbmVzdGVkIHBhdGggcDEgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAg ICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICks CisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAo IGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRI ICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAg KQorICAgICAgIFBMQU4gKHAwIFVOSU9OIHAxIFVOSU9OIHAxMSkKKykganQ7CitFUlJPUjogIGlu dmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZQorTElORSAxMjogICAgICAgIFBMQU4gKHAwIFVO SU9OIHAxIFVOSU9OIHAxMSkKKyAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBFeHBl Y3RlZCBJTk5FUiBvciBPVVRFUi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBM QU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMTMpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09O X1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgODogICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQ TEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDIgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZS T00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAg IENPTFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMg KAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAg ICApCisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVSIChwMSBDUk9TUyBwMikpCispIGp0 OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lmaWNhdGlvbgorTElORSA1OiAgICAg ICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyAu Li4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVz ZSBmb3IgbmVzdGVkIHBhdGggcDExIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5T ICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAg ICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGlu dCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVN TlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAg ICAgICkKKyAgICAgICBQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQor KSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlCitMSU5FIDEyOiAg ICAgICAgUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBjb250YWlucyBz b21lIGV4dHJhIG9yIGR1cGxpY2F0ZSBzaWJsaW5nIG5vZGVzLgorU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAorICAgICAgIGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1O UyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAg ICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiBwMTEpIENST1NTIHAyKSkK KykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDY6 ICAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4g Y2xhdXNlIGZvciBuZXN0ZWQgcGF0aCBwMTIgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENP TFVNTlMgKAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIg Q09MVU1OUyAoIGJhciBpbnQgKQorICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5F U1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVT VEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICAp CisgICAgICAgKQorICAgICAgIFBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBw MTEpKSBDUk9TUyBwMikpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3BlY2lm aWNhdGlvbgorTElORSA5OiAgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBB UyBwMjEgQ09MVU1OUyAoIGJheiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDIxIHdhcyBub3QgZm91bmQu CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnc3RyaWN0 ICRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgICAg ICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXog aW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIg KChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7 CisgYmFyIHwgZm9vIHwgYmF6IAorLS0tLS0rLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScg LS0gd2l0aG91dCByb290IHBhdGggbmFtZQorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBM QU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5FUiBwMjEpKQorKSBq dDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Npb24KK0xJTkUgMjogICAgICAg IGpzb25iICdudWxsJywgJ3N0cmljdCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFCTEUgcGF0aCBt dXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBpZiBleHBsaWNp dCBQTEFOIGNsYXVzZSBpcyB1c2VkCiAtLSBKU09OX1RBQkxFOiBwbGFuIGV4ZWN1dGlvbgogQ1JF QVRFIFRFTVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOwogSU5TRVJUIElOVE8g anNvbmJfdGFibGVfdGVzdApAQCAtODEzLDYgKzEwMjksMzI1IEBAIGZyb20KICA0IHwgLTEgfCAg ICAyIHwgMiB8ICAgICAgfCAgIAogKDExIHJvd3MpCiAKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIs IHVuaW9uKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rl c3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJp Y3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAg ICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBh dGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91dGVyLCB1bmlvbikKKyAgICAgICApIGp0OworIG4g fCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8 ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAy IHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8ICAzIHwg MSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0xIHwgMiB8 ICAgCisoMTEgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMp KQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0 LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsq XScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAg IG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xh eCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3Rl ZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwK KyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBj IGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgICBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisgICAgICAgKSBqdDsKKyBuIHwgYSAg fCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8 IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAg fCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAg IAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAor KDExIHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3Nl bGVjdAorICAgICAgIGp0LioKK2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwKKyAg ICAgICBqc29uX3RhYmxlICgKKyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0nIGFz IHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBuIGZv ciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXggJC5h JyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisgICAg ICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1 bW5zICggYyBpbnQgcGF0aCAnJCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg cGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorICAgICAgICkganQ7CisgbiB8IGEgIHwgYyAg fCBiIAorLS0tKy0tLS0rLS0tLSstLS0KKyAxIHwgIDEgfCAgICB8ICAKKyAyIHwgIDIgfCAxMCB8 ICAKKyAyIHwgIDIgfCAgICB8ICAKKyAyIHwgIDIgfCAyMCB8ICAKKyAyIHwgIDIgfCAgICB8IDEK KyAyIHwgIDIgfCAgICB8IDIKKyAyIHwgIDIgfCAgICB8IDMKKyAzIHwgIDMgfCAgICB8IDEKKyAz IHwgIDMgfCAgICB8IDIKKyA0IHwgLTEgfCAgICB8IDEKKyA0IHwgLTEgfCAgICB8IDIKKygxMSBy b3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikKK3NlbGVjdAorICAgICAgIGp0 LioKK2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwKKyAgICAgICBqc29uX3RhYmxl ICgKKyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKyAgICAgICAgICAg ICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBuIGZvciBvcmRpbmFsaXR5LAor ICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9u IGVtcHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsq XScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisgICAgICAgICAgICAgICAgICAg ICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0 aCAnJCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgcGxhbiBkZWZhdWx0IChp bm5lcikKKyAgICAgICApIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0t CisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMyB8ICAgCisg MiB8ICAyIHwgICB8IDEwCisgMiB8ICAyIHwgICB8ICAgCisgMiB8ICAyIHwgICB8IDIwCisgMyB8 ICAzIHwgMSB8ICAgCisgMyB8ICAzIHwgMiB8ICAgCisgNCB8IC0xIHwgMSB8ICAgCisgNCB8IC0x IHwgMiB8ICAgCisoMTAgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAocGIgdW5p b24gcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rl c3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJp Y3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAg ICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBh dGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAn JCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCisgICAgICAgKSBqdDsKKyBu IHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDIgfCAgMiB8IDEgfCAgIAorIDIg fCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAg MiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8 IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEwIHJvd3MpCisK Ky0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2VsZWN0CisgICAgICAganQuKgorZnJv bQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAg ICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29s dW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAg ICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBw YiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVz dGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKGNyb3NzLCBp bm5lcikKKyAgICAgICApIGp0OworIG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSstLS0rLS0tLQor IDIgfCAyIHwgMSB8IDEwCisgMiB8IDIgfCAxIHwgICAKKyAyIHwgMiB8IDEgfCAyMAorIDIgfCAy IHwgMiB8IDEwCisgMiB8IDIgfCAyIHwgICAKKyAyIHwgMiB8IDIgfCAyMAorIDIgfCAyIHwgMyB8 IDEwCisgMiB8IDIgfCAzIHwgICAKKyAyIHwgMiB8IDMgfCAyMAorKDkgcm93cykKKworLS0gc3Bl Y2lmaWMgcGxhbiAocCBpbm5lciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAganQuKgor ZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAor ICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAg Y29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAg ICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1w dHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBh cyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAg bmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICck JyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiBj cm9zcyBwYykpCisgICAgICAgKSBqdDsKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0t LS0KKyAyIHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAy IHwgMiB8IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8 IDMgfCAxMAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0t IGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQor ICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAg ICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1u cyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAg ICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisg ICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVk IHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisg ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91dGVyLCBjcm9z cykKKyAgICAgICApIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisg MSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8 ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAy IHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwg MyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKwor LS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAg anQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFi bGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAg ICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHks CisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEg b24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5i WypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIChwIG91dGVy IChwYiBjcm9zcyBwYykpCisgICAgICAgKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0t LSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8 IDEgfCAgIAorIDIgfCAgMiB8IDEgfCAyMAorIDIgfCAgMiB8IDIgfCAxMAorIDIgfCAgMiB8IDIg fCAgIAorIDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAg IAorIDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAgfCAgIAorIDQgfCAtMSB8ICAgfCAgIAor KDEyIHJvd3MpCisKK3NlbGVjdAorICAgICAgIGp0LiosIGIxICsgMTAwIGFzIGIKK2Zyb20KKyAg ICAgICBqc29uX3RhYmxlIChqc29uYgorICAgICAgICAgICAgICAgJ1sKKyAgICAgICAgICAgICAg ICAgICAgICAgeyJhIjogIDEsICAiYiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJj IjogWzEsIG51bGwsIDJdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgeyJhIjogIDIsICAiYiI6 IFsxMCwgMjBdLCAiYyI6IFsxLCBudWxsLCAyXX0sCisgICAgICAgICAgICAgICAgICAgICAgIHsi eCI6ICIzIiwgImIiOiBbMTEsIDIyLCAzMywgNDRdfQorICAgICAgICAgICAgICAgIF0nLAorICAg ICAgICAgICAgICAgJyRbKl0nIGFzIHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAg ICAgICAgICAgICAgICAgICBuIGZvciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAg ICBhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorICAgICAgICAgICAg ICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQn LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJFsq XScgYXMgcGIxIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYjEgaW50IHBhdGggJyQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYyB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgaW50IHBhdGggJyQnCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAtLXBsYW4gZGVmYXVsdChvdXRlciwg Y3Jvc3MpCisgICAgICAgICAgICAgICBwbGFuKHAgb3V0ZXIgKChwYiBpbm5lciBwYjEpIGNyb3Nz IChwYyBvdXRlciBwYzEpKSkKKyAgICAgICApIGp0OworIG4gfCBhIHwgICAgICBiICAgICAgIHwg YjEgIHwgIGMgICB8IGMxIHwgIGIgIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0tLSstLS0t LS0rLS0tLSstLS0tLQorIDEgfCAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwgMSAgICB8ICAgIHwg MTAxCisgMSB8IDEgfCBbMSwgMTBdICAgICAgfCAgIDEgfCBudWxsIHwgICAgfCAxMDEKKyAxIHwg MSB8IFsxLCAxMF0gICAgICB8ICAgMSB8IDIgICAgfCAgICB8IDEwMQorIDEgfCAxIHwgWzEsIDEw XSAgICAgIHwgIDEwIHwgMSAgICB8ICAgIHwgMTEwCisgMSB8IDEgfCBbMSwgMTBdICAgICAgfCAg MTAgfCBudWxsIHwgICAgfCAxMTAKKyAxIHwgMSB8IFsxLCAxMF0gICAgICB8ICAxMCB8IDIgICAg fCAgICB8IDExMAorIDEgfCAxIHwgWzJdICAgICAgICAgIHwgICAyIHwgMSAgICB8ICAgIHwgMTAy CisgMSB8IDEgfCBbMl0gICAgICAgICAgfCAgIDIgfCBudWxsIHwgICAgfCAxMDIKKyAxIHwgMSB8 IFsyXSAgICAgICAgICB8ICAgMiB8IDIgICAgfCAgICB8IDEwMgorIDEgfCAxIHwgWzMsIDMwLCAz MDBdIHwgICAzIHwgMSAgICB8ICAgIHwgMTAzCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAgIDMg fCBudWxsIHwgICAgfCAxMDMKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8ICAgMyB8IDIgICAgfCAg ICB8IDEwMworIDEgfCAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwgMSAgICB8ICAgIHwgMTMwCisg MSB8IDEgfCBbMywgMzAsIDMwMF0gfCAgMzAgfCBudWxsIHwgICAgfCAxMzAKKyAxIHwgMSB8IFsz LCAzMCwgMzAwXSB8ICAzMCB8IDIgICAgfCAgICB8IDEzMAorIDEgfCAxIHwgWzMsIDMwLCAzMDBd IHwgMzAwIHwgMSAgICB8ICAgIHwgNDAwCisgMSB8IDEgfCBbMywgMzAsIDMwMF0gfCAzMDAgfCBu dWxsIHwgICAgfCA0MDAKKyAxIHwgMSB8IFszLCAzMCwgMzAwXSB8IDMwMCB8IDIgICAgfCAgICB8 IDQwMAorIDIgfCAyIHwgICAgICAgICAgICAgIHwgICAgIHwgICAgICB8ICAgIHwgICAgCisgMyB8 ICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgfCAgICAKKygyMCByb3dzKQorCiAt LSBQQVNTSU5HIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIG5lc3RlZCBwYXRocyBhbmQgdGhlaXIg Y29sdW1ucycgcGF0aHMKIFNFTEVDVCAqCiBGUk9NCkBAIC04NzYsNiArMTQxMSw3IEBAIFNFTEVD VCAqIEZST00KIAkJCSkKIAkJKQogCSk7CitDUkVBVEUgRE9NQUlOIGpzb25iX3Rlc3RfZG9tYWlu IEFTIHRleHQgQ0hFQ0sgKHZhbHVlIDw+ICdmb28nKTsKIFxzdiBqc29uYl90YWJsZV92aWV3X25l c3RlZAogQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlld19uZXN0 ZWQgQVMKICBTRUxFQ1QgaWQsCkBAIC05MTMsNyArMTQ0OSwxMDIgQEAgQ1JFQVRFIE9SIFJFUExB Q0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlld19uZXN0ZWQgQVMKICAgICAgICAgICAgICAg ICApCiAgICAgICAgICAgICApCiAgICAgICAgICkKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVi bGljLmpzb25iX3RhYmxlX3ZpZXcgQVMKKyBTRUxFQ1QgaWQsCisgICAgImludCIsCisgICAgdGV4 dCwKKyAgICAiY2hhcig0KSIsCisgICAgYm9vbCwKKyAgICAibnVtZXJpYyIsCisgICAgZG9tYWlu LAorICAgIGpzLAorICAgIGpiLAorICAgIGpzdCwKKyAgICBqc2MsCisgICAganN2LAorICAgIGpz YiwKKyAgICBqc2JxLAorICAgIGFhYSwKKyAgICBhYWExLAorICAgIGV4aXN0czEsCisgICAgZXhp c3RzMiwKKyAgICBleGlzdHMzLAorICAgIGpzMiwKKyAgICBqc2IydywKKyAgICBqc2IycSwKKyAg ICBpYSwKKyAgICB0YSwKKyAgICBqYmEsCisgICAgYTEsCisgICAgYjEsCisgICAgYTExLAorICAg IGEyMSwKKyAgICBhMjIKKyAgIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6 anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMQorICAgICAgICAgICAgUEFTU0lORwor ICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAgICAgICAgJyJmb28iJzo6anNv biBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgaWQgRk9S IE9SRElOQUxJVFksCisgICAgICAgICAgICAgICAgImludCIgaW50ZWdlciBQQVRIICckJywKKyAg ICAgICAgICAgICAgICB0ZXh0IHRleHQgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgImNoYXIo NCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywKKyAgICAgICAgICAgICAgICBib29sIGJvb2xlYW4g UEFUSCAnJCcsCisgICAgICAgICAgICAgICAgIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAgZG9tYWluIGpzb25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorICAgICAg ICAgICAgICAgIGpzIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgamIganNvbmIgUEFU SCAnJCcsCisgICAgICAgICAgICAgICAganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAganNjIGNoYXJhY3Rlcig0KSBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAg ICAgICAgICAgICAgICBqc3YgY2hhcmFjdGVyIHZhcnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAn JCcsCisgICAgICAgICAgICAgICAganNiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAg IGpzYnEganNvbmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgYWFhIGlu dGVnZXIgUEFUSCAnJC4iYWFhIicsCisgICAgICAgICAgICAgICAgYWFhMSBpbnRlZ2VyIFBBVEgg JyQuImFhYSInLAorICAgICAgICAgICAgICAgIGV4aXN0czEgYm9vbGVhbiBFWElTVFMgUEFUSCAn JC4iYWFhIicsCisgICAgICAgICAgICAgICAgZXhpc3RzMiBpbnRlZ2VyIEVYSVNUUyBQQVRIICck LiJhYWEiJyBUUlVFIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGV4aXN0czMgdGV4dCBFWElT VFMgUEFUSCAnc3RyaWN0ICQuImFhYSInIFVOS05PV04gT04gRVJST1IsCisgICAgICAgICAgICAg ICAganMyIGpzb24gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAganNiMncganNvbmIgUEFUSCAn JCcgV0lUSCBVTkNPTkRJVElPTkFMIFdSQVBQRVIsCisgICAgICAgICAgICAgICAganNiMnEganNv bmIgUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgaWEgaW50ZWdlcltdIFBB VEggJyQnLAorICAgICAgICAgICAgICAgIHRhIHRleHRbXSBQQVRIICckJywKKyAgICAgICAgICAg ICAgICBqYmEganNvbmJbXSBQQVRIICckJywKKyAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JFsxXScgQVMgcDEKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAg ICAgYTEgaW50ZWdlciBQQVRIICckLiJhMSInLAorICAgICAgICAgICAgICAgICAgICBiMSB0ZXh0 IFBBVEggJyQuImIxIicsCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBB UyAicDEgMSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAg ICAgICAgICBhMTEgdGV4dCBQQVRIICckLiJhMTEiJworICAgICAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsyXScgQVMg cDIKKyAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyRbKl0nIEFTICJwMjoxIgorICAgICAgICAgICAgICAgICAgICBDT0xVTU5TICgKKyAg ICAgICAgICAgICAgICAgICAgICAgIGEyMSB0ZXh0IFBBVEggJyQuImEyMSInCisgICAgICAgICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBw MjIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAg ICBhMjIgdGV4dCBQQVRIICckLiJhMjIiJworICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAoanNvbl90YWJsZV9w YXRoXzEgT1VURVIgKChwMSBPVVRFUiAicDEgMSIpIFVOSU9OIChwMiBPVVRFUiAoInAyOjEiIFVO SU9OIHAyMikpKSkKKyAgICAgICAgKTsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VM RUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3OworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAianNvbl90YWJsZSIKKyAgIE91dHB1dDog Impzb25fdGFibGUiLmlkLCAianNvbl90YWJsZSIuImludCIsICJqc29uX3RhYmxlIi50ZXh0LCAi anNvbl90YWJsZSIuImNoYXIoNCkiLCAianNvbl90YWJsZSIuYm9vbCwgImpzb25fdGFibGUiLiJu dW1lcmljIiwgImpzb25fdGFibGUiLmRvbWFpbiwgImpzb25fdGFibGUiLmpzLCAianNvbl90YWJs ZSIuamIsICJqc29uX3RhYmxlIi5qc3QsICJqc29uX3RhYmxlIi5qc2MsICJqc29uX3RhYmxlIi5q c3YsICJqc29uX3RhYmxlIi5qc2IsICJqc29uX3RhYmxlIi5qc2JxLCAianNvbl90YWJsZSIuYWFh LCAianNvbl90YWJsZSIuYWFhMSwgImpzb25fdGFibGUiLmV4aXN0czEsICJqc29uX3RhYmxlIi5l eGlzdHMyLCAianNvbl90YWJsZSIuZXhpc3RzMywgImpzb25fdGFibGUiLmpzMiwgImpzb25fdGFi bGUiLmpzYjJ3LCAianNvbl90YWJsZSIuanNiMnEsICJqc29uX3RhYmxlIi5pYSwgImpzb25fdGFi bGUiLnRhLCAianNvbl90YWJsZSIuamJhLCAianNvbl90YWJsZSIuYTEsICJqc29uX3RhYmxlIi5i MSwgImpzb25fdGFibGUiLmExMSwgImpzb25fdGFibGUiLmEyMSwgImpzb25fdGFibGUiLmEyMgor ICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6Ompzb25iLCAnJFsqXScg QVMganNvbl90YWJsZV9wYXRoXzEgUEFTU0lORyAzIEFTIGEsICciZm9vIic6Ompzb25iIEFTICJi IGMiIENPTFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCAiaW50IiBpbnRlZ2VyIFBBVEggJyQnLCB0 ZXh0IHRleHQgUEFUSCAnJCcsICJjaGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFUSCAnJCcsIGJvb2wg Ym9vbGVhbiBQQVRIICckJywgIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsIGRvbWFpbiBqc29u Yl90ZXN0X2RvbWFpbiBQQVRIICckJywganMganNvbiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIg S0VFUCBRVU9URVMsIGpiIGpzb25iIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RF UywganN0IHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVP VEVTLCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnIFdJVEhPVVQgV1JBUFBF UiBLRUVQIFFVT1RFUywganN2IGNoYXJhY3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEgg JyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUywganNiIGpzb25iIFBBVEggJyQnIFdJVEhP VVQgV1JBUFBFUiBLRUVQIFFVT1RFUywganNicSBqc29uYiBQQVRIICckJyBXSVRIT1VUIFdSQVBQ RVIgT01JVCBRVU9URVMsIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBhYWExIGludGVnZXIg UEFUSCAnJC4iYWFhIicsIGV4aXN0czEgYm9vbGVhbiBFWElTVFMgUEFUSCAnJC4iYWFhIicsIGV4 aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJVRSBPTiBFUlJPUiwgZXhpc3Rz MyB0ZXh0IEVYSVNUUyBQQVRIICdzdHJpY3QgJC4iYWFhIicgVU5LTk9XTiBPTiBFUlJPUiwganMy IGpzb24gUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTLCBqc2IydyBqc29uYiBQ QVRIICckJyBXSVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUiBLRUVQIFFVT1RFUywganNiMnEganNv bmIgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTLCBpYSBpbnRlZ2VyW10gUEFU SCAnJCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTLCB0YSB0ZXh0W10gUEFUSCAnJCcgV0lU SE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTLCBqYmEganNvbmJbXSBQQVRIICckJyBXSVRIT1VUIFdS QVBQRVIgS0VFUCBRVU9URVMsIE5FU1RFRCBQQVRIICckWzFdJyBBUyBwMSBDT0xVTU5TIChhMSBp bnRlZ2VyIFBBVEggJyQuImExIicsIGIxIHRleHQgUEFUSCAnJC4iYjEiJywgTkVTVEVEIFBBVEgg JyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TIChhMTEgdGV4dCBQQVRIICckLiJhMTEiJykpLCBORVNU RUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6 MSIgQ09MVU1OUyAoYTIxIHRleHQgUEFUSCAnJC4iYTIxIicpLCBORVNURUQgUEFUSCAnJFsqXScg QVMgcDIyIENPTFVNTlMgKGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpKQorKDMgcm93cykKKwor RFJPUCBWSUVXIGpzb25iX3RhYmxlX3ZpZXc7CiBEUk9QIFZJRVcganNvbmJfdGFibGVfdmlld19u ZXN0ZWQ7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbjsKIENSRUFURSBUQUJMRSBzIChq cyBqc29uYik7CiBJTlNFUlQgSU5UTyBzIFZBTFVFUwogCSgneyJhIjp7InphIjpbeyJ6MSI6IFsx MSwyMjIyXX0seyJ6MjEiOiBbMjIsIDIzNCwyMzQ1XX0seyJ6MjIiOiBbMzIsIDIwNCwxNDVdfV19 LCJjIjogM30nKSwKQEAgLTExNTIsNyArMTc4Myw3IEBAIENSRUFURSBPUiBSRVBMQUNFIFZJRVcg cHVibGljLmpzb25fdGFibGVfdmlldzkgQVMKICAgIEZST00gSlNPTl9UQUJMRSgKICAgICAgICAg ICAgICciYSInOjp0ZXh0LCAnJCcgQVMganNvbl90YWJsZV9wYXRoXzAKICAgICAgICAgICAgIENP TFVNTlMgKAotICAgICAgICAgICAgICAgIGEgdGV4dCBQQVRIICckJworICAgICAgICAgICAgICAg IGEgdGV4dCBQQVRIICckJyBOVUxMIE9OIEVNUFRZCiAgICAgICAgICAgICApIEVSUk9SIE9OIEVS Uk9SCiAgICAgICAgICkKIERST1AgVklFVyBqc29uX3RhYmxlX3ZpZXc4LCBqc29uX3RhYmxlX3Zp ZXc5OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCmluZGV4IDE1 NGVlYTc5Yzc2Li4yN2I4NmQ4YTI4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3FsanNvbl9qc29udGFibGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25f anNvbnRhYmxlLnNxbApAQCAtMzc2LDYgKzM3NiwxNzAgQEAgU0VMRUNUICogRlJPTSBKU09OX1RB QkxFKAogCSkKICkganQ7CiAKKy0tIEpTT05fVEFCTEU6IG5lc3RlZCBwYXRocyBhbmQgcGxhbnMK Ky0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNvbHVtbnMgbXVzdCBjb250YWluIGV4cGxpY2l0 IEFTIHBhdGgKKy0tIHNwZWNpZmljYXRpb25zIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVz ZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ1tdJywgJyQnIC0t IEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAg ICAgICAgIGZvbyBpbnQgUEFUSCAnJCcKKyAgICAgICApCisgICAgICAgUExBTiBERUZBVUxUIChV TklPTikKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ1td JywgJyQnIEFTIHBhdGgxCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQ09MVU1OUyAoIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKyAgICAg ICAgICAgICAgICAgICAgICAgZm9vIGludCBQQVRIICckJworICAgICAgICAgICAgICAgKQorICAg ICAgICkKKyAgICAgICBQTEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKKworLS0gSlNPTl9UQUJM RTogcGxhbiB2YWxpZGF0aW9uCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNv bmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAg IE5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAg TkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAg ICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAg ICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09M VU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFO IChwMSkKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251 bGwnLCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RF RCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAg ICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAo CisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAo IGJheiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCkK KykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAn JFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRI ICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEgg JyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBO RVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBp bnQgKQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCBPVVRFUiBw MykKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwn LCAnJFsqXScgQVMgcDAKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJh eiBpbnQgKQorICAgICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCBVTklP TiBwMSBVTklPTiBwMTEpCispIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorICAgICAg IGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAg ICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCAp CisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAy IENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIx IENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAgICApCisgICAgICAg UExBTiAocDAgT1VURVIgKHAxIENST1NTIHAxMykpCispIGp0OworU0VMRUNUICogRlJPTSBKU09O X1RBQkxFKAorICAgICAgIGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1O UyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAg ICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBp bnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAg ICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIgKHAxIENST1NTIHAyKSkKKykganQ7CitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoCisgICAgICAganNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMSBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBD T0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAn JCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAgICAg ICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAg ICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAg ICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAx MSkgQ1JPU1MgcDIpKQorKSBqdDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICBq c29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisgICAgICAgICAg ICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor ICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisgICAgICAgICAgICAgICApCisgICAgICAgKQorICAgICAgIFBM QU4gKHAwIE9VVEVSICgocDEgSU5ORVIgcDExKSBDUk9TUyBwMikpCispIGp0OworU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorICAgICAgIGpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisgICAg ICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1O UyAoCisgICAgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAg ICBORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAg ICAgICkKKyAgICAgICApCisgICAgICAgUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENS T1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisg ICAgICAganNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisgICAgICAgQ09MVU1OUyAo CisgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAg ICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQg KSwKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5T ICggYmFyIGludCApCisgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgTkVTVEVEIFBB VEggJyQnIEFTIHAyIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKyAgICAgICAgICAgICAgICkKKyAgICAg ICApCisgICAgICAgUExBTiAocDAgT1VURVIgKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENS T1NTIChwMiBJTk5FUiBwMjEpKSkKKykganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisg ICAgICAganNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5h bWUKKyAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyQnIEFTIHAx MSBDT0xVTU5TICggZm9vIGludCApLAorICAgICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFU SCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKyAgICAgICAgICAgICAgICksCisgICAg ICAgICAgICAgICBORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisgICAgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAg ICAgICAgICAgICAgKQorICAgICAgICkKKyAgICAgICBQTEFOICgocDEgSU5ORVIgKHAxMiBDUk9T UyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CiAKIC0tIEpTT05fVEFCTEU6IHBs YW4gZXhlY3V0aW9uCiAKQEAgLTQwNSw2ICs1NjksMTcwIEBAIGZyb20KIAkJKQogCSkganQ7CiAK Ky0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIHVuaW9uKQorc2VsZWN0CisgICAgICAganQuKgorZnJv bQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAg ICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29s dW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAg ICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHks CisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBw YiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVz dGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyAp CisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91dGVyLCB1 bmlvbikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24g cGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3Qg anR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3Qg JFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAg ICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGgg J2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5l c3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcg KSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFz IHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICBwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisgICAgICAgKSBqdDsKKy0tIHNw ZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3NlbGVjdAorICAgICAgIGp0LioK K2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwKKyAgICAgICBqc29uX3RhYmxlICgK KyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKyAgICAgICAgICAgICAg IGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBuIGZvciBvcmRpbmFsaXR5LAorICAg ICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVt cHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScg YXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgcGxhbiAocCBvdXRlciAocGMg dW5pb24gcGIpKQorICAgICAgICkganQ7CistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikK K3NlbGVjdAorICAgICAgIGp0LioKK2Zyb20KKyAgICAgICBqc29uYl90YWJsZV90ZXN0IGp0dCwK KyAgICAgICBqc29uX3RhYmxlICgKKyAgICAgICAgICAgICAgIGp0dC5qcywnc3RyaWN0ICRbKl0n IGFzIHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICBu IGZvciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQg cGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisg ICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgcGxhbiBkZWZhdWx0IChpbm5lcikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAo cCBpbm5lciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAg IGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAg ICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisg ICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAg ICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAg ICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5z ICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGgg J3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiB1bmlvbiBwYykpCisg ICAgICAgKSBqdDsKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2VsZWN0CisgICAg ICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25f dGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAg ICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxp dHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3Qg JC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1 bHQgKGNyb3NzLCBpbm5lcikKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5l ciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25i X3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0 LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAg ICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAg IGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAg ICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBp bnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCisgICAgICAg KSBqdDsKKy0tIGRlZmF1bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisgICAgICAganQu KgorZnJvbQorICAgICAgIGpzb25iX3RhYmxlX3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUg KAorICAgICAgICAgICAgICAganR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAg ICAgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisg ICAgICAgICAgICAgICAgICAgICAgIGEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZW1wdHksCisgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypd JyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRo ICckJyApCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICBwbGFuIGRlZmF1bHQgKG91 dGVyLCBjcm9zcykKKyAgICAgICApIGp0OworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIg Y3Jvc3MgcGMpKQorc2VsZWN0CisgICAgICAganQuKgorZnJvbQorICAgICAgIGpzb25iX3RhYmxl X3Rlc3QganR0LAorICAgICAgIGpzb25fdGFibGUgKAorICAgICAgICAgICAgICAganR0LmpzLCdz dHJpY3QgJFsqXScgYXMgcAorICAgICAgICAgICAgICAgY29sdW1ucyAoCisgICAgICAgICAgICAg ICAgICAgICAgIG4gZm9yIG9yZGluYWxpdHksCisgICAgICAgICAgICAgICAgICAgICAgIGEgaW50 IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisgICAgICAgICAgICAgICAgICAg ICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0 aCAnJCcgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNb Kl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisgICAgICAgICAgICAgICApCisg ICAgICAgICAgICAgICBwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCisgICAgICAgKSBqdDsK K3NlbGVjdAorICAgICAgIGp0LiosIGIxICsgMTAwIGFzIGIKK2Zyb20KKyAgICAgICBqc29uX3Rh YmxlIChqc29uYgorICAgICAgICAgICAgICAgJ1sKKyAgICAgICAgICAgICAgICAgICAgICAgeyJh IjogIDEsICAiYiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjogWzEsIG51bGws IDJdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgeyJhIjogIDIsICAiYiI6IFsxMCwgMjBdLCAi YyI6IFsxLCBudWxsLCAyXX0sCisgICAgICAgICAgICAgICAgICAgICAgIHsieCI6ICIzIiwgImIi OiBbMTEsIDIyLCAzMywgNDRdfQorICAgICAgICAgICAgICAgIF0nLAorICAgICAgICAgICAgICAg JyRbKl0nIGFzIHAKKyAgICAgICAgICAgICAgIGNvbHVtbnMgKAorICAgICAgICAgICAgICAgICAg ICAgICBuIGZvciBvcmRpbmFsaXR5LAorICAgICAgICAgICAgICAgICAgICAgICBhIGludCBwYXRo ICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICBu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGIxIGNv bHVtbnMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjEgaW50IHBh dGggJyQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyB0 ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5lc3RlZCBwYXRoICdzdHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYzEgaW50IHBhdGggJyQnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAtLXBsYW4gZGVmYXVsdChvdXRlciwgY3Jvc3MpCisgICAg ICAgICAgICAgICBwbGFuKHAgb3V0ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBw YzEpKSkKKyAgICAgICApIGp0OwogCiAtLSBQQVNTSU5HIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRv IG5lc3RlZCBwYXRocyBhbmQgdGhlaXIgY29sdW1ucycgcGF0aHMKIFNFTEVDVCAqCkBAIC00NTAs OCArNzc4LDk3IEBAIFNFTEVDVCAqIEZST00KIAkJKQogCSk7CiAKK0NSRUFURSBET01BSU4ganNv bmJfdGVzdF9kb21haW4gQVMgdGV4dCBDSEVDSyAodmFsdWUgPD4gJ2ZvbycpOwogXHN2IGpzb25i X3RhYmxlX3ZpZXdfbmVzdGVkCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5qc29uYl90 YWJsZV92aWV3IEFTCisgU0VMRUNUIGlkLAorICAgICJpbnQiLAorICAgIHRleHQsCisgICAgImNo YXIoNCkiLAorICAgIGJvb2wsCisgICAgIm51bWVyaWMiLAorICAgIGRvbWFpbiwKKyAgICBqcywK KyAgICBqYiwKKyAgICBqc3QsCisgICAganNjLAorICAgIGpzdiwKKyAgICBqc2IsCisgICAganNi cSwKKyAgICBhYWEsCisgICAgYWFhMSwKKyAgICBleGlzdHMxLAorICAgIGV4aXN0czIsCisgICAg ZXhpc3RzMywKKyAgICBqczIsCisgICAganNiMncsCisgICAganNiMnEsCisgICAgaWEsCisgICAg dGEsCisgICAgamJhLAorICAgIGExLAorICAgIGIxLAorICAgIGExMSwKKyAgICBhMjEsCisgICAg YTIyCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsq XScgQVMganNvbl90YWJsZV9wYXRoXzEKKyAgICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAg ICAgICAxICsgMiBBUyBhLAorICAgICAgICAgICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIK KyAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgIGlkIEZPUiBPUkRJTkFMSVRZ LAorICAgICAgICAgICAgICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAgdGV4dCB0ZXh0IFBBVEggJyQnLAorICAgICAgICAgICAgICAgICJjaGFyKDQpIiBjaGFyYWN0 ZXIoNCkgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgYm9vbCBib29sZWFuIFBBVEggJyQnLAor ICAgICAgICAgICAgICAgICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorICAgICAgICAgICAg ICAgIGRvbWFpbiBqc29uYl90ZXN0X2RvbWFpbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq cyBqc29uIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpiIGpzb25iIFBBVEggJyQnLAorICAg ICAgICAgICAgICAgIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAgICAgICAg ICAgIGpzYyBjaGFyYWN0ZXIoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcsCisgICAgICAgICAgICAg ICAganN2IGNoYXJhY3RlciB2YXJ5aW5nKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLAorICAgICAg ICAgICAgICAgIGpzYiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc2JxIGpzb25i IFBBVEggJyQnIE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGFhYSBpbnRlZ2VyIFBBVEgg JyQuImFhYSInLAorICAgICAgICAgICAgICAgIGFhYTEgaW50ZWdlciBQQVRIICckLiJhYWEiJywK KyAgICAgICAgICAgICAgICBleGlzdHMxIGJvb2xlYW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAor ICAgICAgICAgICAgICAgIGV4aXN0czIgaW50ZWdlciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJV RSBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBleGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0 cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SLAorICAgICAgICAgICAgICAgIGpzMiBqc29u IFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEggVU5D T05ESVRJT05BTCBXUkFQUEVSLAorICAgICAgICAgICAgICAgIGpzYjJxIGpzb25iIFBBVEggJyQn IE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGlhIGludGVnZXJbXSBQQVRIICckJywKKyAg ICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgamJhIGpz b25iW10gUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAx CisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIGExIGludGVn ZXIgUEFUSCAnJC4iYTEiJywKKyAgICAgICAgICAgICAgICAgICAgYjEgdGV4dCBQQVRIICckLiJi MSInLAorICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiCisg ICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTEx IHRleHQgUEFUSCAnJC4iYTExIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICksCisgICAgICAgICAgICAgICAgTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyCisgICAgICAg ICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgIE5FU1RFRCBQQVRIICckWypd JyBBUyAicDI6MSIKKyAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAgICAg ICAgICAgICAgICBhMjEgdGV4dCBQQVRIICckLiJhMjEiJworICAgICAgICAgICAgICAgICAgICAp LAorICAgICAgICAgICAgICAgICAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyCisgICAgICAg ICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAgICAgICAgICAgICAgYTIyIHRleHQg UEFUSCAnJC4iYTIyIicKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8xIE9VVEVS ICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIgT1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkp CisgICAgICAgICk7CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00g anNvbmJfdGFibGVfdmlldzsKK0RST1AgVklFVyBqc29uYl90YWJsZV92aWV3OwogRFJPUCBWSUVX IGpzb25iX3RhYmxlX3ZpZXdfbmVzdGVkOworRFJPUCBET01BSU4ganNvbmJfdGVzdF9kb21haW47 CiAKIENSRUFURSBUQUJMRSBzIChqcyBqc29uYik7CiBJTlNFUlQgSU5UTyBzIFZBTFVFUwotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000491fab0655cf5d0e Content-Type: application/octet-stream; name="v24-0003-JSON_TABLE-PLAN-Clause-3-3.patch" Content-Disposition: attachment; filename="v24-0003-JSON_TABLE-PLAN-Clause-3-3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr6tsflk2 RnJvbSA0ZDNiZTAyOTM5NmVhODVmNjI2MGVhOWY5Y2Y1MzhhYjYyMTQ1Y2YxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZAcG9zdGdyZXNw cm8ucnU+CkRhdGU6IEZyaSwgMTUgTWF5IDIwMjYgMTQ6NDE6MTcgKzAzMDAKU3ViamVjdDogW1BB VENIIHYyNCAzLzNdIEpTT05fVEFCTEUgUExBTiBDbGF1c2UgKDMvMykKTUlNRS1WZXJzaW9uOiAx LjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgcGF0Y2ggYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBK U09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUgdXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20g bmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFsbG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGlu IHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBh bGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFs aW5nIHdpdGggc2libGluZyBvciBjaGlsZCBuZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZm aWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vzc2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5 IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFOIGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2Vy IHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRvIGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVk IHBhdGguCgpUaGUgdGhpcmQgcGF0Y2ggaW4gc2VyaWVzIHByb3ZpZGVzIGRvY3VtZW50YXRpb24g Zm9yIFBMQU4gY2xhdXNlLgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdy ZXNwcm8ucnU+CkF1dGhvcjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fldi5ydT4KQXV0aG9y OiBPbGVnIEJhcnR1bm92IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6IEFsZXhhbmRlciBL b3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3IER1bnN0YW4gPGFu ZHJld0BkdW5zbGFuZS5uZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdt YWlsLmNvbT4KQXV0aG9yOiBBbnRvbiBNZWxuaWtvdiA8YS5tZWxuaWtvdkBwb3N0Z3Jlc3Byby5y dT4KQXV0aG9yOiBOaWtpdGEgTWFsYWtob3YgPG4ubWFsYWtob3ZAcG9zdGdyZXNwcm8ucnU+CgpS ZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAoaW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVzIEZy ZXVuZCwgQWxleGFuZGVyCktvcm90a292LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAsIEVy aWsgUmlqa2VycywgWmlob25nIFl1LApIaW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0YWZz c29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2YXJvIEhlcnJlcmEsCmppYW4gaGUKCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRi QHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYy MzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFwMy5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFhNjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBv c3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUU0WFRk ZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1haWwuZ21haWwuY29tCi0t LQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1qc29uLnNnbWwgfCAxNzAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtanNvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1qc29uLnNnbWwKaW5kZXggM2Q5N2UyYjUzNzUuLmQ2 MTE0ZTk3MzQxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWpzb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWpzb24uc2dtbApAQCAtMzY2Myw2ICszNjYzLDEx IEBAIEpTT05fVEFCTEUgKAogICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4gQVMgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25h bD4gPG9wdGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4g QVMgPHJlcGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwv b3B0aW9uYWw+IDwvb3B0aW9uYWw+CiAgICAgQ09MVU1OUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIC4u Ljwvb3B0aW9uYWw+ICkKICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+ IHwgPGxpdGVyYWw+RU1QVFk8L2xpdGVyYWw+IDxvcHRpb25hbD5BUlJBWTwvb3B0aW9uYWw+fSA8 bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgICA8b3B0aW9uYWw+Cisg ICAgICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJsZV9w bGFuPC9yZXBsYWNlYWJsZT4gKSB8CisgICAgICAgIFBMQU4gREVGQVVMVCAoIHsgSU5ORVIgfCBP VVRFUiB9IDxvcHRpb25hbD4gLCB7IENST1NTIHwgVU5JT04gfSA8L29wdGlvbmFsPgorICAgICAg ICAgICAgICAgICAgICAgfCB7IENST1NTIHwgVU5JT04gfSA8b3B0aW9uYWw+ICwgeyBJTk5FUiB8 IE9VVEVSIH0gPC9vcHRpb25hbD4gKQorICAgIDwvb3B0aW9uYWw+CiApCiAKIDxwaHJhc2U+CkBA IC0zNjc5LDYgKzM2ODQsMTYgQEAgd2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gaXM6CiAgIHwgPHJlcGxhY2VhYmxlPm5h bWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IEVYSVNUUyA8 b3B0aW9uYWw+IFBBVEggPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IDwvb3B0aW9uYWw+CiAgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRSVUUgfCBGQUxTRSB8 IFVOS05PV04gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgogICB8IE5FU1RFRCA8b3B0aW9uYWw+IFBB VEggPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IDxvcHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4g PC9vcHRpb25hbD4gQ09MVU1OUyAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX2NvbHVtbjwvcmVw bGFjZWFibGU+IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9uYWw+ICkKKzxwaHJhc2U+Cis8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gaXM6Cis8L3BocmFzZT4KKyAgICA8 cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IHsgT1VU RVIgfCBJTk5FUiB9IDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFj ZWFibGU+IDwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmlt YXJ5PC9yZXBsYWNlYWJsZT4geyBVTklPTiA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3By aW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4uLi48L29wdGlvbmFsPgorICB8IDxyZXBs YWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFyeTwvcmVwbGFjZWFibGU+IHsgQ1JPU1MgPHJl cGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9u YWw+Li4uPC9vcHRpb25hbD4KKzxwaHJhc2U+Cis8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFu X3ByaW1hcnk8L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBsYWNlYWJsZT5q c29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IHwgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9w bGFuPC9yZXBsYWNlYWJsZT4gKQogPC9zeW5vcHNpcz4KIAogICA8cGFyYT4KQEAgLTM4NDIsNiAr Mzg1NywxMSBAQCB3aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPiBpczoKICAgICAgaW4gYSBzaW5nbGUgZnVuY3Rpb24gaW52 b2NhdGlvbiByYXRoZXIgdGhhbiBjaGFpbmluZyBzZXZlcmFsCiAgICAgIDxmdW5jdGlvbj5KU09O X1RBQkxFPC9mdW5jdGlvbj4gZXhwcmVzc2lvbnMgaW4gYW4gU1FMIHN0YXRlbWVudC4KICAgICA8 L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgWW91IGNhbiB1c2UgdGhlIDxsaXRlcmFsPlBMQU48 L2xpdGVyYWw+IGNsYXVzZSB0byBkZWZpbmUgaG93CisgICAgIHRvIGpvaW4gdGhlIGNvbHVtbnMg cmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IGNsYXVzZXMuCisgICAg PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJpYWJs ZWxpc3Q+CkBAIC0zODY2LDkgKzM4ODYsMTIxIEBAIHdoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVtbjwvcmVwbGFjZWFibGU+IGlzOgogCiAgICAgPHBh cmE+CiAgICAgIFRoZSBvcHRpb25hbCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25hbWU8L3JlcGxh Y2VhYmxlPiBzZXJ2ZXMgYXMgYW4KLSAgICAgaWRlbnRpZmllciBvZiB0aGUgcHJvdmlkZWQgPHJl cGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+LgotICAgICBUaGUgbmFtZSBt dXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5hbWVzLgorICAgICBp ZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmlj YXRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhlIHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBh bmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5hbWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8 bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UsIHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVz CisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNsdWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBFYWNo IHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAgIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFs PiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRl cmFsPlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFj ZWFibGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAg IERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVE IFBBVEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMgdG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisg ICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUbyBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQv Y2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVzZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJs ZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5F UjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorCisgICAgPHBhcmE+Cisg ICAgIFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9saXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50 IHJvdworICAgICBpcyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZl IGFueSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpvaW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkg PGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxsaXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0 ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cKKyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGlu dG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMgbm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAg ICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFU SDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMKKyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hp bGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICB2YWx1ZXMgYXJlIG1pc3Npbmcu CisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlv biBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKyAgICAgPHBhcmE+CisgICAgIFRvIGpvaW4gc2libGluZyBjb2x1bW5zLCB5b3Ug Y2FuIHVzZToKICAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPgorICAgIDwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJhdGUgb25lIHJvdyBm b3IgZWFjaCB2YWx1ZSBwcm9kdWNlZCBieSBlYWNoIG9mIHRoZSBzaWJsaW5nCisgICAgIGNvbHVt bnMuIFRoZSBjb2x1bW5zIGZyb20gdGhlIG90aGVyIHNpYmxpbmdzIGFyZSBzZXQgdG8gbnVsbC4K KyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgb3B0aW9u IGZvciBqb2luaW5nIHNpYmxpbmcgY29sdW1ucy4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgor ICAgICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorCisgICAgPHBhcmE+CisgICAgIEdlbmVyYXRlIG9uZSByb3cgZm9yIGVhY2ggY29tYmluYXRp b24gb2YgdmFsdWVzIGZyb20gdGhlIHNpYmxpbmcgY29sdW1ucy4KKyAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgIDwvdmFyaWFibGVsaXN0PgorCisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+ICggPGxpdGVy YWw+PHJlcGxhY2VhYmxlPk9VVEVSIHwgSU5ORVI8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCA8 cmVwbGFjZWFibGU+VU5JT04gfCBDUk9TUzwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+PC9saXRl cmFsPiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgdGVybXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGluIHJldmVyc2Ugb3JkZXIuIFRoZQorICAg ICAgPGxpdGVyYWw+SU5ORVI8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFsPiBv cHRpb24gZGVmaW5lcyB0aGUKKyAgICAgIGpvaW5pbmcgcGxhbiBmb3IgcGFyZW50L2NoaWxkIGNv bHVtbnMsIHdoaWxlIDxsaXRlcmFsPlVOSU9OPC9saXRlcmFsPiBvcgorICAgICAgPGxpdGVyYWw+ Q1JPU1M8L2xpdGVyYWw+IGFmZmVjdHMgam9pbnMgb2Ygc2libGluZyBjb2x1bW5zLiBUaGlzIGZv cm0KKyAgICAgIG9mIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+IG92ZXJyaWRlcyB0aGUgZGVmYXVs dCBwbGFuIGZvcgorICAgICAgYWxsIGNvbHVtbnMgYXQgb25jZS4gRXZlbiB0aG91Z2ggdGhlIHBh dGggbmFtZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUKKyAgICAgIDxsaXRlcmFsPlBMQU4gREVG QVVMVDwvbGl0ZXJhbD4gZm9ybSwgdG8gY29uZm9ybSB0byB0aGUgU1FML0pTT04gc3RhbmRhcmQK KyAgICAgIHRoZXkgbXVzdCBiZSBwcm92aWRlZCBmb3IgYWxsIHRoZSBwYXRocyBpZiB0aGUgPGxp dGVyYWw+UExBTjwvbGl0ZXJhbD4KKyAgICAgIGNsYXVzZSBpcyB1c2VkLgorICAgICA8L3BhcmE+ CisgICAgIDxwYXJhPgorICAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiBpcyBz aW1wbGVyIHRoYW4gc3BlY2lmeWluZyBhIGNvbXBsZXRlCisgICAgICA8bGl0ZXJhbD5QTEFOPC9s aXRlcmFsPiwgYW5kIGlzIG9mdGVuIGFsbCB0aGF0IGlzIHJlcXVpcmVkIHRvIGdldCB0aGUgZGVz aXJlZAorICAgICAgb3V0cHV0LgorICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgogCkBAIC00MDgyLDUgKzQyMTQsMzkgQEAgQ09MVU1OUyAoCiA8L3NjcmVl bj4KIAogICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBGaW5kIGEgZGlyZWN0b3Ig dGhhdCBoYXMgZG9uZSBmaWxtcyBpbiB0d28gZGlmZmVyZW50IGdlbnJlczoKKzxzY3JlZW4+CitT RUxFQ1QKKyAgZGlyZWN0b3IxIEFTIGRpcmVjdG9yLCB0aXRsZTEsIGtpbmQxLCB0aXRsZTIsIGtp bmQyCitGUk9NCisgIG15X2ZpbG1zLAorICBKU09OX1RBQkxFICgganMsICckLmZhdm9yaXRlcycg QVMgZmF2cyBDT0xVTU5TICgKKyAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgZmlsbXMxIENPTFVN TlMgKAorICAgICAga2luZDEgdGV4dCBQQVRIICckLmtpbmQnLAorICAgICAgTkVTVEVEIFBBVEgg JyQuZmlsbXNbKl0nIEFTIGZpbG0xIENPTFVNTlMgKAorICAgICAgICB0aXRsZTEgdGV4dCBQQVRI ICckLnRpdGxlJywKKyAgICAgICAgZGlyZWN0b3IxIHRleHQgUEFUSCAnJC5kaXJlY3RvcicpCisg ICAgKSwKKyAgICBORVNURUQgUEFUSCAnJFsqXScgQVMgZmlsbXMyIENPTFVNTlMgKAorICAgICAg a2luZDIgdGV4dCBQQVRIICckLmtpbmQnLAorICAgICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0n IEFTIGZpbG0yIENPTFVNTlMgKAorICAgICAgICB0aXRsZTIgdGV4dCBQQVRIICckLnRpdGxlJywK KyAgICAgICAgZGlyZWN0b3IyIHRleHQgUEFUSCAnJC5kaXJlY3RvcicKKyAgICAgICkKKyAgICAp CisgICApCisgICBQTEFOIChmYXZzIE9VVEVSICgoZmlsbXMxIElOTkVSIGZpbG0xKSBDUk9TUyAo ZmlsbXMyIElOTkVSIGZpbG0yKSkpCisgICkgQVMganQKKyBXSEVSRSBraW5kMSA+IGtpbmQyIEFO RCBkaXJlY3RvcjEgPSBkaXJlY3RvcjI7CisKKyAgICAgZGlyZWN0b3IgICAgIHwgdGl0bGUxICB8 ICBraW5kMSAgIHwgdGl0bGUyIHwga2luZDIKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLQorIEFsZnJlZCBIaXRjaGNvY2sgfCBWZXJ0aWdv IHwgdGhyaWxsZXIgfCBQc3ljaG8gfCBob3Jyb3IKKygxIHJvdykKKzwvc2NyZWVuPgorICAgICA8 L3BhcmE+CisKICAgPC9zZWN0Mj4KICA8L3NlY3QxPgotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0 KQoK --000000000000491fab0655cf5d0e--