Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uOVWP-004yNH-3z for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jun 2025 05:58:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uOVWM-005pmL-0N for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jun 2025 05:58:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uOVWL-005pmD-B5 for pgsql-hackers@lists.postgresql.org; Mon, 09 Jun 2025 05:58:10 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uOVWJ-0011Tk-1p for pgsql-hackers@lists.postgresql.org; Mon, 09 Jun 2025 05:58:08 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-70e5599b795so38414337b3.3 for ; Sun, 08 Jun 2025 22:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749448687; x=1750053487; darn=lists.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=7X8cmhnTNJfR07ik/khke7i7IEn2pl1YpPJ5q3+ZOBI=; b=OIfrcjkwbF9yCsZKP+H5+q/CoRO60gKM8jod6VT9/GBGBWbBds7qBn35OfEcirzso6 qzdLq/FsMjYs9m/jjwCHs+30djFdN3EGO22uaFRn5B9WfX5uIgnHS6l3VtZJ8xLEwcBT KFHGnH1XFGX8v/rdkiZcFdAUhSmQmGne/v6Y/2xSXh9rIvabxe21SYBo61GZqXzTKyFH 6PUAAAfg+ZvKl4LO7nUvB4op7HKZTdKdJWEqlgIcYPt/eoIEQOtAP0rr6Xq0LFKlCdta RuKJxbyJD//GEQY3mWSwVQqmcnL5lYd2EWkr7FG+SkbruJIP3Nx1aJPgKZMDcGvvojW0 Tq7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749448687; x=1750053487; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7X8cmhnTNJfR07ik/khke7i7IEn2pl1YpPJ5q3+ZOBI=; b=OTgQJFiNKl0Smowg3mP8ZpvAtVe7KzG06EFWfnPuPSkg3kSKbvbtzrYUYqUjh1UBmf wcEI3uscEDAq4H3Xyzr0irNlVyAjY3NcCuQZFiTabpG7x0UMZdcrE9atJoG2QfmhOSga djQtXV/m/kAXWKymMtbeWqPcg48qIw/ZmMum31RG6HAgMACj1Btk+WZaRQO2qZddu2/J qSGqhrKnT/sOjBxuAIZTMEVI5GPrWbbWfMA31ifDDADZCfkkgDfZ47c3OvhpsWM/ykDq j4Cz/FDrbeTGU7R25LAQTaa5AlZfM+mTZ9XHpZKoOQuYXbpmVS4N7W91taYw8upXUEfj xx8A== X-Forwarded-Encrypted: i=1; AJvYcCV1s9qIl7OCrb1DMSEfiLFcpiqHHijmeoW+USj6G+YCtGDGmlj3K6wO/lfxnHijhai67LwTaornNA2iOKqJ@lists.postgresql.org X-Gm-Message-State: AOJu0Yzkj8ViKz5bKb8/56dUtHht0XOQshdwjU9LRsBsXucqAUANUVgc u5Ft8FLWxarChSfVM3xWTw5chcY682tpErhnMXTvRaZt0hLtJcC4LAz+VtaNjTKCZ+xDYwErhnw LJboeKXjodxlwfrfqVJ3c6RTFPfqtgJQ= X-Gm-Gg: ASbGncsKWvotmog8L/Bxbm1UFrah91oNijSmf7VRc4R3UY+7R0P3K4mPYITvOM07+Pr TMdap/crk2a8RznhkAgTt+YPdpGVCHAevsyzU1s4wVSD9aFKTmm9gqt9XOrMV3aVGKK9x/Q5p8W XmvNisBAD3Tp5xWnq6gNxf/hB8CRX/alGr7MCgmznTQ/l9NA== X-Google-Smtp-Source: AGHT+IGoqv8lk0WgfNBqgh1NUtDVJom1nHGbVby7uA4v+4+TvUYtCSWLcKFVQCsYHY5HPdVWdcXPEkG2uHc1Hukbmtk= X-Received: by 2002:a05:690c:6f0b:b0:6fb:a696:b23b with SMTP id 00721157ae682-710f7739ae2mr164529017b3.33.1749448686662; Sun, 08 Jun 2025 22:58:06 -0700 (PDT) MIME-Version: 1.0 References: <202505101759.6qlloepaeddl@alvherre.pgsql> In-Reply-To: From: Shlok Kyal Date: Mon, 9 Jun 2025 11:27:55 +0530 X-Gm-Features: AX0GCFuJZxgN_V6L_nmrwZOA3_vLOsHFzd1RgWoGFW4jJ5MEl0vUuOL2l7DBn8k Message-ID: Subject: Re: Restrict publishing of partitioned table with a foreign table as partition To: Ajin Cherian Cc: Amit Kapila , =?UTF-8?Q?=C3=81lvaro_Herrera?= , vignesh C , Sergey Tatarintsev , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000086264606371d4396" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000086264606371d4396 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 4 Jun 2025 at 16:12, Ajin Cherian wrote: > > On Tue, May 20, 2025 at 2:33=E2=80=AFAM Shlok Kyal wrote: > > > > This approach seems better to me. I have created a patch with the > > above approach. > > > > Thanks and Regards, > > Shlok Kyal > > Some quick comments on the patch: > 1. In doc/src/sgml/ref/create_subscription.sgml: > + has partitioned table with foreign table as partition. If this scena= rio is > + detected we ERROR is logged to the user. > + > + > > Should be: "If this scenario is detected an ERROR is logged to the > user." (remove "we"). > > In src/backend/commands/subscriptioncmds.c: > 2. The comment header: > + * This function is in charge of detecting if publisher with > + * publish_via_partition_root=3Dtrue publishes a partitioned table that = has a > + * foreign table as a partition. > > Add "and throw an error if found" at the end of that sentence to > correctly describe what the function does. > > 3. > + appendStringInfoString(&cmd, > + "SELECT DISTINCT P.pubname AS pubname " > + "from pg_catalog.pg_publication p, LATERAL " > + "pg_get_publication_tables(p.pubname) gpt, LA= TERAL " > + "pg_partition_tree(gpt.relid) gt JOIN > pg_catalog.pg_foreign_table ft ON " > + "ft.ftrelid =3D gt.relid WHERE p.pubviaroot > =3D true AND p.pubname IN ("); > > use FROM rather than from to maintain SQL style consistency. > > 4. > + errdetail_plural("The subscription being created on a > publication (%s) with publish_via_root_partition =3D true and contains > partitioned tables with foreign table as partition ", > + "The subscription being created on > publications (%s) with publish_via_root_partition =3D true and contains > partitioned tables with foreign table as partition ", > + list_length(publist), pubnames->data), > > I think you meant "publish_via_partition_root" here and not > "publish_via_root_partition ". > I have addressed all the comments and attached the updated patch. Thanks and Regards, Shlok Kyal --00000000000086264606371d4396 Content-Type: application/octet-stream; name="v16-0001-Restrict-publishing-of-partitioned-table-with-fo.patch" Content-Disposition: attachment; filename="v16-0001-Restrict-publishing-of-partitioned-table-with-fo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mboojljj0 RnJvbSBlM2RhZDNhYTMzYWU4MTE2YjliNjJhZTRjMTFhOWU4YTE0M2Q4Y2NhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTkgTWF5IDIwMjUgMTk6NDc6MDQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx Nl0gUmVzdHJpY3QgcHVibGlzaGluZyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24K IHRhYmxlIGFzIGl0cyBwYXJ0aXRpb24KCkxvZ2ljYWwgcmVwbGljYXRpb24gb2YgZm9yZWlnbiB0 YWJsZSBpcyBub3Qgc3VwcG9ydGVkIGFuZCB3ZSB0aHJvdyBhbgplcnJvciBpbiB0aGlzIGNhc2Uu IEJ1dCB3aGVuIHdlIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIG9uIGEgcGFydGl0aW9uZWQKdGFibGUg dGhhdCBoYXMgYSBmb3JlaWduIHRhYmxlIGFzIGl0cyBwYXJ0aXRpb24sIHRoZSBpbml0aWFsIHN5 bmMgb2YKc3VjaCB0YWJsZSBpcyBzdWNjZXNzZnVsIGFuZCB3ZSBzaG91bGQgYXZvaWQgc3VjaCBj YXNlcy4KCkN1cnJlbnQgQmVoYXZpb3VyIGluIEhFQUQsIHdoZW4gcHVibGljYXRpb24gaXMgY3Jl YXRlZDoKMS4gd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUKVGhlIHJvb3Qg dGFibGUgaXMgcHVibGlzaGVkLCBhbmQgaW5pdGlhbCBkYXRhIGZyb20gcGFydGl0aW9ucyB0aGF0 IGFyZQpmb3JlaWduIHRhYmxlcyBpcyByZXBsaWNhdGVkLgoKMi4gd2l0aCBwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdCA9IGZhbHNlIGFuZCBGT1IgQUxMIFRBQkxFUwpBbGwgbGVhZiB0YWJsZXMg ZXhjZXB0IHBhcnRpdGlvbnMgdGhhdCBhcmUgZm9yZWlnbiB0YWJsZXMgYXJlIHB1Ymxpc2hlZC4K CjMuIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSBhbmQKRk9SIFRBQkxF LyBGT1IgVEFCTEVTIElOIFNDSEVNQQpBbGwgbGVhZiB0YWJsZXMgYXJlIHB1Ymxpc2hlZCwgaW5j bHVkaW5nIGluaXRpYWwgZGF0YSBmcm9tIHBhcnRpdGlvbnMKdGhhdCBhcmUgZm9yZWlnbiB0YWJs ZXMuCgpXaXRoIHRoaXMgcGF0Y2ggd2UgaGF2ZSBmb2xsb3dpbmcgYmVoYXZpb3VyOgoxLiB3aXRo IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZQpBbiBlcnJvciBpcyB0aHJvd24gd2hl biB3ZSB0cnkgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbiAod2l0aCBjb3B5X2RhdGEgPSB0cnVlKQpv biBwdWJsaWNhdGlvbiB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiBwYXJ0aXRp b24uCldoZW4gY29weV9kYXRhID0gZmFsc2UsIHdlIGRvbm90IG5lZWQgdGhpcyBjaGVjayBhcyBp bml0aWFsIHN5bmMgaXMgbm90CnBlcmZvcm1lZC4KQWxzbyB3ZSByZXN0cmljdCBjcmVhdGluZy9h dHRhY2hpbmcgYSBmb3JlaWduIHRhYmxlIGFzIHBhcnRpdGlvbiBvZiBhCnBhcnRpdGlvbmVkIHRh YmxlIHdoaWNoIGlzIHBhcnQgb2YgYW55IHB1YmxpY2F0aW9uLgoKMi4gd2l0aCBwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlCldlIHNraXAgcHVibGlzaGluZyBwYXJ0aXRpb25zIHRo YXQgYXJlIGZvcmVpZ24gdGFibGVzLiBUaGlzIGlzIGRvbmUgYnkKYXZvaWQgYWRkaW5nIHN1Y2gg cGFydGl0aW9ucyBpbiBwZ19zdWJzY3JpcHRpb25fcmVsIGNhdGFsb2cgdGFibGUuCgpXZSBoYXZl IGludHJvZHVjZWQgdHdvIGZ1bmN0aW9ucyAnUmVsYXRpb25IYXNGb3JlaWduUGFydGl0aW9uJyBh bmQKJ2NoZWNrX3B1YmxpY2F0aW9uc19mb3JlaWduX3BhcnRzJy4gSW4gJ1JlbGF0aW9uSGFzRm9y ZWlnblBhcnRpdGlvbicgd2UgZ28KdGhyb3VnaCB0aGUgY2hpbGQgbm9kZXMgb2YgYSBwYXJ0aXRp b24gYW5kIGNoZWNrIGlmIGl0IGhhcyBhIGZvcmVpZ24KdGFibGUuIEluICdjaGVja19wdWJsaWNh dGlvbnNfZm9yZWlnbl9wYXJ0cycgd2UgY2hlY2sgaWYgYSBzdWJzY3JpcHRpb24Kd2l0aCBjb3B5 X2RhdGEgPSB0cnVlIGlzIHN1YnNjcmliaW5nIHRvIGEgcHVibGljYXRpb24gd2hpY2ggaGFzIHBh cnRpdGlvbmVkCnRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFydGl0aW9uLgotLS0K IGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgIHwgIDEwICstCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCB8ICAgNyArKwogc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgMjYgKystLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgfCAxMDEgKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAxMTAgKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgIHwgIDMyICsr KysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYyAgICAgICAgICAgICAgICB8ICA4OSArKysr KysrKysrKysrKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmggICAgICAgfCAg IDEgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5wbCAgfCAxMzkgKysrKysrKysr KysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTAwIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDY4NmRk NDQxZDAyLi40NjBhYTkyOWI3MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0yMDc5LDEwICsyMDc5LDE4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxs aXN0aXRlbT4KICAgICA8cGFyYT4KLSAgICAgUmVwbGljYXRpb24gaXMgb25seSBzdXBwb3J0ZWQg YnkgdGFibGVzLCBpbmNsdWRpbmcgcGFydGl0aW9uZWQgdGFibGVzLgorICAgICBSZXBsaWNhdGlv biBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdGFibGVzLCBpbmNsdWRpbmcgcGFydGl0aW9uZWQgdGFi bGVzLgogICAgICBBdHRlbXB0cyB0byByZXBsaWNhdGUgb3RoZXIgdHlwZXMgb2YgcmVsYXRpb25z LCBzdWNoIGFzIHZpZXdzLCBtYXRlcmlhbGl6ZWQKICAgICAgdmlld3MsIG9yIGZvcmVpZ24gdGFi bGVzLCB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KICAgICA8L3BhcmE+CisgICAgPHBhcmE+Cisg ICAgIFJlcGxpY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24gdGFibGVzLiAgV2hl biB1c2VkIGFzIHBhcnRpdGlvbnMKKyAgICAgb2YgcGFydGl0aW9uZWQgdGFibGVzLCBwdWJsaXNo aW5nIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBvbmx5IGFsbG93ZWQKKyAgICAgaWYgdGhl IDxsaXRlcmFsPnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290PC9saXRlcmFsPiBpcyBzZXQgdG8K KyAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LiAgSW4gdGhpcyBtb2RlLCBjaGFuZ2VzIHRv IGEgcGFydGl0aW9uIHRoYXQgaXMgYQorICAgICBmb3JlaWduIHRhYmxlIGFyZSBpZ25vcmVkIGZv ciB0aGUgcHVycG9zZXMgb2YgcmVwbGljYXRpb24sIGFuZCBkYXRhCisgICAgIGNvbnRhaW5lZCBp biB0aGVtIGlzIG5vdCBpbmNsdWRlZCBkdXJpbmcgaW5pdGlhbCBzeW5jaHJvbml6YXRpb24uCisg ICAgPC9wYXJhPgogICAgPC9saXN0aXRlbT4KIAogICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA1N2RlYzI4YTVkZi4uODk2MzEyMzcy NWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC01NDUs NiArNTQ1LDEzIEBAIFdIRVJFIEMucmVsbmFtZXNwYWNlID0gTi5vaWQgQU5ECiAgICAgICBQVC5w dWJuYW1lIElOICgmbHQ7cHViLW5hbWVzJmd0Oyk7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K IAorICAgPHBhcmE+CisgICAgV2hlbiB1c2luZyBhIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY29w eV9kYXRhID0gdHJ1ZSwgY29ycmVzcG9uZGluZworICAgIHB1YmxpY2F0aW9ucyBhcmUgY2hlY2tl ZCBpZiBpdCBoYXMgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlIGFuZAorICAgIGhh cyBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uLiBJZiB0 aGlzIHNjZW5hcmlvIGlzCisgICAgZGV0ZWN0ZWQgYW4gRVJST1IgaXMgbG9nZ2VkIHRvIHRoZSB1 c2VyLgorICAgPC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCBkNmY5NGRiNWQ5OS4uNTYyNTVkY2Q1Y2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTMwNCw3ICszMDQsNyBAQCBjaGVj a19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1YiwgT2lkIHJlbGlkLCBNZW1v cnlDb250ZXh0IG1jeHQsCiAKIC8qCiAgKiBHZXRzIHRoZSByZWxhdGlvbnMgYmFzZWQgb24gdGhl IHB1YmxpY2F0aW9uIHBhcnRpdGlvbiBvcHRpb24gZm9yIGEgc3BlY2lmaWVkCi0gKiByZWxhdGlv bi4KKyAqIHJlbGF0aW9uLiBGb3JlaWduIHRhYmxlcyBhcmUgbm90IGluY2x1ZGVkLgogICovCiBM aXN0ICoKIEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKQEAgLTMxMywyNSArMzEzLDIxIEBAIEdldFB1YlBh cnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCwKIAlpZiAoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFICYmCiAJCXB1Yl9wYXJ0b3B0ICE9IFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCkK IAl7Ci0JCUxpc3QJICAgKmFsbF9wYXJ0cyA9IGZpbmRfYWxsX2luaGVyaXRvcnMocmVsaWQsIE5v TG9jaywKLQkJCQkJCQkJCQkJCQlOVUxMKTsKKwkJTGlzdAkgICAqYWxsX3BhcnRzID0gZmluZF9h bGxfaW5oZXJpdG9ycyhyZWxpZCwgTm9Mb2NrLCBOVUxMKTsKIAotCQlpZiAocHViX3BhcnRvcHQg PT0gUFVCTElDQVRJT05fUEFSVF9BTEwpCi0JCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQs IGFsbF9wYXJ0cyk7Ci0JCWVsc2UgaWYgKHB1Yl9wYXJ0b3B0ID09IFBVQkxJQ0FUSU9OX1BBUlRf TEVBRikKKwkJZm9yZWFjaF9vaWQocGFydE9pZCwgYWxsX3BhcnRzKQogCQl7Ci0JCQlMaXN0Q2Vs bCAgICpsYzsKKwkJCWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocGFydE9pZCk7CiAK LQkJCWZvcmVhY2gobGMsIGFsbF9wYXJ0cykKLQkJCXsKLQkJCQlPaWQJCQlwYXJ0T2lkID0gbGZp cnN0X29pZChsYyk7CisJCQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCisJ CQkJY29udGludWU7CiAKLQkJCQlpZiAoZ2V0X3JlbF9yZWxraW5kKHBhcnRPaWQpICE9IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCQkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwg cGFydE9pZCk7Ci0JCQl9CisJCQlpZiAocHViX3BhcnRvcHQgPT0gUFVCTElDQVRJT05fUEFSVF9M RUFGICYmCisJCQkJcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQkJCWNv bnRpbnVlOworCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHBhcnRPaWQpOwogCQl9 Ci0JCWVsc2UKLQkJCUFzc2VydChmYWxzZSk7CiAJfQogCWVsc2UKIAkJcmVzdWx0ID0gbGFwcGVu ZF9vaWQocmVzdWx0LCByZWxpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmMKaW5kZXggNGFlYzczYmNjNmIuLjI1NTdiMDYzMTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jCkBAIC0xMTIsNiArMTEyLDkgQEAgc3RhdGljIExpc3QgKm1lcmdl X3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29sIGFk ZHB1YiwKIHN0YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRl cywgT2lkIHN1YmlkLCBjaGFyICpzbG90bmFtZSwgY2hhciAqZXJyKTsKIHN0YXRpYyB2b2lkIENo ZWNrQWx0ZXJTdWJPcHRpb24oU3Vic2NyaXB0aW9uICpzdWIsIGNvbnN0IGNoYXIgKm9wdGlvbiwK IAkJCQkJCQkJYm9vbCBzbG90X25lZWRzX3VwZGF0ZSwgYm9vbCBpc1RvcExldmVsKTsKK3N0YXRp YyB2b2lkIGNoZWNrX3B1YmxpY2F0aW9uc19mb3JlaWduX3BhcnRzKFdhbFJlY2VpdmVyQ29ubiAq d3Jjb25uLAorCQkJCQkJCQkJCQkgTGlzdCAqcHVibGljYXRpb25zLCBib29sIGNvcHlkYXRhLAor CQkJCQkJCQkJCQkgY2hhciAqc3VibmFtZSk7CiAKIAogLyoKQEAgLTcyMyw2ICs3MjYsOCBAQCBD cmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpzdG10LAogCQkJY2hlY2tfcHVibGljYXRpb25zKHdyY29ubiwgcHVibGljYXRpb25zKTsK IAkJCWNoZWNrX3B1YmxpY2F0aW9uc19vcmlnaW4od3Jjb25uLCBwdWJsaWNhdGlvbnMsIG9wdHMu Y29weV9kYXRhLAogCQkJCQkJCQkJICBvcHRzLm9yaWdpbiwgTlVMTCwgMCwgc3RtdC0+c3VibmFt ZSk7CisJCQljaGVja19wdWJsaWNhdGlvbnNfZm9yZWlnbl9wYXJ0cyh3cmNvbm4sIHB1YmxpY2F0 aW9ucywKKwkJCQkJCQkJCQkJIG9wdHMuY29weV9kYXRhLCBzdG10LT5zdWJuYW1lKTsKIAogCQkJ LyoKIAkJCSAqIFNldCBzeW5jIHN0YXRlIGJhc2VkIG9uIGlmIHdlIHdlcmUgYXNrZWQgdG8gZG8g ZGF0YSBjb3B5IG9yCkBAIC04ODMsNiArODg4LDggQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVz aChTdWJzY3JpcHRpb24gKnN1YiwgYm9vbCBjb3B5X2RhdGEsCiAJCWNoZWNrX3B1YmxpY2F0aW9u c19vcmlnaW4od3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucywgY29weV9kYXRhLAogCQkJCQkJCQkg IHN1Yi0+b3JpZ2luLCBzdWJyZWxfbG9jYWxfb2lkcywKIAkJCQkJCQkJICBzdWJyZWxfY291bnQs IHN1Yi0+bmFtZSk7CisJCWNoZWNrX3B1YmxpY2F0aW9uc19mb3JlaWduX3BhcnRzKHdyY29ubiwg c3ViLT5wdWJsaWNhdGlvbnMsIGNvcHlfZGF0YSwKKwkJCQkJCQkJCQkgc3ViLT5uYW1lKTsKIAog CQkvKgogCQkgKiBSZWxzIHRoYXQgd2Ugd2FudCB0byByZW1vdmUgZnJvbSBzdWJzY3JpcHRpb24g YW5kIGRyb3AgYW55IHNsb3RzCkBAIC0yNTA3LDMgKzI1MTQsOTcgQEAgZGVmR2V0U3RyZWFtaW5n TW9kZShEZWZFbGVtICpkZWYpCiAJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKIAlyZXR1cm4gTE9HSUNB TFJFUF9TVFJFQU1fT0ZGOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiB9CisKKy8qCisgKiBj aGVja19wdWJsaWNhdGlvbnNfZm9yZWlnbl9wYXJ0cworICogQ2hlY2sgaWYgdGhlIHB1YmxpY2F0 aW9ucywgb24gd2hpY2ggc3Vic2NyaWJlciBpcyBzdWJzY3JpYmluZywgcHVibGlzaGVzIGFueQor ICogcGFydGl0aW9uZWQgdGFibGUgdGhhdCBoYXMgYW4gZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFy dGl0aW9uIGFuZCBoYXMKKyAqIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IHNldCBhcyB0cnVl LiBUaGUgY2hlY2sgaXMgcGVyZm9ybWVkIG9ubHkgaWYKKyAqIGNvcHlfZGF0YSBpcyBzZXQgYXMg dHJ1ZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KKyAqCisgKiBETUwgZGF0YSBjaGFuZ2VzIGFyZSBu b3QgcHVibGlzaGVkIGZvciBkYXRhIGluIGZvcmVpZ24gdGFibGVzLAorICogYW5kIHlldCB0aGUg dGFibGVzeW5jIHdvcmtlciBpcyBub3Qgc21hcnQgZW5vdWdoIHRvIG9taXQgZGF0YSBmcm9tCisg KiBmb3JlaWduIHRhYmxlcyB3aGVuIHRoZXkgYXJlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQg dGFibGVzLiAgVG8KKyAqIGF2b2lkIHRoZSBpbmNvbnNpc3RlbmNpZXMgdGhhdCB3b3VsZCByZXN1 bHQsIHdlIGRpc2FsbG93IGZvcmVpZ24KKyAqIHRhYmxlcyBmcm9tIGJlaW5nIHB1Ymxpc2hlZCBn ZW5lcmFsbHkuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIGZvcgorICogcGFydGl0aW9uZWQgdGFi bGVzIHRvIGhhdmUgZm9yZWlnbiB0YWJsZXMgYXMgcGFydGl0aW9ucywgYW5kIHdlIHdvdWxkCisg KiBsaWtlIHRvIGFsbG93IHB1Ymxpc2hpbmcgdGhvc2UgcGFydGl0aW9uZWQgdGFibGVzIHNvIHRo YXQgdGhlIG90aGVyCisgKiBwYXJ0aXRpb25zIGFyZSByZXBsaWNhdGVkLgorICoKKyAqIFRoaXMg ZnVuY3Rpb24gaXMgaW4gY2hhcmdlIG9mIGRldGVjdGluZyBpZiBwdWJsaXNoZXIgd2l0aAorICog cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q9dHJ1ZSBwdWJsaXNoZXMgYSBwYXJ0aXRpb25lZCB0 YWJsZSB0aGF0IGhhcyBhCisgKiBmb3JlaWduIHRhYmxlIGFzIGEgcGFydGl0aW9uIGFuZCB0aHJv dyBhbiBlcnJvciBpZiBmb3VuZC4KKyAqCisgKiBXaGVuIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290IGlzIGZhbHNlLCBlYWNoIHBhcnRpdGlvbiBwdWJsaXNoZWQgZm9yCisgKiByZXBsaWNhdGlv biBpcyBsaXN0ZWQgaW5kaXZpZHVhbGx5IGluIHBnX3N1YnNjcmlwdGlvbl9yZWwsIGFuZCB3ZQor ICogZG9uJ3QgYWRkIHBhcnRpdGlvbnMgdGhhdCBhcmUgZm9yZWlnbiB0YWJsZXMsIHNvIHRoaXMg Y2hlY2sgaXMgbm90CisgKiBuZWVkZWQuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wdWJsaWNh dGlvbnNfZm9yZWlnbl9wYXJ0cyhXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGlj YXRpb25zLAorCQkJCQkJCQkgYm9vbCBjb3B5ZGF0YSwgY2hhciAqc3VibmFtZSkKK3sKKwlXYWxS Y3ZFeGVjUmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOworCVR1cGxlVGFibGVTbG90 ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzFdID0ge1RFWFRPSUR9OworCUxpc3QJICAgKnB1Ymxp c3QgPSBOSUw7CisJaW50CQkJaTsKKworCWlmICghY29weWRhdGEpCisJCXJldHVybjsKKworCWlu aXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwKKwkJCQkJ CSAgICJTRUxFQ1QgRElTVElOQ1QgUC5wdWJuYW1lIEFTIHB1Ym5hbWUgIgorCQkJCQkJICAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwLCBMQVRFUkFMICIKKwkJCQkJCSAgICJwZ19n ZXRfcHVibGljYXRpb25fdGFibGVzKHAucHVibmFtZSkgZ3B0LCBMQVRFUkFMICIKKwkJCQkJCSAg ICJwZ19wYXJ0aXRpb25fdHJlZShncHQucmVsaWQpIGd0IEpPSU4gcGdfY2F0YWxvZy5wZ19mb3Jl aWduX3RhYmxlIGZ0IE9OICIKKwkJCQkJCSAgICJmdC5mdHJlbGlkID0gZ3QucmVsaWQgV0hFUkUg cC5wdWJ2aWFyb290ID0gdHJ1ZSBBTkQgIHAucHVibmFtZSBJTiAoIik7CisKKwlHZXRQdWJsaWNh dGlvbnNTdHIocHVibGljYXRpb25zLCAmY21kLCB0cnVlKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIpXG4iKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEs IDEsIHRhYmxlUm93KTsKKwlwZnJlZShjbWQuZGF0YSk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0g V0FMUkNWX09LX1RVUExFUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0NPTk5FQ1RJT05fRkFJTFVSRSksCisJCQkJIGVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlz dCBvZiByZXBsaWNhdGVkIHRhYmxlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCXJl cy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyB0YWJsZXMuICovCisJc2xvdCA9IE1ha2VTaW5nbGVU dXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hp bGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2Us IHNsb3QpKQorCXsKKwkJY2hhcgkgICAqcHVibmFtZTsKKwkJYm9vbAkJaXNudWxsOworCisJCXB1 Ym5hbWUgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxs KSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwkJcHVi bGlzdCA9IGxpc3RfYXBwZW5kX3VuaXF1ZShwdWJsaXN0LCBtYWtlU3RyaW5nKHB1Ym5hbWUpKTsK Kwl9CisKKwlpZiAocHVibGlzdCkKKwl7CisJCVN0cmluZ0luZm8JcHVibmFtZXMgPSBtYWtlU3Ry aW5nSW5mbygpOworCisJCS8qIFByZXBhcmUgdGhlIGxpc3Qgb2YgcHVibGljYXRpb24ocykgZm9y IHdhcm5pbmcgbWVzc2FnZS4gKi8KKwkJR2V0UHVibGljYXRpb25zU3RyKHB1Ymxpc3QsIHB1Ym5h bWVzLCBmYWxzZSk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coInN1YnNjcmlwdGlvbiBc IiVzXCIgd2l0aCBjb3B5X2RhdGEgPSB0cnVlIGNhbm5vdCBzdWJzY3JpYmUgdG8gYSBwdWJsaWNh dGlvbiB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSBhbmQgcHVibGlzaGVz IHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBwYXJ0aXRpb24iLAorCQkJ CQkgICBzdWJuYW1lKSwKKwkJCQllcnJkZXRhaWxfcGx1cmFsKCJUaGUgc3Vic2NyaXB0aW9uIGJl aW5nIGNyZWF0ZWQgb24gYSBwdWJsaWNhdGlvbiAoJXMpIHdpdGggcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlIGFuZCBjb250YWlucyBwYXJ0aXRpb25lZCB0YWJsZXMgd2l0aCBmb3Jl aWduIHRhYmxlIGFzIHBhcnRpdGlvbiAiLAorCQkJCQkJCQkgIlRoZSBzdWJzY3JpcHRpb24gYmVp bmcgY3JlYXRlZCBvbiBwdWJsaWNhdGlvbnMgKCVzKSB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290ID0gdHJ1ZSBhbmQgY29udGFpbnMgcGFydGl0aW9uZWQgdGFibGVzIHdpdGggZm9yZWln biB0YWJsZSBhcyBwYXJ0aXRpb24gIiwKKwkJCQkJCQkJIGxpc3RfbGVuZ3RoKHB1Ymxpc3QpLCBw dWJuYW1lcy0+ZGF0YSksCisJCQkJZXJyaGludCgiRHJvcCB0aGUgZm9yZWlnbiB0YWJsZSBmcm9t IHRoZSBwdWJsaWNhdGlvbiBvciBzZXQgcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxz ZSBvbiBwdWJsaWNhdGlvbiBvciBzZXQgY29weV9kYXRhID0gZmFsc2UuIikpOworCX0KKworCUV4 ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0 KHJlcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGVhOTY5NDdkODEzLi4wZjdm MWJkNGI0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTExMzMsNiArMTEzMyw1MiBA QCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25l cklkLAogCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IHBhcnRpdGlvbmVkIiwKIAkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQpKSkpOwogCisJCS8qCisJCSAqIElmIHdlJ3Jl IGNyZWF0aW5nIGEgcGFydGl0aW9uIHRoYXQncyBhIGZvcmVpZ24gdGFibGUsIHZlcmlmeSB0aGF0 CisJCSAqIHRoZSBwYXJlbnQgdGFibGUgaXMgbm90IGluIGEgcHVibGljYXRpb24gd2l0aAorCQkg KiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBlbmFibGVkLgorCQkgKi8KKwkJaWYgKHJlbC0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJeworCQkJT2lkCQkJ c2NoZW1haWQ7CisJCQlMaXN0CSAgICpwdWJvaWRzOworCQkJTGlzdAkgICAqYW5jZXN0b3JzOwor CisJCQkvKiBTdGFydCB3aXRoIHB1YmxpY2F0aW9ucyBvZiBhbGwgdGFibGVzICovCisJCQlwdWJv aWRzID0gR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCk7CisKKwkJCS8qIGNhcHR1cmUgYWxsIHB1 YmxpY2F0aW9ucyB0aGF0IGluY2x1ZGUgdGhpcyByZWxhdGlvbiBkaXJlY3RseSAqLworCQkJcHVi b2lkcyA9IGxpc3RfY29uY2F0KHB1Ym9pZHMsIEdldFJlbGF0aW9uUHVibGljYXRpb25zKHBhcmVu dC0+cmRfaWQpKTsKKwkJCXNjaGVtYWlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocGFyZW50KTsK KwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdChwdWJvaWRzLCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMo c2NoZW1haWQpKTsKKworCQkJLyogYW5kIGRvIHRoZSBzYW1lIGZvciBpdHMgYW5jZXN0b3JzLCBp ZiBhbnkgKi8KKwkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHBhcmVudC0+ cmRfaWQpOworCQkJZm9yZWFjaF9vaWQoYW5jZXN0b3IsIGFuY2VzdG9ycykKKwkJCXsKKwkJCQlw dWJvaWRzID0gbGlzdF9jb25jYXQocHVib2lkcywgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5j ZXN0b3IpKTsKKwkJCQlzY2hlbWFpZCA9IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKKwkJ CQlwdWJvaWRzID0gbGlzdF9jb25jYXQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNj aGVtYWlkKSk7CisJCQl9CisKKwkJCS8qIENoZWNrIHRoZSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCBiaXQgZm9yIGVhY2ggb2YgdGhvc2UgKi8KKwkJCWxpc3Rfc29ydChwdWJvaWRzLCBsaXN0 X29pZF9jbXApOworCQkJbGlzdF9kZWR1cGxpY2F0ZV9vaWQocHVib2lkcyk7CisJCQlmb3JlYWNo X29pZChwdWJvaWQsIHB1Ym9pZHMpCisJCQl7CisJCQkJUHVibGljYXRpb24gKnB1YiA9IEdldFB1 YmxpY2F0aW9uKHB1Ym9pZCk7CisKKwkJCQlpZiAocHViLT5wdWJ2aWFyb290KQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJ CQkJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGZvcmVpZ24gdGFibGUgXCIlc1wiIGFzIGEgcGFy dGl0aW9uIG9mIFwiJXNcIiIsCisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudCkpLAorCQkJCQkJCWVycmRldGFpbCgi UGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIGlzIHB1Ymxpc2hlZCB3aXRoIG9wdGlvbiBcIiVzXCIg aW4gcHVibGljYXRpb24gXCIlc1wiLiIsCisJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBhcmVudCksCisJCQkJCQkJCQkgICJwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCIsIHB1 Yi0+bmFtZSkpOworCQkJfQorCQl9CisKIAkJLyoKIAkJICogVGhlIHBhcnRpdGlvbiBjb25zdHJh aW50IG9mIHRoZSBkZWZhdWx0IHBhcnRpdGlvbiBkZXBlbmRzIG9uIHRoZQogCQkgKiBwYXJ0aXRp b24gYm91bmRzIG9mIGV2ZXJ5IG90aGVyIHBhcnRpdGlvbi4gSXQgaXMgcG9zc2libGUgdGhhdApA QCAtMjAzMTcsNiArMjAzNjMsNzAgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1zZygiY2Fubm90IGF0dGFjaCB0ZW1wb3Jh cnkgcmVsYXRpb24gb2YgYW5vdGhlciBzZXNzaW9uIGFzIHBhcnRpdGlvbiIpKSk7CiAKKwkvKgor CSAqIElmIHRoZSByZWxhdGlvbiB0byBhdHRhY2ggaXMgYSBmb3JlaWduIHRhYmxlLCBvciBhIHBh cnRpdGlvbmVkIHRhYmxlCisJICogdGhhdCBjb250YWlucyBhIGZvcmVpZ24gdGFibGUgYXMgcGFy dGl0aW9uLCB0aGVuIHZlcmlmeSB0aGF0IHRoZSBwYXJlbnQKKwkgKiB0YWJsZSBpcyBub3QgaW4g YSBwdWJsaWNhdGlvbiB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGVuYWJsZWQuCisJ ICovCisJaWYgKGF0dGFjaHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9U QUJMRSB8fAorCQkoYXR0YWNocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSAmJgorCQkgUmVsYXRpb25IYXNGb3JlaWduUGFydGl0aW9uKGF0dGFjaHJlbCkp KQorCXsKKwkJT2lkCQkJc2NoZW1haWQ7CisJCUxpc3QJICAgKnB1Ym9pZHM7CisJCUxpc3QJICAg KmFuY2VzdG9yczsKKworCQkvKiBTdGFydCB3aXRoIHB1YmxpY2F0aW9ucyBvZiBhbGwgdGFibGVz ICovCisJCXB1Ym9pZHMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKTsKKworCQkvKiBjYXB0 dXJlIGFsbCBwdWJsaWNhdGlvbnMgdGhhdCBpbmNsdWRlIHRoaXMgcmVsYXRpb24gZGlyZWN0bHkg Ki8KKwkJcHVib2lkcyA9IGxpc3RfY29uY2F0KHB1Ym9pZHMsIEdldFJlbGF0aW9uUHVibGljYXRp b25zKHJlbC0+cmRfaWQpKTsKKwkJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwp OworCQlwdWJvaWRzID0gbGlzdF9jb25jYXQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25z KHNjaGVtYWlkKSk7CisKKwkJLyogYW5kIGRvIHRoZSBzYW1lIGZvciBpdHMgYW5jZXN0b3JzLCBp ZiBhbnkgKi8KKwkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsLT5yZF9p ZCk7CisJCWZvcmVhY2hfb2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMpCisJCXsKKwkJCXB1Ym9pZHMg PSBsaXN0X2NvbmNhdChwdWJvaWRzLCBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3Rvcikp OworCQkJc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7CisJCQlwdWJvaWRz ID0gbGlzdF9jb25jYXQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7 CisJCX0KKworCQkvKiBOb3cgY2hlY2sgdGhlIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290IGJp dCBmb3IgZWFjaCBvZiB0aG9zZSAqLworCQlsaXN0X3NvcnQocHVib2lkcywgbGlzdF9vaWRfY21w KTsKKwkJbGlzdF9kZWR1cGxpY2F0ZV9vaWQocHVib2lkcyk7CisJCWZvcmVhY2hfb2lkKHB1Ym9p ZCwgcHVib2lkcykKKwkJeworCQkJUHVibGljYXRpb24gKnB1YjsKKworCQkJcHViID0gR2V0UHVi bGljYXRpb24ocHVib2lkKTsKKwkJCWlmIChwdWItPnB1YnZpYXJvb3QpCisJCQl7CisJCQkJaWYg KGF0dGFjaHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgYXR0YWNoIGZvcmVpZ24gdGFibGUgXCIlc1wi IHRvIHBhcnRpdGlvbiB0YWJsZSBcIiVzXCIiLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoYXR0YWNocmVsKSwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp LAorCQkJCQkJCSBlcnJkZXRhaWwoIlBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiBpcyBwdWJsaXNo ZWQgd2l0aCBvcHRpb24gXCIlc1wiIGluIHB1YmxpY2F0aW9uIFwiJXNcIi4iLAorCQkJCQkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJCSAgICJwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCIsCisJCQkJCQkJCQkgICBwdWItPm5hbWUpKSk7CisJCQkJZWxzZQor CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNU X1RZUEUpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBhdHRhY2ggdGFibGUgXCIlc1wiIHdpdGgg YSBwYXJ0aXRpb24gdGhhdCdzIGEgZm9yZWlnbiB0YWJsZSB0byBwYXJ0aXRpb24gdGFibGUgXCIl c1wiIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGF0dGFjaHJlbCksCisJCQkJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJCQkgZXJyZGV0YWlsKCJQ YXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIgaXMgcHVibGlzaGVkIHdpdGggb3B0aW9uIFwiJXNcIiBp biBwdWJsaWNhdGlvbiBcIiVzXCIuIiwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCksCisJCQkJCQkJCQkgICAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiLAorCQkJ CQkJCQkJICAgcHViLT5uYW1lKSkpOworCQkJfQorCQl9CisJfQorCiAJLyoKIAkgKiBDaGVjayBp ZiBhdHRhY2hyZWwgaGFzIGFueSBpZGVudGl0eSBjb2x1bW5zIG9yIGFueSBjb2x1bW5zIHRoYXQg YXJlbid0CiAJICogaW4gdGhlIHBhcmVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRp dGlvbmluZy9wYXJ0ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMK aW5kZXggMzI4YjRkNDUwZTQuLjU2ZDE3NjYyNWU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dGRlc2MuYwpAQCAtNTA2LDMgKzUwNiwzNSBAQCBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVz YyhQYXJ0aXRpb25EZXNjIHBhcnRkZXNjKQogCiAJcmV0dXJuIEludmFsaWRPaWQ7CiB9CisKKy8q CisgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gcGFydGl0aW9uZWQgdGFibGUgdWx0aW1hdGVs eSBjb250YWlucyBhCisgKiBwYXJ0aXRpb24gdGhhdCBpcyBhIGZvcmVpZ24gdGFibGUsIGZhbHNl IG90aGVyd2lzZS4KKyAqLworYm9vbAorUmVsYXRpb25IYXNGb3JlaWduUGFydGl0aW9uKFJlbGF0 aW9uIHJlbCkKK3sKKwlQYXJ0aXRpb25EZXNjIHBkID0gUmVsYXRpb25HZXRQYXJ0aXRpb25EZXNj KHJlbCwgdHJ1ZSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHBkLT5ucGFydHM7IGkrKykKKwl7 CisJCWlmIChwZC0+aXNfbGVhZltpXSkKKwkJeworCQkJaWYgKGdldF9yZWxfcmVsa2luZChwZC0+ b2lkc1tpXSkgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKQorCQkJCXJldHVybiB0cnVlOworCQl9 CisJCWVsc2UKKwkJeworCQkJUmVsYXRpb24JcGFydDsKKwkJCWJvb2wJCXJldDsKKworCQkJcGFy dCA9IHRhYmxlX29wZW4ocGQtPm9pZHNbaV0sIE5vTG9jayk7CisJCQlyZXQgPSBSZWxhdGlvbkhh c0ZvcmVpZ25QYXJ0aXRpb24ocGFydCk7CisJCQl0YWJsZV9jbG9zZShwYXJ0LCBOb0xvY2spOwor CQkJaWYgKHJldCkKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9jaGVjay5jIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL2NoZWNrLmMKaW5kZXggOTQwZmM3N2ZjMmUuLjJjZjQwN2EzMTY5IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3VwZ3JhZGUvY2hlY2suYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvY2hl Y2suYwpAQCAtMzEsNiArMzEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19uZXdfY2x1c3Rlcl9sb2dp Y2FsX3JlcGxpY2F0aW9uX3Nsb3RzKHZvaWQpOwogc3RhdGljIHZvaWQgY2hlY2tfbmV3X2NsdXN0 ZXJfc3Vic2NyaXB0aW9uX2NvbmZpZ3VyYXRpb24odm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19v bGRfY2x1c3Rlcl9mb3JfdmFsaWRfc2xvdHModm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19vbGRf Y2x1c3Rlcl9zdWJzY3JpcHRpb25fc3RhdGUodm9pZCk7CitzdGF0aWMgdm9pZCBjaGVja19mb3Jf dmFsaWRfcHVibGljYXRpb24oQ2x1c3RlckluZm8gKmNsdXN0ZXIpOwogCiAvKgogICogRGF0YVR5 cGVzVXNhZ2VDaGVja3MgLSBkZWZpbml0aW9ucyBvZiBkYXRhIHR5cGUgY2hlY2tzIGZvciB0aGUg b2xkIGNsdXN0ZXIKQEAgLTYzMyw2ICs2MzQsOCBAQCBjaGVja19hbmRfZHVtcF9vbGRfY2x1c3Rl cih2b2lkKQogCQljaGVja19vbGRfY2x1c3Rlcl9zdWJzY3JpcHRpb25fc3RhdGUoKTsKIAl9CiAK KwljaGVja19mb3JfdmFsaWRfcHVibGljYXRpb24oJm9sZF9jbHVzdGVyKTsKKwogCWNoZWNrX2Zv cl9kYXRhX3R5cGVzX3VzYWdlKCZvbGRfY2x1c3Rlcik7CiAKIAkvKgpAQCAtMjI3MiwzICsyMjc1 LDg5IEBAIGNoZWNrX29sZF9jbHVzdGVyX3N1YnNjcmlwdGlvbl9zdGF0ZSh2b2lkKQogCWVsc2UK IAkJY2hlY2tfb2soKTsKIH0KKworLyoKKyAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcm9jZXNz aW5nIHJlc3VsdHMgb2YgcXVlcnkgZm9yCisgKiBjaGVja19mb3JfdmFsaWRfcHVibGljYXRpb24o KSdzIFVwZ3JhZGVUYXNrLiAgSWYgdGhlIHF1ZXJ5IHJldHVybmVkCisgKiBhbnkgcm93cyAoaS5l LiwgdGhlIGNoZWNrIGZhaWxlZCksIHdyaXRlIHRoZSBkZXRhaWxzIHRvIHRoZSByZXBvcnQgZmls ZS4KKyAqLworc3RhdGljIHZvaWQKK3Byb2Nlc3NfcHViX2NoZWNrKERiSW5mbyAqZGJpbmZvLCBQ R3Jlc3VsdCAqcmVzLCB2b2lkICphcmcpCit7CisJVXBncmFkZVRhc2tSZXBvcnQgKnJlcG9ydCA9 IChVcGdyYWRlVGFza1JlcG9ydCAqKSBhcmc7CisJaW50CQkJbnR1cHMgPSBQUW50dXBsZXMocmVz KTsKKwlpbnQJCQlpX3B1Ym9pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKKwlpbnQJCQlpX3B1 YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVidmlhcm9vdCIpOworCWludAkJCWlfcHViYWxs dGFibGVzID0gUFFmbnVtYmVyKHJlcywgInB1YmFsbHRhYmxlcyIpOworCWludAkJCWlfZnRyZWxp ZCA9IFBRZm51bWJlcihyZXMsICJmdHJlbGlkIik7CisKKwlpZiAobnR1cHMgPT0gMCkKKwkJcmV0 dXJuOworCisJaWYgKHJlcG9ydC0+ZmlsZSA9PSBOVUxMICYmCisJCShyZXBvcnQtPmZpbGUgPSBm b3Blbl9wcml2KHJlcG9ydC0+cGF0aCwgInciKSkgPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxk IG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHJlcG9ydC0+cGF0aCk7CisKKwlmcHJpbnRmKHJl cG9ydC0+ZmlsZSwgIkluIGRhdGFiYXNlOiAlc1xuIiwgZGJpbmZvLT5kYl9uYW1lKTsKKworCWZv ciAoaW50IHJvd25vID0gMDsgcm93bm8gPCBudHVwczsgcm93bm8rKykKKwkJZnByaW50ZihyZXBv cnQtPmZpbGUsICJUaGUgcHVibGljYXRpb24gd2l0aCBvaWQ6ICVzLCBoYXMgZm9yZWlnbiB0YWJs ZSB3aXRoIG9pZDogJXMgYXMgcGFydGl0aW9uIG9mIGEgcHVibGlzaGVkIHRhYmxlLiAiCisJCQkJ IlB1YmxpY2F0aW9uIGlzIHB1Ymxpc2hlZCB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gJXMgYW5kIGl0IGlzIHB1Ymxpc2hlZCAlcy5cbiIsCisJCQkJUFFnZXR2YWx1ZShyZXMsIHJv d25vLCBpX3B1Ym9pZCksCisJCQkJUFFnZXR2YWx1ZShyZXMsIHJvd25vLCBpX2Z0cmVsaWQpLAor CQkJCXN0cmNtcChQUWdldHZhbHVlKHJlcywgcm93bm8sIGlfcHVidmlhcm9vdCksICJmIikgPyAi dHJ1ZSIgOiAiZmFsc2UiLAorCQkJCXN0cmNtcChQUWdldHZhbHVlKHJlcywgcm93bm8sIGlfcHVi YWxsdGFibGVzKSwgImYiKSA/ICJGT1IgQUxMIFRBQkxFUyIgOiAiRk9SIFRBQkxFL0ZPUiBUQUJM RVMgSU4gU0NIRU1BIik7Cit9CisKKy8qCisgKiBjaGVja19mb3JfdmFsaWRfcHVibGljYXRpb24K KyAqCisgKiBWZXJpZnkgaWYgdGhlIHB1YmxpY2F0aW9uIGhhcyBhbnkgcHVibGlzaGVkIGZvcmVp Z24gdGFibGUgd2hpY2ggYXJlCisgKiBwYXJ0aXRpb25zIG9mIGEgdGFibGUuCisgKgorICogRm9y IFBHIDE4IGFuZCBiZWxvdyBmb3JlaWduIHRhYmxlcyBjYW4gYmUgaW5kaXJlY3RseSBwdWJsaXNo ZWQgd2hlbiBpdCBpcworICogcGFydGl0aW9uIG9mIGEgcGFydGl0aW9uZWQgdGFibGUuIEF2b2lk IHVwZ3JhZGluZyB0aGUgY2x1c3RlciBpZiBpdCBoYXMgYQorICogcHVibGljYXRpb24gd2l0aCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgYW5kIGhhcyBmb3JlaWduIHRhYmxlCisg KiB3aGljaCBpcyBwYXJ0aXRpb24gb2YgYSBwdWJsaXNoZWQgdGFibGUuCisgKi8KK3N0YXRpYyB2 b2lkCitjaGVja19mb3JfdmFsaWRfcHVibGljYXRpb24oQ2x1c3RlckluZm8gKmNsdXN0ZXIpCit7 CisJVXBncmFkZVRhc2tSZXBvcnQgcmVwb3J0OworCVVwZ3JhZGVUYXNrICp0YXNrOworCWNvbnN0 IGNoYXIgKnF1ZXJ5OworCisJaWYgKEdFVF9NQUpPUl9WRVJTSU9OKGNsdXN0ZXItPm1ham9yX3Zl cnNpb24pID49IDE5MDApCisJCXJldHVybjsKKworCXByZXBfc3RhdHVzKCJDaGVja2luZyBmb3Ig aW52YWxpZCBwdWJsaWNhdGlvbnMiKTsKKworCXJlcG9ydC5maWxlID0gTlVMTDsKKwlzbnByaW50 ZihyZXBvcnQucGF0aCwgc2l6ZW9mKHJlcG9ydC5wYXRoKSwgIiVzLyVzIiwKKwkJCSBsb2dfb3B0 cy5iYXNlZGlyLAorCQkJICJwdWJzX2ludmFsaWQudHh0Iik7CisKKwlxdWVyeSA9ICJTRUxFQ1Qg cC5vaWQsIHAucHVidmlhcm9vdCwgcC5wdWJhbGx0YWJsZXMsIGZ0LmZ0cmVsaWQgIgorCQkiZnJv bSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHAsIExBVEVSQUwgIgorCQkicGdfZ2V0X3B1Ymxp Y2F0aW9uX3RhYmxlcyhwLnB1Ym5hbWUpIGdwdCwgTEFURVJBTCAiCisJCSJwZ19wYXJ0aXRpb25f dHJlZShncHQucmVsaWQpIGd0IEpPSU4gcGdfY2F0YWxvZy5wZ19mb3JlaWduX3RhYmxlIGZ0IE9O ICIKKwkJImZ0LmZ0cmVsaWQgPSBndC5yZWxpZCBXSEVSRSBwLnB1YnZpYXJvb3QgPSB0cnVlOyI7 CisKKwl0YXNrID0gdXBncmFkZV90YXNrX2NyZWF0ZSgpOworCXVwZ3JhZGVfdGFza19hZGRfc3Rl cCh0YXNrLCBxdWVyeSwKKwkJCQkJCSAgcHJvY2Vzc19wdWJfY2hlY2ssCisJCQkJCQkgIHRydWUs ICZyZXBvcnQpOworCXVwZ3JhZGVfdGFza19ydW4odGFzaywgY2x1c3Rlcik7CisJdXBncmFkZV90 YXNrX2ZyZWUodGFzayk7CisKKwlpZiAocmVwb3J0LmZpbGUpCisJeworCQlmY2xvc2UocmVwb3J0 LmZpbGUpOworCQlwZ19sb2coUEdfUkVQT1JULCAiZmF0YWwiKTsKKwkJcGdfZmF0YWwoIllvdXIg aW5zdGFsbGF0aW9uIGNvbnRhaW5zIHB1YmxpY2F0aW9ucywgd2hpY2ggaGFzIGZvcmVpZ24gdGFi bGUgd2hpY2ggYXJlIHBhcnRpdGlvbnMgb2YgcHVibGlzaGVkIHRhYmxlLlxuIgorCQkJCSAiQSBs aXN0IG9mIHBvdGVudGlhbGx5LWFmZmVjdGVkIHB1YmxpY2F0aW9ucyBpcyBpbiB0aGUgZmlsZTpc biIKKwkJCQkgIiAgICAlcyIsIHJlcG9ydC5wYXRoKTsKKwl9CisJZWxzZQorCQljaGVja19vaygp OworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmggYi9z cmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGRlc2MuaAppbmRleCAzNDUzM2Y3MDA0Yy4uNWZi YWZkYzA2ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5o CisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oCkBAIC03MSw1ICs3MSw2 IEBAIGV4dGVybiBQYXJ0aXRpb25EZXNjIFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChQYXJ0aXRp b25EaXJlY3RvcnksIFJlbGF0aW9uKTsKIGV4dGVybiB2b2lkIERlc3Ryb3lQYXJ0aXRpb25EaXJl Y3RvcnkoUGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpOwogCiBleHRlcm4gT2lkCWdldF9kZWZhdWx0 X29pZF9mcm9tX3BhcnRkZXNjKFBhcnRpdGlvbkRlc2MgcGFydGRlc2MpOworZXh0ZXJuIGJvb2wg UmVsYXRpb25IYXNGb3JlaWduUGFydGl0aW9uKFJlbGF0aW9uIHJlbCk7CiAKICNlbmRpZgkJCQkJ CQkvKiBQQVJUREVTQ19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vTWFr ZWZpbGUgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vTWFrZWZpbGUKaW5kZXggNTBiNjVkOGY2ZWEu LjExMDQxZjc5NjY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL01ha2VmaWxlCkBAIC0xNCw2ICsxNCw3IEBAIHRv cF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCiAKIEVYVFJBX0lOU1RBTEwgPSBjb250cmliL2hzdG9yZQorRVhUUkFfSU5TVEFM TCArPSBjb250cmliL3Bvc3RncmVzX2ZkdwogCiBleHBvcnQgd2l0aF9pY3UKIApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDEzX3BhcnRpdGlvbi5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxM19wYXJ0aXRpb24ucGwKaW5kZXggNjFiMGNiNGFhMWEuLjQxY2ZkYzg2 NTgwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTNfcGFydGl0aW9uLnBs CisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxM19wYXJ0aXRpb24ucGwKQEAgLTgsNiAr OCw5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKK215ICRzdGRvdXQ7CitteSAkc3RkZXJyOwor CiAjIHNldHVwCiAKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7CkBAIC04OTEsNCArODk0LDE0MCBAQCAkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgYSwgYiwgYyBG Uk9NIHRhYjVfMSBPUkRFUiBCWSAxIik7CiBpcygkcmVzdWx0LCBxcSg0fHwxKSwgJ3VwZGF0ZXMg b2YgdGFiNSByZXBsaWNhdGVkIGNvcnJlY3RseScpOwogCisjIFRlc3Qgd2l0aCBwYXJ0aXRpb25l ZCB0YWJsZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgaXRzIHBhcnRpdGlvbi4KKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgREFUQUJBU0UgZGIxIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwknZGIxJywKKwlxe0NSRUFURSBFWFRFTlNJT04gSUYg Tk9UIEVYSVNUUyBwb3N0Z3Jlc19mZHc7CisJQ1JFQVRFIFNFUlZFUiBmZHcgRk9SRUlHTiBEQVRB IFdSQVBQRVIgcG9zdGdyZXNfZmR3OworCUNSRUFURSBVU0VSIE1BUFBJTkcgRk9SIENVUlJFTlRf VVNFUiBTRVJWRVIgZmR3O30pOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwknZGIx JywKKwlxe0NSRUFURSBTQ0hFTUEgc2MxOworCUNSRUFURSBTQ0hFTUEgc2MyOworCUNSRUFURSBU QUJMRSBzYzEudGFiNihpZCBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpZCk7CisJQ1JFQVRFIFRB QkxFIHNjMS50YWI2XzEgUEFSVElUSU9OIE9GIHNjMS50YWI2IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDUpOworCUNSRUFURSBUQUJMRSBzYzEudGFiNl8yIFBBUlRJVElPTiBPRiBzYzEudGFiNiBG T1IgVkFMVUVTIEZST00gKDUpIFRPICgxNSkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKwlDUkVB VEUgRk9SRUlHTiBUQUJMRSBzYzEudGFiNl8yXzEgUEFSVElUSU9OIE9GIHNjMS50YWI2XzIgRk9S IFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSBTRVJWRVIgZmR3O30KKyk7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwknZGIxJywKKwlxe0NSRUFURSBQVUJMSUNBVElPTiBwdWJfZm9yZWln bl8xIEZPUiBUQUJMRSBzYzEudGFiNiB3aXRoIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7 CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9mb3JlaWduXzIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg c2MxIHdpdGggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwlDUkVBVEUgUFVCTElDQVRJ T04gcHViX2ZvcmVpZ25fMyBGT1IgQUxMIFRBQkxFUyB3aXRoIChwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9mb3JlaWduXzQgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgc2MyIHdpdGggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwl9KTsKKwor JG5vZGVfc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIERBVEFCQVNF IGRiMSIpOworJG5vZGVfc3Vic2NyaWJlcjEtPnNhZmVfcHNxbCgKKwknZGIxJywKKwlxe0NSRUFU RSBTQ0hFTUEgc2MxOworCUNSRUFURSBTQ0hFTUEgc2MyOworCUNSRUFURSBUQUJMRSBzYzEudGFi NihpZCBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRShpZCk7CisJQ1JFQVRFIFRBQkxFIHNjMS50YWI2 XzEgUEFSVElUSU9OIE9GIHNjMS50YWI2IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworCUNS RUFURSBUQUJMRSBzYzEudGFiNl8yIFBBUlRJVElPTiBPRiBzYzEudGFiNiBGT1IgVkFMVUVTIEZS T00gKDUpIFRPICgxNSkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKKwlDUkVBVEUgVEFCTEUgc2Mx LnRhYjZfMl8xIFBBUlRJVElPTiBPRiBzYzEudGFiNl8yIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSk7fQorKTsKKworJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25u c3RyIC4gJyBkYm5hbWU9ZGIxJzsKKworIyBDcmVhdGUgc3Vic2NyaXB0aW9uIG9uIHB1YmxpY2F0 aW9uIHdoaWNoIGhhcyBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24KKyMgdGFibGUgYXMg aXRzIHBhcnRpdGlvbi4KKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNj cmliZXIxLT5wc3FsKCdkYjEnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWduXzEg Q09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWJfZm9yZWlnbl8x OyIKKyk7CitsaWtlKAorCSRzdGRlcnIsCisJcXIvRVJST1I6ICBzdWJzY3JpcHRpb24gInN1Yl9m b3JlaWduXzEiIHdpdGggY29weV9kYXRhID0gdHJ1ZSBjYW5ub3Qgc3Vic2NyaWJlIHRvIGEgcHVi bGljYXRpb24gd2l0aCBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgYW5kIHB1Ymxp c2hlcyBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uLywK KwkiQ3JlYXRlIHN1YnNjcmlwdGlvbiBvbiBhIHB1YmxpY2F0aW9uIEZPUiBUQUJMRSBvbiBwYXJ0 aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgaXRzIHBhcnRpdGlvbiIKKyk7CisK KygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXIxLT5wc3FsKCdk YjEnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWduXzEgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWJfZm9yZWlnbl8yOyIKKyk7CitsaWtlKAor CSRzdGRlcnIsCisJcXIvRVJST1I6ICBzdWJzY3JpcHRpb24gInN1Yl9mb3JlaWduXzEiIHdpdGgg Y29weV9kYXRhID0gdHJ1ZSBjYW5ub3Qgc3Vic2NyaWJlIHRvIGEgcHVibGljYXRpb24gd2l0aCBw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgYW5kIHB1Ymxpc2hlcyBwYXJ0aXRpb25l ZCB0YWJsZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uLywKKwkiQ3JlYXRlIHN1YnNj cmlwdGlvbiBvbiBhIHB1YmxpY2F0aW9uIEZPUiBUQUJMRVMgSU4gU0NIRU1BIG9uIHBhcnRpdGlv bmVkIHRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFydGl0aW9uIgorKTsKKygkcmVz dWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXIxLT5wc3FsKCdkYjEnLAor CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWduXzEgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWJfZm9yZWlnbl8zOyIKKyk7CitsaWtlKAorCSRzdGRl cnIsCisJcXIvRVJST1I6ICBzdWJzY3JpcHRpb24gInN1Yl9mb3JlaWduXzEiIHdpdGggY29weV9k YXRhID0gdHJ1ZSBjYW5ub3Qgc3Vic2NyaWJlIHRvIGEgcHVibGljYXRpb24gd2l0aCBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUgYW5kIHB1Ymxpc2hlcyBwYXJ0aXRpb25lZCB0YWJs ZSB3aXRoIGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uLywKKwkiQ3JlYXRlIHN1YnNjcmlwdGlv biBvbiBhIHB1YmxpY2F0aW9uIEZPUiBBTEwgVEFCTEVTIG9uIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGggZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFydGl0aW9uIgorKTsKKworIyBJZiBwdWJsaWNhdGlv biBpcyBjcmVhdGVkIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSwgd2Ug Y2FuCisjIGNyZWF0ZSBzdWJzY3JpcHRpb24gb24gaXQuIEJ1dCByZXBsaWNhdGlvbiBvZiBwYXJ0 aXRpb25lZCB0YWJsZSB3aXRoIGZvcmVpZ24KKyMgaXMgc2tpcHBlZAorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ2RiMScsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHB1Yl9mb3JlaWduXzEgU0VU IChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKSIKKyk7CisoJHJlc3VsdCwgJHN0 ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9zdWJzY3JpYmVyMS0+cHNxbCgnZGIxJywKKwkiQ1JFQVRF IFNVQlNDUklQVElPTiBzdWJfZm9yZWlnbl8xIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 cicgUFVCTElDQVRJT04gcHViX2ZvcmVpZ25fMTsiCispOworJG5vZGVfc3Vic2NyaWJlcjEtPnNh ZmVfcHNxbCgnZGIxJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWduXzEnKTsKKworIyBp ZiBzdWJzY3JpcHRpb24gaXMgY3JlYXRlZCB3aXRoIGNvcHlfZGF0YT1mYWxzZSwgd2UgY2FuIGNy ZWF0ZSBzdWJzY3JpcHRpb24KKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1 YnNjcmliZXIxLT5wc3FsKCdkYjEnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWdu XzEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWJfZm9yZWln bl8yIFdJVEggKGNvcHlfZGF0YT1mYWxzZSkiCispOworJG5vZGVfc3Vic2NyaWJlcjEtPnNhZmVf cHNxbCgnZGIxJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9mb3JlaWduXzEnKTsKKworIyBBbHRl ciBzdWJzY3JpcHRpb24gdG8gaW5jbHVkZSBwdWJsaXNoZXIgd2hpY2ggaGFzIHBhcnRpdGlvbmVk IHRhYmxlIHdpdGgKKyMgZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFydGl0aW9uLgorJG5vZGVfc3Vi c2NyaWJlcjEtPnNhZmVfcHNxbCgnZGIxJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfZm9y ZWlnbl8xIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gcHViX2Zv cmVpZ25fNDsiCispOworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3Vic2Ny aWJlcjEtPnBzcWwoJ2RiMScsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzdWJfZm9yZWlnbl8xIEFE RCBQVUJMSUNBVElPTiBwdWJfZm9yZWlnbl8yOyIpOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL0VS Uk9SOiAgc3Vic2NyaXB0aW9uICJzdWJfZm9yZWlnbl8xIiB3aXRoIGNvcHlfZGF0YSA9IHRydWUg Y2Fubm90IHN1YnNjcmliZSB0byBhIHB1YmxpY2F0aW9uIHdpdGggcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSB0cnVlIGFuZCBwdWJsaXNoZXMgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBmb3Jl aWduIHRhYmxlIGFzIHBhcnRpdGlvbi8sCisJIkFkZCBwdWJsaWNhdGlvbiB3aGljaCBoYXMgcGFy dGl0aW9uZWQgdGFibGUgd2l0aCBmb3JlaWduIHRhYmxlIGFzIGl0cyBwYXJ0aXRpb24gdG8gc3Vi c2NyaXB0aW9uIgorKTsKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNj cmliZXIxLT5wc3FsKCdkYjEnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gc3ViX2ZvcmVpZ25fMSBT RVQgUFVCTElDQVRJT04gcHViX2ZvcmVpZ25fMjsiKTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9F UlJPUjogIHN1YnNjcmlwdGlvbiAic3ViX2ZvcmVpZ25fMSIgd2l0aCBjb3B5X2RhdGEgPSB0cnVl IGNhbm5vdCBzdWJzY3JpYmUgdG8gYSBwdWJsaWNhdGlvbiB3aXRoIHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290ID0gdHJ1ZSBhbmQgcHVibGlzaGVzIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggZm9y ZWlnbiB0YWJsZSBhcyBwYXJ0aXRpb24vLAorCSJzZXQgcHVibGljYXRpb24gd2hpY2ggaGFzIHBh cnRpdGlvbmVkIHRhYmxlIHdpdGggZm9yZWlnbiB0YWJsZSBhcyBpdHMgcGFydGl0aW9uIGZvciBz dWJzY3JpcHRpb24iCispOworCisjIENyZWF0ZSBmb3JlaWduIHRhYmxlIGFzIGEgcGFydGl0aW9u IG9mIHBhcnRpdGlvbmVkIHRhYmxlIGFscmVhZHkgcGFydCBvZgorIyBwdWJsaWNhdGlvbi4KKygk cmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXIxLT5wc3FsKCdkYjEn LAorCSJDUkVBVEUgRk9SRUlHTiBUQUJMRSBzYzEudGFiNl8yXzEgUEFSVElUSU9OIE9GIHNjMS50 YWI2XzIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSBTRVJWRVIgZmR3OyIKKyk7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgnZGIxJywgIkRST1AgRk9SRUlHTiBUQUJMRSBzYzEudGFi Nl8yXzEiKTsKKygkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3B1Ymxpc2hlci0+ cHNxbCgnZGIxJywKKwkiQ1JFQVRFIEZPUkVJR04gVEFCTEUgc2MxLnRhYjZfMl8xIFBBUlRJVElP TiBPRiBzYzEudGFiNl8yIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSkgU0VSVkVSIGZkdyIK Kyk7CitsaWtlKAorCSRzdGRlcnIsCisJcXIvRVJST1I6ICBjYW5ub3QgY3JlYXRlIGZvcmVpZ24g dGFibGUgInRhYjZfMl8xIiBhcyBhIHBhcnRpdGlvbiBvZiAidGFiNl8yIi8sCisJIkNyZWF0ZSBm b3JlaWduIHRhYmxlIGFzIGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIGFscmVhZHkg cGFydCBvZiBwdWJsaWNhdGlvbiIKKyk7CisKKyMgQXR0YWNoIGZvcmVpZ24gdGFibGUgYXMgYSBw YXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgYWxyZWFkeSBwYXJ0IG9mCisjIHB1YmxpY2F0 aW9uLgorKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3Vic2NyaWJlcjEtPnBz cWwoJ2RiMScsCisJIkNSRUFURSBGT1JFSUdOIFRBQkxFIHNjMS50YWI2XzJfMSAoaWQgaW50KSBT RVJWRVIgZmR3Iik7CisoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9zdWJzY3Jp YmVyMS0+cHNxbCgnZGIxJywKKwkiQUxURVIgVEFCTEUgc2MxLnRhYjZfMiBBVFRBQ0ggUEFSVElU SU9OIHNjMS50YWI2XzJfMSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpIgorKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdkYjEnLAorCSJDUkVBVEUgRk9SRUlHTiBUQUJMRSBzYzEu dGFiNl8yXzEgKGlkIGludCkgU0VSVkVSIGZkdyIpOworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRl cnIpID0gJG5vZGVfcHVibGlzaGVyLT5wc3FsKCdkYjEnLAorCSJBTFRFUiBUQUJMRSBzYzEudGFi Nl8yIEFUVEFDSCBQQVJUSVRJT04gc2MxLnRhYjZfMl8xIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRP ICgxNSkiCispOworbGlrZSgKKwkkc3RkZXJyLAorCXFyL0VSUk9SOiAgY2Fubm90IGF0dGFjaCBm b3JlaWduIHRhYmxlICJ0YWI2XzJfMSIgdG8gcGFydGl0aW9uIHRhYmxlICJ0YWI2XzIiLywKKwki QXR0YWNoIGZvcmVpZ24gdGFibGUgYXMgYSBwYXJ0aXRpb24gb2YgYWxyZWFkeSBwdWJsaXNoZWQg cGFydGl0aW9uZWQgdGFibGUiCispOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --00000000000086264606371d4396--