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 1wWzCd-002zMH-2b for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 16:21:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWzCc-007eFS-2Q for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 16:21:22 +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 1wWzCc-007eFK-0z for pgsql-hackers@lists.postgresql.org; Tue, 09 Jun 2026 16:21:22 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wWzCa-00000002B6D-0LGP for pgsql-hackers@lists.postgresql.org; Tue, 09 Jun 2026 16:21:22 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-3965adfd75fso51088461fa.1 for ; Tue, 09 Jun 2026 09:21:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781022078; cv=none; d=google.com; s=arc-20240605; b=OBKe10MseGgdaat1DCCOgU+1zhoVFrFKpdXIz//tACXJH4sVLwNZor/E/RP/BjoOVV ywGFtIR9hJFH67fo9gcZJ0PCEe6yo1vlQnd1b9ici6PJo4BJVmaAq3QPyqK3t84epjWE xqVEn0nCoHrkY/RTvhr9EnLxZdToFAQoqKfp2fYhD0xtY/KgFyTv1QsjsEU/OQ+s3qrP 3VPRWVUwdexrmul3gtaba+De/p+LOOmG6i4jUsxg8qyAGhK7Nsp+hiHe/n6VLlV5gATn OEzwdLFuxecW16djTtpH+Boad9eVJ3ETi5tXSLY7I7ZbCi65u9mLXZpAxFqHAqLWrytm 38dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=AFR8tMVQy56Fi14FPKZj3ifRWB2NeigtmIIq1+uDvJk=; fh=jA1y0o48KsEr1ncbKeaqgkONBUmAh+4Dc8UAqTSPpFs=; b=Hef0yIg9BJDwHZ/ckiL3FKA5UOit+L2uN5oMaSjezS1A7mGLt+DnqbcBnsYMGFjpOZ UmGH1/TIoZI4xAQ4XTgTiaQmPmVlNmBXrvcE6K7yV+bRHrNUYaGYeA1Z94Tsu0ERl+y7 Jy7sLy8bPilLV4c7oyJGY3kFv0FHOsYRj00imRJJ3xxIS3X8GmFiNYJbQMIlL4yAPFVu n0mZbPtFIh7+C/g7NoiYjv9HEePs6zlg52FeZugrDq3BeppvQO9FXTpxqxKgaoXV1Lok g34GXvHUbW7jVxQGVHkxiAS1wkZctKbm3MHrs4oJLQe5zKQl5UQ/U3MI89MOTh15vTme MCMg==; darn=lists.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=1781022078; x=1781626878; 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=AFR8tMVQy56Fi14FPKZj3ifRWB2NeigtmIIq1+uDvJk=; b=nBwHphUS7Gb2SD69U6WJ2jZB+4nh3mfn1Il2DrPT7Mi8GFQYyE+wAeT4WsC1vvr9PP ReTzS0bIJD9jPpsT1JBcjdVkitE9TgeiJMgQl1OGlEKm6jWYizTHJ2oLh+F/TjilLTmO VdNsM/f7WqIhtRffIOaY+qD16JRmeTKgvU6aqDwH1DgLg8IlRjyDyNOZ0TcGKoBf5qC6 SiyLMwuAdThqr7JeycAoUd4dtYphzLl9BV3GPsR6J7U1XiZR6vqUaFQownZfdxX8SbFi TUsSLny9cEPhrgr1DV4nRZ5mSKM+26fh5+sUzzs+muzOIOeFsoJk4WcBuD/jtC4yW3A3 s2sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781022078; x=1781626878; 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=AFR8tMVQy56Fi14FPKZj3ifRWB2NeigtmIIq1+uDvJk=; b=IVoeBLynDP6fjp0Kou4RjK7yZzHomQ/53XThqDLaSi62tkCEzBbX+Emi9R19uiMy3l 0qaDQTmHY122LS2m0KNrxHMC6P3P3nuZPVVe3iFnsdWWT++t4JBeb6csPcWn7U2wSI5i Epz3nkt/xpwjp9Z5Eo0j6lc+Iv2bKNKO59yHvySIe8qkjo9pmbaHfX4eQC7j88sxSSkr N3g0uU0XdsMKcxAbwJT2Du7jZmNNdpKkjSZ26IffZccaGZP1hbqiOxNOYZsHTWlHMp3u g6/KhGIREzAjKdirdtVbgJbJ3vDxdXbfSi8O7eQD5RLvG+Qz9I7svWXLexmzGFp7lNPU n2iw== X-Gm-Message-State: AOJu0YxbrLoF77/YwcxbYODP5UKFsQSlPO56WuXHj8j8ZCV7jYNvIouZ Fdkbo1fHYpG/6TP30TETQYDNHUzQzAtHg2Q7krwpBuC9AYutKCZP2ag2MY9NtzVF5uWNYWdqBLu kDgOU5yJWohReAAK+LyBApXUHc+OifoNZzvE= X-Gm-Gg: Acq92OHvrar+Uc81NpuWCECTzWMdt1+846HCBaXWq0oK+7UOy1Whal7P01VilLIUw5P bEmZSgsaSglJc7+WXLpqBosMpdQgqPqmWheMKH9j19K2S0cs0IwSBvow9sp9NGpTYaAVSGCdQOv zm42OAuu4i3576zGW8myRyoP9ZcHA3PtdocfSTj9oYPggZOw5DAmofxtNBg8W9EcgmXYcnLftdU 3stsDpE1Yl2v0sTzHjTJqAutEEjJOXb7tjIHjfQUKbU04bO//NkeMTkPsRaL6PwR4LXK/YZOTvH DuQlE4F6bdSIGIniViscUmFf X-Received: by 2002:a2e:9a16:0:b0:396:a6d3:f04d with SMTP id 38308e7fff4ca-396d0895474mr61466391fa.14.1781022077227; Tue, 09 Jun 2026 09:21:17 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 9 Jun 2026 21:51:04 +0530 X-Gm-Features: AVVi8CfppgUCVhmCTRaVpBJkWrCqOlR1RjPBK3Jvqnh1JDf9ibsjdO3fEe35uE8 Message-ID: Subject: Re: Support EXCEPT for TABLES IN SCHEMA publications To: Zsolt Parragi Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000004034ae0653d484a4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004034ae0653d484a4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Jun 7, 2026 at 2:09=E2=80=AFAM Zsolt Parragi wrote: > > Hello! > > Thanks, I can confirm the fixes work. > > I did some more testing. I think I see two problems with ALTER TABLE > ... SET SCHEMA: > Thanks for reporting this case. The current patches did not handle schema changes for excluded tables. Hou-san also reported the same design issue off-list to me. After considering, I chose to follow behavior similar to existing FOR ALL TABLES publications to handle schema-switch cases. Today, if a table excluded via EXCEPT is dropped, the corresponding prexcept entry is removed, and recreating a table with the same name does not automatically restore the exclusion. I applied the same principle to schema changes: once an excluded table moves out of the schema, the exclusion is removed. For example, consider the following cases: CREATE PUBLICATION p FOR TABLES IN SCHEMA s1 EXCEPT (TABLE s1.t); case-1: Table moves from s1 to s2: ALTER TABLE s1.t SET SCHEMA s2; -- The exclusion entry s1.t is removed. case-2: Table moves back from s2 to s1: ALTER TABLE s2.t SET SCHEMA s1; -- The table is published again. The exclusion is not restored automatically; the user must specify it again. case-3: If s2 is also part of publication p -- The behavior remains the same. Moving the table between schemas does not recreate the exclusion entry. IOW, once the exclusion is broken by a schema move (similar to a drop), it must be re-established explicitly by the user. The attached patch implements this behavior. I've also updated the docs to describe it. I also considered two alternatives: 1) Reject the schema change: Error out if a table with a prexcept entry is moved between schemas. This feels overly restrictive. 2) Make exclusions schema-aware: Add a prexceptschema column and store the schema OID along with the exclusion entry. The exclusion would only apply while the table remains in that schema, allowing it to be restored automatically if the table moves back later. IMO it complicates the design. Thoughts? > 1. > > CREATE SCHEMA s; > CREATE SCHEMA other; > CREATE TABLE s.t(i int); > CREATE PUBLICATION p FOR TABLES IN SCHEMA s EXCEPT (TABLE s.t); > ALTER TABLE s.t SET SCHEMA other; > ALTER PUBLICATION p ADD TABLES IN SCHEMA other; > -- shouldn't s.t be there? > SELECT schemaname, tablename FROM pg_publication_tables WHERE > pubname=3D'p' ORDER BY 1,2; > Do you mean other.t should be there? This is now fixed. When t is moved to schema other, the exclusion is removed and the table is published through p. postgres=3D# SELECT schemaname, tablename FROM pg_publication_tables WHERE pubname=3D'p' ORDER BY 1,2; schemaname | tablename ------------+----------- other | t > > 2. > > CREATE SCHEMA s; > CREATE SCHEMA other; > CREATE TABLE s.t(i int); > CREATE PUBLICATION p FOR TABLES IN SCHEMA s EXCEPT (TABLE s.t); > ALTER TABLE s.t SET SCHEMA other; > ALTER PUBLICATION p DROP TABLES IN SCHEMA s; > -- should it still be there? it isn't without the alter set schema > SELECT pr.prrelid::regclass AS rel, pub.pubname, pr.prexcept > FROM pg_publication_rel pr JOIN pg_publication pub ON pub.oid=3Dpr.prpubi= d; > Fixed. Now, when s.t is moved out of schema s, it is removed from publication p's exclusion list. Later, if schema s is dropped from publication p, the exclusion entries associated with s are removed as well, and s.t is no longer present there. Attached are the updated v11 patches. Patch 001 has the changes discussed above; patches 002 and 003 are unchange= d. -- Thanks, Nisha --0000000000004034ae0653d484a4 Content-Type: application/octet-stream; name="v11-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Disposition: attachment; filename="v11-0001-Support-EXCEPT-clause-for-schema-level-publicati.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6ufes70 RnJvbSBhMGUxMzE1ODIwY2E3ZjYyZjliNzhjMWY1ZTEyMWQ4ZjIyZDAzMTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDQgTWF5IDIwMjYgMTI6NDk6MjcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx MSAxLzNdIFN1cHBvcnQgRVhDRVBUIGNsYXVzZSBmb3Igc2NoZW1hLWxldmVsIHB1YmxpY2F0aW9u cwoKRXh0ZW5kIHRhYmxlIGV4Y2x1c2lvbiBzdXBwb3J0IGluIHB1YmxpY2F0aW9ucyB0byBhbGxv dyBzcGVjaWZpYwp0YWJsZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSBzY2hlbWEtbGV2ZWwgcHVibGlj YXRpb25zIHVzaW5nIGFuCkVYQ0VQVCBjbGF1c2UgaW4gQ1JFQVRFIFBVQkxJQ0FUSU9OLgoKU3Vw cG9ydGVkIHN5bnRheDoKQ1JFQVRFIFBVQkxJQ0FUSU9OIDxwdWI+IEZPUiBUQUJMRVMgSU4gU0NI RU1BIHMgRVhDRVBUIChUQUJMRSB0MSwuLi4pOwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgICAgICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1 YmxpY2F0aW9uLnNnbWwgICAgfCAgMzUgKysrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyAgICAgICAgfCAxNjEgKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgfCAxMzYgKysrKysrKysrKysrKysrLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgfCAgMTAgKysKIHNy Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgfCAgNTUgKysrKysrLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAzMCArKystCiBz cmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrKwogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAzNSArKysrLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAgMyArLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgfCAxNDQgKysrKysrKysrKysrKysrKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgfCAgODggKysrKysrKysr Ky0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAxMzMgKysr KysrKysrKysrKysrLQogMTUgZmlsZXMgY2hhbmdlZCwgNzk3IGluc2VydGlvbnMoKyksIDU3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDllNzg2 ODQ4N2RlLi4xNDMzZDI2NjBmZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xMTcsNyArMTE3LDggQEAKICAgIG9yIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9s aXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2VxdWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVk IGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCiAgICA8eHJlZiBsaW5rZW5k PSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVlbmNlcyIvPi4gV2hlbiBhIHB1YmxpY2F0aW9uIGlz Ci0gICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LCBhIHRh YmxlIG9yIHNldCBvZiB0YWJsZXMgY2FuCisgICBjcmVhdGVkIHdpdGggPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+IG9yCisgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwv bGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KICAgIGJlIGV4cGxpY2l0bHkg ZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+PGxpdGVyYWw+RVhD RVBUPC9saXRlcmFsPjwvbGluaz4KICAgIGNsYXVzZS4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sCmluZGV4IGY4MmQ2NDBlNmNhLi4xOTk0NjBjM2JiNiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0yOCw3ICsyOCw3IEBAIENSRUFU RSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+CiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBU QUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXQotICAgIFRBQkxFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NI RU1BIH0gWywgLi4uIF0KKyAgICBUQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZXNfaW5fc2NoZW1hPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KIAogPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FsbF9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTM5LDYgKzM5LDEw IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+CiAKICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KIAor PHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlc19pbl9zY2hl bWE8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFsgRVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9v YmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBocmFzZT5hbmQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KIAogICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQpAQCAtMTQyLDYgKzE0Niw4IEBAIENS RUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+CiAgICAgIDxwYXJhPgogICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIG9u ZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgogICAgICAgdGhlIHNw ZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUg ZnV0dXJlLgorICAgICAgVGFibGVzIGxpc3RlZCBpbiB0aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRl cmFsPiBjbGF1c2UgZm9yIGEgZ2l2ZW4gc2NoZW1hCisgICAgICBhcmUgZXhjbHVkZWQgZnJvbSB0 aGUgcHVibGljYXRpb24uCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAgLTE3Myw3ICsx NzksNyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNh dGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KICAg ICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUu IFRhYmxlcyBsaXN0ZWQgaW4KLSAgICAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNl IGFyZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgICAgIHRoZSA8bGl0ZXJhbD5F WENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24u CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0x OTgsNyArMjA0LDggQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgog ICAgICAgVGhpcyBjbGF1c2Ugc3BlY2lmaWVzIGEgbGlzdCBvZiB0YWJsZXMgdG8gYmUgZXhjbHVk ZWQgZnJvbSB0aGUKLSAgICAgIHB1YmxpY2F0aW9uLgorICAgICAgcHVibGljYXRpb24uIEl0IGNh biBiZSB1c2VkIHdpdGggPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yCisgICAg ICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4K ICAgICAgPHBhcmE+CiAgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05M WTwvbGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKQEAgLTIyMSw2ICsyMjgsMTkgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICAgIGJ1dCBleGNsdWRlZCAoZXhwbGljaXRseSBvciBpbXBsaWNpdGx5 KSBieSB0aGUgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPgogICAgICAgY2xhdXNlIG9mIGFub3Ro ZXIgaXMgY29uc2lkZXJlZCBpbmNsdWRlZCBmb3IgcmVwbGljYXRpb24uCiAgICAgIDwvcGFyYT4K KyAgICAgPHBhcmE+CisgICAgICBGb3IgPGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xp dGVyYWw+IHB1YmxpY2F0aW9ucywgdGhlCisgICAgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+ IGNsYXVzZSBpcyBzY2hlbWEtc2NvcGVkOiB0aGUgZXhjbHVzaW9uIGFwcGxpZXMKKyAgICAgIG9u bHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHNjaGVtYSB0byB3aGljaCBpdCB3YXMgYXR0YWNoZWQu ICBJZiBhIHRhYmxlCisgICAgICBsaXN0ZWQgaW4gdGhlIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJh bD4gY2xhdXNlIGlzIGxhdGVyIG1vdmVkIHRvIGEKKyAgICAgIGRpZmZlcmVudCBzY2hlbWEgdXNp bmcgPGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUE8L2NvbW1hbmQ+LAorICAgICAg dGhlIGV4Y2x1c2lvbiBpcyByZW1vdmVkLiAgVGhlIHRhYmxlIHdpbGwgdGhlbiBiZSBwdWJsaXNo ZWQgaWYgaXRzIG5ldworICAgICAgc2NoZW1hIGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbi4gIElm IHRoZSB0YWJsZSBpcyBtb3ZlZCBiYWNrIHRvCisgICAgICB0aGUgb3JpZ2luYWwgc2NoZW1hLCB0 aGUgZXhjbHVzaW9uIGlzIG5vdCByZXN0b3JlZDsgdGhlIHVzZXIgbXVzdAorICAgICAgcmUtZXN0 YWJsaXNoIGl0IGV4cGxpY2l0bHkgdXNpbmcgPGNvbW1hbmQ+QUxURVIgUFVCTElDQVRJT048L2Nv bW1hbmQ+LgorICAgICAgRHJvcHBpbmcgYSB0YWJsZSBhbHdheXMgcmVtb3ZlcyBpdCBmcm9tIHRo ZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+CisgICAgICBsaXN0IHJlZ2FyZGxlc3Mgb2YgcHVi bGljYXRpb24gdHlwZS4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIApAQCAtNTE1LDYgKzUzNSwxNSBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHJvZHVj dGlvbl9wdWJsaWNhdGlvbiBGT1IgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzLCBUQUJMRVMgSQog Q1JFQVRFIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9uIEZPUiBUQUJMRVMgSU4gU0NIRU1B IG1hcmtldGluZywgc2FsZXM7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KIAorICA8cGFyYT4K KyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFsbCBjaGFuZ2VzIGZvciBh bGwgdGhlIHRhYmxlcyBwcmVzZW50IGluCisgICB0aGUgc2NoZW1hIDxzdHJ1Y3RuYW1lPnNhbGVz PC9zdHJ1Y3RuYW1lPiwgZXhjZXB0CisgICA8c3RydWN0bmFtZT5pbnRlcm5hbDwvc3RydWN0bmFt ZT4gYW5kIDxzdHJ1Y3RuYW1lPmRyYWZ0czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+ CitDUkVBVEUgUFVCTElDQVRJT04gc2FsZXNfZmlsdGVyZWQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg c2FsZXMgRVhDRVBUIChUQUJMRSBpbnRlcm5hbCwgZHJhZnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVi bGlzaGVzIGFsbCBjaGFuZ2VzIGZvciB0YWJsZSA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFt ZT4sCiAgICBidXQgcmVwbGljYXRlcyBvbmx5IGNvbHVtbnMgPHN0cnVjdG5hbWU+dXNlcl9pZDwv c3RydWN0bmFtZT4gYW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNWM0 NTdkOWFjYTguLjQwODliNTA1Zjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CkBAIC00NDQsMTMgKzQ0NCwxOSBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlz dCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAgKgogICogTm90ZSB0 aGF0IHRoZSBsaXN0IG9mIGFuY2VzdG9ycyBzaG91bGQgYmUgb3JkZXJlZCBzdWNoIHRoYXQgdGhl IHRvcG1vc3QKICAqIGFuY2VzdG9yIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgKgorICog ZXhjZXB0X3B1YmlkcyBpcyBhIGxpc3Qgb2YgcHVibGljYXRpb24gT0lEcyB3aG9zZSBzY2hlbWEg bWVtYmVyc2hpcAorICogc2hvdWxkIGJlIGlnbm9yZWQgZm9yIHRoZSBhbmNlc3RvciAoYmVjYXVz ZSB0aGUgYW5jZXN0b3IgaXMgaW4gdGhlaXIKKyAqIEVYQ0VQVCBjbGF1c2UpLgogICovCiBPaWQK LUdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0 b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsKQorR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsCisJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2 ZWwsIExpc3QgKmV4Y2VwdF9wdWJpZHMpCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJT2lkCQkJdG9w bW9zdF9yZWxpZCA9IEludmFsaWRPaWQ7CiAJaW50CQkJbGV2ZWwgPSAwOworCWJvb2wJCWNoZWNr X3NjaGVtYXMgPSAhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdF9wdWJpZHMsIHB1Ym9pZCk7CiAKIAkv KgogCSAqIEZpbmQgdGhlICJ0b3Btb3N0IiBhbmNlc3RvciB0aGF0IGlzIGluIHRoaXMgcHVibGlj YXRpb24uCkBAIC00NzAsNyArNDc2LDcgQEAgR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihPaWQgcHVib2lkLCBMaXN0ICphbmNlc3RvcnMsIGludCAqYW5jZXN0b3JfbGV2ZWwKIAkJCWlm IChhbmNlc3Rvcl9sZXZlbCkKIAkJCQkqYW5jZXN0b3JfbGV2ZWwgPSBsZXZlbDsKIAkJfQotCQll bHNlCisJCWVsc2UgaWYgKGNoZWNrX3NjaGVtYXMpCiAJCXsKIAkJCWFzY2hlbWFQdWJpZHMgPSBH ZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpKTsKIAkJCWlm IChsaXN0X21lbWJlcl9vaWQoYXNjaGVtYVB1YmlkcywgcHVib2lkKSkKQEAgLTU0NSwxOCArNTUx LDMwIEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVs SW5mbyAqcHJpLAogCSAqIGR1cGxpY2F0ZXMsIGl0J3MgaGVyZSBqdXN0IHRvIHByb3ZpZGUgbmlj ZXIgZXJyb3IgbWVzc2FnZSBpbiBjb21tb24KIAkgKiBjYXNlLiBUaGUgcmVhbCBwcm90ZWN0aW9u IGlzIHRoZSB1bmlxdWUga2V5IG9uIHRoZSBjYXRhbG9nLgogCSAqLwotCWlmIChTZWFyY2hTeXND YWNoZUV4aXN0czIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAot CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpKQorCXR1cCA9IFNlYXJjaFN5c0NhY2hl MihQVUJMSUNBVElPTlJFTE1BUCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0ocHViaWQpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCiAJ eworCQlib29sCQlpc19leGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJV Q1QodHVwKSktPnByZXhjZXB0OworCisJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogCQl0YWJsZV9j bG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJCWlmIChpZl9ub3RfZXhpc3RzKQogCQkJ cmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOwogCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBc IiVzXCIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gXCIlc1wiIiwKLQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKKwkJaWYgKGlz X2V4Y2VwdCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX09CSkVDVCksCisJCQkJCSBlcnJtc2coInRhYmxlIFwiJXNcIiBjYW5ub3QgYmUgYWRkZWQg YmVjYXVzZSBpdCBpcyBleGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJ UmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSwKKwkJCQkJCQlwdWIt Pm5hbWUpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBh bHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAKIAljaGVja19wdWJs aWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpKTsKQEAgLTk4MiwxMiArMTAwMCwxMyBAQCBHZXRJbmNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0KQogICogR2V0cyBsaXN0IG9mIHRhYmxlIG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmll ZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3IgYQogICogcHVibGljYXRpb24uCiAgKgotICogVGhp cyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KKyAqIFRo aXMgaXMgdXNlZCBmb3IgRk9SIEFMTCBUQUJMRVMgYW5kIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1 YmxpY2F0aW9ucywKKyAqIGJvdGggb2Ygd2hpY2ggc3VwcG9ydCBFWENFUFQgVEFCTEUuCiAgKi8K IExpc3QgKgogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKLQlBc3NlcnQoR2V0UHVibGljYXRpb24ocHViaWQp LT5hbGx0YWJsZXMpOworCUFzc2VydChHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyB8 fCBpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQpKTsKIAogCXJldHVybiBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7CiB9CkBAIC0xMDQ5LDE1ICsx MDY4LDE1IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxr aW5kLCBib29sIHB1YnZpYXJvb3QpCiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0 dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7Ci0JTGlzdAkgICAqZXhjZXB0bGlzdCA9IE5J TDsKKwlMaXN0CSAgICpleGNlcHRfcmVsaWRzID0gTklMOwogCiAJQXNzZXJ0KCEocmVsa2luZCA9 PSBSRUxLSU5EX1NFUVVFTkNFICYmIHB1YnZpYXJvb3QpKTsKIAogCS8qIEVYQ0VQVCBmaWx0ZXJp bmcgYXBwbGllcyBvbmx5IHRvIHJlbGF0aW9ucywgbm90IHNlcXVlbmNlcyAqLwogCWlmIChyZWxr aW5kID09IFJFTEtJTkRfUkVMQVRJT04pCi0JCWV4Y2VwdGxpc3QgPSBHZXRFeGNsdWRlZFB1Ymxp Y2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJ T05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9MRUFGKTsKKwkJ ZXhjZXB0X3JlbGlkcyA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIHB1YnZp YXJvb3QgPworCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJ CQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCiAJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJl bGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtMTA3NSw3ICsxMDk0LDcg QEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJv b2wgcHVidmlhcm9vdCkKIAogCQlpZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZv cm0pICYmCiAJCQkhKHJlbEZvcm0tPnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpICYmCi0J CQkhbGlzdF9tZW1iZXJfb2lkKGV4Y2VwdGxpc3QsIHJlbGlkKSkKKwkJCSFsaXN0X21lbWJlcl9v aWQoZXhjZXB0X3JlbGlkcywgcmVsaWQpKQogCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0 LCByZWxpZCk7CiAJfQogCkBAIC0xMDk3LDcgKzExMTYsNyBAQCBHZXRBbGxQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCiAJCQlp ZiAoaXNfcHVibGlzaGFibGVfY2xhc3MocmVsaWQsIHJlbEZvcm0pICYmCiAJCQkJIXJlbEZvcm0t PnJlbGlzcGFydGl0aW9uICYmCi0JCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxp ZCkpCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRfcmVsaWRzLCByZWxpZCkpCiAJCQkJcmVz dWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAtMTIzMiwyMiArMTI1 MSw2NyBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsIFB1Ymxp Y2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAogLyoKICAqIEdldHMgdGhlIGxpc3Qgb2YgYWxs IHJlbGF0aW9ucyBwdWJsaXNoZWQgYnkgRk9SIFRBQkxFUyBJTiBTQ0hFTUEKLSAqIHB1YmxpY2F0 aW9uLgorICogcHVibGljYXRpb24sIGV4Y2x1ZGluZyBhbnkgdGFibGVzIGxpc3RlZCBpbiB0aGUg RVhDRVBUIGNsYXVzZS4KICAqLwogTGlzdCAqCiBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0 aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlMaXN0 CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkgICAqcHVic2NoZW1hbGlzdCA9IEdldFB1YmxpY2F0 aW9uU2NoZW1hcyhwdWJpZCk7CisJTGlzdAkgICAqZXhjZXB0X3JlbGlkcyA9IE5JTDsKIAlMaXN0 Q2VsbCAgICpjZWxsOwogCisJLyogZ2V0IHRoZSBsaXN0IG9mIHRhYmxlcyBleGNsdWRlZCB2aWEg RVhDRVBUIFRBQkxFIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJaWYgKHB1YnNjaGVtYWxpc3Qg IT0gTklMKQorCQlleGNlcHRfcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhw dWJpZCwgcHViX3BhcnRvcHQpOworCiAJZm9yZWFjaChjZWxsLCBwdWJzY2hlbWFsaXN0KQogCXsK IAkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGNlbGwpOwogCQlMaXN0CSAgICpzY2hlbWFS ZWxzID0gTklMOwogCiAJCXNjaGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9u cyhzY2hlbWFpZCwgcHViX3BhcnRvcHQpOwotCQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQs IHNjaGVtYVJlbHMpOworCisJCWlmIChleGNlcHRfcmVsaWRzICE9IE5JTCkKKwkJeworCQkJLyog ZmlsdGVyIG91dCBhbnkgdGFibGVzIHRoYXQgYXBwZWFyIGluIHRoZSBFWENFUFQgbGlzdCAqLwor CQkJTGlzdENlbGwgICAqcmxjOworCisJCQlmb3JlYWNoKHJsYywgc2NoZW1hUmVscykKKwkJCXsK KwkJCQlPaWQJCQlyZWxpZCA9IGxmaXJzdF9vaWQocmxjKTsKKwkJCQlib29sCQlleGNsdWRlZCA9 IGxpc3RfbWVtYmVyX29pZChleGNlcHRfcmVsaWRzLCByZWxpZCk7CisKKwkJCQkvKgorCQkJCSAq IEFsc28gZXhjbHVkZSBhbnkgcmVsYXRpb24gd2hvc2UgcGFydGl0aW9uIGFuY2VzdG9yIGlzIGlu CisJCQkJICogdGhlIEVYQ0VQVCBsaXN0LiAgVGhpcyBtYXR0ZXJzIHdoZW4gcHViX3BhcnRvcHQg aXMKKwkJCQkgKiBQVUJMSUNBVElPTl9QQVJUX1JPT1Q6IHRoZSBleGNlcHQgbGlzdCBob2xkcyBv bmx5IHRoZSByb290CisJCQkJICogT0lELCBidXQgdGhlIHNjaGVtYSBzY2FuIG1heSBhbHNvIHJl dHVybiBpbmRpdmlkdWFsCisJCQkJICogcGFydGl0aW9uIHJlbGF0aW9ucyB0aGF0IGxpdmUgaW4g dGhlIHNhbWUgc2NoZW1hLgorCQkJCSAqLworCQkJCWlmICghZXhjbHVkZWQgJiYgZ2V0X3JlbF9y ZWxpc3BhcnRpdGlvbihyZWxpZCkpCisJCQkJeworCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBn ZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisJCQkJCUxpc3RDZWxsICAgKmFsYzsKKwor CQkJCQlmb3JlYWNoKGFsYywgYW5jZXN0b3JzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1i ZXJfb2lkKGV4Y2VwdF9yZWxpZHMsIGxmaXJzdF9vaWQoYWxjKSkpCisJCQkJCQl7CisJCQkJCQkJ ZXhjbHVkZWQgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWxp c3RfZnJlZShhbmNlc3RvcnMpOworCQkJCX0KKworCQkJCWlmICghZXhjbHVkZWQpCisJCQkJCXJl c3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOworCQkJfQorCQkJbGlzdF9mcmVlKHNj aGVtYVJlbHMpOworCQl9CisJCWVsc2UKKwkJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwg c2NoZW1hUmVscyk7CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTEzMjQsNiArMTM4OCw3IEBA IGlzX3RhYmxlX3B1Ymxpc2hhYmxlX2luX3B1YmxpY2F0aW9uKE9pZCByZWxpZCwgUHVibGljYXRp b24gKnB1YikKIHsKIAlib29sCQlyZWxpc3BhcnRpdGlvbjsKIAlMaXN0CSAgICphbmNlc3RvcnMg PSBOSUw7CisJSGVhcFR1cGxlCXR1cDsKIAogCS8qCiAJICogRm9yIG5vbi1wdWJ2aWFyb290IHB1 YmxpY2F0aW9ucywgYSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBuZXZlciB0aGUKQEAgLTEzODAsMjAg KzE0NDUsNjIgQEAgaXNfdGFibGVfcHVibGlzaGFibGVfaW5fcHVibGljYXRpb24oT2lkIHJlbGlk LCBQdWJsaWNhdGlvbiAqcHViKQogCSAqIElmIGl0J3MgZmFsc2UsIHRoZSBwYXJ0aXRpb24gaXMg Y292ZXJlZCBieSBpdHMgYW5jZXN0b3IncyBwcmVzZW5jZSBpbgogCSAqIHRoZSBwdWJsaWNhdGlv biwgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIChyZXR1cm4gdHJ1ZSkuCiAJICovCi0JaWYgKHJlbGlz cGFydGl0aW9uICYmCi0JCU9pZElzVmFsaWQoR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlv bihwdWItPm9pZCwgYW5jZXN0b3JzLCBOVUxMKSkpCi0JCXJldHVybiAhcHViLT5wdWJ2aWFyb290 OworCWlmIChyZWxpc3BhcnRpdGlvbikKKwl7CisJCU9pZAkJCWFuY2VzdG9yX29pZDsKKworCQlh bmNlc3Rvcl9vaWQgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLCBh bmNlc3RvcnMsIE5VTEwsIE5JTCk7CisJCWlmIChPaWRJc1ZhbGlkKGFuY2VzdG9yX29pZCkpCisJ CXsKKwkJCS8qCisJCQkgKiBUaGUgYW5jZXN0b3Igd2FzIGZvdW5kIGluIHRoZSBwdWJsaWNhdGlv biAodmlhIGV4cGxpY2l0CisJCQkgKiBtZW1iZXJzaGlwIG9yIHNjaGVtYSBtZW1iZXJzaGlwKSwg YnV0IGl0IG1heSBiZSBleGNsdWRlZC4gQ2hlY2sKKwkJCSAqIGZvciBhIHByZXhjZXB0IHJvdyBi ZWZvcmUgY29uY2x1ZGluZyB0aGUgcGFydGl0aW9uIGlzCisJCQkgKiBwdWJsaXNoZWQuCisJCQkg Ki8KKwkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMihQVUJMSUNBVElPTlJFTE1BUCwKKwkJCQkJCQkJ ICBPYmplY3RJZEdldERhdHVtKGFuY2VzdG9yX29pZCksCisJCQkJCQkJCSAgT2JqZWN0SWRHZXRE YXR1bShwdWItPm9pZCkpOworCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCXsKKwkJ CQlib29sCQlpc19leGNlcHQ7CisKKwkJCQlpc19leGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRp b25fcmVsKSBHRVRTVFJVQ1QodHVwKSktPnByZXhjZXB0OworCQkJCVJlbGVhc2VTeXNDYWNoZSh0 dXApOworCQkJCWlmIChpc19leGNlcHQpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCXJl dHVybiAhcHViLT5wdWJ2aWFyb290OworCQl9CisJfQogCiAJLyoKIAkgKiBDaGVjayB3aGV0aGVy IHRoZSB0YWJsZSBpcyBleHBsaWNpdGx5IHB1Ymxpc2hlZCB2aWEgcGdfcHVibGljYXRpb25fcmVs CiAJICogb3IgcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLgorCSAqCisJICogQSBwZ19wdWJsaWNh dGlvbl9yZWwgcm93IHdpdGggcHJleGNlcHQ9dHJ1ZSBtZWFucyB0aGUgdGFibGUgaXMKKwkgKiBl eHBsaWNpdGx5IGV4Y2x1ZGVkIHZpYSBFWENFUFQgYW5kIG11c3Qgbm90IGJlIHJlcG9ydGVkIGFz IHB1Ymxpc2hlZCwKKwkgKiBldmVuIGlmIGl0cyBzY2hlbWEgaXMgb3RoZXJ3aXNlIGluY2x1ZGVk LiAgQSByb3cgd2l0aCBwcmV4Y2VwdD1mYWxzZQorCSAqIG1lYW5zIGl0IGlzIGV4cGxpY2l0bHkg aW5jbHVkZWQuICBJZiBubyBwZ19wdWJsaWNhdGlvbl9yZWwgcm93IGV4aXN0cywKKwkgKiB0aGUg dGFibGUgaXMgcHVibGlzaGVkIGlmZiBpdHMgc2NoZW1hIGFwcGVhcnMgaW4KKwkgKiBwZ19wdWJs aWNhdGlvbl9uYW1lc3BhY2UuCiAJICovCi0JcmV0dXJuIChTZWFyY2hTeXNDYWNoZUV4aXN0czIo UFVCTElDQVRJT05SRUxNQVAsCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCi0J CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWItPm9pZCkpIHx8Ci0JCQlTZWFyY2hTeXNDYWNo ZUV4aXN0czIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCi0JCQkJCQkJCSAgT2JqZWN0SWRHZXRE YXR1bShnZXRfcmVsX25hbWVzcGFjZShyZWxpZCkpLAotCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0 dW0ocHViLT5vaWQpKSk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxN QVAsCisJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKHB1Yi0+b2lkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCWJv b2wJCWlzX2V4Y2VwdDsKKworCQlpc19leGNlcHQgPSAoKEZvcm1fcGdfcHVibGljYXRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKSktPnByZXhjZXB0OworCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwkJ cmV0dXJuICFpc19leGNlcHQ7CisJfQorCisJcmV0dXJuIFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQ VUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oZ2V0X3Jl bF9uYW1lc3BhY2UocmVsaWQpKSwKKwkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQp KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggNDQw YWRiMzU2YWQuLjg3Njg5OGFhNDg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNt ZHMuYwpAQCAtMTgxLDcgKzE4MSw3IEBAIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VT dGF0ZSAqcHN0YXRlLAogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGljYXRpb25Ub09p ZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkgICBM aXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdHJlbHMsIExpc3QgKipzY2hlbWFzKQorCQkJCQkJICAg TGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRfcHVidGFibGVzLCBMaXN0ICoqc2NoZW1hcykKIHsK IAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAqcHVib2JqOwpAQCAtMjAw LDcgKzIwMCw3IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNf bGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQl7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VY Q0VQVF9UQUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQgPSB0cnVlOwotCQkJCSpl eGNlcHRyZWxzID0gbGFwcGVuZCgqZXhjZXB0cmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJ KmV4Y2VwdF9wdWJ0YWJsZXMgPSBsYXBwZW5kKCpleGNlcHRfcHVidGFibGVzLCBwdWJvYmotPnB1 YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CiAJCQkJ cHVib2JqLT5wdWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CkBAIC0yMjQsNiArMjI0LDM4IEBAIE9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCQkJLyogRmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHVzZXIgc3BlY2lm aWVzICJzY2gxLCBzY2gxIiAqLwogCQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29p ZCgqc2NoZW1hcywgc2NoZW1haWQpOworCisJCQkJLyoKKwkJCQkgKiBRdWFsaWZ5IHVucXVhbGlm aWVkIEVYQ0VQVCB0YWJsZSBuYW1lcyB3aXRoIHRoZSByZXNvbHZlZAorCQkJCSAqIGN1cnJlbnQg c2NoZW1hIGFuZCByZWplY3QgYW55IGV4cGxpY2l0bHkgY3Jvc3Mtc2NoZW1hCisJCQkJICogZW50 cmllcy4gIFRoaXMgbWlycm9ycyB0aGUgcGFyc2UtdGltZSBoYW5kbGluZyBkb25lIGZvcgorCQkJ CSAqIFRBQkxFU19JTl9TQ0hFTUEgaW4gcHJlcHJvY2Vzc19wdWJvYmpfbGlzdCgpLCBkZWZlcnJl ZCBoZXJlCisJCQkJICogYmVjYXVzZSBDVVJSRU5UX1NDSEVNQSBpcyBub3Qga25vd24gdW50aWwg ZXhlY3V0aW9uIHRpbWUuCisJCQkJICovCisJCQkJaWYgKHB1Ym9iai0+ZXhjZXB0X3RhYmxlcyAh PSBOSUwpCisJCQkJeworCQkJCQljaGFyCSAgICpjdXJfc2NoZW1hX25hbWUgPSBnZXRfbmFtZXNw YWNlX25hbWUoc2NoZW1haWQpOworCisJCQkJCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9uT2JqU3Bl YywgZW9iaiwgcHVib2JqLT5leGNlcHRfdGFibGVzKQorCQkJCQl7CisJCQkJCQljb25zdCBjaGFy ICplb2JqX3NjaGVtYW5hbWUgPQorCQkJCQkJCWVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+c2No ZW1hbmFtZTsKKwkJCQkJCWNvbnN0IGNoYXIgKmVvYmpfcmVsbmFtZSA9CisJCQkJCQkJZW9iai0+ cHVidGFibGUtPnJlbGF0aW9uLT5yZWxuYW1lOworCisJCQkJCQlpZiAoZW9ial9zY2hlbWFuYW1l ID09IE5VTEwpCisJCQkJCQkJZW9iai0+cHVidGFibGUtPnJlbGF0aW9uLT5zY2hlbWFuYW1lID0g Y3VyX3NjaGVtYV9uYW1lOworCQkJCQkJZWxzZSBpZiAoc3RyY21wKGVvYmpfc2NoZW1hbmFtZSwg Y3VyX3NjaGVtYV9uYW1lKSAhPSAwKQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQllcnJt c2coInRhYmxlIFwiJXNcIiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hl bWEgXCIlc1wiIiwKKwkJCQkJCQkJCQkgICBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihlb2Jq X3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSksCisJCQkJCQkJCQkJICAgY3VyX3NjaGVtYV9uYW1l KSk7CisKKwkJCQkJCSpleGNlcHRfcHVidGFibGVzID0gbGFwcGVuZCgqZXhjZXB0X3B1YnRhYmxl cywKKwkJCQkJCQkJCQkJCQllb2JqLT5wdWJ0YWJsZSk7CisJCQkJCX0KKwkJCQl9CiAJCQkJYnJl YWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KQEAgLTMwNSw3ICsz MzcsNyBAQCBwdWJfcmZfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqYW5jZXN0b3JzLAogCWlmIChwdWJ2aWFyb290ICYmIHJlbGF0aW9u LT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQogCXsKIAkJcHVibGlzaF9hc19yZWxpZAotCQkJPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5VTEwpOwor CQkJPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmlkLCBhbmNlc3RvcnMsIE5V TEwsIE5JTCk7CiAKIAkJaWYgKCFPaWRJc1ZhbGlkKHB1Ymxpc2hfYXNfcmVsaWQpKQogCQkJcHVi bGlzaF9hc19yZWxpZCA9IHJlbGlkOwpAQCAtMzg5LDcgKzQyMSw3IEBAIHB1Yl9jb250YWluc19p bnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICphbmNlc3Rv cnMsCiAJICovCiAJaWYgKHB1YnZpYXJvb3QgJiYgcmVsYXRpb24tPnJkX3JlbC0+cmVsaXNwYXJ0 aXRpb24pCiAJewotCQlwdWJsaXNoX2FzX3JlbGlkID0gR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJs aWNhdGlvbihwdWJpZCwgYW5jZXN0b3JzLCBOVUxMKTsKKwkJcHVibGlzaF9hc19yZWxpZCA9IEdl dFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24ocHViaWQsIGFuY2VzdG9ycywgTlVMTCwgTklM KTsKIAogCQlpZiAoIU9pZElzVmFsaWQocHVibGlzaF9hc19yZWxpZCkpCiAJCQlwdWJsaXNoX2Fz X3JlbGlkID0gcmVsaWQ7CkBAIC04NDksNyArODgxLDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJY2hhcgkJcHVi bGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCUxpc3QJICAg KnJlbGF0aW9ucyA9IE5JTDsKLQlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBOSUw7CisJTGlz dAkgICAqZXhjZXB0X3B1YnRhYmxlcyA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBO SUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAt OTM2LDE2ICs5NjgsMTYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBD cmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRo IHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5w dWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9u cywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJICAgJmV4Y2VwdF9wdWJ0YWJsZXMsICZzY2hlbWFp ZGxpc3QpOwogCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKIAkJLyogUHJvY2VzcyBF WENFUFQgdGFibGUgbGlzdCAqLwotCQlpZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKKwkJaWYg KGV4Y2VwdF9wdWJ0YWJsZXMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQly ZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOworCQkJcmVscyA9IE9wZW5UYWJs ZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CiAJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQs IHJlbHMsIHRydWUsIE5VTEwpOwogCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJCX0KQEAgLTk1 OSw2ICs5OTEsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZSBpZiAoIXN0bXQtPmZvcl9hbGxfc2Vx dWVuY2VzKQogCXsKKwkJTGlzdAkgICAqZXhwbGljaXRyZWxpZHMgPSBOSUw7CisKIAkJLyogRk9S IFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1c2VyICovCiAJCWlmIChzY2hlbWFpZGxp c3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKIAkJCWVyZXBvcnQoRVJST1IsCkBAIC05NzcsNiAr MTAxMSwxOSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1 YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJCSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwsCiAJ CQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKKwkJCS8qCisJCQkgKiBD b2xsZWN0IGV4cGxpY2l0IHRhYmxlIE9JRHMgbm93LCBiZWZvcmUgd2UgY2xvc2UgdGhlIHJlbGF0 aW9uCisJCQkgKiBsaXN0LCBzbyB0aGF0IGV4Y2VwdC10YWJsZSB2YWxpZGF0aW9uIGJlbG93IGNh biBjaGVjayBmb3IKKwkJCSAqIGNvbnRyYWRpY3Rpb25zIHdpdGhvdXQgcmVseWluZyBvbiBhIGNh dGFsb2cgc2NhbiB0aGF0IG1pZ2h0IG5vdAorCQkJICogeWV0IHNlZSB0aGUganVzdC1pbnNlcnRl ZCByb3dzLgorCQkJICovCisJCQlpZiAoZXhjZXB0X3B1YnRhYmxlcyAhPSBOSUwpCisJCQl7CisJ CQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25SZWxJbmZvLCBwcmksIHJlbHMpCisJCQkJCWV4cGxp Y2l0cmVsaWRzID0gbGFwcGVuZF9vaWQoZXhwbGljaXRyZWxpZHMsCisJCQkJCQkJCQkJCQkgUmVs YXRpb25HZXRSZWxpZChwcmktPnJlbGF0aW9uKSk7CisJCQl9CisKIAkJCVB1YmxpY2F0aW9uQWRk VGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CiAJCQlDbG9zZVRhYmxlTGlzdChyZWxz KTsKIAkJfQpAQCAtOTg5LDYgKzEwMzYsMzQgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkgKi8KIAkJCUxvY2tT Y2hlbWFMaXN0KHNjaGVtYWlkbGlzdCk7CiAJCQlQdWJsaWNhdGlvbkFkZFNjaGVtYXMocHVib2lk LCBzY2hlbWFpZGxpc3QsIHRydWUsIE5VTEwpOworCisJCQlpZiAoZXhjZXB0X3B1YnRhYmxlcyAh PSBOSUwpCisJCQl7CisJCQkJTGlzdAkgICAqZXhjZXB0X3JlbHM7CisKKwkJCQlleGNlcHRfcmVs cyA9IE9wZW5UYWJsZUxpc3QoZXhjZXB0X3B1YnRhYmxlcyk7CisKKwkJCQkvKgorCQkJCSAqIFZh bGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBpbiB0aGUKKwkJCQkg KiBleHBsaWNpdCB0YWJsZSBsaXN0ICh3aGljaCB3b3VsZCBiZSBjb250cmFkaWN0b3J5KS4gVXNl IHRoZQorCQkJCSAqIGluLW1lbW9yeSBleHBsaWNpdHJlbGlkcyBjb2xsZWN0ZWQgYWJvdmUgcmF0 aGVyIHRoYW4KKwkJCQkgKiByZS1yZWFkaW5nIHRoZSBjYXRhbG9nLCB3aGljaCBtYXkgbm90IHll dCBzZWUgdGhlCisJCQkJICoganVzdC1pbnNlcnRlZCByb3dzLgorCQkJCSAqLworCQkJCWZvcmVh Y2hfcHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCBleGNlcHRfcmVscykKKwkJCQl7CisJCQkJ CU9pZAkJCWV4Y2VwdF9yZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocHJpLT5yZWxhdGlvbik7CisK KwkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChleHBsaWNpdHJlbGlkcywgZXhjZXB0X3JlbGlkKSkK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQkJCWVycm1zZygidGFibGUgXCIlc1wiIGNhbm5vdCBhcHBl YXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhlIEVYQ0VQVCBjbGF1c2UiLAorCQkJCQkJ CQkJICAgUmVsYXRpb25HZXRRdWFsaWZpZWRSZWxhdGlvbk5hbWUocHJpLT5yZWxhdGlvbikpKTsK KwkJCQl9CisKKwkJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIGV4Y2VwdF9yZWxzLCB0 cnVlLCBOVUxMKTsKKwkJCQlDbG9zZVRhYmxlTGlzdChleGNlcHRfcmVscyk7CisJCQl9CiAJCX0K IAl9CiAKQEAgLTE2ODMsMTIgKzE3NTgsMTIgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCWVsc2UKIAl7CiAJCUxpc3QJ ICAgKnJlbGF0aW9ucyA9IE5JTDsKLQkJTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOwor CQlMaXN0CSAgICpleGNlcHRfcHVidGFibGVzID0gTklMOwogCQlMaXN0CSAgICpzY2hlbWFpZGxp c3QgPSBOSUw7CiAJCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lkOwogCiAJCU9iamVjdHNJblB1 YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJ CQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJCSAgICZl eGNlcHRfcHVidGFibGVzLCAmc2NoZW1haWRsaXN0KTsKIAogCQlDaGVja0FsdGVyUHVibGljYXRp b24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlzdCk7CiAKQEAgLTE3MTEsNyArMTc4 Niw3IEBAIEFsdGVyUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAkJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3Qg ZXhpc3QiLAogCQkJCQkJICAgc3RtdC0+cHVibmFtZSkpOwogCi0JCXJlbGF0aW9ucyA9IGxpc3Rf Y29uY2F0KHJlbGF0aW9ucywgZXhjZXB0cmVsYXRpb25zKTsKKwkJcmVsYXRpb25zID0gbGlzdF9j b25jYXQocmVsYXRpb25zLCBleGNlcHRfcHVidGFibGVzKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblRh YmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJ ICAgc2NoZW1haWRsaXN0ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0bXQs IHR1cCwgc2NoZW1haWRsaXN0KTsKQEAgLTE4MjksNiArMTkwNCw0NSBAQCBSZW1vdmVQdWJsaWNh dGlvblNjaGVtYUJ5SWQoT2lkIHBzb2lkKQogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZl TG9jayk7CiB9CiAKKy8qCisgKiBSZW1vdmUgYW55IEVYQ0VQVCBjbGF1c2UgZW50cmllcyBmb3Ig YSByZWxhdGlvbiBmcm9tIHNjaGVtYSBwdWJsaWNhdGlvbnMuCisgKiBDYWxsZWQgd2hlbiBhIHRh YmxlIGNoYW5nZXMgc2NoZW1hIChBTFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQSksIHNvIHRoYXQK KyAqIGEgc2NoZW1hLXNjb3BlZCBleGNsdXNpb24gZG9lcyBub3Qgc2lsZW50bHkgZm9sbG93IHRo ZSB0YWJsZSB0byBpdHMgbmV3CisgKiBzY2hlbWEuICBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlv bnMgYXJlIHNraXBwZWQgYmVjYXVzZSB0aGVpciBFWENFUFQKKyAqIGNsYXVzZSBpcyBwdWJsaWNh dGlvbi1zY29wZWQsIG5vdCBzY2hlbWEtc2NvcGVkLCBzbyB0aGF0IGV4Y2x1c2lvbiBzaG91bGQK KyAqIHBlcnNpc3QgcmVnYXJkbGVzcyBvZiB3aGF0IHNjaGVtYSB0aGUgdGFibGUgaXMgaW4uCisg Ki8KK3ZvaWQKK1JlbW92ZVB1YmxpY2F0aW9uRXhjZXB0Rm9yUmVsYXRpb24oT2lkIHJlbGlkKQor eworCUxpc3QJICAgKnB1YmlkczsKKwlMaXN0Q2VsbCAgICpsYzsKKwlPYmplY3RBZGRyZXNzIG9i ajsKKworCXB1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocmVsaWQpOwor CisJZm9yZWFjaChsYywgcHViaWRzKQorCXsKKwkJT2lkCQkJcHViaWQgPSBsZmlyc3Rfb2lkKGxj KTsKKwkJT2lkCQkJcHJvaWQ7CisKKwkJaWYgKCFpc19zY2hlbWFfcHVibGljYXRpb24ocHViaWQp KQorCQkJY29udGludWU7CisKKwkJcHJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05S RUxNQVAsCisJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX29pZCwKKwkJCQkJCQkJT2Jq ZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KwkJaWYgKE9pZElzVmFsaWQocHJvaWQpKQorCQl7CisJCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwg UHVibGljYXRpb25SZWxSZWxhdGlvbklkLCBwcm9pZCk7CisJCQlwZXJmb3JtRGVsZXRpb24oJm9i aiwgRFJPUF9DQVNDQURFLCAwKTsKKwkJfQorCX0KKworCWxpc3RfZnJlZShwdWJpZHMpOworfQor CiAvKgogICogT3BlbiByZWxhdGlvbnMgc3BlY2lmaWVkIGJ5IGEgUHVibGljYXRpb25UYWJsZSBs aXN0LgogICogVGhlIHJldHVybmVkIHRhYmxlcyBhcmUgbG9ja2VkIGluIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayBtb2RlIGluIG9yZGVyIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4 IGEzM2UyMmU4ZTYxLi4zYWU1MThmYTFlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAg LTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcmVwYWNrLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNpbmNsdWRl ICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCkBAIC0xOTI5MSw2ICsxOTI5MiwxNSBAQCBBbHRlclRh YmxlTmFtZXNwYWNlSW50ZXJuYWwoUmVsYXRpb24gcmVsLCBPaWQgb2xkTnNwT2lkLCBPaWQgbnNw T2lkLAogCQkJCQkJCSAgZmFsc2UsIG9ianNNb3ZlZCk7CiAKIAl0YWJsZV9jbG9zZShjbGFzc1Jl bCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIFJlbW92ZSBhbnkgRVhDRVBUIGNsYXVz ZSBlbnRyaWVzIGZvciB0aGlzIHJlbGF0aW9uIGZyb20gc2NoZW1hCisJICogcHVibGljYXRpb25z LiAgQSBzY2hlbWEtc2NvcGVkIGV4Y2x1c2lvbiBpcyBubyBsb25nZXIgbWVhbmluZ2Z1bCBvbmNl CisJICogdGhlIHRhYmxlIG1vdmVzIHRvIGEgZGlmZmVyZW50IHNjaGVtYS4KKwkgKi8KKwlpZiAo cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQlyZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQlSZW1vdmVQdWJsaWNh dGlvbkV4Y2VwdEZvclJlbGF0aW9uKFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uNzE3ZTAzYWFjN2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKKyNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAi dXRpbHMveG1sLmgiCiAKQEAgLTExMjcyLDcgKzExMjczLDcgQEAgQWx0ZXJPd25lclN0bXQ6IEFM VEVSIEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBPV05FUiBUTyBSb2xlU3BlYwog ICogcHViX29iaiBpcyBvbmUgb2Y6CiAgKgogICoJCVRBQkxFIHRhYmxlIFssIC4uLl0KLSAqCQlU QUJMRVMgSU4gU0NIRU1BIHNjaGVtYSBbLCAuLi5dCisgKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hl bWEgW0VYQ0VQVCAoVEFCTEUgdGFibGUgWywgLi4uXSApXSBbLCAuLi5dCiAgKgogICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogCkBAIC0xMTMzMiwyMyArMTEzMzMsMjYgQEAgUHVibGljYXRpb25PYmpT cGVjOgogCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAkMzsKIAkJCQkJJCQtPnB1YnRhYmxl LT53aGVyZUNsYXVzZSA9ICQ0OwogCQkJCX0KLQkJCXwgVEFCTEVTIElOX1AgU0NIRU1BIENvbElk CisJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJ CQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1 Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BOwogCQkJCQkkJC0+bmFt ZSA9ICQ0OworCQkJCQkkJC0+ZXhjZXB0X3RhYmxlcyA9ICQ1OwogCQkJCQkkJC0+bG9jYXRpb24g PSBANDsKIAkJCQl9Ci0JCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQorCQkJ fCBUQUJMRVMgSU5fUCBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgb3B0X3B1Yl9leGNlcHRfY2xhdXNl CiAJCQkJewogCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQk LT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE7CisJCQkJ CSQkLT5leGNlcHRfdGFibGVzID0gJDU7CiAJCQkJCSQkLT5sb2NhdGlvbiA9IEA0OwogCQkJCX0K LQkJCXwgQ29sSWQgb3B0X2NvbHVtbl9saXN0IE9wdFdoZXJlQ2xhdXNlCisJCQl8IENvbElkIG9w dF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZSBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7 CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9i anR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047CisJCQkJCSQkLT5leGNlcHRfdGFi bGVzID0gJDQ7CiAJCQkJCS8qCiAJCQkJCSAqIElmIGVpdGhlciBhIHJvdyBmaWx0ZXIgb3IgY29s dW1uIGxpc3QgaXMgc3BlY2lmaWVkLCBjcmVhdGUKIAkJCQkJICogYSBQdWJsaWNhdGlvblRhYmxl IG9iamVjdC4KQEAgLTExMzkyLDEwICsxMTM5NiwxMSBAQCBQdWJsaWNhdGlvbk9ialNwZWM6CiAJ CQkJCSQkLT5wdWJ0YWJsZS0+Y29sdW1ucyA9ICQyOwogCQkJCQkkJC0+cHVidGFibGUtPndoZXJl Q2xhdXNlID0gJDM7CiAJCQkJfQotCQkJfCBDVVJSRU5UX1NDSEVNQQorCQkJfCBDVVJSRU5UX1ND SEVNQSBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVi bGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9D T05USU5VQVRJT047CisJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDI7CiAJCQkJCSQkLT5sb2Nh dGlvbiA9IEAxOwogCQkJCX0KIAkJCQk7CkBAIC0yMDc4NCw2ICsyMDc4OSw4IEBAIHByZXByb2Nl c3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlzdCwgTGlzdCAqKnB1 Ym9iamVjdHMsCiAvKgogICogUHJvY2VzcyBwdWJvYmpzcGVjX2xpc3QgdG8gY2hlY2sgZm9yIGVy cm9ycyBpbiBhbnkgb2YgdGhlIG9iamVjdHMgYW5kCiAgKiBjb252ZXJ0IFBVQkxJQ0FUSU9OT0JK X0NPTlRJTlVBVElPTiBpbnRvIGFwcHJvcHJpYXRlIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUuCisg KiBBbHNvIGZsYXR0ZW5zIGV4Y2VwdF90YWJsZXMgZnJvbSBUQUJMRVMgSU4gU0NIRU1BIG5vZGVz IGludG8gdGhlIGxpc3Qgc28KKyAqIHRoYXQgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoKSBz ZWVzIHRoZW0gYXMgdG9wLWxldmVsIEVYQ0VQVF9UQUJMRSBlbnRyaWVzLgogICovCiBzdGF0aWMg dm9pZAogcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVf eXlzY2FuX3QgeXlzY2FubmVyKQpAQCAtMjA4MTIsNiArMjA4MTksMTMgQEAgcHJlcHJvY2Vzc19w dWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVy KQogCiAJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEUpCiAJ CXsKKwkJCS8qIEVYQ0VQVCBpcyBub3QgdmFsaWQgZm9yIHRhYmxlIG9iamVjdHMgKi8KKwkJCWlm IChwdWJvYmotPmV4Y2VwdF90YWJsZXMgIT0gTklMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiRVhDRVBUIGlz IG5vdCBhbGxvd2VkIGZvciBUQUJMRSBwdWJsaWNhdGlvbiBvYmplY3RzIiksCisJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOworCiAJCQkvKiByZWxhdGlvbiBuYW1l IG9yIHB1YnRhYmxlIG11c3QgYmUgc2V0IGZvciB0aGlzIHR5cGUgb2Ygb2JqZWN0ICovCiAJCQlp ZiAoIXB1Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0YWJsZSkKIAkJCQllcmVwb3J0KEVSUk9S LApAQCAtMjA4NjAsNiArMjA4NzQsMzcgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpw dWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJCQllcnJtc2coImludmFsaWQgc2NoZW1hIG5hbWUi KSwKIAkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CisKKwkJCS8q CisJCQkgKiBGb3IgVEFCTEVTX0lOX1NDSEVNQSwgcXVhbGlmeSB1bnF1YWxpZmllZCBFWENFUFQg dGFibGUgbmFtZXMKKwkJCSAqIHdpdGggdGhlIHBhcmVudCBzY2hlbWEgYW5kIHJlamVjdCBjcm9z cy1zY2hlbWEgZW50cmllcyBhdCBwYXJzZQorCQkJICogdGltZSwgdGhlbiBmbGF0dGVuIGludG8g dGhlIHRvcC1sZXZlbCBsaXN0LgorCQkJICoKKwkJCSAqIEZvciBUQUJMRVNfSU5fQ1VSX1NDSEVN QSB0aGUgc2NoZW1hIG5hbWUgaXMgbm90IHlldCBrbm93biwgc28KKwkJCSAqIHNraXAgYm90aCBz dGVwcyBoZXJlOyBPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcygpIHdpbGwKKwkJCSAqIHF1YWxp ZnkgbmFtZXMgYW5kIHZhbGlkYXRlIHNjaGVtYSBtZW1iZXJzaGlwIGF0IGV4ZWN1dGlvbiB0aW1l LgorCQkJICovCisJCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9TQ0hFTUEpCisJCQl7CisJCQkJZm9yZWFjaF9wdHIoUHVibGljYXRpb25PYmpTcGVj LCBlb2JqLCBwdWJvYmotPmV4Y2VwdF90YWJsZXMpCisJCQkJeworCQkJCQljb25zdCBjaGFyICpl b2JqX3NjaGVtYW5hbWUgPSBlb2JqLT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVtYW5hbWU7CisJ CQkJCWNvbnN0IGNoYXIgKmVvYmpfcmVsbmFtZSA9IGVvYmotPnB1YnRhYmxlLT5yZWxhdGlvbi0+ cmVsbmFtZTsKKworCQkJCQlpZiAoZW9ial9zY2hlbWFuYW1lID09IE5VTEwpCisJCQkJCQllb2Jq LT5wdWJ0YWJsZS0+cmVsYXRpb24tPnNjaGVtYW5hbWUgPSBwdWJvYmotPm5hbWU7CisJCQkJCWVs c2UgaWYgKHN0cmNtcChlb2JqX3NjaGVtYW5hbWUsIHB1Ym9iai0+bmFtZSkgIT0gMCkKKwkJCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9E RUZJTklUSU9OKSwKKwkJCQkJCQkJZXJybXNnKCJ0YWJsZSBcIiVzXCIgaW4gRVhDRVBUIGNsYXVz ZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hIFwiJXNcIiIsCisJCQkJCQkJCQkgICBxdW90ZV9x dWFsaWZpZWRfaWRlbnRpZmllcihlb2JqX3NjaGVtYW5hbWUsIGVvYmpfcmVsbmFtZSksCisJCQkJ CQkJCQkgICBwdWJvYmotPm5hbWUpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oZW9iai0+ bG9jYXRpb24pKTsKKwkJCQl9CisJCQkJcHVib2Jqc3BlY19saXN0ID0gbGlzdF9jb25jYXQocHVi b2Jqc3BlY19saXN0LCBwdWJvYmotPmV4Y2VwdF90YWJsZXMpOworCQkJCXB1Ym9iai0+ZXhjZXB0 X3RhYmxlcyA9IE5JTDsKKwkJCX0KKwkJCS8qIEZvciBUQUJMRVNfSU5fQ1VSX1NDSEVNQTogbGVh dmUgZXhjZXB0X3RhYmxlcyBmb3IgZXhlY3V0aW9uIHRpbWUgKi8KIAkJfQogCiAJCXByZXZvYmp0 eXBlID0gcHVib2JqLT5wdWJvYmp0eXBlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0 cHV0L3Bnb3V0cHV0LmMKaW5kZXggNGVjZmNiZmY3YWIuLjdlZTg0ZWMxYzgzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIwOTcsNiArMjA5Nyw3 IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCQkgKiBhcmUgYWJzb3JiZWQgd2hpbGUgZGVjb2RpbmcgV0FMLgogCQkgKi8KIAkJTGlz dAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYUlkKTsKKwkJ TGlzdAkgICAqZXhjZXB0X3B1YmlkczsKIAkJTGlzdENlbGwgICAqbGM7CiAJCU9pZAkJCXB1Ymxp c2hfYXNfcmVsaWQgPSByZWxpZDsKIAkJaW50CQkJcHVibGlzaF9hbmNlc3Rvcl9sZXZlbCA9IDA7 CkBAIC0yMTA0LDYgKzIxMDUsMjggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAq ZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWNoYXIJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtp bmQocmVsaWQpOwogCQlMaXN0CSAgICpyZWxfcHVibGljYXRpb25zID0gTklMOwogCisJCS8qCisJ CSAqIEZvciB0aGUgc2NoZW1hIEVYQ0VQVCBjaGVjaywgd2UgbXVzdCBsb29rIHVwIHRoZSB0b3At bW9zdCBhbmNlc3RvcgorCQkgKiByYXRoZXIgdGhhbiB0aGUgcmVsYXRpb24gaXRzZWxmLiAgY2hl Y2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKCkKKwkJICogcHJldmVudHMgaW5kaXZpZHVhbCBw YXJ0aXRpb25zIGZyb20gYXBwZWFyaW5nIGluIHRoZSBFWENFUFQgY2xhdXNlLAorCQkgKiBzbyBv bmx5IGEgcm9vdCAobm9uLXBhcnRpdGlvbikgdGFibGUgY2FuIGhhdmUgcHJleGNlcHQgPSB0cnVl LgorCQkgKiBVc2luZyB0aGUgcGFydGl0aW9uJ3Mgb3duIE9JRCB3b3VsZCBhbHdheXMgcmV0dXJu IE5JTCBhbmQgbWlzcyB0aGUKKwkJICogZXhjbHVzaW9uLgorCQkgKi8KKwkJT2lkCQkJcm9vdF9y ZWxpZDsKKworCQlpZiAoYW1fcGFydGl0aW9uKQorCQl7CisJCQlMaXN0CSAgICphbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhyZWxpZCk7CisKKwkJCXJvb3RfcmVsaWQgPSBsbGFz dF9vaWQoYW5jZXN0b3JzKTsKKwkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOworCQl9CisJCWVsc2UK KwkJCXJvb3RfcmVsaWQgPSByZWxpZDsKKworCQlleGNlcHRfcHViaWRzID0gR2V0UmVsYXRpb25F eGNsdWRlZFB1YmxpY2F0aW9ucyhyb290X3JlbGlkKTsKKwogCQkvKiBSZWxvYWQgcHVibGljYXRp b25zIGlmIG5lZWRlZCBiZWZvcmUgdXNlLiAqLwogCQlpZiAoIXB1YmxpY2F0aW9uc192YWxpZCkK IAkJewpAQCAtMjI2Nyw3ICsyMjkwLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJCQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0 QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1Yi0+b2lkLAogCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0 b3JzLAotCQkJCQkJCQkJCQkJCQkJICAgJmxldmVsKTsKKwkJCQkJCQkJCQkJCQkJCSAgICZsZXZl bCwKKwkJCQkJCQkJCQkJCQkJCSAgIGV4Y2VwdF9wdWJpZHMpOwogCiAJCQkJCWlmIChhbmNlc3Rv ciAhPSBJbnZhbGlkT2lkKQogCQkJCQl7CkBAIC0yMjgxLDcgKzIzMDUsOCBAQCBnZXRfcmVsX3N5 bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJCQl9CiAK IAkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKHB1YmlkcywgcHViLT5vaWQpIHx8Ci0JCQkJCWxpc3Rf bWVtYmVyX29pZChzY2hlbWFQdWJpZHMsIHB1Yi0+b2lkKSB8fAorCQkJCQkobGlzdF9tZW1iZXJf b2lkKHNjaGVtYVB1YmlkcywgcHViLT5vaWQpICYmCisJCQkJCSAhbGlzdF9tZW1iZXJfb2lkKGV4 Y2VwdF9wdWJpZHMsIHB1Yi0+b2lkKSkgfHwKIAkJCQkJYW5jZXN0b3JfcHVibGlzaGVkKQogCQkJ CQlwdWJsaXNoID0gdHJ1ZTsKIAkJCX0KQEAgLTIzNjAsNiArMjM4NSw3IEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCiAJCWxpc3Rf ZnJlZShwdWJpZHMpOwogCQlsaXN0X2ZyZWUoc2NoZW1hUHViaWRzKTsKKwkJbGlzdF9mcmVlKGV4 Y2VwdF9wdWJpZHMpOwogCQlsaXN0X2ZyZWUocmVsX3B1YmxpY2F0aW9ucyk7CiAKIAkJZW50cnkt PnJlcGxpY2F0ZV92YWxpZCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGUxNDQ5NjU0Zjk2Li5lNWIxYTcw ZTA1ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKQEAgLTcwMzgsNiArNzAzOCwyNCBAQCBkZXNjcmliZVB1YmxpY2F0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRl c2MoJmJ1ZiwgXygiVGFibGVzIGZyb20gc2NoZW1hczoiKSwKIAkJCQkJCQkJCQkJCXRydWUsICZj b250KSkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxOTAwMDApCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBHZXQgdGFibGVzIGluIHRoZSBFWENF UFQgY2xhdXNlIGZvciB0aGlzIHNjaGVtYQorCQkJCQkgKiBwdWJsaWNhdGlvbi4KKwkJCQkJICov CisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICJTRUxFQ1QgY29uY2F0 KGMucmVsbmFtZXNwYWNlOjpyZWduYW1lc3BhY2UsICcuJywgYy5yZWxuYW1lKVxuIgorCQkJCQkJ CQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJCQkJCQkJCSAgIiAgICAgSk9J TiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBjLm9pZCA9IHByLnBycmVsaWRc biIKKwkJCQkJCQkJCSAgIldIRVJFIHByLnBycHViaWQgPSAnJXMnXG4iCisJCQkJCQkJCQkgICIg IEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKKwkJ CQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVz OiIpLAorCQkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OworCQkJCX0KIAkJCX0KIAkJfQogCQllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggZGU1 NDdhOGNiMzcuLjUzYmI3Yzg2NzliIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0xMDY1LDYg KzEwNjUsMjQgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl90cmlnZ2VyX29m X3RhYmxlID0gewogIlNFTEVDVCBuc3BuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2Ug IlwKICIgV0hFUkUgbnNwbmFtZSBMSUtFICclcyciCiAKKyNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rf b2ZfdGFibGVzX2luX3NjaGVtYSBcCisiU0VMRUNUIG4ubnNwbmFtZSB8fCAnLicgfHwgYy5yZWxu YW1lICJcCisiICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyAiXAorIiAgICAgICBKT0lOIHBn X2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAiXAorIiBX SEVSRSBjLnJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04pICIsICIg XAorCQkJCQkJQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIpICJcCisi ICAgQU5EIChuLm5zcG5hbWUgfHwgJy4nIHx8IGMucmVsbmFtZSkgTElLRSAnJXMnICJcCisiICAg QU5EIG4ubnNwbmFtZSA9ICclcyciCisKKyNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVz X2luX2N1cnJlbnRfc2NoZW1hIFwKKyJTRUxFQ1QgYy5yZWxuYW1lICJcCisiICBGUk9NIHBnX2Nh dGFsb2cucGdfY2xhc3MgYyAiXAorIiAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNl IG4gT04gbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSAiXAorIiBXSEVSRSBjLnJlbGtpbmQgSU4gKCIg Q3BwQXNTdHJpbmcyKFJFTEtJTkRfUkVMQVRJT04pICIsICIgXAorCQkJCQkJQ3BwQXNTdHJpbmcy KFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIpICJcCisiICAgQU5EIGMucmVsbmFtZSBMSUtF ICclcycgIlwKKyIgICBBTkQgbi5uc3BuYW1lID0gcGdfY2F0YWxvZy5jdXJyZW50X3NjaGVtYSgp IgorCiAvKiBVc2UgQ09NUExFVEVfV0lUSF9RVUVSWV9WRVJCQVRJTSB3aXRoIHRoZXNlIHF1ZXJp ZXMgZm9yIEdVQyBuYW1lczogKi8KICNkZWZpbmUgUXVlcnlfZm9yX2xpc3Rfb2ZfYWx0ZXJfc3lz dGVtX3NldF92YXJzIFwKICJTRUxFQ1QgcGdfY2F0YWxvZy5sb3dlcihuYW1lKSBGUk9NIHBnX2Nh dGFsb2cucGdfc2V0dGluZ3MgIlwKQEAgLTM3ODcsOCArMzgwNSwyMSBAQCBtYXRjaF9wcmV2aW91 c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5 X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdw Z1xcXFxfJSUnIiwKIAkJCQkJCQkJICJDVVJSRU5UX1NDSEVNQSIpOwotCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJ TiIsICJTQ0hFTUEiLCBNYXRjaEFueSkgJiYgKCFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkpCi0J CUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBN YXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJF WENFUFQgKCBUQUJMRSIsICJXSVRIICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwg TWF0Y2hBbnksICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBUQUJMRSIpOworCWVsc2Ug aWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRB QkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBM RVRFX1dJVEgoIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsICJDVVJSRU5U X1NDSEVNQSIsICJFWENFUFQiLCAiKCIsICJUQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZ X1ZFUkJBVElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9jdXJyZW50X3NjaGVtYSk7CisJ ZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1Ii LCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBUIiwgIigiLCAiVEFC TEUiKSkKKwl7CisJCXNldF9jb21wbGV0aW9uX3JlZmVyZW5jZShwcmV2NF93ZCk7CisJCUNPTVBM RVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVzX2luX3NjaGVt YSk7CisJfQorCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiRk9SIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIs ICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJ CUNPTVBMRVRFX1dJVEgoIikiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxu YW1lPiBbLi4uXSBXSVRIIiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55TiwgIldJVEgiLCAiKCIpKQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNo IiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMiLCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA4OWI0YmIxNGY2Mi4u NTNlM2Q3YzZmM2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRp b24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5MSw3 ICsxOTEsOCBAQCBleHRlcm4gTGlzdCAqR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExp c3QgKnJlc3VsdCwKIAkJCQkJCQkJCQkJUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAog CQkJCQkJCQkJCQlPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1 YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKLQkJCQkJCQkJCQkJaW50ICph bmNlc3Rvcl9sZXZlbCk7CisJCQkJCQkJCQkJCWludCAqYW5jZXN0b3JfbGV2ZWwsCisJCQkJCQkJ CQkJCUxpc3QgKmV4Y2VwdF9wdWJpZHMpOwogCiBleHRlcm4gYm9vbCBpc19wdWJsaXNoYWJsZV9y ZWxhdGlvbihSZWxhdGlvbiByZWwpOwogZXh0ZXJuIGJvb2wgaXNfc2NoZW1hX3B1YmxpY2F0aW9u KE9pZCBwdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCmluZGV4IDRj ZjQ1YzE3Y2M1Li45M2M3NzMzMTQzNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmgKQEAgLTI3LDYgKzI3LDcgQEAgZXh0ZXJuIHZvaWQgQWx0ZXJQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KTsKIGV4dGVybiB2b2lk IFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQgcHViaWQpOwogZXh0ZXJuIHZvaWQgUmVtb3ZlUHVi bGljYXRpb25SZWxCeUlkKE9pZCBwcm9pZCk7CiBleHRlcm4gdm9pZCBSZW1vdmVQdWJsaWNhdGlv blNjaGVtYUJ5SWQoT2lkIHBzb2lkKTsKK2V4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uRXhj ZXB0Rm9yUmVsYXRpb24oT2lkIHJlbGlkKTsKIAogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJQ dWJsaWNhdGlvbk93bmVyKGNvbnN0IGNoYXIgKm5hbWUsIE9pZCBuZXdPd25lcklkKTsKIGV4dGVy biB2b2lkIEFsdGVyUHVibGljYXRpb25Pd25lcl9vaWQoT2lkIHB1YmlkLCBPaWQgbmV3T3duZXJJ ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggOTEzNzdhNmNkZTMuLjk4YTAzYzBlZWRhIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00NDkzLDYgKzQ0OTMsOCBAQCB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvbk9ialNwZWMKIAlQdWJsaWNhdGlvbk9ialNwZWNUeXBlIHB1Ym9ianR5cGU7 CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KIAljaGFyCSAgICpuYW1lOwog CVB1YmxpY2F0aW9uVGFibGUgKnB1YnRhYmxlOworCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8q IHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKGZvcgorCQkJCQkJCQkgKiBU QUJMRVMgSU4gU0NIRU1BKSAqLwogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRp b24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUHVibGljYXRpb25PYmpTcGVjOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDI5ZTU0YjIxNGEwLi42ZGY0 MmE2MGY5YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlv bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAg LTI3MCw2ICsyNzAsMTIgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVz X2V4Y2VwdHRhYmxlMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHRlc3QKIEVSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgInRlc3RwdWJfdGJsMSIKIExJTkUgMTogLi4uX2ZvcmFsbHRhYmxl c19leGNlcHR0YWJsZTIgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RiLi4uCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gZmFpbCAtIEVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgRk9SIFRBQkxFIHB1YmxpY2F0 aW9ucworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2VycgorICAgIEZPUiBUQUJM RSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMyk7 CitFUlJPUjogIEVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgVEFCTEUgcHVibGljYXRpb24gb2Jq ZWN0cworTElORSAyOiAgICAgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyIEVY Q0VQVCAoVEFCTEUgdGVzdHAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gU0VU IEFMTCBUQUJMRVMvU0VRVUVOQ0VTCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTQ3MCw3ICs0NzYsMTAzIEBAIEhJTlQ6ICBDaGFuZ2UgdGhlIHB1Ymxp Y2F0aW9uJ3MgRVhDRVBUIGNsYXVzZSB1c2luZyBBTFRFUiBQVUJMSUNBVElPTiAuLi4gU0VUIEFM CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3Jvb3QsIHRl c3RwdWJfcGFydDEsIHRhYl9tYWluOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKLS0tLSBU ZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIEVYQ0VQVCB0ZXN0cyBmb3IgVEFCTEVTIElO IFNDSEVNQQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitT RVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CistLSBDcmVhdGUgdGFibGVzIGluIHB1 Yl90ZXN0IGZvciB0aGVzZSB0ZXN0cworQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX3RibF9zMiAoeCBpbnQgcHJpbWFyeSBrZXksIHkgdGV4dCk7CistLSBDcmVhdGUgc2Ft ZS1uYW1lZCB0YWJsZXMgaW4gcHVibGljIHRvIHZlcmlmeSB1bnF1YWxpZmllZCBFWENFUFQgZW50 cmllcworLS0gYXJlIHF1YWxpZmllZCB3aXRoIHRoZSBuYW1lZCBzY2hlbWEsIG5vdCBwdWJsaWMK K0NSRUFURSBUQUJMRSB0ZXN0cHViX25vcGsgKGZvbyBpbnQsIGJhciBpbnQpOworQ1JFQVRFIFRB QkxFIHRlc3RwdWJfdGJsX3MxIChhIGludCBwcmltYXJ5IGtleSwgYiB0ZXh0KTsKKy0tIEJhc2lj OiBleGNsdWRlIG9uZSB0YWJsZSBmcm9tIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworXGRScCsg dGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3Qi CitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKKworLS0gRXhj bHVkZSBtdWx0aXBsZSB0YWJsZXMgdXNpbmcgdW5xdWFsaWZpZWQgbmFtZXM7IHNhbWUtbmFtZWQg dGFibGVzIGV4aXN0IGluCistLSBwdWJsaWMgdG8gY29uZmlybSB1bnF1YWxpZmllZCBuYW1lcyBy ZXNvbHZlIHRvIHB1Yl90ZXN0LCBub3QgcHVibGljCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQ VCAoVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMSk7CitcZFJwKyB0ZXN0cHViX3Nj aGVtYV9leGNlcHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSBy b290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYg ICAgICAgIHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0 YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKKyAgICAicHViX3Rlc3QudGVzdHB1 Yl90YmxfczEiCisKKy0tIGZhaWw6IEVYQ0VQVCB0YWJsZSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50 IHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X3dyb25nc2NoZW1hCisg ICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVz dHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiIGluIEVYQ0VQ VCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHViX3Rlc3QiCitMSU5FIDI6ICAg ICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0 cC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBmYWlsOiBjcm9zcy1zY2hlbWEgRVhDRVBUIG5vdCBhbGxvd2VkOyBlYWNoIEVY Q0VQVCBpcyBib3VuZCB0byBpdHMgaW1tZWRpYXRlIHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZXhjZXB0X2Nyb3Nzc2NoZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QsIHB1YmxpYyBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJs aWMudGVzdHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx IiBpbiBFWENFUFQgY2xhdXNlIGRvZXMgbm90IGJlbG9uZyB0byBzY2hlbWEgInB1YmxpYyIKK0xJ TkUgMjogLi4uUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBwdWJsaWMgRVhDRVBUIChUQUJM RSBwdWJfdGVzdC50Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gTXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhl aXIgb3duIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9l eGNlcHRfbXVsdGkKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKSwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBF WENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRf bXVsdGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdF9tdWx0aQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAg ICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisgICAgInB1YmxpYyIK K0V4Y2VwdCB0YWJsZXM6CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgorCistLSBmYWlsOiB0YWJsZSBhcHBlYXJzIGluIGJvdGggdGhlIGV4 cGxpY2l0IHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9leGNlcHRfY29uZmxpY3QKKyAgICBGT1IgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl90YmxfczEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVz dC50ZXN0cHViX3RibF9zMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3RibF9z MSIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNs YXVzZQorLS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X25vcmVsCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CitF UlJPUjogIHJlbGF0aW9uICJwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSIgZG9lcyBub3QgZXhp c3QKKy0tIGZhaWw6IHBhcnRpdGlvbiBjYW5ub3QgYXBwZWFyIGluIEVYQ0VQVCBjbGF1c2U7IG9u bHkgcm9vdCB0YWJsZXMgYXJlIGFsbG93ZWQKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3BhcnRlZF9zIChhIGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfcGFydF9zIFBBUlRJVElPTiBPRiBwdWJfdGVzdC50ZXN0cHViX3BhcnRl ZF9zIEZPUiBWQUxVRVMgSU4gKDEpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0 X3BhcnRpdGlvbgorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSByZWxh dGlvbiAicHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3MiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQg Y2xhdXNlCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRp dmlkdWFsIHBhcnRpdGlvbnMuCistLSBmYWlsOiBUQUJMRSBrZXl3b3JkIGlzIHJlcXVpcmVkIGZv ciB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2V4Y2VwdF9ub2t3CisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUICh0ZXN0cHViX25vcGspOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi dGVzdHB1Yl9ub3BrIgorTElORSAyOiAgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qg RVhDRVBUICh0ZXN0cHViX25vcGspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBDbGVhbnVwCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OworRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczI7CitEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKK0RS T1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKK0RST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0X211bHRpOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnJlZ3Jlc3NfcHVi X3NlcTE7CiAtLSBGT1IgQUxMIFNFUVVFTkNFUwpAQCAtMTk1Myw2ICsyMDU1LDI3IEBAIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBmb28s IGJhciAoYSwgYik7CiBFUlJPUjogIGNvbHVtbiBzcGVjaWZpY2F0aW9uIG5vdCBhbGxvd2VkIGZv ciBzY2hlbWEKIExJTkUgMTogLi4uVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVhDRVBUIGNsYXVzZSB3aXRo IENVUlJFTlRfU0NIRU1BOiBjcm9zcy1zY2hlbWEgZW50cnkgbXVzdCBiZSByZWplY3RlZAorU0VU IHNlYXJjaF9wYXRoID0gcHViX3Rlc3QxOworLS0gcXVhbGlmaWVkIG5hbWUgZnJvbSB3cm9uZyBz Y2hlbWEgLT4gZXJyb3IKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgRVhDRVBUIChUQUJMRSBwdWJfdGVz dDIudGJsMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdDIudGJsMSIgaW4gRVhDRVBUIGNsYXVz ZSBkb2VzIG5vdCBiZWxvbmcgdG8gc2NoZW1hICJwdWJfdGVzdDEiCistLSB1bnF1YWxpZmllZCBu YW1lIGltcGxpY2l0bHkgcXVhbGlmaWVkIHdpdGggY3VycmVudCBzY2hlbWEgKHB1Yl90ZXN0MS50 YmwpCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9jdXJzY2hfZXhjZXB0IEZPUiBUQUJMRVMgSU4gU0NIRU1BIENVUlJFTlRfU0NI RU1BIEVYQ0VQVCAoVEFCTEUgdGJsKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZFJw KyB0ZXN0cHViX2N1cnNjaF9leGNlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdAor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVt bnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAg ICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3Qx IgorRXhjZXB0IHRhYmxlczoKKyAgICAicHViX3Rlc3QxLnRibCIKKworRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViX2N1cnNjaF9leGNlcHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKIC0tIGNsZWFudXAg cHViX3Rlc3QxIHNjaGVtYSBmb3IgaW52YWxpZGF0aW9uIHRlc3RzCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViMl9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIERS T1AgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hLCB0ZXN0cHViNF9mb3JzY2hlbWEsIHRl c3RwdWI1X2ZvcnNjaGVtYSwgdGVzdHB1YjZfZm9yc2NoZW1hLCB0ZXN0cHViX2ZvcnRhYmxlOwpA QCAtMjMwNCw2ICsyNDI3LDcgQEAgRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcl9k dW1teTsKIC0tIFRlc3QgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxlcyh0ZXh0W10sIG9pZCkgZnVu Y3Rpb24KIENSRUFURSBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoOwogQ1JFQVRFIFRBQkxFIGdwdF90ZXN0 X3NjaC50Ymxfc2NoIChpZCBpbnQpOworQ1JFQVRFIFRBQkxFIGdwdF90ZXN0X3NjaC50Ymxfc2No MiAoaWQgaW50KTsKIENSRUFURSBUQUJMRSB0Ymxfbm9ybWFsIChpZCBpbnQpOwogQ1JFQVRFIFRB QkxFIHRibF9wYXJlbnQgKGlkMSBpbnQsIGlkMiBpbnQsIGlkMyBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaWQxKTsKIENSRUFURSBUQUJMRSB0YmxfcGFydDEgUEFSVElUSU9OIE9GIHRibF9wYXJl bnQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwpAQCAtMjMxNCw2ICsyNDM4LDcgQEAgQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfbm9fdmlhcm9vdCBGT1IgQUxMIFRBQkxFUyBXSVRIIChw dWJsaXNoX3ZpYV9wYXJ0aXRpb24KIENSRUFURSBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRibF9wYXJlbnQsIGdwdF90ZXN0X3NjaC50Ymxf c2NoKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0X25vX3ZpYXJvb3QgRk9SIEFMTCBUQUJMRVMgRVhDRVBU IChUQUJMRSB0YmxfcGFyZW50LCBncHRfdGVzdF9zY2gudGJsX3NjaCkgV0lUSCAocHVibGlzaF92 aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZSk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViX3NjaGVt YSBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9zY2g7CitDUkVBVEUgUFVCTElDQVRJT04g cHViX3NjaGVtYV9leGNlcHQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoIEVYQ0VQ VCAoVEFCTEUgZ3B0X3Rlc3Rfc2NoLnRibF9zY2gpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9u b3JtYWwgRk9SIFRBQkxFIHRibF9ub3JtYWwgV0hFUkUgKGlkIDwgMTApOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1Yl9wYXJ0X2xlYWYgRk9SIFRBQkxFIHRibF9wYXJ0MSBXSVRIIChwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKIENSRUFURSBQVUJMSUNBVElPTiBwdWJfcGFydF9w YXJlbnQgRk9SIFRBQkxFIHRibF9wYXJlbnQgKGlkMSwgaWQyKSBXSEVSRSAoaWQxID0gMTApIFdJ VEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CkBAIC0yNDY1LDYgKzI1OTAs MTggQEAgU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlh cm9vdCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHIKIC0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0KICgwIHJvd3MpCiAKKy0tIHRlc3QgZm9yIEVYQ0VQVCBjbGF1c2Ugd2l0aCBzY2hl bWEgcHVibGljYXRpb24gKGJ1ZzogZXhjbHVkZWQgdGFibGUgd2FzIGluY29ycmVjdGx5IHJldHVy bmVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHViX3NjaGVtYV9leGNlcHQnXSwg J2dwdF90ZXN0X3NjaC50Ymxfc2NoJyk7IC0tIG5vIHJlc3VsdCAoZXhjbHVkZWQpCisgcHVibmFt ZSB8IHJlbG5hbWUgfCBhdHRycyB8IHF1YWwgCistLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfc2No ZW1hX2V4Y2VwdCddLCAnZ3B0X3Rlc3Rfc2NoLnRibF9zY2gyJyk7IC0tIG9uZSByb3cgKGluY2x1 ZGVkIHZpYSBzY2hlbWEpCisgICAgICBwdWJuYW1lICAgICAgfCByZWxuYW1lICB8IGF0dHJzIHwg cXVhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLQorIHB1 Yl9zY2hlbWFfZXhjZXB0IHwgdGJsX3NjaDIgfCAxICAgICB8IAorKDEgcm93KQorCiAtLSB0d28g cm93cyB3aXRoIGRpZmZlcmVudCByb3cgZmlsdGVyCiBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFS UkFZWydwdWJfYWxsJywgJ3B1Yl9ub3JtYWwnXSwgJ3RibF9ub3JtYWwnKTsKICAgcHVibmFtZSAg IHwgIHJlbG5hbWUgICB8IGF0dHJzIHwgICBxdWFsICAgIApAQCAtMjUxNyw2ICsyNjU0LDcgQEAg RFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX25vX3ZpYXJvb3Q7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1 Yl9hbGxfZXhjZXB0OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290 OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiBwdWJfc2No ZW1hX2V4Y2VwdDsKIERST1AgUFVCTElDQVRJT04gcHViX25vcm1hbDsKIERST1AgUFVCTElDQVRJ T04gcHViX3BhcnRfbGVhZjsKIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50OwpAQCAt MjUyNSw3ICsyNjYzLDkgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWJfcGFydF9wYXJlbnRfY2hpbGQ7 CiBEUk9QIFZJRVcgZ3B0X3Rlc3RfdmlldzsKIERST1AgVEFCTEUgdGJsX25vcm1hbCwgdGJsX3Bh cmVudCwgdGJsX3BhcnQxOwogRFJPUCBTQ0hFTUEgZ3B0X3Rlc3Rfc2NoIENBU0NBREU7Ci1OT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGdwdF90ZXN0X3NjaC50Ymxfc2NoCitOT1RJQ0U6 ICBkcm9wIGNhc2NhZGVzIHRvIDIgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRl cyB0byB0YWJsZSBncHRfdGVzdF9zY2gudGJsX3NjaAorZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBn cHRfdGVzdF9zY2gudGJsX3NjaDIKIC0tIHN0YWdlIG9iamVjdHMgZm9yIHBnX2R1bXAgdGVzdHMK IENSRUFURSBTQ0hFTUEgcHVibWUgQ1JFQVRFIFRBQkxFIHQwIChjIGludCwgZCBpbnQpIENSRUFU RSBUQUJMRSB0MSAoYyBpbnQpOwogQ1JFQVRFIFNDSEVNQSBwdWJtZTIgQ1JFQVRFIFRBQkxFIHQw IChjIGludCwgZCBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGlj YXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmluZGV4IDA0 MWUxNGE0ZGU2Li5iZDUyM2UzNzZiMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNx bApAQCAtMTIzLDYgKzEyMyw5IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh Ymxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMCiBcZCB0ZXN0cHVi X3RibDEKIC0tIGZhaWwgLSBmaXJzdCB0YWJsZSBpbiB0aGUgRVhDRVBUIGxpc3Qgc2hvdWxkIHVz ZSBUQUJMRSBrZXl3b3JkCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdHB1Yl90YmwxLCB0ZXN0cHVi X3RibDIpOworLS0gZmFpbCAtIEVYQ0VQVCBpcyBub3QgYWxsb3dlZCBmb3IgRk9SIFRBQkxFIHB1 YmxpY2F0aW9ucworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2VycgorICAgIEZP UiBUQUJMRSB0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMiBFWENFUFQgKFRBQkxFIHRlc3RwdWJf dGJsMyk7CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog LS0gU0VUIEFMTCBUQUJMRVMvU0VRVUVOQ0VTCkBAIC0yMjAsNyArMjIzLDcxIEBAIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwgdGVzdHB1Yl9wYXJ0 MSwgdGFiX21haW47CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI4OwogCi0tLS0gVGVzdHMgZm9y IHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgdGVzdHMgZm9yIFRBQkxFUyBJTiBTQ0hFTUEK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gQ3JlYXRlIHRhYmxlcyBpbiBwdWJfdGVzdCBm b3IgdGhlc2UgdGVzdHMKK0NSRUFURSBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSAoYSBp bnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczIgKHggaW50IHByaW1hcnkga2V5LCB5IHRleHQpOworLS0gQ3JlYXRlIHNhbWUtbmFtZWQg dGFibGVzIGluIHB1YmxpYyB0byB2ZXJpZnkgdW5xdWFsaWZpZWQgRVhDRVBUIGVudHJpZXMKKy0t IGFyZSBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZWQgc2NoZW1hLCBub3QgcHVibGljCitDUkVBVEUg VEFCTEUgdGVzdHB1Yl9ub3BrIChmb28gaW50LCBiYXIgaW50KTsKK0NSRUFURSBUQUJMRSB0ZXN0 cHViX3RibF9zMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCk7CisKKy0tIEJhc2ljOiBleGNs dWRlIG9uZSB0YWJsZSBmcm9tIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MQorICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworXGRScCsgdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MQorCistLSBFeGNsdWRlIG11bHRpcGxlIHRhYmxlcyB1c2luZyB1bnF1 YWxpZmllZCBuYW1lczsgc2FtZS1uYW1lZCB0YWJsZXMgZXhpc3QgaW4KKy0tIHB1YmxpYyB0byBj b25maXJtIHVucXVhbGlmaWVkIG5hbWVzIHJlc29sdmUgdG8gcHViX3Rlc3QsIG5vdCBwdWJsaWMK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHQyCisgICAgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJf dGJsX3MxKTsKK1xkUnArIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIKKworLS0gZmFpbDogRVhDRVBU IHRhYmxlIGJlbG9uZ3MgdG8gYSBkaWZmZXJlbnQgc2NoZW1hCitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1Yl9leGNlcHRfd3JvbmdzY2hlbWEKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCBFWENFUFQgKFRBQkxFIHB1YmxpYy50ZXN0cHViX3RibDEpOworCistLSBmYWlsOiBjcm9z cy1zY2hlbWEgRVhDRVBUIG5vdCBhbGxvd2VkOyBlYWNoIEVYQ0VQVCBpcyBib3VuZCB0byBpdHMg aW1tZWRpYXRlIHNjaGVtYQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2Nyb3Nz c2NoZW1hCisgICAgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QsIHB1YmxpYyBFWENFUFQg KFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJsaWMudGVzdHB1Yl90YmwxKTsKKwor LS0gTXVsdGlwbGUgc2NoZW1hcyBlYWNoIHdpdGggdGhlaXIgb3duIEVYQ0VQVCBjbGF1c2UKK0NS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKyAgICBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJs X3MxKSwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJs MSk7CitcZFJwKyB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGkKKworLS0gZmFpbDogdGFibGUg YXBwZWFycyBpbiBib3RoIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBUIGNs YXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZXhjZXB0X2NvbmZsaWN0CisgICAgRk9S IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEpOworCistLSBmYWlsOiBub25l eGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9leGNlcHRfbm9yZWwKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQg KFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxlKTsKKworLS0gZmFpbDogcGFydGl0aW9u IGNhbm5vdCBhcHBlYXIgaW4gRVhDRVBUIGNsYXVzZTsgb25seSByb290IHRhYmxlcyBhcmUgYWxs b3dlZAorQ1JFQVRFIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgKGEgaW50KSBQQVJU SVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0X3Mg UEFSVElUSU9OIE9GIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgRk9SIFZBTFVFUyBJTiAoMSk7 CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9leGNlcHRfcGFydGl0aW9uCisgICAgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3Bh cnRfcyk7CisKKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJz dCBlbnRyeSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf ZXhjZXB0X25va3cKKyAgICBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRl c3RwdWJfbm9wayk7CisKKy0tIENsZWFudXAKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitE Uk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCBwdWJfdGVzdC50ZXN0cHViX3RibF9z MjsKK0RST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9wYXJ0ZWRfcyBDQVNDQURFOworRFJPUCBU QUJMRSB0ZXN0cHViX25vcGssIHRlc3RwdWJfdGJsX3MxOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViX3NjaGVtYV9leGNlcHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVt YV9leGNlcHRfbXVsdGk7CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUworLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgU0VRVUVOQ0Ug cmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9z ZXExOwogCkBAIC0xMTg5LDYgKzEyNTYsMTggQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFf Zm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QxOwogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIGZv byAoYSwgYik7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxF UyBJTiBTQ0hFTUEgZm9vLCBiYXIgKGEsIGIpOwogCistLSBFWENFUFQgY2xhdXNlIHdpdGggQ1VS UkVOVF9TQ0hFTUE6IGNyb3NzLXNjaGVtYSBlbnRyeSBtdXN0IGJlIHJlamVjdGVkCitTRVQgc2Vh cmNoX3BhdGggPSBwdWJfdGVzdDE7CistLSBxdWFsaWZpZWQgbmFtZSBmcm9tIHdyb25nIHNjaGVt YSAtPiBlcnJvcgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdCBGT1Ig VEFCTEVTIElOIFNDSEVNQSBDVVJSRU5UX1NDSEVNQSBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Mi50 YmwxKTsKKy0tIHVucXVhbGlmaWVkIG5hbWUgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCBjdXJy ZW50IHNjaGVtYSAocHViX3Rlc3QxLnRibCkKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgQ1VSUkVOVF9TQ0hFTUEgRVhDRVBUIChUQUJMRSB0YmwpOworUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfY3Vyc2NoX2V4Y2VwdAorRFJPUCBQVUJM SUNBVElPTiB0ZXN0cHViX2N1cnNjaF9leGNlcHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKwogLS0g Y2xlYW51cCBwdWJfdGVzdDEgc2NoZW1hIGZvciBpbnZhbGlkYXRpb24gdGVzdHMKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWIyX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rl c3QxOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEsIHRlc3RwdWI0X2ZvcnNj aGVtYSwgdGVzdHB1YjVfZm9yc2NoZW1hLCB0ZXN0cHViNl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9y dGFibGU7CkBAIC0xNDQzLDYgKzE1MjIsNyBAQCBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyX2R1bW15OwogLS0gVGVzdCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKHRleHRbXSwg b2lkKSBmdW5jdGlvbgogQ1JFQVRFIFNDSEVNQSBncHRfdGVzdF9zY2g7CiBDUkVBVEUgVEFCTEUg Z3B0X3Rlc3Rfc2NoLnRibF9zY2ggKGlkIGludCk7CitDUkVBVEUgVEFCTEUgZ3B0X3Rlc3Rfc2No LnRibF9zY2gyIChpZCBpbnQpOwogQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwgKGlkIGludCk7CiBD UkVBVEUgVEFCTEUgdGJsX3BhcmVudCAoaWQxIGludCwgaWQyIGludCwgaWQzIGludCkgUEFSVElU SU9OIEJZIFJBTkdFIChpZDEpOwogQ1JFQVRFIFRBQkxFIHRibF9wYXJ0MSBQQVJUSVRJT04gT0Yg dGJsX3BhcmVudCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CkBAIC0xNDU0LDYgKzE1MzQs NyBAQCBDUkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9ub192aWFyb290IEZPUiBBTEwgVEFCTEVT IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbgogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9hbGxf ZXhjZXB0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdGJsX3BhcmVudCwgZ3B0X3Rlc3Rf c2NoLnRibF9zY2gpIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSk7CiBD UkVBVEUgUFVCTElDQVRJT04gcHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCBGT1IgQUxMIFRBQkxF UyBFWENFUFQgKFRBQkxFIHRibF9wYXJlbnQsIGdwdF90ZXN0X3NjaC50Ymxfc2NoKSBXSVRIIChw dWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IGZhbHNlKTsKIENSRUFURSBQVUJMSUNBVElPTiBw dWJfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIGdwdF90ZXN0X3NjaDsKK0NSRUFURSBQVUJM SUNBVElPTiBwdWJfc2NoZW1hX2V4Y2VwdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBncHRfdGVzdF9z Y2ggRVhDRVBUIChUQUJMRSBncHRfdGVzdF9zY2gudGJsX3NjaCk7CiBDUkVBVEUgUFVCTElDQVRJ T04gcHViX25vcm1hbCBGT1IgVEFCTEUgdGJsX25vcm1hbCBXSEVSRSAoaWQgPCAxMCk7CiBDUkVB VEUgUFVCTElDQVRJT04gcHViX3BhcnRfbGVhZiBGT1IgVEFCTEUgdGJsX3BhcnQxIFdJVEggKHB1 Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2UpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 Yl9wYXJ0X3BhcmVudCBGT1IgVEFCTEUgdGJsX3BhcmVudCAoaWQxLCBpZDIpIFdIRVJFIChpZDEg PSAxMCkgV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVlKTsKQEAgLTE1MTAs NiArMTU5MSwxMCBAQCBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsX2V4Y2Vw dF9ub192aWFyb290J10sICdncHRfdGVzdF9zY2gudGJsX3NjaAogU0VMRUNUICogRlJPTSB0ZXN0 X2dwdChBUlJBWVsncHViX2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcmVudCcpOyAt LSBubyByZXN1bHQgKGV4Y2x1ZGVkKQogU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsncHVi X2FsbF9leGNlcHRfbm9fdmlhcm9vdCddLCAndGJsX3BhcnQxJyk7IC0tIG5vIHJlc3VsdAogCist LSB0ZXN0IGZvciBFWENFUFQgY2xhdXNlIHdpdGggc2NoZW1hIHB1YmxpY2F0aW9uIChidWc6IGV4 Y2x1ZGVkIHRhYmxlIHdhcyBpbmNvcnJlY3RseSByZXR1cm5lZCkKK1NFTEVDVCAqIEZST00gdGVz dF9ncHQoQVJSQVlbJ3B1Yl9zY2hlbWFfZXhjZXB0J10sICdncHRfdGVzdF9zY2gudGJsX3NjaCcp OyAtLSBubyByZXN1bHQgKGV4Y2x1ZGVkKQorU0VMRUNUICogRlJPTSB0ZXN0X2dwdChBUlJBWVsn cHViX3NjaGVtYV9leGNlcHQnXSwgJ2dwdF90ZXN0X3NjaC50Ymxfc2NoMicpOyAtLSBvbmUgcm93 IChpbmNsdWRlZCB2aWEgc2NoZW1hKQorCiAtLSB0d28gcm93cyB3aXRoIGRpZmZlcmVudCByb3cg ZmlsdGVyCiBTRUxFQ1QgKiBGUk9NIHRlc3RfZ3B0KEFSUkFZWydwdWJfYWxsJywgJ3B1Yl9ub3Jt YWwnXSwgJ3RibF9ub3JtYWwnKTsKIApAQCAtMTUzOCw2ICsxNjIzLDcgQEAgRFJPUCBQVUJMSUNB VElPTiBwdWJfYWxsX25vX3ZpYXJvb3Q7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1Yl9hbGxfZXhjZXB0 OwogRFJPUCBQVUJMSUNBVElPTiBwdWJfYWxsX2V4Y2VwdF9ub192aWFyb290OwogRFJPUCBQVUJM SUNBVElPTiBwdWJfc2NoZW1hOworRFJPUCBQVUJMSUNBVElPTiBwdWJfc2NoZW1hX2V4Y2VwdDsK IERST1AgUFVCTElDQVRJT04gcHViX25vcm1hbDsKIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRf bGVhZjsKIERST1AgUFVCTElDQVRJT04gcHViX3BhcnRfcGFyZW50OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzN19leGNlcHQucGwKaW5kZXggOGM1OGQyODJlZWUuLjE4YzdiMmMxZmNhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTI0LDE0ICsyNCwxNyBAQCBteSAkcmVz dWx0OwogCiBzdWIgdGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24KIHsKLQlteSAoJHB1YnZpYXJv b3QpID0gQF87CisJbXkgKCRwdWJ2aWFyb290LCAkcHVic3FsKSA9IEBfOworCSRwdWJzcWwgLy89 CisJICAiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJvb3QxKSI7CisJJHB1YnNxbCAuPSAiIFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRp dGlvbl9yb290ID0gJHB1YnZpYXJvb3QpIjsKIAogCSMgSWYgdGhlIHJvb3QgcGFydGl0aW9uZWQg dGFibGUgaXMgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGFsbCBpdHMKIAkjIHBhcnRpdGlvbnMgYXJl IGV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlCiAJIyBwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCBzZXR0aW5nLgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAogCQkncG9zdGdyZXMnLCBxcSgKLQkJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCBG T1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJvb3QxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9ICRwdWJ2aWFyb290KTsKKwkJJHB1YnNxbDsKIAkJSU5TRVJUIElOVE8gcm9v dDEgVkFMVUVTICgxKSwgKDEwMSk7CiAJKSk7CiAJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCkBAIC0yMjMsNiArMjI2LDEzMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCiB0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlvbignZmFsc2UnKTsKIHRlc3RfZXhjZXB0 X3Jvb3RfcGFydGl0aW9uKCd0cnVlJyk7CiAKKyMgU2FtZSB2YWxpZGF0aW9uIHVzaW5nIFRBQkxF UyBJTiBTQ0hFTUEgaW5zdGVhZCBvZiBGT1IgQUxMIFRBQkxFUy4KK215ICRzY2hlbWFfcHViID0K KyAgIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHVibGljIEVYQ0VQVCAoVEFCTEUgcHVibGljLnJvb3QxKSI7Cit0ZXN0X2V4Y2VwdF9yb290X3Bh cnRpdGlvbignZmFsc2UnLCAkc2NoZW1hX3B1Yik7Cit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlv bigndHJ1ZScsICRzY2hlbWFfcHViKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorIyBFWENFUFQgdGVzdCBjYXNlcyBmb3IgVEFCTEVTIElOIFNDSEVN QQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIENy ZWF0ZSBhIGRlZGljYXRlZCBzY2hlbWEgd2l0aCB0d28gdGFibGVzOiBvbmUgdG8gYmUgcHVibGlz aGVkIGFuZCBvbmUgdG8gYmUKKyMgZXhjbHVkZWQuICBBbHNvIGNyZWF0ZSBpbmhlcml0ZWQgdGFi bGVzIHRvIHZlcmlmeSBPTkxZIHNlbWFudGljcy4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUg c2NoMS50YWJfcHVibGlzaGVkIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBBUyBhOwor CUNSRUFURSBUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVz KDEsNSkgQVMgYTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJlbnQgKGEgaW50KTsKKwlDUkVBVEUg VEFCTEUgc2NoMS5jaGlsZCAoYiBpbnQpIElOSEVSSVRTIChzY2gxLnBhcmVudCk7CispKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBT Q0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWJfcHVibGlzaGVkIChhIGludCk7CisJ Q1JFQVRFIFRBQkxFIHNjaDEudGFiX2V4Y2x1ZGVkIChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNj aDEucGFyZW50IChhIGludCk7CisJQ1JFQVRFIFRBQkxFIHNjaDEuY2hpbGQgKGIgaW50KSBJTkhF UklUUyAoc2NoMS5wYXJlbnQpOworKSk7CisKKyMgQmFzaWMgdGVzdDogaW5pdGlhbCBzeW5jIHJl c3BlY3RzIEVYQ0VQVC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBQVUJMSUNBVElPTiBzY2hfcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDEgRVhD RVBUIChUQUJMRSBzY2gxLnRhYl9leGNsdWRlZCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2NoX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNjaF9wdWIiCispOworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAn c2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCIpOwor aXMoJHJlc3VsdCwgcXEoNSksCisJJ1RBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBpbml0aWFsIHN5 bmMgY29waWVzIGluY2x1ZGVkIHRhYmxlJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFi X2V4Y2x1ZGVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENF UFQ6IGluaXRpYWwgc3luYyBza2lwcyBleGNsdWRlZCB0YWJsZScpOworCisjIERNTDogb25seSB0 aGUgaW5jbHVkZWQgdGFibGUgc2hvdWxkIGJlIHJlcGxpY2F0ZWQuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9wdWJs aXNoZWQgVkFMVUVTICg2KTsKKwlJTlNFUlQgSU5UTyBzY2gxLnRhYl9leGNsdWRlZCBWQUxVRVMg KDYpOworKSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NjaF9zdWInKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQs IHFxKDYpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1MIG9uIGluY2x1ZGVkIHRhYmxl IGlzIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfZXhjbHVkZWQi KTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogRE1MIG9u IGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCByZXBsaWNhdGVkJyk7CisKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2No X3B1YicpOworCisjIEluaGVyaXRlZCB0YWJsZXM6IGV4Y2x1ZGluZyB0aGUgcGFyZW50ICh3aXRo b3V0IE9OTFkpIGFsc28gZXhjbHVkZXMgdGhlIGNoaWxkLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgc2NoMSBFWENFUFQgKFRBQkxFIHNjaDEucGFyZW50KSIKKyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBz Y2hfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2NoX3B1 YiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9k ZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHNjaDEuY2hpbGQgVkFMVUVTIChnZW5lcmF0ZV9zZXJp ZXMoMSw1KSwgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpIgorKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnc2NoX3N1YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLmNoaWxk Iik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IGV4Y2x1 ZGluZyBwYXJlbnQgKHdpdGhvdXQgT05MWSkgYWxzbyBleGNsdWRlcyBjaGlsZCcKKyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04g c2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag UFVCTElDQVRJT04gc2NoX3B1YicpOworCisjIFRlc3QgdGhhdCBFWENFUFQgKFRBQkxFIE9OTFkg cGFyZW50KSBleGNsdWRlcyBvbmx5IHRoZSBwYXJlbnQgaXRzZWxmLCBub3QgaXRzCisjIGNoaWxk LiAgVHJ1bmNhdGUgY2hpbGQgZmlyc3Qgc28gcm93cyBmcm9tIHRoZSBwcmV2aW91cyB0ZXN0IGFy ZSBub3QgY29waWVkIGJ5CisjIHRoZSBpbml0aWFsIHRhYmxlIHN5bmMgb2YgdGhlIG5leHQgc3Vi c2NyaXB0aW9uLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5D QVRFIHNjaDEuY2hpbGQnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnVFJVTkNBVEUgc2NoMS5jaGlsZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHNjaF9wdWIgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgc2NoMSBFWENFUFQgKFRBQkxFIE9OTFkgc2NoMS5wYXJlbnQpIgorKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHNjaF9z dWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBzY2hfcHViIgor KTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1 Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gc2NoMS5jaGlsZCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcygx LDUpLCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSkiCispOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCdzY2hfc3ViJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEuY2hpbGQiKTsK K2lzKCRyZXN1bHQsIHFxKDUpLAorCSdUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVDogT05MWSBwYXJl bnQgaW4gRVhDRVBUIGRvZXMgbm90IGV4Y2x1ZGUgY2hpbGQnKTsKKworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBz Y2hfcHViJyk7CisKKyMgQ2xlYW51cCBzY2hlbWEgdGFibGVzIGJlZm9yZSB0aGUgbXVsdGktcHVi bGljYXRpb24gc2VjdGlvbi4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdEUk9QIFNDSEVNQSBzY2gxIENBU0NBREUnKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBDQVNDQURFJyk7CisKICMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVGVzdCB3aGVuIGEgc3Vic2Ny aXB0aW9uIGlzIHN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1YmxpY2F0aW9ucwogIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjU0LDYgKzM4Miw3IEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCURST1AgUFVCTElDQVRJT04gdGFwX3B1YjI7 CiAJVFJVTkNBVEUgdGFiMTsKICkpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJVTkNBVEUgdGFiMSkpOwogCiAjIE9LIHdoZW4gYSB0 YWJsZSBpcyBleGNsdWRlZCBieSBwdWIxIEVYQ0VQVCBjbGF1c2UsIGJ1dCBpdCBpcyBpbmNsdWRl ZCBieSBwdWIyCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000004034ae0653d484a4 Content-Type: application/octet-stream; name="v11-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Disposition: attachment; filename="v11-0002-Add-EXCEPT-support-to-ALTER-PUBLICATION-ADD-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6ufhbp1 RnJvbSBmYjNhMjk4NjBhMmQ5Y2E2OWQ0NTU5ZWExMTdkZjk5YzYyODZmM2IzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBGcmksIDI5IE1heSAyMDI2IDIwOjA0OjU3ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 MTEgMi8zXSBBZGQgRVhDRVBUIHN1cHBvcnQgdG8gQUxURVIgUFVCTElDQVRJT04gQUREIFRBQkxF UyBJTgogU0NIRU1BCgpFeHRlbmQgdGhlIEVYQ0VQVCBjbGF1c2Ugc3VwcG9ydCB0byBhbGxvdyB0 YWJsZXMgdG8gYmUgZXhjbHVkZWQgd2hlbgphZGRpbmcgYSBzY2hlbWEgdG8gYSBwdWJsaWNhdGlv biB2aWEgQUxURVIgUFVCTElDQVRJT04gLi4uIEFERC4KClN5bnRheDoKICBBTFRFUiBQVUJMSUNB VElPTiBwdWIgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcyBFWENFUFQgKFRBQkxFIHMudDEpOwoKU2lu Y2UgcGdfZHVtcCB1c2VzIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBBREQsIHN1cHBvcnQgZm9yIGl0 IGlzCmluY2x1ZGVkIGluIHRoaXMgcGF0Y2guCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9w dWJsaWNhdGlvbi5zZ21sICAgfCAgNDAgKysrKysrKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cHVibGljYXRpb24uYyAgICAgIHwgIDE5ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgIHwgIDMwICsrKysrLQogc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgfCAgMjQgKysrKysKIHNyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgIHwgIDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDMyICsrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgIHwgIDIwICsrKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAzN19leGNlcHQucGwgICAgIHwgIDMyICsrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMzA2 IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbAppbmRleCA1MjExNGExNmEzOS4uMzI2OTc4ZGE0NTQgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMxLDcgKzMxLDcgQEAgQUxURVIgUFVC TElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4K IAogICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29s dW1uczwvcmVwbGFjZWFibGU+IFssIC4uLiBdCi0gICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VS UkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQorICAgIFRBQkxFUyBJTiBTQ0hFTUEgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlc19pbl9zY2hlbWE8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XQogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fYWxsX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtNDcs NiArNDcsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKIAogICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdIFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwv cmVwbGFjZWFibGU+ICkgXQogCis8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVzX2luX3NjaGVtYTwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAg eyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxl PiB8IENVUlJFTlRfU0NIRU1BIH0gWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhjZXB0X3RhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3RhYmxlX29i amVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdCkBA IC0xMTAsNiArMTE0LDE0IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICA8bGl0ZXJhbD5B REQgVEFCTEU8L2xpdGVyYWw+LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBUaGUgPGxpdGVy YWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2UgY2FuIGJlIHVzZWQgd2l0aAorICAgPGxpdGVyYWw+ QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVz IGZyb20gdGhlCisgICBwdWJsaWNhdGlvbi4gVXNpbmcgPGxpdGVyYWw+RFJPUCBUQUJMRVMgSU4g U0NIRU1BPC9saXRlcmFsPiBvbiBhIHB1YmxpY2F0aW9uCisgICB3aWxsIGF1dG9tYXRpY2FsbHkg YWxzbyByZW1vdmUgYW55IGFzc29jaWF0ZWQgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPgorICAg ZW50cmllcy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIGZvdXJ0aCB2YXJpYW50IG9m IHRoaXMgY29tbWFuZCBsaXN0ZWQgaW4gdGhlIHN5bm9wc2lzIGNhbiBjaGFuZ2UKICAgIGFsbCBv ZiB0aGUgcHVibGljYXRpb24gcHJvcGVydGllcyBzcGVjaWZpZWQgaW4KQEAgLTE5OCw2ICsyMTAs MjIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+RVhDRVBU ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgV2hlbiB1c2VkIHdpdGggPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBT Q0hFTUE8L2xpdGVyYWw+LCBzcGVjaWZpZXMKKyAgICAgIHRhYmxlcyB0byBiZSBleGNsdWRlZCBm cm9tIHRoZSBwdWJsaWNhdGlvbi4gIEVhY2ggbmFtZWQKKyAgICAgIHRhYmxlIG11c3QgYmVsb25n IHRvIHRoZSBzY2hlbWEgc3BlY2lmaWVkIGluIHRoZSBzYW1lCisgICAgICA8bGl0ZXJhbD5UQUJM RVMgSU4gU0NIRU1BPC9saXRlcmFsPiBjbGF1c2UuICBUYWJsZSBuYW1lcyBtYXkgYmUKKyAgICAg IHNjaGVtYS1xdWFsaWZpZWQgb3IgdW5xdWFsaWZpZWQ7IHVucXVhbGlmaWVkIG5hbWVzIGFyZSBp bXBsaWNpdGx5CisgICAgICBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hIG5hbWVkIGluIHRoZSBz YW1lIGNsYXVzZS4gIFNlZQorICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXB1YmxpY2F0 aW9uIi8+IGZvciBmdXJ0aGVyIGRldGFpbHMgb24gdGhlCisgICAgICBzZW1hbnRpY3Mgb2YgPGxp dGVyYWw+RVhDRVBUPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJh bD5TRVQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1l dGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KQEAgLTI4OCw2ICszMTYsMTYgQEAgQUxURVIgUFVCTElDQVRJT04gc2FsZXNfcHVibGljYXRp b24gQUREIFRBQkxFUyBJTiBTQ0hFTUEgbWFya2V0aW5nLCBzYWxlczsKIDwvcHJvZ3JhbWxpc3Rp bmc+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIEFkZCBzY2hlbWEgPHN0cnVjdG5hbWU+c2Fs ZXM8L3N0cnVjdG5hbWU+IHRvIHRoZSBwdWJsaWNhdGlvbgorICAgPHN0cnVjdG5hbWU+c2FsZXNf cHVibGljYXRpb248L3N0cnVjdG5hbWU+LCBleGNsdWRpbmcgdGhlCisgICA8c3RydWN0bmFtZT5z YWxlcy5pbnRlcm5hbDwvc3RydWN0bmFtZT4gYW5kCisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFm dHM8L3N0cnVjdG5hbWU+IHRhYmxlczoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FU SU9OIHNhbGVzX3B1YmxpY2F0aW9uIEFERCBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAo VEFCTEUgaW50ZXJuYWwsIGRyYWZ0cyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisK ICAgPHBhcmE+CiAgICBBZGQgdGFibGVzIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiwK ICAgIDxzdHJ1Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPiBhbmQgc2NoZW1hCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggNDA4OWI1MDVmODkuLmQxZmY4ODM5MDM3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC02NDksMTUgKzY0OSwxOCBA QCBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8g KnByaSwKIAkgKiBoZXJlLCBhcyBDcmVhdGVQdWJsaWNhdGlvbigpIGZ1bmN0aW9uIGludmFsaWRh dGVzIGFsbCByZWxhdGlvbnMgYXMgcGFydAogCSAqIG9mIGRlZmluaW5nIGEgRk9SIEFMTCBUQUJM RVMgcHVibGljYXRpb24uCiAJICoKLQkgKiBGb3IgQUxURVIgUFVCTElDQVRJT04sIGludmFsaWRh dGlvbiBpcyBuZWVkZWQgb25seSB3aGVuIGFkZGluZyBhbgotCSAqIEVYQ0VQVCB0YWJsZSB0byBh IHB1YmxpY2F0aW9uIGFscmVhZHkgbWFya2VkIGFzIEFMTCBUQUJMRVMuIEZvcgotCSAqIHB1Ymxp Y2F0aW9ucyB0aGF0IHdlcmUgb3JpZ2luYWxseSBlbXB0eSBvciBkZWZpbmVkIGFzIEFMTCBTRVFV RU5DRVMgYW5kCi0JICogYXJlIGJlaW5nIGNvbnZlcnRlZCB0byBBTEwgVEFCTEVTLCBpbnZhbGlk YXRpb24gaXMgc2tpcHBlZCBoZXJlLCBhcwotCSAqIEFsdGVyUHVibGljYXRpb25BbGxGbGFncygp IGZ1bmN0aW9uIGludmFsaWRhdGVzIGFsbCByZWxhdGlvbnMgd2hpbGUKLQkgKiBtYXJraW5nIHRo ZSBwdWJsaWNhdGlvbiBhcyBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uLgorCSAqIEZvciBBTFRFUiBQ VUJMSUNBVElPTiwgaW52YWxpZGF0aW9uIGlzIG5lZWRlZCB3aGVuIGFkZGluZyBhbiBFWENFUFQK KwkgKiB0YWJsZSB0byBlaXRoZXIgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiAocHViLT5h bGx0YWJsZXMgaXMgdHJ1ZSkKKwkgKiBvciBhIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0 aW9uIChpc19zY2hlbWFfcHVibGljYXRpb24gaXMgdHJ1ZSkuCisJICogVGhlIGV4Y2VwdGlvbjog d2hlbiBhIHB1YmxpY2F0aW9uIGlzIGJlaW5nIGNvbnZlcnRlZCB0byBGT1IgQUxMIFRBQkxFUwor CSAqIChwdWItPmFsbHRhYmxlcyBpcyBzdGlsbCBmYWxzZSBhdCB0aGlzIHBvaW50KSwKKwkgKiBB bHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoKSB3aWxsIHBlcmZvcm0gYSBmdWxsIGludmFsaWRhdGlv biwgc28gd2Ugc2tpcAorCSAqIGl0IGhlcmUuCiAJICovCi0JaW52YWxfZXhjZXB0X3RhYmxlID0g KGFsdGVyX3N0bXQgIT0gTlVMTCkgJiYgcHViLT5hbGx0YWJsZXMgJiYKLQkJKGFsdGVyX3N0bXQt PmZvcl9hbGxfdGFibGVzICYmIHByaS0+ZXhjZXB0KTsKKwlpbnZhbF9leGNlcHRfdGFibGUgPSAo YWx0ZXJfc3RtdCAhPSBOVUxMKSAmJiBwcmktPmV4Y2VwdCAmJgorCQkocHViLT5hbGx0YWJsZXMK KwkJID8gYWx0ZXJfc3RtdC0+Zm9yX2FsbF90YWJsZXMKKwkJIDogaXNfc2NoZW1hX3B1YmxpY2F0 aW9uKHB1YmlkKSk7CiAKIAlpZiAoIXByaS0+ZXhjZXB0IHx8IGludmFsX2V4Y2VwdF90YWJsZSkK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDg3Njg5OGFhNDg3 Li45ZmE1ZjRiZjY3YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAg LTcwLDYgKzcwLDEzIEBAIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlv bkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMs CiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVi bGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2lu Z19vayk7CitzdGF0aWMgdm9pZCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0 aW9uU3RtdCAqc3RtdCwKKwkJCQkJCQkJCUhlYXBUdXBsZSB0dXAsIExpc3QgKnNjaGVtYWlkbGlz dCwKKwkJCQkJCQkJCUxpc3QgKmV4Y2VwdF9wdWJ0YWJsZXMpOworc3RhdGljIHZvaWQgQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwK KwkJCQkJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwKKwkJCQkJCQkJCQkJICAgTGlzdCAqZXhjZXB0 X3B1YnRhYmxlcywKKwkJCQkJCQkJCQkJICAgTGlzdCAqc2NoZW1haWRsaXN0KTsKIHN0YXRpYyBj aGFyIGRlZkdldEdlbmVyYXRlZENvbHNPcHRpb24oRGVmRWxlbSAqZGVmKTsKIAogCkBAIC0xNTAw LDcgKzE1MDcsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10 ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogICovCiBzdGF0aWMgdm9pZAogQWx0ZXJQdWJsaWNhdGlv blNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCi0JCQkJCQlIZWFwVHVwbGUgdHVw LCBMaXN0ICpzY2hlbWFpZGxpc3QpCisJCQkJCQlIZWFwVHVwbGUgdHVwLCBMaXN0ICpzY2hlbWFp ZGxpc3QsCisJCQkJCQlMaXN0ICpleGNlcHRfcHVidGFibGVzKQogewogCUZvcm1fcGdfcHVibGlj YXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApA QCAtMTU3Nyw2ICsxNTg1LDk3IEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQkgKi8KIAkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0t Pm9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBzdG10KTsKIAl9CisKKwkvKgorCSAqIEluY3JlbWVu dCB0aGUgY29tbWFuZCBjb3VudGVyIHNvIHRoYXQgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4K KwkgKiBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNl cnRlZCBzY2hlbWEKKwkgKiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRh YmxlcyBydW5zIG5leHQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3Rz IHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKQorCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOworCisJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhzdG10LCB0dXAs IGV4Y2VwdF9wdWJ0YWJsZXMsIHNjaGVtYWlkbGlzdCk7Cit9CisKKy8qCisgKiBBbHRlciB0aGUg RVhDRVBUIGxpc3Qgb2YgYSBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb24uCisgKgorICogQWRkcywg cmVtb3Zlcywgb3IgcmVwbGFjZXMgZXhjZXB0LXRhYmxlIGVudHJpZXMgaW4gcGdfcHVibGljYXRp b25fcmVsCisgKiAocm93cyB3aXRoIHByZXhjZXB0ID0gdHJ1ZSkuICBUaGVzZSBlbnRyaWVzIHN1 cHByZXNzIHB1YmxpY2F0aW9uIG9mIHRoZQorICogbmFtZWQgdGFibGVzIHRoYXQgd291bGQgb3Ro ZXJ3aXNlIGJlIGNvdmVyZWQgYnkgYSBGT1IgVEFCTEVTIElOIFNDSEVNQQorICogY2xhdXNlLgor ICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyhBbHRl clB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKKwkJCQkJCQkgSGVhcFR1cGxlIHR1cCwgTGlzdCAqZXhj ZXB0X3B1YnRhYmxlcywKKwkJCQkJCQkgTGlzdCAqc2NoZW1haWRsaXN0KQoreworCUZvcm1fcGdf cHVibGljYXRpb24gcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVw KTsKKwlPaWQJCQlwdWJpZCA9IHB1YmZvcm0tPm9pZDsKKworCS8qCisJICogTm90aGluZyB0byBk byBpZiBubyBFWENFUFQgZW50cmllcy4KKwkgKi8KKwlpZiAoIWV4Y2VwdF9wdWJ0YWJsZXMpCisJ CXJldHVybjsKKworCS8qCisJICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEVYQ0VQVCBlbnRyaWVz IGZvciBzY2hlbWEtbGV2ZWwgcHVibGljYXRpb25zCisJICogb25seS4gIEZvciBGT1IgQUxMIFRB QkxFUyBwdWJsaWNhdGlvbnMsIEVYQ0VQVCBlbnRyaWVzIGFyZSBhbHJlYWR5CisJICogcHJvY2Vz c2VkIGJ5IEFsdGVyUHVibGljYXRpb25UYWJsZXMoKS4KKwkgKi8KKwlpZiAoc2NoZW1haWRsaXN0 ID09IE5JTCAmJiAhaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmlkKSkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBEcm9wcGluZyBhIHNjaGVtYSBmcm9tIGEgcHVibGljYXRpb24gcmVtb3ZlcyBhbGwg aXRzIEVYQ0VQVCBlbnRyaWVzIHZpYQorCSAqIGNhc2NhZGUuIFRoZSBjb25jZXB0IG9mICJkcm9w IGFsbCBzY2hlbWEgdGFibGVzIGZyb20gdGhlIHB1YmxpY2F0aW9uCisJICogRVhDRVBUIHRoZXNl IG9uZXMiIGlzIG5vdCBzdXBwb3J0ZWQuCisJICovCisJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9E cm9wT2JqZWN0cykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiRVhDRVBUIGNsYXVzZSBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTiIpKSk7CisKKwkvKgorCSAqIFhY WCBFWENFUFQgd2l0aCBTRVQgaXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZC4gIFdvcmthcm91 bmQ6IERST1AgYW5kCisJICogcmUtQUREIHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENF UFQgbGlzdC4KKwkgKi8KKwlpZiAoc3RtdC0+YWN0aW9uID09IEFQX1NldE9iamVjdHMpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCSBlcnJtc2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIFNFVCBp biBBTFRFUiBQVUJMSUNBVElPTiIpLAorCQkJCSBlcnJoaW50KCJEcm9wIGFuZCByZS1hZGQgdGhl IHNjaGVtYSB3aXRoIHRoZSBkZXNpcmVkIEVYQ0VQVCBsaXN0LiIpKSk7CisKKwlpZiAoc3RtdC0+ YWN0aW9uID09IEFQX0FkZE9iamVjdHMpCisJeworCQlMaXN0CSAgICpyZWxzOworCQlMaXN0CSAg ICpleHBsaWNpdHJlbGlkczsKKworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNlcHRfcHVidGFi bGVzKTsKKworCQlleHBsaWNpdHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCisJCQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8q CisJCSAqIFZhbGlkYXRlIHRoYXQgZWFjaCBleGNsdWRlZCB0YWJsZSBpcyBub3QgYWxzbyBpbiB0 aGUgZXhwbGljaXQgdGFibGUKKwkJICogbGlzdCAod2hpY2ggd291bGQgYmUgY29udHJhZGljdG9y eSkuCisJCSAqLworCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvblJlbEluZm8sIHByaSwgcmVscykK KwkJeworCQkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHByaS0+cmVsYXRpb24pOwor CisJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGV4cGxpY2l0cmVsaWRzLCByZWxpZCkpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJCQllcnJtc2coInRhYmxlIFwiJXNcIiBjYW5ub3QgYXBwZWFyIGluIGJvdGggdGhl IHRhYmxlIGxpc3QgYW5kIHRoZSBFWENFUFQgY2xhdXNlIiwKKwkJCQkJCQkgICBSZWxhdGlvbkdl dFF1YWxpZmllZFJlbGF0aW9uTmFtZShwcmktPnJlbGF0aW9uKSkpOworCQl9CisKKwkJUHVibGlj YXRpb25BZGRUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKKworCQlDbG9zZVRhYmxl TGlzdChyZWxzKTsKKwl9CiB9CiAKIC8qCkBAIC0xNzg2LDEwICsxODg1LDEyIEBAIEFsdGVyUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkK IAkJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAogCQkJCQkJ ICAgc3RtdC0+cHVibmFtZSkpOwogCi0JCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0aW9u cywgZXhjZXB0X3B1YnRhYmxlcyk7CisJCWlmIChzdG10LT5mb3JfYWxsX3RhYmxlcykKKwkJCXJl bGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0aW9ucywgZXhjZXB0X3B1YnRhYmxlcyk7CisKIAkJ QWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywgcHN0YXRlLT5wX3Nv dXJjZXRleHQsCiAJCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCk7Ci0JCUFsdGVyUHVibGlj YXRpb25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKKwkJQWx0ZXJQdWJsaWNhdGlv blNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QsIGV4Y2VwdF9wdWJ0YWJsZXMpOwogCQlB bHRlclB1YmxpY2F0aW9uQWxsRmxhZ3Moc3RtdCwgcmVsLCB0dXApOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK aW5kZXggYTBmN2Y4ZTIxNjguLjg1YWIzYjAwODc1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTUwMTksNiAr NTAxOSw3IEBAIGR1bXBQdWJsaWNhdGlvbk5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBQ dWJsaWNhdGlvblNjaGVtYUluZm8gKnB1YnNpbmZvKQogCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5m byA9IHB1YnNpbmZvLT5wdWJsaWNhdGlvbjsKIAlQUUV4cEJ1ZmZlciBxdWVyeTsKIAljaGFyCSAg ICp0YWc7CisJYm9vbAkJaGFzX2V4Y2VwdCA9IGZhbHNlOwogCiAJLyogRG8gbm90aGluZyBpZiBu b3QgZHVtcGluZyBzY2hlbWEgKi8KIAlpZiAoIWRvcHQtPmR1bXBTY2hlbWEpCkBAIC01MDI5LDcg KzUwMzAsMzQgQEAgZHVtcFB1YmxpY2F0aW9uTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQsIGNvbnN0 IFB1YmxpY2F0aW9uU2NoZW1hSW5mbyAqcHVic2luZm8pCiAJcXVlcnkgPSBjcmVhdGVQUUV4cEJ1 ZmZlcigpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBTFRFUiBQVUJMSUNBVElPTiAl cyAiLCBmbXRJZChwdWJpbmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwgIkFERCBUQUJMRVMgSU4gU0NIRU1BICVzO1xuIiwgZm10SWQoc2NoZW1haW5mby0+ZG9iai5u YW1lKSk7CisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQgVEFCTEVTIElOIFNDSEVNQSAl cyIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOworCisJLyoKKwkgKiBBcHBlbmQgRVhD RVBUIGNsYXVzZSBmb3IgYW55IHRhYmxlcyB0aGF0IGJlbG9uZyB0byB0aGlzIHNjaGVtYQorCSAq IGFuZCBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVibGljYXRpb24uCisJICovCisJZm9yIChTaW1w bGVQdHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF90YWJsZXMuaGVhZDsgY2VsbDsg Y2VsbCA9IGNlbGwtPm5leHQpCisJeworCQlUYWJsZUluZm8gICp0YmluZm8gPSAoVGFibGVJbmZv ICopIGNlbGwtPnB0cjsKKworCQlpZiAoc3RyY21wKHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRv YmoubmFtZSwgc2NoZW1haW5mby0+ZG9iai5uYW1lKSA9PSAwKQorCQl7CisJCQlpZiAoIWhhc19l eGNlcHQpCisJCQl7CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRVhDRVBUICgi KTsKKwkJCQloYXNfZXhjZXB0ID0gdHJ1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiwgIik7CisKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAi VEFCTEUgT05MWSAlcyIsIGZtdElkKHRiaW5mby0+ZG9iai5uYW1lKSk7CisJCX0KKwl9CisKKwlp ZiAoaGFzX2V4Y2VwdCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIpIik7CisKKwlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIjtcbiIpOwogCiAJLyoKIAkgKiBUaGVyZSBpcyBu byBwb2ludCBpbiBjcmVhdGluZyBkcm9wIHF1ZXJ5IGFzIHRoZSBkcm9wIGlzIGRvbmUgYnkgc2No ZW1hCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDNlZTlmZGE1MGU0Li5iOGY0YWE3Njll YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMyNDIsNiArMzI0MiwzMCBAQCBteSAl dGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAx LCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExJyA9PiB7CisJCWNyZWF0ZV9v cmRlciA9PiA1MCwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHVi MTEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdF90YWJs ZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIFdJ VEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJ Lio/CisJCQlcUUFMVEVSIFBVQkxJQ0FUSU9OIHB1YjExIEFERCBUQUJMRVMgSU4gU0NIRU1BIGR1 bXBfdGVzdCBFWENFUFQgKFRBQkxFIE9OTFkgdGVzdF90YWJsZSk7XEUKKwkJCS94bXMsCisJCWxp a2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwkn Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJ Y3JlYXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTIgRk9SIFRBQkxFUyBJ TiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdF90YWJsZSwgZHVtcF90ZXN0LnRl c3Rfc2Vjb25kX3RhYmxlKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgUFVCTElD QVRJT04gcHViMTIgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVu Y2F0ZScpO1xFCisJCQkuKj8KKwkJCVxRQUxURVIgUFVCTElDQVRJT04gcHViMTIgQUREIFRBQkxF UyBJTiBTQ0hFTUEgZHVtcF90ZXN0IEVYQ0VQVCAoVEFCTEUgT05MWSB0ZXN0X3RhYmxlLCBUQUJM RSBPTkxZIHRlc3Rfc2Vjb25kX3RhYmxlKTtcRQorCQkJL3htcywKKwkJbGlrZSA9PiB7ICVmdWxs X3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUgU1VCU0NS SVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA1M2Ji N2M4Njc5Yi4uYTI5MDkwMmQ2MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzNzMsNiAr MjM3MywyMyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExF VEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMKIAkJCQkJCQkJICIg QU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKIAkJCQkJCQkJICJDVVJSRU5UX1ND SEVNQSIpOworCS8qIEFmdGVyIGEgc2luZ2xlIHNjaGVtYSBuYW1lIGluIEFERCBjb250ZXh0LCBv ZmZlciBFWENFUFQgKCBUQUJMRSAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNo QW55KSAmJgorCQkJICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJQ09NUExFVEVfV0lUSCgi RVhDRVBUICggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiQUREIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwg IkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRIKCIoIFRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hl cygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAiSU4i LCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIKCJU QUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJBREQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsICJDVVJSRU5UX1NDSEVNQSIsICJF WENFUFQiLCAiKCIsICJUQUJMRSIpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJBVElNKFF1 ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9jdXJyZW50X3NjaGVtYSk7CisJZWxzZSBpZiAoTWF0 Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMiLCAi SU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIpKQorCXsKKwkJ c2V0X2NvbXBsZXRpb25fcmVmZXJlbmNlKHByZXY0X3dkKTsKKwkJQ09NUExFVEVfV0lUSF9RVUVS WV9WRVJCQVRJTShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNfaW5fc2NoZW1hKTsKKwl9CisJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJU QUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIs IE1hdGNoQW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRI KCIpIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAoICovCiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgTWF0Y2hBbnlOLCAiU0VU IiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgicHVibGlzaCIsICJwdWJsaXNoX2dlbmVyYXRlZF9j b2x1bW5zIiwgInB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290Iik7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDZkZjQyYTYwZjljLi44YjQ5MjM5YjU3NCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTU2NCwxMiAr NTY0LDQyIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2V4Y2VwdF9ub2t3CiBFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ0ZXN0cHViX25vcGsiCiBMSU5FIDI6ICAgICBGT1Ig VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIHRlc3RzIGZvciBB TFRFUiBQVUJMSUNBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQ7CistLSBmYWls OiBub24tZXhpc3RpbmcgdGFibGUgaW4gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSBwdWJfdGVzdC5ub25leGlzdGVudF90YWJsZSk7CitFUlJPUjogIHJlbGF0aW9uICJw dWJfdGVzdC5ub25leGlzdGVudF90YWJsZSIgZG9lcyBub3QgZXhpc3QKKy0tIGZhaWw6IEVYQ0VQ VCB0YWJsZSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHNjaGVtYQorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9hbHRlcl9leGNlcHQgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBU IChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50ZXN0 cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAicHVi X3Rlc3QiCitMSU5FIDE6IC4uLnhjZXB0IEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVY Q0VQVCAoVEFCTEUgcHVibGljLnRlcy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIGZhaWw6IFRBQkxFIGtleXdvcmQg aXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBpbiBFWENFUFQgY2xhdXNlCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBu ZWFyICJ0ZXN0cHViX25vcGsiCitMSU5FIDE6IC4uLmx0ZXJfZXhjZXB0IEFERCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVzdHB1Yl9uby4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEFERDogcXVh bGlmaWVkIGFuZCB1bnF1YWxpZmllZCBuYW1lczsgdW5xdWFsaWZpZWQgaXMgaW1wbGljaXRseSBx dWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVy X2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90 ZXN0LnRlc3RwdWJfdGJsX3MxLCB0ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0cHViX2FsdGVy X2V4Y2VwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAg IHwgCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKK0V4Y2VwdCB0YWJsZXM6 CisgICAgInB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxIgorICAgICJwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMiIKKwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwogRFJP UCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3BhcnRlZF9zIENBU0NBREU7CiBEUk9QIFRBQkxFIHRl c3RwdWJfbm9waywgdGVzdHB1Yl90YmxfczE7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2No ZW1hX2V4Y2VwdDEsIHRlc3RwdWJfc2NoZW1hX2V4Y2VwdDIsIHRlc3RwdWJfc2NoZW1hX2V4Y2Vw dF9tdWx0aTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1 Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0X211bHRpLCB0ZXN0cHViX2Fs dGVyX2V4Y2VwdDsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogLS0gVGVzdHMgZm9yIHB1YmxpY2F0aW9ucyB3aXRoIFNFUVVFTkNFUwogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNh dGlvbi5zcWwKaW5kZXggYmQ1MjNlMzc2YjIuLmU5Mzg3NDE4OTA0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCkBAIC0yNzgsMTIgKzI3OCwzMCBAQCBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9leGNlcHRfcGFydGl0aW9uCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9l eGNlcHRfbm9rdwogICAgIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAodGVz dHB1Yl9ub3BrKTsKIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSBFWENFUFQgdGVzdHMgZm9yIEFMVEVSIFBVQkxJQ0FUSU9OCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdDsKKworLS0gZmFpbDogbm9uLWV4aXN0aW5nIHRhYmxlIGluIEVYQ0VQ VCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRf dGFibGUpOworCistLSBmYWlsOiBFWENFUFQgdGFibGUgYmVsb25ncyB0byBhIGRpZmZlcmVudCBz Y2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IEFERCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlc3RwdWJfdGJsMSk7CisK Ky0tIGZhaWw6IFRBQkxFIGtleXdvcmQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCBlbnRyeSBp biBFWENFUFQgY2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBB REQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKHRlc3RwdWJfbm9wayk7CisKKy0t IEFERDogcXVhbGlmaWVkIGFuZCB1bnF1YWxpZmllZCBuYW1lczsgdW5xdWFsaWZpZWQgaXMgaW1w bGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxLCB0ZXN0cHViX3RibF9zMik7CitcZFJwKyB0ZXN0 cHViX2FsdGVyX2V4Y2VwdAorCiAtLSBDbGVhbnVwCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX3RibF9zMSwgcHViX3Rlc3QudGVzdHB1Yl90 YmxfczI7CiBEUk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfcGFydGVkX3MgQ0FTQ0FERTsKIERS T1AgVEFCTEUgdGVzdHB1Yl9ub3BrLCB0ZXN0cHViX3RibF9zMTsKLURST1AgUFVCTElDQVRJT04g dGVzdHB1Yl9zY2hlbWFfZXhjZXB0MSwgdGVzdHB1Yl9zY2hlbWFfZXhjZXB0MiwgdGVzdHB1Yl9z Y2hlbWFfZXhjZXB0X211bHRpOworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYV9leGNl cHQxLCB0ZXN0cHViX3NjaGVtYV9leGNlcHQyLCB0ZXN0cHViX3NjaGVtYV9leGNlcHRfbXVsdGks IHRlc3RwdWJfYWx0ZXJfZXhjZXB0OwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIC0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCmluZGV4IDE4YzdiMmMxZmNhLi4wYmE2 ZDZmOGJiMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCkBAIC0zNDcsNiAr MzQ3LDM4IEBAIGlzKCRyZXN1bHQsIHFxKDUpLAogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQUxURVIg UFVCTElDQVRJT04gRVhDRVBUIGZvciBUQUJMRVMgSU4gU0NIRU1BCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgVHJ1bmNhdGUgc3Vic2NyaWJlciB0 YWJsZXMgdG8gcmVtb3ZlIGRhdGEgYWNjdW11bGF0ZWQgZnJvbSBwcmV2aW91cyB0ZXN0cy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdUUlVOQ0FURSBzY2gxLnRh Yl9wdWJsaXNoZWQsIHNjaDEudGFiX2V4Y2x1ZGVkLCBzY2gxLnBhcmVudCwgc2NoMS5jaGlsZCcp OworCisjIEFERDogYWRkIGEgc2NoZW1hIHdpdGggYW4gZXhjZXB0ZWQgdGFibGU7IHZlcmlmeSB0 aGUgZXhjZXB0IGVudHJ5IHRha2VzIGVmZmVjdC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgUFVCTElDQVRJT04gc2NoX3B1YiIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04gc2NoX3B1YiBB REQgVEFCTEVTIElOIFNDSEVNQSBzY2gxIEVYQ0VQVCAoVEFCTEUgc2NoMS50YWJfZXhjbHVkZWQp IgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHNjaF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJM SUNBVElPTiBzY2hfcHViIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikg RlJPTSBzY2gxLnRhYl9wdWJsaXNoZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDYpLAorCSdBTFRFUiAu Li4gQUREIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBpbmNsdWRlZCB0YWJsZSBzeW5jZWQnKTsK KyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfZXhjbHVkZWQiKTsKK2lzKCRyZXN1bHQsIHFx KDApLAorCSdBTFRFUiAuLi4gQUREIFRBQkxFUyBJTiBTQ0hFTUEgRVhDRVBUOiBleGNsdWRlZCB0 YWJsZSBub3Qgc3luY2VkJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc2NoX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gc2NoX3B1YicpOworCiAjIENsZWFu dXAgc2NoZW1hIHRhYmxlcyBiZWZvcmUgdGhlIG11bHRpLXB1YmxpY2F0aW9uIHNlY3Rpb24uCiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTQ0hFTUEgc2NoMSBD QVNDQURFJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag U0NIRU1BIHNjaDEgQ0FTQ0FERScpOwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000004034ae0653d484a4 Content-Type: application/octet-stream; name="v11-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Disposition: attachment; filename="v11-0003-Add-EXCEPT-support-to-ALTER-PUBLICATION-SET-TABL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6ufjl42 RnJvbSA3OWY0OWEwNTY4N2M5YzFkY2Q1MGEwODU0ODIzYmQwY2YxNDgxY2Q0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBUdWUsIDIgSnVuIDIwMjYgMTE6Mzk6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx MSAzLzNdIEFkZCBFWENFUFQgc3VwcG9ydCB0byBBTFRFUiBQVUJMSUNBVElPTiBTRVQgVEFCTEVT IElOCiBTQ0hFTUEKCkV4dGVuZCBBbHRlclB1YmxpY2F0aW9uRXhjZXB0VGFibGVzKCkgd2l0aCB0 aGUgQVBfU2V0T2JqZWN0cyBjYXNlLAp3aGljaCByZWRlZmluZXMgdGhlIHB1YmxpY2F0aW9uIGFu ZCByZXBsYWNlcyB0aGUgZW50aXJlIEVYQ0VQVCBsaXN0LgoKU3ludGF4OgpBTFRFUiBQVUJMSUNB VElPTiBwdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcyBFWENFUFQgKFRBQkxFIHQxKTsKClRoaXMg cGF0Y2ggYWxzbyBjbGVhbnMgdXAgRVhDRVBUIGVudHJpZXMgd2hlbiBhIHNjaGVtYSBpcyBkcm9w cGVkCmZyb20gdGhlIHB1YmxpY2F0aW9uLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCAgICAgfCAgMjcgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgICAgICB8IDEzNSArKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICAxMCArLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICB8ICAxNyArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgfCAgODYgKysrKysrKysrKysrKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICB8ICAzOCArKysrKysKIHNyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwgICAgICAgfCAgODUgKysrKysrKysrKysrCiA3 IGZpbGVzIGNoYW5nZWQsIDM3MSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggMzI2OTc4ZGE0NTQuLjhkZjFm N2EyZTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC05Nyw3 ICs5NywxMSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgogICAgdXNlZCB3aXRoIGEgcHVibGlj YXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKICAgIDxs aXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVwbGFjZXMgdGhlIGxpc3Qg b2YgdGFibGVzL3NjaGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZp ZWQgbGlzdDsgdGhlIGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCi0gICB0aGF0IHdlcmUgcHJl c2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgorICAgdGhhdCB3ZXJlIHBy ZXNlbnQgaW4gdGhlIHB1YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gIFdoZW4KKyAgIDxsaXRl cmFsPlNFVCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBpcyB1c2VkIHdpdGggYW4KKyAgIDxs aXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xhdXNlLCB0aGUgZXhjbHVkZWQgdGFibGVzIGZvciBl YWNoIHNjaGVtYSBhcmUKKyAgIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0OyBpZiA8 bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGlzIG9taXR0ZWQKKyAgIGZvciBhIHNjaGVtYSwgYW55 IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHRoYXQgc2NoZW1hIGFyZSBjbGVhcmVkLgogICA8L3Bh cmE+CiAKICAgPHBhcmE+CkBAIC0xMTYsMTAgKzEyMCw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRP IDxyCiAKICAgPHBhcmE+CiAgICBUaGUgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBjbGF1c2Ug Y2FuIGJlIHVzZWQgd2l0aAotICAgPGxpdGVyYWw+QUREIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVy YWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzIGZyb20gdGhlCi0gICBwdWJsaWNhdGlvbi4g VXNpbmcgPGxpdGVyYWw+RFJPUCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBvbiBhIHB1Ymxp Y2F0aW9uCi0gICB3aWxsIGF1dG9tYXRpY2FsbHkgYWxzbyByZW1vdmUgYW55IGFzc29jaWF0ZWQg PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPgotICAgZW50cmllcy4KKyAgIDxsaXRlcmFsPkFERCBU QUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBmcm9t IGEKKyAgIHNjaGVtYS1sZXZlbCBwdWJsaWNhdGlvbi4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpA QCAtMjE0LDcgKzIxNiw4IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgPHRlcm0+PGxp dGVyYWw+RVhDRVBUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJs ZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAgICAgV2hlbiB1c2VkIHdpdGggPGxpdGVyYWw+QURE IFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCBzcGVjaWZpZXMKKyAgICAgIFdoZW4gdXNlZCB3 aXRoIDxsaXRlcmFsPkFERCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPgorICAgICAgb3IgPGxp dGVyYWw+U0VUIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCBzcGVjaWZpZXMKICAgICAgIHRh YmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gIEVhY2ggbmFtZWQKICAg ICAgIHRhYmxlIG11c3QgYmVsb25nIHRvIHRoZSBzY2hlbWEgc3BlY2lmaWVkIGluIHRoZSBzYW1l CiAgICAgICA8bGl0ZXJhbD5UQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBjbGF1c2UuICBUYWJs ZSBuYW1lcyBtYXkgYmUKQEAgLTMyNiw2ICszMjksMTggQEAgQUxURVIgUFVCTElDQVRJT04gc2Fs ZXNfcHVibGljYXRpb24gQUREIFRBQkxFUyBJTiBTQ0hFTUEgc2FsZXMgRVhDRVBUIChUQUJMRSBp bnQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFJlcGxhY2Ug dGhlIHNjaGVtYSBsaXN0IG9mIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1YmxpY2F0aW9uPC9zdHJ1Y3Ru YW1lPiB3aXRoCisgICA8c3RydWN0bmFtZT5zYWxlczwvc3RydWN0bmFtZT4sIGV4Y2x1ZGluZyBv bmx5CisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFmdHM8L3N0cnVjdG5hbWU+LiBPdGhlciB0aGFu CisgICA8c3RydWN0bmFtZT5zYWxlcy5kcmFmdHM8L3N0cnVjdG5hbWU+LCBhbnkgcHJldmlvdXNs eSBleGNsdWRlZCB0YWJsZXMgZm9yIHNjaGVtYQorICAgPHN0cnVjdG5hbWU+c2FsZXM8L3N0cnVj dG5hbWU+IGFyZSBubyBsb25nZXIgZXhjbHVkZWQuIEFueSBzY2hlbWFzIHByZXZpb3VzbHkgaW4K KyAgIDxzdHJ1Y3RuYW1lPnNhbGVzX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPiBhcmUgcmVtb3Zl ZDoKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFBVQkxJQ0FUSU9OIHNhbGVzX3B1YmxpY2F0aW9u IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHNhbGVzIEVYQ0VQVCAoVEFCTEUgZHJhZnRzKTsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIEFkZCB0YWJsZXMgPHN0cnVj dG5hbWU+dXNlcnM8L3N0cnVjdG5hbWU+LAogICAgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0 cnVjdG5hbWU+IGFuZCBzY2hlbWEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK aW5kZXggOWZhNWY0YmY2N2EuLjczZTc3Yjg4NGRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJs aWNhdGlvbmNtZHMuYwpAQCAtMTU4OCw4ICsxNTg4LDggQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVt YXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkvKgogCSAqIEluY3JlbWVudCB0aGUg Y29tbWFuZCBjb3VudGVyIHNvIHRoYXQgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgaW4KLQkgKiBH ZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKCkgY2FuIHNlZSB0aGUganVzdC1pbnNlcnRlZCBz Y2hlbWEKLQkgKiByb3dzIHdoZW4gQWx0ZXJQdWJsaWNhdGlvblNjaGVtYUV4Y2VwdFRhYmxlcyBy dW5zIG5leHQuCisJICogR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcygpIGNhbiBzZWUgdGhl IGp1c3QtaW5zZXJ0ZWQgc2NoZW1hIHJvd3MKKwkgKiB3aGVuIEFsdGVyUHVibGljYXRpb25TY2hl bWFFeGNlcHRUYWJsZXMgcnVucyBuZXh0LgogCSAqLwogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBf QWRkT2JqZWN0cyB8fCBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cykKIAkJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKQEAgLTE2MDcsMTYgKzE2MDcsMTggQEAgQWx0ZXJQdWJsaWNhdGlv blNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAgKi8KIHN0YXRpYyB2b2lkCiBB bHRlclB1YmxpY2F0aW9uU2NoZW1hRXhjZXB0VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAotCQkJCQkJCSBIZWFwVHVwbGUgdHVwLCBMaXN0ICpleGNlcHRfcHVidGFibGVzLAotCQkJ CQkJCSBMaXN0ICpzY2hlbWFpZGxpc3QpCisJCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIExpc3Qg KmV4Y2VwdF9wdWJ0YWJsZXMsCisJCQkJCQkJCSAgIExpc3QgKnNjaGVtYWlkbGlzdCkKIHsKIAlG b3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RS VUNUKHR1cCk7CiAJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkvKgotCSAqIE5vdGhp bmcgdG8gZG8gaWYgbm8gRVhDRVBUIGVudHJpZXMuCisJICogTm90aGluZyB0byBkbyBpZiB0aGVy ZSBhcmUgbm8gRVhDRVBUIGVudHJpZXMsIHVubGVzcyBoYW5kbGluZyB0aGUgU0VUCisJICogY29t bWFuZCwgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgcmVtb3ZlZCBhbGwgZXhjZXB0aW9ucyB3ZSBu ZWVkIHRvIGRyb3AKKwkgKiBhbnkgZXhpc3Rpbmcgb25lcy4KIAkgKi8KLQlpZiAoIWV4Y2VwdF9w dWJ0YWJsZXMpCisJaWYgKCFleGNlcHRfcHVidGFibGVzICYmIHN0bXQtPmFjdGlvbiAhPSBBUF9T ZXRPYmplY3RzKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMTYzNywxNiArMTYzOSw2IEBAIEFsdGVy UHVibGljYXRpb25TY2hlbWFFeGNlcHRUYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJt c2coIkVYQ0VQVCBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aXRoIERST1AgaW4gQUxURVIgUFVC TElDQVRJT04iKSkpOwogCi0JLyoKLQkgKiBYWFggRVhDRVBUIHdpdGggU0VUIGlzIG5vdCBjdXJy ZW50bHkgaW1wbGVtZW50ZWQuICBXb3JrYXJvdW5kOiBEUk9QIGFuZAotCSAqIHJlLUFERCB0aGUg c2NoZW1hIHdpdGggdGhlIGRlc2lyZWQgRVhDRVBUIGxpc3QuCi0JICovCi0JaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9TZXRPYmplY3RzKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkgZXJybXNnKCJFWENFUFQgY2xhdXNl IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBTRVQgaW4gQUxURVIgUFVCTElDQVRJT04iKSwKLQkJCQkg ZXJyaGludCgiRHJvcCBhbmQgcmUtYWRkIHRoZSBzY2hlbWEgd2l0aCB0aGUgZGVzaXJlZCBFWENF UFQgbGlzdC4iKSkpOwotCiAJaWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsK IAkJTGlzdAkgICAqcmVsczsKQEAgLTE2NzQsNiArMTY2Niw4NCBAQCBBbHRlclB1YmxpY2F0aW9u U2NoZW1hRXhjZXB0VGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCiAJCVB1Ymxp Y2F0aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSwgc3RtdCk7CiAKKwkJQ2xvc2VUYWJs ZUxpc3QocmVscyk7CisJfQorCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCisJeworCQlM aXN0CSAgICpvbGRleGNlcHRyZWxpZHMgPSBOSUw7CisJCUxpc3QJICAgKm5ld2V4Y2VwdHJlbGlk cyA9IE5JTDsKKwkJTGlzdAkgICAqZGVscmVsaWRzID0gTklMOworCQlMaXN0CSAgICpyZWxzOwor CQlMaXN0CSAgICpleHBsaWNpdHJlbGlkczsKKworCQlyZWxzID0gT3BlblRhYmxlTGlzdChleGNl cHRfcHVidGFibGVzKTsKKworCQkvKiBDb2xsZWN0IE9JRHMgb2YgdGhlIGRlc2lyZWQgbmV3IEVY Q0VQVCBsaXN0LiAqLworCQlmb3JlYWNoX3B0cihQdWJsaWNhdGlvblJlbEluZm8sIHByaSwgcmVs cykKKwkJCW5ld2V4Y2VwdHJlbGlkcyA9IGxhcHBlbmRfb2lkKG5ld2V4Y2VwdHJlbGlkcywKKwkJ CQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQocHJpLT5yZWxhdGlvbikpOworCisJCWV4cGxpY2l0 cmVsaWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJpZCwKKwkJCQkJCQkJ CQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhh dCBlYWNoIGV4Y2x1ZGVkIHRhYmxlIGlzIG5vdCBhbHNvIGluIHRoZSBleHBsaWNpdCB0YWJsZQor CQkgKiBsaXN0ICh3aGljaCB3b3VsZCBiZSBjb250cmFkaWN0b3J5KS4KKwkJICovCisJCWZvcmVh Y2hfcHRyKFB1YmxpY2F0aW9uUmVsSW5mbywgcHJpLCByZWxzKQorCQl7CisJCQlPaWQJCQlyZWxp ZCA9IFJlbGF0aW9uR2V0UmVsaWQocHJpLT5yZWxhdGlvbik7CisKKwkJCWlmIChsaXN0X21lbWJl cl9vaWQoZXhwbGljaXRyZWxpZHMsIHJlbGlkKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygi dGFibGUgXCIlc1wiIGNhbm5vdCBhcHBlYXIgaW4gYm90aCB0aGUgdGFibGUgbGlzdCBhbmQgdGhl IEVYQ0VQVCBjbGF1c2UiLAorCQkJCQkJCSAgIFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRpb25O YW1lKHByaS0+cmVsYXRpb24pKSk7CisJCX0KKworCQkvKgorCQkgKiBHZXQgdGhlIGN1cnJlbnQg c2V0IG9mIEVYQ0VQVCBlbnRyaWVzLiAgT25seSBGT1IgQUxMIFRBQkxFUyBhbmQKKwkJICogc2No ZW1hLWxldmVsIHB1YmxpY2F0aW9ucyBjYW4gaGF2ZSBFWENFUFQgZW50cmllczsgZm9yIGFueSBv dGhlcgorCQkgKiBwdWJsaWNhdGlvbiB0eXBlIG9sZGV4Y2VwdHJlbGlkcyBzdGF5cyBOSUwuCisJ CSAqCisJCSAqIE5vdGU6IHdlIGNoZWNrIGlzX3NjaGVtYV9wdWJsaWNhdGlvbigpIGFnYWluc3Qg dGhlIGN1cnJlbnQgY2F0YWxvZworCQkgKiBzdGF0ZSAoYmVmb3JlIEFsdGVyUHVibGljYXRpb25T Y2hlbWFzIGhhcyBydW4pLCBzbyBpZiB0aGUgY2FsbGVyIGlzCisJCSAqIGRvaW5nIFNFVCBUQUJM RSB0MSB0byBjb252ZXJ0IGEgc2NoZW1hIHB1YmxpY2F0aW9uIGludG8gYSBwbGFpbgorCQkgKiB0 YWJsZSBwdWJsaWNhdGlvbiwgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKCkgc3RpbGwgcmV0dXJucyB0 cnVlIGhlcmUuCisJCSAqIFRoYXQgaXMgaW50ZW50aW9uYWw6IGl0IGxldHMgdXMgZGlzY292ZXIg YW5kIGNsZWFuIHVwIGFueSBzdGFsZQorCQkgKiBFWENFUFQgZW50cmllcyB0aGF0IGJlbG9uZyB0 byB0aGUgb2xkIHNjaGVtYSBkZWZpbml0aW9uLgorCQkgKi8KKwkJaWYgKEdldFB1YmxpY2F0aW9u KHB1YmlkKS0+YWxsdGFibGVzIHx8IGlzX3NjaGVtYV9wdWJsaWNhdGlvbihwdWJpZCkpCisJCQlv bGRleGNlcHRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLAorCQkJ CQkJCQkJCQkJCQkgICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCisJCS8qIEJ1aWxkIGEgbGlz dCBvZiBvbGQgRVhDRVBUIGVudHJpZXMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyBsaXN0LiAqLwor CQlmb3JlYWNoX29pZChvbGRyZWxpZCwgb2xkZXhjZXB0cmVsaWRzKQorCQl7CisJCQlpZiAoIWxp c3RfbWVtYmVyX29pZChuZXdleGNlcHRyZWxpZHMsIG9sZHJlbGlkKSkKKwkJCQlkZWxyZWxpZHMg PSBsYXBwZW5kX29pZChkZWxyZWxpZHMsIG9sZHJlbGlkKTsKKwkJfQorCisJCS8qIERyb3Agb2xk IEVYQ0VQVCBlbnRyaWVzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgbGlzdC4gKi8KKwkJZm9yZWFj aF9vaWQocmVsaWQsIGRlbHJlbGlkcykKKwkJeworCQkJT2lkCQkJcHJvaWQ7CisJCQlPYmplY3RB ZGRyZXNzIG9iajsKKworCQkJcHJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFVCTElDQVRJT05SRUxN QVAsCisJCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9vaWQsCisJCQkJCQkJCQlPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsK KwkJCWlmIChPaWRJc1ZhbGlkKHByb2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzU2V0KG9i aiwgUHVibGljYXRpb25SZWxSZWxhdGlvbklkLCBwcm9pZCk7CisJCQkJcGVyZm9ybURlbGV0aW9u KCZvYmosIERST1BfQ0FTQ0FERSwgMCk7CisJCQl9CisJCX0KKworCQkvKiBBZGQgbmV3IEVYQ0VQ VCBlbnRyaWVzLCBza2lwcGluZyBhbnkgYWxyZWFkeSBwcmVzZW50LiAqLworCQlQdWJsaWNhdGlv bkFkZFRhYmxlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKIAkJQ2xvc2VUYWJsZUxpc3Qo cmVscyk7CiAJfQogfQpAQCAtMjM2Miw2ICsyNDMyLDcgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1h cyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAlmb3JlYWNoKGxj LCBzY2hlbWFzKQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJTGlz dAkgICAqZXhjZXB0X3JlbGlkczsKIAogCQlwc2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FU SU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgIEFudW1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNl X29pZCwKQEAgLTIzNzgsOCArMjQ0OSw0MCBAQCBQdWJsaWNhdGlvbkRyb3BTY2hlbWFzKE9pZCBw dWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29rKQogCQkJCQkJCWdldF9uYW1lc3Bh Y2VfbmFtZShzY2hlbWFpZCkpKSk7CiAJCX0KIAorCQkvKgorCQkgKiBDb2xsZWN0IEVYQ0VQVCBl bnRyaWVzIGZvciB0YWJsZXMgYmVsb25naW5nIHRvIHRoaXMgc2NoZW1hIGJlZm9yZQorCQkgKiBy ZW1vdmluZyB0aGUgc2NoZW1hIGVudHJ5LgorCQkgKi8KKwkJZXhjZXB0X3JlbGlkcyA9IEdldEV4 Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQsIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisK IAkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwg cHNpZCk7CiAJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUsIDApOworCisJCS8q CisJCSAqIERyb3AgYW55IHByZXhjZXB0IHJvd3MgZm9yIHRhYmxlcyBiZWxvbmdpbmcgdG8gdGhp cyBzY2hlbWEuIFRoZXNlCisJCSAqIHJvd3MgaGF2ZSBubyBwZ19kZXBlbmQgZW50cnkgcG9pbnRp bmcgYXQgdGhlCisJCSAqIHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSByb3csIHNvIHRoZXkgYXJl IG5vdCBjYXNjYWRlZCBieSB0aGUKKwkJICogcGVyZm9ybURlbGV0aW9uKCkgY2FsbCBhYm92ZSBh bmQgbXVzdCBiZSBjbGVhbmVkIHVwIGV4cGxpY2l0bHkuCisJCSAqLworCQlmb3JlYWNoX29pZChy ZWxpZCwgZXhjZXB0X3JlbGlkcykKKwkJeworCQkJT2lkCQkJcHJvaWQ7CisKKwkJCWlmIChnZXRf cmVsX25hbWVzcGFjZShyZWxpZCkgIT0gc2NoZW1haWQpCisJCQkJY29udGludWU7CisKKwkJCXBy b2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkJQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfb2lkLAorCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCks CisJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJCQlpZiAoT2lkSXNWYWxpZChw cm9pZCkpCisJCQl7CisJCQkJT2JqZWN0QWRkcmVzc1NldChvYmosIFB1YmxpY2F0aW9uUmVsUmVs YXRpb25JZCwgcHJvaWQpOworCQkJCXBlcmZvcm1EZWxldGlvbigmb2JqLCBEUk9QX0NBU0NBREUs IDApOworCQkJfQorCQl9CisKKwkJbGlzdF9mcmVlKGV4Y2VwdF9yZWxpZHMpOwogCX0KIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggN2VlODRl YzFjODMuLjk4MzFiZTU0YjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKQEAgLTIyMjksNyArMjIyOSw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICovCiAJCQlpZiAocHViLT5h bGx0YWJsZXMpCiAJCQl7Ci0JCQkJTGlzdAkgICAqZXhjZXB0cHViaWRzID0gTklMOworCQkJCUxp c3QJICAgKmV4Y2VwdF9wdWJpZHMgPSBOSUw7CiAKIAkJCQlpZiAoYW1fcGFydGl0aW9uKQogCQkJ CXsKQEAgLTIyNTIsNyArMjI1Miw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEg KmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCQkgKiBjbGF1c2UuIFRoZXJlZm9yZSwgZm9y IGEgcGFydGl0aW9uLCBleGNsdXNpb24gbXVzdCBiZQogCQkJCQkgKiBldmFsdWF0ZWQgYXQgdGhl IHRvcC1tb3N0IGFuY2VzdG9yLgogCQkJCQkgKi8KLQkJCQkJZXhjZXB0cHViaWRzID0gR2V0UmVs YXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhsYXN0X2FuY2VzdG9yX3JlbGlkKTsKKwkJCQkJZXhj ZXB0X3B1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMobGFzdF9hbmNlc3Rv cl9yZWxpZCk7CiAJCQkJfQogCQkJCWVsc2UKIAkJCQl7CkBAIC0yMjYwLDEzICsyMjYwLDEzIEBA IGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9u KQogCQkJCQkgKiBGb3IgYSByZWd1bGFyIHRhYmxlIG9yIGEgcm9vdCBwYXJ0aXRpb25lZCB0YWJs ZSwgY2hlY2sKIAkJCQkJICogZXhjbHVzaW9uIG9uIHRhYmxlIGl0c2VsZi4KIAkJCQkJICovCi0J CQkJCWV4Y2VwdHB1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlvbnMocHViX3Jl bGlkKTsKKwkJCQkJZXhjZXB0X3B1YmlkcyA9IEdldFJlbGF0aW9uRXhjbHVkZWRQdWJsaWNhdGlv bnMocHViX3JlbGlkKTsKIAkJCQl9CiAKLQkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRw dWJpZHMsIHB1Yi0+b2lkKSkKKwkJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChleGNlcHRfcHViaWRz LCBwdWItPm9pZCkpCiAJCQkJCXB1Ymxpc2ggPSB0cnVlOwogCi0JCQkJbGlzdF9mcmVlKGV4Y2Vw dHB1Ymlkcyk7CisJCQkJbGlzdF9mcmVlKGV4Y2VwdF9wdWJpZHMpOwogCiAJCQkJaWYgKCFwdWJs aXNoKQogCQkJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCBhMjkwOTAyZDYx ZS4uZThiZmIzNmNiMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzOTAsNiArMjM5MCwy MyBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAl9CiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIsICJUQUJMRVMi LCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnksICJFWENFUFQiLCAiKCIsICJUQUJMRSIsIE1hdGNo QW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQlDT01QTEVURV9XSVRIKCIpIik7 CisJLyogQWZ0ZXIgYSBzaW5nbGUgc2NoZW1hIG5hbWUgaW4gU0VUIGNvbnRleHQsIG9mZmVyIEVY Q0VQVCAoIFRBQkxFICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIlNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYm CisJCQkgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJFWENFUFQg KCBUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0 Y2hBbnksICJTRVQiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIsIE1hdGNoQW55LCAiRVhDRVBU IikpCisJCUNPTVBMRVRFX1dJVEgoIiggVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRF UiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hF TUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFIik7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNF VCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgIkNVUlJFTlRfU0NIRU1BIiwgIkVYQ0VQVCIs ICIoIiwgIlRBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfUVVFUllfVkVSQkFUSU0oUXVlcnlfZm9y X2xpc3Rfb2ZfdGFibGVzX2luX2N1cnJlbnRfc2NoZW1hKTsKKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIsICJJTiIsICJT Q0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIikpCisJeworCQlzZXRfY29t cGxldGlvbl9yZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1FVRVJZX1ZFUkJB VElNKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc19pbl9zY2hlbWEpOworCX0KKwllbHNlIGlmIChN YXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIlRBQkxFUyIs ICJJTiIsICJTQ0hFTUEiLCBNYXRjaEFueSwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hB bnlOKSAmJiAhZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIikiKTsK IAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICggKi8KIAllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCBNYXRjaEFueU4sICJTRVQiLCAiKCIp KQogCQlDT01QTEVURV9XSVRIKCJwdWJsaXNoIiwgInB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnMi LCAicHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QiKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggOGI0OTIzOWI1NzQuLjM1ZGI3ZTFmZjZkIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtNTk0LDYgKzU5NCw5MiBA QCBFeGNlcHQgdGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX3RibF9zMSIKICAgICAicHVi X3Rlc3QudGVzdHB1Yl90YmxfczIiCiAKKy0tIFNFVDogcmVwbGFjZSB0aGUgZXhjZXB0IGxpc3Qg KGtlZXAgc2FtZSBzY2hlbWEsIGRpZmZlcmVudCBleGNlcHQgdGFibGUpCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBF WENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK1xkUnArIHRlc3RwdWJfYWx0 ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3Qg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRhYmxl czoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczIiCisKKy0tIGZhaWw6IHRhYmxlIGluIEVY Q0VQVCBjbGF1c2UgYWxzbyBhcHBlYXJzIGluIHRoZSBleHBsaWNpdCB0YWJsZSBsaXN0CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl90YmxfczEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJf dGVzdC50ZXN0cHViX3RibF9zMSk7CitFUlJPUjogIHRhYmxlICJwdWJfdGVzdC50ZXN0cHViX3Ri bF9zMSIgY2Fubm90IGFwcGVhciBpbiBib3RoIHRoZSB0YWJsZSBsaXN0IGFuZCB0aGUgRVhDRVBU IGNsYXVzZQorLS0gZXJyb3I6IGV4Y2VwdCB0YWJsZSdzIHNjaGVtYSAocHVibGljKSBub3QgaW4g dGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1Yl90ZXN0KQorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhD RVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsKK0VSUk9SOiAgdGFibGUgInB1YmxpYy50 ZXN0cHViX3RibDEiIGluIEVYQ0VQVCBjbGF1c2UgZG9lcyBub3QgYmVsb25nIHRvIHNjaGVtYSAi cHViX3Rlc3QiCitMSU5FIDE6IC4uLnhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 IEVYQ0VQVCAoVEFCTEUgcHVibGljLnRlcy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNFVDogdW5xdWFsaWZpZWQg bmFtZSBpbiBFWENFUFQgaXMgaW1wbGljaXRseSBxdWFsaWZpZWQgd2l0aCB0aGUgc2NoZW1hCitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsX3MxKTsKK1xkUnArIHRlc3RwdWJf YWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorRXhjZXB0IHRh YmxlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl90YmxfczEiCisKKy0tIFNFVCB3aXRob3V0IEVY Q0VQVCBjbGVhcnMgdGhlIGV4aXN0aW5nIGV4Y2VwdCBsaXN0CitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnAr IHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5z IHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0Igor CistLSBTRVQgdG8gYSBkaWZmZXJlbnQgc2NoZW1hIHJlbW92ZXMgb2xkIHNjaGVtYSdzIEVYQ0VQ VCBlbnRyaWVzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsX3MxKTsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1B IHB1YmxpYzsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9h bHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6Cisg ICAgInB1YmxpYyIKKworLS0gZmFpbDogbm9uZXhpc3RlbnQgdGFibGUgaW4gRVhDRVBUIGNsYXVz ZSAoU0VUIHBhdGgpCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0Lm5vbmV4aXN0 ZW50X3RhYmxlKTsKK0VSUk9SOiAgcmVsYXRpb24gInB1Yl90ZXN0Lm5vbmV4aXN0ZW50X3RhYmxl IiBkb2VzIG5vdCBleGlzdAorLS0gU0VUOiBtdWx0aXBsZSBzY2hlbWFzIGVhY2ggd2l0aCB0aGVp ciBvd24gRVhDRVBUIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNl cHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50 ZXN0cHViX3RibF9zMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEVYQ0VQVCAoVEFCTEUgdGVzdHB1 Yl90YmwxKTsKK1xkUnArIHRlc3RwdWJfYWx0ZXJfZXhjZXB0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9h bHRlcl9leGNlcHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdl bmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAKK1RhYmxlcyBmcm9tIHNjaGVtYXM6Cisg ICAgInB1Yl90ZXN0IgorICAgICJwdWJsaWMiCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJfdGVz dC50ZXN0cHViX3RibF9zMSIKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZXJyb3I6 IEVYQ0VQVCBpcyBub3QgYWxsb3dlZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfYWx0ZXJfZXhjZXB0IERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyKTsKK0VSUk9SOiAgRVhDRVBUIGNsYXVzZSBpcyBu b3Qgc3VwcG9ydGVkIHdpdGggRFJPUCBpbiBBTFRFUiBQVUJMSUNBVElPTgorLS0gRFJPUCBUQUJM RVMgSU4gU0NIRU1BIHJlbW92ZXMgYXNzb2NpYXRlZCBFWENFUFQgZW50cmllcworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2FsdGVy X2V4Y2VwdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9u ZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAi cHVibGljIgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwogLS0g Q2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHViX3Rlc3Qu dGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsCmluZGV4IGU5Mzg3NDE4OTA0Li45YjcxNDYzOWM3NSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMjk2LDYgKzI5Niw0NCBAQCBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dCBFWENFUFQgKHRlcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgQURE IFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X3RibF9zMSwgdGVzdHB1Yl90YmxfczIpOwogXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKIAor LS0gU0VUOiByZXBsYWNlIHRoZSBleGNlcHQgbGlzdCAoa2VlcCBzYW1lIHNjaGVtYSwgZGlmZmVy ZW50IGV4Y2VwdCB0YWJsZSkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0 IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3QudGVz dHB1Yl90YmxfczIpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZmFpbDogdGFi bGUgaW4gRVhDRVBUIGNsYXVzZSBhbHNvIGFwcGVhcnMgaW4gdGhlIGV4cGxpY2l0IHRhYmxlIGxp c3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRSBwdWJf dGVzdC50ZXN0cHViX3RibF9zMSwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRB QkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MxKTsKKworLS0gZXJyb3I6IGV4Y2VwdCB0YWJsZSdz IHNjaGVtYSAocHVibGljKSBub3QgaW4gdGhlIHB1YmxpY2F0aW9uJ3Mgc2NoZW1hIGxpc3QgKHB1 Yl90ZXN0KQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJMRSBwdWJsaWMudGVzdHB1Yl90YmwxKTsK KworLS0gU0VUOiB1bnF1YWxpZmllZCBuYW1lIGluIEVYQ0VQVCBpcyBpbXBsaWNpdGx5IHF1YWxp ZmllZCB3aXRoIHRoZSBzY2hlbWEKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhj ZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90 YmxfczEpOworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHdpdGhvdXQgRVhD RVBUIGNsZWFycyB0aGUgZXhpc3RpbmcgZXhjZXB0IGxpc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gU0VUIHRvIGEgZGlmZmVyZW50IHNjaGVtYSByZW1v dmVzIG9sZCBzY2hlbWEncyBFWENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9hbHRlcl9leGNlcHQgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QgRVhDRVBUIChUQUJM RSB0ZXN0cHViX3RibF9zMSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2Vw dCBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWM7CitcZFJwKyB0ZXN0cHViX2FsdGVyX2V4Y2Vw dAorCistLSBmYWlsOiBub25leGlzdGVudCB0YWJsZSBpbiBFWENFUFQgY2xhdXNlIChTRVQgcGF0 aCkKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IFNFVCBUQUJMRVMgSU4g U0NIRU1BIHB1Yl90ZXN0IEVYQ0VQVCAoVEFCTEUgcHViX3Rlc3Qubm9uZXhpc3RlbnRfdGFibGUp OworCistLSBTRVQ6IG11bHRpcGxlIHNjaGVtYXMgZWFjaCB3aXRoIHRoZWlyIG93biBFWENFUFQg Y2xhdXNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2FsdGVyX2V4Y2VwdCBTRVQgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3Mx KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwdWJsaWMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3RibDEpOworXGRS cCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQKKworLS0gZXJyb3I6IEVYQ0VQVCBpcyBub3QgYWxsb3dl ZCB3aXRoIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYWx0ZXJfZXhjZXB0IERST1Ag VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdCBFWENFUFQgKFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf dGJsX3MyKTsKKworLS0gRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHJlbW92ZXMgYXNzb2NpYXRlZCBF WENFUFQgZW50cmllcworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9hbHRlcl9leGNlcHQgRFJP UCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9hbHRlcl9leGNlcHQK KwogLS0gQ2xlYW51cAogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgcHVi X3Rlc3QudGVzdHB1Yl90YmxfczEsIHB1Yl90ZXN0LnRlc3RwdWJfdGJsX3MyOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzN19leGNlcHQucGwKaW5kZXggMGJhNmQ2ZjhiYjIuLjAxZWFmYjViN2M4IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKQEAgLTM3Niw2ICszNzYsNjEgQEAg JHJlc3VsdCA9CiBpcygkcmVzdWx0LCBxcSgwKSwKIAknQUxURVIgLi4uIEFERCBUQUJMRVMgSU4g U0NIRU1BIEVYQ0VQVDogZXhjbHVkZWQgdGFibGUgbm90IHN5bmNlZCcpOwogCisjIFNFVDogcmVw bGFjZSB0aGUgZXhjZXB0IGxpc3Q7IHRhYl9leGNsdWRlZCBpcyBub3cgaW5jbHVkZWQgYW5kIHRh Yl9wdWJsaXNoZWQgaXMgZXhjbHVkZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzY2hfcHViIFNFVCBUQUJMRVMgSU4gU0NIRU1B IHNjaDEgRVhDRVBUIChUQUJMRSBzY2gxLnRhYl9wdWJsaXNoZWQpIgorKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gc2NoX3N1 YiBSRUZSRVNIIFBVQkxJQ0FUSU9OIik7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJz Y3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICdzY2hfc3ViJyk7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUlOU0VSVCBJTlRPIHNjaDEudGFi X3B1Ymxpc2hlZCBWQUxVRVMgKDcpOworCUlOU0VSVCBJTlRPIHNjaDEudGFiX2V4Y2x1ZGVkIFZB TFVFUyAoNyk7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2NoX3N1 YicpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIFdIRVJFIGEgPSA3 Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1B IEVYQ0VQVDogbmV3bHkgaW5jbHVkZWQgdGFibGUgaXMgcmVwbGljYXRlZCcKKyk7CiskcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBj b3VudCgqKSBGUk9NIHNjaDEudGFiX3B1Ymxpc2hlZCBXSEVSRSBhID0gNyIpOworaXMoJHJlc3Vs dCwgcXEoMCksCisJJ0FMVEVSIC4uLiBTRVQgVEFCTEVTIElOIFNDSEVNQSBFWENFUFQ6IG5vdy1l eGNsdWRlZCB0YWJsZSBpcyBub3QgcmVwbGljYXRlZCcKKyk7CisKKyMgU0VUIHdpdGhvdXQgRVhD RVBUOiBjbGVhcnMgdGhlIGV4Y2VwdCBsaXN0OyBib3RoIHRhYmxlcyBhcmUgbm93IHB1Ymxpc2hl ZC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJ Q0FUSU9OIHNjaF9wdWIgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMSIpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiBzY2hfc3Vi IFJFRlJFU0ggUFVCTElDQVRJT04iKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNj cmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3NjaF9zdWInKTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJSU5TRVJUIElOVE8gc2NoMS50YWJf cHVibGlzaGVkIFZBTFVFUyAoOCk7CisJSU5TRVJUIElOVE8gc2NoMS50YWJfZXhjbHVkZWQgVkFM VUVTICg4KTsKKykpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzY2hfc3Vi Jyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWJfcHVibGlzaGVkIFdIRVJFIGEgPSA4 Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4gU0NIRU1B IChubyBFWENFUFQpOiB0YWJfcHVibGlzaGVkIHJlcGxpY2F0ZWQgYWZ0ZXIgZXhjZXB0IGxpc3Qg Y2xlYXJlZCcKKyk7CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiX2V4Y2x1ZGVkIFdIRVJF IGEgPSA4Iik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknQUxURVIgLi4uIFNFVCBUQUJMRVMgSU4g U0NIRU1BIChubyBFWENFUFQpOiB0YWJfZXhjbHVkZWQgcmVwbGljYXRlZCBhZnRlciBleGNlcHQg bGlzdCBjbGVhcmVkJworKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdEUk9QIFNVQlNDUklQVElPTiBzY2hfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiBzY2hfcHViJyk7CiAKQEAgLTQ0Myw2 ICs0OTgsMzYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9Q IFNVQlNDUklQVElPTiB0YXBfc3ViJyk7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScpOwogJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKIAorIyBP SyB3aGVuIGEgdGFibGUgaXMgZXhjbHVkZWQgYnkgYSBUQUJMRVMgSU4gU0NIRU1BIEVYQ0VQVCBw dWJsaWNhdGlvbiwKKyMgYnV0IGlzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcHVibGljYXRpb24uCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgdGFiMScpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSB0YWIxJyk7 CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViMSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJsaWMgRVhDRVBU IChUQUJMRSBwdWJsaWMudGFiMSk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBU QUJMRSB0YWIxOworCUlOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDEpOworKSk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWIxLCB0YXBf cHViMiIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygk bm9kZV9wdWJsaXNoZXIsICd0YXBfc3ViJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxKElOU0VSVCBJTlRPIHRhYjEgVkFMVUVTKDIpKSk7Ciskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3RhcF9zdWInKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSB0YWIxIE9S REVSIEJZIGEiKTsKK2lzKCAkcmVzdWx0LCBxcSgxCisyKSwKKwkiVEFCTEVTIElOIFNDSEVNQSBF WENFUFQ6IHRhYmxlIGV4Y2x1ZGVkIGluIHNjaGVtYSBwdWIgYnV0IGluY2x1ZGVkIGJ5IGFub3Ro ZXIgcHViIGlzIHJlcGxpY2F0ZWQiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0 YXBfcHViMicpOworCiAkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKIAogZG9uZV90ZXN0 aW5nKCk7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000004034ae0653d484a4--